ich zur Zeit eine Anwendung, die besteht aus: User Interface (Web-Seite) BLL (-Manager & Domain Objects) DAL (Data Access-Klasse für jede meiner Domain Objects).Was von der DAL nach BLL zurückzukehren
Ich verwende Folgendes in der Benutzeroberfläche, um nach einem Domänenobjekt zu suchen.
protect sub Button1_Click()
{
IBook book = BookManager.GetBook(txtID.Text);
}
Hier ist meine 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
}
Und schließlich ist hier meine 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
}
Wie würde man einen IBook Objekt erstellen und es an den Manager zurückkehren? Ich denke darüber nach, eine DataTable von BookDB an BookManager zurückzugeben und das Book-Objekt zu erstellen und es zurückzugeben, aber das scheint nicht richtig zu sein. Gibt es einen anderen Weg, dies zu tun?
Edit: Ich entschied mich, jede Schicht in ein Projekt zu trennen und stieß auf ein zirkuläres Abhängigkeitsproblem in der DAL-Schicht, wenn versucht wurde, einen Verweis auf die BLL hinzuzufügen. Ich kann nicht auf die Buchklasse oder Schnittstelle oder irgendetwas in BLL von DAL zugreifen. Soll ich hier einfach ado.net-Objekte verwenden und muss mein Manager das eigentliche Objekt aus dem ado.net-Objekt erstellen? Hier ist, wie seine legte aus
BLL.Managers - BookManager
BLL.Interfaces IBook
BLL.Domain - Book
DAL - BookDB.
Dank!
Normalerweise sollte die DAL keinen Bezug zur BLL haben. Die BLL sollte jedoch einen Verweis auf die DAL enthalten. – Martin
Wenn ich ein Model Project hinzufügen würde, sollte ich dann sowohl die Dummy-Klassen als auch die Domain-Klassen/Interfaces zu diesem Projekt bewegen? – AlteredConcept