var school = new Models.School();
SchoolCommandToSchool.Map(school, model);
_schoolRepository.Add(school);
_unitOfWork.SaveChanges();
school.Code // is null
插入后,我在触发器中生成一个学校代码并存储在代码列中。但在保存更改后,我得到一个null。
如果我在插入触发器中写入数据,实体不知道从列中获取数据?
有人可以解释发生了什么吗?
答案 0 :(得分:0)
您可以使用changeTracker跟踪对象中的更改。像这样:
在DbContext类中(未经过测试的代码):
public override int SaveChanges() {
//detect the changes
this.ChangeTracker.DetectChanges();
//get the schools object, if it exists
//you also can check if the object is being insert or updated
// i => i.State == EntityState.Modified or EntityState.Added
var entries = this.ChangeTracker.Entries().Where(i => i.Entity.GetType() == typeof(School);
if (entries.Any())
{
foreach (var entry in entries) {
//do the trigger job in entry object;
}
}
return base.SaveChanges();
}
每当您更换学校时,您都会运行其他代码。