Skip to main content

DISC001: Both DiscriminatorValue and DiscriminatorPattern specified

FieldValue
CodeDISC001
SeverityWarning

Message

Entity '{0}' has both DiscriminatorValue and DiscriminatorPattern specified. Only one should be used. DiscriminatorValue will take precedence.

Description

DiscriminatorValue and DiscriminatorPattern are mutually exclusive configuration options on a GSI partition key attribute. When both are specified on the same entity, the source generator cannot determine the intended discriminator strategy unambiguously.

When both are present, DiscriminatorValue takes precedence and DiscriminatorPattern is ignored. This warning alerts you to remove the redundant option to make the configuration intent clear and avoid confusion during maintenance.

Example

The following code triggers this diagnostic:

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

[GsiPartitionKey("gsi1",
DiscriminatorProperty = "entityType",
DiscriminatorValue = "ORDER",
DiscriminatorPattern = "ORDER*")]
[DynamoDbAttribute("gsi1pk")]
public string Gsi1Pk { get; set; } = string.Empty;
}

Fix

The corrected version:

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

[GsiPartitionKey("gsi1",
DiscriminatorProperty = "entityType",
DiscriminatorValue = "ORDER")]
[DynamoDbAttribute("gsi1pk")]
public string Gsi1Pk { get; set; } = string.Empty;
}