我有员工数据捕获应用程序。.net和t-sql。
它有许多查找(元数据)表,用于填充UI中的下拉列表。例如:“部门”。每个查找表都有活动标志。有时,此标志设置为false。这意味着我不应该在下拉列表中加载那些不活动的“部门”。这完全适用于添加新员工的场景。但在编辑员工场景中,如果某个查找记录( Department-HR )碰巧处于非活动状态,但由于某种原因与该员工相关联,我就会遇到一个问题,即下拉列表中缺少Department-HR。
我知道这个问题看起来很傻。我可以将EmployeeId和load Active +所有相关部门传递给EmployeeId,但我想知道一种更智能、更干净的方法来处理这种情况。
发布于 2012-09-06 20:57:38
好吧,一种方法是防止删除一个部门,如果它是由一个雇员首先使用。如果用户在可能导致员工数据无效的情况下收到问题通知,将会对用户更有帮助。
如果您的数据库中有一个Employees
和Departments
表(具有一对多或多对多关系),那么您应该配置适当的外键。如果您实际上是从Departments
表中删除部门行(而不是将它们标记为非活动),那么很明显,如果有任何员工记录引用了要删除的部门,那么您将得到一个外键冲突。
如果您将部门标记为“非活动”,那么当用户尝试将该部门标记为非活动时,您的UI可能会显示引用该部门的员工列表。然后,可以为他们提供一个UI,用于将员工分配到另一个部门。
无论哪种方式,我都不确定为什么有专门用于填充部门下拉列表的表?为什么不直接从Departments
表中填充呢?添加新员工屏幕和编辑员工屏幕可以查询以获得所有活动部门的列表,编辑屏幕还可以检查员工当前部门的活动状态,然后在用户进入编辑屏幕时提示用户重新分配员工。
https://stackoverflow.com/questions/12308096
复制