Репозиторий NHibernate не компилируется - PullRequest
0 голосов
/ 06 августа 2011

Я не понимаю, почему приведенный ниже код не компилируется (в строке 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 Ответ

2 голосов
/ 06 августа 2011

Вам не нужно <T> в объявлениях FindAll, потому что они уже объявлены на уровне класса. Вы также можете пропустить некоторые операторы использования. И в строке 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();
    }
}
...