实体类

自己来控制EntityFramework4.1 Code-First,逐步消除EF之怪异现象

泪湿孤枕 提交于 2020-03-02 10:35:03
最近的项目开始使用EF4.1,拜读各路大侠文章数遍,满以为可以轻车熟路,却屡遭悲惨啊,怪异现象接连... 1, 虽然使用Code-First模式,就是因为它代码整洁清爽条理,但还是习惯先建立数据表,再POCO... 结果发现Entity实体类与数据表的映射是EF自己独特智能操控的,比如实体类名为Product,它会智能映射成Products的表,加了个"s",然而,Category的实体类却映射成了Categories, 它居然能识别单词的复数写法,很神奇,难道它内置词典?要不然它该映射成Categorys才合理嘛(虽然它不是个单词),你说EF神奇么,真神奇! 后来,同事给个方法,解决了这个神奇的功能,我要自控,有些关键地方不需要EF来控制我的想法,于是在分类名上面添加一个特性[Table("映射的表名")]即可。 [Table("Product")] public class Product { public int ID { get; set; } [Required] [Display(Name = "产品名")] public string Name { get; set; } public int CategoryID { get; set; } [Required] [Display(Name = "产品价格")] public Decimal? Price { get

手动配置Hibernate的方法

蓝咒 提交于 2020-03-02 08:03:39
前言:一直习惯用MyEclipse自动生成Hibernate,但是对手动配置一直不甚了解,都不好意思说自己是搞java的。所以赶紧复习了一下手动配置,并记录在此,以便常回来看看! 第一步:搭建环境 在 Hibernate主页 下载hibernate-distribution-3.3.2.GA-dist.zip(这个很难找,一定要耐心!),解压后把根目录的hibernate3.jar和required文件夹里的所有的包、数据库驱动JAR,复制到WEB-INFO的lib里。 然后在项目里build-path刚才复制过来的JAR。 第二步:构建映射 首先创建与数据库表字段对应的实体类(持久化类),必须实现java.io.Serializable接口 然后在所有实体类的同一个包下,创建映射文件,如下: Hibernate配置文件XXX.cfg.xml示例: <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <!-- Mapping file autogenerated by

5,ORM组件XCode(动手)

江枫思渺然 提交于 2020-03-02 05:01:10
本篇才真正是XCode教程第一篇。《速览》是为了以最简洁的语言最短小的篇幅去吸引开发者;《简介》则是对XCode组件和XCode开发模式的一个整体介绍,让开发者从宏观的角度去理解XCode;《共舞》把XCode提到了一个新的高度,让开发者感受到它的贵族血统! 先抛出三篇来吸引人,再出《动手》,其实就是吊人胃口。如果到这里你还没有想试一试XCode的念头冲动,好吧,我承认是我的失败,不过你可以欺骗我,可别欺骗你自己! XCode开发模式建议先有数据库再有实体模型 ,然后借助代码生成器生成实体代码;当然你要反过来先做实体模型也是可以的,XCode之下的实体,支持反向生成数据库结构。 下面以《速览》中的UserMember为例,建立数据表: 数据表名: 用户 (UserMember) 中文名 英文名 数据类型 大小 是否主键 是否唯一 是否必填 默认值 编号 ID Int32 10 是 是 是 账号 Account String 50 显示名 DisplayName String 50 数据库命名规范: ² 名称必须使用通俗易懂的英文单词全拼,常用的缩略词(如ID)除外 ² 使用驼峰命名规则,每个单词首字母大写,其它小写 ² 名称必须简洁明了,不要加多余的前缀(如表名前加tbl),字段名也不要加表名前缀 ² 不得使用SQL关键字或C#关键字作为表名或字段名 ²

充血模型的ORM能做什么?——ORM组件XCode(十八般武艺)

我的梦境 提交于 2020-03-01 21:18:02
ORM组件XCode(十八般武艺) 之前, XCode总是若隐若现,耐性好的同学想知道它还有啥特点,沉不住气的则认为不过是CURD耳! XCode开发模式是灵魂,XCode组件通过具体实现对其支持! XCode的特点如下: 0、 基本的CURD功能 实在想不出来不支持CURD的ORM算不算ORM;也实在想不出来仅有CURD的ORM算不算ORM。因而,这是0号功能! XCode的CURD通过反射实体类生成查询和操作SQL实现,数据库结构信息通过特性附在实体类上。之所以选择SQL而不是DbCommand,因为XCode的实体层和数据访问层是分开的,目前是为了实现一级缓存,将来会在这里实现分布式数据访问。 1、 完美支持ObjectDataSource XCode实现充血模型(胀血模型)的实体类,提供ObjectDataSource需要的所有方法和参数,特别支持分页和排序功能! 详见 《与ObjectDataSource共舞》 2、 全面分页支持 只有从小处开始培养分页的思想,任何查询都指定所需获取数据范围,才能保证系统数据变大时系统不会拓机。 XCode的分页以任意查询语句为基础,支持统计等非常复杂的查询分页。并且会根据当前数据库类型以及版本选择最佳分页方案。 详见 《撬动千万级数据》 3、 实体集合支持 实体集合EntityList继承自List,提供了实体的批量操作

3,ORM组件XCode(简介)

冷暖自知 提交于 2020-03-01 21:17:44
XCode是一个轻量级的ORM组件(对象与关系数据库映射),提供以面向对象的方式操作数据库的功能,能够解决90%以上的数据库操作场景。 做为X系列组件最重要的一员,XCode秉承了简单实用的特点,力求以最简单的做法,解决最普遍的问题。 XCode最大的“缺点”就是“不支持”多表查询! 为何不支持要加双引号?那是因为XCode实际上支持多表查询,只是用起来非常复杂,也不容易讲清楚,会严重影响基本功能的学习理解,所以逢人问到,我都回答不支持!至于缺点二字加双引号,是因为XCode有一整套替代方案,在绝大多数情况上,更优于多表查询。 说XCode,就不得不提开发模式。每一个ORM组件,都是在某一种开发模式下,才能表现得最出色,XCode也不例外,我们称之为XCode开发模式。当然,每个人有自己的想法,有自己的开发习惯,可以尝试根据自己的习惯去使用XCode,或者稍微修改自己的习惯,也许能有更精彩的用法。 XCode专注于对象与关系数据库映射,内部明显分为上下两层: 1,下层以DAL作为入口,IDatabase作为接口,各种数据库实现一个类,实现该接口以支持多数据库。 DAL的两大代表是Select(查询SQL,返回DataSet)和Execute(执行SQL,返回影响行数),并且以SQL为key,有一级缓存的支持。DAL还支持DbCommand的查询和操作,不过就不受一级缓存的支持了。

PowerDesigner概念数据模型

我怕爱的太早我们不能终老 提交于 2020-02-29 04:36:41
、概念数据模型概述 数据模型是现实世界中数据特征的抽象。数据模型应该满足三个方面的要求: 1)能够比较真实地模拟现实世界 2)容易为人所理解 3)便于计算机实现 概念数据模型也称信息模型,它以实体-联系(Entity-RelationShip,简称E-R)理论为基础,并对这一理论进行了扩充。它从用户的观点出发对信息进行建模,主要用于数据库的概念级设计。 通常人们先将现实世界抽象为概念世界,然后再将概念世界转为机器世界。换句话说,就是先将现实世界中的客观对象抽象为实体(Entity)和联系(Relationship),它并不依赖于具体的计算机系统或某个DBMS系统,这种模型就是我们所说的CDM;然后再将CDM转换为计算机上某个DBMS所支持的数据模型,这样的模型就是物理数据模型,即PDM。 CDM是一组严格定义的模型元素的集合,这些模型元素精确地描述了系统的 静态特性、动态特性以及完整性约束条件 等,其中包括了 数据结构、数据操作和完整性约束 三部分。 1)数据结构表达为实体和属性; 2)数据操作表达为实体中的记录的插入、删除、修改、查询等操作; 3)完整性约束表达为数据的自身完整性约束(如数据类型、检查、规则等)和数据间的参照完整性约束(如联系、继承联系等); 二、实体、属性及标识符的定义 实体(Entity),也称为实例,对应现实世界中可区别于其他对象的“事件”或“事物”。例如

包的分层

你说的曾经没有我的故事 提交于 2020-02-28 07:26:38
com.xx.entity 放实体类的 数据的模板、标准(数据库拿出来之后,可以直接放入 ,其他层可以直接使用这个实体类) com.xx.view 界面的事情 打印菜单、页面上的输入验证 显示数据 获取用户的输入的数据 关系: view 想 service层 提要求,传入用户输入的数据,返回要显示的结果数据 com.xx.service 业务逻辑、数据处理 和业务相关的,会给view层返回想要的业务数据 向dao层获取业务数据,并做业务处理 不关心这个数据源是什么 关系:从页面接收用户输入的数据,处理,向dao层传入参数,获取数据源中的数据 接口:方法名、返回值类型、形参 实现类: com.xx.service.impl com.xx.dao 从数据源获取数据 数据源:数据库、大数据、网络、文件、 Java的list 关系:从 service 层获取参数,通过不同的数据源环境,去获取数据源中的真实数据 ===》包装为 entity 实体类对象 接口:方法名、返回值类型、形参 实现类: com.xx.dao.impl 来源: CSDN 作者: 杨怡宝 链接: https://blog.csdn.net/weixin_44950382/article/details/104544010

Farseer.net轻量级ORM开源框架 V1.x 入门篇:数据库上下文

流过昼夜 提交于 2020-02-28 04:56:36
导航 目 录: Farseer.net轻量级ORM开源框架 目录 上一篇: Farseer.net轻量级ORM开源框架 V1.x 入门篇:数据库配置文件 下一篇: Farseer.net轻量级ORM开源框架 V1.x 入门篇:表实体类映射 前言   上文讲述了数据库配置使用,搭建好数据库的链接方式了我们知道怎么做了。   事实上,至今我们仍然还没有讲到代码方面,花了前面这么多篇幅讲解,主要是想由浅入深,不然一上来给大家讲解这讲解那的,听的也一头雾水,反而得不到效果。   这篇比较重要,因为它是我们在使用Farseer.Net时最基础的类: DbContext (与EntityFramework的DbContext一个概念) 数据库上下文   从字面上,我们就知道:它是我们程序(业务)与数据库之间的沟通桥梁,在对表(实体类)进行CURD时,需要让实体类知道,我需要访问哪种数据库。   而数据库上下文,就是告诉我们的实体类,应该对哪个数据库类型进行连接访问。   在Farsser.Net里,数据库上下文对应的类便是: DbContext , 这便是需要我们继承它,然后在这个类里面,封装我们需要的实体类的属性。 构造函数 /// <summary> /// 通过数据库配置,连接数据库 /// </summary> /// <param name="dbIndex">数据库选项<

spring data jpa 查询部分字段

冷暖自知 提交于 2020-02-27 23:55:10
spring data jpa原生sql查询,拿实体类对象接会报错。 所以用Map接就行了。 @Query(value = "SELECT id,title,tag,createtime,updatetime,abs,spec FROM article", countQuery = "SELECT count(*) FROM article", nativeQuery = true) Page<Map> findAllArticle(PageRequest pageRequest); 来源: CSDN 作者: SomeOtherTime 链接: https://blog.csdn.net/yaoct/article/details/104537899

Mybaits的ORM思想

那年仲夏 提交于 2020-02-27 15:54:41
Object Relational Mappging:对象关系映射 就是把数据库和实体类对象及属性一一对应起来,达到操作实体类就相当于操作数据库。 user表 一一对应 实体类User id <----> id username <----> userName password <----> userPassword 来源: CSDN 作者: 一个不可泄露的身份 链接: https://blog.csdn.net/CaiBirdHitGuai/article/details/104532964