1

DBから2つのテーブルを結合しようとしていますが、(キーではなく)指定された列でそれらを結合する必要があります。テーブルは次のようになります。

EmplTable: Id, EmplId, FirstName, LastName
LoginTable: Id, EmplLoginId, Login

ドメインオブジェクト従業員:

public class Employee
{
    public virtual int Id { get; set; }
    public virtual String FirstName { get; set; }
    public virtual String LastName { get; set; }
    public virtual String Login { get; set; }
}

私のマッピングは次のようになります:

public EmployeeMap()
{
    Table("EmplTable");
    Id(x => x.Id).Column("Id");
    Map(x => x.FirstName).Column("FirstName");
    Map(x => x.LastName).Column("LastName");
    Join("LoginTable", m =>
    {
        m.Fetch.Join();
        m.KeyColumn("EmplId");
        m.Map(t => t.Login).Column("Login");
    });
}

私がやろうとしているのは、EmplTable.EmplId=LoginTable.EmplLoginIdのテーブルを結合することです。 結合列をIdからEmplIdに変更するにはどうすればよいですか。

4

1 に答える 1

1

many-to-oneとしてマップし、次のようにマップできます。

public EmployeeMap() {
    Table("EmplTable");
    Id(x => x.Id).Column("Id");
    Map(x => x.FirstName).Column("FirstName");
    Map(x => x.LastName).Column("LastName");
    References(x => x.Login, "EmplId")
        .Fetch.Join(); 
}

次に、プロパティを使用して Login オブジェクトを作成する必要があります。LoginTable

編集:

これは現在、NHibernate でこれを行うことができないため、Fluent NHibernate では不可能だと思います。

https://nhibernate.jira.com/browse/NH-1452
https://nhibernate.jira.com/browse/NH-3143

于 2012-05-16T01:08:10.193 に答える