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);