Fluent Nhibernate problem (ClassMap)

前端 未结 1 677
佛祖请我去吃肉
佛祖请我去吃肉 2021-02-04 21:58

I have the following XML (.hbm):


   

        
1条回答
  •  灰色年华
    2021-02-04 22:44

    Well, I've not used NHibernate Spatial, but I browsed through the code and it looks like GeometryType inherits from IUserType so you should be able to use it with .CustomTypeIs<>

    For example:

    Map(x => x.Geometry, "the_geom").CustomTypeIs();
    

    Unless it happens automagically, that probably won't get you your param elements though. I'm not sure of a truly nice way to do this but you can always add an XML alteration like so:

    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")
        );
    

    Note that to get the WithText functionality, you'll have to add an extension for XmlElement like so (WithAtt and AddElement are extensions in the FluentNHibernate.Mapping namespace):

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

    0 讨论(0)
提交回复
热议问题