c# - 在没有 Entity Framework 的情况下在 MVC 中保存数据?

标签 c# asp.net asp.net-mvc dapper

我看到的大多数 MVC 示例似乎都使用 Entity Framework 。我目前正在编写一个不使用 EF(而是使用 Dapper)的 MVC 应用程序,我想知道我应该在哪里包含数据持久性逻辑?

我的第一个想法是将它与我​​的模型的类放在一起。这意味着我的模型类将如下所示:

class User
{
   public int id {get; set;}
   public string name {get; set;}

   Create(string name)
   {
      // dapper to perform insert
   }

   Remove(int id)
   {
     // dapper to perform delete
   }

   //Update(),Delete() etc.
}

但我没有经常使用 MVC,所以我不确定这是否是一种常见做法。

在模型中放置数据持久性逻辑是一种好的做法还是我应该采用不同的方法?

此外,我相信 Stack Exchange 使用 MVC and Dapper - 如果有人知道他们在任何地方谈论过他们如何构建代码,请随时向我指出。

最佳答案

您不会期望必须打开计算机并按下硬盘驱动器上的按钮才能将数据保存到其中吧?

基本上,MVC 模式和一般的 SOLID 设计原则的目的是分离您的关注点。将与保存、修改或更新数据库相关的逻辑放在模型中,其职责是成为包含数据的对象,这与您应该在 MVC 中订阅的模式理念背道而驰。

您的 Controller 是您要执行逻辑以保存您的信息的地方,但仍然有一个数据访问层,与数据库交互的问题被抽象到。

所以你会:

public class MyController {
    IDataAccessLayer _dataAccessLayer;

    public MyController(IDataAccessLayer dataAccessLayer) {
        _dataAccessLayer = dataAccessLayer;
    }
    public ActionResult Create(Model myModel){
        _dataAccessLayer.InsertIntoDatabase(myModel);
        return View();
    }
}

关于c# - 在没有 Entity Framework 的情况下在 MVC 中保存数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27495824/

相关文章:

c# - List<string> 只显示最后一项

c# - ASP.NET Web 用户控件库

asp.net - 如何防止在不登录网站的情况下访问虚拟目录

c# - LINQ2Entity Framework 查询行为异常

asp.net-mvc - MetadataType 和 DataAnnotations 不起作用

c# - 实体对象的使用

c# - 非通用委托(delegate)的适配器

c# - 替换出现在 XML 节点内的 >、< 和字符

asp.net mvc windows azure 迁移 System.BadImageFormatException : Could not load file or assembly 'Interop.SSCE' or

javascript - 单击html中的链接没有给出响应