code first 连接mysql_EF Code First 连接MySql

看了很多文章,尝试了很多次总是进行不下去,整理一下,以便日后查看。

1、创建ASP.NET MVC项目(EFCodeFirst)

1.1、右键点击引用选择管理NuGet程序包下载MySql.Data.Entity.dll(有依懒项,会自动下载MySql.Data.dl 和 EntityFramework.dll)

1.2、修改Web.config文件(如下图)

b3c8f0600397626945a342fbd6510f19.png

c56e0dd6b0910bec71218e5379db5690.png

2、创建类库(EFCodeFirst.DataAccess)

2.1、右键添加-->新建项-->选择数据-->选择ADO.NET实体数据模型-->空Code First模型(也可以不用这一步,但DatabaseAccess.cs文件需要自己创建)

2.1、右键点击引用选择管理NuGet程序包下载MySql.Data.Entity.dll(有依懒项,会自动下载MySql.Data.dl 如下图)

fdf959df88ccab6b355f17ac1669a228.png

2.2、修改文件 DatabaseAccess.cs

修改之前:

2833e46f88ca7adaaeb6a56e0e2a5505.png

修改之后:

2fa373b3906184786c9765d3e28fcfa5.png

代码如下:

namespaceEFCodeFirst.DataAccess

{usingIdentityAuth.Common;usingIdentityAuth.Model.Sys;usingMySql.Data.MySqlClient;usingSystem;usingSystem.Data.Common;usingSystem.Data.Entity;usingSystem.Linq;public classDatabaseAccess : DbContext

{#region 构造函数和初始化

private static string connectionStr { get; set; }private staticDbConnection GetConnection()

{

if(String.IsNullOrEmpty(connectionStr))

connectionStr= ConfigHelper.GetConnectionStr("EFCodeFirst");

if(String.IsNullOrEmpty(connectionStr))throw new Exception("数据库连接字符串为空,请在Config文件里配置");

DbConnection dbConnection= new MySqlConnection() { ConnectionString =connectionStr };returndbConnection;

}public DatabaseAccess() : base(DatabaseAccess.GetConnection(), true)

{

Database.SetInitializer(null);

}#endregion

#region 系统表

///

///系统用户信息///

public DbSet UserEntities { get; set; }///

///角色信息///

public DbSet RoleEntities { get; set; }///

///系统菜单信息///

public DbSet MenuEntities { get; set; }///

///角色权限信息///

public DbSet RoleAuthEntities { get; set; }///

///角色用户信息///

public DbSet RoleUserEntities { get; set; }#endregion}

}

2.3、修改App.config文件(如下图)

1ca1f75486ec9f2cea73a8619e24839c.png

App.config文件如下:

3、迁移

3.1、打开程序包管理控制器,默认项目选择 EFCodeFirst.DataAccess(也就是CodeFirst迁移目录,如下图)

9b172471680bc2879aba636d787aaa53.png

3.2、添加迁移配置 Enable-Migrations(生成以下文件并会出现错误,如图)

02c7e358c9cae2b0fa3fc09a6acc6e78.png

60c14d59a08809759ecfcce29153a676.png

3.3、解决3.2出现的错误,修改生成文件 Configuration.cs(如下图)

2d7b91b8497821c0f173cc52bfd5fe1f.png

代码如下:

namespaceEFCodeFirst.DataAccess.Migrations

{usingSystem;usingSystem.Data.Common;usingSystem.Data.Entity;usingSystem.Data.Entity.Migrations;usingSystem.Data.Entity.Migrations.History;usingSystem.Linq;internal sealed class Configuration : DbMigrationsConfiguration{publicConfiguration()

{

AutomaticMigrationsEnabled= false;

SetSqlGenerator("MySql.Data.MySqlClient", newMySql.Data.Entity.MySqlMigrationSqlGenerator());

SetHistoryContextFactory("MySql.Data.MySqlClient", (conn, schema) => newMySqlHistoryContext(conn, schema));

}protected override voidSeed(EFCodeFirst.DataAccess.DatabaseAccess context)

{//This method will be called after migrating to the latest version.//You can use the DbSet.AddOrUpdate() helper extension method//to avoid creating duplicate seed data.

}

}public classMySqlHistoryContext : HistoryContext

{public MySqlHistoryContext(DbConnection connection, stringdefaultSchema)

:base(connection, defaultSchema)

{}protected override voidOnModelCreating(DbModelBuilder modelBuilder)

{base.OnModelCreating(modelBuilder);

modelBuilder.Entity().Property(h => h.MigrationId).HasMaxLength(100).IsRequired();

modelBuilder.Entity().Property(h => h.ContextKey).HasMaxLength(200).IsRequired();

}

}

}

3.4、添加一个合并迁移命令行:Add-Migration [Name](eg:Add-Migration Add_Base_Table) Name 为一个合并的名称,自定义,最好不重复

5b3f1695cae4cf40c000767e6fb2de0d.png

3.5、生成SQL:Update-Database -Script(如果不需要SQL可不用执行)

3.6、迁移到数据库:Update-Database

245f517830f16abb8980f2d6514c79e7.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值