2010-08-27 101 views
1

我创建了一个专注于C#3.5的控制台应用程序,并添加了对System.Web,System.Configuration和Subsonic.Core的引用。也有配置文件在Visual Studio 2010中添加Subsonic 3.0.0.4

<?xml version="1.0"?> 
<configuration> 
    <configSections> 
    </configSections> 
    <connectionStrings> 
     <add name="UpdateCotswolds.Properties.Settings.Live_IntegraConnectionString" connectionString="Data Source=POSERVER;Initial Catalog=Live_Integra;Integrated Security=True" providerName="System.Data.SqlClient"/> 
    </connectionStrings> 
<startup><supportedRuntime version="v2.0.50727"/></startup></configuration> 

那么我已经编辑Settings.ttinclude

const string Namespace = "Integra.Data"; 
    const string ConnectionStringName = "UpdateCotswolds.Properties.Settings.Live_IntegraConnectionString"; 

    //This is the name of your database and is used in naming 
    //the repository. By default we set it to the connection string name 
    const string DatabaseName = "Live_Integra"; 

而在TT文件拖动。

当他们跑,我发现了错误...

Error 2 Running transformation: System.InvalidOperationException: Sequence contains more than one matching element 
    at System.Linq.Enumerable.SingleOrDefault[TSource](IEnumerable`1 source, Func`2 predicate) 
    at Microsoft.VisualStudio.TextTemplating47D0892A160210D689C6B90986A9AE0D.GeneratedTextTransformation.LoadTables() in c:\Programming\UpdateCotswolds\UpdateCotswolds\SQLServer.ttinclude:line 134 
    at Microsoft.VisualStudio.TextTemplating47D0892A160210D689C6B90986A9AE0D.GeneratedTextTransformation.TransformText() in c:\Programming\UpdateCotswolds\UpdateCotswolds\ActiveRecord.tt:line 23 
    at Microsoft.VisualStudio.TextTemplating.TransformationRunner.RunTransformation(TemplateProcessingSession session, String source, ITextTemplatingEngineHost host, String& result) 

这是有问题的行...

var pkColumn=tbl.Columns.SingleOrDefault(x=>x.Name.ToLower().Trim()==tbl.PrimaryKey.ToLower().Trim()); 

我猜我正在做一个愚蠢的错误并希望有人可以设置我直...提前

谢谢...

回答

2

看来,某个表公顷多于一个主键?你可以发布你的模式吗? 或者,也许你的PK和FK的名字完全相同,SS会变得困惑。也许你可以玩弄字符串[] ExcludeTables = new string [] {};属性在“Settings.ttinclude”下找到,直到它工作并为该表提供模式。

+0

这是一个很大的模式,我们不拥有它...有没有一种方法来调试tt例程? – 2010-08-31 18:27:11

+0

显然有http://msdn.microsoft.com/en-us/library/bb126338.aspx#Stepping – 2010-09-01 12:43:51

+0

这不容易:) - 希望现在你已经发现了问题? – DaveHogan 2010-09-01 14:45:48