EF 4.1 N Tier ASP .Net混淆

时间:2011-07-30 12:30:50

标签: asp.net entity-framework entity-framework-4.1 n-tier-architecture

我希望你能帮助我提出任何建议,我们将不胜感激。

我现在使用EF 4.0一段时间使用以下对象上下文管理技术http://dotnetslackers.com/articles/ado_net/Managing-Entity-Framework-ObjectContext-lifespan-and-scope-in-n-layered-ASP-NET-applications.aspx。我有一个相当简单的设置,一个Web项目连接到连接到DAL的BLL。 Web和BLL引用DAL实体对象。它运作良好,但似乎很慢。它是一个ASP .NET Webforms应用程序,它使用现有的数据库模型(即,首先不是代码)并指向SQL Server 2005 DB。

无论如何,我现在正在重新审视这个架构,因为我们在屏幕上对屏幕性能抱怨不已。我已经完成了大部分的UI增强功能,但我认为只是使用EF的保存,重定向和加载现在是一个缓慢的点。

该网站是汽车保险的一系列报价页面。我现在希望在会话中创建相关对象,即第1页创建引用对象,填充字段,第2页,添加X附加驱动程序,第3页添加声明/定罪,然后将对象保存到数据库。用户将能够在报价过程中的任何位置保存和退出,因此保存并不总是在最后。我们还需要能够加载第1页的信息,并在单击“下一步”时将其更新到内存中,最后在数据库准备好完成报价时更新。

目前,我们正在检索并保存在同一页面上。您如何建议我们进入会话/最终提交存储?

我已经浏览了各种msdn页面,但是我很难将这些内容整合到4.1这个相当简单的应用程序的最新“最佳实践”中。我看过Julie Lerman的视频,但她的n'tier只做了一个简单的检索和'添加',怀疑地遗漏了更新部分,因为我怀疑它不是直截了当的。你认为我应该使用自我跟踪实体(我已经读过人们对此有多个问题但可能他们的架构更复杂?)或者在会话中存储EF对象并进行更改的其他方式

非常感谢任何帮助/想法。

1 个答案:

答案 0 :(得分:2)

在Session中存储数据可能是最小化IO的有效方法,但这不是一个简单的决定。您不应该在会话状态中放入大量数据,我们无法从您的描述中判断出您正在谈论的数据量类型,以及并发活动会话的数量。

还有您的会话状态提供商的问题。如果您使用的是单个服务器,那么您可能会使用进程内会话状态,这很快,但如果您拥有大量用户和大量数据,则很快就会遇到内存压力问题。

如果您正在使用Web场,则必须使用共享会话状态,可能使用SQL Server会话状态提供程序,因此您最终会在每次交互时读取和写入数据库,这可能会更糟。

但是,第1步是确保您了解问题。不要对性能问题的位置做出假设,并尝试重新设计。使用分析或工具技术来识别真正的瓶颈,并将精力集中在这些瓶颈上。

你可能会对你的问题所处的位置感到惊讶。它可能只是一个数据库优化问题。