age*_*t47 2 nhibernate one-to-many nhibernate-mapping-by-code
我正在努力学习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; }
}
Run Code Online (Sandbox Code Playgroud)
更新:
我这样映射Id:
Id(
t => t.Id,
t => {
t.Generator(Generators.HighLow, g => g.Params(new { max_low = 100 }));
t.Column(typeof(TEntity).Name + "Id");
});
Run Code Online (Sandbox Code Playgroud)
这并不像听起来那么简单,因为我们现在不是你的主要策略,如果你正在使用包或套装,你使用的级联等等......但是,下面是一个小样本,应该让你开始.. .
成员映射: -
//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());
}
}
Run Code Online (Sandbox Code Playgroud)
并为评论映射: -
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
});
}
}
Run Code Online (Sandbox Code Playgroud)
编辑我还要指出的是,你真的需要学习XML映射的基础知识,看看什么样的每个属性Update和Insert实际执行你的模式是持久的方式.
| 归档时间: |
|
| 查看次数: |
6080 次 |
| 最近记录: |