SQL-MAP是PDF.NET(PWMIS数据开发框架)具有特色之开发技术,它好拿SQL语句映射成DAL代码,而且会不辱使命无需IDAL和DalFactory自动切换数据库及另外一个数据库系统,比如SqlServer切换到Oralcle,有关SQL-MAP的正统请看这里,为什么而运用这种技术,请看“抽象SQL(参数化)查询
”。
从上面的正规化看到,要手写一个SQL-MAP文件或者比较复杂,虽然框架提供了SQL-MAP配置文件管理器,但它们至关重要适用于新手用,用起来效率不是异常高,这个时刻就需要发出一个足只能提示XML文件编制的事物了,这便是SqlMap.xsd,下面贴出拖欠公文之流行完整内容:
SqlMap.XSD
<?xml version=”1.0″ encoding=”utf-8″ ?>
<xs:schema attributeFormDefault=”unqualified” elementFormDefault=”qualified” xmlns:xs=”http://www.w3.org/2001/XMLSchema">
<xs:simpleType name=”enumCmdType” >
<xs:restriction base =”xs:string”>
<xs:enumeration value =”Text”></xs:enumeration>
<xs:enumeration value =”StoredProcedure”></xs:enumeration>
<xs:enumeration value =”Table”></xs:enumeration>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name=”enumResultClass” >
<xs:restriction base =”xs:string”>
<xs:enumeration value =”ValueType”></xs:enumeration>
<xs:enumeration value =”DataSet”></xs:enumeration>
<xs:enumeration value =”EntityObject”></xs:enumeration>
<xs:enumeration value =”EntityList”></xs:enumeration>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name=”enumScriptType” >
<xs:restriction base =”xs:string”>
<xs:enumeration value =”Access”></xs:enumeration>
<xs:enumeration value =”SqlServer”></xs:enumeration>
<xs:enumeration value =”SqlServerCe”></xs:enumeration>
<xs:enumeration value =”Oracle”></xs:enumeration>
<xs:enumeration value =”DB2″></xs:enumeration>
<xs:enumeration value =”Sysbase”></xs:enumeration>
<xs:enumeration value =”MySql”></xs:enumeration>
<xs:enumeration value =”SQLite”></xs:enumeration>
<xs:enumeration value =”PostgreSQL”></xs:enumeration>
<xs:enumeration value =”UNKNOWN”></xs:enumeration>
</xs:restriction>
</xs:simpleType>
<xs:element name=”SqlMap”>
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs=”unbounded” name=”Script”>
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs=”unbounded” name=”CommandClass”>
<xs:complexType>
<xs:sequence>
<xs:choice maxOccurs=”unbounded”>
<xs:element maxOccurs=”unbounded” name=”Select”>
<xs:complexType>
<xs:simpleContent>
<xs:extension base=”xs:string”>
<xs:attribute name=”CommandName” type=”xs:string” use=”required” />
<xs:attribute name=”CommandType” type=”enumCmdType” use=”required” />
<xs:attribute name=”Method” type=”xs:string” use=”required” />
<xs:attribute name=”Description” type=”xs:string” use=”required” />
<xs:attribute name=”ResultClass” type=”enumResultClass” use=”optional” default=”DataSet”/>
<xs:attribute name=”ResultMap” type=”xs:string” use=”optional” />
<xs:attribute name=”SqlPage” type=”xs:string” use=”optional” default=”False”/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name=”Insert”>
<xs:complexType>
<xs:simpleContent>
<xs:extension base=”xs:string”>
<xs:attribute name=”CommandName” type=”xs:string” use=”required” />
<xs:attribute name=”CommandType” type=”enumCmdType” use=”required” />
<xs:attribute name=”Method” type=”xs:string” use=”required” />
<xs:attribute name=”Description” type=”xs:string” use=”required” />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name=”Update”>
<xs:complexType>
<xs:simpleContent>
<xs:extension base=”xs:string”>
<xs:attribute name=”CommandName” type=”xs:string” use=”required” />
<xs:attribute name=”CommandType” type=”enumCmdType” use=”required” />
<xs:attribute name=”Method” type=”xs:string” use=”required” />
<xs:attribute name=”Description” type=”xs:string” use=”required” />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name=”Delete”>
<xs:complexType>
<xs:simpleContent>
<xs:extension base=”xs:string”>
<xs:attribute name=”CommandName” type=”xs:string” use=”required” />
<xs:attribute name=”CommandType” type=”enumCmdType” use=”required” />
<xs:attribute name=”Method” type=”xs:string” use=”required” />
<xs:attribute name=”Description” type=”xs:string” use=”required” />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:sequence>
<xs:attribute name=”Name” type=”xs:string” use=”required” />
<xs:attribute name=”Class” type=”xs:string” use=”required” />
<xs:attribute name=”Interface” type=”xs:string” use=”optional” />
<xs:attribute name=”Description” type=”xs:string” use=”required” />
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name=”Type” type=”enumScriptType” use=”required” />
<xs:attribute name=”Version” type=”xs:string” use=”optional” />
<xs:attribute name=”ConnectionString” type=”xs:string” use=”optional” />
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name=”EmbedAssemblySource” type=”xs:string” use=”optional” />
</xs:complexType>
</xs:element>
</xs:schema>
顾文件被的simpleType
,它表示定义一个自定义的简练类型,在XSD文件的节点受到使 type
属性来引用它即可。
正文中定义了三独由定义类型enumCmdType,enumResultClass,enumScriptType
,而且是枚举类型(使用xs:enumeration 定义),这样于XML文件中就可以起“下拉选择”的唤起意义了。
以节点性被,use=”required”
表示要的性能,use=”optional” 表示只是挑选的性。
整个XSD文件的修而留意的为即如此多,编写起来要比较简单的。
产生了此XSD文件,在确立之Sql-Map配置文件的<sqlmap>
标签中,加入者XSD的采用声明,就能够看到智能提醒的成效了。
<SqlMap
xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”
xsi:noNamespaceSchemaLocation=”SqlMap.xsd”>
<!– 于底下敲入尖括号,就可知产出时节点区域外的应当编写的情节,来试吧 –>
</SqlMap>
发出了这SqlMap.config文件,就可知以代码生成器自动生成DAL代码了。
PDF.NET代码生成器下载地址(包含框架下的总体示例),下载后要圈中间的认证。
苟程序的数据库无法开拓,请看连接字符串是否科学,或者将它们附加到SQLSERVER实例上:
connectionString=”Data
Source=.\SQLEXPRESS;AttachDbFilename=~\App_Data\PDFTest.mdf;Integrated
Security=True;Connect Timeout=30;User Instance=True”
下载好后,将本文的SqlMap.xsd内容复制下来别存为文件即可,注意文件目录,如果该XSD文件与SqlMap.config文件不在与一个,需要改下面的路径:
xsi:noNamespaceSchemaLocation=”SqlMap.xsd”
至于PDF.NET框架的详尽内容,请看本身的博客相关内容要查看官网:http://www.pwmis.com/sqlmap