独立应用程序中的“无法确定存储版本;需要有效的存储连接或版本提示”

时间:2019-04-01 08:53:23

标签: entity-framework entity-framework-6

我正在使用一个使用Entity Framework 6的大型ASP.NET应用程序。该应用程序包含大量DLL,其中一些包含.edml文件,相应的实体类以及一些其他业务逻辑用于处理这些实体类(包括从数据库读取和写入数据库)。

此应用程序可以正常运行;那里的Entity Framework没问题。

现在,我正在尝试添加一个命令行工具,该工具可以从上述业务逻辑中调用某些例程。为此,我在命令行应用程序项目中引用了上述DLL。

我已经成功地从控制台应用程序访问数据库,打开连接并运行手写的SQL命令(通过CreateCommand)。不幸的是,到目前为止,使用Entity Framework的任何调用都失败了,总是导致ArgumentException的话:

  

无法确定存储版本;需要有效的存储连接或版本提示。

完整的堆栈跟踪(在留下我们自己的代码之后)是:

  System.Data.Entity.Core.ProviderIncompatibleException: An error occurred accessing the database. This usually means that the connection to the database failed. Check that the connection string is correct and that the appropriate DbContext constructor is being used to specify it or find it in the application's config file. See http://go.microsoft.com/fwlink/?LinkId=386386 for information on DbContext and connections. See the inner exception for details of the failure.
  ---> System.Data.Entity.Core.ProviderIncompatibleException: The provider did not return a ProviderManifestToken string.
  ---> System.ArgumentException: Could not determine storage version; a valid storage connection or a version hint is required.
   bei System.Data.Entity.SqlServer.SqlProviderServices.GetDbProviderManifestToken(DbConnection connection)
   bei System.Data.Entity.Core.Common.DbProviderServices.GetProviderManifestToken(DbConnection connection)
   --- Ende der internen Ausnahmestapelüberwachung ---
   bei System.Data.Entity.Core.Common.DbProviderServices.GetProviderManifestToken(DbConnection connection)
   bei System.Data.Entity.Utilities.DbProviderServicesExtensions.GetProviderManifestTokenChecked(DbProviderServices providerServices, DbConnection connection)
   --- Ende der internen Ausnahmestapelüberwachung ---
   bei System.Data.Entity.Utilities.DbProviderServicesExtensions.GetProviderManifestTokenChecked(DbProviderServices providerServices, DbConnection connection)
   bei System.Data.Entity.Infrastructure.DefaultManifestTokenResolver.<>c__DisplayClass1.<ResolveManifestToken>b__0(Tuple`3 k)
   bei System.Collections.Concurrent.ConcurrentDictionary`2.GetOrAdd(TKey key, Func`2 valueFactory)
   bei System.Data.Entity.Infrastructure.DefaultManifestTokenResolver.ResolveManifestToken(DbConnection connection)
   bei System.Data.Entity.Utilities.DbConnectionExtensions.GetProviderInfo(DbConnection connection, DbProviderManifest& providerManifest)
   bei System.Data.Entity.DbModelBuilder.Build(DbConnection providerConnection)

这是怎么了?从IIS中运行时,如何像在EF中那样完美地连接我的命令行应用程序?如何找出配置之间的区别?

我发现了各种相关的问题和资源,似乎都没有帮助:

0 个答案:

没有答案