我一直未能找到這個問題的答案。沒有外鍵的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
表創建外鍵關係?
UPDATE
想通了解決方案 - 當映射由代碼:
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));
})
);
難道你不希望約束或FKEY場?你如何建議ClassBTable中的行被識別爲屬於特定的ClassA而沒有引用某種類型? – Rytmis 2012-07-12 10:22:20
爲了澄清,'TableB'仍然會有'ClassAId'列,我很好。我只是不希望用一個外鍵約束來生成'ClassAId'列表。 – David 2012-07-12 10:27:21
[防止Nhibernate schemaexport生成外鍵約束有很多關係](http://support.microsoft.com/kb/2826725/prevent-nhibernate-schemaexport-from-generating-foreign-key-constraints-on-has -m) – Rytmis 2012-07-12 10:35:09