猿教程 Logo

创建实体数据模型

在这里,我们要为SchoolDB数据库创建一个实体数据模型(EDM),并理解实体数据模型的基本构建。


实体数据模型是一个模型,描述实体和它们之间的关系。 让我们使用Visual Studio 2012和Entity Framework 6为SchoolDB数据库创建第一个简单的EDM 。


1。 打开Visual Studio 2012并创建一个控制台项目。



打开visual studio项目菜单- > {项目名称}属性,并确保项目的目标框架为.net framework 4.5,如下所示。



2。 现在添加实体数据模型,在解决方案资源管理器中右键单击项目- >添加- >点击并选择ADO.NET Entity Data Model。 为新项目命名为“School”并单击Add按钮。



3.下图为实体数据模型向导,在VS2012中四个选项可供选择,我们在基本教程中将关注数据库先行的方法,所以选择 EF Designer from databaser 选项,然后单击 下一步。


4.你可以选择从您的现有数据库连接或通过单击“New Connectioin”按钮创建一个新的连接。 我们将使用现有的数据库连接到SchoolDB数据库。 这也将添加一个连接字符串到默认的app.config文件。 如果你需要的话你可以手动修改这个。 单击“Next”后设置数据库连接。


5.在这个步骤中,您需要选择实体框架的版本。 我们基本教程将使用实体框架6.0,所以选择实体框架6.0并单击Next。


注意: 如果您已经安装了最新版本的实体框架,使用NuGet向导的这一步将不再出现,因为你已经安装了实体框架。

6.这一步将显示在数据库中的所有的表、视图和存储过程(SP)。 你可以选择想要的表、视图和存储过程,保持默认选中复选框,然后单击Finish。 如果有必要的话,你可以改变模型的命名空间。


7. 单击“Finish”之后,School.edmx文件将被添加到您的项目。

双击打开School.edmx, 这将显示选择的表的所有实体和它们之间的关系如下所示:


EDM还增加了一个连接字符串配置文件如下所示。


<?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;
    rovider=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>


通过这种方式,您可以从现有的数据库创建一个简单的EDM。


Entity-Table映射

每个实体在EDM中都与数据库中的表有映射关系。 您可以通过在EDM的任何实体中右键选择检查映射关系。 同样的,如果你修改任何实体的属性名,映射会自动反映这一变化。



上下文和实体类

每一个实体数据模型生成一个上下文类,并且为数据库中每张表生成一个实体类。  edmx包括两个重要文件,{ EDM名称}.Context.tt和{ EDM名称}.tt:



School.Context.tt: 这T4模板文件生成一个上下文类实体数据模型(你随时可以修改.edmx文件)。 上下文类驻留在{EDM名称}.context.cs文件中。 默认上下文类名是{ DB名称} +Entities。 例如,SchoolDB上下文类的名字是SchoolDBEntities,上下文类是继承自实体框架的DBContext类。 (EF 5.0之前它被来自ObjectContext。)


School.tt: School.tt是T4模板文件,为每个数据库表生成实体类。 实体类是POCO(Plain Old CLR Object)类。 下面的代码片段显示了学生实体。

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设计: EDM设计代表你的概念模型。 它包含的实体,实体之间的多重性。 最初,它看起来就像你的数据库表结构,但您可以添加、合并或删除列。 你甚至可以添加一个新的对象到这个模型中。 记住,做任何改变应映射存储模型。 所以你在设计器中进行任何更改都必须小心。

你可以在XML视图中打开这个EDM文件,您可以在XML视图看到EDM -概念模式的三个部分(CSDL),存储模式(SSDL)和映射模式(MSL)。

右键单击School.edmx - >点击“Open with ’,这将打开一个弹出窗口。



Visual Studio不能在设计视图和XML窗体中中同时显示模型,那么您将看到一条消息问"是否关闭设计视图的模型"。 单击Yes。 这将打开XML格式的视图。 你可以看到下面的XML视图切换如下所示。


你可以看到SSDL内容,CSDL内容和映射内容。 如果你扩大SSDL和CSDL,可以手动通过修改XML内容来完成。 但是你不需要编辑xml数据,因为这可以更容易在模型浏览器中完成。

下一节将讲解模型浏览器。


版权声明:本站所有教程均为本站原创或翻译,转载请注明出处,请尊重他人劳动果实。请记住本站地址:www.yuanjiaocheng.net (猿教程) 作者:卿文刚
本文标题: C#环境
本文地址:http://www.yuanjiaocheng.net/entity/createdatamodel.html