2011-11-20 25 views
0

我有一个库,我已经创建了依赖于EF Codefirst的数据库交互。我也使用EntityMigrations Alpha 3.当我在我的主应用程序(WPF)中使用库时,一切正常,并按预期工作。系统的另一部分使用Excel,并通过其间的附加COM类使用相同的库检索信息。EFCodeFirst 4.2和提供者清单标记

在Excel方案中,只要它试图连接到数据库,它就会抛出一个异常来处理“Provider没有返回ProviderManifestToken”。

我真的不知道为什么我只有在通过Excel/COM时才会出现错误。在这两种情况下,我都可以确认使用了相同的数据库连接字符串。检索DB连接字符串的方法也是相同的 - 它们使用共享配置文件& loader类。

欢迎任何建议。

+0

Excel如何与您的EF代码相关? –

+0

通过VBA。我实例化COM的一个实例(用C#开发)。为了获得它需要的信息,它需要与数据库交谈。除了中间的COM类外,它与WPF应用中使用的代码完全相同。我开始怀疑它是否可能是某种CAS问题。 Excel和WPF应用程序在同一个框中执行 –

回答

0

问题已解决。

我还创建了一个自定义的DBIntializer,并在EntityMigrations上调用一部分初始化以确保数据库是最新的。自定义迁移将在您的上下文中调用默认构造函数。按照惯例,这将动态地使用它自己的SQLExpress连接字符串(我没有安装)或尝试在你的配置文件中寻找一个条目(我没有这个dll - 配置来自托管应用程序) 。

这是从Excel中使用时导致失败的原因(在我的方案中)。迁移将使用默认构造函数创建上下文的实例。这意味着连接字符串的配置条目是必需的,或者它使用默认进程(SQLExpress)。在COM env中从Excel中使用时 - 不存在配置文件。

将迁移移出初始化策略意味着我不再有问题。