【发布时间】:2013-04-09 15:45:11
【问题描述】:
有什么方法可以比较 linq 查询中的泛型类型以使用 NHibernate 转换为 SQL?
类似这样的:
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)吗? -
是的,我有,它抛出:
System.NotSupportedException : Boolean Equals(System.Object) -
@MartinVolek 这可能是问题的一部分,但 NHibernate.Linq 将与 NH 2.1.2 一起使用; NH 3+ 有一个集成的 Linq 提供程序。确保你没有使用旧包。
-
@Diego Mijelshon 我不知道。我已经删除了 Nhibernate.Linq 程序集,但它并没有像我预期的那样有帮助。我以前没有使用过它。但很高兴知道,谢谢。
标签: .net linq nhibernate generics linq-to-nhibernate