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

2.config文件添加如下配置

1.配置entitframework節點(一般安裝EF時自動添加)

2.配置system.data節點(一般安裝MySql.Data.Entity時自動添加)

3.添加連接串節點(以實際情況修改庫名、密碼等屬性)

3.添加實體類

添加AccountUser類

1 usingSystem;2 usingSystem.ComponentModel.DataAnnotations;3 usingSystem.ComponentModel.DataAnnotations.Schema;4

5 namespaceEFCodeFirst.Entity6 {7 [Table("user")]8 public classAccountUser9 {10 ///

11 ///用戶ID12 ///

13 [Column("ID")]14 [Key]15 public int AccountUserId { get; set; }16

17 ///

18 ///用戶名19 ///

20 public string Name { get; set; }21

22 ///

23 ///年齡24 ///

25 public Nullable Age { get; set; }26

27 ///

28 ///性別29 ///

30 public Nullable Sex { get; set; }31

32 }33 }

注:特性“Table”指定數據庫中與該實體產生映射的表名,默認不添加系統會去數據庫中尋找表名為:“類名+s”的表,找不到會報錯。

特性“Column”來指定映射表中的列名,如果屬性名與列名相同,則不用添加,系統默認屬性名與列名一致。

以上方式為Data Annotations模式(數據注解)映射數據庫方法。

EF還提供Fluent API配置來映射數據庫,下面會講到。

4.添加Context實體對象

usingSystem.Data.Entity;namespaceEFCodeFirst

{public classDContext : DbContext

{///

///添加構造函數,name為config文件中數據庫連接字符串的name///

public DContext() : base("name=MyContext")

{

}#region 數據集

public DbSet AccountUsers { get; set; }#endregion }

}

定義新的上下文類DContext集成DbContext

這里聲明了與數據庫映射的對象AccountUser,以后可以直接用屬性AccountUsers來進行對數據庫的操作

注:一定要添加構造函數並指明config文件中數據庫連接字符串的name,否則系統將把數據庫默認指定到VS自帶的數據庫中

5.寫一個簡單的插入數據代碼運行看結果

classProgram

{static void Main(string[] args)

{try{var user = newAccountUser()

{

Name= "Test",

Sex= true,

Age= 29};using (var context = newDContext())

{

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 classProvice

{///

///省份ID///

public int ProviceId { get; set; }///

///省份名///

public string ProviceName { get; set; }///

///省份下城市///

public List Citys { get; set; }

}public classCity

{///

///城市ID///

public int CityId { get; set; }///

///所屬省份ID///

public int ProviceId { get; set; }///

///城市名稱///

public string CityName { get; set; }///

///所屬城市///

public Provice ProviceData { get; set; }

}

2.添加Fluent API配置類,繼承自EntityTypeConfiguration對象

usingSystem.Data.Entity.ModelConfiguration;namespaceEFCodeFirst

{public class ProviceConfiguration : EntityTypeConfiguration{publicProviceConfiguration()

{

ToTable("provice") //映射表

.HasKey(q => q.ProviceId) //指定主鍵

.HasMany(q => q.Citys).WithRequired(q => q.ProviceData).HasForeignKey(q => q.ProviceId); //配置一對多關系

}

}

}

注:由於這里添加了外鍵,則必須用WithRequired方法而不能用WithOption方法,否則報錯

usingSystem.Data.Entity.ModelConfiguration;namespaceEFCodeFirst

{public class CityConfiguration : EntityTypeConfiguration{publicCityConfiguration()

{

ToTable("city")

.HasKey(q=>q.CityId)

.Property(q=>q.ProviceId).IsRequired();

}

}

}

一對多關系只用在一端配置,provice處配置后不需要在city端再配置

3.將Fluent API配置添加到DContext類中,重寫OnModelCreating方法

public classDContext : DbContext

{///

///添加構造函數,name為config文件中數據庫連接字符串的name///

public DContext() : base("name=MyContext")

{

}#region 數據集

public DbSet AccountUsers { get; set; }public DbSet Provices { get; set; }public DbSet Citys { get; set; }#endregion

#region Fluent API配置

protected override voidOnModelCreating(DbModelBuilder modelBuilder)

{

modelBuilder.Configurations.Add(newProviceConfiguration());

modelBuilder.Configurations.Add(newCityConfiguration());

}#endregion}

4.main方法中級聯添加省、市

static void Main(string[] args)

{try{var provice = newProvice

{

ProviceName= "河南省",

Citys= new List()

{new City() { CityName = "安陽"},new City() { CityName = "鄭州"},new City() { CityName = "洛陽"},

}

};using (var context = newDContext())

{

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是可以同時使用的,但同效果的配置只需要在二者之一中配置就好。

c ef框架-mysql_.net EF框架 MySql實現實例相关推荐

  1. mysql asp.net core_基于 ASP.NET Core 2.0 WebAPI 后台框架搭建(2) - EF Core (MySQL) CodeFirst 数据库迁移与依赖注入...

    概述 上一章,我们简单的搭建了依赖注入的三层架构,但是,没有真正的使用,而我们现在就使用MySQL数据,基于 EF Core 的 DbFirst 进行框架搭建. 步骤 1. 右击 Entity 项目, ...

  2. 2_MVC+EF+Autofac(dbfirst)轻型项目框架_用户权限验证

    前言 接上面两篇 0_MVC+EF+Autofac(dbfirst)轻型项目框架_基本框架 与 1_MVC+EF+Autofac(dbfirst)轻型项目框架_core层(以登陆为例) .在第一篇中介 ...

  3. MVC之实体框架(数据持久化框架)EntityFrameWork(EF)

    EF - EntityFrameWork 中文名:实体框架(数据持久化框架) 1.使用EF查询(Linq to EF) 1.1使用标准查询运算符来查询 OumindBlogEntities db = ...

  4. 1_MVC+EF+Autofac(dbfirst)轻型项目框架_core层(以登陆为例)

    前言 在上一篇0_MVC+EF+Autofac(dbfirst)轻型项目框架_基本框架中,我已经介绍了这个轻型框架的层次结构,在下面的这篇文章中,我将以教师登陆功能为例,具体来扩充下我的core层的代 ...

  5. ef power tools mysql_使用 EF Power Tool Code Frist 生成 Mysql 实体

    使用 EF Power Tool Code Frist 生成 Mysql 实体 1,在要生成的项目上右键 2, 3, 4, 5,  生成后的效果 已知问题: 1,在Mysql数据表中 tinyint( ...

  6. Asp.Net MVC 自定义的MVC框架(非EF操作数据库)

    一些废话:在北京辞职回家不知不觉中已经半年多了,这半年中有过很多的彷徨,困惑,还有些小小难受.半年时间算是我人生以来遇到过的最困苦的时候.理想的工作跟我擦肩而过,驾照也没有考过,年后这一改革...,毕 ...

  7. mysql django构架图_Django框架之数据库ORM框架

    首先,我来介绍一下什么是ORM框架: O是object,也就类对象的意思,R是relation,翻译成中文是关系,也就是关系数据库中数据表的意思,M是mapping,是映射的意思.在ORM框架中,它帮 ...

  8. SSM框架(spring+spring mvc+mybatis)+Mysql实现的星星少儿教育系统(功能包含前台:首页少儿早教知识、资讯、英语课程、视频、专家,后台包括文章管理、来源管理、返回首页等)

    博客目录 SSM框架(spring+spring mvc+mybatis)+Mysql实现的星星少儿教育系统 实现功能截图 系统功能 使用技术 代码 写在最后 SSM框架(spring+spring ...

  9. java计算机毕业设计框架的报修系统源程序+mysql+系统+lw文档+远程调试

    java计算机毕业设计框架的报修系统源程序+mysql+系统+lw文档+远程调试 java计算机毕业设计框架的报修系统源程序+mysql+系统+lw文档+远程调试 本源码技术栈: 项目架构:B/S架构 ...

最新文章

  1. richTextBox设置选中的字体属性
  2. CloudStack 的配置、部署与管理,以及 API 的使用
  3. 网站设计师必备50教程
  4. 多继承-注意父类之间注意不要有重名方法或属性
  5. YUV测试序列下载地址
  6. OpenSSL库概述
  7. ProcessStartInfo 例子
  8. 使用Rancher搭建Kubernetes集群
  9. 【eNSP 华为模拟器】了解一下交换机原理和基础命令
  10. 苹果cms播放器html,苹果cms 全局播放器dplayer带后台Dplayer播放器苹果CMSV10插件
  11. r语言和python混合_jupyter notebook同时使用python和R语言
  12. 两台电脑之间使用ntp做时间同步的总结
  13. 详解电脑机械硬盘装什么系统好
  14. Redis trouble21 -- aof持久化导致redis命令阻塞
  15. 第七周--项目1-静态成员应用
  16. adb导出手机应用到电脑
  17. 制作一个属于自己的BHO吧!(C#)
  18. 以太坊·电影院场景区块链应用探索
  19. 20、蓝牙和RFID(介质访问控制子层)
  20. 磁带机的几种状态??

热门文章

  1. SEO小程:医院网站优化之如何分析竞争对手的网站
  2. FW: HTTP错误500显示具体的出错信息的方法
  3. 解决eclipse Run启动或Debug时Console控制台不自动弹出问题
  4. 软件测试测试人员遇到的问题及解决方法(面试)
  5. 解决页面使用overflow: scroll在iOS上滑动卡顿的问题
  6. Transaction rolled back because it has been marked as rollback-only分析解决方法
  7. 数据快传对于企业的重要性!
  8. 【元气云妹】有趣有料的云吞铺子,来一碗吗?
  9. 揪出MySQL延迟上千秒的元凶
  10. Java中isAssignableFrom,instanceof