【发布时间】:2018-10-15 04:16:29
【问题描述】:
我有一个具有以下属性的类:
[NotMapped]
public string Key
{
get
{
return string.Format("{0}_{1}", Process.Name, LocalSequenceNumber);
}
}
本地序列号是一个计算整数,由并发字典形式的缓存支持。
我希望在 LINQ 查询中使用上面的 Key 属性,但出现异常:
LINQ to Entities 不支持指定的类型成员“Key”。仅支持初始化器、实体成员和实体导航属性。
我了解我收到此错误的原因,但我不太确定如何解决它。目前, Key 属性为我不想放弃的类提供了一个很好的封装。有关库或解决此问题的简单模式的任何建议?
编辑:这是引发异常的查询:
db.Cars.SingleOrDefault(c => c.Id == id && c.Key == key);
【问题讨论】:
-
如果没有实际引发异常的代码,很难说出原因。
-
我已添加查询。
-
您告诉 EF 不要将 Key 映射到数据库列,然后您想在查询中使用它。它不起作用也就不足为奇了。
-
请记住,LINQ to Entities 会将语句转换为 SQL,如果您使用
NotMappedAttribute,则该属性无法转换为 SQL 语句。 -
是的,我已经说清楚了,我理解这个问题。这是一个计算属性,我想将其用作查询的一部分。我的问题是是否有办法解决这个问题。
标签: c# asp.net-mvc linq entity-framework-6