Как я могу добиться этого простого вывода в MyGeneration?
Если у меня есть n таблиц в моей схеме Db и если я хочу просмотреть все таблицы в моей Db и создать файл .cs для каждой таблицы, которая будет содержать сгенерированный ниже код:
public class TableName
{
private _tableName = "<%TableName%>" //This string will be generated by MyGeneration
// per each table
public string TableName {
get{ return _tableName; }
}
Как должен быть написан мой шаблон?
1 ответ
Я не работал с MyGeneration раньше, но вы можете сделать это легко с помощью CodeGenerator. Шаблон будет выглядеть примерно так:
Шаблон XSL
<xsl:stylesheet version="1.0" xmlns:P="http://Schemas.QuantumConceptsCorp.com/CodeGenerator/Project.xsd" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions" xmlns:xdt="http://www.w3.org/2005/xpath-datatypes">
<xsl:output method="text" version="1.0" encoding="UTF-8" indent="no"/>
<xsl:template match="P:Project">
<xsl:text>
namespace </xsl:text>
<xsl:value-of select="@RootNamespace"/>
<xsl:text>.DataObjects
{</xsl:text>
<xsl:for-each select="P:TableMappings/P:TableMapping[@Exclude='false']">
<xsl:text>
public partial class </xsl:text>
<xsl:value-of select="@ClassName"/>
<xsl:text>
{
private string TableName { get { return "</xsl:text>
<xsl:value-of select="@ClassName"/>
<xsl:text>"; } }
}
</xsl:text>
</xsl:template>
</xsl:stylesheet>
Результат
namespace [Your.Namespace]
{
public class [TableName1]
{
public string TableName { get { return "[TableName1]"; } }
}
//...other tables
public class [TableNameN]
{
public string TableName { get { return "[TableNameN]"; } }
}
}
Редактировать: Вы также можете сделать так, чтобы он выводил одну таблицу на файл - похоже, это то, что вам нужно.