日期:2014-05-17  浏览次数:20531 次

entity framework,主从表,事务自增键问题
主表:Product,主键自增键ProductId

从表:Book,主键ProductId

产品添加时,同时向product和book两张表中插入数据,为了不产生冗余数据和错误数据,使用事务。

问题来了,事务中,product.addObject后,不调用savechange,无法获得自增键值。


奇怪的是,有的时候可以,好像在EntityFramwork中设置Product和book表主外键关系。即使没有调用savechange,也能获取到自增键值。


我现在不明白,到底什么时候可以获到,什么时候不可以,有点乱。

------解决方案--------------------
即使没有调用savechange,也能获取到自增键值。
 没懂,,
这个是保存啊,,,
------解决方案--------------------
select @@ideintity 可获取这个ID

@@ideintity 是 SqlServer 特有的。
而且必须紧跟在 insert 语句之后才能返回有值。
如果调用触发器,触发器也有新增,而且有自增,那返回的是触发器里的自动编号。
最好用 SCOPE_IDENTITY( )。

可以通过别的方式来取得编号,
比如如果表有一个 名称字段,是唯一索引,
那可以通过名称来取自动编号值。


------解决方案--------------------
select max(ProductId) from Product
------解决方案--------------------
select scope_identity()