实体框架SubmitChanges

时间:2012-05-20 22:38:16

标签: entity-framework

我在表A上触发了在表A上新行插入期间更改表B上的列值。

由于目前的设计,我收到RowVersion错误。所以我想在实体SubmitChanges上执行当前的触发功能。我相信INotifyPropertyChanged解雇了财产变更,在我的情况下将被解雇表A财产变更,这不是我想要的。我想对表A行插入执行操作以更新表B上的值。

任何人都知道什么是更好的处理方式?

1 个答案:

答案 0 :(得分:0)

您可以覆盖SaveChanges,将所有实体插入到表A中,并对表B中的实体执行更新。

public override int SaveChanges(SaveOptions options) 
{
    foreach(TableA a in ObjectStateManager.GetObjectStateEntries(EntityState.Added)
                                          .Where(e => !e.IsRelationship)
                                          .Select(e => e.Entity)
                                          .OfType<TableA>())
    {
        // Here you can get your TableB entity and do an update
        // If you don't have those entities already loaded you will load
        // them one by one so it will probably need some additional 
        // adjustments for better performance
    }

    return base.SaveChanges(options);
}