Entity Framework入门教程:创建实体数据模型

时间:2023-01-30 20:25:17

下图为一个已经创建好的数据库表关系

Entity Framework入门教程:创建实体数据模型

实体数据模型的创建过程

在Visual Studio项目中,右键程序集菜单,选择【添加】-》【新建项】,在【添加新项窗口】中选择【ADO.NET实体数据模型】,如下图

Entity Framework入门教程:创建实体数据模型

在【实体数据模型向导】窗口中选择【来自数据库的EF设计器】

Entity Framework入门教程:创建实体数据模型

然后选择数据库连接,如果没有的话,可以点击新建一个连接

Entity Framework入门教程:创建实体数据模型

然后选择数据库对象

Entity Framework入门教程:创建实体数据模型

现在a School.edmx文件被添加到了项目中,在这个文件中包含了school_schema数据库中表的实体类

Entity Framework入门教程:创建实体数据模型

创建实体数据模型时自动生成的配置文件

<?xml version="1.0" encoding="utf-8"?>
<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>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="mssqllocaldb" />
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6"></provider>
</providers>
</entityFramework>
<connectionStrings><add name="SchoolSchemaEntities" connectionString="metadata=res://*/School.csdl|res://*/School.ssdl|res://*/School.msl;provider=MySql.Data.MySqlClient;provider connection string=&quot;server=127.0.0.1;user id=root;password=root;persistsecurityinfo=True;database=school_schema&quot;" providerName="System.Data.EntityClient" /></connectionStrings></configuration>

因为我使用的是MySQL,所以你要进行上面的操作的话需要安装一下组件,如果是MSSQL的话,请自行忽略,操作过程都是一样的

如果遇到如下图中的错误,你可以手动添加MySql.Data.Entity.EF6.dll(位于MySQL Connector Net的安装目录中)

Entity Framework入门教程:创建实体数据模型

然后添加配置文件,然后再重新进行以上操作。

<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6"></provider>

DbContext

在创建实体数据模型的过程中,VS为我们生成了一个SchoolSchemaEntities类(该名称是在实体数据模型向导窗口数据库连接设置的时候设定的),它继承自DbContext(数据库上下文)。DbContext是 Entity Framework中很重要的一部分,它是实体类和数据库之前的一道桥梁。

Entity Framework入门教程:创建实体数据模型

数据库上下文的功能:

  • EntitySet: 数据库表的实体映射集合,形如是DbSet。
  • Querying:将 LINQ-to-Entities查询转换为SQL查询发送给数据库。
  • Change Tracking: 跟踪从数据库查询的实体中发生的更改。
  • Persisting Data:根据实体状态对数据库执行插入、更新和删除操作。
  • Caching: DbContext在默认情况下进行第一级缓存。它存储在上下文类的生命周期中检索的实体。
  • Manage Relationship: DbContext还可以通过CSDL、MSL和SSDL在数据库先行或模型先行方法中管理关系,或者在代码优先的方法中使用。
  • Object Materialization:DbContext将原始表数据转换为实体对象。

实例化DbContext###

using (var db = new SchoolSchemaEntities())
{
//数据操作...
}

将DbContext转换成ObjectContext###

using (var db = new SchoolSchemaEntities())
{
var objectContext = (db as System.Data.Entity.Infrastructure.IObjectContextAdapter).ObjectContext;
}

原文:

http://www.entityframeworktutorial.net/EntityFramework5/create-dbcontext-in-entity-framework5.aspx

http://www.entityframeworktutorial.net/EntityFramework4.3/dbcontext-vs-objectcontext.aspx