Entity Framework 学习初级篇7--基本操作:增加、更新、删除、事务
本节,直接写通过代码来学习。这些基本操作都比较简单,与这些基本操作相关的内容在之前的1至6节基本介绍完毕。
l 增加:
方法1:使用AddToXXX(xxx)方法:实例代码如下:
using (var edm = new NorthwindEntities())
{
Customers c = new Customers { CustomerID = "c#", City = "成都市", Address = "中国四川省", CompanyName = "cnblogs", Country = "中国", Fax = "10086", Phone = "1008611", PostalCode = "610000", Region = "天府广场", ContactName = "风车车.Net" };
edm.AddToCustomers(c);
int result = edm.SaveChanges();
Assert.AreEqual(result, 1);
Customers addc = edm.Customers.FirstOrDefault(cc => cc.CustomerID == "c#");
Console.WriteLine("CustomerId={0},City={1}", addc.CustomerID, addc.City);
}
方法2:使用ObjectContext的AddObject(string entitySetName, object entity)方法。实例代码如下:
using (var edm = new NorthwindEntities())
{
Customers c = new Customers { CustomerID = "c2", City = "成都市2", Address = "中国四川省2", CompanyName = "cnblogs", Country = "中国", Fax = "10086", Phone = "1008611", PostalCode = "610000", Region = "天府广场", ContactName = "风车车.Net" };
edm.AddObject("Customers", c);
int result = edm.SaveChanges();
Assert.AreEqual(result, 1);
Customers addc = edm.Customers.FirstOrDefault(cc => cc.CustomerID == "c2");
Console.WriteLine("CustomerId={0},City={1}", addc.CustomerID, addc.City);
}
其中,在代码中,需要注意的是:AddObject方法中参数“entitySetName ”就是指对应实体名称,应该是:“Customers”,而不是“NorthwindEntities.Customers”;
l 更新:
using (var edm = new NorthwindEntities())
{
Customers addc = edm.Customers.FirstOrDefault(cc => cc.CustomerID == "c2");
addc.City = "CD";
addc.ContactName = "cnblogs";
addc.Country = "CN";
int result = edm.SaveChanges();
Assert.AreEqual(result, 1);
Customers updatec = edm.Customers.FirstOrDefault(cc => cc.CustomerID == "c2");
Console.WriteLine("CustomerId={0},City={1}", updatec.CustomerID, updatec.City);
}
其中,需要注意的是:不能去更新主键,否则会报“System.InvalidOperationException : 属性“xxx”是对象的键信息的一部分,不能修改。”
l 删除:
实例代码如下:
using (var edm = new NorthwindEntities())
{
Customers deletec = edm.Customers.FirstOrDefault(cc => cc.CustomerID == "c2");
edm.DeleteObject(deletec);
int result = edm.SaveChanges();
Assert.AreEqual(result, 1);
Customers c = edm.Customers.FirstOrDefault(cc => cc.CustomerID == "c2");
Assert.AreEqual(c, null);
}
l 事务:
实例代码如下:
NorthwindEntities edm = null;
System.Data.Common.DbTransaction tran = null;
try
{
edm = new NorthwindEntities();
edm.Connection.Open();
tran = edm.Connection.BeginTransaction();
Customers cst = edm.Customers.FirstOrDefault(cc => cc.CustomerID == "c#");
cst.Country = "CN";
cst.City = "CD";
edm.SaveChanges();
tran.Commit();
}
catch (Exception ex)
{
if (tran != null)
tran.Rollback();
throw ex;
}
finally
{
if (edm != null && edm.Connection.State != System.Data.ConnectionState.Closed)
edm.Connection.Close();
}
至此,初级篇基本介绍完毕。后面,打算写点,中级篇的东西。
Entity Framework 学习初级篇7--基本操作:增加、更新、删除、事务的更多相关文章
- Entity Framework学习初级篇2
Entity Framework 学习初级篇2--ObjectContext.ObjectQuery.ObjectStateEntry.ObjectStateManager类的介绍 本节,简单的介绍E ...
- Entity Framework 学习初级篇--基本操作:增加、更新、删除、事务(转)
摘自:http://www.cnblogs.com/xray2005/archive/2009/05/17/1458568.html 本节,直接写通过代码来学习.这些基本操作都比较简单,与这些基本操作 ...
- Entity Framework 学习初级篇1--EF基本概况
转自:http://www.cnblogs.com/Tally/archive/2012/09/14/2685011.html 最近在学习研究微软的EF,通过这时间的学习研究,感觉这个EF目前来说还不 ...
- Entity Framework学习初级篇1--EF基本概况《转》
最近在学习研究微软的EF,通过这时间的学习研究,感觉这个EF目前来说还不是很完善,半成品.不过,据说在.Net4.0中,微软将推荐使用此框架,并会有所改善.而且,现在基本上所有数据库均提供了对EF的支 ...
- Entity Framework 学习初级篇2--ObjectContext类的介绍
转自:http://www.cnblogs.com/Tally/archive/2012/09/14/2685014.html 本节,简单的介绍EF中的ObjectContext.ObjectQuer ...
- Entity Framework 学习初级篇2--ObjectContext、ObjectQuery、ObjectStateEntry、ObjectStateManager类的介绍
本节,简单的介绍EF中的ObjectContext.ObjectQuery.ObjectStateEntry.ObjectStateManager这个几个比较重要的类,它们都位于System.Data ...
- Entity Framework 学习初级篇--EntityClient(转)
摘自:http://www.cnblogs.com/xray2005/archive/2009/05/13/1456374.html System.Data.EntityClient 命名空间是 实体 ...
- Entity Framework 学习初级篇6--EntityClient
System.Data.EntityClient 命名空间是 实体框架的 .NET Framework 数据提供程序.EntityClient 提供程序使用存储特定的 ADO.NET 数据提供程序类和 ...
- Entity Framework 学习初级篇4--Entity SQL
Entity SQL 是 ADO.NET 实体框架 提供的 SQL 类语言,用于支持 实体数据模型 (EDM).Entity SQL 可用于对象查询和使用 EntityClient 提供程序执行的查询 ...
随机推荐
- Linux Debian 7部署LEMP(Linux+Nginx+MySQL+PHP)网站环境
我们在玩VPS搭建网站环境的时候,都经常看到所谓的LAMP.LNMP.LEMP,LAMP, 其中的A代表APECHE WEB驱动环境,LNMP中的N代表NGINX驱动环境,只不过海外的叫法NGINX ...
- ios UIApplication简单使用
每个app有且只有一个UIApplication对象,当程序启动的时候通过调用UIApplicationMain方法得到的.可以通过sharedApplication方法得到. UIApplicati ...
- C语言_用if```else语句解决奖金发放问题
#include<stdio.h> #include<stdlib.h> /*企业发放的奖金根据利润提成,发放规则如下: 利润(I)低于或等于10万元时,奖金可提10%: 利润 ...
- django搭建Bootstrap常用问题解决方法
1.进入页面,提示Creating a ModelForm without either the 'fields' attribute or the 'exclude'时 解决方法:打开forms.p ...
- VBS虚拟键码
1 VK_LBUTTON 鼠标左键 2 VK_RBUTTON 鼠标右键 3 VK_CANCEL Ctrl+Break(通常不需要处理) 4 VK_MBUTTON 鼠标中键 8 VK_BACK Back ...
- loadunner使用socket协议来实现多客户端连接同一服务器脚本(使用到IP欺骗技术)
第一部分: #include "lrs.h" vuser_init(){ lrs_startup(257); return 0;} 第二部分: Action(){ char *Re ...
- 微信开发网页授权OAuth2.0注意事项
如图所示
- 注意题目条件!!! 团问题 HDU 5952
题目大意:团的定义就是,团内的所有点,两两之间各有一条边,团的大小就是点的个数.现给你一个n个点,m条边的图.问,该图中有多少点的个数为s的团. (题目保证每个点的度数不超过20,n<=100, ...
- Inno Setup入门(五)——添加readme文件
这个实现起来很简单,就是在[files]段中的某个预先作为readme的文件后面添加标志位isreadme: [setup] ;全局设置,本段必须 AppName=Test AppVerName=TE ...
- docker installation on ubuntu
Ubuntu Docker is supported on these Ubuntu operating systems: Ubuntu Xenial 16.04 (LTS) Ubuntu Trust ...