在我的应用程序中,我有一个from with bindingsource to entity。
Mybindingsource.datasource =(来自于context.mytable中的t ....... 选择t).ToList
1)当我更新bindingsource上的记录时,这条记录会在数据库上更新。但是如果我在bindingsource上添加新记录或删除记录,数据库就不会更新。我该怎么办?
2)如何检测bindingsource上的记录是否发生了变化? (我想在检测后启用保存按钮)
3.如果更改了bindingsource中的记录,我该如何撤消更改(保存之前)
提前谢谢!
答案 0 :(得分:0)
1)从绑定源中删除记录时,您需要在实体上下文中删除该记录。
dbContext.mytalbe.Remove(recordToRemove);
与添加相同,您需要
dbContext.mytable.Add(newRecord);
目前,我正在使用带有实体4.1的DevExpress网格,因此它可能与标准的WinForm网格不同。
我发现通常在你的代码中添加或删除记录,你直接将它们添加/删除到实体dbContext级别然后更改将反映在组件上,否则添加/删除不会自动完成 如果你做其他方式等,从绑定方添加/删除它们。我认为你不需要同时做这两件事,我认为在dbContext方面进行更改会更容易。
2)我做的是检查实体记录的状态,例如下面的代码是我用来检测对象是否被修改的函数。
public bool IsDirty(Purchase purchase)
{
bool result = false;
if (this.dbContext.Entry(purchase).State != EntityState.Unchanged)
result = true;
return result;
}
3)在保存之前,没有任何内容会被更改为数据库,对吧?因此,您可以简单地处理当前的dbContext并使用原始数据从DB中再次检索该数据。这将是我能想到的最简单的方式。
希望能帮助你。