Вопрос

Я меняю архитектуру приложения для учета предприятия. Я собираюсь использовать IrePositoyu003CTDataModel> шаблон, но с небольшой разницей. Я собираюсь сделать интерфейс для каждой сущности, которая происходит от базового ирепозированияu003CTDataModel> Анкет Например, если бы мои организации были клиентом, продуктом и заказом, я бы

IClientRepository: Irepositoryu003CClientModel>
IProductrepository: Irepositoryu003CProductModel>
IorderRepository: Irepositoryu003COrderModel>

public interface IRepository<TDataModel, TId>
{
    TDataModel Get(TId Id);
    IList<TDataModel> List();

    TDataModel Add(TDataModel Item);
    TDataModel Add(TDataModel Item, IContext executingContext);

    void Update(TDataModel Item);
    void Update(TDataModel Item, IContext executingContext);

    bool Delete(TId Id);
    bool Delete(TId Id, IContext executingContext);

    IList<TDataModel> Where
       (System.Linq.Expressions.Expression<Func<TDataModel, bool>> criteria);
}


public interface IProductRepository : IRepository<DataModel.Product, int>
{

}

Причиной использования этого подхода является то, что я хочу установить атрибуты некоторых доменных модели в DAL, а не в BLL - например, установление создания некоторых сущностей (кстати, правильно ли это делать?)

Я видел некоторые образцы ирепозирования <>, но не смог найти ничего, что использует эту комбинацию. Я хочу знать, есть ли это полезно сделать это? Это вообще? Какие другие плюсы и минусы?

заранее спасибо

Это было полезно?

Решение

Я думаю, это зависит от того, как вы думаете о дате творения. Это часть домена или нет? Зависит ли какая -либо доменная логика от значения?

Например, нужна ли система возможность «создавать от имени» (в этом случае создатель и дата создания не будут равны текущему пользователю и текущему времени)? Будет ли что -нибудь сломаться, если восстановление данных из резервного копирования не сохранило исходные значения? Имеет ли значение для вас, является ли дата создания временем клиента, сервером DateTime или базы данных DateTime?

Если ответ на все вышеперечисленное - нет, то а) дата создания не является частью домена, поэтому его можно установить извне б). Вам действительно это вообще нужно? Если так, то я предполагаю, что только для проблем инфраструктуры- управление кешами, изменения уведомлений и т. Д. Это верно?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top