我有 asp.net mvc 2 应用程序。我对创建 DTO 和域实体感到困惑。
MVC Controller 集成要点: 1)第三方WCF 2) 数据库层
WCF 正在返回特定公司的 Persons 信息和有关公司的一些信息。
我已经生成了 WCF 代理并在代理上编写了一个服务包装器。 服务包装器正在与 WCF 对话并将结果映射到 DTO 类 ContactsDTO 服务层在不同的项目中。
以下是我的领域类
Company
Person
DTO class
//it contains
class ContactsDTO
{
Person person, Company[] company
}
Controller action 使用 companyID 调用包装器并获取 DTO 类的对象。 并从 dto 更新公司信息。它更新 Session 中的公司信息,并将 Company[] 数组传递给其他一些操作。
数据库交互:
现在,根据某些业务逻辑,我必须在数据库中插入人员 ID 和公司 ID 以及其他一些信息。
为此我创建了另一个
class DBDTO
{
Person person, Company[] company, OtherInfo otherInfo[]
}
此 DBDTO 已准备好并传递给数据库层(使用 Linq to sql)。
Questions
是写的方式来做。 DTO交互有什么改进吗?什么都 我可以做的改变来改善整体架构
最佳答案
将数据库绑定(bind)对象转换为 DTO(这需要时间)的另一种替代方法是使用 POCO(普通旧 CLR 对象)并将它们直接用作域模型、可以存储在数据库中的对象和传达给 Controller 进行可视化。 这可以让你开始:Working with POCO Entities
这种方法有几个优点
- 您的 POCO 实体独立于底层数据库实现
- 您的 POCO 实体可以在没有数据库的情况下进行单元测试
- 您可以使用 DataContractSerializer 或 DataContractJsonSerializer 轻松地将它们序列化为服务响应(如果您正在构建 API)
关于oop - DTO与领域对象、WCF以及DB层交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12438104/