我正在构建一个WPF应用程序,我正在使用WebService使用Entity Framework从数据库中检索数据。 在我的服务上,生成的代码是:
public partial class DummyEntities : ObjectContext
{
public DummyEntities() : base("name=DummyEntities", "DummyEntities")
{
this.ContextOptions.LazyLoadingEnabled = true;
OnContextCreated();
}
//more 2 constructors with diferent signature but the same code
因此启用了延迟加载选项。
当我做这样的事情时,问题在于应用程序方面:
DummyEntities context = new DummyEntities(Utils.GetUri());
// ...
context.Order.Order_Details.Count
给我count = 0,当它不应该因为延迟加载是活动的。我在这里错过了什么吗?
答案 0 :(得分:2)
如果您已越过服务边界,则实体已被序列化并反序列化为另一个对象,因此它们已丢失与db的连接
所有延迟加载都必须在传输数据之前完成
答案 1 :(得分:0)
感谢提示丹尼尔。我搜索了一点,我找到了LoadProprety方法。这解决了这个问题。 感谢
修改强>
我使用的代码是:
IEnumerable<Order> orders = context.Order.AsEnumerable<Order>();
foreach (var order in orders)
{
context.LoadProperty(order, "Order_Details");
result.Add(new Order(order));
}
这样我就强迫每个订单加载&#34; Order_Details&#34;相关实体