12

Я читал various другой questions об использовании , но я не вижу ничего конкретного в отношении использования его с существующей базой данных при разработке проекта в ярусы. Ради аргумента, скажем, справедливо следующее:Как использовать членство с существующей базой данных (n-ярус)

  • Решение
    • WebUI
    • Услуги
      • UserService
    • данных
      • MyDbCon Текст
    • Ядро
      • Пользователь

Как я могу указать User (от проекта Core), чтобы быть в IUserStore для нового поставщика идентичности? Я что-то упускаю, или все это предполагает, что сайт и база данных членства всегда находятся в одном проекте (или существуют строгие ссылки на библиотеки Microsoft.AspNet.Identity.*, где бы ни находились модели)?

Настройка DbContext на уровне WebUI только для аутентификации (и привязка его к «MyDbContext» с помощью службы) кажется взломанной. Я что-то упустил, или команда просто планировала, что это используется только в простых приложениях?

И обратная связь будет оценена по достоинству.

Дополнительная информация

, если он стоит упомянуть:

  • Это будет совершенно новое решение; I не есть старые/существующие aspnet_* или webpages_* таблицы, о которых нужно беспокоиться. Я пытаюсь принять различные другие пользовательские решения и привязать их к одному твердому решению, поэтому я открыт для множества вариантов. Тем не менее, я хотел бы, чтобы вещи были разбиты слоем (если это вообще возможно).
+0

Является ли ваша существующая БД имеющей таблицы членства из структуры членства ASP.NET? – jd4u

+0

Для существующего членства Db вы должны предпринять шаги для его переноса в новую структуру ASP.NET Identity. http://www.asp.net/identity/overview/migrations/migrating-an-existing-website-from-sql-membership-to-aspnet-identity – jd4u

+0

Нет (я полагаю, вы имеете в виду 'AspNet *' таблицы), но это не сильно отличается от SimpleMembership, я предполагаю (кроме более динамичной привязки к модели, которая является пользователем, ролью и т. д.?)? –

ответ

3

Asp.net Identity Framework представляет собой набор компонентов, помогающих приложениям работать с идентификатором пользователя. Базовые блоки сердечника находятся в сборке Microsoft.AspNet.Identity.Core. Второй Microsoft.AspNet.Identity.EntityFramework - это реализация сохранения данных для основной структуры.

Теперь для n-уровневого приложения вы можете определить свою модель AppUser в любом проекте/сборке. Вам нужно наследовать его от Microsoft.AspNet.Identity.EntityFramework.IdentityUser. Поэтому, основываясь на вашем подходе, вам необходимо указать конкретную сборку.

То же самое касается MyDbContext. Вы должны унаследовать от имеющегося в настоящее время только Persistence Microsoft.AspNet.Identity.EntityFramework.IdentityDbContext<TUser>.MyDbContext может быть в другом проекте/сборке. В этом проекте/сборке вы должны сослаться на свою сборку AppUser.

+0

Перед тем, как голосовать, прочитайте полный вопрос и свои комментарии, а затем прочитайте ответ. Ответ, данный здесь, соответствует письменному контексту для моего понимания. – jd4u

+0

Не уверен, что я понимаю, почему здесь требуется унаследовать от 'IdentityUser'. Поскольку мы можем реализовать наш собственный «IUserStore», который будет использовать реализацию «IUser». Это на случай, если мы идем без классов Identity.EntityFramework. Не могли бы вы объяснить необходимость унаследовать здесь? Благодаря! – Artyom

+0

@Artem, вы правы. Если вы создаете свою собственную реализацию, ее не требуется наследовать от 'IdentityUser', которая является частью' Microsoft.AspNet.Identity.EntityFramework'. Но если вы просто настраиваете приложение, используя 'Microsoft.AspNet.Identity.EntityFramework', вы должны наследовать от' IdentityUser'. – jd4u

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