2013-05-07 86 views
2

我有一個表結構,看起來與此類似,簡化爲簡潔映射字典的子表中NHibernate的使用HBM文件

CREATE TABLE Parent (
    ParentId NUMBER NOT NULL, 
    CONSTRAINT ParentId_PK PRIMARY KEY ParentId 
); 

CREATE TABLE Attribute (
    ParentId NUMBER NOT NULL, 
    Key NVARCHAR2(200) NOT NULL, 
    Value NVARCHAR2(4000) NOT NULL, 
    CONSTRAINT Attribute_PK PRIMARY KEY (ParentId, Key), 
    CONSTRAINT ParentId_FK FOREIGN KEY (ParentId) 
     REFERENCES Parent (ParentId) 
); 

我要地圖的子鍵和值的名稱值對,並將該列表作爲字典映射到父級。其中代碼是這樣的:

public class Parent 
{ 
    public long Id { get; set; } 
    public Dictionary<string, string> Attributes { get; set; } 
} 

看來,這應該是可能的,但我似乎無法找出正確映射在HBM文件來放置。

+1

你見過? http://bartwullems.blogspot.co.uk/2011/08/mapping-dictionary-in-nhibernate.html – Rippo 2013-05-07 18:04:09

回答

3

@Rippo - 您的評論指出我的解決方案,但我在此發佈代碼以顯示每個指南的解決方案。

<?xml version="1.0" encoding="utf-8"?> 
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" assembly="com.so.answers" namespace="com.so.answers"> 
    <class name="Parent" table="Parent" lazy="false"> 
    <id name="Id" column="ParentId" /> 
    <map name="Attributes" table="Attribute"> 
     <key column="ParentId"/> 
     <index column="Key" type="System.String"/> 
     <element column="Value" type="System.String"/> 
    </map> 
    </class> 
</hibernate-mapping>