参阅: https://msdn.microsoft.com/en-us/library/jj591583(v=vs.113).aspx

1. 主键

public class Test
{
//名称为 ID 的属性会自动映射为主键(自增长,唯一性,不为空)
public long ID { get; set; }
}
    public class Test
{
//Key 特性可将属性映射为主键(自增长,唯一性,不为空)
[Key]
public string Key { get; set; }
}
    public class Test
{
//Key 特性可将属性映射为主键
//使用 DatabaseGenerated 特性可取消主键自增长
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public long ID { get; set; }
}
    public class Test
{
// Guid 类型的主键默认没有自动生成,所以记得设置 DatabaseGenerated 特性
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid ID { get; set; }
}

2. 外键

    public class TestA
{
public long ID { get; set; }
public string Name { get; set; }
//导航属性, 子表集合
public virtual ObservableCollection<TestB> TestBs { get; set; }
} public class TestB
{
public long ID { get; set; }
//外键, 命名约定为: 主表类名+主表主键名
public long TestAID { get; set; }
//导航属性, 主表类对象(与主表的导航属性可二选一)
public virtual TestA TestA { get; set; }
public DateTime DateTime { get; set; }
}

3. 使用 [NotMapped] 特性可取消属性到数据库的映射,即在操作数据库时忽略此属性,创建数据库时也不会创建此字段

4. 唯一性,EntityFramework没有[Unique]特性,但6.1+版本可以使用[Index]特性实现唯一性(唯一性约束与唯一性索引基本相同,都可以实现字段的唯一性)

当[Index]特性的IsUnique=true时会有一个字符限制(好像是限制为900字节),所以要添加一个长度限制的特性

    public class User
{
public int ID { get; set; } [Index(IsUnique = true)]
[StringLength()]
public string UserName { get; set; } public string DisplayName { get; set; }
}

EntityFramework code first 一些常用的约束特性的更多相关文章

  1. Entityframework Code First 系列之数据注释

    上一篇<Entityframework Code First 系列之项目搭建>讲了搭建一个Code First的控制台项目.里面有一些内容并没有扩展出来讲,因为篇幅有限.这篇针对上面内容中 ...

  2. 最常用的ES6特性(转)

    最常用的ES6特性 let, const, class, extends, super, arrow functions, template string, destructuring, defaul ...

  3. 最常用的ES6特性

    遇到了要写出es6新特性的题目,所以查阅了资料来总结一下,点击查看原文. 进入正题,最常用的ES6特性有:let, const, class, extends, super, arrow functi ...

  4. C# EntityFramework Code First 迁移 降级 回退到空数据库

    C# EntityFramework  Code First 迁移 降级 回退到空数据库 1.包管理器控制台-迁移 在包管理器控制台中运行 Enable-Migrations Add-Migratio ...

  5. EntityFramework Code First便捷工具——数据迁移

    使用EntityFramework Code First开发,数据迁移是一个不得不提的技术. 在我们的开发过程中,难免需要对模型进行改进,模型改进后,会导致实体集与数据库不一致,当然我们可以通过删除数 ...

  6. Python3.x 常用的新特性

    Python3.x 常用的新特性 print() 是函数,不是一个语句 raw_input()输入函数,改为 input() Python 3 对文本和二进制数据做了更为清晰的区分. 文本由unico ...

  7. ES6系列之项目中常用的新特性

    ES6系列之项目中常用的新特性 ES6常用特性 平时项目开发中灵活运用ES6+语法可以让开发者减少很多开发时间,提高工作效率.ES6版本提供了很多新的特性,接下来我列举项目中常用的ES6+的特性: l ...

  8. EntityFramework Code First 构建外键关系,数据库不生成外键约束

    创建 ExtendedSqlGenerator类 public class ExtendedSqlGenerator : SqlServerMigrationSqlGenerator { #regio ...

  9. EntityFramework Code First 添加唯一键

    在EntityFramework 6.1后可以直接使用 [Index("TitleIndex", IsUnique = true)] public string Title { g ...

随机推荐

  1. 错误修改/etc/fstab,导致系统无法开机

    enter password or type control-D to continue 系统提示你输入root密码,而输入以后系统的所有文件是只读的,你无法修改 看下你的/etc/fstab这个目录 ...

  2. Python安装pandas

    http://blog.sina.com.cn/s/blog_a73687bc0101eenc.html 安装vcforpython: http://www.microsoft.com/en-us/d ...

  3. UVa 3487 & 蜜汁建图

    题意: 有两家公司都想向政府申请某些资源的使用权,并且他们都提供了一些申请列表,列表中含有申请费用和资源种类,同一家公司的申请列表之间不含有重复的资源.政府只可以完整地接受和拒绝谋一份申请列表,问政府 ...

  4. ACM D的小L

    D的小L 时间限制:4000 ms  |  内存限制:65535 KB 难度:2   描述       一天TC的匡匡找ACM的小L玩三国杀,但是这会小L忙着哩,不想和匡匡玩但又怕匡匡生气,这时小L给 ...

  5. ACM 变态最大值

    变态最大值 时间限制:1000 ms  |  内存限制:65535 KB 难度:1   描述 Yougth讲课的时候考察了一下求三个数最大值这个问题,没想到大家掌握的这么烂,幸好在他的帮助下大家算是解 ...

  6. ACM 蛇形填数

    蛇形填数 时间限制:3000 ms  |  内存限制:65535 KB 难度:3   描述 在n*n方陈里填入1,2,...,n*n,要求填成蛇形.例如n=4时方陈为:10 11 12 19 16 1 ...

  7. UVA 11461 - Square Numbers(水题)

    题目链接 #include <cstdio> #include <cstring> #include <string> #include <cmath> ...

  8. Android --日期控件使用并显示选择的日期

    1. main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns: ...

  9. bug: 在使用HMSegmentedControl时,设置selectionIndicatorEdgeInsets对左右边界没有用

    若设置了    self.tabSegmented.selectionStyle = HMSegmentedControlSelectionStyleFullWidthStripe; 则必须使用sel ...

  10. bug:[NSKeyedUnarchiver initForReadingWithData:]: data is NULL

    一,经历 1.问题出在给NSMutableDictionary类型的字典设置内容上. [_dictRateApp setObject:[NSNumber numberWithBool:NO] forK ...