entity-framework-6 - EF6如何在调用save savechanges之前将新添加行的主键插入到同一张表的新行的不同列中?
问题描述
Seq RefSeq Name
1 null Manager
2 1 Employee
我正在尝试在表中插入多行。当我插入上面显示的第二行时,我需要能够在第二行的 RefSeq 列中插入第一行的 Seq。在调用 SaveChanges() 之前,我需要能够做到这一点。我怎样才能做到这一点?
解决方案
您可以尝试在您的上下文类上覆盖函数 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 ( );
}
将 [*****] 替换为您的值或表和实体类的名称
(这仅在一个一个保存时有效)
推荐阅读
- android - 'foo_model' 引用的 JVM 对象的类型为 'Class
' 并且它无权访问在 'Foo' 中声明的字段 'float a' - printing - 尝试从 PCL 中的应用程序打印
- c# - ASP.NET Core 登录未将我重定向到主页
- amazon-web-services - 如何在aws上使用专用IP运行多个站点?
- python - 我们可以在 python 脚本中动态更改 tensorflow 版本吗?
- python - 用列表中的数据填充空的熊猫数据框
- java - 从 firebase db 设置微调器标题
- javascript - 错误:绝对路径://fileName/ 在量角器 nodejs 中解压缩文件夹
- ruby-on-rails - 从配置继承 Rails 引擎模型
- sql - Postgresql唯一约束无效