很抱歉还有关于EF4上下文生命周期的另一个问题,但我一直想知道这一点,我似乎没有找到答案。我不是很熟悉很多模式或过于复杂的东西(在我看来),所以我想保持简单。
我使用的是一个ASP.NET应用程序,其中上下文由每个http请求管理,在我看来这是一个非常好的方法。
但是我现在正在使用winforms应用程序,如果我只是为每个查询创建上下文,我有时会遇到效果不佳的事务或报告。并不是说这个性能问题是一个非常有问题的事情,我只是想听听ASP.NET中winforms的HTTP请求是否存在一个简单的策略?
答案 0 :(得分:15)
不要为每个查询创建上下文。同时,不要创建在Form(或您的应用程序)的整个生命周期中使用的上下文。
为单个工作单元创建上下文(可以包含许多查询)。
通过这种方式,您可以将所有更改封装在上下文中,并让Entity Framework将数据库调用包装在一个非常小的事务中,而不必自己担心。
我更喜欢从实体上下文中抽象出Repository和Unit of Work模式,以便我可以独立使用它们(这使得一切都非常清楚)。 MSDN实际上有一篇关于细节的文章:
MSDN - Using Repository and Unit of Work patterns with Entity Framework 4