次の手順を含むショッピングカートのシナリオにいるとしましょう。
- データベースからカートを取得
- 税金を計算する
- すべて合計
Project.Core (すべてのドメイン クラスを含む)
public CartItem
{
public int Id { get; set; }
public string Desc { get; set; }
}
public CartDetails
{
public int Id { get; set; }
public List<CartItem> CartItems { get; set; }
public Decimal Tax { get; set; }
public Decimal Total { get; set; }
}
プロジェクト.DAL
public class CartDAL
{
public List<CartItem> GetCart(int cartId)
{
//execute sql here, get datareader or datatable
//loop thru the rows and mait into a List<CartItem>
return List<CartItem>
}
}
上記のように手動で行うのではなく、Dapper または Massive を調べてください。
http://code.google.com/p/dapper-dot-net/
https://github.com/robconery/massive
プロジェクト.BLL
public class CartBLL
{
CartDAL cartDAL = new CartDAL();
public CartDetails GetCartDetails(int cartId)
{
var cartDetails = new CartDetails();
cartDetails.CartItems = cartDAL.GetCart(cartId);
cartDetails.Tax = cartDAL.GetCart(cartId);
cartDetails.Total = cartDAL.GetCart(cartId);
return cartDetails;
}
}
プロジェクト.Web
public class CartController
{
CartBLL cartBLL = new CartBLL();
public ActionResult Index(int Id)
{
var cartDetails = cartBLL.GetCartDetails(Id);
// Make a cartViewModel
View(cartViewModel);
}
}
プロジェクト.WPF
//Nothing much changes in desktop comapared to Web, just call the BLL stuff and you are set
CartBLL cartBLL = new CartBLL();
var cartDetails = cartBLL.GetCartDetails(Id);
//Populate view
したがって、基本的に、すべてのフロント エンド プロジェクトで BLL を再利用する必要があります。