【发布时间】:2012-03-07 06:18:54
【问题描述】:
我有一个简单的三表参考。它看起来很简单。那里的关联是在 DBML 中创建的。它们实际上不是表定义中的外键。为什么?这是一个很长的故事。相信我,当我说,我已经打过那场战斗并且失败了。
当我尝试使用 LINQ 添加新的 FileType 记录时,它崩溃并出现以下错误:无法将值 NULL 插入 Id 列、FileType 表。
_fileType = new FileType()
{
Id = def.ID, // This is the integer "1"
Name = def.Name,
FileCategoryId = def.Category.ID,
DateLabel = def.DateLabel,
FileNamePrefix = def.Prefix,
FolderName = def.Folder,
CreateInspection = 0
};
try
{
dc.FileTypes.InsertOnSubmit(_fileType);
dc.SubmitChanges();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
但是,如果您会注意到代码,则 Id 正在设置中。我检查了该值,它不为空。它是一个整数。我错过了什么或做错了什么?
我确实检查以确保存在正确 ID 的 FileCategory 记录。我还有什么遗漏的吗?
【问题讨论】:
-
它可能是一个自动增量字段吗?在这种情况下,您不必为插入记录设置 ID。
-
没有。我确保它只是一个字段。它没有为它定义身份规范。我把它当作一个键来使用,但实际上,它只是一个整数。使用 Management Studio,我可以随意设置和更改字段。
-
你能告诉我们从这段代码生成的 T-SQL 吗?
-
那么 FileType 只是一个没有任何约束的普通表?像创建表文件类型(ID int not null 主键,... CreateInspection int not null)
-
在您的表映射中,该字段是否在“属性”窗格中标记为“自动生成的值”?我之前遇到过插入/更新问题...
标签: c# linq linq-to-sql