首先我們看看換行的代碼 。
<% for (int i = 0; i < SourceTable.Columns.Count; i++) { %>
<%= GetSqlParameterStatement(SourceTable.Columns[i]) %><% if (i < SourceTable.Columns.Count - 1) { %> ,<% } %>
<% } %>
顯示結果:

@OrderID int(4) ,

@CustomerID nchar(5) ,

@EmployeeID int(4) ,

@OrderDate datetime(8) ,

@RequiredDate datetime(8) ,

@ShippedDate datetime(8) ,

@ShipVia int(4) ,

@Freight money(8) ,

@ShipName nvarchar(40) ,

@ShipAddress nvarchar(60) ,

@ShipCity nvarchar(15) ,

@ShipRegion nvarchar(15) ,

@ShipPostalCode nvarchar(10) ,

@ShipCountry nvarchar(15)
我們再來看看如何讓它不換行。
<% for (int i = 0; i < SourceTable.Columns.Count; i++) { %>
<%= GetSqlParameterStatement(SourceTable.Columns[i]) %><% if (i < SourceTable.Columns.Count - 1) { %> ,<% } %><% } %>
顯示結果:

@OrderID int(4) , @CustomerID nchar(5) , @EmployeeID int(4) , @OrderDate datetime(8) , @RequiredDate datetime(8) , @ShippedDate datetime(8) , @ShipVia int(4) , @Freight money(8) , @ShipName nvarchar(40) , @ShipAddress nvarchar(60) , @ShipCity nvarchar(15) , @ShipRegion nvarchar(15) , @ShipPostalCode nvarchar(10) , @ShipCountry nvarchar(15)
發現區別了沒有,就是在模版代碼的最後一個括號,如果是換行寫括號,那麼生成的代碼,括號就換行,如果沒有換行寫括號,那麼生成的代碼就沒有換行。
由此,我們也得出了一個結論,在CodeSmith中,生成的代碼是依據模版代碼的格式的,模版代碼是什麼格式生成出來的代碼就是什麼格式,不需要有那些C#的轉義字符來定義格式。