MVC4 Entity Framework и воссоздание Simplemembership

Итак, я добавляю к Simplemembership.

Профили пользователей модели

namespace OilNGasWeb.Models
{
[Table("Users")]
public class UserProfiles
{
    [Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public int UserId { get; set; }

    public string UserName { get; set; }

    public string FirstName { get; set; }

    public string LastName { get; set; }

    public string MiddleName { get; set; }

    public string Initials { get; set; }

    public string Company { get; set; }

    public string Department { get; set; }

    public string Title { get; set; }

    public string Team { get; set; }

    public string TeamSub { get; set; }

    public string Phone { get; set; }

    public string ImageLocation { get; set; }

    public string CurrentlyAuthorized { get; set; }

    public string Note { get; set; }

    public string Comment { get; set; }

    //public virtual dbClient Client { get; set; }

    public virtual ICollection<Roles> Roles { get; set; } //many to many
    public virtual ICollection<dbClient> Clients { get; set; } // many to many

}
}

Роли

namespace OilNGasWeb.Models
{
[Table("webpages_Roles")]
public class Roles
{
    [Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    [Required(ErrorMessage = "Required")]
    public int RoleID { get; set; }
    [Required(ErrorMessage = "Required")]
    public string RoleName { get; set; }

    public virtual ICollection<UserProfiles> UserProfiles { get; set; } //many to many

}
}

Моя проблема теперь, когда у меня есть создание таблиц «многие ко многим», как я видел, перед модификациями, мой вопрос заключается в том, как переименовать эти таблицы.

веб-страницы_UsersInRoles

Я бы предпочел не заходить в SSMS и не менять их физически, а сказать MVC использовать другой экземпляр.

Из приведенного выше кода EF создал RolesUserProfiles вместо webpages_UsersInRoles.

Ошибка появляется, когда программа пытается @if (User.IsInRole("Администратор")) подтвердить пользователя.

Естественно, я нажал F12 на IsInRole, чтобы перейти к определению....

есть но там все пусто

Что теперь ? как я могу перекодировать, если он скрыт от меня? где находится код и как его изменить?

Что бы я хотел от всего этого

  1. либо переименовывая таблицы ManytoMany по мере их создания
  2. возможность изменить код, который ищет webpages_UsersInRoles

Заранее спасибо.


person Don Thomas Boyle    schedule 30.07.2013    source источник


Ответы (1)


Вы не можете переименовывать таблицы. Имена таблиц жестко закодированы в SimpleMembership. Вы можете увидеть исходный код здесь:

http://aspnetwebstack.codeplex.com/SourceControl/latest#src/WebMatrix.WebData/SimpleMembershipProvider.cs

Не используйте навигационные свойства EF. Вы должны получить доступ к этой информации через членство или API WebSecurity.

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

person Erik Funkenbusch    schedule 30.07.2013
comment
Эй, кстати, затронута только таблица webpages_UsersInRoles? Я использую свою собственную таблицу пользователей, и она не жалуется на имя. (он работает с SM и еще не нарушил создание паролей, связанных с моим костюмом Usertale) Я собираюсь предположить, что с UserInRoles это не совсем так работает? - person Don Thomas Boyle; 01.08.2013
comment
@DonThomasBoyle — SimpleMembership позволяет вам указать имя вашей таблицы Users, так что это можно настроить. Однако другие таблицы, начинающиеся с webpages_*, — нет. - person Erik Funkenbusch; 01.08.2013