流利的Nhibernate问题(ClassMap)
我有以下XML(.hbm):
MULTIPOLYGON -1
它使用Nhibernate Spatial类型…如何使用ClassMap(Fluent Nhibernate)映射该属性?
谢谢
好吧,我没有使用NHibernate Spatial,但我浏览了代码,看起来GeometryType
inheritance自IUserType,所以你应该可以使用它.CustomTypeIs<>
例如:
Map(x => x.Geometry, "the_geom").CustomTypeIs();
除非它自动发生,否则可能不会让你获得你的param
元素。 我不确定一个真正好的方法,但你总是可以像这样添加XML更改:
Map(x => x.Geometry, "the_geom").AddAlteration(p => p.AddElement("type") .WithAtt("name", "NHibernate.Spatial.Type.GeometryType,NHibernate.Spatial") .AddElement("param") .WithAtt("name", "subtype") .WithText("MULTIPOLYGON") .ParentNode .AddElement("param") .WithAtt("name", "srid") .WithText("-1") );
请注意,要获得WithText
function,您必须像这样添加XmlElement
的扩展(WithAtt和AddElement是FluentNHibernate.Mapping命名空间中的扩展):
public static class XmlExtensions { public static XmlElement WithText(this XmlElement element, string text) { element.InnerText = text; return element; } }