在一个很好的设计.是否应该在单独的业务逻辑层(在asp.net MVC模型中)处理访问数据库,或者将IQueryables或DbContext对象传递给控制器是否可以?
为什么?各自的优点和缺点是什么?
我正在用C#构建一个ASP.NET MVC应用程序.它使用EntityFramework作为ORM.
让我们稍微简化一下这个场景.
我有一个可爱的蓬松小猫数据库表.每只小猫都有小猫图像链接,小猫蓬松指数,小猫名称和小猫ID.这些映射到EF生成的POCO调用Kitten.我可能会在其他项目中使用此类,而不仅仅是asp.net MVC项目.
我有一个KittenController应该去取最新的蓬松小猫/Kittens.它可能包含选择小猫的一些逻辑,但不是太多的逻辑.我一直在和朋友争论如何实现这一点,我不会透露双方:)
public ActionResult Kittens() // some parameters might be here
{
using(var db = new KittenEntities()){ // db can also be injected,
var result = db.Kittens // this explicit query is here
.Where(kitten=>kitten.fluffiness > 10)
.Select(kitten=>new {
Name=kitten.name,
Url=kitten.imageUrl
}).Take(10);
return Json(result,JsonRequestBehavior.AllowGet);
}
}
Run Code Online (Sandbox Code Playgroud)
public class Kitten{
public string Name {get; set; }
public string Url {get; …Run Code Online (Sandbox Code Playgroud) c# asp.net-mvc entity-framework controller separation-of-concerns