1
有没有什么方法比较linq查询中的泛型类型以便用NHibernate转换为SQL?NHibernate中的通用参数Linq查询
事情是这样的:
public abstract class DataProviderBase<TDAO, TId>
{
protected ISession Session;
public virtual TDAO GetById(TId id)
{
var allItems = GetAllQuery(); // gives me query, usually Session.Query<TDAO>();
var res = allItems.SingleOrDefault(item => item.Id == id);
// !!! Operator '==' cannot be applied to operands of type 'TId' and 'TId'
return res;
}
protected virtual IQueryable<TDAO> GetAllQuery()
{
var query = Session.Query<TDAO>();
return query;
}
}
我知道我可以使用Session.Get<TDAO>(id);
,但是这不是我要的。 GetAllQuery()
是一种虚拟方法,我希望能够覆盖它。
- NHibernate的版本:3.3.3.4000
- NHibernate.Linq版本:1.0
感谢
您是否试过'item.Id.Equals(id)'? – mickfold 2013-04-09 16:00:23
是的我有,它抛出:'System.NotSupportedException:布尔等于(System.Object)' – 2013-04-09 16:36:40
@MartinVolek这可能是问题的一部分或没有,但NHibernate.Linq是用于NH 2.1.2; NH 3+拥有一个集成的Linq提供商。确保你没有使用旧的软件包。 – 2013-04-09 18:15:06