本节,直接写通过代码来学习。这些基本操作都比较简单,与这些基本操作相关的内容在之前的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--基本操作:增加、更新、删除、事务的更多相关文章

  1. Entity Framework学习初级篇2

    Entity Framework 学习初级篇2--ObjectContext.ObjectQuery.ObjectStateEntry.ObjectStateManager类的介绍 本节,简单的介绍E ...

  2. Entity Framework 学习初级篇--基本操作:增加、更新、删除、事务(转)

    摘自:http://www.cnblogs.com/xray2005/archive/2009/05/17/1458568.html 本节,直接写通过代码来学习.这些基本操作都比较简单,与这些基本操作 ...

  3. Entity Framework 学习初级篇1--EF基本概况

    转自:http://www.cnblogs.com/Tally/archive/2012/09/14/2685011.html 最近在学习研究微软的EF,通过这时间的学习研究,感觉这个EF目前来说还不 ...

  4. Entity Framework学习初级篇1--EF基本概况《转》

    最近在学习研究微软的EF,通过这时间的学习研究,感觉这个EF目前来说还不是很完善,半成品.不过,据说在.Net4.0中,微软将推荐使用此框架,并会有所改善.而且,现在基本上所有数据库均提供了对EF的支 ...

  5. Entity Framework 学习初级篇2--ObjectContext类的介绍

    转自:http://www.cnblogs.com/Tally/archive/2012/09/14/2685014.html 本节,简单的介绍EF中的ObjectContext.ObjectQuer ...

  6. Entity Framework 学习初级篇2--ObjectContext、ObjectQuery、ObjectStateEntry、ObjectStateManager类的介绍

    本节,简单的介绍EF中的ObjectContext.ObjectQuery.ObjectStateEntry.ObjectStateManager这个几个比较重要的类,它们都位于System.Data ...

  7. Entity Framework 学习初级篇--EntityClient(转)

    摘自:http://www.cnblogs.com/xray2005/archive/2009/05/13/1456374.html System.Data.EntityClient 命名空间是 实体 ...

  8. Entity Framework 学习初级篇6--EntityClient

    System.Data.EntityClient 命名空间是 实体框架的 .NET Framework 数据提供程序.EntityClient 提供程序使用存储特定的 ADO.NET 数据提供程序类和 ...

  9. Entity Framework 学习初级篇4--Entity SQL

    Entity SQL 是 ADO.NET 实体框架 提供的 SQL 类语言,用于支持 实体数据模型 (EDM).Entity SQL 可用于对象查询和使用 EntityClient 提供程序执行的查询 ...

随机推荐

  1. php扩展memcache的安装

    1.安装memcache服务器 Memcached作为开放.免费.高效的.分布式的内存缓存系统受到很多网站的欢迎. 官网下载memcached源代码安装包,稳定版即可 官网:http://memcac ...

  2. 程序开发:MVC设计模式与应用

    MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑.数据.界面 显示分离的方法组织代 ...

  3. 编译OpenGL代码时发生 Inconsistency detected by ld.so: dl-version.c: 224: _dl_check_map_versions: Assertion `needed != ((void *)0)' failed! 错误的解决方案

    注:本解决方案适用于使用N卡的PC 出现该错误 , 一般是由于开源的nouveau驱动和Nvidia专有驱动冲突导致的 .在解决该问题时 , 尝试过卸载 N 卡专有驱动 , 仅使用开源nouveau驱 ...

  4. iosOC/C不可变数组排序

    //1.回顾C数组排序 int a[6] = {1,4,3,5,6,2}; //选择 for (int i =0; i<6-1; i++) { for (int j = i+1; j<6; ...

  5. 使用 VirtualBox 虚拟机在电脑上运行 Android 4.0 系统,让电脑瞬间变安卓平板

    Ref: http://www.iplaysoft.com/android-v4-ics-for-virtualbox.html 随着 Android 手机的各种软件应用越来越多,很多没有购买的朋友都 ...

  6. 关于LR监视Windows和linux的说明

    一.监控windows系统: 1.监视连接前的准备工作 1)进入被监视windows系统,开启以下二个服务Remote Procedure Call(RPC) 和Remote Registry Ser ...

  7. find文件后cp、rm

    复制: find <src-path> -name 'some names' -exec cp {} <dest-path> \; find <src-path> ...

  8. MT4 做指标模版

    //+------------------------------------------------------------------+ //| guo.mq4 | //| Copyright 2 ...

  9. while;do while;switch;break;continue

    1.while: 格式:while(判断条件) {    满足条件要执行的语句    } while语句与for语句对比(小九九) 1.1  for <script>for (var i= ...

  10. 学习最短路建图 HUD 5521

    http://acm.hdu.edu.cn/showproblem.php?pid=5521 题目大意:有n个点,m个集合,每个集合里面的点都两两可达且每条边权值都是val,有两个人A, B,A在po ...