wpf实体框架6延迟加载false仍然从数据库加载数据

时间:2015-05-06 13:09:05

标签: wpf entity-framework data-binding

我有3个型号:

PlayerCtrl

我的dbcontext看起来像这样:

public class producer
{
 public int producer_id { get; set; }
 public string name { get; set; }

 public ObservableCollection<machine> machines {get; set }

 public producer()
  {
    machines = new ObservableCollections<machine>();
  }
}

public class machine
{
 public int machine_id { get; set;}

 public int producer_id { get; set; }
 public producer producer { get; set; }

 public int machineType_id { get; set; }
 public virtual machineType { get; set; }

 public string machineNumber { get; set; } 
}

public class machineType
{
 public int machineType_id { get; set; }
 public string name { get; set; }
}

在我的viewmodel中,我打电话:

public class context : DBontext
{
 public dbSet<producer> producers { get; set; }
 public dbset<machine> machines { get; set; }
 public dbSet<machineType> machineTypes { get; set; }

   public context()
    {
      this.Configuration.LazyLoadingEnabled = false;
    }

   protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.HasDefaultSchema("public");
        base.OnModelCreating(modelBuilder);
    }

在我看来,我有listView:

  public class vmList
  {     
   public ObservableCollection<machine> machines { get; set; }
    public vmList()
     {
       using (context c = new context())
        {
         c.machines.Include(o=> o.machineType)).LoadAsync();
         machines = c.machines.Local;
        }
     }
  }

我现在对数据库的连接非常慢,所以一切都是可见的。看起来它从数据库加载两个时间数据。第一次加载是在c。 ...当我调试代码时,我看到LoadAsync()被取消了,我看到机器集合中的外翻,但是在listView中继续数据之后显示部分,单元格之后。加载机器集合后,当我从网络断开计算机时,程序挂起。 在绑定中使用IsAsync = False时,UI将冻结,直到所有数据都将加载...

我的问题是,为什么它加载数据两次,懒惰加载是错误的以及如何改进(如果我已经提交了收集,为什么它还不够?

0 个答案:

没有答案