Должны ли объекты домена отображаться как интерфейсы или как обычные объекты?
Пользовательский интерфейс:
public interface IUser
{
string FirstName { get; set; }
string LastName { get; set; }
string Email { get; set; }
Role Role { get; set; }
}
Пользовательская реализация (реализована в LinqToSql Data Access Layer):
public class User : IUser
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Email { get; set; }
public Role Role { get; set; }
}
Пользовательская реализация (внедрена в уровень доступа к данным NHibernate):
[NHibernate.Mapping.Attributes.Class]
public class User : IUser
{
[NHibernate.Mapping.Attributes.Property]
public string FirstName { get; set; }
[NHibernate.Mapping.Attributes.Property]
public string LastName { get; set; }
[NHibernate.Mapping.Attributes.Property]
public string Email { get; set; }
[NHibernate.Mapping.Attributes.Property]
public Role Role { get; set; }
}
это только иллюстрирует некоторые конкретные реализации DAL, в настоящее время у них нет лучшего образца.