个性化阅读
专注于IT技术分析

LINQ到实体

点击下载

LINQ to Entity表示在实体框架对象上编写LINQ查询。实体框架通常是一个ORM(对象关系映射器), 它将数据库表创建为一个对象, 我们称这些对象为实体。通过使用这些实体, 我们可以执行任何操作, 例如插入, 删除, 更新等。

在这里, 我们将展示如何将LINQ与实体一起使用。为此, 我们将创建一个新的Web应用程序, 并使用Entity Framework与SQL Server建立连接。通过使用实体框架, 我们将在网格视图中显示数据。

LINQ到实体示例

首先, 我们将在数据库中创建一个新表” EmployeeDetails”, 以便在数据库中执行以下查询并插入一些虚拟数据以在应用程序中显示。

Create database db_employee
use db_employee
CREATE TABLE [dbo].[EmployeeDetails](

[EmpId]  INT IDENTITY (1, 1) NOT NULL, [EmpName]  VARCHAR (50) NULL, [Location] VARCHAR (50) NULL, [Gender] VARCHAR (20) NULL

PRIMARY KEY CLUSTERED ([EmpId] ASC)

);
insert into EmployeeDetails(EmpName, Location, Gender) values('Vaishali', 'Noida', 'Female')
insert into EmployeeDetails(EmpName, Location, Gender) values('Shalu', 'Gurgaon', 'Female')
insert into EmployeeDetails(EmpName, Location, Gender) values('Arpita', 'Gurgaon', 'Female')
Select *From EmployeeDetails

执行完上面的查询后。该表将显示数据, 如下所示:

LINQ到实体

现在, 我们创建一个新的Web应用程序。为此, 我们必须转到File-> Select New-> Select Project, 如下面的屏幕截图所示。

选择新项目后, 将打开一个新的弹出窗口。从弹出窗口中, 我们将选择Asp.Net Empty Web Application, 并将名称命名为LINQToEntities, 然后单击OK创建新的Web应用程序, 如下所示。

LINQ到实体1

要将Entity与LINQ结合使用, 我们需要在应用程序中添加ADO.NET实体数据模型。这是ADO.NET实体数据模型中的分步过程, 用于导入SQL表, 并使用实体框架数据库将它们转换为对象。

要添加ADO.NET实体数据模型, 我们将在应用程序上单击鼠标右键->选择添加->选择新项->选择ADO.NET实体数据模型->命名为” EmployeeEntity”, 然后单击确定, 如下所示。

LINQ到实体2

添加ADO.NET实体数据模型后, 将打开一个新的弹出窗口, 如屏幕截图所示。我们已经使用我们的应用程序的表创建了一个数据库, 因此我们将选择”来自数据库的EF Designer”, 然后单击下一步, 如下所示。

LINQ到实体3

单击”下一步”按钮后, 将出现以下屏幕, 我们需要在该屏幕上配置该数据库, 然后单击”新连接”按钮, 如屏幕截图所示。

LINQ到实体4

单击”新建连接”按钮后, 将打开一个新窗口, 其中选择数据源” Microsoft SQL Server”, 然后单击”继续”, 如下所示。

LINQ到实体5

单击”继续”后, 连接属性窗口将打开。在这里, 我们必须提及连接到所需数据库的窗口的所有属性, 如下所示。

LINQ到实体6

填写所有详细信息后, 单击”测试连接”以测试所有连接属性是否正确。如果所有信息都是正确的, 它将显示类似”测试连接成功”的消息, 如下所示。

LINQ到实体7

连接成功后, 立即单击确定按钮;否则, 请单击确定。所有连接配置将添加到我们的数据连接中, 如下所示。

LINQ到实体8

现在单击下一步按钮;它将显示相应数据库中所有可用的数据库对象。从那里, 我们将选择所需的表, 然后单击完成, 如下所示。

LINQ到实体9

单击完成按钮后, 将在我们的应用程序中创建带有所需表的实体数据模型, 如下面的屏幕快照所示。

LINQ转至实体10

添加了实体数据模型后, 我们的项目将如下所示:

LINQ到实体11

在项目的上述结构中, 我们有一个上下文文件” Model.Context.cs”, 其中包含我们的数据库连接设置, 如下所示。

LINQ到实体12

在上面的类中, 我们观察到它继承自DBContext类。在构造函数中, 我们将名称指定为” db_employeeEntities”。这就是为什么我们将使用它来创建上下文类的对象以使用实体框架访问该对象的原因。它还创建类型为” EmployeeDetail”的” DBSet”以与数据库进行交互。如果要在实体模型中包含更多表, 则必须指定一种新类型的类的” DBSet”。

我们还有另一个类文件” Model.cs”, 其中包含创建实体数据模型时将选择的” EmployeeDetail”的所有属性, 看起来像这样。

LINQ到实体13

对于我们将从数据库中选择的每个表, 实体框架都会自动生成一个类文件。

现在, 我们要向应用程序添加一个网页。为此, 我们必须在应用程序上单击鼠标右键->选择添加->新建项目->选择Web表单->给定名称为” Default1.aspx”, 然后单击”确定”按钮。它将在应用程序中创建一个新页面。

现在打开” Default1.aspx”页面。

<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head2">
<
/head>
<body>
<form id="form2" runat="server">
<div class="GridviewDiv">
<asp:GridView ID="gvDetails" CssClass="Gridview" runat="server" AutoGenerateColumns="False">
<HeaderStyle CssClass="headerstyle" />
<Columns>
<asp:BoundField HeaderText="Name" DataField="Name" />
<asp:BoundField HeaderText="Location" DataField="Location" />
<asp:BoundField HeaderText="Gender" DataField="Gender" />
</Columns>
</asp:GridView>
</div>
</form>
</body>
</html>

现在打开文件后面的代码并编写代码, 如下所示:

using System;
using System.Collections.Generic;
using System. Linq;
using System. Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)

        {

            BindGridData();

        }

    }
    private void BindGridData()

    {

        // Create the object of the Context defined in the constructor of the context class.

        db_employeeEntities db = new db_employeeEntities();

        var result = from emp in db.EmployeeDetails

                     select

                     new

                     {

                         Id = emp.EmpId, Name = emp.EmpName, Location = emp.Location, Gender = emp.Gender

                     };

        gvDetails.DataSource = result.ToList();

        gvDetails.DataBind();

    }
}

在上面的示例中, 我们为上下文文件” db_employeeEntities”创建了对象, 以访问数据库的对象。现在, 我们将运行该应用程序, 并看到如下所示的输出。

输出

LINQ到实体14

赞(0)
未经允许不得转载:srcmini » LINQ到实体

评论 抢沙发

评论前必须登录!