Table of Contents

Class RelationshipDiscoveryConvention

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

A convention that configures relationships between entity types based on the navigation properties as long as there is no ambiguity as to which is the corresponding inverse navigation.

public class RelationshipDiscoveryConvention : ITypeIgnoredConvention, IEntityTypeAddedConvention, IEntityTypeBaseTypeChangedConvention, IEntityTypeMemberIgnoredConvention, INavigationRemovedConvention, INavigationAddedConvention, IForeignKeyOwnershipChangedConvention, IForeignKeyNullNavigationSetConvention, IForeignKeyRemovedConvention, IConvention
Inheritance
RelationshipDiscoveryConvention
Implements
Inherited Members

Remarks

See Model building conventions for more information and examples.

Constructors

RelationshipDiscoveryConvention(ProviderConventionSetBuilderDependencies)

Creates a new instance of RelationshipDiscoveryConvention.

public RelationshipDiscoveryConvention(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

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>)

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

Parameters

entityTypeBuilder IConventionEntityTypeBuilder
name string
context IConventionContext<string>

ProcessForeignKeyNullNavigationSet(IConventionForeignKeyBuilder, bool, IConventionContext<IConventionNavigation>)

public virtual void ProcessForeignKeyNullNavigationSet(IConventionForeignKeyBuilder relationshipBuilder, bool pointsToPrincipal, IConventionContext<IConventionNavigation> context)

Parameters

relationshipBuilder IConventionForeignKeyBuilder
pointsToPrincipal bool
context IConventionContext<IConventionNavigation>

ProcessForeignKeyOwnershipChanged(IConventionForeignKeyBuilder, IConventionContext<bool?>)

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

Parameters

relationshipBuilder IConventionForeignKeyBuilder
context IConventionContext<bool?>

ProcessForeignKeyRemoved(IConventionEntityTypeBuilder, IConventionForeignKey, IConventionContext<IConventionForeignKey>)

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

Parameters

entityTypeBuilder IConventionEntityTypeBuilder
foreignKey IConventionForeignKey
context IConventionContext<IConventionForeignKey>

ProcessNavigationAdded(IConventionNavigationBuilder, IConventionContext<IConventionNavigationBuilder>)

public virtual void ProcessNavigationAdded(IConventionNavigationBuilder navigationBuilder, IConventionContext<IConventionNavigationBuilder> context)

Parameters

navigationBuilder IConventionNavigationBuilder
context IConventionContext<IConventionNavigationBuilder>

ProcessNavigationRemoved(IConventionEntityTypeBuilder, IConventionEntityTypeBuilder, string, MemberInfo?, IConventionContext<string>)

public virtual void ProcessNavigationRemoved(IConventionEntityTypeBuilder sourceEntityTypeBuilder, IConventionEntityTypeBuilder targetEntityTypeBuilder, string navigationName, MemberInfo? memberInfo, IConventionContext<string> context)

Parameters

sourceEntityTypeBuilder IConventionEntityTypeBuilder
targetEntityTypeBuilder IConventionEntityTypeBuilder
navigationName string
memberInfo MemberInfo
context IConventionContext<string>

ProcessTypeIgnored(IConventionModelBuilder, string, Type?, IConventionContext<string>)

public virtual void ProcessTypeIgnored(IConventionModelBuilder modelBuilder, string name, Type? type, IConventionContext<string> context)

Parameters

modelBuilder IConventionModelBuilder
name string
type Type
context IConventionContext<string>

ShouldBeOwned(Type, IConventionModel)

Returns a value indicating whether the given entity type should be added as owned if it isn't currently in the model.

protected virtual bool? ShouldBeOwned(Type targetType, IConventionModel model)

Parameters

targetType Type

Target entity type.

model IConventionModel

The model.

Returns

bool?

true if the given entity type should be owned.

TryGetTargetEntityTypeBuilder(IConventionEntityTypeBuilder, Type, MemberInfo, bool?, bool)

Finds or tries to create an entity type target for the given navigation member.

protected virtual IConventionEntityTypeBuilder? TryGetTargetEntityTypeBuilder(IConventionEntityTypeBuilder entityTypeBuilder, Type targetClrType, MemberInfo navigationMemberInfo, bool? shouldBeOwned = null, bool shouldCreate = true)

Parameters

entityTypeBuilder IConventionEntityTypeBuilder

The builder for the referencing entity type.

targetClrType Type

The CLR type of the target entity type.

navigationMemberInfo MemberInfo

The navigation member.

shouldBeOwned bool?

Whether the target entity type should be owned.

shouldCreate bool

Whether an entity type should be created if one doesn't currently exist.

Returns

IConventionEntityTypeBuilder

The builder for the target entity type or null if it can't be created.