EDMX在1:n关系中使用ICollection,如下所示
public partial class Customer
{
...
public virtual ICollection<User> Users { get; set; }ICollection实现的是IEnumerable而不是IQueryable,因此在客户端使用属性导航按站点进行筛选,从DB服务器检索所有记录并在客户端对它们进行筛选(这不是一个真实的例子):
var users = myContext.Customer.Users.Where(u.Enabled).FirstOrDefault();Linq查询:
SELECT [Extent1].[IdCustomer] AS [IdCustomer],
[Extent1].[Enabled] AS [Enabled],
...
FROM [Framework].[User] AS [Extent1]我试图“强制”EF在运行时将用户设置为queryable,但这不起作用:
var users = myContext.Customer.Users.AsQueryable().Where(u.Enabled).FirstOrDefault();关于这个问题有两个问题:
发布于 2015-02-03 10:04:06
__so使用客户上的属性导航对站点进行筛选,从DB服务器检索所有记录并在客户端过滤它们
这个假设就是你出错的地方。Where()返回谓词,实体框架在物化后将其转换为SQL查询。
当启用了延迟加载时,实体框架将覆盖虚拟属性并在其上执行其魔术以启用延迟加载。
https://stackoverflow.com/questions/28296068
复制相似问题