一、通过Attribute配置约束

1、主键约束

通过KeyAttribute来配置主键约束,代码如下:

[Key]
public int PrimaryKey{ get; set; }

2、外键约束

通过ForeignKeyAttribute来配置外键约束,代码如下:

[Key]
public int PrimaryKey{ get; set; }
[ForeignKey("ForeignKey")]
public int PrimaryKey{ get; set; }

注意,指定列名存在(外键必须存在),如上面的ForeignKey,则类中必须存在名称为ForeignKey的属性。

3、长度约束

(1)、普通长度约束,通过StringLengthAttribute来配置普通长度约束,代码如下:

[StringLength()]
public string Name { get; set; }

(2)、最大长度约束,通过MaxLengthAttribute,代码如下:

[MaxLength()]
public string Name { get; set; }

(3)、最小长度约束,通过MinLengthAttribute,代码如下:

[MinLength()]
public string Name { get; set; }

4、非空约束

非空约束比较简单,通过RequiredAttribute,代码如下:

[Required]
public string Name{ get; set; }

5、数据类型约束

通过初始化ColumnAttribute类的TypeName属性来配置数据类型约束,代码如下:

[Column(TypeName="byte")]
public string Photo{get;set;}

6、字段名约束

通过初始化ColumnAttribute类的带string参数的构造函数设置,代码如下:

[Column("CTime")]
public DateTime CreateTime { get; set; }

7、表名约束

通过TableAttribute类的带string参数的构造函数设置,代码如下:

[Table("Class")]
public class ClassInfo
{}

8、列值GUID化

当主键值需要自GUID化,则需要在对主键字段设置主键约束的基础上追加DatabaseGenerated特性,代码如下:

[Key,DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public GUID Id{ get; set; }

如果没有设置列值GUID化,数据库中会以0来填充

第二行就会报错,因为设置了Id为主键

9、列值+DatabaseGeneratedOption.Computed

[Key,DatabaseGenerated(DatabaseGeneratedOption.Computed)]
public GUID Id{ get; set; }

如果将属性标识为Computed,EF会认为该列是通过其它列计算得出的,不会将其持久化到数据库中。

10、列值+DatabaseGeneratedOption.None

[Key,DatabaseGenerated(DatabaseGeneratedOption.None)]
public int Id{ get; set; }

这个就等同于Id主键自增效果

11、忽略列映射

当实体类中定义了某些字段,这些字段是通过一些计算或者合并得到的,我们并不需要将它同步到数据库中,就可以通过配置不让它生成到数据库中,EF中通过NotMappedAttribute特性来设置,代码如下:

[NotMapped]
public string NotNeeded { get; set; }

12、忽略表映射

忽略表映射和忽略列映射一样. 代码如下:

[NotMapped]
public class ClassInfo
{}

13、复杂类型约束

请参考

12、示例

    [Table("Class")]
public class ClassInfo
{
[Key,DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid Id { get; set; } [Required,StringLength()]
public string Name { get; set; } [Required,Column("CTime")]
public DateTime CreateTime { get; set; } [Column(TypeName = "ntext"), MaxLength(), MinLength()]
public string Remark { get; set; } [NotMapped]
public string NotNeed { get; set; }
}

以上是按照指定约束所生成的表

最新文章

  1. Blender 之修改器代码分析
  2. jdbcTemplate 泛型 查询
  3. Xamarin Android项目运行失败
  4. PowerShell管理Exchange
  5. Hibernate从入门到精通(五)一对一单向关联映射
  6. bootstap 滚动监听
  7. C获取本地时间的localtime函数
  8. [置顶] Hibernate运行机理
  9. 【翻译】MVC Music Store 教程-概述(二)
  10. Unable to open ...\tools\capture\allegro.cfg for reading
  11. ZOJ 1450 Minimal Circle 最小圆覆盖
  12. cocos2d-x 消类游戏,类似Diamond dash 设计
  13. MySQL(3)-索引
  14. maven中去掉单元测试的配置
  15. tfs2015 生成与发布 配置
  16. synchronized同一把锁锁不同代码
  17. jquery 手机获取验证码计时
  18. array_sum(),array_product()的使用
  19. 揭秘memset与sizeof的结合使用方法
  20. [UOJ266]Alice和Bob又在玩游戏

热门文章

  1. 山东省第七届ACM竞赛 J题 Execution of Paladin (题意啊)
  2. 20155212 2016-2017-2 《Java程序设计》第7周学习总结
  3. 14)settings.xml
  4. event对象的clientX,offsetX,screenX,pageX和offsetTop,offsetHeight等等
  5. MOD13A1: MODIS/Terra Vegetation Indices 16-Day L3 Global 500 m SIN Grid V006
  6. PGF基本图形对象
  7. Redis之序列化POJO
  8. EBS trace分析
  9. Python中通过open()操作文件时的文件中文名乱码问题
  10. ASP.NET中数据绑定表达式