Как мне обрабатывать отношения таблиц с шаблоном репозитория?

Я реализую шаблон репозитория как часть сайта ASP.NET MVC. Большинство примеров репозиториев, которые я видел, довольно просты. Например, вот типичный интерфейс абстрактного репозитория.

public interface IRepository<TEntity>
{
    IQueryable<TEntity> All();
    TEntity FindBy(int id);
    TEntity FindBy(Expression<Func<TEntity, bool>> expression);
    IQueryable<TEntity> FilterBy(Expression<Func<TEntity, bool>> expression);
    bool Add(TEntity entity);
    bool Update(TEntity entity);
    bool Delete(TEntity entity):
}

Мне ясно, как вы могли бы использовать репозиторий, подобный этому, для добавления, обновления, удаления или получения сущностей одного типа. Но как вы справляетесь с созданием и управлением отношениями «один ко многим» или «многие ко многим» между различными типами?

Допустим, у вас есть тип Item , где каждый элемент назначен в категорию . Как бы вы сделали это назначение через репозиторий? Должно ли это быть до методов Update (Категория c) и / или Update (Item i) , чтобы выяснить, какие отношения должны быть установлены с или от обновляемого элемента? Или должен быть явный метод AssignCategoryToItem (Item i, Category c) ?

Если это имеет значение, я использую Fluent NHibernate для реализации моих конкретных репозиториев.

12
задан Eric Anastas 11 May 2011 в 22:15
поделиться