Skip to main content

DYNDB014: Multi-item entity partition key format

FieldValue
CodeDYNDB014
SeverityWarning

Message

Partition key '{0}' in multi-item entity '{1}' should have a consistent format for proper grouping

Description

Multi-item entities should use consistent partition key formats to ensure related items are properly grouped. Inconsistent key formats across related entities can lead to items not being found during composite entity assembly.

Example

The following code triggers this diagnostic:

[DynamoDbTable("Invoices", IsDefault = true)]
public partial class Invoice
{
[PartitionKey]
[DynamoDbAttribute("pk")]
public string Pk { get; set; } = string.Empty;

[SortKey(Prefix = "INVOICE")]
[DynamoDbAttribute("sk")]
public string Sk { get; set; } = string.Empty;
}

[DynamoDbTable("Invoices")]
public partial class InvoiceLine
{
[PartitionKey(Prefix = "LINE")]
[DynamoDbAttribute("pk")]
public string Pk { get; set; } = string.Empty;

[SortKey]
[DynamoDbAttribute("sk")]
public string Sk { get; set; } = string.Empty;
}

Fix

The corrected version:

[DynamoDbTable("Invoices", IsDefault = true)]
public partial class Invoice
{
[PartitionKey(Prefix = "CUSTOMER")]
[DynamoDbAttribute("pk")]
public string Pk { get; set; } = string.Empty;

[SortKey(Prefix = "INVOICE")]
[DynamoDbAttribute("sk")]
public string Sk { get; set; } = string.Empty;
}

[DynamoDbTable("Invoices")]
public partial class InvoiceLine
{
[PartitionKey(Prefix = "CUSTOMER")]
[DynamoDbAttribute("pk")]
public string Pk { get; set; } = string.Empty;

[SortKey(Prefix = "LINE")]
[DynamoDbAttribute("sk")]
public string Sk { get; set; } = string.Empty;
}