实体框架 DBSet.Add 方法不遵守 IDENTITY_INSERT ON

发布于 2024-10-17 13:11:22 字数 273 浏览 1 评论 0原文

我运行此查询:

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

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

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

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

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

I run this query:

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

just before I do the .Add() method from a DbSet.

My data still is using the identity value instead of the ID that I'm supplying.

I only want this temporarily (for data migration) and then it should remain auto generated identity in the future.

I'm using SQL Server CE 4 for my database.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

月棠 2024-10-24 13:11:23

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

This can be a problem. DbContext handles db connection itself. This works only if inserts are executed on the same connection as turning on identity insert. I think it releases the connection after this command. You can try to use different DbContext's constructor and pass your own opened DbConnection instance and handle its closing by yourselves.

情绪失控 2024-10-24 13:11:23

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

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

EF can't guess that you've executed an IDENTITY_SET command and change its internal logic accordingly.

If you need to insert specific Id values, use SqlCommand for the inserts too.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文