2017-08-21 2 views
0

さまざまなエンティティからデータを取得する汎用/汎用メソッドを作成したいと考えています。 これは...nhibernateで汎用データを取得

public T GetOldData<T>(ISession session, object id) where T : class 
{ 
    var data = session.Get<T>(id); 

    return data; 
} 

私のコードです...しかし、私はオールウェイズこのエラーを得た:

Ambiguous persister for System.Object implemented by more than one hierarchy.

私はそれを呼び出す:あなたのGet<>objectを渡すとvar data = GetOldData<object>(session, @event.Entity);

答えて

1

ジェネリックメソッドでは、NHibernateはあなたが必要とするマッピングされたエンティティを知らない。あなたがしなければならないことはサンプルのために、あなたが必要なものを実体提供することです:あなたはまた、代わりに、ジェネリックの種類を提供するための方法を実装することができ

var data = GetOldData<Customer>(session, customerId); 

var entityType = typeof(Customer); // or something dynamic 

var data = (Customer) GetOldData(session, entityType, id); 

と方法を実装:

public object GetOldData(ISession session, Type entityType, object id) 
{ 
    var data = session.Get(entityType, id); 

    return data; 
} 
をサンプルについて
関連する問題