# ---------------------------------------------------------------------------
###
# ---------------------------------------------------------------------------
param($Object,$ItemTag="ITEM", $ChildItems="*", $Attributes=$Null)
$header = @"
"@
$footer = @"
"@
#######################
function Get-SqlType
{
param($definition)
$type = ([regex]'System\.([^ ]*) ').matches($definition) | %{$_.Groups[1].Value}
switch ($type)
{
"Int64" {"bigint"}
"Byte[]" {"varbinary"}
"Boolean" {"bit"}
"Decimal" {"decimal"}
"DateTime" {"datetime"}
"Double" {"float"}
"Guid" {"uniqueidentifier"}
"Int32" {"int"}
"Single" {"real"}
"Int16" {"smallint"}
"Byte" {"tinyint"}
default {"varchar(255)"}
}
}# Get-SqlType
#######################
$xsd = $header
$xsd += "`n `n"
$xsd += " `n"
$xsd += " `n"
$seen = @()
foreach ($prop in $Object | Get-Member -Type *Property $childItems)
{
$Name = $prop.Name
if (!($seen -contains $Name))
{
$seen += $Name
$xsd += " `n"
}
}
$xsd += " `n"
if ($Attributes)
{
foreach ($attr in $Object | Get-Member -type *Property $attributes)
{
$Name = $attr.Name
if (!($seen -contains $Name))
{
$seen += $Name
$xsd += " `n"
}
}
}
$xsd += " `n"
$xsd += " `n"
$xsd += $footer
$xsd