使用 MVC 4/实体框架时无法创建控制器 asp.net

本文关键字:创建 控制器 asp net MVC 实体 框架 使用 | 更新日期: 2023-09-27 18:31:47

我是 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,我有MySQL for Visual Studio 1.0.2,我希望你们能帮助我解决我的问题。

谢谢JY

使用 MVC 4/实体框架时无法创建控制器 asp.net

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

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

我制作了一个非常简单的控制台应用程序,在我手动创建表后它工作正常。

我正在使用 EntityFramework 5.0(当前版本)和连接器的 6.7.4(测试版)版本(Nuget 控制台 PM>安装包 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"代码优先现在工作得很好。

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

您是否能够从Visual Studio/Server Explorer创建数据连接?我还看到您的默认连接指向 LocalDB (MSSQL),这可能是您想要的,但我会让它尽可能简单地启动。

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

问候伯纳德

我最近遇到了同样的问题,我的错误是"运行选定的代码生成器:Unavble 为(我的应用程序)检索元数据时出错"。我只是复制并粘贴了一个工作控制器并更改了它的内部。