我只是无法在任何地方找到答案,我希望有人可以帮助我。我是 WPF 和实体框架的新手,所以可能做错了。
我遇到了一种情况,我正在创建新记录并将它们添加到实体集合中。我不想对其执行 SaveChanges() 以允许用户完成他们想做的所有事情,然后在离开表单之前进行最终保存。我的问题是,在将记录添加到实体集合后,我无法将它们检索出来以显示“直到”他们在实体上运行了 SaveChanges()。
这基本上是一个使用两个 DataGrid 的主子显示,但主网格源是一个正在构建的 List<>,因为需要将表中的一个字段转换为对用户更友好的显示。这一切都来自一个表,我只是根据 3 个字段(作为主)对数据进行分组,然后将子网格显示为该分组的详细信息。
此操作是“复制”操作,在此操作中,我使用现有的 DataGrid 显示数据并让用户将数据复制到“新”主组。我正在使用以下内容来创建这个新的记录组。
RateGroupRow rgr = new RateGroupRow();
rgr.StaffRole = rg.SelectedStaffRole;
rgr.Department = rg.SelectedDepartment;
rgr.PlanYear = rg.SelectedPlanYear;
_rateGroupQuery.Add(rgr);
foreach (var item in dgRateValues.Items)
{
if (item.GetType() == typeof(CommissionRate))
{
CommissionRate cr = (CommissionRate)item;
CommissionRate newcr = new CommissionRate();
newcr.StaffRole = Common.StaffTextToStaffType(rgr.StaffRole);
newcr.Department = rgr.Department;
newcr.PlanYear = rgr.PlanYear;
newcr.Low = cr.Low;
newcr.High = cr.High;
newcr.Rate = cr.Rate;
Common.CommissionsEntities.CommissionRates.AddObject(newcr);
}
}
//TODO: Don't want to do this SaveChanges here but for now that's the only way I can get these new records to be displayed in the data selection.
//Common.CommissionsEntities.SaveChanges();
dgRateGroups.ItemsSource = null;
dgRateGroups.ItemsSource = _rateGroupQuery;
dgRateGroups.SelectedIndex = dgRateGroups.Items.Count - 2;
将主记录添加到 _rateGroupQuery 后,DataGrid (dgRateGroups) 选择 SelectionChanged 查询数据的行以填充详细信息 DataGrid:
dgRateValues.ItemsSource = null;
_CurrentSelectedStaffRole = rateGroupRow.StaffRole;
_CurrentSelectedDepartment = rateGroupRow.Department;
_CurrentSelectedPlanYear = rateGroupRow.PlanYear;
string StaffNameType = Common.StaffTextToStaffType(_CurrentSelectedStaffRole);
var CommissionRatesItems =
from cr in Common.CommissionsEntities.CommissionRates
where cr.StaffRole == StaffNameType &&
cr.Department == _CurrentSelectedDepartment &&
cr.PlanYear == _CurrentSelectedPlanYear
orderby cr.Low
select cr;
ObjectQuery<CommissionRate> CommissionRatesQuery = CommissionRatesItems as ObjectQuery<CommissionRate>;
dgRateValues.ItemsSource = CommissionRatesQuery.Execute(MergeOption.AppendOnly);
我没有从这个选择中得到任何记录。如果我在添加记录后调用“SaveChanges()”,那么一切正常。
那么有没有办法在这些新添加的记录被提交(SaveChanges)回数据库之前检索它们?
谢谢你,迈克