我有一个架构,其中Table1有一个主要的自动增量标识密钥,而Table2有一个主键,其FK约束等于Table1主键。
架构是:
CREATE TABLE [dbo].[Table1](
[Key] [bigint] IDENTITY(1,1) NOT NULL,
[Value] [nvarchar](max) NOT NULL,
CONSTRAINT [PK_Table1] PRIMARY KEY CLUSTERED
(
[Key] ASC
)
CREATE TABLE [dbo].[Table2](
[Key] [bigint] NOT NULL,
[Value] [nchar](10) NOT NULL,
CONSTRAINT [PK_Table2] PRIMARY KEY CLUSTERED
(
[Key] ASC
)
ALTER TABLE [dbo].[Table2] WITH CHECK ADD CONSTRAINT [FK_Table2_Table1] FOREIGN KEY([Key])
REFERENCES [dbo].[Table1] ([Key])
代码是:
void Main()
{
var table1 = new Table1
{
Value = "table1",
Table2 = new Table2
{
Value = "table2",
}
};
Table1.InsertOnSubmit(table1);
SubmitChanges();
}
然后执行插入并保存它,抱怨Table2无法插入重复的外键。
我猜测它没有使用Table1插入的返回值设置Table2中的主键值,我无法弄清楚如何在不进行两次单独调用的情况下执行此操作。