实体框架代码优先 - 通过更改跟踪从存储过程中选择数据

时间:2016-06-06 18:55:49

标签: c# entity-framework ef-code-first

后台:我的数据库将所有CRUD操作公开为存储过程。我想利用DbContext的优势,包括变更跟踪。存在用于插入,更新和删除操作的现成解决方案:

protected override void OnModelCreating (DbModelBuilder modelBuilder)
{
    modelBuilder.Entity<Person>() 
.MapToStoredProcedures(c => 
c.Update(u => u.HasName("update_person") 
               .Parameter(p => p.Id, "person_id") 
               .Parameter(p => p.Name, "name")) 
 .Delete(d => d.HasName("delete_person") 
               .Parameter(p => p.Id, "person_id")) 
 .Insert(i => i.HasName("insert_person") 
               .Parameter(p => p.Name, "department_name")));
}

我还发现了如何从存储过程中选择数据:

Database.SqlQuery<Person>("select_persons", parameters);

以下是问题:如何让DbContext对检索到的记录集执行更改跟踪?我可以拨打SaveChanges()吗?

1 个答案:

答案 0 :(得分:0)

对于存储过程select_persons,您应该能够:

List<select_persons_Result> myPeople = dbContext.select_persons().ToList();

将sproc添加到模型时会自动创建类select_persons_Result

如果你只是做SaveChanges(),我不明白你打电话select是什么意思。