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 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