Как добавить личность в существующий проект - PullRequest
0 голосов
/ 22 сентября 2019

У меня есть проект.Я хочу добавить идентификацию к нему.Но возникает ошибка.Я постараюсь на своем примере описать создание нового проекта без идентичности.Создайте новый класс "Пользователь".

public class User
{
    public int Id { get; set; }
    public string Surname { get; set; }
}

Создайте контекст

 public class UserContext : DbContext
{
    public UserContext() : base("DefaultConnection")
    { }
}

Обновите базу данных и добавьте 3 элемента.

Далее я хочу добавить личность.

PM> Install-Package Microsoft.AspNet.Identity.Owin 
PM> Install-Package Microsoft.AspNet.Identity.EntityFramework
PM> Install-Package Microsoft.Owin.Host.SystemWeb 

Класс обновления

public class User : IdentityUser
{
    public string Surname { get; set; }
}

Контекст обновления

public class UserContext: IdentityDbContext<User>
{
    public UserContext() : base("DefaultConnection")
    { }
}

Далее: Добавить миграцию

Error: 
Identity column 'Id' must be of data type int, bigint, smallint, tinyint, 
or decimal or numeric with a scale of 0, unencrypted, 
and constrained to be nonnullable.

Обновление файлов миграции

//AlterColumn("dbo.AspNetUsers", "Id", c => c.Int(nullable: false, identity: true));
DropColumn("dbo.AspNetUsers", "Id");
AddColumn("dbo.AspNetUsers", "Id", c => c.String(nullable: false, maxLength: 128));

Далее: update-database

Error: 
The CREATE UNIQUE INDEX statement terminated because a duplicate key 
was found for the object name 'dbo.AspNetUsers' 
and the index name 'PK_dbo.AspNetUsers'. 
The duplicate key value is ().

Как решить проблему?

1 Ответ

0 голосов
/ 23 сентября 2019

Я придумал решение.Когда

DropColumn("dbo.AspNetUsers", "Id");

, значение изменяется на NULL.Итак, обновление миграции

//AlterColumn("dbo.AspNetUsers", "Id", c => c.String(nullable: false, maxLength: 128));
AddColumn("dbo.AspNetUsers", "TmpId", c => c.String(nullable: false, maxLength: 128));
Sql("UPDATE dbo.AspNetUsers SET TmpId = Id");
DropColumn("dbo.AspNetUsers", "Id");
AddColumn("dbo.AspNetUsers", "Id", c => c.String(nullable: false, maxLength: 128));
Sql("UPDATE dbo.AspNetUsers SET Id = TmpId");
Sql("UPDATE dbo.AspNetUsers SET UserNAme = TmpId");
DropColumn("dbo.AspNetUsers", "TmpId");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...