ho seguenti entitàQual è la differenza tra HasRequired e HasOptional
public class SchoolContext : DbContext
{
public DbSet<Address> Addresses { get; set; }
public DbSet<Employee> Employees { get; set; }
}
public class Address
{
public int Id { get; set; }
public string Street { get; set; }
public virtual Employee Employee { get; set; }
}
public class Employee
{
public int Id { get; set; }
public string Name { get; set; }
public virtual Address Address { get; set; }
}
Se ho impostato rapporto tra dipendenti e affrontare con i seguenti API perfetto
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
// Option #1
modelBuilder.Entity<Employee>()
.HasRequired(s => s.Address)
.WithRequiredPrincipal(a => a.Employee);
// Option #2
modelBuilder.Entity<Employee>()
.HasOptional(s => s.Address)
.WithRequired(a => a.Employee);
}
Sopra due opzioni creare la struttura della tabella esattamente lo stesso, se quindi, ciò che è diverso tra due opzioni. Se vado con l'opzione n. 1, ho pensato che l'entità dipendente avrebbe sempre un'entità indirizzo, ma non lo era. Sono stato in grado di salvare l'entità Employee senza valore dell'indirizzo.
Grazie in anticipo.
Vuol 'HasRequired' funzionano solo dal Discorso ai dipendenti? Quindi se si specifica 'HasRequired' non è possibile salvare un indirizzo senza un dipendente collegato. Ma puoi sempre salvare un dipendente indipendentemente dal fatto che abbia un indirizzo o meno, in quanto la tabella dei dipendenti non ha una chiave esterna che si riferisce alla tabella degli indirizzi. – ipr101
Volevo creare una relazione uno-a-uno tra due entità. Come hai detto, non sono in grado di salvare l'indirizzo senza dipendente collegato. Questo è successo in due opzioni. In caso affermativo, sopra due opzioni non sono diversi? Come ho chiesto, mi aspettavo che salvare la dipendente senza indirizzo collegato non fosse possibile nella prima opzione, ma mi sbagliavo. – Ray