0

Итак, у меня есть две разные таблицы внутри одного и того же model.edmx в проекте mvc-структуры сущности asp.net. Первая таблица - это основная таблица, которую я настроил для обновления, и не испытываю никаких проблем с ней. Вторая таблица - это пустая таблица с такой же схемой, как и первая. Вторая таблица будет содержать строки из таблицы 1, вставленной в нее, для регистрации изменений и внесших изменения со временем.Вставка одних и тех же данных в две разные таблицы в одной и той же базе данных

Есть ли способ, которым я могу взять данные, смоделированные для таблицы 1, и преобразовать их в модель для таблицы 2 и просто вставить строку?

Ошибка, которую я получаю при попытке ссылки на таблицу 1 из таблицы 2: «Невозможно неявно преобразовать тип« 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_Hist, который возьмет объект Staffing и вручную отобразит его. var staffing_hist = new 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); 
    } 
Смежные вопросы