Entity Framework快速入门--实例篇 DatabaseFirst

简介: 在上一篇中我们简单了解的EF的定义和大体的情况,我们通过一步一步的做一个简单的实际例子来让大家对EF使用有个简单印象。好,废话少说,直入主题。 第一步:创建控制台项目 这个就不多说了,如果新建项目你还不知道,那先去学学基础吧。

在上一篇中我们简单了解的EF的定义和大体的情况,我们通过一步一步的做一个简单的实际例子来让大家对EF使用有个简单印象。好,废话少说,直入主题。

第一步:创建控制台项目

这个就不多说了,如果新建项目你还不知道,那先去学学基础吧。

第二步:创建实体模型

在项目上右击 添加新建项目→Ado.Net实体数据模型

如下图所示:

img_bc7ba0a4a45067ac36b1ef48945b4614.png

第三步:与现有的数据库进行连接生成EF实体

在做这步之前,首先确定你是否已经有现有数据库,当然在这提供我自己的数据库脚本。

img_1c53668bcee393edac0d7b3b3daff1ae.gif img_405b18b4b6584ae338e0f6ecaf736533.gif View Code
 
  
-- --------------------------------------------------
-- Entity Designer DDL Script for SQL Server 2005 , 2008 , and Azure
-- --------------------------------------------------
-- Date Created: 02 / 20 / 2011 09 : 47 : 54
-- Generated from EDMX file: E:\Job\projects\WebTest\EF\Model1.edmx
-- --------------------------------------------------

SET QUOTED_IDENTIFIER OFF;
GO
USE [SchoolDB];
GO
IF SCHEMA_ID(N
' dbo ' ) IS NULL EXECUTE(N ' CREATE SCHEMA [dbo] ' );
GO

-- --------------------------------------------------
-- Dropping existing FOREIGN KEY constraints
-- --------------------------------------------------

IF OBJECT_ID(N
' [dbo].[FK_ClassStudent] ' , ' F ' ) IS NOT NULL
ALTER TABLE [dbo].[T_Student] DROP CONSTRAINT [FK_ClassStudent];
GO
IF OBJECT_ID(N
' [dbo].[FK_ClassTeacher] ' , ' F ' ) IS NOT NULL
ALTER TABLE [dbo].[T_Teacher] DROP CONSTRAINT [FK_ClassTeacher];
GO

-- --------------------------------------------------
-- Dropping existing tables
-- --------------------------------------------------

IF OBJECT_ID(N
' [dbo].[T_Class] ' , ' U ' ) IS NOT NULL
DROP TABLE [dbo].[T_Class];
GO
IF OBJECT_ID(N
' [dbo].[T_Student] ' , ' U ' ) IS NOT NULL
DROP TABLE [dbo].[T_Student];
GO
IF OBJECT_ID(N
' [dbo].[T_Teacher] ' , ' U ' ) IS NOT NULL
DROP TABLE [dbo].[T_Teacher];
GO

-- --------------------------------------------------
-- Creating all tables
-- --------------------------------------------------

-- Creating table ' T_Class '
CREATE TABLE [dbo].[T_Class] (
[ID]
int IDENTITY( 1 , 1 ) NOT NULL,
[Name] nvarchar(max) NOT NULL
);
GO

-- Creating table ' T_Student '
CREATE TABLE [dbo].[T_Student] (
[ID] uniqueidentifier NOT NULL,
[Name] nvarchar(max) NOT NULL,
[ClassID]
int NOT NULL,
[Phone] nvarchar(max) NOT NULL,
[Email] nvarchar(max) NOT NULL
);
GO

-- Creating table ' T_Teacher '
CREATE TABLE [dbo].[T_Teacher] (
[ID]
int IDENTITY( 1 , 1 ) NOT NULL,
[Name] nvarchar(max) NOT NULL,
[Address] nvarchar(max) NOT NULL,
[Phone] nvarchar(max) NOT NULL,
[Email] nvarchar(max) NOT NULL,
[ClassID]
int NOT NULL
);
GO

-- --------------------------------------------------
-- Creating all PRIMARY KEY constraints
-- --------------------------------------------------

-- Creating primary key on [ID] in table ' T_Class '
ALTER TABLE [dbo].[T_Class]
ADD CONSTRAINT [PK_T_Class]
PRIMARY KEY CLUSTERED ([ID] ASC);
GO

-- Creating primary key on [ID] in table ' T_Student '
ALTER TABLE [dbo].[T_Student]
ADD CONSTRAINT [PK_T_Student]
PRIMARY KEY CLUSTERED ([ID] ASC);
GO

-- Creating primary key on [ID] in table ' T_Teacher '
ALTER TABLE [dbo].[T_Teacher]
ADD CONSTRAINT [PK_T_Teacher]
PRIMARY KEY CLUSTERED ([ID] ASC);
GO

-- --------------------------------------------------
-- Creating all FOREIGN KEY constraints
-- --------------------------------------------------

-- Creating foreign key on [ClassID] in table ' T_Student '
ALTER TABLE [dbo].[T_Student]
ADD CONSTRAINT [FK_ClassStudent]
FOREIGN KEY ([ClassID])
REFERENCES [dbo].[T_Class]
([ID])
ON DELETE NO ACTION ON UPDATE NO ACTION;

-- Creating non - clustered index for FOREIGN KEY ' FK_ClassStudent '
CREATE INDEX [IX_FK_ClassStudent]
ON [dbo].[T_Student]
([ClassID]);
GO

-- Creating foreign key on [ClassID] in table ' T_Teacher '
ALTER TABLE [dbo].[T_Teacher]
ADD CONSTRAINT [FK_ClassTeacher]
FOREIGN KEY ([ClassID])
REFERENCES [dbo].[T_Class]
([ID])
ON DELETE NO ACTION ON UPDATE NO ACTION;

-- Creating non - clustered index for FOREIGN KEY ' FK_ClassTeacher '
CREATE INDEX [IX_FK_ClassTeacher]
ON [dbo].[T_Teacher]
([ClassID]);
GO

-- --------------------------------------------------
-- Script has ended
-- --------------------------------------------------

然后按照如下所示,选择从数据库生成实体数据模型【当然如果你想使用CodeFirst方式也是可以的,这是后话了】:

img_bf725ff8242dd088b39e6d5d6876e843.png

新建连接到现有的数据库,如下图所示:

img_34257bf0a3649ee22bf2ffb1bddec644.png

点击下一步,选择我们要生成实体对应的表、试图、存储过程等,如下图所示:

img_920b77180a204ad78ac7efef66a3b126.png

最后点击完成,则系统帮我们生成了数据库实体类以及EDMX的定义文件。

如图所示:

img_762e05a302b991fe67d4b33821035afa.png

到现在我们前期的准备工作就结束了,我们接下来看看我们怎么使用EF帮我们生成的数据库网关

第四步:写增删改查来讲解EF的基本使用

添加如下代码:

 
 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace EF
{
class Program
{
static void Main( string [] args)
{
// 创建数据库访问网关
using (SchoolDBEntities schoolEntities = new SchoolDBEntities())
{
// 查询到老师对应的班级的外键,注意是使用的linq to ef ,它是生成的命令树,然后是生成的sql

var cls
= (from c in schoolEntities.T_Class
where c.ID == 2
select c).SingleOrDefault
< T_Class > ();
// 创建teacher一个实体
T_Teacher teacher = new T_Teacher();
teacher.Address
= " 北京海淀上地 " ;
teacher.Email
= " malun666@126.com " ;
teacher.T_Class
= cls;

teacher.Name
= " Flydragon " ;
teacher.Phone
= " 110 " ;
// 将创建的实体,放入网关的数据实体的集合
schoolEntities.T_Teacher.AddObject(teacher);
// 写回数据库
schoolEntities.SaveChanges();
}
Console.WriteLine(
" OK " );
}
}
}

最终数据库中添加了一条数据,如下图所示:

img_2303cf359aee4087f18fbdb36aa614b6.png

然后我正好打开了Sql Server Profiler工具我们看一下,EF生成的SQL语句是什么,如下图所示:

img_5c31bec5781f5bf4abff451767c82052.png

最后一个就是执行insert插入数据库表的sql,如下图所示:

img_fc0fe1511420a8261fd8d39cc120cb57.png

好这样我们一个入门的实例程序,就结束了,我们看到最后EF还是生成的SQL执行的。所以EF本身性能的损失也就是根据对实体集合的修改,然后根据edmx的定义最终成sql这段,也就是浪费了点cpu而已,而且ef还会自动帮我们对sql进行优化,所以还是蛮不错的!

欢迎拍砖指点!

此实例代码下载

Entity Framework快速入门--索引贴

目录
相关文章
|
XML 存储 数据库连接
Entity Framework学习笔记——edmx文件
上文简单介绍了一下Entity FrameWork,这里说一下EF的核心——edmx文件。 在VisualStudio中建立edmx文件(此例环境为VisualStudio2012)
Entity Framework学习笔记——edmx文件
|
5月前
|
存储 API 数据库
【Entity Framework】创建并配置模型
【Entity Framework】创建并配置模型
25 0
|
存储 开发框架 .NET
Entity Framework基础01
Entity Framework基础01
205 0
Entity Framework基础01
|
SQL 数据库 C++
Entity Framework初体验
Entity Framework初体验
189 0
Entity Framework初体验
|
存储 开发框架 数据可视化
Entity Framework Core 简介
Entity Framework Core 简介
217 0
|
SQL 开发框架 Oracle
Entity Framework简介
Entity Framework简介
197 0
|
数据库
Entity Framework 迁移
Entity Framework 迁移
125 0
|
SQL .NET 数据库
Entity Framework Core 2.0 入门
该文章比较基础, 不多说废话了, 直接切入正题. 该文分以下几点: 创建Model和数据库 使用Model与数据库交互 查询和保存关联数据 EF Core支持情况 EF Core的数据库Providers: 此外还即将支持CosmosDB和 Oracle.
1687 0
|
SQL .NET 数据库
Entity Framework Core 入门(2)
安装 EF Core 将 EF Core 添加到不同平台和常用 IDE 中的应用程序的所需步骤汇总。 分步入门教程 无需具备 Entity Framework Core 或任何特定 IDE 的原有知识,即可学习这些入门教程。
1155 0