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
ProviderConventionSetBuilderDependenciesParameter object containing dependencies for this convention.
Properties
Dependencies
Dependencies for this service.
protected virtual ProviderConventionSetBuilderDependencies Dependencies { get; }
Property Value
Methods
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>)
public virtual void ProcessEntityTypeMemberIgnored(IConventionEntityTypeBuilder entityTypeBuilder, string name, IConventionContext<string> context)
Parameters
entityTypeBuilder
IConventionEntityTypeBuildername
stringcontext
IConventionContext<string>
ProcessForeignKeyNullNavigationSet(IConventionForeignKeyBuilder, bool, IConventionContext<IConventionNavigation>)
public virtual void ProcessForeignKeyNullNavigationSet(IConventionForeignKeyBuilder relationshipBuilder, bool pointsToPrincipal, IConventionContext<IConventionNavigation> context)
Parameters
relationshipBuilder
IConventionForeignKeyBuilderpointsToPrincipal
boolcontext
IConventionContext<IConventionNavigation>
ProcessForeignKeyOwnershipChanged(IConventionForeignKeyBuilder, IConventionContext<bool?>)
public virtual void ProcessForeignKeyOwnershipChanged(IConventionForeignKeyBuilder relationshipBuilder, IConventionContext<bool?> context)
Parameters
relationshipBuilder
IConventionForeignKeyBuildercontext
IConventionContext<bool?>
ProcessForeignKeyRemoved(IConventionEntityTypeBuilder, IConventionForeignKey, IConventionContext<IConventionForeignKey>)
public virtual void ProcessForeignKeyRemoved(IConventionEntityTypeBuilder entityTypeBuilder, IConventionForeignKey foreignKey, IConventionContext<IConventionForeignKey> context)
Parameters
entityTypeBuilder
IConventionEntityTypeBuilderforeignKey
IConventionForeignKeycontext
IConventionContext<IConventionForeignKey>
ProcessNavigationAdded(IConventionNavigationBuilder, IConventionContext<IConventionNavigationBuilder>)
public virtual void ProcessNavigationAdded(IConventionNavigationBuilder navigationBuilder, IConventionContext<IConventionNavigationBuilder> context)
Parameters
navigationBuilder
IConventionNavigationBuildercontext
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
IConventionEntityTypeBuildertargetEntityTypeBuilder
IConventionEntityTypeBuildernavigationName
stringmemberInfo
MemberInfocontext
IConventionContext<string>
ProcessTypeIgnored(IConventionModelBuilder, string, Type?, IConventionContext<string>)
public virtual void ProcessTypeIgnored(IConventionModelBuilder modelBuilder, string name, Type? type, IConventionContext<string> context)
Parameters
modelBuilder
IConventionModelBuildername
stringtype
Typecontext
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
TypeTarget entity type.
model
IConventionModelThe model.
Returns
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
IConventionEntityTypeBuilderThe builder for the referencing entity type.
targetClrType
TypeThe CLR type of the target entity type.
navigationMemberInfo
MemberInfoThe navigation member.
shouldBeOwned
bool?Whether the target entity type should be owned.
shouldCreate
boolWhether 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.