आप एक भूगोल . का उपयोग कर रहे हैं बोली लेकिन ज्यामिति . के कस्टम प्रकार का उपयोग कर रहे हैं आपके मानचित्रण पर। आपको कस्टम प्रकार के भूगोल . का उपयोग करना चाहिए . कुछ इस तरह:
public class PlaceMap : ClassMap<Place>
{
public PlaceMap()
{
Id(x => x.Id);
Map(x => x.Name);
Map(x => x.Location).CustomType(typeof(MsSql2008GeographyType)); //for SQL2008
}
}
इसके अलावा, कुछ और है जो आपको करने की आवश्यकता हो सकती है। यदि आपके स्थानिक कॉलम में SRID 0 (शून्य) से भिन्न है, और यदि आप NH xml मैपिंग को छोड़ना चाहते हैं, तो आपको इस तरह एक कस्टम प्रकार घोषित करना होगा:
public class Wgs84GeographyType : MsSql2008GeographyType
{
protected override void SetDefaultSRID(GeoAPI.Geometries.IGeometry geometry)
{
geometry.SRID = 4326;
}
}
और फिर इसे अपने मानचित्रण पर उपयोग करें:
public class PlaceMap : ClassMap<Place>
{
public PlaceMap()
{
Id(x => x.Id);
Map(x => x.Name);
Map(x => x.Location).CustomType(typeof(Wgs84GeographyType));
}
}
अद्यतन करें:
आपको NHibernate.Spatial.MsSql2008.dll का संदर्भ देना चाहिए, और मैं आपको अपने डेटाबेस कॉन्फ़िगरेशन में दृढ़ता से टाइप की गई बोली पद्धति का उपयोग करने की सलाह दूंगा।
.Dialect<MsSql2008GeographyDialect>()