我有两个表:
File
|- Id (Primary Key)
|- Name
|- ...
SpecificFile
|- FileId (Primary Key & Foreign Key to File.Id)
|- SpecificProperty1
|- ...
我有以下 Linq2Sql 代码 (LINQPad):
var sfiles = from f in File
where f.Name LIKE 'Specific%'
select new SpecificFile { FileId = f.Id, SpecificProperty1 = "Foo" };
SpecificFiles.InsertAllOnSubmit(sfiles);
但是,插入失败,并显示:
SqlException:INSERT 语句与 FOREIGN KEY 约束"FK_SpecificFile_File"冲突。冲突发生在数据库"我的数据库",表"dbo。文件",列"Id"。 该语句已终止。
如果我调试并查看 Linq2Sql 生成的 INSERT 语句,原因很明显:
INSERT INTO [SpecificFile]([SpecificProperty1])
VALUES (@p0)
如何通知 Linq2Sql 它必须使用特定的 ID 进行插入?
注意:在new
-expression 中将File
对象引用设置为 f
也无济于事。
自己找到了答案...不幸的是,SpecificFile.FileId 被设置为 IDENTITY(1,1)
。异常消息没有多大帮助...