【问题标题】:Entity Framework - What is the advantage of automatic change detection?实体框架 - 自动更改检测的优势是什么?
【发布时间】:2011-08-11 10:26:35
【问题描述】:

使用 EntityObject 派生类型或更改跟踪代理对象时,实体框架会自动跟踪对实体所做的更改

这对我有什么好处?如果没有这个,当我调用 SaveChanges 并且我的 POCO 正确保留时,我的更改仍然会被检测到。

另外,为什么很多 EF 的在线教程在进行更改后都将状态显式更改为已修改,这是为了什么目的?

context.Entry(model).State = EntityState.Modified;

【问题讨论】:

    标签: c# .net entity-framework


    【解决方案1】:

    EF 跟踪实体的更改,因此当您调用 SaveChanges() 时,它将知道要在数据库中更新哪些实体,即 - 生成什么 SQL 并针对 db 运行。


    有下面一行的原因是附加一个当前未被跟踪的模型并将其状态设置为已修改。

    context.Entry(model).State = EntityState.Modified;
    

    如果您自己创建了实体的实例,则需要这样做,例如-

    var customer = new Customer();
    

    这不会将您的客户添加到 DbContext 中,因此不会对其进行跟踪。因此,您需要为此使用 context.Entry(customer)。

    【讨论】:

    • 我特别指的是框架提供的自动更改跟踪以及它提供的基本快照跟踪。如此处所述的“即时通知” msdn.microsoft.com/en-us/library/gg696177(v=VS.103).aspx 在修改跟踪实体后使用将状态更改为已修改的行,这就是我所做的不明白。如果我将其注释掉,实体仍会按预期更新
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-04
    • 2016-03-22
    • 1970-01-01
    • 1970-01-01
    • 2016-08-23
    • 1970-01-01
    • 2021-01-09
    相关资源
    最近更新 更多