在EntityDataSource Inserted事件中使用e.Entity时,将它包装在using()中是一种好习惯吗?

时间:2013-05-14 18:10:27

标签: c# .net entity-framework

如果我在EntityDataSource的Inserted事件中使用插入的值做某事,我应该将e.Entity包装在using()语句中吗?我说不出来。这是“在上下文中”吗?

应该是(正如我在其他例子中所见):

myEntity NewRecord = (myEntity)e.Entity;
myVar = NewRecord.DataValue;

或者做适当的做法是:

using (myEntity NewRecord = new e.Entity())
{
    myVar = NewRecord.DataValue;
}

(不要认为语法是完全正确的。不要只想查询它是如何工作的。)

从MSDN文档中,我可以收集的是e.Entity是一个实体的对象。很有帮助。那么它是否会打开一个新的连接以及我认为需要新实体的所有其他包?

2 个答案:

答案 0 :(得分:0)

总的来说,我会说是的。最佳实践?是肯定的。然而,答案更像是“它取决于”。通常,只要您使用实现IDisposable的对象,就应该将其包装在using语句中,除非您计划将对象保留在方法调用之间。

在我倾向于生活的无状态网络(MVC)中,我尝试将DbContext包装在using语句中。在Winforms / WPF中,我确信在某些事件发生之前有理由坚持下去。这些应该是规则的例外。

答案 1 :(得分:0)

当您希望确保在程序执行离开使用范围时调用Dispose方法时使用。

例如,假设您的代码可能抛出异常,并且您希望确保它仍然调用Dispose()。使用声明可以保证它。

因此,如果myEntity实现了iDisposable,您可能希望使用using语句。如果不是,你不需要,但仍然可以,我想......哈哈。