我们使用实体框架 4.0,并且有一个映射到 DBA 提供的存储过程的实体。映射详细信息中的插入、更新和删除函数都有自己的存储过程。
当使用映射到表的实体时,我可以添加新实体,调用dataContext.SaveChanges();
然后我实例化的新实体会自动使用数据库中标识列的值填充其 ID 属性。
当实体映射到存储过程时如何实现这一点? INSERT 存储过程是否必须做一些特殊的事情和/或我必须做一些特殊的事情dataContext.SaveChanges();
?
Example
传统方式
var newCustomer = new Customer
{
Name = "Fred",
Age = 24
};
// newCustomer.Id is null
dataContext.Customers.Add(newCustomer);
dataContext.SaveChanges()
// newCustomer.Id is what database identity column was set to.
映射到存储过程。
var newCustomer = new Customer
{
Name = "Fred",
Age = 24
};
// newCustomer.Id is null
dataContext.Customers.Add(newCustomer);
dataContext.SaveChanges()
// newCustomer.Id is null
如果您在数据库中使用标识列,请确保您的存储过程包含:
SELECT Scope_Identity() AS Id
打电话后INSERT
还要确保实体模式下的 PK 已正确配置StoreGeneratedPattern
set to Identity
(如果您使用过,应该是自动的从数据库更新)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)