我有一些实体Logging
它实现ILogging
,比方说,它只有两个属性:与表达泛型类抛出错误在LINQ到实体
public partial class Logging : ILogging
{
public int ID {get; set;}
public string Name {get; set;}
}
public interface ILogging { int ID {get; set;} }
我本来有一个静态类Logging.Q
其中包含静态Expression<Func<Logging,bool>>
领域,但现在我希望能够写表达式ILogging
,如果他们只需要ID
:
public partial class Logging
{
public static Q<T> where T : ILogging
{
public static Expression<Func<T,bool>> IDOne = l => l.ID == 1;
}
}
当我打电话这样的表达:
var log = ctx.Logging.Where(Logging.Q<Logging>.IDOne).FirstOrDefault();
我得到了臭名昭著的 “LINQ到实体只支持...”:
无法转换类型'Entities.Logging为键入 'Entities.ILogging'。 LINQ to Entities仅支持投射EDM基元或枚举类型。
但我不知道为什么。我在类Q
上定义了我的泛型类型,所以运行时应该知道我正在处理Logging
而不是ILogging
。有没有办法解决?
怎么来记录类的初始定义没有打上关键字部分或只是ommitted这里 – TYY
@TYY在 –
中编辑它我不知道这是否能解决您的问题,但是在某个时间点,我记得必须将类添加到约束中。所以我曾在哪T级,ILogging – TYY