Как отобразить объект EF через таблицу отображения - PullRequest
1 голос
/ 11 июля 2019

У меня есть две таблицы базы данных - 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

Я хотел бы отобразить первую таблицу в объект Entity, как этот ...

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

Но я совсем не уверен, как это сделать.

Я использую EF 6, сначала код

1 Ответ

0 голосов
/ 11 июля 2019

Предполагая, что ваш контекст может быть следующим (обратите внимание на ссылку FK, мы можем выбрать модель для включения ссылки на FK через Customer_Values):

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");
    }
}

Ссылка Customer Values ​​на атрибуты клиента:

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

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

    public int CustomerId { get; set; }
}

Надеемся, что это дает вам правильную идею!

Microsoft Doc FK ModelingСсылка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...