如何使用MySql和Entity Framework 4.1的Code First

6

我正在尝试在MVCMusicStore中使用MySQL数据库
http://mvcmusicstore.codeplex.com/ 而不是MSSQL。
我想学习使用MySQL的Code First开发方法。
我已经将以下代码添加到web.config文件中

<connectionStrings>
  <add name="MusicStoreEntities"
       connectionString="Server=localhost; Database=MvcMusicStore; Uid=root; Pwd=;"
       providerName="MySql.Data.MySqlClient"/>
</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.3.6.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
  </DbProviderFactories>   
</system.data>

已经创建了MySQL数据库,但尚未创建表格。我刚刚将Mysql.Data.MySQLClient.dll引用添加到我的项目中。但是出现了以下异常:

创建系统数据配置节处理程序时出错:
列"InvariantName"受到唯一约束的限制。
值"MySql.Data.MySqlClient"已经存在。
(C:\Users\Dauren\Downloads\MvcMusicStore-v3.0\MvcMusicStore-v3.0\MvcMusicStore-Completed\MvcMusicStore\web.config第47行)


1
感谢您的问题和答案。 关于该主题的另一个问题:https://dev59.com/4Gs05IYBdhLWcg3wQvke - ses011
1个回答

13

尝试使用这段代码:

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

现在我遇到了这种错误:无法检查模型兼容性,因为数据库中不包含模型元数据。请确保已将IncludeMetadataConvention添加到DbModelBuilder约定中。 - Dauren
1
@Dauren,你应该添加(或者简单地不要删除)IncludeMetadataConvention,或者使用其他数据库初始化策略(而不是DropCreateDatabaseIfModelChanges)。 - Devart
谢谢,以上方法对我有用。只是想提醒一下,我使用的是不同版本的MySql.Data程序集,所以只需将Version 6.3.6.0更改为Version=6.4.4.0即可。 - Himalaya Garg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接