【问题标题】:Inserting Same Data Into Two Different Tables On Same Database将相同数据插入同一数据库上的两个不同表中
【发布时间】:2016-12-14 20:46:26
【问题描述】:

好的,所以我在 asp.net 实体框架 mvc 项目中的同一个 model.edmx 中有两个不同的表。第一个表是我设置的要更新的主表,没有问题。第二个表是一个空表,与第一个表具有完全相同的架构。第二个表将插入表 1 中的行以记录更改以及随时间进行更改的人员。

有什么方法可以获取为表 1 建模的数据并将其转换为为表 2 建模并插入行?

尝试从表 2 中引用表 1 时出现的错误是“无法将类型 'Model1' 隐式转换为 'Model2'”。

这是我尝试执行此操作的 ActionResult:

[HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Edit([Bind(Include = "ID,ECode,EmpType,FTE,TeamName,ReportGroup,Include,GoalEdDol,GoalEdAcct,GoalCmDol,GoalCmAcct,Update_By,Update_Date")] Staffing staffing)
    {
        if (ModelState.IsValid)
        {
            staffing.Update_Date = DateTime.Now;
            staffing.Update_By = Request.LogonUserIdentity.Name.Split('\\')[1];
            db.Entry(staffing).State = EntityState.Modified;
            db.SaveChanges();


            Staffing_Hist staffing_hist = staffing;
            // I would like to do similar to above but I have to convert staffing into a staffing_hist model

            return RedirectToAction("Index");    
        }
        return View(staffing);
    }

我是 asp.net 和实体框架的新手。过去几周我一直在自学,因此非常感谢任何帮助。

【问题讨论】:

  • 使用数据库触发器来做这件事不是更容易吗?
  • Staffing_Hist 和 Staffing 被认为是两种不同的类型。 Automapper 非常适合这类任务。代码看起来像 staffing_hist = Mapper.Map(staffing);另一种选择是向 Staffing_Hist 添加一个构造函数,该构造函数接受一个 Staffing 对象并手动映射它。 var staffing_hist = new Staffing_Hist(staffing);
  • 感谢您的建议。我一定会试试 Automapper。
  • Automapper 成功了。非常感谢!

标签: asp.net sql-server asp.net-mvc entity-framework visual-studio


【解决方案1】:

你可以试试这个方法。

public ActionResult Edit([Bind(Include = "id,namee,no")] tbl_in staffing)
    {
        if (ModelState.IsValid)
        {
            staffing.namee ="Test";
            staffing.no = 1235467890;
            db.Entry(staffing).State = EntityState.Modified;
            db.SaveChanges();

            tbl_out t = new tbl_out();
            t.id = staffing.id;
            t.namee = staffing.namee;
            t.no = staffing.no;
            db.tbl_out.Add(t);
            db.SaveChanges();

        }
        return View(staffing);
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-10
    • 2018-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多