2009-07-10 100 views
0

我有這種XML用於Oracle中的表結構(PL/SQL開發人員的導出選項)。如何在C#中生成代碼以獲取實體類?爲Oracle表生成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> 

謝謝!

+4

代碼做什麼? – Calanus 2009-07-10 12:49:12

回答

0

查看xsd.exe - 此工具允許您從示例xml文檔(您的導出表單Oracle)創建xsd模式,並根據給定的xsd模式創建.net類。

既然您的示例代碼是可見的,那麼顯然您需要先轉換xml,然後才能將它用於xsd.exe。

如果您正在尋找甲骨文的支持.NET的EntityFramework的你需要使用一個特定的Oracle提供。一個例子是DataDirect。對於架構生成

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

所得模式文檔


樣品XSLT可以被用作用於XSD.EXE的輸入。