- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Entity Framework 6.0 Code First 构建 OData v3 Web API。
一切正常,我可以将 CRUD 操作执行回 api 服务器。
但是,我使用的是空间类型,并且我的一些实体具有 DbGeometry 属性。当我尝试从客户端应用程序(只是用于测试的控制台应用程序)更新/发布具有 DbGeometry 类型的实体时,我收到此 DataServiceRequestException:
No parameterless constructor defined for this object.
DbGeometry
类型为负责人。我已经看过
this topic here并定制了
JsonConverter
,我申请的房产:
[Required]
[JsonConverter(typeof(DbGeometryConverter))]
[Column("geometria")]
public DbGeometry Geometria { get; set; }
DbGeometry
,否则该对象不会在 Web api 服务器上反序列化属性(property)。
var formatters = GlobalConfiguration.Configuration.Formatters;
var jsonFormatter = formatters.JsonFormatter;
jsonFormatter.SerializerSettings.Converters.Add(new DbGeometryConverter());
DbGeometry
特性。我还能做些什么来解决这个问题?
最佳答案
有点晚了,但对于那些寻求答案的人:
我已经设法在 Controller 级别使用完全相同的代码来做到这一点。这个想法来自这个 SO Question&Answer.
所以,这里是包含 DbGeometryConverter 的代码。
DbGeometryConverter.cs:
public class DbGeometryConverter : JsonConverter
{
public override bool CanConvert(Type objectType)
{
return objectType.IsAssignableFrom(typeof(DbGeometry));
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
var location = JObject.Load(reader);
var token = location["Geometry"]["WellKnownText"];
string geom = token.ToString();
token = location["Geometry"]["CoordinateSystemId"];
int srid = token != null ? int.Parse(token.ToString()) : 0;
var converted = DbGeometry.FromText(geom, srid);
return converted;
}
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
throw new NotImplementedException();
}
public override bool CanWrite => false;
}
public class CustomJsonAttribute : Attribute, IControllerConfiguration
{
public void Initialize(HttpControllerSettings controllerSettings, HttpControllerDescriptor controllerDescriptor)
{
var formatter = controllerSettings.Formatters.JsonFormatter;
formatter.SerializerSettings.Converters.Add(new DbGeometryConverter());
}
}
[CustomJson]
使用 DbGeometry 的 Controller 上的属性。
关于asp.net-web-api - Asp.net web api 中的 DbGeometry 序列化问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27380597/
我有个问题希望大家帮我解决 我有一个 DbGeometry 点(或 DbGeography,我可以同时使用两者),我想检查它是否在 DbGeometry 多边形(或者 DbGeography)内。 我
我是新手。我不知道如何使用 SqlSpatialFunction MakeValid。我有一个 DbGeometry,它是一个多边形。这个多边形无效,我想使其有效。 谁能解释一下如何使用 MakeVa
MSDN documentation只是将返回值定义为: A double value that specifies the distance between the two closest poin
我正在尝试解析显示为 DbGeometry 的多边形类(从 System.Data.Entity.Spatial )到一些 List 表示,但是失败了。 我试过: - 用 .ToList<>() 方法
我正在按照 John Papa 在其最新的 PluralSight 类(class)中概述的方法使用 Angular、Breeze 和 Web API 2 构建 SPA。 一切正常,我可以将信息提取、
SqlGeometry 和 DbGeometry 之间有没有简单的转换方法?我正在使用一个流行的 sql 空间帮助程序库,其中的所有函数都需要 SqlGeometry。但是,当我针对 ESRI Arc
我有一个包含几何列的空间表。我的实体如下: public class Tile { public DbGeometry Geometry { get; set; } } 我正在使用数据传输对象
我有一个这个模型: public partial class UserPosition { ... public DbGeometry Position { get; set; }
我对 WKT 和 DbGeometry 一起工作有疑问。当我像这个例子一样使用 POINT 作为几何体时,效果很好。 DbGeometry myGeometry1 = DbGeometry.FromT
我正在尝试计算折线的面积 string poly = "POLYGON ((637604.918432772 2230520.64934531, 637622.257266129 223041
我正在使用 Entity Framework 6 进行 crud 操作,包括 DbGeometry 属性。该属性包含一个从 WellKnownText 创建的多边形。 DbGeometry.Polyg
我在一个表中有许多空间实体,其中有一个名为 Boundaries 的 geometry 字段。我想生成一个具有简化形状/几何图形的 GeoJson 文件。 这是我的第一次尝试: var entitie
我正在尝试创建一个 DbGeometry 类型的多边形。它在我的本地计算机上运行良好,但在 Azure Web 角色上托管我的网站时,返回语句出现错误。 代码: string polygon = “P
如标题所示,我有一个代码,当数据库中没有几何图形并且 DbGeometry 获得空值时,我会收到带有空值的 DbNull 类型。但是当我想做一个 if 语句来检查 DbGeometry 是否等于 Db
我正在使用 Entity Framework 6.0 Code First 构建 OData v3 Web API。 一切正常,我可以将 CRUD 操作执行回 api 服务器。 但是,我使用的是空间类
好的,我正在使用 OData v4 和 WebApi 2.2,其中一些实体在坐标系 4674 中设置了 DbGeometry 属性。 假设我们有一个简单的实体,如下所示: public class A
我是一名优秀的程序员,十分优秀!