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