2010-02-22 3 views
0

J'ai ceci par exemple. Code:Pourquoi la liste a-t-elle été supprimée <Entity> ne reflétant pas lorsque SubmitChanges() a été appelé?

var list = (from item in db.Table 
     select item).ToList(); 

[faire du traitement où je modifier, ajouter, supprimer des éléments à la liste avec un DX GridControl] [assurer que les articles insérés] [Je peux voir cet article (s) ne sont pas dans la liste]

db.SubmitChanges();

Modifications ne reflétant pas la base de données pour les éléments supprimés. Qu'est-ce qui ne va pas?

Répondre

1

Vous ne pouvez pas modifier la liste afin de mettre à jour la base de données. Vous devez modifier les collections d'entités de base de données. Par exemple: db.Table.Remove(instance)

Édition: Je crois que la syntaxe ci-dessus est EF4 seulement. Pour l'EF d'origine, vous devez utiliser DeleteOnSubmit, qui est une méthode sur votre conteneur d'entité.

+0

Je suppose que Anthares dit la même chose! –

0

Appliquez-vous vos modifications avec la méthode db.SubmitChanges(); sur votre contexte de données? Exemple de msdn:

var deleteOrderDetails = 
    from details in db.OrderDetails 
    where details.OrderID == 11000 
    select details; 

foreach (var detail in deleteOrderDetails) 
{ 
    db.OrderDetails.DeleteOnSubmit(detail); 
} 

try 
{ 
    db.SubmitChanges(); 
} 
catch (Exception e) 
{ 
    Console.WriteLine(e); 
    // Provide for exceptions. 
} 

Voici la source: http://msdn.microsoft.com/en-us/library/bb386925.aspx

Je ne suis pas sûr que vous pouvez alimenter les changements de votre liste à la base de données si c'est ce que vous essayez d'atteindre.

+0

Donc je devrais garder une liste avec les Ids supprimés et DeleteInSubmit (Id). Cela a du sens ... Je vais essayer. –

+0

Non, vous devez fournir des objets Entity à DeleteOnSubmit pour les mettre dans un état de suppression en attente. – anthares

Questions connexes