2009-12-07 2 views
0

WCF를 통해 엔티티를 업데이트하려고하고 엔티티에 타임 스탬프 열이 포함되어 있습니다. 업데이트를 시도하면 다음과 같은 Data.Linq 오류가 발생합니다. "데이터베이스에서 계산되거나 생성 된 멤버는 변경할 수 없습니다." 이 메시지는 시간 소인 열을 나타냅니다.WCF를 통해 타임 스탬프 열이있는 엔티티를 업데이트 할 때의 문제

WCF를 사용하지 않는 동일한 업데이트를 시도하면 정상적으로 작동합니다. 그래서 문제는 WCF와 있어야합니다. 우리는 직렬화를 위해 Timestamp 속성에 적절한 [DataMember] 속성을 가지고 있습니다. 누구든지 문제가 무엇인지 알 수 있습니까?

도움 주셔서 감사합니다.

랜디

답변

0

이 문제는 WCF와는 아무런 관련이 없습니다.

실제로 SQL Server TIMESTAMP 데이터 형식입니까 ??

업데이트 할 수 없습니다. SQL Server는 행에 문제가 발생할 때마다 해당 필드를 자동으로 업데이트합니다.

여기에서 "Timestamps vs. Datetime data types"또는 여기에서 "Misunderstanding timestamp"을 참조하십시오.

WCF 메시지를받을 때 어떻게 Linq-to-SQL 데이터 업데이트를 처리합니까? 우리에게 그 코드를 보여줄 수 있습니까?

예 : 해당 필드/속성이 데이터 계약에서 읽기 전용 속성으로 정의되어 있습니까? 그 값을 업데이트하려고하는 사람에게는 아무런 요점이 없습니다 ....

또한 WCF를 통해 엔티티를 보내므로 엔티티가 "연결이 끊긴"엔티티가 Linq-to-SQL으로 전송됩니다. DataContext의 범위 안에 항상 들어 있지 않은 엔티티. 이것은 Linq-to-SQL이 timestamp 컬럼에 새로운 값을 가진 새로운 엔티티를 데이터베이스에 추가하려고하는 결과를 가져올 수 있습니다 ....

+0

예, 실제로 타임 스탬프 데이터 유형입니다. WCF를 사용하지 않을 때 업데이트가 제대로 작동하므로 WCF 문제라고 생각합니다. 게다가 L2S는 자동 생성 값으로 표시되기 때문에이 열을 SQL Server에서 업데이트하려고 시도하지 않습니다. –

+0

글쎄, 뭔가 WCF 서비스에서 L2S 엔티티를 업데이 트하려고 코드에서 잘못되어야합니다 - 당신이 우리에게 그 코드를 보여줄 수 있습니까 ?? –