我正在尝试为我们的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中看不到它。
答案 0 :(得分:0)
我所做的更改(对博客中给出的代码)是删除自定义类型。
给出
的映射Map(x => x.DelytaGrans);
它现在运作正常。