2017-01-08 7 views
0

Я пытаюсь изменить тип идентификатора из строки по умолчанию для пользователя идентификации. Я получаю исключение при попытке зарегистрировать службу удостоверения в методе службы конфигурации.Переопределить тип идентификатора идентификатора в .net-ядре

Это то, что я пытаюсь сделать в моем методе Startup.ConfigureServices.

public void ConfigureServices(IServiceCollection services) 
{ 

     services.AddDbContext<UserContext>(options => 
       options.UseSqlServer(config.GetConnectionString("DefaultConnection"))); 

     services.AddIdentity<User, Role>() 
     .AddEntityFrameworkStores<UserContext>(); 
     //.AddDefaultTokenProviders(); 

     services.AddDbContext<MusicContext>(options => 
        options.UseSqlServer(config.GetConnectionString("DefaultConnection"))); 

     services.Configure<IdentityOptions>(options => 
     { 
      new IdentityOptionConfiguration(options); 
     });  
    services.AddMvc(); 
} 

Вот мой класс, который наследует IdentityUser. Здесь я пытаюсь переопределить тип строки. Я хочу, чтобы это был int или, возможно, даже guid. Я пока не знаю, но сейчас я собираюсь с int.

public class User : IdentityUser<int> 
{ 
    public int ID { get; set; } 
} 

И вот роль, которую я пытаюсь использовать. Я в порядке с ролями по умолчанию, которые даются по большей части.

public class Role : IdentityRole 
{ 
} 

Теперь исключение я получаю следующее ...

System.Private.CoreLib.ni.dll но не был обработан в пользовательском коде

Дополнительная информация: GenericArguments [0], «MusicianProject.Services.User», на «Microsoft.AspNetCore.Identity.EntityFrameworkCore.UserStore`4 [TUser, TRole, TContext, TKey] ' нарушает ограничение типа« TUser ».

Основываясь на формулировке ошибки, я считаю, что безумно, что я пытаюсь изменить тип. Что мне здесь не хватает?

+1

пример [здесь] (http://stackoverflow.com/questions/37166098/how-to-make-ef-core-use-a-guid-instead-of-string-for-its -id-primary-key/37173202 # 37173202), используя Guid для PK – tmg

+1

@tmg: вы должны были инициировать за него закрытое голосование, чтобы оно получило четкую маркировку, когда на него указывали дублирующие и будущие пользователи. – Tseng

+0

@ С учетом того, что вы правы – tmg

ответ

0

Благодаря tmg для связывания меня с аналогичной проблемой. Это сообщение зафиксировало мою ситуацию. Хотя я пытаюсь создать миграцию, я столкнулся с каким-то столкновением операндов с guid и int. Я постараюсь понять это.

Благодаря

+1

Вы когда-нибудь выясняли проблему миграции? Я подозреваю, что могу столкнуться с той же проблемой. – Brandon

+0

я сделал. Однако я скрываю, что исправил это. Я думаю, что это был b.Property (u => u.Id) .HasDefaultValueSql ("newsequentialid()"); часть. Избавьтесь от этого и попробуйте выполнить миграцию. Если это не исправить, сообщите мне. Извините за задержку с ответом. – ddeamaral