NHibernate存储库无法编译

时间:2011-08-05 20:53:23

标签: nhibernate generics repository repository-pattern

我不明白为什么下面的代码没有编译(在QueryOver行上),我试过了NHibernate 3.1和3.2

public interface IRepository<T> where T : class
{
    IQueryable<T> FindAll<T>();
    void Save(T obj);
}

public class RepositoryBase<T> : IRepository<T> where T : class
{
    protected ISession _session = null;

    public RepositoryBase(ISession session)
    {
        _session = session;
    }

    public void Save(T obj)
    {
        _session.Save(obj);
    }

    public IQueryable<T> FindAll<T>()
    {
-        return _session.QueryOver<T>().List<T>().AsQueryable();
    }
}

错误: enter image description here

1 个答案:

答案 0 :(得分:2)

您在FindAll声明中不需要<T>,因为它们已在类级别声明。您可能还缺少一些使用语句。 QueryOver行中有一个破折号(-)。以下应该在.NET 3.5项目中编译:

using System.Linq;
using NHibernate;

public interface IRepository<T> where T : class {
    IQueryable<T> FindAll();
    void Save(T obj);
}

public class RepositoryBase<T> : IRepository<T> where T : class {
    protected ISession _session = null;

    public RepositoryBase(ISession session) {
        _session = session;
    }

    public void Save(T obj) {
        _session.Save(obj);
    }

    public IQueryable<T> FindAll() {
        return _session.QueryOver<T>().List<T>().AsQueryable();
    }
}
相关问题