私はこのことをどのように検索するか分かりませんので、私は説明しようとしています。複数の列を使用してモデルを他のモデルにマッピングする
私は2つのモデルがありますがあり、それらの両方によりますが、これらは重要なビットです
public class Destinations
{
public int DestinationsID { get; set; }
public virtual Navigation Navigation { get; set; }
}
public class Navigation
{
public int NavigationID { get; set; }
public string ParameterName { get; set; }
public int ParameterValue { get; set; }
public string FriendlyURL { get; set; }
}
を。私はDestinationを保存するときにNavigation ParameterNameをDestinationに設定し、ParameterValueをDestinationIDに設定します。
ナビゲーションが目的地に依存しないため、目的地をナビゲーションにマップすることはできません。そのモデルのIDとしてParameterNameとParameterValueのいずれかのモデルを持つことができます(または、これらのモデルの両方が、ページにのみ関連し、追加のモデルではないため、nullでもかまいません)。
したがって、単一の目的地を表示しているとき、またはリストをループしているときは、Navigation.FriendlyURLを取得する必要があります。これが私が公開仮想ナビゲーションナビゲーション{get;セット; }。私のマッピングクラスでは、DestinationのParameterNameとDestinations.DestinationIDのParameterValueに従ってナビゲーションを取得する必要があります。これは私が完全に立ち往生したところです。すべてのヘルプをいただければ幸いです
this.HasRequired(d => d.Navigation)
.WithRequiredDependent(WHAT GOES HERE)
.Map(WHAT GOES HERE)
.WillCascadeOnDelete(false);
:
私はこのようなものが必要と仮定しています。
この関係は1対1です。また、foriegnkeyはありませんが、ナビゲーションのParameterName(この場合は常に「Destination」)フィールドとParameterValue(Destinationsの主キー)フィールドを使用してマッピングされます。 –
@DreadPeterその場合、マップすることはできません。 One-to-Oneは共有PKを使用します。 – Eranga
OK、そうですね。 List destinations = db.Destinations.Where(d => d.Active == true && d.DestinationTypeValue == dd.DestinationTypeValue).ToList(); ビューにモデルを介してアクセスできる適切なナビゲーションアイテムを追加するために「Include」を付けることは可能ですか? ViewModelを作成しなければならない場合でも(これはおそらく助けが必要です)。 –