设计选择:实体框架与原始SQL

时间:2011-07-19 15:31:26

标签: c# sql entity-framework

我正在编写一个Silverlight应用程序来处理数百万条记录。由于服务器上的负载可能很大,我打算将一些处理转移到客户端。例如,如果我需要显示有关书籍及其作者的完整信息,我希望使用AuthorID作为公共密钥来加入Book表和Author表。我不是在服务器端执行JOIN,而是分别检索Author表和Book表,并使用C#代码在客户端连接它们并在DataGrid中显示它们。

客户处于受控环境中,因此对其性能至少有保证。由于记录太多,而且客户端DataGrids中没有更新,我会选择Raw SQL over Entity Framework。但是,存在进行客户端连接的问题。我的问题是,Entity Framework是否有助于使客户端连接更容易?将开发时间视为不重要因素。

4 个答案:

答案 0 :(得分:1)

  

我的问题是,Entity Framework是否有助于进行客户端连接   更容易?

这是谁在开发应用程序的问题。使用实体框架肯定有它的优点。它使开发人员能够在C#或其他.NET环境中编写T-SQL“like”语法,但它具有通过.NET中已存在的SQL库执行SQL的相同效率。

这么容易吗?也许。更高效?我对此表示怀疑。通常你想在服务器端的存储过程中执行JOINS和类似事情,只是因为数据库通常存储在不同的机器上,那么为什么有一台机器服务于网站并进行你需要的数据操作呢?

这是我对整个事情的看法。我知道有些人开始认为不需要编写存储过程,因为.NET中的一切都变得如此容易,但我仍然喜欢它们。

答案 1 :(得分:1)

在这种情况下,我个人同意您选择使用原始SQL,至少基于我在帖子中阅读的内容。您需要尽可能“快速”访问,并且快速实现性能目标,非常依赖于您的应用程序。因此,您可以根据需要精确调整所需的位置。

我正在谈论甚至客户端,你想要加入的地方,考虑到你写道: “开发时间不是重要因素”。

所以我个人投票支持Raw SQL。

问候。

答案 2 :(得分:1)

数据库专门用于处理大量数据。服务器用于来处理此类方案。向客户端发送如此多的数据很容易对性能造成严重影响。最好过滤服务器中的数据,然后将其发送到客户端。服务器的设计就是为了这个目的。

对于Raw SQL与实体框架 - 如果您选择过滤服务器中的数据并且需要进行特殊优化 - 请使用原始SQL,因为它的限制要少得多。否则,请使用Entity Framework。

答案 3 :(得分:1)

我不了解Entity Framework与Raw SQL,但您是否考虑过将Microsoft Caching Application Blockbacking store cache一起使用?

这会在本地缓存数据 - 听起来就像你在追求的那样。