我有两个带有共同属性的实体。我需要在查询中使用这些共同属性应用一些条件。因此,我决定这样做:
public interface IContract
{
string Name{get;set;}
}
public class Entity1 : IContract
{
public string Name{get;set;}
}
public class Entity2 : IContract
{
public string Name{get;set;}
}
public class Repository
{
public IQueryable<T> Filter<T>(IQueryable<T> query, Request request) where T : IContract
{
return query.Where(x => x.Name== request.Name);
}
public IQueryable<Entity1> GetEntitity1()
{
return Filter(entities.Entity1, new Request { Name = "X" };
}
public IQueryable<Entity2> GetEntitity2()
{
return Filter(entities.Entity2, new Request { Name = "X" };
}
}
使用这种方式并在应用.ToList()之后,我收到了NotSupportedException。LINQ to Entities仅支持转换EDM原始类型或枚举类型。
有没有办法解决这个问题,还是我需要使用ObjectQuery的Where(string)?
谢谢。