Я тестирую Entity Framework 4 Code First (EF CodeFirst 0.8) и сталкиваюсь с проблемой с простой моделью, которая имеет отношение 1 ↔ 0..1 между Person и 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; }
}
Контекст DB выглядит следующим образом:
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;
}
Я получаю следующую ошибку:
Невозможно вставить явное значение для столбца идентификации в таблицу "Люди", если для параметра IDENTITY_INSERT установлено значение "ВЫКЛ".
Объект newPerson имеет свойство 0 для свойства PersonId, когда я вызываю People.Add(). Таблицы базы данных People и Profiles. PersonId является PK People и является идентификатором автоинкремента. ProfileId является PK Profiles и является идентификатором автоматической подстановки. PersonId - это непустой внутренний столбец Profiles.
Что я делаю неправильно? Я думаю, что придерживаюсь всех правил EF Code First по правилам конфигурации.
