这是第一种情况
using (ISession session = NHibernateHelper.OpenSession())
{
using (ITransaction transaction = session.BeginTransaction())
{
session.QueryOver<T>().Where() // all ok
}
}
这是相同的界面,但在其他类
中productRepository.ExecuteQuery(over =>
{
IQueryOver<Product> inOtherContext = over;
inOtherContext.Where // where method not exists
});
我确定命名空间没有问题。
答案 0 :(得分:0)
这里的解决方案是使用一个不同的接口
IQueryOver<Product, Product>
例如,我们可以在16.5. Aliases的文档中看到它是如何工作的:
Cat catAlias = null;
IQueryOver<Cat,Cat> catQuery =
session.QueryOver<Cat>(() => catAlias)
....
/// <summary>
/// QueryOver<TRoot,TSubType> is an API for retrieving entities by composing
/// <see cref="Criterion.Expression" /> objects expressed using Lambda expression syntax
/// </summary>
/// <remarks>
/// <code>
/// IList<Cat> cats = session.QueryOver<Cat>()
/// .Where( c => c.Name == "Tigger" )
/// .And( c => c.Weight > minWeight ) )
/// .List();
/// </code>
/// </remarks>
public interface IQueryOver<TRoot,TSubType> : IQueryOver<TRoot>
{
...