使用Entity Framework和WCF Ria Services开发SilverLight之3:Map

简介:

在上一篇中《使用Entity Framework和WCF Ria Services开发SilverLight之2:POCO》,我们将映射交给edmx文件处理。如下:

image

该文件是由EF框架自动生成的,通过查看原始文件,我们可以看到EF框架为我们建立了实体类间的各种映射。现在,借助于EF4.1框架,我们可以进行更方便的进行手动映射。

 

1:清理SchoolData

首先,删除ModelSchool.edmx。

其次,由于不再使用edmx映射,我们将SchoolContext中数据库连接串,换成传统的连接串。即:

image

上图中的红框部分,换成:

image

相信你和我一样,非常熟悉这样的连接字符串。

二:手动建立Map

在SchoolModel中,我们建立一个Mapping子目录,将所有的映射类全部建立在这个位置。如DepartmentMap:

需要注意的一点,理论上,我们可以借助于Map,生成完全意义上的Poco,因为我们使用EF4.1框架,通过重写DbContext类型的OnModelCreating方法,如下:

我们完全可以动态为POCO实体类生成EF所需要的各种映射关系。但是,很遗憾,在这里我们使用的Ria Service。在使用Ria Service的使用,必须要为Poco指定一个Key(这是一个BUG?),否则,我们会得到这样的一个错误:

而如果我们在使用别的应用,我指的是仅仅使用EF,则不会有这样的编译期错误出现。

所以,这是一个小小的瑕疵,请为POCO使用KEY特性。当然,别的映射关系我们可以在Map类中处理。

最后的运行效果为:

image

三:使用Entity Framework Power Tools CTP1自动生成POCO和映射

也许是考虑到手动生成POCO和映射太繁琐了,现在微软为我们提供了这样一个工具为我们自动生成POCO和映射。你需要到这里去下载它:http://visualstudiogallery.msdn.microsoft.com/72a60b14-1581-4b9b-89f2-846072eff19d

安装完毕后,请首先生成一个C#类库项目,然后在这个类库项目上点右键,我们会发现多了一个菜单项:

image

然后,在下一界面,输入相应参数:

image

注意:一定要注册图中的红框部分。请选择第一项。如果我们使用sql server身份认证,则极有可能出现如下错误:

有博友曾经对此问题进行过讨论,但是仍旧无解,具体请见博文及文后回复《Entity Framework Code First使用者的福音 --- EF Power Tool使用记之二(问题探究)

最后,该工具为我们生成的代码大致如下:

image


本文转自最课程陆敏技博客园博客,原文链接:http://www.cnblogs.com/luminji/archive/2011/06/17/2083973.html,如需转载请自行联系原作者

相关文章
|
存储 JavaScript 索引
js开发:请解释什么是ES6的Map和Set,以及它们与普通对象和数组的区别。
ES6引入了Map和Set数据结构。Map的键可以是任意类型且有序,与对象的字符串或符号键不同;Set存储唯一值,无重复。两者皆可迭代,支持for...of循环。Map有get、set、has、delete等方法,Set有add、delete、has方法。示例展示了Map和Set的基本操作。
323 3
|
定位技术
百度地图开发:map.setViewport让标注显示在最佳视野内
百度地图开发:map.setViewport让标注显示在最佳视野内
862 0
|
机器学习/深度学习 定位技术 容器
百度地图高级开发:map.getDistance计算多点之间的距离并输入矩阵
百度地图高级开发:map.getDistance计算多点之间的距离并输入矩阵
658 0
|
JavaScript 数据可视化 前端开发
漏刻有时数据可视化Echarts组件开发(21):基于echarts开发的自动旋转map3D下钻和柱图地图
漏刻有时数据可视化Echarts组件开发(21):基于echarts开发的自动旋转map3D下钻和柱图地图
715 1
|
JavaScript 定位技术
vue-baidu-map 绘制行政区划的轮廓,添加行政区划名称(含给覆盖物添加点击事件)——vue 百度地图开发
vue-baidu-map 绘制行政区划的轮廓,添加行政区划名称(含给覆盖物添加点击事件)——vue 百度地图开发
850 1
|
Java Serverless Go
Golang 开发函数计算问题之在 Golang 中避免 "concurrent map writes" 异常如何解决
Golang 开发函数计算问题之在 Golang 中避免 "concurrent map writes" 异常如何解决
358 0
|
存储 JavaScript 索引
js开发:请解释什么是ES6的Map和Set,以及它们与普通对象和数组的区别。
ES6引入了Map和Set数据结构。Map的键可为任意类型,有序且支持get、set、has、delete操作;Set存储唯一值,提供add、delete、has方法。两者皆可迭代。示例展示了Map和Set的基本用法,如添加、查询、删除元素。
321 2
|
JavaScript 定位技术
vue 百度地图开发【教程】1. 绘制百度地图(不使用 vue-baidu-map,解决 BMap is undefined)
vue 百度地图开发【教程】1. 绘制百度地图(不使用 vue-baidu-map,解决 BMap is undefined)
782 0
|
JavaScript
webpack-devtool选项 --生成source-map便于开发调试(二)
webpack-devtool选项 --生成source-map便于开发调试(二)
|
存储 算法 Java
盘点Java集合(容器)概览,Collection和Map在开发中谁用的最多?
盘点Java集合(容器)概览,Collection和Map在开发中谁用的最多?
326 0

热门文章

最新文章