0

これで、asp.netエンティティフレームワークmvcプロジェクトの同じmodel.edmx内に2つの異なるテーブルがあります。最初のテーブルは私が更新するために設定したメインテーブルで、問題はありません。 2番目の表は、最初の表とまったく同じスキーマを持つ空の表です。 2番目の表には、表1の行が挿入され、変更を記録し、誰が変更を行ったのかを示します。同じデータを同じデータベースに2つの異なるテーブルに挿入

テーブル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とエンティティフレームワークに新しいです。私は過去数週間にわたって自分自身を教えてきたので、どんな助けも大歓迎です。

+1

代わりにデータベーストリガーを使用する方が簡単でしょうか? –

+1

Staffing_HistとStaffingは2種類あります。 [Automapper](http://automapper.org/)は、これらの種類のタスクに最適です。コードはstaffing_hist = Mapper.Map(staffing)のようになります。別のオプションは、Staffingオブジェクトを取得して手動でマップするコンストラクタをStaffing_Histに追加することです。 var staffing_hist =新しいStaffing_Hist(人員配置); –

+0

ありがとうございます。私は間違いなくAutomapperを試してみます。 – cole570

答えて

0

この方法を試すことができます。

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); 
    } 
関連する問題