0

Codesmith Generator (csg) で出力ファイルを生成しようとしています。

ADOXSchemaProvider を使用して SQL データベースにアクセスしています。単純なテーブル (1 varchar(50) フィールド) でこのエラーが発生しています

メッセージの構文は、リスト/コレクション内のプロパティにアクセスしようとしている CSG に問題があることを示しているようです。他の SO の質問 (CSG には未対応) のいくつかは、予約語の使用が問題になる可能性があることを示唆しているため、ごちゃまぜの文字を使用しています。問題ではありません。

アンインストール/再インストールしました。

対象テーブルスクリプトはこちら

CREATE TABLE [dbo].[tblWitsEnd](
    --[Id] [int] IDENTITY(1,1) NOT NULL,
    asdf  varchar(255) null

) ON [PRIMARY]

GO

エラーコールスタックはこちら

Error: Item cannot be found in the collection corresponding to the requested name or ordinal.
Stack Trace:
   at ADOX.Properties.get_Item(Object Item)
   at SchemaExplorer.ADOXSchemaProvider.GetTableColumns(String connectionString, TableSchema table)
   at SchemaExplorer.TableSchema.#o4c()
   at SchemaExplorer.TableSchema.get_Columns()
   at _CodeSmith.StartingBlocks30_cst.__RenderMethod1(TextWriter writer, Control control) in G:\csgtemplate.cst:line 113
   at CodeSmith.Engine.DelegateControl.Render(TextWriter writer)
   at CodeSmith.Engine.Control.RenderChildren(TextWriter writer)
   at CodeSmith.Engine.CodeTemplate.Render(TextWriter writer)
   at CodeSmith.Engine.CodeTemplate.RenderToString()
   at CodeSmith.Engine.Remoting.TemplateSession.#9Hb()
   at System.Threading.Tasks.Task`1.InnerInvoke()
   at System.Threading.Tasks.Task.Execute()

私のテンプレートの113行目は、このコード段落の最初の行です

<% for  i = 0 to  SourceTable.Columns.Count - 1  step 1 %>
     <%= GetSetFieldSnippet(SourceTable.Columns(i) ) %>
<% next %>

また、ADOX プロバイダーが列インデックスのベースとして 1 を使用している可能性があるかどうかも調査しました。

これらのいずれかを実行しても問題は解決しません。

<%=  SourceTable.Columns.Clear    %>
<%=  SourceTable.Columns.Item(0)    %>
4

1 に答える 1