Example #1
0
        /// <summary>
        /// Maps <see cref="Address"/> for the <typeparamref name="TRelatedEntity"/> owned by <typeparamref name="TEntity"/>.
        /// </summary>
        /// <typeparam name="TEntity">The entity type.</typeparam>
        /// <typeparam name="TRelatedEntity">The related entity type.</typeparam>
        /// <param name="builder">The <see cref="OwnedNavigationBuilder{TEntity,TRelatedEntity}"/>.</param>
        /// <param name="expression">The <see cref="Expression"/>.</param>
        public static void MapType <TEntity, TRelatedEntity>(this OwnedNavigationBuilder <TEntity, TRelatedEntity> builder, Expression <Func <TRelatedEntity, Address> > expression)
            where TEntity : class
            where TRelatedEntity : class
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            if (expression == null)
            {
                throw new ArgumentNullException(nameof(expression));
            }

            builder
            .OwnsOne(expression)
            .Property(x => x.String)
            .HasMaxLength(256);

            builder
            .OwnsOne(expression)
            .HasIndex(x => x.String);

            builder
            .OwnsOne(expression)
            .MapType(x => x.Location);
        }
Example #2
0
        /// <summary>
        /// Maps <see cref="Location"/> for the <typeparamref name="TRelatedEntity"/> owned by <typeparamref name="TEntity"/>.
        /// </summary>
        /// <typeparam name="TEntity">The entity type.</typeparam>
        /// <typeparam name="TRelatedEntity">The related entity type.</typeparam>
        /// <param name="builder">The <see cref="OwnedNavigationBuilder{TEntity,TRelatedEntity}"/>.</param>
        /// <param name="expression">The <see cref="Expression"/>.</param>
        public static void MapType <TEntity, TRelatedEntity>(this OwnedNavigationBuilder <TEntity, TRelatedEntity> builder, Expression <Func <TRelatedEntity, Location> > expression)
            where TEntity : class
            where TRelatedEntity : class
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            if (expression == null)
            {
                throw new ArgumentNullException(nameof(expression));
            }

            builder
            .OwnsOne(expression)
            .Property(x => x.Latitude)
            .HasDefaultValue(0.00)
            .IsRequired();

            builder
            .OwnsOne(expression)
            .Property(x => x.Longitude)
            .HasDefaultValue(0.00)
            .IsRequired();

            builder
            .OwnsOne(expression)
            .HasIndex(x => new
            {
                x.Latitude,
                x.Longitude
            });
        }
 public override TestOwnedNavigationBuilder <TEntity, TDependentEntity> OwnsOne <TNewDependentEntity>(
     Expression <Func <TDependentEntity, TNewDependentEntity> > navigationExpression,
     Action <TestOwnedNavigationBuilder <TDependentEntity, TNewDependentEntity> > buildAction)
 => Wrap(
     OwnedNavigationBuilder.OwnsOne <TNewDependentEntity>(
         navigationExpression?.GetMemberAccess().GetSimpleMemberName(),
         r => buildAction(Wrap(r))));
 public override TestOwnedNavigationBuilder <TEntity, TDependentEntity> OwnsOne <TNewDependentEntity>(
     Expression <Func <TDependentEntity, TNewDependentEntity> > navigationExpression,
     Action <TestOwnedNavigationBuilder <TDependentEntity, TNewDependentEntity> > buildAction)
 => Wrap <TEntity, TDependentEntity>(
     OwnedNavigationBuilder.OwnsOne(
         typeof(TNewDependentEntity).FullName,
         navigationExpression.GetPropertyAccess().GetSimpleMemberName(),
         r => buildAction(new NonGenericStringTestOwnedNavigationBuilder <TDependentEntity, TNewDependentEntity>(r))));
Example #5
0
        /// <summary>
        /// Configure LocalizedText value object as a nested ownership
        /// </summary>
        /// <param name="builder"></param>
        public virtual OwnedNavigationBuilder OwnsLocalizedText <OEntity>(OwnedNavigationBuilder <TEntity, OEntity> builder,
                                                                          Expression <Func <OEntity, LocalizedText> > column) where OEntity : class
        {
            //Get column name from expression
            Expression       expression        = column.Body as Expression;
            MemberExpression memeberExpression = expression as MemberExpression;

            return(builder.OwnsOne(typeof(LocalizedText), memeberExpression.Member.Name, e =>
            {
                e.Property("StringValue").HasColumnName(memeberExpression.Member.Name).IsUnicode(true).IsRequired();
                e.Ignore("CurrentCultureText");
            }));
        }
Example #6
0
        /// <summary>
        /// Maps <see cref="Duration"/> for <typeparamref name="TRelatedEntity"/> owned by <typeparamref name="TEntity"/>.
        /// </summary>
        /// <typeparam name="TEntity">The entity type.</typeparam>
        /// <typeparam name="TRelatedEntity">The related entity type.</typeparam>
        /// <param name="builder">The <see cref="OwnedNavigationBuilder{TEntity,TRelatedEntity}"/>.</param>
        /// <param name="expression">The <see cref="Expression"/>.</param>
        public static void MapType <TEntity, TRelatedEntity>(this OwnedNavigationBuilder <TEntity, TRelatedEntity> builder, Expression <Func <TRelatedEntity, Duration> > expression)
            where TEntity : class
            where TRelatedEntity : class
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            if (expression == null)
            {
                throw new ArgumentNullException(nameof(expression));
            }

            builder
            .OwnsOne(expression)
            .Property(x => x.Time)
            .HasDefaultValue(TimeSpan.Zero)
            .IsRequired();

            builder
            .OwnsOne(expression)
            .HasIndex(x => x.Time);

            builder
            .OwnsOne(expression)
            .Property(x => x.Adjustment)
            .HasDefaultValue(TimeSpan.Zero)
            .IsRequired();

            builder
            .OwnsOne(expression)
            .Property(x => x.Total);

            builder
            .OwnsOne(expression)
            .HasIndex(x => x.Total);
        }
Example #7
0
        /// <summary>
        /// Maps <see cref="Distance"/> for the <typeparamref name="TRelatedEntity"/> owned by <typeparamref name="TEntity"/>.
        /// </summary>
        /// <typeparam name="TEntity">The entity type.</typeparam>
        /// <typeparam name="TRelatedEntity">The related entity type.</typeparam>
        /// <param name="builder">The <see cref="OwnedNavigationBuilder{TEntity,TRelatedEntity}"/>.</param>
        /// <param name="expression">The <see cref="Expression"/>.</param>
        public static void MapType <TEntity, TRelatedEntity>(this OwnedNavigationBuilder <TEntity, TRelatedEntity> builder, Expression <Func <TRelatedEntity, Distance> > expression)
            where TEntity : class
            where TRelatedEntity : class
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            if (expression == null)
            {
                throw new ArgumentNullException(nameof(expression));
            }

            builder
            .OwnsOne(expression)
            .Property(x => x.Meters)
            .HasDefaultValue(0.00)
            .IsRequired();

            builder
            .OwnsOne(expression)
            .HasIndex(x => x.Meters);

            builder
            .OwnsOne(expression)
            .Property(x => x.Miles)
            .HasDefaultValue(0.00);

            builder
            .OwnsOne(expression)
            .HasIndex(x => x.Miles);

            builder
            .OwnsOne(expression)
            .Property(x => x.Kilometers)
            .HasDefaultValue(0.00);

            builder
            .OwnsOne(expression)
            .HasIndex(x => x.Kilometers);
        }
Example #8
0
 public override TestOwnedNavigationBuilder <TDependentEntity, TNewDependentEntity> OwnsOne <TNewDependentEntity>(
     Expression <Func <TDependentEntity, TNewDependentEntity?> > navigationExpression)
     where TNewDependentEntity : class
 => Wrap(
     OwnedNavigationBuilder.OwnsOne <TNewDependentEntity>(navigationExpression.GetMemberAccess().GetSimpleMemberName()));
Example #9
0
 public override TestOwnedNavigationBuilder <TDependentEntity, TNewDependentEntity> OwnsOne <TNewDependentEntity>(
     Expression <Func <TDependentEntity, TNewDependentEntity> > navigationExpression)
 => Wrap(
     OwnedNavigationBuilder.OwnsOne <TNewDependentEntity>(navigationExpression?.GetPropertyAccess().GetSimpleMemberName()));
Example #10
0
 public override TestOwnedNavigationBuilder <TDependentEntity, TNewDependentEntity> OwnsOne <TNewDependentEntity>(
     Expression <Func <TDependentEntity, TNewDependentEntity> > navigationExpression)
 => new NonGenericStringTestOwnedNavigationBuilder <TDependentEntity, TNewDependentEntity>(
     OwnedNavigationBuilder.OwnsOne(
         typeof(TNewDependentEntity).FullName, navigationExpression.GetMemberAccess().GetSimpleMemberName()));