2012-06-12 3 views
0

MVC3 и Entity framework новичок здесь. Я пытаюсь написать контроллер, который будет обрабатывать оба редактирования и создавать новые записи. Вот мой код до сих пор (большинство из них автогенерируемое)Сохранить контроллер для новых объектов и изменений

//POST: /License/Save 
    [HttpPost] 
    public string Save(LICENSE_USER license_user) 
    { 
     if (license_user.License_ID != 0) 
     { 
      if (ModelState.IsValid) 
      { 
       db.Entry(license_user).State = EntityState.Modified; 
       db.SaveChanges(); 
       return "Save Complete"; 
      } 
     } 
     else 
     { 

      if (ModelState.IsValid) { 
       db.LICENSE_USER.Add(license_user); 
       db.SaveChanges(); 
       return "New License created - " + license_user.License_ID; 
      } 
     } 
     return "What's going on here?"; 
    } 

Он отлично работает для редактирования, так как я в то числе поля license_id в POST. Однако для новых записей я исключаю поле License_ID и по умолчанию равен 0. Какой самый элегантный способ получить следующее поле License_ID и обновить объект с помощью этого поля?

+0

Что не так с текущим кодом? Он выглядит корректно, если License_ID является [Id] для LICENSE_USER. BTW, вам следует рассмотреть возможность использования лучших соглашений об именах (начало здесь) http://msdn.microsoft.com/en-us/library/ms229045.aspx – kingdango

ответ

2

Сделайте столбец License_ID в вашей базе данных основным ключом автоинкремента. Таким образом, вам не нужно устанавливать его вручную при вставке нового объекта. База данных позаботится.

В вашей модели EDMX для этого свойства должен быть установлен Identity.

+1

u rock dude .... – DarthVader

+0

/facepalm.....I был абсолютно позитивно, я настроил его на автоматическое обновление .... спасибо, что заставило меня начать с самого начала. – TrentVB

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