Я пытаюсь реализовать Unit of Work
в своем проекте и задать некоторые быстрые вопросы. Я использую класс, показанный by this tutorial:Расширение Единицы работы Entity Framework
Так что, когда я его реализую и допустим, я делаю класс 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;
}
}
}
На что я получаю эту ошибку:
'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>'.
Nevermind, жаль об этом. –
Если у вас нет базового репозитория, вам необходимо реализовать все методы в обоих репозиториях. Может быть, именно поэтому вы получаете исключение? –
@ImranRashid Вот последняя ошибка, которую я получаю: '' Comics.Models.Category 'не может использоваться как параметр типа' TEntity 'в родовом типе или методе' Comics.DAL.Interfaces.GenericRepository '. Нет никакого неявного преобразования ссылок из «Comics.Models.Category» в «Comics.DAL.Interfaces.GenericRepository ». ' Я разместил свой код. –