簡體   English   中英

在沒有實體框架的情況下在MVC中保存數據?

[英]Saving data in MVC without Entity Framework?

我看到的大多數MVC示例似乎都使用實體框架。 我目前正在編寫一個不使用EF的MVC應用程序(改用Dapper),我想知道應該在哪里包含數據持久性邏輯?

我的第一個想法是將其與模型的類一起放置。 這意味着我的模型類如下所示:

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和Dapper-如果有人知道他們談論過代碼結構的任何地方,請隨時向我指出。

您不會期望打開計算機並按硬盤驅動器上的按鈕將數據保存到計算機上嗎?

基本上,MVC模式和SOLID設計原則的目的是分開您的關注點。 將與保存,修改或更新數據庫有關的邏輯放入模型內部,該邏輯的責任是成為包含數據的對象,這與您應該在MVC中訂閱的模式的哲學背道而馳。

您的控制器是您執行邏輯以保存信息的地方,但是仍然存在與數據庫交互問題抽象的數據訪問層。

因此,您將擁有:

public class MyController {
    IDataAccessLayer _dataAccessLayer;

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

根據MVC的設計,持久性永遠不會成為問題。 您可以使用任何所需的ORM。 為了使MVC模式起作用,您需要Model(局部ViewModel)才能在View中顯示數據。 控制器將處理您的應用程序流程。

現在,您可以從控制器中調用任何進程來保存數據。

我認為您可以將倉庫模式與Dapper以及EF一起使用。

需要注意的主要事情是您的應用程序不應持久化。 您可以使用Dapper進行開發,以后還可以在無需對UI進行太多更改的情況下提供對EF的支持。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM