2015-07-29 4 views
0

У меня есть сценарий в первом коде Entity, где мне нужно ограничение ключа foriegn между 2 таблицами, чтобы быть от 1 до 1 без использования первичных ключей обеих таблиц.Отношения 1 к 1 с использованием внешнего ключа в коде сначала EF 6

Учитывая следующую модель:

public class Appointment 
{ 
    [Key] 
    public int Id { get; set; } 
} 

public class InitialAppointment : Appointment 
{ 
    public int UserId { get; set; } 

    [ForeignKey("UserId")] 
    public User User { get; set; } 
} 

public class User 
{ 
    [Key] 
    public int Id { get; set; } 

    public string UserName { get; set; } 

    public InitialAppointment InitialAppointment { get; set; } 
} 

User может иметь только 1 дополнительный initial appointment, первоначальное назначение наследует от Appointment: так я ожидаю, что отношения между всеми 3 таблицы, чтобы быть 1 - 1, но запись пользователя и запись о записи может существовать сама по себе. Однако первоначальное назначение не может существовать без Пользователя или назначения.

Когда я пытался реализовать это я использовал Fluent API для specity следующего (наряду с указанными выше аннотациями):

modelBuilder.Entity<User>() 
      .HasOptional<InitialAppointment>(u => s.InitialAppointment) 
      .WithRequired(); 

вопросом является Entity Framework не правильно создание таблиц, они генерируются как так:

enter image description here

Как я могу сказать, рамку сущности через аннотацию данных или Fluent API, что пользователь должен иметь дополнительное 1 - 1 отношение с первоначальным назначением и первоначальным назначением должна InH erit (через отношения 1 - 1) с назначением?

ответ