关于Bindingsource和实体框架的3个问题

时间:2011-12-03 13:55:35

标签: entity-framework-4

在我的应用程序中,我有一个from with bindingsource to entity。

Mybindingsource.datasource =(来自于context.mytable中的t .......                            选择t).ToList

1)当我更新bindingsource上的记录时,这条记录会在数据库上更新。但是如果我在bindingsource上添加新记录或删除记录,数据库就不会更新。我该怎么办?

2)如何检测bindingsource上的记录是否发生了变化? (我想在检测后启用保存按钮)

3.如果更改了bindingsource中的记录,我该如何撤消更改(保存之前)

提前谢谢!

1 个答案:

答案 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中再次检索该数据。这将是我能想到的最简单的方式。

希望能帮助你。