2010-12-08 8 views
2

나는 당신의 도움이 필요합니다. 다른 datacontext에서 만든 개체를 업데이트하고 싶습니다. 내 코드는 다음과 같습니다. 삽입 문은 잘 작동하지만 난 내가 .Attach (이) .Attach (이 사실) .Attach를 사용하려고했습니다 Linq2SQL: Update object not created in datacontext다른 데이터 센터 텍스트에서 생성 된 업데이트 개체

을 읽은

var dataContext = new ReconNewDataContext();   
     if (Id == 0) 
     { 
      var item = this; 
      dataContext.RequestIO.InsertOnSubmit(item); 
      dataContext.SubmitChanges(); 
      Id = item.Id; 
     } 
     else 
     { 
      var item = this; 
      //update object 
     }   

업데이트를 위해 코드를 쓸 수 없습니다 (this, oldObjectFromBase)하지만 항상 오류가 있습니다.

데이터베이스에서 개체를 가져 와서 수정 된 개체에서 수동으로 데이터를 전송할 수 있지만 새로운 필드가있을 것입니다. 즉, 항상 Save() 메소드에 새 필드를 추가해야합니다.

다른 datacontext에서 만든 개체를 업데이트하는 "아름다운"방법이 있습니까?

+0

나는이 질문을 적어도 20 번이나했기 때문에 비슷한 질문을 올렸지 만 하나의 "올바른"답은 없다. 아직 발견하지 못한 "아름다운"방법은 없습니다. 그것은 우리가) 조금 정신 나간 시작하고 b) 내 저장소에 Sql Linq를 사용하는 지혜에 의문을 시작합니다. 연결이 끊긴 데이터를 업데이트 할 때 EF가 더 좋습니까? 저의 저장소에서 사용할 수있는 더 나은 접근법이 있습니까? 나는 당신을 위해 답을 갖고 싶지만 여전히 나는 혼자만 찾고 있습니다. : ( – beaudetious

+0

나는 똑같은 질문을한다 ... Nhibernate가 내 삶을 더 쉽게 만들었을 것이다 ... – Haroon

답변

0

체크 아웃이 문서 : http://omaralzabir.com/linq_to_sql__how_to_attach_object_to_a_different_data_context/

또한, 귀하의 예제에서, 업데이트, 일을 시도 : 나는 믿고 나의 동료를했다 유사한

var item = new ObjectBeingUpdated(); 
//copy over properties from old object to new object, make sure pk's match 

//Attach this new object 

뭔가.

UPDATE :에 대한 자세한 정보를 원하시면이 체크 아웃은 첨부 : http://blogs.msdn.com/b/dinesh.kulkarni/archive/2007/10/08/attach-if-you-have-something-detached.aspx

+0

// 올드 오브젝트에서 올드 오브젝트로 프로퍼티를 복사하고, pk와 일치하는지 확인한다. 전에 말했듯이 "아름다운"방법이 아닙니다 .42 필드는 테이블에 있습니까? 물론 system.reflection을 사용할 수 있습니다. 그러나 다른 데이터 인터페이스에서 생성 된 개체를 업데이트하는 "아름다운"메서드가 있습니까? – takayoshi

0

다음과 같은 패턴을 사용할 수 있습니다

  • 사용 AutoMapper 속성을 복사 할

    1. 이 저장소에서 기존 개체를 가져 오기를
    2. 저장 너의 물건을 되찾아.
  • +0

    이것은 내가 한 작업입니다. 그러나 저장할 때 xelements 또는 xml 필드에 매핑 된 데이터가 있으면 작동하지 않는다는 것을 알 수 있습니다 ... – Haroon

    관련 문제