Bonjour,
Voici mon problème : je n'arrive pas à effectuer un Delete en cascade avec NHibernate.
- Mes 2 tables :
Produit (id(PK), name)
Reference (id(PK), reference, produit_id(FK))
Un produit peut avoir plusieurs références.
- Mes 2 classes :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 private int id; private string name; private IList referencesList; public int Id { get { return id; } set { id = value; } } public string Name { get { return name; } set { name = value; } } public IList ReferencesList { get { return referencesList; } set { referencesList = value; } }- Mes 2 fichiers de mapping
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 private int id; private string reference; private Produit produit; public int Id { get { return id; } set { id = value; } } public string Reference { get { return reference; } set { reference = value; } } public Produit Produit { get { return produit; } set { produit= value; } }
- Dans mon code C# :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 <class name="Produit" table="Produit"> <id name="Id" column="id"> <generator class="native"/> </id> <property name="Name" column="name" /> <!-- Linked objects list --> <bag name="ReferencesList" cascade="all"> <key column="produit_id" /> <one-to-many class="Reference" /> </bag> </class> <class name="Reference" table="Reference"> <id name="Id" column="id"> <generator class="native"/> </id> <property name="Reference" column="reference" /> <!-- Linked object --> <many-to-one name="Produit" class="Produit" column="produit_id" not-null="true" cascade="delete" /> </class>
J'ai un objet Produit p (qui contient une liste de Reference). Lorsque j'appelle la méthode Delete(p) j'obtient une erreur :
"Cannot insert the value NULL into column 'produit_id'"
J'ai bien compris qu'il y a un problème avec la suppression des références mais je ne vois pas d'où ça vient. Sans doute du fichier de mapping non?
Partager