我发现 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了。