相关疑难解决方法(0)

从Controller访问数据库实体

TL;博士

在一个很好的设计.是否应该在单独的业务逻辑层(在asp.net MVC模型中)处理访问数据库,或者将IQueryables或DbContext对象传递给控制器​​是否可以?

为什么?各自的优点和缺点是什么?


我正在用C#构建一个ASP.NET MVC应用程序.它使用EntityFramework作为ORM.

让我们稍微简化一下这个场景.

我有一个可爱的蓬松小猫数据库表.每只小猫都有小猫图像链接,小猫蓬松指数,小猫名称和小猫ID.这些映射到EF生成的POCO调用Kitten.我可能会在其他项目中使用此类,而不仅仅是asp.net MVC项目.

我有一个KittenController应该去取最新的蓬松小猫/Kittens.它可能包含选择小猫的一些逻辑,但不是太多的逻辑.我一直在和朋友争论如何实现这一点,我不会透露双方:)

选项1:控制器中的db:

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)

选项2:单独的模型

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

18
推荐指数
3
解决办法
1万
查看次数