⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 entity.cs

📁 实现数据库中实体到类的动态映射,通过映射可方便的实现数据库记录的增删改查等操作.
💻 CS
字号:
using System;
using System.Collections;
using System.Data;



namespace EntityMapping
{
	/// <summary>
	/// Entity 的摘要说明。
	/// </summary>
	public class Entity
	{
		public Entity()
		{
			//
			// TODO: 在此处添加构造函数逻辑
			//
		}
		
		/// <summary>
		/// 记录着实体包括的属性和属性值.
		/// Hashtable的key对应数据库中的字段的名称,value对应一条记录的值。
		/// </summary>
		private Hashtable m_Attribute = new Hashtable();

		/// <summary>
		/// 实体对应的表名
		/// </summary>
		private string m_TableName;	
	
		/// <summary>
		/// 实体在实体集合中的索引
		/// </summary>
		private int m_IndexInEntitySet;		
		
	

		/// <summary>
		/// 获取实体包括的属性和属性值.
		/// </summary>
		public Hashtable Attribute
		{
			get
			{
				return m_Attribute;
			}
			
		}

		/// <summary>
		/// 获取属性的个数
		/// </summary>
		public int AttributeCount
		{
			get
			{
				return m_Attribute.Count;
			}
		}

		/// <summary>
		/// 获取实体对应表名
		/// </summary>
		public string TableName 
		{ 
			get 
			{
				return m_TableName; 
			}	
			set 
			{
				this.m_TableName = value;
			}
		}

		/// <summary>
		/// 获取实体在实体集合中的索引
		/// </summary>
		public int IndexInEntitySet
		{
			get
			{
				return m_IndexInEntitySet;
			}
		}

		/// <summary>
		/// 给定的属性是否为空
		/// </summary>
		/// <param name="key">属性名</param>
		/// <returns>为空返回true,否则返回false</returns>
		public bool IsNull(string key)
		{
			object obj = m_Attribute[key];
			if(obj == null || obj == System.DBNull.Value)
			{
				return true;
			}
			else
			{
				string str = obj as string;
				if(str != null && str.Length == 0)
				{
					return true;
				}
				else
				{
					return false;
				}
			}

		}
//
//		public void SetAttribute(Hashtable DBAttribute)
//		{
//			this.m_Attribute = DBAttribute;
//		}

		/// <summary>
		/// 设置实体的字段属性
		/// </summary>
		/// <param name="FieldKey">字段名称</param>
		/// <param name="FieldValue">字段值</param>
		public void SetAttribute(string FieldKey,object FieldValue)
		{
			this.m_Attribute.Add(FieldKey.ToUpper(),FieldValue);
		}
		/// <summary>
		/// 获取实体对应表名
		/// </summary>
		internal void SetTableName(string TableName) 
		{ 
			this.m_TableName = TableName;		
		}

		/// <summary>
		/// 设置实体在对应实体集合中的下标
		/// </summary>
		/// <param name="index">下标</param>
		internal void SetIndexInEntitySet(int index)
		{
			this.m_IndexInEntitySet = index;
		}
		
		/// <summary>
		/// 填充实体属性数据
		/// </summary>
		/// <param name="names">属性名列表</param>
		/// <param name="values">属性值列表</param>
		/// <param name="index">实体在对应实体集合中的索引号</param>
		internal void FillData(object[] names,object[] values,int index)
		{			
			//长度不对,不于填充
			if(names.Length != values.Length)
			{
				return;
			}
			for(int i = 0;i < names.Length;i++)
			{
				//已经包括该属性
				if(m_Attribute.Contains(names[i].ToString()))
				{
					this.m_Attribute[names[i].ToString()] = values[i];
				}
				else
				{
					this.m_Attribute.Add(names[i].ToString(),values[i]);
				}
			}		
			m_IndexInEntitySet = index;
		}
		

		/// <summary>
		/// 从DataTable向实体中填充数据
		/// </summary>
		/// <param name="ds_Temp">包含数据的DataTable</param>
		/// <param name="index">填充记录在DataTable中的相对位置</param>
		internal void FillData(DataTable ds_Temp,int index)
		{
			string[] sField = new string[ds_Temp.Columns.Count];
			object[] sValue = new object[ds_Temp.Columns.Count];
			if(sField.Length != 0)
			{
				ds_Temp.Columns.CopyTo(sField,0);
				sValue = ds_Temp.Rows[index].ItemArray;
			}
			this.FillData(sField,sValue,index);
			this.m_TableName = ds_Temp.TableName;
			this.m_IndexInEntitySet = index;
			
		}

		/// <summary>
		/// 获取实体的所有属性名
		/// </summary>
		/// <returns>返回属性名数组</returns>
		public string[] GetFieldsName()
		{
			string[] names = new string[m_Attribute.Count];
			if(names.Length != 0)
			{
				m_Attribute.Keys.CopyTo(names,0);
			}
			return names;
		}

		/// <summary>
		/// 获取所有的实体属性值
		/// </summary>
		/// <returns>返回属性值数组</returns>
		public object[] GetFieldsValue()
		{
			object[] values = new object[m_Attribute.Count];
			if(values.Length != 0)
			{
				m_Attribute.Values.CopyTo(values,0);
			}
			return values;
		}

		/// <summary>
		/// 获取所有主键信息
		/// Hashtable的Key为主键字段名,Value为记录对应字段的值
		/// </summary>
		/// <returns>返回存储主键信息的Hashtable</returns>
		public Hashtable GetPKAttributes()
		{
//		{
//			Environment.EntityInfo intityInfo = Environment.RunTime.GetRunTime().GetEntityInfo(m_TableName);
//
//			if(intityInfo == null)
//			{
//
//				return null;
//			}
//
			Hashtable pkNames = new Hashtable();
//			foreach(string pkName in intityInfo.PKList)
//			{
//				pkNames.Add(pkName,m_Attribute[pkName]);
//			}
			return pkNames;
		}

		/// <summary>
		/// 由字段名获取映射名
		/// </summary>
		/// <param name="dbName">字段名</param>
		/// <returns>映射名</returns>
		public string GetMappingName(string dbName)
		{
			return null ;//m_MappingRelation.GetMappingName(dbName);
		}

		/// <summary>
		/// 由映射名获取字段名
		/// </summary>
		/// <param name="mappingName">映射名</param>
		/// <returns>字段名</returns>
		public string GetDBName(string mappingName)
		{
			return null; //m_MappingRelation.GetDBField(mappingName);
		}		
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -