2017-08-09 8 views
1

私は学習段階にあります。エンティティフレームワークを使用して、コードファーストコンベンションでASP.NET MVC-5フレームワークで作成された外部キーは、デフォルトでNULL可能であることを知りたいのですが、?私は外部キーの関係を作成しようとしましたが、外部キーの列はNULL可能であることが判明しました。私は、カラムを外部キーとしてマークすると、エンティティフレームワークによってNOT NULLABLEとしてマークされるべきであるという考えを持っていました。以下はASP.Net MVC 5アプリケーションでは、デフォルトで外部キーがNULL可能ですか?

例です。

一つ多くに:一つの「標準」は、多くの「子供」を持つことができます。ただ設定以上により

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によってNULL可能であると仮定されているか、または私は外部キープロパティを正しく接続していませんか?

答えて

3

あなたは、このフィールドがNULL可能でないようにしたいことを、明示的に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

オクラホマので、非NULL可能FKをacheiveする最良の方法は何です。 FKのプロパティに「必須」属性を装飾するか、あなたが答えた方法に従うべきです。正しいのはどちらですか?私はいつも従いますか? – Unbreakable

+2

これは、流暢な設定や属性の設定にかかわらず、問題です。私は個人的に流暢な "方法"を好む – Piotr

+0

これは私の疑いをクリアします。そんなにありがとう。 – Unbreakable

関連する問題