将 IDENTITY_INSERT 与 EF4 结合使用
我正在尝试在数据库中创建一条具有预定义主键值的记录。我知道如何使用 sql 执行此操作,但我想知道 EF 是否可以为我执行此操作?否则,我将不得不为插入创建一个存储过程。
I am trying to create a record in the db that has a predefined primary key value. I know how to do this with sql, but I was wondering if EF can do this for me? Otherwise, I will have to create a stored proc for the inserts.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果您将实体的
StoreGeneratePattern
属性设置为“None”,则您为其指定的实体键值将传递到数据库。如果此属性设置为“身份”或“计算”,则无法控制在数据库中为此列设置什么值。
因此,如果您的数据库中有自动递增列,并且 ADO.NET 实体数据模型向导已为您设置了
StoreGeneratePattern
,您可以手动将此属性更改为“None”< /strong> 使用 XML 编辑器在模型的 SSDL 部分中,然后启用IDENTITY_INSERT
。您可以使用
ObjectContext.ExecuteStoreCommand< /code>
方法(如果您使用 EF4)或使用
ObjectContext.Connection.StoreConnection
属性执行 SQL 命令SET IDENTITY_INSERT; ON
(在 EF1 和 EF v4 中)。In case you have the
StoreGeneratedPattern
attribute set to "None" for your entity, the Entity Key value you specify for it will be passed to database.In case this attribute is set either to "Identity" or to "Computed" there is no way to control what value will be set to this column in DB.
So, if you have an auto-incremented column in your database and the ADO.NET Entity Data Model wizard has set the
StoreGeneratedPattern
for you, you can manually change this attribute to "None" in the SSDL part of the model using XML Editor, and then enableIDENTITY_INSERT
.You can use the
ObjectContext.ExecuteStoreCommand
method if you are using EF4 or use theObjectContext.Connection.StoreConnection
property to execute a SQL commandSET IDENTITY_INSERT <Your_Table> ON
(both in EF1 and EF v4).