在WPF应用程序上延迟加载

时间:2016-03-10 11:05:06

标签: c# wpf entity-framework lazy-loading

我正在构建一个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,当它不应该因为延迟加载是活动的。我在这里错过了什么吗?

2 个答案:

答案 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;相关实体