类似的情况:How to add several dependent records with LINQ2SQL
(这似乎合乎逻辑,但对我不起作用)

ASP.NET MVC + Linq2SQL

我有2张桌子,称为挑战和参与者。


挑战{ChallengeId,
ChallengeDesc,applicantId,
responseantId}
参与者{PartitionId,FirstName,LastName}


参与者和挑战之间存在1-许多关系-每个键1(applicantId,RespondantId)。

我有一个输入表单,该表单收集所有字段以创建新的申请人和被申请人以及挑战。 Databinder将所有字段正确绑定到Challenge及其子参与者,但是,当浏览Linq2Sql创建的结构时,参与者对象的名称与质询对象中的键名不匹配(applicantId与Participant对象匹配,responantId与Participant1匹配)目的)。

因此,当我尝试在InsertOnSubmit(aChallenge)之后提交SubmitChanges()时,我从Linq2Sql返回了foreign_key约束验证消息。在SQL Server Profiler中,可以看到正在正确创建参与者,但是在保存挑战时,这些新插入的参与者的ID并未设置为挑战对象,因此系统抛出了外键冲突消息。

我该如何克服?

最佳答案

我认为您必须以这种方式编写(假设您有课堂参与和挑战课程):

Participant applicant = new Participant();
Participant respondant = new Participant();
//update your participants here

Challenge insertedChallenge = new Challenge();
//update your challenge values here

applicant.Challenges.add(insertedChallenge);
respondant.Challenges1.add(insertedChallenge);

submitChanges();


Linq-to-SQL应该自动分配这些属性(挑战和挑战),以便它可以为您设置键值。

希望能帮助到你。

08-06 01:19