- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 NHibernate 3.3。我有一个案例,我想插入一个未被引用的计算列。
My Domain 实体可以简化为以下形式
public class Location
{
public virtual IPoint GeoLocation {get;set;}
}
public class MappingOverride : IAutoMappingOverride<Location>
{
public void Override(AutoMapping<Location> mapping)
{
mapping
.Map(e => e.GeoLocation)
.Column("GeoLocation")
.CustomSqlType("geography")
.CustomType<MsSql2008GeographyType>;
}
}
表格列的类型为“地理”
但是它会出错
at System.Reflection.RuntimeAssembly.GetExportedTypes(RuntimeAssembly assembly, ObjectHandleOnStack retTypes)
at System.Reflection.RuntimeAssembly.GetExportedTypes()
at GeoAPI.GeometryServiceProvider.GetLoadableTypes(Assembly assembly)
at GeoAPI.GeometryServiceProvider.ReflectInstance()
at GeoAPI.GeometryServiceProvider.get_Instance()
at NetTopologySuite.Geometries.Geometry.set_SRID(Int32 value)
它说它需要Antrl.Runtime
,但是一个很旧的版本。所有的 Antrl.Runtime
nuget 包都有不同的程序集标识符。
Could not load file or assembly 'antlr.runtime, Version=2.7.6.2, Culture=neutral, PublicKeyToken=1790ba318ebc5d56' or one of its dependencies. The system cannot find the file specified.
我在一个单独的项目中工作,在该项目中,我按照代码约定使用 map ,并且它在没有任何引用 Antrl.Runtime
的情况下工作。
需要帮助为自己指明正确的方向......
最佳答案
作为一个单独的示例项目,我尝试了一些有效的方法,但在实际的 ASP.NET MVC 项目中却不起作用。
类的定义
public class Location : IEntity
{
public virtual int Id { get; protected set; }
public virtual string LocationName { get; set; }
public virtual IPoint GeoLocation { get; set; }
}
映射
public class LocationMapping : IAutoMappingOverride<Location>
{
public void Override(AutoMapping<Location> mapping)
{
mapping.Map(x => x.LocationName).Column("Name");
mapping.Map(x => x.GeoLocation).Column("GeoLocation")
.CustomType<MsSql2008GeographyType>();
}
}
测试
public class WhenSavingGeoLocation : BasePersistanceTest
{
[Test]
public void Save()
{
this.Session
.SaveOrUpdate(new Location {
LocationName = "Category 01",
GeoLocation = new Point(-72.12, 32.2323234) { SRID = 4326 }
});
}
}
NHibernate.Spatial
使用 NetTopologicalSuite
,它本身是 GeoAPI
的派生物GeoAPI 库定义了一个接口(interface) GeoAPI.Geometries
并且在加载/搜索当前项目中的正确实现时失败,并在 MVC 项目中出现 Antlr 错误。
然而,它能够在单独的示例项目中获取 NetTopologySuite.NtsGeometryServices
实现。 GeoAPI 中搜索实现的实际代码如下
private static IGeometryServices ReflectInstance()
{
#if !PCL
var a = AppDomain.CurrentDomain.GetAssemblies();
foreach (var assembly in a)
{
// Take a look at issue 114: http://code.google.com/p/nettopologysuite/issues/detail?id=114
if (assembly is System.Reflection.Emit.AssemblyBuilder) continue;
if (assembly.GetType().FullName == "System.Reflection.Emit.InternalAssemblyBuilder") continue;
if (assembly.GlobalAssemblyCache && assembly.CodeBase == Assembly.GetExecutingAssembly().CodeBase) continue;
foreach (var t in GetLoadableTypes(assembly))
{
if (t.IsInterface) continue;
if (t.IsAbstract) continue;
if (t.IsNotPublic) continue;
if (!typeof(IGeometryServices).IsAssignableFrom(t)) continue;
var constuctors = t.GetConstructors();
foreach (var constructorInfo in constuctors)
{
if (constructorInfo.IsPublic && constructorInfo.GetParameters().Length == 0)
return (IGeometryServices)Activator.CreateInstance(t);
}
}
}
#endif
throw new InvalidOperationException("Cannot use GeometryServiceProvider without an assigned IGeometryServices class");
}
}
在几何体上设置 SRID 时会调用此方法。我猜我的 MVC 项目有一个程序集的引用,这使它看起来像 Antlr。有一些建议为较新的 Antlr 程序集添加重定向。我也试过了,但错误仍然不断重复。
关于NHibernate 空间映射返回 Antrl 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26048240/
我正在使用 NHibernate 3.3。我有一个案例,我想插入一个未被引用的计算列。 My Domain 实体可以简化为以下形式 public class Location {
我知道可以通过终端使用 ANTLR 的 TestRig“grun”生成解析树的图形表示: $ alias grun='java org.antlr.v4.runtime.misc.TestRig'
我是一名优秀的程序员,十分优秀!