当前位置:编程学习 > C#/ASP.NET >>

Snake.Net中的ORM(-)

答案:     1.什么是ORM?
  
  ORM,即Object-Relational Mapping(对象关系映射),它的作用是在关系型数据库和业务实体对象之间作一个映射,这样,我们在具体的操作业务对象的时候,就不需要再去和复杂的SQL语句打交道,只要像平时操作对象一样操作它就可以了。
  
  对象关系映射(ORM)提供了概念性的、易于理解的模型化数据的方法。ORM方法论应当基于三个核心原则:
  
  简单:以最基本的形式建模数据。
  
  传达性:数据库结构被任何人都能理解的语言文档化。
  
  精确性:基于数据模型创建正确标准化了的结构。
  
  基于三项原则,一方面,建模者通过收集来自那些熟悉应用程序但不熟练的数据建模者的人的信息开发企业实体模型,业务实体的设计者也可以在完全脱离数据结构构架的基础上应用这些业务实体并构筑企业的应用系统。另一方面我们可以将那些简单而又枯草地SQL语句完全忘却,在ORM的构架中,它们对于建模者应用来说完全是多余的。
  
  2.Snake.Net中ORM的特点:
  
  Snake.Net中的数据映射是基于DataSet对象的。DataSet 对象是 Microsoft .NET 框架中数据访问的关键部分,是可保存表、视图和关系的内存中对象。Snake.Net中的数据映射是通过定义一个描述业务实体的DataSet(如图1.1),将其所需要应用到的数据表结构定义(表以及表与表之间的关系)进行描述。然后通过构建一个业务实体类(Class)并将类内特定域(Field)映射到DataSet中相对应数据表内的字段而实现的。
  
  
  图1.1 利用Visual Sudio.Net生成的DataSet结构定义
  
  
  
  
  
  
  
  
  
  
  
  
  使用DataSet构架的优点有哪些?
  
  1) 业务实体与DataSet之间可以方便的进行相互转化,这种转化不仅实现于单个的业务实体,也可以对实现IList接口的业务实体集合进行批量转化。
  
  2) 通过DataSet可以实现对XML序列化的完全支持,也就是能够实现对IXmlSerializable接口的支持,从而便于分布式部署,以及对SOAP的支持。
  
  3) DataSet作为Microsoft ADO.Net重要的组成部分之一,通过Visual Studio.Net内置的工具就可以方便的生成DataSet结构的定义,从而有效地提高了开发的速度。
  
  4) DataSet对象是完全独立于数据库产品的对象,这也就为Snake.Netd对支持不同厂商不同版本的各类数据库产品的实现完全成为可能。
  
  
  
  
  
  
  
  
  
  
  3.从构建一个业务实体开始
  
  
  
  
  
  
  
  
  
  
  
  
   以上图1.1定义的DataSet为例,让我们从构建一个简单的Customer类开始。
  
  
  
  
  
  
  
  
   [UniqueTypeDeclare(typeof(StringToken))]
  
  
  
  
  
   public class Customer:DataBindObject
  
  
  
  
  
   {
  
  
  
  
  
   #region declare
  
  
  
  
  
   [DataColumnMap("CustomerID")]
  
  
  
  
  
   private string _id;
  
  
  
  
  
   [DataColumnMap("CompanyName")]
  
  
  
  
  
   private string _companyName;
  
  
  
  
  
   [DataColumnMap("ContactName")]
  
  
  
  
  
   private string _contactName;
  
  
  
  
  
   [DataColumnMap("ContactTitle")]
  
  
  
  
  
   private string _contactTitle;
  
  
  
  
  
   [DataColumnMap("Address")]
  
  
  
  
  
   private string _address;
  
  
  
  
  
   [DataColumnMap("City")]
  
  
  
  
  
   private string _city;
  
  
  
  
  
   [DataColumnMap("Region")]
  
  
  
  
  
   private string _region;
  
  
  
  
  
   [DataColumnMap("PostalCode")]
  
  
  
  
  
   private string _postalCode;
  
  
  
  
  
   [DataColumnMap("Country")]
  
  
  
  
  
   private string _country;
  
  
  
  
  
   [DataColumnMap("Phone")]
  
  
  
  
  
   private string _phone;
  
  
  
  
  
   [DataColumnMap("Fax")]
  
  
  
  
  
   private string _fax;
  
  
  
  
  
   #endregion
  
  
  
  
  
  
  
  
  
  
  
  
   #region constructors
  
  
  
  
  
   public Customer(string id):this(true)
  
  
  
  
  
   {
  
  
  
  
  
   //check for arguments
  
  
  
  
  
   if (id == null) throw new ArgumentNullException("id");
  
  
  
  
  
  
  
  
  
  
  
  
   _id = id;
  
  
  
  
  
   }
  
  
  
  
  
  
  
  
  
  
  
&nb

上一个:Snake.Net中的ORM(二)
下一个:用C#生成随机中文汉字验证码的基本原理

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,