2009-07-10 5 views
0

Ich habe dieses XML für eine Tabellenstruktur in Oracle (Export-Option in PL/SQL-Entwickler). Wie kann ich Code in C# generieren, um Entity-Klasse zu erhalten?Generiere C# -Code für Oracle-Tabelle

<?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> 

Vielen Dank!

+4

Code, um was genau zu tun? – Calanus

+0

Warum die xml/xsl-Tags? – redsquare

+0

Meinst du eine POCO-Klasse der Tabellen? – abhilash

Antwort

0

Schauen Sie sich xsd.exe an - mit diesem Tool können Sie ein xsd-Schema aus einem XML-Beispieldokument (Ihrem Exportformular Oracle) erstellen und eine .NET-Klasse aus einem bestimmten xsd-Schema erstellen.

Jetzt, da Ihr Beispielcode sichtbar ist, ist es klar, dass Sie das XML transformieren müssten, bevor Sie es in Verbindung mit xsd.exe verwenden könnten.

Wenn Sie für Oracle-Unterstützung des .NET EntityFramework suchen Sie einen bestimmten Oracle-Anbieter verwenden müssen. Ein Beispiel wäre DataDirect.


Probe Xslt für Schemagenerierungs

<?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> 

Das resultierende Schema-Dokument kann als Eingang für xsd.exe verwendet werden.