我想改進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的實例。 我爲我的英語道歉。 謝謝你的時間!
您可能會發現這個答案有用 - http://stackoverflow.com/questions/28338868/how-to-organize-dal-in-asp-net-mvc/28339287#28339287 – SBirthare