我正在尝试将“工作单元(Unit of Work)”应用到我的项目中,并有一些快速问题。 我使用了这个教程中所示的类:链接。
因此当我实现它时,假设我将类“Users”作为“GenericRepository”,那么如果有一些我想要添加到“Users”类但不属于“GenericRepository”的项目怎么办?
如何创建另一个接口并使用某种继承类型,以便我仍然可以从“GenericRepository”中获取东西,同时还包括我想要的新功能?
我基本上想要进行扩展。
因此当我实现它时,假设我将类“Users”作为“GenericRepository”,那么如果有一些我想要添加到“Users”类但不属于“GenericRepository”的项目怎么办?
如何创建另一个接口并使用某种继承类型,以便我仍然可以从“GenericRepository”中获取东西,同时还包括我想要的新功能?
我基本上想要进行扩展。
public interface ICategoryRepository : IGenericRepository<Category>
{
IEnumerable<LocalComicCategoriesModel> GetCategories();
IEnumerable<LocalComicCategoriesModel> GetCategoriesByComicID(int comicid, bool appendCategories);
}
public class CategoryRepository : GenericRepository<Category>, ICategoryRepository
{
new ComicEntities context;
public CategoryRepository(ComicEntities context) : base(context)
{
this.context = context;
}
public IEnumerable<LocalComicCategoriesModel> GetCategories()
{
return context.Categorys.Select(i => new LocalComicCategoriesModel { Id = i.Category_Id, Title = i.Name });
}
public IEnumerable<LocalComicCategoriesModel> GetCategoriesByComicID(int comicid, bool appendCategories)
{
if (appendCategories == true)
{
IEnumerable<LocalComicCategoriesModel> query = from tbcat in context.Categorys
join tbitem_cat in context.ComicCategorys.Where(i => i.Comic_Id == comicid)
on tbcat.Category_Id equals tbitem_cat.Category_Id into ct
from tbitem_cat in ct.DefaultIfEmpty()
select new LocalComicCategoriesModel
{
Id = tbcat.Category_Id,
Title = tbcat.Name,
isChecked = tbitem_cat == null ? false : true
};
return query;
}
else
{
IEnumerable<LocalComicCategoriesModel> returnedCategories = from t in context.Categorys
join v in context.ComicCategorys on t.Category_Id equals v.Category_Id
where v.Comic_Id == comicid
select new LocalComicCategoriesModel
{
Id = v.Category_Id,
isChecked = true,
Title = t.Name
};
return returnedCategories;
}
}
}
To which I recieve this error:
'Comics.Models.Category' cannot be used as type parameter 'TEntity' in the generic type or method 'Comics.DAL.Interfaces.GenericRepository<TEntity>'. There is no implicit reference conversion from 'Comics.Models.Category' to 'Comics.DAL.Interfaces.IGenericRepository<Comics.Models.Category>'.
'Comics.Models.Category' 不能用作泛型类型或方法 'Comics.DAL.Interfaces.GenericRepository<TEntity>' 中的类型参数 'TEntity'。从 'Comics.Models.Category' 到 'Comics.DAL.Interfaces.IGenericRepository<Comics.Models.Category>' 没有隐式引用转换。
我已经发布了我的代码。 - Moe Bataineh