使用实体框架在每个表行上使用存储过程进行更新

时间:2018-07-30 17:22:43

标签: asp.net-mvc entity-framework asp.net-mvc-5

我的<UserChecklist>中有一个<List>,其数据类型为ListViewModel,其中包含用于从数据库检索数据的属性。

这是我的ListViewModel

   public class ListViewModel
   {
        public List<ListViewModel> UserChecklist { get; set; }
        public int ItemID { get; set; }
        public string CheckItem { get; set; }
        public int SelectID { get; set; }
        public string Comments { get; set; }
   }

请注意,在我的数据库ItemID中是唯一行。

这是我的表格的一个示例(为简单起见,对行进行了编辑):

该下拉菜单包含3个选项,注释是文本框的输入类型。

这是从我的UserController上的数据库中检索结果的代码:

foreach (var item in db_RIRO.sp_GetUserChecklist(Session["EID"].ToString()))
{
    vm.UserChecklist.Add(new ListViewModel()
            {
                ItemID = item.ItemID,
                CheckItem = item.CheckItem,
                CheckID = item.CheckID,
                Comments = item.Comments
            });
}

最后这是我的存储过程:

CREATE PROCEDURE sp_UpdateUserForm
    @UserID INT,
    @ItemID INT,
    @CheckID INT,
    @Comments VARCHAR(MAX)
AS
BEGIN
    SET NOCOUNT ON;

    UPDATE tblUser_Checklist 
    SET CheckID = @CheckID, 
        Comments = @Comments
    WHERE ItemID = @ItemID AND UserID = @UserID;
END
GO

我没有尝试过的未完成的伪代码:

[HttpPost]
public ActionResult UpdateForm (ListViewModel lstviewodel)
{
  foreach(var item in vm.UserChecklist)
  {
    // update each row
  }
}

我想做的是更新表的每一行并在每一行执行一个存储过程。我该怎么做?

0 个答案:

没有答案