Я хотел бы знать, как мне использовать Identity из ASP.NET для создания таблиц для связывания двух разных таблиц.
Например, у нас есть ASP.NetUsers и ASP.NetRoles. Поставщик удостоверений по умолчанию сгенерирует ASP.NetUsersRoles для хранения ролей, назначенных пользователю.
Я хотел бы сделать то же самое для двух других таблиц. Скажем, у меня есть таблица пользователей по умолчанию и таблица с именем Context.
Я хотел бы иметь ASP.NetUsers, Contexts и ASP.NetUsersContexts для связывания пользователя с одним или несколькими контекстами.
Теперь у меня есть таблица контекста с внешним ключом внутри таблицы пользователей Asp.Net, от которой я хотел бы избавиться и использовать таблицы отношений. Является ли это возможным?
Вот как у меня это сейчас:
public class ApplicationUser : IdentityUser
{
public virtual ApplicationUserProfile UserProfile {get;set;}
public virtual ICollection<ApplicationUserContext> UserContext { get; set; }
public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<ApplicationUser> manager)
{
// Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType
var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
// Add custom user claims here
return userIdentity;
}
}
Благодарность!
1 ответ
Учитывая имеющийся у вас код, вам необходимо добавить в свой класс ApplicationUserContext следующее:
public virtual ICollection<ApplicationUser> Users {get;set;}
Вам также необходимо убедиться, что ваш класс dbcontext имеет свойство, которое возвращает набор dbset типа ApplicationUserContext's:
public DbSet<ApplicationUserContext> Courses { get; set; }
Он может уже иметь это.
Это устанавливает отношения "многие ко многим" между двумя классами, и EF сгенерирует таблицу сопоставления для отслеживания этих отношений.
Похожие вопросы
Новые вопросы
c#
C # (произносится как «резкий») - это высокоуровневый, статически типизированный язык программирования с несколькими парадигмами, разработанный Microsoft. Код C # обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, включая, среди прочего, .NET Framework, .NET Core и Xamarin. Используйте этот тег для вопросов о коде, написанном на C # или в формальной спецификации C #.