C# 多个集合关系
我的一个ViewModel上几乎没有与此对象直接或间接相关的集合。这是一个很大的简化,它是这样的:C# 多个集合关系,c#,xaml,observablecollection,collectionviewsource,C#,Xaml,Observablecollection,Collectionviewsource,我的一个ViewModel上几乎没有与此对象直接或间接相关的集合。这是一个很大的简化,它是这样的: public class PatientViewModel : ViewModelBase { private string ID { get; } public ObservableCollection<VisitViewModel> Visits { get; } public ObservableCollection<TreatmentViewM
public class PatientViewModel : ViewModelBase
{
private string ID { get; }
public ObservableCollection<VisitViewModel> Visits { get; }
public ObservableCollection<TreatmentViewModel> Treatments{ get; }
public ObservableCollection<MedicationViewModel> Medications{ get; }
public PatientViewModel(string id)
{
ID = id;
Visits = Factory.GenerateCollection(EntityType.Visit, id);
Treatments= Factory.GenerateCollection(EntityType.Treatment, id);
Medications= Factory.GenerateCollection(EntityType.Medication, id);
}
}
public class VisitViewModel : ViewModelBase
{
private string ID { get; }
private string PatientID { get; }
...
}
public class TreatmentViewModel: ViewModelBase
{
private string ID { get; }
private string VisitID { get; }
private string PatientID { get; }
...
}
public class MedicationViewModel: ViewModelBase
{
private string ID { get; }
private string TreatmentID { get; }
private string PatientID { get; }
...
}
公共类PatientViewModel:ViewModelBase
{
私有字符串ID{get;}
公众可观察收集访问{get;}
公共可观察收集处理{get;}
公开收集药物{get;}
公共PatientViewModel(字符串id)
{
ID=ID;
访问量=Factory.GenerateCollection(EntityType.Visite,id);
处理=工厂.GenerateCollection(EntityType.Treatment,id);
药物=Factory.GenerateCollection(EntityType.Medicing,id);
}
}
公共类VisitViewModel:ViewModelBase
{
私有字符串ID{get;}
私有字符串PatientID{get;}
...
}
公共类处理ViewModel:ViewModelBase
{
私有字符串ID{get;}
私有字符串VisitID{get;}
私有字符串PatientID{get;}
...
}
公共类MedicinationViewModel:ViewModelBase
{
私有字符串ID{get;}
私有字符串处理ID{get;}
私有字符串PatientID{get;}
...
}
我可能会在这三个集合之间创建层次链,但我不想这样做,因为:
- 在PatientViewModel上完成的多个聚合(如HasMedicingLike、HadVisitin去年、hasUnsuccessfulTreatments等)
- 初始加载时间(从sql获取3个大集合要比遍历每个节点加载单个集合快得多)
你会考虑一个视图模型属性,它返回一个LINQ查询,通过一个连接将该视图拼凑出来,而不是在这三个观察表中的什么?我有我需要的所有数据,问题是对它进行分组。使用它使DATACONTRONT变得松散,所以我不能与PaultVIEW模型相关,你会考虑一个视图模型属性,它返回一个LINQ查询,通过一个连接将该视图拼凑在一起,从这三个观察表中得到什么?我有我需要的所有数据,我的问题是对它进行分组。使用使其失去了数据上下文,因此我无法再与PatientViewModel联系起来