C# 4.0 实体框架5:已更新上下文,但未更新视图
我在软件中使用工作单元和存储库模式。 表单上有一个dataGridView,它从下一个路径获取数据:C# 4.0 实体框架5:已更新上下文,但未更新视图,c#-4.0,view,entity-framework-5,C# 4.0,View,Entity Framework 5,我在软件中使用工作单元和存储库模式。 表单上有一个dataGridView,它从下一个路径获取数据: acceptedBonusesGrid.DataSource = _unitOfWork.DocumentRepository.GetDocumentsInfo(); GetDocumentsInfo位于DocumentRepository中。GetDocumentsInfoes-是具有连接的复杂视图: public IQueryable<GetDocumentsInfo> Get
acceptedBonusesGrid.DataSource = _unitOfWork.DocumentRepository.GetDocumentsInfo();
GetDocumentsInfo位于DocumentRepository中。GetDocumentsInfoes-是具有连接的复杂视图:
public IQueryable<GetDocumentsInfo> GetDocumentsInfo()
{
return _context.GetDocumentsInfoes;
}
表单打开,指向工作单元的链接正在使用中:
public CorrectionAcceptedForm(UnitOfWork unitOfWork, int docNum)
{
InitializeComponent();
_unitOfWork = unitOfWork;
_documentData = _unitOfWork.DocumentRepository.GetById(docNum);
AssignValues();
}
用户在记录中进行更改并保存更改:
private void SaveBill(int billId)
{
if (ValidateChildren())
{
SaveSupplierAddress();
Bill billData = _documentData.Bills.FirstOrDefault(bill => bill.BillId == billId);
if (billData != null)
{
billData.Description = descriptionTextbox.Text;
billData.Price = Convert.ToDecimal(priceTextbox.Text.Replace('.', ','));
_unitOfWork.Save();
}
}
}
当此更正表单关闭时,主表单上的datagrid将重新加载:
acceptedBonusesGrid.DataSource = null;
acceptedBonusesGrid.Columns.Clear();
acceptedBonusesGrid.DataSource = _unitOfWork.DocumentRepository.GetDocumentsInfo();
但是在重新加载之后-datagrid中的所有行都是旧的,这是在进行更改之前。
什么问题?三个月后,我发现了问题。 GetDocumentsInfo()必须如下所示:
public IQueryable<GetDocumentsInfo> GetDocumentsInfo()
{
_context.GetDocumentsInfoes.MergeOption = MergeOption.OverwriteChanges;
return _context.GetDocumentsInfoes;
}
public IQueryable GetDocumentsInfo()
{
_context.GetDocumentsInfoes.MergeOption=MergeOption.OverwriteChanges;
return\u context.GetDocumentsInfoes;
}
现在,当我在子窗体中进行更改时,我的DataGrid将更新
public IQueryable<GetDocumentsInfo> GetDocumentsInfo()
{
_context.GetDocumentsInfoes.MergeOption = MergeOption.OverwriteChanges;
return _context.GetDocumentsInfoes;
}