亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? entityset.cs

?? 實現數據庫中實體到類的動態映射,通過映射可方便的實現數據庫記錄的增刪改查等操作.
?? CS
字號:
using System;
using System.Data;
using System.Collections;

namespace EntityMapping
{
	/// <summary>
	/// EntitySet 的摘要說明。
	/// </summary>
	public class EntitySet
	{
		public EntitySet()
		{
			//
			// TODO: 在此處添加構造函數邏輯
			//
		}
		/// <summary>
		/// 數據集
		/// </summary>
		private DataSet m_DataSource;

		/// <summary>
		/// 記錄著子類的實體類型
		/// </summary>
		protected Type m_EntityType;

		/// <summary>
		/// 實體緩存。
		/// 每次我們調用GetEntity方法取出一個實體的時候,我們首先檢查該緩存,
		/// 如果該實體已經在enableCache中有了,就直接返回。
		/// 如果沒有,就實例化一個實體,返回該實體并將該實體存入緩存。
		/// </summary>
		private Hashtable m_EntityCache;


		/// <summary>
		/// 實體集合對應的表名
		/// </summary>
		private string m_MapingTableName;

		/// <summary>
		/// 構造函數
		/// </summary>
		public EntitySet(string mapingTableName)
		{
			this.m_MapingTableName = mapingTableName;
		}

		/// <summary>
		/// 創建一個新的實體
		/// </summary>
		/// <returns></returns>
		private Entity CreateEntity()
		{
			Entity ety;
			if(m_EntityType != null)
			{
				//調用Entity或起子類類的構造函數創建Entity或其子類
				ety = (Entity)System.Activator.CreateInstance(m_EntityType);
			}
			else
			{
				ety = new Entity();
			}
			
			return ety;
		}

		/// <summary>
		/// 創建實體的屬性名
		/// </summary>
		/// <returns></returns>
		private string[] CreateAttributeNames(Entity ety)
		{
			int colCount = m_DataSource.Tables[0].Columns.Count;
			//取得列名
			string[] names = new string[colCount];
			for(int i = 0;i < colCount;i++)
			{
				string fieldName = m_DataSource.Tables[0].Columns[i].ColumnName;
				names[i] = ety.GetMappingName(fieldName);				
				if(names[i] == null)
				{
					names[i] = fieldName;
				}
			}
			return names;
		}


		/// <summary>
		/// 從實體集合中取得一個實體
		/// </summary>
		/// <param name="index">想要取的的實體下標,從0開始計數</param>
		/// <returns>返回一個實體,如果沒有返回NULL</returns>
		public Entity GetEntity(int index)
		{
			//下標超過最大限,返回null
			if(index > this.EntityCount - 1)
			{
				return null;
			}
			if(this.m_EntityCache == null)
			{
				this.m_EntityCache = new Hashtable();
			}
			//如果緩存中已經存在該實體則直接返回該實體
			if(this.m_EntityCache.Contains(index) == true)
			{
				return (Entity)this.m_EntityCache[index];
			}
			
			Entity ety = this.CreateEntity();
			string[] names = this.CreateAttributeNames(ety);
			
			//取得列值
			object[] Values = new object[names.Length];
			Values = m_DataSource.Tables[0].Rows[index].ItemArray;

			//填充數據
			ety.FillData(names,Values,index);
			
			//如果使用了緩存,則將entity放入緩存中去
			this.m_EntityCache.Add(index,ety);

			return ety;
		}
		
		/// <summary>
		/// 將一個實體添加到實體集合中去。
		/// 當實體集合的列為0時,自動添加列,并賦值;當實體集合的列不為0時,只添加實體和實體集合共有的列的值,其他沒有值的列為空
		/// </summary>
		/// <param name="ety">需要添加的實體</param>
		public void AddEntity(Entity ety)
		{
			if(this.m_DataSource == null)
			{
				this.m_DataSource = new DataSet();
				DataTable dt = new DataTable("Table");
				this.m_DataSource.Tables.Add(dt);
			}
			if(this.m_DataSource.Tables[0].Columns.Count == 0)
			{
				string[] Names = ety.GetFieldsName();
				for(int i = 0;i<Names.Length;i++ )
				{
					string dbName = ety.GetDBName(Names[i]);
					m_DataSource.Tables[0].Columns.Add(dbName);
				}
				object[] objValues = ety.GetFieldsValue();
				for(int i = 0 ; i < objValues.Length; i++)
				{
					if(objValues[i] == null || objValues[i].ToString().Length == 0)
					{
						objValues[i] = System.DBNull.Value;
					}
				}
				m_DataSource.Tables[0].Rows.Add(objValues);
				ety.SetIndexInEntitySet(0);
			}
			else
			{
				int i = 0;
				object[] objValues = new object[m_DataSource.Tables[0].Columns.Count];
				foreach(System.Data.DataColumn col in m_DataSource.Tables[0].Columns)
				{
					string dbName = ety.GetDBName(col.ColumnName);
					if(!ety.Attribute.ContainsKey(dbName))
					{
						continue;
					}
					if(ety.Attribute[dbName] != null)
					{
						if(ety.Attribute[dbName].ToString().Length == 0)
						{
							objValues[i] = System.DBNull.Value;
						}
						else
						{
							objValues[i] = ety.Attribute[dbName];
						}
					}
					else
					{
						objValues[i] = System.DBNull.Value;
					}
					i++;
				}
				ety.SetIndexInEntitySet(this.EntityCount);
				this.m_DataSource.Tables[0].Rows.Add(objValues);
			}
		}

		/// <summary>
		/// 將一個實體從EntitySet中刪除
		/// </summary>
		/// <param name="ety">需要刪除的實體</param>
		public void RemoveEntity(Entity ety)
		{
			if(ety.IndexInEntitySet > -1 && ety.IndexInEntitySet < this.EntityCount)
			{
				m_DataSource.Tables[0].Rows.RemoveAt(ety.IndexInEntitySet);
				//表示實體已不屬于該集合
				ety.SetIndexInEntitySet(-1);
			}
		}

		/// <summary>
		/// 清空緩存
		/// </summary>
		public void ClearCache()
		{
			this.m_EntityCache.Clear();
		}

		/// <summary>
		/// 取得實體的數量,該值與DataSourcce屬性的Table[0].Rows.Count的值相等
		/// </summary>
		public int EntityCount
		{
			get
			{
				if(this.m_DataSource == null || this.m_DataSource.Tables.Count == 0)
				{
					return 0;
				}
				return m_DataSource.Tables[0].Rows.Count;
			}
		}

		/// <summary>
		/// 取得,設置實體集合對應的表名
		/// </summary>
		public String MappingTableName
		{
			get
			{
				return this.m_MapingTableName;
			}
			set
			{
				this.m_MapingTableName = value;
			}
		}


		/// <summary>
		/// 獲取,設置數據集
		/// </summary>
		public DataSet DataSource 
		{ 
			get 
			{
				return this.m_DataSource;
			}
			set
			{
				this.m_DataSource = value;
			}
		}
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本亚洲天堂网| 欧美一级理论性理论a| 欧美午夜电影在线播放| 欧美日本在线看| 久久女同性恋中文字幕| 亚洲欧美日韩小说| 日韩经典一区二区| 成人一区二区三区中文字幕| 欧美最猛性xxxxx直播| 欧美白人最猛性xxxxx69交| 国产色91在线| 亚洲18色成人| 成人深夜视频在线观看| 欧美日本一道本| 欧美激情一区二区三区| 亚洲国产欧美在线| 豆国产96在线|亚洲| 欧美精品久久久久久久多人混战 | 亚洲综合图片区| 久久99热99| 97超碰欧美中文字幕| 欧美一级精品在线| 亚洲人吸女人奶水| 国内精品伊人久久久久av影院| 色综合久久综合| 欧美精品一区二区三区四区| 亚洲精品高清在线| 懂色av一区二区夜夜嗨| 欧美一区二区精品久久911| 亚洲三级久久久| 极品美女销魂一区二区三区免费| 欧美亚洲禁片免费| 国产精品女同互慰在线看| 午夜一区二区三区视频| 91在线精品一区二区| 精品国精品国产尤物美女| 亚洲亚洲人成综合网络| 高清不卡在线观看| 日韩欧美国产麻豆| 亚洲午夜精品久久久久久久久| 粉嫩一区二区三区性色av| 日韩免费观看高清完整版| 亚洲一区二区三区在线播放| 成人激情午夜影院| 欧美大片一区二区| 五月婷婷激情综合网| 91在线国产观看| 欧美极品xxx| 国产精品一品视频| 美女网站色91| 欧美美女bb生活片| 亚洲永久精品大片| 91浏览器打开| 亚洲视频免费看| 成人福利视频网站| 国产色产综合色产在线视频| 精品一区二区av| 日韩三级av在线播放| 日本免费新一区视频| 欧美日韩在线免费视频| 亚洲黄色av一区| 97成人超碰视| 一区二区三区国产精华| 99re6这里只有精品视频在线观看| 欧美国产禁国产网站cc| 高清不卡一二三区| 国产日韩影视精品| 福利视频网站一区二区三区| 久久亚洲一区二区三区明星换脸| 国产综合色视频| www欧美成人18+| 国产在线一区观看| 久久精品水蜜桃av综合天堂| 国产精品一品视频| 国产精品色噜噜| 成人av片在线观看| 亚洲丝袜精品丝袜在线| 一本色道亚洲精品aⅴ| 亚洲精品你懂的| 欧美午夜宅男影院| 日韩中文字幕区一区有砖一区 | 日产国产高清一区二区三区| 欧美日韩久久久一区| 日韩高清欧美激情| 日韩精品一区二区三区在线播放| 久久66热re国产| 久久久久国色av免费看影院| 成人一区二区三区在线观看| 综合久久综合久久| 欧美亚洲综合色| 日本中文字幕一区二区视频 | 国产精品123| 国产精品久久夜| 91国产视频在线观看| 亚洲成人自拍网| 精品区一区二区| 成人精品高清在线| 一区二区三区视频在线观看| 欧美男男青年gay1069videost | 日韩中文字幕不卡| 日韩精品一区二| 成人免费视频视频| 亚洲在线视频一区| 欧美变态tickling挠脚心| 丰满亚洲少妇av| 亚洲va欧美va人人爽午夜| 欧美一区二区福利在线| 成人自拍视频在线| 夜夜嗨av一区二区三区| 日韩欧美三级在线| 91在线视频观看| 天涯成人国产亚洲精品一区av| 91精品国产aⅴ一区二区| 国产一区二区三区四区五区美女| 国产精品短视频| 欧美乱妇20p| 成人性视频网站| 午夜欧美视频在线观看| 久久精品一二三| 欧美日韩aaaaa| 岛国av在线一区| 日本不卡123| 亚洲欧洲日韩在线| 日韩一区二区免费在线观看| 99精品视频一区| 青草av.久久免费一区| 中文字幕日韩av资源站| 欧美一级精品在线| 97se亚洲国产综合自在线| 日本vs亚洲vs韩国一区三区| 综合久久给合久久狠狠狠97色| 欧美一区二区三区在| 99re视频精品| 久久99精品国产麻豆婷婷| 亚洲免费观看高清| 久久先锋影音av| 欧美精品一卡二卡| 99久久er热在这里只有精品15 | 久久久.com| 欧美肥妇毛茸茸| 91麻豆福利精品推荐| 国产精品一线二线三线| 亚洲高清不卡在线| 亚洲欧洲成人av每日更新| 精品国产免费久久| 欧美日韩视频一区二区| youjizz国产精品| 国产一区二区三区四区五区美女| 性欧美大战久久久久久久久| 中文字幕亚洲电影| 国产视频一区二区在线| 日韩欧美国产成人一区二区| 欧美日韩的一区二区| 91蝌蚪porny| 不卡视频在线观看| 风间由美一区二区av101 | 国产精品色哟哟| 久久网站最新地址| 欧美xxxxxxxxx| 欧美精品成人一区二区三区四区| 91麻豆文化传媒在线观看| 国产成人自拍网| 加勒比av一区二区| 麻豆精品一区二区三区| 日韩精品一级中文字幕精品视频免费观看 | 日韩精品视频网站| 一卡二卡三卡日韩欧美| 1区2区3区欧美| 一区视频在线播放| 国产精品白丝在线| 国产精品福利影院| 国产精品美女久久久久久久久久久 | 亚洲sss视频在线视频| 一区二区在线观看视频在线观看| 国产精品传媒入口麻豆| 国产女同性恋一区二区| 国产日韩欧美一区二区三区乱码| 亚洲精品一区二区三区精华液| 欧美一级久久久| 欧美成人艳星乳罩| 欧美α欧美αv大片| 337p日本欧洲亚洲大胆精品| 欧美mv日韩mv亚洲| 久久久久亚洲综合| 国产午夜亚洲精品不卡| 日本一区二区免费在线观看视频| 国产三级一区二区| 国产精品欧美久久久久一区二区| 国产日韩欧美麻豆| 亚洲欧洲性图库| 亚洲一区二区三区小说| 亚洲综合久久av| 偷拍一区二区三区四区| 日韩电影免费一区| 麻豆91在线看| 成人午夜在线视频| 91社区在线播放| 欧美日本乱大交xxxxx| 欧美成人官网二区| 国产日产亚洲精品系列|