コードメントジェネレータ(csg)で出力ファイルを生成しようとしています。Codesmith - 要求された名前または序数に対応するコレクション内のアイテムが見つかりません
私は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) %>
これはあなたの質問に役立つでしょうか? http://stackoverflow.com/questions/24620324/item-cannot-be-found-in-the-collection-corresponding-to-the-requested-name-or-or-or- – Rob
@Rob私はそうは思いませんが、難しいです教えてください。私はopには基本的なSPの問題があったと思う。 SAとしてローカルデータベースにアクセスしているため、セキュリティ上の問題ではないかと疑いがあります。ユーザー、ログイン、役割のいずれのプロパティでもセキュリティ保護されたタブを見つけることができません。私はMicrosoft SQL Serverビジネスインテリジェンス(64ビット)を使用しています。12.0.4459.0 – greg