【问题标题】:Reverse poco c# bulk insert Entity Framework "object reference not set to an instance of an object"反向poco c#批量插入实体框架“对象引用未设置为对象的实例”
【发布时间】:2019-02-26 16:57:51
【问题描述】:

奇怪的情况:我使用下面的代码遇到了一个 bulkinsert 失败。奇怪的是,如果我将 DbContext 名称设置为特定名称,它会起作用,但如果我更改它会失败。

没有什么不同,如果我编辑反向 poco tt 文件,并将 DbContext 名称更改为特定名称并保存(重新创建实体框架文件),它就可以工作。如果我做同样的事情但以任何方式改变它,当代码到达bulkinsert() 行时它会失败。

这对我来说完全没有意义。我无法将其设置为有效的,因为该有效的已在同一个项目中使用(我在一个新项目中对此进行了测试,只是想找出问题所在。)

using (var transactionScope = new TransactionScope())
{
    db.BulkInsert(recordsToInsert);
    db.SaveChanges();
    transactionScope.Complete();
}

有什么想法吗?我知道这与表格或字段无关,因为它适用于一个 dbcontextname 而不是其他任何一个。

编辑:另外,异常堆栈跟踪显示它在这里失败了:

at EntityFramework.BulkInsert.ProviderFactory.Get(DbContext context)

【问题讨论】:

  • 你能检查你的 dbcontext 名称是否存在于你的配置文件中吗?
  • dbcontext 名称确实存在。在相同的方法中,我只在没有bulkinsert 的情况下写入相同的dbcontext。我正在完全插入另一个表。
  • 从 dbcontext 派生的类的名称按照惯例与连接字符串的名称相同
  • 不确定你是否使用了反向 poco 扩展,但这些东西是在 tt 文件中设置的。此外,正在使用的连接字符串名称也与 dbcontext 不同。但这是一个有趣的想法。
  • 天哪!法哈尔你是对的。它适用于另一个实例的原因是因为我在应用程序配置中有另一个使用该名称的连接字符串名称。当我在应用程序中尝试使 dbcontext 名称与连接字符串名称相同时,它起作用了!谢谢大佬!

标签: c# entity-framework bulkinsert


【解决方案1】:

Fakhar Ahmad Rasul 在 cmets 中发布了解决方案。事实证明,dbcontext 名称必须与连接字符串名称相同。谢谢法哈尔!我希望我可以奖励你积分或其他东西。

【讨论】:

    猜你喜欢
    • 2018-04-02
    • 1970-01-01
    • 2011-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多