2010-07-04 6 views
0

Je suis un problème avec Entity Framework 4.0contrôle Concurrency échoue avec des données hiérarchiques EF 4.0

J'ai une table hiérarchique Catégorie: Id, Nom, ParentCategory_Id, horodatage

Le champ "horodatage" est marqué comme " Concurrency Mode "=" Fixed "

Et j'utilise Self-Tracking Entity" Category "pour gérer l'entité Category dans mon application MVC.

La situation:

  1. Je crée STE "NewCategory",
  2. ensemble Nom du champ = 'Bla-Bla'
  3. Créer un nouveau STE "ParentCategory" comme ceci: var ParentCategory = new Category{Id=45}; ParentCategory.MarkAsUnchanged(); NewCategory.Parent = ParentCategory;
  4. Appel Méthode ApplyChanges() dans mon contexte STE et appel SaveChanges()
  5. La requête est "Update Category set Name = ...." !!!!!!

Si je le fais NewCategory.Parent = null OU définir "Concurrncy Mode" = "Node" dans le modèle tout fonctionne FIN. Comment utiliser les données hiérarchiques avec la vérification de la simultanéité?

+0

Pouvez-vous s'il vous plaît poster l'ensemble du bloc de code? – jfar

+0

Question et le problème ne sont pas claires, s'il vous plaît reformuler. –

Répondre

0

J'ai résolu ce problème. La solution est que l'EF4.0 ne peut gérer ces situations que si vous utilisez les propriétés FK Assotiation.

Dans cet exemple la bonne façon de le faire:

1) Créer soi assotiation dans l'entité de catégorie dans le modèle edmx. Dans "Contrainte de référence", créez un lien avec l'entité parente via la propriété ParentCategory_Id.

2) Créer une nouvelle instance de catégorie STE.

3) Set relation:

NewCategory.ParentCategory_Id = 45; 

4) applyChanges, SaveChanges.

Questions connexes