假设我在db 'Product'
和'Status'
中有表格。
'Product' design is: Id, Name StatusId
'Status' design is: Id, Name
'状态'数据(例如):1-Reserve,2-Paid
问题是:当我想从UI预订某些产品时,如何从状态表中获取正确的ID?如何处理它们?
我有一些解决方案:请记住,1是预留,2是付费。另一个是使用'Key',但问题是:将来你可能会添加另一个状态,例如3-Returned。
编辑:
感谢您的回答,但问题是另一个问题。
当您想要Create new UI for reservation only
时,会出现此问题,例如您提供用户数据的输入(用户名,联系人)和选择产品选项并单击“保留”按钮,之后我需要将所有数据保存在数据库中,但是我需要StatusId作为状态表中的保留。 How I know which record in 'Status' table is Reservation?
答案 0 :(得分:0)
每次准备视图(UI)数据时,都会从数据库中填充Status
个对象的列表。这样您就可以在视图中将其显示为某些选择组合。如果您向statuses
表添加新行,下次您的列表将拥有它们。
如果您不经常更新状态,则只能在每个会话的应用开始/一次加载此列表。
编辑: 通常在任何组合小部件中,您可以将选项列表定义为对(id,name)。在你的情况下,它将是[(1,保留),(2,付费)],因此组合框的选定值是一个id。该ID是您在数据库中保存的内容。
答案 1 :(得分:0)
在我的想法中......您可以将FK从“状态”变为“产品”,如下所示:
'产品'设计是:Id,Name,FK_IdStatus StatusId
'状态'设计是:Id,Name
然后在UI中您将所有“状态”选择到组合框中以选择
选择Id,Name From Status ...并将此数据表分配给combobox数据源并选择combobox.ValueMember =“Id”和combobox.DisplayMember =“Name”
然后,您可以通过从组合框中选择状态来为UI中的产品选择任何状态 并且在“产品”表中存储了每个产品的FK_IdStatus
答案 2 :(得分:0)
vadchen也是对的...我可以告诉你有枚举而不是拥有“状态”表格,你可以在“产品”表格中保存枚举的“状态”ID
如果您不打算使用组合,那么您将在每个过程中管理您的类型。 我的意思是......
过程A导致1.Reserved
过程B导致2.Paid
进程C导致3.另一个状态
等等...
然后在这种情况下,您知道进程A总是导致1.Reserved 然后如果您有任何其他进程(如进程C),您必须将其管理到其他“状态”< BR />
但在我的想法中,您必须将此枚举类型编号(状态ID)保留在“产品”表中作为“int”而不是nvarchar类型...如下所示:
'产品'设计是:Id,Name,IdStatusType(as int)
然后您可以删除“状态”表格,并在“产品”表格中了解ID的状态类型