entity-framework - Entity Framework 覆盖 DatabaseGeneratedOption.Identity

标签 entity-framework

我有一个 DatabaseGeneratedOption.Identity 的模型,但在特定情况下,想保存具有特定主键值的实体;
即力id = 1
如果我只是分配值并保存,则 id 会被自动生成的值覆盖。

var model = new User {Id = 1};
dbContext.SaveChanges();
Asser.AreEqual(1, model.Id); // false

最佳答案

您可以在保存更改之前设置身份插入。这是样本。

var model = new User {Id = 1};
dbContext.Database.ExecuteSqlCommand("SET IDENTITY_INSERT [dbo].[User] ON");
dbContext.SaveChanges();
dbContext.Database.ExecuteSqlCommand("SET IDENTITY_INSERT [dbo].[User] OFF");
Asser.AreEqual(1, model.Id);

将 [dbo].[User] 替换为您的用户表的名称。

关于entity-framework - Entity Framework 覆盖 DatabaseGeneratedOption.Identity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31022375/

相关文章:

database - NHibernate 或 EF,Shards 还是手动分片?

c# - EF 转换问题

c# - 具有 ComplexType 的 BulkInsert 实体

entity-framework - 为什么 Entity Framework 会忽略 TransactionScope(不使用 NOLOCK 添加)?

c# - 使用继承时设置外键关联的正确方法

entity-framework - 如何使用 Azure AD/OpenId 进行身份验证但使用基于 Entity Framework 的用户/角色数据

c# - 在 Entity Framework 中设置只有 id 的导航属性的最佳方法是什么?

entity-framework - EF 急切加载多个子子集合

c# - 如何将 Entity(EF) 和 EntityDTO 与 Contract(Interface) 一起使用

.net - 尝试安装 '5.0.0'的 'EntityFramework'版本,但项目已包含其他版本