2016-10-11 9 views
0

WagonsWagonTypesの2つのテーブルが必要であるとします。明らかに、Wagonsテーブルの各行は、外部キーを使用して対応するWagonTypesレコードを参照する必要があります。ASP.NETコアEFで外部キーごとに2つのフィールドを定義する必要があります

私はこの権利を行っていますか?

public class Wagons 
{ 
    public Guid Id { get; set; } 

    [Required] 
    public WagonTypes Type { get; set; } 
} 

public class WagonTypes 
{ 
    public Guid Id { get; set; } 

    [Required] 
    public string Name { get; set; } 
} 

うん、それが動作し、すべてのことが、追加のフィールドが、その後docsにありますなぜ私はunserstandません:

public int BlogId { get; set; } 
    public Blog Blog { get; set; } 

BlogIdフィールドを持つことのポイントは何ですか?私もそれを定義する必要がありますか?

+0

あなたの構造はよく見えます。それはドキュメンテーションで説明されています。 Post.Blogは参照ナビゲーションプロパティです。あなたはそれを追加する必要はありません。 – Sefa

+0

[docs](http://ef.readthedocs.io/ja/latest/modeling/shadow-properties.html#conventions)から:_シャドウプロパティは、関係が検出されても外部キープロパティがない場合にのみ作成されます従属エンティティクラスで見つけた_ – tmg

+0

参考文献の例では、例と参考例との間に若干の違いがあります。参考例では、多くの投稿に対するブログが1つの関係になっています(したがって、投稿にはブログ)あなたの例では逆数は真ですが、ワゴンは1つのワゴンタイプしかないので、あなたはワゴンタイプのエンティティを持ち、その親ワゴンに戻ってもらいたいと思うわけではありません(1対多の関係は他の方法)。 – CptCoathanger

答えて

0

外部キーを追加する必要はありませんが、それはあなたの人生が楽になるため、お勧めします。

テーブルワゴンの一部の行(たとえば、プロパティ名)を編集するとします。オブジェクトを取得し、Nameを編集してから、Property TypeをロードしてSaveChangesを呼び出す必要があります。 Typeをロードしなかった場合、EFはそのTypeも編集したいと考えます。

あなたのワゴンクラスにpublic int TypeId{ get; set; }があった場合は、そのオブジェクトを取得して直接Nameを編集し、それ以上ロードすることなくSaveChangesを呼び出すことができます。

関連する問題