【问题标题】:EntityFramework 5.0 : marking a navigation property as "modified"EntityFramework 5.0:将导航属性标记为“已修改”
【发布时间】:2013-08-11 18:50:45
【问题描述】:

我正在使用 Entity Framework 5.0,我想知道是否有办法将导航属性标记为已修改。

我看到这可以通过“普通”属性来完成,这样:

context.Entry(blog).Property(u => u.Name).IsModified = true

collection 有类似的东西吗? :

context.Entry(blog).Collection..???

【问题讨论】:

    标签: entity-framework-5 navigation-properties


    【解决方案1】:

    不,这是不可能的,因为最终修改的属性用于构建更新语句。由于更新语句只修改原始属性,因此无法将导航属性标记为已修改。

    您必须将Collection 对象本身中的属性标记为已修改(或Collection 中的对象,如果它是对象的集合)。

    【讨论】:

    • 感谢您的回答。问题是我必须停用我的 EntityContainer 的 autoDetectChanges(以加快对我的数据库的访问)。因此,更改集合中实体的状态不足以让框架检测到此集合已被修改。这就是为什么我想明确地“告诉他”集合已经改变并且这些改变必须保存在数据库中......
    【解决方案2】:

    试试这个:

    RepositoryContext.Attach(entity);
    var dbEntry = this.RepositoryContext.Entry(entity);
    dbEntry.Collection("Addresses").IsModified = true;
    

    【讨论】:

    • 那又怎样,我昨天也遇到了这个问题,找到了解决办法分享给大家,这里不是每个人都是冠军!!!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-02
    • 2012-08-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多