49 votes

nHibernate, Pas de ligne avec l'identifiant donné existe

J'ai une cartographie des lignes de cette.

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="Model.Entities" schema="etl" assembly="Model" default-lazy="false">
  <class name="Model.Entities.DataField, Model" table="mdm_field">
    <id name="FieldId" column="field_id" type="int">
      <generator class="native" />
    </id>
    <many-to-one name="KeyField" class="Model.Entities.Key, Model" column="field_id" />
  </class>
</hibernate-mapping>

Maintenant dans la base de données de la field_id dans le mdm_field table a parfois une valeur qui n'existe pas dans la key_field de la table, de sorte qu'il est fondamentalement brisé l'intégrité référentielle. De ce fait, lorsque je charge l'entité j'obtiens une erreur "Pas de ligne avec l'identifiant donné existe". Comment puis-je configurer le mappage de travailler avec cette situation afin de ne pas mourir sur cette situation.

78voto

Craig Points 15049

Ok, j'ai trouvé la réponse. Ajouter l'

not-found="ignore"

attribut de la propriété Keyfield..

5voto

Shagglez Points 847

Dans mon cas, le problème a été en raison d'une contrainte de clé étrangère n'a pas été appliquée par le moteur MyISAM et, par conséquent, l'une des lignes fini pointant vers un non-nulle valeur et le proxy généré une exception. Je voudrais vous recommandons de vérifier votre jeu de données est cohérente dans ce cas.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X