在查看Microsoft网站时,我发现他们不再建议使用自我跟踪实体。

下面的每个链接都是一个MS资源,其中提到不使用STE:

  • 显示Entity Framework团队可以使用哪些模板:
    EF Designer Code Generation Templates
  • Self-Tracking Entities
  • Recommended technologies for N-Tier applications

  • 有谁知道为什么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/

    10-09 19:31