2011-08-05 37 views
0

我不明白,爲什麼下面的代碼不編譯(在QueryOver線),我試過王氏NHibernate的3.1和3.2NHibernate的存儲庫無法編譯

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

回答

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(); 
    } 
}