# HG changeset patch # User cin # Date 1519567953 -10800 # Node ID 035de8b7b18e503d79c90c07cb1e4f83fed6e5b4 # Parent 7f803979305f7bed4dade6cf0b6e6c3658a8c738 Temporary commit, refactoring, added readme diff -r 7f803979305f -r 035de8b7b18e data/model.xml --- a/data/model.xml Thu Feb 22 19:14:00 2018 +0300 +++ b/data/model.xml Sun Feb 25 17:12:33 2018 +0300 @@ -97,6 +97,9 @@ + + + @@ -124,5 +127,38 @@ Район проведение поисково-спасательной операции + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff -r 7f803979305f -r 035de8b7b18e readme.md --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/readme.md Sun Feb 25 17:12:33 2018 +0300 @@ -0,0 +1,160 @@ + +# SINOPSYS + +```xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +``` + +# DESCRIPTION + +Описание модели включает в себя описание наборов сущностей, каждый набор +называется пакетом. + +В пакете содержатся описания сущностей, а также объявления внешних типов, +которые используются при описании сущностей. + +Для уменьшения количества дублируемого кода, а также для упрощения читаемости +и упрощения сопровождения существует возможность импортирования уже объявленных +пакетов. В процессе сборки происходит предварительная обработка, которая +использует все директивы `import` для составления общего модуля, состоящего +из нескольких пакетов, при этом пакет с которого был начат процесс сборки +называется первичным и после окончания предварительной обработки для него будет +выполнена сборка. + +Каждая сущность модели состоит из нескольких типов членов, это +* Свойства - используются для хранения состояния сущности, аналогичны столбцам в таблице +* Ключи - информация для идентификации записей, каждая запись должна иметь по крайней мере первичный ключ. +* Отношения - информация о связях между сущностями + +## Properties + +## PrimaryKey + +Внешний ключ представляет собой набор уникальных данных, позволяющий однозначно +идентифицировать запись, при этом внешний ключ может состоять как из одного +поля (простые), так и из нескольких (составные) + +Простые первичные ключи + +```xml + +``` + +Составные первичные ключи + +```xml + + + + + + + + +``` +При описании составных ключей перечисляется набор членов сущности, которые +будут образовывать уникальный набор данных для первичного ключа, следует +отметить, что не все отношения храняться в самой сущности, например, +`hasMany` может хранится не в записях самой сущности, а в записях связанной +сущности, такие отношения нельзя включать в первичный ключ. +Отношение `hasA`, напротив, как парвило хранится в свойствах самой сущности +и включение его в первичный ключ означает автоматическое включение всех +свойств. + +## Relations + +### hasA + +`hasA` это отношение, при котором текущей сущности может +соответсвовать одна связанная сущность. При реализации +данного отношение может быть указано свойство, используемое +для хранения ссылки при помощи дочернего элемента `thisKey` + +`thisKey` указывает способ реализации отношения, при котором +в текущей сущности хранится информация для осуществления связи. + +По-умолчанию для связи используются первичные ключи, что +позволяет автоматически определять набор и типы необходимых +свойств для хранения ссылки. + +```xml + + + +``` + +В случях когда первичный ключ является сложным можно указать +префикс или явно перечислить свойства в которых будет хранится +связь + +```xml + + + + + + + + +``` + +### hasMany + +Отношение при котором с текущей записью связано произвольное +количество записей другой сущности. + +Как правило это отношение является комплиментарным к `hasA` с другой стороны. + +```xml + + + +``` + +`otherKey` указывает имя члена в связанной сущности, который хранит информацию +о связи, это может быть оношение, свойство или ключ. \ No newline at end of file diff -r 7f803979305f -r 035de8b7b18e xslt/generator.csharp.xsl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/xslt/generator.csharp.xsl Sun Feb 25 17:12:33 2018 +0300 @@ -0,0 +1,379 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + return + + .Key; + + + + .Key = value; + + + + + + return + + .Instance; + + + + .Instance = value; + + + + + + + + + + + + + + + m_lazy + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff -r 7f803979305f -r 035de8b7b18e xslt/model.xsl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/xslt/model.xsl Sun Feb 25 17:12:33 2018 +0300 @@ -0,0 +1,312 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -r 7f803979305f -r 035de8b7b18e xslt/model.xslt --- a/xslt/model.xslt Thu Feb 22 19:14:00 2018 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,659 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - return - - .Key; - - - - .Key = value; - - - - - - return - - .Instance; - - - - .Instance = value; - - - - - - - - - - - - - - - m_lazy - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff -r 7f803979305f -r 035de8b7b18e xslt/preprocess.xsl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/xslt/preprocess.xsl Sun Feb 25 17:12:33 2018 +0300 @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff -r 7f803979305f -r 035de8b7b18e xslt/preprocess.xslt --- a/xslt/preprocess.xslt Thu Feb 22 19:14:00 2018 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - \ No newline at end of file