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

做网站发表的赚钱游戏网站有哪些

做网站发表的赚钱,游戏网站有哪些,宁波外贸公司排名2022,crm系统有哪些NHibernate之旅(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://icebutterfly214.com/news/65533/

相关文章:

  • 桂林小学一对一补习机构终极评测:2025七星、雁山等地区热门辅导机构真实评测
  • C++ - 简单实现std::unique_ptr
  • MATLAB实现光谱数据预处理
  • 完整教程:跨厂商(华为 H3C)防火墙 IPSec 隧道部署
  • 2025年行业内复购率高的真空包装袋批发厂家口碑推荐榜,真空包装袋推荐排行榜单精选综合实力TOP企业
  • 这些奇怪的JavaScript隐式转换你一定遇到过!
  • windows下 自动检测网络状态,并重连至指定wifi的脚本
  • 背包的第 $k$ 优解
  • MySQL权限管理的坑你踩了没有?
  • 2025 年 11 月冷却塔厂家权威推荐榜:闭式冷却塔、方形冷却塔、工业冷却塔、全钢冷却塔、凉水塔、圆形冷却塔、玻璃钢冷却塔、防腐冷却塔、冷却水塔,高效散热与持久耐用的专业之选
  • k8s chain
  • Spring Data JPA 最佳实践【1/2】:实体设计指南
  • 2025年11月审计报告事务所推荐榜单:综合实力与专业服务对比分析
  • 2025年家具封边条源头厂家权威推荐榜单:板材封边条/门窗封边条/柜门封边条源头厂家精选
  • 2025 年 11 月铝单板厂家实力推荐榜:氟碳铝单板、仿木纹铝单板、仿石材铝单板,匠心工艺与卓越耐候性的建筑外装优选
  • 2025年比较好的免浆虾仁厂家最新用户好评榜
  • 2025年知名的高端工装定制最新TOP厂家排名
  • 2025年口碑好的ENF级除醛生态板厂家推荐及采购参考
  • 天机学堂day03学习 - 指南
  • 2025年口碑好的微启式安全阀高评价厂家推荐榜
  • 2025年知名的上海减压器厂家最新实力排行
  • 2025年质量好的吨袋包装机用户好评厂家排行
  • 2025年评价高的智慧空压站厂家最新权威实力榜
  • 2025年口碑好的长途搬家公司年度服务力榜
  • 2025年诚信的吊装搬运公司可靠品牌榜
  • 2025年知名的AAA纸箱厂家最新TOP实力排行
  • [nanoGPT] 性能与效率 | `torch.compile()` |`Flash Attention`|`混合精度训练`|`estimate_mfu` - 指南
  • 2025年建房专用胶合建筑模板品牌厂家排行榜
  • 2025年评价高的油雾空气过滤器厂家最新权威推荐排行榜
  • 可靠的医疗器械可沥滤物测试公司如何选择:官方资质与技术深度的权威评测