.NET + MySQL
-
安装MySQL Installer Community Edition for Windows(当前版本8.0.20)
如果是在服务器上进行安装部署,可以使用PowerShell脚本完成,脚本如下:
$msi = @("mysql-connector-net-8.0.21.msi") foreach($_ in $msi) { Start-Process -FilePath msiexec -ArgumentList /i, $_, /qn -Wait }
-
通过项目NuGet包管理器,添加如下程序包:
- MySql.Data.8.0.20:用于MySQL数据库连接(ADO.NET)和查询操作。
- MySql.Data.EntityFramework.8.0.20:用于使用Entity Framework进行数据库连接和查询操作。
-
配置文件确认:
- entityFramework段落注册
<configSections> <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> </configSections>
- entityFramework配置
<entityFramework codeConfigurationType="MySql.Data.EntityFramework.MySqlEFConfiguration, MySql.Data.EntityFramework"> <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" /> <providers> <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.EntityFramework, Version=8.0.20.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" /> </providers> </entityFramework>
- system.data配置
<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" /> </DbProviderFactories> </system.data>
- entityFramework段落注册
-
连接字符串格式
<connectionStrings> <add name="<connection name>" connectionString="server=<server>;port=<port>;database=<database name>;uid=<user name>;password=<password>" providerName="MySql.Data.MySqlClient" /> </connectionStrings>
- connection name:数据库连接名(程序中使用)
- server:服务器IP地址或域名
- port:MySQL服务端口号
- database name:数据库名
- user name:数据库用户名
- password:数据库密码
-
创建DbContext实体类
注意:MySQL的数据库上下文实体类(继承自DbContext)需要在类前注明特性[DbConfigurationType],参考下面代码:[DbConfigurationType(typeof(MySqlEFConfiguration))] public class DatabaseContext: DbContext { public DatabaseContext() : base("name=<connection name>") { Database.SetInitializer<DatabaseContext>(null); } public DbSet<Customer> Customers { get; set; } }
- 在构造函数中,通过基类参数使用上步骤填写的connection name指定数据库连接。
- SetInitializer函数指定数据库初始化行为,这里不进行初始化(数据库表通过其它方式创建),而不是Code-First方式。
- 通过带默认读写器的自动属性声明表变量,否则表属性无法接收。
-
示例表Customer
[Table("customers")] public class Site { [Key] public int Id { get; set; } public String CustomerName { get; set; } }
- Table特性函数内声明表名。
- 主键通过Key特性注明。
-
Entity Framework数据库操作示例
using (DatabaseContext db = new DatabaseContext()) //连接数据库
{
db.Customers.RemoveRange(db.Customers.ToList()); //删除所有Customer数据(不推荐,仅用于展示)
db.Customers.AddRange(newCustomerList); //添加新的列表newCustomerList到数据库,其类型应为IList<Customer>
db.SaveChanges(); //数据提交
}