c# - 使用成员表进行代码优先建模

标签 c# asp.net-membership ef-code-first entity-framework-4.1

我想在我自己的表中而不是 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/

相关文章:

c# - itextsharp document.close 上的堆栈溢出异常

c# - 将数据与 ASP.NET 成员关联

entity-framework - Entity Framework 按排序顺序加载子集合

c# - 'Enums' 类中不允许代码优先枚举? (英孚 5)

c# - 如果定时器无法在新的循环时间到来之前完成所有工作怎么办?

c# - 我可以在 XAML(.NET 4 Framework 之前)中指定泛型类型吗?

c# - 在 C# 中声明固定大小数组的列表

c# - 如何为新用户设置个人资料数据

c# - 创建 ASP.Net 成员数据库的代码

entity-framework-4 - 查询多对多和有条件的 where