1

ServiceStackのOrmLiteを使用してAPIを構築しています。


テストデータを入力すると、次のエラーが発生します。

INSERTステートメントがFOREIGNKEY制約「FK_Order_Customer_CustomerId」と競合しました。データベース"C:\ USERS \ ALECTAYLOR \ SOCIALBOOTSTRAPAPI \ SRC \ SOCIALBOOTSTRAPAPI \ APP_DATA \ USERAUTH.MDF"、テーブル "dbo.Customer"、列'Id'で競合が発生しました。ステートメントは終了されました。

コード(213〜236行目+ CreateOrders関数):http://pastebin.com/Njhz7sD2

プロファイラー出力: http: //fiddle.jshell.net/cTen2/1/show/


この問題を修正する方法についてアドバイスをありがとうございます。

4

3 に答える 3

0

FOREIGN KEY制約は、通常、参照テーブルに存在しない値をテーブルに挿入しようとしていることを意味します。外部キーとは何か、およびそれらがどのように機能するかについての詳細は、外部キーに関するMSDNの記事を参照してください。データテーブルの注文と顧客の実際の構造を確認する必要があります。

顧客テーブルに存在しないordersテーブルにcustomerIdを挿入していると思います。

于 2012-04-30T03:41:20.943 に答える
0

これは失敗している挿入であるため、唯一の論理的な説明は、顧客番号1が存在しないことです。数行前に3人の顧客を挿入しているのを見ました。顧客が挿入されてから注文が挿入されるまでの間に、トランザクションがコミットされなかった可能性があります。

INSERT INTO "Order"( "CustomerId"、 "ShopId"、 "ShippingAddress"、 "OrderDate"、 "RequiredDate"、 "ShippedDate"、 "Total")VALUES(1、0、'{line1:440 Crescent St、line2:サウスメルボルン、郵便番号:7416、都市:メルボルン、国:オーストラリア}'、' 20120430 07:43:18.686'、NULL、NULL、0);

クライアントを挿入した後、注文を挿入する前に、挿入をコミットしてみてください

于 2012-04-30T09:16:35.653 に答える
0

了解しました。動作させました。

のとのを設定する必要がShopIdありOrderます。orderIdorderDetails List

http://pastebin.com/TbrW150T

于 2012-05-01T00:07:06.093 に答える