【好用的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==num select 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> |
作者:白宁超,工学硕士,现工作于四川省计算机研究院,研究方向是自然语言处理和机器学习。曾参与国家自然基金项目和四川省科技支撑计划等多个省级项目。著有《自然语言处理理论与实战》一书。 自然语言处理与机器学习技术交流群号:436303759 。
出处:http://www.cnblogs.com/baiboy/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架