Это то, что я имею в мой проект.
1.) Application.Infrastructure
- Базовые классы для всех BusinessObjects, Busines объект коллекции, классы доступа к данным, и мои собственные атрибуты и утилиты как методы расширения, общие рамки проверки. Это определяет общую организацию поведения моего последнего приложения .net.
2.) Application.DataModel
- типизированных Dataset для базы данных.
- TableAdapters расширены для включения транзакций и других функций, которые могут мне понадобиться.
3.) Application.DataAccess
- классы доступа к данным.
- Фактическое место, где действия базы данных запрашиваются с использованием базового набора типизированных данных.
4.) Application.DomainObjects
- Бизнес-объекты и коллекции бизнес-объектов.
- Enums.
5.) Application.BusinessLayer
- Обеспечивает классы менеджер доступных из уровня представления.
- HttpHandlers.
- Мой собственный базовый класс.
- Больше дела идут здесь ..
6.) Application.WebClient или Application.WindowsClient
- Моя презентация слой
- принимает ссылки от Application.BusinessLayer и Application.BusinessObjects.
Application.BusinessObjects используются по применению и они путешествуют во всех слоях, когда neeeded [за исключением Application.DataModel и Application.Infrastructure]
Все мои запросы определяются только Application.DataModel.
Приложение.DataAccess возвращает или принимает бизнес-объекты как часть любой операции доступа к данным. Бизнес-объекты создаются с помощью атрибутов отражения. Каждый бизнес-объект помечен сопоставлением атрибутов в целевой таблице в базе данных, а свойства в бизнес-объекте помечены сопоставлением атрибутов целевому coloumn в соответствующей таблице базы данных.
Моя система проверки позволяет мне проверять каждое поле с помощью назначенного параметра ValidationAttribute.
My framrwork сильно использует атрибуты для автоматизации большинства утомительных задач, таких как сопоставление и проверка. Я также могу добавить новую функцию в качестве нового аспекта.
Образец бизнес-объекта будет выглядеть так в моем приложении.
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)
{
}
}
я должен уточнить, что я имел в виду бизнес-объекты на самом деле являются объекты доступа к данным - это классы со свойствами, относятся к полям в моих таблицах БД. – Prabhu
Будьте осторожны, чтобы скомпоновать термины «уровень» и «слой». Похоже, что вы говорите, это слои, а не уровни. – RickNZ