Codesmith - 在请求的名称或序号对应的集合中找不到项目

时间:2016-10-30 22:33:50

标签: codesmith

尝试在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)    %>

1 个答案:

答案 0 :(得分:1)

根据代码匠,您应该始终使用SQLSchemaProvider访问sql server数据库。

我试图这样做是因为我有一个间歇性问题,其中SQL数据源失败并且除以0错误。

Adding a datasource to Codesmith