私がテーブルを持っているとしましょう:
Project
Id
Title
ProjectManagerId
ContactId
ProjectManagerIdとContactIdは、どちらもPersonという名前のテーブルのIDです。
Person
PersonId
Firstname
Lastname
これらの2つの列をマップして、人物オブジェクトを作成するにはどうすればよいですか?(自動マッピングまたはFluentの法線マッピングのいずれかを使用)。
ありがとう
私がテーブルを持っているとしましょう:
Project
Id
Title
ProjectManagerId
ContactId
ProjectManagerIdとContactIdは、どちらもPersonという名前のテーブルのIDです。
Person
PersonId
Firstname
Lastname
これらの2つの列をマップして、人物オブジェクトを作成するにはどうすればよいですか?(自動マッピングまたはFluentの法線マッピングのいずれかを使用)。
ありがとう
次のように 2 つのクラスを作成するだけです。
public class Person
{
public virtual int PersonId { get; set; }
public virtual string FirstName { get; set; }
public virtual string Surname { get; set; }
}
public class Project
{
public virtual int ProjectId { get; set; }
public virtual string Title { get; set; }
public virtual Person ProjectManager { get; set; }
public virtual Person Contact { get; set; }
}
Personよりも興味深いので、Projectのマッピングクラス:)
public class ProjectMap : ClassMap<Project>
{
public ProjectMap()
{
Id(x => x.ProjectId);
Map(x => x.Title);
References(x => x.ProjectManager);
References(x => x.Contact);
}
}
FNHを使用している場合
マッピングのオーバーライドは次のようになります。
public class ProjectMappingOverride : IAutoMappingOverride<Project>
{
public void Override(AutoMapping<Project> mapping)
{
mapping.Id(x => x.ProjectId); //Usually for Id I have a convention, and not define it here
mapping.Map(x => x.Title); //Also for simple properties. You could remove these lines if you have setup the conventions.
mapping.References(x => x.ProjectManager);
mapping.References(x => x.Contact);
}
}
コンベンションの他の設定を忘れないでください:)
通常のテーブルと同じように、必要なデータを含む "Person" というビューを作成し、それをマップします。