Sto avendo problemi a capire cosa sto facendo male qui. Sto usando Asp.net Identity e ho creato una nuova entità chiamata Person
. Ho aggiornato la classe ApplicationUser
per avere un riferimento alla Person
. Volevo creare una proprietà di navigazione da Person
a User
. Ma quando eseguo il database di aggiornamento continuo a ricevere un messaggio di errore
Impossibile determinare la fine principale di un'associazione tra i tipi "myapp.Models.ApplicationUser" e "myapp.Models.DataModels.Person". La fine principale di questa associazione deve essere configurata in modo esplicito utilizzando l'API della relazione fluente o le annotazioni di dati.
public class Person
{
public Guid ID {get; set;}
...
public virtual ApplicationUser user {get; set;}
}
public class ApplicationUser
{
...
public Person person {get; set;}
}
Nel codice, sto facendo quanto segue
ApplicationUser user = new ApplicationUser {...}
Person person = new Person {....}
user.person = person;
Mi sto anche chiedendo se ho bisogno di impostare qualcosa per la proprietà virtuale di Person
such person.user = user
;
Ho cercato di seguire questo Impossibile per determinare la fine principale di un'associazione tra i tipi effettuando quanto segue sulla proprietà virtuale:
public class Person
{
public Guid ID {get; set;}
...
[ForeignKey("ID")]
public virtual ApplicationUser user {get; set;}
}
Grazie
Nella relazione 1:1
un'estremità deve essere principale e la seconda estremità deve essere dipendente . La fine principale è quella che verrà inserita per prima e che può esistere senza quella dipendente . La fine dipendente è quella che deve essere inserita dopo l'entità perché ha una chiave esterna per l' entità . Qui è necessario aggiungere l'attributo [Required]
a uno che è principal e rimuovere [ForeignKey("ID")]
dal modello.
Inoltre hai combinato il caricamento lazy (attributo Virtual
) e le funzionalità di caricamento avide nei tuoi modelli.