Tengo una situación en la que me gustaría utilizar una única clase de lógica de negocios para realizar operaciones similares en una variedad de clases de marcos de entidad. He definido una interfaz que estas clases implementan en un archivo de clase parcial.LINQ a entidades a través de la propiedad de interfaz
Sin embargo, cuando intento escribir una consulta LINQ para las entidades en relación con estos métodos de interfaz, recibo una NotSupportedException ya que la consulta no utiliza las propiedades de la clase directamente, sino a través de una interfaz.
Me gustaría mantener el trabajo pesado en el nivel de la base de datos así que ¿hay alguna manera de lograr esto sin recurrir a LINQ a los objetos?
Aquí hay un código que demuestra mi problema (está utilizando una clase de repositorio genérico creado por una fábrica).
public interface INamedEntity
{
int ID { get; set; }
string Name { get; set; }
}
// This is an Entity Framework class which has CustomerID and CustomerName properties.
public partial class Customer: INamedEntity
{
int INamedEntity.ID
{
get { return this.CustomerID; }
set { this.CustomerID = value; }
}
string INamedEntity.Name
{
get { return this.CustomerName; }
set { this.CustomerName = value; }
}
}
...
public string GetName<T>(int entityID) where T: EntityObject, INamedEntity
{
using(var repository = RepositoryFactory.CreateRepository<T>())
{
return repository
.Where(e => e.ID == entityID)
.Select(e.Name)
.Single();
}
}
Sí, se parece al problema. – gareththegeek