【好用的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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/421695.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

愤怒的小鸟4只编外鸟_加西亚时隔三年夺美巡第11冠,马尔纳蒂9鸟单独第二

桑德森农场锦标赛战罢&#xff0c;第三轮并列领先的西班牙名将加西亚决赛轮打出5鸟1鹰2柏忌&#xff0c;以-19(68-68-66-67)的总成绩1杆优势夺冠&#xff0c;结束了三年的冠军荒。后来居上的马尔纳蒂决赛轮狂抓9鸟没有吞下一个柏忌&#xff0c;收获了职业生涯最低杆63杆&#x…

(JAVA)反射

import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.Method;/*** author Alina* date 2021年12月30日 10:47 下午* JAVA 反射机制是在运行状态中&#xff0c;对于任意一个类&#xff0c;都能够知道这个类的所有属性和方法&#…

带分数 - 蓝桥杯

标题&#xff1a;带分数 - 蓝桥杯 内容&#xff1a;2013年蓝桥杯全国软件大赛预赛&#xff0c;第9题。补充了memset()和memcpy()两个函数&#xff0c;在数组赋值中常用到。 作者&#xff1a;MilkCu 题目描述 标题&#xff1a;带分数 100 可以表示为带分数的形式&#xff1a;100…

(JAVA)reflect练习

className Student methodName student import java.awt.*; import java.io.FileReader; import java.lang.reflect.Method; import java.util.Properties;/*** author Alina* date 2022年01月08日 7:08 下午*/ public class ReflectPra {public static void main(String[] …

pgslq表的字段类型,如何在PostgreSQL中获取表的列表列名称和数据类型?

With the following query, we can get a list of column names and datatype of a table in PostgreSQL.解决方案SELECTa.attname as "Column",pg_catalog.format_type(a.atttypid, a.atttypmod) as "Datatype"FROMpg_catalog.pg_attribute aWHEREa.attnu…

【Linux操作系统分析】设备驱动处理流程

1 驱动程序&#xff0c;操作系统&#xff0c;文件系统和应用程序之间的关系 字符设备和块设备映射到操作系统中的文件系统&#xff0c;由文件系统向上提供给应用程序统一的接口用以访问设备。 Linux把设备视为文件&#xff0c;称为设备文件&#xff0c;通过对设备文件的读写操作…

C语言基础之数据结构

1.32 换成数字23 # include<stdio.h> //编译预处理指令 # include <math.h> # define pi 3.1415926 //定义不变常量 int convert(int num); char ABC(char a); double sum(double a,double b, double c); double area(double a,double b, double c); double num(…

硬件描述语言复习笔记

第一章 1、控制复杂性的艺术&#xff1a; A、抽象&#xff1a;管理复杂性的关键技术在于抽象即隐蔽不重要的细节 B、约束&#xff1a;对设计选择的一种内在限制&#xff0c;目的是为了可以更有效的在更高的抽象层 次上工作 C、三条原则&#xff1a; 层次化&#xff1a;一个系统…

hal库模拟量_【HAL库每天一例】第027例:DAC-正弦波

*//* 包含头文件 ----------------------------------------------------------------*/#include "dac/bsp_dac.h"/* 私有类型定义 --------------------------------------------------------------*//* 私有宏定义 ----------------------------------------------…

HDU/HDOJ 2612 Find a way 双向BFS

题目链接&#xff1a;http://acm.hdu.edu.cn/showproblem.php?pid2612 思路&#xff1a;从两个起点出发&#xff0c;有多个终点&#xff0c;求从两个起点同时能到达的终点具有的最小时间&#xff0c;开两个数组分别保存两个起点到达每一个终点的用时&#xff0c;最后将两个 数…

c语言之动态分配空间

void method_four(){int *p ;p (int *) malloc(10*sizeof(int)); //申请动态int类型空间for(int i 0 ;i < 5 ;i){p[i] i1;printf("%d\n",p[i]);} free(p); //释放空间 }

netty半包粘包 处理_netty解决粘包半包问题

前言&#xff1a;开发者用到TCP/IP交互时&#xff0c;偶尔会遇到粘包或者半包的数据&#xff0c;这种情况有时会对我们的程序造成严重的影响&#xff0c;netty框架为解决这种问题提供了若干框架1. LineBasedFrameDecoder&#xff1a;通过在包尾添加回车换行符 \r\n 来区分整包消…

switch循环

import java.util.Scanner;/*** author Alina* date 2021年10月10日 10:07 下午* switch (表达式) { case 1:* 语句体1;* break;* case 2:* 语句体2;* …

csgo手机上看demo_csgo看demo所有指令

csgo中有许许多多的指令我们可能都用得上&#xff0c;比如设置准星的指令抑或是看Demo的指令。那么今天小编就带大家看看这些看Demo的指令吧。正确答案以demo文件名为 nip.dem为例&#xff0c;Steam安装目录以我的F:/Steam为例1&#xff1a;复制demo文件&#xff0c;放到 \Stea…

C语言输出格式

1 一般格式printf(格式控制&#xff0c;输出表列&#xff09;例如&#xff1a;printf("i%d,ch%c\n",i,ch);说明:(1)“格式控制”是用双撇号括起来的字符串&#xff0c;也称“转换控制字符串”&#xff0c;它包括两种信息&#xff1a;①格式说明&#xff1a;由“%”和…

(Java)反射与文档注释

package com.reflect.test;/*** author Alina* date 2022年02月01日 6:09 下午*/ public class Demo1 {public void method(){System.out.println("Demo1...method");} } package com.reflect.test;import java.lang.annotation.ElementType; import java.lang.anno…

JQ基础练习---图片划过变暗

简单分享下&#xff0c;划过一张图片其余图片变暗&#xff0c;图片划过变暗的简单效果&#xff0c;JQ实现主要是css写法跟思路变化。 <script src"http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type"text/javascript"></sc…

postman启动没反应_Linux 0.12上古源码学习(二)-Bochs模拟Linux 0.12内核的启动与运行...

上篇已经初步实现用Bochs仿真了一个X86程序。今天尝试启动早期的Linux 0.12内核。官网上已经有编译好的Linux 0.12启动镜像及根文件系统镜像。我们可以直接下载下来先使用&#xff0c;后面的文章会详细介始如何编译生成这些镜像文件。Index of /Linux.old/bochs-images/​www.o…