Entity framework 将IDENTITY_INSERT与EF4一起使用

Entity framework 将IDENTITY_INSERT与EF4一起使用,entity-framework,identity-insert,Entity Framework,Identity Insert,我试图在数据库中创建一个具有预定义主键值的记录。我知道如何使用sql实现这一点,但我想知道EF是否可以为我实现这一点?否则,我必须为插入创建一个存储过程。如果实体的StoreGeneratedPattern属性设置为“None”,则为其指定的实体键值将传递到数据库 如果此属性设置为“Identity”或“Computed”,则无法控制此列在DB中设置的值 因此,如果您的数据库中有一个自动递增的列,并且ADO.NET实体数据模型向导为您设置了StoreGeneratedPattern,则可以使用X

我试图在数据库中创建一个具有预定义主键值的记录。我知道如何使用sql实现这一点,但我想知道EF是否可以为我实现这一点?否则,我必须为插入创建一个存储过程。

如果实体的
StoreGeneratedPattern
属性设置为“None”,则为其指定的实体键值将传递到数据库

如果此属性设置为“Identity”“Computed”,则无法控制此列在DB中设置的值

因此,如果您的数据库中有一个自动递增的列,并且ADO.NET实体数据模型向导为您设置了
StoreGeneratedPattern
,则可以使用XML编辑器在模型的SSDL部分手动将此属性更改为“None”,然后启用
IDENTITY\u INSERT


如果您使用的是EF4,则可以使用该方法,或者使用
ObjectContext.Connection.StoreConnection
属性执行SQL命令
SET IDENTITY\u INSERT ON
(在EF1和EF v4中).

这似乎没问题,但当我们试图添加多个相关对象,并且无法在多个表上设置identity\u insert时,问题就出现了。在最新的EF4.3中,我们使用的DbContext与先前的ObjectContext非常相似。语法略有变化,我打开标识插入的代码行如下所示:
CurrentDataContext.Database.ExecuteSqlCommand(“设置标识插入[MyDataTable]打开”,新对象[]{})你有这样做的经验吗?因为我不能让它工作。看这个问题-这是怎么得到11票的?它甚至不起作用。请参阅其他相关问题。上述解决方案不完整。您必须先打开上下文的连接,然后才能执行EstoRecommand以设置IDENTITY\u INSERT,然后在插入完成后关闭它。这使会话保持打开状态。