gpt4 book ai didi

c# - Fluent Nhibernate问题(ClassMap)

转载 作者:行者123 更新时间:2023-11-30 16:36:33 25 4
gpt4 key购买 nike

我有以下 XML (.hbm):

<property name="Geometry" column="the_geom">
<type name="NHibernate.Spatial.Type.GeometryType,NHibernate.Spatial">
<param name="subtype">MULTIPOLYGON</param>
<param name="srid">-1</param>
</type>
</property>

它使用 Nhibernate 空间类型...我如何使用 ClassMap (Fluent Nhibernate) 映射该属性?

谢谢

最佳答案

好吧,我没有使用过 NHibernate Spatial,但我浏览了代码,它看起来像 GeometryType继承自 IUserType,因此您应该能够将其与 .CustomTypeIs<> 一起使用

例如:

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

除非它自动发生,否则这可能不会让您获得 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功能,您必须为 XmlElement 添加扩展名像这样(WithAtt 和 AddElement 是 Fl​​uentNHibernate.Mapping 命名空间中的扩展):

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

关于c# - Fluent Nhibernate问题(ClassMap),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/723050/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com