在查看Microsoft网站时,我发现他们不再建议使用自我跟踪实体。
下面的每个链接都是一个MS资源,其中提到不使用STE:
EF Designer Code Generation Templates
有谁知道为什么Microsoft不再建议使用STE?
最佳答案
(注意:由于我不在MS部门工作,因此所有猜测都是基于他们的公开声明和过去的历史)。
您发布的第一篇文章“有点儿”解释了原因,尽管不是很清楚:他们希望您使用更好的替代方法,而无意修复或改进STE。微软正在将STE放入“早期失败的实验”中,类似于RDO或Remoting或LINQ2SQL -他们放出一些东西来观察它的工作状况,而实际上却没有。
总的来说,Microsoft一直承认STE是解决实际业务问题的首要手段,但它们显然是不完整的。特别是,它们在将对象图附加到共享实体上时非常不好,它们不支持延迟加载,并且还有许多其他限制。
MS显然已经决定他们不打算对其进行清理(注意,出于类似原因,他们也已弃用POCO模板)。由于他们不打算修复或改进模板,因此他们希望人们停止将其用于新项目,而转向更好的替代方案:
MSDN data library
STE的存在主要是为了支持实体断开连接并重新连接到其上下文的情况,尤其是在序列化方案(例如WCF或Web服务)中。在“标准” Entity Framework 对象中,所有更改跟踪都是在上下文中完成的,将existig实体附加到上下文是有问题的。 STE使该过程更加容易,但是却付出了几乎使其他所有事情都变得困难的代价。
根据我对DbContext
的了解和经验,它实际上是解决此问题的更好选择,尽管它实际上并没有复制STE所做的事情。大量使用EF的用户之间的普遍共识似乎是端到端序列化EF实体是一个非常糟糕的主意。相反,您应该使用DTO和诸如AutoMapper之类的东西在DTO和EF对象之间进行映射。
关于c# - Microsoft不推荐的 Entity Framework 自跟踪实体,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12462319/