2012-11-02 2 views
0

오전에 첨부 할 수 있습니다처럼 코드는 모습입니다 부분 클래스 영웅 ...System.InvalidOperationException는 : 엔티티 만 여기 <code>DataContext</code>를 사용하고, "히어로"라는 테이블을 업데이트하려고 수정

public partial class Hero : IHero { 
      //my fields and methods etc... 

      public void Save() { 
       using(GameDBDataContext db = new GameDBDataContext()) { 
        db.Heros.Attach(this, true); 
        db.SubmitChanges(); 
       } 
     } 
} 

하지만이 던지고 : -

System.InvalidOperationException: An entity can only be attached as modified without original state if it declares a version member or does not have an update check policy. 

어를 이 문제의 해결책은 무엇입니까?

public void Save() { 
    using(GameDBDataContext db = new GameDBDataContext()) { 
     db.Heros.Attach(this, db.Heros.SingleOrDefault(x => x.id == EntityID)); 
    } 
} 

과 예외 : -이 - :

편집 : 나는 이것을 시도 System.NotSupportedException: An attempt has been made to Attach or Add an entity that is not new, perhaps having been loaded from another DataContext. This is not supported.

답변

0

내가 올바르게 Attach 방법을 사용하고 있다고 생각하지 않습니다. 이 http://msdn.microsoft.com/en-us/library/bb548978.aspx을 보셨습니까?

전달하려는 객체가 (비 직렬화가 아닌) 코드로 작성된 경우 작동하지 않을 수 있습니다. 그것을 deserialization을 통해 만든 경우 원래 개체의 복사본을 만들고 수정 한 다음 변형 된 개체와 수정되지 않은 개체를 받아들이는 오버로드를 사용하는 것이 좋습니다 Attach(Entity old, Entity new).

+0

나는 이것을 시도해보고 System.NotSupportedException을 throw한다. 새로운 DataContext에서로드 된 엔티티를 Attach하거나 Add하려고 시도했다. 이것은 지원되지 않습니다. ' – Abanoub