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