Quelle est la différence entre HasRequired et HasOptional
J'ai entités suivantes
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; }
}
Si je mets la relation entre l'Employé et l'Adresse de la suite des API Fluent
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);
}
Au-dessus de deux options pour créer de structure de table exactement les mêmes, si oui, quelle est la différence entre les deux options. Si je pars avec l'option #1, j'ai pensé à un Employé de l'entité doit toujours avoir l'adresse de l'entité, mais il ne l'était pas. J'ai été en mesure de sauver des Employés de l'entité, sans la valeur de l'adresse.
Merci d'avance.
Ne
Je voulais faire une relation entre deux entités. Comme vous l'avez mentionné, je ne suis pas en mesure d'enregistrer l'adresse sans salariés liés. Ce qui s'est passé dans les deux options. Si donc, au-dessus de deux options ne sont pas différents? Comme je l'ai remis en question, j'ai attendu que l'enregistrement de l'employé sans adresse liée n'est pas possible dans la première option, mais je me trompais.
HasRequired
ne fonctionnent qu'à partir de l'Adresse de l'Employé? Donc, si vous spécifiez HasRequired
vous ne pouvez pas enregistrer une adresse sans salariés liés. Mais vous pouvez toujours enregistrer un employé, indépendamment de savoir si elle a une adresse ou pas, que l'employé de la table n'a pas de clé étrangère qui fait référence à l'adresse de la table.Je voulais faire une relation entre deux entités. Comme vous l'avez mentionné, je ne suis pas en mesure d'enregistrer l'adresse sans salariés liés. Ce qui s'est passé dans les deux options. Si donc, au-dessus de deux options ne sont pas différents? Comme je l'ai remis en question, j'ai attendu que l'enregistrement de l'employé sans adresse liée n'est pas possible dans la première option, mais je me trompais.
OriginalL'auteur Ray | 2011-09-15
Vous devez vous connecter pour publier un commentaire.
Juste, fondée sur le sens de la HasRequired et HasOptional, je m'attends à ce que l'Option #1 applique l'Adresse et ne vous permet pas de créer un Employé sans spécifier une Adresse et que l'Option n ° 2 permet de créer un Employé avec une option d'adresse.
OriginalL'auteur Adrian