注意1: 我重新表述了问题。现在它由供应商和订单组成,而不是汽车和零件。
注意2: 这个问题是假设性的。我的目标是了解如何创建对象计数器。
为了符合监管要求,我需要为每个供应商逐个编号每个订单。
我正在使用带有Sql Server的'Entity Framework'。
在我的假设性示例中,我有一个Supplier
类和一个Order
类。
每个供应商都有订单。每个订单都有一个产品和一个数量。这意味着它说明了从供应商订购了哪个产品以及订购了多少个。
我需要能够创建计数器,就像自动递增的数字一样,来计算每个供应商的订单。
出于监管原因,每个供应商必须按照创造顺序顺序编号其订单,并仅使用整数。
当我们检查一个订单时,通过其 OrderCountForSupplier
列,我们应该知道它的创建顺序(仅使用 DateTime / TimeStamp
列是不够的,监管机构要求这样的计数器)。为了简化这个问题,订单不能被删除(状态可以改变,但不能删除)。
对我来说,拥有包含技术/编程方式的解决方案非常重要,而不仅仅是理论方式。
我制作了一张图表,以最清晰的方式解释我的问题:
我有一个可能有效的方法,并且很乐意听取反馈意见。
我在考虑使用外部表来保存计数器。类似于:
Supplier Order Counters Table
| SupplierId | OrderCountForSupplier
------------------------
| 54654 | 3
| 78787 | 2
| 99666 | 4
我需要一个触发器来在每次插入时为每个供应商递增OrderCountForSupplier
计数器吗?
如果不需要-如何以安全的方式进行递增?(例如,避免两个进程竞争获取下一个计数器并将其递增,这可能最终导致重复的订单计数)。
另外一个注意点:
这是否可以通过Entity Framework
完成?如果不能-则可以使用Sql Server
解决方案。
Part_Id
和PartName
两个字段。还需要另一个名为CarParts
的表,其中应该有Car_Id
和Part_Id
两个字段。 - Kosala WA车
可能有20个零件,B车
可能有30个零件。但是每个零件都是具体的,并且只与一辆汽车相关联。如果有一个名为CarParts
的连接表来保存Car_Id
和Part_id
,那么Parts Table
的PK将是什么?请记住,每个零件都必须与其所属的特定汽车相关联。 - ilans