RELATEED CONSULTING
相关咨询
选择下列产品马上在线沟通
服务时间:9:30-18:00
你可能遇到了下面的问题
关闭右侧工具栏
.NET O/R Mapping
  • 作者:zhaozj
  • 发表时间:2020-12-23 11:02
  • 来源:未知

一、概述

     O/R Mapping全称Object Relational Mapping,就是对象关系映射。把对表直接进行的操作,变成对持久化类的属性和方法的直接操作。

 

很多的项目是基于数据库的开发,程序中要大量进行表的增、删、改、查询的工作。

 

     例如下面一段C#代码,从数据库CustomerDemo取表Customer数据:

     string ConnectionString = "data source=WILLIAM;persist security info=True;initial catalog=CustomerDemo;user id=sa;password=sasa";

     SqlConnection theSqlConnection = new SqlConnection(ConnectionString);

     string query = "select CustomerName from Customer where CustomerID=1";

 

     SqlDataAdapter theSqlDataAdapter = new SqlDataAdapter();

     theSqlDataAdapter.SelectCommand = new SqlCommand(query, theSqlConnection);

     DataSet customerDataSet = new DataSet();

 

     theSqlDataAdapter.Fill(customerDataSet);

     DataTable cusomerDataTable = new DataTable();

     cusomerDataTable = customerDataSet.Tables[0];

     //判断数据集是否为空

     if (cusomerDataTable.Rows.Count>0)

     {

         DataRow dr = cusomerDataTable.Rows[0];

         //不进行取数据的是否为空的判断,很容易留下隐患

if (! dr.IsNull("CustomerName"))

         {

              txtCustomerName.Text = dr["CustomerName"].ToString();

         }

     }

 

     theSqlConnection.Close(); 

 

如果用O/R Mapping对表封装成持久化类,读取表的数据就变为访问持久化类的属性。例如:

   //以下只是一段伪代码的模拟,不同的O/R Mapping技术封装,代码的写法会有不同。

 

   //建立数据连接Connection

   Connection conn = DataSource.GetConnection(); 

   //建立可持久化类工厂

   SessionFactory theSessionFactory = ConfigurationFactory.BuildSessionFactory(conn); 

   //实例化一个Customer,并取CustomerID=1的对象

   Customer theCustomer = (Customer)theSessionFactory.CreateObject(typeof(Customer),”1”); 

   //取对象的属性进行赋值

  txtCustomerName.Text = theCustomer.Name;

  conn.Close();

 

以上的代码相当的简洁,对表的一些常用的操作,都封装在类里面。O/R Mapping对整个项目的开发都有相当的益处:

1、   程序员

(1)         一般的数据库应用的项目,无非是大量的表、字段的select、insert、delete、edit的操作。这些操作没有多大的技术难度,就是耗时间去实现,还要小心谨慎处理,到处用if语句来进行的判断。把大量重复劳动进行类的封装,提高开发质量和效率是显而易见的。