对于开发采用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框架】相关推荐

  1. PetaPoco - 轻量级高性能的ORM框架(支持.NET Core)

    我们都知道ORM全称叫做Object Relationship Mapper,也就是可以用object来map我们的db. 而且市面上的orm框架有很多,有重量级的Entity Framework,有 ...

  2. python数据库框架_Python数据库及ORM框架对比选择

    使用Python进行MySQL的库主要有三个: Python-MySQL(更熟悉的名字可能是MySQLdb), PyMySQL SQLAlchemy. Python-MySQL: 资格最老,核心由C语 ...

  3. orm框架有哪些_java技术哪些是必学的?

    我们接触过java需要的小伙伴们都知道java是一门强大而又复杂的编程语言,现如今在互联网行业,java的身影随处可见,可能刚学习的小伙伴们会被java语言庞大的体系图吓到,不过知识毕竟是一个积累的过 ...

  4. ORM 框架中SQLALCHEMY一点点个人总结

    声明:工作原因涉及一点 What is ORM 答: object relation mapping 一种实现对象与数据库中的关系表映射的中间件.ORM 框架中最有名的是SQLALCHEMY 具体使用 ...

  5. Sequelize 4.43.0 发布,基于 Nodejs 的异步 ORM 框架

    Sequelize 4.43.0 发布了,Sequelize 是一款基于 Nodejs 的异步 ORM 框架,它同时支持 PostgreSQL.MySQL.SQLite 和 MSSQL 多种数据库,很 ...

  6. 10分钟手撸极简版ORM框架!

    最近很多小伙伴对ORM框架的实现很感兴趣,不少读者在冰河的微信上问:冰河,你知道ORM框架是如何实现的吗?比如像MyBatis和Hibernte这种ORM框架,它们是如何实现的呢? 为了能够让小伙伴们 ...

  7. [Android]Android端ORM框架——RapidORM(v1.0)

    以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/4748077.html  Android上主流的ORM框架有很多 ...

  8. DAY11-MYSQL之ORM框架SQLAlchemy

    一 介绍 SQLAlchemy是Python编程语言下的一款ORM框架,该框架建立在数据库API之上,使用关系对象映射进行数据库操作,简言之便是:将对象转换成SQL,然后使用数据API执行SQL并获取 ...

  9. sqlalchemy exists 子查询_学好ORM框架SQLAlchemy面试必问

    首先我们先来了解一下SQLAlchemy SQLAlchemy是Python编程语言下的一款ORM框架,该框架建立在数据库API之上,使用关系对象映射进行数据库操作,简言之便是:将对象转换成SQL,然 ...

  10. delphi 的 ORM 框架

    delphi 的 ORM 框架,收集如下: 1.EntityDac    https://www.devart.com/entitydac/download.html 2.mORMot    The  ...

最新文章

  1. R语言timevis包的学习
  2. 在html使用a标签 直接下载图片 不通过后台实现直接下载
  3. OSChina 周六乱弹 —— 这个版本的小红帽听说过吗?
  4. [文档]. Xilinx - 编写有效的Testbenches
  5. 在线XML美化格式化工具
  6. 图解Linux网络虚拟化相关的虚拟网卡-VETH/MACVLAN/MACVTAP/IPVLAN
  7. 本地Laravel下载以及Laravel-admin安装
  8. element-ui tabs组件导致页面假死浏览器崩溃
  9. 微型计算机公众号,《互联网周刊》编辑推荐的40个微信公众号
  10. java 根据数据库中存储的文件名批量修改本地文件的文件名后缀名
  11. 高等数学几何图形凸优化
  12. 台式机的无线网卡连接wifi,能连上但丢包严重,无法上网
  13. 安装perf后,执行perf命令报错。
  14. ATW热泵市场现状及未来发展趋势分析
  15. ping www.baidu.com虚拟机中ping百度
  16. 【原创】解决windows命令行运行程序必须输入.exe后缀的问题
  17. iverilog搭建简易仿真平台
  18. python定时关机可视化窗口
  19. 安全度过试用期的四大“防身术”,了解防吃亏!
  20. 【GANs学习笔记】(三)GANs理论基础

热门文章

  1. qDebug格式化输出类型
  2. [react] props.children.map和js的map有什么区别?为什么优先选择react的?
  3. React开发(252):react项目理解 ant design spining加载中
  4. 重学java基础第九课:软件和软件关系
  5. [css] 请问display:inline-block在什么时候会显示间隙?
  6. [css] 为什么说对opacity进行动画要比box-shadow进行动画性能更好呢?
  7. [js] document.domain的作用是什么?它有什么限制?
  8. [js] 使用delete删除数组,其长度会改变吗
  9. 前端学习(1805):前端调试之列表伪类练习
  10. 前端学习(667):运算符优先级