Parece que su BLL está exponiendo las clases entity
que ha agregado en el DAL. Tendrá que crear clases contenedoras (que sean POCO) en el BLL y devolverlas en lugar de las entidades del DAL.
Esto es probablemente lo que son haciendo:
// DAL
// .edmx file generated entities
public IQueryable<TableEntity> GetTableEntities()
{
// read from entity framework and return
}
// BLL
public IEnumerable<TableEntity> ReadTableEntitiesForUser(int userID);
{
var d = new DAL();
var entities = d.GetTableEntities();
// restrict to entites this user "owns"
entities = entities.Where(e => e.OwnerID.Equals(userID));
return entities;
}
// WebApp
var b = new BLL();
var myEntities = b.ReadTableEntitiesForUser(1234);
Esto es probablemente lo que debe estar haciendo:
// DAL
// .edmx file generated entities
public IQueryable<TableEntity> GetTableEntities()
{
// read from entity framework and return
}
// BLL
public class TableEntityDTO
{
public int ID { get; set; }
public string Name { get; set; }
// continue on for each column in the table
// and make a DTO class for each table in your database
}
public IEnumerable<TableEntityDTO> ReadTableEntitiesForUser(int userID);
{
var d = new DAL();
var entities = d.GetTableEntities();
// restrict to entites this user "owns"
entities = entities.Where(e => e.OwnerID.Equals(userID));
// convert from "Entity Framework Object" to "BLL Object"
foreach(var e in entities)
{
yeild return new TableEntityDTO() { ID = e.ID, Name = e.Name };
}
}
// WebApp
var b = new BLL();
var myEntities = b.ReadTableEntitiesForUser(1234);
Esto es cierto para el marco de la entidad que se incluye con. NET 3.5SP1 y para Linq-To-SQL, los cuales he usado un poco, puede ser cierto para las últimas versiones de EF, pero con Code-First y otras cosas puede haber una forma de evitar este Data-Trans extra. paso fer-Object, aunque con una arquitectura orientada a servicios, los DTO son probablemente la mejor manera de hacerlo.
Gracias @Nate, el Data-Transfer-Object se perdió y se metió en problemas. – inlokesh