Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc ASP.NET MVC 2数据对象中的常用数据属性_Asp.net Mvc_Entity Framework 4 - Fatal编程技术网

Asp.net mvc ASP.NET MVC 2数据对象中的常用数据属性

Asp.net mvc ASP.NET MVC 2数据对象中的常用数据属性,asp.net-mvc,entity-framework-4,Asp.net Mvc,Entity Framework 4,好吧,我已经为此挣扎了一段时间了 我有一个标准的MVC2项目,并使用EF4访问数据对象。我的许多数据对象(以及数据库表)都有两个公共字段:UpdateUserAccounted和UpdateDate 在我的每个控制器中,我当前正在编辑操作的每个控制器中手动设置此字段: // POST: /Modes/Edit/2 [HttpPost] public ActionResult Edit(int id, FormCollection formValues) {

好吧,我已经为此挣扎了一段时间了

我有一个标准的MVC2项目,并使用EF4访问数据对象。我的许多数据对象(以及数据库表)都有两个公共字段:UpdateUserAccounted和UpdateDate

在我的每个控制器中,我当前正在编辑操作的每个控制器中手动设置此字段:

    // POST: /Modes/Edit/2
    [HttpPost]
    public ActionResult Edit(int id, FormCollection formValues)
    {
        Mode mode = _repository.GetMode(id);

        //Set update flags
        mode.UpdateUserAccountID = _userRepository.GetUserID(User.Identity.Name);
        mode.UpdateDate = DateTime.Now;

        try
        {
             UpdateModel(mode);
             _repository.Save();
             return RedirectToAction("Details", new { id = mode.ModeID });
         }
         catch
         {
             return View(mode);
         }

    }
问题是,我想在一个中心位置更新这两个字段,而不管控制器的类型如何。我正在为我的数据对象使用Repository/IRepository模式。我还设置了一个BaseController,因为我认为可以将上面示例中的“mode”对象传递给BaseController中的通用函数来设置这两个字段。但是,我无法理解这一点,并且泛型函数没有意识到这些特定字段

我应该为我的存储库创建一个基类吗?我无法想象在MVC框架中会如何工作。在webforms中,我会有一个接口,我的所有模型都使用公共字段实现,但我似乎无法将其与MVC方法相适应


关于所采取的方法的任何帮助都将是非常好的。

这篇文章包含了此场景的详细解决方案:

基本上,其思想是如何更新所有实体上的公共属性,如LastModifiedBy或LastModifiedDate,然后再使用一个公共代码将它们保存到EF数据访问层的数据存储中。

您应该去掉设置更新标志的两行代码,让所有这些都在上下文中发生,就像上面链接中描述的那样。由于您处于web场景中,因此必须将User.Identity.Name传递回您的Repository.Save()方法,然后在Context_SavingChanges()上调用Repository.GetUserID()。


这样,您就不需要每次在数据存储中插入或更新实体时都更新这两个属性。在保存之前,它会自动发生在一个地方。

这篇文章包含了此场景的详细解决方案:

基本上,其思想是如何更新所有实体上的公共属性,如LastModifiedBy或LastModifiedDate,然后再使用一个公共代码将它们保存到EF数据访问层的数据存储中。

您应该去掉设置更新标志的两行代码,让所有这些都在上下文中发生,就像上面链接中描述的那样。由于您处于web场景中,因此必须将User.Identity.Name传递回您的Repository.Save()方法,然后在Context_SavingChanges()上调用Repository.GetUserID()。

这样,您就不需要每次在数据存储中插入或更新实体时都更新这两个属性。它将在保存之前自动在一个地方发生