На этот вопрос уже есть ответы здесь :
Закрыт 11 месяцев назад .
Я пробую сначала код Entity Framework 4 (EF CodeFirst 0.8), и у меня возникла проблема с простой моделью, которая имеет 1 0..1 отношения между Человек
и Профиль
. Вот как они определены:
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 People { get; set; }
}
Я не определял DbSet
для профиля
, потому что я считаю людей
] быть его совокупным корнем. Когда я пытаюсь добавить нового человека
- даже без профиля
с этим кодом:
public Person Add(Person newPerson)
{
Person person = _bodyBookEntities.People.Add(newPerson);
_bodyBookEntities.SaveChanges();
return person;
}
, я получаю следующую ошибку:
Невозможно вставить явное значение для столбца идентификаторов в таблица "Люди", когда для IDENTITY_INSERT установлено значение OFF.
Объект newPerson
имеет значение 0
для свойства PersonId
, когда я вызываю People.Add ()
. Таблицы базы данных - это Профили людей
и Профили
. PersonId
является PK People
и представляет собой идентификатор с автоматическим приращением. ProfileId
- это PK профилей
и идентификация автозапуска. PersonId
- это столбец типа int профилей
.
Что я делаю не так? Я думаю я' m соблюдая все соглашения EF Code First относительно правил конфигурации.