日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

CSLA.Net 3.0.5 项目管理示例 业务集合基类(ProjectResources.cs,ProjectResource.cs)

發布時間:2024/4/14 asp.net 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CSLA.Net 3.0.5 项目管理示例 业务集合基类(ProjectResources.cs,ProjectResource.cs) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
using System; using System.Data; using System.Data.SqlClient; using Csla; using Csla.Data;namespace ProjectTracker.Library {/// <summary>/// 此?類?的?主?要?功?能?用?于?給?Project提?供?對?其?關?聯?子?對?象?的?集?合?的?一?個?維?護?和?映?射?,?Project----ProjectResources----ProjectResource/// 她?是?一?個?集?合?,?是?父?對?象?組?織?子?對?象?的?一?個?集?合?/// ,?提?供?用?于?托?管?包?含?的?子?類?,?比?較?,?添?加?,?刪?除?子?對?象?等?/// /// </summary>[Serializable()]public class ProjectResources : BusinessListBase<ProjectResources, ProjectResource>{#region Business Methods/// <summary>/// 獲?得?一?個?項?目?集?合?中?的?項?目?資?源?對?象?(?)?/// </summary>/// <param name="resourceId">項?目?資?源?ID</param>/// <returns></returns>public ProjectResource GetItem(int resourceId){//從?當?前?對?象?集?合?中?搜?索?其?中?的?子?對?象?,?比?較?參?數?ID,?相?等?則?返?回?foreach (ProjectResource res in this)if (res.ResourceId == resourceId)return res;return null;}/// <summary>/// 通?過?指?定?的?ID值?,?像?當?前?集?合?中?加?入?子?對?象?,?分?配?/// </summary>/// <param name="resourceId">待?加?入?子?對?象?的?ID</param>public void Assign(int resourceId){if (!Contains(resourceId)){ProjectResource resource = ProjectResource.NewProjectResource(resourceId);this.Add(resource);}elsethrow new InvalidOperationException("資?源?已?經?在?項?目?中?存?在?");}/// <summary>/// 從?集?合?中?移?除?一?個?資?源?子?對?象?/// </summary>/// <param name="resourceId">待?移?除?子?對?象?id</param>public void Remove(int resourceId){foreach (ProjectResource res in this){if (res.ResourceId == resourceId){//從?集?合?類?中?移?除?,?集?合?類?是?一?個?泛?型?,?由?于?BusinessListBase集?成?自?集?合?基?類?,?所?以?他?也?同?時?擁?有?集?合?的?方?法?//Remove,Add等?,?這?個?操?作?應?該?將?數?據?放?到?DEleteList中?Remove(res);break;}}}/// <summary>/// 檢?查?集?合?中?是?否?包?含?此?子?對?象?,?如?果?包?含?返?回?True,?否?則?返?回?false/// </summary>/// <param name="resourceId">子?對?象?ID,?資?源?id用?的?是?整?型?</param>/// <returns></returns>public bool Contains(int resourceId){foreach (ProjectResource res in this)if (res.ResourceId == resourceId)return true;return false;}/// <summary>/// 在?刪?除?已?刪?除?的?集?合?中?搜?索?子?對?象?的?存?在?/// </summary>/// <param name="resourceId"></param>/// <returns></returns>public bool ContainsDeleted(int resourceId){foreach (ProjectResource res in DeletedList)if (res.ResourceId == resourceId)return true;return false;}#endregion#region Factory Methods/// <summary>/// 內?聯?工?廠?,?代?表?同?一?個?程?序?集?中?調?用?,?因?為?他?只?是?提?供?給?project對?象?在?創?建?的?時?候?同?時?被?創?建?的?一?個?方?法?,?調?用?請?看?project/// 而?UI不?會?去?使?用?她?/// </summary>/// <returns></returns>internal static ProjectResources NewProjectResources(){return new ProjectResources();}/// <summary>/// 通?過?dr獲?得?一?個?集?合?/// </summary>/// <param name="dr"></param>/// <returns></returns>internal static ProjectResources GetProjectResources(SafeDataReader dr){//調?用?帶?參?數?的?構?造?器?return new ProjectResources(dr);}/// <summary>/// 默?認?構?造?器?/// </summary>private ProjectResources(){//標?記?為?子?關?系?MarkAsChild();}/// <summary>/// 帶?參?數?的?構?造?器?/// </summary>/// <param name="dr"></param>private ProjectResources(SafeDataReader dr){MarkAsChild();Fetch(dr);}#endregion#region Data Access// c從?數?據?看?加?載?數?據?private void Fetch(SafeDataReader dr){//將?列?表?更?改?事?件?暫?時?設?置?為?失?效?,?增?加?效?率?(?)?this.RaiseListChangedEvents = false;while (dr.Read())this.Add(ProjectResource.GetResource(dr));//DR傳?個?子?對?象?用?于?初?始?化?一?個?子?對?象?//啟?用?事?件?this.RaiseListChangedEvents = true;}/// <summary>/// (?)?,?這?個?方?法?是?內?聯?方?法?,?因?為?她?只?是?Project來?調?用?的?/// 托?管?讓?每?一?個?子?對?象?都?做?相?應?的?操?作?/// </summary>/// <param name="project"></param>internal void Update(Project project){this.RaiseListChangedEvents = false;// update (thus deleting) any deleted child objects//從?已?刪?除?列?表?中?輪?尋?每?一?個?元?素?調?用?其?刪?除?自?身?方?法?,?注?意?他?們?要?傳?入?其?關?聯?的?項?目?對?象?foreach (ProjectResource obj in DeletedList)obj.DeleteSelf(project);//從?數?據?庫?中?刪?除?(?)?// now that they are deleted, remove them from memory too//將?DeletedList從?系?統?緩?存?中?移?除?掉?所?有?的?元?素?,?deletedList被?清?空?,?同?步?數?據?庫?DeletedList.Clear();// add/update any current child objects// 再?來?看?看?添?加?和?更?新?是?如?何?實?現?的?,?同?樣?要?傳?入?相?應?關?聯?的?項?目?對?象?// 輪?尋?每?一?個?子?元?素?,?查?看?其?標?志?,?如?果?是?新?的?就?調?用?子?對?象?的?插?入?方?法?// 如?果?不?是?新?的?,?那?么?就?調?用?更?新?方?法?foreach (ProjectResource obj in this){//根?據?子?對?象?的?狀?態?調?用?合?適?的?方?法?if (obj.IsNew)obj.Insert(project);elseobj.Update(project);}this.RaiseListChangedEvents = true;}#endregion} }

?

using System; using System.Data; using System.Data.SqlClient; using Csla; using Csla.Data; using Csla.Validation;namespace ProjectTracker.Library {/// <summary>/// 此?類?為?分?配?資?源?類?,?用?于?和?ProjectResources類?合?作?為?Project處?理?分?配?給?項?目?的?資?源?的?類?、?/// 集?成?子?業?務?基?類?,?與?project是?相?同?的?,?但?是?她?還?集?成?自?一?個?IholdRoles接?口?/// 這?個?類?只?提?供?給?ProjectResources使?用?/// </summary>[Serializable()]public class ProjectResource : BusinessBase<ProjectResource>, IHoldRoles{#region Business Methodsprivate int _resourceId;//資?源?idprivate string _firstName = string.Empty;//名?字?private string _lastName = string.Empty;//姓?氏?private SmartDate _assigned;//分?配?日?期?private int _role;//職?位?private byte[] _timestamp = new byte[8];//時?間?戳?,?用?于?處?理?并?發?修?改?的?情?況?,?先?寫?者?贏?的?樂?觀?并?發?//表?明?特?性?,?表?示?是?主?鍵?,?但?是?并?不?一?定?是?唯?一?的?可?識?別?值?[System.ComponentModel.DataObjectField(false, true)]public int ResourceId{[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]get{CanReadProperty(true);return _resourceId;}}public string FirstName{[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]get{CanReadProperty(true);return _firstName;}}public string LastName{[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]get{CanReadProperty(true);return _lastName;}}/// <summary>/// 全?名?屬?性?/// </summary>public string FullName{[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]get{if (CanReadProperty("FirstName") && CanReadProperty("LastName"))return string.Format("{0}, {1}", LastName, FirstName);elsethrow new System.Security.SecurityException( "沒?有?讀?取?權?限?");}}/// <summary>/// 分?配?日?期?/// </summary>public string Assigned{[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]get{CanReadProperty(true);//獲?取?時?間?的?文?本?return _assigned.Text;}}public int Role{[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]get{CanReadProperty(true);return _role;}[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]set{CanWriteProperty(true);//如?果?不?重?復?則?更?改?if (!_role.Equals(value)){_role = value;//1調?用?對?數?據?驗?證?規?則?的?檢?查?AddBusinessRules,2,IsDirty標?記?已?經?修?改?,//3,出?發?屬?性?更?改?事?件?提?供?給?UI刷?新?的?警?示?(411),?發?生?變?化?就?要?調?用?此?方?法?PropertyHasChanged();}}}//獲?得?資?源?public Resource GetResource(){return Resource.GetResource(_resourceId);}//提?供?Id,?是?為?了?支?持?Object的?,?Equals().toString(),GetHashCode()protected override object GetIdValue(){return _resourceId;}#endregion#region Validation Rulesprotected override void AddBusinessRules(){//通?過?RuleHandler委?托?,?調?用?Assignment.ValidRole方?法?,?對?Role進?行?驗?證?,?這?個?方?法?在?Assignment中?定?義?,?你?可?以?看?一?下?,?是?公?用?的?方?法?//如?果?返?回?false的?話?就?是?代?表?驗?證?失?敗?,?true驗?證?成?功?ValidationRules.AddRule( new Csla.Validation.RuleHandler( Assignment.ValidRole), "Role");}#endregion#region Authorization Rulesprotected override void AddAuthorizationRules(){//只?有?ProjectManager,?才?有?權?限?修?改?RoleAuthorizationRules.AllowWrite( "Role", "ProjectManager");}#endregion#region Factory Methodsinternal static ProjectResource NewProjectResource(int resourceId){//調?用?構?造?器?初?始?化?,?,?獲?得?一?個?資?源?,?,?給?予?一?個?默?認?職?位?return new ProjectResource( Resource.GetResource(resourceId), RoleList.DefaultRole());}internal static ProjectResource GetResource(SafeDataReader dr){//調?用?構?造?器?初?始?化?return new ProjectResource(dr);}//默?認?構?造?private ProjectResource(){//標?記?為?子?很?重?要?,?必?須?的?MarkAsChild();}/// <summary>/// 通?過?一?個?已?有?資?源?,?和?一?個?職?位?來?構?造?一?個?ProjectResource/// </summary>/// <param name="resource"></param>/// <param name="role"></param>private ProjectResource(Resource resource, int role){MarkAsChild();_resourceId = resource.Id;_lastName = resource.LastName;_firstName = resource.FirstName;_assigned.Date = Assignment.GetDefaultAssignedDate();_role = role;}/// <summary>/// 單?參?數?構?造?,?這?個?時?候?DR是?一?個?記?錄?/// </summary>/// <param name="dr"></param>private ProjectResource(SafeDataReader dr){MarkAsChild();Fetch(dr);}#endregion#region Data Accessprivate void Fetch(SafeDataReader dr){_resourceId = dr.GetInt32("ResourceId");_lastName = dr.GetString("LastName");_firstName = dr.GetString("FirstName");_assigned = dr.GetSmartDate("Assigned");_role = dr.GetInt32("Role");//非?常?標?準?的?時?間?戳?dr.GetBytes("LastChanged", 0, _timestamp, 0, 8);//做?舊?,?因?為?此?對?象?與?數?據?庫?是?數?據?同?步?的?MarkOld();}/// <summary>/// 內?聯?的?,?當?其?父?對?象?調?用?此?對?象?時?候?判?斷?對?象?狀?態?,?isDeleted=false isnew=true,?調?用?此?方?法?/// </summary>/// <param name="project"></param>internal void Insert(Project project){// if we're not dirty then don't update the database//如?果?當?前?對?象?不?臟?也?就?是?沒?有?給?其?付?過?值?,?沒?有?必?要?更?新?到?數?據?庫?if (!this.IsDirty) return;using (SqlConnection cn = new SqlConnection(Database.PTrackerConnection)){cn.Open();//調?用?分?派?類?中?的?方?法?,?并?且?返?回?時?間?戳?//參?數?是?連?接?,?項?目?id父?id,?資?源?id子?id,?分?配?時?間?,?角?色?_timestamp = Assignment.AddAssignment(cn, project.Id, _resourceId, _assigned, _role);//做?舊?This對?象?,?因?為?她?已?經?與?數?據?庫?同?步?,?也?就?是?說?她?已?經?在?數?據?庫?中?了?,?不?是?新?的?數?據?庫?//這?個?方?法?如?果?是?在?根?對?象?數?據?門?戶?會?自?動?調?用?,?但?是?子?對?象?需?要?手?動?//這?個?方?法?會?將?isNew標?記?,?和?IsDirty標?記?設?置?為?False,?因?為?這?時?,?這?個?數?據?既?不?是?新?的?也?不?是?臟?的?MarkOld();}}internal void Update(Project project){// if we're not dirty then don't update the databaseif (!this.IsDirty) return;using (SqlConnection cn = new SqlConnection(Database.PTrackerConnection)){cn.Open();//與?Insert同?理?_timestamp = Assignment.UpdateAssignment(cn, project.Id, _resourceId, _assigned, _role, _timestamp);MarkOld();}}internal void DeleteSelf(Project project){// if we're not dirty then don't update the databaseif (!this.IsDirty) return;// if we're new then don't update the databaseif (this.IsNew) return;using (SqlConnection cn = new SqlConnection(Database.PTrackerConnection)){cn.Open();Assignment.RemoveAssignment(cn, project.Id, _resourceId);MarkNew();}}#endregion} }

?

?

//此?業?務?類?實?現?與?.0完?全?一?致? using System; using System.Collections.Generic; using System.Text; using System.Data; using System.Data.SqlClient; using Csla; using Csla.Validation; using Csla.Data; using System.Reflection;namespace ProjectTracker.Library {//定?義?這?個?接?口?是?為?了?使?子?類?提?供?,?可?以?提?供?對?Role屬?性?的?訪?問?internal interface IHoldRoles{int Role { get; set; }}/// <summary>/// 這?個?類?定?義?為?內?聯?的?,?同?時?是?靜?態?的?,?是?因?為?這?個?類?是?提?供?了?ProjectResource和?ResourceAssignmet的?通?用?方?法?的?集?合?,?因?為?/// 這?個?兩?個?對?象?都?在?操?作?這?相?同?的?數?據?,?一?個?資?源?屬?于?某?個?項?目?,?和?一?個?項?目?擁?有?多?少?資?源?在?是?一?個?含?義?/// 靜?態?類?,?是?因?為?這?個?類?沒?有?任?何?私?有?變?量?,?也?就?是?數?據?域?,?所?以?聲?明?為?靜?態?方?便?使?用?/// 此?對?象?對?Assignment表?進?行?操?作?,?這?個?表?是?一?個?中?間?表?,?用?來?存?儲?多?對?多?的?表?數?據?映?射?/// 通?用?原?則?/// </summary>internal static class Assignment{#region Business Methods/// <summary>/// 獲?得?默?認?的?分?配?時?間?/// </summary>/// <returns></returns>public static DateTime GetDefaultAssignedDate(){return DateTime.Today;}#endregion#region Validation Rules/// <summary>/// Ensure the Role property value exists/// in RoleList/// 像?上?面?的?英?文?解?釋?一?樣?,?這?個?驗?證?確?保?了?Role在?RoleList中?可?以?被?找?到?/// 這?個?方?法?是?一?個?公?用?的?驗?證?方?法?ProjectResource和?ResourceAssignmet通?過?委?托?來?調?用?這?個?方?法?驗?證?/// </summary>public static bool ValidRole(object target, RuleArgs e){int role = ((IHoldRoles)target).Role;//通?過?RoleList的?GetList獲?得?List對?象?,?RolesList對?象?擁?有?的?ContainsKey方?法?可?以?判?斷?此?id在?列?表?中?是?否?存?在?if (RoleList.GetList().ContainsKey(role))return true;else{e.Description = "職?務?必?須?在?職?務?列?表?中?存?在?";return false;}}#endregion#region Data Access/// <summary>/// 添?加?一?個?分?配?/// </summary>/// <param name="cn">連?接?</param>/// <param name="projectId">項?目?id</param>/// <param name="resourceId">資?源?id</param>/// <param name="assigned">分?配?時?間?</param>/// <param name="role">職?位?</param>/// <returns></returns>public static byte[] AddAssignment(SqlConnection cn, Guid projectId, int resourceId, SmartDate assigned, int role){using (SqlCommand cm = cn.CreateCommand()){cm.CommandText = "addAssignment";return DoAddUpdate(cm, projectId, resourceId, assigned, role);}}/// <summary>/// 更?新?一?個?分?配?/// </summary>/// <param name="cn">連?接?</param>/// <param name="projectId">項?目?id</param>/// <param name="resourceId">資?源?id</param>/// <param name="assigned">分?配?時?間?</param>/// <param name="newRole">更?新?后?的?職?位?</param>/// <param name="timestamp">時?間?戳?</param>/// <returns></returns>public static byte[] UpdateAssignment(SqlConnection cn, Guid projectId, int resourceId, SmartDate assigned, int newRole, byte[] timestamp){using (SqlCommand cm = cn.CreateCommand()){cm.CommandText = "updateAssignment";cm.Parameters.AddWithValue("@lastChanged", timestamp);return DoAddUpdate( cm, projectId, resourceId, assigned, newRole);}}/// <summary>/// 添?加?和?更?新?的?公?共?方?法?/// </summary>/// <param name="cm"></param>/// <param name="projectId"></param>/// <param name="resourceId"></param>/// <param name="assigned"></param>/// <param name="newRole"></param>/// <returns></returns>private static byte[] DoAddUpdate(SqlCommand cm, Guid projectId, int resourceId, SmartDate assigned, int newRole){cm.CommandType = CommandType.StoredProcedure;cm.Parameters.AddWithValue("@projectId", projectId);cm.Parameters.AddWithValue("@resourceId", resourceId);cm.Parameters.AddWithValue("@assigned", assigned.DBValue);cm.Parameters.AddWithValue("@role", newRole);//時?間?戳?返?回?值?SqlParameter param = new SqlParameter("@newLastChanged", SqlDbType.Timestamp);param.Direction = ParameterDirection.Output;cm.Parameters.Add(param);cm.ExecuteNonQuery();return (byte[])cm.Parameters["@newLastChanged"].Value;}/// <summary>/// 刪?除?一?個?分?配?/// </summary>/// <param name="cn"></param>/// <param name="projectId"></param>/// <param name="resourceId"></param>public static void RemoveAssignment(SqlConnection cn, Guid projectId, int resourceId){using (SqlCommand cm = cn.CreateCommand()){cm.CommandType = CommandType.StoredProcedure;cm.CommandText = "deleteAssignment";cm.Parameters.AddWithValue("@projectId", projectId);cm.Parameters.AddWithValue("@resourceId", resourceId);cm.ExecuteNonQuery();}}#endregion} }

?

代碼下載:CSLA3.0中文學習演示程序1.2.rar

轉載于:https://www.cnblogs.com/doubleyan/archive/2009/10/06/2164965.html

總結

以上是生活随笔為你收集整理的CSLA.Net 3.0.5 项目管理示例 业务集合基类(ProjectResources.cs,ProjectResource.cs)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。