保存更改后触发器生成的访问值

时间:2015-05-15 12:13:51

标签: entity-framework entity-framework-6

        var school = new Models.School();

        SchoolCommandToSchool.Map(school, model);

        _schoolRepository.Add(school);

        _unitOfWork.SaveChanges();

        school.Code // is null 

插入后,我在触发器中生成一个学校代码并存储在代码列中。但在保存更改后,我得到一个null。

如果我在插入触发器中写入数据,实体不知道从列中获取数据?

有人可以解释发生了什么吗?

1 个答案:

答案 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();
}

每当您更换学校时,您都会运行其他代码。