я в настоящее время есть приложение, которое состоит из: интерфейса пользователя (веб-страницы) BLL (менеджер & домена объектов) DAL (DataAccess класса для каждого из моих доменных объектов).Что для возвращения из DAL в BLL
Я использую в пользовательском интерфейсе для поиска объекта домена.
protect sub Button1_Click()
{
IBook book = BookManager.GetBook(txtID.Text);
}
Вот мой BLL
public class BookManager
{
public static IBook GetBook(string bookId)
{
return BookDB.GetBook(bookId);
}
}
public class Book : IBook
{
private int? _id
private string _name;
private string _genre;
public string Name
{
get { return _name; }
private set
{
if (string.IsNullOrEmpty(value))
throw new Exception("Invalid Name");
_name = value;
}
}
public string Genre
{
get { return _serial; }
private set
{
if (string.IsNullOrEmpty(value))
throw new Exception("Invalid Genre");
_genre = value;
}
}
// Other IBook Implementations
}
И, наконец, вот мой DAL
public class BookDB
{
public static IBook GetBook(int id)
{
// Get Book from database using sproc (not allowed to use any ORM)
// ?? Create IBook Item?
// return IBook
}
Как бы один создать объект IBook и вернуть его к менеджеру? Я подумываю вернуть DataTable из BookDB в BookManager и создать объект Book и вернуть его, но это кажется неправильным. Есть ли другой способ сделать это?
Редактировать: Я решил разделить каждый слой на проект и столкнулся с проблемой циклической зависимости в слое DAL при попытке добавить ссылку на BLL. Я не могу получить доступ к классу книг или интерфейсу или что-либо в BLL из DAL. Должен ли я просто использовать объекты ado.net здесь и создать мой менеджер для создания фактического объекта из объекта ado.net? Вот как ее изложил
BLL.Managers - BookManager
BLL.Interfaces IBook
BLL.Domain - Book
DAL - BookDB.
спасибо!
Обычно DAL не должна содержать ссылки на BLL. BLL, howerver должны содержать ссылку на DAL. – Martin
Если бы я должен был добавить проект модели, то должен ли я перемещать как фиктивные классы, так и классы домена/интерфейсы в этот проект? – AlteredConcept