在一个表中插入一行,其中2行具有外键和其他行(linq)

时间:2013-11-18 08:11:17

标签: c# sql linq

假设我有2张桌子,人和分享。

tblPerson
username(varchar)

和表共享

tblsharing
sharingperson (varchar) link to table person
sharedperson (varchar)  link to table person

我正在尝试在表共享中插入一个新行,但它说“对象引用未设置为对象的实例”。 这是我的代码,temp是tblSharing的新实例

 tblSharing temp= new tblSharing();
 temp.sharingperson = db.tblPersons.Single(x =>x.username==strSharingPerson).username;
 temp.sharedperson = db.tblPersons.Single(x => x.username == sharedperson).username;                    
 db.tblSharings.InsertOnSubmit(temp);

我尝试了另一种方式只是分配文字:

temp.sharingperson = "username_sharing"
temp.sharedperson = "username_shared"                    
db.tblSharings.InsertOnSubmit(temp);

有谁知道如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

您发布的代码中有4件事可以为null。 如果你告诉我们你在哪一行得到错误,也许我们可以缩小范围:)

1)db.tblPersons.Single(x => x.username == strSharingPerson)可以为null - 但你说你检查过它并不是......

2)db.tblPersons.Single(x => x.username == sharedperson)同样的故事

3)temp可以为null,但是你说你在分配任何内容之前就创建了它。

4)db也可以为null。如果您已在数据库中检查了这些记录是否存在,那么这并不意味着您在代码中与实时连接进行通信。在调试时,您的数据库是设置为正确的实例,还是为空?

如果这些事情中的所有4个都不为空,那么我认为你的代码应该可行。 如果不是这种情况,我们要么在这里缺少相关代码,要么就是其他相关信息,你应该向我们提供它(例如,确切的行yu得到异常:))