Search code examples
asp.net-mvcentity-frameworksimplemembership

MVC4 Entity Framework and Simplemembership Re-Creation


Ok so I'm adding on to the Simplemembership.

Model UsersProfiles

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

}
}

Roles

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

}
}

My issue now that i have it creating the many to many tables like i saw it creat before modifications my question is how to get those tables Renamed

webpages_UsersInRoles

I would prefer not to go into SSMS and change them physically rather tell MVC to use a different instance

From the code above EF produced RolesUserProfiles instead of webpages_UsersInRoles

The error shows when the program is trying to @if (User.IsInRole("Administrator")) validade user.

Naturally I hit F12 on IsInRole to bring me to the definition....

it does but there all empty

Now what ? how can i recode if its hidden from me ? where is the code at , and how can i Modify this?

What i would like out of all this is

  1. either renaming the tables ManytoMany as they are being created
  2. being able to modify the code that looks for webpages_UsersInRoles

Thanks in advance.


Solution

  • You cannot rename the tables. The table names are hard coded in SimpleMembership. You can see the source code here:

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

    Don't use the EF navigational properties. You should be accessing this information via the Membership or WebSecurity API's.

    If you really want to do this, then you will need to configure EF to use the tablenames required by simple membership, which means utilizing the fluent mapping syntax.. which is not exactly intuitive.