Подтвердить что ты не робот

Сопоставление нескольких таблиц с одним классом сущности в структуре сущности

прежде чем это будет помечено как дубликат, я проверил другие связанные сообщения, и они не отвечают на мой вопрос

Я работаю над устаревшей базой данных, которая имеет 2 таблицы, которые имеют отношения 1:1
в настоящее время у меня есть один тип (1Test: 1Result) для каждой из указанных таблиц я хотел бы объединить эти конкретные таблицы в один класс

текущие типы выглядят следующим образом

public class Result 
{
    public          string      Id                  { get; set; }
    public          string      Name                { get; set; }
    public          string      Text                { get; set; }
    public          string      Units               { get; set; }
    public          bool        OutOfRange          { get; set; }
    public          string      Status              { get; set; }
    public          string      Minimum             { get; set; }
    public          string      Maximum             { get; set; }

    public virtual  Instrument  InstrumentUsed      { get; set; }

    public virtual  Test        ForTest             { get; set; }
}


public class Test
{
    public          int     Id            { get; set; }
    public          string  Status        { get; set; }
    public          string  Analysis      { get; set; }
    public          string  ComponentList { get; set; }
    public virtual  Sample  ForSample     { get; set; }
    public virtual  Result  TestResult    { get; set; }
}

Я бы предпочел, чтобы они выглядели следующим образом

public class TestResult
{
    public          int        Id              { get; set; }
    public          string     Status          { get; set; }
    public          string     Analysis        { get; set; }
    public          string     ComponentList   { get; set; }
    public          string     TestName        { get; set; }
    public          string     Text            { get; set; }
    public          string     Units           { get; set; }
    public          bool       OutOfRange      { get; set; }
    public          string     Status          { get; set; }
    public          string     Minimum         { get; set; }
    public          string     Maximum         { get; set; }

    public virtual  Instrument InstrumentUsed { get; set; }
}

В настоящее время я использую свободный API для сопоставления их с нашей старой базой данных оракула

что было бы лучшим методом объединения их в один класс обратите внимание, что это устаревшая база данных, изменяющая таблицы, не является вариантом, и создание представлений не является жизнеспособным решением на данном этапе проекта.

4b9b3361

Ответ 1

Вы можете использовать Entity Splitting для достижения этого, если у вас есть тот же первичный ключ в обеих таблицах.

  modelBuilder.Entity<TestResult>()
    .Map(m =>
      {
        m.Properties(t => new { t.Name, t.Text, t.Units /*other props*/ });
        m.ToTable("Result");
      })
    .Map(m =>
      {
        m.Properties(t => new { t.Status, t.Analysis /*other props*/});
        m.ToTable("Test");
      });

Здесь полезная статья