EF代码首先在Azure Linux VM上托管的MySQL数据库

时间:2015-01-12 21:41:08

标签: mysql azure ef-code-first centos

我在CentOS 7上托管的MySQL服务器作为Azure中的VM运行。我在这个VM上打开了端口3306,我可以连接到这个MySQL服务器来创建一个数据库& MySQL工作台中的表

现在我正在尝试使用EF6& amp;创建一个代码优先的数据库。这个MySQL服务器上的C#使用nuget上的MySQL.Data.Entity包。我得到的MySQL.Data dll的版本是6.9.5.0。当我尝试运行add-migration命令时,我收到以下错误。

System.Runtime.Serialization.SerializationException: Type is not resolved for member     'MySql.Data.MySqlClient.MySqlException,MySql.Data, Version=6.9.5.0, Culture=neutral,    PublicKeyToken=c5687fc88969c44d'.
at System.AppDomain.DoCallBack(CrossAppDomainDelegate callBackDelegate)
at System.Data.Entity.Migrations.Design.ToolingFacade.Run(BaseRunner runner)
at System.Data.Entity.Migrations.Design.ToolingFacade.Scaffold(String migrationName, String   language, String rootNamespace, Boolean ignoreChanges)
at System.Data.Entity.Migrations.AddMigrationCommand.Execute(String name, Boolean force, Boolean  ignoreChanges)
at System.Data.Entity.Migrations.AddMigrationCommand.<>c__DisplayClass2.<.ctor>b__0()
at System.Data.Entity.Migrations.MigrationsDomainCommand.Execute(Action command)
Type is not resolved for member 'MySql.Data.MySqlClient.MySqlException,MySql.Data,     Version=6.9.5.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d'.

但是,当我尝试连接到我的共享Web托管服务提供商上的MySQL服务器时,这可以正常工作,我被告知在Windows服务器上运行。

这是一个已知问题,我们无法使用EF连接到Linux上托管的MySQL数据库。我会很感激任何指针

更新1

我错过了MySQL连接器不是.NET框架的一部分&amp;因此没有像下面这篇文章中提到的那样安装在GAC中

http://forums.mysql.com/read.php?38,593463,599082#msg-599082

显然,包管理器会查看GAC的已知类型和&amp;它似乎无法找到MySql.Data。当MySQL.Data.dll被添加到GAC(\ Windows \ Microsoft.NET \ Framework \ v4.0.30319)但在update-database上重新出现时,执行添加迁移时错误消失了。

更新2

尝试使用带有MySqlCommand的c#代码创建数据库,它似乎在同一个项目中完美运行。因此,似乎它不使用代码首先从包管理器&amp;这个问题似乎与Azure上的MySQL无关。

2 个答案:

答案 0 :(得分:1)

我错过了明显的,这是一个小学生的错误。我没有属性

[DbConfigurationType(typeof(MySqlEFConfiguration))]

在我的DbContext类上。奇怪的是,包括详细标志并没有提供任何关于错误的提示

答案 1 :(得分:-1)

我有类似的错误。我安装了MySQL连接器并且工作正常。

"type switch"

相关问题