我需要将校准同时存储到两个表中,其中一个表描述校准实例(操作员、日期、站点),另一个表将原始数据存储在多行中(9 或 10 对波长和响应度用于单次校准)。其架构如下:
校准示例:
SpectrometerCalibration.ID = 所有校准点的 SpectrometerCalibrationID。我尝试过的(在 vb.net 中实际使用 LINQ to SQL,所以将其视为伪代码)
INSERT INTO SpectrometerCalibration (StationID, OperatorID, Date) VALUES (7, 2, '2013/10/21 11:00:00.000 AM')
SELECT TOP 1 ID FROM SpectrometerCalibration ORDER BY ID DESC
-- Insert once for each wavelength / responsivity pair
INSERT INTO SpectrometerCalibrationValues (SpectrometerCalibrationID, Wavelength, Responsivity) VALUES (<from previous query>, <wl>, <val>)
此解决方案存在时间问题。如果两个站点同时校准,可能会返回不正确的 ID。我认为这是糟糕的设计。试图避免这种方法。
我在 SO 上看到了许多更复杂的问题,但似乎没有一个能解决我的问题。我认为有一个标准的方法可以正确地做到这一点。不,我无法更改此架构。我在 vb.net 中使用 LINQ to SQL。有更好的方法吗?