昨天我做了一个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="data source=.;initial catalog=MsSqlDb;User ID=appuser;Password=...""
providerName="System.Data.EntityClient" />
</connectionStrings> …Run Code Online (Sandbox Code Playgroud)