问题标签 [lookup]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
domain-driven-design - 在领域驱动设计 (DDD) 中建模查找表的实用方法是什么?
我刚刚学习 DDD(Eric Evans 的书在我面前打开),我遇到了一个我找不到答案的问题。当您只是想获得一个简单的查找记录列表时,您在 DDD 中会做什么?
前任。
员工 ID:123
员工姓名:John Doe
州:阿拉斯加(下拉)
县:瓦西拉(下拉 - 将根据州过滤)。
例如,假设您有一个 Employee 域对象、一个 IEmployeeRepository 接口和一个 EmployeeRepository 类。UI 将使用它来显示员工列表和个人详细信息。在 UI 中,您希望为员工居住的州和县使用下拉菜单。可用县将根据选择的州进行过滤。
不幸的是,数据库表和 UI 看起来非常不同。在 tblEmployees 中,它包含州代码=AK 和县代码=02130,而不是州和县名称。
旧方法(在我开始这个 DDD 任务之前)非常简单,只需创建 2 个查询并使用 DataReader 填充下拉列表。下拉菜单中显示的下方是值,该值会自动用于表单帖子。
但是,对于 DDD,我不确定您应该如何执行此操作。我首先创建了州和县对象以及存储库和存储库接口。但是,编写 4 个类 + 2 个接口和 hbm.xml 文件中的管道 + Employee 业务对象对于 2 个下拉列表的 2 个查询似乎有点过头了。必须有更好的方法,不是吗?我不会很快更改州或县表中的记录,即使我这样做了,也不会通过此应用程序进行。因此,如果没有必要,我真的不想为州和县创建业务对象。
我看到的最简单的解决方案是只使用返回字典的方法创建一个帮助类,例如 GetStatesAll()、GetState() 和 GetCounties() 和 GetCounty(),但从 DDD 的角度来看这感觉不对。
请帮忙。如何在不过度设计几个简单查找的情况下使用 DDD?
最终解决方案 我想我终于通过经验找到了答案,就是将 GetStates() 方法放入它自己的 Data Access 类中,尽管不是存储库类。由于我只进行只读访问,因此我将其放入结构 DTO 中。由于数据库很小,我将它们完全放在一个类中,就像下面描述的 Todd。
我的结论:
- 查找表永远不是值对象,因为查找表总是有一个标识。如果他们没有身份,你就会有重复,这没有多大意义。
- 只读查找表可以有一个存储库,但可能不需要一个。存储库的目标是通过强制仅通过聚合访问来降低复杂性。通过汇总为您提供了一种确保可以强制执行业务规则的方法,例如如果您没有汽车则不添加轮胎。
- 如果您允许对查找表进行 CRUD 维护,那么查找表拥有自己的存储库是有意义的。
- 我最终将代码存储为结构这一事实并没有使它们成为“值类型”。Fowler 在 POEAA 中说结构是一种值类型。没错,结构是不可变的,这就是 Fowler 说它们是“值类型”的原因,但我使用它们的方式不同。我使用结构作为一种轻量级的方式来传递我从未计划在初始创建后更改的 DTO。事实上,我使用的结构确实具有标识,但由于它们是只读的,它们作为结构工作。
- 我一直在使用的一种我在其他地方看不到的模式是使主键字段不可变。它们由构造函数设置,但它们是只读的(不是私有访问器),一旦创建对象就不能更改。
tsql - 如何编写 SQL 选择语句以包含来自另一个表的查找?
我正在将数据从一个数据库复制到另一个数据库,并在处理数据时对数据进行按摩。这两个数据库都有名为 Clients 和 Jobs 的表。
但是,在数据库“Alpha”中,Jobs 表与 Clients 表没有关系,而数据库“Epsilon”则有。Alpha 的 Jobs 表仅在 nvarchar 列中包含 Clients 名称。
当我将它插入到 Epsilon 的 Jobs 表中时,我需要一个 select 语句来按名称在 Client 表中查找 Client 的 ID。
我未完成的 SQL 语句如下所示:
我怎样才能修改它,以便???? 包含 Epsilon 中的 Clients 表中的 ClientId?我知道我需要使用 Jobs 中的 Name 列来查找数据,但我不知道它的语法。
asp.net - 模态弹出搜索窗口替换下拉控件 ASP.NET
我正在寻找在 ASP.NET 3.5 应用程序顶部弹出模式搜索窗口以查找字段值的最简单方法。我有一个屏幕供用户添加课程;用户需要能够通过在弹出窗口中搜索讲师来选择讲师。
所以 - 弹出窗口将有一个文本框和一个带有结果的网格视图;单击结果中的“选择”按钮将填充呼叫表单上的讲师字段。
实现这一目标的最简单方法是什么?
sql - 如何让 SSIS 查找转换忽略字母大小写?
希望这很容易解释,但我在我的一个 SSIS 包中进行了查找转换。我正在使用它在维度表中查找员工记录的 id。但是我的问题是,一些源数据的员工姓名全部大写(例如:CHERRERA),而我使用的比较数据都是小写的(例如:cherrera)。
对于不是 100% 大小写相似的记录,查找失败(例如:cherrera vs cherrera 工作正常 - cherrera vs CHERRERA 失败)。有没有办法让查找转换忽略字符串/varchar 数据类型的大小写?
java - 没有值的Java hashmaps?
假设我想将单词放入数据结构中,并且我想进行持续时间查找以查看单词是否在此数据结构中。我只想看看这个词是否存在。我会为此使用HashMap
(containsKey()) 吗? HashMap
s 使用键-> 值配对,但在我的情况下,我没有值。当然我可以使用 null 作为值,但即使是 null 也会占用空间。似乎这个应用程序应该有一个更好的数据结构。
该集合可能被多个线程使用,但由于集合包含的对象不会改变,我认为我没有同步/并发要求。
谁能帮我吗?
hashtable - 在哈希表或排序列表中查找项目哪个更快?
在哈希表或排序列表中查找项目哪个更快?
ms-access - 如何制作一个Access TextBox,一个数字值,等于以TextBox为条件的DLookup
我真的不知道为什么这不起作用,但我试图让以下工作:
上面的代码是我正在做的一个较大项目的测试代码,所以表和字段名只是为了测试。此外,Field1 是一个数字字段。基本上,当我在 Text1 中输入 1 时,我希望 DLookup 功能在 Test1_Table.Field1 中找到 1 并给我一条消息,说明它有效。我能够让它与字符串值一起使用,例如:
同样,当在 Text1 中输入 1 时:
但是,我尝试过:
和
ETC...
我尝试了许多不同的组合,在处理数值时似乎无法使两者相等。有谁知道我错过了什么或有什么想法?
谢谢,
达米恩
ip - 在 Patricia Trie 中查找最长前缀搜索的算法/步骤
我正在实施 Patricia 尝试进行 IP 前缀查找,我可以让代码为完整的键匹配工作,但遇到前缀搜索问题,当键是其他键的前缀时,例如:
在上述情况下,任何人都可以帮助我使用前缀搜索算法我应该将它们视为单独长度的键(即/24 和 16)吗?
delphi - 如何在 Delphi 代码中以编程方式使用 InstantObjects 框架创建具有引用的对象
我正在尝试使用即时对象。我有两个简单的类 tband 和 tcountry 都被定义为存储。tband 有一个名为 tcountry 的属性,引用 tcountry 类/表。(国家是查找表)。创建新乐队时,我希望用户能够从列表/组合中选择表单中的国家/地区,然后保存乐队对象。我试过类似的东西:
CountryConnector 是一个 TInstantConnector。它有一个查询“select * from TCountry”并在 DbComboBox 中显示值。
sharepoint - 在 Sharepoint Designer 工作流程中从不同站点访问列表数据
有谁知道在使用 Sharepoint Designer 2007 创建工作流时是否可以从其他站点查找列表数据?“定义工作流查找”对话框仅允许您从要在其中创建工作流的当前 Sharepoint 站点中的列表中进行选择。理想情况下,我希望能够从父站点中的列表或给定 URL 中的站点中进行选择(例如http://myserver/mysite )