Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 实体框架的间歇性问题_C#_Entity Framework_Sql Server 2008 - Fatal编程技术网

C# 实体框架的间歇性问题

C# 实体框架的间歇性问题,c#,entity-framework,sql-server-2008,C#,Entity Framework,Sql Server 2008,我使用的是实体框架6.1版本 我正在使用实体框架执行批量插入操作。我在DbContext中遇到间歇性错误: 对象引用未设置为db上下文的“对象”实例 这是我的密码: public class ApiTimingDataProvider : IApiTimingDataProvider { private ApiTimingDbContext _apiDbContext; public ApiTimingDataProvider(ApiTimingDbContex

我使用的是实体框架6.1版本

我正在使用实体框架执行批量插入操作。我在
DbContext
中遇到间歇性错误:

对象引用未设置为db上下文的“对象”实例

这是我的密码:

public class ApiTimingDataProvider : IApiTimingDataProvider
{
        private ApiTimingDbContext _apiDbContext;

        public ApiTimingDataProvider(ApiTimingDbContext apiDbContext)
        {
            if (apiDbContext == null)
                throw new ArgumentNullException("ApiDbContext is Null");

            _apiDbContext = apiDbContext;
        }

        public void InsertApiData(List<ApiTimingModel> apiModelList)
        {
            try
            {
                using (var ctx = _apiDbContext)
                {
                    using (var transactionScope = new TransactionScope())
                    {
                        // some stuff in dbcontext
                        ctx.Database.CommandTimeout = 600;
                        ctx.BulkInsert(apiModelList);

                        ctx.SaveChanges();
                        transactionScope.Complete();
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
}
公共类ApiTimingDataProvider:IApiTimingDataProvider
{
私有ApiTimingDbContext_apiDbContext;
公共ApiTimingDataProvider(ApiTimingDbContext apiDbContext)
{
if(apiDbContext==null)
抛出新ArgumentNullException(“ApiDbContext为Null”);
_apiDbContext=apiDbContext;
}
public void InsertApiData(列表apiModelList)
{
尝试
{
使用(var ctx=_apiDbContext)
{
使用(var transactionScope=new transactionScope())
{
//dbcontext中的一些东西
ctx.Database.CommandTimeout=600;
ctx.BulkInsert(apiModelList);
ctx.SaveChanges();
transactionScope.Complete();
}
}
}
捕获(例外情况除外)
{
掷骰子;
}
}
}

有人能告诉我发生异常的原因吗?

您的代码只工作一次,之后外部
使用
处理
\u apiDbContext
。如果使用
使用
每次都需要
新的
,以更新它。但是看起来您正在处理从外部传入的某些dbcontext。因此您应该使用
移动外部
。您的代码只工作一次,之后外部
使用
处理
\u apiDbContext
。如果使用
使用
,则每次都需要
新的
来更新它。但是,看起来您正在处理从外部传入的某些dbcontext。因此,您应该使用
删除外部
>.