实体框架6和MySQL,模型第一

Joh*_*son 2 c# mysql asp.net entity-framework asp.net-mvc-3

我在使用Entity Framework 6MySQL时遇到了问题,并且在ASP.NET C#MVC 3中使用模型/数据库优先技术.

目前的情况是我收到错误:

Keyword not supported.
Parameter name: metadata
Run Code Online (Sandbox Code Playgroud)

元数据在web.config -file的连接字符串中指定:

<add name="SiteNameContainer" 
  connectionString="metadata=res://*/Models. SiteName.csdl|
    res://*/Models. SiteName.ssdl|
    res://*/Models. SiteName.msl;
    provider=MySql.Data.MySqlClient;
    provider connection string='server=127.0.0.1;
    user id=fire;password=fire_db;
    database=fire_dotnet'" 
  providerName="MySql.Data.MySqlClient" />
Run Code Online (Sandbox Code Playgroud)

我试图删除connectionString中的元数据部分,但后来说它不支持关键字"provider",然后不支持"provider connection string".

我的web.config文件中也有这两个部分:

<entityFramework>
    <providers>
        <provider invariantName="MySql.Data.MySqlClient" 
            type="MySql.Data.MySqlClient.MySqlProviderServices, 
            MySql.Data.Entity.EF6, Version=6.8.3.0, 
            Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
    </providers>
</entityFramework>
<system.data>
<DbProviderFactories>
    <clear />
    <remove invariant="MySql.Data.MySqlClient" />
    <add name="MySql.Data.MySqlClient" 
        invariant="MySql.Data.MySqlClient" 
        description=".Net Framework Data Provider for MySQL" 
        type="MySql.Data.MySqlClient.MySqlClientFactory, 
        MySql.Data, Version=6.8.3.0, Culture=neutral, 
        PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>
</system.data>
Run Code Online (Sandbox Code Playgroud)

我引用了MySQL Net-connector 6.8.3文件(MySql.Data,MySql.Data.Entity.EF6,MySql.Web).

我的要求是我必须使用MySQLEntity Framework 6,.NET连接器的更改日志说6.8.x增加了对MySQL的支持.

我没有想法,希望有人可以帮助我.提前致谢.

小智 5

看起来您可能在连接字符串中使用了错误的providerName,它应该是System.Data.EntityClient.

这是我最终得到的模型优先代码与MySQL一起使用以及我的app.config看起来如何:

<connectionStrings>
  <add name="MyEntities"
       connectionString="metadata=res://*/Data.Entity.Model.csdl|res://*/Data.Entity.Model.ssdl|res://*/Data.Entity.Model.msl;provider=MySql.Data.MySqlClient;provider connection string=&quot;Data Source=localhost;User Id=dbadmin;Password=password;Initial Catalog=database_name;&quot;"
       providerName="System.Data.EntityClient"/>
</connectionStrings>
Run Code Online (Sandbox Code Playgroud)

如果不起作用,这里是entityFramework部分.您会注意到我在下一节中使用的codeConfigurationType属性.它为MySQL添加了依赖项解析器,但还有其他方法可以在MySQL中阅读:EF 6支持文档.

<entityFramework codeConfigurationType="MySql.Data.Entity.MySqlEFConfiguration, MySql.Data.Entity.EF6">
  <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework"/>
  <providers>
    <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6"/>
    <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer"/>
  </providers>
</entityFramework>
Run Code Online (Sandbox Code Playgroud)