// // 這個檔案是 場地 資料表的資料存取類別 檔案一 // 請不要修改這個檔案,重新產生資料存取類別時,這個檔案會被覆蓋掉 // using System; using System.Collections.Generic; using System.Text; using System.ComponentModel; using System.Data; using System.Data.Common; using System.Transactions; using WebLib; using System.Data.SqlClient; namespace Education { /// /// 場地 資料存取類別 /// [DataObject] public partial class DAC_場地 : WebLib.DAC { private string _tableName = "場地"; private string _select = "select 編號, 單位名稱, 場地名稱, 場地類型, 價格, 坪數, 容納人數, 地址_郵編, 地址_縣市, 地址_鄉鎮市區, 地址_街道地址, 捷運可到, 捷運分鐘, 公車可到, 公車分鐘, 火車可到, 火車分鐘, 步行可到, 步行分鐘, 設備提供, 聯絡人, 聯絡人電話, 電子郵件, 傳真, 備註, DB_APPNO, DB_CRDAT, DB_CRUSR, DB_TRDAT, DB_TRUSR"; private string _insert = "單位名稱, 場地名稱, 場地類型, 價格, 坪數, 容納人數, 地址_郵編, 地址_縣市, 地址_鄉鎮市區, 地址_街道地址, 捷運可到, 捷運分鐘, 公車可到, 公車分鐘, 火車可到, 火車分鐘, 步行可到, 步行分鐘, 設備提供, 聯絡人, 聯絡人電話, 電子郵件, 傳真, 備註, DB_APPNO, DB_CRDAT, DB_CRUSR, DB_TRDAT, DB_TRUSR"; private string _insertValue = "@單位名稱, @場地名稱, @場地類型, @價格, @坪數, @容納人數, @地址_郵編, @地址_縣市, @地址_鄉鎮市區, @地址_街道地址, @捷運可到, @捷運分鐘, @公車可到, @公車分鐘, @火車可到, @火車分鐘, @步行可到, @步行分鐘, @設備提供, @聯絡人, @聯絡人電話, @電子郵件, @傳真, @備註, @DB_APPNO, @DB_CRDAT, @DB_CRUSR, @DB_TRDAT, @DB_TRUSR"; private string _from = " from 場地 "; private string _where = " where 1=1 "; private string _order = " order by 編號 "; public DAC_場地() : base() { } public DAC_場地(DbConnection conn) : base(conn) { } [DataObjectMethod(DataObjectMethodType.Select)] public 場地List SelectAll() { 場地List result = new 場地List(); IDataList list = result as IDataList; DbCommand cmdSelect = NewCommand(); cmdSelect.CommandText = _select + _from + _where + _order; Select(cmdSelect, ref list); return result; } [DataObjectMethod(DataObjectMethodType.Select)] public 場地List SelectOne(int 編號) { 場地List result = new 場地List(); IDataList list = result as IDataList; DbCommand cmdSelect = NewCommand(); cmdSelect.CommandText = _select + _from + _where + " and 編號 = @編號 " ; AddParam(cmdSelect, "編號", 編號); Select(cmdSelect, ref list); return result; } [DataObjectMethod(DataObjectMethodType.Insert)] public int InsertOne(場地 value) { using (TransactionScope ts = new TransactionScope(TransactionScopeOption.Required)) { try { if (!BeforeInsertOne(value)) return -1; DbCommand cmdInsert = NewCommand(); cmdInsert.CommandText = "insert into 場地" + " (" + _insert + ")" + "values " + " (" + _insertValue + ");" + "select @@identity" ; AddParam(cmdInsert, "單位名稱", value.單位名稱); AddParam(cmdInsert, "場地名稱", value.場地名稱); AddParam(cmdInsert, "場地類型", value.場地類型); AddParam(cmdInsert, "價格", value.價格); AddParam(cmdInsert, "坪數", value.坪數); AddParam(cmdInsert, "容納人數", value.容納人數); AddParam(cmdInsert, "地址_郵編", value.地址_郵編); AddParam(cmdInsert, "地址_縣市", value.地址_縣市); AddParam(cmdInsert, "地址_鄉鎮市區", value.地址_鄉鎮市區); AddParam(cmdInsert, "地址_街道地址", value.地址_街道地址); AddParam(cmdInsert, "捷運可到", value.捷運可到); AddParam(cmdInsert, "捷運分鐘", value.捷運分鐘); AddParam(cmdInsert, "公車可到", value.公車可到); AddParam(cmdInsert, "公車分鐘", value.公車分鐘); AddParam(cmdInsert, "火車可到", value.火車可到); AddParam(cmdInsert, "火車分鐘", value.火車分鐘); AddParam(cmdInsert, "步行可到", value.步行可到); AddParam(cmdInsert, "步行分鐘", value.步行分鐘); AddParam(cmdInsert, "設備提供", value.設備提供); AddParam(cmdInsert, "聯絡人", value.聯絡人); AddParam(cmdInsert, "聯絡人電話", value.聯絡人電話); AddParam(cmdInsert, "電子郵件", value.電子郵件); AddParam(cmdInsert, "傳真", value.傳真); AddParam(cmdInsert, "備註", value.備註); AddParam(cmdInsert, "DB_APPNO", 1); AddParam(cmdInsert, "DB_CRDAT", DateTime.UtcNow.AddHours(8)); AddParam(cmdInsert, "DB_CRUSR", CurrentUserId); AddParam(cmdInsert, "DB_TRDAT", DBNull.Value); AddParam(cmdInsert, "DB_TRUSR", DBNull.Value); int newId; ExecuteScalar(cmdInsert, out newId); AfterInsertOne(value); ts.Complete(); return newId; } catch (Exception error) { bool handled; OnInsertOneError(error, out handled); if(!handled) throw error; return -1; } } } [DataObjectMethod(DataObjectMethodType.Update)] public int UpdateOne(場地 value) { using (TransactionScope ts = new TransactionScope(TransactionScopeOption.Required)) { try { if (!BeforeUpdateOne(value)) return -1; 場地List oldValues = SelectOne(value.編號); if (oldValues.Count == 0 || oldValues[0].DB_APPNO != value.DB_APPNO) { throw new DBConcurrencyException("在更新 \"場地\" 資料表時發生並行例外:找不到要更新的資料列"); } DbCommand cmdUpdate = NewCommand(); cmdUpdate.CommandText = @"update 場地 set 單位名稱 = @單位名稱 , 場地名稱 = @場地名稱 , 場地類型 = @場地類型 , 價格 = @價格 , 坪數 = @坪數 , 容納人數 = @容納人數 , 地址_郵編 = @地址_郵編 , 地址_縣市 = @地址_縣市 , 地址_鄉鎮市區 = @地址_鄉鎮市區 , 地址_街道地址 = @地址_街道地址 , 捷運可到 = @捷運可到 , 捷運分鐘 = @捷運分鐘 , 公車可到 = @公車可到 , 公車分鐘 = @公車分鐘 , 火車可到 = @火車可到 , 火車分鐘 = @火車分鐘 , 步行可到 = @步行可到 , 步行分鐘 = @步行分鐘 , 設備提供 = @設備提供 , 聯絡人 = @聯絡人 , 聯絡人電話 = @聯絡人電話 , 電子郵件 = @電子郵件 , 傳真 = @傳真 , 備註 = @備註 , DB_APPNO = DB_APPNO + 1, DB_TRDAT = @DB_TRDAT, DB_TRUSR = @DB_TRUSR where 1=1 and 編號 = @original_編號 and DB_APPNO = @original_DB_APPNO "; AddParam(cmdUpdate, "單位名稱", value.單位名稱); AddParam(cmdUpdate, "場地名稱", value.場地名稱); AddParam(cmdUpdate, "場地類型", value.場地類型); AddParam(cmdUpdate, "價格", value.價格); AddParam(cmdUpdate, "坪數", value.坪數); AddParam(cmdUpdate, "容納人數", value.容納人數); AddParam(cmdUpdate, "地址_郵編", value.地址_郵編); AddParam(cmdUpdate, "地址_縣市", value.地址_縣市); AddParam(cmdUpdate, "地址_鄉鎮市區", value.地址_鄉鎮市區); AddParam(cmdUpdate, "地址_街道地址", value.地址_街道地址); AddParam(cmdUpdate, "捷運可到", value.捷運可到); AddParam(cmdUpdate, "捷運分鐘", value.捷運分鐘); AddParam(cmdUpdate, "公車可到", value.公車可到); AddParam(cmdUpdate, "公車分鐘", value.公車分鐘); AddParam(cmdUpdate, "火車可到", value.火車可到); AddParam(cmdUpdate, "火車分鐘", value.火車分鐘); AddParam(cmdUpdate, "步行可到", value.步行可到); AddParam(cmdUpdate, "步行分鐘", value.步行分鐘); AddParam(cmdUpdate, "設備提供", value.設備提供); AddParam(cmdUpdate, "聯絡人", value.聯絡人); AddParam(cmdUpdate, "聯絡人電話", value.聯絡人電話); AddParam(cmdUpdate, "電子郵件", value.電子郵件); AddParam(cmdUpdate, "傳真", value.傳真); AddParam(cmdUpdate, "備註", value.備註); AddParam(cmdUpdate, "DB_TRDAT", DateTime.UtcNow.AddHours(8)); AddParam(cmdUpdate, "DB_TRUSR", CurrentUserId); AddParam(cmdUpdate, "original_編號", value.編號); AddParam(cmdUpdate, "original_DB_APPNO", value.DB_APPNO); int rowsAffected = ExecuteNonQuery(cmdUpdate); AfterUpdateOne(value); ts.Complete(); return rowsAffected; } catch (Exception error) { bool handled; OnUpdateOneError(error, out handled); if(!handled) throw error; return -1; } } } [DataObjectMethod(DataObjectMethodType.Delete)] public int DeleteOne(int 編號, int DB_APPNO) { using (TransactionScope ts = new TransactionScope(TransactionScopeOption.Required)) { try { if (!BeforeDeleteOne(編號, DB_APPNO)) return -1; 場地List oldValues = SelectOne(編號); if (oldValues.Count == 0 || oldValues[0].DB_APPNO != DB_APPNO) { throw new DBConcurrencyException("在刪除 \"場地\" 資料表時發生並行例外:找不到要刪除的資料列"); } DbCommand cmdDelete = NewCommand(); cmdDelete.CommandText = @"delete from 場地 where 1=1 and 編號 = @編號 and DB_APPNO = @DB_APPNO "; AddParam(cmdDelete, "編號", 編號); AddParam(cmdDelete, "DB_APPNO", DB_APPNO); int rowsAffected = ExecuteNonQuery(cmdDelete); AfterDeleteOne(編號, DB_APPNO); ts.Complete(); return rowsAffected; } catch (Exception error) { bool handled; OnDeleteOneError(error, out handled); if(!handled) throw error; return -1; } } } [DataObjectMethod(DataObjectMethodType.Delete)] public int DeleteOne(場地 value) { using (TransactionScope ts = new TransactionScope(TransactionScopeOption.Required)) { try { if (!BeforeDeleteOne(value)) return -1; 場地List oldValues = SelectOne(value.編號); if (oldValues.Count == 0 || oldValues[0].DB_APPNO != value.DB_APPNO) { throw new DBConcurrencyException("在刪除 \"場地\" 資料表時發生並行例外:找不到要刪除的資料列"); } DbCommand cmdDelete = NewCommand(); cmdDelete.CommandText = @"delete from 場地 where 1=1 and 編號 = @編號 and DB_APPNO = @DB_APPNO "; AddParam(cmdDelete, "編號", value.編號); AddParam(cmdDelete, "DB_APPNO", value.DB_APPNO); int rowsAffected = ExecuteNonQuery(cmdDelete); AfterDeleteOne(value); ts.Complete(); return rowsAffected; } catch (Exception error) { bool handled; OnDeleteOneError(error, out handled); if(!handled) throw error; return -1; } } } public bool IsDuplicate(int 編號) { DbCommand cmdSelect = NewCommand(); cmdSelect.CommandText = "select count(1)" + _from + _where + " and 編號 = @編號 " ; AddParam(cmdSelect, "編號", 編號); int count; ExecuteScalar(cmdSelect, out count); return count > 0; } } /// /// 場地 資料集合類別 /// public partial class 場地List : List<場地>, IDataList { public void Fill(DbDataReader reader) { while (reader.Read()) { 場地 newItem = new 場地(); newItem.編號 = DAC.GetInt32(reader[0]); newItem.單位名稱 = DAC.GetString(reader[1]); newItem.場地名稱 = DAC.GetString(reader[2]); newItem.場地類型 = DAC.GetString(reader[3]); newItem.價格 = DAC.GetInt32(reader[4]); newItem.坪數 = DAC.GetInt32(reader[5]); newItem.容納人數 = DAC.GetInt32(reader[6]); newItem.地址_郵編 = DAC.GetString(reader[7]); newItem.地址_縣市 = DAC.GetString(reader[8]); newItem.地址_鄉鎮市區 = DAC.GetString(reader[9]); newItem.地址_街道地址 = DAC.GetString(reader[10]); newItem.捷運可到 = DAC.GetString(reader[11]); newItem.捷運分鐘 = DAC.GetInt32(reader[12]); newItem.公車可到 = DAC.GetString(reader[13]); newItem.公車分鐘 = DAC.GetInt32(reader[14]); newItem.火車可到 = DAC.GetString(reader[15]); newItem.火車分鐘 = DAC.GetInt32(reader[16]); newItem.步行可到 = DAC.GetString(reader[17]); newItem.步行分鐘 = DAC.GetInt32(reader[18]); newItem.設備提供 = DAC.GetString(reader[19]); newItem.聯絡人 = DAC.GetString(reader[20]); newItem.聯絡人電話 = DAC.GetString(reader[21]); newItem.電子郵件 = DAC.GetString(reader[22]); newItem.傳真 = DAC.GetString(reader[23]); newItem.備註 = DAC.GetString(reader[24]); newItem.DB_APPNO = DAC.GetInt32(reader[25]); newItem.DB_CRDAT = DAC.GetDateTime(reader[26]); newItem.DB_CRUSR = DAC.GetString(reader[27]); newItem.DB_TRDAT = DAC.GetDateTime(reader[28]); newItem.DB_TRUSR = DAC.GetString(reader[29]); Add(newItem); } } } /// /// 場地 資料紀錄類別 /// [Serializable] public partial class 場地 : DataItemBase { private int _編號; private string _單位名稱; private string _場地名稱; private string _場地類型; private int _價格; private int _坪數; private int _容納人數; private string _地址_郵編; private string _地址_縣市; private string _地址_鄉鎮市區; private string _地址_街道地址; private string _捷運可到; private int _捷運分鐘; private string _公車可到; private int _公車分鐘; private string _火車可到; private int _火車分鐘; private string _步行可到; private int _步行分鐘; private string _設備提供; private string _聯絡人; private string _聯絡人電話; private string _電子郵件; private string _傳真; private string _備註; #region 資料欄位 /// /// 編號 /// [DataObjectField(true, false, false)] public int 編號 { get { return _編號; } set { if (value != _編號) { _編號 = value; OnPropertyChanged("編號"); } } } /// /// 單位名稱 /// [DataObjectField(false, false, true, 50)] public string 單位名稱 { get { return _單位名稱; } set { if (value != _單位名稱) { _單位名稱 = value; OnPropertyChanged("單位名稱"); } } } /// /// 場地名稱 /// [DataObjectField(false, false, true, 50)] public string 場地名稱 { get { return _場地名稱; } set { if (value != _場地名稱) { _場地名稱 = value; OnPropertyChanged("場地名稱"); } } } /// /// 場地類型 /// [DataObjectField(false, false, true, 20)] public string 場地類型 { get { return _場地類型; } set { if (value != _場地類型) { _場地類型 = value; OnPropertyChanged("場地類型"); } } } /// /// 價格 /// [DataObjectField(false, false, true)] public int 價格 { get { return _價格; } set { if (value != _價格) { _價格 = value; OnPropertyChanged("價格"); } } } /// /// 坪數 /// [DataObjectField(false, false, true)] public int 坪數 { get { return _坪數; } set { if (value != _坪數) { _坪數 = value; OnPropertyChanged("坪數"); } } } /// /// 容納人數 /// [DataObjectField(false, false, true)] public int 容納人數 { get { return _容納人數; } set { if (value != _容納人數) { _容納人數 = value; OnPropertyChanged("容納人數"); } } } /// /// 地址_郵編 /// [DataObjectField(false, false, true, 5)] public string 地址_郵編 { get { return _地址_郵編; } set { if (value != _地址_郵編) { _地址_郵編 = value; OnPropertyChanged("地址_郵編"); } } } /// /// 地址_縣市 /// [DataObjectField(false, false, true, 10)] public string 地址_縣市 { get { return _地址_縣市; } set { if (value != _地址_縣市) { _地址_縣市 = value; OnPropertyChanged("地址_縣市"); } } } /// /// 地址_鄉鎮市區 /// [DataObjectField(false, false, true, 10)] public string 地址_鄉鎮市區 { get { return _地址_鄉鎮市區; } set { if (value != _地址_鄉鎮市區) { _地址_鄉鎮市區 = value; OnPropertyChanged("地址_鄉鎮市區"); } } } /// /// 地址_街道地址 /// [DataObjectField(false, false, true, 30)] public string 地址_街道地址 { get { return _地址_街道地址; } set { if (value != _地址_街道地址) { _地址_街道地址 = value; OnPropertyChanged("地址_街道地址"); } } } /// /// 捷運可到 /// [DataObjectField(false, false, true, 1)] public string 捷運可到 { get { return _捷運可到; } set { if (value != _捷運可到) { _捷運可到 = value; OnPropertyChanged("捷運可到"); } } } /// /// 捷運分鐘 /// [DataObjectField(false, false, true)] public int 捷運分鐘 { get { return _捷運分鐘; } set { if (value != _捷運分鐘) { _捷運分鐘 = value; OnPropertyChanged("捷運分鐘"); } } } /// /// 公車可到 /// [DataObjectField(false, false, true, 1)] public string 公車可到 { get { return _公車可到; } set { if (value != _公車可到) { _公車可到 = value; OnPropertyChanged("公車可到"); } } } /// /// 公車分鐘 /// [DataObjectField(false, false, true)] public int 公車分鐘 { get { return _公車分鐘; } set { if (value != _公車分鐘) { _公車分鐘 = value; OnPropertyChanged("公車分鐘"); } } } /// /// 火車可到 /// [DataObjectField(false, false, true, 1)] public string 火車可到 { get { return _火車可到; } set { if (value != _火車可到) { _火車可到 = value; OnPropertyChanged("火車可到"); } } } /// /// 火車分鐘 /// [DataObjectField(false, false, true)] public int 火車分鐘 { get { return _火車分鐘; } set { if (value != _火車分鐘) { _火車分鐘 = value; OnPropertyChanged("火車分鐘"); } } } /// /// 步行可到 /// [DataObjectField(false, false, true, 1)] public string 步行可到 { get { return _步行可到; } set { if (value != _步行可到) { _步行可到 = value; OnPropertyChanged("步行可到"); } } } /// /// 步行分鐘 /// [DataObjectField(false, false, true)] public int 步行分鐘 { get { return _步行分鐘; } set { if (value != _步行分鐘) { _步行分鐘 = value; OnPropertyChanged("步行分鐘"); } } } /// /// 設備提供 /// [DataObjectField(false, false, true, 1000)] public string 設備提供 { get { return _設備提供; } set { if (value != _設備提供) { _設備提供 = value; OnPropertyChanged("設備提供"); } } } /// /// 聯絡人 /// [DataObjectField(false, false, true, 50)] public string 聯絡人 { get { return _聯絡人; } set { if (value != _聯絡人) { _聯絡人 = value; OnPropertyChanged("聯絡人"); } } } /// /// 聯絡人電話 /// [DataObjectField(false, false, true, 50)] public string 聯絡人電話 { get { return _聯絡人電話; } set { if (value != _聯絡人電話) { _聯絡人電話 = value; OnPropertyChanged("聯絡人電話"); } } } /// /// 電子郵件 /// [DataObjectField(false, false, true, 50)] public string 電子郵件 { get { return _電子郵件; } set { if (value != _電子郵件) { _電子郵件 = value; OnPropertyChanged("電子郵件"); } } } /// /// 傳真 /// [DataObjectField(false, false, true, 50)] public string 傳真 { get { return _傳真; } set { if (value != _傳真) { _傳真 = value; OnPropertyChanged("傳真"); } } } /// /// 備註 /// [DataObjectField(false, false, true, 1000)] public string 備註 { get { return _備註; } set { if (value != _備註) { _備註 = value; OnPropertyChanged("備註"); } } } #endregion } }