0

假设我在 db'Product''Status'.

'Product' design is: Id, Name StatusId

'Status' design is: Id, Name

“状态”数据是(例如):1-预留,2-已付费

问题是:当我想从 UI 中保留一些产品时,如何从状态表中获取正确的 ID?如何处理它们?

我有一些解决方案:请记住,1 是储备,2 是付费。另一种是使用'Key',但问题是:将来您可能会添加另一个状态,例如3-Returned。

编辑:

感谢您的回答,但问题是关于另一个问题。当您想要时会出现此问题Create new UI for reservation only,例如您为用户数据(用户名,联系人)提供输入并选择产品选项并单击“保留”按钮,之后我需要将所有数据保存在数据库中,但我需要 StatusId 作为保留状态表。How I know which record in 'Status' table is Reservation?

4

3 回答 3

0

Status每次准备视图 (UI) 数据时,从数据库中填充对象列表。这样您就可以在视图中将其显示为一些选择组合。如果您向statuses表中添加新行,下次您的列表将包含它们。如果您不经常更新您的状态,您只能在应用启动时/每个会话一次加载此列表。

编辑:通常在任何组合小部件中,您可以将选项列表定义为对(id,name)。在您的情况下,它将是 [(1, Reserved), (2, Paid)] 以便组合框的选定值是一个 id。该 id 是您保存在数据库中的内容。

于 2013-04-11T09:50:49.937 回答
0

vadchen 也是对的...我可以告诉您使用枚举 而不是使用表“状态”,并且您可以将枚举的“状态”ID 保存在“产品”表中

如果您不打算进行组合,那么您将在每个过程中管理您的类型。我的意思是这个...

进程 A 导致 1.Reserved
进程 B 导致 2.Paid
进程 C 导致 3.another Status
等等......

然后在这种情况下,您知道进程 A 总是导致 1.Reserved然后如果您有任何其他进程(如 Process C ),您必须将其管理为其他“状态”

但在我的想法中,您必须将此枚举类型编号(状态 ID)保留在“产品”表中作为“int”而不是 nvarchar 类型......如下所示:

'Product' 设计为: Id, Name , IdStatusType (as int)

那么您可以删除“状态”表,并且您知道“产品”表中的 ID 状态类型

于 2013-04-12T17:25:37.413 回答
0

在我的想法中...您可以将 FK 从“状态”转换为“产品”,如下所示:

'Product' 设计为:Id, Name , FK_IdStatus StatusId
'Status' 设计为:Id, Name

然后在 UI 中,您将所有“状态”选择到组合框中进行选择

选择 Id,Name From Status ... 并将此数据表分配给组合框数据源并选择 combobox.ValueMember= "Id" 和 combobox.DisplayMember="Name"

然后您可以通过从组合框中选择一个状态来为您的产品在 UI 中选择任何状态,
并在您的“产品”表中为每个产品存储一个 FK_IdStatus

于 2013-04-11T11:45:03.327 回答