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
ProviderConventionSetBuilderDependenciesParameter object containing dependencies for this convention.
Properties
Dependencies
Dependencies for this service.
protected virtual ProviderConventionSetBuilderDependencies Dependencies { get; }
Property Value
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
IConventionEntityTypeThe 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
IConventionEntityTypeBuildercontext
IConventionContext<IConventionEntityTypeBuilder>
ProcessEntityTypeBaseTypeChanged(IConventionEntityTypeBuilder, IConventionEntityType?, IConventionEntityType?, IConventionContext<IConventionEntityType>)
public virtual void ProcessEntityTypeBaseTypeChanged(IConventionEntityTypeBuilder entityTypeBuilder, IConventionEntityType? newBaseType, IConventionEntityType? oldBaseType, IConventionContext<IConventionEntityType> context)
Parameters
entityTypeBuilder
IConventionEntityTypeBuildernewBaseType
IConventionEntityTypeoldBaseType
IConventionEntityTypecontext
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
IConventionEntityTypeBuilderThe builder for the entity type.
name
stringThe 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
IConventionForeignKeyBuildercontext
IConventionContext<IConventionForeignKeyBuilder>
ProcessForeignKeyOwnershipChanged(IConventionForeignKeyBuilder, IConventionContext<bool?>)
public virtual void ProcessForeignKeyOwnershipChanged(IConventionForeignKeyBuilder relationshipBuilder, IConventionContext<bool?> context)
Parameters
relationshipBuilder
IConventionForeignKeyBuildercontext
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
IConventionForeignKeyBuilderoldDependentProperties
IReadOnlyList<IConventionProperty>oldPrincipalKey
IConventionKeycontext
IConventionContext<IReadOnlyList<IConventionProperty>>
ProcessForeignKeyRemoved(IConventionEntityTypeBuilder, IConventionForeignKey, IConventionContext<IConventionForeignKey>)
public virtual void ProcessForeignKeyRemoved(IConventionEntityTypeBuilder entityTypeBuilder, IConventionForeignKey foreignKey, IConventionContext<IConventionForeignKey> context)
Parameters
entityTypeBuilder
IConventionEntityTypeBuilderforeignKey
IConventionForeignKeycontext
IConventionContext<IConventionForeignKey>
ProcessForeignKeyUniquenessChanged(IConventionForeignKeyBuilder, IConventionContext<bool?>)
public virtual void ProcessForeignKeyUniquenessChanged(IConventionForeignKeyBuilder relationshipBuilder, IConventionContext<bool?> context)
Parameters
relationshipBuilder
IConventionForeignKeyBuildercontext
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
IConventionEntityTypeThe entity type being configured.
ProcessKeyRemoved(IConventionEntityTypeBuilder, IConventionKey, IConventionContext<IConventionKey>)
public virtual void ProcessKeyRemoved(IConventionEntityTypeBuilder entityTypeBuilder, IConventionKey key, IConventionContext<IConventionKey> context)
Parameters
entityTypeBuilder
IConventionEntityTypeBuilderkey
IConventionKeycontext
IConventionContext<IConventionKey>
ProcessPropertyAdded(IConventionPropertyBuilder, IConventionContext<IConventionPropertyBuilder>)
public virtual void ProcessPropertyAdded(IConventionPropertyBuilder propertyBuilder, IConventionContext<IConventionPropertyBuilder> context)
Parameters
propertyBuilder
IConventionPropertyBuildercontext
IConventionContext<IConventionPropertyBuilder>
ProcessSkipNavigationForeignKeyChanged(IConventionSkipNavigationBuilder, IConventionForeignKey?, IConventionForeignKey?, IConventionContext<IConventionForeignKey>)
public virtual void ProcessSkipNavigationForeignKeyChanged(IConventionSkipNavigationBuilder skipNavigationBuilder, IConventionForeignKey? foreignKey, IConventionForeignKey? oldForeignKey, IConventionContext<IConventionForeignKey> context)
Parameters
skipNavigationBuilder
IConventionSkipNavigationBuilderforeignKey
IConventionForeignKeyoldForeignKey
IConventionForeignKeycontext
IConventionContext<IConventionForeignKey>
TryConfigurePrimaryKey(IConventionEntityTypeBuilder)
Discovers primary key candidates and configures the primary key if found.
protected virtual void TryConfigurePrimaryKey(IConventionEntityTypeBuilder entityTypeBuilder)
Parameters
entityTypeBuilder
IConventionEntityTypeBuilderThe entity type builder.