问题标签 [linq-to-sql]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
9 回答
21852 浏览

linq - Learning about LINQ

Overview

One of the things I've asked a lot about on this site is LINQ. The questions I've asked have been wide and varied and often don't have much context behind them. So in an attempt to consolidate the knowledge I've acquired on Linq I'm posting this question with a view to maintaining and updating it with additional information as I continue to learn about LINQ.

I also hope that it will prove to be a useful resource for other people wanting to learn about LINQ.

What is LINQ?

From MSDN:

The LINQ Project is a codename for a set of extensions to the .NET Framework that encompass language-integrated query, set, and transform operations. It extends C# and Visual Basic with native language syntax for queries and provides class libraries to take advantage of these capabilities.

What this means is that LINQ provides a standard way to query a variety of datasources using a common syntax.

What flavours of LINQ are there?

Currently there are a few different LINQ providers provided by Microsoft:

There are quite a few others, many of which are listed here.

What are the benefits?

  • Standardized way to query multiple datasources
  • Compile time safety of queries
  • Optimized way to perform set based operations on in memory objects
  • Ability to debug queries

So what can I do with LINQ?

Chook provides a way to output CSV files
Jeff shows how to remove duplicates from an array
Bob gets a distinct ordered list from a datatable
Marxidad shows how to sort an array
Dana gets help implementing a Quick Sort Using Linq

Where to start?

A summary of links from GateKiller's question are below:
Scott Guthrie provides an intro to Linq on his blog
An overview of LINQ on MSDN

ChrisAnnODell suggests checking out:

What do I need to use LINQ?

Linq is currently available in VB.Net 9.0 and C# 3.0 so you'll need Visual Studio 2008 or greater to get the full benefits. (You could always write your code in notepad and compile using MSBuild)

There is also a tool called LinqBridge which will allow you to run Linq like queries in C# 2.0.

Tips and tricks using LINQ

This question has some tricky ways to use LINQ

0 投票
3 回答
5368 浏览

linq-to-sql - Linq to SQL - 基础列长度

我使用 Linq to SQL 已经有一段时间了,我发现它非常有用且易于使用。使用我过去使用过的其他 ORM 工具,从数据库填充的实体对象通常具有指示数据库中基础数据列的长度的属性。这在数据绑定情况下很有帮助,您可以在文本框上设置 MaxLength 属性,例如,限制用户输入的输入长度。

我找不到使用 Linq to SQL 获取基础数据列长度的方法。有谁知道这样做的方法?请帮忙。

0 投票
1 回答
409 浏览

oop - dbml 中的外部参照关系

所以我有一个这样的数据库模式:

用户用户
ID

RoleUserXRef
RoleUserId
RoleId
UserId

角色
RoleId
名称

在 User & RoleUserXRef 和 RoleUserXRef & Role 之间定义了外键。基本上,我在用户和角色之间有一对多的关系。

我将如何在 dbml 中对此进行建模,以便生成的 User 类具有用户分配给它们的角色列表?

0 投票
2 回答
197 浏览

c# - 将实体附加到数据上下文

在 LINQ to SQL 中,是否可以在尝试附加实体之前检查它是否已经是数据上下文的一部分?

如果有帮助,请提供一些背景信息...

我在我global.asax的帮助方法中有这个代码。通常,在请求之间,这不是问题。但是在登录后,它被多次调用,第二次我最终尝试将Member对象附加到创建它的同一工作单元中。

0 投票
1 回答
439 浏览

linq-to-sql - 共享主机上的 Linq 2 SQL

我最近在共享主机上遇到了 linq 的问题。
主机是 Shared Intellect,它们支持 v3.5 的框架。但是,我不确定他们是否安装了 SP1。我怀疑他们没有。

我有一个简单的News表,其结构如下:

我的目标是显示该表中最近的 3 条记录。我最初采用 D&D 方法(我知道,我知道)并创建了一个 linq 数据源,但无法找到一种方法来按照我想要的方式限制结果,所以我删除了它并编写了以下内容:

这在我的本地机器上完美运行。

但是,当我将所有内容上传到共享主机时,我收到以下错误:

我试图在谷歌上搜索错误,但没有成功。然后,我尝试以我能想象到的各种方式修改我的查询,删除 where/orderby 参数的各种组合,并将我的查询限制为单个列,甚至删除Take 命令

因此,我的问题分为三个部分:

  1. 有没有其他人遇到过这种情况,如果有,是否有“快速”修复?
  2. 有没有办法使用数据源来限制行?
  3. 有没有办法确定共享主机运行的框架版本没有直接通过电子邮件发送(我已经完成并正在等待答案)
0 投票
9 回答
34555 浏览

linq - NHibernate 与 LINQ to SQL

作为一个没有在实际项目中使用过这两种技术的人,我想知道是否有人知道这两种技术如何相互补充以及它们的功能有多少重叠?

0 投票
4 回答
2494 浏览

visual-studio - 是什么导致 Visual Studio 无法正确加载程序集?

我一直在愉快地编写一个体面的解决方案(超过 13k LOC,5 个项目),它利用 Linq to Sql 进行数据访问。突然间,我执行了一个正常的构建,我收到了一个甜蜜的、甜蜜的模棱两可的消息:

错误 1 ​​由于 C:\xxx\xxx.dbml 中的验证错误,构建失败。打开文件并解决错误列表中的问题,然后尝试重建项目。C:\xxx\xxx.dbml

我已经好几个星期没有碰过我的数据访问层了,也没有对 DBML 文件进行任何调整。我尝试了很多鲁莽的技巧,例如重新创建布局文件、制作副本以及在重新启动 Visual Studio 后将现有文件重新添加回项目(以防某些文件级损坏);一切都无济于事。

我忘了佩戴我的 Visual Studio Skills +5 护身符,所以我开始四处寻找,我发现唯一有意义的答案是重置我的包,因为 Visual Studio 没有正确加载程序集。在运行“ devenv.exe /resetskippkgs ”之后,事实上,我能够将 dbml 文件添加回 DAL 项目并重建解决方案。

我很高兴它已修复,但我也希望从这次经历中获得更深入的了解。有谁知道在 Visual Studio 2008 中如何或为什么会发生这种情况?

新编辑:2008 年 10 月 30 日 这不是刚刚发生在我身上的事情。 Rich Strahl 最近在他的“网络日志”上写了同样的经历。他链接到另一个具有相同问题的博客并使用了相同的操作

自从这篇原始帖子以来,我也遇到过几次这个问题,让我觉得这不是随机问题。如果有人找到明确的答案,请发布。

0 投票
3 回答
1153 浏览

.net - Linq To SQL:我可以在连接表中只加载一个字段吗?

我有一个带有外键“ProductID”的“订单”表。

我想在带有产品名称的网格中显示订单,而不使用 LazyLoad以获得更好的性能,但是如果使用DataLoadOptions它会检索所有产品字段,这些字段看起来像是过度杀伤力

有没有办法在第一个查询中只检索产品名称?我可以在 DBML 中设置一些属性吗?

在这张表中说“外键值”在 Linq To SQL 中是“可见的”,但不知道这是什么意思。

编辑:更改了标题,因为我不确定是否没有解决方案。
不敢相信没有人有同样的问题,这是一种非常常见的情况。

0 投票
4 回答
2789 浏览

asp.net - 如何跟踪 Linq-to-sql DataContext 上的查询

herding code podcast 14 中,有人提到 stackoverflow 在页面底部显示了在请求期间执行的查询。

对我来说,这听起来是个好主意。每次加载页面时,我都想知道执行了哪些 sql 语句以及数据库往返总数的计数。有没有人对这个问题有一个巧妙的解决方案?

您认为可接受的查询数量是多少?我在想,在开发过程中,如果渲染一个页面需要超过 30 个查询,我可能会让我的应用程序抛出异常。

编辑:我想我一定没有清楚地解释我的问题。在 HTTP 请求期间,Web 应用程序可能会执行十几个或更多的 sql 语句。我希望将这些语句附加到页面底部,以及语句数量的计数。

这是我的解决方案:

我创建了一个 DataContext 可以写入的 TextWriter 类:

在 DataContext 的构造函数中,我设置了记录器:

最后,我使用Application_OnEndRequest事件将结果添加到页面底部:

0 投票
4 回答
1928 浏览

c# - 您可以将 LINQ 工具(例如 SQLMetal)与访问数据库一起使用吗?

我正在创建一个小型数据库应用程序来自学以下概念

  1. C# 编程
  2. .Net 3.5 框架
  3. WPF
  4. LINQ ORM

我想使用 Microsoft Access 作为数据库,但似乎找不到任何提及是否可以使用 SQLMetal 从 Microsoft Access 数据库生成 ORM 代码。

有谁知道这是否可能?

如果没有,我可以使用任何小型数据库或嵌入式数据库吗?我认为 SQL express 在这一点上对我来说太过分了。