nhibernate mapping many-to-many nhibernate-3 mapping-by-code

NHibernate 3.2 mapeo de muchos a muchos por código



mapping many-to-many (2)

Creo que debe establecer la clave para decirle a nhibernate qué columna de la tabla de muchos a muchos debe verificar, algo como esto:

// TagMap bag.Key(k => k.Column("TagId")); // PostMap bag.Key(k => k.Column("PostId"));

Estoy tratando de aprender el NHibernate 3.2 built-in mapping by code api ( NO FluentNHibernate, ni xml). ¿Pueden ayudarme a mapear una relación de muchos a muchos entre estas entidades, por favor?

public class Post { public virtual Id { get; set; } public IList<Tag> Tags { get; set; } } public class Tag { public virtual Id { get; set; } public IList<Post> Posts { get; set; } }

Mi estrategia clave principal es:

Id( t => t.Id, t => { t.Generator(Generators.HighLow, g => g.Params(new { max_low = 100 })); t.Column(typeof(TEntity).Name + "Id"); });

y pruebo esto:

// TagMap : ClassMapping<Tag> Bag(t => t.Posts, bag => { bag.Inverse(true); bag.Table("TagsPosts"); bag.Cascade(Cascade.DeleteOrphans); }, t => t.ManyToMany(c => { c.Column("PostId"); c.Lazy(LazyRelation.Proxy); })); // PostMap : ClassMapping<Post> Bag(t => t.Tags, bag => { bag.Table("TagsPosts"); bag.Cascade(Cascade.DeleteOrphans); }, t => t.ManyToMany(c => { c.Column("TagId"); c.Lazy(LazyRelation.Proxy); }));

pero no funciona.


// Post Map Bag(x => x.Tags, collectionMapping => { collectionMapping.Table("TagPosts"); collectionMapping.Cascade(Cascade.None); collectionMapping.Key(k => k.Column("PostID")); }, map => map.ManyToMany(p => p.Column("TagID"))); // Tag Map Bag(x => x.Posts, collectionMapping => { collectionMapping.Table("TagPosts"); collectionMapping.Cascade(Cascade.None); collectionMapping.Key(k => k.Column("TagID")); }, map => map.ManyToMany(p => p.Column("PostID")));