Linq to sql DLINQ-插入的实体没有.InsertOnSubmit(…)?

Linq to sql DLINQ-插入的实体没有.InsertOnSubmit(…)?,linq-to-sql,submitchanges,insertonsubmit,dynamic-linq,Linq To Sql,Submitchanges,Insertonsubmit,Dynamic Linq,我在使用DLINQ时遇到了一个有趣的问题。当我实例化一个实体时,在DataContext上调用.SubmitChanges()将在数据库中插入一个新行,而没有调用.insert[All]OnSubmit(…) 运行上述代码将在数据库中插入新行。我在编写解析XML文件和填充一些表的应用程序时注意到了这种效果。我注意到有1000多个插入,而我只期望大约50个,然后我最终隔离了这种行为 如何防止隐式持久化这些对象 谢谢, -查尔斯认为这种关系有两面性。当您设置关系的一侧时,另一侧需要更新,因此在上述情

我在使用DLINQ时遇到了一个有趣的问题。当我实例化一个实体时,在DataContext上调用.SubmitChanges()将在数据库中插入一个新行,而没有调用.insert[All]OnSubmit(…)

运行上述代码将在数据库中插入新行。我在编写解析XML文件和填充一些表的应用程序时注意到了这种效果。我注意到有1000多个插入,而我只期望大约50个,然后我最终隔离了这种行为

如何防止隐式持久化这些对象

谢谢,
-查尔斯

认为这种关系有两面性。当您设置关系的一侧时,另一侧需要更新,因此在上述情况下,在设置ProductOptionCategory的同时,将新对象有效地添加到层压ProductOptionCategory一侧的ProductOptions关系中

解决方法与您已经发现的一样,而是设置基础外键,这样LINQ to SQL将不会以通常的方式跟踪对象,并且需要隐式指示它应该持久化对象


当然,提高性能的最佳解决方案是从源数据中确定您不想添加的对象,并且从不首先创建实例。

更改以下行ProductOptionCategory=\u netServices.ProductOptionCategory.first(poc=>poc.Name==“laminate”)to ProductOptionCategoryID=\u netServices.ProductOptionCategory.First(poc=>poc.Name==“层压”).ID似乎可以更正此问题。有人知道其他的方法吗?谢谢!很抱歉这么长时间没有回复-干杯,说得好。我想设置对象参数,因为我想能够传递对象,但一旦我这样做,它就是插入的候选对象。我想我只需要使用apps hungarian和我的对象(例如,usVariable表示未保存),然后使用外键。
//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();