/// <summary> /// This API supports the Entity Framework Core infrastructure and is not intended to be used /// directly from your code. This API may change or be removed in future releases. /// </summary> public RelationshipConfiguration( [NotNull] EntityConfiguration entityConfiguration, [NotNull] IForeignKey foreignKey, [NotNull] string dependentEndNavigationPropertyName, [NotNull] string principalEndNavigationPropertyName, DeleteBehavior onDeleteAction) { Check.NotNull(entityConfiguration, nameof(entityConfiguration)); Check.NotNull(foreignKey, nameof(foreignKey)); Check.NotEmpty(dependentEndNavigationPropertyName, nameof(dependentEndNavigationPropertyName)); Check.NotEmpty(principalEndNavigationPropertyName, nameof(principalEndNavigationPropertyName)); EntityConfiguration = entityConfiguration; ForeignKey = foreignKey; DependentEndNavigationPropertyName = dependentEndNavigationPropertyName; PrincipalEndNavigationPropertyName = principalEndNavigationPropertyName; OnDeleteAction = onDeleteAction; }
public virtual RelationshipConfiguration CreateRelationshipConfiguration( [NotNull] EntityConfiguration entityConfiguration, [NotNull] IForeignKey foreignKey, [NotNull] string dependentEndNavigationPropertyName, [NotNull] string principalEndNavigationPropertyName, DeleteBehavior onDeleteAction) { Check.NotNull(entityConfiguration, nameof(entityConfiguration)); Check.NotNull(foreignKey, nameof(foreignKey)); Check.NotEmpty(dependentEndNavigationPropertyName, nameof(dependentEndNavigationPropertyName)); Check.NotEmpty(principalEndNavigationPropertyName, nameof(principalEndNavigationPropertyName)); return new RelationshipConfiguration( entityConfiguration, foreignKey, dependentEndNavigationPropertyName, principalEndNavigationPropertyName, onDeleteAction); }
public abstract TestReferenceOwnershipBuilder <TEntity, TRelatedEntity> OnDelete(DeleteBehavior deleteBehavior);
public OptionalBlogsContext(DeleteBehavior deleteBehavior, bool quiet = true) { _deleteBehavior = deleteBehavior; _quiet = quiet; }
public override TestReferenceCollectionBuilder <TEntity, TRelatedEntity> OnDelete(DeleteBehavior deleteBehavior) => new NonGenericTestReferenceCollectionBuilder <TEntity, TRelatedEntity>( ReferenceCollectionBuilder.OnDelete(deleteBehavior));
/// <summary> /// 设置默认的一对多级联删除行为 /// </summary> /// <param name="modelBuilder"></param> /// <param name="deleteBehavior">删除行为,默认为限制级联删除<seealso cref="DeleteBehavior.Restrict"/></param> /// <returns></returns> public static ModelBuilder DefaultDeleteBehavior(this ModelBuilder modelBuilder, DeleteBehavior deleteBehavior = DeleteBehavior.Restrict) { // 限制一对多级联删除 foreach (var relationship in modelBuilder.Model.GetEntityTypes() .SelectMany(e => e.GetForeignKeys())) { relationship.DeleteBehavior = deleteBehavior; } return(modelBuilder); }
/// <summary> /// Configures how a delete operation is applied to dependent entities in the relationship when the /// principal is deleted or the relationship is severed. /// </summary> /// <param name="deleteBehavior"> The action to perform. </param> /// <returns> The same builder instance so that multiple configuration calls can be chained. </returns> public new virtual CollectionOwnershipBuilder <TEntity, TDependentEntity> OnDelete(DeleteBehavior deleteBehavior) { Builder = Builder.DeleteBehavior(deleteBehavior, ConfigurationSource.Explicit); return(this); }
public abstract TestCollectionOwnershipBuilder <TEntity, TDependentEntity> OnDelete(DeleteBehavior deleteBehavior);
public HasOneWithManyAttribute(Type type, DeleteBehavior behavior) { RelatedTypeName = type.FullName; DeleteBehavior = behavior; }
/// <summary> /// Configures how a delete operation is applied to dependent entities in the relationship when the /// principal is deleted or the relationship is severed. /// </summary> /// <param name="deleteBehavior"> The action to perform. </param> /// <returns> The same builder instance so that multiple configuration calls can be chained. </returns> public new virtual ReferenceOwnershipBuilder <TEntity, TRelatedEntity> OnDelete(DeleteBehavior deleteBehavior) { Builder = Builder.DeleteBehavior(deleteBehavior, ConfigurationSource.Explicit); return(this); }
/// <summary> /// Configure Delete Behaviour across all keys on types that are not excluded. /// </summary> /// <param name="builder">Model Builder.</param> /// <param name="deleteBehavior">Delete Behaviour to configure.</param> /// <param name="excludedTypes">Types to exclude from change.</param> /// <returns>ModelBuilder.</returns> public static ModelBuilder ConfigureDeleteBehaviour(this ModelBuilder builder, DeleteBehavior deleteBehavior, params Type[] excludedTypes) { var excludedEntities = new List <IMutableEntityType>(); foreach (var excludedType in excludedTypes) { excludedEntities.Add(builder.Model.FindEntityType(excludedType)); } foreach (var relationship in builder.Model.GetEntityTypes().Except(excludedEntities).SelectMany(e => e.GetForeignKeys())) { relationship.DeleteBehavior = DeleteBehavior.Restrict; } return(builder); }
/// <summary> /// This API supports the Entity Framework Core infrastructure and is not intended to be used /// directly from your code. This API may change or be removed in future releases. /// </summary> public virtual void SetDeleteBehavior(DeleteBehavior deleteBehavior, ConfigurationSource configurationSource) { _deleteBehavior = deleteBehavior; UpdateDeleteBehaviorConfigurationSource(configurationSource); }
/// <summary> /// Configure Delete Behaviour across all keys on types that are not excluded, adding default Identity tables to the exclusion list. /// </summary> /// <typeparam name="TUser">Identity User Type.</typeparam> /// <typeparam name="TKey">Identity Key type.</typeparam> /// <param name="builder">Model Builder.</param> /// <param name="deleteBehavior">Delete Behaviour to configure.</param> /// <param name="excludedTypes">Types to exclude from change in addition to Identity types.</param> /// <returns>ModelBuilder.</returns> public static ModelBuilder ConfigureDeleteBehaviourExcludingIdentity <TUser, TKey>(this ModelBuilder builder, DeleteBehavior deleteBehavior, params Type[] excludedTypes) where TKey : IEquatable <TKey> { excludedTypes = excludedTypes.Concat(new[] { typeof(TUser), typeof(IdentityRole <TKey>), typeof(IdentityUserRole <TKey>), typeof(IdentityUserClaim <TKey>), typeof(IdentityUserLogin <TKey>), typeof(IdentityUserToken <TKey>), typeof(IdentityRoleClaim <TKey>), }).ToArray(); return(ConfigureDeleteBehaviour(builder, deleteBehavior, excludedTypes)); }
public ModelBuilder <T> AddForeignKey <T2>(Expression <Func <T, T2> > field, Expression <Func <T2, T> > foreignField, bool required = true, DeleteBehavior deleteBehavior = DeleteBehavior.Cascade) where T2 : class => call(() => modelBuilder.Entity <T>().HasOne(field).WithOne(foreignField).IsRequired(required));
public ModelBuilder <T> OnDelete <T2>(Expression <Func <T, IEnumerable <T2> > > field, Expression <Func <T2, T> > foreignField, DeleteBehavior deleteBehavior) where T2 : class => call(() => modelBuilder.Entity <T>().HasMany(field).WithOne(foreignField).OnDelete(deleteBehavior));
public static string ConvertReferentialActionToDeleteBehavior(this ReferentialAction?refAct, DeleteBehavior entityBehavior) { if ((entityBehavior == DeleteBehavior.ClientSetNull || entityBehavior == DeleteBehavior.Restrict) && refAct == ReferentialAction.NoAction) { //A no action constrait can map to either ClientSetNull or Restrict return(entityBehavior.ToString()); } return(refAct?.ToString() ?? ReferentialAction.NoAction.ToString()); }
/// <summary> /// Configures how a delete operation is applied to dependent entities in the relationship when the /// principal is deleted or the relationship is severed. /// </summary> /// <param name="deleteBehavior"> The action to perform. </param> /// <returns> The same builder instance so that multiple configuration calls can be chained. </returns> public new virtual ReferenceReferenceBuilder <TEntity, TRelatedEntity> OnDelete(DeleteBehavior deleteBehavior) => new ReferenceReferenceBuilder <TEntity, TRelatedEntity>( Builder.DeleteBehavior(deleteBehavior, ConfigurationSource.Explicit), this);
/// <summary> /// Configures the operation applied to dependent entities in the relationship when the /// principal is deleted or the relationship is severed. /// </summary> /// <param name="deleteBehavior"> The action to perform. </param> /// <returns> The same builder instance so that multiple configuration calls can be chained. </returns> public virtual ReferenceCollectionBuilder OnDelete(DeleteBehavior deleteBehavior) => new ReferenceCollectionBuilder( Builder.OnDelete(deleteBehavior, ConfigurationSource.Explicit), this);
public EnumLookupOptions SetDeleteBehavior(DeleteBehavior deleteBehavior) { DeleteBehavior = deleteBehavior; return(this); }
public DocumentInfo <TEntity> SetDeleteBehavior <TReference>(Expression <Func <TReference, object> > keySelector, DeleteBehavior behavior = DeleteBehavior.Cascade) where TReference : class { DeleteSettings.Add(new DeleteBuilder() { EntityType = typeof(TReference), PropertyName = keySelector.GetMemberName().ToCameCase(), Behavior = behavior }); return(this); }
public RequiredBlogsContext(DeleteBehavior deleteBehavior, bool quiet = true) { _deleteBehavior = deleteBehavior; _quiet = quiet; }
public ForeignKeyAttribute(string[] columns, Type pricipalType, string[] piColumns = null, DeleteBehavior behavior = DeleteBehavior.Restrict) { }
public static void CascadeAllRelationsOnDelete(this ModelBuilder modelBuilder, DeleteBehavior behavior = DeleteBehavior.Restrict) { // This is the only way to do it right now is to iterate through all relationships foreach (var relationship in modelBuilder.Model.GetEntityTypes().SelectMany(e => e.GetForeignKeys())) { relationship.DeleteBehavior = behavior; } }
private static void SetDeleteBehavior <T1, T2>(ModelBuilder modelBuilder, Expression <Func <T1, T2> > oneWay, Expression <Func <T1, object> > secondWay, DeleteBehavior deleteBehavior = DeleteBehavior.Restrict) where T1 : class where T2 : class { modelBuilder.Entity <T1>() .HasOne(oneWay) .WithMany() .HasForeignKey(secondWay) .OnDelete(deleteBehavior); }
public MultiContext(DbContextOptions <MultiContext> options, DeleteBehavior behavior, bool isRequired) : base(options) { _deleteBehavior = behavior; _isRequired = isRequired; }
/// <summary> /// Configures how a delete operation is applied to dependent entities in the relationship when the /// principal is deleted or the relationship is severed. /// </summary> /// <param name="deleteBehavior"> The action to perform. </param> /// <returns> The same builder instance so that multiple configuration calls can be chained. </returns> public virtual ReferenceOwnershipBuilder OnDelete(DeleteBehavior deleteBehavior) { Builder = Builder.DeleteBehavior(deleteBehavior, ConfigurationSource.Explicit); return(this); }
/// <summary> /// Configures how a delete operation is applied to dependent entities in the relationship when the /// principal is deleted or the relationship is severed. /// </summary> /// <param name="deleteBehavior"> The action to perform. </param> /// <returns> The same builder instance so that multiple configuration calls can be chained. </returns> public virtual ReferenceOwnershipBuilder OnDelete(DeleteBehavior deleteBehavior) => new ReferenceOwnershipBuilder(Builder.DeleteBehavior(deleteBehavior, ConfigurationSource.Explicit), this);
public override TestReferenceReferenceBuilder <TEntity, TRelatedEntity> OnDelete(DeleteBehavior deleteBehavior) => Wrap(ReferenceReferenceBuilder.OnDelete(deleteBehavior));
public override TestCollectionOwnershipBuilder <TEntity, TDependentEntity> OnDelete(DeleteBehavior deleteBehavior) => Wrap <TEntity, TDependentEntity>(CollectionOwnershipBuilder.OnDelete(deleteBehavior));
public abstract TestReferenceCollectionBuilder <TEntity, TRelatedEntity> OnDelete(DeleteBehavior deleteBehavior);
/// <summary> /// Configures how a delete operation is applied to dependent entities in the relationship when the /// principal is deleted or the relationship is severed. /// </summary> /// <param name="deleteBehavior"> The action to perform. </param> /// <returns> The same builder instance so that multiple configuration calls can be chained. </returns> public new virtual ReferenceCollectionBuilder <TPrincipalEntity, TDependentEntity> OnDelete(DeleteBehavior deleteBehavior) => new ReferenceCollectionBuilder <TPrincipalEntity, TDependentEntity>( Builder.DeleteBehavior(deleteBehavior, ConfigurationSource.Explicit), this);
ReferenceCollectionBuilder CreateOneToMany <EntityType, OneType>(EntityTypeBuilder <EntityType> builder, string oneName, string manyName, string foreignKey, DeleteBehavior deleteBehavior = DeleteBehavior.Restrict) where EntityType : class where OneType : class { return(builder.HasOne <OneType>(oneName) .WithMany(manyName) .HasForeignKey(foreignKey) .OnDelete(deleteBehavior) .HasConstraintName(string.Format("FK_{0}_{1}", oneName, manyName))); }