Что такое разница между Asrequired и 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; }
    }

Если я устанавливаю отношения между сотрудником и адрес со следующим свободным API

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

        }

над двумя опциями, создавая структуру таблицы точно так же, если так, то, что отличается между двумя вариантами. Если я поеду с вариантом № 1, я думал, что субъект сотрудника всегда должен иметь организацию адреса, но это не было. Я смог сохранить сущность сотрудника без значения адреса.

заранее спасибо.

11
задан Ray 15 September 2011 в 12:14
поделиться