1

次のインターフェイスを実装するクラスがあります。

IUser {
    string UserName { get; set; }
}

このインターフェイス(ユーザー)とインターフェイスを実装するデフォルトのクラスはコアライブラリ内で定義されており、理想的にはこれを変更したくありません。ただし、ユーザーにプロパティを追加する必要があるため、IUserインターフェイスも実装するカスタムクラスを追加しました。これは、Userクラスをマップしたのと同じようにマップしましたが、フィールドを追加しました。しかし、私が言おうとすると:

session.Get<IUser>(1);

エラーが発生します:

複数の階層によって実装されたSecurity.IUserのあいまいな永続化:Web.Security.Models.User Security.Models.User

NHibernateには、どちらを使用するのが好ましいかを判断する方法がないため、なぜこれを取得するのかを理解できます。マッピングでこれをNHibernateに促すことができるかどうか疑問に思いましたか?

助けていただければ幸いです。ありがとう

4

1 に答える 1

3

Hibernateにはエンティティ名の概念があります

// in UserMap
EntityName("user");

// in SpecialUserMap
EntityName("specialUser");

// then in Query
(IUser)session.Get("user", 1);
// or
(IUser)session.Get("specialUser", 1);
于 2012-01-12T12:35:45.980 に答える