gpt4 book ai didi

entity-framework - EF Code First 给出错误:当 IDENTITY_INSERT 设置为 OFF 时,无法在表 'People' 中插入标识列的显式值。

转载 作者:行者123 更新时间:2023-12-03 06:31:11 24 4
gpt4 key购买 nike

我正在尝试 Entity Framework 4 的 Code First (EF CodeFirst 0.8),但遇到了一个简单模型的问题,该模型在 Person 之间具有 1 <--> 0..1 关系。和Profile 。它们的定义方式如下:

public class Person
{
public int PersonId { get; set; }

public string FirstName { get; set; }
public string LastName { get; set; }
public DateTime? DOB { get; set; }

public virtual Profile Profile { get; set; }
}

public class Profile
{
public int ProfileId { get; set; }
public int PersonId { get; set; }
public string DisplayName { get; set; }

public virtual Person Person { get; set; }
}

数据库上下文如下所示:

public class BodyDB : DbContext
{
public DbSet<Person> People { get; set; }
}

我没有定义 DbSet对于 Profile因为我认为People为其聚合根。当我尝试添加新的Person时- 即使没有 Profile使用此代码:

public Person Add(Person newPerson)
{
Person person = _bodyBookEntities.People.Add(newPerson);
_bodyBookEntities.SaveChanges();
return person;
}

我收到以下错误:

Cannot insert explicit value for identity column in table 'People' when IDENTITY_INSERT is set to OFF.

newPerson对象有一个 0对于PersonId当我调用People.Add()时属性(property)。数据库表是PeopleProfilesPersonIdPeople的PK并且是一个自增Identity。 ProfileIdProfiles的PK并且是一个自动增量的身份。 PersonIdProfiles 的非空 int 列.

我做错了什么?我认为我遵守 EF Code First 的所有约定优于配置规则。

最佳答案

I get the following error: Cannot insert explicit value for identity column in table 'People' when IDENTITY_INSERT is set to OFF.

我认为 IDENTITY_INSERT 是自动增量功能,已关闭。所以,检查数据库中的PersonId字段,看看它是否是一个身份。

此外,也许这也能解决您的问题。

[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int PersonId { get; set; }

关于entity-framework - EF Code First 给出错误:当 IDENTITY_INSERT 设置为 OFF 时,无法在表 'People' 中插入标识列的显式值。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4682504/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com