数据集表适配器管理器帮助

本文关键字:帮助 管理器 适配器 数据集 | 更新日期: 2023-09-27 18:09:49

我有一个简单的控制台应用程序,我试图更新客户和订单表,我得到一个错误消息:

The INSERT statement conflicted with the FOREIGN KEY constraint "FK_Orders_Customers". The conflict occurred in database "CustomerOrder", table "dbo.Customers", column 'Id'.
The statement has been terminated.

我错过了什么明显的吗?

    RsNorthwinds ds = new RsNorthwinds();
    RsNorthwinds.CustomersRow cRow = ds.Customers.NewCustomersRow();
    cRow.Name = "John Smith";
    ds.Customers.AddCustomersRow(cRow);
    RsNorthwinds.OrdersRow oRow = ds.Orders.NewOrdersRow();
    oRow.CustomerId = cRow.Id;
    oRow.OrderDate = "9/26/11";
    ds.Orders.AddOrdersRow(oRow);
    RsNorthwindsTableAdapters.TableAdapterManager tm =
        new DataTableAdapterTester.RsNorthwindsTableAdapters.TableAdapterManager();
    tm.OrdersTableAdapter = new DataTableAdapterTester.RsNorthwindsTableAdapters.OrdersTableAdapter();
    tm.CustomersTableAdapter = new DataTableAdapterTester.RsNorthwindsTableAdapters.CustomersTableAdapter();
    tm.UpdateAll(ds);

数据集表适配器管理器帮助

不管问题是在c#端,总是使用Sql Profiler来检查Sql Server端执行的Sql语句的顺序。这样您就可以快速找到问题所在。

UpdateAll方法可能以无效的顺序执行两个插入。使用表适配器而不是ORMapper,您会问自己这样的问题。