2015-02-23 26 views
0

如何設置%Dictionary.StorageSQLMapDefinition類的Name屬性? 我有這樣的代碼:Intersystemscaché - sql存儲定義

set storMaps = ##class(%Dictionary.StorageSQLMapDefinition).%New() 
set storMaps.Name = ????? 

而且我不知道如何設置storMaps.Name。名稱prop的數據類型。根據文檔是%Dictionary.SQLIdentifier。但我不知道如何設置這個屬性。我收到一個錯誤:

SQL Map type is invalid

回答

1

您可能會忘記%Dictionary.StorageDefintion。上述

set clsDef=##class(%Dictionary.ClassDefinition).%OpenId("User.Test") 

    set storage=##class(%Dictionary.StorageDefinition).%New() 
    set storage.Name="Test" 
    set storage.Type="%CacheSQLStorage" // this is important 

    set storageMap=##class(%Dictionary.StorageSQLMapDefinition).%New() 
    set storageMap.Name="MasterMap" 
    set storageMap.Global="^global" 
    do storage.SQLMaps.Insert(storageMap) 

    set data=##class(%Dictionary.StorageSQLMapDataDefinition).%New() 
    set data.Name="name" 
    set data.Node=1 
    do storageMap.Data.Insert(data) 

    set data=##class(%Dictionary.StorageSQLMapDataDefinition).%New() 
    set data.Name="type" 
    set data.Node=2 
    do storageMap.Data.Insert(data) 

    set subscript=##class(%Dictionary.StorageSQLMapSubDefinition).%New() 
    set subscript.Name=1 
    set subscript.Expression="""test""" 
    do storageMap.Subscripts.Insert(subscript) 

    set subscript=##class(%Dictionary.StorageSQLMapSubDefinition).%New() 
    set subscript.Name=2 
    set subscript.Expression="{ID}" 
    do storageMap.Subscripts.Insert(subscript) 

    set rowidspec=##class(%Dictionary.StorageSQLMapRowIdSpecDefinition).%New() 
    set rowidspec.Name=1 
    set rowidspec.Expression="{L2}" 
    set rowidspec.Field="ID" 
    do storageMap.RowIdSpecs.Insert(rowidspec) 

    do clsDef.Storages.Insert(storage) 
    set tSC=clsDef.%Save() 

代碼將這樣

<Storage name="Test"> 
<SQLMap name="MasterMap"> 
<Data name="name"> 
<Node>1</Node> 
</Data> 
<Data name="type"> 
<Node>2</Node> 
</Data> 
<Global>^global</Global> 
<RowIdSpec name="1"> 
<Expression>{L2}</Expression> 
<Field>ID</Field> 
</RowIdSpec> 
<Subscript name="1"> 
<Expression>"test"</Expression> 
</Subscript> 
<Subscript name="2"> 
<Expression>{ID}</Expression> 
</Subscript> 
</SQLMap> 
<Type>%CacheSQLStorage</Type> 
</Storage> 
+0

由於創建存儲很多關於例子。我的問題很愚蠢。我不小心嘗試設置storageMap.Data =「data」,然後我有一些更愚蠢的錯誤。非常感謝你,這不是第一次你節省我的時間:) – mrfazolka 2015-02-24 07:44:00

+0

歡迎:) – DAiMor 2015-02-24 07:58:13