C# LINQ,将表转换为列表并插入新记录

C# LINQ,将表转换为列表并插入新记录,c#,linq,C#,Linq,我有一个DataContext: public class DatabaseCatalogue : DataContext { // other stuffs ... public Table<IngramProduct> IngramProducts; } 如果我更改此列表中某个对象的属性之一的值,然后调用dbcatalog.SubmitChanges(),则保存到数据库中 但是,如果我创建一个新对象并将该对象插入列表,它将不会作为新记录保存到表中(当调用Sub

我有一个
DataContext

public class DatabaseCatalogue : DataContext
{
    // other stuffs ...

    public Table<IngramProduct> IngramProducts;
}
如果我更改此列表中某个对象的属性之一的值,然后调用
dbcatalog.SubmitChanges(),则保存到数据库中

但是,如果我创建一个新对象并将该对象插入列表,它将不会作为新记录保存到表中(当调用
SubmitChanges
时)


我的问题是:如何将新对象添加到列表中,并将其作为新记录保存到数据库中(调用
SubmitChanges
方法)?

如果在调用
SubmitChanges()
后要保留此对象,必须将新产品添加到原始
表中:


调用
ToList
后,将对数据库进行查询,并在
列表中具体化集合,该列表现在与原始

“如果我创建一个新对象并将此对象插入列表,则不会将其作为新记录保存到表中”。。。您是否也将其添加到
表中
,还是仅添加到
列表中
?因为如果只将其添加到
列表中
如何知道它有一个新行要保存?我认为这可能是解决方案,但对我来说有点困惑(LINQ是新手,所以我的问题可能看起来很愚蠢):为什么如果我更改列表中的对象,它将被保存到数据库记录中(因此列表看起来与表无关)但当我向列表中添加新对象时,它不会保存到数据库中?类似于list _list=()的声明。ToList并不意味着_list是指向“列表版本”的指针括号之间是什么?单个对象由更改跟踪器跟踪,当调用
SubmitChanges
时,对其成员的更改将反映到数据库中。当调用
ToList
集合时(列表本身)只是查询的投影。此列表与原始上下文无关,只是单个对象的容器。在中可以找到更多信息,尽管我不完全理解,但提供的解决方案确实可以按预期工作。谢谢!
private List<IngramProduct> ingramProducts =
        (from ingramProduct in dbCatalogue.IngramProducts
        select ingramProduct).ToList();
dbCatalogue.IngramProducts.InsertOnSubmit(myNewIngramProduct);