Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# VS2017中的MySQL和MVC实体框架不工作_C#_Mysql_Asp.net Mvc_Visual Studio_Entity Framework - Fatal编程技术网

C# VS2017中的MySQL和MVC实体框架不工作

C# VS2017中的MySQL和MVC实体框架不工作,c#,mysql,asp.net-mvc,visual-studio,entity-framework,C#,Mysql,Asp.net Mvc,Visual Studio,Entity Framework,我正在尝试启动一个MVC EF Visual Studio 2017项目。我在本地实例上使用MySQL设置了所有数据连接,但是当我创建ADO.net数据模型时,我看到了图片中的错误: 这里还有一篇文章:涵盖了2012年和2013年,但不包括2017年。以下是MySQL文档,其中说明了哪些版本适用于2017: 我正在使用: MySQL Connector Net 6.9.9 | MySQL for Visual Studio 1.2.7 | MySQL Server 5.7 MySQL.Data

我正在尝试启动一个MVC EF Visual Studio 2017项目。我在本地实例上使用MySQL设置了所有数据连接,但是当我创建ADO.net数据模型时,我看到了图片中的错误:

这里还有一篇文章:涵盖了2012年和2013年,但不包括2017年。以下是MySQL文档,其中说明了哪些版本适用于2017:

我正在使用:

MySQL Connector Net 6.9.9 | MySQL for Visual Studio 1.2.7 | MySQL Server 5.7

MySQL.Data 6.9.9 | MySQL.Data.Entity 6.9.9 | Entity Framework 6.1.3

所有这些都被MySQL列为已测试和正在工作。我今天刚刚安装了所有新的东西,所以没有优秀的旧版本。我检查了三遍;)

连接字符串:


这是关于设置连接的,但是现在不是这个错误,而是当我点击“下一步”时对话框就消失了


这只是我做错了什么,还是MySQL连接器坏了


提前感谢您的建议

因此,我最终创建了一个新项目,并对MySQL.Data 6.9.9 | MySQL.Data.Entity 6.9.9 | Entity Framework 6.1.3进行了全新安装,然后再次尝试创建数据模型

它几乎成功了!我收到一个错误,提示:
'System.Data.StrongTypingException:表“TableDetails”中“IsPrimaryKey”列的值为DBNull。-->System.InvalidCastException:指定的强制转换无效。
但是很多人已经通过进入MySQL命令行并执行:
set-global optimizer\u-switch='derived\u-merge=off'解决了这个问题。
您可以在这里找到这个错误:

不管出于什么原因,这是可行的。以下是我的命令行对as的输出,以帮助MySQL的任何新手:


这一切都解决了!希望有人发现这一点不会像我那样浪费时间。

我要做的是重新安装,然后完全删除并安装。看来顺序很重要。之后,我完全删除了这些软件包,并按如下顺序重新安装:

(之后重新启动Visual Studio)

然后,确保web.config文件中包含以下内容:

(编辑后重新启动以确保)


@James Wilkins感谢您的详细回答,我必须补充一点,当您添加Mysql.data或Mysql.data.entity时,程序集版本与MySqlConnector/Net安装的程序集不匹配,因为我们经常从Nuget下载最新版本,这会再次导致此问题,因此我所做的并修复了此问题,我复制了dll(Mysql.data、Mysql.data.entity和web)来自

转到我的应用程序bin/debug文件夹,并引用它们,而不是从Nugets下载。这修复了我的问题。您可能还需要更新app.config或web.config和packages.config文件中的程序集版本

<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.10.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"> 


并更新packages.config中条目的版本

  <package id="MySql.Data" version="6.9.9" targetFramework="net452" />
  <package id="MySql.Data.Entity" version="6.9.9" targetFramework="net452" />
  <package id="MySql.Web" version="6.9.9" targetFramework="net452" />

通过在Visual Studio 2017上使用这些精确的组件,确认我在.net 4.7.1 asp.net-mvc5 wev解决方案上的所有功能都正常工作,包括VS2017中的db first gui工具链实体框架(在撰写本文时,VS2017=>ver15.5.7 aka完全更新了VS2017):

我尝试使用最新的MySql连接器(版本6.10.x),但结果是VS2017的gui工具对于db-first方法根本不起作用。我想MySql连接器必须与其他DLL版本保持一致

Web.config看起来是这样的:

<configuration>
  <configSections>
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
    [...]
  </configSections>

  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="Data Source=.; Integrated Security=True; MultipleActiveResultSets=True;" />
      </parameters>
    </defaultConnectionFactory>
    [...]
    <providers>
      <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6" />
      [...]
    </providers>
    [...]
  </entityFramework>
  [...]
  <system.data>
    <DbProviderFactories>
      <remove invariant="MySql.Data.MySqlClient" />
      <add description=".Net Framework Data Provider for MySQL" invariant="MySql.Data.MySqlClient" name="MySQL Data Provider" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data" />
    </DbProviderFactories>
  </system.data>
  [...]
</configuration>
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework" requirePermission="false" />
    [...]
  </configSections>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
    <providers>
      <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6" />
      [...]
    </providers>
  </entityFramework>
  [...]
  <system.data>
    <DbProviderFactories>
      <remove invariant="MySql.Data.MySqlClient" />
      <add description=".Net Framework Data Provider for MySQL" invariant="MySql.Data.MySqlClient" name="MySQL Data Provider" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data" />
    </DbProviderFactories>
  </system.data>
  [...]
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.1" />
  </startup>
</configuration>

[...]
[...]
[...]
[...]
[...]
[...]
托管.edmx文件的子项目App.config如下所示:

<configuration>
  <configSections>
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
    [...]
  </configSections>

  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="Data Source=.; Integrated Security=True; MultipleActiveResultSets=True;" />
      </parameters>
    </defaultConnectionFactory>
    [...]
    <providers>
      <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6" />
      [...]
    </providers>
    [...]
  </entityFramework>
  [...]
  <system.data>
    <DbProviderFactories>
      <remove invariant="MySql.Data.MySqlClient" />
      <add description=".Net Framework Data Provider for MySQL" invariant="MySql.Data.MySqlClient" name="MySQL Data Provider" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data" />
    </DbProviderFactories>
  </system.data>
  [...]
</configuration>
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework" requirePermission="false" />
    [...]
  </configSections>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
    <providers>
      <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6" />
      [...]
    </providers>
  </entityFramework>
  [...]
  <system.data>
    <DbProviderFactories>
      <remove invariant="MySql.Data.MySqlClient" />
      <add description=".Net Framework Data Provider for MySQL" invariant="MySql.Data.MySqlClient" name="MySQL Data Provider" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data" />
    </DbProviderFactories>
  </system.data>
  [...]
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.1" />
  </startup>
</configuration>

[...]
[...]
[...]
[...]
以及packages.config:

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="EntityFramework" version="6.2.0" targetFramework="net471" allowedVersions="[6.2.0]" />
  <package id="LinqKit" version="1.1.13" targetFramework="net471" allowedVersions="[1.1.13]" />
  <package id="MySql.Data" version="6.9.11" targetFramework="net471" allowedVersions="[6.9.11]" />
  <package id="MySql.Data.Entity" version="6.9.11" targetFramework="net471" allowedVersions="[6.9.11]" />
  <package id="MySql.Web" version="6.9.11" targetFramework="net471" allowedVersions="[6.9.11]" />
</packages>


注意:packages.config已通过[allowedVersions]进行了有意调整禁止无意中将MySql包自动升级到其最新版本。这是由于困扰6.10.x版本MySql nugets的dodge问题造成的。

您需要更新entity framework版本,因为它说您的项目更为最新entity@Ancient我正在运行今天更新的EF 6.1.3。请将您添加到连接系在绳子上question@derloopkat还有什么可以添加的吗?您好,您是如何将MySQL安装到Visual Studio的?我正在使用Visual Studio 2017 Enterprise 15.4.2和MySQL进行Visual Studio安装(使用MySQL安装程序或独立安装程序)失败。我尝试了此解决方法==>bugs.mysql.com/bug.php?id=85908&Thank=3¬ify=195,但mysql for VS的安装仍在以90%的速度回滚。请帮助,我从数据库更新模型已经三天了:/n当我单击“从数据库更新模型”时,没有显示mysql数据库选项在新的连接窗口上。请提供一些帮助?我按照您提到的每个步骤进行了操作,现在我有一个使用MySql EF的C#项目…谢谢!我正在使用Visual Studio 2017 Enterprise 15.4.2和MySql进行Visual Studio安装(使用MySql安装程序或独立安装程序)即使是开发版本也会失败。我尝试了这个变通方法==>bugs.mysql.com/bug.php?id=85908&Thank=3¬ify=195,但安装仍在以90%的速度回滚。请帮助,我从数据库更新模型已经3天了:/当我单击“从数据库更新模型”时,没有显示mysql数据库选项在新的连接窗口上。最好是从头开始,卸载除数据库之外的所有与MySQL相关的内容,然后按照正确的顺序执行步骤。如果不按照正确的顺序执行,则无法正常工作。至于你的安装程序失败,可能是任何原因,因此我无法帮助你。我确实遇到了一个s
Entity Framework ver6.2.0 [nuget]
MySql.Data ver6.9.11 [nuget]
MySql.Data.Entity ver6.9.11 [nuget]
MySql.Web ver6.9.11 [nuget]
MySQL for Visual Studio ver2.0.5 [system-wide msi installer]
MySql-Connector ver6.9.11 [system-wide msi installer]
<configuration>
  <configSections>
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
    [...]
  </configSections>

  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="Data Source=.; Integrated Security=True; MultipleActiveResultSets=True;" />
      </parameters>
    </defaultConnectionFactory>
    [...]
    <providers>
      <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6" />
      [...]
    </providers>
    [...]
  </entityFramework>
  [...]
  <system.data>
    <DbProviderFactories>
      <remove invariant="MySql.Data.MySqlClient" />
      <add description=".Net Framework Data Provider for MySQL" invariant="MySql.Data.MySqlClient" name="MySQL Data Provider" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data" />
    </DbProviderFactories>
  </system.data>
  [...]
</configuration>
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework" requirePermission="false" />
    [...]
  </configSections>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
    <providers>
      <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6" />
      [...]
    </providers>
  </entityFramework>
  [...]
  <system.data>
    <DbProviderFactories>
      <remove invariant="MySql.Data.MySqlClient" />
      <add description=".Net Framework Data Provider for MySQL" invariant="MySql.Data.MySqlClient" name="MySQL Data Provider" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data" />
    </DbProviderFactories>
  </system.data>
  [...]
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.1" />
  </startup>
</configuration>
<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="EntityFramework" version="6.2.0" targetFramework="net471" allowedVersions="[6.2.0]" />
  <package id="LinqKit" version="1.1.13" targetFramework="net471" allowedVersions="[1.1.13]" />
  <package id="MySql.Data" version="6.9.11" targetFramework="net471" allowedVersions="[6.9.11]" />
  <package id="MySql.Data.Entity" version="6.9.11" targetFramework="net471" allowedVersions="[6.9.11]" />
  <package id="MySql.Web" version="6.9.11" targetFramework="net471" allowedVersions="[6.9.11]" />
</packages>