2009-05-05 5 views
1

이것은 자주 묻는 질문이지만 아직은 그렇지 않습니다. Linq to SQL을 사용하여 메모리 내 모델에 다양한 데이터 변경을 허용하는 응용 프로그램에 대해 변경 사항을 비동기식 처리 대기열에 배치합니다. 그래서, 나는 (아직) 업데이트에 대해 걱정하지 않는다. 웹 페이지의 모달 팝업을 통해 데이터의 다양한 부분을 변경할 수 있습니다. 일부는 그리드 기반이며 다른 것은 그리드 속성입니다. 포스트 백주기가 지속되지 않는 변경 사항에 문제가 있습니다. 분명히, 모든 변경이 이루어지고 사용자가 페이지를 제출하기 전에는 데이터베이스에 아무 것도 보관하고 싶지 않습니다.Linq에서 SQL, Ajax 포스트 백 및 ASP.NET의 페이지 상태

지금까지 선택한 경로는 다음과 같습니다

  • I 장애인 지연 로딩 내 루트 개체
  • 에 대한 [직렬화] 부분 클래스를 생성
  • 내가 세션에 일을 넣고 onload 이벤트에서 검색하십시오.

이것은 원칙적으로 작동하는 것 같습니다.

Operation is not valid due to the current state of the object. 

오류가 발생 Linq에이 메소드 호출에 의해 발생합니다 : 내가 세션에서 개체를 검색 한 후 아이들의 속성 중 일부를 업데이트 할 때,

p.PhysicianSpecialties[0].physician_specialty_code = 
    ddlSpecialty.SelectedItem.Value; 

나는이 오류 세터 방법 :

this.SendPropertyChanging(); 

다른 특성이 잘 업데이 트 :

p.PhysicianNames[0].first_name = txtFirstName.Text.ToUpper(); 

이 오류는 발생하지 않습니다.

내 질문 : 근본적으로 잘못된 트랙에 있습니까? 이 작업을 수행하는 더 좋은 방법이 있습니까? 오류의 원인은 무엇입니까?

업데이트 : 예외는 'System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException'입니다. 나는 I am on to something라고 생각하지만 아직 해결책을 모른다.

답변

2

나는 MSDN에서 해결책을 얻었다. 문제는 그게 내가 할 수있는 것보다 더 나은 in this thread이라고 설명되어 있습니다. 일방적으로 연결을 변경할 수는 없지만 단지 id 만 변경하는 것이 아니라 새 자식 객체를 할당하여 양쪽에서 수행해야합니다.

p.PhysicianSpecialties [0] = .PhysicianSpecialtyLookup db.PhysicianSpecialtyLookups.Single (c => (c.physician_specialty_code == ddlSpecialty.SelectedItem.Value));

0

데이터 바인딩을 사용하는 경우 어떻게해야합니까? 드롭 다운 값을 변경할 때이 오류를 던지기 시작한 데이터 격자보기의 드롭 다운 목록이 있습니다. 이것은 내가 연관을 지우거나 데이터 바인딩을 사용하지 않아야한다고 생각하게 만든다.

+0

드롭 다운에 무엇을 바인딩하고 있습니까? – cdonner

관련 문제