[英]C# Entity Framework 5.0 Generic LINQ
我正在尝试使用泛型将记录加载到dbcontext高速缓存中。 我正在使用以下代码。
_Context.Set<T>().Where(R => (int)R.GetType().GetProperty("Id").GetValue(R) == id).Load();
该代码引发以下错误,我似乎无法弄清楚如何解决它。
System.NotSupportedException:LINQ to Entities无法识别方法'System.Object GetValue(System.Object)'方法,并且该方法无法转换为商店表达式。
是我正在做的事情还是有其他方法。
问题是您正在尝试将Reflection方法( GetType()
, GetProperty()
, GetValue()
)与LINQ to Entities一起使用,但它不理解它们。 允许在LINQ查询中使用的方法仅限于查询提供程序支持的方法,就LINQ to Entities而言,多数情况下可以相对轻松地转换为SQL。
不幸的是,您将无法尝试以这种方式匹配ID。 只要T
指定的实体类型的主键具有单个列,并且id
是正确的类型,则使用.Find(id)
将起作用,但这将是非常脆弱的方法,即使它在某些情况下也可以使用。
如果您稍微描述一下您的方案,那么人们可能会对采用另一种方法提出一些好的建议。 您能解释一下为什么要这样做吗? 想要对您的DbContext
执行查询而不知道您感兴趣的实体类型是非常不寻常的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.