NHibernate Exceptions GenericADOException
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:
Citation:
{"could not delete collection: [Core.Domain.Model.Dinners.RSVPs#66][SQL: UPDATE RSVP SET DinnerID = null WHERE DinnerID = @p0]"}
Il veux mettre à jour la table RSVP alors que je veux qu'il supprime les données!
Voici le code:
DinnersRepository
Code:
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 |
Dinners.hbm.xml
Code:
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> |
Rsvp.hbm.xml
Code:
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> |
DinnersControllers.cs
Code:
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");
}
} |
Merci d'avance