Сгенерировать код C # для таблицы Oracle - PullRequest
0 голосов
/ 10 июля 2009

У меня есть этот XML для структуры таблицы в Oracle (опция экспорта в PL / SQL Developer). Как я могу сгенерировать код в C # для получения класса сущности?

<?xml version="1.0" encoding="utf-8"?>
<ROWDATA>
  <ROW>
    <Name>ID_TRANSACCION</Name>
    <Type>NUMBER(12)</Type>
    <Nullable></Nullable>
    <Default></Default>
    <Comments>Identificador unico de la transacci&#243;n.</Comments>
  </ROW>
  <ROW>
    <Name>ID_RECIBO</Name>
    <Type>NUMBER(12)</Type>
    <Nullable></Nullable>
    <Default></Default>
    <Comments>Identificador unico del recibo.</Comments>
  </ROW>
  <ROW>
    <Name>IMPORTE_COBRAR</Name>
    <Type>NUMBER(10,2)</Type>
    <Nullable>Y</Nullable>
    <Default></Default>
    <Comments>Importe a cobrar</Comments>
  </ROW>
</ROWDATA>

Спасибо! * * 1004

1 Ответ

0 голосов
/ 07 февраля 2010

Просмотр xsd.exe - этот инструмент позволяет создавать схему xsd из образца XML-документа (форма экспорта Oracle) и создавать класс .net из заданной схемы xsd.

Теперь, когда ваш пример кода видим, ясно, что вам нужно преобразовать xml, прежде чем вы сможете использовать его в связи с xsd.exe.

Если вы ищете поддержку оракула .NET EntityFramework , вам нужно использовать определенного поставщика Oracle . Одним из примеров будет DataDirect .


образец xslt для генерации схемы

<?xml version="1.0" encoding="utf-8" ?>
<xsl:stylesheet version="1.0" 
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
  xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <xsl:output method="xml" omit-xml-declaration="no" indent="yes"/>

    <xsl:template match="/">
        <xsl:element name="xsd:schema">
            <xsl:attribute name="attributeFormDefault">
                qualified
            </xsl:attribute>
            <xsl:attribute name="elementFormDefault">
                qualified
            </xsl:attribute>
            <xsl:apply-templates />
        </xsl:element>
    </xsl:template>

    <xsl:template match="ROWDATA">
        <xsl:element name="xsd:element">
            <xsl:attribute name="name">
                <xsl:value-of select="local-name()"/>
            </xsl:attribute>
            <xsl:element name="xsd:complexType">
                <xsl:element name="xsd:sequence">
                    <xsl:apply-templates />
                </xsl:element>
            </xsl:element>
        </xsl:element>
    </xsl:template>

    <xsl:template match="ROW">
        <xsl:element name="xsd:element">
            <xsl:attribute name="name">
                <xsl:value-of select="./Name"/>
            </xsl:attribute>
            <xsl:attribute name="nillable">
                <xsl:value-of select="contains(./Nullable, 'Y')"/>
            </xsl:attribute>
            <xsl:if test="./Default != ''">
                <xsl:attribute name="default">
                    <xsl:value-of select="./Default"/>
                </xsl:attribute>
            </xsl:if>
            <xsl:element name="xsd:annotation">
                <xsl:element name="xsd:documentation">
                    <xsl:value-of select="./Comments"/>
                </xsl:element>
            </xsl:element>
            <xsl:element name="xsd:simpleType">
                <xsl:element name="xsd:restriction">
                    <xsl:attribute name="base">xsd:decimal</xsl:attribute>
                    <!-- elaborate data type here -->
                </xsl:element>
            </xsl:element>
        </xsl:element>
    </xsl:template>
</xsl:stylesheet>

Полученный документ схемы можно использовать в качестве входных данных для xsd.exe.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...