0
我有麻煩創建關係使用流利NHibernate。 一般情況下,我有兩個表,資源&項目:流利NHibernate複雜(?)的關係
請注意在資源表PK既是ID和語言環境。這意味着,一個項目實際上可以擁有很少的資源(相同的id但區域設置不同)。
因爲它不是一對一的簡單關係我有麻煩映射這兩個使用流利NHibernate。
什麼是解決這個問題的正確方法?
非常感謝!
我有麻煩創建關係使用流利NHibernate。 一般情況下,我有兩個表,資源&項目:流利NHibernate複雜(?)的關係
請注意在資源表PK既是ID和語言環境。這意味着,一個項目實際上可以擁有很少的資源(相同的id但區域設置不同)。
因爲它不是一對一的簡單關係我有麻煩映射這兩個使用流利NHibernate。
什麼是解決這個問題的正確方法?
非常感謝!
如果關係是這樣的,一個給定的Resource
由單個給定Item
資,這可能是仿照這樣的(注:只有事情包括零部件)
public class Item
{
public virtual int Id { get; protected set; }
public virtual IList<Resource> Resources { get; protected set; }
// Constructor, Equals, GetHashCode, other things ... omitted.
}
public class Resource
{
public virtual Item Owner { get; protected set; }
public virtual int ResourceId { get; protected set; }
public virtual string Locale { get; protected set; }
public virtual string Value { get; protected set; }
// Constructor, Equals, GetHashCode, other things ... omitted.
}
,並創建下面的類圖:
public class ItemMap : ClassMap<Item>
{
public ItemMap()
{
WithTable("items");
Id(x => x.Id); // add Id generation cfg if needed
HasMany(x => x.Resources)
.Inverse()
.Cascade.All()
}
}
public class ResourceMap : ClassMap<Resource>
{
public ResourceMap()
{
WithTable("resources")
CompositeId()
.KeyProperty(x => x.ResourceId)
.KeyProperty(x => x.Locale);
References(x => x.Owner)
}
}
它是一個多對多的關係,也就是說一個給定的資源(通過它的'{id,locale}'組合鍵來標識)是否被不同的項目引用? – Alex
一般沒有。但聽起來像使用多對多的設計可以使它更簡單的沒有? – rotem