Table of Contents

Class KeyDiscoveryConvention

Namespace
Microsoft.EntityFrameworkCore.Metadata.Conventions
Assembly
Microsoft.EntityFrameworkCore.dll

A convention that finds primary key property for the entity type based on the names, ignoring case:

  • Id
  • [entity name]Id
public class KeyDiscoveryConvention : IEntityTypeAddedConvention, IPropertyAddedConvention, IKeyRemovedConvention, IEntityTypeBaseTypeChangedConvention, IEntityTypeMemberIgnoredConvention, IForeignKeyAddedConvention, IForeignKeyRemovedConvention, IForeignKeyPropertiesChangedConvention, IForeignKeyUniquenessChangedConvention, IForeignKeyOwnershipChangedConvention, ISkipNavigationForeignKeyChangedConvention, IConvention
Inheritance
KeyDiscoveryConvention
Implements
Inherited Members

Remarks

If the entity type is owned through a reference navigation property then the corresponding foreign key properties are used.

If the entity type is owned through a collection navigation property then a composite primary key is configured using the foreign key properties with an extra property that matches the naming convention above.

See Model building conventions for more information and examples.

Constructors

KeyDiscoveryConvention(ProviderConventionSetBuilderDependencies)

Creates a new instance of KeyDiscoveryConvention.

public KeyDiscoveryConvention(ProviderConventionSetBuilderDependencies dependencies)

Parameters

dependencies ProviderConventionSetBuilderDependencies

Parameter object containing dependencies for this convention.

Properties

Dependencies

Dependencies for this service.

protected virtual ProviderConventionSetBuilderDependencies Dependencies { get; }

Property Value

ProviderConventionSetBuilderDependencies

Methods

DiscoverKeyProperties(IConventionEntityType, IEnumerable<IConventionProperty>)

Returns the properties that should be used for the primary key.

public static IEnumerable<IConventionProperty> DiscoverKeyProperties(IConventionEntityType entityType, IEnumerable<IConventionProperty> candidateProperties)

Parameters

entityType IConventionEntityType

The entity type.

candidateProperties IEnumerable<IConventionProperty>

The properties to consider.

Returns

IEnumerable<IConventionProperty>

The properties that should be used for the primary key.

ProcessEntityTypeAdded(IConventionEntityTypeBuilder, IConventionContext<IConventionEntityTypeBuilder>)

public virtual void ProcessEntityTypeAdded(IConventionEntityTypeBuilder entityTypeBuilder, IConventionContext<IConventionEntityTypeBuilder> context)

Parameters

entityTypeBuilder IConventionEntityTypeBuilder
context IConventionContext<IConventionEntityTypeBuilder>

ProcessEntityTypeBaseTypeChanged(IConventionEntityTypeBuilder, IConventionEntityType?, IConventionEntityType?, IConventionContext<IConventionEntityType>)

public virtual void ProcessEntityTypeBaseTypeChanged(IConventionEntityTypeBuilder entityTypeBuilder, IConventionEntityType? newBaseType, IConventionEntityType? oldBaseType, IConventionContext<IConventionEntityType> context)

Parameters

entityTypeBuilder IConventionEntityTypeBuilder
newBaseType IConventionEntityType
oldBaseType IConventionEntityType
context IConventionContext<IConventionEntityType>

ProcessEntityTypeMemberIgnored(IConventionEntityTypeBuilder, string, IConventionContext<string>)

Called after an entity type member is ignored.

public virtual void ProcessEntityTypeMemberIgnored(IConventionEntityTypeBuilder entityTypeBuilder, string name, IConventionContext<string> context)

Parameters

entityTypeBuilder IConventionEntityTypeBuilder

The builder for the entity type.

name string

The name of the ignored member.

context IConventionContext<string>

Additional information associated with convention execution.

ProcessForeignKeyAdded(IConventionForeignKeyBuilder, IConventionContext<IConventionForeignKeyBuilder>)

public virtual void ProcessForeignKeyAdded(IConventionForeignKeyBuilder relationshipBuilder, IConventionContext<IConventionForeignKeyBuilder> context)

Parameters

relationshipBuilder IConventionForeignKeyBuilder
context IConventionContext<IConventionForeignKeyBuilder>

ProcessForeignKeyOwnershipChanged(IConventionForeignKeyBuilder, IConventionContext<bool?>)

public virtual void ProcessForeignKeyOwnershipChanged(IConventionForeignKeyBuilder relationshipBuilder, IConventionContext<bool?> context)

Parameters

relationshipBuilder IConventionForeignKeyBuilder
context IConventionContext<bool?>

ProcessForeignKeyPropertiesChanged(IConventionForeignKeyBuilder, IReadOnlyList<IConventionProperty>, IConventionKey, IConventionContext<IReadOnlyList<IConventionProperty>>)

public virtual void ProcessForeignKeyPropertiesChanged(IConventionForeignKeyBuilder relationshipBuilder, IReadOnlyList<IConventionProperty> oldDependentProperties, IConventionKey oldPrincipalKey, IConventionContext<IReadOnlyList<IConventionProperty>> context)

Parameters

relationshipBuilder IConventionForeignKeyBuilder
oldDependentProperties IReadOnlyList<IConventionProperty>
oldPrincipalKey IConventionKey
context IConventionContext<IReadOnlyList<IConventionProperty>>

ProcessForeignKeyRemoved(IConventionEntityTypeBuilder, IConventionForeignKey, IConventionContext<IConventionForeignKey>)

public virtual void ProcessForeignKeyRemoved(IConventionEntityTypeBuilder entityTypeBuilder, IConventionForeignKey foreignKey, IConventionContext<IConventionForeignKey> context)

Parameters

entityTypeBuilder IConventionEntityTypeBuilder
foreignKey IConventionForeignKey
context IConventionContext<IConventionForeignKey>

ProcessForeignKeyUniquenessChanged(IConventionForeignKeyBuilder, IConventionContext<bool?>)

public virtual void ProcessForeignKeyUniquenessChanged(IConventionForeignKeyBuilder relationshipBuilder, IConventionContext<bool?> context)

Parameters

relationshipBuilder IConventionForeignKeyBuilder
context IConventionContext<bool?>

ProcessKeyProperties(IList<IConventionProperty>, IConventionEntityType)

Adds or removes properties to be used for the primary key.

protected virtual void ProcessKeyProperties(IList<IConventionProperty> keyProperties, IConventionEntityType entityType)

Parameters

keyProperties IList<IConventionProperty>

The properties that will be used to configure the key.

entityType IConventionEntityType

The entity type being configured.

ProcessKeyRemoved(IConventionEntityTypeBuilder, IConventionKey, IConventionContext<IConventionKey>)

public virtual void ProcessKeyRemoved(IConventionEntityTypeBuilder entityTypeBuilder, IConventionKey key, IConventionContext<IConventionKey> context)

Parameters

entityTypeBuilder IConventionEntityTypeBuilder
key IConventionKey
context IConventionContext<IConventionKey>

ProcessPropertyAdded(IConventionPropertyBuilder, IConventionContext<IConventionPropertyBuilder>)

public virtual void ProcessPropertyAdded(IConventionPropertyBuilder propertyBuilder, IConventionContext<IConventionPropertyBuilder> context)

Parameters

propertyBuilder IConventionPropertyBuilder
context IConventionContext<IConventionPropertyBuilder>

ProcessSkipNavigationForeignKeyChanged(IConventionSkipNavigationBuilder, IConventionForeignKey?, IConventionForeignKey?, IConventionContext<IConventionForeignKey>)

public virtual void ProcessSkipNavigationForeignKeyChanged(IConventionSkipNavigationBuilder skipNavigationBuilder, IConventionForeignKey? foreignKey, IConventionForeignKey? oldForeignKey, IConventionContext<IConventionForeignKey> context)

Parameters

skipNavigationBuilder IConventionSkipNavigationBuilder
foreignKey IConventionForeignKey
oldForeignKey IConventionForeignKey
context IConventionContext<IConventionForeignKey>

TryConfigurePrimaryKey(IConventionEntityTypeBuilder)

Discovers primary key candidates and configures the primary key if found.

protected virtual void TryConfigurePrimaryKey(IConventionEntityTypeBuilder entityTypeBuilder)

Parameters

entityTypeBuilder IConventionEntityTypeBuilder

The entity type builder.