2016-10-13 5 views
0

У меня есть таблица «Требование» с подключением к «MobClaim». «Требование» может содержать 0 или 1 «MobClaims». Я не могу понять, как вставить «претензию», в то же время вставляя «MobClaim» с использованием Linq to SQL.Linq to SQL Добавить объект с дочерними объектами

Dim newClaim As New Claim With {.ClaimTypeId = 1, 
           .DateCreated = DateTime.Now, 
           .ClaimStatusId = 2 
           } 
Dim newMobClaim = New MobClaim() With {.AccountNumber = data.AccountNumber} 

Обе таблицы имеют IDENTITY (1,1) на их первичных ключей, поэтому база данных генерирует тир идентификаторы. MobClaimId (первичный ключ) подключен к DataId (внешний ключ) по требованию. Когда я пытаюсь добавить MobClaim в коллекцию MobClaims на Претензии, я получаю одну ошибку; когда я пытаюсь добавить MobClaim отдельно, а затем обновить DataId на претензии, я получаю другую ошибку.

ответ

0

На самом деле, что я в конечном итоге делает изменял столы ...

То, что я пытался сделать, это:

Используйте Claim.DataId -> MobClaim.MobClaimId (первичная).

Я изменил его:

A 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 

Это должно быть что-то о том, как отношения устанавливаются и как вы можете добавить материал. Вы можете использовать первичный ключ в родительской таблице и ссылаться на внешний ключ в дочерней таблице - я делал все наоборот.

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 
+0

Я пробовал это, но, вероятно, из-за столбцов/ключей, которые я пытался использовать, это не сработало. –

 Смежные вопросы

  • Нет связанных вопросов^_^