сопоставление 2 строк одной таблицы как одного объекта - PullRequest
0 голосов
/ 11 августа 2011

Следуя устаревшей модели базы данных, я получаю классы, такие как:

public enum ChildType
{
    Part1,
    Part2,
}

public class Child
{
    public virtual int Id { get; set; }

    public virtual Parent Parent { get; set; }
    public virtual ChildType Type { get; set; }

    public virtual bool Flag1 { get; set; }
    public virtual bool Flag2 { get; set; }

    public virtual char[] Data { get; set; }

    public Child()
    {
        Data = new char[1000];
    }
}

public class Parent
{
    public virtual int Id { get; set; }

    ICollection<Child> Childs { get; set; }
}

и каждый раз, когда мне нужно сделать

        Child usedChild;
        if (index < 1000)
        {
            usedChild = parent.Childs.First(x => x.Type == ChildType.Part1);
        }
        else
        {
            usedChild = parent.Childs.First(x => x.Type == ChildType.Part2);
            index -= 1000;
        }
        usedChild.Data[index] = value;

, я хотел бы иметь

public class Child
{
    public virtual int Id { get; set; }

    public virtual Parent Parent { get; set; }

    public virtual bool Flag1 { get; set; }
    public virtual bool Flag2 { get; set; }

    public virtual char[] Data { get; set; }

    public Child()
    {
        Data = new char[2000];
    }
}

это возможно сделать как-нибудь?Класс-модель и отображение свободны, исправлена ​​дБ-схема

Обновление: табличная структура

Table Parents
(
  parent_id SERIAL NOT NULL,
  primary key(id),
)

Table Childs
(
    Id SERIAL NOT NULL,

    childs_parentid INT,
    childs_rowtype INT,  // 0, 1

    childs_Flag1 INT,  // 0, 1
    childs_Flag2 INT,  // 0, 1

    childs_data CHARACTER VARYING(1000)

    PRIMARY KEY (Id)
)

каждая родительская строка всегда имеет ровно 2 дочерних строки, одна childs_rowtype = 0 одна childs_rowtype = 1 столбец idникогда не используется, и все столбцы, кроме childs_data, одинаковы для 2 дочерних строк.

...