C# 在LinqToSql中向数据库插入新实体并关闭跟踪更改
当我尝试向数据库添加新实体时,Datacontext抛出“当前Datacontext实例未启用对象跟踪”异常,如下所示C# 在LinqToSql中向数据库插入新实体并关闭跟踪更改,c#,.net,linq-to-sql,C#,.net,Linq To Sql,当我尝试向数据库添加新实体时,Datacontext抛出“当前Datacontext实例未启用对象跟踪”异常,如下所示 db.Posts.InsertOnSubmit(new entity); 启用跟踪更改对我来说不是一个解决方案,因为当我有许多插入操作时,它太慢了 在这种情况下,什么是解决方案?通常启用和禁用对象跟踪只是连接或忽略更改跟踪事件处理程序。如果您试图插入的项目太多,以至于在尝试连接这些事件时速度太慢,那么您将遇到更大的问题 请记住,LINQtoSQL将为要添加的每个记录发出单独的
db.Posts.InsertOnSubmit(new entity);
启用跟踪更改对我来说不是一个解决方案,因为当我有许多插入操作时,它太慢了
在这种情况下,什么是解决方案?通常启用和禁用对象跟踪只是连接或忽略更改跟踪事件处理程序。如果您试图插入的项目太多,以至于在尝试连接这些事件时速度太慢,那么您将遇到更大的问题
请记住,LINQtoSQL将为要添加的每个记录发出单独的数据库请求。这里的网络瓶颈肯定是一个比仅仅连接变更跟踪事件更大的问题。LINQtoSQL不是批量插入的最佳选择。考虑使用SSIS/WORD副本进行此类操作。
通常启用和禁用对象跟踪只需挂起或忽略更改跟踪事件处理程序。如果您试图插入的项目太多,以至于在尝试连接这些事件时速度太慢,那么您将遇到更大的问题
请记住,LINQtoSQL将为要添加的每个记录发出单独的数据库请求。这里的网络瓶颈肯定是一个比仅仅连接变更跟踪事件更大的问题。LINQtoSQL不是批量插入的最佳选择。考虑使用SSIS /大块拷贝进行这种操作。 < P>你不能有蛋糕也吃它。
取决于数据库结构,可以考虑使用两个DATACONTEX。 一个启用变更跟踪,一个禁用
但是,每个记录仍有一条insert语句。这就是linq-2-sql的运行方式,在l-2-s中没有解决方案。对于批量插入,您必须查看
SqlBulkCopy
类。您不能既有蛋糕又吃蛋糕
取决于数据库结构,可以考虑使用两个DATACONTEX。 一个启用变更跟踪,一个禁用
但是,每个记录仍有一条insert语句。这就是linq-2-sql的运行方式,在l-2-s中没有解决方案。对于批量插入,您必须查看SqlBulkCopy
类