0

我有 ac#asp.net4 mvc 应用程序。我正在使用实体框架连接到 sql server。我正在使用 Auto Mapper 将域模型映射到视图模型。我想用泛型创建一个基础存储库来执行创建/读取/更新/删除操作,而不是为每个不同的类编写 50 次方法。这是我到目前为止所拥有的,但它不起作用。

    public class BaseRepository<T, U> where T : class
    {
        public virtual IEnumerable<T> GetAll()
        {
            using (ApplicationEntities context = new ApplicationEntities())
            {
                IEnumerable<T> models = context.Set<T>();
                return Mapper.Map<IEnumerable<T>, IEnumerable<U>>(models);                
            }
        }
    }

错误:

Cannot implicitly convert type 'System.Collections.Generic.IEnumerable<U>' to 'System.Collections.Generic.IEnumerable<T>'. An explicit conversion exists (are you missing a cast?)

编辑:根据 Tim S,更新的方法。现在只剩下 Auto Mapper 错误。

4

1 回答 1

2

您应该使用该DbContext.Set<TEntity>()方法。而且您需要在 上添加泛型限制T,因为Set<TEntity>()有一个:

public class BaseRepository<T, U> where T : class
{
    public virtual IEnumerable<U> GetAll()
    {
        using (ApplicationEntities context = new ApplicationEntities())
        {
            IEnumerable<T> models = context.Set<T>();
            return Mapper.Map<IEnumerable<T>, IEnumerable<U>>(models);                
        }
    }
}
于 2013-08-20T18:10:50.310 回答