C# 域驱动设计中的绑定DropdownList

C# 域驱动设计中的绑定DropdownList,c#,.net,domain-driven-design,C#,.net,Domain Driven Design,我创建了域模型并定义了实体、价值对象、服务等。现在,我的问题是我有一个名为Company的实体,它有大约20多个属性,我想在我的一个页面中绑定一个dropdownlist控件,该控件只需要两个属性,即Company.Name和Company.Id。为什么我要使用这样一个有20多个属性的重实体来绑定dropdownlist 在考虑到性能的同时,是否有任何方法来处理此问题 提前感谢。DDD与性能无关。使用DDD,您应该操作聚合-一致的连接实体集。应将聚合从datatbase加载到应用程序内存中。 A

我创建了域模型并定义了实体、价值对象、服务等。现在,我的问题是我有一个名为Company的实体,它有大约20多个属性,我想在我的一个页面中绑定一个dropdownlist控件,该控件只需要两个属性,即Company.Name和Company.Id。为什么我要使用这样一个有20多个属性的重实体来绑定dropdownlist

在考虑到性能的同时,是否有任何方法来处理此问题


提前感谢。

DDD与性能无关。使用DDD,您应该操作聚合-一致的连接实体集。应将聚合从datatbase加载到应用程序内存中。 Ah hoc查询实际上将DDD中考虑的所有查询都视为报告,并且应该通过单独的机制(如非规范化数据库)来完成

胡说八道。不要使用DDD


在需要时编写查询。使用Linq组合分解查询。

这个问题与DDD并没有太大关系。这是关于性能的

正如我所做的,我不在乎是否有1个或20个属性,只要这些属性不是来自单独的表。如果select选择了1个或20个字段,则差异不大,但如果select开始连接其他表,则差异明显,如果存在,则差异非常明显

所以,当我通过我的ORM检索公司列表以创建selectlist时,只在公司表上运行sql select是足够聪明的,如果需要的话,可以延迟加载其他东西,但在这种特殊情况下不需要

幸运的是,我没有开发要求超高性能的系统,所以我不在乎它需要1个或20个字段。如果我这样做了,我怀疑我是否会使用ORM


对于其他一些持久性机制,这可能根本不是问题。例如,如果您使用的是文档数据库,则可以将整个聚合存储/检索到一个文档中,因为它的架构较少。在这种情况下,我会考虑引用数据服务返回域模型的轻量级表示,或者为了简单起见,实现缓存。无论哪种方式,请记住,在确定体系结构的性能是一个问题之后,这才是您真正应该担心的问题。

创建一个通用的键/值模型,并从服务中公开一个返回公司名称/公司id列表的方法。这与其他值类型数据类似,您在数据库中查询前州代码/州id。

为什么要在这一个上使用社区wiki?这是一个错误,请您指导我删除它。我几乎超过了您的票数,直到我读到最后两句。你说的是废话,不是。至少——从他的背景来看不是这样的:如果公司有平均大小约为1MB的公司徽标BLOB,你该怎么办?@gandjustas我会延迟加载它们。这不仅是获取聚合、处理聚合并将其传递给客户端,还消耗了更多的资源和带宽。实现DDD本身就是一个挑战,但优化比这更具挑战性。。。