現在、ユーザー インターフェイス (Web ページ) BLL (マネージャーとドメイン オブジェクト) DAL (各ドメイン オブジェクトの DataAccess クラス) で構成されるアプリケーションがあります。
UI で以下を使用して、ドメイン オブジェクトを検索します。
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 オブジェクトを作成して Manager に返すにはどうすればよいでしょうか。BookDB から BookManager に DataTable を返し、Book オブジェクトを作成して返すようにしようと考えていますが、それは正しくないようです。これを行う別の方法はありますか?
編集:各レイヤーをプロジェクトに分離することにし、BLL への参照を追加しようとすると、DAL レイヤーで循環依存の問題が発生しました。DAL から Book クラスやインターフェイス、または BLL の何かにアクセスできません。ここで ado.net オブジェクトを使用し、管理者に ado.net オブジェクトから実際のオブジェクトを作成させる必要がありますか? これがそのレイアウト方法です
BLL.Managers - BookManager
BLL.Interfaces IBook
BLL.Domain - Book
DAL - BookDB.
ありがとう!