我的问题可能很简单,你如何加载子类/子类。没有“负载”或类似的东西,我可以找到让上下文加载子项。
上下文类是 ObjectContext 类型,见下文:
public partial class RTIPricingEntities : global::System.Data.Objects.ObjectContext
Product
Product.ModifiedByUser (how to load this class, when loading product??)
Product.Category (how to load the categories when loading product?)
最佳答案
你可以急切加载:
var q = from p in Context.Products
.Include("ModifiedByUser")
.Include("Category")
select p;
...或项目:
var q = from p in Context.Products
select new
{
Id = p.Id,
Name = p.Name
ModifiedByUserName = p.ModifiedByUser.Name,
CategoryName = p.Category.Name
}
投影的优点是你只得到你需要的数据,而不是每个引用实体的全部。急切加载的优点是返回的实体会进行更改跟踪。为手头的问题选择正确的技术。
更新
是的,重要的是要提及您正在使用 RIA 服务。我想你也在客户内部工作。这让事情完全不同。
在 RIA 服务中,确保在初始加载时返回所需的整个实体图非常重要。您不想在实体上调用 .Load() 之类的东西,因为这对服务器来说又是一个热点,这对性能不利。例如,如果您在 Silverlight 客户端中并从服务器请求实例列表并且它们的相关属性尚未具体化,则为时已晚。此外,Include 在 Silverlight 客户端中不起作用。因此,RIA Services 提供了服务器端工具,您可以使用它来确保最初返回正确的、完全具体化的对象图。
您需要做的是在 RIA 服务服务器中使用 IncludeAttribute。您可以创建一个“伙伴”元数据类来使用 [Include] 装饰您的实体模型。 the RIA Services overview document, section 4.8中有例子.
关于linq - Entity Framework 3.5 - 如何加载子项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1374683/