如何使用三层架构填充组合框

本文关键字:填充 组合 三层 何使用 | 更新日期: 2023-09-27 18:27:38

我正在编写一个使用三层的应用程序。

在表示层中,我有一个组合框,我需要用一个简单的SQL(如)填充它

SELECT distinct(Item) as items From ItemsTable order by items;

AFAIK,表示层不应该知道项目列的名称。也许DB中的名称会被更改,我不想更新整个应用程序,在最坏的情况下只更新DAL。

我的问题是如何填充组合框而不必写列(项目)的名称

ItemsComboBox.DisplayMember = "items";
ItemsComboBox.DataSource = _businessLayer.GetListOfItems();

业务层:

public DataTable GetListOfItems()
    {
        return DataAccess.Instance.Retrieve("TableName", "items");
    }

如何使用三层架构填充组合框

您应该定义一个专门用于在业务层和表示层之间传输数据的类。这被称为数据传输对象。对DTO类中的属性重复使用与实体中的列名相同的命名不会有什么坏处。您的业务层方法将从数据库中获取数据,填充DTO并将其返回到表示层中的调用方法。同一个对象可以用于将数据传回。如果实体中的列名发生更改,则可以在不影响表示层的情况下修改业务层中的数据库访问权限。youtube上有一些关于应用程序架构的精彩视频。他解释得很好。

_businessLayer.GetListOfItems();
  • 业务层应该查询数据层,而不是数据库
  • 如果数据库发生更改,则只有数据层会受到影响

最好创建一个不会改变的商业实体并使用它

如果你不想手动创建它们,你可以使用一些工具,比如AutoMapper。

您可以在MSDN

中参考此内容