отображение один-ко-многим в NHibernate 3.2, отображение по коду - PullRequest
2 голосов
/ 05 марта 2012

Я пытаюсь выучить NHibernate 3.2 built-in mapping by code api ( НЕ БЕСПЛАТНО NHibernate ). Можете ли вы помочь мне сопоставить отношения «один ко многим» между этими сущностями, пожалуйста?

public class Member {
    public virtual int Id { get; set; }
    public virtual ICollection<Comment> Comments { get; set; }
}

public class Comment {
    public virtual int Id { get; set; }
    public virtual Member { get; set; }
}

UPDATE:

Я отображаю Id так:

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

1 Ответ

8 голосов
/ 05 марта 2012

Это не так просто, как кажется, что мы не используем вашу стратегию первичного ключа, если вы используете сумку или наборы, какой каскад вы используете и т. Д. Однако, ниже приведен небольшой пример, который должен помочь вамначалось ...

Отображение члена: -

//note: bag could be Set
public class MemberMapping : ClassMapping<Member> {
  public MemberMapping() {
    Id(x => x.Id, x => { x.Generator(...); etc... });
    Bag(x => x.CmsRegionContentList, bag => {
          bag.Inverse(true); // Is collection inverse?
          bag.Cascade(Cascade.DeleteOrphans); //set cascade strategy
          bag.Key(k => k.Column(col => col.Name("MemberId"))); //foreign key in Comment table
    }, a => a.OneToMany());
  }
}

И для сопоставления комментариев: -

public class CommentMapping : ClassMapping<Comment> {
    public CommentMapping() {
      Id(x => x.Id, x => { x.Generator(...); etc... });
      ManyToOne(x => x.Page, x => {
          x.Column("MemberId"); 
          x.Update(false); //either True or False
          x.Insert(false); 
          x.Fetch(FetchKind.Join); //fetch join or select
        });
      }
    }

edit Я должен такжеотметьте, что вам действительно нужно изучить основы XML-сопоставления и посмотреть, что каждый атрибут, такой как Update и Insert, на самом деле влияет на то, как ваша модель сохраняется.

...