zoukankan      html  css  js  c++  java
  • .NET连接MySQL使用Entity Framework进行数据库连接及查询

    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(); //数据提交
    }
  • 相关阅读:
    搭建页面:数据库的增删改查
    阿里云的使用运维安装
    promis:异步编程
    微信开发笔记
    细数那些带打赏功能的平台
    写给自己的TypeScript 入门小纲
    Node.js自学笔记之回调函数
    来简书坚持一个月日更之后
    全选或者单选checkbox的值动态添加到div
    一个前端妹子的悲欢编程之路
  • 原文地址:https://www.cnblogs.com/richardcuick/p/13260694.html
Copyright © 2011-2022 走看看