Skip to main content

DYNDB111: Spatial index configuration on non-GeoLocation property

FieldValue
CodeDYNDB111
SeverityError

Message​

Property '{0}' has spatial index configuration but is not of type GeoLocation, and spatial index properties can only be used on GeoLocation properties

Description​

Spatial index configuration properties can only be used on properties of type GeoLocation from the Oproto.FluentDynamoDb.Geospatial package. The spatial indexing system requires coordinate data that only GeoLocation provides.

Example​

The following code triggers this diagnostic:

[DynamoDbTable("Locations")]
public partial class Location
{
[PartitionKey]
[DynamoDbAttribute("pk")]
public string Pk { get; set; } = string.Empty;

[StoreCoordinates(SpatialIndexType = SpatialIndexType.GeoHash)]
[DynamoDbAttribute("address")]
public string Address { get; set; } = string.Empty;
}

Fix​

The corrected version:

[DynamoDbTable("Locations")]
public partial class Location
{
[PartitionKey]
[DynamoDbAttribute("pk")]
public string Pk { get; set; } = string.Empty;

[StoreCoordinates(SpatialIndexType = SpatialIndexType.GeoHash)]
[DynamoDbAttribute("coordinates")]
public GeoLocation Coordinates { get; set; }

[DynamoDbAttribute("address")]
public string Address { get; set; } = string.Empty;
}