tengo algunas entidades LINQ que heredan algo como esto:LinqToSql y base abstracta clases
public abstract class EntityBase { public int Identifier { get; } }
public interface IDeviceEntity { int DeviceId { get; set; } }
public abstract class DeviceEntityBase : EntityBase, IDeviceEntity
{
public abstract int DeviceId { get; set; }
}
public partial class ActualLinqGeneratedEntity : DeviceEntityBase
{
}
En un método genérico que estoy consultando entidades DeviceEnityBase derivados con:
return unitOfWork.GetRepository<TEntity>().FindOne(x => x.DeviceId == evt.DeviceId);
donde TEntity tiene una contraint eso es un DeviceEntityBase. Esta consulta siempre está fallando con InvalidOperationException con el mensaje "El miembro de la clase DeviceEntityBase.DeviceId no está mapeado". Incluso si añado algo de información de asignación en la clase base abstracta con
[Column(Storage = "_DeviceId", DbType = "Int", Name = "DeviceId", IsDbGenerated = false, UpdateCheck = UpdateCheck.Never)]
@Lijo - Creo que la respuesta de Ladislav es buena ... –
Gracias. Pero eso no será "programación a una interfaz", ¿no es así? A continuación se muestra un comentario de Scott en http://weblogs.asp.net/scottgu/archive/2007/06/29/linq-to-sql-part-3-querying-our-database.aspx - "Agregar las interfaces con sus clases de modelo de datos LINQ to SQL. Las clases LINQ to SQL son parciales, lo que significa que puede agregar la interfaz directamente a ellas. " Esta sugerencia no funciona en nuestro escenario. ¿Hay alguna manera de hacerlo funcionar? – Lijo