不确定是否有“正确”的答案,所以我将其标记为社区 wiki。为冗长的序言道歉。
我正在.Net 中构建一个中等大小的 Web 应用程序,并且已经确定了基于表的体系结构。我的 DAL 层由一组 TableGateway 类组成,这些类处理向数据库加载/保存数据 - 这些返回强类型数据集。应用程序逻辑被组织成一组 TableModule 类。最后,我的 ASPX 页面处理显示内容并将表单值等传递给要处理的 TableModules。
令我困惑的是,谁应该负责调用 TableGateway 来获取 DataSet、ASPX 代码隐藏或 TableModule?
示例 1 - ASPX 做到了:
SomePage.aspx.cs:
protected void AddLink_Click(object sender, EventArgs args)
{
long id = long.Parse(PopulationDropDown.SelectedValue);
string someProperty = SomePropertyTextBox.Text;
IPopulationGateway populationGateway = DALServicesLocator.GetPopulationGateway();
PopulationDataSet populationData = populationGateway.LoadPopulationDetails(id);
PopulationModule.SomeLogicToAddStuff(populationData, id, someProperty);
populationGateway.Save(populationData);
}
示例 2 - TableModule 做到了:
SomePage.aspx.cs:
protected void AddLink_Click(object sender, EventArgs args)
{
long id = long.Parse(PopulationDropDown.SelectedValue);
string someProperty = SomePropertyTextBox.Text;
// Just pass values to the TableModule and let it talk to the Gateway.
PopulationModule.SomeLogicToAddStuff(id, someProperty);
}