Я нашел другое решение, если у вас есть ваши таблицы пользователя/аутентификации в другой схеме, чем dbo (или что-то вроде схемы по умолчанию для пользователя базы данных), и это должно использовать представление.
В моей базе данных мои таблицы пользователя/аутентификации привязаны к схеме «Безопасность». У меня также есть схема Person, в которой живет таблица Person. Я храню только таблицу FirstName, LastName in Person.
Я создал представление, которое тянет все таблицы вместе для аутентификации и возвращает следующие поля:
UserId, UserName, PersonId, FirstName, LastName, AuthenticationType, LastLoginDate, IsLockedOut
В моем приложении , Я могу аутентифицировать человека несколькими различными способами: форма, Windows, Facebook, Twitter и т. Д. UserId, UserName относятся к другому типу аутентификации.
Вот мой UserProfile класс в ASP.Net MVC:
[Table("__vwRegisteredUser")]
public class UserProfile
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int UserId { get; set; }
public String UserName { get; set; }
public int PersonId { get; set; }
public String FirstName { get; set; }
public String LastName { get; set; }
public String AuthenticationTypeName { get; set; }
public Boolean IsLockedOut { get; set; }
public DateTime LastLoginDate { get; set; }
public int Id
{
get
{
return PersonId;
}
}
public String Name
{
get
{
return String.Format("{0} {1}", FirstName, LastName);
}
}
}
Примечание Я использую представление для атрибута таблицы. Я также возвращаю PersonId как свойство Id и объединяю FirstName и LastName вместе как свойство Name. UserName - это значение, возвращаемое из моего типа аутентификации (имя пользователя Windows, адрес электронной почты, если я использую аутентификацию по Формам, или что-то вроде Facebook или Twitter). Таким образом, нет никакой последовательности для UserName из моей таблицы Security.Authentication.
Для инициализации подключения к базе данных по-прежнему требуется таблица, чтобы SimpleMembership генерировал таблицы членства. Возможно, есть способ создать пользовательскую таблицу, но я еще не понял этого.
Посмотрите эту тему: –