1

ASP.NET Идентичность Owin с Entity Framework добавляет следующие таблицы в базе данных:ASP.NET Идентичность создания таблиц и проекта Развязка

ASPNetUsers 
ASPNeRoles 
ASPNeTokens 
ASPNetUserClaims 
ASPNetUserLogins 
ASPNetUserManagements 
ASPNetUserRoles 
ASPNetUserSecrets 
  1. Может кто-нибудь объяснить мне, где эти имена пришли? Я просмотрел файлы решений и проектов и не видел ссылок на них. Являются ли эти имена настраиваемыми (я имею в виду, когда они сгенерированы - не после того, как они существуют в базе данных)?

  2. Я попробовал эксперимент и добавил новый проект в свое решение ASP.NET MVC 5. Затем я использовал NuGet для установки Microsoft ASP.NET Identity Owin. Затем я добавил Entity Framework 6 в этот проект и создал класс datacontext, который наследуется от DbContext. В этот момент я запустил команду enable-migrations из консоли диспетчера пакетов. Это создало папку Migrations и класс миграции, а также класс Configuration.cs. Все идет нормально. Но когда я запускал команду «add-migration initial», ни одна из таблиц Identity ASP.NET, упомянутых выше, не генерируется.

    Однако, когда я выполняю те же шаги в своем проекте MVC, команда add-migration генерирует приведенные выше таблицы. В моем проекте MVC есть класс startup.auth.cs в моей папке App_Start, . Кажется, это ключ, но я просто не уверен, потому что что-то происходит «автоматически-магически», что я, очевидно, не понимаю. Файл startup.auth.cs выглядит так:

.

using Microsoft.AspNet.Identity;  
using Microsoft.Owin; 
using Microsoft.Owin.Security.Cookies; 
using Owin; 

namespace AspNetIdentity 
{ 
    public partial class Startup 
    { 
     // For more information on configuring authentication, please visit http://go.microsoft.com/fwlink/?LinkId=301864 
     public void ConfigureAuth(IAppBuilder app) 
     { 
      // Enable the application to use a cookie to store information for the signed in user 
      app.UseCookieAuthentication(new CookieAuthenticationOptions 
      { 
       AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie, 
       LoginPath = new PathString("/Account/Login") 
      }); 
      app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie); 
     } 
    } 
} 

Если я хочу, чтобы иметь возможность перенести таблицы ASP.NET тождественного проекта, кроме моего проекта MVC, как я могу это сделать?

+0

возможно дубликат [Как я могу изменить имена таблиц при использовании Visual Studio 2013 Сеть САШ идентичности?] (Http://stackoverflow.com/questions/19460386/how-can-i- change-the-table-names-when-use-visual-studio-2013-aspnet-identity) – Shoe

+0

Я прошу различать: вопрос о том, как изменить имена таблиц, - это не тот же вопрос, как задать вопрос о том, откуда эти имена приходят/возникают. Кроме того, мой вопрос задает вопрос о развязывании, который не является дубликатом упомянутого вопроса. – Jazimov

+0

Ответ может быть тонким, но ответ вы переопределите сущности 'System.Data.Entity.DbModelBuilder'. Я думаю, что можно предположить, что имена таблиц по умолчанию находятся там. Вы можете использовать декомпилятор для подтверждения – Shoe

ответ

0

Примечание: эти имена таблиц выглядят из предварительной версии Identity 1.0, но короткий ответ: они получены из IdentityDbContext.OnModelCreating, который указывает имена таблиц для разных объектов.

Ваш IdentityDbContext обычно передается в UserStore. Везде, где вы создаете свой UserManager, вероятно, вы создаете как UserStore, так и IdentityDbContext. Обратите внимание, что конструктор по умолчанию для UserStore создает новый IdentityDbContext, который использует строку «DefaultConnection», так что это может быть волшебный шаг, который вы не видите.

IdentityDbContext

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
Смежные вопросы