2014-09-10 2 views
0

Я только что добавил новое поле в таблицу, которую у меня есть («Ведущий»)Entity Framework. Просто добавлено новое поле в БД, новое поле не сохраняется с кодом

Сохранение и получение работы отлично для всех полей, кроме моего нового поля, которое я добавляется непосредственно в БД. Я делаю то же самое для нового поля в других областях

objLead = new Leads(); 

objLead.PhoneNumber = txtPhoneNumber.Text; //this one works 
objLead.MobilePhone = txtMobilePhone.Text; //this one doesn't 

Leads ins = LeadsManager.Save(objLead); 

Моя функция сохранения ..

public static Leads Save(Leads objLead) { 
     if (objLead.LeadId == 0) { 

      //objLead.InsertBy = Convert.ToInt32(HttpContext.Current.User.Identity.Name); 
      objLead.InsertDate = DateTime.Now; 
      objLead.InsertMachineInfo = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"].ToString(); 
      DbContextHelper.DbContext.Add(objLead); 
     } 

     //secUser.UpdatedBy = Convert.ToInt32(HttpContext.Current.User.Identity.Name); 
     objLead.UpdateMachineInfo = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"].ToString(); 
     objLead.UpdateDate = DateTime.Now; 
     DbContextHelper.DbContext.SaveChanges(); 

     return objLead; 
    } 

Я довольно новыми для EF, так что я не уверен, если я «Я что-то упустил. Я пошел в класс Leads и добавил новое свойство, поэтому intellisense recoginzies, когда я кладу objLead.mobilePhone. Я просто не уверен, почему он не сохраняет в БД .. Спасибо за помощь!

+0

Просто любопытно, какой метод EF вы используете? Сначала код, сначала модель, база данных? Я, вероятно, не смогу помочь в любом случае, но вы никогда не знаете: O – Kritner

+0

DB First .. Я унаследовал этот проект, поэтому я не знаком с ним на 100%. – Omar

ответ

0

После добавления столбца к вашей физической таблицы БД выполнить следующие шаги:

  1. Перейти в модель (EDMX-)
  2. правой кнопкой мыши области дизайна
  3. обновление модели из базы данных ...
  4. Щелкните вкладку обновления в диалоговом окне, которое появляется
  5. Готово

Это должно обновить ваши классы poco, которые были предварительно созданы с помощью нового столбца, который был добавлен. Этот должен исправить вашу проблему, если вы испытываете то, что, по моему мнению, испытываете.

Обратите внимание, что восстановление ваших POCO таким образом приведет к удалению любых изменений, которые вы сделали с ними вручную (если есть).

EDIT:

Я не уверен, если это на самом деле работает или нет, но вы можете попробовать его. Если вы перейдете непосредственно в класс POCO и создали новое свойство с правильным типом данных, это может сработать.

Найдите свои классы POCO, расширив ваш .edmx-файл из проводника решений, затем [modelName] .tt, затем выберите [tableName] .cs.

Если вы добавили строку в таблицу можно добавить:

public string NewColumnName { get; set; } 

снова я не знаю, если идти по этому пути на самом деле работает, освежающий модель на основе базы данных является лучшим выбором.

+0

Я не решаюсь попробовать это, потому что вчера сделал это и сломал почти все в моем коде. На вкладке обновления было около 15 таблиц. Не было и пути назад. Если я выберу только одну таблицу, она должна обновить только эту таблицу? – Omar

+0

Извините, я не думаю, что вы можете ограничить обновление конкретными объектами, позвольте мне обновить ответ – Kritner

+0

Вы вносите какие-либо изменения вручную в свои классы POCO? Вы не должны нарушать изменения в обновлениях модели - по крайней мере, мне еще предстоит испытать что-то вроде этого. – Kritner

Смежные вопросы