Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework core 在使用实体框架核心和网络拓扑套件时适应CurvePolygon SQL空间类型_Entity Framework Core_Nettopologysuite_Sqlgeometry_Ef Power Tools - Fatal编程技术网

Entity framework core 在使用实体框架核心和网络拓扑套件时适应CurvePolygon SQL空间类型

Entity framework core 在使用实体框架核心和网络拓扑套件时适应CurvePolygon SQL空间类型,entity-framework-core,nettopologysuite,sqlgeometry,ef-power-tools,Entity Framework Core,Nettopologysuite,Sqlgeometry,Ef Power Tools,有没有一种好方法可以使用Entity Framework Core将SQL spatial CurvePolygon几何体列转换为简单多边形?NetTopologySuite不支持CurvePolygon类型,因此我正在寻找一种在.Net核心客户端中读/写此专栏的方法 背景: 我有一个SQL空间数据库,它使用曲线多边形来描述圆。实体框架Core 5.0.6和NetTopologySuite 2.1.0用于使用EF Core Power Tools反向工程现有数据库的代码优先模型访问数据库。 当“

有没有一种好方法可以使用Entity Framework Core将SQL spatial CurvePolygon几何体列转换为简单多边形?NetTopologySuite不支持CurvePolygon类型,因此我正在寻找一种在.Net核心客户端中读/写此专栏的方法

背景: 我有一个SQL空间数据库,它使用曲线多边形来描述圆。实体框架Core 5.0.6和NetTopologySuite 2.1.0用于使用EF Core Power Tools反向工程现有数据库的代码优先模型访问数据库。 当“几何体”列包含多边形时,代码将按预期工作。但是,当我读取CurvePolygon列时,代码无法加载SqlServerTypes.dll(可能是一个回退路径,对于.Net核心应用程序甚至不应该使用该路径)

目标: 我可以使用数据库中的计算列,以曲线多边形形状的中心和半径,轻松地重新创建这些圆。一个合理的read解决方法是将弯曲多边形转换为近似圆的多边形。在写入时,一个选项是生成一个描述圆的OpenGIS字符串,并将其写入,而不是近似的圆多边形

最糟糕的情况是,我想我有一个触发器,在写入时将多边形转换为CurvePoly,然后是一个表视图,该视图排除几何体,然后在第二次访问时获取非曲线几何体,但这两个选项都感觉不太好。我希望在某个地方我可以注册一个适配器类,它没有出现在我的搜索中

下面是生成的代码第一个表的简化版本:

[表格(“位置”)]
[索引(nameof(VolumeShape),Name=“VolumeShape_Index”)]
公共部分类位置
{
公共场所()
{
}
[关键]
[列(“ID”)]
公共长Id{get;set;}
/// 
///0=点,1=圆,2=椭圆(未使用),3=多段线,4=多边形
/// 
公共短类型代码{get;set;}
[必需]
[列(TypeName=“geometry”)]
公共几何体卷形{get;set;}
//计算柱,几何形状的中心
公共双X{get;set;}
//计算柱,几何形状的中心
公共双Y{get;set;}
/// 
///计算列,返回面积等于体积形状多边形面积的圆的半径(如果体积形状是二维形状),这是向后兼容所必需的
/// 
公共双半径{get;set;}
} 

感谢您的帮助

我为NetTopologySuite.IO.SqlServerBytes项目创建了一个问题。其中一位作者发布了一个构建查询的解决方案,以便构建的EF核心查询在客户端看到数据之前通知服务器转换曲线多边形。