ADO.NET实体数据模型讲解

   ADO.NET是。NET与数据库互操作的核心,而ADO.NET实体数据库则增强了。NET应用程序与数据库的互联能力,通过ADO.NET实体数据模型我们可以很方便的与底层数据库进行强类型的数据互操作。大大的方便了设计人员,从而也提高了数据库操作的安全性。 最近在使用到Silverlight的领域数据服务时遇到一个很特别的问题[在应用程序中的结果和数据库的结果不一样],经过反复的试验,终于找到了问题的根源,那就是ADO.NET实体数据模型依赖于实体键,它的查询会生成实体键的唯一结果集。

  现在来看看具体的操作过程和处理方式:

  为了对数据库的表进行操作,在数据库的视图中建立了一个连接两个原子表的 vw_DesksAndUsers 的视图,这个视图旨在为了连接已存在的User表和Desk的数据,于是我做了如下的T-SQL的视图,如下所示:


  在SQL Server 2008中得到的查询结果如下:


  也就是说得到了预期的结果,[这一步很成功].接下来进行第二步。

  第二步:新建一个Silverlight商业应用程序SilverlightDomainDb,在生成的项目中会支持WCF RIA服务。这是对Silverlight领域服务的支持所必须的。

  第三步:在Web项目中添加一个ADO.NET实体数据模型的新项,在向导中选择相应的数据库连接和数据表、视图及存储过程等,完成以后会生成相应的实体数据类型和上下文,并得到。edmx的模型图。如下所示:


  根据Visual Studio 2010的提示,它为我们生成了两个实体键:DeskId,IsPlaying(这是Desk表中的两个字段);现在重新生成项目。

  第四步:根据实体模型添加Web领域服务项。(在这一步需要添加相应的表和元数据信息)

  第五步:Silverlight项目中将数据源所在vw_DesksAndUsers 的Datagrid拖到Home.xaml中,完成、调试。并没有得到上面的结果,而是生成了如下的Datagrid:


  经过仔细的观察,才发现原来是ADO.NET实体数据模型中的结果集依赖于实体键,也就是说Silverlight领域服务会根据实体键的唯一生成查询的结果集,于是就产生了上面的以DeskId为唯一键的数据。

  处理:

  根据以上的分析,要得到预期的结果,必须设置合适的实体键,为了不至于影响到底层的SQL数据库,我们只需要修改。edmx模型图中的的实体键即可(点击右键选中或不选中"实体键"):


  现在重新生成项目并运行程序,程序得到了预期的结果。


  Silverlight商业应用程序作为一个专为数据显示而生的模板,为数据库的呈现提供了友好的界面,由于其优化的数据库的处理方式使得我们在使用时不得不考虑一些它们之间的细微差别[由于在Visual Studio中没能看到有LINQ生成的T-SQL查询语句,所以我也只是提供了一个简单的解决方案而已],我想其深层的原因在于LINQ查询中生成的T-SQL语句与数据库中的T-SQL语句不同而产生。

时间: 2024-09-12 22:41:46

ADO.NET实体数据模型讲解的相关文章

ADO.NET实体数据模型多表连接查询中的实体键问题

ADO.NET是.NET与数据库互操作的核心,而ADO.NET实体数据库则增强了.NET应用程序与数据库的互联能力,通过ADO.NET实体数据模型我们可以很方便的与底层数据库进行强类型的数据互操作.大大的方便了设计人员,从而也提高了数据库操作的安全性.最近在使用到Siverlight的领域数据服务时遇到一个很特别的问题[在应用程序中的结果和数据库的结果不一样],经过反复的试验,终于找到了问题的根源,那就是ADO.NET实体数据模型依赖于实体键,它的查询会生成实体键的唯一结果集. 现在来看看具体的

ado-vs2010 添加ADO.net 实体数据模型时错误

问题描述 vs2010 添加ADO.net 实体数据模型时错误 本人学生菜鸟,学习 Entity Framework 的时候添加实体数据模型的时候,ADO实体模型是灰色的,添加后显示如下错误,求各位大神给予解决方案!!谢谢 解决方案 先安装visual studio 2010 sp1 然后安装entity framework tools

ado.net 实体数据模型 找不到元素错误

问题描述 在从数据库更新模型时出现:在输出窗口里->实体数据模型中有:无法分析配置文件.错误消息为:"找不到元素.(异常来自HRESULT:0x8002802B(TYPE_E_ELEMENTNOTFOUND))".请尝试手动编辑文件并保存.在.edmx文件属性中连接字符串为空web.config中连接字符串没有问题新建的VS项目中添加ado.net实体数据模型也没有问题.当前项目运行也没问题,但是不能更新模型,也不能新建模型.令人郁闷 解决方案 本帖最后由 lzghello 于

“ADO.Net 实体数据模型”和Access数据库

问题描述 一.在使用"RIAWCFService"时,要用到"ADO.Net实体数据模型"(Model1.edmx).添加它时,VS2010会提示建立数据库连接,选择数据库,选择表,然后创建.问题1:"VS2010会提示建立数据库连接,选择数据库,选择表",这样建立的连接会不会影响程序的部署呢???如果要部署到服务器,应该怎样配置连接字符串???比如:<connectionStrings><addname="Appli

请问创建ADO.NET实体数据模型(EF)时,选择从数据库生成时选择为空是为什么?

问题描述 如图,已创建好似数据库连接,但是创建实体数据模型时,下拉框选择为空:请问什么原因,怎么解决? 解决方案 解决方案二:第一张图就能叫创建好连接了?这幅图就有点像SSMS,用图形的方式来管理你的数据库,而不是你所认为的建立好连接了第二张图下面,点新建连接,继续下一步下一步吧解决方案三:第二张图新建连接,并选中将连接保存到Web.Config文件中,这时候你项目中的代码才能访问Web.Config里面的连接字符串去连接你的数据库.解决方案四:引用1楼andywangguanxi的回复: 第一

ADO.NET实体数据模型详细介绍_C#教程

OleDbConnection,OracleConnection 或者SqlConnection这种连接,直接执行sql语句.现在的连接方式执行sql语句有了很大的不同,下面先看看简单的单表的增删改查操作,然后再看多表的关联查询,带参数查询等.一.ADO.NET Entity对单表的增删改查有一个表,即在工程中是一个实体user,为了测试方便,所有字段为string型. 1.增加新记录增加一条记录如下: [csharp] using (OracleEntities entities = new

Visual Studio 2013 添加新项缺失[ADO.NET 实体数据模型]解决方法

      之前使用在Vs2012下使用SQLite+EF建的项目在VS2013下不能运行了,我把以前的*.edmx删除后准备重新添加以下 .可是,在添加新项目窗口,选中"数据",发现右侧窗口中没有出现ADO.NET实体模型选项.  解决方法如下: 1).到 Visual Studio 2013 的安装包的目录:/packages/EFTools 中寻找如下文件 EFTools.msi; EFTools.cab,如图 将它们复制自己计算机的某一目录下,例如:C:\temp 2).在这个

加载实体数据模型工具包时出错,无法加载实体数据模型工具包

问题描述 新建ADO.NET实体数据模型失败,报错:加载实体数据模型工具包时出错,无法加载实体数据模型工具包:已经尝试过:1.重装VS20102.devenv/resetskippkgs3.重装X:WCUEfools和DAC,其中DAC安装失败,因为我已经安装了SQL20084.删除了%localappdata%microsoftvisualstudio10.0和C:Users<user>appdataRoamingMicrosoftVisualStudio10.0和C:ProgramData

数据点: 设计实体数据模型

实体框架是为 ADO.NET 开发的一种激动人心的新技术.开发人员可以借助它使用逻辑模型(而不是物 理模型)查看数据,并提供了更高的灵活性. 实体框架的核心是实体数据模型 (EDM).EDM 定义开发人员通过代码进行交互的实体类型.关系和容 器.实体框架将这些元素映射到关系数据库公开的存储架构上.EDM 通过用于定义概念应用程序模型的 XML 向实体框架公开.概念模型可单独定义,也可与用于定义实际存储架构的 XML 以及用于定义两者之 间映射的 XML 一起定义.尽管可以(有时也有必要)手动编辑