2010-02-17 4 views
0

J'ai une table parent, des commandes et une table des enfants, [Détails de la commande], j'ai installé les applications couramment que -nombre de lignes inattendue dans Nhibernate lors de la suppression des enregistrements parents avec enfant des enregistrements associés

(dans l'ordre des parents classe)

HasMany<OrderDetails> 
(x => x.Details).KeyColumn("OrderId").Cascade.AllDeleteOrphan().Inverse(); 

(Chez l'enfant [Order Details] classe)

References(x => x.ParentOrder).Column("OrderId").Not.Nullable().Cascade.None(); 

Je suis en train de supprimer l'objet parent en appelant -

session.Delete(parent); 
session.Flush(); 

Cela ne fonctionne que lorsqu'il n'y a qu'un seul enregistrement enfant, s'il y a plus d'un enregistrement enfant, les enfants sont supprimés, mais pas le parent !!! Et je reçois le redouté - Erreur de nombre de lignes inattendue.

Je suis sûr que c'est quelque chose de stupide que je fais, mais le chalutage à travers le web n'a rien révélé.

Merci

Répondre

1

Ok, je compris cela, il était moi d'être stupide, mais la réponse pourrait aider quelqu'un d'autre, ainsi va ici.

La table [Order Details] possède une clé composite et est liée aux tables [Orders] et [Products] (Oui, il s'agit de la base de données Northwind avec laquelle je travaille). Pour mon test, je n'avais pas mappé ma table Produits et j'avais marqué ma classe [Order Details] avec une seule clé primaire, plutôt qu'une clé composite. Ainsi, lorsque Nhibernate supprime des lignes en fonction de la clé, il s'attend à voir qu'une seule ligne est supprimée alors que plusieurs existaient sur la base de données. C'est pourquoi j'ai eu l'erreur. Plutôt intelligent de Nhibernate.

Questions connexes