我目前有一个应用程序,包括: 用户界面(网页) BLL (管理器和领域对象) DAL (为我的每个领域对象的数据访问类)。
我在UI中使用以下内容来搜索领域对象。
protect sub Button1_Click()
{
IBook book = BookManager.GetBook(txtID.Text);
}
这是我的业务逻辑层
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返回一个DataTable到BookManager中,让它创建Book对象并返回,但这似乎不太对。
还有其他的方法吗?编辑: 我决定将每个层分开成一个项目,并在尝试添加对BLL的引用时遇到了DAL层中的循环依赖问题。 我无法从DAL中访问Book类、接口或任何BLL中的内容。 我应该只在这里使用ado.net对象,并让我的manager从ado.net对象创建实际的对象吗? 以下是它的布局方式。
BLL.Managers - BookManager
BLL.Interfaces IBook
BLL.Domain - Book
DAL - BookDB.
谢谢!