Entityframework更新数据和插入数据
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提共的默认更新数据的方法是:
- 先找出要更新的对象(访问一次数据库)
- 赋新值
- 调用 xxxEntities.SaveChange() 方法(需要再次访问一次数据库)
一个update操作需要访问2次数据库, 多用户大数据量的环境下这样的性能确实不怎么样, 理想化的操作当然是只进行第2,3步.
上面的代码是一个扩展方法,任何ObjectContext的子类也就是xxxEntities才可以调用UpdateEntity方法
- 第一个参数entity就是要更新的实体对象
- 第二个参数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更新数据和插入数据的更多相关文章
- 【JDBC】向数据表插入数据时,自动获取生成的主键
数据表设计时,一般都会有一个主键(Key)(自己指定),有时也可以使用联合主键: 有许多数据库提供了隐藏列为表中的每行记录分配一个唯一键值(如:rowid): 当我们没有指定哪一列作为主键key时,数 ...
- IT题库2-LinkList和ArrayList(插入数据、末尾插入数据、不同数据量插入数据)的效率?
ArrayList和LinkedList是两个集合类,用于存储一系列的对象引用(references).ArrayList是List接口的一个实现类,它的特点是查询效率高,增删效率低,线程不安全,原因 ...
- 【C#-批量插入数据到数据库】DataTable数据批量插入数据的库三种方法:SqlCommand.EcecuteNonQurery(),SqlDataAdapter.Update(DataTable) ,SqlBulkCopy.WriteToServer(Datatable)
第一种方法:使用SqlCommand.EcecuteNonQurery() 效率最慢 第二种方法:使用SqlDataAdapter.Update(DataTable) 效率次之 第三种方法:使用 ...
- MySQL实现统计数据并插入数据的存储过程
统计存储过程,这里是将统计的结果插入一个表中,后台可以有定时任务来调此存储过程.以下业务是统计仓库中商品流转情况,包括:日期.商品总数.入库数量.出库数量. BEGIN DECLARE ES_COR_ ...
- MVC后台获取数据和插入数据的三种方式【二】
MVC模式下,从前端获取数据返回后台,总共有三种形式.下面的代码示例将演示如何将数据返回到后端. 一.首先我们看看表单代码,注意input标签中name的值. <html> <hea ...
- mysql数据库表插入单条数据/批量插入数据
1.创建表格 reate table trade( id int(4) not null primary key auto_increment, product varchar(30) null, p ...
- MSSQL 插入数据时候,如果存在则更新的方法分享
摘要:下文讲述MSSQL中,插入数据时,如果存在则更新,否则就插入数据的方法分享实验环境:sql server 2017 mssql中,我们可以采用 MERGE INTO 关键字实现此功能,当两者匹配 ...
- mysql插入数据与删除重复记录的几个例子(收藏)
mysql插入数据与删除重复记录的几个例子 12-26shell脚本实现mysql数据的批量插入 12-26mysql循环语句插入数据的例子 12-26mysql批量插入数据(insert into ...
- MySQL 插入数据 通过命令提示窗口插入数据
MySQL 表中使用 INSERT INTO SQL语句来插入数据. 你可以通过 mysql> 命令提示窗口中向数据表中插入数据,或者通过PHP脚本来插入数据. 语法 以下为向MySQL数据表插 ...
随机推荐
- 在jsp页面解析json的2种方法
方法1: $(function() { $("#btn").click(function() { $.ajax({ url : "fastjson.do", s ...
- fr
8.3 credit sales(bad debt , ar) method1:direct write off method2:allowance method for bad debt allow ...
- [转]z-order引出的问题
在窗口与窗口之间毫无重叠的情况下,根本不需要关心z-order.然而,当窗口之间出现重叠时,系统就需要通过一个标准来确定窗口的显示顺序.这个标准就是z-order.存在多个因素影响一个窗口的z-ord ...
- apache rewrite设置 禁止某个文件夹执行php文件
RewriteRule (data|templates)/(.*).(php)$ – [F]
- 查看Nginx、apache、MySQL和PHP的编译参数
1.nginx编译参数:#/usr/local/nginx/sbin/nginx -V2.apache编译参数:# cat /usr/local/apache/build/config.nice3.p ...
- apache本地网址配置
1 实现类似于域名访www.a.com问本地的空间,而不是放在apache下的htocs文件夹下,或者是wamp下的www文件下 2 首先修改C盘WINDOWS\system32\drivers\et ...
- Power string(poj 2406)
题目大意,给出一个字符串s,求最大的k,使得s能表示成a^k的形式,如 abab 可以表示成(ab)^2: 方法:首先 先求kmp算法求出next数组:如果 len mod (len-next[len ...
- Winform在一个窗体获取其他窗体的值
比如:Form2获取Form1 的label的值 因为默认的窗体的所有控件属性和方法都是private, Form1 form1 = new Form1(); 这样也是获取不到的 方法一.最简单的 将 ...
- node cheerio
所谓工欲善其事,必先利其器,所以通读了cheerio的API,顺便翻译了一遍,有些地方因为知道的比较少,不知道什么意思,保留了英文,希望各位不吝告诉我,然后一起把这个翻译完成. ###cheerio ...
- Fragment在xml中但作用不是显示view
2013-12-17 有时候会发现在xml文件中有使用fragment,但是却不是为了显示View,代码如下: <FrameLayout xmlns:android="http://s ...