asp.net – 3层架构 – 需要一个例子
|
目前我正在使用单层架构.现在我想要学习如何使用3层架构编写代码.请给我一个简单的例子?
解决方法
这是我在项目中所拥有的.不仅仅是一个传统的3层架构.
1)应用基础设施 >所有业务对象的基类,业务对象集合,数据访问类和我的自定义属性和实用程序作为扩展方法,通用验证框架.这决定了我的最终.net应用程序的整体行为组织. 2.)Application.DataModel >数据库的类型化数据集. 3.)Application.DataAccess >数据访问类. 4.)Application.DomainObjects >业务对象和业务对象集合. 5.)Application.BusinessLayer >提供从Presentation层访问的管理员类. 6.)Application.WebClient或Application.WindowsClient >我的演示层 Application.BusinessObjects跨越应用程序使用,并且每当需要时跨越所有层次[除了Application.DataModel和Application.Infrastructure] 我的所有查询都仅定义Application.DataModel. Application.DataAccess返回或将业务对象作为任何数据访问操作的一部分.在反射属性的帮助下创建业务对象.每个业务对象都标有与数据库中的目标表的属性映射,业务对象中的属性将标记为映射到相应数据库表中的目标列的属性. 我的验证框架允许我在指定的ValidationAttribute的帮助下验证每个字段. 我的框架大量使用属性来自动执行大多数繁琐的任务,如映射和验证.我也可以将新功能作为框架的新方面. 在我的应用程序中,示例业务对象将如下所示. User.cs [TableMapping("Users")]
public class User : EntityBase
{
#region Constructor(s)
public AppUser()
{
BookCollection = new BookCollection();
}
#endregion
#region Properties
#region Default Properties - Direct Field Mapping using DataFieldMappingAttribute
private System.Int32 _UserId;
private System.String _FirstName;
private System.String _LastName;
private System.String _UserName;
private System.Boolean _IsActive;
[DataFieldMapping("UserID")]
[DataObjectFieldAttribute(true,true,false)]
[NotNullOrEmpty(Message = "UserID From Users Table Is Required.")]
public override int Id
{
get
{
return _UserId;
}
set
{
_UserId = value;
}
}
[DataFieldMapping("UserName")]
[Searchable]
[NotNullOrEmpty(Message = "Username Is Required.")]
public string UserName
{
get
{
return _UserName;
}
set
{
_UserName = value;
}
}
[DataFieldMapping("FirstName")]
[Searchable]
public string FirstName
{
get
{
return _FirstName;
}
set
{
_FirstName = value;
}
}
[DataFieldMapping("LastName")]
[Searchable]
public string LastName
{
get
{
return _LastName;
}
set
{
_LastName = value;
}
}
[DataFieldMapping("IsActive")]
public bool IsActive
{
get
{
return _IsActive;
}
set
{
_IsActive = value;
}
}
#region One-To-Many Mappings
public BookCollection Books { get; set; }
#endregion
#region Derived Properties
public string FullName { get { return this.FirstName + " " + this.LastName; } }
#endregion
#endregion
public override bool Validate()
{
bool baseValid = base.Validate();
bool localValid = Books.Validate();
return baseValid && localValid;
}
}
BookCollection.cs /// <summary>
/// The BookCollection class is designed to work with lists of instances of Book.
/// </summary>
public class BookCollection : EntityCollectionBase<Book>
{
/// <summary>
/// Initializes a new instance of the BookCollection class.
/// </summary>
public BookCollection()
{
}
/// <summary>
/// Initializes a new instance of the BookCollection class.
/// </summary>
public BookCollection (IList<Book> initialList)
: base(initialList)
{
}
}
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- ASP.Net注销代码块
- 如何在ASP.NET MVC应用程序中组织JavaScript代码
- asp.net – IIS7:服务应用程序池“YYYYY”的进程与Windows
- 如何在Substitution控件中使用ASP.Net服务器控件?
- asp.net – Webmatrix 2:存储静态值
- asp.net-mvc-3 – 带有asp.net mvc 3的$ajax内的相对URL
- asp.net-mvc – ASP.NET MVC 2 RC区域和共享模型
- asp.net – 如何强制netwtonsoft json序列化程序序列化date
- asp.net-mvc – 如何自动刷新部分视图?
- asp.net – IIS Web服务器中的此错误(扩展配置)是什么?
- Asp.Net / C#何时?等于A? (é等于E)
- asp.net-mvc-3 – mvc3 jquery unobtrusive验证语
- asp.net – GCFrame在WinDBG中输出!clrstack命令
- asp.net – 如何在web.config中设置text / html的
- asp.net-mvc – ASP.NET MVC 3简单可靠的移动设备
- asp.net-web-api – 仅在第一个Web请求(WebAPI 2
- asp.net – 断点当前不会被命中 – 没有可执行代
- asp.net – 部署到Azure后编译器错误
- asp.net – 在MVC视图上没有客户端密码匹配
- asp.net – Azure Web角色 – 长时间运行请求(负
