插入与外键约束的冲突

时间:2012-04-30 03:03:50

标签: c# orm foreign-keys rdbms ormlite-servicestack

我正在使用OrmLite中的ServiceStack构建API。


使用测试数据填充时,我收到以下错误:

  

INSERT语句与FOREIGN KEY约束冲突   “FK_Order_Customer_CustomerId”。冲突发生在数据库中   “C:\用户\ ALECTAYLOR \ SOCIALBOOTSTRAPAPI \ SRC \ SOCIALBOOTSTRAPAPI \ APP_DATA \ USERAUTH.MDF”,   表“dbo.Customer”,列'Id'。声明已经终止。

代码(第213-236行+ CreateOrders函数):http://pastebin.com/Njhz7sD2

Profiler输出:http://fiddle.jshell.net/cTen2/1/show/


感谢您就如何纠正此问题提出任何建议。

3 个答案:

答案 0 :(得分:0)

FOREIGN KEY约束通常意味着您尝试将值插入到引用表中不存在的表中。请查看有关外键的MSDN文章,了解有关它们的含义及其工作原理的更多信息。您需要查看数据表订单和客户的实际结构。

我猜你正在将customerId插入到customers表中不存在的orders表中。

答案 1 :(得分:0)

因为这是插件失败,唯一合乎逻辑的解释是客户编号1不存在。我看到你之前插入了3行客户。也许在插入客户和插入订单之间没有提交交易。

  

INSERT INTO“Order”(“CustomerId”,“ShopId”,“ShippingAddress”,   “OrderDate”,“RequiredDate”,“ShippedDate”,“Total”)VALUES(1,0,   '{line1:440 Crescent St,line2:South Melbourne,postCode:7416,   city:Melbourne,country:Australia}','20120430 07:43:18.686',NULL,   NULL,0);

在插入客户端之后和插入订单之前尝试提交插入

答案 2 :(得分:0)

好吧,让它发挥作用。

需要设置ShopId Order的{​​{1}}和orderId的{​​{1}}。

http://pastebin.com/TbrW150T