Entity Framework 教程——创建实体数据模型
创建实体数据模型:
本文将带你创建实体数据模型(EDM)SchoolDB数据库和理解基础建设模块。
实体数据模型(EDM)是用于描述实体之间关系的一种模型,以下将使用Visual Studio 2012 和 EF6创建SchoolDB数据库。
1.打开Visual Studio 2012并创建一个Console项目

项目->属性,确保target framework 为 .NET Framework 4.5。

2.增加EDM文件,右键项目 -> 添加 选中ADO.NET Entity Data 并命名为'School'

3.随后会出现EDM向导,有四个选项:EF Designer from database (数据库优先功能),Empty EF Designer model(模型优先功能),Empty Code First model 和 Code First from database(代码优先功能)。在本基础教程中暂时只关注数据库优先功能,所以选择EF Designer from database 选项,并且点击下一步。

4.你可以选择已经存在的数据库连接或者选择新建一个连接。我们选择已经存在的数据库连接SchoolDB数据库。这会将对应的连接字符串加入app.config文件,点击下一步。

5.这一步我们需要选择EF的版本,这里我们选择EF6.0

注意:如果你已经安装了EF的最新环境,这一步将不会出现。
6.这一步将显示SchoolDB数据库的所有表,视图和存储过程,选择你想要建模的表,视图,存储过程。并且如果需要的话,可以修改命名空间。

注意:
Pluralize or singularize generated object names 选项 表示所创建的对象属性会注意单复数形式。例如,如果SchoolDB数据库中有一个表名为Students的表,它创建出来的实体集合(如DBSet<T>)中的泛型参数(T)会以单数形式创建。又例如表间关系存在一对多或多对多关系的,如Student与Course之间的多对多关系,在Student实体对象中将存在一个复数形式的属性名“Courses”的集合对象。
第二个选项,Include foreign key columns in the model,将外键包含在模型中。例如Standard表和Student表存在一对多的关系,所以代表多个Student关联一个Standard。在实体模型中Student将包含StandardId 这个标量属性和Standard 这个导航属性,如果没有选中该项,则仅包含Standard 这个导航属性,不包含StandardId 这个标量属性。
第三个选项,Import selected stored procedures and functions into entity model,自动创建存储过程和函数,这个选项通常是必须要的。
7.当点击“Finish”键后,一个名为“School.edmx”的文件将出现在你的项目中。双击该文件将打开EDM设计器,它会显示所有你刚刚选择的表以及他们之间的关系。

EDM也会在config文件中为你添加好连接字符串
<?xml version="1.0"?>
<configuration>
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false"/>
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/>
</startup>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework"/>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer"/>
</providers>
</entityFramework>
<connectionStrings>
<add name="SchoolDBEntities" connectionString="metadata=res://*/SchoolDB.csdl|res://*/SchoolDB.ssdl|res://*/SchoolDB.msl;provider=System.Data.SqlClient;provider connection string="data source=.\sqlexpress;initial catalog=SchoolDB;integrated security=True;multipleactiveresultsets=True;application name=EntityFramework"" providerName="System.Data.EntityClient"/>
</connectionStrings>
</configuration>
至此,你已经通过已有的数据库创建出一个简单的EDM模型了。
接下来我们将看看EDM (School.edmx)为我们创建了一些什么文件。
实体表映射:
每一个实体对象都被映射到对应的数据表中,你可以右键点击对应的实体对象并查看映射关系。当然,如果你在EDM设计器中修改了实体对象的属性名字,表映射也会自动应用该变化。

上下文及实体类:
每一个实体对象模型都会创建一个上下文类(Context Class)还有若干个你选中的表所对应的实体类在EDM中,展开School.edmx变能看见。

School.Context.tt:
这是T4模板文件产生出来的上下文类。你可以展开.edmx文件开到它,其中会创建默认名为{数据库名} + "Entities"的类。该类继承DBContext类(该类在EF在定义,EF5.0前为ObjectContext类)

School.tt:
这是T4模板产生出来的实体对象类,下面代码片段显示了Student实体对象
public partial class Student
{
public Student()
{
this.Courses = new HashSet<Course>();
} public int StudentID { get; set; }
public string StudentName { get; set; }
public Nullable<int> StandardId { get; set; }
public byte[] RowVersion { get; set; } public virtual Standard Standard { get; set; }
public virtual StudentAddress StudentAddress { get; set; }
public virtual ICollection<Course> Courses { get; set; }
}
EDM Designer:
EDM设计器代表你的概念模型,它代表实体对象和他们之间的关系。起初,它看起来完全跟你的数据库表结构一样,但你可以从设计器中添加,合并和删除一些你的应用程序不需要的字段。你甚至可以在这个模型中添加一个来自不同数据库表的新对象到上下文菜单中,像上面一样。记住无论做了什么改动都应该将它映射至存储模型中。所以你做改动时必须小心。
你可以通过XML的方式打开EDM设计器,这样你将看到三部分,概念模式 (CSDL), 存储模式 (SSDL) 和 映射表 (MSL) ,这三部分都在XML中。
右键点击School.edmx,选择打开方式。

选择“XML (text) Editor”

Visual Studio 不能同时打开模型设计外观和XML编辑器,所以你会看到一个让你关闭模型设计外观的窗口。点击Yes将看到XML编辑器形式,然后你将看到以下界面。

你能看到SSDL, CSDL 和 C-S mapping 的内容,你可以展开这些内容进行浏览。你并不需要直接编写XML数据,因为你可以直接在模型中浏览编辑。
Entity Framework 教程——创建实体数据模型的更多相关文章
- Entity Framework入门教程:创建实体数据模型
下图为一个已经创建好的数据库表关系 实体数据模型的创建过程 在Visual Studio项目中,右键程序集菜单,选择[添加]->[新建项],在[添加新项窗口]中选择[ADO.NET实体数据模型] ...
- 创建实体数据模型【Create Entity Data Model】(EF基础系列5)
现在我要来为上面一节末尾给出的数据库(SchoolDB)创建实体数据模型: SchoolDB数据库的脚本我已经写好了,如下: USE master GO IF EXISTS(SELECT * FROM ...
- Entity Framework 教程——Entity Framework中的实体类型
Entity Framework中的实体类型 : 在之前的章节中我们介绍过从已有的数据库中创建EDM,它包含数据库中每个表所对应的实体.在EF 5.0/6.0中,存在POCO 实体和动态代理实体两种. ...
- Entity Framework 教程——DBContext
DBContext: 在之前的章节<创建实体数据模型>中,EDM为我们创建了SchoolDBEntities 类,它派生子System.Data.Entity.DbContext这个类,这 ...
- Entity Framework教程翻译 ---- 系列教程
Entity Framework教程(第二版) (翻译)Entity Framework技巧系列之十四 - Tip 56 (翻译)Entity Framework技巧系列之十三 - Tip 51 - ...
- Entity Framework教程及文章传送门
Entity Framework视频教程http://www.iqiyi.com/playlist296844502.html Model-Code First做法講解與教學 (ASP.net MVC ...
- EntityFramework 学习 一 创建实体数据模型 Create Entity Data Model
1.用vs2012创建控制台程序 2.设置项目的.net 版本 3.创建Ado.net实体数据模型 3.打开实体数据模型向导Entity Framework有四种模型选择 来自数据库的EF设计器(Da ...
- Entity Framework教程(第二版)
源起 很多年前刚毕业那阵写过一篇关于Entity Framework的文章,没发首页却得到100+的推荐.可能是当时Entity Framework刚刚发布介绍EF的文章比较少.一晃这么多年过去了,E ...
- Model First:创建实体数据模型(ADO.NET 实体数据模型)
Microsoft Entity Framework是一个对象关系映射工具(Object Relational Mapping ,O/RM)工具.它可以让你从一个数据库自动地生成数据接入层.实体框架免 ...
随机推荐
- PHP与API讲解(一)
了解API: 在使用与创建自己的API之前我们需要先了解什么是API! API代表应用程序编程接口,而接口指的是一个特定的服务.一个应用程序或者其他程序的公共模块. 理解SOA(面向服务的架构):SO ...
- java8中lambda表达式的应用,以及一些泛型相关
语法部分就不写了,我们直接抛出一个实际问题,看看java8的这些新特性究竟能给我们带来哪些便利 顺带用到一些泛型编程,一切都是为了简化代码 场景: 一个数据类,用于记录职工信息 public clas ...
- EC笔记:第4部分:20、传递引用代替传值
考虑以下场景: #include <iostream> #include <string> using namespace std; struct Person { strin ...
- Android中AlarmManager使用示例(持续更新,已经更改)
现在普遍的手机都会有一个闹钟的功能,如果使用Android来实现一个闹钟可以使用AtarmManager来实现.AtarmManager提供了一种系统级的提示服务,允许你安排在将来的某个时间执行一个服 ...
- git远程库GitHub
首先,注册一个GitHub(github.com)帐号,免费获得Git远程仓库 由于本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以,需要一点设置: 第1步:创建SSH Key.在用 ...
- Spark的StandAlone模式原理和安装、Spark-on-YARN的理解
Spark是一个内存迭代式运算框架,通过RDD来描述数据从哪里来,数据用那个算子计算,计算完的数据保存到哪里,RDD之间的依赖关系.他只是一个运算框架,和storm一样只做运算,不做存储. Spark ...
- 关于javascript中的this关键字
this是非常强大的一个关键字,但是如果你不了解它,可能很难正确的使用它. 下面我解释一下如果在事件处理中使用this. 首先我们讨论一下下面这个函数中的this关联到什么. function doS ...
- charles工具抓包教程(http跟https)
1.下载charles 可以去charles官网下载,下载地址:http://www.charlesproxy.com/download/ 根据自己的操作系统下载对应的版本,然后进行安装,然后打 ...
- 兼容Mono的下一代云环境Web开发框架ASP.NET vNext
微软在2014年5月12日的TechEd大会上宣布将会发布下一代ASP.NET框架ASP.NET vNext的预览.此次发布的ASP.NET框架与以前相比发生了根本性的变化,凸显了微软“云优先”(cl ...
- 用命令行工具创建 NuGet 程序包
NuGet.exe 下载地址 本文翻译自: https://docs.nuget.org/Create/Creating-and-Publishing-a-Package https://docs.n ...