接着上次的教程繼續說,還在學校的時候真的見識太少,對于現在公司的要求都是可望不可即,也就見怪不怪應屆生的競争力是多麼不值得一提了,是以提前給自己找個好公司,去幫公司解決問題,才是學習和進步的正确方向,學校的生活隻是一個兒時的夢想實作的倒影,不要過于迷戀了。
這裡由于版權之類的問題,我就不截圖了,直接給大家看看做的代碼截圖,如圖,
<a href="http://blog.51cto.com/attachment/201308/155914534.jpg" target="_blank"></a>
可以看到這才是社會需要的标準,我們還是太年輕了,因為這些東西還隻是最基本的,不過給大家展示的這個企業背景客戶關系管理系統的權限業務邏輯算是鄭州的最高水準了,不信的可以慢慢看下面的示範,耐心。。
<a href="http://blog.51cto.com/attachment/201308/160818317.jpg" target="_blank"></a>
這樣就熟悉了權限管理的業務邏輯實作方法,接下來就是對于使用什麼樣的架構來寫這麼龐大的一個系統,選擇三層顯然已經滿足不了,是以就開始學習了傳說中的多層架構 - 工廠模式來開發這個背景。一般的小公司會選擇用動軟來構架好一些基本的類庫和方法,這樣來一步步的修改功能,不過大公司的會考慮效率問題,最後我所在的公司介紹了一種代碼生成器SocanCode,用這個的好處是可以定制屬于自己的代碼類庫,非常巧妙的使用JS編寫了一套替換代碼的生成方法,大家可以試SocanCode,如圖,PS:右側的模版就是修改定制自己想要的代碼規範,這裡就不詳述了,因為網上的教程很多,下面來介紹生成後的類庫使用方法。
<a href="http://blog.51cto.com/attachment/201308/162022348.jpg" target="_blank"></a>
這樣生成了我們要寫的業務,三層架構的模版檔案,如圖,
<a href="http://blog.51cto.com/attachment/201308/162508758.jpg" target="_blank"></a>
然後把各種頁面的四操作寫出來,對于大家來說應該不難吧,我在上期寫過一個例子,這裡就不多說了。寫好後就添加類庫到本項目中,如圖,
<a href="http://blog.51cto.com/attachment/201308/164842157.jpg" target="_blank"></a>
<a href="http://blog.51cto.com/attachment/201308/164842182.jpg" target="_blank"></a>
<a href="http://blog.51cto.com/attachment/201308/164842302.jpg" target="_blank"></a>
TVisitBLL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
<code>using</code> <code>System;</code>
<code>using</code> <code>System.Collections.Generic;</code>
<code>using</code> <code>System.Text.RegularExpressions;</code>
<code>using</code> <code>System.Web;</code>
<code>using</code> <code>System.Web.Caching;</code>
<code>namespace</code> <code>BLL</code>
<code>{</code>
<code> </code><code>/// <summary></code>
<code> </code><code>/// 業務邏輯類 TVisitBLL</code>
<code> </code><code>/// </summary></code>
<code> </code><code>public</code> <code>class</code> <code>TVisitBLL: BLHelper</code>
<code> </code><code>{</code>
<code> </code><code>private</code> <code>readonly</code> <code>DAL.TVisitDAL dal = </code><code>new</code> <code>DAL.TVisitDAL();</code>
<code> </code><code>public</code> <code>TVisitBLL()</code>
<code> </code><code>: </code><code>base</code><code>(</code><code>"_TVisit_"</code><code>) { }</code>
<code> </code><code>/// <summary></code>
<code> </code><code>/// 增加一條資料</code>
<code> </code><code>/// </summary></code>
<code> </code><code>public</code> <code>void</code> <code>Add(Model.TVisitModel model)</code>
<code> </code><code>{</code>
<code> </code><code>dal.Add(model);</code>
<code> </code><code>}</code>
<code> </code><code>/// 更新一條資料</code>
<code> </code><code>public</code> <code>void</code> <code>Update(Model.TVisitModel model)</code>
<code> </code><code>int</code> <code>count = dal.Update(model);</code>
<code> </code><code>if</code> <code>(EnableCache && count > 0)</code>
<code> </code><code>{</code>
<code> </code><code>RemoveModelCache(model.VisitId);</code>
<code> </code><code>}</code>
<code> </code><code>/// 删除一條資料</code>
<code> </code><code>public</code> <code>void</code> <code>Delete(</code><code>int</code><code>? VisitId)</code>
<code> </code><code>int</code> <code>count = dal.Delete(VisitId);</code>
<code> </code><code>RemoveModelCache(VisitId.ToString());</code>
<code> </code><code>/// 是否存在該記錄</code>
<code> </code><code>public</code> <code>bool</code> <code>Exists(</code><code>int</code><code>? VisitId)</code>
<code> </code><code>bool</code> <code>bln = dal.Exists(VisitId);</code>
<code> </code><code>return</code> <code>bln;</code>
<code> </code><code>/// 得到一個對象實體</code>
<code> </code><code>public</code> <code>Model.TVisitModel GetModel(</code><code>int</code><code>? VisitId)</code>
<code> </code><code>Model.TVisitModel model = </code><code>null</code><code>;</code>
<code> </code><code>if</code> <code>(!EnableCache)</code>
<code> </code><code>model = dal.GetModel(VisitId);</code>
<code> </code><code>else</code>
<code> </code><code>string</code> <code>key = VisitId.ToString();</code>
<code> </code><code>if</code> <code>(GetModelCache(key) != </code><code>null</code><code>)</code>
<code> </code><code>{</code>
<code> </code><code>model = (Model.TVisitModel)GetModelCache(key);</code>
<code> </code><code>}</code>
<code> </code><code>else</code>
<code> </code><code>model = dal.GetModel(VisitId);</code>
<code> </code><code>TryAddModelCache(key, model, </code><code>null</code><code>, Cache.NoAbsoluteExpiration, Cache.NoSlidingExpiration, System.Web.Caching.CacheItemPriority.Normal, </code><code>null</code><code>);</code>
<code> </code><code>return</code> <code>model;</code>
<code> </code><code>/// 獲得泛型資料清單</code>
<code> </code><code>public</code> <code>List<Model.TVisitModel> GetList()</code>
<code> </code><code>List<Model.TVisitModel> lst = dal.GetList();</code>
<code> </code><code>return</code> <code>lst;</code>
<code> </code><code>/// 分頁擷取泛型資料清單</code>
<code> </code><code>public</code> <code>PageList<Model.TVisitModel> GetPageList(PageInfo pi)</code>
<code> </code><code>PageList<Model.TVisitModel> pl = dal.GetPageList(pi);</code>
<code> </code><code>return</code> <code>pl;</code>
<code> </code><code>}</code>
<code>}</code>
TVisitDAL:
96
97
98
99
100
101
102
103
<code>using</code> <code>System.Data;</code>
<code>using</code> <code>System.Data.Common;</code>
<code>using</code> <code>System.Text;</code>
<code>namespace</code> <code>DAL</code>
<code> </code><code>/// 資料通路類 TVisitDAL</code>
<code> </code><code>public</code> <code>partial</code> <code>class</code> <code>TVisitDAL : DALHelper</code>
<code> </code><code>public</code> <code>int</code> <code>Add(Model.TVisitModel model)</code>
<code> </code><code>IDbDataParameter[] parms4TVisit = PrepareAddParameters(model);</code>
<code> </code><code>return</code> <code>dbHelper.ExecuteNonQuery(CommandType.StoredProcedure, COMMAND_ADD, parms4TVisit);</code>
<code> </code><code>public</code> <code>int</code> <code>Update(Model.TVisitModel model)</code>
<code> </code><code>IDbDataParameter[] parms4TVisit = PrepareUpdateParameters(model);</code>
<code> </code><code>return</code> <code>dbHelper.ExecuteNonQuery(CommandType.StoredProcedure, COMMAND_UPDATE, parms4TVisit);</code>
<code> </code><code>public</code> <code>int</code> <code>Delete(</code><code>int</code><code>? VisitId)</code>
<code> </code><code>IDbDataParameter[] parms4TVisit = PrepareDeleteParameters(VisitId);</code>
<code> </code><code>return</code> <code>dbHelper.ExecuteNonQuery(CommandType.StoredProcedure, COMMAND_DELETE, parms4TVisit);</code>
<code> </code><code>IDbDataParameter[] parms4TVisit = PrepareGetModelParameters(VisitId);</code>
<code> </code><code>using</code> <code>(IDataReader dr = dbHelper.ExecuteReader(CommandType.StoredProcedure, COMMAND_GETMODEL, parms4TVisit))</code>
<code> </code><code>if</code> <code>(dr.Read()) </code><code>return</code> <code>GetModel(dr);</code>
<code> </code><code>return</code> <code>null</code><code>;</code>
<code> </code><code>IDbDataParameter[] parms4TVisit = PrepareExistParameters(VisitId);</code>
<code> </code><code>object</code> <code>obj = dbHelper.ExecuteScalar(CommandType.StoredProcedure, COMMAND_EXISTS, parms4TVisit);</code>
<code> </code><code>return</code> <code>int</code><code>.Parse(obj.ToString()) > 0;</code>
<code> </code><code>/// 擷取數量</code>
<code> </code><code>public</code> <code>int</code> <code>GetCount()</code>
<code> </code><code>object</code> <code>obj = dbHelper.ExecuteScalar(CommandType.StoredProcedure, COMMAND_GETCOUNT, </code><code>null</code><code>);</code>
<code> </code><code>return</code> <code>int</code><code>.Parse(obj.ToString());</code>
<code> </code><code>/// 擷取泛型資料清單</code>
<code> </code><code>using</code> <code>(IDataReader dr = dbHelper.ExecuteReader(CommandType.StoredProcedure, COMMAND_GETLIST, </code><code>null</code><code>))</code>
<code> </code><code>List<Model.TVisitModel> lst = </code><code>new</code> <code>List<Model.TVisitModel>();</code>
<code> </code><code>ExecuteReaderAction(dr, r => lst.Add(GetModel(r)));</code>
<code> </code><code>return</code> <code>lst;</code>
<code> </code><code>pi.RecordCount = GetCount();</code>
<code> </code><code>pi.Compute();</code>
<code> </code><code>PageList<Model.TVisitModel> pl = </code><code>new</code> <code>PageList<Model.TVisitModel>(pi);</code>
<code> </code><code>using</code> <code>(IDataReader dr = dbHelper.ExecuteReader(CommandType.Text, COMMAND_GETLIST, </code><code>null</code><code>))</code>
<code> </code><code>pl.List = </code><code>new</code> <code>List<Model.TVisitModel>();</code>
<code> </code><code>ExecuteReaderAction(dr, pi.FirstIndex, pi.PageSize, r => pl.List.Add(GetModel(r)));</code>
<code> </code><code>/// 由一行資料得到一個實體</code>
<code> </code><code>private</code> <code>Model.TVisitModel GetModel(IDataReader dr)</code>
<code> </code><code>Model.TVisitModel model = </code><code>new</code> <code>Model.TVisitModel();</code>
<code> </code><code>PrepareModel(model, dr);</code>
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
<code>using</code> <code>DBUtility;</code>
<code> </code><code>/// 資料通路類 TVisit ,此類請勿動,以友善表字段更改時重新生成覆寫</code>
<code> </code><code>public</code> <code>partial</code> <code>class</code> <code>TVisitDAL</code>
<code> </code><code>internal</code> <code>const</code> <code>string</code> <code>COMMAND_ADD = </code><code>"sp_TVisit_Add"</code><code>;</code>
<code> </code><code>internal</code> <code>const</code> <code>string</code> <code>COMMAND_UPDATE = </code><code>"sp_TVisit_Update"</code><code>;</code>
<code> </code><code>internal</code> <code>const</code> <code>string</code> <code>COMMAND_DELETE = </code><code>"sp_TVisit_Delete"</code><code>;</code>
<code> </code><code>internal</code> <code>const</code> <code>string</code> <code>COMMAND_EXISTS = </code><code>"sp_TVisit_Exists"</code><code>;</code>
<code> </code><code>internal</code> <code>const</code> <code>string</code> <code>COMMAND_GETMODEL = </code><code>"sp_TVisit_GetModel"</code><code>;</code>
<code> </code><code>internal</code> <code>const</code> <code>string</code> <code>COMMAND_GETCOUNT = </code><code>"sp_TVisit_GetCount"</code><code>;</code>
<code> </code><code>internal</code> <code>const</code> <code>string</code> <code>COMMAND_GETLIST = </code><code>"sp_TVisit_GetAllList"</code><code>;</code>
<code> </code><code>internal</code> <code>const</code> <code>string</code> <code>PARM_VISITID = </code><code>"@in_VisitId"</code><code>;</code>
<code> </code><code>internal</code> <code>const</code> <code>string</code> <code>PARM_VISITTIME = </code><code>"@in_VisitTime"</code><code>;</code>
<code> </code><code>internal</code> <code>const</code> <code>string</code> <code>PARM_VISITCUSTOMER = </code><code>"@in_VisitCustomer"</code><code>;</code>
<code> </code><code>internal</code> <code>const</code> <code>string</code> <code>PARM_VISITWAY = </code><code>"@in_VisitWay"</code><code>;</code>
<code> </code><code>internal</code> <code>const</code> <code>string</code> <code>PARM_VISITCONTENT = </code><code>"@in_VisitContent"</code><code>;</code>
<code> </code><code>internal</code> <code>const</code> <code>string</code> <code>PARM_VISITOR = </code><code>"@in_Visitor"</code><code>;</code>
<code> </code><code>internal</code> <code>const</code> <code>string</code> <code>PARM_FREMARK = </code><code>"@in_FRemark"</code><code>;</code>
<code> </code><code>internal</code> <code>const</code> <code>string</code> <code>PARM_FSORT = </code><code>"@in_FSort"</code><code>;</code>
<code> </code><code>internal</code> <code>const</code> <code>string</code> <code>PARM_FISDELETE = </code><code>"@in_FIsDelete"</code><code>;</code>
<code> </code><code>internal</code> <code>const</code> <code>string</code> <code>PARM_FCREATOR = </code><code>"@in_FCreator"</code><code>;</code>
<code> </code><code>internal</code> <code>const</code> <code>string</code> <code>PARM_FCREATEDATE = </code><code>"@in_FCreateDate"</code><code>;</code>
<code> </code><code>internal</code> <code>const</code> <code>string</code> <code>PARM_FMODIFY = </code><code>"@in_FModify"</code><code>;</code>
<code> </code><code>internal</code> <code>const</code> <code>string</code> <code>PARM_FMODIFYDATE = </code><code>"@in_FModifyDate"</code><code>;</code>
<code> </code><code>internal</code> <code>const</code> <code>string</code> <code>PARM_FGUID = </code><code>"@in_FGUID"</code><code>;</code>
<code> </code><code>internal</code> <code>const</code> <code>string</code> <code>PARM_FISSYNCHRONOUS = </code><code>"@in_FIsSynchronous"</code><code>;</code>
<code> </code><code>/// 為新增一條資料準備參數</code>
<code> </code><code>internal</code> <code>static</code> <code>IDbDataParameter[] PrepareAddParameters(Model.TVisitModel model)</code>
<code> </code><code>IDbDataParameter[] parms = DbParameterCache.GetCachedParameterSet(dbHelper.ConnectionString, COMMAND_ADD);</code>
<code> </code><code>if</code> <code>(parms == </code><code>null</code><code>)</code>
<code> </code><code>parms = </code><code>new</code> <code>IDbDataParameter[]{</code>
<code> </code><code>dbHelper.CreateDbParameter(PARM_VISITTIME, DbType.DateTime, ParameterDirection.Input),</code>
<code> </code><code>dbHelper.CreateDbParameter(PARM_VISITCUSTOMER, DbType.Int32, ParameterDirection.Input),</code>
<code> </code><code>dbHelper.CreateDbParameter(PARM_VISITWAY, DbType.Int32, ParameterDirection.Input),</code>
<code> </code><code>dbHelper.CreateDbParameter(PARM_VISITCONTENT, DbType.AnsiString, ParameterDirection.Input),</code>
<code> </code><code>dbHelper.CreateDbParameter(PARM_VISITOR, DbType.Int32, ParameterDirection.Input),</code>
<code> </code><code>dbHelper.CreateDbParameter(PARM_FREMARK, DbType.String, ParameterDirection.Input),</code>
<code> </code><code>dbHelper.CreateDbParameter(PARM_FSORT, DbType.Int32, ParameterDirection.Input),</code>
<code> </code><code>dbHelper.CreateDbParameter(PARM_FISDELETE, DbType.Boolean, ParameterDirection.Input),</code>
<code> </code><code>dbHelper.CreateDbParameter(PARM_FCREATOR, DbType.AnsiString, ParameterDirection.Input),</code>
<code> </code><code>dbHelper.CreateDbParameter(PARM_FCREATEDATE, DbType.DateTime, ParameterDirection.Input),</code>
<code> </code><code>dbHelper.CreateDbParameter(PARM_FMODIFY, DbType.AnsiString, ParameterDirection.Input),</code>
<code> </code><code>dbHelper.CreateDbParameter(PARM_FMODIFYDATE, DbType.DateTime, ParameterDirection.Input),</code>
<code> </code><code>dbHelper.CreateDbParameter(PARM_FGUID, DbType.AnsiString, ParameterDirection.Input),</code>
<code> </code><code>dbHelper.CreateDbParameter(PARM_FISSYNCHRONOUS, DbType.Boolean, ParameterDirection.Input)};</code>
<code> </code><code>DbParameterCache.CacheParameterSet(dbHelper.ConnectionString, COMMAND_ADD, parms);</code>
<code> </code><code>parms[0].Value = model.VisitTime;</code>
<code> </code><code>parms[1].Value = model.VisitCustomer;</code>
<code> </code><code>parms[2].Value = model.VisitWay;</code>
<code> </code><code>parms[3].Value = model.VisitContent;</code>
<code> </code><code>parms[4].Value = model.Visitor;</code>
<code> </code><code>parms[5].Value = model.FRemark;</code>
<code> </code><code>parms[6].Value = model.FSort;</code>
<code> </code><code>parms[7].Value = model.FIsDelete;</code>
<code> </code><code>parms[8].Value = model.FCreator;</code>
<code> </code><code>parms[9].Value = model.FCreateDate;</code>
<code> </code><code>parms[10].Value = model.FModify;</code>
<code> </code><code>parms[11].Value = model.FModifyDate;</code>
<code> </code><code>parms[12].Value = model.FGUID;</code>
<code> </code><code>parms[13].Value = model.FIsSynchronous;</code>
<code> </code><code>return</code> <code>parms;</code>
<code> </code><code>/// 為更新一條資料準備參數</code>
<code> </code><code>internal</code> <code>static</code> <code>IDbDataParameter[] PrepareUpdateParameters(Model.TVisitModel model)</code>
<code> </code><code>IDbDataParameter[] parms = DbParameterCache.GetCachedParameterSet(dbHelper.ConnectionString, COMMAND_UPDATE);</code>
<code> </code><code>dbHelper.CreateDbParameter(PARM_FISSYNCHRONOUS, DbType.Boolean, ParameterDirection.Input),</code>
<code> </code><code>dbHelper.CreateDbParameter(PARM_VISITID, DbType.Int32, ParameterDirection.Input)};</code>
<code> </code><code>DbParameterCache.CacheParameterSet(dbHelper.ConnectionString, COMMAND_UPDATE, parms);</code>
<code> </code><code>parms[14].Value = model.VisitId;</code>
<code> </code><code>/// 為删除一條資料準備參數</code>
<code> </code><code>internal</code> <code>static</code> <code>IDbDataParameter[] PrepareDeleteParameters(</code><code>int</code><code>? VisitId)</code>
<code> </code><code>IDbDataParameter[] parms = DbParameterCache.GetCachedParameterSet(dbHelper.ConnectionString, COMMAND_DELETE);</code>
<code> </code><code>DbParameterCache.CacheParameterSet(dbHelper.ConnectionString, COMMAND_EXISTS, parms);</code>
<code> </code><code>parms[0].Value = VisitId;</code>
<code> </code><code>/// 為查詢是否存在一條資料準備參數</code>
<code> </code><code>internal</code> <code>static</code> <code>IDbDataParameter[] PrepareExistParameters(</code><code>int</code><code>? VisitId)</code>
<code> </code><code>IDbDataParameter[] parms = DbParameterCache.GetCachedParameterSet(dbHelper.ConnectionString, COMMAND_EXISTS);</code>
<code> </code><code>/// 為擷取一條資料準備參數</code>
<code> </code><code>internal</code> <code>static</code> <code>IDbDataParameter[] PrepareGetModelParameters(</code><code>int</code><code>? VisitId)</code>
<code> </code><code>IDbDataParameter[] parms = DbParameterCache.GetCachedParameterSet(dbHelper.ConnectionString, COMMAND_GETMODEL);</code>
<code> </code><code>internal</code> <code>static</code> <code>void</code> <code>PrepareModel(Model.TVisitModel model, IDataReader dr)</code>
<code> </code><code>model.VisitId = DbValue.GetInt(dr[</code><code>"VisitId"</code><code>]);</code>
<code> </code><code>model.VisitTime = DbValue.GetDateTime(dr[</code><code>"VisitTime"</code><code>]);</code>
<code> </code><code>model.VisitCustomer = DbValue.GetInt(dr[</code><code>"VisitCustomer"</code><code>]);</code>
<code> </code><code>model.VisitWay = DbValue.GetInt(dr[</code><code>"VisitWay"</code><code>]);</code>
<code> </code><code>model.VisitContent = DbValue.GetString(dr[</code><code>"VisitContent"</code><code>]);</code>
<code> </code><code>model.Visitor = DbValue.GetInt(dr[</code><code>"Visitor"</code><code>]);</code>
<code> </code><code>model.FRemark = DbValue.GetString(dr[</code><code>"FRemark"</code><code>]);</code>
<code> </code><code>model.FSort = DbValue.GetInt(dr[</code><code>"FSort"</code><code>]);</code>
<code> </code><code>model.FIsDelete = DbValue.GetBool(dr[</code><code>"FIsDelete"</code><code>]);</code>
<code> </code><code>model.FCreator = DbValue.GetString(dr[</code><code>"FCreator"</code><code>]);</code>
<code> </code><code>model.FCreateDate = DbValue.GetDateTime(dr[</code><code>"FCreateDate"</code><code>]);</code>
<code> </code><code>model.FModify = DbValue.GetString(dr[</code><code>"FModify"</code><code>]);</code>
<code> </code><code>model.FModifyDate = DbValue.GetDateTime(dr[</code><code>"FModifyDate"</code><code>]);</code>
<code> </code><code>model.FGUID = DbValue.GetString(dr[</code><code>"FGUID"</code><code>]);</code>
<code> </code><code>model.FIsSynchronous = DbValue.GetBool(dr[</code><code>"FIsSynchronous"</code><code>]);</code>
TVisitModel:
<code>namespace</code> <code>Model</code>
<code> </code><code>/// 實體類 TVisitModel</code>
<code> </code><code>public</code> <code>partial</code> <code>class</code> <code>TVisitModel</code>
<code> </code><code>{ }</code>
<code> </code><code>/// 實體類 TVisitModel, 此類請勿動,以友善表字段更改時重新生成覆寫</code>
<code> </code><code>[Serializable]</code>
<code> </code><code>public</code> <code>partial</code> <code>class</code> <code>TVisitModel : ICloneable</code>
<code> </code><code>public</code> <code>TVisitModel()</code>
<code> </code><code>{ }</code>
<code> </code><code>/// 構造函數 TVisitModel</code>
<code> </code><code>/// <param name="visitid">拜訪編号</param></code>
<code> </code><code>/// <param name="visittime">拜訪時間</param></code>
<code> </code><code>/// <param name="visitcustomer">拜訪對象編号</param></code>
<code> </code><code>/// <param name="visitway">拜訪方式</param></code>
<code> </code><code>/// <param name="visitcontent">拜訪内容</param></code>
<code> </code><code>/// <param name="visitor">拜訪人員</param></code>
<code> </code><code>/// <param name="fremark">備注</param></code>
<code> </code><code>/// <param name="fsort">顯示順序</param></code>
<code> </code><code>/// <param name="fisdelete">是否被删除:預設0</param></code>
<code> </code><code>/// <param name="fcreator">建立者</param></code>
<code> </code><code>/// <param name="fcreatedate">建立日期</param></code>
<code> </code><code>/// <param name="fmodify">修改者</param></code>
<code> </code><code>/// <param name="fmodifydate">修改日期</param></code>
<code> </code><code>/// <param name="fguid">唯一辨別</param></code>
<code> </code><code>/// <param name="fissynchronous">是否已同步</param></code>
<code> </code><code>public</code> <code>TVisitModel(</code><code>int</code><code>? visitid, DateTime? visittime, </code><code>int</code><code>? visitcustomer, </code><code>int</code><code>? visitway, </code><code>string</code> <code>visitcontent, </code><code>int</code><code>? visitor, </code><code>string</code> <code>fremark, </code><code>int</code><code>? fsort, </code><code>bool</code><code>? fisdelete, </code><code>string</code> <code>fcreator, DateTime? fcreatedate, </code><code>string</code> <code>fmodify, DateTime? fmodifydate, </code><code>string</code> <code>fguid, </code><code>bool</code><code>? fissynchronous)</code>
<code> </code><code>this</code><code>.VisitId = visitid;</code>
<code> </code><code>this</code><code>.VisitTime = visittime;</code>
<code> </code><code>this</code><code>.VisitCustomer = visitcustomer;</code>
<code> </code><code>this</code><code>.VisitWay = visitway;</code>
<code> </code><code>this</code><code>.VisitContent = visitcontent;</code>
<code> </code><code>this</code><code>.Visitor = visitor;</code>
<code> </code><code>this</code><code>.FRemark = fremark;</code>
<code> </code><code>this</code><code>.FSort = fsort;</code>
<code> </code><code>this</code><code>.FIsDelete = fisdelete;</code>
<code> </code><code>this</code><code>.FCreator = fcreator;</code>
<code> </code><code>this</code><code>.FCreateDate = fcreatedate;</code>
<code> </code><code>this</code><code>.FModify = fmodify;</code>
<code> </code><code>this</code><code>.FModifyDate = fmodifydate;</code>
<code> </code><code>this</code><code>.FGUID = fguid;</code>
<code> </code><code>this</code><code>.FIsSynchronous = fissynchronous;</code>
<code> </code><code>#region 實體屬性</code>
<code> </code><code>/// 拜訪編号</code>
<code> </code><code>public</code> <code>int</code><code>? VisitId { </code><code>get</code><code>; </code><code>set</code><code>; }</code>
<code> </code><code>/// 拜訪時間</code>
<code> </code><code>public</code> <code>DateTime? VisitTime { </code><code>get</code><code>; </code><code>set</code><code>; }</code>
<code> </code><code>/// 拜訪對象編号</code>
<code> </code><code>public</code> <code>int</code><code>? VisitCustomer { </code><code>get</code><code>; </code><code>set</code><code>; }</code>
<code> </code><code>/// 拜訪方式</code>
<code> </code><code>public</code> <code>int</code><code>? VisitWay { </code><code>get</code><code>; </code><code>set</code><code>; }</code>
<code> </code><code>/// 拜訪内容</code>
<code> </code><code>public</code> <code>string</code> <code>VisitContent { </code><code>get</code><code>; </code><code>set</code><code>; }</code>
<code> </code><code>/// 拜訪人員</code>
<code> </code><code>public</code> <code>int</code><code>? Visitor { </code><code>get</code><code>; </code><code>set</code><code>; }</code>
<code> </code><code>/// 備注</code>
<code> </code><code>public</code> <code>string</code> <code>FRemark { </code><code>get</code><code>; </code><code>set</code><code>; }</code>
<code> </code><code>/// 顯示順序</code>
<code> </code><code>public</code> <code>int</code><code>? FSort { </code><code>get</code><code>; </code><code>set</code><code>; }</code>
<code> </code><code>/// 是否被删除:預設0</code>
<code> </code><code>public</code> <code>bool</code><code>? FIsDelete { </code><code>get</code><code>; </code><code>set</code><code>; }</code>
<code> </code><code>/// 建立者</code>
<code> </code><code>public</code> <code>string</code> <code>FCreator { </code><code>get</code><code>; </code><code>set</code><code>; }</code>
<code> </code><code>/// 建立日期</code>
<code> </code><code>public</code> <code>DateTime? FCreateDate { </code><code>get</code><code>; </code><code>set</code><code>; }</code>
<code> </code><code>/// 修改者</code>
<code> </code><code>public</code> <code>string</code> <code>FModify { </code><code>get</code><code>; </code><code>set</code><code>; }</code>
<code> </code><code>/// 修改日期</code>
<code> </code><code>public</code> <code>DateTime? FModifyDate { </code><code>get</code><code>; </code><code>set</code><code>; }</code>
<code> </code><code>/// 唯一辨別</code>
<code> </code><code>public</code> <code>string</code> <code>FGUID { </code><code>get</code><code>; </code><code>set</code><code>; }</code>
<code> </code><code>/// 是否已同步</code>
<code> </code><code>public</code> <code>bool</code><code>? FIsSynchronous { </code><code>get</code><code>; </code><code>set</code><code>; }</code>
<code> </code><code>#endregion</code>
<code> </code><code>#region ICloneable 成員</code>
<code> </code><code>public</code> <code>object</code> <code>Clone()</code>
<code> </code><code>return</code> <code>this</code><code>.MemberwiseClone();</code>
<code> </code><code>public</code> <code>override</code> <code>bool</code> <code>Equals(</code><code>object</code> <code>obj)</code>
<code> </code><code>Model.TVisitModel model = obj </code><code>as</code> <code>Model.TVisitModel;</code>
<code> </code><code>if</code> <code>(model != </code><code>null</code> <code>&& model.VisitId == </code><code>this</code><code>.VisitId)</code>
<code> </code><code>return</code> <code>true</code><code>;</code>
<code> </code><code>return</code> <code>false</code><code>;</code>
<code> </code><code>public</code> <code>override</code> <code>int</code> <code>GetHashCode()</code>
<code> </code><code>return</code> <code>VisitId.GetHashCode();</code>
好了到這裡就給大家簡單的介紹完了多層架構的基本使用方法了,工廠的核心在于接口的調用,其實也就多了接口的執行個體化引用對象,可以友善的調用到各種XXOODAL,是以大家如果想用好多層就要學會接口的方法使用。大部分的網站都可以用三層解決的話,是不建議用工廠的,是以掌握住基本的才是王道。
這次的東西有點多,大家慢慢了解,我會再用一期的時間把這個項目簡單的介紹完,讓大家知道其中的一些核心寫法,具體的細節需要大家自己去寫代碼去修改和優化。
本文轉自 吳雨聲 51CTO部落格,原文連結:http://blog.51cto.com/liangxiao/1281748,如需轉載請自行聯系原作者