一、批量添加数据

         static void Main(string[] args)
{
add();
add2();
Console.ReadKey();
} static void add()
{
DemoDbEntities db = new DemoDbEntities();
Stopwatch st = new Stopwatch();
st.Start();
for (int i = 0; i < 1000; i++)
{
db.User.Add(new User { NAME = "张三" +i, AGE = i });
db.SaveChanges();
}
st.Stop();
Console.WriteLine("用时:{0}毫秒", st.ElapsedMilliseconds); } static void add2()
{
DemoDbEntities db = new DemoDbEntities();
Stopwatch st = new Stopwatch();
st.Start();
for (int i = 0; i < 1000; i++)
{
db.User.Add(new User { NAME = "张三" + i,AGE=i }); }
db.SaveChanges();
st.Stop();
Console.WriteLine("用时:{0}毫秒", st.ElapsedMilliseconds); }

通过以上的对比发现,如果每次新增加一个条数据,就用EF SaveChanges 一次,这样会很消耗性能,可以全部标记完了之后,再去调用SaveChanges方法保存数据,这样性能会有所提高。

二、批量删除

  static void Main(string[] args)
{
del();
Console.ReadKey();
} #region EF批量删除
static void del()
{
DemoDbEntities db = new DemoDbEntities(); List<User> list = db.User.Where(u => u.NAME == "张三1").ToList();
//Any表示只要集合中有值就返回true 否者返回float
if (list != null && list.Any())
{
foreach (User item in list)
{
db.User.Remove(item);
}
db.SaveChanges();
}
Console.WriteLine("删除成功");
}
#endregion

先查询出结果,保证数据库中有值,再删除。

三、EF编辑数据

第一种方式是查询之后在编辑;

第二种方式直接传入一个需要修改的model实体,可以是部分字段

 static void Main(string[] args)
{
edit2();
Console.ReadKey();
}
#region EF编辑数据
static void edit()
{
DemoDbEntities db = new DemoDbEntities(); var model = db.User.FirstOrDefault(u => u.NAME == "张三3");
model.NAME = "李四";
db.SaveChanges();
Console.WriteLine("编辑成功");
}
static void edit2()
{
DemoDbEntities db = new DemoDbEntities(); User model = new User() {
ID=4,
NAME="王五"
};
//获取代理对象类的状态为Detaceh
System.Data.Entity.Infrastructure.DbEntityEntry entry = db.Entry(model);
//1、将代理类的状态修改成 Unchanged 2、将代理类中的需要更新的字段的IsModified修改成true
entry.State = System.Data.Entity.EntityState.Unchanged;
entry.Property("NAME").IsModified = true;
//解决对一个或多个实体验证失败 的方法:关闭EF的实体合法性检查
db.Configuration.ValidateOnSaveEnabled = false;
db.SaveChanges();
Console.WriteLine("编辑成功");
}
#endregion

四、EF中join的使用方法

   static void Main(string[] args)
{
efjoin2();
Console.ReadKey();
} #region EF连表查询的2种方式
static void efjoin()
{
DemoDbEntities db = new DemoDbEntities(); var sql = db.User.Join(db.GroupInfo, u => u.GroupinfoID, g => g.ID, (c, g) => new {uername=c.NAME,g.NAME }); var list = sql.ToList(); list.ForEach(c => Console.WriteLine(c.uername+""+c.NAME));
}
static void efjoin2()
{
DemoDbEntities db = new DemoDbEntities(); db.User.Include("GroupInfo").Where(c => true).ToList().ForEach(c => Console.WriteLine(c.NAME + "" + c.GroupInfo.NAME)); }
#endregion

五、 EF分页查询

        static void Main(string[] args)
{
fenye();
Console.ReadKey();
} #region EF分页
static void fenye()
{
DemoDbEntities db = new DemoDbEntities();
//在分页前先要是用OrderBy或者OrderByDescending对数据进行正序或者倒序然后在skip()跳过多少条,take()查询多少条。
db.User.OrderBy(u => u.ID).Skip(0).Take(5).ToList().ForEach(c=>Console.WriteLine(c.ID));
}
#endregion

六、EF存储过程的调用

         static void Main(string[] args)
{
cunchu();
Console.ReadKey();
} #region EF存储过程的使用
static void cunchu()
{
DemoDbEntities db = new DemoDbEntities();
//调用存储过程USP_GetPagedArticleList
int count = 0;
//由于totalItems是一个输出参数,所以由程序员自己定义
ObjectParameter ps = new ObjectParameter("totalItems", count); db.USP_GetPagedArticleList(1, 2, ps).ToList().ForEach(u=>Console.WriteLine(u.ID)); Console.WriteLine("总行数=" + ps.Value);
}
#endregion

七、EF中执行SQL

        static void Main(string[] args)
{
EFtoSql();
Console.ReadKey();
} #region EF中执行SQL语句
static void EFtoSql()
{
DemoDbEntities db = new DemoDbEntities();
string sql = "update [DemoDb].[dbo].[User] set NAME=@name where ID>@id"; SqlParameter[] p = new SqlParameter[] {
new SqlParameter("@id",5),
new SqlParameter("@name","王五")
};
db.Database.ExecuteSqlCommand(sql,p);
Console.WriteLine("修改成功");
} #endregion

八 EF提高查询的方法AsNoTracking

         static void Main(string[] args)
{
EFAsNoTracking();
Console.ReadKey();
}
#region EF不跟踪查询AsNoTracking()
static void EFAsNoTracking()
{
DemoDbEntities db = new DemoDbEntities();
//使用AsNoTracking()可以提高查询效率,不用在DbContext中进行缓存
db.User.AsNoTracking().Where(u => u.ID > 5).ToList().ForEach(c => Console.WriteLine(c.ID));
}
#endregion

九、EF上下文容器中Set<T>泛型方法的使用

         static void Main(string[] args)
{
EFSet();
Console.ReadKey();
} #region EF上下文容器中的Set<T>泛型方法的作用
static void EFSet()
{
DemoDbEntities db = new DemoDbEntities();
//db.Set<User> 相当于db.User
db.Set<User>().Where(u => u.ID > 5).ToList().ForEach(c => Console.WriteLine(c.ID));
}
#endregion

EF基本操作增、删、查、改、分页,join……等的更多相关文章

  1. WindowsForm 增 删 查 改

    首先是连接数据库  在数据库里写代码 建立一个数据库下面是代码 create database JinXiaoCun go use JinXiaoCun go create table users ( ...

  2. MongoDB的ObjectId和基本操作增删改查(3)

    ObjectId 基本操作增删改查 增: insert 介绍: mongodb存储的是文档,. 文档是json格式的对象. 语法: db.collectionName.insert(document) ...

  3. 【基础篇】js对本地文件增删改查--改

    前置条件: 1. 本地有安装node,点击传送门 项目目录: 1. msg.json内容 { "data": [ { "id": 1, "name&q ...

  4. SpringBoot JPA实现增删改查、分页、排序、事务操作等功能

    今天给大家介绍一下SpringBoot中JPA的一些常用操作,例如:增删改查.分页.排序.事务操作等功能.下面先来介绍一下JPA中一些常用的查询操作: //And --- 等价于 SQL 中的 and ...

  5. [.NET源码] EF的增删改查

    EF的增删改查 创建上下文对象:WordBoradEntities db = new WordBoradEntities(); 一.添加: //1.1创建实体对象 User uObj = new Us ...

  6. easyui datagrid 禁止选中行 EF的增删改查(转载) C# 获取用户IP地址(转载) MVC EF 执行SQL语句(转载) 在EF中执行SQL语句(转载) EF中使用SQL语句或存储过程 .net MVC使用Session验证用户登录 PowerDesigner 参照完整性约束(转载)

    easyui datagrid 禁止选中行   没有找到可以直接禁止的属性,但是找到两个间接禁止的方式. 方式一: //onClickRow: function (rowIndex, rowData) ...

  7. ASP.NET从零开始学习EF的增删改查

           ASP.NET从零开始学习EF的增删改查           最近辞职了,但是离真正的离职还有一段时间,趁着这段空档期,总想着写些东西,想来想去,也不是很明确到底想写个啥,但是闲着也是够 ...

  8. EF实现增删改查

    从来没想到过能在这个上面翻车,感慨自学没有培训来得系统啊,废话不多说 ORM:对象关系映射(Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一 ...

  9. http://www.cnblogs.com/nangong/p/db29669e2c6d72fb3d0da947280aa1ce.htm ASP.NET从零开始学习EF的增删改查

    http://www.cnblogs.com/nangong/p/db29669e2c6d72fb3d0da947280aa1ce.htmlASP.NET从零开始学习EF的增删改查

  10. 用SpringBoot+MySql+JPA实现对数据库的增删改查和分页

    使用SpringBoot+Mysql+JPA实现对数据库的增删改查和分页      JPA是Java Persistence API的简称,中文名Java持久层API,是JDK 5.0注解或XML描述 ...

随机推荐

  1. 关于使用ABP框架搭建的项目升级时需要注意的问题汇总

    ABP理论学习总目录 一步一步使用ABP框架搭建正式项目系列教程 ABP之Module-Zero学习目录 本篇目录 说明 升级方法 问题_01:Log4Net导致编译不成功 2015/12/18更新 ...

  2. 两种include方式及filter中的dispatcher解析

    两种include方式 我自己写了一个original.jsp,另外有一个includedPage.jsp,我想在original.jsp中把includedPage.jsp引进来有两种方式: 1.& ...

  3. dojo/query源码解析

    dojo/query模块是dojo为开发者提供的dom查询接口.该模块的输出对象是一个使用css选择符来查询dom元素并返回NodeList对象的函数.同时,dojo/query模块也是一个插件,开发 ...

  4. dojo/dom-style样式操作学习笔记

    基础总结 一个元素的样式信息由三个来源根据层叠规则确定.三个来源分别是: 由DOM元素style特性设置的内联样式 由style元素中嵌入的样式规则 由link元素引入的外部样式表 元素的样式 任何支 ...

  5. Spring中Ordered接口简介

    目录 前言 Ordered接口介绍 Ordered接口在Spring中的使用 总结 前言 Spring中提供了一个Ordered接口.Ordered接口,顾名思义,就是用来排序的. Spring是一个 ...

  6. 根据BOM和已存在的文件生成文件列表

    在BOM中记录中有物料编码,物料名称,物料规格等,而且依据BOM已经生成了相应的文件,如采购规格书,检验规格书等,这个时候需要获得这些文件的标题,并且生成一个列表,可以使用下面的VBA代码,具体代码如 ...

  7. HTML5 WebStorage

    WebStorage是HTML5中本地存储的解决方案之一,在HTML5的WebStorage概念引入之前除去IE User Data.Flash Cookie.Google Gears等看名字就不靠谱 ...

  8. JQuery checkbox check/uncheck

    想通过JQuery来check或者uncheck页面上的checkbox控件,我们可能会想到用下面的代码: $('#chk-all').on('click', function(){ var chec ...

  9. UStore-添加自定义工作流(JDF)到产品

    这里使用的是8.2版本.所有的帮助文档可以在可以看到: http://www.xmpie.com/uStore%20Help/uStore_Help_Page.htm 1.登录 首先,登录到ustor ...

  10. ssc

    接了一个ssc的小项目,却因为对方的不作答而半途而废.我写了一天的代码算是废了. 主程序 <?xml version="1.0" encoding="utf-8&q ...