Entity FrameWork 增删改查
Entity Framework (又称ADO.NET Entity Framework) 是微软以 ADO.NET 为基础所发展出来的对象关系对应(O/R Mapping) 解决方案
*新增
方法一:
//实例化添加的对象
Employees employees = new Employees { FirstName="zhou",LastName="quan", Title="Manager"}; #region ef添加数据 using (var db = new NorthwindEntities())
{ db.Employees.Add(employees);
db.SaveChanges(); } #endregion
方法二:
//添加引用
using System.Data.Entity.Infrastructure; //实例化添加的对象 Employees employees = new Employees { FirstName="zhou",LastName="quan", Title="Manager"}; #region ef添加数据 using (var db = new NorthwindEntities())
{ DbEntityEntry<Employees> enty = db.Entry<Employees>(employees);
enty.State = System.Data.Entity.EntityState.Added;
db.SaveChanges(); }
#endregion
*修改
方法一:
#region ef修改数据(官方推荐,先查询,在修改) using (var db = new NorthwindEntities())
{ Employees employees = db.Employees.Where(r => r.EmployeeID == 1).FirstOrDefault();
if (employees != null)
{ employees.FirstName = "zhou";
employees.LastName = "quan";
db.SaveChanges(); } } #endregion
方法二:
//添加引用
using System.Data.Entity.Infrastructure;
#region ef修改数据(修改整个实体,所有字段都会修改,其他没有值的都会为空NULL)
/定义修改的数据
Employees employees = new Employees { EmployeeID = 1, FirstName = "zhou", LastName = "quan" };
using (var db = new NorthwindEntities())
{ DbEntityEntry<Employees> entry = db.Entry<Employees>(employees);
entry.State = System.Data.Entity.EntityState.Modified;
db.SaveChanges();
} #endregion
注意:上面这个方法会修改整个实体所有字段的数据,没有初始化值的字段会默认给空
上面的方法一可以与方法二结合,这个代码就略了
例如sql如下:
exec sp_executesql N'UPDATE [dbo].[Employees]
SET [LastName] = @0, [FirstName] = @1, [Title] = NULL, [TitleOfCourtesy] = NULL, [BirthDate] = NULL, [HireDate] = NULL, [Address] = NULL, [City] = NULL, [Region] = NULL, [PostalCode] = NULL, [Country] = NULL, [HomePhone] = NULL, [Extension] = NULL, [Photo] = NULL, [Notes] = NULL, [ReportsTo] = NULL, [PhotoPath] = NULL
WHERE ([EmployeeID] = @2)
',N'@0 nvarchar(20),@1 nvarchar(10),@2 int',@0=N'quan',@1=N'zhou',@2=1
方法三:
//添加引用
using System.Data.Entity.Infrastructure;
#region ef修改数据
//定义修改的数据
Employees employees = new Employees { EmployeeID = 1, FirstName = "zhou", LastName = "quan" };
using (var db = new NorthwindEntities())
{ //将对象加入EF容器,并获取当前实体对象的状态管理对象
DbEntityEntry<Employees> entry = db.Entry<Employees>(employees);
//设置该对象为被修改为
entry.State = System.Data.Entity.EntityState.Unchanged;
//设置属性是否修改
entry.Property("FirstName").IsModified = true;
entry.Property("LastName").IsModified = true;
db.SaveChanges();
}
#endregion
*删除
方法一:
//添加引用
using System.Data.Entity.Infrastructure;
#region ef删除数据
//定义数据
Employees employees = new Employees { EmployeeID = 1};
using (var db = new NorthwindEntities())
{
DbEntityEntry<Employees> entry = db.Entry<Employees>(employees);
entry.State = System.Data.Entity.EntityState.Deleted;
db.SaveChanges(); } #endregion
方法二:
#region ef删除数据
//定义数据
Employees employees = new Employees { EmployeeID = 1};
using (var db = new NorthwindEntities())
{
//附加要删除的对象到ef
db.Employees.Attach(employees);
//标记为删除--注意:标记为删除状态
db.Employees.Remove(employees);
db.SaveChanges(); }
#endregion
方法三(先查询,再删除):
#region ef删除数据
using (var db = new NorthwindEntities())
{
var employees = db.Employees.Where(r => r.EmployeeID == 1).FirstOrDefault();
if (employees!=null)
{
db.Employees.Remove(employees);
db.SaveChanges();
} } #endregion
*查询
简单查询:
#region ef查询数据 using (var db = new NorthwindEntities())
{
//Linq查询
var result = from p in db.Employees where p.City=="上海"&&p.Title.Contains("上海") orderby p.EmployeeID ascending,p.FirstName descending select new { Name=p.FirstName,Address=p.Address}; //方法查询
var _result = db.Employees.Where(r => r.City == "上海" && r.Title.Contains("上海")).OrderBy(r => r.EmployeeID).OrderByDescending(r => r.FirstName).Select(r => new { Name = r.FirstName, Address = r.Address }); } #endregion
Entity FrameWork 增删改查的更多相关文章
- 3、ASP.NET MVC入门到精通——Entity Framework增删改查
这里我接上讲Entity Framework入门.从网上下载Northwind数据库,新建一个控制台程序,然后重新添加一个ado.net实体数据模型. EF中操作数据库的"网关"( ...
- 浅谈Entity Framework 增删改查和事务操作
1.增加对象 DbEntity db = new DbEntity(); //创建对象实体,注意,这里需要对所有属性进行赋值(除了自动增长主键外),如果不赋值,则会数据库中会被设置为NULL(注意是否 ...
- Entity Framework 增删改查和事务操作
1.增加对象 DbEntity db = new DbEntity(); //创建对象实体,注意,这里需要对所有属性进行赋值(除了自动增长主键外),如果不赋值,则会数据库中会被设置为NULL(注意是否 ...
- 【C#】Entity Framework 增删改查和事务操作
1.增加对象 DbEntity db = new DbEntity(); //创建对象实体,注意,这里需要对所有属性进行赋值(除了自动增长主键外),如果不赋值,则会数据库中会被设置为NULL(注意是否 ...
- 2017年2月22日-----------乱码新手自学.net 之Entity Framework 增删改
由于我是自学的,没有人教,在网上查资料也查不到个所以然.问大神们也是爱理不理的. 所以这篇随笔纯粹源自于我自己的认识.是否真正正确我也没有把握. 如果有什么错误,请大神们给予指正 ========== ...
- Entity Framework增删改之通用精简方法
用EF用了好长一段时间了,从EF4.0的版本开始接触,感觉这个ORM不能说性能是最好的,但是我个人感觉功能实现以及和mvc的结合还是一个不错的企业级网站的解决方案,在此写个简易的通用扩展方法来方便大家 ...
- ef增删改查
[C#]Entity Framework 增删改查和事务操作 1.增加对象 DbEntity db = new DbEntity(); //创建对象实体,注意,这里需要对所有属性进行赋值(除了自动增长 ...
- entity framework 新手入门篇(2)-entity framework基本的增删改查
经过前两节的简单描述,终于可以进入entity framework的使用部分了.本节将对entity framework原生的增删改查进行讲解. 承接上面的部分,我们有一个叫做House的数据库,其中 ...
- 使用ASP.NET Core MVC 和 Entity Framework Core 开发一个CRUD(增删改查)的应用程序
使用ASP.NET Core MVC 和 Entity Framework Core 开发一个CRUD(增删改查)的应用程序 不定时更新翻译系列,此系列更新毫无时间规律,文笔菜翻译菜求各位看官老爷们轻 ...
随机推荐
- DWZ富客户端框架+DWZ简介及其使用+DWZ讨论组
DWZ富客户端框架+DWZ简介及其使用+DWZ讨论组 地址: DWZ富客户端框架:http://jui.org/#_blank DWZ简介及其使用:http://blog.sina.com.cn/s/ ...
- CentOS最小化系统,怎么安装图形界面
CentOS最小化系统做服务器,都是没有图形界面的.很多初学者不习惯命令行操作,那么应该怎么安装图形界面?本经验咗嚛以centos6.5系统为例 方法步骤: 首先进入centos系统界面,先测 ...
- 51单片机和STM32单片机区别在那里
大部分朋友可能都知道51单片机和stm32单片机也知道一般入门会先学习51单片机在学习stm32单片机会简单一些,但是对于51单片机和stm32单片机的具体区别却不知道了,有些人觉得没必要,但是我个 ...
- [Day14]Eclipse高级、类与接口作为参数返回值
l 不同修饰符的使用 类,最常使用public修饰 成员变量,最常使用private修饰 成员方法,最常使用public修饰 l 自定义数据类型的使用 类作为方法参数时,说明要向方 ...
- container_of 例子说明
很早前之前看的linux内核,一直想把container_of记录一下,趁今天想起就记录一下: 内核中的描述 /** * container_of - cast a member of a struc ...
- SpringBoot-外部运行jvm参数调优
外部运行调优 java -server -Xms32m -Xmx32m -jar springboot_v2.jar
- 极验验证使用-滑动&选字验证码
准备 SDK下载 首先在极验官网下载好SDK,附上官网链接,点此可直接下载python版zip包. 模块安装 使用该SDK时发现它依赖两个模块,分别是geetest和requests. pip ins ...
- python数据结构-如何统计序列中元素的频度
如何统计序列中元素的频度 问题举例 如何找出随机序列[1, 5, 6, 5, 3, 2, 1, 0, 6, 1, 6]中出现频度最高的3个元素? 如何统计某篇英文文章中词频最高的5个单词? 将序列转换 ...
- int 的重载
测试代码: 结果: 分析: 首先创建两个对象同时进行初始化所以两次调用带参的构造函数: 其次在创建一个 对象然后将其等于前两个对象相加,这里由于该类没有重载+运算符而是重载了int 所以当两个对象相加 ...
- js 清空html input file的值
在做上传图片预览时,利用input onchange事件触发函数,但是type=file时,一定记得新建要清空原来的图片,因为原来的图片还存在在input里面,再选重复的图片没有change,故不会触 ...