2014-11-12 3 views
-5

Мне нужно обновить запись EF, в методе у меня есть объект EF и еще один новый объект, который я хочу использовать для обновления данных. Но я не уверен, как скопировать данные с нового объекта на существующий.копирование данных одного объекта в другое?

Помогите пожалуйста. Вот мой код:

public int PostHomeLead(string _lead) 
    { 

     try 
     { 
      int result = 0; 
      Lead lead = new Lead(); 
      lead = new JavaScriptSerializer().Deserialize<Lead>(_lead); 

      //check if lead exist with same session id, if so update it other wise add new. 
      Lead existingLead = new Lead(); 
      existingLead = db2.HomeLoanCustRepo.GetByID(lead.Lead_id); 

      if (existingLead == null) 
      { 
       db2.HomeLoanCustRepo.Insert(lead); 
       db2.Save(); 
       result = 1; 
      } 
      else 
      {     
       db2.HomeLoanCustRepo.Update(lead); 
       db2.Save(); 
       result = 1; 
      } 
      return result;   
     } 
     catch(Exception ex) 
     { 
      throw ex; 
     } 

    } 
+2

И какова конкретная проблема с вашим кодом? – Servy

+0

@Servy, что я спросил, как копировать данные одного объекта в другой. – user576510

ответ

1

Либо отобразить свойства вручную:

existingLead.Foo = deserializedLead.Foo; 
existingLead.Bar = deserializedLead.Bar; 
existingLead.Baz = deserializedLead.Baz; 

Или использовать библиотеку, которая делает это, как AutoMapper.

Что касается вашего комментария, creating a deep copy - это то, что вам кажется. Обратите внимание, что это позволяет использовать overposting or mass assignment, если вы не проверяете, какие свойства могут быть обновлены. Вам понадобится Attach() клонированный объект при использовании клонирования или сопоставления, так как он не будет тем же самым объектом, который был возвращен GetByID(), поэтому трекер изменений Entity Framework не узнает его.

+0

можно ли использовать linq или лямбда или любой из классов/библиотеки .net? – user576510

+0

@ пользователь576510 смотреть редактирование. – CodeCaster

+0

спасибо, я использую Attach(), но он бросает ошибку, что-то первичный ключ является aleady, используемым другим объектом. Пожалуйста, помогите мне, что будет решением. – user576510

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