2

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

说你有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));
           })
      );
4

1 回答 1

4

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

编辑:正如评论指出的那样(不知道!)使用 xml 映射也许这有效:

<many-to-one name="Bar" foreign-key="none" />
于 2012-07-12T10:39:32.623 回答