로컬 SQL Server 데이터베이스의 데이터를 로컬 저장소에 저장하는 시스템이 있습니다. 데이터 레코드는 웹 서비스를 사용하여 업로드되고 다운로드됩니다. 내 코드에서 ADO.Net 엔터티 데이터 모델을 사용하고 있습니다.웹 서비스에서 "값 'null'을 'Guid'유형으로 구문 분석 할 수 없습니다." 오류
한 테이블에 대한 일부 업로드 요청에서 "null '값을'Guid '유형으로 구문 분석 할 수 없다는 오류 메시지가 표시되면이를 호출하려고하면 루틴이 실패합니다." 이 문제는 가끔씩 만 발생하며 문제를 반복하는 방법을 찾지 못했습니다. 나는 지난 달에 80 번 기록했고 그 시간에 루틴은 1200 번 성공적으로 호출되었습니다.
고유 식별자로 정의 된이 테이블의 데이터베이스 레코드에는 다섯 개의 필드가 있습니다. 이들 중 두 개는 'NOT NULL'이고 다른 세 개는 'NULL'입니다. 이 기록은 하나에서 만든
{"__type":"Circuit:#WaspWA","BoardID":"edb5f774-5e5d-490c-860b-73c3419628cf","CircuitID":"e95bbfa3-2af6-49a5-94dd-c98924ec9a62","CircuitMasterID":null,"DeviceID":"daf12fce-675c-46d9-94c4-ed28c63cdf30","RCDID":null}
:이 테이블의 GUID 필드에 업로드
CREATE TABLE [dbo].[Circuit](
[CircuitID] [uniqueidentifier] NOT NULL,
[BoardID] [uniqueidentifier] NOT NULL,
[RCDID] [uniqueidentifier] NULL,
[CircuitMasterID] [uniqueidentifier] NULL,
[DeviceID] [uniqueidentifier] NULL,
CONSTRAINT [PK_CircuitGuid] PRIMARY KEY NONCLUSTERED
(
[CircuitID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
)
GO
ALTER TABLE [dbo].[Circuit] WITH CHECK ADD CONSTRAINT [FK_Circuit_RCD] FOREIGN KEY([RCDID])
REFERENCES [dbo].[RCD] ([RCDID])
GO
ALTER TABLE [dbo].[Circuit] CHECK CONSTRAINT [FK_Circuit_RCD]
GO
ALTER TABLE [dbo].[Circuit] WITH CHECK ADD CONSTRAINT [FK_CircuitGuid_Board] FOREIGN KEY([BoardID])
REFERENCES [dbo].[Board] ([BoardID])
GO
ALTER TABLE [dbo].[Circuit] CHECK CONSTRAINT [FK_CircuitGuid_Board]
GO
데이터는 다음과 같습니다 : 다음은이 테이블에서 GUID 필드를 보여주는 '테이블 만들기'쿼리입니다 컴퓨터가 온라인 SQL Server 데이터베이스에 업로드 된 다음 다른 컴퓨터로 다운로드됩니다.
데이터베이스에는 다른 문제가없는 비슷한 테이블이 있습니다. 나는 오류 메시지를받는 테이블입니다. 'NOT NULL'(BoardID 및 CircuitID)로 정의 된 두 필드는 항상 데이터를 가지며 null이 아닙니다.
여기에 내가 놓친 뭔가가 있습니까?
빈/널 값을 'CircuitID'또는/또는 'BoardID'에 저장하려고합니다. null 값을 받고 있지만 데이터베이스에서 허용하지 않습니다. 저장하기 전에 데이터 유효성을 검사하는 것이 좋습니다. 소스 데이터를 수정할 수 있도록 로그하고 오류가 발생하면이를 제공하십시오. – VDWWD
서버에 전달중인 데이터를 볼 수 있으며 CircuitID와 BoardID는 항상 null이 아닙니다. 그래서 나는 그것이 문제라고 생각하지 않습니다. –
나는 중간에있다! 이제 널 (null)이 아닌 CircuitMasterID에 'null'을 쓰려고한다는 것을 알 수 있습니다. 이제는 j에서 null을 문자열로 바꾸는 작업 만하면됩니다. –