
接着上次的教程继续说,还在学校的时候真的见识太少,对于现在公司的要求都是可望不可即,也就见怪不怪应届生的竞争力是多么不值得一提了,所以提前给自己找个好公司,去帮公司解决问题,才是学习和进步的正确方向,学校的生活只是一个儿时的梦想实现的倒影,不要过于迷恋了。
这里由于版权之类的问题,我就不截图了,直接给大家看看做的代码截图,如图,
<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,如需转载请自行联系原作者