我有这样的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属性。注册后,它应该存储所有信息。
答案 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,并以相同的方式更改了所有相应的代码。