我有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将冻结,直到所有数据都将加载...
我的问题是,为什么它加载数据两次,懒惰加载是错误的以及如何改进(如果我已经提交了收集,为什么它还不够?