WCF與EF結合使用注意事項


一、WCF傳遞的需要是POCO類,且不能循環引用(這一點通過在實體類添加[DataContract(IsReference=true)]即可)

二、一個問題是EF的延遲加載和代理實例機制,導致EF查詢結果並非POCO類,而是代理類,

     需要關系EF代理實例模式:Configuration.ProxyCreationEnabled = false;

如何實現UpdateUser方法呢,一般我們會用IDbSet.Attach()方法來更新

m_DbSet.Attach(entity);
            this.DbContext.Entry<T>(entity).State = EntityState.Modified;
this.DbContext.SaveChanges();

但是這時候你就會發現,由於EF為了支持WCF服務已經關閉了ProxyCreationEnabled ,所以無論如何,這里的Attach方法是不能執行成功的,

那這時候你會想,那我不采用Attach方法,先Delete實體,再重新添加行不行呢,

NO  no  no ,由於EF在SaveChanges的時候會根據實體關系,自動修改數據表,所以當你刪除User時候的時候會刪除User表以及User_Role表中的記錄,此時再添加User實體的話,會向User表添加User,User_Role表添加關系,Role表添加Role(因為User.Roles的存在),

這時候你會發現Role表添加Role就不行了,因為記錄已經存在了;所以這種方式也不能很好的解決問題!!

怎么辦呢,我暫時也不知道怎么辦,所以來此求助各位大牛~~看看有什么經驗,好的處理方法!

ps:Data Services、Ria services暫時不考慮,因為我的應用需要對具體的操作進行授權!非Web系統!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM