我使用Entity Framework 6,并从数据库中导出我的模型。我没有将选项设置为“包括外键列”。
我可以向该模型添加新实体,以设置外键引用,我使用对其他对象的引用,如下所示:
client.Country = country;
尝试使用引用查询模型时遇到问题:
ctx.Client.Where(c => c.Country == country);
导致错误“无法创建类型为“国家类型”的常量值。仅支持基本类型”。
使用外键的数字ID
ctx.Client.Where(c => c.id_Country == country.idCountry);
无法工作,因为我选择不包括外键列。
进行过滤
List<Client> clients = ctx.Clients.ToList();
clients.Where(c => c.Country == country);
但这不是很优雅。
有什么主意吗?显然,包括外键是最容易的,但是如果没有该模型,该模型看起来会干净得多。
谢谢!
答案 0 :(得分:2)
您可以使用[reference property].[key property]
,例如
c => c.Country.id_Country == country.idCountry
EF足够聪明,可以将其识别为LINQ to Entities查询中的FK属性访问器,并将其转换为FK列名称。
换句话说,在L2E查询中,c.Country.id_Country
与c.id_Country
FK属性(如果存在)相同。