我正在使用 WPF .NET Framework 4.0
我有一个名为 Facility 的对象。此类包含许多其他对象和对象集合。我对任何其他对象集合都没有以下问题。
设置:我从列表中选择我的设施。我初始化 ViewModel 如下:
var facilityResults = _app.FacilityManager.Get(facility.Id);
if (facilityResults.Success)
{
ViewModel.Facility = facilityResults.Data;
ViewModel.Facility.PropertyChanged += DataChanged;
}
else
{
ViewModel.ValidationResults = facilityResults.ManagerActionResultCollection;
return;
}
我的收藏定义如下:
public virtual ObservableCollection<FacilityNoticeDetail> FacilityNoticeDetails
{
get { return _facilityNoticeDetails; }
set
{
_facilityNoticeDetails = value;
OnPropertyChanged("FacilityNoticeDetails");
}
}
就像我之前说的,它的定义就像任何其他对象集合一样。它是虚拟的,因此它知道对 FacilityNoticeDetail 的引用。
问题:
当我运行此解决方案时,即使我在数据库中有数据,该集合也是空的。所有其他对象加载正常。这是关键...如果我单步调试调试器并查看 facilityResults.Data 对象,该集合就在那里并且将被设置,但前提是我单步执行代码。
添加
facilityResults 是 ManagerActionResult 类型,它是一个自定义类:
public class ManagerActionResult<T>
{
public ActionResultCollection ManagerActionResultCollection { get; set; }
public bool Success { get; set; }
public T Data { get; set; }
public ManagerActionResult()
{
Success = true;
ManagerActionResultCollection = new ActionResultCollection();
}
public ManagerActionResult(bool valid, string message)
{
Success = valid;
ManagerActionResultCollection = new ActionResultCollection();
}
}
public new ManagerActionResult<Facility> Get(int id)
{
var result = base.Get(id);
if (result.Success)
{
var facility = result.Data;
CalculateFeePayments(facility.Fees);
CalculateContractPayments(facility.Contracts);
}
return result;
}
public ManagerActionResult<T> Get(int id)
{
var result = new ManagerActionResult<T>() { Success = true };
try
{
var set = _context.Set<T>();
var entity = set.Find(id);
result.Data = entity;
}
catch (Exception ex)
{
result.Success = false;
result.ManagerActionResultCollection.Add(new ErrorActionResult(false, ex.GetBaseException().Message, NotificationSeverityEnum.ERROR, ex.GetBaseException().StackTrace));
Log.Error(ex.Message);
}
return result;
}
所做的只是使用上下文带回我的 Facility 对象及其关联数据。如果这仍然不清楚,请告诉我。