博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Code First 数据库的表中属性的配置
阅读量:6860 次
发布时间:2019-06-26

本文共 1325 字,大约阅读时间需要 4 分钟。

 

 

数据类型的约定配置

默认规则

列的数据类型是由数据库决定的,SqlServer的默认规则如下

String: nvarchar(MAX)

Int:int

Bool:bit

Decimal:decimal(18,2)

Byte[]:varbinary(MAX)

DataAnnotation

[Column(TypeName=”varchar”)]

Fluent

modelBuilder.Entity<Category>().Property(c=>c.Name).HasColumnType(“varchar”)

 

数据类型的长度约定配置

默认规则

max

DataAnnotation

[MaxLength(100)]

[MinLength(10)]

[StringLength(50)]

Fluent

modelBuilder.Entity<Category>().Property(c=>c.Name).HasMaxLength(50)

 

列是否可空的约定配置

默认规则

主键非空

外键可以为空

Int,bit,decimal,dateTime非空

Varchar,varbiary 可以为空

DataAnnotation

[Required]

Fluent

modelBuilder.Entity<Category>().Property(t=>t.Name).IsRequired()

 

主键约定配置

默认规则

属性名称是Id,或者是类名称+Id作为主键

DataAnnotation

[Key]

Fluent

modelBuilder.Entity<Category>().HasKey(c=>c.Id)

EF框架要求每个实体都要有主键,没有主键会抛出异常,当你的主键是GUID时,需要特别处理,DataAnnotation :[Key,DatabaseGenerated(DatabaseGeneratedOption.Identity)]

Fluent:modelBuilder.Entity<Category>().Porperty(c=>c.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity)

 

时间戳

只有byte[]类型的属性可以映射TimeStamp

DataAnnotation:[Timespamp]

Fluent:modelBuilder.Entity<Category>().Property(c=>c.RowVersion).IsRowVersion()

 

Unicode数据类型

默认规则

默认为Unicode数据

DataAnnotation

不能配置

Fluent

IsUnicode()

 

Decimal设置

默认规则

(8,2)

DataAnnotation

不可以设置

Fluent

HasPrecision(10,2)

 

复杂的数据类型

默认规则

复杂类型没有Key属性,用做其他类属性时,不能用做集合属性

 

DataAnnotation

[Complex]

Fluent

modelBuilder.Complex<Address>()

转载地址:http://idxyl.baihongyu.com/

你可能感兴趣的文章
常用排序算法
查看>>
程序员保持快乐活跃的6个好习惯(转)
查看>>
找工作的一些感悟——前端小菜的成长
查看>>
jSON Call can throw but it is not marked with try
查看>>
基于bootstrap的jQuery多级列表树插件 treeview
查看>>
node06
查看>>
笔试题[转]
查看>>
图片轮换
查看>>
PHP数据结构练习笔记--栈
查看>>
JSON对象配合jquery.tmpl.min.js插件,手动攒出一个table
查看>>
编译安装QEMU 及卸载
查看>>
关于php-fpm与nginx进程重载的坑
查看>>
P2S、P2P、P2SP之对比
查看>>
笔记01 登录、常用配置参数、Action访问Servlet API 和设置Action中对象的值、命名空间和乱码处理、Action中包含多个方法如何调用...
查看>>
替代变量
查看>>
73. Spring Boot注解(annotation)列表【从零开始学Spring Boot】
查看>>
UNIX环境高级编程——pthread_create的问题
查看>>
接口继承中一个常见问题的思考
查看>>
C#获取软件图标
查看>>
提高代码质量的三要素
查看>>