Próbuję kodu Entity Framework 4's First (EF CodeFirst 0.8) i mam problem z prostym modelem, który ma relację 1 < -> 0..1, między Person
i Profile
. Oto w jaki sposób są one zdefiniowane:Kod EF Najpierw daje mi błąd Nie można wstawić jawnej wartości dla kolumny tożsamości w tabeli "Ludzie", gdy IDENTITY_INSERT jest ustawione na WYŁ.
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; }
}
Kontekst DB wygląda następująco:
public class BodyDB : DbContext
{
public DbSet<Person> People { get; set; }
}
nie definiują DbSet
dla Profile
ponieważ uważam People
być jej łączna korzeń. Gdy próbuję dodać nowy Person
- nawet jeden bez Profile
z tym kodem:
public Person Add(Person newPerson)
{
Person person = _bodyBookEntities.People.Add(newPerson);
_bodyBookEntities.SaveChanges();
return person;
}
pojawia się następujący błąd:
Cannot insert explicit value for identity column in table 'People' when IDENTITY_INSERT is set to OFF.
Przedmiotem newPerson
ma 0
dla właściwości PersonId
kiedy zadzwoń pod numer People.Add()
. Tabele bazy danych to People
i Profiles
. PersonId
to PK od People
i jest to samo-przyrostowe Tożsamość. ProfileId
to PK od Profiles
i jest tożsamość samozwańcza. PersonId
jest kolumną int o wartości innej niż null: Profiles
.
Co robię źle? Myślę, że trzymam się wszystkich konwencji EF Code First dotyczących zasad konfiguracji.
Mogę się mylić, ale domyślną konwencją dla kolumn tożsamości jest właściwość o nazwie Id, czy próbowałeś zmienić PersonId na właśnie Id – ryudice
Właściwie początkowo miałem wszystkie kolumny PK o nazwie po prostu Id. Próbując rozwiązać problem, zmieniłem je tak, jak pokazano w moim poście. Oryginalny post Scotta Gu na pierwszym miejscu miał DinnerID jako podstawowy klucz stołu obiadowego - http://weblogs.asp.net/scottgu/archive/2010/07/16/code-first-development-with-entity-framework- 4.aspx –