Fluently.Configure的“没有配置空间方言”错误

时间:2014-03-04 13:54:58

标签: c# nhibernate fluent-nhibernate spatial

我正在尝试为我们的FluentNhibernate ORM设置一个SQLite测试数据库进行单元测试。

在使用Geometry元素时遇到问题我在博文后做了一些调整:http://blogs.microsoft.co.il/dorony/2010/05/26/easy-testing-of-nhibernatespatial-code/

我正在使用最新的NHibernate + FluentNhibernate以及NHibernate.Spatialfrångithub(https://github.com/suryapratap/Nhibernate.Spatial) - 删除了损坏的Oracle位。

我有一个带有Geometry类型的类,我已将其更改为:

 public virtual IGeometry DelytaGrans { get; private set; }

我用

映射了它
  Map(x => x.DelytaGrans).CustomType(typeof(GeometryType));

我在我的测试项目中创建了一个SQLiteGeometryTypeConvention和SQLiteGeometryType(如博客中所述),并按如下方式调用一个流畅的配置:

var sessionFactory= Fluently.Configure()
                  .Database(SQLiteConfiguration.Standard.InMemory)                    
                   .Mappings(m => m.FluentMappings.AddFromAssemblyOf<Delyta>()
                                    .Conventions.Setup(x => x.Add(AutoImport.Never()))
                                    .Conventions.Add(new SQLiteGeometryTypeConvention())
                                    .Conventions.Add(FluentNHibernate.Conventions.Helpers.DefaultLazy.Never())                         
                         ).BuildSessionFactory();

它返回错误:

----> NHibernate.MappingException : The constructor being called throws an exception. 
----> System.Reflection.TargetInvocationException : Exception has been thrown by the target of an invocation.  
----> NHibernate.MappingException : A GeometryType column has been declared, but there is no spatial dialect configured

我没有运气解决这里的问题。我已经看过人们在配置中输入.Dialect的例子,但这似乎与SqlServer有关,而我在SQLiteConfiguration中看不到它。

1 个答案:

答案 0 :(得分:0)

我所做的更改(对博客中给出的代码)是删除自定义类型。

给出

的映射
Map(x => x.DelytaGrans);

它现在运作正常。