Entity Framework 增删改查和事务操作
1、增加对象

DbEntity db = new DbEntity();
//创建对象实体,注意,这里需要对所有属性进行赋值(除了自动增长主键外),如果不赋值,则会数据库中会被设置为NULL(注意是否可空)
var user = new User
{
Name = "bomo",
Age = 21,
Gender = "male"
};
db.User.Add(user);
db.SaveChanges();

2、删除对象,删除只需要对象的主键

DbEntity db = new DbEntity();
//删除只需要主键,这里删除主键为5的行
var user = new User {Id = 5}; //将实体附加到对象管理器中
db.User.Attach(user);
//方法一:
db.User.Remove(user);
//方法二:把当前实体的状态改为删除
//db.Entry(user).State = EntityState.Deleted;
db.SaveChanges();

3、修改对象
方法一:

DbEntity db = new DbEntity();
//修改需要对主键赋值,注意:这里需要对所有字段赋值,没有赋值的字段会用NULL更新到数据库
var user = new User
{
Id = 5,
Name = "bomo",
Age = 21,
Gender = "male"
};
//将实体附加到对象管理器中
db.User.Attach(user);
//把当前实体的状态改为Modified
db.Entry(user).State = EntityState.Modified;
db.SaveChanges();

方法二:方法一中每次都需要对所有字段进行修改,效率低,而且麻烦,下面介绍修改部分字段

DbEntity db = new DbEntity();
//修改需要对主键赋值,注意:这里需要对所有字段赋值,没有赋值的字段会用NULL更新到数据库
var user = new User
{
Id = 5,
Name = "bomo",
Age = 21
};
//将实体附加到对象管理器中
db.User.Attach(user); //获取到user的状态实体,可以修改其状态
var setEntry = ((IObjectContextAdapter) db).ObjectContext.ObjectStateManager.GetObjectStateEntry(user);
//只修改实体的Name属性和Age属性
setEntry.SetModifiedProperty("Name");
setEntry.SetModifiedProperty("Age"); db.SaveChanges();

4、使用事务:使用事务很简单,只要把需要的操作放在 TransactionScope 中,最后提交

DbEntity db = new DbEntity();
using (var scope = new TransactionScope())
{
//执行多个操作
var user1 = new User
{
Name = "bomo",
Age = 21,
Gender = "male"
};
db.User.Add(user1);
db.SaveChanges(); var user2 = new User
{
Name = "toroto",
Age = 20,
Gender = "female"
};
db.User.Add(user2);
db.SaveChanges(); //提交事务
scope.Complete();
}

5、查询:查询通过LinQ查询
DbEntity db = new DbEntity();
//选择部分字段
var user = db.User.Where(u => u.Name == "bomo").Select(u => new {Id = u.Id, Name = u.Name, Age = u.Age}).FirstOrDefault();
//只有调用了FirstOrDefault, First, Single, ToList, ToArray等函数才会执行对数据库的查询
查询基本都是LinQ的内容,内容有点多,下次在总结
Entity Framework 增删改查和事务操作的更多相关文章
- 浅谈Entity Framework 增删改查和事务操作
1.增加对象 DbEntity db = new DbEntity(); //创建对象实体,注意,这里需要对所有属性进行赋值(除了自动增长主键外),如果不赋值,则会数据库中会被设置为NULL(注意是否 ...
- 【C#】Entity Framework 增删改查和事务操作
1.增加对象 DbEntity db = new DbEntity(); //创建对象实体,注意,这里需要对所有属性进行赋值(除了自动增长主键外),如果不赋值,则会数据库中会被设置为NULL(注意是否 ...
- 3、ASP.NET MVC入门到精通——Entity Framework增删改查
这里我接上讲Entity Framework入门.从网上下载Northwind数据库,新建一个控制台程序,然后重新添加一个ado.net实体数据模型. EF中操作数据库的"网关"( ...
- andorid SQLite数据库的增删改查 和事务操作
.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android ...
- Entity FrameWork 增删改查
Entity Framework (又称ADO.NET Entity Framework) 是微软以 ADO.NET 为基础所发展出来的对象关系对应(O/R Mapping) 解决方案 ...
- OracleHelper(对增删改查分页查询操作进行了面向对象的封装,对批量增删改操作的事务封装)
公司的一个新项目使用ASP.NET MVC开发,经理让我写个OracleHelper,我从网上找了一个比较全的OracleHelper类,缺点是查询的时候返回DataSet,数据增删改要写很多代码(当 ...
- Yii2.0高级框架数据库增删改查的一些操作(转)
yii2.0框架是PHP开发的一个比较高效率的框架,集合了作者的大量心血,下面通过用户为例给大家详解yii2.0高级框架数据库增删改查的一些操作 --------------------------- ...
- Yii2.0高级框架数据库增删改查的一些操作
yii2.0框架是PHP开发的一个比较高效率的框架,集合了作者的大量心血,下面通过用户为例给大家详解yii2.0高级框架数据库增删改查的一些操作 --------------------------- ...
- C# 对MongoDB 进行增删改查的简单操作
C# 对MongoDB 进行增删改查的简单操作 下面演示下C#操作MongoDB驱动的简单的增删改查代码 运用到的MongoDB支持的C#驱动,当前版本为1.6.0 1,连接数据库 /// & ...
随机推荐
- 【socket】TCP 和 UDP 在socket编程中的区别
一.TCP与UDP的区别 基于连接与无连接 对系统资源的要求(TCP较多,UDP少) UDP程序结构较简单 流模式与数据报模式 TCP保证数据正确性,UDP可能丢包 TCP保证数据顺序,UD ...
- Linux find example
find | xargs echo >> x1 find -exec echo {} \; >> x2 1.查找/var目录下属主为root并且属组为mail的所有文件:fin ...
- [转载]MongoDB优化的几点原则
.查询优化 确认你的查询是否充分利用到了索引,用explain命令查看一下查询执行的情况,添加必要的索引,避免扫表操作. .搞清你的热数据大小 可能你的数据集非常大,但是这并不那么重要,重要的是你的热 ...
- "Principles of Reactive Programming" 之<Actors are Distributed> (3)
Cluster 讲课的这哥们接下来讲了下Akka Cluster的使用,但是是通过把一个以前讲过的actor 系统改成使用cluster来介绍的Akka cluster. 这部分代码很多,还是直接看视 ...
- wordpress如何删除没有文章的tags标签
wordpress站点除了可以按博客category分类外,还可以在写文章的时候适当添加tags标签(当然,if you are lazy,哈哈,可以安装auto tag插件来实现),发布的posts ...
- APP 上传之后出现"invalid binary" 问题解决汇总
背景 5.1 号开始 App 审核开始强制支持 iPhone5,并禁止使用 UDID. 问题 上传 app 后一直处于 Invalid Binary 状态,并且收到一封邮件说 Non-public A ...
- tomcat配置301重定向(urlRewrite URL重写)
tomcat默认情况下不带www的域名是不会跳转到带www的域名的,而且也无法像apache那样通过配置.htaccess来实现.如果想要把不带“www'的域名重定向到带”www"域名下,又 ...
- POJ2526+简单几何
题意:给定的这些点是否有一个对称中心. PS:我写得有点啰嗦.. 就是把小的x和大的x进行匹配. #include<stdio.h> #include<algorithm> # ...
- oracle 增加字段
之前很多表增加很多相同的字段,一个一个添加太慢烦了,于是用了以下的方法alter table t_xmlc_batch_out_head_bak add ( SENDRECEIVEFLAG ) , S ...
- 用java运行Hadoop程序报错:org.apache.hadoop.fs.LocalFileSystem cannot be cast to org.apache.
用java运行Hadoop例程报错:org.apache.hadoop.fs.LocalFileSystem cannot be cast to org.apache.所写代码如下: package ...