[英]EF Code First. Related Entity is not loading
我有实体框架代码第一实体:
public class Customer
{
public long Id { get; set; }
public ICollection<ServiceAccount> Accounts { get; set; }
}
public class Service
{
public long Id { get; set; }
}
public class ServiceAccount
{
public long Id { get; set; }
public Customer Customer { get; set; }
[Required()]
public Service Service { get; set; }
}
假定客户有一些服务帐户。 但是可以有一些默认帐户,它们不受任何客户的约束。 每个帐户都用于具体服务。 该实体具有以下配置:
// Customer Configuration:
base.ToTable("Customers");
base.HasKey(x => x.Id);
base.HasMany(x => x.ServiceAccounts)
.WithOptional(x => x.Customer)
.WillCascadeOnDelete();
// For Service:
base.ToTable("Services");
base.HasKey(x => x.Id);
// For Account:
base.ToTable("Accounts");
base.HasKey(x => x.Id);
base.HasOptional(x => x.Customer)
.WithMany(x => x.Accounts);
base.HasRequired(x => x.Service)
.WithMany();
问题是,当我加载一个客户时,他的所有帐户也都被加载了,但是他们的服务设置为空。 为什么不加载?
提前致谢
您需要加载实体。 根据您的评论:
IQueryable<Customer> customers = Customers.Include(x => x.Accounts.Select(y => y.Service));
如果您想要代理进行延迟加载,它们也应该是virtual
...但是对于急于加载的用户则没有必要
延迟加载相关实体需要框架为您的实体创建代理。 尝试将导航属性设置为虚拟:
public class ServiceAccount
{
public long Id { get; set; }
public virtual Customer Customer { get; set; }
[Required]
public virtual Service Service { get; set; }
}
另外,可以通过Include
急于加载属性,甚至可以通过Load
显式加载它们。
有关更多信息,请参见https://msdn.microsoft.com/zh-cn/data/jj574232.aspx
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.