NHibernate 存储库无法编译

发布于 2024-11-27 23:06:41 字数 703 浏览 1 评论 0原文

我不明白为什么下面的代码无法编译(在 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();
    }
}

错误: 在此处输入图像描述

I don't understand why the code below not compile (on the QueryOver line), I tried wih NHibernate 3.1 and 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();
    }
}

Error :
enter image description here

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

薄凉少年不暖心 2024-12-04 23:06:41

您不需要在 FindAll 声明中使用 ,因为它们已在类级别声明。您可能还缺少一些 using 语句。 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();
    }
}

You do not need <T> in FindAll declarations because they already declared at the class level. You may also be missing some using statements. And there is a dash ( - ) in the QueryOver line. Following should compile in .NET 3.5 project:

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();
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文