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

linq to sql 添加数据时有外键报错
有三个表,user,role,userinrole
userinrole表中有两个外键,分别是user的主键和role的主键字段
当为userinrole表赋值,报出异常:
不能添加其键已在使用中的实体。
客户端代码:
List<UserInRoles> temp = new List<UserInRoles> ();
foreach()
{
UserInRoles ur=new UserInRoles();
ur.User=db.User.SingleOrDefault(u=>u.ID==1);
ur.Role=db.Role.SingleOrDefault(r=>r.ID==1);
ur.id = xxxxxx;
temp.Add(ur);
}
通过WCF传输ur对象
WCF服务端代码
pbulic void Test(List<UserInRoles> temp)
{
db.InsertAllOnSubmit(ur);
db.SummitChanges();
}
昨天发了个贴 http://topic.csdn.net/u/20110624/17/802fbfb6-0d5c-42f5-9a72-13abb560c9c5.html
问题解决了,今天又碰到这个情况,很奇怪的是,报出来的错误却是不同了
昨天在服务端的做法稍有不同
C# code

foreach (UserInRoles uinr in userinrolelist)
{
                    UserInRoles tempu = new UserInRoles();
                    tempu.UserInRoleID = uinr.UserInRoleID;
                    tempu.UserID = uinr.UserID;
                    tempu.RolesID = uinr.RolesID;
                    db.UserInRoles.InsertOnSubmit(tempu);
 }

db.SubmitChanges();


但是今天碰到问题,采用相同方法也不行,还是报出
不能添加其键已在使用中的实体。的异常。
请问这如何解决?

------解决方案--------------------
主键重复