41 votes

La cartographie des clés Composites dans NHibernate Fluent

Je suis nouvelle dans NHibernate fluent. Maintenant je fais face à un problème avec la cartographie des clés composites. Quelqu'un peut-il point de l'URL ou de l'échantillon s'il vous plaît?

53voto

James Gregory Points 10400

Il y a un CompositeId méthode.

public class EntityMap : ClassMap<Entity>
{
  public EntityMap()
  {
      CompositeId()
      .KeyProperty(x => x.Something)
      .KeyReference(x => x.SomethingElse);
  }
}

5voto

si c'est votre première classe

public class EntityMap : ClassMap<Entity>
{
  public EntityMap()
  {
    UseCompositeId()
      .WithKeyProperty(x => x.Something)
      .WithReferenceProperty(x => x.SomethingElse);
  }
}

voici le deuxième avec une référence à l'Entité

public class SecondEntityMap : ClassMap<SecondEntity>
    {
      public SecondEntityMap()
      {
        Id(x => x.Id);

        ....

        References<Entity>(x => x.EntityProperty)
          .WithColumns("Something", "SomethingElse")
          .LazyLoad()
          .Cascade.None()
          .NotFound.Ignore()
          .FetchType.Join();

      }
    }

1voto

Deepak Points 271

Il y a peut être une nécessité pour les entités ayant des identifiants composés, les entités que la carte de tables qui ont les clés primaires composites, composée de plusieurs colonnes. Les colonnes qui composent cette clé primaire sont généralement les clés étrangères d'une autre les tables.

public class UserMap : ClassMap<User>
{      
   public UserMap()
   {
        Table("User");

        Id(x => x.Id).Column("ID");

        CompositeId()
          .KeyProperty(x => x.Id, "ID")
          .KeyReference(x => x.User, "USER_ID");

        Map(x => x.Name).Column("NAME");               

        References(x => x.Company).Column("COMPANY_ID").ForeignKey("ID");
    }
}

Pour plus de référence : http://www.codeproject.com/Tips/419780/NHibernate-mappings-for-Composite-Keys-with-associ

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