簡體   English   中英

需要自我跟蹤實體和POCO解釋

[英]Self-Tracking Entities and POCO explanation needed

我認為我了解的內容(如果我寫錯了,請糾正我)

  • POCO-普通的舊C#對象。 它們是不從任何東西繼承的簡單類?
  • STE-自我跟蹤實體。 它們跟蹤單個實體對象上的更改,以便我們執行context.SaveChanges(); 實體對象上的更改已注冊。 這不適用於收藏嗎?

我想知道什么?

  • 如果我的上下文繼承自ObjectContext,這是否意味着我有POCO或STE? 同樣,DbContext是POCO還是STE?
  • EF5默認生成什么? POCO實體還是STE? (我正在使用Model First)

也有人可以給我一些代表這兩種類型實體的代碼示例嗎?

如果我的上下文繼承自ObjectContext,這是否意味着我有POCO或STE? 同樣,DbContext是POCO還是STE?

如果上下文是從ObjectContext類繼承的,那么您可能是STE和DbContext針對POCO起作用。 這里

EF5默認生成什么(模型優先)? POCO實體還是STE?

模型首先,POCO和STE是3 種不同的東西。 在Entity Framework中,您可以自由選擇適合您需求的最佳方法。

它可能是:

  • 代碼優先
  • 模型的第一
  • 數據庫第一

POCO-普通的舊CLR對象是“干凈”類,不散布數據庫訪問功能等,因此被視為持久性無知實體。

STE-充分了解其持久性機制並被視為感知持久性的自我跟蹤實體。

更新:如果您使用的是“模型優先”方法,並且想要將實體(STE)轉換為POCO,則可以使用EF 5.x DbContext Fluent Generator for C#

默認情況下,IDE數據設計器會創建一個.edmx文件,該文件在Visual Studio的早期版本(2008和2010)中默認使用t4模板(默認情況下會生成STE)以及從對象上下文派生的上下文。 在VS 2012中,已將其更改為默認情況下使用從DbContext派生的上下文生成POCO。

您可以通過使用NuGet下載新的代碼生成器來更改此行為。

暫無
暫無

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

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