[英]Entity Framework Self-Tracking Entities not recommended by Microsoft
在查看Microsoft的網站時,我發現他們不再建議使用自我跟蹤實體。
下面的每個鏈接都是MS資源,提到不使用STE:
顯示實體框架團隊可用的模板: EF Designer代碼生成模板
有誰知道為什么微軟不再推薦使用STE?
(注意:因為我不為MS工作,所以這是根據他們的公開聲明和過去的歷史推測的所有猜想 )。
您發布的第一篇文章“有點”解釋了原因,雖然不是很清楚:他們希望您使用更好的替代方案,而無意修復或改進STE。 微軟正在將STEs置於“早期失敗的實驗”中,類似於RDO或Remoting或LINQ2SQL--他們提出了一些看法,看看它有多好用,但事實並非如此。
總的來說,微軟始終承認STEs是解決實際業務問題的第一步,但它們顯然是不完整的。 特別是,它們在將對象圖附加到共享實體時非常糟糕 ,它們不支持延遲加載,並且還有許多其他的其他限制。
MS顯然已經決定他們不會嘗試清理它們(注意他們也因為類似的原因而棄用了POCO模板)。 由於他們不打算修復或改進模板,他們希望人們停止將其用於新項目並轉向更好的替代方案:
DbContext Generator
此模板將生成簡單的POCO實體類和從DbContext派生的上下文。 這是推薦的模板,除非您有理由使用下面列出的其他模板之一。
STE主要用於支持實體斷開連接並重新連接到其上下文的情況,尤其是在序列化方案(例如WCF或Web服務)中。 在“標准”實體框架對象中,所有更改跟蹤都是在上下文中完成的,並且將existig實體附加到上下文是有問題的。 STEs使這個過程變得更容易,但代價是幾乎所有其他東西都很難。
根據我所看到的和DbContext
經驗,它應該是解決這個問題的更好的替代方案,盡管它實際上並沒有復制 STE所做的事情。 EF重度用戶的普遍共識似乎是將端到端的EF實體序列化是一個非常糟糕的主意。 相反,您應該使用DTO和AutoMapper之類的東西在DTO和EF對象之間進行映射。
我創作了Trackable Entities作為STE的替代品: https ://trackable.codeplex.com。 它被部署為一組NuGet包和Visual Studio擴展。 有一組項目模板,包含用於ASP.NET Web API腳手架的T4模板,以及用於生成WCF服務的項模板。
這是我寫的一篇博客文章,將TE與STE的比較: http : //blog.tonysneed.com/2013/11/18/trackable-entities-versus-self-tracking-entities 。
干杯,Tony Sneed
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.