Si tiene, por ejemplo, una tabla de base de datos llamada Persona (ID, Nombre, etc.) qué tipo de objeto debe devolver el nivel de acceso a datos para el nivel de negocios? estoy pensando algo como esto:Qué objetos debe devolver desde la capa de acceso a datos a la capa empresarial un sistema n-tier
//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;
}
}
Pero todo esto parece un poco engorroso? ¿Hay una solución más elegante para este problema? ¿Debo devolver un DataRow de la capa de acceso a datos a la capa de negocios?
¿No le daría al DAL una referencia a la capa de entidades comerciales creando una dependencia bidireccional [indeseable]? –
No, la capa de entidades comerciales no tendrá ninguna referencia al DAL. Es simplemente un conjunto de objetos de contenedor "tontos". La parte de su aplicación (UI o capa de lógica de negocios separada) que los solicita desde DAL debe estar en otra parte del ensamblado y debe hacer referencia tanto a DAL como a entidades. –
Conjunto A: definición de clase, nada más que campos y propiedades. Asamblea de dominio. Conjunto B: DAL. Conjunto de referencias A. Conjunto C: UI. Conjunto de referencias A y B. – Amy