数据表&实体

创建数据表

请根据业务需求创建对应的数据表,这里不举例,只说几点要求:

  • 【强制】字段名只允许 英文字母数字和下划线,不允许用界定符包含特殊符号
  • 【必须】为每个数据表创建 主键(聚集索引)
  • 【必须】主键必须是 单个字段,禁止使用复合主键,建议采用自增 int/long 列
  • 【必须】如果需要保证数据行不重复,需要创建一个GUID的 唯一索引
  • 【禁止】定义无【无符号】数字类型的 字段 (MySQL)
  • 【建议】增加必要的 冗余字段 降低查询的复杂度
  • 【建议】所有字段建议 NOT NULL
  • 【建议】字段名和表名避开数据库的关键字,例如:server, database
  • 【建议】根据业务需求识别经常要查询的字段,创建必要的普通索引



其它要求及建议可参考:数据库设计规范



生成实体类型

数据表对应的实体类型请用工具来生成,不要手写代码!

xx

然后将实体代码复制到Data项目即可。
注意:请根据具体的项目及目录,保留命名空间




Data项目说明

  • 它是一个类库项目,
  • 必须按下面方式 添加一个AssemblyInfo.cs
// ###################################
// EntityAssembly 标记这个程序集包含数据实体的定义
// ###################################

// 这个标记将告诉Nebula启动时搜索程序集中定义的实体类型,
// 并为它们生成代理类型。

// 如果实体没有代理类型,将不能使用Nebula中一些高级的数据访问功能。




// 再说一遍:包含实体的程序集一定要加这个标记!
[assembly: ClownFish.Data.EntityAssembly]



Entity & DTO

一些原则和技巧:

  • Entity(数据实体)类型与一个数据表对应
  • 无法与数据表匹配的数据结构请使用 DTO
  • [DbColumn]既可用于 Entity,也可用于 DTO
  • 数据库字段名和 .NET类型的属性名称不一样,可用 [DbColumn(Alias = "xxx")] 来设置映射别名
  • 数据库字段名和.NET类型的属性名映射时,不区分大小写