与SQL Server 2K8从c#我试图做记录的批量插入/更新到父/子表优化。
插入/更新将自动生成一个键,我想通过OUTPUT等提取,然后在域模型中重新分配。对于批处理插入,我需要跟踪哪个新生成的ID属于批处理列表中的哪个域对象。
这个例子接近我所需要的,但是我想知道是否有一种方法可以不向表(SequenceNumber)添加额外的列,并且仍然达到相同的结果:http://illdata.com/blog/2010/01/13/sql-server-batch-inserts-of-parentchild-data-with-ibatis/
ie。我们是否可以依赖从OUTPUT生成的插入到临时表中的顺序,或者在数据模型上传递一个ref GUID集,并将其临时传递给SQL仅用于引用目的?
在SQL Server 2008中,可以使用merge和output来获得生成的键和staging表中使用的键之间的映射。
看看这个问题。使用merge..输出来获取源之间的映射。Id和target.id
除非我误解了…
代理键(IDENTITY或NEWID等)不是您的实际对象标识符。这是一个实现细节,没有内在意义。
您必须有另一个标识符(名称,ISBN,序列号,交易代码/日期等),这是真实的(自然的)密钥。
OUTPUT子句可以返回代理键和自然键。然后使用它来映射