Я пытаюсь использовать Nhibernate с типом географии Sql 2008 и испытываю трудности. Я использую Fluent Nhibernate для настройки, для которой я довольно новичок, так что это может быть и проблема.
Сначала класс, который я пытаюсь сохранить, выглядит примерно так:
public class LocationLog : FluentNHibernate.Data.Entity
{
public virtual new int Id {get;set;}
public virtual DateTime TimeStamp {get;set;}
public virtual GisSharpBlog.NetTopologySuite.Geometries.Point Location {get;set;}
}
Класс отображения выглядит так:
public class LocationLogMap : ClassMap<LocationLog>
{
ImportType<GisSharpBlog.NetTopologySuite.Geometries.Point>();
Id(x => x.Id);
Map(x => x.TimeStamp).Generated.Insert();
Map(x => x.Location);
}
Чтобы использовать MsSql2008GeographyDialect с Fluent Nhibernate, я создал свой собственный класс конфигурации:
public class Sql2008Configuration
: PersistenceConfiguration<Sql2008Configuration, MsSqlConnectionStringBuilder>
{
public Sql2008Configuration()
{
Driver<SqlClientDriver>();
}
public static Sql2008Configuration MsSql2008
{
get { return new Sql2008Configuration().Dialect<MsSql2008GeographyDialect>(); }
}
}
поэтому у меня есть код конфигурации, например:
var configuration = Fluently.Configure()
.Database(Sql2008Configuration.MsSql2008.ConnectionString(c => c.Is(connectionString)))
.Mappings(m => m.FluentMappings
.AddFromAssemblyOf<LocationLog>()
);
Все это для установки факта, что я получаю следующую ошибку при попытке сохранить тип LocationLog в базе данных:
Ошибка .NET Framework произошла во время выполнение пользовательской программы или совокупная "география": System.ArgumentException: 24204: идентификатор пространственной привязки (SRID) недействительно. Указанный SRID должен соответствовать одному из поддерживаемых SRID отображается в Каталог sys.spatial_reference_systems Посмотреть. Исправление System.ArgumentException: at Microsoft.SqlServer.Types.SqlGeography.set_Srid (Int32 значение) при Microsoft.SqlServer.Types.SqlGeography.Read(BinaryReader r) при SqlGeography::. DeserializeValidate (IntPtr, Int32, CClrLobContext *)
Я прочитал следующие статьи о том, как настроить и использовать библиотеки Nhibernate Spatial:
- http://nhibernate.info/doc/spatial/configuration-and-mapping.html
- http://nhibernate.info/doc/spatial/sample-usage.html
но ничто не помогает. Любой, у кого есть опыт настройки Nhibernate для использования типов пространственной географии, которые могли бы предоставить любую информацию, будет с благодарностью.