2017-08-09 62 views
1

我正處於學習階段。我想知道的是ASP.NET MVC-5框架在Code First約定中使用實體框架可以爲空的默認爲空的外鍵?我試圖創建外鍵關係,而外鍵列原來是空的。我有一個概念,如果我把一個列標記爲外鍵,它應該被實體框架標記爲NOT NULLABLE。在ASP.Net MVC 5應用程序中默認可以使用外鍵可空

下面是例子:一個「標準」可以有許多「孩子」:

一對多。

public class Children 
    { 
     public int Id { get; set; } 
     public string Name { get; set; } 

     public int StandardId { get; set; } 
     [ForeignKey("StandardId")] 
     public virtual Standard Standard { get; set; } 
    } 

    public class Standard 
    { 

     public Standard() 
     { 
      Children = new List<Children>(); 
     } 
     public int Id { get; set; } 
     public string StandardName { get; set; } 

     public virtual ICollection<Children> Children { get; set; } 
    } 

只需上面的配置,外鍵「StandardId」中走出來在數據庫Nullable。我只是想知道這是預期的行爲?外鍵是否被DEFAULT設置爲NULLABLE,或者我沒有正確連接外鍵屬性?

回答

3

你必須明確地告訴EF,你希望此字段是不可空:

public class YourContext : DbContext 
{ 
    public DbSet<Children> Childrens { get; set; } 
    public DbSet<Standard> Standards { get; set; } 

    protected override void OnModelCreating(DbModelBuilder dBModelBuilder) 
    { 
     modelBuilder.Entity<Children>().HasRequired(x => x.Standard); 
    } 
} 
+0

好了,什麼是acheive非空的FK的最佳途徑。如果我在FK屬性上裝飾了「必需」屬性,或者我應該按照您回答的方法。哪一個是正確的,哪一個我會一直遵循? – Unbreakable

+2

無論你堅持流利的配置還是屬性配置,這都是一個問題。我個人更喜歡流利的「方式」 – Piotr

+0

這清除了我的懷疑。非常感謝你。 – Unbreakable

相關問題