public bool UpdateEmloyeeInfo(EmployeInfo employeInfo)
{
bool flg = false;
try
{
using (UserManageDB db = new UserManageDB())
{
if (employeInfo.ID > )
{
EmployeInfo employer = db.EmployeInfo.Single(x => x.ID == employeInfo.ID);
if (employer == null)
throw new ArgumentOutOfRangeException("employeInfo");
db.Entry(employer).CurrentValues.SetValues(employeInfo); //更新实体
db.SaveChanges();
flg = true;
}
else
{
db.EmployeInfo.Add(employeInfo); //插入实体
db.SaveChanges();
flg = true;
}
} return flg;
}
catch (Exception)
{ throw;
} }

http://www.cnblogs.com/terrysun/archive/2011/07/21/2112840.html

ADO.NET Entity提共的默认更新数据的方法是:

  1. 先找出要更新的对象(访问一次数据库)
  2. 赋新值
  3. 调用 xxxEntities.SaveChange() 方法(需要再次访问一次数据库)

一个update操作需要访问2次数据库, 多用户大数据量的环境下这样的性能确实不怎么样, 理想化的操作当然是只进行第2,3步.

上面的代码是一个扩展方法,任何ObjectContext的子类也就是xxxEntities才可以调用UpdateEntity方法

  1. 第一个参数entity就是要更新的实体对象
  2. 第二个参数entitySetName就是这个实体对象的 Entity Set Name, 通过entity是不能获得到的, 只有在调用UpdateEntity方法时传进来

以pubs数据库的author表为例, au_id是主键, 下面的代码将会更新author表中au_id为427-17-2319这条数据

PubsEntities pubsEnt = new PubsEntities();
Author auth = new Author()
{
au_id = "427-17-2319",
au_lname = "Dull",
au_fname = "Ann",
phone = "415 836-7128",
address = "3410 Blonde St.",
city = "Palo Alto",
state = "CA",
zip = "",
contract = true
}; pubsEnt.UpdateEntity(auth, pubsEnt.Authors.EntitySet.Name);
pubsEnt.SaveChanges();

UpdateEntity方法不足之处是需要传递 pubsEnt.Authors.EntitySet.Name这个参数, 有什么好办法在UpdateEntity内部可以获得这个属值?

http://www.cnblogs.com/Leo_wl/p/3295648.html

Entityframework更新数据和插入数据的更多相关文章

  1. 【JDBC】向数据表插入数据时,自动获取生成的主键

    数据表设计时,一般都会有一个主键(Key)(自己指定),有时也可以使用联合主键: 有许多数据库提供了隐藏列为表中的每行记录分配一个唯一键值(如:rowid): 当我们没有指定哪一列作为主键key时,数 ...

  2. IT题库2-LinkList和ArrayList(插入数据、末尾插入数据、不同数据量插入数据)的效率?

    ArrayList和LinkedList是两个集合类,用于存储一系列的对象引用(references).ArrayList是List接口的一个实现类,它的特点是查询效率高,增删效率低,线程不安全,原因 ...

  3. 【C#-批量插入数据到数据库】DataTable数据批量插入数据的库三种方法:SqlCommand.EcecuteNonQurery(),SqlDataAdapter.Update(DataTable) ,SqlBulkCopy.WriteToServer(Datatable)

    第一种方法:使用SqlCommand.EcecuteNonQurery()  效率最慢 第二种方法:使用SqlDataAdapter.Update(DataTable)   效率次之 第三种方法:使用 ...

  4. MySQL实现统计数据并插入数据的存储过程

    统计存储过程,这里是将统计的结果插入一个表中,后台可以有定时任务来调此存储过程.以下业务是统计仓库中商品流转情况,包括:日期.商品总数.入库数量.出库数量. BEGIN DECLARE ES_COR_ ...

  5. MVC后台获取数据和插入数据的三种方式【二】

    MVC模式下,从前端获取数据返回后台,总共有三种形式.下面的代码示例将演示如何将数据返回到后端. 一.首先我们看看表单代码,注意input标签中name的值. <html> <hea ...

  6. mysql数据库表插入单条数据/批量插入数据

    1.创建表格 reate table trade( id int(4) not null primary key auto_increment, product varchar(30) null, p ...

  7. MSSQL 插入数据时候,如果存在则更新的方法分享

    摘要:下文讲述MSSQL中,插入数据时,如果存在则更新,否则就插入数据的方法分享实验环境:sql server 2017 mssql中,我们可以采用 MERGE INTO 关键字实现此功能,当两者匹配 ...

  8. mysql插入数据与删除重复记录的几个例子(收藏)

    mysql插入数据与删除重复记录的几个例子 12-26shell脚本实现mysql数据的批量插入 12-26mysql循环语句插入数据的例子 12-26mysql批量插入数据(insert into ...

  9. MySQL 插入数据 通过命令提示窗口插入数据

    MySQL 表中使用 INSERT INTO SQL语句来插入数据. 你可以通过 mysql> 命令提示窗口中向数据表中插入数据,或者通过PHP脚本来插入数据. 语法 以下为向MySQL数据表插 ...

随机推荐

  1. [译]Quartz 框架 教程(中文版)2.2.x 之第一课 开始使用Quartz框架

    第一课:开始使用Quartz框架 在你使用调度器之前,需要借助一些具体的例子去理解(谁愿意只是猜啊?).你可以使用SchedulerFactory类来达到程序调度的目的.有一些Quartz框架的用户可 ...

  2. Linux创建LVM

    ###########format disk############ 格式化磁盘,将其SystemId修改为8e fdisk /dev/sdb n p 1 [enter] [enter] t 8e w ...

  3. Ubuntu里面的安装命令总结

    本人是新手中的新手,才开始用ubuntu.下面,总结一下安装软件的方法...... 0. 利用apt-get 其实,在ubuntu下安装软件的方法其实灰常简单.就是在终端里面输入: sudo apt- ...

  4. 电Call记录统计查询sql

    DECLARE @startTime datetimeset @startTime='2016-07-12' SELECT * FROM (--坐席号/电话个数/通话总时长select zuoxi a ...

  5. Oracle内置函数内容整理

    --绝对值select abs(-100) from dual; --取余select mod(8,3) from dual; --取整,大于该数的最小整数(上限值)select ceil(12.0) ...

  6. 超简单的NDK单步调试方法

    令人兴奋的是,ADTr20已经支持JNI单步调试,再也不需要如上这么麻烦的步骤了 你现在需要做的只需以下2步: 1.使用ndk-build编译时,加上如下参数NDK_DEBUG=1,之后生成so文件之 ...

  7. (DFS)hdoj1241-Oil Deposit

    #include<cstdio> ][]; ][]={{,},{,-},{,},{-,},{,},{,-},{-,},{-,-}},cnt; void dfs(int x,int y) { ...

  8. POJ 1739

    楼教主男人八题之一... 题目大意: 求从左下角经过所有非障碍点一次到达右下角的方案数 这里不是求回路,但是我们可以考虑,在最下面一行再增加一行,那么就可以当做求此时左下角到右下角的回路总数,那么就转 ...

  9. RPI学习--webcam_用fswebcam抓取图片

    若 ls /dev 下没有video0,可以参考http://www.cnblogs.com/skynext/p/3644873.html,更新firmware 1,安装fswebcam: sudo ...

  10. iOS之沙盒机制和如何获取沙盒路径

    iOS APP可以在自己的沙盒里读写文件,但是,不可以访问其他APP的沙盒.每一个APP都是一个信息孤岛,相互是不可以进行通信的,唯独可以通过URL Scheme.沙盒里面的文件可以是照片.声音文件. ...