在sql server中创建的两个用户配置文件表

时间:2015-09-06 12:44:19

标签: asp.net-mvc entity-framework simplemembership

我有这样的Accountmodels.cs类---

public class UsersContext : DbContext
{
    public UsersContext()
        : base("DefaultConnection")
    {
    }

    public DbSet<UserProfile> UserProfiles { get; set; }
}

public class RegisterExternalLoginModel
{
    [Required]
    [Display(Name = "User name")]
    public string UserName { get; set; }

    public string ExternalLoginData { get; set; }
}

,我的用户个人资料类就是这样---

  public class UserProfile
{
    public UserProfile()
    {
        this.Posts = new HashSet<Post>();
    }

    public int UserId { get; set; }
    public string UserName { get; set; }
    public string AvatarExt { get; set; }

    public virtual ICollection<Post> Posts { get; set; }

最后我的dbContext类是----

   public class WallEntities : DbContext
   {
    public WallEntities()
        : base("name=WallEntities")
    {
    }
    public DbSet<Post> Posts { get; set; }
    public DbSet<UserProfile> UserProfiles { get; set; }

我在连接字符串中使用WallEntities和DefaultConnection作为名称。我使用简单成员资格,所以我有一个InitializeSimpleMembershipAttribute.cs文件。它看起来像这样---

    private class SimpleMembershipInitializer
    {
        public SimpleMembershipInitializer()
        {
            Database.SetInitializer<UsersContext>(null);

            try
            {
            WebSecurity.InitializeDatabaseConnection("DefaultConnection", "UserProfile", "UserId", "UserName", autoCreateTables: true);
            }.

我的问题是它在Sql server中创建了两个表。一个是UserProfile,另一个是UserProfiles表。我想只创建一个表是UserProfile表,包含UserId,UserName和AvatarExt属性。注册后,它应该存储所有信息。

1 个答案:

答案 0 :(得分:0)

我想回答我的问题,这可能对某人有用---

这里的问题不是使用两个DbContext。而是代码,对于代码第一种方法,一个dbContext就足够了。

所以,DbContext应该是这样的----

  public class UsersContext : DbContext
  {
   public UsersContext()
    : base("DefaultConnection")
    {
    }
    public DbSet<Post> Posts { get; set; }
   it should not be here
   // public DbSet<UserProfile> UserProfiles { get; set; }
  }

然后将WallEntities DbContext删掉。并且我已经注释掉了UserContext中的USerFrofile,并以相同的方式更改了所有相应的代码。