在Entity“.NET研究” Framework 4中映射现有实体类(POCO)

  Entity Framework的全称是ADO.NET Entity Framework,是微软开发的基于ADO.NET的ORM(Object/Relational Mapping)框架。

  Entity Framework的主要特点:

  1. 支持多种数据库(Microsoft SQL Server, Oracle, and DB2);

  2. 强劲的映射引擎,能很好地支持存储过程;

  3. 提供Visual Studio集成工具,进行可视化操作;

  4. 能够与ASP.NET, WPF, WCF, WCF Data Services进行很好的集成。

  更多简介,请看:ADO.NET Entity Framework At-a-Glance

  在博客园新版短消息功能开发中,我们准备用Entity Framework 4,我们首先面临这样的问题:

  实体类与数据库都已经存在,而且实体类的类名与数据库中的表名,类的属性与表中对应的字段名称不同。也就是说我们不能使用通常的方法在VS2010中通过ADO.NET Entity Data Model(.edmx文件)生成实体类与ObjectContext。

  注:这个实体类有个称呼叫POCO(Plain Old CLR Objects)。

  我们解决方法是:在.edmx文件中手动配置映射关系。

  下面是操作步骤:

  1. 使用ADO.NET Entity Data Model,在VS2010创建一个.edmx文件,如下图:

  2. 根据Entity Data Model Wizard进行操作,在选择数据库表的窗口中,注意在M上海闵行企业网站设计与制作odel Namespace输入框中输入现有实体类的命名空间,如下图:

上海徐汇企业网站设计与制作>  3. 点击Finish,生成相应的EntityType,如下图:

  这里的EntityType是根据数据库中的表结构生成的,与实际的实体类是不一样的,表名与类名不一样,表的很多字段与类的属性不一样。

  下面我们配置映射的关键地方:

  4. 点击.edmx窗口点击空白处,在属性窗口中将Code Generation Strategy的属性设置为None(见下图),也就是不让VS2010自动生成实体类和对应的ObjectContext。

  5. 继续在.edmx窗口,选择实体类,点击右键选择Show in Model Browser,见下图:

  6. 进入Model Browser窗口,见下图:

  上图中,上面是实体类(这里是VS2010自动生成的,与数据库表是一一对应的),下面是表结构。

  修改映射就是在这里:在Entity Types中将类名改为实际的实体类名,将属性改为实际的属性,如下图:

  修改之后,映射就配置好了,.edmx文件中实体类图中也随之自动更改,见下图:

  7. .edmx文件实际就是一个xml文件,映射信息就存放在其中。在VS2010解决方案管理器中选择这个文件,右键Open With,选择用XML Editor打开,就可以看到.edmx文件的内容,如下图:

  8. 再写个继承自ObjectContext的类(见下图),工作就完成了。

时间: 2024-10-07 11:56:50

在Entity“.NET研究” Framework 4中映射现有实体类(POCO)的相关文章

在Entity Framework 4中映射现有实体类(POCO)

Entity Framework的全称是ADO.NET Entity Framework,是微软开发的基于ADO.NET的ORM(Object/Relational Mapping)框架. Entity Framework的主要特点: 1. 支持多种数据库(Microsoft SQL Server, Oracle, and DB2): 2. 强劲的映射引擎,能很好地支持存储过程: 3. 提供Visual Studio集成工具,进行可视化操作: 4. 能够与ASP.NET, WPF, WCF, W

一起谈.NET技术,在Entity Framework 4中映射现有实体类(POCO)

Entity Framework的全称是ADO.NET Entity Framework,是微软开发的基于ADO.NET的ORM(Object/Relational Mapping)框架. Entity Framework的主要特点: 1. 支持多种数据库(Microsoft SQL Server, Oracle, and DB2): 2. 强劲的映射引擎,能很好地支持存储过程: 3. 提供Visual Studio集成工具,进行可视化操作: 4. 能够与ASP.NET, WPF, WCF, W

java中什么是实体类,为什么实体类的变量都用private修饰?

问题描述 java中什么是实体类,为什么实体类的变量都用private修饰? java中什么是实体类,为什么实体类的变量都用private修饰?能否举个实体类的简单例子,谢谢 解决方案 关于什么是实体类,可以看这里:Java什么是实体类实体类有什么用? 例如一个订单实体类Order.java,里边:id(主键).orderNo(订单号).userId(订单所属用户ID).status(支付状态).createTime(创建时间)等属性. 因为这些属性,基本都是供订单类自己使用的,所以一般都将它们

c#-编写一个方法(完成值修改),传递参数中是传递实体类好还是类的成员好

问题描述 编写一个方法(完成值修改),传递参数中是传递实体类好还是类的成员好 如题,假如有个类Letter{int a,int b,int c....int z}(假设有26个成员吧),我如果想写一个方法来改变某几个成员的值的时候,方法的参数是定义fun(Letter letter)好,还是定义fun(int a,int b,int c,...)几个我需要修改的成员好,方法体的功能是改变原有的值. 解决方案 各有各的好处,参数多,传实体类方便,参数少,传参方便. 解决方案二: 传实体类,或者传成

对于一个项目中的部分实体类不使用spring作为管理容器,也不使用注入方式来调用接口的话,如何手动处理实体类和调用接口?

问题描述 本人初学spring,对spring不甚了解.看到其他人做的web项目设计,说对action实体类不使用spring管理容器,也不使用注入方式来调用接口,手工处理.我想问大家的是,如果这样子的话,代码应该是怎样的方式?以下面这几个文件为例,使用spring管理实体类,并通过注入方式调用接口,现在是可以正常运行的,如果实现他说的这样,代码大致该如何修改呢?请大家详细指点,谢谢!!action类:packagecn.gth.test.view;importcn.gth.test.dao.I

【HIBERNATE框架开发之二】第一个HIBERNATE-ANNONATION项目(采用@ENTITY、@ID直接映射实体类)

本站文章均为 李华明Himi 原创,转载务必在明显处注明:  转载自[黑米GameDev街区] 原文链接: http://www.himigame.com/hibernate/789.html 紧接上一篇,这里Himi直接copy上一篇创建的HelloHibernate项目,然后改名为:HelloAnnonation,Ok:  OK,准备工作: 首先第一步,继续再我们自定义的user libraries 中添加Annotation所需的包,如下3个jar包(共11个包):            

在ADO.NET Entity Framework 4中使用枚举

枚举(Enum)是一种常用的类型,如用于表示状态.类型等参数.但目前它不 会被官方地在ADO.NET Entity Framework中进行支持.本文介绍的是通过复杂类 型(Complex Types)在ADO.NET Entity Framework 4中使用枚举. 这种方法需要使用POCO类,而不能使用Visual Studio自动生成的类.因为我 们需要手动为复杂类型编写代码. 数据库脚本: 1 if exists (select 1 2 from sysobjects 3 where i

ADO.NET Entity Framework 4中枚举的使用

  本文将通过ADO.NET Entity Framework 4中枚举的使用介绍,带领大家走进ADO.NET的世界. 枚举(Enum)是一种常用的类型,如用于表示状态.类型等参数.但目前它不会被官方地在ADO.NET Entity Framework中进行支持.本文介绍的是通过复杂类型(Complex Types)在ADO.NET Entity Framework 4中使用枚举. 这种方法需要使用POCO类,而不能使用Visual Studio自动生成的类.因为我们需要手动为复杂类型编写代码.

深入浅出MyBatis中映射文件和实体类的关联性_java

mybatis的映射文件写法多种多样,不同的写法和用法,在实际开发过程中所消耗的开发时间.维护时间有很大差别,今天我就把我认为比较简单的一种映射文件写法记录下来,供大家修改建议,争取找到一个最优写法~~: 以User对象和UserMap.xml为例讲解,代码如下: User为用户实体类(仅作为讲解,可以只关注引用类型变量,get/set方法省略): import com.google.common.collect.Lists; import com.gukeer.common.persisten