C#LINQ如何从数据库获取数据源?

时间:2011-09-27 14:21:25

标签: c# linq visual-studio-2010 c#-4.0

我正在尝试在C#程序中使用LINQ来从数据库中获取信息。我发现了很多显示基本到高级查询的示例,但我找不到任何可以获得基本数据库连接的东西。请参阅下面的基本LINQ示例:

var adultNames = from person in people
                 where person.Age >= 18
                 select person.Name; 

我无法弄清楚如何访问特定的数据库表并从中返回信息。我希望能够连接到db表并从中返回一些信息。谢谢!

6 个答案:

答案 0 :(得分:2)

听起来你一直在看LINQ的例子,它允许你从数据集中查询。您还需要的是一个对象关系映射器(ORM)。查看LINQ to SQLThe Entity Framework(较新)以开始此操作。该层将内省数据库并创建大量基础架构,以便根据数据模型为您提取数据。

答案 1 :(得分:2)

答案 2 :(得分:2)

有许多方法可以从数据库中检索数据。 ADO.NET是一般技术。您的具体选择是:

<强> System.Data/SqlClient/ODP

您可以使用ADO.NET中的标准查询系统从任何使用ODBC的数据库中获取数据,或使用本机数据提供程序(如SqlClient或ODP)。 SqlClient命名空间可用于从SQL Server获取数据。 Oracle数据提供程序(ODP)与Oracle一起使用。

您必须使用“原始”ADO.NET自行编写查询/存储过程。

以下是ADO.NET示例代码的绝佳列表:http://msdn.microsoft.com/en-us/library/dw70f090.aspx

以下是Oracle ODP的链接:
http://www.oracle.com/technetwork/topics/dotnet/index-085163.html

LINQ to SQL

LINQ to SQL是专门用于SQL Server数据库的LINQ提供程序。它仍受支持,但已被实体框架取代。

此处提供更多详细信息:http://weblogs.asp.net/scottgu/archive/2007/05/19/using-linq-to-sql-part-1.aspx

实体框架

实体框架可与SQL Server本机一起使用,并可与第三方或开源数据提供商一起使用Oracle。

Entity Framework 4 / 4.1将允许您使用实体数据模型(EDM)作为数据库的抽象。 EDM将显示一组可与之交互的对象,Context对象用于检索/提交数据到数据库。 CRUD查询是从LINQ语法动态生成的,因此在大多数情况下您不必自己编写T-SQL或PL-SQL查询。

以下是实体框架的基本示例:
http://www.codeproject.com/KB/database/sample_entity_framework.aspx

答案 3 :(得分:2)

这是一种非常简单的连接数据库的方法,虽然我建议您之后阅读应用程序配置以及项目的其他部分,看看它是如何工作的。

在菜单条中转到数据 - &gt;添加新数据源。从这里选择数据库然后实体数据模型。按照其余步骤为项目创建数据源。

在程序中,您可以使用以下命令创建数据源的对象:

WhatYouCalledTheDataSource datasourceObject = new WhatYouCalledTheDataSource();

然后,您可以通过将查询的第一行更改为:

来对此对象进行查询
var adultNames = from person in datasourceObject.people 

获取所需数据,获得查询后,您可以将结果放入以下列表中:

List<string> queryResults = new List<string>();

queryResults.AddRange(adultNames);

请记住,我的想法是名称是一个字符串。 您还可以根据

等表格创建列表
var adultNames = from person ...
                 ...
                 select person;
List<people> queryResults = new List<people>();
queryResults.AddRange(adultNames);

答案 4 :(得分:2)

如果您有数据库表人员,那么您可以使用LINQ-to-SQL从中返回信息,首先您需要引用以下两个程序集。

using System.Data.Linq;
using System.Data.Linq.Mapping;

定义以下实体:

[table]
class people
{
    [column]
    public int Age { get; set; };
    [column] 
    public string Name { get; set; };
}

然后你可以编写针对数据库的游览查询

Datacontext db = new DataContext("database Connection String");
var adultNames = from person in db.GetTable<people>()
             where person.Age >= 18
             select person.Name; 

答案 5 :(得分:1)

如果您看一下创建MVC解决方案的NerdDinner pdf file,它会逐步显示如何使用Linq to SQL创建数据集