没有外键的NHibernate地图集合?

时间:2012-07-12 10:19:15

标签: c# nhibernate

我无法找到这个问题的答案。

说你有ClassA

public class ClassA {
    public Guid Id { get; set; }
    public IList<ClassB> { get; set; }
}

ClassA嵌套了ClassB个对象的集合:

public class ClassB {
    public Guid Id { get; set; }
    public string SomeProperty { get; set;}  
}   

有没有办法使用NHibernate将这些对象映射到表,生成模式但是没有为ClassB表创建外键关系?

更新

计算解决方案 - 按代码映射时:

Bag<ClassA>(x => x.ClassB, 
            collectionMapping => {
                collectionMapping.Table("ClassB");
                collectionMapping.Cascade(Cascade.All);
                collectionMapping.Key(key => { 
                      key.Column("ClassAId");
                      key.ForeignKey("none");
                 });
                collectionMapping.Lazy(CollectionLazy.NoLazy);
           },
           mapping => mapping.OneToMany(x => {
                 x.Class(typeof(ClassB));
           })
      );

1 个答案:

答案 0 :(得分:4)

我认为如果将集合映射设置为inverse="true",则架构生成工具不会创建FK。

编辑:  正如评论指出的那样(不知道那个!)与xml映射可能有效:

<many-to-one name="Bar" foreign-key="none" />