3-使用业务层表示层(MVC)
在此示例中,我们将使用 Presentation 层中的 Business 层。我们将使用 MVC 作为表示层的示例(但你可以使用任何其他表示层)。
我们首先需要注册 IoC(我们将使用 Unity,但你可以使用任何 IoC),然后编写我们的表示层
3-1 在 MVC 中注册 Unity 类型
3-1-1 添加“ASP.NET MVC 的 Unity bootstrapper”NuGet 支持
3-1-2 添加 UnityWebActivator.Start(); 在 Global.asax.cs 文件中(Application_Start()
函数)
3-1-3 修改 UnityConfig.RegisterTypes 函数如下
public static void RegisterTypes(IUnityContainer container)
{
// Data Access Layer
container.RegisterType<DbContext, CompanyContext>(new PerThreadLifetimeManager());
container.RegisterType(typeof(IDbRepository), typeof(DbRepository), new PerThreadLifetimeManager());
// Business Layer
container.RegisterType<IProductBusiness, ProductBusiness>(new PerThreadLifetimeManager());
}
3-2 使用业务层 @表示层(MVC)
public class ProductController : Controller
{
#region Private Members
IProductBusiness _productBusiness;
#endregion Private Members
#region Constractors
public ProductController(IProductBusiness productBusiness)
{
_productBusiness = productBusiness;
}
#endregion Constractors
#region Action Functions
[HttpPost]
public ActionResult InsertForNewCategory(string productName, string categoryName)
{
try
{
// you can use any of IProductBusiness functions
var newProduct = _productBusiness.InsertForNewCategory(productName, categoryName);
return Json(new { success = true, data = newProduct });
}
catch (Exception ex)
{ /* log ex*/
return Json(new { success = false, errorMessage = ex.Message});
}
}
[HttpDelete]
public ActionResult SmartDeleteWithoutLoad(int productId)
{
try
{
// deletes product without load
var deletedProduct = _productBusiness.DeleteWithoutLoad(productId);
return Json(new { success = true, data = deletedProduct });
}
catch (Exception ex)
{ /* log ex*/
return Json(new { success = false, errorMessage = ex.Message });
}
}
public async Task<ActionResult> SelectByCategoryAsync(int CategoryId)
{
try
{
var results = await _productBusiness.SelectByCategoryAsync(CategoryId);
return Json(new { success = true, data = results },JsonRequestBehavior.AllowGet);
}
catch (Exception ex)
{ /* log ex*/
return Json(new { success = false, errorMessage = ex.Message },JsonRequestBehavior.AllowGet);
}
}
#endregion Action Functions
}