流利的Nhibernate问题(ClassMap)

我有以下XML(.hbm):

  MULTIPOLYGON -1   

它使用Nhibernate Spatial类型…如何使用ClassMap(Fluent Nhibernate)映射该属性?

谢谢

好吧,我没有使用NHibernate Spatial,但我浏览了代码,看起来GeometryTypeinheritance自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") ); 

请注意,要获得WithTextfunction,您必须像这样添加XmlElement的扩展(WithAtt和AddElement是FluentNHibernate.Mapping命名空间中的扩展):

 public static class XmlExtensions { public static XmlElement WithText(this XmlElement element, string text) { element.InnerText = text; return element; } }