我目前有一个应用程序,其中包括:用户界面(网页)BLL(管理器和域对象)DAL(我的每个域对象的数据访问类)。
我在 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?我正在考虑将一个 DataTable 从 BookDB 返回到 BookManager 并让它创建 Book Object 并返回它,但这似乎不正确。还有另一种方法可以做到这一点吗?
编辑:我决定将每一层分离到一个项目中,并在尝试添加对 BLL 的引用时在 DAL 层中遇到了循环依赖问题。我无法从 DAL 访问 Book Class 或 Interface 或 BLL 中的任何内容。我应该在这里使用 ado.net 对象并让我的经理从 ado.net 对象创建实际对象吗?这是它的布局方式
BLL.Managers - BookManager
BLL.Interfaces IBook
BLL.Domain - Book
DAL - BookDB.
谢谢!