我有一个datagrid,它有一个通过BindingSource绑定到它的集合:
bsProducts.DataSource = cc.Products.Local.ToBindingList();
Run Code Online (Sandbox Code Playgroud)
网格中的一个实体正在以不同的形式进行编辑(并保存),我想在此表单上刷新网格,现在我尝试重新加载实体,重新加载整个本地上下文但由于某种原因它不是阅读相关的子实体.现在,当我关闭整个表格并再次打开它时,所有正在阅读.
要刷新实体,我使用以下代码:
await cc.Entry<Product>(product).ReloadAsync();
Run Code Online (Sandbox Code Playgroud)
但是,这不会加载任何绑定到产品实体的相关实体.之后我重新尝试更新BindingSource,但没有运气.
我正在从MVC中的回发进行实体更新:
ControlChartPeriod period = _controlChartPeriodService.Get(request.PeriodId);
if (period != null)
{
SerializableStringDictionary dict = new SerializableStringDictionary();
dict.Add("lambda", request.Lambda.ToString());
dict.Add("h", request.h.ToString());
dict.Add("k", request.k.ToString());
period.Parameters = dict.ToXmlString();
// ToDo : fails on save every now and then when one of the values changes; fails on Foreign Key being null
try
{
_controlChartPeriodService.Update(period, request.PeriodId);
return Ok(request);
}
Run Code Online (Sandbox Code Playgroud)
更新方法如下所示:
public TObject Update(TObject updated, TKey key)
{
if (updated == null)
return null;
TObject existing = _context.Set<TObject>().Find(key);
if (existing != null)
{
_context.Entry(existing).CurrentValues.SetValues(updated);
_context.SaveChanges();
}
return …
Run Code Online (Sandbox Code Playgroud)