나는 엔터프라이즈 회계 응용 프로그램의 아키텍처를 변경하고 있습니다. IRepositoy <TDataModel> 패턴을 사용 하겠지만 약간의 차이가 있습니다. 기본 IRepository <TDataModel>에서 파생 된 모든 엔티티에 대한 인터페이스를 만들려고합니다. 나의 실체는 고객, 제품 및 주문 인 경우 예를 들어, 그럼 난IRepository <T> 및 Repository-Per-Entity
IClientRepository있을 것입니다 : IRepository <ClientModel>
IProductRepository : IRepository <ProductModel>
IOrderRepository : IRepository <OrderModel>
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이 아닌 - 예를 들어 일부 엔티티의 CreationDate로 설정하려고합니다. ?)
일부 IRepository < 샘플을 보았지만이 조합을 사용하는 것을 찾을 수 없습니다. 이 일을 하는게 좋을까? 그렇지? 다른 장단점은 무엇입니까?
미리 감사드립니다.
왜 업데이트 방법이 필요합니까? 사용자 지정 빌드 데이터 액세스 계층을 사용하거나 ORM 중 하나에 의존하고 있습니까? –
네, NHibernate를 사용하고 있지만 다른 프로젝트에서도 업데이트 방법이 너무 잘못입니까? – sos00