5.CRUD操作
 CRUD(即Create, Retrieve, Update, Delete方法)是数据库的基本操作,很多程序员早期可能一直重复着这些简单后又枯草的工作。ORM最大的贡献就是把程序员从这种状态中解脱出来,而把精力集中于业务实体对象的设计。
 (1)实体类的创建、更新和删除
 Snake.Net通过ObjectManager对象实现与数据库的持久工作, ObjectManager使用Save和Delete方法实现业务实体对象的创建、更新和删除。请看下列代码:

Snake.Net 框架中的ORM(三) (Version 0.2 Beta)//declare
Snake.Net 框架中的ORM(三) (Version 0.2 Beta)
Customer customer;
Snake.Net 框架中的ORM(三) (Version 0.2 Beta)
Snake.Net 框架中的ORM(三) (Version 0.2 Beta)customer 
= new Customer("ZZCFR");
Snake.Net 框架中的ORM(三) (Version 0.2 Beta)customer.CompanyName 
= "Ana Trujillo Emparedados y helados";
Snake.Net 框架中的ORM(三) (Version 0.2 Beta)customer.ContactName 
= "Antonio Moreno";
Snake.Net 框架中的ORM(三) (Version 0.2 Beta)customer.ContactTitle 
= "Owner";
Snake.Net 框架中的ORM(三) (Version 0.2 Beta)customer.Address 
= "Forsterstr. 57";
Snake.Net 框架中的ORM(三) (Version 0.2 Beta)customer.City 
= "Berlin";
Snake.Net 框架中的ORM(三) (Version 0.2 Beta)customer.PostalCode 
= "T2F 8M4";
Snake.Net 框架中的ORM(三) (Version 0.2 Beta)customer.Country 
= "Canada";
Snake.Net 框架中的ORM(三) (Version 0.2 Beta)customer.Phone 
= "(604) 555-4729";
Snake.Net 框架中的ORM(三) (Version 0.2 Beta)
Snake.Net 框架中的ORM(三) (Version 0.2 Beta)
using(IObjectManager om

(2)使用存储过程来实现创建、更新和删除
默认情况下,Snake.Net根据业务实体对象与数据表结构的映射,自动生成SQL语句,并进行操作。但是根据需要,用户可以通过配置文件利用存储过程,实现创建、更新和删除操作。参见下面的配置节点,Snake.Net可以通过设置insertProcedure, updateProcedure和deleteProcedure三个配置节点,用于执行指定的存储过程操作。
Snake.Net 框架中的ORM(三) (Version 0.2 Beta)<object name="Eastasp.Enterprise.Security.Authorization.Session" groupName="enterprise.main">
Snake.Net 框架中的ORM(三) (Version 0.2 Beta)    
<insertProcedure name="usp_SessionInsert" params="-all-"/>
Snake.Net 框架中的ORM(三) (Version 0.2 Beta)
</object>
Snake.Net 框架中的ORM(三) (Version 0.2 Beta)

图 5-2-1 配置存储过程名称

(3)事务处理
Snake.Net有两种方法实现事务处理,一种是使用ObjectManager的事务处理方法:BeginTransaction、Commit和 Abort,请参见以下代码:

Snake.Net 框架中的ORM(三) (Version 0.2 Beta)//declare
Snake.Net 框架中的ORM(三) (Version 0.2 Beta)
Category c1, c2;
Snake.Net 框架中的ORM(三) (Version 0.2 Beta)
Snake.Net 框架中的ORM(三) (Version 0.2 Beta)c1 
= new Category();
Snake.Net 框架中的ORM(三) (Version 0.2 Beta)c1.CategoryName 
= "Seafood1";
Snake.Net 框架中的ORM(三) (Version 0.2 Beta)c1.Description 
= "Seaweed and fish";
Snake.Net 框架中的ORM(三) (Version 0.2 Beta)
Snake.Net 框架中的ORM(三) (Version 0.2 Beta)c2 
= new Category();
Snake.Net 框架中的ORM(三) (Version 0.2 Beta)c2.CategoryName 
= "Seafood2";
Snake.Net 框架中的ORM(三) (Version 0.2 Beta)c2.Description 
= "Seaweed and fish";
Snake.Net 框架中的ORM(三) (Version 0.2 Beta)
Snake.Net 框架中的ORM(三) (Version 0.2 Beta)
using(IObjectManager om

另一种方法是使用
TransactionContext类,调用事务环境进行事务处理,请参见以下代码:
Snake.Net 框架中的ORM(三) (Version 0.2 Beta)//declare
Snake.Net 框架中的ORM(三) (Version 0.2 Beta)
Shipper shipper;
Snake.Net 框架中的ORM(三) (Version 0.2 Beta)Customer customer;
Snake.Net 框架中的ORM(三) (Version 0.2 Beta)IObjectManager om1, om2;
Snake.Net 框架中的ORM(三) (Version 0.2 Beta)
Snake.Net 框架中的ORM(三) (Version 0.2 Beta)shipper 
= new Shipper();
Snake.Net 框架中的ORM(三) (Version 0.2 Beta)shipper.CompanyName 
= "Speedy Express";
Snake.Net 框架中的ORM(三) (Version 0.2 Beta)shipper.Phone 
= "(503) 555-9831";
Snake.Net 框架中的ORM(三) (Version 0.2 Beta)
Snake.Net 框架中的ORM(三) (Version 0.2 Beta)customer 
= new Customer("ZDEFR");
Snake.Net 框架中的ORM(三) (Version 0.2 Beta)customer.CompanyName 
= "B¨®lido Comidas preparadas";
Snake.Net 框架中的ORM(三) (Version 0.2 Beta)customer.ContactName 
= "na Trujillo";
Snake.Net 框架中的ORM(三) (Version 0.2 Beta)customer.ContactTitle 
= "Owner";
Snake.Net 框架中的ORM(三) (Version 0.2 Beta)customer.Address 
= "Forsterstr. 57";
Snake.Net 框架中的ORM(三) (Version 0.2 Beta)customer.City 
= "Berlin";
Snake.Net 框架中的ORM(三) (Version 0.2 Beta)customer.PostalCode 
= "T2F 8M4";
Snake.Net 框架中的ORM(三) (Version 0.2 Beta)customer.Country 
= "Canada";
Snake.Net 框架中的ORM(三) (Version 0.2 Beta)customer.Phone 
= "(604) 555-4729";
Snake.Net 框架中的ORM(三) (Version 0.2 Beta)
Snake.Net 框架中的ORM(三) (Version 0.2 Beta)
using(TransactionContext tc =

(4)接受业务实体
Snake.Net可以通过ObjectManager的Retrieve和List方法用于接受业务实体对象,前者可根据关键字接受单个的业务实体,后者可以根据一组关键字接受一组业务实体。请参看以下代码:
Snake.Net 框架中的ORM(三) (Version 0.2 Beta)Customer customer;
Snake.Net 框架中的ORM(三) (Version 0.2 Beta)
Snake.Net 框架中的ORM(三) (Version 0.2 Beta)
using(IObjectManager om 

相关文章:

  • 2021-12-09
  • 2022-02-02
  • 2021-10-15
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案