2010-06-29 8 views
0

J'ai créé deux objets distincts, l'un de classe Order et l'autre de classe TempOrder. Lorsque j'essaie d'insérer l'objet TempOrder dans la base de données en utilisant db.TempOrders.InsertOnSubmit (obj), puis en appelant db.SubmitChanges, l'objet Order est également soumis (sans être lié au datacontext ou à quoi que ce soit). Il n'y a pas de relation entre les deux objets dans la base de données, mais j'ai créé une fonction membre simple dans les classes pour créer un objet Order quand vous avez le TempOrder et vice versa (toNewOrder - toNewTempOrder). Le code que je utilise peut être vu ci-dessous:LINQ DataContext insère un objet qui n'est pas attaché

if(order.PaymentType == "Paypal") 
{ 
    TempOrder temp = new TempOrder(); 
    temp = order.ToNewTempOrder(); 
    db.Add(temp);//Add is calling datacontext.TempOrders.InsertOnSubmit and datacontext.SubmitChanges 
} 

Lorsque db.Add (temp) est appelé le changeset contient l'objet temp et l'objet de commande aussi bien. Comment puis-je éviter ça? Est-ce que je fais quelque chose de mal? Est-ce dû à la fonction .toNewTempOrder()? Je suis coincé là-dessus.

+0

Est-ce que TempOrder hérite de Order? –

+0

Non. Deux classes différentes sans relation (deux tables différentes sans fc), juste cette fonction qui copie les propriétés d'un objet à l'autre que j'ai décrites ci-dessus. – gmakrygiannis

+0

Pouvez-vous écrire du code pour la méthode 'ToNewTempOrder()'? – decyclone

Répondre

0

Comment votre code a-t-il obtenu cet objet de commande que nous voyons dans l'extrait?

Etes-vous sûr que l'un ne dérive pas de l'autre dans votre code C#? Les tables SQL qu'ils représentent peuvent toujours être totalement déconnectées si les classes C# ont été fabriquées à la main.

Est-ce que db.Add (...) est surchargé ou prend un type de base, puis prend une décision basée sur le type réel de l'argument?

Questions connexes