我有一个应用程序(Web 表单和控制台),可以首先使用实体框架代码轻松访问多个 SQL Server 数据库,没有任何问题。我可以在上下文之间来回切换,没有错误。现在我尝试添加一个新的 MySql 数据库(不同的提供商),但是如果我从一个上下文切换到另一个上下文,我会收到以下错误消息:
在发现“MySqlEFConfiguration”类型之前,实体框架使用默认的 DbConfiguration 实例。在使用任何实体框架功能之前,必须在应用程序启动时设置“MySqlEFConfiguration”实例,或者必须在应用程序的配置文件中注册。有关详细信息,请参阅 http://go.microsoft.com/fwlink/?LinkId=260883 。
我见过建议将“codeConfigurationType”属性添加到 web.config 中的entityFramework 节点以指定我的 MySql 程序集的解决方案,但这不起作用,因为我的目标是具有多个提供程序的多个数据库。
Microsoft 支持文章似乎暗示要创建我自己的自定义 DbConfiguration 文件,但我已经有了一个:MySql.Data.Entity.mySqlEFConfiguration,并且我已经用它相应地装饰了我的 DbContext:
[DbConfigurationType(typeof(MySqlEFConfiguration))] public class MySqlDBContext : DbContext { public MySqlDBContext() : base("MySqlDBContext") { } } ...
似乎没有任何方法可以使用配置文件配置来执行此操作,因为我仅限于单个条目。那么切换上下文时如何指定提供者呢?我想每个 DbContext 的构造函数中都缺少一些东西来明确说明要使用哪个提供程序?根据记录,我在控制台应用程序和 Web 表单应用程序中收到相同的错误消息。
(8/21/19) 如果我在 SQLServer 数据源上禁用 MultipleActiveResultSets (MARS),似乎可以正常工作,但这不是一个理想的解决方案,因为我已经编写了代码来利用 MARS。
(8/22/19) 实际上这并不能解决问题。它只会继续下一个问题。每个应用程序只能有一个 DbConfiguration,因此解决方案可能涉及编写一个与两个提供商一起使用的 DbConfiguration...我已通过我的 MSDN 订阅提交了支持请求,看看他们是否有任何其他见解...
慕容森
MMMHUHU
青春有我
相关分类