[实体框架编程] 第二章 探讨实体数据模型(一)

实体数据模型(EDM)在你的程序与数据存储之间架起了一座桥梁。它为你提供了操作数据的概念视图而不是数据库模式的能力。实体框架提供的.NET API与数据存储的每一次交互中使用EDM:不管是检索还是保存数据。实体框架工具根据这个模型生成类,这样你就可以操作EDM所描述的对象了。

在本章,你将通过实体数据模型向导创建一个简单的EDM,然后你既可以在设计器也可以通过浏览原始XML来查阅此模型。本章坚持涉及模型的基础内容以便你能熟悉EDM的结构是怎样的,以及那些常见的元素彼此之间、或与你的代码、数据库如何相联系的。

在第14章中,将探讨EDM更复杂的方面,比如它不同的派生能力以及如何定制模型以便它们能更好的反映你的业务逻辑。

为什么使用实体数据模型(EDM)?

设计良好的数据库却又给开发人员带来了一个问题.

在数据领域里,设计数据库出于可维护性,安全,有效性以及可扩充性的考虑。它的数据会以一种满足一定良好数据库的设计要求而组织,然而却给那些需要访问这些数据的开发人员带来了挑战。

注:实体数据模型是一个概念。实体框架有一个特殊的实现,在设计时以EDMX文件实现。而运行时EDMX文件会被分成3个独立的XML文件。为了保持清晰,本书在讨论实体框架的具体实现时,简单引用EDM或者实体数据模型(亦或“该模型”)这种称谓。但要牢记EDM字面上指的是用某种类型的模型代表一个你的程序中的实体这一概念。

EDM遵循第1章所讨论的实体关系建模的概念,但是在实体框架(EF)里,它把模型移到了实体框架运行时所使用的XML文件中。

有了EDM开发人员就可以重点关注他们的业务对象,甚至当从数据库中检索数据或者持久化回数据库时。作为开发人员的你不必再担心数据库的结构、表名或视图名、存储过程的名字及它所需要的参数。你不必创建必要的对象与数据库作连接,也不必关心返回数据的模式并把结果转换成你的代码要使用的对象。

你只需操作概念模型以及代表那些模型实体的类。当你在实体框架的范围内做这些时,实体框架运行时会处理数据库的连接、数据库命令生成、查询的执行、对象的组织以及将所作变动持久化回数据库所需的细节工作。

实体框架里的EDM

在实体框架的EDM实现中,主XML文件代表着概念模型,它是真正的EDM。第二个XML文件代表数据库模式,而第三个代表前两个之间的映射。在设计期间,这三个文件被捆绑为一个单一的EDMX文件。构建过程会把EDMX拆分成由运行时使用的这三个元数据文件。实体框架然后为开发人员提供一个框架用来书写基于该模型的.NET应用程序。

注:在第25章中,你将会了解到XML模式的替代,这个包含在微软将来的技术将会增强实体框架。

只要EDM提供了概念模式、数据库表示、映射文件以及能够访问实体框架所感知的目标数据库的ADO.NET提供程序,实体框架就不必再关心是什么样的目标数据库了。它提供了一个通用的与数据库交互的方式,通用的查询语法,通用的发送修改到数据库的方法。

虽然实体框架为开发人员提供了一套丰富的特性集,但是它最重要的能力如下:

  •    默认情况它自动根据模型产生类,并且每当模型变动时都会自动更新这些类
  •    它负责管理全部数据库的连接,所以开发人员不用再写大量的数据库交互代码。
  •    它提供了通用的查询语法用于查询模型而不是数据库,然后把这些查询转换成数据库可以理解的查询。
  •    它提供了一种机制用于追踪程序中使用的模型对象所作的修改,并处理到数据库的更新。

另外,由于模型的类是动态生成的,所以对模型的微小变化都不需要对你的应用程序有较大的影响。另外,修改模型要比修改你的对象以及它们所依赖的数据访问代码要简单的多。

本书你所做的全部工作都依赖于一个EDM,所以请准备好这个,我们会创建一个简单的模型,然后由此详细展开以便你能对实体框架具体工作方式有彻底的理解。

轻轻松松构建你的第一个EDM

让我们根据这个样例数据库ProgrammingEFDB1开始创建一个模型吧.这是一个简单的数据库:只有两个表、一个视图和几个存储过程,因此很适合入门使用。有了EDM,你就能够浏览a它的元素和它们的关系,这些我们将在本章后面涉及。

注:本节walkthrough将会使用一个自定义的SQL Server 数据库ProgrammingEFDB1,你可以从本书的网站http://www.learnentityframework.com下载。Visual Studio 2010提供了SQL Server的实体框架连接。在第一章提到过,你可以安装其它的提供程序以便连接到其它数据库,例如SQL Server CE,MySQL,Oracle和VistaDB.

1.通过选择“控制台应用程序”项目模版创建一个新的控制台应用程序项目(见图2-1).我起的名字是Chapter2ConsoleApp.

注:确保此项目是一个.NET 4框架的项目。你可以看到新建项目窗口顶部的过滤选项。本书的很多特性都不能用在.NET 3.5,你可能很迷茫。

 

 

图2-1 新建一个“控制台应用程序”项目

 

2.通过右击解决方案浏览器中的Chapter2ConsoleApp单击“添加”然后点“新建项”增加一个新的项。

3.从模版列表中选择ADO.NET实体数据模型(ADO.NET Entity Data Model),然后单击添加(Add)(参见图2-2)。

4.在“选择模型内容(Choose Model Contents)”页,选择“从数据库产生(Generate from Database)”选项,然后单击下一步(Next)。

5.在“选择你的数据连接(Choose Your Data Connection)”页,从可用的连接下拉列表中选择ProgrammingEFDB1。

注:如果在Visual Studio里你没有找到这个ProgrammingEFDB1的数据库连接设置,请单击新建连接并打开连接属性对话框,创建一个到此数据库的新连接。

图2-2 在“添加新项目”页面选择ADO.NET实体数据模型来创建一个EDM

6.在该页面底部,修改默认较长的”ProgrammingEFDB1Entities的连接设置名为SampleEntities,然后单击“下一步”。

7.在“选择你的数据库对象”页面,勾选Tables和Views节点。这样会选择数据库中全部的表和视图。你也可以展开任意节点指定你想要的对象。这个数据库有2个表(Contact和Address),一个视图(vOfficeAddresses)以及6个存储过程。对于本演示示例,只需要这些表和视图。

注:现在我们跳过了存储过程复选框;我们将在第7章再涉足存储过程。

8.在该页的底部,把模型默认的名称空间改为SampleModel,与连接设置的名字保持协调。

9.单击“完成”。

新的模型将会显示在设计器窗口中,而他的文件Model1.edmx会出现在解决方案管理器中(见图2-3)。

图2-3 Model1.edmx被添加到项目中,模型自动在设计器里打开

注:从Visual Studio 2010开始,实体框架也支持model-first设计,这样你可以先从零开始构建一个模型,然后基于这个模型来创建数据库。我们会在第25章里讨论model-first设计。

 

下一页

转载于:https://www.cnblogs.com/xcf007/archive/2012/06/23/2559288.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Visual Studio创建一个ADO.NET实体数据模型,你需要按照以下步骤进行操作: 1. 首先,确保你已经安装了MySQL for Visual Studio插件。这个插件提供了与MySQL数据库的集成和支持。 2. 打开Visual Studio创建一个新的项目或打开现有项目。 3. 在解决方案资源管理器中,右键单击项目,选择"添加",然后选择"新建项"。 4. 在"添加新项"对话框中,选择"数据"选项卡,然后选择"ADO.NET实体数据模型"。 5. 在"Entity Data Model Wizard"对话框中,选择"生成从数据库"选项,并点击"下一步"。 6. 在"选择连接"对话框中,点击"新建连接"。 7. 在"添加连接"对话框中,选择你的MySQL服务器,并提供连接信息,如服务器名称、用户名、密码等。点击"测试连接"按钮来确保连接正常工作,然后点击"确定"。 8. 在"选择数据库对象"对话框中,选择你想要包含在实体数据模型中的表、视图或存储过程。你可以选择多个对象,然后点击"完成"。 9. Visual Studio将自动生成ADO.NET实体数据模型,并将其添加到项目中。你可以通过双击.edmx文件来打开实体数据模型设计器,其中包含你选择的数据库对象的实体、关系和查询。 10. 现在,你可以使用实体数据模型来执行数据库操作,如查询、插入、更新和删除数据。 这样,你就可以在Visual Studio创建一个ADO.NET实体数据模型了。请注意,如果在部署ef的过程中遇到任何问题,你可以根据具体的错误消息或现象来搜索解决方案,并确保你的环境满足所有要求。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Visual Studio2017中如何让ADO.NET实体数据模型[EntityFramework]支持MariaDB&MySQL数据源](https://blog.csdn.net/weixin_39753260/article/details/113423244)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [visual studio 2019 + mysql + ef + ado.net实体数据模型.rar](https://download.csdn.net/download/demei_aspnet/20423740)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值