日期:2014-05-20  浏览次数:20889 次

Linq里是否解决主从表插入并发的问题?
Linq里是否可以主从表插入并发的问题?我从表中的外键是参照主表中自增字段主键!为了保证数据库的完整性!我应该如何操作啊?是否要写存储过程?小弟刚学Linq,好多不懂!请高手指点!

------解决方案--------------------
数据库跟Linq有什么关系?Linq是一个查询驱动架构,每一种数据库假设使用Linq,它做了provider并且扩展许多机制才能用。你说的那些跟Linq没有关系,你应该说清楚你用的具体是什么东西?!
------解决方案--------------------
欢迎广大热爱LINQ技术的朋友加群 78817973 做技术交流
------解决方案--------------------
探讨
引用:
还有个方法,新建一个存储过程,插入数据,用这个存储过程返回自增ID,

是的存储过程是可以的!在Linq中用存储过程,不是很会。有点麻烦!我想看大家是不是有其他更好的解决办法。

------解决方案--------------------
不用存储过程,我给你弄出来了!你看看!
C# code

 CSDNDataContext db = new CSDNDataContext();
            department dept = new department();
            employee ey = new employee();
            dept.name = "社会部";
            ey.deptId = dept.id;
            ey.name = "lester";
            dept.employee.Add(ey);
            db.department.InsertOnSubmit(dept);
            db.SubmitChanges();

------解决方案--------------------
还以为楼主是想要讨论 并发冲突 的问题,原来是问这么简单的问题。

关于实体的并发冲突:
LINQ to SQL 默认使用共享并发冲突;
ADO.NET Entity Data Model 默认使用乐观并发冲突。

回到楼主1楼的问题,不管理是使用 LINQ to SQL 还是 ADO.NET Entity Data Model ,对于一起新增的主实体与子实体,在调用了 SubmitChanges() 或 SaveChanges() 后,子实体的外键字段是会自动根据主实体的主键而被赋值的,这种机制是 LINQ to SQL 、 ADO.NET Entity Data Model 都具有的,不需要人为去干涉。楼主自己动手试一下不就清楚了?

对于在更改主实体时,新增的子实体也是同样的。
------解决方案--------------------
探讨
数据库跟Linq有什么关系?Linq是一个查询驱动架构,每一种数据库假设使用Linq,它做了provider并且扩展许多机制才能用。你说的那些跟Linq没有关系,你应该说清楚你用的具体是什么东西?!

------解决方案--------------------
探讨
虽然你会使用linq解决8皇后问题,但你还是不了解linq to sql的应用...

------解决方案--------------------
其实楼主的问题很简单,无非就是使用linq插入数据,如果获取刚刚插入数据的自增长ID。
http://www.8585592.cn/post/59.html,看一下这个就明白了。