1

我是 asp.net 的新手,我现在面临一个问题。

我使用asp.net mvc4创建了一个项目,并添加了实体数据模型并成功连接到MySQL。但是当我尝试创建控制器时,我收到如下错误消息:

“无法检索“client_test.client”的元数据,无法找到请求的 .NET Framework 数据提供程序。它可能未安装。”

从“脚手架选项”中,我选择了模板:

“使用实体框架的具有读/写操作和视图的 MVC 控制器”

从 machine.config 文件中,我可以看到 MySQL 数据提供程序在那里。

<DbProviderFactories>
  <add name="Microsoft SQL Server Compact Data Provider 4.0" invariant="System.Data.SqlServerCe.4.0" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
  <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.6.5.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>

web.config中的connectionString是这样的:

<connectionStrings>
<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=aspnet-client_test-20130916144039;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnet-client_test-20130916144039.mdf" providerName="System.Data.SqlClient" />
<add name="Client_infoEntities" connectionString="metadata=res://*/clientDatabase.csdl|res://*/clientDatabase.ssdl|res://*/clientDatabase.msl;provider=MySql.Data.MySqlClient;provider connection string=&quot;server=127.0.0.1;user id=root;password=itplustest;persist security info=True;database=Client_info&quot;" providerName="System.Data.EntityClient" />
</connectionStrings>

我还把下面的代码添加到了网络上。配置:

<system.data>
<DbProviderFactories>
  <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.6.5.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>
</system.data>

我的连接器/网络版本是 6.7.4.0,我有用于 Visual Studio 1.0.2 的 MySQL,我希望你们能帮助我解决我的问题。

谢谢JY

4

2 回答 2

1

我一直在用 Visual Studio 中的 CodeFirst 来“玩”这个 MySql 的东西(实际上,说“战斗”可能更合适)。事实上它确实有效,但由于在谷歌搜索中发现的不同读数不同,我仍然无法让代码首先创建它的表。

无论如何,我发现您必须非常小心您使用的实体框架版本与哪个版本的 MySql 连接器相关。

我制作了一个非常简单的控制台应用程序,在我手动创建表后运行良好。

我正在使用 EntityFramework 5.0(当前版本)和 6.7.4(beta)版本的连接器(Nuget Console PM> Install-Package MySql.Data.Entity -Pre),因为此版本适用于 EF 5,而当前版本的该连接器适用于 EF 4.2。

这是我的应用程序配置。请注意,此配置文件中的任何位置都没有(如 NO)引用实体框架。

<?xml version="1.0" encoding="utf-8"?>
<configuration>  
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>
  <system.data>
    <DbProviderFactories>
      <remove invariant="MySql.Data.MySqlClient" />
      <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description="Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data" />
    </DbProviderFactories>
  </system.data>
  <connectionStrings>
    <add name="MyContext" connectionString="server=localhost;User Id=bernard;Password=some pwd; Persist Security Info=True;database=test" providerName="MySql.Data.MySqlClient" />
  </connectionStrings>
</configuration>

希望这个对你有帮助。我将继续查看 Code First 是否真的适用于 MySql,就像 MS SQL 表和列一样,如果它们不存在,则首先由代码直接创建。

几个小时后编辑* *我终于能够让代码首先创建表和列,是的!:-)

我明确地调用了我认为不需要的 Database.SetInitializer。无论如何,MySql 的“REAL” Code First 现在工作得很好。

我写了一篇关于这个的博客文章,你可以从这篇文章下载项目:http ://www.bgsoftfactory.net/entity-framework-with-code-first-and-mysql-5-6-14-current-版本/

于 2013-09-21T09:40:34.510 回答
0

您是否能够从 Visual Studio/Server 资源管理器创建数据连接?我还看到您的默认连接点指向 LocalDB (MSSQL),这可能是您想要的,但我会尽可能简单地开始。

看看那里,它可能会帮助你:http ://blog.jongallant.com/2013/04/mysql-aspnet-mvc-entity-framework.html#.UjmwVMbKEqI

问候,伯纳德

于 2013-09-18T14:00:38.157 回答