2016-10-30 66 views
0

コードメントジェネレータ(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) %> 
+0

これはあなたの質問に役立つでしょうか? http://stackoverflow.com/questions/24620324/item-cannot-be-found-in-the-collection-corresponding-to-the-requested-name-or-or-or- – Rob

+0

@Rob私はそうは思いませんが、難しいです教えてください。私はopには基本的なSPの問題があったと思う。 SAとしてローカルデータベースにアクセスしているため、セキュリティ上の問題ではないかと疑いがあります。ユーザー、ログイン、役割のいずれのプロパティでもセキュリティ保護されたタブを見つけることができません。私はMicrosoft SQL Serverビジネスインテリジェンス(64ビット)を使用しています。12.0.4459.0 – greg

答えて

1

コードごとに、常にSQLSchemaProviderを使用してSQL Serverデータベースにアクセスする必要があります。

私はSQLデータソースが0エラーで除算に失敗する断続的な問題があるため、これを実行しようとしていました。

Adding a datasource to Codesmith

+0

はい、私はCodeSmith Toolsの開発者です.Sql Serverを使用する場合は、SqlSchemaProvider以外は使用しません。これは、SQL Serverに対して重くテストされています... –

関連する問題