自动生成三层结构代码(2)--生成实体类
版权所有:基础软件。作者邮箱:sun.j.l.studio@gmail.com。本文首发于 http://www.cnblogs.com/FoundationSoft。文章转载请保持此版权信息并注明出处。
前一篇写了自动生成三层结构代码之概述和准备工作。这篇介绍自动生成实体类的部分。
最基本的实体类就是包含了一些个属性,这些属性与数据库的表一一对应。自动生成实体类的时候,就是根据表中各个字段及其类型,生成相应类型的类中的属性。其中稍微一点难点是如何取得数据库表中类型,以及如何转换成对应的C#类型。另外一个需要考虑的因素是要考虑数据库中有些字段是可以为空的,而当这个列类型是值类型(如int)时,则在C#中它总是有一个值,0或-1或者其他。这个时候需要将这种属性定义成为可空类型(如int?)。
代码很简单,如下。
2 //生成实体类代码
3 public string generateEntityClass()
4 {
5 StringBuilder sb = new StringBuilder();
6 //定义类开始
7 sb.Append("public class " + table);
8 sb.Append(Environment.NewLine);
9 sb.Append("{");
10 //针对数据表中每一列生成一个类中的属性
11 foreach (DataColumn c in allColumns)
12 {
13 string type = c.DataType.Name;
14 sb.Append("public " + type );
15 //如果属性是值类型,而且数据库中允许为空,则将属性定义成可空类型
16 if (c.DataType.IsValueType)
17 if (c.AllowDBNull)
18 sb.Append("?");
19 sb.Append(" "+c.ColumnName + " { get; set; }");
20 sb.Append(Environment.NewLine);
21 }
22 sb.Append("}"+Environment.NewLine); //类结束
23 return sb.ToString();
24 }
25 #endregion
来测试一下这个方法,我用的表是Northwind中的Orders表,随便找的。
public class AutoDatabaseTest
{
const string tableName = "Orders";
AutoDatabase target = new AutoDatabase(tableName);
[TestMethod]
public void generateEntityClassTest()
{
string s = target.generateEntityClass();
Console.WriteLine(s);
}
}
public class AutoDatabaseTest
{
const string tableName = "Orders";
AutoDatabase target = new AutoDatabase(tableName);
[TestMethod]
public void generateEntityClassTest()
{
string s = target.generateEntityClass();
Console.WriteLine(s);
}
}
代码生成的结果如下。
{
public Int32 OrderID { get; set; }
public String CustomerID { get; set; }
public Int32 EmployeeID { get; set; }
public DateTime OrderDate { get; set; }
public DateTime RequiredDate { get; set; }
public DateTime ShippedDate { get; set; }
public Int32 ShipVia { get; set; }
public Decimal Freight { get; set; }
public String ShipName { get; set; }
public String ShipAddress { get; set; }
public String ShipCity { get; set; }
public String ShipRegion { get; set; }
public String ShipPostalCode { get; set; }
public String ShipCountry { get; set; }
}
转载于:https://www.cnblogs.com/FoundationSoft/archive/2010/08/11/1797128.html
自动生成三层结构代码(2)--生成实体类相关推荐
- 自动生成三层结构代码(3)--生成数据访问层Insert方法
版权所有:基础软件.作者邮箱:sun.j.l.studio@gmail.com.本文首发于 http://www.cnblogs.com/FoundationSoft.文章转载请保持此版权信息并注明出 ...
- 全能代码生成器,自动生成前后端代码、生成项目框架、生成JavaBean、生成数据库文档、自动化部署项目(TableGo v8.0.0)
TableGo_20220801 v8.0.0 正式版发布,此次版本累计更新如下: 1.生成项目功能新增支持若依框架,可同时生成若依框架代码和所有业务表的前后端基础CRUD代码,一键搞定所有 2. ...
- 基于Matlab Simulink开发的嵌入式模型,模型可自动生成ccs工程代码,生成的代码可直接运行在主控芯片中
主控芯片dsp tms320f28335,基于Matlab Simulink开发的嵌入式模型,模型可自动生成ccs工程代码,生成的代码可直接运行在主控芯片中. 该模型利用id=0的矢量控制,实现了永磁 ...
- java实体类生成mysql表_springboot+mybatis通过实体类自动生成数据库表的方法
前言 本章介绍使用mybatis结合mysql数据库自动根据实体类生成相关的数据库表. 首先引入相关的pom包我这里使用的是springboot2.1.8.RELEASE的版本 org.mybatis ...
- mye连接mysql_利用MyEclipse连接数据库并自动生成基于注解或者XML的实体类
一.利用MyEclipse连接数据库 1. 打开MyEclipse的数据库连接视图 然后在Other中找到"MyEclipse Database"中的DB Browser 2. 在 ...
- hibernate mysql 自动建表_配置hibernate根据实体类自动建表功能
Hibernate支持自动建表,在开发阶段很方便,可以保证hbm与数据库表结构的自动同步. 如何使用呢?很简单,只要在hibernate.cfg.xml里加上如下代码 Xml代码update upda ...
- eladmin代码自动生成_高效代码自动化生成
最效率的代码自动化 前言 今天我们来看一下springboot中使用mybatis来自动生成代码,以前做ssh框架的时候实体和映射经常自己新建,浪费大量的时间,不过hibernate,到现在还是那么的 ...
- php动态生成页面结构,PHP 动态生成静态HTML页面示例代码
temp.html {penglig_site_title} test.php header('content-type:text/html; charset=utf-8');//防止生成的页面乱码 ...
- C#之三十七 实体类
视频课: C#程序设计与宿舍管理系统实战 3.1 使用实体类构建三层结构概述 在上一章中的三层架构中,我们使用DataSet来进行数据的传递,但在OOP的开发中,有很大的局限性: 1. ...
最新文章
- 如何在ppt下面加入讲解内容_学术展示系列:学术PPT教程(下)内容 讲解
- dlib 68个关键点 人脸姿态
- 能够抑制网络风暴的是?
- Linux基础-目录与路径
- 学生管理系统分层开发
- Linux下硬盘性能测试
- 【操作系统/OS笔记06】虚拟内存、覆盖、交换
- CCF NOI1115 找数
- [译]C语言实现一个简易的Hash table(5)
- STC学习:振动声光报警器
- 宏基ec471g黑苹果_【图片】简单安装黑苹果,老爷车宏基E1-471G完整度90%,显卡声卡成功驱动【2_黑苹果吧】_百度贴吧...
- python转bat_bat 转换为python
- unity源码怎么变成游戏_传奇是怎么从最不“烧钱”的游戏变成最“烧钱”的游戏的...
- break 通过自定义标签跳到指定位置
- 已删除的好友微信号怎么找回来
- IPQ8072A 如何通过AT指令跟SDX55交互
- 纯电动汽车整车控制器测试系统ETest综述
- 串口通信协议--UART、RS-232、RS-485、RS-422
- 计算机配置中什么表示硬盘,电脑硬盘的分类介绍 硬盘中的Master和Slave代表什么意思...
- 第九届全球云计算大会·中国站圆满落幕甬城,赋能双循环“新”发展!
热门文章
- 鱼眼图像畸变校正--透视变换
- JQuery AJAX基本使用
- 软件工程 - 版本管理 - git 的基本实用方法 - 添加一个完整的项目目录的命令的细微差别
- [ARM] [linux master] 调试技术002 在linux下面使用mtrace来检查一般程序的内存溢出
- [Editor][003][Emacs] 从零到高级的进阶 - 实践开发 - emacs tutorial的使用和基本导航键
- python 石头剪刀布,Python石头剪刀布完整代码
- java并发编程入门_探讨一下!Java并发编程基础篇一
- vba 根据分辨率 调整窗口显示比例_2020 如何选择适合自己的显示器?小白选购电脑显示器必看,附各类型显示器高性价比选购指南分析...
- python opencv把32位的灰度图变成8位的灰度图_python简单换脸程序
- form必填默认校验_Salesforce LWC学习(十六) Validity 在form中的使用浅谈