N层-将详细信息加载到对象中

本文关键字:对象 加载 详细信息 | 更新日期: 2023-09-27 17:58:45

我使用以下结构创建了一个网站:

类项目-调用DataAccessLayer>添加数据集>添加表适配器和Datatable,并使用名为GetcustomerByID(ID)的查询

类项目-调用BusinessLayer>创建一些代码以调用DataAccessLayer并在CustomerDataTable中为查询返回结果GetcustomerByID(ID)

Web项目-添加了对BusinessLayer的引用。

从这一点开始,我可以添加一个ObjectDataSource并将其绑定到业务层,然后调用适当的方法(在本例中为GetCustomersByID(ID))。

然后我想添加一个额外的层,希望将所有客户数据加载到一个客户对象中。因此,我添加了另一个名为Customers,并将所有字段添加为[B]properties[/B](CustomerID、FirstName、Surname、AddressOne等)。

如何将BusinessLayer中的所有细节加载到此对象中,以便编写之类的代码

Dim myCustomer as Customer
....
...... Some code to get the data and load it into the Customer object.
If myCustomer.Firstname = "Bob" Then
....
End If

N层-将详细信息加载到对象中

为了从数据表中提取数据,您可以执行以下操作:

Customer customer = dt.AsEnumerable().Select(row => 
        // construct and map all the properties
        new Customer
        {
            Id = row.Field<int>("Id"),
            Firstname = row.Field<string>("Name")
        }).FirstOrDefault();

在VB.NET中类似这样的东西(尽管,我不是VB爱好者):

Dim customer As Customer = dt.AsEnumerable().[Select](Function(row) New Customer() With     { _
    Key .Id = row.Field(Of Integer)("Id"), _
    Key .Firstname = row.Field(Of String)("Name") _
}).FirstOrDefault()

我不知道你想让这个应用程序扩展到什么程度,但你可能想考虑研究活动记录模式或域模型模式,以获得决定如何构建层的帮助。

您可以使用DTO或POCO对象,并使用类似Dapper.NET的ORM直接将数据填充到它们中,而不是填充数据表。然后,您可以使用AutoMapper从DTO填充业务对象。

如果你使用活动记录,你可以让你的业务对象直接调用数据并填充它们自己。

你可以做无数不同的事情。

此外,您可能不希望前端调用服务层或门面层,而不是直接调用业务逻辑。

或者最好去掉关系数据源,使用像RavenDB或Mongo这样的Document数据库,同时删除冗余层调用。存储灵活的数据对象,而不是刚性行。然后你会发现填充你的业务对象将是一件很容易的事。