【问题标题】:IDENTITY_INSERT ON not being respected for Entity Framework DBSet.Add methodIDENTITY_INSERT ON 不受实体框架 DBSet.Add 方法的尊重
【发布时间】:2011-06-27 07:17:23
【问题描述】:

我运行这个查询:

context.Database.SqlCommand("SET IDENTITY_INSERT [Songs] ON;");

就在我从DbSet 执行.Add() 方法之前。

我的数据仍在使用身份值而不是我提供的 ID。

我只是暂时想要这个(用于数据迁移),然后它应该在未来保持自动生成的身份。

我正在为我的数据库使用 SQL Server CE 4。

【问题讨论】:

标签: entity-framework ef-code-first entity-framework-4 sql-server-ce


【解决方案1】:

这可能是个问题。 DbContext 自己处理数据库连接。仅当插入在与打开标识插入相同的连接上执行时才有效。我认为它会在此命令之后释放连接。您可以尝试使用不同的 DbContext 的构造函数,并传递您自己打开的DbConnection 实例并自行处理它的关闭。

【讨论】:

    【解决方案2】:

    EF 无法猜测您已执行 IDENTITY_SET 命令并相应地更改其内部逻辑。

    如果您需要插入特定的 Id 值,也可以使用 SqlCommand 进行插入。

    【讨论】:

    • 这就是我最终要做的。我不得不使用 SqlCeCommand。我想让我的代码与数据库无关,但我想我不能。
    • 好吧,SET IDENTITY_INSERT 并不是特别与 db 无关 :-)
    猜你喜欢
    • 2011-06-27
    • 2013-04-19
    • 1970-01-01
    • 1970-01-01
    • 2016-04-16
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多