Mam problem z nawigacją zwrotną w jednym z moich podmiotów.Jeden do jednego związku z Entity Framework Fluent API
Mam następujące dwa obiekty:
public class Candidate
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public long CandidateId { get; set; }
....
// Reverse navigation
public virtual CandidateData Data { get; set; }
...
// Foreign keys
....
}
public class CandidateData
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public long CandidateDataId { get; set; }
[Required]
public long CandidateId { get; set; }
// Foreign keys
[ForeignKey("CandidateId")]
public virtual Candidate Candidate { get; set; }
}
Teraz mój klawisz nawigacyjny zagranicznych na obiekcie CandidateData działa dobrze. Mam problem z uruchomieniem nawigacji wstecznej dla obiektu kandydata do pracy (jeśli to nawet możliwe).
To jest moja funkcja OnModelCreating:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
modelBuilder.Entity<Candidate>()
.HasOptional(obj => obj.Data)
.WithOptionalPrincipal();
base.OnModelCreating(modelBuilder);
}
Jest blisko do pracy, z wyjątkiem danych mam dwie kolumny, które linkują do CandidateId. Otrzymuję jeden z obiektu POCO, otrzymuję kolejną kolumnę Candidate_CandidateId Zakładam, że został stworzony przez modelBuilder.
Jestem cicho zagubiony w tej chwili. Czy ktoś może rzucić trochę światła na to, co się dzieje?
Dlaczego definiujesz dodatkowe pole, takie jak [Wymagane] public long CandidateId {get; zestaw; } Usuń i twoje problemy znikną –
Myślę, że twoja relacja powinna być modelBuilder.Entity() .HasOptional (obj => obj.Data) .WithRequired (e => e.Candidate); BTW: staraj się nie mieszać płynnego API i atrybutów. –
tschmit007