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

珠海市网站建设_网站建设公司_改版升级_seo优化

网站建设创意公司,个人公司注册网上申请,办公室装修设计平面图,四川网站seoNHibernate之旅(5)#xff1a;探索Insert, Update, Delete操作 2008-10-17 16:31 by 李永京, 42903 阅读, 73 评论, 收藏, 编辑 本节内容 操作数据概述1.新建对象2.删除对象3.更新对象4.保存更新对象结语操作数据概述 我们常常所说的一个工作单元#xff0c;通常是执行1个或… NHibernate之旅(5)探索Insert, Update, Delete操作 2008-10-17 16:31 by 李永京, 42903 阅读, 73 评论, 收藏,  编辑 本节内容 操作数据概述1.新建对象2.删除对象3.更新对象4.保存更新对象结语操作数据概述 我们常常所说的一个工作单元通常是执行1个或多个操作对这些操作要么提交要么放弃/回滚。想想使用LINQ  to SQL一切的东西都在内存中操作只有调用了DataContext.SubmitChanges()方法才把这些改变的数据提交到数据库中LINQ to  SQL那么提交要么回滚。 我们使用NHibernate也一样如果只查询数据不改变它的值就不需要提交(或者回滚)到数据库。 注意这节我们在上一节源代码的基础上在数据访问层中新建CRUD.cs类用于编写操作方法在数据访问的测试层新建一CRUDFixture.cs类用于测试。 1.新建对象 简单描述新建一个对象调用ISession.Save()同步ISession。 例子在数据访问层编写CreateCustomer()方法把传过来的Customer对象保存在数据库中。 public int CreateCustomer(Customer customer) {int newid (int)_session.Save(customer);_session.Flush();return newid; } 我们测试这个方法新建一个Customer对象调用CreateCustomer()方法返回新插入的CustomerId再次根据CustomerId查询数据库是否存在这个对象。 [Test] public void CreateCustomerTest() {var customer new Customer() { Firstname YJing, Lastname Lee }; int newIdentity _crud.CreateCustomer(customer); var testCustomer _crud.GetCustomerById(newIdentity); Assert.IsNotNull(testCustomer); } 2.删除对象 简单描述获取一个对象调用ISession.Delete()同步ISession。 说明使用ISession.Delete()会把对象的状态从数据库中移除。当然你的应用程序可能仍然持有一个指向它的引用。所以最好这样理解Delete()的用途是把一个持久化实例变成临时实例。  你也可以通过传递给Delete()一个NHibernate 查询字符串来一次性删除很多对象。删除对象顺序没有要求不会引发外键约束冲突。当然有可能引发在外键字段定义的NOT NULL约束冲突。 例子在数据访问层编写DeleteCustomer()方法从数据库中删除Customer对象。 public void DeleteCustomer(Customer customer) {_session.Delete(customer);_session.Flush(); } 我们测试这个方法在数据库中查询CustomerId为2的Customer对象调用DeleteCustomer()方法删除再次根据CustomerId查询数据库是否存在这个对象。 [Test] public void DeleteCustomerTest() {var coutomer _crud.GetCustomerById(2);_crud.DeleteCustomer(coutomer);var testCustomer _crud.GetCustomerById(2);Assert.IsNull(testCustomer); } 3.更新对象 简单描述获取一个对象改变它的一些属性调用ISession.Update()同步ISession。 例子在数据访问层编写UpdateCustomer()方法修改Customer对象。 public void UpdateCustomer(Customer customer) {_session.Update(customer);_session.Flush(); } 测试这个方法在数据库中查询CustomerId为1的Customer对象并修改它的Firstname属性值调用UpdateCustomer()方法更新再次查询数据库中CustomerId为1的Customer对象的Firstname值为修改之后的值。 [Test] public void UpdateCustomerTest() {var customer _crud.GetCustomerById(1);customer.Firstname liyongjing;_crud.UpdateCustomer(customer);var testCustomer _crud.GetCustomerById(1);Assert.AreEqual(liyongjing, customer.Firstname); } 4.保存更新对象 你会不会想出这个问题哪些是刚刚创建的对象哪些是修改过的对象对于刚刚创建的对象我们需要保存到数据库中对于修改过的对象我们需要更新到数据库中。 幸好ISession可以识别出这不同的对象并为我们提供了ISession.SaveOrUpdate(object)方法 ISession.SaveOrUpdate(object)方法完成如下工作 检查这个对象是否已经存在Session中。如果对象不在调用Save(object)来保存。如果对象存在检查这个对象是否改变了。如果对象改变调用Update(object)来更新。看看下面例子说明了这种情况在数据访问层编写SaveOrUpdateCustomer()方法保存更新Customer对象列表依次遍历列表中的Customer对象调用ISession.SaveOrUpdate(object)方法保存更新每个Customer对象。 public void SaveOrUpdateCustomer(IListCustomer customer) {foreach (var c in customer) { _session.SaveOrUpdate(c); } _session.Flush(); } 测试这个方法先在数据库中查询Firstname为YJing的Customer对象并修改它的Lastname属性值这些对象是数据库中存在的并改变了然后新建2个Customer对象这两个对象在数据库中不存在是新创建的。调用SaveOrUpdateCustomer()方法保存更新对象即更新前面修改的对象和保存了后面新创建的2个对象。再次查询数据库中Firstname为YJingLastname为YongJing的Customer对象是否一致了。 [Test] public void SaveOrUpdateCustomerTest() {IListCustomer customers _crud.GetCustomersByFirstname(YJing);foreach (var c in customers) { c.Lastname YongJing; } var c1 new Customer() { Firstname YJing, Lastname YongJing}; var c2 new Customer() { Firstname YJing, Lastname YongJing}; customers.Add(c1); customers.Add(c2); int initiaIListCount customers.Count; _crud.SaveOrUpdateCustomer(customers); int testListCount _crud.GetCustomersByFirstnameAndLastname(YJing, YongJing).Count; Assert.AreEqual(initiaIListCount, testListCount); } 结语 当然这一节操纵对象操作在NHibernate中涉及了对象的状态 对象对一个特定的ISession来说有三种状态分别是瞬时(transient)对象、持久化(persistent)对象、游离(detached)对象。这一节没有说到了以后在讨论Session的时候再介绍。 转载于:https://www.cnblogs.com/zhengwei-cq/p/7359665.html
http://www.lebaoying.cn/news/65270.html

相关文章:

  • 建设网站基本流程免费图片制作
  • 课程网站如何建设方案做网站用服务器
  • 网站搜索框代码怎么做网站架构设计文档
  • 淮安做网站找哪家好今天的最新消息新闻
  • 动漫视频网站开发做网站都需要准备什么
  • frp可以做网站吗广西南宁网站建设
  • 新的龙岗网站建设深圳关键词快速排名
  • 广州 seo的网站深圳百度推广开户
  • 做外单网站有哪些内容wordpress安装点提交无法访问
  • 那种限时购的网站如何做wordpress交易平台主题
  • 佛山精品网站建设seo英文
  • 常州 网站建设蓝色机械营销型网站
  • 做58同城网站需要多少钱大数据营销方案
  • app制作网站各省网站备案时长
  • 网站编辑 seo是什么 百度知道岳阳工程造价信息网
  • 建wap手机网站如何优化网站推广
  • 惠州网站建设公司哪家好网站建设与推广综合实训总结
  • 企业网站建设与推广手机网站开发企业
  • 免费网站站长推广免费成品网站模板
  • 番禺建设银行网站首页浏览器有些网页打不开是什么原因
  • 网站主机多少钱上海企业所得税优惠政策最新2023
  • 网站开发的技术分类自建社区网站
  • 品牌网网站建设公司大连装修公司前十名
  • 响应式网站建设的未来发展6做网站建设
  • wordpress更改站点国内网站备案
  • 做淘宝网站要多少钱wordpress dxc
  • 阿里巴巴网站建设目标建设限额哪里看
  • php网站开发接口文档iis7 网站权限
  • 个人博客网站总结网站服务
  • 2018威胁网站检测平台建设专业建公司网站