2

次のような流暢なオブジェクトマッピングのセットがあります。

public class UserMap : ClassMap<User>
{
    public UserMap()
    {
        Map(x => x.Id);
        Map(x => x.Status);
    }
}

public class SpecialUserMap : SubClassMap<SpecialUser>
{
    public SpecialUserMap()
    {
        Map(x => x.Property);
    }
}

public class DirectoryMap : ClassMap<Directory>
{
    public DirectoryMap
    {
        Map(x => x.Id);
        HasMany(x => x.SpecialUsers).Where("Status = 0");
    }
}

Userは結合テーブルであり、SpecialUserが結合してステータスなどを取得します。ただし、ディレクトリのSpecialUsersコレクションでSpecialUserを参照しようとすると、生成されたSQLのように、「Undefined column'Status'」というエラーが発生します。NHibernateは、UserテーブルではなくSpecialUserテーブルからStatus列を取得しようとします。 。DirectoryMappingのStatus列を取得するテーブルをNHibernateに明示的に指示する方法はありますか?

4

2 に答える 2

0

User / SpecialUser の Status プロパティは、データベース内の単一の列にマップする必要があります。User から、また SpecialUser から取得することはできません。

回避策として、SpecialUserStatus プロパティを SpecialUser に追加すると、簡単にクエリを実行できます。

于 2009-12-15T00:51:25.537 に答える
0

このマッピングは、SpecialUser が User を拡張すると仮定すると、サブクラスごとのテーブルマッピングに適しているように見えます。私の推測では、それはバグです。

于 2009-12-15T01:21:22.527 に答える