使用Razor在html中嵌套實體框架查詢是一個好主意嗎? 看我下面的例子:在Razor中嵌套實體框架查詢是否是一種好的做法?
<span class="block m-t-xs">
<strong class="font-bold">
@{
var item = HttpContext.Current.User;
MyApp.Models.DBContext db = new MyApp.Models.DBContext();
string loggedInUser = db.Users.FirstOrDefault(u => u.Email == item.Identity.Name).FullName;
}
@loggedInUser
</strong>
</span> <span class="text-muted text-xs block">Art Director <b class="caret"></b></span>
我得到我想要的結果,但有些事在我的頭說,這是不好的做法。
我遇到的一個例子顯示實體框架查詢在像這樣的視圖頂部。我假設這是有意義的,如果我需要在整個頁面中對多個查詢使用上下文訪問權限,那麼不需要創建DbContext的多個實例。
@using NorthwindModel;
@{
Layout = "~/_SiteLayout.cshtml";
Page.Title = "Welcome to my Web Site!";
var db = new NorthwindEntities();
var products = db.Products.Where(p => p.CategoryID == 2);
var grid = new WebGrid(products);
}
<div>
@grid.GetHtml()
</div>
或者我應該總是嘗試儘可能地將數據作爲ViewModel傳遞?請注意,我的第一個示例用於部分視圖。
所有的建議是非常受歡迎的。感謝您的時間。
這聽起來像是違反了關注點分離。 –
@ DanielA.White對不起,你的意思是什麼?新手程序員在這裏。 – RobHurd
http://en.wikipedia.org/wiki/Separation_of_concerns –