【好用的ORM框架】
对于开发采用orm会带来很大便利,orm即是数据表和实体对于关系框架。内部封装增删改查。它不仅适用于mvc,而且在winform和webform都适用。下面具体介绍orm是使用:
初步在winform为例使用,随后在在mvc大量运用:
1,创建项目WindowsForm,并对其进行页面布局
2,项目布局完成后,点击项目右键,添加ADO.NET 实体生成模型
3,点击空模型,创建实体.(从数据库生成随后会具体介绍)
4,生成edmx文件后,左击文件添加实体类
5,对实体类进行构造:F4点开属性进行设置ID(默认自增)
6,实现在数据库中建立一个空数据库,然后左击新建实体选择根据模型生成数据库(当然还可以根据数据库生成模型,接下章节进行讲解)。这样就可以自动生成数据库以及对应的表(还可以建立数据表的关系,以及主外键约束,见下面章节)
7,此步操作后会生成一个sql文件,打开后并执行sql,即可完成数据表生成
以上构造成实体和数据库,但是具体使用如下:
打开Model1.edmx的cs文件可以看到上下文和实体.在上下文中有一个命名Model1Container,负责实体和表结果联系,类似网关功能.
实例化上下文;实现数据增删改查
//展现用户信息public void Bind(){var user = from c in db.U_user select c;dataGridView1.DataSource = user;}//提交信息private void button1_Click(object sender, EventArgs e){U_user user=new U_user();user.Name=txtname.Text;user.Pass=txtpass.Text;user.Type=txttype.Text;db.U_user.AddObject(user);db.SaveChanges();this.Bind();}//更新信息private void button2_Click(object sender, EventArgs e){int num = Convert.ToInt32(txtid.Text);var user =( from c in db.U_user where c.ID==numselect c).FirstOrDefault<U_user>();if (user != null){user.Name = txtname.Text;user.Pass = txtpass.Text;user.Type = txttype.Text;db.SaveChanges();}this.Bind();}//删除信息private void button3_Click(object sender, EventArgs e){int num = Convert.ToInt32(txtid.Text);var user = db.U_user.Where<U_user>(a => a.ID == num).FirstOrDefault<U_user>();db.DeleteObject(user);db.SaveChanges();}//获取当前行private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e){txtid.Text = dataGridView1.CurrentRow.Cells[0].Value.ToString();txtname.Text = dataGridView1.CurrentRow.Cells[1].Value.ToString();txtpass.Text = dataGridView1.CurrentRow.Cells[2].Value.ToString();txttype.Text = dataGridView1.CurrentRow.Cells[3].Value.ToString();}
运行结果:
orm原理剖析:
选择edmx文件,选择打开方式可以查看具体xml文件:包含SSDL(表结构),CSDL(实体结构)和C-S mapping(映射关系)
SSDL(表结构)
<EntityType Name="U_user"><Key><PropertyRef Name="ID" /></Key><Property Name="ID" Type="int" StoreGeneratedPattern="Identity" Nullable="false" /><Property Name="Name" Type="nvarchar" Nullable="false" MaxLength="12" /><Property Name="Pass" Type="nvarchar" Nullable="false" MaxLength="12" /><Property Name="Type" Type="nvarchar" Nullable="false" MaxLength="10" /></EntityType>
CSDL(实体结构)
<EntityType Name="U_user"><Key><PropertyRef Name="ID" /></Key><Property Type="Int32" Name="ID" Nullable="false" annotation:StoreGeneratedPattern="Identity" /><Property Type="String" Name="Name" Nullable="false" MaxLength="12" /><Property Type="String" Name="Pass" Nullable="false" MaxLength="12" /><Property Type="String" Name="Type" Nullable="false" MaxLength="10" /></EntityType>
C-S mapping(映射关系)
<EntitySetMapping Name="U_user"><EntityTypeMapping TypeName="IsTypeOf(Model1.U_user)"><MappingFragment StoreEntitySet="U_user"><ScalarProperty Name="ID" ColumnName="ID" /><ScalarProperty Name="Name" ColumnName="Name" /><ScalarProperty Name="Pass" ColumnName="Pass" /><ScalarProperty Name="Type" ColumnName="Type" /></MappingFragment></EntityTypeMapping></EntitySetMapping>
转载于:https://www.cnblogs.com/baiboy/archive/2013/06/16/3138613.html
【好用的ORM框架】相关推荐
- PetaPoco - 轻量级高性能的ORM框架(支持.NET Core)
我们都知道ORM全称叫做Object Relationship Mapper,也就是可以用object来map我们的db. 而且市面上的orm框架有很多,有重量级的Entity Framework,有 ...
- python数据库框架_Python数据库及ORM框架对比选择
使用Python进行MySQL的库主要有三个: Python-MySQL(更熟悉的名字可能是MySQLdb), PyMySQL SQLAlchemy. Python-MySQL: 资格最老,核心由C语 ...
- orm框架有哪些_java技术哪些是必学的?
我们接触过java需要的小伙伴们都知道java是一门强大而又复杂的编程语言,现如今在互联网行业,java的身影随处可见,可能刚学习的小伙伴们会被java语言庞大的体系图吓到,不过知识毕竟是一个积累的过 ...
- ORM 框架中SQLALCHEMY一点点个人总结
声明:工作原因涉及一点 What is ORM 答: object relation mapping 一种实现对象与数据库中的关系表映射的中间件.ORM 框架中最有名的是SQLALCHEMY 具体使用 ...
- Sequelize 4.43.0 发布,基于 Nodejs 的异步 ORM 框架
Sequelize 4.43.0 发布了,Sequelize 是一款基于 Nodejs 的异步 ORM 框架,它同时支持 PostgreSQL.MySQL.SQLite 和 MSSQL 多种数据库,很 ...
- 10分钟手撸极简版ORM框架!
最近很多小伙伴对ORM框架的实现很感兴趣,不少读者在冰河的微信上问:冰河,你知道ORM框架是如何实现的吗?比如像MyBatis和Hibernte这种ORM框架,它们是如何实现的呢? 为了能够让小伙伴们 ...
- [Android]Android端ORM框架——RapidORM(v1.0)
以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/4748077.html Android上主流的ORM框架有很多 ...
- DAY11-MYSQL之ORM框架SQLAlchemy
一 介绍 SQLAlchemy是Python编程语言下的一款ORM框架,该框架建立在数据库API之上,使用关系对象映射进行数据库操作,简言之便是:将对象转换成SQL,然后使用数据API执行SQL并获取 ...
- sqlalchemy exists 子查询_学好ORM框架SQLAlchemy面试必问
首先我们先来了解一下SQLAlchemy SQLAlchemy是Python编程语言下的一款ORM框架,该框架建立在数据库API之上,使用关系对象映射进行数据库操作,简言之便是:将对象转换成SQL,然 ...
- delphi 的 ORM 框架
delphi 的 ORM 框架,收集如下: 1.EntityDac https://www.devart.com/entitydac/download.html 2.mORMot The ...
最新文章
- R语言timevis包的学习
- 在html使用a标签 直接下载图片 不通过后台实现直接下载
- OSChina 周六乱弹 —— 这个版本的小红帽听说过吗?
- [文档]. Xilinx - 编写有效的Testbenches
- 在线XML美化格式化工具
- 图解Linux网络虚拟化相关的虚拟网卡-VETH/MACVLAN/MACVTAP/IPVLAN
- 本地Laravel下载以及Laravel-admin安装
- element-ui tabs组件导致页面假死浏览器崩溃
- 微型计算机公众号,《互联网周刊》编辑推荐的40个微信公众号
- java 根据数据库中存储的文件名批量修改本地文件的文件名后缀名
- 高等数学几何图形凸优化
- 台式机的无线网卡连接wifi,能连上但丢包严重,无法上网
- 安装perf后,执行perf命令报错。
- ATW热泵市场现状及未来发展趋势分析
- ping www.baidu.com虚拟机中ping百度
- 【原创】解决windows命令行运行程序必须输入.exe后缀的问题
- iverilog搭建简易仿真平台
- python定时关机可视化窗口
- 安全度过试用期的四大“防身术”,了解防吃亏!
- 【GANs学习笔记】(三)GANs理论基础
热门文章
- qDebug格式化输出类型
- [react] props.children.map和js的map有什么区别?为什么优先选择react的?
- React开发(252):react项目理解 ant design spining加载中
- 重学java基础第九课:软件和软件关系
- [css] 请问display:inline-block在什么时候会显示间隙?
- [css] 为什么说对opacity进行动画要比box-shadow进行动画性能更好呢?
- [js] document.domain的作用是什么?它有什么限制?
- [js] 使用delete删除数组,其长度会改变吗
- 前端学习(1805):前端调试之列表伪类练习
- 前端学习(667):运算符优先级