MySQL同时支持EF6与EF Core实体框架,本文介绍以代码优先(Code First)的方式如何使用MySQL。
开发平台最低要求(Windows):
- Connector/NET 6.10 or 8.0.11
- MySQL Server 5.6
- Entity Framework 6
- .NET Framework 4.5.1 (.NET Framework 4.5.2 for Connector/NET 8.0.22)
MySQL实现了EF6中新功能如下:
1.异步查询和保存添加了对自 .NET 4.5 以来可用的基于任务的异步模式的支持。Connector/NET 支持的新异步方法有:
ExecuteNonQueryAsync
ExecuteScalarAsync
PrepareAsync2.连接弹性/重试逻辑 支持从瞬时连接故障中自动恢复。要使用此功能,请添加到 OnCreateModel方法中:
SetExecutionStrategy(MySqlProviderInvariantName.ProviderName, () => new MySqlExecutionStrategy());3.拦截/SQL 日志记录提供了用于拦截实体框架操作的低级构建块,并在其上构建了简单的 SQL 日志记录:
myContext.Database.Log = delegate(string message) { Console.Write(message); };4.改进的事务支持为框架外部的事务以及在实体框架内创建事务的改进方法提供支持。从 Entity Framework 6 开始,Database.ExecuteSqlCommand()如果命令尚不存在, 则默认情况下会将命令包装在事务中。此方法有重载,允许用户根据需要覆盖此行为。通过 API 执行模型中包含的存储过程,如 ObjectContext.ExecuteFunction()执行相同的操作。也可以将现有事务传递给上下文。
5.DbSet.AddRange/RemoveRange提供了一种优化的方式来从集合中添加或删除多个实体。
1.安装 NuGet 包
Install-Package MySql.Data.EntityFramework -Version 8.0.22
2.配置数据库连接
在项目配置文件中,添加对数据库的连接的配置:
<connectionStrings>
<add name="ZhongTieDbContext" providerName="MySql.Data.MySqlClient"
connectionString="server=127.0.0.1;database=zhongtiesync;uid=root;password=123456;;charset=utf8mb4;"/>
</connectionStrings>
3.实体模型搭建
using MySql.Data.EntityFramework;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
using System.Data.Common;
using System.Data.Entity;
using System.Linq;
us