首页 > 解决方案 > EF6如何在调用save savechanges之前将新添加行的主键插入到同一张表的新行的不同列中?

问题描述

Seq      RefSeq    Name
1        null      Manager  
2        1         Employee

我正在尝试在表中插入多行。当我插入上面显示的第二行时,我需要能够在第二行的 RefSeq 列中插入第一行的 Seq。在调用 SaveChanges() 之前,我需要能够做到这一点。我怎样才能做到这一点?

标签: entity-framework-6

解决方案


您可以尝试在您的上下文类上覆盖函数 SaveChanges 并添加以下代码:

public override int SaveChanges ( ) {
            var lastSeq = this.[yourTable].OrderByDescending ( c => c.Seq ).FirstOrDefault ( ).RefSeq;

            foreach(var  ent in this.ChangeTracker.Entries ( ).Where ( x => x.Entity is [theClassofYourEntity] ) ) {
                ( ( [ theClassofYourEntity ] ) ent.Entity ).RefSeq = lastSeq;
            }    

            return base.SaveChanges ( );
        }

将 [*****] 替换为您的值或表和实体类的名称

(这仅在一个一个保存时有效)


推荐阅读