微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ASP.NET MVC 4和Entity Framework 5.0中的MySQL连接 – 多个DbProviderFactories

我有一个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 StudioMysqL连接器.由于这个过程是一个发现,遗憾的是我不记得我的项目如何引用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版:

希望这可以帮助.

解决方法

我写了一个 blog post on this subject,我的项目可以在本文的底部下载.

我必须安装(如我的文章中所述)MysqLDataEntity -Pre,它安装测试版6.7.2 beta,以获得与EF 5的良好兼容性,但我看到现在当前版本注意到6.7.4,所以我更新了相应的我的项目,它也一样,所以我也更新了项目,从我的博客下载.

希望这可以帮助您从EF和MysqL开始.

顺便说一句,如果不清楚,你必须从NuGet,MysqL.Data.Entities安装,它也将安装MysqL.Data,因为实体依赖它.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐