2010-02-08 3 views
0

Je le modèle de données simple:LINQ to SQL mise à jour ne fonctionne pas correctement

Resource 
{ 
    ResourceId 
    ResourceName 
} 

UsageType 
{ 
    UsageTypeId 
    UsageTypeName 
} 

Usage 
{ 
    UsageId 
    UsageTypeId 
    ResourceTypeId 
    Percentage 
} 

Quand je change les UsageTypeId, ResourceTypeId et Percentage valeurs sur un objet Usage et que je lance SubmitChanges() LINQ to SQL émet uniquement une instruction SQL pour modifier la valeur Percentage (surveillée via SQL Profiler).

Si je parcours le code, je vois les propriétés définies pour UsageTypeId et ResourceTypeId avec les valeurs correctes, mais elles ne le font jamais dans la base de données. Les propriétés conservent les valeurs correctes jusqu'à ce que SubmitChanges() soit appelée.

Je fais des changements comme suit:

Usage usage = {get the Usage object from the datacontext}; 
usage.ResourceId = newValue1; 
usage.UsageTypeId = newValue2; 
usage.Percentage = newValue3; 

Ce qui est vraiment ennuyeux est que si j'appelle la méthode à partir d'un dispositif d'essai fonctionne correctement et met à jour la base de données, mais lorsqu'il est appelé de nulle part ailleurs que le pas les colonnes de clé étrangère sont mises à jour.

James :-)

Répondre

0

Vérifiez tout d'abord si vous utilisez le Usageld dans la clause where pour obtenir l'utilisation appropriée.

Vérifiez ensuite si ces propriétés (resourceID et UsageTypeID) sont faits en lecture seule dans le DBML.

Espérons que cela aide.

Merci, Raja

+0

Readonly est définie sur false, et les autres propriétés sont mises à jour. Lorsque vous parcourez le code, les propriétés de ResourceID et TypeID sont définies et le code de concepteur en cours d'exécution. – m0gb0y74

+0

Consultez ce lien: http://www.codeproject.com/Messages/2918828/LINQ-to-SQL-bug-when-updating-foreign-key-fields.aspx Espérons que cela vous aide. – Raja

Questions connexes