首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Master-detail外键插入

Master-detail外键插入
EN

Stack Overflow用户
提问于 2014-01-20 16:49:09
回答 1查看 1.1K关注 0票数 0

有两张桌子。

代码语言:javascript
复制
Customer              Contact
_______________________________________
CustomerId    *-->    CustomerId
CustomerName          ContactId
...                   ContactFirstName
                      ...

One customer can have many contacts

存储过程

代码语言:javascript
复制
CREATE PROCEDURE dbo.InsertCustomers
(
    @CustomerId int,
    @CustomerName nvarchar(50)
)
AS
SET NOCOUNT OFF;
INSERT INTO [dbo].[Customers] ([CustomerName]) VALUES (@CustomerName);

SELECT CustomerId, CustomerName FROM Customers WHERE (CustomerId = @CustomerId)

第二个:

代码语言:javascript
复制
CREATE PROCEDURE dbo.InsertContacts
(
    @CustomerId int,
    @ContactFirstName nvarchar(20)
)
AS
SET NOCOUNT OFF;
INSERT INTO [dbo].[Contacts] ([CustomerId], [ContactFirstName]) VALUES (@CustomerId, @ContactFirstName);

SELECT ContactId, CustomerId, ContactFirstName FROM Contacts WHERE (CustomerId = @CustomerId)

使用Linq- to -sql,我尝试将数据从winforms插入到数据库中。在designer中,我为类Customer和类Contact都将插入行为设置为存储过程,但在

_context.SubmitChanges();获取错误

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

我应该编辑我的存储过程还是在代码中处理它?

如何在插入子行时设置Contacts.CustomerId

EN

回答 1

Stack Overflow用户

发布于 2014-01-20 19:22:56

您可以使用简单的Linq方法来插入数据,而不是使用存储过程插入数据。

代码语言:javascript
复制
DataClasseseMyDataContext db = new DataClasseseMyDataContext(conString);

db.Customers.InsertOnSubmit(Customers);
tblSupplierPO.tblInvSupplierPOPIDetails.Add(Contacts);

db.SubmitChanges();

您必须已在表之间创建关系并将其添加到DBML

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21229600

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档