Como mapear tipos de dados sql não predefinidas para xml
Video: XML no SQL Server
Conteúdo
No padrão SQL, os tipos de dados não incluem predefinidos domínio, UDT distinta, linha, série, e multiconjunto. Você pode mapear cada uma delas com dados formatados em XML, usando o código XML apropriado. Aqui estão alguns exemplos de como mapear esses tipos.
Video: WCF + VS 2010 + SQL XML Procedures - 07
Domínio
Para mapear um domínio de SQL para XML, você deve primeiro ter um domínio. Para este exemplo, criar um usando um CREATE DOMAIN declaração:
CREATE DOMAIN WestCoast AS CHAR CHECK (2) (Estado IN ( `CA`, `OR`, `WA`, `AK`)) -
Agora, crie uma tabela que usa esse domínio:
CRIAR WestRegion TABLE (ClientName Character (20) NOT NULL, StateWestCoast NOT NULL) -
Aqui está o esquema XML para mapear o domínio em XML:
Name = `DOMAIN.Sales.WestCoast`gt;
Quando esse mapeamento é aplicado, que resulta em um documento XML que contém algo como o seguinte:
...
...AK ...
UDT distinta
Com um UDT distinta, você pode fazer o mesmo que o que você pode fazer com um domínio, mas com digitação mais forte. Veja como:
CREATE TYPE WestCoast AS Character (2) FINAL -
O esquema XML para mapear este tipo de XML é a seguinte:
Name = `UDT.Sales.WestCoast`gt;
Isto cria um elemento que é o mesmo que o que foi criado para o domínio anterior.
Linha
o LINHA Tipo permite que você empinar vários itens, ou mesmo o valor de uma linha inteira de informações, em um único campo de uma linha da tabela. Você pode criar um LINHA tipo como parte da definição de tabela, da seguinte forma:
CREATE TABLE contactinfo (Personagem Nome (30) ROW Telefone (Início CHAR (13), Trabalho CHAR (13))) -
Agora você pode mapear esse tipo de XML com o seguinte esquema:
Este mapeamento pode gerar o seguinte XML para uma coluna:
(888)555-1111 (888)555-1212
ordem
Você pode colocar mais de um elemento em um único campo, utilizando um ordem ao invés do LINHA tipo. Por exemplo, no contactinfo mesa, declarar telefone como uma matriz e, em seguida, gerar o XML Schema que irá mapear a matriz para XML.
CREATE TABLE contactinfo (Personagem Nome (30), caráter Telefone (13) ARRAY [4]) -
Agora você pode mapear esse tipo de XML com o seguinte esquema:
Este esquema geraria algo como isto:
Video: Programação C# 02 | Tipos de Dados
(888)555-1111 xsi: nil = `true` / gt; (888)555-3434
O elemento da matriz que contém xsi: nil = ‘true’ reflete o fato de que o segundo número de telefone na tabela de origem contém um valor nulo.
Multiset
Os números de telefone no exemplo anterior poderia muito bem ser armazenado em um multiconjunto como em uma matriz. Para mapear uma multiset, usar algo semelhante ao seguinte:
CREATE TABLE contactinfo (Personagem Nome (30), caráter Telefone (13) MULTISET) -
Agora você pode mapear esse tipo de XML com o seguinte esquema:
Este esquema geraria algo como isto:
(888)555-1111 xsi: nil = `true` / gt; (888)555-3434