c entity frameworkk 支持哪些数据库

Entity Framework连接Mysql数据库并生成Model和DAL层 - 项目实战 - IT工作生活这点事
现在位置 /
给您更多信息和帮助
在这里您可以找到更多: 技术交流群:
投稿:suchso@承接:企业网站门户/微网站/微商城/CMS系统/微信公众号运营/业务咨询
echarts教程系列
[] [] [] [] [] [] [] [] []
本月最热文章
微信扫一扫,徜徉悠嘻网,您的休闲乐园
技术交流群:
投稿:suchso@
专业专注:企业网站门户/微网站/微商城/CMS系统/微信公众号运营/付费问题咨询一、Entity Framework7 简介  Entity Framework7简称EF7,是微软正在开发的最新的在.NET应用中首选的数据访问技术。它是轻量级和可扩展的启用新的平台和新的数据存储的实体框架版本。以下的应用: Windows Phone、 Windows 应用商店,ASP.NET 5 和传统的桌面应用程序,现在都可以利用的实体框架。EF7除了支持关系型数据库, 还支持如 Azure 表和Redis非关系型数据存储。  从上面我们可以看到以下几个重点:    1、EF7跟之前版本一样,仍然是一项数据访问技术;    2、EF7是一个轻量的可扩展的的实体框架;轻量是相较之前的版本,之前的版本因为众多的遗留问题(比如上下文对象就有ObjectContext和DbContext两个版本)和之前设计上的一些问题,已经非常复杂和庞大了,其中包含了使用上的复杂性。EF7是一次重大的变革,微软决定从头重构它;    3、EF7支持非关系数据存储了;二、Entity Framework7有什么不同  1、与之前的版本有哪些是相同的?    使用它时,顶层的接口跟之前的版本基本相同,      a、你仍然可以继承DbContext上下文对象,上下文中仍有DbSet&Tentity&属性;      b、你仍然可以在DbSet属性上使用Linq来编写查询;      c、你仍然可以使用DbSet属性上的Add和Remove方法;      d、你仍然可以使用DbContext.ChangeTracker和DbContext.Database属性访问对象跟踪和调用数据库相关的api;      例如:下面的代码在EF6.x和EF7中写法一样 2、有哪些改变?   A、新特性      a、支持对关系型数据的批量更新。 什么意思就不用细说了吧,在这之前,很多人喷粪EF,就是说他的更新效率太低,如果要实现批量更新,特别插入时,需要借助sql语句或是第三方工具类。相信这是很多人期待的功能;      b、支持唯一约束。它允许你在实体内除主键外额外标识一个键,将他们用作外键。   B、行为(Behavior)改变   在EF6和前期的版本中,顶层API就有很多不直观的行为,虽然EF7尽可能是保持顶层API的相同,但仍去掉了一些限制并添加了一些我们期待的行为。什么意思呢?这听起来有点迷糊,举个例子来说明吧,以前的查询,虽然Linq给我们带来了很大方便,但限制多呀,整个Linq查询翻译成一条单独的sql查询,Linq查询中只能包含EF能翻译成sql的语句或方法;还有就是sql的生成,有时生成了很复杂、效率不高,且不是我们希望的sql语句。EF7改变这种情况,可以返回多结果集,sql评估工作也不是在数据库端来做了,变更到客户端。这样就为生成sql提供了很大的灵活性。如果还有点晕,没关系,先有个印象就行。   C、变得更加简单、灵活   直接使用一个例子来说明吧。我们想通过EF的元数据来获取Blog实体被映射到数据库中的哪一张表。在这之前,我们的代码会是这样:在EF7中会代码会是这样: using (var db = new BloggingContext()) {
var tableName = db.Model.GetEntityType(typeof(Blog)).Relational().T }    D、去掉了一些特性      a、每类型映射多个实体集(MEST)。这个特性,估计用的人很少,正是因为使用的人少,所以才去掉。它是什么意思呢?就是一个类型对应数据库中的多张表,例如:表Product 和 RetriedProduct都映射到Product类。如果你还有这样的需求,使用继承是更好的选择。      b、非常复杂的类型映射。在EF6.x中,可能在一个继承映射中组合了TPH,TPT和TPC。EF7不再支持这种复杂的映射了,它要求你的CLR 类型尽量跟表结构保持一至。至于为什么,我相同不少人到现在都还没有弄明白什么是TPH,TPT,TPC,那更说不上灵活运行了,这也是导致EF6.x MetadataWorkspace异常复杂的主要原因。      c、去掉edmx建模。这可能会让很多人失望,因为它曾经给我们带来多么美好的回忆。但它有很多的不足,比较一些复杂的需求,不适应ddd分层设计,不符合现在流行的POCO等。最主要的是,有更好的选择code-based建模,这就是我们常说的code-first。 可能你会有疑问,怎么code-first和edmx是平级概念,它不是跟db-first、model-first平级的吗? 没错,它是跟edmx平级的,更详细的解释请查看我的另一篇博客       d、去掉ObjectContext API。它陪EF一起成长,到EF4.1时才被DbContext弄到幕后.不过DbContext只是它的外观模式,底层仍然是使用的它。有时需要使用一些高级的功能时,我们还想办法把它找出来。去掉它并不意味着它以前的一些功能不能用了。EF7重写了底层,把之前一定需要它才能使用的api包含在了DbContext中,并且调用更加清晰,简单。      e、去掉了延迟加载。 这功能相信大家不陌生,它一直被当成EF的一大特点,但现在,它将要从EF7中去掉。我不确定最终的版本微软会不会把它请回来,因为这一点存在很大的争论。无论是我们这些开发人员,还是EF的开发团队。我个人是支持去掉的。一,不是所有的应用都需要延迟加加载;二、不少的EF使用者对它没有深入的去了解,经常会有人问,为什么会出现&无法完成该操作,因为 DbContext 已释放&这样的问题。这说明这个功能反而给一部份使用者带来了困惑。  这些变化并不是最终的,也许文中说的,会发生改变。当然这里也不可能列出所有的变化点,毕竟EF7还在处于开发过程中。总之,它是一个革命性的版本,以至于有人在争论应该叫他EF7呢,还是EF1。      E、对非关系型数据库的支持,文章开头部分已经有提到,这里就不多说了。四、EF7的开发计划  相信,很多人和我一样,去年就开始期待EF7的发布。一年多长长的等待,可是它还没有出来,到底要什么时候呢?微软的计划是2016年,所以大家得耐心等待。不过,有个好消息是,它是开源的,最新的源代码在github上,如果你想了解更多的细节,可以到下面的地址()去克隆或是下载源代码。下面是EF的开发计划表相关文章:原文地址:/VolcanoCloud/p/4835893.html.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注公众号dotNET跨平台(opendotnet) 
 文章为作者独立观点,不代表大不六文章网立场
opendotnet在这里你可以谈微软.NET,Mono的跨平台开发技术,也可以谈谈其他的跨平台技术。
在这里可以让你的.NET项目有新的思路,不局限于微软的技术栈,横跨Windows,Linux 主流平台热门文章最新文章opendotnet在这里你可以谈微软.NET,Mono的跨平台开发技术,也可以谈谈其他的跨平台技术。
在这里可以让你的.NET项目有新的思路,不局限于微软的技术栈,横跨Windows,Linux 主流平台&&&&违法和不良信息举报电话:183-
举报邮箱:
Copyright(C)2016 大不六文章网
京公网安备78宣布要支持ADO.NET Entity Framework的数据库厂商或元件开发商_entityframework吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0可签7级以上的吧50个
本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:18贴子:
宣布要支持ADO.NET Entity Framework的数据库厂商或元件开发商
目前已有数个数据库厂商或元件开发商宣布要支持 ADO.NET Entity Framework:(1) Core Lab,支持Oracle、MySQL、PostgreSQL 与 SQLite 数据库。(2) IBM,实现 DB2 使用的 LINQ Provider。  (3) MySQL,发展 MySQL Server 所用的 Provider。  (4) Npqsql,发展 PostgreSQL 所用的 Provider。  (5) OpenLink Software,发展支持多种数据库所用的 Provider。  (6) Phoenix Software International,发展支持 SQLite 数据库的 Provider。  (7) Sybase,将支持 Anywhere 数据库。  (8) VistaDB Software,将支持 VistaDB 数据库。  (9) DataDirect Technologies,发展支持多种数据库所用的 Provider。  (10) Firebird,支持 Firebird 数据库。摘自 百度百科。
贴吧热议榜
使用签名档&&
保存至快速回贴将 Entity Framework、LINQ 和 Model-First 用于 Oracle 数据库
将 Entity Framework、LINQ 和 Model-First 用于 Oracle 数据库
&不要删除此文本,因为它是在浏览器中运行时生成的&主要&标题列表的占位符&
本教程介绍如何使用 Entity Framework、语言集成查询 (LINQ),以及如何对 Oracle 数据库使用 Model-First 以生成数据定义语言 (DDL) 脚本。
大约 30 分钟
Microsoft Entity Framework 抽象关系、逻辑数据库模式,然后向 .NET 应用程序呈现一个概念模式。它为 .NET 开发人员提供对象关系映射。
LINQ 是一种 .NET 数据查询语言,可以查询多种数据源,其中包括通过 LINQ to Entities 查询的实体。
Model-First 使开发人员能够首先创建概念模型。然后由 Visual Studio 创建 Oracle DDL 脚本,从而根据概念模型生成关系数据库模型。
在本教程中,您将了解如何将 Oracle 数据库和这三种技术与 Microsoft Visual Studio 和 Oracle Data Provider for .NET (ODP.NET) 结合使用。首先,您将使用 Entity Data Model Wizard 从现有 Oracle Database 模式创建一个实体数据模型 (EDM)。然后,使用三种不同方法查询此 EDM:
1. LINQ 查询
2. 使用 lambda 表达式进行 LINQ 查询,然后调用一个存储过程对结果进行更新。
3. Entity SQL
接下来,您将调用一个通过函数导入功能添加到 EDM 中的存储过程。该存储过程将修改数据库数据并通过一个隐式结果集返回结果。要返回结果集,需要在 .NET 配置文件中提供结果集参数信息。这样,无需使用存储过程即可向数据库中插入数据或者删除数据库中的数据。
最后,将演示如何结合使用 Model-First 和 Oracle 数据库。在 Model-First 模式中,开发人员首先创建一个 Entity Framework 对象关系数据模型。通过该数据模型,开发人员以 DDL 脚本形式自动生成 Oracle 关系数据库模型。
开始本教程之前,您应该:
安装 Microsoft Visual Studio 2010 以及 .NET Framework 4 或更高版本。
安装 Oracle Database 10.2 或更高版本,或者安装 Oracle Database XE。
从 OTN 安装 Oracle 11g Oracle Data Access Components (ODAC) 11.2.0.2.30 或更高版本。ODAC 下载包括本教程中将使用的 Oracle Developer Tools for Visual Studio 和 ODP.NET。
将这些解压缩到工作目录中。
要创建一个新的 .NET 控制台应用程序来运行 Entity Framework 和 LINQ 应用程序表单,请打开 Visual Studio。单击 File。选择 New& Project。
选择 Visual C#:Windows & Console Application。将项目重命名为 EntityFramework。单击 OK。
项目 EntityFramework 打开。
在创建实体数据模型之前,需要一个使用 ODP.NET 的 Oracle 数据库连接。要创建 Oracle 连接,您应该:
选择 View & Server Explorer。
在 Server Explorer 窗口中,如果您已经有了一个 HR 模式连接,则将其展开并连接到数据库。例如,下面的屏幕截图将 HR 模式识别为 HR.ORCL。在 User name 和 Password 中输入 HR,然后单击 OK。跳到第 6 步。
如果您还没有 HR 连接,则在 Server Explorer 中右键单击 Data Connections。选择 Add Connection,然后选择一个包括 HR 模式的 Data source name,例如,ORCL。在 User name 和 Password 中输入 HR。选中 Save password。选择 Default 作为 Role,然后单击 Test Connection。
在 Test connection succeeded 对话框中,单击 OK。
连接创建成功。展开 HR.ORCL
现在,您要创建在本课程后面将用于执行更新和数据检索的存储过程。要将这些存储过程添加到 HR.ORCL 数据连接中,右键单击 HR.ORCL 并选择 Query Window。
打开工作目录,转到 files.zip 的解压缩位置。找到 INCREASE_SALARY_BY_10 和 UPDATE_AND_RETURN_SALARY 存储过程。将 INCREASE_SALARY_BY_10 和 UPDATE_AND_RETURN_SALARY 的代码复制到 SQL Query Window 中,然后针对每个存储过程单击 Execute Query ()。
确保新添加的存储过程显示在 HR.ORCL & Procedures 节点下。
现在,您可以基于 HR 的 DEPARTMENTS 和 EMPLOYEES 表以及刚添加的两个新存储过程创建实体数据模型。为此,需要在项目中添加一个 EDM。使用 Entity Data Model Wizard 可以自动生成 EDM。
在 Solution Explorer 窗口中,右键单击 EntityFramework project 并选择 Add & New Item。
在 Add New Item 窗口中,选择 ADO.NET Entity Data Model 并将其重命名为 HRModel.edmx,然后单击 Add。
在 Entity Data Model Wizard 中,选择 Generate from database 并单击 Next。
选择 HR.ORCL 作为数据连接。选择 Yes, include the sensitive data in the connection string,将其命名为 HREntities,然后单击 Next。
从 Tables 中选择 DEPARTMENTS 和 EMPLOYEES,从 Stored Procedures 中选择 INCREASE_SALARY_BY_10 和 UPDATE_AND_RETURN_SALARY,然后单击 Finish。
注: 如果不显示这些存储过程,请确保在本 OBE 前面已将它们添加到 OBE 中 & HR 模式中 Procedures 节点下的 INCREASE_SALARY_BY_10 和 UPDATE_AND_RETURN_SALARY。
HRModel EDM 成功创建,如下图所示。
可以通过多种方式查询 EDM,然后通过 EDM 从数据库中检索数据。本部分将演示三种常见的 EDM 查询方法:LINQ、采用 lambda 表达式的 LINQ 以及 Entity SQL。
要对 Oracle 数据库执行 LINQ 查询,需要为 ODP.NET 和 Entity Framework 程序集添加一个引用。然后创建代码以执行 LINQ 查询,并将结果返回到控制台窗口。
在 Solution Explorer 窗口中,右键单击 References 并选择 Add Reference。
在 .NET 选项卡页面中,选择 Oracle.DataAccess 和 System.Data.Entity 第 4 版程序集并单击 OK。
键入下图中高亮显示的命名空间引用。或者,您也可以复制并粘贴该信息。从您的工作目录中打开包含 Programcs.txt 的文件夹。然后,复制包含命名空间引用的代码,并粘贴到 Program.cs 的顶部。
通过这些指令可以访问 ODP.NET、ADO.NET 和 Entity Framework 命名空间。
键入以下 .NET 代码。这些代码对刚创建的 EDM 执行一个 LINQ 查询。然后访问结果并输出到屏幕上。该 LINQ 查询检索所有 EMPLOYEE_ID 值小于 max_id 变量的员工信息。
也可以从 Programcs.txt 中复制 LINQ 查询代码并粘贴到 Program.cs 的 Main 语句后面。确保用一个右花括号来结束 USING 代码块。
单击 (启动调试)。
显示 LINQ 查询的输出,这表示已成功执行对 Oracle 数据库的 LINQ 查询。
LINQ 查询可以包括 lambda 表达式。Lambdas 用作标准查询运算符方法的 LINQ 参数。
通过将 Oracle 存储过程映射到 EDM 中的更新、插入和删除操作,可以对实体执行这些操作。
在本部分中,您将对 EMPLOYEE 实体执行一个使用 lambda 表达式的 LINQ 查询,然后映射一个存储过程以对所有选出的行执行更新操作。您将使用之前导入到 EDM 中的一个存储过程。
首先,创建一个用于更新数据的存储过程。当 .NET 尝试更新数据时,映射的存储过程将对 LINQ 选取的每行执行更新。
在 Solution Explorer 窗口中,选择 HRModel.edmx 并单击 Model Browser。
在 HRModel.edmx 中,右键单击 EMPLOYEE 实体并选择 Stored Procedure Mapping。
在 Mapping Details - EMPLOYEE 窗口中,选择 &Select Update Function&,然后选择 INCREASE_SALARY_BY_10 存储过程。
必须在实体和 Oracle 数据库之间建立参数数据类型映射。从下拉列表中选择 EMPLOYEE_ID 作为 ID,选择 SALARY 作为 SAL。
键入下图中高亮显示的代码,或在 Programcs.txt 中复制以 LINQ using lambda expressions -- 开头的代码块,然后粘贴到 Program.cs 中已有代码语句的后面。单击 (启动调试)
在应用程序中,您将注意到 result.SALARY 设置为 result.SALARY。实际上,Entity Framework 执行的存储过程将工资增加了 10。在下一部分中,您将对这些行执行查询,以证明工资的确增加了 10。
注:在查看了第一个结果集之后,按 Enter 键继续。
LINQ 检索这两行数据,并通过执行上述存储过程更新这两行数据。文本显示工资已经更新。
在本部分中,将查询与前一部分相同的行,来证明存储过程已成功更新这些行。您将使用 Entity Framework 中的另一种查询方法 Entity SQL 进行查询。
键入下图中高亮显示的代码,或在 Programcs.txt 中复制以 Entity SQL -- 开头的代码块,然后粘贴到 Program.cs 中已有代码语句的后面。单击 (启动调试),查看工资增加 10 的更新结果。
注:查看输出之后,按两下 Enter 继续。
通过 Entity Framework,开放人员能够定义自己的 .NET 方法来执行数据库存储过程。具体做法是在概念模型中创建函数导入,并将其映射到存储过程。在本部分中,您将定义自己的方法并映射到 Oracle 存储过程,用以执行更新。该存储过程还将使用一个隐式结果集返回修改后的数据。开发人员在 .NET 配置文件中定义结果集元数据,以便 Entity Framework 正确检索数据。
本部分介绍如何在 Entity Framework 中以编程方式修改 Oracle 数据库数据。您将对 DEPARTMENTS 表执行插入和删除操作。
您将使用 Visual Studio 的函数导入工具将存储过程映射到用户定义的 .NET 方法。由于存储过程返回一个隐式结果集,因此在使用该工具之前,需要在 .NET 配置文件中定义结果集元数据。
在 Solution Explorer 窗口中,打开 App.Config 文件。
打开工作目录,转到 files.zip 的解压缩位置,找到 AppConfig.txt 文件,然后打开。复制 &oracle.dataaccess.client& 代码段,然后将其粘贴到 App.Config 文件的 &/connectionStrings& 标记下面。现在,您已经定义了用于检索存储过程结果集的元数据。
接下来,将使用函数导入工具把一个 .NET 方法映射到 Oracle 存储过程。右键单击 HRModel.edmx 并选择
Model Browser。
在 Model Browser 中,依次展开 HRModel.Store 和 Stored Procedures 节点。选择 UPDATE_AND_RETURN_SALARY 存储过程。您已经在创建 EDM 时导入了该存储过程。
右键单击 UPDATE_AND_RETURN_SALARY 并选择 Add Function Import。
在 Add Function Import 窗口中,选择 Returns a Collection Of 部分中的 Complex。存储过程所返回的结果集中仅包含两列,而不是完整定义的实体或标量值。
单击 Get Column Information。将从 .NET 配置文件中检索列信息。
要调用 .NET 中的方法,需要使用默认的 UPDATE_AND_RETURN_SALARY 函数导入名称。
在 Stored Procedure Column Information 部分单击 Create New Complex Type,然后单击 OK。
在 Model Browser 中,您将看到 UPDATE_AND_RETURN_SALARY,它位于 HRModel.edmx & HRModel & EntityContainer:HREntities & Function Imports 下面。
在 Solution Explorer 窗口中,打开 Program.cs 文件。将 Programcs.txt 中以 Update salary using a stored procedure function import 开头的代码段键入或复制到已有代码语句的后面,如下图所示。您会看到,现在实体上下文中已经定义了一个 UPDATE_AND_RETURN_SALARY 方法。该方法将调用映射的存储过程并返回隐式结果集。
单击 (启动调试)。
注:查看结果集之后,按三下 Enter 继续。
.NET 方法返回员工姓名和更新后的工资。
将插入或删除新部门的代码键入或复制到 Program.cs 文件中。您可以从 Programcs.txt 文件复制代码,然后将其粘贴到 Program.cs 文件中已有代码语句的后面。
程序注释描述了每个代码段的作用。
单击 (启动调试)。
注:查看结果集之后,按 4 下 Enter 继续。
控制台将显示是否成功添加或删除了部门。
在本部分中,您将为 EMPLOYEE 实体添加一个新属性。为了在 Oracle 数据库模式中以列的形式反映这个新属性,Visual Studio 将从新的 EDM 生成 Oracle DDL 脚本。这些脚本将在 Oracle 数据库上运行,以更新关系模型。
在 HRModel.edmx 中,选择 EMPLOYEE
实体。要在 EMPLOYEE 实体中创建新属性,请右键单击该实体并选择 Add & Scalar Property。将属性命名为 ADDRESS。
要生成 DDL 脚本,请打开 HRModel 的 Properties 窗口。将 Database Schema Name 更改为 HR,并选择 SSDLtoOracle.tt 作为 DDL Generation Template。确保在 Database Generation Workflow property 中选择了 Generate Oracle via T4(TPT).xaml,从而确保生成&每种类型一个表&的 DDL。
这些选项确保创建的 Oracle DDL 适合 HR 模式,每种类型代表一个单独的数据库表。
右键单击 HRModel.edmx 并选择 Generate Database from Model。
Generate Database from Model 之后,将弹出 Custom Workflow Security Warning 窗口,这是因为 Oracle 定义了一个自定义工作流。单击 OK。
Generate Database Wizard 生成 DDL 脚本,供 Oracle 数据库执行。可以将这些脚本保存到一个文件中,以便稍后运行,例如,可以通过作为 Oracle Developer Tools for Visual Studio 一部分内置的 SQL*Plus 执行引擎来运行这些脚本。
请注意,该脚本创建和删除数据库对象。默认情况下,执行删除的脚本被注释掉了。如果您要使用它们,请确保在执行前取消注释。
在本教程中,您学习了如何:
在 Visual Studio 中创建新项目。
创建 Oracle 连接。
使用 Entity Data Model Wizard 创建实体数据模型。
执行查询,以检索 Entity Framework 数据。
将存储过程映射到 EDM。
使用 Entity Framework 函数导入创建用户定义的方法并映射到存储过程。
以编程形式修改 Entity Framework 数据。
使用 Model-First 生成 Oracle DDL 脚本。
课程设计人员:Anupama Mandya
其他人员:Alex Keh

我要回帖

更多关于 c entity framework 的文章

 

随机推荐