如何正确地使用Entity entityframework6教程 Database First

Entity framework Code first 方式成熟了吗?传闻不成熟,是否使用Database first?
[问题点数:20分,结帖人MoreQuestion]
Entity framework Code first 方式成熟了吗?传闻不成熟,是否使用Database first?
[问题点数:20分,结帖人MoreQuestion]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2010年9月 挨踢职涯大版内专家分月排行榜第一
2010年12月 .NET技术大版内专家分月排行榜第二2010年10月 挨踢职涯大版内专家分月排行榜第二2010年8月 挨踢职涯大版内专家分月排行榜第二
2012年12月 .NET技术大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。将 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美国银行卡奖励25美元
posts - 85,&
comments - 1204,&
trackbacks - 0
我使用Entity Framework是在开始学习Silverlight的时候。用了半年左右。最近ADO.NET团队发布了EF Feathure 。主要是增加了Code First这个功能。
& 在说明Code First之前,先和大家回顾下
EF4增加的新特性
& 1.外键支持(Foreign Keys)
可以通过直接设置外键属性来设置实体之间的关系。
& 2.延迟加载支持
这个功能默认情况下是开启的,也就是说一个查询操作返回的实体只有在被用到时才从服务器加载。
& 3. POCOs支持
这样你的实体对象就可以独立于EF而存在。不懂POCOs?没关系,这里有几篇很好的文章帮助你理解:
& 4.T4代码生成的支持
T4不但简化了代码生成的个性化配置,而且让开发人员对代码有了更灵活和强大的控制。
& 5.更好的N-Tier设计支持
& 6.改进SQL语句的生成
为了提供EF生成的SQL语句的可读性和性能,在EF4中,查询生成SQL的部分做了很大的改进。
& 7.增强对存储过程的支持
这篇文章里我将会和大家探讨下Database First模式,Model First模式和Code First模式在EF4和VS2010中如何使用以及它们的优缺点。
Database First模式的介绍
这个是最早也是最简单的模式。当然新手可以看看下面的内容,如果是EF使用很久了请跳过这里。
&首先在创建好的VS2010的工程中,右键添加新项,添加ADO.NET Entity Data Model:
点击下一步,选择从数据库生成:
点击下一步,你就可以选择你需要使用的数据库,我这里使用NorthWind:
选择好数据库后点击下一步,选择你要用到的表,试图或者是存储过程:然后点击完成,VS2010自动为你生成好了Data Model:
当然这个功能限制了开发人员对整个生成的Data Model的修改,于是出来了POCOs的使用。使用POCOs让开发人员对数据库的操作更加灵活。
Model First模式的介绍
之前我有一篇文章使用文章里面介绍了使用Model First的模式。好像这个模式大家用的并不多,大部分人现在使用的是POCOs。如果建立一个小的数据模型,在设计实体关系模型时我觉得完全可以使用Model First来进行。
熟悉Model First的你完全可以跳过下面的例子继续看Code First部分了。
&在Database First中我们创建的Model是
那么Model First中我们需要创建的就只是一个空Model。如上图:
在创建好一个空的Model后,在这个Model的设计模式下右键选择新增,新增一个实体:
我们给它命名为Products:
点击确定,为这个Entity添加属性:比如:name,Supplier,UnitPrice。
同样的方法我们为这个Data Model添加一个Customers实体,它的属性有Company,Name,Title。
创建好的Model如下:
这么简单的模型对于我们来说没有意义,所以接下来我们要给实体之间加上关系对应。
在这个Data Model的设计界面的空白处,右键选择添加,添加关联(Association):
Customer和product是n-n的关系,所以我们给他们每个人增加一个Navigation Properties:
都是Many-Many。创建好Model后,我们下一步就是用这个Model来生成数据库脚本了。
在空白处点击右键:
选择从Model生成数据库,VS2010会给你向导,在向导页面选择新连接,然后输入一个数据库名(目前不存在的)。系统会提示你,数据库不存在,是否要创建,选择是。
完成后你会发现你的项目中多了个sql脚本:
现在你需要做的只是打开SQL Server Management Studio并运行下上面这个SQl脚本。
Code First模式
这个模式是我要重点说明的。使用Code first这个模式后,你的项目中可以说就不再需要.edmx这种系统自动生成的Data Model了。
这部分我还不是很有把握,很多东西还没学。但是我会用两个例子来告诉大家如何使用ObjectContext和DBContext来直接创建数据库。
既然是Code First那么最重要的就是我们创建实体的部分了。创建好了实体,我们再去创建ObjectContext或者是DBContext,最终借助ObjectContext或者是DBContext来完成数据库的自动创建。
&实体的创建:
很简单的几个实体。书籍,作者出版商。
接下来我们创建一个BookCatalog,它继承了ObjectContext类,这里需要注意的是在BookCatalog的构造函数中有个SqlConnection的参数。
我们就是要靠这个连接字符串来创建数据库所在的位置和名称。
除此之外就是要注意对象集ObjectSet的使用:
其它的出版商和作者是BookCatolog的ObjectSet。
完成这个类后,和上面的Model First遇到的问题相同,这么简单的东西不可能满足我们的业务需求的。所以引出来了EntityConfiguration类。如何使用呢?
首先我们创建一个BookConfiguration类,继承了EntityConfiguration,代码如下:
HasKey:设置主键,
IsRequired()不为空字段,
WithMany是一对多。
上面的这些属性就是为了在生成数据库时Book的表有主键,有不为空字段和外键关系。
我们来使用它创建个数据库试试。
我这里使用一个控制台应用程序来执行测试的。
在Main方法入口中,我们首先需要创建一个ModelBuilder,使用它我们才能使用Configuration类和创建一个Model,接着创建Object。
Ok,有个model后,就可以借助上面的BookCatalog来创建数据库,被就行数据操作:
从代码中可以看到model首先是创建了一个ObjectContext,然后这个context去判断给数据库是否存在(CodeFirstWalkthrough),不存在就创建这个数据库。
最后是在数据库中添加一条记录。
运行后看结果:
下面说明如何使用DbContext来创建数据库:
首先还是创建一个类继承了DbContext这个类:
它的属性类型是DbSet,在ObjectContext中式ObjectSet,很相似。
使用它来创建数据库:
这个比用ObjectContext创建数据库要简单多了,但是你会发现我们的SimpleBookCatalog的构造函数需要的参数只是个DbModel,那么运行它后创建的数据库呢???????默认的你的机器必须是安装了SQL express,数据库已经被创建好在那里。
那么数据库的名称呢?因该是Projectname.SimpleBookCatalog,和你的DbContext名字相同。
如果你想创建在其它地方可以吗?当然可以。很多方式,首先是构造函数中给出来sqlconnection,像上面的ObjectContext创建数据库。
第二个方式就是在App.config文件在connectionStrings节点处配置好你的数据库连接串。
你可以使用sql server ,sql express或者是SQL CE。链接字符串的名字必须是SimpleBookCatalog。
分析这三种方式的优缺点,
Database-First模式明显性能会差点,但是它很适合初学者,或者是比较急的小型项目。
Model-First模式优点是开发人员能够在设计模型时完全了解数据库的结构,但是缺点是在模型设计完后,还是需要去手动创建数据库,并且生成的脚本有点不简洁。
Code-First模式有点不用说了,就是上面两个模式的缺点。缺点应该也是有很多的,比如更新数据库。
大家可以说说自己的意见。
推荐EF学习资源:
Documentation
:& MSDN Documentation (far from complete)
: After VS2010 Beta 1 shipped, the EF team added 3 new features in a CTP1 just for Entity Framework. The documentation comes as walkthroughs
Better N-Tier Support with
POCO (Plain Old CLR Objects) entity code generation via the
Writing only code and having it work with the Entity Framework via .
NB: These will ship shortly after VS2010 RTM
Overview blog posts
Team Blogs
Entity Framework Transparent Design Blog
ADO.NET Team blog
Daniel Simmons
Diego Vega&s blog
Alex&s blog
Community Bloggers
Julie Lerman, author of Programming Entity Framework &
Check out EF4 posts &
Roger Jennings, author of ADO.NET 3.5 with LINQ and the Entity Framework
Entity Framework
Dan Rigsby &
Screencasts and Podcasts
Julie Lerman Tips and Tricks & includes some EF4 insights
May 22nd 2009.
A series of . Some are EF 4.0 specific
Improvements to the Tools/Designer
Now used the T4 template engine for code generation&
You can configure the
to use text templates to generate customized object layer code. For more information, see .
Model-First Development is now possible
enables you to do conceptual modelling first, and then create a database that supports the model. For more information, see .
(Sept 2008)
Automatic Pluralization/Singularization is now added including customisation&
provide the option of using singular or plural forms of Entity, EntitySet, and NavigationProperty names to make application code more readable. For more information, see
& deep look at customising
(Dec 2008)
The designer now surfaces Complex Type support
now supports complex types. For more information, see the following topics:
Stored procedure mapping is improved significantly
(Jul 2008)
Improved control over Entity deletion and search
The Model Browser window of the
enables you to delete objects from the storage model and to search the conceptual and storage models for a specified string. For more information, see
Making it easier in the designer to do &
Persistence Ignorance
You can use your own custom data classes together with your data model without making any modifications to the data classes themselves. This means that you can use "plain old" CLR objects (POCO), such as existing domain objects, with your Entity Framework application. For more information, see .
No need to inherit from EntityObject
No need to implement any EF interface
No metadata attributes
By-convention mapping between model and POCOs
Any ICollection&T& for collections and object references for relationships
Snapshot change detection
And from the community:
First look &
In NET 4.0 Beta 1 we introduced Model-First which allowed you to begin by creating an entity data model, then use it to create an empty database and classes. The subsequent CTP introduced Code Only.
Begin by writing your classes, use them to create the database. There are no metadata artifacts at runtime
introduction before CTP 1.
details what to expect in the release after CTP 1.
Deferred Loading of Related Objects (aka Lazy Loading)
With deferred loading, also known as lazy loading, related objects are automatically loaded from the data source when you access a navigation property. For more information, see .
Foreign Key associations
Foreign Keys are now surfaced.
An FK property can define an association and be part of the entity at the same time
Concurrency is now shared with the entity
FKs, EntityReferences, EntityCollections are all kept in sync
Overlapping composite keys are supported
(Oct 2008)
Query Improvements
Enhanced support of LINQ query operators
DefaultIfEmpty
Single, SingleOrDefault (in top projection)
Function Mapping
EntityFunctions and SqlFunctions
classes provide access to canonical and database functions from LINQ to Entities queries. The
allows a CLR method to serve as a proxy for a function defined in the conceptual model or storage model. For more information, see .
(Jan 2009)
(Oct 2008)
ExecuteStoreQuery and Translate
Not forgetting better support for using Stored Procedures (see Tools section above)
In Beta 1 we added an improved API for reporting changes: ChangeObjectState, ChangeRelationshipState, ApplyOriginalValues. In the CTP we added Self-tracking entities: serialize changes alongside current state in the object graph
Danny Simmons explores some anti-patterns you should look out for when building n-tier applications with the Entity Framework.
This article examines n-tier patterns for success and some of the key APIs and issues specific to the Entity Framework. It also provides a sneak peak at features coming in the Microsoft .NET Framework 4 that should make n-tier development significantly easier.
(Nov 2008)
Improving Testability of the Entity Framework
Unit testing EF v1 is tricky (Check out ). Things get a lot better with EF 4.0 thanks to a combination of features:
POCO& - classes that do not depend on the EF can be easier to test
Data Access Guidance and the Repository pattern & work in progress& &
New IObjectSet&T&& interface makes it easier to fake an object
Template based code generation & control the code gen&
LINQ to Entities improvements make LINQ to Entities and LINQ to Objects closer & which can simplify testing
阅读(...) 评论()}

我要回帖

更多关于 entity framework pdf 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信