目前我已經爲每個數據模型獲得了數據庫訪問類的存儲庫類。尋找在asp.net中處理版本庫的好習慣mvc
在主頁上,我需要顯示來自每個存儲庫的前5條記錄。所以在HomeController中,我需要有很多存儲庫成員,這不正確。有沒有什麼好的解決方案?
非常感謝您的幫助。歡迎任何建議!
目前我已經爲每個數據模型獲得了數據庫訪問類的存儲庫類。尋找在asp.net中處理版本庫的好習慣mvc
在主頁上,我需要顯示來自每個存儲庫的前5條記錄。所以在HomeController中,我需要有很多存儲庫成員,這不正確。有沒有什麼好的解決方案?
非常感謝您的幫助。歡迎任何建議!
你可以使用,這將聚集這五個倉庫成單個b服務層有用的操作。示例:
public interface IItemsService
{
IEnumerable<Item> GetTopItems();
}
並且此服務的實施將根據需要使用盡可能多的存儲庫。現在你的控制器簡單地變爲:
public class ItemsController : Controller
{
private readonly IItemsService _itemsService;
public ItemsController(IItemsService itemsService)
{
_itemsService = itemsService;
}
public ActionResult Index()
{
var topItems = _itemsService.GetTopItems();
return View(topItems);
}
}
並在視圖:
@model IEnumerable<AppName.Models.Item>
<h2>Top items</h2>
@Html.DisplayForModel()
它使用項目顯示模板(~/Views/Items/DisplayTemplates/Item.cshtml
):
@model AppName.Models.Item
<div>@Model.Title</div>
您可以爲基本操作創建一個通用存儲庫,並在爲每個實體部分創建存儲庫時繼承該存儲庫。
但這種方式你仍然需要5個實例或通用存儲庫。
所以有2種方式:
1)
創建一個存儲庫UniRepo
其中有像Get<T>(int id)
泛型方法等
,並在您HomeController
不要把倉庫的任何實例中HomeController
,而不是
創建5個控制器每個實體,並在每個你把倉庫的一個實例,該列表
,並在創建一個動作家庭/索引視圖你做
@Html.Action("list","entity1");
@Html.Action("list","entity2");
@Html.Action("list","entity3");
Html.Action相當於
的RenderAction我第二達林季米特洛夫的響應。
根據我的經驗,通常(在桌面開發中)有一個服務層,可以與您的存儲庫進行所有通話。
例如
然後從頂端你永遠只能調用服務(S),其保持一切。