1.nuget中添加包EF和MySql.Data.Entity

2.config文件添加如下配置

1.配置entitframework节点(一般安装EF时自动添加)

  <entityFramework><defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework"><parameters><parameter value="mssqllocaldb" /></parameters></defaultConnectionFactory><providers><provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /><provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.9.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"></provider></providers></entityFramework>

2.配置system.data节点(一般安装MySql.Data.Entity时自动添加)

  <system.data><DbProviderFactories><remove invariant="MySql.Data.MySqlClient" /><add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.9.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" /></DbProviderFactories></system.data>

3.添加连接串节点(以实际情况修改库名、密码等属性)

  <connectionStrings><add name="MyContext" connectionString="Data Source=localhost;port=3306;Initial Catalog=aceadmin;user id=root;password=xxx;" providerName="MySql.Data.MySqlClient" /></connectionStrings>

3.添加实体类

添加AccountUser类

 1 using System;
 2 using System.ComponentModel.DataAnnotations;
 3 using System.ComponentModel.DataAnnotations.Schema;
 4
 5 namespace EFCodeFirst.Entity
 6 {
 7     [Table("user")]
 8     public class AccountUser
 9     {
10         /// <summary>
11         /// 用户ID
12         /// </summary>
13         [Column("ID")]
14         [Key]
15         public int AccountUserId { get; set; }
16
17         /// <summary>
18         /// 用户名
19         /// </summary>
20         public string Name { get; set; }
21
22         /// <summary>
23         /// 年龄
24         /// </summary>
25         public Nullable<int> Age { get; set; }
26
27         /// <summary>
28         /// 性别
29         /// </summary>
30         public Nullable<bool> Sex { get; set; }
31
32     }
33 }

注:特性“Table”指定数据库中与该实体产生映射的表名,默认不添加系统会去数据库中寻找表名为:“类名+s”的表,找不到会报错。

特性“Column”来指定映射表中的列名,如果属性名与列名相同,则不用添加,系统默认属性名与列名一致。

以上方式为Data Annotations模式(数据注解)映射数据库方法。

EF还提供Fluent API配置来映射数据库,下面会讲到。

4.添加Context实体对象

using System.Data.Entity;namespace EFCodeFirst
{public class DContext : DbContext{/// <summary>/// 添加构造函数,name为config文件中数据库连接字符串的name/// </summary>public DContext() : base("name=MyContext"){}#region 数据集public DbSet<AccountUser> AccountUsers { get; set; }#endregion  }
}

定义新的上下文类DContext集成DbContext

这里声明了与数据库映射的对象AccountUser,以后可以直接用属性AccountUsers来进行对数据库的操作

注:一定要添加构造函数并指明config文件中数据库连接字符串的name,否则系统将把数据库默认指定到VS自带的数据库中

5.写一个简单的插入数据代码运行看结果

    class Program{static void Main(string[] args){try{var user = new AccountUser(){Name = "Test",Sex = true,Age = 29};using (var context = new DContext()){context.AccountUsers.Add(user);context.SaveChanges();var accountUsers = context.AccountUsers.ToList();}Console.Write("{0}", user.AccountUserId);}catch (Exception ex){Console.Write("{0}", ex);}Console.ReadLine();}}

至此EF框架连接MySql数据库已经成功

6.使用Fluent API配置EF映射关系

1.添加新类省、市

    public class Provice{/// <summary>/// 省份ID/// </summary>public int ProviceId { get; set; }/// <summary>/// 省份名/// </summary>public string ProviceName { get; set; }/// <summary>/// 省份下城市/// </summary>public List<City> Citys { get; set; }}public class City{/// <summary>/// 城市ID/// </summary>public int CityId { get; set; }/// <summary>/// 所属省份ID/// </summary>public int ProviceId { get; set; }/// <summary>/// 城市名称/// </summary>public string CityName { get; set; }/// <summary>/// 所属城市/// </summary>public Provice ProviceData { get; set; }}

2.添加Fluent API配置类,继承自EntityTypeConfiguration对象

using System.Data.Entity.ModelConfiguration;namespace EFCodeFirst
{public class ProviceConfiguration : EntityTypeConfiguration<Provice>{public ProviceConfiguration(){ToTable("provice")                                                  //映射表.HasKey(q => q.ProviceId)                                       //指定主键.HasMany(q => q.Citys).WithRequired(q => q.ProviceData).HasForeignKey(q => q.ProviceId);        //配置一对多关系
        }}
}

注:由于这里添加了外键,则必须用WithRequired方法而不能用WithOption方法,否则报错

using System.Data.Entity.ModelConfiguration;namespace EFCodeFirst
{public class CityConfiguration : EntityTypeConfiguration<City>{public CityConfiguration(){ToTable("city").HasKey(q => q.CityId).Property(q => q.ProviceId).IsRequired();}}
}

一对多关系只用在一端配置,provice处配置后不需要在city端再配置

3.将Fluent API配置添加到DContext类中,重写OnModelCreating方法

public class DContext : DbContext{/// <summary>/// 添加构造函数,name为config文件中数据库连接字符串的name/// </summary>public DContext() : base("name=MyContext"){}#region 数据集public DbSet<AccountUser> AccountUsers { get; set; }public DbSet<Provice> Provices { get; set; }public DbSet<City> Citys { get; set; }#endregion#region Fluent API配置protected override void OnModelCreating(DbModelBuilder modelBuilder){modelBuilder.Configurations.Add(new ProviceConfiguration());modelBuilder.Configurations.Add(new CityConfiguration());}#endregion}

4.main方法中级联添加省、市

        static void Main(string[] args){try{var provice = new Provice{ProviceName = "河南省",Citys = new List<City>(){new City() { CityName = "安阳"},new City() { CityName = "郑州"},new City() { CityName = "洛阳"},}};using (var context = new DContext()){context.Provices.Add(provice);context.SaveChanges();var provices = context.Provices.Include("Citys").ToList();}Console.Write("{0}", provice.ProviceId);}catch (Exception ex){Console.Write("{0}", ex);}Console.ReadLine();}

可以看到数据库中同时向省表和市表中添加了相关数据

7.EF的Data Annotations与Fluent API是可以同时使用的,但同效果的配置只需要在二者之一中配置就好。

转载于:https://www.cnblogs.com/pengdylan/p/6383733.html

.net EF框架 MySql实现实例相关推荐

  1. ef框架链接mysql数据库_.net EF框架 MySql实现实例

    1.nuget中添加包EF和MySql.Data.Entity 2.config文件添加如下配置 1.配置entitframework节点(一般安装EF时自动添加) 2.配置system.data节点 ...

  2. c ef框架-mysql_.net EF框架 MySql實現實例

    1.nuget中添加包EF和MySql.Data.Entity 2.config文件添加如下配置 1.配置entitframework節點(一般安裝EF時自動添加) 2.配置system.data節點 ...

  3. Net EF框架+ MySql示例

    1.nuget中添加包EF和MySql.Data.Entity 2.config文件添加如下配置 1.配置entitframework节点(一般安装EF时自动添加) <entityFramewo ...

  4. c# ef报错_C# EF调用MySql出现“未将对象引用设置到对象的实例”错误解决方案

    C# EF调用MySql出现"未将对象引用设置到对象的实例"错误解决方案---修改步骤---1.打开Nuget管理包,把Mysql.Data替换为6.10.0以下任意版本.这里选择 ...

  5. C# EF框架使用实例

    EF框架 1.新增ADO.NET实体数据模型,但这样会导致新增数据库连接配置 2.选择好后,点添加 3.下一步,点新建连接  在这里如果勾上将App.Config,会自动在配置文件(App.confi ...

  6. mysql多实例(三种方法)

    目录 一.概述 二.第一种 1.配置 2.启动服务 3.停止服务 4.加入mysql命令路径到PATH变量 三.第二种 1.解压MySQL安装包 2.在mysql目录下创建data目录 3.在data ...

  7. mysql系列之2.mysql多实例

    使用场景 资金紧张; 并发访问不大; 门户网站; 实现 生产硬件配置: mem 32G / 双cpu 8核 / 磁盘6*600G sas 15k, 2-3个实例 安装组件 #yum install n ...

  8. ASP.NET MVC+EF框架+EasyUI实现权限管理系列(13)-权限设计

    原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(13)-权限设计 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇)   (1):框架搭建    (2):数据 ...

  9. mysql 8.0 集群_集群架构03·MySQL初识,mysql8.0环境安装,mysql多实例

    官方网址 https://dev.mysql.com/downloads/mysql/ 社区版本分析 MySQL5.5:默认存储引擎改为InnoDB,提高性能和可扩展性,增加半同步复制 MySQL5. ...

最新文章

  1. 利用统计滤波方法去除空中漂浮物 以及去噪
  2. 一次有意义的51CTO沙龙归来
  3. Dubbo 源码分析 - 服务引用
  4. 使用UDP的简单C/S程序
  5. 【并查集】Supermarket(poj 1456/luogu-UVA1316)
  6. 前端人英语学习的那点事儿
  7. 下面的代码能确定参数是否为奇数吗?
  8. linux查看内网命令,nmap命令查看内网信息的几个...-centos6.3中lspci查看硬件信息提...-学习linux cut 命令的用法_169IT.COM...
  9. easyui添加删除表格任意行(2)
  10. 与spring的整合
  11. vs 错误error C2011:类型重定义的解决办法
  12. 2021爱分析·药企数字化趋势报告
  13. 网络接入与身份认证简介
  14. ROC和 区别p值和q值
  15. 有必要给孩子买台灯吗?2023精选专业护眼的台灯
  16. Microsoft XBOX 360 Project Natal 体感装置2010年6月15正式发布产品正式命名为“Kinect”
  17. java调用java程序,详细说明
  18. PyTorch导入报错:ValueError: module functions cannot set METH_CLASS or METH_STATIC
  19. 认真对待每一道算法题 之 找明星问题 - 淘宇瀚
  20. dubbo服务注册ip地址不正确,rpc服务调用失败?

热门文章

  1. Java泛型的不变性和作用域
  2. Hadoop hdfs 使用流来上传文件代码示例
  3. 请你解释一下HashMap具体如何实现的?
  4. idea设置启动时打开欢迎页
  5. Spring注解开发-Bean注册
  6. 基于 abp vNext 和 .NET Core 开发博客项目 - 使用 abp cli 搭建项目
  7. Coding:就地合并两个排序数组
  8. 删除github上某个release/tag
  9. java中的解码和编码_关于java中编码和解码(一)
  10. php代码升级更新机制,php如何实现更新功能