我想在我自己的表中而不是 ASP.Net 设置的默认表中跟踪其他用户配置文件信息。那么,如何制作映射到我的 UserInfoModel 类中的 aspnet_Users.UserId 字段的外键?
public class UserInfoModel
{
[MaxLength(30)]
[Display(Name = "First Name")]
public string FirstName { get; set; }
[MaxLength(50)]
[Display(Name = "Last Name")]
public string LastName { get; set; }
}
最佳答案
我做过类似的事情:
public class User
{
[Key]
public Guid UserId { get; set; }
public string UserName { get; set; }
}
public class UserDetail
{
[Key]
public Guid UserId { get; set; }
public string FullName { get; set; }
public string CompanyName { get; set; }
}
public class UserMembership
{
[Key]
public Guid UserId { get; set; }
public string Password { get; set; }
public string Email { get; set; }
public bool IsApproved { get; set; }
public bool IsLockedOut { get; set; }
}
下面是这些表的配置:
public class UserConfig : EntityConfiguration<User>
{
public UserConfig()
{
this.MapSingleType(user => new
{
UserId = user.UserId,
UserName = user.UserName
}).ToTable(new StoreTableName("aspnet_Users", "dbo"));
}
}
public class UserDetailConfig : EntityConfiguration<UserDetail>
{
public UserDetailConfig()
{
this.HasKey(u => u.UserId);
this.MapSingleType(ud => new
{
UserId = ud.UserId,
FullName = ud.FullName,
CompanyName = ud.CompanyName
}).ToTable(new StoreTableName("UserDetail", "dbo"));
}
}
public class UserMembershipConfig : EntityConfiguration<UserMembership>
{
public UserMembershipConfig()
{
this.HasKey(m => m.UserId);
this.MapSingleType(membership => new
{
UserId = membership.UserId,
Password = membership.Password,
Email = membership.Email,
IsApproved = membership.IsApproved,
IsLockedOut = membership.IsLockedOut
}).ToTable(new StoreTableName("aspnet_Membership", "dbo"));
}
}
您的数据库上下文:
public class TLI_FBA : DbContext
{
public DbSet<User> Users { get; set; }
public DbSet<UserDetail> UserDetails { get; set; }
public DbSet<UserMembership> UserMemberships { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Configurations.Add(new UserConfig());
modelBuilder.Configurations.Add(new UserDetailConfig());
modelBuilder.Configurations.Add(new UserMembershipConfig());
}
}
关于c# - 使用成员表进行代码优先建模,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5585435/