私は、オンラインのSQL Serverデータベースからのデータをローカルストレージに保存するシステムを持っています。データレコードは、Webサービスを使用してアップロードおよびダウンロードされます。私は自分のコードでADO.Netエンティティデータモデルを使用しています。Webサービスがスロー "値 'null'は 'Guid'型として解析できません。"エラー
1つのテーブルのアップロードリクエストによっては、エラーメッセージ "null 'を' Guid 'タイプとして解析できないというエラーメッセージが表示されたときにルーチンが失敗します。これはたまにしか起こらず、私は問題を繰り返す方法を工夫していません。私は最後の月に80回それを記録しており、その時にルーチンは1200回成功して呼び出されました。
このテーブルのデータベースレコードには、uniqueidentifierとして定義されている5つのフィールドがあります。これらのうち2つはNOT NULLで、残りの3つはNULLです。ここでは、このテーブル内のGUIDフィールドを示す「CREATE TABLEを」クエリです:
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フィールドにアップロードされたデータのようになります。このレコードは、1つ上に作成された
{"__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}
オンラインSQL Serverデータベースにマシンをアップロードし、別のマシンにダウンロードします。
私は他の同様のテーブルをデータベースに持っていますが、決して問題はありません。私はエラーメッセージを受け取っているのはこのテーブルだけです。 'NOT NULL'(BoardIDとCircuitID)として定義された2つのフィールドは、常にデータを持ち、決してヌルではありません。
ここで私が見逃していることが明らかですか?
空の/ヌル値を 'CircuitID'または/または' BoardID'に格納しようとしています。 null値を受け取りましたが、データベースで許可されません。私はそれを保存する前にデータの検証をお勧めします。それが起きたときにログしてエラーを出して、ソースデータを修正することができます。 – VDWWD
私はサーバーに渡しているデータを見ることができ、CircuitIDとBoardIDは常にnullではありません。だから私はそれが問題だとは思わない。 –
私は途中です!私は今、nullではなくCircuitMasterIDに 'null'を書き込もうとしているのを見ることができます。私は現在、私のjがヌルを文字列に変換しているところで作業する必要があります。 –