C# 如何在实体的Use表中创建PK和唯一用户名(首先使用代码)?

C# 如何在实体的Use表中创建PK和唯一用户名(首先使用代码)?,c#,sql-server,asp.net-mvc,entity-framework-6,entity-framework-migrations,C#,Sql Server,Asp.net Mvc,Entity Framework 6,Entity Framework Migrations,我想设置如下 我使用的是最新的实体框架和代码优先的方法 Public class AppUser { [Key] public int Id { get; set; } [Required] [Index(IsUnique = true)] public string UserName { get; set; } } 但是它不起作用 示例记录如下 正在获取以下错误消息: “exceptionmessage”:“表

我想设置如下
我使用的是最新的实体框架和代码优先的方法

Public class AppUser
{
        [Key]
        public int Id { get; set; }
        [Required]
        [Index(IsUnique = true)]
        public string UserName { get; set; }
}
但是它不起作用

示例记录如下

正在获取以下错误消息:

“exceptionmessage”:“表'dbo.ApplicationUser'中的'UserName'列” 类型无效,无法用作索引中的键列。“


您需要限制
UserName
属性的长度。为此使用
StringLength
注释

如果所有固定键列的大小加上所有键列的最小大小 CREATE INDEX语句中指定的变量列超过900 字节,则CREATEINDEX语句失败


来源:

您需要限制
用户名
属性的长度。为此使用
StringLength
注释

如果所有固定键列的大小加上所有键列的最小大小 CREATE INDEX语句中指定的变量列超过900 字节,则CREATEINDEX语句失败


来源:

将其添加到您的实体中

[Required]
[Index(IsUnique = true)]
[StringLength(50)]
public string UserName { get; set; }

StringLength(50)将列的大小设置为50个字符。没有它,code first创建的列的类型为NVARCHAR(MAX),EF无法在此类列上创建索引

将其添加到实体中

[Required]
[Index(IsUnique = true)]
[StringLength(50)]
public string UserName { get; set; }
StringLength(50)将列的大小设置为50个字符。没有它,code first创建的列的类型为NVARCHAR(MAX),EF无法在此类列上创建索引