Entity Framework 4 實作 POCO 的感想

Entity Framework 4 實作 POCO 的感想

幾個月前看到 Entity 4 不需要 SSDL , CSDL 這些的設定就可以讓自已的 DTO 物件直接跟資料庫互動時覺得實在太棒了!

總算不用因為之前的作法,都把 DTO 物件統統放到 Context 裡,而且一定要 DB 一對一的  ( 這是因為 model 是從 DB 來的關係 )

而且有些實務上 DTO 不見得跟實際的 DB 欄位一模一樣 ( 在 Entity 1 中都需要另外再寫 Partial class )

首先當然要自已手動作作看啦!

首先看 Using Repository and Unit of Work patterns with Entity Framework 4.0  這篇文件

建議最好自已試著寫比較容易發現盲點!

基本上裡面的作法沒啥問題!但照著上面作卻一直試不出來!

就在差點快要放棄時 才發現 原來 原 po 有放 sample code 卻可以正常執行

一一比對後總算也可以正常運作

整理如下,希望各位可以不用走一樣的錯路

  1. 自動產生程式碼的功能要關掉 (原 po 有寫 )
  2. 繼承的 ObjectContext 的 建構式的參數 其實就是指定 Connection String  ( 一開始我都誤以為是 某物件名稱 Orz )
    若是想要改的話!記得 Conncetion String 的名稱也要一併修改!由於是用 string 所以程式碼比較彈性
  3. 用工作產生的 Edmx 的 connection string 只會產生在 該專案中,記得 copy 一份到 app.config  或 Web.config
    ( 沒有的話會出現 Base 無法正常執行的錯誤 )
  4. 因為沒有 CSDL 和 SSDL 所以 Edmx 中的 model 上的 Table Name 和 欄位名稱 務必一定要和 您自已的 DTO 物件名稱一樣!
    ( 用工具產生的話! Model 會和 DB 一樣 記得確認一下是不是不一樣!不然會出現無法載入  CreateObjectSet 的錯誤 )

光是這幾個點就搞了一整天!

但實作後更覺得 POCO 的部分,更可以讓我們現有的專案可以納入 Entity Framework  的機制 (  Entity 1 只有在全新的專案中才有比較好的實作,若是現有的專案要改寫成 Entity 架構的話!基本上難度有點高! )

不過也因為不是用工具產生了,所以 Context 的功 整個就沒省到了 全部要自已來 
但,至少架構上可以不被綁架  ( 這樣也好!炸 XDDD )

下一步就是自行改寫 原本的 Entity Framework 變成是 POCO 的方式  ( 想到就覺得好大的工程 )

 

POCO 是 Plain Old CLR Object  ( 註:感謝湯姆哥 幫我找到這個的全名 )

參考資料!如下

http://blogs.msdn.com/adonet/archive/2009/06/16/using-repository-and-unit-of-work-patterns-with-entity-framework-4-0.aspx 

http://blogs.msdn.com/adonet/archive/2009/05/21/poco-in-the-entity-framework-part-1-the-experience.aspx

http://www.cnblogs.com/lfzx_1227/archive/2009/05/28/1550630.html  ( 等到我都做完了後才發現到有人翻譯好了! Orz  簡體的 )

http://byatool.com/lessons/net-4-0-beta-2-entity-framework-how-to-start/   

NorthwindPocoSamplePart1.zip  ( 最後試不出來的話就下載這個吧!)