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 ...
随机推荐
- Codeforces Round #347 (Div. 2)
unrating的一场CF A - Complicated GCD #include <bits/stdc++.h> const int N = 1e5 + 5; char a[105], ...
- Robotium原理初探
本文转载于:http://blog.csdn.net/jack_chen3/article/details/41927395 测试框架图: Android测试环境的核心是Instrumentation ...
- SolrCloud-4.10.2源代码启动流程梳理
SolrCloud-4.10.2源代码 web.xml中filter配置 SolrDispatchFilter <filter-name>SolrRequestFilter</fil ...
- BZOJ1315 : Ural1557Network Attack
找到一棵dfs搜索树,给每条非树边一个随机非0权值,每条树边为所有经过它的树边的权值的异或. 那么有2种情况是合法的: 1.一条边权值为0,一条边权值非0. 2.两条边异或和为0. 排序后统计即可,时 ...
- Storm on Yarn :原理分析+平台搭建
Storm on YARN: Storm on YARN被视为大规模Web应用与传统企业应用之间的桥梁.它将Storm事件处理平台与YARN(Yet Another Resource Negotiat ...
- 【BZOJ】3675: [Apio2014]序列分割
http://www.lydsy.com/JudgeOnline/problem.php?id=3675 题意:给一个n个数字的序列,每一次分割的贡献是$sum(left, mid)*sum(mid+ ...
- /var/log目录下的20个Linux日志文件功能详解
如果愿意在Linux环境方面花费些时间,首先就应该知道日志文件的所在位置以及它们包含的内容.在系统运行正常的情况下学习了解这些不同的日志文件有助于你在遇到紧急情况时从容找出问题并加以解决. 以下介绍的 ...
- BZOJ4500: 矩阵
Description 有一个n*m的矩阵,初始每个格子的权值都为0,可以对矩阵执行两种操作: 1. 选择一行, 该行每个格子的权值加1或减1. 2. 选择一列, 该列每个格子的权值加1或减1. 现在 ...
- LVS DR脚本 解析
vip.sh #!/bin/bash 192.168.2.240 broadcast 192.168.2.240 netmask 255.255.255.255 up route add -host ...
- 树莓派安装LAMP作为服务器
先运行 sudo apt-get update 更新软件源 1.安装Apache sudo apt-get install apache2 2.安装Mysql sudo apt-get install ...