我正在尝试的测试应用中进行以下设置:
我知道一开始有点复杂,但这是交易。我有一个正常工作的控制器,我有我的模型。他们住在另一个项目中,但是在同一个解决方案中。两者的代码都是可访问的。
我有一个简单的用户模型,BTW,没有任何空间。我有一个使用Point的模型,但此视图和操作不处理此数据。
这是一个例外:
NHibernateMappingException {“被调用的构造函数抛出异常。”}
InnerEx:{“已声明GeometryType列,但未配置空间方言”}
看起来这是我第一次调试(或前几次),我得到一个例外,告诉我没有找到空间方言。这很奇怪。让我们看一些代码:
这是我的应用启动方法:
protected void Application_Start()
{
Ignition.StartActiveRecord();
AreaRegistration.RegisterAllAreas();
RegisterRoutes(RouteTable.Routes);
}
这是Ignition.StartActiveRecord:
public static void StartActiveRecord()
{
XmlConfigurationSource source = new XmlConfigurationSource(@"path.xml");
ActiveRecordStarter.Initialize(source, GetActiveRecordTypes());
foreach (Configuration cfg in ActiveRecordMediator.GetSessionFactoryHolder().GetAllConfigurations())
{
cfg.AddAuxiliaryDatabaseObject(new SpatialAuxiliaryDatabaseObject(cfg));
//Metadata.AddMapping(cfg, MetadataClass.GeometryColumn);
//Metadata.AddMapping(cfg, MetadataClass.SpatialReferenceSystem);
}
}
我的网络项目包含对所有需要的库的引用:
帮助!?这非常烦人,我无法在生产环境中想象这一点!
谢谢!
答案 0 :(得分:0)
异常消息是“已声明了GeometryType列,但未配置空间方言”。这意味着......您需要配置PostGIS方言:)
<add key="dialect" value="NHibernate.Spatial.Dialect.PostGisDialect,NHibernate.Spatial.PostGis" />