1

非常に単純な質問ですが、2つのモデル間で単純な一対多関係を実装しようとしているようです。Web APIでコードファーストを使用する外部キー

これまでのところ、私が持っていることはこれです:製品クラス :

public class Products 
{ 
    public long Id { get; set; } 
    public long Code { get; set; } 
    public DateTime DateCreated { get; set; } 
    public DateTime DateModified { get; set; } 
    public Boolean Reviewed { get; set; } 
    [ForeignKey("BundleId")] 
    public int BundleId { get; set; } 
    public virtual Bundles Bundle { get; set; } 
} 

とクラスは次のようになり欠陥:

public class Defects 
{ 
    public long Id { get; set; } 
    public String Description { get; set; } 
    public String Picture { get; set; } 
    public DateTime DateCreated { get; set; } 
    [ForeignKey("ProductId")] 
    public int ProductId { get; set; } 
    public Products Product { get; set; } 
    [ForeignKey("UserId")] 
    public int UserId { get; set; } 
    public virtual Users User { get; set; } 
} 
私は追加する必要はありませんでしたと思っ

ICollectionDefectsからProductsのクラスでは「シンプルな」1対多の関係であり、このコードはDefectsクラス(これ以上は必要ありません)のProductのIDを取得できるだけの十分なものであるためです。

しかし、もちろん私は例外を取得:

プロパティ「のProductIdは、」ナビゲーションプロパティとして設定することはできません。プロパティは有効なエンティティタイプでなければならず、プロパティには非抽象ゲッタとセッタが必要です

どうすれば問題を解決できますか? 私は2つの外部キーで間違っているかもしれませんが、私は外部キーの名前を宣言して以来、私はそれが十分であると仮定しました。

ご協力いただきありがとうございます。

+1

データベースモデルにコレクションを追加する必要がある場合は、どうしたらよいですか?何がここの問題? – tym32167

+0

私はする必要がありますか?私はそれがちょうど2つの異なる実装だと思った。 私は同じコードを保持し、コレクションを親モデルに追加する必要がありますか? –

+1

plsを確認する必要があると思うが、docsを読んでくださいhttps://msdn.microsoft.com/en-us/library/jj713564(v=vs.113).aspx – tym32167

答えて

1

これは、あなたの関係を蒸留することができるものです。
ForeignKeyアノテーションは、キープロパティの名前を持つナビゲーションプロパティに適用されます。

1対多の関係を構築する場合は、ICollectionが絶対必要です。
それ以外の場合は「多く」

public class Products 
    { 
     public int Id { get; set; } 

     public virtual List<Defects> Bundle { get; set; } 
    } 


    public class Defects 
    { 
     public long Id { get; set; } 


     public int ProductId { get; set; } 

     [ForeignKey("ProductId")] 
     public Products Product { get; set; } 
    } 

FKはキープロパティにも適用できます。しかしその場合、そこに関連するクラスのインスタンスの名前を入れなければなりません。

public class Defects 
    { 
     public long Id { get; set; } 


     [ForeignKey("Product")] 
     public int ProductId { get; set; } 


     public Products Product { get; set; } 
    } 
関連する問題