Create Entity Data Model:

Here, we are going to create an Entity Data Model (EDM) for SchoolDB database and understand the basic building blocks.

Entity Data Model is a model that describes entities and the relationships between them. Let's create first simple EDM for SchoolDB database using Visual Studio 2012 and Entity Framework 6.

1. Open Visual Studio 2012 and create a console project.

Go to PROJECT menu of visual studio -> {project name} properties - and make sure that the project's target framework is .NET Framework 4.5, as shown below.

2. Now, add Entity Data Model by right clicking on the project in the solution explorer -> Add -> click New Item and select ADO.NET Entity Data Model from popup, Give the new item the name 'School' and click Add button.

3. Entity Data Model Wizard in VS2012 opens with four options to select from: EF Designer from database for database first approach, Empty EF Designer model for model first approach, Empty Code First model and Code First from database for Code-First approach. We will focus on the database-first approach in the basic tutorials so select EF Designer from database option and clickNext.

4. You can choose from your existing DB Connections or create a new connection by clicking on the 'New Connection' button. We will use the existing DB connection to the SchoolDB Database. This will also add a connection string to your app.config file with the default suffix with DB name. You can change this if you want. Click 'Next' after you set up your DB connection.

5. In this step, you need to choose the version of Entity Framework. We will use Entity Framework 6.0 in the basic tutorials so select Entity Framework 6.0 and click Next.

Note: If you have already installed the latest version of Entity Framework using NuGet manager as shown in the Setup Environment section then this step of the wizard will no longer appear since you have already installed Entity Framework.

6. This step will display all the Tables, Views and Stored Procedures (SP) in the database. Select the Tables, Views and SPs you want, keep the default checkboxes selected and click Finish. You can change Model Namespace if you want.

Note:

Pluralize or singularize generated object names checkbox singularizes an entityset name, if the table name in the database is plural. For example, if SchoolDB has Students table name then entityset would be singular Student. Similarly, relationships between the models will be pluralized if the table has one-to-many or many-to-many relationship with other tables. For example, Student has many-to-many relationship with Course table so Student entity set will have plural property name 'Courses' for the collection of courses.

The second checkbox, Include foreign key columns in the model, includes foreign key property explicitly to represent the foreign key. For example, Student table has one-to-many relationship with Standard table. So every student is associated with only one standard. To represent this in the model, Student entityset includes StandardId property with Standard navigation property. If this checkbox is unchecked then it will only include the Standard property, but not the StandardId in the Student entityset.

The third checkbox, Import selected stored procedures and functions into entity model, automatically creates Function Imports for the stored procedures and functions. You don't need to manually import this, as was necessary prior to Entity Framework 5.0.

7. After clicking on 'Finish', a School.edmx file will be added into your project.

Open EDM designer by double clicking on School.edmx. This displays all the entities for selected tables and the relationships between them as shown below:

EDM also adds a connection string in the config file as shown below.

<?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=&quot;data source=.\sqlexpress;initial catalog=SchoolDB;integrated security=True;multipleactiveresultsets=True;application name=EntityFramework&quot;" providerName="System.Data.EntityClient"/>
</connectionStrings>
</configuration>

In this way, you can create a simple EDM from your existing database.

Now, let's examine all the building blocks of generated EDM (School.edmx) as shown in the above figure.

Entity-Table Mapping:

Each entity in EDM is mapped with the database table. You can check the entity-table mapping by right clicking on any entity in the EDM designer -> select Table Mapping. Also, if you change any property name of the entity from designer then the table mapping would reflect that change automatically.

Context & Entity Classes:

Every Entity Data Model generates one context class and entity class for each DB table included in the EDM. Expand School.edmx and see two important files, {EDM Name}.Context.tt and {EDM Name}.tt:

School.Context.tt: This T4 template file generates a context class whenever you change Entity Data Model (.edmx file). You can see the context class file by expanding School.Context.tt. The context class resides in {EDM Name}.context.cs file. The default context class name is {DB Name} + Entities. For example, the context class name for SchoolDB is SchoolDBEntities, then the context class is derived from DBContext class in Entity Framework. (Prior to EF 5.0 it had been derived from ObjectContext.)

School.tt: School.tt is a T4 template file that generates entity classes for each DB table. Entity classes are POCO (Plain Old CLR Object) classes. The following code snippet shows the Student entity.

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 designer represents your conceptual model. It consists of Entities, and associations & multiplicity between the entities. Initially, it will look exactly like your database table structure but you can add, merge or remove columns, which are not required by your application from this designer. You can even add a new object in this model, which can have columns from different database tables from context menu, as shown in the figure above. Remember, whatever changes done here should be mapped with the storage model. So you have to be careful, while making any changes in the designer.

You can open this EDM designer in XML view where you can see all the three parts of the EDM - Conceptual schema (CSDL), Storage schema (SSDL) and mapping schema (MSL), together in XML view.

Right click on School.edmx -> click 'Open with..', this will open a popup window.

Select 'XML (text) Editor' in the popup window.

Visual Studio cannot display the model in Design view and in XML format at the same time, so you will see a message asking whether it’s OK to close the Design view of the model. Click Yes. This will open the XML format view. You can see the following XML view by toggling all outlining as shown below.

You can see SSDL content, CSDL content and C-S mapping content here. If you expand SSDL and CSDL, each one has some common XML node under each schema node. You don't need to edit the xml data because this can be accomplished easier in the Model Browser.

Learn about Model Browser in the next section.

Entity Framework Tutorial Basics(5):Create Entity Data Model的更多相关文章

  1. Entity Framework Tutorial Basics(4):Setup Entity Framework Environment

    Setup Entity Framework Environment: Entity Framework 5.0 API was distributed in two places, in NuGet ...

  2. Entity Framework Tutorial Basics(42):Colored Entity

    Colored Entity in Entity Framework 5.0 You can change the color of an entity in the designer so that ...

  3. Entity Framework Tutorial Basics(27):Update Entity Graph

    Update Entity Graph using DbContext: Updating an entity graph in disconnected scenario is a complex ...

  4. Entity Framework Tutorial Basics(40):Validate Entity

    Validate Entity You can write custom server side validation for any entity. To accomplish this, over ...

  5. Entity Framework Tutorial Basics(26):Add Entity Graph

    Add Entity Graph using DbContext: Adding entity graph with all new entities is a simple task. We can ...

  6. Entity Framework Tutorial Basics(13):Database First

    Database First development with Entity Framework: We have seen this approach in Create Entity Data M ...

  7. Entity Framework Tutorial Basics(1):Introduction

    以下系列文章为Entity Framework Turial Basics系列 http://www.entityframeworktutorial.net/EntityFramework5/enti ...

  8. Entity Framework Tutorial Basics(32):Enum Support

    Enum in Entity Framework: You can now have an Enum in Entity Framework 5.0 onwards. EF 5 should targ ...

  9. Entity Framework Tutorial Basics(31):Migration from EF 4.X

    Migration from Entity Framework 4.1/4.3 to Entity Framework 5.0/6.0 To migrate your existing Entity ...

随机推荐

  1. PhotoShop使用指南(1)——动态图gif的制作

    第一步:菜单栏 > 窗口 > 工作区 > 动感 第二步:时间轴 > 设置延迟时间 第三步:时间轴 > 设置循环次数 第四步:存储为Web所用格式 Ctrl+Shift+A ...

  2. zoj1967 poj2570 Fiber Network (floyd算法)

    虽然不是最短路,但是询问时任意两点之间的信息都要知道才能回答,由此联想到floyd算法,只要都floyd算法的原理理解清楚了就会发现:这道题的思想和求任意两点之间的最短路的一样的,只不过是更新的信息不 ...

  3. uva120 Stacks of Flapjacks (构造法)

    这个题没什么算法,就是想出怎么把答案构造出来就行. 思路:越大的越放在底端,那么每次就找出还没搞定的最大的,把它移到当前还没定好的那些位置的最底端,定好的就不用管了. 这道题要处理好输入,每次输入的一 ...

  4. HihoCoder1366 逆序单词(字典树)

    逆序单词 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 在英文中有很多逆序的单词,比如dog和god,evil和live等等. 现在给出一份包含N个单词的单词表,其中每 ...

  5. Redis底层探秘(五):Redis对象

    前面几篇文章,我们一起学习了redis用到的所有主要数据结构,比如简单动态字符串(sds).双端链表.字典.压缩列表.整数集合等等. redis并没有直接使用这些数据结构来实现键值对数据库,而是基于这 ...

  6. 怪盗基德的滑翔翼(还是最长x序列)

    //怪盗基德的滑翔翼 #include<iostream> #include<cstdio> #include<cstdlib> #include<cstri ...

  7. Zabbix配置微信报警通知

    Zabbix告警可以通过邮件,微信,电话,短信等方式发送告警消息. 电话和短信需要向运营商购买相应的网关,需要付费: 邮件和微信是免费的,可以根据业务需要选择相应的告警模式 Zabbix版本:3.2 ...

  8. MySQL自带的性能压力测试工具mysqlslap详解

    使用语法如下:# mysqlslap [options] 常用参数 [options] 详细说明: --auto-generate-sql, -a 自动生成测试表和数据,表示用mysqlslap工具自 ...

  9. springboot+springcloud config

    参考:sorry,全找不到了,当时没记录,最后后知后觉觉得应该记录,所以后面的都有在asfood父项目中的doc文件夹下记录,望见谅. 1. springconfig server 1.1. pom. ...

  10. 第 十五 课 Go 语言范围(Range)

    Go 语言中 range 关键字用于 for 循环中迭代数组(array).切片(slice).通道(channel)或集合(map)的元素 package main import "fmt ...