当前位置: 首页 > news >正文

[转]Entity Framework 学习初级篇7--基本操作:增加、更新、删除、事务

本节,直接写通过代码来学习。这些基本操作都比较简单,与这些基本操作相关的内容在之前的16节基本介绍完毕。

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:使用ObjectContextAddObject(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();

}

至此,初级篇基本介绍完毕。后面,打算写点,中级篇的东西。

本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
转自: ♂风车车.Net

相关文章:

  • 通用的方法,来检查字段是否存在
  • 面试题之求二叉树的深度
  • android笔记5——同一个Activity中Fragment的切换
  • 使用vmimeNET解析账单邮件
  • 关于浏览器端的网页性能测试
  • Qt入门之基础篇 ( 一 ) :Qt4及Qt5的下载与安装
  • 倍福TwinCAT(贝福Beckhoff)常见问题(FAQ)-如何使用断点
  • SQLServer2005数据库日志文件损坏的情况下如何恢复数据库
  • centos7下yum快速安装 mariadb(mysql)
  • 精讲sql server数据库sysObjects表中xtype字段值的含义
  • 第一个冲刺周期第六天
  • 日志分析 操作
  • Maven中的-D(Properties属性)和-P(Profiles配置文件)
  • 用sql语句dbcc log 查看SQL Server 数据库的事务日志
  • 多线程学习(十二)
  • $translatePartialLoader加载失败及解决方式
  • [iOS]Core Data浅析一 -- 启用Core Data
  • CEF与代理
  • Java基本数据类型之Number
  • JSONP原理
  • LeetCode刷题——29. Divide Two Integers(Part 1靠自己)
  • miniui datagrid 的客户端分页解决方案 - CS结合
  • Mithril.js 入门介绍
  • MySQL数据库运维之数据恢复
  • Python语法速览与机器学习开发环境搭建
  • spring boot 整合mybatis 无法输出sql的问题
  • 大主子表关联的性能优化方法
  • 关于 Linux 进程的 UID、EUID、GID 和 EGID
  • 利用DataURL技术在网页上显示图片
  • 使用 5W1H 写出高可读的 Git Commit Message
  • 微服务框架lagom
  • 用mpvue开发微信小程序
  • 在 Chrome DevTools 中调试 JavaScript 入门
  • 终端用户监控:真实用户监控还是模拟监控?
  • 带你开发类似Pokemon Go的AR游戏
  • 国内唯一,阿里云入选全球区块链云服务报告,领先AWS、Google ...
  • # Maven错误Error executing Maven
  • ###C语言程序设计-----C语言学习(3)#
  • #gStore-weekly | gStore最新版本1.0之三角形计数函数的使用
  • (10)Linux冯诺依曼结构操作系统的再次理解
  • (2020)Java后端开发----(面试题和笔试题)
  • (23)Linux的软硬连接
  • (C#)获取字符编码的类
  • (delphi11最新学习资料) Object Pascal 学习笔记---第7章第3节(封装和窗体)
  • (附源码)spring boot车辆管理系统 毕业设计 031034
  • (经验分享)作为一名普通本科计算机专业学生,我大学四年到底走了多少弯路
  • (一)Spring Cloud 直击微服务作用、架构应用、hystrix降级
  • (一)搭建springboot+vue前后端分离项目--前端vue搭建
  • (转)关于多人操作数据的处理策略
  • (转载)深入super,看Python如何解决钻石继承难题
  • ***汇编语言 实验16 编写包含多个功能子程序的中断例程
  • .NET 6 在已知拓扑路径的情况下使用 Dijkstra,A*算法搜索最短路径
  • .NET 8.0 中有哪些新的变化?
  • .NET delegate 委托 、 Event 事件,接口回调
  • .Net Framework 4.x 程序到底运行在哪个 CLR 版本之上