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 卻可以正常執行
一一比對後總算也可以正常運作
整理如下,希望各位可以不用走一樣的錯路
- 自動產生程式碼的功能要關掉 (原 po 有寫 )
- 繼承的 ObjectContext 的 建構式的參數 其實就是指定 Connection String ( 一開始我都誤以為是 某物件名稱 Orz )
若是想要改的話!記得 Conncetion String 的名稱也要一併修改!由於是用 string 所以程式碼比較彈性 - 用工作產生的 Edmx 的 connection string 只會產生在 該專案中,記得 copy 一份到 app.config 或 Web.config
( 沒有的話會出現 Base 無法正常執行的錯誤 ) - 因為沒有 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://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 ( 最後試不出來的話就下載這個吧!)