2009-10-27 4 views
0

나는 다른 곳에서 이것을 물어 봤고 어떤 합리적인 대답도 얻지 못했습니다.nHibernate 매핑 일반 IDictionary

IDictionary를 매핑하려고합니다. 나는이 매핑이 있습니다

<class name="MyProject.Item, MyProject" table="Item"> 
<...> 
<map name="Properties" access="property" table="ItemProperties" lazy="false"> 
    <key column="ItemID" /> 
    <index column="Idx" type="int" /> 
<element column="Value" type="System.Boolean, mscorlib"/> 
</map> 

내가 데이터를 유지 할 수 있지만, 데이터가 검색 될 때 나는 nHibernate 수의 예외가 : { "값은"0 Project.PropertyType "유형이 아닌" "을 사용할 수 없습니다 매개 변수 이름 : key "}

그래서 열거 형에 매핑 할 수 없지만 그 이유는 무엇입니까? 열거 형을 사용하는 일반 속성이 있으면 제대로 작동합니다.

내가 할 수있는 일이 가능한 것일까 요? 이 일에 많은 정보를 찾을 수 없습니다.

답변

0

매핑은 키를 열거 형이 아닌 정수로 표시합니다. 열거 형을 올바르게 매핑하려면 type="MyProject.Project.PropertyType, MyProject"을 사용하십시오.

그러나 일반적으로 열거 형의 경우 가장 좋은 방법은 매핑 파일에서 형식 정보를 그대로두고 NHib이 리플렉션을 통해이를 가져 오도록하는 것입니다. NHib 소스를 읽으면 일반 IDictionary<K,V>에 매핑하면 NHib가 리플렉션을 통해 정확한 유형의 키를 가져와야 함을 의미합니다. IOW 당신은 ​​여전히 ​​type 속성을 생략 할 수 있어야합니다.

+0

감사합니다. 유형 정보를 제거하는 방법을 실험 해 보겠습니다. 맨 위에 추가 레이어로 ActiveRecord를 사용해야하므로 상황이 좀 복잡해집니다. – Mark