- 浏览: 492406 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (329)
- [发布至博客园首页] (12)
- [随笔分类][01] .Net X (59)
- [随笔分类][20] Architecture (16)
- [随笔分类][21] Developer Logs (13)
- [网站分类]Windows 7 (1)
- [随笔分类][13] Oracle & .Net (7)
- [随笔分类][16] Love in China (14)
- [随笔分类][15] Development Tools (20)
- [随笔分类][18] Windows Phone (12)
- [随笔分类][12] Design & Pattern (17)
- [网站分类].NET新手区 (22)
- [网站分类]首页候选区 (2)
- [随笔分类][08] Windows (Server) (13)
- [随笔分类][02] CSLA.Net (3)
- [随笔分类][10] jQuery & javaScript (10)
- [随笔分类][11] SQL Server (4)
- [随笔分类][22] Enterprise Logs (3)
- [随笔分类][03] News (9)
- [随笔分类][19] Quality Assurance (2)
- [随笔分类][05] Silverlight (20)
- [随笔分类][14] Google Earth & .Net (6)
- [网站分类]非技术区 (9)
- [随笔分类][07] WWF (2)
- [随笔分类][04] SharePoint (1)
- [随笔分类][20] Analysis & Design (36)
- [随笔分类][06] WCF (5)
- [随笔分类][12] Architecture (1)
- [随笔分类][09] WPF (0)
- [随笔分类][17] VStudio & Expression (5)
最新评论
-
zhangyy130:
你好,我关于第二段的那个表视图、模型与图这三者的关系我没有看明 ...
UML模型的组成 -
guji528:
谢谢分享!
Enterprise Architect 基础应用 -
studentsky:
好文章,图文并茂!
WCF 第一个用 Visual Studio 2010 创建的WCF服务 -
chen975311486:
用哪个工具画的????
UML中对关系的描述 (二) -
frankies:
继续学习中。。
UML 交互概述图
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); } else throw 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); else obj.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 Methods private int _resourceId;//资?源?id private 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); else throw 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 Rules protected override void AddBusinessRules() { //通?过?RuleHandler委?托?,?调?用?Assignment.ValidRole方?法?,?对?Role进?行?验?证?,?这?个?方?法?在?Assignment中?定?义?,?你?可?以?看?一?下?,?是?公?用?的?方?法? //如?果?返?回?false的?话?就?是?代?表?验?证?失?败?,?true验?证?成?功? ValidationRules.AddRule( new Csla.Validation.RuleHandler( Assignment.ValidRole), "Role"); } #endregion #region Authorization Rules protected override void AddAuthorizationRules() { //只?有?ProjectManager,?才?有?权?限?修?改?Role AuthorizationRules.AllowWrite( "Role", "ProjectManager"); } #endregion #region Factory Methods internal 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 Access private 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 database if (!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 database if (!this.IsDirty) return; // if we're new then don't update the database if (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 } }
发表评论
-
[转] 面向对象设计原则
2009-08-02 14:23 623一、单一职责原则(S ... -
iBATIS.NET
2009-09-03 17:49 1404下载主页: http://ibatis.apache.org ... -
Castle
2009-09-06 16:23 694下载地址:http://www.castleproject.o ... -
CSLA.Net 3.0.5 版本 教学程序,代码附教学注释
2009-09-13 10:01 1293离开原来的公司后,就 ... -
Enterprise Library 4.1 Caching Block 图文笔记
2009-10-03 23:06 1490一,下载并安装好Enterprise Library ... -
Enterprise Library 4.1 Logging Block 快速使用图文笔记
2009-10-04 12:06 1618一,下载并安装好Enterprise Library ... -
Enterprise Library 4.1 Data Access Block 快速使用图文笔记
2009-10-04 17:30 1271一,下载并安装好Enterprise Library 4. ... -
Enterprise Library 4.1 Cryptography Block 快速使用图文笔记
2009-10-04 20:10 710哈希算法------ http://baike.baidu.c ... -
Enterprise Library 4.1 Security Block 快速使用图文笔记
2009-10-05 08:33 900.Net 2.0 开始,从前Security Block 一部 ... -
Enterprise Library 4.1 Application Settings 快速使用图文笔记
2009-10-05 08:41 875Application Settings 可以使我们运用企业库 ... -
Unity Application Block 1.2 图文学习笔记
2009-10-05 09:05 715此内容将会在数星期后学习 -
Enterprise Library 4.1 Policy Injection Block 快速使用图文笔记
2009-10-05 09:09 716示例源码下载:EL41Sample.rarEnterprise ... -
Enterprise Library 4.1 Instrumentation 快速使用图文笔记
2009-10-05 09:17 743示例源码下载:EL41Sample.rarEnterprise ... -
CSLA.Net 3.0.5 项目管理示例 业务基类 Project.cs
2009-10-06 09:39 1154using System; using System.Coll ... -
CSLA.Net 3.0.5 项目管理示例 名值列表基类、只读基类、业务负责人基类
2009-10-06 10:01 718using System; using System.Da ... -
CSLA.Net 3.0.5 项目管理示例 UI ProjectEdit.aspx
2009-10-06 10:23 877<%@ Page Language="C#&q ...
相关推荐
[CSLA.NET] Using CSLA 4 eBook Series ☆ 图书概要:☆ The Using CSLA 4 ebook series will teach you how to use CSLA 4 to create powerful object-oriented business layers for your applications, as well ...
CSLA.NET 框架成为了微软.NET 平台上最广泛应用的开发框架之一,本书介绍了CSLA.NET 3.6 架构背后的构思过程,描述了怎样搭建支持这个架构的框架,如何创建应用程序的业务对象,并且展示了如何使用这个框架创建基于...
《#企业应用开发艺术CSLA.NET框架开发实战》(Expert C#2008 Business Objects)配套源码及例程csla-4.5.700。 CSLA .NET is a software development framework that helps you build a reusable, maintainable ...
[Apress] CSLA .NET 框架企业应用开发艺术 (2008 版本) (英文版) [Apress] Expert C# 2008 Business Objects (E-Book) ☆ 图书概要:☆ In Rockford Lhotka’s Expert C# 2008 Business Objects, you’ll learn ...
C#企业应用开发艺术CSLA.NET框架开发实战.part1.rar(PDF加源码)
CSLA 4 ebook series -- Using CSLA 4 CSLA .NET Overview
Visual Studio CSLA Extension for ADO.NET Entity Framework. Visual Studio extension and T4 templates for generation of CSLA objects from ADO.NET Entity Framework model. CSLA.NET框架面向实体框架的代码...
CSLA.NET框架源码和实例,包括ProjectTracker等。
csla.net最新的源码版本
CSLA.NET是一个在分布式环境下只通过修改配置文件就可以实现N层部署的框架. 它致力于构建丰富,强大而灵活的业务层,包含了验证,权限,数据门户等标准化的解决方案,使你的业务对象更加标准和灵活.它提出了移动对象...
框架的各个功能基本都实现 是作者写的一个小例子 一直贯穿着整个书的 是3.8.4版本
C#企业应用开发艺术CSLA.NET框架开发实战.rar,包括本书源码
His industry-standard VB .NET Business Objects book not only addresses changes in .NET 2.0 and Visual Studio 2005, but also reflects substantial enhancements and improvements to the CSLA .NET ...
一个最完整的基于Csla.net的vb源代码,由comexpress生成,学习CSLA 的好资料。
C#企业应用开发艺术CSLA.NET框架开发实战
☆☆ 资源说明:☆☆ CSLA .NET 4.3.14 (C#) 框架版本: .NET Framework 4 Silverlight 5 Silverlight 4 Windows Phone 7.5 Mono MonoDroid
C#企业应用开发艺术CSLA.NET框架 4.5,带源码和实例
C#企业应用开发艺术CSLA.NET框架开发实战.part2.rar
☆ 版本如下:☆ 1.53 2.0 2.0.1 2.0.2 2.0.3 2.1 2.1.1 2.1.2 2.1.3 2.1.4 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.5.0 3.5.1 3.5.2 3.5.3 3.6.0 3.6.1 3.6.2 3.6.3 3.7.0
CSLA .NET是一个.NET软件开发框架,帮助开发者“为Windows、Web、面向服务和工作流等应用构建强大和可维护的业务逻辑层”。 CSLA是Component-based, Scalable, Logical Architecture的简写,CSLA . NET是Rockford ...