版权所有:基础软件。作者邮箱:sun.j.l.studio@gmail.com。本文首发于 http://www.cnblogs.com/FoundationSoft。文章转载请保持此版权信息并注明出处。

前一篇写了自动生成三层结构代码之概述和准备工作。这篇介绍自动生成实体类的部分。

最基本的实体类就是包含了一些个属性,这些属性与数据库的表一一对应。自动生成实体类的时候,就是根据表中各个字段及其类型,生成相应类型的类中的属性。其中稍微一点难点是如何取得数据库表中类型,以及如何转换成对应的C#类型。另外一个需要考虑的因素是要考虑数据库中有些字段是可以为空的,而当这个列类型是值类型(如int)时,则在C#中它总是有一个值,0或-1或者其他。这个时候需要将这种属性定义成为可空类型(如int?)。

代码很简单,如下。

1 #region 生成实体类代码
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表,随便找的。

测试代码

[TestClass()]
public class AutoDatabaseTest
{

const string tableName = "Orders";
AutoDatabase target = new AutoDatabase(tableName);
[TestMethod]
public void generateEntityClassTest()
{
string s = target.generateEntityClass();
Console.WriteLine(s);
}
}

[TestClass()]
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 Orders
{
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)--生成实体类相关推荐

  1. 自动生成三层结构代码(3)--生成数据访问层Insert方法

    版权所有:基础软件.作者邮箱:sun.j.l.studio@gmail.com.本文首发于 http://www.cnblogs.com/FoundationSoft.文章转载请保持此版权信息并注明出 ...

  2. 全能代码生成器,自动生成前后端代码、生成项目框架、生成JavaBean、生成数据库文档、自动化部署项目(TableGo v8.0.0)

    TableGo_20220801 v8.0.0 正式版发布,此次版本累计更新如下:  1.生成项目功能新增支持若依框架,可同时生成若依框架代码和所有业务表的前后端基础CRUD代码,一键搞定所有  2. ...

  3. 基于Matlab Simulink开发的嵌入式模型,模型可自动生成ccs工程代码,生成的代码可直接运行在主控芯片中

    主控芯片dsp tms320f28335,基于Matlab Simulink开发的嵌入式模型,模型可自动生成ccs工程代码,生成的代码可直接运行在主控芯片中. 该模型利用id=0的矢量控制,实现了永磁 ...

  4. java实体类生成mysql表_springboot+mybatis通过实体类自动生成数据库表的方法

    前言 本章介绍使用mybatis结合mysql数据库自动根据实体类生成相关的数据库表. 首先引入相关的pom包我这里使用的是springboot2.1.8.RELEASE的版本 org.mybatis ...

  5. mye连接mysql_利用MyEclipse连接数据库并自动生成基于注解或者XML的实体类

    一.利用MyEclipse连接数据库 1. 打开MyEclipse的数据库连接视图 然后在Other中找到"MyEclipse Database"中的DB Browser 2. 在 ...

  6. hibernate mysql 自动建表_配置hibernate根据实体类自动建表功能

    Hibernate支持自动建表,在开发阶段很方便,可以保证hbm与数据库表结构的自动同步. 如何使用呢?很简单,只要在hibernate.cfg.xml里加上如下代码 Xml代码update upda ...

  7. eladmin代码自动生成_高效代码自动化生成

    最效率的代码自动化 前言 今天我们来看一下springboot中使用mybatis来自动生成代码,以前做ssh框架的时候实体和映射经常自己新建,浪费大量的时间,不过hibernate,到现在还是那么的 ...

  8. php动态生成页面结构,PHP 动态生成静态HTML页面示例代码

    temp.html {penglig_site_title} test.php header('content-type:text/html; charset=utf-8');//防止生成的页面乱码 ...

  9. C#之三十七 实体类

    视频课:  C#程序设计与宿舍管理系统实战 3.1      使用实体类构建三层结构概述 在上一章中的三层架构中,我们使用DataSet来进行数据的传递,但在OOP的开发中,有很大的局限性: 1.   ...

最新文章

  1. 如何在ppt下面加入讲解内容_学术展示系列:学术PPT教程(下)内容 讲解
  2. dlib 68个关键点 人脸姿态
  3. 能够抑制网络风暴的是?
  4. Linux基础-目录与路径
  5. 学生管理系统分层开发
  6. Linux下硬盘性能测试
  7. 【操作系统/OS笔记06】虚拟内存、覆盖、交换
  8. CCF NOI1115 找数
  9. [译]C语言实现一个简易的Hash table(5)
  10. STC学习:振动声光报警器
  11. 宏基ec471g黑苹果_【图片】简单安装黑苹果,老爷车宏基E1-471G完整度90%,显卡声卡成功驱动【2_黑苹果吧】_百度贴吧...
  12. python转bat_bat 转换为python
  13. unity源码怎么变成游戏_传奇是怎么从最不“烧钱”的游戏变成最“烧钱”的游戏的...
  14. break 通过自定义标签跳到指定位置
  15. 已删除的好友微信号怎么找回来
  16. IPQ8072A 如何通过AT指令跟SDX55交互
  17. 纯电动汽车整车控制器测试系统ETest综述
  18. 串口通信协议--UART、RS-232、RS-485、RS-422
  19. 计算机配置中什么表示硬盘,电脑硬盘的分类介绍 硬盘中的Master和Slave代表什么意思...
  20. 第九届全球云计算大会·中国站圆满落幕甬城,赋能双循环“新”发展!

热门文章

  1. 鱼眼图像畸变校正--透视变换
  2. JQuery AJAX基本使用
  3. 软件工程 - 版本管理 - git 的基本实用方法 - 添加一个完整的项目目录的命令的细微差别
  4. [ARM] [linux master] 调试技术002 在linux下面使用mtrace来检查一般程序的内存溢出
  5. [Editor][003][Emacs] 从零到高级的进阶 - 实践开发 - emacs tutorial的使用和基本导航键
  6. python 石头剪刀布,Python石头剪刀布完整代码
  7. java并发编程入门_探讨一下!Java并发编程基础篇一
  8. vba 根据分辨率 调整窗口显示比例_2020 如何选择适合自己的显示器?小白选购电脑显示器必看,附各类型显示器高性价比选购指南分析...
  9. python opencv把32位的灰度图变成8位的灰度图_python简单换脸程序
  10. form必填默认校验_Salesforce LWC学习(十六) Validity 在form中的使用浅谈