如何将 linq-to-sql 与引用一起使用?
How can I use linq-to-sql with references?
我使用Entity Framework 6,并从数据库中导出我的模型。我没有将选项设置为 "include foreign keys columns".
我可以向该模型添加新实体,以设置外键引用我使用对其他对象的引用,如下所示:
client.Country = country;
尝试使用引用查询模型时遇到问题:
ctx.Client.Where(c => c.Country == country);
导致错误"Unable to create constant value of type "国家/地区类型。仅支持原始类型。
使用外键的数字id
ctx.Client.Where(c => c.id_Country == country.idCountry);
无法工作,因为我选择不包含外键列。
我找到了一个丑陋的解决方法,方法是使用引用 将其全部加载到内存并在那里进行过滤
List<Client> clients = ctx.Clients.ToList();
clients.Where(c => c.Country == country);
但这不是很优雅。
有什么想法吗?包括外键是最简单的,很明显,但是没有外键模型看起来更干净。
提前致谢!
您可以使用 [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 属性 相同(如果存在)。
我使用Entity Framework 6,并从数据库中导出我的模型。我没有将选项设置为 "include foreign keys columns".
我可以向该模型添加新实体,以设置外键引用我使用对其他对象的引用,如下所示:
client.Country = country;
尝试使用引用查询模型时遇到问题:
ctx.Client.Where(c => c.Country == country);
导致错误"Unable to create constant value of type "国家/地区类型。仅支持原始类型。
使用外键的数字id
ctx.Client.Where(c => c.id_Country == country.idCountry);
无法工作,因为我选择不包含外键列。
我找到了一个丑陋的解决方法,方法是使用引用 将其全部加载到内存并在那里进行过滤
List<Client> clients = ctx.Clients.ToList();
clients.Where(c => c.Country == country);
但这不是很优雅。
有什么想法吗?包括外键是最简单的,很明显,但是没有外键模型看起来更干净。
提前致谢!
您可以使用 [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 属性 相同(如果存在)。