【发布时间】:2011-02-28 04:02:18
【问题描述】:
这可能是一个简单的 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] 和相应城市名称等的完整列表。
交易是我们从其他表格中加入了很多细节。
{Relations}/[表格]
- [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-tier/3-tier 是完全错误的??
Class AddressBO
{
public int ID {get;set;}
public string StreetName {get;set;}
public int PostalCode {get;set;} // Question #2
}
// Q2:我们是进行查找还是将邮政编码留待以后查找?
谁能解释以什么顺序拉哪些对象?建设性的批评是非常受欢迎的。 :o)
【问题讨论】:
标签: c# linq-to-sql business-objects 3-tier n-tier-architecture