C# 使用HBM文件将字典映射到NHibernate中的子表
我有一个表结构,看起来与此类似,为简洁起见进行了简化C# 使用HBM文件将字典映射到NHibernate中的子表,c#,nhibernate,hibernate-mapping,C#,Nhibernate,Hibernate Mapping,我有一个表结构,看起来与此类似,为简洁起见进行了简化 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, CON
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; }
}
公共类父类
{
公共长Id{get;set;}
公共字典属性{get;set;}
}
似乎这应该是可能的,但我似乎无法找出在HBM文件中放置的正确映射。@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>
您看到这个了吗?