Linq to sql LINQ to SQL:如果我向LINQ实体集添加对象,则不会';它不是被添加了吗

Linq to sql LINQ to SQL:如果我向LINQ实体集添加对象,则不会';它不是被添加了吗,linq-to-sql,Linq To Sql,假设我有一个公司表和一个部门表。每个部门都有一个公司的外键,因此每个公司都可以有多个部门子级 如果我使用Linq to sql获取一个公司对象,我就可以访问它的Divisions属性,即Division对象的实体集。如果我向其中添加一个新的Division对象并调用SubmitChanges(),它不会自动进入Division表,还是我被迫调用InsertOnSubmit?有多种方法可以使用LINQ to SQL将对象插入数据库。例如: db.Divisions.InsertOnSubmit(n

假设我有一个公司表和一个部门表。每个部门都有一个公司的外键,因此每个公司都可以有多个部门子级


如果我使用Linq to sql获取一个公司对象,我就可以访问它的Divisions属性,即Division对象的实体集。如果我向其中添加一个新的Division对象并调用SubmitChanges(),它不会自动进入Division表,还是我被迫调用InsertOnSubmit?

有多种方法可以使用LINQ to SQL将对象插入数据库。例如:

db.Divisions.InsertOnSubmit(new Division()
{
    Company = db.Company.Single(c => c.Id == 1),
    // other properties
});

db.SubmitChanges();
或:

如您所见,您可以在数据上下文中使用
表分区
属性的
InsertOnSubmit
,但也可以在
公司
实体中使用
实体设置分区
属性的
添加
方法。他们两个做的差不多。后一种方法的优点是,您不需要将公司“链接”到新的部门,因为LINQ to SQL可以为您解决这个问题


我希望这能回答你的问题。

是的,我知道我没有错。更改只发生在EntitySet的包装器上,而不会发生在集合本身上。@Pleun:对不起,您的说法是错误的。调用
Add
后,不需要
InsertOnSubmit
,只需使用LINQ将其添加到SQL即可。请试一试。
var company = db.Company.Single(c => c.Id == 1);

company.Divisions.Add(new Division()
{
    // other properties
});

db.SubmitChanges();