2009-07-02 5 views
1

LinqToSql DataContext가 더티 속성을 더럽혀진 것으로 간주하여 데이터베이스에 제출하려면 어떻게해야합니까?강제로 LinqToSql 제출

제 경우에는 실제 참조가 동일하므로 속성이 수정되면 XElement가되지만 DataContext는이를 catch하지 않습니다.

나는 속성 null 또는 새 XElement를 할당 한 다음 원래의 XElement에 다시 할당하려고 할 수 있다고 생각합니다. 이것이 최고의 해결책이 될까요?

XElement 하위가 수정 된 후 SubmitChanges를 호출합니다.

답변

0

엔티티의 자산을 더러워지게하는 방법을 찾지 못했습니다. LinqToSql 코드에서 파고에서 오래된 값을 추적하고 새 값과 비교하는 것처럼 보입니다. 따라서 일반적으로 Attach를 사용해야하거나 현재 참조 된 개체를 클론하여 새 참조를 만들어야합니다.

내 테이블 클래스를 사용자 정의하여 XElement로 문제를 해결했습니다. XElement가 변경되면 이전 요소를 기반으로 새 XElement를 만듭니다.

partial class Table 
{ 
    partial void OnLoaded() 
    { 
     if(XmlData != null) 
     { 
      XmlData.Changed += this.XmlData_Changed; 
     } 
    } 

    private void XmlData_Changed(object sender, XObjectChangeEventArgs e) 
    { 
     this.ModifiedCardData = new XElement(this.XmlData); 
    } 
} 
0

당신이 전달하고자하는 버전이 저장하고 싶은 DataContext를 말하고있는 곳에 Attach(object, true)을 사용해야 할 수도 있습니다. 그런 다음 SubmitChanges()으로 전화 할 수 있습니다.

+0

하지만 전체 엔티티를 강제로 제출하고 싶지는 않습니다. 방금 수정 한 부동산의 – Sumrak