簡體   English   中英

了解實體框架類

[英]Understanding Entity Framework classes

我正在做一個項目,我們需要從 WCF 服務中獲取數據。 服務代碼通過實體框架查找數據庫。 但是,為了防止通過線路將 EF 生成的類發送到客戶端生成的代理中,我們決定將 map EF 類中的值發送到自定義構建的 DTO 類,其中映射器 class 負責從生成的 EF 中挑選出值類並將它們放入 DTO class。然后我們將這些 DTO 類用於服務方法的請求和響應。 EF 從彼此相關的表構建類。 我得到了各種具有如下所示屬性的類:

 public global::System.Data.Objects.DataClasses.EntityCollection<SubAttachment> Attachments
    {}

 public global::System.Data.Objects.DataClasses.EntityReference<Gl> GlCodeReference
    {}

一些屬性附加了關鍵字 Reference,我猜這為 EF 提供了某種方式來查找該字段上的相關表。

如果我不想發送繁重的 EF 類,是否有比這種映射方法更好/不同的方法? 如果沒有,是否有一些參考資料可以幫助我理解實體框架如何構建類。

謝謝你的時間

由於您需要從 EF 框架支持的 WCF 服務中獲取數據,您是否考慮過使用 OData 公開 EF 對象? 查看下面的一些鏈接:

http://www.odata.org/

http://www.hanselman.com/blog/ODataBasicsAtTheAZGroupsDayO.NETWithScottGu.aspx

關聯

當您在 EF 中創建類時,它們的字段上有[DataMember]屬性,這是通過線路發送的唯一數據。 所以,它並不像看起來那么重......

但是,由於您正在通過 WCF,因此生成的實體應該是自我跟蹤的,因此當它們返回服務時,您知道發生了什么變化並且不必從數據庫中重新獲取每個實體來進行比較。

如果您仍然想要 DTO,也可以生成它們。 如果您使用的是 EF4.0,您可以選擇提取實際上執行代碼生成的 T4 文件 (.tt) - 使用它並根據您的需要進行更改並生成 DTO 以及映射器類......

要從 edmx 獲取 a.tt 文件(僅適用於 EF4):右鍵單擊您的 model,選擇添加代碼生成項,然后選擇 EntityObject 生成器,如果您希望通過 wcf 傳輸對象,則選擇另一個生成器。這將創建一個 tt 文件你可以通過發出保存命令來運行(如果你想允許它運行,你會得到一個提示)。 保存后,它將生成一個與 edmx model 在 EntityObject 生成器的情況下生成的文件完全相同的文件,或者如果您使用其他生成器,您將擁有兩個.tt 文件...

我使用了與下面鏈接中的方法非常相似的方法以及一些自定義的部分類,並且效果很好。

關聯

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM