.NET + MySQL

  1. 安装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
    } 
    
  2. 通过项目NuGet包管理器,添加如下程序包:

    • MySql.Data.8.0.20:用于MySQL数据库连接(ADO.NET)和查询操作。
    • MySql.Data.EntityFramework.8.0.20:用于使用Entity Framework进行数据库连接和查询操作。
  3. 配置文件确认:

    1. 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>
      
    2. 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>
      
    3. 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>
      
  4. 连接字符串格式

    <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:数据库密码
  5. 创建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方式。
    • 通过带默认读写器的自动属性声明表变量,否则表属性无法接收。
  6. 示例表Customer

    [Table("customers")]
    public class Site
    {
        [Key]
        public int Id { get; set; }
    
        public String CustomerName { get; set; }
    }
    
    • Table特性函数内声明表名。
    • 主键通过Key特性注明。
  7. Entity Framework数据库操作示例

using (DatabaseContext db = new DatabaseContext()) //连接数据库
{
    db.Customers.RemoveRange(db.Customers.ToList()); //删除所有Customer数据(不推荐,仅用于展示)
    db.Customers.AddRange(newCustomerList); //添加新的列表newCustomerList到数据库,其类型应为IList<Customer>
    db.SaveChanges(); //数据提交
}
posted @ 2022-03-31 09:39  桁椽  阅读(318)  评论(0编辑  收藏  举报