当前位置:IT168首页 > 技术开发 > 概述
[收藏此页] [打印] [推荐] [评论]

使用CodeDom提高ORM性能

责任编辑:nancy作者:ITPUB论坛   2008-07-07   
【内容导航】
文本Tag: 微软 sql

【IT168技术文档】

  ORM(Object/Relation Mapping对象-关系数据库映射)其中的一个功能是将数据源数据赋值给实体。实现方法是利用自定义属性和.NET反射机制。例如:
1 public class LWordEntity 2 { 3 /**//// <summary> 4 /// 获取或设置留言 ID 5 /// </summary> 6 [DataColumn(ColumnName = "LWordUID")] 7 public int LWordUID 8 { 9 // 10 } 11 12 /**//// <summary> 13 /// 获取或设置发送用户 14 /// </summary> 15 [DataColumn(ColumnName = "PostUser")] 16 public string PostUser 17 { 18 // 19 } 20 21 /**//// <summary> 22 /// 获取或设置发送时间 23 /// </summary> 24 [DataColumn(ColumnName = "PostTime")] 25 public DateTime PostTime 26 { 27 // 28 } 29 30 /**//// <summary> 31 /// 获取或设置文本内容 32 /// </summary> 33 [DataColumn(ColumnName = "TextContent")] 34 public string TextContent 35 { 36 // 37 } 38 }
  DataColumn是自定义的属性类,代码并不复杂所以在这里也就省略了。接下来需要通过反射读取自定义属性,并赋值。代码如下:
1 public void PutEntityProperties(object objEntity, DbDataReader dr) 2 { 3 // 获取实体类型 4 Type objType = objEntity.GetType(); 5 6 // 获取属性信息 7 PropertyInfo[] propInfoList = objType.GetProperties(); 8 9 if (propInfoList == null || propInfoList.Length <= 0) 10 return; 11 12 foreach (PropertyInfo propInfo in propInfoList) 13 { 14 object[] colAttrList = propInfo.GetCustomAttributes(typeof(DataColumnAttribute), false); 15 16 // 未标记 DataColumn 属性 17 if (colAttrList == null || colAttrList.Length <= 0) 18 continue; 19 20 // 获取数据列属性 21 DataColumnAttribute colAttr = colAttrList[0] as DataColumnAttribute; 22 23 int ordinal = -1; 24 25 try 26 { 27 // 获取数据列序号 28 ordinal = dr.GetOrdinal(colAttr.ColumnName); 29 } 30 catch (Exception ex) 31 { 32 throw new MappingException( 33 String.Format("{0} 未找到该数据列( Cannot Found this Column {0} )", colAttr.ColumnName), ex); 34 } 35 36 // 获取数据列值 37 object objValue = dr.GetValue(ordinal); 38 39 if (objValue is DBNull) 40 { 41 // 将 null 值设置到属性 42 propInfo.SetValue(objEntity, null, null); 43 } 44 else 45 { 46 // 将值设置到属性 47 propInfo.SetValue(objEntity, objValue, null); 48 } 49 } 50 } 51

上一页
1
2下一页
收藏到: 添加到“百度搜藏”添加到“QQ书签”添加到“Google书签”添加到“Yahoo收藏”添加到“和讯网摘”
【内容导航】
本文欢迎转载,转载请注明:转载自IT168 [ http://www.it168.com/ ]
本文链接:http://tech.it168.com/d/2008-07-07/200807071414618.shtml
技术开发相关文章  
  • 暂无
友情推介