EntityFramework Code First 添加唯一键

在EntityFramework 6.1后可以直接使用

[Index("TitleIndex", IsUnique = true)]
 public string Title { get; set; }

在旧版本中,

Unfortunately you can‘t define it as unique key in code first because EF doesn‘t support unique keys at all (it is hopefully planned for next major release). What you can do is to create custom database intializer and add unique index manually by calling SQL command:

public class MyInitializer : CreateDatabaseIfNotExists<MyContext>
{
  protected override void Seed(MyContext context)
  {
    context.Database.ExecuteSqlCommand("CREATE UNIQUE INDEX IX_Category_Title ON Categories (Title)");
  }
}

And you must set this initializer in the bootstrap of your application.

Database.SetInitializer<MyContext>(new MyInitializer());

http://stackoverflow.com/questions/5701608/unique-key-with-ef-code-first

时间: 2024-10-15 10:13:13

EntityFramework Code First 添加唯一键的相关文章

Oracle 数据库表中已有重复数据添加唯一键(唯一约束)

Oracle 数据库表中已有重复数据添加唯一键(唯一约束) 问题描述 以 demo 举例,模拟真实场景. 表 TEST_TABLE 有如下字段和数据:id 是主键,code 没有设置键和索引 ID CODE 1 code1 2 code2 3 code2 4 code2 5 code3 通过以上表中数据可以看出 code 是有重复数据的,此时如果我们直接添加唯一键,会报错. 通过 PL/SQL 可视化操作,或者通过 SQL 语句添加(ENABLE NOVALIDATE 的作用是约束新增数据但不会

主键、唯一键、唯一索引的使用

主键只能用一个,不能为NULL,唯一(可以多列作为复合主键,当所有设置为复合主键的列都相同是视为唯一,多对多的表中常用) 唯一键,也称(唯一约束),和主键的区别是可以为有多个唯一键并且值可以为NULL,但NULL也不能重复,也就是说只能有一行的值为NULL.它会隐式的创建唯一索引. alter table 表名 add constraint 约束名 unique(列名) 唯一索引,几乎和唯一键一样,但可以添加过滤器来允许重复某些值 CREATE UNIQUE INDEX 索引名 ON 表名 (列

数据表操作与主键、外键、唯一键使用

1.修改数据库(比如修改字符集) mysql> alter database `DB` character set utf8; 2.根据查询结果建立数据表,注意这样复制的数据表是不能将主键也复制过来的,也就是说此时的新表示没有主键的 mysql> create table student_bak select ID,name from student where ID=2; mysql> create table student_bak2 select * from student; 3

C# EntityFramework Code First 迁移

如果使用的是 Code First 工作流,推荐使用 Code First 迁移改进应用程序的数据库架构. 迁移提供一组允许以下操作的工具: 创建可用于 EF 模型的初始数据库 生成迁移以跟踪对 EF 模型所做的更改 使数据库随时掌握这些更改 下方演练将概述实体框架中的 Code First 迁移. 可以完成整个演练或跳到感兴趣的主题. 包含以下主题: 生成初始模型和数据库 开始使用迁移之前,需要会用到项目和 Code First 模型. 对于此演练,我们将使用规范的“博客”和“帖子”模型. 创

[MySQL日记]主键唯一键重复插入解决方法

我们插入数据的时候,有可能碰到重复数据插入的问题,但是这些数据又是不被允许有重复值: CREATE TABLE stuInfo ( id INT NOT NULL COMMENT '序号', name VARCHAR(20) NOT NULL DEFAULT '' COMMENT '姓名', age INT NOT NULL DEFAULT 0 COMMENT '年龄', PRIMARY KEY (id), UNIQUE KEY uniq_name(name) ) ENGINE=InnoDB D

主键与唯一键的区别

sql 的三大类型分别是:数值类型,整形类型,字符串类型 字符串类型的char 和varchar 的区别: 在定义的时候都要指向char(M)varchar(M)的长度,varchar只是表示一定的范围, 1, varchar对存储空间的使用更加灵活 2, char的效率更高 3, 如果存储的字符串的长度是已知固定的,就用char,如果是可变的,就用varchar 案例代码: primary key 主键 unique key 唯一键的区别和用法 设置主键有两种方法: 1.在定义一个字段的时候直

对”唯一键可以包含NULL值,并且每个NULL值都是唯一的(即NULL!=NULL)“理解

因为最近在写一篇关于字符串模糊检索的论文,开始比较细致的研究数据库(MySQL)中的index问题,变到图书馆借了本<Effective MySQL之SQL语句最优化>(Ronald Bradford著,李雪峰译).今天在里面看到了这句”唯一键可以包含NULL值,并且每个NULL值都是唯一的(即NULL!=NULL)“.第一反应是:我去,什么鬼?简直不是人话啊!!其实计算机行业好多这种话,想了想然后便到网上查找了写资料! 使用WHERE子句的SQL SELECT命令来从MySQL表获取数据.但

按照艺术家分组并输出某个艺术家的唯一键-值对

<strong><span style="font-size:18px;">/*** * @author YangXin * @info 按照艺术家分组并输出某个艺术家的唯一键-值对 * Mapper输出艺术家,而Reducer只输出唯一的艺术家并丢弃空的字符值. */ package unitTwelve; import java.io.IOException; import org.apache.hadoop.io.IntWritable; import o

SQLServer 唯一键约束和唯一索引有什么区别?

以前也想了解到底有什么区别,但是搁着又忘记了,因为我们很少用唯一键约束.直到几天前同事给我个脚本来约束某个字段的唯一性,用的是唯一键约束,这问题又萦绕脑中了.看似有区别,又没发现什么大的区别!实际上也没多大区别,还是测试看看吧. USE [DemoDB] GO CREATE TABLE [dbo].[TableUniqueKey]( id int not null, name varchar(20) null ) GO CREATE TABLE [dbo].[TableUniqueIndex](