【问题标题】:Linq or ADO or?Linq 或 ADO 还是?
【发布时间】:2010-06-22 19:15:29
【问题描述】:

使用数据库构建应用程序,该数据库能够变大而不是巨大,但可以定义具有一百万条记录的大表 +。我刚刚在某个地方看到 LINQ 不适合大数据库。

前端将在 Silverlight 中,我非常期待使用它的 Skip 和 Take 功能进行异步调用,以加快客户端对我的 GUI 的首次访问。

你能告诉我这种情况有什么问题吗?

你会使用 LINQ 还是其他东西?

我的后端是 SQL Server 2005 或更高版本。

【问题讨论】:

  • 后端是sql server吗?我喜欢尽可能通过使用存储过程和视图在 sql server 端完成我的大部分业务逻辑。
  • @buckbova 我假设你没有测试任何逻辑然后:-)
  • 是的,我确实在后端使用 SQL Server

标签: linq silverlight ado.net devforce


【解决方案1】:

我会使用 WCF Data Services(将数据从服务器提供给 Silverlight 应用程序)和支持这些服务的 Entity Framework 4。

您可能还想查看 MSDN 杂志上的这篇文章,该文章将引导您创建一个简单的实体数据模型(从头开始)、基于模型的 WCF 数据服务,以及如何使用这些服务银光:

Visual Studio - Entity Framework 4.0 and WCF Data Services 4.0 in Visual Studio 2010

【讨论】:

  • 我听说实体框架的开销太大,就优化 sql 而言,它确实存在问题。有什么好处?您能否在“为什么”声明中提供更多指导。 Whats Entity 有什么好处,让它更快更容易?我们正在考虑有时将 10 万条记录返回到前端。
  • 实体框架在 4 中成熟了很多。将您的数据公开为 OData 服务(通过 WCF 数据服务),从 Silverlight 查询您的基础数据很容易。
  • 你有一个好的 EF 教程或入门链接吗?我对此一无所知。所以我的任何想法都是别人的。教育我我的男人
  • @Rico - 我刚刚添加了另一个链接,其中包含用于设置所有内容的演练。您还应该浏览 WCF 数据服务站点以获取更详尽的示例。
  • WCF 已经是我选择的数据传输形式。我听说过关于 EF 的不同想法,我肯定应该自学。我很欣赏这个链接。
【解决方案2】:

我同意贾斯汀的回答,并且只提交我自己的回答,因为似乎没有人回答您在其中一个 cmets 中提出的问题。
“Whats Entity 有什么了不起的,让它更快更容易?”

* LINQ 与 Entity Framework 结合使用提供了一种非常简洁的语法,经过一些学习曲线后更容易编写。
* IMO 几乎从一开始就更容易阅读。
* 你会得到 Intellisense。
* 您无需在 C# 或 VB 中嵌入 SQL。
* 你会得到一份不错的文件。

底线是您会变得更好(更易于维护)C# 代码。

我还应该补充一点,使用 NHibernate 和其他 ORM 工具可以获得同样的好处。实体框架不是您唯一的选择。

【讨论】:

  • 嘿,这是一个非常好的评论,很好地组合在一起,向我展示了很多东西。感谢您抽出宝贵时间为我定义这一点
【解决方案3】:

LINQ 实际上将您的 LINQ 代码语法转换为 SQL 命令(在后台)。如果您对此有任何疑问,可以使用 SQL Profiler(也称为 SQL Trace)查看 LINQ 在幕后生成的 SQL 命令。 在性能方面,它应该类似于 ADO.NET。

【讨论】:

  • 那么你是说 Linq over EF 吗?或者您是说 LINQ for Big DBs 和大量数据发送没有问题?
  • 没有。 LINQ 实际上与 EF 配合得非常好,但也与 LINQ-to-SQL 配合得很好。这种技术选择是一个偏好问题。我只是说很多人认为 LINQ 的性能会很差,因为它看起来有点像另一个中间件产品,或者 hibernate 仿制品,但它远不止于此。我一直持怀疑态度,直到我看到了幕后发生的事情的 SQL 跟踪,并意识到 LINQ 直接转换为 DB 查询级别。底层查询很紧凑,并且会产生与直接 SQL 调用相当的性能。
【解决方案4】:

我同意贾斯汀的观点,你绝对应该使用实体,但你应该以缓存查询列表的形式在实体上使用 LINQ。

IdeaBlade 的 DevForce 可能会提供更全面的解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-02
    • 1970-01-01
    • 2011-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多