我有一个表“Claim”,其中包含与“MobClaim”的连接。 “Claim”可以有0或1个“MobClaims”。在使用Linq to SQL插入“MobClaim”的同时,我似乎无法弄清楚如何插入“Claim”。
Dim newClaim As New Claim With {.ClaimTypeId = 1,
.DateCreated = DateTime.Now,
.ClaimStatusId = 2
}
Dim newMobClaim = New MobClaim() With {.AccountNumber = data.AccountNumber}
两个表的主键上都有IDENTITY(1,1),因此数据库会生成其他ID。 MobClaimId(主键)连接到Claim上的DataId(外键)。当我尝试将MobClaim添加到声明的MobClaims集合时,我收到一个错误;当我尝试单独添加MobClaim然后更新Claim上的DataId时,我得到一个不同的错误。
答案 0 :(得分:0)
首先使用主键插入一个,然后将另一个记录上的外键设置为自动生成的主键。
Using dc As New YourLinq2SqlDataContext()
Dim newMobClaim = New MobClaim() With
{
.AccountNumber = Data.AccountNumber
}
dc.MobClaims.InsertOnSubmit(newMobClaim)
dc.SubmitChanges()
Dim newClaim As New Claim With
{
.ClaimTypeId = 1,
.DateCreated = DateTime.Now,
.ClaimStatusId = 2,
.DataId = newMobClaim.MobClaimId
}
dc.Claims.InsertOnSubmit(newClaim)
dc.SubmitChanges()
End Using
答案 1 :(得分:0)
实际上,我最终做的是改变表格......
我试图做的是:
使用Claim.DataId - > MobClaim.MobClaimId(主要)关系。
我把它改为:
Claim.ClaimId(主要) - > MobClaim.ClaimId的关系。
现在它的工作原理如下:
Dim newClaim As New Claim With {.ClaimTypeId = 1,
.DateCreated = DateTime.Now,
.CreatedBy = 3,
.ClaimStatusId = 4
}
newClaim.MobClaims.Add(New MobClaim() With {.AccountNumber = data.AccountNumber})
Using service As New ClaimsService
service.SaveClaim(newClaim) 'InsertOnSubmit/SaveChanges etc...
End Using
必须关注如何建立关系以及如何添加内容。您可能必须使用父表上的主键并链接到子表上的外键 - 我几乎正在做相反的事情。