2016-11-14 12 views
0

私は、オンラインの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つのフィールドは、常にデータを持ち、決してヌルではありません。

ここで私が見逃していることが明らかですか?

+0

空の/ヌル値を 'CircuitID'または/または' BoardID'に格納しようとしています。 null値を受け取りましたが、データベースで許可されません。私はそれを保存する前にデータの検証をお勧めします。それが起きたときにログしてエラーを出して、ソースデータを修正することができます。 – VDWWD

+0

私はサーバーに渡しているデータを見ることができ、CircuitIDとBoardIDは常にnullではありません。だから私はそれが問題だとは思わない。 –

+0

私は途中です!私は今、nullではなくCircuitMasterIDに 'null'を書き込もうとしているのを見ることができます。私は現在、私のjがヌルを文字列に変換しているところで作業する必要があります。 –

答えて

0

文字列「null」の値が、nullではなくCircuitMasterIDのローカルコピーに書き込まれていたという問題がありました。だから私はこれをSQLに書き込もうとしたとき、それはそれを好まなかった。 SQLのエラーメッセージは引用符でヌルを示していますが、文字列だったのか、エラーメッセージが値を引用符で囲んでいるのか分かりませんでした。

一部のHTMLに値nullを書き込んだので値 'null'がCircuitMasterIDフィールドに入力されましたが、これをフィールドに戻して保存すると 'null'になりました。私はローカルストレージにデータを格納していますが、これは非常に優れた型制御を提供しません。自己への注意は、より良いタイプコントロールを追加する必要があります。

関連する問題