2008-10-01 1 views
9

엔티티 프레임 워크 난 단지 요청에 "사람"을 소요 서비스 층이 업데이트 기능을 이동해야하는 경우 동일한 데이터 컨텍스트

Dim personA = (from p in datacontext.Person where p.PersonID = 1 select p) 
personA.name = txtName.value 
datacontext.savechanges() 

에서 데이터를 업데이트하기 위해 큰 유연성을 제공 컨텍스트 , 다시 딥 복사를하지 않고 datacontext 내 "사람"요청 개체를 할당하는 가장 좋은 방법은 무엇입니까?

답변

12

데이터 개체에 엔터티 개체를 연결해야합니다.

또한 AttachUpdeted 메소드를 사용하여 데이터 컨텍스트 부분 클래스를 확장해야합니다. 데이터 컨텍스트에 개체를 첨부 할 때 업데이트가 이루어진 것을 알 수 없습니다. 아래 코드는 데이터 컨텍스트에 모든 속성이 업데이트되어 데이터베이스에 기록되어야한다고 알립니다.

public static void Save(EntityObject entity) 
{ 
    using(MyContext ctx = new MyContext) 
    { 
    ctx.AttachUpdated(entity); 
    ctx.SaveChanges(); 
    } 
} 

public static void AttachUpdated(this ObjectContext obj, EntityObject objectDetached) 
{ 
    if (objectDetached.EntityState == EntityState.Detached) 
    { 
     object original = null; 
     if (obj.TryGetObjectByKey(objectDetached.EntityKey, out original)) 
     obj.ApplyPropertyChanges(objectDetached.EntityKey.EntitySetName, objectDetached); 
     else 
     throw new ObjectNotFoundException(); 
    } 
} 

article 1
article 2