[英]Get generic data with nhibernate
I wanna create universal/generic method for getting data from various entities. 我想创建通用/通用方法来从各种实体获取数据。 This is my code...
这是我的代码...
public T GetOldData<T>(ISession session, object id) where T : class
{
var data = session.Get<T>(id);
return data;
}
...but I allways got this error: ...但是我总是遇到这个错误:
Ambiguous persister for System.Object implemented by more than one hierarchy.
由多个层次结构实现的System.Object的歧义持久性。
I call it with: var data = GetOldData<object>(session, @event.Entity);
我这样称呼它:
var data = GetOldData<object>(session, @event.Entity);
When you pass the object
to your Get<>
generic method, NHibernate does not know what mapped entity you need. 当您将
object
传递给Get<>
通用方法时,NHibernate不知道您需要哪个映射的实体。 What you have to do is to provide what entity you need, for sample: 您要做的是提供所需的实体,例如:
var data = GetOldData<Customer>(session, customerId);
You also could implement a method to provide a type instead of a generic. 您还可以实现提供类型而不是泛型的方法。 For sample:
样品:
var entityType = typeof(Customer); // or something dynamic
var data = (Customer) GetOldData(session, entityType, id);
And implement the method: 并实现方法:
public object GetOldData(ISession session, Type entityType, object id)
{
var data = session.Get(entityType, id);
return data;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.