コード例 #1
0
        public static Result <ConfiguracaoInscricao> Criar(int limiteIdade, int quantidadeMinimaAlunos, int quantidadeMaximaAlunos)
        {
            var limiteResultado    = Quantidade.Criar(limiteIdade);
            var intervaloResultado = IntervaloQuantidade.Criar(quantidadeMinimaAlunos, quantidadeMaximaAlunos);

            if (Result.Combine(limiteResultado, intervaloResultado) is var resultado && resultado.IsFailure)
            {
                return(Result.Failure <ConfiguracaoInscricao>(resultado.Error));
            }
            return(Result.Ok(new ConfiguracaoInscricao(limiteResultado.Value, intervaloResultado.Value)));
        }
コード例 #2
0
        public void Configure(EntityTypeBuilder <TurmaBase> builder)
        {
            builder.ToTable("Turmas", EscolaContextoEF.DEFAULT_SCHEMA);
            builder.HasKey(p => p.Id);
            builder.Property(p => p.Id)
            .UseHiLo("turmaseq", EscolaContextoEF.DEFAULT_SCHEMA);
            builder
            .HasDiscriminator <string>("Especializacao")
            .HasValue <TurmaComDuracao>(nameof(TurmaComDuracao))
            .HasValue <TurmaComDuracaoIlimitada>(nameof(TurmaComDuracaoIlimitada));

            builder.Property(p => p.Descricao)
            .HasColumnType("varchar(100)")
            .HasConversion <string>(p => p, p => Descricao.Criar(p).Value);
            builder.OwnsOne(p => p.Configuracao, configuracao =>
            {
                configuracao.Property(n => n.LimiteIdade)
                .HasColumnName("LimiteIdade")
                .HasColumnType("int")
                .HasConversion <int>(p => p, p => Quantidade.Criar(p).Value);
                configuracao.OwnsOne(p => p.QuantidadeAlunos, quantidade =>
                {
                    quantidade.Property(c => c.Minimo)
                    .HasColumnName("QuantidadeMinimaAlunos")
                    .HasColumnType("int")
                    .HasConversion <int>(p => p, p => Quantidade.Criar(p).Value);
                    quantidade.Property(c => c.Maximo)
                    .HasColumnName("QuantidadeMaximaAlunos")
                    .HasColumnType("int")
                    .HasConversion <int>(p => p, p => Quantidade.Criar(p).Value);
                    quantidade.Property <byte[]>("RowVersion").HasColumnName("RowVersion").IsRowVersion();
                });
                configuracao.Property <byte[]>("RowVersion").HasColumnName("RowVersion").IsRowVersion();
            });
            builder.Property(c => c.TotalInscritos)
            .HasColumnType("int")
            .HasConversion <int>(p => p, p => Quantidade.Criar(p).Value);
            //.IsConcurrencyToken();
            builder.Property(c => c.Excluido);
            builder.HasQueryFilter(c => !c.Excluido);
            builder.Property <byte[]>("RowVersion").HasColumnName("RowVersion").IsRowVersion();
            builder.Property <DateTime>("DataUltimaAlteracao").HasColumnType("datetime2");
            builder.Property <DateTime>("DataCadastro").HasColumnType("datetime2");
        }
コード例 #3
0
        public void Configure(EntityTypeBuilder <TurmaComDuracao> builder)
        {
            builder.HasBaseType <TurmaBase>();


            builder.OwnsOne(p => p.Duracao, duracao =>
            {
                duracao.Property(n => n.Tipo)
                .HasColumnName("DuracaoTipo")
                .HasColumnType("varchar(20)")
                .HasConversion(new EnumToStringConverter <EDuracaoEm>());

                duracao.Property(n => n.Quantidade)
                .HasColumnName("DuracaoQuantidade")
                .HasColumnType("int")
                .HasConversion <int>(p => p, p => Quantidade.Criar(p).Value);

                duracao.Property <byte[]>("RowVersion").HasColumnName("RowVersion").IsRowVersion();
            });
        }