之前写过一个系列文章自己动手写ORM框架,经过在多个项目的中的使用,对这套代码进行了许多改进,下面是使用方法:

 新增学员信息代码预览:

    DBHelper db = DBHelper.getInstance();
Student stu = new Student();
  stu.Name = "张三";
  stu.Gender = "男";
  stu.Age = ;
  stu.Address = "上海市徐汇区";
  int count = db.Save<Student>(stu);
  if (count > )
  {
  MessageBox.Show("新增成功!");
  }

  修改学员信息:

  stu.UserID = ;
  stu.Name = "李四";
  stu.Age = ;
  db.Update<Student>(stu);

  删除学员信息:

  Student student = m_stuList[i];

  //对象删除
  db.Remove<Student>(student);   //ID删除
  db.Remove<Student>(student.UserID);

  查询:

   //查询所有学员信息
  List<Student> list = DB.FindAll<Student>();   //根据ID查询
  Student student = DB.FindById<Student>();   //自定义SQL查询
  List<Student> list1 = DB.FindBySql<Student>("SELECT * FROM U_Student WHERE U_Age < 28");   //按某个列查询
  List<Student> list2 = DB.FindByProperty<Student>("U_Name", "张三");   //按精确条件查询,这里是SELECT xxx FROM U_Student WHERE U_Name LIKE '%张%' OR U_Age < 28
  DbCondition cond1 = new DbCondition().Where().Like("U_Name", "张").OrLessThan("U_Age", );
  List<Student> list3 = DB.Find<Student>(cond1);   //关联查询,这个不用多说了,会SQL的都知道,查询条件是 WHERE U_Name LIKE '张%'
  DbCondition cond2 = new DbCondition("SELECT s.*,c.teacher,c.className FROM U_Student s INNER JOIN U_Class c ON s.classID = c.ID").Where().RightLike("U_Name", "张");
  List<Student> list4 = DB.Find<Student>(cond2);   //这里是查询 SELECT count(0) FROM U_Student WHERE U_Name = '张三' AND U_Age = 28
  DbCondition cond3 = new DbCondition().Where("U_Name", "张三").And("U_Age", );
  int count = DB.FindCount<Student>(cond3);

实体类配置:

namespace Entiry
{
[Serializable]
[Table(Name = "U_Student")]
public class Student
{
//主键 INDENTITY自动增长标识
[Id(Name = "UserID", Strategy = GenerationType.INDENTITY)]
public int UserID { get; set; } //对应数据库中的名字为U_Name
[Column(Name = "U_Name")]
public string Name { get; set; } [Column(Name = "U_Age")] // int? 允许int为NULL时不会报错
public int? Age { get; set; } [Column(Name = "U_Gender")]
public string Gender { get; set; } [Column(Name = "U_Address")]
public string Address { get; set; } [Column(Name = "U_CreateTime")]
public DateTime? CreateTime { get; set; } [Column(Name = "ClassID")]
public int? ClassID { get; set; } //下面2列 ClassName和Teacher字段是属于班级表中的班级名称和班主任
//但是因为是外键表,关联的班级编号:ClassID,所以做关联查询可以加这2个属性
//但是修改和插入则不需要这2列,只做查询,所以加上IsInsert=false,IsUpdate=false
[Column(Name = "ClassName",IsInsert=false,IsUpdate=false)]
public string ClassName { get; set; } [Column(Name = "Teacher", IsInsert = false, IsUpdate = false)]
public string Teacher { get; set; }
}
}

  最后是配置文件:

  <configuration>
    <appSettings>
      <add key="DbType" value="sqlserver"/>
      <add key="connectionString" value="Data Source=.;Initial Catalog=OrmDB;User ID=test;Password=test;Trusted_Connection=no;Min Pool Size=10;Max Pool Size=100;"/>
  </appSettings>

  只需加连接字符串和数据库类型,因为支持这里可以支持多种数据库。

源码托管在github上,需要的可以去下载。

点击下载:https://github.com/wangwei123/easy4net

(新)自己动手写ORM框架(1)-增删查改的使用的更多相关文章

  1. 自己动手写ORM框架

    提起ORM框架,大家都很熟悉,网上流行的ORM框架有很多,其中出名的有一些,不出名的更是数不胜数. 下面是自己实现的一个简单的ORM框架,实现了常用的增删查改功能,供大家研究ORM实现原理. 功能描述 ...

  2. backbonejs mvc框架的增删查改实例

    一:开发环境 coffeescript和nodejs需要先安装,没装网上自己查安装步骤. 代码编写环境及esp框架下载: esp框架下载地址:https://github.com/nonocast/e ...

  3. Yii框架基础增删查改

    返回一条数据 Country::find()->one(); 返回所有数据 Country::find()->all(); 返回记录的数量 $country =Country::find( ...

  4. 自己动手写Spring框架--IOC、MVC

    对于一名Java开发人员,我相信没有人不知道 Spring 框架,而且也能够轻松就说出 Spring 的特性-- IOC.MVC.AOP.ORM(batis). 下面我想简单介绍一下我写的轻量级的 S ...

  5. 自己动手写ORM的感受

    之前看到奋斗前辈和时不我待前辈的自己动手写ORM系列博客,感觉讲解的通俗易懂,清晰透彻.作为一个菜鸟,闲来也想着自己写一个ORM,一来加深自己对 ORM的理解,以求对EF,NHibernate等ROM ...

  6. 重学 Java 设计模式:实战中介者模式「按照Mybaits原理手写ORM框架,给JDBC方式操作数据库增加中介者场景」

    作者:小傅哥 博客:https://bugstack.cn - 原创系列专题文章 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 同龄人的差距是从什么时候拉开的 同样的幼儿园.同样的小学.一样 ...

  7. SSH框架的多表查询和增删查改 (方法一)中

    原创作品,允许转载,转载时请务必标明作者信息和声明本文章==>http://www.cnblogs.com/zhu520/p/7774144.html   这边文章是接的刚刚前一遍的基础上敲的  ...

  8. 一套手写ajax加一般处理程序的增删查改

    倾述下感受:8天16次驳回.这个惨不忍睹. 好了不说了,说多了都是泪. 直接上代码 : 这个里面的字段我是用动软生成的,感觉自己手写哪些字段太浪费时间了,说多了都是泪 ajax.model层的代码: ...

  9. SSH框架的多表查询和增删查改 (方法一)上

    原创作品,允许转载,转载时请务必标明作者信息和声明本文章==>  http://www.cnblogs.com/zhu520/p/7772823.html   因为最近在做Android 练习的 ...

随机推荐

  1. 8种主要排序算法的C#实现 (二)

    归并排序 归并排序也是采用“分而治之”的方式.刚发现分治法是一种算法范式,我还一直以为是一种需要意会的思想呢. 不好意思了,孤陋寡闻了,哈哈! 原理:将两个有序的数列,通过比较,合并为一个有序数列.  ...

  2. 搜狗员工用百度算什么,谷歌员工当着老板的面用bing,结果悲剧了!

    之前看到一篇文章,写的是搜狗的员工遇到问题时,用百度,结果网友的评论真是亮瞎眼.今天,W3Cschool小师妹将为大家分享一个类似的故事,那就是谷歌员工当着老板的面,竟然用BING. 这位谷歌员工称, ...

  3. 微信小程序组件loading

    操作反馈loading:官方文档 Demo Code: Page({ data: { hidden: true }, loadingChange: function () { console.log( ...

  4. linux 虚拟机设置好固定ip 修改了 dns 网络需要设置成桥接模式

    linux  虚拟机设置好固定ip 修改了 dns  网络需要设置成桥接模式  可以修复网络连接(浏览器返回 server not  found)

  5. mongodb研究(mongodb 内存数据库)

    本日志大部分都不是原创的转载复制的会带链接保持版权 工作中使用mongodb已经好久了,讽刺的是到了最后快离职的时候才有时间好好研究下源码.   印象:mongodb是一个内存数据库,数据都是放到内存 ...

  6. java 与C# 时间格式 交互

    方法一 C#端代码 IsoDateTimeConverter convert = new IsoDateTimeConverter(); string ret = JsonConvert.Serial ...

  7. webapi 版本控制

    一.问题 软件开发过程中,常常会需要变更以前的接口,添加或删除接口请求字段,接口字段校验.甚至是变更请求/返回字段名称,如果强制要求所有客户端跟着一起升级代价太大.如果接口从一开始就考虑到了版本的设计 ...

  8. Python学习笔记之Centos6.9安装Python3.6

    0x00 注意 如果本机安装了python2,尽量不要管他,使用python3运行python脚本就好,因为可能有程序依赖目前的python2环境, 比如yum!!!!! 不要动现有的python2环 ...

  9. Django学习笔记之Models与ORM操作

    一.ORM增加 from django.db import models class Publisher(models.Model): name = models.CharField(max_leng ...

  10. flex 的总结

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...