它可能是一个简单的 3 层问题。我只是想确保我们为此使用最佳实践,而且我对这些结构还不是很熟悉。
我们有 3 层:
- GUI:用于表示层的 ASP.NET(第一个平台)
- BAL:业务层将在 C# 中处理网络服务器上的逻辑,所以我们都可以将它用于 webforms/MVC + webservices
- DAL:数据层中的 LINQ to SQL,返回 BusinessObjects 而不是 LINQ。
- DB:SQL 将是 Microsoft SQL-server/Express(尚未决定)。
让我们考虑一下我们有一个 [Persons] 数据库的设置。他们都可以有多个 [Address] 并且我们有所有 [PostalCode] 和相应城市名称等的完整列表。
交易是我们从其他表格中加入了很多细节。
{关系}/[表格]
- [Person]:1 --- N:{PersonAddress}:M --- 1:[Address]
- [地址]:N --- 1:[邮编]
现在我们要为 Person 构建 DAL。PersonBO 的外观应该如何以及连接何时发生?获取所有城市名称和可能的地址公关是业务层问题吗?人?或者 DAL 是否应该在将 PersonBO 返回给 BAL 之前完成所有这些?
Class PersonBO
{
public int ID {get;set;}
public string Name {get;set;}
public List<AddressBO> {get;set;} // Question #1
}
// Q1:我们在返回 PersonBO 之前检索对象吗?它应该是一个数组吗?或者这对于 n 层/3 层来说是完全错误的吗?
Class AddressBO
{
public int ID {get;set;}
public string StreetName {get;set;}
public int PostalCode {get;set;} // Question #2
}
// Q2:我们是进行查找还是留下 PostalCode 以供以后查找?
谁能解释以什么顺序拉哪些对象?建设性的批评是非常受欢迎的。:o)