Компонент доступа к БД/ Класс объекта сущности

Класс объекта сущности

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

     В базе данных MSSQL на колонку с типом «timestamp», в которой хранятся версии записей не нужно создавать поле в классе сущности.

     Класс объекта сущности создается по шаблону:

//редактировать
//заменить Entity на наименование вашего класса

public class Entity : Base

        //не редактировать
        //описание статичных полей класса

        public static string TableName;
        public static string ObjectName;
        public static bool PrimaryKeyAutoIncrement;
        public static string[] TableColumnsName;
        public static string[] ArrayObjectColumns;
        public static string[] TableColumnsType;
        public static string[] ArrayObjectTypesColumns;

        //редактировать
        //заменить типы на ваши классы EntityFields и EntityPK

        public static EntityFields Columns;
        public static EntityPK PrimaryKeys;

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

        public static string UsedColumn4Linq = ColumnNameForLinq;

        //редактировать
        //подставить наименование колонки с типом «timestamp».
        //если поле с типом «timestamp» отстутствует,
        //заполняется пустой строкой.

        public static string VersionTableColumn = ColumnTypeTimeStamp;

        //Описание полей сущности.
        //редактировать
        //подставить наименование полей вашего объекта-сущности
        //использовать nullable типы
        //обязательно учесть замечания, сделанные выше

        public EntityField1;
        …;
        public EntityFieldN;


        //Статичный конструктор

        //редактировать
        //заменить Entity на наименование вашего класса

        static Entity()
        {

        //редактировать
        //подставить наименования таблицы и класа сущности

        TableName = NameOftable;
        ObjectName = Entity;

        //редактировать
        //если поле первичного ключа с автоинкрементом, то значение поля
        //PrimaryKeyAutoIncrement - true

        PrimaryKeyAutoIncrement = true or false;

        //редактировать
        //создайте массив наименований колонок таблицы базы данных
        //колонки, соответствующие ссылочным полям продублировать
        
        ArrayObjectColumns =new string[N+1];
        ArrayObjectColumns[0] = ObjectColumns0;
        ...
        ArrayObjectColumns[N] = ObjectColumnsN;
        
        //редактировать
        //создайте массив наименований типов колонок таблицы базы данных
        //типы указываются как в базе данных
        //колонки, соответствующие ссылочным полям продублировать
        
        TableColumnsType =new string[N+1];
        TableColumnsType[0] = TableColumnsType0;
        ...
        TableColumnsType[N] = TableColumnsTypeN;
        
        //редактировать
        //создайте массив наименований полей объекта сущности
        
        ArrayObjectColumns =new string[N+1];
        ArrayObjectColumns [0] = ObjectColumns0;
        ...
        ArrayObjectColumns [N] = ObjectColumnsN;
        
        //редактировать
        //создайте массив наименований типов полей объекта сущности
        //для удобства задания простых типов используйте класс Types
        //для полей, соответствующих простым типам
        //если тип поля – ссылка на другую сущность, то надо указать
        //наименование класса этой сущности

        ArrayObjectTypesColumns = new string[N+1];
        ArrayObjectTypesColumns[0] = ;
        ...
        ArrayObjectTypesColumns[N] = ;
        
        //редактировать
        //подставьте наименование вашего типа EntityFields
        Columns = new EntityFields();
        //не редактировать
        Base.Init(ObjectName, ArrayObjectColumns, Columns);
        
        //редактировать
        //подставьте наименование вашего класса EntityPK
        PrimaryKeys = new EntityPK();
        
        }
        
}//Entity;