8
votes

Nibernate fluide Aucune colonne d'identité dans le tableau

Comment spécifier avec la mappage fluide NHibernate pour une table qui n'a pas de colonne d'identité?

Je veux quelque chose comme ceci: xxx

Je veux dire aucune clé primaire définie dans la base de données (pas très définie dans la base de données).


0 commentaires

3 Réponses :


12
votes

J'ai trouvé la réponse à:

  public CustomerNewMap()
  {
        WithTable("customers_NEW");
        Not.LazyLoad();
        Id(x => x.Username).GeneratedBy.Assigned();
        Map(x => x.Company);
  }


1 commentaires

Si j'essaie tout cela, tous les objets avec la même clé (dans votre exemple X.Username) sont en réalité des copies du premier qui obtiennent extrait de la DB.



0
votes

J'ai trouvé que je devais définir explicitement un nom de colonne dans un cas similaire. Quelque chose comme xxx


0 commentaires

5
votes

Cela ne répond pas directement à la question. Mais il répond au problème dans le commentaire à la réponse acceptée ici.

Nous avons eu le même problème avec une vue SQL sur notre grand livre. Le problème est que NHibernate va heureusement des lignes en double lorsque la propriété ID n'est pas unique. Dans notre cas .. Nous avions des entrées de premier plan qui avaient le CustomerAccoundID définir comme indice ID .. qui n'était pas unique dans la vue. Pour contourner cela .. J'ai cartographié un compositeur qui était basé sur tout ce que je pouvais trouver cela rendait la rangée unique. Dans notre cas, il s'agissait d'une combinaison de CustomerAccounterid et weekending : xxx

c'était suffisant pour avoir NHibernate pas de carte DUPLICATES.


0 commentaires