2012-03-01 1 views
0

Ниже приведен краткий пример того, что я делаю в настоящее время. Есть ли другой способ сделать это эффективно специально, если у вас есть большой объект с 50 свойствами, и все, что вы хотите сделать, обновляет одно значение с меньшим количеством строк код??Объект обновления MVC 3 эффективно

[HttpPost] 
public ActionResult Person(VMPerson vmperson) 
{ 
Person p = new Person() 
p.name = vmperson.name; 
p.address = NULL; 
TryUpdateModel(p); 
db.Person.Save(); 
} 
+1

Если вы ищете эффективность на таком уровне, почему вы используете EF? –

+0

Я использовал Nhibernate в последних нескольких проектах, над которыми я работал ... гораздо лучше. – AnarchistGeek

+0

Вы пытаетесь обновить или обновить/создать? – veblock

ответ

1

Наиболее эффективным способом было бы повернуть EF для этих типов выбранных операций. Если честно, если у вас есть объект с 50 свойствами, я буду подвергать сомнению вашу модель данных, и, возможно, некоторые из них не должны быть разбиты немного.

Это говорит о том, что операции по обновлению довольно дешевы и могут быть собраны. Если вы делаете массовые обновления, выясните, как их выполнять и что делать.

0

Вы просто сопоставляете свою модель своего лица с вашим лицом. Используйте AutoMapper для этого https://github.com/AutoMapper/AutoMapper. Таким образом, ваш код может выглядеть так:

[HttpPost] 
public ActionResult Person(VMPerson vmperson) 
{ 
    try 
    { 
     if (ModelState.IsValid) 
     { 
      var newPerson = Mapper.Map<VMPerson, Person>(vmperson); 
      _database.Person.AddObject(newPerson); 
      _database.SaveChanges(); 
     } 
     return RedirectToAction("Index"); 
    } 
    catch 
    { 
     return View(); 
    } 
} 
Смежные вопросы