2013-05-07 93 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>