EntityFramework code first 一些常用的约束特性
参阅: 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 一些常用的约束特性的更多相关文章
- Entityframework Code First 系列之数据注释
上一篇<Entityframework Code First 系列之项目搭建>讲了搭建一个Code First的控制台项目.里面有一些内容并没有扩展出来讲,因为篇幅有限.这篇针对上面内容中 ...
- 最常用的ES6特性(转)
最常用的ES6特性 let, const, class, extends, super, arrow functions, template string, destructuring, defaul ...
- 最常用的ES6特性
遇到了要写出es6新特性的题目,所以查阅了资料来总结一下,点击查看原文. 进入正题,最常用的ES6特性有:let, const, class, extends, super, arrow functi ...
- C# EntityFramework Code First 迁移 降级 回退到空数据库
C# EntityFramework Code First 迁移 降级 回退到空数据库 1.包管理器控制台-迁移 在包管理器控制台中运行 Enable-Migrations Add-Migratio ...
- EntityFramework Code First便捷工具——数据迁移
使用EntityFramework Code First开发,数据迁移是一个不得不提的技术. 在我们的开发过程中,难免需要对模型进行改进,模型改进后,会导致实体集与数据库不一致,当然我们可以通过删除数 ...
- Python3.x 常用的新特性
Python3.x 常用的新特性 print() 是函数,不是一个语句 raw_input()输入函数,改为 input() Python 3 对文本和二进制数据做了更为清晰的区分. 文本由unico ...
- ES6系列之项目中常用的新特性
ES6系列之项目中常用的新特性 ES6常用特性 平时项目开发中灵活运用ES6+语法可以让开发者减少很多开发时间,提高工作效率.ES6版本提供了很多新的特性,接下来我列举项目中常用的ES6+的特性: l ...
- EntityFramework Code First 构建外键关系,数据库不生成外键约束
创建 ExtendedSqlGenerator类 public class ExtendedSqlGenerator : SqlServerMigrationSqlGenerator { #regio ...
- EntityFramework Code First 添加唯一键
在EntityFramework 6.1后可以直接使用 [Index("TitleIndex", IsUnique = true)] public string Title { g ...
随机推荐
- (转)POJ题目分类
初期:一.基本算法: (1)枚举. (poj1753,poj2965) (2)贪心(poj1328,poj2109,poj2586) (3)递归和分治法. (4)递推. ...
- Android自动化测试-Robotium(一)简介
一.Robotium原理 Robotium是一款Android自动化测试框架,主要针对Android平台的应用进行黑盒自动化测试,它提供了模拟各种手势操作(点击.长按.滑动等).查找和断言机制的API ...
- NoSql之MongoDB--Ubuntu下安装
MongoDB只提供了64位LTS(长期支持)Ubuntu发行版的packages.例如,12.04 LTS,14.04 LTS,16.04 LTS等等. 1.导入被包管理系统使用的公钥 Ubuntu ...
- 2014-2015 ACM-ICPC, NEERC, Moscow Subregional Contest E. Equal Digits
E. Equal Digits time limit per test 2 seconds memory limit per test 256 megabytes input standard inp ...
- BZOJ1946 : [Ceoi2006]ANTENNA
首先通过随机增量法求出最小覆盖圆,作为答案的上界. 然后二分答案,检验的时候枚举每个点作为原点,求出其他每个点被包括在圆内的角度区间,然后扫描线即可. 时间复杂度$O(Tn^2\log n)$. #i ...
- BZOJ2040 : [2009国家集训队]拯救Protoss的故乡
以根为原点,所有叶子为汇点建立网络. 对于一条边$(x,y,A,B)$,$x$向$y$连边,容量$A$,费用0,再连边,容量$B-A$,费用1. 然后不断增广,直到费用达到$M$为止的最大流即为答案. ...
- ACM 懒省事的小明
懒省事的小明 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 小明很想吃果子,正好果园果子熟了.在果园里,小明已经将所有的果子打了下来,而且按果子的不同种 ...
- 【HDU】3506 Monkey Party
http://acm.hdu.edu.cn/showproblem.php?pid=3506 题意:环形石子合并取最小值= =(n<=1000) #include <cstdio> ...
- HDU 4020 Ads Proposal
题目链接 排排序,找找做题的感觉... 对了,longlong用C++ 错了几次,我也是linux选手了.... #include <iostream> #include <cstd ...
- 【noiOJ】P1996
1996:登山 查看 提交 统计 提问 总时间限制: 5000ms 内存限制: 131072kB 描述 五一到了,PKU-ACM队组织大家去登山观光,队员们发现山上一个有N个景点,并且决定按照顺序 ...