示例#1
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="builder"></param>
 public void Apply(CollectionNavigationBuilder <TEntityType, TTargetEntity> builder)
 {
     foreach (var a in _actions)
     {
         a(builder);
     }
 }
示例#2
0
 public override TestReferenceCollectionBuilder <TEntity, TRelatedEntity> WithOne(
     Expression <Func <TRelatedEntity, TEntity> > navigationExpression = null,
     Action <NavigationBuilder> navigationConfiguration = null)
 => new GenericStringTestReferenceCollectionBuilder <TEntity, TRelatedEntity>(
     CollectionNavigationBuilder.WithOne(
         navigationExpression?.GetPropertyAccess().GetSimpleMemberName(),
         navigationConfiguration));
示例#3
0
 /// <summary>
 /// Relationship by name without properties where the declaring entity
 /// is the start of the relationship
 /// </summary>
 /// <param name="collectionNavigationBuilder"></param>
 /// <param name="name"></param>
 /// <returns></returns>
 public static CollectionNavigationBuilder <TEntity, TRelatedEntity> HasRelationship <TEntity, TRelatedEntity>(
     [NotNull] this CollectionNavigationBuilder <TEntity, TRelatedEntity> collectionNavigationBuilder,
     [CanBeNull] string name)
     where TEntity : class
     where TRelatedEntity : class
 => HasRelationship(
     (CollectionNavigationBuilder)collectionNavigationBuilder,
     name,
     typeof(TEntity)
     ) as CollectionNavigationBuilder <TEntity, TRelatedEntity>;
示例#4
0
        /// <summary>
        /// (Detached) Configures a relationship where this entity type owns (see [Owned]) instances of the specified entity.
        /// </summary>
        /// <typeparam name="TEntity">Clr Type of the entity.</typeparam>
        /// <typeparam name="TRelatedEntity">Clr type of the related entity.</typeparam>
        /// <param name="builder">The entity builder</param>
        /// <param name="navigationExpression">A property selector</param>
        /// <returns>A pre-configured collection builder</returns>
        public static CollectionNavigationBuilder <TEntity, TRelatedEntity> OwnsMany <TEntity, TRelatedEntity>(this EntityTypeBuilder <TEntity> builder, Expression <Func <TEntity, IEnumerable <TRelatedEntity> > > navigationExpression = null)
            where TEntity : class
            where TRelatedEntity : class
        {
            CollectionNavigationBuilder <TEntity, TRelatedEntity> navigationBuilder = builder.HasMany(navigationExpression);

            RunAttributeConvention(navigationBuilder.GetInfrastructure(), navigationExpression, new OwnedNavigationAttributeConvention());

            return(navigationBuilder);
        }
示例#5
0
        /// <summary>
        /// (Detached) Configures a relationship where this entity type has (see [Associated]) instances of the specified entity.
        /// </summary>
        /// <typeparam name="TEntity">Clr Type of the entity.</typeparam>
        /// <typeparam name="TRelatedEntity">Clr type of the related entity.</typeparam>
        /// <param name="builder">The entity builder</param>
        /// <param name="navigationExpression">A property selector</param>
        /// <returns>A pre-configured collection builder</returns>
        public static CollectionNavigationBuilder <TEntity, TRelatedEntity> RefersMany <TEntity, TRelatedEntity>(this EntityTypeBuilder <TEntity> builder, Expression <Func <TEntity, IEnumerable <TRelatedEntity> > > navigationExpression = null)
            where TEntity : class
            where TRelatedEntity : class
        {
            CollectionNavigationBuilder <TEntity, TRelatedEntity> navigationBuilder = builder.HasMany(navigationExpression);
            InternalRelationshipBuilder internalBuilder = navigationBuilder.GetInfrastructure();

            internalBuilder.Metadata.SetAnnotation(typeof(AssociatedAttribute).FullName, new AssociatedAttribute(), ConfigurationSource.Explicit);

            return(navigationBuilder);
        }
示例#6
0
        /// <summary>
        /// Relationship by Clr type
        /// </summary>
        /// <param name="collectionNavigationBuilder"></param>
        /// <param name="clrType"></param>
        /// <param name="startingClrType"></param>
        /// <returns></returns>
        public static CollectionNavigationBuilder HasRelationship(
            [NotNull] this CollectionNavigationBuilder collectionNavigationBuilder,
            [CanBeNull] Type clrType,
            [CanBeNull] Type startingClrType
            )
        {
            Check.NotNull(collectionNavigationBuilder, nameof(collectionNavigationBuilder));

            collectionNavigationBuilder.GetInfrastructure <InternalRelationshipBuilder>()
            .Cypher(ConfigurationSource.Explicit)
            .HasRelationship(clrType, startingClrType);

            return(collectionNavigationBuilder);
        }
示例#7
0
        /// <summary>
        /// Relationship by name without properties
        /// </summary>
        /// <param name="collectionNavigationBuilder"></param>
        /// <param name="name"></param>
        /// <param name="startingName"></param>
        /// <returns></returns>
        public static CollectionNavigationBuilder HasRelationship(
            [NotNull] this CollectionNavigationBuilder collectionNavigationBuilder,
            [CanBeNull] string name,
            [CanBeNull] string startingName
            )
        {
            Check.NotNull(collectionNavigationBuilder, nameof(collectionNavigationBuilder));
            Check.NullButNotEmpty(name, nameof(name));

            collectionNavigationBuilder.GetInfrastructure <InternalRelationshipBuilder>()
            .Cypher(ConfigurationSource.Explicit)
            .HasRelationship(name, startingName);

            return(collectionNavigationBuilder);
        }
示例#8
0
 public override TestReferenceCollectionBuilder <TEntity, TRelatedEntity> WithOne(
     Expression <Func <TRelatedEntity, TEntity> > navigationExpression = null)
 => new GenericStringTestReferenceCollectionBuilder <TEntity, TRelatedEntity>(
     CollectionNavigationBuilder.WithOne(navigationExpression?.GetPropertyAccess().Name));
示例#9
0
 public GenericStringTestCollectionNavigationBuilder(CollectionNavigationBuilder <TEntity, TRelatedEntity> collectionNavigationBuilder)
     : base(collectionNavigationBuilder)
 {
 }
 public GenericTestCollectionNavigationBuilder(CollectionNavigationBuilder <TEntity, TRelatedEntity> collectionNavigationBuilder)
 {
     CollectionNavigationBuilder = collectionNavigationBuilder;
 }
示例#11
0
 public NonGenericStringTestCollectionNavigationBuilder(CollectionNavigationBuilder collectionNavigationBuilder)
 {
     CollectionNavigationBuilder = collectionNavigationBuilder;
 }
示例#12
0
 public override TestCollectionCollectionBuilder <TRelatedEntity, TEntity> WithMany(
     Expression <Func <TRelatedEntity, IEnumerable <TEntity>?> > navigationExpression)
 => new GenericStringTestCollectionCollectionBuilder <TRelatedEntity, TEntity>(
     CollectionNavigationBuilder.WithMany(
         navigationExpression.GetMemberAccess().GetSimpleMemberName()));
示例#13
0
 public override TestReferenceCollectionBuilder <TEntity, TRelatedEntity> WithOne(
     Expression <Func <TRelatedEntity, TEntity?> >?navigationExpression = null)
 => new GenericStringTestReferenceCollectionBuilder <TEntity, TRelatedEntity>(
     CollectionNavigationBuilder.WithOne(
         navigationExpression?.GetMemberAccess().GetSimpleMemberName()));
 public override TestReferenceCollectionBuilder <TEntity, TRelatedEntity> InverseReference(Expression <Func <TRelatedEntity, TEntity> > reference = null)
 => new GenericStringTestReferenceCollectionBuilder <TEntity, TRelatedEntity>(CollectionNavigationBuilder.InverseReference(reference?.GetPropertyAccess().Name));
 public override TestCollectionCollectionBuilder <TRelatedEntity, TEntity> WithMany(
     Expression <Func <TRelatedEntity, IEnumerable <TEntity>?> > navigationExpression)
 => new GenericTypeTestCollectionCollectionBuilder <TRelatedEntity, TEntity>(
     CollectionNavigationBuilder.WithMany(navigationExpression));