小编Art*_*nin的帖子

相同的应用程序,不同的数据库:实体框架6.X + MySQL + SQL Server

昨天我做了一个Web应用程序的迁移(EF 5.0 => EF 6.0),它使用实体框架来访问MySql和SQL Server数据库(特别DbContext是特定数据库,而不是DbContext任何类型的数据库).

编译时间没有任何问题,运行时遇到异常:

在发现"MySqlEFConfiguration"类型之前,实体框架使用了默认的DbConfiguration实例.

[DbConfigurationType(typeof(MySqlEFConfiguration))]上下文中的属性似乎在运行时被忽略,因为上下文位于外部程序集(?)中,而DbConfigurationused对应用程序域是全局的,而不是上下文(?)的特定内容.

我尝试了不同的方法来解决它,然后谷歌搜索它 - 惊喜 - 找不到有效的解决方案.

貌似情况描述在这里形成良好http://forums.mysql.com/read.php?174,614148,614148仍未改变,或者我错过了一些明显的事情.

任何反馈将不胜感激.

先感谢您!

详细说明:

输入(简化): - ASP.NET Web应用程序

  • 通过Entity Framework 6.1.1实现的数据访问层

  • 实体框架提供者:

    • System.Data.SqlClient 6.1.1

    • MySql.Data.MySqlClient 6.9.4

  • MY_SqlContext,模型第一个概念,针对MY SQL Server数据库

  • Ms_SqlContext,数据库第一个概念,针对MS SQL Server数据库

根据Entity Framework 6和MySql Connector/Net文档(http://dev.mysql.com/doc/connector-net/en/connector-net-entityframework60.html)的通用文档,MY_SqlContext需要应用MySqlEFConfiguration.

根据上面提到的两个文件,有三种选择可以做到这一点.这三个人都经过了尝试而失败了

选项1:将DbConfigurationTypeAttribute添加[DbConfigurationType(typeof(MySqlEFConfiguration))]到MY_SqlContext类

适当的Web.config段:

<connectionStrings>
    <add name="MY_SqlContext"
         connectionString="server=.;User Id=root;password=...;Persist Security Info=True;database=MySqlDb;Use Compression=False;Use Old Syntax=False"
         providerName="MySql.Data.MySqlClient" />
    <add name="Ms_SqlContext"
         connectionString="metadata=res://*/Ms_SqlContext.csdl|res://*/Ms_SqlContext.ssdl|res://*/Ms_SqlContext.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=.;initial catalog=MsSqlDb;User ID=appuser;Password=...&quot;"
         providerName="System.Data.EntityClient" />
</connectionStrings> …
Run Code Online (Sandbox Code Playgroud)

mysql sql-server entity-framework-6

11
推荐指数
2
解决办法
1万
查看次数

标签 统计

entity-framework-6 ×1

mysql ×1

sql-server ×1