我应该在MVC编码中使用什么标准

use*_*401 2 c# model-view-controller entity-framework

基于这里提到的答案,我明白我应该将业务逻辑放在模型本身内,而在我的程序中我直接在控制器的操作中使用EF,例如直接从数据库中获取汽车列表我是执行以下操作:

public ActionResult CarList()
{
    using(var _db = new CarRentEntities())
    {
         var result = _db.Cars.Where(m=>m.Active);
         return View(result);
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我将在控制器内部或模型内使用上面提到的代码,对我的网站性能有什么影响?

我应该使用哪种方法?例如,如果我想与团队合作,是否有一个标准我应该遵循分离代码,请提出建议

使用存储库模式:我读到我们不应该使用如果在这里举例说明,我会复制一些提到的内容:

没有将存储库模式与Entity Framework一起使用的唯一最佳理由?实体框架已经实现了存储库模式.DbContext是您的UoW(工作单元),每个DbSet都是存储库.在此基础上实现另一层不仅是多余的,而且使维护更加困难.

如果我的数据库包含以下表格:制造商,汽车,租赁,客户,租赁类是客户和汽车之间有2个外键的表,并包含其他详细字段.

如何处理需要从2个不同的存储库汽车和客户端获取数据的Rent Object,以便根据用户输入的搜索条件显示租用网格,如果我将使用存储库Cars和Clients,他们有自己的dbContext,BOOM我的头无法理解这种技术,请告知

Olu*_*emi 6

您的问题的答案是,它并没有真正影响性能,但随着应用程序变得越来越大,它肯定会成为可维护性方面的问题.您可以采用SOLID架构原则:使用简单C#示例的SOLID架构原则.这使您可以开发高质量的软件.

您可以创建一个多层应用程序:

  1. 接口层 - MVC应用程序
  2. 业务层 - 具有逻辑类的类库
  3. 数据访问层 - 数据库上下文和存储库,CRUD操作的工作单元
  4. 共享层 - 日志记录,AppSettings,验证,实用程序,扩展,常量,枚举

让你的应用程序在这个结构中需要你考虑控制反转,依赖注入等等,以确保松散耦合的类,简单的单元测试,最重要的是一个可靠的应用程序.

您还可以阅读:在ASP.NET MVC应用程序中实现存储库和工作单元模式

  • #user5135401我同意EF是一个存储库实现,但具有这样的开放性,它不能再作为通用存储库.从技术上讲,它可以实现平面文件或内存中的XML存储,并使EF将其用作数据存储,但这是一项很大的任务,很可能会引入缺陷.我个人不使用EF,因为它太与基础数据库耦合 - 我总是使用业务上下文特定的数据存储工厂+接口模式,只需使用ADO.net来调用存储过程(但你可以使用EF代替). (2认同)