一、批量添加数据

         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. 我的ORM之示例项目

    我的ORM索引 示例项目 code.taobao.org/svn/MyMvcApp/ 1. 编译 MyTool ,DbEnt, WebApp, 安装JRE. 2. 配置 Web.config 数据库字 ...

  2. C# 获取当前日期在指定日期范围内是第几周

    public static int GetWeekOfDay(DateTime start, DateTime end) { //总周数 )); //用于存储日期 var weekDic = new ...

  3. js模版引擎handlebars.js实用教程——each-基本循环使用方法

    返回目录 <!DOCTYPE html> <html> <head> <META http-equiv=Content-Type content=" ...

  4. 微信分享调用 -- c#篇

    微信分享调用JS -- c#篇   1.前端 1.1 导入微信端的JS 如果你的网址是http,则地址为  http://res.wx.qq.com/open/js/jweixin-1.0.0.js ...

  5. [Spring框架]Spring AOP基础入门总结二:Spring基于AspectJ的AOP的开发.

    前言: 在上一篇中: [Spring框架]Spring AOP基础入门总结一. 中 我们已经知道了一个Spring AOP程序是如何开发的, 在这里呢我们将基于AspectJ来进行AOP 的总结和学习 ...

  6. Linux初学 - head,tail,grep,sed,yum,find

    head 查看文件头部 -n 指定查看行数 默认10行 tail 查看文件尾部 n 指定查看行数 默认10行 Grep 命令 用法大全 . 参数: -I :忽略大小写 -c :打印匹配的行数 -l : ...

  7. SlickUpload Upload to disk

    The file upload stream provider is a built-in SlickUpload provider that uses the filesystem for uplo ...

  8. 最新hadoop+hbase+spark+zookeeper环境安装(vmmare下)

    说明:我这里安装的版本是hadoop2.7.3,hbase1.2.4,spark2.0.2,zookeeper3.4.9 (安装包:链接:http://pan.baidu.com/s/1c25hI4g ...

  9. linker command failed with exit code 1 (use -v to see invocation)

    背景:用U盘从另一台电脑考过来后,出现错误 linker command failed with exit code 1 (use -v to see invocation) 出现这种情况很可能是,项 ...

  10. 深入理解PHP内核(六)函数的定义、传参及返回值

    一.函数的定义 用户函数的定义从function 关键字开始,如下 function foo($var) { echo $var; } 1.词法分析 在Zend/zend_language_scann ...