2016-10-19 5 views
0

謝罪これは既に答えられている場合、私は私のシナリオに合った答えを見つけることができません。MVC - EF - 複数の外部キーマッピング

私はエンティティクラスとビューモデルを持っています。サンプル以下:

エンティティ:

public class Data 
{ 
    [Key, Column(Order = 0)] 
    public int ID { get; set; } 

    [Column(Order = 1)] 
    public Q1Values Q1 { get; set; } 

    [Column(Order = 2)] 
    public Q1Values Q2 { get; set; } 

} 

のViewModel:

public class DataViewModel 
{ 
    [Key, Column(Order = 0)] 
    public int ID { get; set; } 

    [Column(Order = 1)] 
    public int Q1ID { get; set; } 

    [Column(Order = 2)] 
    public int Q2ID { get; set; } 

    public List<Q1Values> Q1ValuesList {get;set;} 

} 

私が持っている問題は、私はすべて同じルックアップテーブル 'Q1Values' を使用して50以上の質問を持っているということです。上記の問題は、挿入する前に、FKエンティティをビューモデルからエンティティモデルに手動でロード/マップする必要があることです。

私はその後、

@Html.DropDownListFor(m=>m.Q1.ID, new SelectList(model.Q1Values,"ID","Name")) 

以下のようなドロップダウンをマッピングされた。しかし、これはまだコントローラで完全にロードされたエンティティにマッピングするために私を必要とするビューモデルで以下

public class DataViewModel 
{ 
[Key, Column(Order = 0)] 
public int ID { get; set; } 

[Column(Order = 1)] 
public Q1Values Q1ID { get; set; } 

[Column(Order = 2)] 
public Q1Values Q2ID { get; set; } 

public List<Q1Values> Q1ValuesList {get;set;} 

} 

を試してみましたそれにはIDのみが含まれるためです。

このためのベストプラクティスは何ですか?各質問のコントローラ内の完全なエンティティをマップする必要がありますか?長い間重複しているように見えます。

エンティティクラスで外部キーを手動で定義しようとしましたが、複数のFKで機能しないようです。下記参照。

public class QOLData 
{ 
    [Key, Column(Order = 0)] 
    public int ID { get; set; } 

    [Column(Order = 1)] 
    public int Q1 { get; set; } 

    [Column(Order = 2)] 
    public int Q2 { get; set; } 

    [ForeignKey("Q1,Q2")] 
    public virtual Q1Values Q1Values { get; set; } 
} 

答えて

関連する問題