>背景:我的数据库将所有 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()
?
对于存储过程select_persons
,您应该能够执行以下操作:
List<select_persons_Result> myPeople = dbContext.select_persons().ToList();
类select_persons_Result
是在将 sproc 添加到模型时自动创建的。
我不明白你打电话给SaveChanges()
是什么意思,如果你只是在做一个select
.