我有一个ASP.NET应用程序,我想上传到提供
MySQL数据库的主机.我正在使用Visual Studio 2012,.NET 4.5,Entity Framework 5.0,我已经为Visual Studio 1.0.2安装了MysqL.我一直在尝试连接到本地MysqL服务器,但我遇到了一些问题.
起初我在我的项目中引用了版本6.6.5.0的MySql.Data和MySql.Data.Entity.但是当我尝试在包管理器控制台中执行Update-Database时,我收到以下错误:
System.DateTime System.Data.Entity.Migrations.Model.InsertHistoryOperation.get_CreatedOn()
这个seems是Entity Framework 5.0和早期版本的Connector / .Net的问题 – Visual Studio的MysqL连接器.由于这个过程是一个发现,遗憾的是我不记得我的项目如何引用MysqL.Data和MysqL.Data.Entity版本6.6.5.0.
我删除了引用,然后使用NuGet下载并引用版本6.7.4.0中的相同程序集.这解决了我之前收到的错误,但现在Update-Database给出了以下错误:
Could not load file or assembly 'MysqL.Data,Version=6.6.5.0,Culture=neutral,PublicKeyToken=c5687fc88969c44d' or one of its dependencies. The located assembly's manifest deFinition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
我通过在我的Web.Config文件中包含一个特定的DbProviderFactory解决了这个问题:
<system.data> <DbProviderFactories> <remove invariant="MysqL.Data.MysqLClient" /> <add name="MysqL Data Provider" invariant="MysqL.Data.MysqLClient" description=".Net Framework Data Provider for MysqL" type="MysqL.Data.MysqLClient.MysqLClientFactory,MysqL.Data,Version=6.7.4.0,PublicKeyToken=c5687fc88969c44d" /> </DbProviderFactories> </system.data>
Column 'InvariantName' is constrained to be unique. Value 'MysqL.Data.MysqLClient' is already present.
我认为这意味着我的项目仍然有一个DbProviderFactory服务于MysqL库的6.6.5.0版本.但是当我搜索我的项目的文本文件时,我无法在任何地方找到字符串6.6.5.0.
目前这个解决方案让我连接到我的本地MysqL服务器,但当我将项目发布到我的托管服务提供商并在我的浏览器中访问网站时,我只是收到一条错误消息.我想知道如何删除隐含的6.6.5.0服务DbProviderFactory,这是我学习的一部分,因为我认为我的解决方法可能是我的网站无法在我的托管服务提供商处工作的原因.
作为寻找解决方案的线索,我发现可疑的是,当我尝试添加引用时,我只能看到(6.6.5.0的几个版本):
但是当我去NuGet经理时,我只安装了6.7.4.0版:
希望这可以帮助.