Bonjour à tous,
Je suis en train de modifier le projet NerdDinners afin de pouvoir utiliser NHibernate. Pour le moment je peux créer, modifier. Pour ce qui est de la suppression...impossible. Je comprend pas vraiment le message d'erreur:
Il veux mettre à jour la table RSVP alors que je veux qu'il supprime les données!{"could not delete collection: [Core.Domain.Model.Dinners.RSVPs#66][SQL: UPDATE RSVP SET DinnerID = null WHERE DinnerID = @p0]"}
Voici le code:
DinnersRepository
Dinners.hbm.xml
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 #region IRepository Delete void IRepository<Dinners>.Delete(Dinners entity) { using (ISession session = NHibernateHelper.OpenSession()) { using (ITransaction transaction = session.BeginTransaction()) { session.Delete(entity); transaction.Commit(); } } } #endregion
Rsvp.hbm.xml
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
21
22
23
24
25
26
27
28
29
30
31
32 <?xml version="1.0" encoding="utf-8" ?> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="Core.Domain.Model" assembly="Core"> <!-- Mappings for class 'Dinners' --> <class name="Dinners" table="Dinners"> <cache usage="read-write"/> <!-- Identity mapping --> <id name="DinnerID" column="DinnerID" type="System.Int32"> <generator class="identity"/> </id> <property name="Title"/> <property name="EventDate"/> <property name="Description"/> <property name="HostedBy"/> <property name="ContactPhone"/> <property name="Address"/> <property name="Country"/> <property name="Latitude"/> <property name="Longitude"/> <!-- One-to-many mapping: RSVP --> <bag name="RSVPs" table="RSVP" cascade="all" lazy="false" > <key column="DinnerID"/> <one-to-many class="RSVP"/> </bag> </class> </hibernate-mapping>
DinnersControllers.cs
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 <?xml version="1.0" encoding="utf-8" ?> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="Core.Domain.Model" assembly="Core"> <class name="RSVP" table="RSVP"> <id name="RsvpID"> <column name="RsvpID" /> <generator class="native" /> </id> <property name="AttendeeName" /> <many-to-one name="Dinner" class="Dinners" column="DinnerID" cascade="all" lazy="false"/> </class> </hibernate-mapping>
Merci d'avance
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
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46 // //GET:/Dinners/Delete/2 public ActionResult Delete(int id) { Dinners dinner = dinnerRepository.GetById(id); if(dinner.HostedBy!=User.Identity.Name) { return View("InvalidOwner"); } if (dinner == null) { return View("NotFound"); } else { return View(dinner); } } // //POST: /DInners/Delete/2 [AcceptVerbs(HttpVerbs.Post)] public ActionResult Delete(int id, string confirmButton) { Dinners dinner = dinnerRepository.GetById(id); if (dinner.HostedBy != User.Identity.Name) { return View("InvalidOwner"); } if (dinner == null) { return View("NotFound"); } else { dinnerRepository.Delete(dinner); dinnerRepository.Save(dinner); return View("Deleted"); } }
Partager