2010-12-05 4 views
0

je suis arrivé les tableaux avec les relations valides comme indiqué ci-dessous:SubmitChanges d'insérer un nouveau record pour relation étrangère au lieu d'utiliser l'assigné un

Report 
     ------>ReprotDataSource 
       --------->SharePointDomain 

Maintenant, quand je effectuez les opérations suivantes (lien entre le nouveau ReprotDataSource à la Sélection SharePointDomain) il insertes un nouveau SharePointDomain enregistrement au lieu de refrence au SharePointDomain avec id (2)

//Create new Object 
ReportDataSource rprtDS = new ReportDataSource 
{ 
    Name = rprtDSSelected.Name, 
    Parent = rprtDSSelected.Parent, 
    CreatedBy = Environment.UserName, 
    CreationDate = DateTime.Now, 
    Source = rprtDSSelected.Source, 
    Type = rprtDSSelected.Type 
}; 

    if (rprtDS.Type == "SP List") 
    //here is the issue 
    rprtDS.SharePointDomain = selectedSharePointDomain;//its id = 2 
    //Add to EntitySet 
    TheReport.ReportDataSources.Add(rprtDS); 
    TheReport.Save(); 

il fonctionne très bien quand je définir l'ID à mon auto (2)

des explications?

Merci d'avance.

Répondre

1

L'objet que vous ajoutez doit provenir du même contexte de données, sinon il sera considéré comme un insert implicite. Je suppose que cet objet vient d'ailleurs; un contexte de données précédent peut-être. C'est difficile si vous mettez en cache l'objet entre les requêtes. Peut-être simplement définir l'identifiant à la place ...: p

Vous pourriez avoir un peu de joie détacher et attacher si nécessaire, mais cela ne vaut probablement pas la peine.

+0

ops il est venu former un autre dataContext :), le réglage de l'id est assez maintenant je étais juste curieux de connaître ce comportement. Je vous remercie. –

Questions connexes