[英]Composite Id containing a null value in NHibernate
我有一種情況,我有一個包含3列的表,其中包含引用不同表的ID。 除了這3列之外,我還有一些具有一些屬性的列。
讓我們說3列是Foo,Bar,Baz。 Foo永遠不會為null,而Bar,Baz中只有一個為空。
我的實體和映射看起來像這樣(請記住我想保持簡單):
public class FooBarBaz
{
public virtual Foo Foo { get; set; }
public virtual Bar Bar { get; set; }
public virtual Baz Baz { get; set; }
public virtual string Prop { get; set; }
public override bool Equals(Object obj)
{
/* checks for nulls etc. in the end
returns Foo == obj.Foo && Bar == obj.Bar && Baz == obj.Baz */
}
public override int GetHashCode()
{
/* builds unique string for (Foo,Bar,Baz)
taking nulls into account and gets it's hashcode */
}
}
public class FooBarBazMap : ClassMap<FooBarBaz>
{
public FooBarBazMap()
{
CompositeId()
.KeyReference(x => x.Foo, "Foo_Id")
.KeyReference(x => x.Bar, "Bar_Id")
.KeyReference(x => x.Baz, "Baz_Id");
Map(x => x.Prop);
}
}
我手動創建了一行,其中所有三列都不為null,並且此映射完全正常。 但是我的應用程序邏輯基於以下事實:兩個中的一個(Bar,Baz)都是null,在這種情況下,NHibernate返回null作為FooBarBaz實體。
我怎樣才能克服這個問題? NHibernate是否允許CompositeId中的空值?
nhibernate是關系數據庫之上的抽象,關系數據庫不允許主鍵列中的空值(實際上所有pk列都沒有空約束)。
假設這個表是3個實體之間的鏈接表,我將它映射為一個組件。 如果你發布Foo bar和baz之間的關聯,我可以給出一個例子。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.