Jeśli masz na przykład tabelę bazy danych o nazwie Osoba (identyfikator, nazwa itp.), Jakiego rodzaju obiekt powinien zwracać warstwę dostępu do danych do poziomu biznesowego? myślę coś takiego:Jakie obiekty powinieneś zwrócić z warstwy dostępu do danych do warstwy biznesowej i systemu klasy N
//data access tier
public class DataAccess{
public interface IPerson{
int ID{ get; set; }
string Name{ get; set; }
}
internal class Person : IPerson{
private int id;
private string name;
public int ID{ get{return id; } set{ id=value; } }
public int Name{ get{retutn name; } set{ name=value; }
}
public static IPerson GetPerson(int personId)
{
//get person record from db, populate Person object
return person;
}
}
//business tier
public class Person : IPerson{
private int id;
private string name;
public int ID{ get{return id;} set{id=value;} }
public string Name{ get{return name;} set{name=value;} }
public void Populate(int personId){
IPerson temp = DataAccess.GetPerson(personId);
this.ID = temp.ID;
this.Name = temp.Name;
}
}
Ale to wszystko wydaje się nieco kłopotliwe? Czy istnieje bardziej eleganckie rozwiązanie tego problemu? Czy zamiast tego powinienem zwrócić obiekt DataRow z warstwy dostępu do danych do warstwy biznesowej?
Czy przekazanie DALowi odniesienia do warstwy podmiotów gospodarczych nie spowodowałoby niepożądanej dwukierunkowej zależności? –
Nie, warstwa jednostek biznesowych nie będzie miała odniesienia do DAL. To tylko garstka "niemych" obiektów kontenerowych. Część aplikacji (interfejs użytkownika lub oddzielna warstwa logiki biznesowej), która żąda ich od DAL, powinna znajdować się w innej części zespołu i powinna odnosić się zarówno do DAL, jak i encji. –
Zespół A: definicja klasy, nic poza polami i właściwościami. Montowanie domeny. Zespół B: DAL. Zespół referencji A. Zespół C: Interfejs użytkownika. Referencje montaż A i B. – Amy