1
<%--
2
Name:
3
Author: RS_WUBIYU
4
Description:
5
--%>
6
<%@ CodeTemplate Language="C#" ResponseEncoding="UTF-8" TargetLanguage="Text" Src="Helper.cs" Inherits="Helper" Debug="False" Description="Template description here." %>
7
<%@ Property Name="DataBase" Type="SchemaExplorer.DatabaseSchema" Category="2.数据库对象"
8
Description="数据库对象" %>
9
<%@ Property Name="AutoExecuteScript" Type="System.Boolean" Default="False" Category="1. 是否自动执行生成后的脚本"
10
Description="是否自动执行生成后的脚本" %>
11
<%@ Assembly Name="System.Data" %>
12
<%@ Assembly Name="SchemaExplorer" %>
13
<%@ Assembly Name="CodeSmith.BaseTemplates" %>
14
15
<%@ Import Namespace="System.Data" %>
16
<%@ Import Namespace="SchemaExplorer" %>
17
<%@ Import Namespace="CodeSmith.BaseTemplates" %>
18
<%
19
foreach(TableSchema Table in DataBase.Database.Tables)
20

{
21
%>
22
SET ANSI_NULLS ON
23
GO
24
SET QUOTED_IDENTIFIER ON
25
GO
26
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[<%= GetTableName(Table)%>_Create]') AND type in (N'P', N'PC'))
27
BEGIN
28
DROP PROCEDURE [dbo].[<%= GetTableName(Table)%>_Create]
29
END
30
GO
31
-- =============================================
32
-- Create date: <%= System.DateTime.Now.ToString()%>
33
-- Description: 创建<%= GetClassName(Table)%>
34
-- =============================================
35
CREATE PROCEDURE [dbo].[<%= GetTableName(Table)%>_Create]
36
37
<%
38
foreach(ColumnSchema column in Table.Columns)
39

{
40
%>
41
@<%= column.Name%> <%= GetTypeAndSize(column)%> <%= GetMorePrimaryOutput(Table,column)%><%=GetComma(column,Table.Columns)%>
42
<%
43
}
44
%>
45
46
AS
47
48
INSERT INTO [<%= GetTableName(Table)%>](
49
<%
50
foreach(ColumnSchema column in Table.Columns)
51

{%> <%= GetInsertParam(Table,column)%><%= GetMorePrimaryComma(Table,column,Table.Columns)%>
52
<%}%>
53
)
54
VALUES(
55
<%
56
foreach(ColumnSchema column in Table.Columns)
57

{
58
%> <%= GetInsertInOrOutParam(Table,column)%><%= GetMorePrimaryComma(Table,column,Table.Columns)%>
59
<%
60
}%> )
61
<%
62
if(!IsMorePrimary(Table))
63
{%>
64
set @<%= Table.PrimaryKey.MemberColumns[0].Name%> = SCOPE_IDENTITY()
65
<%
66
}
67
%>
68
GO
69
SET ANSI_NULLS ON
70
GO
71
SET QUOTED_IDENTIFIER ON
72
GO
73
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[<%= GetTableName(Table)%>_Update]') AND type in (N'P', N'PC'))
74
BEGIN
75
DROP PROCEDURE [dbo].[<%= GetTableName(Table)%>_Update]
76
END
77
GO
78
-- =============================================
79
-- Create date: <%= System.DateTime.Now.ToString()%>
80
-- Description: 更新<%= GetTableName(Table)%>
81
-- =============================================
82
CREATE PROCEDURE [dbo].[<%= GetTableName(Table)%>_Update]
83
<%
84
foreach(ColumnSchema column in Table.Columns)
85

{
86
%>
87
@<%= column.Name%> <%= GetTypeAndSize(column)%><%=GetComma(column,Table.Columns)%>
88
<%
89
}
90
%>
91
AS
92
93
UPDATE [<%= GetTableName(Table)%>] set
94
<%
95
foreach(ColumnSchema column in Table.Columns)
96
{
97
%>
98
<%= GetInsertParam(Table,column)%> <%= GetMorePrimaryEqual(Table,column)%> <%= GetInsertInOrOutParam(Table,column)%><%= GetMorePrimaryComma(Table,column,Table.Columns)%>
99
<%}%>
100
WHERE <%
101
if(!IsMorePrimary(Table))
102

{%><%= Table.PrimaryKey.MemberColumns[0].Name%> = @<%= Table.PrimaryKey.MemberColumns[0].Name%>
103
<%
104
}
105
else
106

{
107
foreach(ColumnSchema column in Table.PrimaryKey.MemberColumns)
108
{%>[<%= column.Name%>] = @<%= column.Name%> <%= GetAnd(column,Table.PrimaryKey.MemberColumns)%> <%
109
}
110
}
111
%>
112
GO
113
SET ANSI_NULLS ON
114
GO
115
SET QUOTED_IDENTIFIER ON
116
GO
117
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[<%= GetTableName(Table)%>_Get<%= GetClassName(Table)%>]') AND type in (N'P', N'PC'))
118
BEGIN
119
DROP PROCEDURE [dbo].[<%= GetTableName(Table)%>_Get<%= GetClassName(Table)%>]
120
END
121
GO
122
-- =============================================
123
-- Create date: <%= System.DateTime.Now.ToString()%>
124
-- Description: 根据主键得到一个<%= GetClassName(Table)%>实体
125
-- =============================================
126
CREATE PROCEDURE [dbo].[<%= GetTableName(Table)%>_Get<%= GetClassName(Table)%>]
127
<%
128
foreach(ColumnSchema column in Table.PrimaryKey.MemberColumns)
129

{%>
130
@<%= column.Name%> <%= GetTypeAndSize(column)%><%=GetComma(column,Table.PrimaryKey.MemberColumns)%>
131
<%}%>
132
AS
133
134
SELECT * FROM [<%= GetTableName(Table)%>] WHERE <%
135
foreach(ColumnSchema column in Table.PrimaryKey.MemberColumns)
136

{%>[<%= column.Name%>] = @<%=column.Name%> <%= GetAnd(column,Table.PrimaryKey.MemberColumns)%> <%
137
}
138
%>
139
GO
140
SET ANSI_NULLS ON
141
GO
142
SET QUOTED_IDENTIFIER ON
143
GO
144
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[<%= GetTableName(Table)%>_Delete]') AND type in (N'P', N'PC'))
145
BEGIN
146
DROP PROCEDURE [dbo].[<%= GetTableName(Table)%>_Delete]
147
END
148
GO
149
-- =============================================
150
-- Create date: <%= System.DateTime.Now.ToString()%>
151
-- Description: 删除<%= GetTableName(Table)%>
152
--==============================================
153
CREATE PROCEDURE [dbo].[<%= GetTableName(Table)%>_Delete]
154
<%
155
foreach(ColumnSchema column in Table.PrimaryKey.MemberColumns)
156

{%>
157
@<%= column.Name%> <%= GetTypeAndSize(column)%><%=GetComma(column,Table.PrimaryKey.MemberColumns)%>
158
<%}%>
159
AS
160
161
DELETE FROM [<%= GetTableName(Table)%>] WHERE <%
162
foreach(ColumnSchema column in Table.PrimaryKey.MemberColumns)
163

{%>[<%= column.Name%>] = @<%=column.Name%> <%= GetAnd(column,Table.PrimaryKey.MemberColumns)%> <%
164
}
165
%>
166
IF @@ERROR != 0
167
BEGIN
168
--50000
169
RAISERROR (N'删除失败', -- Message text.
170
11, -- Severity,
171
3) -- State
172
END
173
GO
174
<%}%>
175
<script runat="template">
176
// My methods here.
177
178
protected override void OnPostRender(string result)
179

{
180
181
if (this.AutoExecuteScript)
182
{
183
// execute the output on the same database as the source table.
184
// 执行上面生成的脚本。
185
CodeSmith.BaseTemplates.ScriptResult scriptResult = CodeSmith.BaseTemplates.ScriptUtility.ExecuteScript(this.DataBase.Database.ConnectionString, result,
186
new System.Data.SqlClient.SqlInfoMessageEventHandler(cn_InfoMessage));
187
Trace.Write(scriptResult.ToString());
188
}
189
base.OnPostRender(result);
190
}
191
192
public void StordReader(string result)
193

{
194
if (this.AutoExecuteScript)
195
{
196
// execute the output on the same database as the source table.
197
// 执行上面生成的脚本。
198
CodeSmith.BaseTemplates.ScriptResult scriptResult = CodeSmith.BaseTemplates.ScriptUtility.ExecuteScript(this.DataBase.Database.ConnectionString, result,
199
new System.Data.SqlClient.SqlInfoMessageEventHandler(cn_InfoMessage));
200
Trace.Write(scriptResult.ToString());
201
}
202
}
203
204
private void cn_InfoMessage(object sender, System.Data.SqlClient.SqlInfoMessageEventArgs e)
205

{
206
//输出异常信息。
207
Trace.WriteLine(e.Message);
208
}
209
210
211
212
213
214
</script>
posted @ 2007-07-05 20:03
吴碧宇 阅读(179)
评论(1) 编辑 收藏