下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

详细分析ADO.NET的实体数据模型

作者:课课家教育     来源: http://www.kokojia.com点击数:1313发布时间: 2017-02-19 13:00:19

标签: 数据库XML文件应用程序

大神带你学编程,欢迎选课

  ADO.NET是是一个COM组件库,用于在以往的Microsoft技术中访问数据。ado.net是一组用于和数据源进行交互的面向对象类库。通常情况下,数据源是数据库,但它同样也能够是文本文件、Excel表格或者XML文件。在这篇教程中,小编会详细分析ADO.NET的实体数据模型。

  这一段时间小编在使用到Silverlight(一个跨浏览器的、跨平台的插件,为网络带来下一代基于NETFramework的媒体体验和丰富的交互式应用程序。)的领域数据服务的时候,就碰见了一个较为特殊的问题。这个问题就是,在数据库的结果以及应用程序里面的结果是不相同的。这到底是为什么呢?经过小编不断的试验,最终还是给小编找到了问题的根源。问题的关键就在于ADO.NET的实体数据模型是依赖于实体键,它的查询会自动生成实体键的唯一结果集。

  那么接下来,小编就为大家演示一下具体的处理方式以及操作过程吧。现在就让我们一起来看一看吧。

  一、操作步骤

  操作步骤一:为了可以对数据库里面的数据表进行相关的操作,首先我们需要在数据库的视图(计算机数据库中的视图是一个虚拟表,其内容由查询定义。)里面创建了一个已经连接了两个原子表的vw_DesksAndUsers的视图。这一个视图的主要作用就是为了连接已经存在的Desk的数据以及User表。于是小编就制作了一个T-SQL的视图,具体的视图如下图:

详细分析ADO.NET的实体数据模型_数据库_XML文件_应用程序_课课家

  小编在SQLServer2008这一个应用程序里面,最终得到的查询结果,如下图:

最终得到的查询结果

  看着以上这幅图像,这就证明了一件事情,那就是我们已经得到了预期的结果,说明了这一个操作步骤非常的成功。那么接下来我们就开始进行第二个操作步骤吧。

  操作步骤二:接着我们就要重新建立一个Silverlight商业应用程序即SilverlightDomainDb,大家可以看到,在自动生成的项目里面会支持WCFRIA这一项服务。这是对于Silverlight领域服务的支持所必须的。

  操作步骤三:然后大家就可以在Web项目里面添加一个ADO.NET实体数据模型(数据模型是数据特征的抽象,是数据库管理的教学形式框架。)的新项,我们需要在向导里面进行选择相对应的数据库连接以及数据表、视图以及存储过程等等。当我们完成这一个操作步骤后,系统就会自动生成相对应的实体数据类型以及上下文。除此之外,我们还可以得到edmx的模型图。具体的模型图,如下图:

模型图

  根据VisualStudio2010的提示,我们可以看到,它已经为大家自动生成了两个实体键了,分别是IsPlaying以及DeskId(注意:这两个字段是Desk数据表里面的);那么现在我们就重新生成一个项目吧。

  操作步骤四:接下来我们就需要根据实体模型来进行添加Web领域服务项。(注意:大家在完成这一个操作步骤之前,首先需要添加一下相对应的元数据信息以及数据表)

  操作步骤五:最后我们需要在Silverlight项目里面把数据源所在vw_DesksAndUsers的Datagrid拖动到Home.xaml里面,这样子就完成调试了。这个时候大家可能会发现,这样子并没有得到上面得出来的结果,然而是生成了下面的Datagrid,如下图:

Datagrid

  经过小编的仔细观察以后,才发现这原来是ADO.NET实体数据模型中的结果集依赖于实体键了所产生的结果。换一句话说,也就是Silverlight领域服务会根据实体键的唯一生成查询的结果集,于是就产生了上面的以DeskId为唯一键的数据。所以大家都明白了吗?

  二、处理方式

  根据上面的分析结果,小编最终得到一个结论,那就是假如说大家想要得到预期的结果,就一定要设置好一个合适的实体键。为了可以不至于影响到底层的SQL数据库,那么我们仅仅只需要修改edmx模型图里面的实体键就可以了。执行以下的操作步骤:单机鼠标的右键,然后选中或者是不选中"实体键"这一个选项。具体的实现方法,如下图:

实现方法

  现在我们再重新生成项目并且运行一下应用程序,那么大家可以看到应用程序已经得到了预期出来的结果,如下图:

得到了预期出来的结果

  Silverlight商业应用程序作为一个专为数据显示而生的模板,Silverlight提供灵活的编程模型,并可以很方便地集成到现有的网络应用程序中。由于其优化的数据库的处理方式,使得我们在使用的时候不得不考虑一些它们之间的细微差别。因为在VisualStudio中并没有看到由LINQ生成的T-SQL查询语句,所以小编也仅仅只是为大家提供了一个最简单最直接的实现方法而已。小编在想其深层的原因,那就是在于数据库中的T-SQL语句以及LINQ查询中生成的T-SQL语句不一样而产生。

  小编结语:

  通过这篇编程语言教程,不知道大家是否已经学会了ADO.NET的实体数据模型呢?在这篇教程中,主要就是向大家介绍一下实体数据模型。希望这对大家有所帮助。你的支持就是课课家教育最大的动力,欢迎进入课课家教育!

赞(22)
踩(0)
分享到:
华为认证网络工程师 HCIE直播课视频教程