2011-02-25 327 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