2016-10-30 4 views
0

Der Versuch, eine Ausgabedatei im Codesmith Generator (csg) zu generieren.Codesmith - Artikel kann nicht in der Sammlung gefunden werden, die dem angeforderten Namen oder der Ordnungszahl entspricht

Ich verwende ADOXSchemaProvider, um auf eine SQL-Datenbank zuzugreifen. Erhalte diesen Fehler in einer trivialen Tabelle (1 varchar (50) -Feld)

Die Syntax der Nachricht scheint darauf hinzuweisen, dass das Problem in CSG wurzelt, das versucht, auf Eigenschaften in einer Liste/Sammlung zuzugreifen. Einige der anderen SO-Fragen (die CSG nicht kennen) haben vorgeschlagen, reservierte Wörter zu verwenden, könnte das Problem sein, also benutze ich ein Durcheinander von Buchstaben. Nicht das Problem.

Ich habe deinstalliert/neu installiert.

Zieltabellenskript ist diese

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

) ON [PRIMARY] 

GO 

Fehler Call-Stack ist diese

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() 

und Linie 113 von meiner Vorlage wird die erste Zeile des Codes Absatz

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

Auch Ich habe untersucht, ob möglicherweise der ADOX-Provider 1 als Basis für den Spaltenindex verwendet.

Problem bleibt bestehen, wenn ich eine dieser beiden Methoden tue.

+0

Hilft dies bei der Beantwortung Ihrer Frage? http://StackOverflow.com/Questions/24620324/item-cannot-be-found-in-the-collection-entsprechen-den-angeforderten-Namens-oder- – Rob

+0

@Rob Ich denke nicht so, aber es ist schwer zu sagen. Ich denke, dass OP ein grundlegendes SP-Problem hatte, soweit ich das beurteilen kann. Ich greife auf die lokale Datenbank als SA zu, also bezweifle ich, dass es ein Sicherheitsproblem ist. Ich kann keine sicherungsfähige Registerkarte für Benutzer-, Anmelde- und Rolleneigenschaften finden. Ich verwende Microsoft SQL Server Business Intelligence (64 Bit) 12.0.4459.0 – greg

Antwort

1

Pro Codesmith sollten Sie immer auf eine SQL Server-Datenbank mit dem SQLSchemaProvider zugreifen.

Ich habe versucht, dies zu tun, weil ich ein intermittierendes Problem habe, wo die SQL-Datenquellen mit einer Division durch 0 Fehler fehlschlagen.

Adding a datasource to Codesmith

+0

Ja, ich bin ein Entwickler bei CodeSmith Tools und ich würde nie etwas anderes als den SqlSchemaProvider verwenden, wenn ich Sql Server verwende. Es ist stark gegen Sql Server getestet ... –

Verwandte Themen