LINQ 是这种情况下的最佳解决方案吗? LINQ 到数据集

     2023-04-12     146

关键词:

【中文标题】LINQ 是这种情况下的最佳解决方案吗? LINQ 到数据集【英文标题】:Is LINQ the best solution in this scenario? LINQ to Dataset 【发布时间】:2011-05-29 22:38:48 【问题描述】:

    LINQ 是使用 .NET 实现数据到对象自动映射的最佳解决方案吗?谁能给我一些其他解决方案来自动创建数据库表和存储过程映射?

    是否可以自动将 LINQ(或其他解决方案)结果转换为 DatasetDatatable

【问题讨论】:

LINQ 不是 ORM。 跟我说吧。 【参考方案1】:

LINQ 不是 ORM。 它只是一种语言扩展,提供类似于 SQL 查询的语法和可查询类型,可将查询表达式“集成”到您的程序中。它不会将对象映射到数据库。

也就是说:

    LINQ to SQL 一个使用 LINQ 的 ORM。同样,如您所见,LINQ 本身不是 ORM,但可以在 ORM 框架中使用。但正如 AHM 所说,也可以看看 Entity Framework。

    著名的开源 .NET ORM 解决方案是 NHibernate,它实际上是 Hibernate for Java 的 .NET 端口。

    MSDN 在LINQ to DataSet 上有文章,但这与对象关系映射无关。

【讨论】:

我认为现在开始使用 Linq-to-SQL 没有任何意义。虽然微软继续说他们仍然支持它,而且它还没有死,但在我看来,Entityframework 才是他们真正关注的焦点。 原因:在 LINQ to SQL 中执行简单到中等复杂度的程序更快。 @hamlin11,截至 2008 年,推荐的方法是使用 EF,而不是 Linq-to-SQL。 2011年用Linq-to-SQL开始新项目,真是可笑。blogs.msdn.com/b/adonet/archive/2008/10/29/… 根据那篇博文得出这个结论是非常重要的。 ***.com/questions/252683/is-linq-to-sql-dead-or-alive 此外,您可以在 .NET 4.0 中使用 LINQ to SQL 更快、更简单地开发大多数中小型复杂应用程序。在我看来,“一些博主说 LINQ 已经死了”和“MS 说他们不会向它添加新功能”并不是很好的论据,支持不使用技术。也许我只是务实 我很抱歉我的错误。我使用 .net 类 (Linq2SQL),它让我可以将 db 表映射到对象中。那是因为我说 Linq 是 ORM。感谢您的回复。我查看了实体框架,但发现存储过程的自动映射存在一些限制。特别是那些具有多组结果的人。有什么建议吗??【参考方案2】:

使用 LINQ 填充数据集或数据表

LINQ to Dataset - 开始

LINQ to Dataset - 编程指南

LINQ 查询数据表Example

var query1 = from i in items
             where i.Price > 9.99
             orderby i.Price
             select i;

// load into new DataTable
DataTable table1 = query1.CopyToDataTable();

LINQ to SQL 替代方案

Entity Framework NHibernate for .NET

【讨论】:

【参考方案3】:

对于新应用程序,您可能应该使用 Entity Framework 或 NHibernate。两者都是成熟的 ORM 解决方案,都支持语言集成查询的 LINQ。

LINQ-to-SQL 是一个选项,但它几乎被弃用,取而代之的是实体框架。您不应该将它用于新应用程序。

DataSet 与 ORM 完全相反。他们正在一个对象中创建关系数据的内存表示,其唯一目的是表示该数据。它们适用于非常快速的结果或当您的数据真正动态时,但通常远不如任何真正的 ORM 解决方案。

【讨论】:

【参考方案4】:

亚瑟,你的问题并没有真正意义上的回答,因为它是书面的。

Linq 代表 Language Integrated Query,它本身并不是一个 ORM(对象关系映射)框架。然而,有些 ORM 确实大量使用了 Linq,Microsoft 有 2 种风格,Linq to SQL 和 Linq to Entities Framework,还有第 3 方 ORM 也使用了 Linq..NHibernate。

然后您将 Linq 转换为 Dataset / Datatable 的后续问题虽然实际上没有任何意义,但也暗示您宁愿使用或绑定到数据库中间件组件,这在大多数情况下会使使用 ORM 变得非常多余。

ORM 的作用是允许您将域模型映射到数据模型,因此在您的应用程序中,您无需考虑数据模型和结构,而只需考虑域对象... .你的代码看起来像这样......

IEnumerable<Customer> Custs = someRepository.Customers();
foreach(Customer c in Custs)

  // Do something with the custs.

而不是...

var cmd = connection.CreateCommand();
cmd.CommandText = "Select * from customers";
using(var reader = cmd.ExecuteReader())

  // etc etc

也许如果您可以发布更多您想要实现的目标,我们可以给您一些更好的建议。

【讨论】:

我正在努力改进旧的 Web 应用程序。我有使用一些 SQL 查询的旧数据层。我将使用现代 ORM 自动生成的图层删除该图层。然后我会重新编写业务逻辑以使应用程序变得更快。但我想重新使用 BLL 接口(数据集)。【参考方案5】:

1) LINQ 是一种查询语言,它不是 ORM。只需查看wiki page 即可获得可用的 ORM。不知道自己会用在哪里,很难买到最适合自己的一款

2) hamlin11 + Castle Active Record 建议看起来像一个数据表。但我不会将 DataSet 和 DataTable 与 ORM 混合使用,因为这些技术使用不同的内存和数据更新策略

【讨论】:

我很抱歉我的困惑。我使用 .net 类,它可以让我将 db 表映射到对象中。那是因为我说 Linq2sql 它是 ORM。感谢您的回复。【参考方案6】:

虽然 LinqToSQL 在技术上不是 ORM,但如果您想要直接表到对象映射等基本功能,它是一个完美的替代品。

另一个 MS 工具是实体框架,它支持模型优先、数据库优先和代码优先模型。

Entity Framework 比 LingToSQL 更先进,因为它允许您将表拆分和组合到不同的实体以及更多高级选项。 http://www.asp.net 或 Pluralsight 有很多好视频

我不确定 Linq 是否可以轻松转换为数据集和数据表,但实际上没有任何必要,它只是从一种数据对象类型更改为另一种。

【讨论】:

构建此 Linq-to-Events 拖放代码的最佳方式是啥?

...互,其中涉及鼠标向下、鼠标移动和鼠标向上。这是我的解决方案的简化重现:鼠标按下时,创建一个椭圆 查看详情

使用 EF6 优化 LINQ 查询

...INQ,只是想发布一个小问题,以确保这是否是解决问题的最佳方法。我想要一个表中每个值的列表。到目前为止,这就是我所拥有的,并且它有效,但这是以LINQ友好的方式收集所有内容的最佳方式吗?publicstaticList<Table1>GetAl 查看详情

哪本书是学习 Linq 的最佳书籍,包括 Linq to Entities? [关闭]

】哪本书是学习Linq的最佳书籍,包括LinqtoEntities?[关闭]【英文标题】:WhichisthebestbookouttheretolearnLinq,includingLinqtoEntities?[closed]【发布时间】:2010-10-0102:59:52【问题描述】:我听到很多关于LinqinAction一书的评论,但它不包括LinqtoEnt... 查看详情

LINQ 更新过程 - 最佳实践

】LINQ更新过程-最佳实践【英文标题】:LINQupdateprocedures-bestpractice【发布时间】:2011-03-1606:16:17【问题描述】:在使用LINQ时,什么是更新的最佳实践:拥有实例化的数据库/外观对象,并将所有更改提交给一口气录制?要有一个... 查看详情

我应该开始使用 LINQ To SQL 吗?

...Q,所以我的问题是......有其他人从NetTiers转到LINQToSQL吗?这种转变是好事还是坏事?有什么需要注意的吗?你会推 查看详情

用于 GSQL、LINQ 2 GSQL 的 ORM?

...个groovy库。如果是其中之一,则不是。【参考方案1】:这种 查看详情

我可以在 LINQ 插入后返回“id”字段吗?

...输入到数据库中时,我可以在不进行另一个数据库调用的情况下获取我刚刚插入的id吗?我假设这很容易,我只是不知道如何。【问题讨论】:【参考方案1】:将对象提交到数据库后,对象会在其ID字段中接收一个值。所 查看详情

WP7 Linq To SQL(SQL CE) IDataErrorInfo

...要在将数据保存到SQLCE数据库之前验证数据。需要知道在这种情况下实现IDataErrorInfo的最佳方式。我假设只是在Task实体类上执行此操作,但要确保。因为我 查看详情

.NET 2.0 运行时上的 LINQ

...L代码应该与.NET2.0中的代码相同。如何在不使用.NET3.5库的情况下编写LINQ?它会在.NET2.0上运行吗?【问题讨论】:【参考方案1】:奇怪的是没有人提到LINQ 查看详情

linq更新:找不到行或行已更改

...此异常,主要是Linq缓存数据和实际数据库数据不一致的情况造成。解决次问题的情况,主要有几种:1.比较简单的方法,不使用Linq提供的SubmitChanges()方式提交更改,而直接执行SQL语句,例如:db.ExecuteCommand("Update[dbo].[LinqTest]SETAge... 查看详情

可以在不删除“使用”的情况下从 Intellisense 隐藏 Linq 和其他扩展吗?

】可以在不删除“使用”的情况下从Intellisense隐藏Linq和其他扩展吗?【英文标题】:PossibletohideLinqandotherextensionsfromIntellisensewithoutremovingthe`using`?【发布时间】:2012-11-0903:15:41【问题描述】:有时我注意到我的智能感知被我不经... 查看详情

使用带有 ADO 的 Excel 2010 VBA(或带有 LINQ 的 vb.net)查询表的最佳 SQL 语句是啥

】使用带有ADO的Excel2010VBA(或带有LINQ的vb.net)查询表的最佳SQL语句是啥【英文标题】:WhatisthebestSQLstatementtoqueryatableusingExcel2010VBAwithADO(orvb.netwithLINQ)使用带有ADO的Excel2010VBA(或带有LINQ的vb.net)查询表的最佳SQL语句是什么【发布... 查看详情

linq2Entities 下的多个操作

】linq2Entities下的多个操作【英文标题】:Multipleoperationsunderlinq2Entities【发布时间】:2014-04-0212:15:54【问题描述】:我在小规模程序上使用Linq2Entities已经有一段时间了。所以通常我的查询是基本的(返回特定列中具有特定值的元... 查看详情

如何存储 linq 查询?

...:39:13【问题描述】:我进行了研究,但没有发现任何关于这种情况的信息。我有两个linq查询://checkingallcolumnsifthereismockDataList=mockDataList.Where(w=>w.Email.ToLower().Contains(search)||w.Gende 查看详情

c#中,某一多属性类的排序该如何实现?不用linq。

...也使得项目的维护和后期开发变得难以进行。2.NET下的ORM解决方案2.1LINQ2.1.1LINQ简介作为微软开发的查询方案,LINQ提供了一条更常规的途径即给.NetFramework添加一些可以应用于所有信息源(allsourcesofinf 查看详情

LINQ 和内存分配

...on【发布时间】:2018-07-1212:51:16【问题描述】:在LINQ一词下的这个问题中,我的意思是LINQtoobjects。哪些LINQ方法分配新内存,哪些不分配?例如,Select(x=>x)是否分配新内存?如果LINQ中有不同的方法-有些分配内存而另一些没有-... 查看详情

使用 LINQ 查询 XDocument 的最佳方法?

】使用LINQ查询XDocument的最佳方法?【英文标题】:BestwaytoqueryXDocumentwithLINQ?【发布时间】:2012-02-2909:51:00【问题描述】:我有一个XML文档,其中包含一系列如下所示的项目节点:<data><item><label>XYZ</label><descript... 查看详情

当我在 LINQ 查询中切换 Distinct() 和 OrderBy() 时,性能会发生变化吗? [关闭]

...时使用OrderBy()和Distinct()时,我只是在考虑哪个可以提供最佳性能。在我 查看详情