我发现 2.5 层设计最适合我创建的新 Web 应用程序。我通常从 2 个类库和 1 个 Web 应用程序开始。
Company.Data
(类库)
Company.Web
(类库)(包含PageBase
、自定义控件、帮助函数等)
Company.Web.WebApplication
(Web应用程序)
对于我创建的应用程序,我只使用存储过程来访问数据。事实上,我已经创建了 CodeSmith 模板来生成所有的存储过程、数据和业务类。
Company.Data
该程序集主要由实体数据类和集合组成。例如,我通常Settings
在我的 Web 应用程序中调用一个表。一个名为Setting
并将SettingCollection
生成的类。
因此,如果我需要加载特定设置,我可以这样做..
Dim setting As New Setting(1) 'pass in the id of the specific setting
setting.Value = "False" 'change the value
setting.Save() ' Call the save method to persist changes back to the database
或创建一个新设置,我只是不在构造函数中传递值
Dim setting as New Setting()
setting.Name = "SmtpServer"
setting.Value = "localhost"
setting.Save()
我在Company.Data
程序集中的命名空间通常看起来像这样..
Company.Data.Entites
Company.Data.Collections
Company.Data.BusinessObjects
(此命名空间用于创建访问数据的自定义方法)
我还根据主键、外键和唯一索引生成自定义方法。
例如,设置表中的名称列具有唯一索引。GetSettingByName
将自动生成一个调用的共享方法 ,这将返回一个设置对象。此方法将在Company.Data.BusinessObjects
命名空间中
对于实体和业务对象类,会生成两个文件。1 是每次生成的,1 是可编辑的并且只在第一次生成。我使用部分类来允许我添加自定义代码而不会被覆盖。
对我来说,这种方法非常有效。Codesmith 生成为我节省了无数小时的编码时间。我可以在一个表中添加 5 个新列,在几秒钟内重新生成所有新代码。存储过程将被删除并重新创建。
2.5 层设计效果很好,因为我的应用程序只使用一个数据库,那就是 Sql Server。以后不会再需要用到access、oracle、mysql了。