отображение нескольких таблиц в один класс сущности в рамках сущности - PullRequest
28 голосов
/ 13 июля 2011

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

Я работаю с устаревшей базой данных, в которой есть 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 для сопоставления их с нашей устаревшей базой данных Oracle.

Каков был бы лучший способ объединить их в один класс? Обратите внимание, что это устаревшая база данных. Смена таблиц - это не вариант, и создание представлений на данном этапе проекта не является жизнеспособным решением.

1 Ответ

36 голосов
/ 13 июля 2011

Вы можете использовать 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");
      });

Вот полезная статья

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