簡體   English   中英

Microsoft不推薦的實體框架自我跟蹤實體

[英]Entity Framework Self-Tracking Entities not recommended by Microsoft

在查看Microsoft的網站時,我發現他們不再建議使用自我跟蹤實體。

下面的每個鏈接都是MS資源,提到不使用STE:

有誰知道為什么微軟不再推薦使用STE?

(注意:因為我不為MS工作,所以這是根據他們的公開聲明和過去的歷史推測的所有猜想 )。

您發布的第一篇文章“有點”解釋了原因,雖然不是很清楚:他們希望您使用更好的替代方案,而無意修復或改進STE。 微軟正在將STEs置於“早期失敗的實驗”中,類似於RDO或Remoting或LINQ2SQL--他們提出了一些看法,看看它有多好用,但事實並非如此。

總的來說,微軟始終承認STEs是解決實際業務問題的第一步,但它們顯然是不完整的。 特別是,它們在將對象圖附加到共享實體時非常糟糕 ,它們不支持延遲加載,並且還有許多其他的其他限制。

MS顯然已經決定他們不會嘗試清理它們(注意他們也因為類似的原因而棄用了POCO模板)。 由於他們不打算修復或改進模板,他們希望人們停止將其用於新項目並轉向更好的替代方案:

MSDN數據庫

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.

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