Se si dispone, ad esempio, di una tabella di database denominata Persona (ID, Nome, ecc.) Quale tipo di oggetto deve restituire il livello di accesso ai dati al livello aziendale? sto pensando qualcosa di simile:Quali oggetti si devono restituire dal livello di accesso ai dati al livello aziendale un sistema a più livelli
//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;
}
}
Ma tutto questo sembra un po 'ingombrante? C'è una soluzione più elegante a questo problema? Devo restituire un DataRow dal livello di accesso ai dati al livello aziendale?
Non fornire al DAL un riferimento al livello delle entità di business crea una dipendenza [indesiderata] a due vie? –
No, il livello delle entità aziendali non avrà alcun riferimento al DAL. È solo un asso di oggetti contenitori "stupidi". La parte della tua app (interfaccia utente o livello di business logic separato) che le richiede dal DAL dovrebbe trovarsi in un'altra parte dell'assembly e dovrebbe fare riferimento sia a DAL che a entità. –
Assembly A: definizione di classe, nient'altro che campi e proprietà. Assemblaggio del dominio. Assemblea B: DAL. Gruppo di riferimenti A. Assemblaggio C: UI. References assembly A e B. – Amy