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
为了从数据表中提取数据,您可以执行以下操作:
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数据库,同时删除冗余层调用。存储灵活的数据对象,而不是刚性行。然后你会发现填充你的业务对象将是一件很容易的事。