【发布时间】:2015-04-20 09:59:57
【问题描述】:
我想改进我的 ASP.NET MVC 应用程序的体系结构。 在我的控制器中,我使用带有 ViewModel 的服务层。 服务层示例:
public interface ICashRegisterManager
{
void CreateCashRegister(CashRegisterTransactionModel model, int? programId);
}
示例控制器:
public class CashRegisterTransactionController : PersonContextController<CashRegisterTransactionModel, CashRegisterTransactionFilter>
{
public CashRegisterTransactionController(IPersonContextProvider personContextProvider, ICashRegisterManager cashRegisterManager)
: base(personContextProvider)
{
ExceptionUtil.NotNull(cashRegisterManager, "cashRegisterManager");
this.cashRegisterManager = cashRegisterManager;
}
public override ActionResult Create(DataSourceRequest request, CashRegisterTransactionModel contract)
{
cashRegisterManager.CreateCashRegister(contract, contract.ProgramId);
return base.Create(request, contract);
}
但在服务层我应该创建 IRepository 的实例,并且每次都将 TContract 映射到 TEntity。
我的想法是在服务层使用中间类,如何制作。
例子:
public class CashRegisterManager : ICashRegisterManager
{
public void CreateCashRegister(CashRegisterTransactionModel model, int? programId)
{
var persister = Persistence.GetPersister<CashRegisterTransactionModel>();
persister.Add(model);
}
}
public interface IPersister<TContrct>
{
void Add(TContrct model);
}
我不知道如何实现 Add 方法,该方法使用 IRepository。 我想这应该符合 TContract 和 TEnitity(CashRegisterTransactionModel/CashRegisterTransaction) 的命名约定以及如何返回 IPersister 的实例。 我为我的英语道歉。 谢谢你的时间!!!
【问题讨论】:
-
您可能会发现这个答案很有用 - stackoverflow.com/questions/28338868/…
标签: c# asp.net asp.net-mvc design-patterns repository-pattern