c ef框架-mysql_.net EF框架 MySql實現實例
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實現實例相关推荐
- mysql asp.net core_基于 ASP.NET Core 2.0 WebAPI 后台框架搭建(2) - EF Core (MySQL) CodeFirst 数据库迁移与依赖注入...
概述 上一章,我们简单的搭建了依赖注入的三层架构,但是,没有真正的使用,而我们现在就使用MySQL数据,基于 EF Core 的 DbFirst 进行框架搭建. 步骤 1. 右击 Entity 项目, ...
- 2_MVC+EF+Autofac(dbfirst)轻型项目框架_用户权限验证
前言 接上面两篇 0_MVC+EF+Autofac(dbfirst)轻型项目框架_基本框架 与 1_MVC+EF+Autofac(dbfirst)轻型项目框架_core层(以登陆为例) .在第一篇中介 ...
- MVC之实体框架(数据持久化框架)EntityFrameWork(EF)
EF - EntityFrameWork 中文名:实体框架(数据持久化框架) 1.使用EF查询(Linq to EF) 1.1使用标准查询运算符来查询 OumindBlogEntities db = ...
- 1_MVC+EF+Autofac(dbfirst)轻型项目框架_core层(以登陆为例)
前言 在上一篇0_MVC+EF+Autofac(dbfirst)轻型项目框架_基本框架中,我已经介绍了这个轻型框架的层次结构,在下面的这篇文章中,我将以教师登陆功能为例,具体来扩充下我的core层的代 ...
- ef power tools mysql_使用 EF Power Tool Code Frist 生成 Mysql 实体
使用 EF Power Tool Code Frist 生成 Mysql 实体 1,在要生成的项目上右键 2, 3, 4, 5, 生成后的效果 已知问题: 1,在Mysql数据表中 tinyint( ...
- Asp.Net MVC 自定义的MVC框架(非EF操作数据库)
一些废话:在北京辞职回家不知不觉中已经半年多了,这半年中有过很多的彷徨,困惑,还有些小小难受.半年时间算是我人生以来遇到过的最困苦的时候.理想的工作跟我擦肩而过,驾照也没有考过,年后这一改革...,毕 ...
- mysql django构架图_Django框架之数据库ORM框架
首先,我来介绍一下什么是ORM框架: O是object,也就类对象的意思,R是relation,翻译成中文是关系,也就是关系数据库中数据表的意思,M是mapping,是映射的意思.在ORM框架中,它帮 ...
- SSM框架(spring+spring mvc+mybatis)+Mysql实现的星星少儿教育系统(功能包含前台:首页少儿早教知识、资讯、英语课程、视频、专家,后台包括文章管理、来源管理、返回首页等)
博客目录 SSM框架(spring+spring mvc+mybatis)+Mysql实现的星星少儿教育系统 实现功能截图 系统功能 使用技术 代码 写在最后 SSM框架(spring+spring ...
- java计算机毕业设计框架的报修系统源程序+mysql+系统+lw文档+远程调试
java计算机毕业设计框架的报修系统源程序+mysql+系统+lw文档+远程调试 java计算机毕业设计框架的报修系统源程序+mysql+系统+lw文档+远程调试 本源码技术栈: 项目架构:B/S架构 ...
最新文章
- richTextBox设置选中的字体属性
- CloudStack 的配置、部署与管理,以及 API 的使用
- 网站设计师必备50教程
- 多继承-注意父类之间注意不要有重名方法或属性
- YUV测试序列下载地址
- OpenSSL库概述
- ProcessStartInfo 例子
- 使用Rancher搭建Kubernetes集群
- 【eNSP 华为模拟器】了解一下交换机原理和基础命令
- 苹果cms播放器html,苹果cms 全局播放器dplayer带后台Dplayer播放器苹果CMSV10插件
- r语言和python混合_jupyter notebook同时使用python和R语言
- 两台电脑之间使用ntp做时间同步的总结
- 详解电脑机械硬盘装什么系统好
- Redis trouble21 -- aof持久化导致redis命令阻塞
- 第七周--项目1-静态成员应用
- adb导出手机应用到电脑
- 制作一个属于自己的BHO吧!(C#)
- 以太坊·电影院场景区块链应用探索
- 20、蓝牙和RFID(介质访问控制子层)
- 磁带机的几种状态??
热门文章
- SEO小程:医院网站优化之如何分析竞争对手的网站
- FW: HTTP错误500显示具体的出错信息的方法
- 解决eclipse Run启动或Debug时Console控制台不自动弹出问题
- 软件测试测试人员遇到的问题及解决方法(面试)
- 解决页面使用overflow: scroll在iOS上滑动卡顿的问题
- Transaction rolled back because it has been marked as rollback-only分析解决方法
- 数据快传对于企业的重要性!
- 【元气云妹】有趣有料的云吞铺子,来一碗吗?
- 揪出MySQL延迟上千秒的元凶
- Java中isAssignableFrom,instanceof