返回首页
当前位置: 主页 > 编程语言 > C#教程 >

EF Code First开-属性配置

时间:2016-10-26 21:55来源:电脑教程学习网 www.etwiki.cn 编辑:admin

一、什么是DataAnnotation和Fluent API

1、DataAnnotation
 

EF Code First提供了一系列DataAnnotation特性,应用在类和属性的上,这些特性将重写默认的Convertions(约定),比如可以配置主键、长度、类型等;

2、Fluent API
 
Fluent API是另一种配置类和属性的方法,并且提供了比DataAnnotation更多的配置功能。

二、配置属性的长度

默认的约束不会设置属性长度,将统一设置为max,如nvarchar(max)等,我们可以使用以下方法对属性长度进行设置:

1、使用DataAnnotation对属性长度进行约束:
l  MaxLength(nn):可以应用于string或者Byte数组类型的属性。配置后,对应数据库字段长度将与之保持一致。
l  MinLength(nn):这只是一个验证特性,若属性值长度大于此设置值,EF会抛出错误,它不会对数据库字段的长度造成影响;
l  StringLength(nn):只能应用于string类型属性。配置后,对应数据库字段长度将与之保持一致。
示例:
  1. 使用Fluent API对属性长度进行约束:
Fluent API提供了HasMaxLength方法对属性长度进行配置,示例如下:
modelBuilder.Entity<Address>().Property(p => p.City).HasMaxLength(50);

三、配置属性数据库类型
 
在默认约束下,EF将自动根据属性类型设置对应的字段类型,对应关系如下:
l  String ßà nvarchar(max)
l  Integer ßà int
l  Byte Array ßà varbiary(max)
l  Boolean ßà bit

1、使用DataAnnotation对属性数据库类型进行约束:
使用Column特性进行约束,例如:


2、使用Fluent API对属性数据库类型进行约束:
在Fluent API中使用HasColumnType方法进行约束,例如:

需要注意的是,属性类型与选择的数据库类型之间必须能自动转化,否则将报错。例如:将类型为string的属性的数据库类型设置int,EF将会提示错误。

四、配置是否为NULL
 
在默认约束下,EF会自动设置数据库字段的是否可为NULL,规则如下:
l  主键列数据库中自动设置为不可为NULL;
l  引用类型(如string)自动设置为可为NULL;
l  值类型(如datetime类型、所有的数值类型、bool等)自动设置为不可为NULL;
l  Nullable<T>值类型自动设置为可为NULL;
若要改变默认规则,则可以采用以下方式进行:

1、使用DataAnnotation设置对应数据库字段是否可为NULL:
采用Required特性进行设置,示例如下:


2、使用Fluent API设置对应数据库字段是否可为NULL:
采用IsRequired方法进行设置,示例如下:


五、配置主键
 
默认约束规则可以设置主键,但是要遵循满足以下任一规则:
l  属性名称是Id;
l  属性名称是类的名称+Id;
若不符合以上规则,EF可能会因为不能设置主键而报错,我们可以使用以下方式设置主键:

1、使用DataAnnotation设置主键:
在属性上应用Key特性,以标识其为主键,示例如下:


2、使用Fluent API设置主键:
使用HasKey方法进行主键设置,示例如下:

【结束语】
         本文主要介绍了使用DataAnnotation和Fluent API对属性进行数据库字段长度、类型、是否可为NULL、以及主键等进行重写设置,满足更多业务逻辑。在实际项目中,最好使用DataAnnotation或Fluent API进行显示设置,一方面可以对领域类与数据库之间映射进行精确描述,另一方面也提高了程序代码的可读性。
顶一下
(0)
0%
踩一下
(0)
0%
标签(Tag):c#
------分隔线----------------------------
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
验证码:点击我更换图片
推荐内容