我有一个场景,我的主表中的主键不是标识列。它是在MS SQL Server数据库中的“代替插入”触发器上生成的。主键以varchar格式XYZ-11-001生成。我试图在主表上插入,然后使用Linq添加详细记录。我不断收到错误“无法将值NULL插入列'ParentID',表'MyDB.dbo.Child';列不允许空值.INSERT失败。”我确实正确设置了Primarykey / ForeignKey关系。
我的简化代码如下:
using (DBDataContext context = new DBDataContext())
{
ParentTable parent = new ParentTable();
parent.FirstName = "Joe";
parent.LastName = "Blow";
master.Childs = new System.Data.Linq.EntitySet<child>();
int index = 0;
foreach (childObj in ChildrenObj)
{
Index++;
Child child = new Child();
parent.Childs.Add(child);
child.ID = index; //Foreignkey + ID are Primarykey of the child table
child.FirstName = childObj.FirstName;
child.LastName = childObj.LastName;
}
context.parents.InsertOnSubmit(parent);
context.SubmitChanges();
}
我已经尝试将child.Parent_ID设置为parent.ID值,但是在“而不是插入”触发器触发后似乎没有更新(即使我在添加子对象之前执行了InsertOnSubmit) 。我已经尝试将其设置为任意值,但它会抱怨,因为它不会更新child.NonIdendityColumn ForeignKey值。我甚至想做什么?对数据库中的主键使用非生成的ID值似乎很简单。
非常感谢任何帮助。
提前致谢!