我正在开发一个ASP.NET 2.0网站。我创建了数据访问和业务逻辑层。现在,在表示层中,我将业务层中的数据作为数据集返回。
我的问题是是否使用数据集或对象集合(例如,表示我的数据库中的Category表的Category对象)。我已经定义了映射到数据库表(Common对象)的所有类。但是在某些情况下我需要表示层中类别表中的所有记录。我很困惑。我该怎么办?
答案 0 :(得分:3)
您不想返回数据集,您想要返回对象。
通常,当您拥有数据访问层和业务逻辑层时,您还需要拥有实体层。实体层将是数据库结果集的内存重新存储。如果从数据库返回一行,则加载一个授权对象。如果返回多行,则将为每一行加载一个实体,并返回一个要由表示层使用的实体集合。
例如,如果您使用.net 2.0及更高版本,则可以创建实体类型的通用集合,并轻松地将不同类型的控件绑定到这些集合。
希望这对你有所帮助。
答案 1 :(得分:1)
我会建议返回对象或IEnumerable / IList等对象。
根据您的数据库访问权限,您可以手动填充类别对象列表,也可以非常快速地使用LINQ2SQL或ADO.NET实体框架,如果需要,可以缓存它们。
答案 2 :(得分:0)
我根据具体情况使用了这两种方法。如果您只需要显示网格中表格中的数据,那么数据集(或数据表)方法并不可怕,因为如果将字段添加到表格中,它们将自动显示在网格中...假设您正在自动填充网格与列。我认为这种方法更像是一种快速而肮脏的方法。
答案 3 :(得分:0)
我根本不会返回数据集。您正在将服务与您的数据库紧密耦合。在将来数据库发展的过程中,您将被迫更改使用数据集的任何内容。您想在数据库和服务之间创建一个抽象层。
答案 4 :(得分:0)
我会使用对象/集合解决方案。因此,如果从表中返回一行,则有一个对象,如果要返回几个,则使用泛型集合。通用集合将避免装箱/拆箱。
[编辑]似乎我被打败了[/ edit]
答案 5 :(得分:0)
您应该创建一个实体图层,其中包含表示数据库中每个表的类。然后返回这些类的列表。