EF 6.1索引IsUnique未生成

时间:2014-05-17 11:15:50

标签: sql entity-framework entity-framework-6.1

我有以下代码第一个实体:

class Role
{
    [Key]
    public int Id { get; set; }
    [Index("NameIndex", IsUnique = true)]
    public string Name { get; set; }
}

但是在使用SQL Management Studio检查数据库时,有多个同名的行:

ID=1, Name=admin
ID=2, Name=admin

我的上下文非常简单:

class MemberContext : DbContext
{
    public DbSet<User> Users { get; set; }
    public DbSet<Role> Roles { get; set; }
}

检查SQL 2014 Express数据库表索引,不生成任何内容(仅存在PK)。

有什么我还没有完成索引工作所需要的吗?

2 个答案:

答案 0 :(得分:2)

所以我正在编写一个新类(由Autofac从DLL中注入),主程序运行EF 6.0(而我的实用类项目使用的是EF 6.1)。

具体来说,我不得不对字符串长度设置一个长度约束,否则我将无法在其上放置索引(无法在varchar(max)上生成索引):

class Role
{
    [Key]
    public int Id { get; set; }

    [MaxLength(127)]
    [Index(IsUnique = true)]
    public string Name { get; set; }       

    public virtual ICollection<User> Users { get; set; }
}

答案 1 :(得分:0)

我认为您的数据库已经创建,现在您正在尝试更改模型。我可以告诉你只是删除数据库并重新运行代码,但这意味着丢失所有数据。

你应该真正阅读EF Migrations,然后实施它。

但是,您仍然会遇到问题。因为名称上的新唯一性约束,无法升级现有数据。

更新1

在重新阅读您的问题时,&#34;有多行相同的用户名&#34;。您向我们展示了角色用户的代码。您是否已将约束应用于用户?

更新2

如果您要放松数据,请在启动逻辑中执行context.Database.Initialize(true);