0

これがすでに回答されている場合は申し訳ありませんが、私のシナリオに合った回答が見つかりません。

エンティティ クラスとビュー モデルがあります。以下のサンプル:

実在物:

    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; }

}

ビューモデル:

    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 エンティティを手動でロード/マップする必要があることです。

ビューモデルで以下を試しました

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;}

}

次に、以下のようにドロップダウンをマッピングしました

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

ただし、これには 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; }
}
4

1 に答える 1