1. 引用MySql.Data.Entity相关的package
  • 最好通过NuGet添加。NuGet会将所有相关或依赖的包都引用到项目中,并且会直接配置web.config
  1. 设置DbContext的数据库配置类型(EFConfiguration)
    • 有两种方法:
      • 在代码中使用特性

          [DbConfigurationType(typeof(MySqlEFConfiguration))]
            public class LoverCMDDbContext : DbContext
            {
                public LoverCMDDbContext() : base("LoverCMDDbContext")
                {
        
                }
            }
        
      • 在web.config中配置

        <entityFramework codeConfigurationType="MySql.Data.Entity.MySqlEFConfiguration, MySql.Data.Entity.EF6">
         <contexts>
           <context type="LoverCMR.DAL.LoverCMDDbContext,LoverCMR">
             <databaseInitializer type="LoverCMR.DAL.LoverCMDInitializer,LoverCMR"></databaseInitializer>
           </context>
         </contexts>
         <defaultConnectionFactory type="MySql.Data.Entity.MySqlConnectionFactory, MySql.Data.Entity.EF6" />
         <!--<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />-->
         <providers>
           <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
           <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.9.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"></provider>
         </providers>
        </entityFramework>
        
  2. 设置数据库连接字符串
    <connectionStrings>
        <add name="LoverCMDDbContext" connectionString="Data Source=localhost;Port=3306;Initial Catalog=LoverCMD;User id=root;Password=123456;" providerName="MySql.Data.MySqlClient"/>
      </connectionStrings>
    

ps

  1. 什么时候开始创建数据库的?
  • 答: 第一次查询数据库时,生成数据库。注意,创建DbContext实例,并不会生成数据库。
  1. 如何配置实例类型和mysql数据库字段类型的映射?
  • 答:建议使用Fluent API方式。Data Annotation方式不符合解耦合的设计理念。
  1. 如果使用Data Annotation方式,特别需注意,默认情况下,实体类型string默认映射为数据库longtext类型。可以指定MaxLength特性,来规避这个问题。