2011-02-25 102 views
0

在控制器,我請執行下列操作:ASP.NET MVC:從模型內更新模型?

DBContext DB = new DBContext(); 
var u = DB.Users.Find(1); 
u.firstname = "blah"; 
UpdateModel(u); 
DB.SaveChanges(); 

我想從一個模型中做同樣的...

namespace Project.Models 
{ 
    public class User 
    { 
    public void resetPassword() 
    { 
     // Generate new password, etc. 
     this.password = "blah"; 
    } 
    } 
} 

任何想法,我怎麼會去這樣做?看來UpdateModel()只能在控制器內使用。

我使用的是EntityFramework Code-First CTP5。

+0

你在這裏使用UpdateModel()來實現與DB有關的什麼? – 2011-02-28 08:07:35

回答

0

將數據訪問問題放在模型中並不是一個好主意。

更新:是的,你通常會爲此擁有一個數據訪問層。正如Andy所說,目前流行的做法是使用存儲庫。通常,您不希望模型中的任何內容不是核心業務邏輯。

+0

從一個非控制器類,我得到同樣的問題呢?從另一個控制器調用一個控制器中的函數顯然是錯誤的,因此邏輯上我將它封裝到一個庫類中。 – 2011-02-25 15:13:07

+1

爲什麼-1?..... – UpTheCreek 2011-02-26 12:34:45

1

我認爲UpTheCreek是正確的,但它可能需要一些解釋,所以我會盡量擴大他/她的答案。第一步是使用repository pattern。你可以通過谷歌搜索在MVC中找到這種模式的很多例子 - this是一個特別溫和的介紹(大約3/4的頁面)。

演練繼續提到依賴注入,這也是值得期待的。我傾向於自己傾向於使用Ninject,但有other依賴注入容器可用。

+0

是的,這是比我的更好的答案:) – UpTheCreek 2011-04-09 12:51:07