2014-11-20 4 views
0

В настоящее время я работаю с веб-сайтом, который разрабатывается в ASP.NET и C#. Я использую EF6 и мне нужно изменить таблицы по умолчанию на собственные собственные таблицы. Я справился с этой проблемой. В моей пользовательской таблице UserId является int, а не по умолчанию nvarchar(128). Я следую за этим demo, но я продолжаю получать ошибку на первой строке.Изменение ключей для пользователей

public class ApplicationUser : IdentityUser<int, CustomLogin> 
{ 
} 

Ошибка: «Не-родовой тип Microsoft.AspNet.Identity.EntityFramework.IdentityUser» не может быть использован с аргументами типа.

Я исследовал и наткнулся на это post. Я обновил все основные библиотеки, но ошибка все еще существует. Кто-нибудь еще сталкивался с этой проблемой раньше или я счастлив? Заранее благодарю за вашу помощь

ответ

0

Существует два класса IdentityUser, которые поставляются с ASP.NET. Один объявлен как:

public class IdentityUser : IdentityUser<string, 
     IdentityUserLogin, 
     IdentityUserRole, 
     IdentityUserClaim>, IUser 

, а другой:

public class IdentityUser<TKey, TLogin, TRole, TClaim> : IUser<TKey> 
     where TLogin : IdentityUserLogin<TKey> 
     where TRole : IdentityUserRole<TKey> 
     where TClaim : IdentityUserClaim<TKey> 

Вы будете объявлять подтип обобщенно типизированного класса и нужны все четыре универсальных типов в декларации. И вам также понадобятся классы, которые наследуют IdentityUserRole<int>, IdentityUserClaim<int>, а также ваш класс CustomLogin, который, как я полагаю, является производным от IdentityUserLogin<int>.

феллинг ваше соглашение об именах, вы должны объявить класс как

public class ApplicationUser : IdentityUser<int, CustomLogin, CustomRole, CustomClaim> 
+0

Спасибо за быстрый ответ и информацию о глубине. Я пробовал то, что вы предлагали, но, похоже, получал то же сообщение об ошибке:/ – Code

+0

Мне удалось получить этот бит, работающий благодаря – Code

Смежные вопросы