Jan 23, 2013 13:46
Таблицы сущностей
Сущности представляют собой записи таблицы. Сущности имеют первичный ключ - ссылку, с помощью которой организовываются реляционные отношения. Помимо полей сущности обладают методами, в том числе статическими, и триггерами. Поддерживают приципы ООП: инкапсуляция, наследование полиморфизм. Сущности могут быть абстрактными, в таком случае они являются только шаблонами (самих таблиц нет) для описания сущностей-наследников. Все сущности наследуются от абстрактной сущност Entity.
Entity содержит поля:
readonly ID - уникальный идентификатор, значение присваивается автоматически
readonly Ref - собственно сама сущность
и методы:
GetType() - возвращает ссылку на метаданные
virtual ToString() - возвращает строковое представление
Абстрактные сущности могут иметь параметры типов, которые обязательно определяются в конкретных наследниках.
Пример (псевдокод):
abstract entity Reference //абстрактный справочник с двумя параметрами - тип кода и тип наименования
where //ограничения на типы
TCodeType: char(20)
TDescriptionType: varchar(100)
{
//поля:
public TCodeType Code; //код
public TDescriptionType Description; //наименование
public bool DeletionMark; //пометка удаления
override string ToString() //переопределяем представление
{
return Description;
}
static thistype FindByCode(TCodeType _code) //статический поиск по коду, слово thistype - поиск по конкретной таблице ("виртуализация статических методов" или "шаблонный параметр на себя")
{
foreach(var c in//поиск
select ef as Ref
from thistype
where code=_code)
{
return c.Ref; //возвращаем ссылку
}
return null //не нашли
}
}
entity Currency: Reference //конкретный справочник, код длины 3, наименование не более 100 символов
{
}