使用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 –