0

我在我的应用程序中实现了一个服务层,例如: http ://www.asp.net/learn/mvc/tutorial-38-cs.aspx

(我使用 Linq2SQL)。现在我在实施 Edit ActionResult 时遇到了麻烦。在 Create (Post) ActionResult 我采用服务方法:

if (_service.CreateMovie(movie))
{
     return RedirectToAction("Details", new { id = movie.ID });
}
else
{
     return View(movie);
}

没关系。现在我在 Edit ActionResult 中的问题是:如何实现实体的更新?

在存储库中,我有以下更新方法:

public bool UpdateMovie(Film movieToUpdate)
{
    try
    {
        _db.SubmitChanges();
        return true;
    }
    catch
    {
        return false;
    }
}

然后服务调用存储库。但是在表单中所做的更改不会“发送”到模型,因此实体不会被新值更新。

我可以在 Controller 中调用“UpdateModel”,但是我还必须在 Service 中调用 Validate。但是验证逻辑不再在服务中而不是在控制器中。

我希望你能理解我的问题。

4

2 回答 2

0

我没有找到任何更新模型的方法,没有基本类型验证。所以我实现了UpdateModel 和一个自定义的DefaultBinderMessage。目前,这足以满足我的要求。在其他地方,我可以实现错误接口来对服务层进行所有验证。

于 2009-09-07T07:18:49.333 回答
0

您需要首先检索新插入的电影,以便 L2S 知道它。然后将movieToUpdate发生的任何更改应用到这个新检索到的电影对象,这将保持这些更改。请记住,您希望将 SaveChanges 应用于与获取电影相同的上下文,否则 L2S 将不知道如何处理它。

于 2009-09-04T14:50:51.793 回答