1

我有两个数据库表——Customer_Values 和 Customer_Attributes……而且它……很笨。糟糕的。

Customer_Values 有类似的东西

CustomerId | AttributeId | Value
--------------------------------
        01 |          01 | Steve
        02 |          01 | Frank
        01 |          02 | Smith 

etc...

Customer_Attributes 看起来像这样

AttributeId |      Value
------------------------
         01 | First Name
         02 |  Last Name

我想将第一个表映射到这样的实体对象中......

class {
   string FirstName { get; set; }
   string LastName { get; set; }
}

但我完全不确定如何做到这一点。

我正在使用 EF 6,代码优先

4

1 回答 1

0

假设您的上下文可能如下(注意 FK 引用,我们可以设置模型以通过 Customer_Values 启用 FK 的引用):

class MyContext : DbContext
{
    public DbSet<Customer_Values> Customer_Value { get; set; }
    public DbSet<Customer_Attributes> Customer_Attribute { get; set; }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Customer_Attributes>()
            .HasOne(v => v.Customer_Values)
            .WithOne(a => a.Customer_Attributes)
            .HasForeignKey(v => v.AttributeId)
            .HasConstraintName("FK_Constraint_Name_Here");
    }
}

客户价值参考客户属性:

public class Customer_Values
{
    public int CustomerId { get; set; }
    public int AttributeId { get; set; }
    public string Value { get; set; }

    public <Customer_Attributes> Customer_Attribute { get; set; }
}

客户属性通过 1:1 关系获取客户 ID

public class Customer_Attributes
{
    public int AttributeId { get; set; }
    public string Value { get; set; }

    public int CustomerId { get; set; }
}

希望这能给你正确的想法!

Microsoft Doc FK 建模参考

于 2019-07-11T15:19:42.910 回答