0

私がテーブルを持っているとしましょう:

Project
Id
Title
ProjectManagerId
ContactId

ProjectManagerIdとContactIdは、どちらもPersonという名前のテーブルのIDです。

Person
PersonId
Firstname
Lastname

これらの2つの列をマップして、人物オブジェクトを作成するにはどうすればよいですか?(自動マッピングまたはFluentの法線マッピングのいずれかを使用)。

ありがとう

4

2 に答える 2

2

次のように 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);
    }
}

コンベンションの他の設定を忘れないでください:)

于 2010-06-08T19:35:35.943 に答える
1

通常のテーブルと同じように、必要なデータを含む "Person" というビューを作成し、それをマップします。

于 2010-06-03T07:18:58.793 に答える