我在使用 LINQ 时遇到了一个有趣的问题。当我实例化一个实体时,在 DataContext 上调用 .SubmitChanges() 将在数据库中插入一个新行 - 而无需调用 .Insert[All]OnSubmit(...)。
//Code sample:
Data.NetServices _netServices = new Data.NetServices(_connString);
Data.ProductOption[] test = new Data.ProductOption[]
{
new Data.ProductOption
{
Name="TEST1",
//Notice the assignment here
ProductOptionCategory=_netServices.ProductOptionCategory.First(poc => poc.Name == "laminate")
}
};
_netServices.SubmitChanges();
运行上面的代码将在数据库中插入一个新行。我在编写应用程序来解析 XML 文件并填充一些表时注意到了这种效果。当我只期望大约 50 个左右时,我注意到有 1000 多个插入 - 然后我终于隔离了这种行为。
如何防止这些对象被隐式持久化?
谢谢,-查尔斯