ソフトウェアで作業ユニットとリポジトリのパターンを使用しています。フォームにdataGridViewがあり、次の方法からデータを取得します。
acceptedBonusesGrid.DataSource = _unitOfWork.DocumentRepository.GetDocumentsInfo();
GetDocumentsInfoはDocumentRepositoryにあります。GetDocumentsInfoes-結合を含む複雑なビューです。
public IQueryable<GetDocumentsInfo> GetDocumentsInfo()
{
return _context.GetDocumentsInfoes;
}
ユーザーがレコードをダブルクリックすると、このレコードを編集するためのフォームが表示されます。作業単位をフォームに送信します。
CorrectionAcceptedForm corrForm = new CorrectionAcceptedForm(_unitOfWork, docNum);
フォームが開き、作業単位へのリンクが使用されています。
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();
}
}
}
この修正フォームが閉じると、メインフォームのデータグリッドがリロードされます。
acceptedBonusesGrid.DataSource = null;
acceptedBonusesGrid.Columns.Clear();
acceptedBonusesGrid.DataSource = _unitOfWork.DocumentRepository.GetDocumentsInfo();
ただし、リロード後、データグリッドのすべての行が古くなります。これは、変更を加える前のことです。何が問題ですか?