Beispiel #1
0
        public void Configure(EntityTypeBuilder <Order> builder)
        {
            builder.ToTable("Orders", OrderingContext.DEFAULT_SCHEMA);
            builder.HasKey(e => e.Id);
            builder.Ignore(e => e.DomainEvents);
            builder.Property(e => e.Id).ForSqlServerUseSequenceHiLo("orderseq", OrderingContext.DEFAULT_SCHEMA);

            //configuring address which is a value object
            builder.OwnsOne(e => e.Address);

            //configuring private fields
            //builder.Property<System.DateTime>("orderDate").HasColumnName("OrderDate").IsRequired();
            builder.Property <string>("description").HasColumnName("Description").IsRequired(false);

            //configuring navigation properties (that does not exist!)
            var navigation = builder.Metadata.FindNavigation(nameof(Order.OrderItems));

            navigation.SetPropertyAccessMode(PropertyAccessMode.Field);

            builder.HasOne <Domain.AggregatesModel.BuyerAggregate.Buyer>()
            .WithMany()
            .IsRequired(false)
            .HasForeignKey(e => e.BuyerId);

            //backing fields need no extra configuration since they are following conventions (_fieldName)

            //Enums can be configured in a specific way:
            var converter = new EnumToNumberConverter <OrderState, short>();

            builder
            .Property(e => e.OrderState)
            .HasConversion(converter);
        }
Beispiel #2
0
        public void Configure(EntityTypeBuilder <PedidoPrato> builder)
        {
            var converter = new EnumToNumberConverter <EStatusProducao, int>();

            builder.HasKey(p => p.Id);

            builder.Property(p => p.Observacao)
            .HasColumnType("varchar(1000)");

            builder.Property(p => p.StatusProducao)
            .IsRequired()
            .HasColumnType("int")
            .HasConversion(converter);

            builder.HasOne(d => d.Pedido)
            .WithMany(p => p.PedidoPrato)
            .HasForeignKey(d => d.PedidoId)
            .HasConstraintName("FK_PedidoPrato_Pedidos");

            builder.HasOne(d => d.Prato)
            .WithMany(p => p.PedidoPrato)
            .HasForeignKey(d => d.PratoId)
            .HasConstraintName("FK_PedidoPrato_Pratos");

            builder.ToTable("PedidoPrato");
        }
        public void Configure(EntityTypeBuilder <Mesa> builder)
        {
            var converter = new EnumToNumberConverter <ELocalizacaoMesa, int>();

            builder.HasKey(p => p.Id);

            builder.Property(p => p.Numero)
            .IsRequired()
            .HasColumnType("varchar(50)");

            builder.Property(p => p.Ativo)
            .HasDefaultValue(1)
            .HasColumnType("bit");

            builder.Property(p => p.Lugares)
            .HasColumnType("int")
            .HasDefaultValue(4);

            builder.Property(p => p.LocalizacaoMesa)
            .IsRequired()
            .HasColumnType("int")
            .HasConversion(converter);

            builder.ToTable("Mesas");
        }
        public void ConfigureOptimizations(EntityTypeBuilder <OptimizationProblem> builder)
        {
            builder.HasKey(o => o.OptimizationProblemDbId);

            builder.Property(o => o.OptimizationProblemDbId)
            .IsUnicode(false)
            .ValueGeneratedOnAdd();

            var converter = new EnumToNumberConverter <Enum.OptimizationState, int>();

            builder.Property(o => o.State)
            .HasConversion(converter);

            //builder.Property(o => o.CreatedTimestamp)
            //    .HasConversion<uint>();

            builder
            .HasMany(o => o.Routes)
            .WithOne(r => r.OptimizationProblem)
            .OnDelete(DeleteBehavior.Cascade);

            builder
            .HasMany(o => o.Addresses)
            .WithOne(a => a.optimizationProblem)
            .OnDelete(DeleteBehavior.Cascade);

            // TO DO: Adjust later
            //builder
            //    .HasMany(o => o.Directions)
            //    .WithOne(d => d.optimizationProblem)
            //    .OnDelete(DeleteBehavior.Cascade);
        }
Beispiel #5
0
        public void Configure(EntityTypeBuilder <Prato> builder)
        {
            var converter = new EnumToNumberConverter <ETipoPrato, int>();

            builder.HasKey(p => p.Id);

            builder.Property(p => p.Titulo)
            .IsRequired()
            .HasColumnType("varchar(200)");

            builder.Property(p => p.Descricao)
            .IsRequired()
            .HasColumnType("varchar(800)");

            builder.Property(p => p.Foto)
            .IsRequired()
            .HasColumnType("varchar(200)");

            builder.Property(p => p.Preco)
            .IsRequired()
            .HasColumnType("float");

            builder.Property(p => p.Ativo)
            .HasDefaultValue(1)
            .HasColumnType("bit");

            builder.Property(p => p.TipoPrato)
            .IsRequired()
            .HasColumnType("int")
            .HasConversion(converter);

            builder.ToTable("Pratos");
        }
Beispiel #6
0
        public void Configure(EntityTypeBuilder <Pedido> builder)
        {
            var converter = new EnumToNumberConverter <ELocalizacaoMesa, int>();

            builder.HasKey(p => p.Id);

            builder.Property(p => p.Numero)
            .IsRequired()
            .HasColumnType("varchar(50)");

            builder.Property(e => e.DataHoraCadastro)
            .HasColumnType("datetime")
            .HasDefaultValueSql("(getdate())");

            builder.Property(e => e.DataHoraEncerrado).HasColumnType("datetime");

            builder.HasOne(d => d.Atendente)
            .WithMany(p => p.Pedidos)
            .HasForeignKey(d => d.AtendenteId)
            .HasConstraintName("FK_Pedidos_Atendentes");

            builder.HasOne(d => d.Mesa)
            .WithMany(p => p.Pedidos)
            .HasForeignKey(d => d.MesaId)
            .HasConstraintName("FK_Pedidos_Mesas");

            builder.ToTable("Pedidos");
        }
Beispiel #7
0
        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            var converter = new EnumToNumberConverter <ProductTypeEnum, int>();

            modelBuilder
            .Entity <Product>()
            .Property(e => e.Type)
            .HasConversion(converter);
        }
Beispiel #8
0
        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            var gender = new EnumToNumberConverter <Gender, int>();

            modelBuilder.Entity <Users>(a =>
            {
                a.HasKey(b => b.ID);
                a.Property(b => b.UserName).HasMaxLength(50).IsRequired();
                a.Property(b => b.Password).HasMaxLength(50).IsRequired();
                a.Property(b => b.Genders).HasConversion(gender).IsRequired();
                a.Property(b => b.LoginCount).HasDefaultValue(0).IsRequired();
                a.Property(b => b.CreateTime);
                a.Property(b => b.LastUpdateTime).IsRequired();
                a.Property(b => b.LoginCount).HasDefaultValue(0);
                a.Property(b => b.LookTime);
            });
            var target = new EnumToNumberConverter <Target, int>();

            modelBuilder.Entity <Menu>(a =>
            {
                a.HasKey(b => b.ID);
                a.Property(b => b.Name).HasMaxLength(50).IsRequired();
                a.Property(b => b.Iocn).HasMaxLength(50).IsRequired();
                a.Property(b => b.Targets).HasConversion(target).IsRequired();
                a.Property(b => b.ParentID).HasDefaultValue(0).IsRequired();
                a.Property(b => b.IsDelete).HasDefaultValue(0).IsRequired();
                a.Property(b => b.IsShow).HasDefaultValue(0).IsRequired();
                a.Property(b => b.CreateTime);
                a.Property(b => b.LastUpdateTime).IsRequired();
            });
            modelBuilder.Entity <Role>(a =>
            {
                a.HasKey(b => b.ID);
                a.Property(b => b.Name).HasMaxLength(50).IsRequired();
                a.Property(b => b.MenuPermissionID).IsRequired();
                a.Property(b => b.IsDelete).HasDefaultValue(0).IsRequired();
                a.Property(b => b.CreateTime).IsRequired();
                a.Property(b => b.LastUpdateTime).IsRequired();
            });
            modelBuilder.Entity <Users>().HasData(
                new Users {
                ID = Snowflake.Instance().GetId(), UserName = "******", Password = "******", Genders = Gender.Male, CreateTime = DateTime.Now, LastUpdateTime = DateTime.Now, Age = 31, LoginCount = 0
            },
                new Users {
                ID = Snowflake.Instance().GetId(), UserName = "******", Password = "******", Genders = Gender.Female, CreateTime = DateTime.Now, LastUpdateTime = DateTime.Now, Age = 21, LoginCount = 0
            },
                new Users {
                ID = Snowflake.Instance().GetId(), UserName = "******", Password = "******", Genders = Gender.Male, CreateTime = DateTime.Now, LastUpdateTime = DateTime.Now, Age = 18, LoginCount = 0
            },
                new Users {
                ID = Snowflake.Instance().GetId(), UserName = "******", Password = "******", Genders = Gender.Male, CreateTime = DateTime.Now, LastUpdateTime = DateTime.Now, Age = 25, LoginCount = 0
            },
                new Users {
                ID = Snowflake.Instance().GetId(), UserName = "******", Password = "******", Genders = Gender.Female, CreateTime = DateTime.Now, LastUpdateTime = DateTime.Now, Age = 25, LoginCount = 0
            });
        }
Beispiel #9
0
        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            base.OnModelCreating(modelBuilder);
            var converter = new EnumToNumberConverter <EstadoCivil, byte>();

            modelBuilder
            .Entity <Cliente>()
            .Property(e => e.EstadoCivil)
            .HasConversion(converter);
        }
Beispiel #10
0
        public void Configure(EntityTypeBuilder <User> builder)
        {
            var converter = new EnumToNumberConverter <Gender, int>();

            builder
            .Property(p => p.Gender)
            .HasConversion(converter);

            builder
            .HasQueryFilter(p => !p.IsDeleted);
        }
Beispiel #11
0
        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            base.OnModelCreating(modelBuilder);
            var converter = new EnumToNumberConverter <Category, int>();

            modelBuilder.Entity <Product>().Property(x => x.Category).HasConversion(converter);
            modelBuilder.Entity <User>().HasMany(x => x.Products).WithOne(x => x.Owner).HasForeignKey(x => x.UserId).OnDelete(DeleteBehavior.Cascade);
            modelBuilder.Entity <User>().HasMany(x => x.Orders).WithOne(x => x.Buyer).HasForeignKey(x => x.UserId).OnDelete(DeleteBehavior.Cascade);
            modelBuilder.Entity <Role>().HasData(SeedRoles());
            modelBuilder.Entity <User>().HasData(SeedAdminUser());
            modelBuilder.Entity <Credential>().HasData(SeedAdminCredential());
        }
        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            var playerTypeConverter = new EnumToNumberConverter <PlayerType, int>();

            modelBuilder.Entity <Player>(entity =>
            {
                entity.Property(e => e.PlayerType)
                .HasConversion(playerTypeConverter)
                .HasDefaultValueSql("((0))");
            });
            base.OnModelCreating(modelBuilder);
        }
        public void Configure(EntityTypeBuilder <Order> builder)
        {
            var stateEnumConverter = new EnumToNumberConverter <OrderState, int>();

            builder.Property(p => p.State)
            .HasConversion(stateEnumConverter);

            builder.Ignore(p => p.IsReadOnly);

            var navigation = builder.Metadata.FindNavigation(nameof(Order.Items));

            navigation.SetPropertyAccessMode(PropertyAccessMode.Field);
        }
        public void Configure(EntityTypeBuilder <CurrencyUser> builder)
        {
            var converter = new EnumToNumberConverter <CurrencyEnum, int>();

            builder.ToTable("CurrencyUser");
            builder.HasKey(cu => cu.CUID);

            builder.HasOne(cu => cu.Owner)
            .WithMany(u => u.Currencies)
            .HasPrincipalKey(u => u.Id)
            .IsRequired(true);

            builder.Property <CurrencyEnum>(cu => cu.Currency)
            .HasConversion(converter);
        }
        public void Configure(EntityTypeBuilder <Publication> builder)
        {
            var converter = new EnumToNumberConverter <PublicationTypes, int>();

            builder
            .Property(p => p.Type)
            .HasConversion(converter);

            builder
            .HasQueryFilter(p => !p.IsDeleted);

            builder
            .HasOne(p => p.Creator)
            .WithMany(u => u.Publications);
        }
Beispiel #16
0
        protected override void OnModelCreating(ModelBuilder builder)
        {
            base.OnModelCreating(builder);

            var skateTargetConverter = new EnumToNumberConverter <SkateTarget, int>();

            builder.Entity <ApplicationUser>().Property(x => x.DateRegistered).HasDefaultValueSql("getdate()");
            builder.Entity <ApplicationUser>().Property(x => x.Target).HasConversion(skateTargetConverter).HasDefaultValue(SkateTarget.LiverpoolCanningDock);

            builder.Entity <SkateLogEntry>().HasOne(x => x.ApplicationUser).WithMany(x => x.SkateLogEntries).HasForeignKey(x => x.ApplicationUserId).OnDelete(DeleteBehavior.Cascade);
            builder.Entity <SkateLogEntry>().HasIndex(x => new { x.ApplicationUserId, x.Logged });

            builder.Entity <StravaEvent>().HasOne(x => x.ApplicationUser).WithMany(x => x.StravaEvents).HasForeignKey(x => x.ApplicationUserId).OnDelete(DeleteBehavior.Cascade);
            builder.Entity <StravaEvent>().HasIndex(x => new { x.ApplicationUserId, x.StravaActivityId });
        }
Beispiel #17
0
        public void Configure(EntityTypeBuilder <Atendente> builder)
        {
            var converter = new EnumToNumberConverter <ETipoAtendente, int>();

            builder.HasKey(p => p.Id);

            builder.Property(p => p.Nome)
            .IsRequired()
            .HasColumnType("varchar(100)");

            builder.Property(p => p.TipoAtendente)
            .IsRequired()
            .HasColumnType("int")
            .HasConversion(converter);

            builder.ToTable("Atendentes");
        }
Beispiel #18
0
        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            base.OnModelCreating(modelBuilder);

            modelBuilder.Entity <UserConf>()
            .HasQueryFilter(uc => uc.UserId == UserId)
            .HasKey(c => new { c.UserId, c.ConferenceId });
            modelBuilder.Entity <UserTopic>()
            .HasKey(c => new { c.UserId, c.TopicId });

            var userConfconverter = new EnumToNumberConverter <UserConf.UserConfStat, int>();

            modelBuilder.Entity <UserConf>()
            .Property(e => e.Status)
            .HasConversion(userConfconverter);

            modelBuilder.Entity <UserTopic>()
            .HasQueryFilter(ut => ut.UserId == UserId);
        }
        public void Configure(EntityTypeBuilder <Prenda> builder)
        {
            var converterColor     = new EnumToNumberConverter <Color, int>();
            var converterCategoria = new EnumToNumberConverter <Categoria, int>();
            var converterTela      = new EnumToNumberConverter <Tela, int>();

            builder.Property(b => b.Tela)
            .IsRequired()
            .HasConversion(converterTela);

            builder.Property(b => b.Categoria)
            .IsRequired()
            .HasConversion(converterCategoria);

            builder.Property(b => b.ColorPrimario)
            .IsRequired()
            .HasConversion(converterColor);

            builder.Property(b => b.ColorSecundario)
            .HasConversion(converterColor);
        }
        public void Configure(EntityTypeBuilder <Friend> builder)
        {
            builder
            .HasKey(key => new { key.UserId, key.FriendId });

            builder
            .HasOne(x => x.User)
            .WithMany(x => x.MainUserFriends)
            .HasForeignKey(x => x.UserId)
            .OnDelete(DeleteBehavior.Restrict);

            builder
            .HasOne(x => x.UserFriend)
            .WithMany(x => x.Friends)
            .HasForeignKey(x => x.FriendId);

            var converter = new EnumToNumberConverter <FriendStatus, int>();

            builder
            .Property(p => p.Status)
            .HasConversion(converter);
        }
Beispiel #21
0
        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            modelBuilder.HasDefaultSchema(_databaseSettings.SchemaName);

            // Setup PUG compound primary key
            modelBuilder.Entity <ProductUserGroup>()
            .HasKey(pug => new
            {
                pug.ProductId,
                pug.UserGroup
            });

            // Use Enum to Int for UserGroups
            var userGroupIntConverter = new EnumToNumberConverter <UserGroup, int>();

            modelBuilder.Entity <User>()
            .Property(u => u.UserGroup)
            .HasConversion(userGroupIntConverter);

            modelBuilder.Entity <User>().Property(u => u.UserState).HasConversion <string>();

            modelBuilder.Entity <ProductUserGroup>()
            .Property(pug => pug.UserGroup)
            .HasConversion(userGroupIntConverter);

            modelBuilder.Entity <WebhookConfiguration>()
            .Property(w => w.Status)
            .HasConversion <string>();

            modelBuilder.Entity <Purchase>()
            .Property(p => p.Status)
            .HasConversion <string>();

            if (_environmentSettings.EnvironmentType == EnvironmentType.LocalDevelopment)
            {
                SeedData(modelBuilder);
            }
        }
Beispiel #22
0
        public void Configure(EntityTypeBuilder <LogginEntity> builder)
        {
            var converter = new EnumToNumberConverter <LogLevel, int>();

            builder.HasKey(p => p.Id);

            builder.Property(p => p.EventId)
            .HasColumnType("int");

            builder.Property(p => p.LogLevel)
            .IsRequired()
            .HasColumnType("int")
            .HasConversion(converter);

            builder.Property(p => p.Message)
            .IsRequired()
            .HasColumnType("varchar(6000)");

            builder.Property(p => p.CreatedTime)
            .HasColumnType("datetime");

            builder.ToTable("Loggin");
        }
        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            base.OnModelCreating(modelBuilder);

            modelBuilder.ApplyConfiguration(new RoleConfiguration());
            modelBuilder.ApplyConfiguration(new CategoryConfiguration());
            modelBuilder.ApplyConfiguration(new SubcategoryConfiguration());

            modelBuilder.Entity <ApplicationUser>()
            .HasIndex(p => p.Slug)
            .IsUnique(true);
            modelBuilder.Entity <ApplicationUser>()
            .Property(e => e.LastSeen)
            .HasDefaultValueSql("getdate()");

            modelBuilder.Entity <ApplicationUser>()
            .HasOne(r => r.PatreonToken)
            .WithOne(a => a.AppUser)
            .HasForeignKey <PatreonToken>(t => t.AppUserId);

            modelBuilder.Entity <ApplicationUser>(ConfigureUser);

            modelBuilder.Entity <Podcast>()
            .HasIndex(p => p.Slug)
            .IsUnique(true);
            modelBuilder.Entity <Podcast>()
            .Property(p => p.AppUserId)
            .IsRequired();
            modelBuilder.Entity <Podcast>()
            .Property(p => p.Private)
            .IsRequired()
            .HasDefaultValue(false);

            modelBuilder.Entity <PodcastEntry>()
            .HasMany(e => e.SharingLinks)
            .WithOne(e => e.PodcastEntry)
            .OnDelete(DeleteBehavior.Cascade);
            modelBuilder.Entity <PodcastEntry>()
            .HasMany(e => e.ActivityLogs)
            .WithOne(e => e.PodcastEntry)
            .OnDelete(DeleteBehavior.Cascade);
            modelBuilder.Entity <PodcastEntry>()
            .Property(p => p.WaveformGenerated)
            .IsRequired()
            .HasDefaultValue(false);

            modelBuilder.Entity <EntryTag>()
            .HasIndex(b => b.TagName)
            .IsUnique();

            modelBuilder.Entity <PodcastEntrySharingLink>()
            .HasIndex(l => l.LinkIndex)
            .IsUnique();
            modelBuilder.Entity <PodcastEntrySharingLink>()
            .HasIndex(l => l.LinkId)
            .IsUnique();

            modelBuilder.Entity <Playlist>()
            .HasIndex(p => new { p.SourceUrl })
            .IsUnique(true);

            modelBuilder.Entity <BoilerPlate>()
            .HasIndex(p => new { p.Key })
            .IsUnique(true);

            var converter = new EnumToNumberConverter <NotificationOptions, int>();

            modelBuilder.Entity <ApplicationUser>()
            .Property(e => e.EmailNotificationOptions)
            .HasConversion(converter);

            foreach (var pb in __getColumn(modelBuilder, "CreateDate"))
            {
                pb.ValueGeneratedOnAdd()
                .HasDefaultValueSql("getdate()");
            }

            foreach (var pb in __getColumn(modelBuilder, "UpdateDate"))
            {
                pb.ValueGeneratedOnAddOrUpdate()
                .HasDefaultValueSql("getdate()");
            }
        }
Beispiel #24
0
        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            modelBuilder.Entity <User>().HasIndex(n => n.Username).IsUnique();
            modelBuilder.Entity <User>().HasIndex(n => n.Email).IsUnique();
            modelBuilder.Entity <ApiUser>().HasIndex(n => n.UserName).IsUnique();

            modelBuilder.Entity <Fake>().HasData(new Fake {
                Id = 1, Name = "Bill"
            });
            modelBuilder.Entity <Fake>().HasData(new Fake {
                Id = 2, Name = "Shaun"
            });
            modelBuilder.Entity <Fake>().HasData(new Fake {
                Id = 3, Name = "Hillary"
            });
            modelBuilder.Entity <Fake>().HasData(new Fake {
                Id = 4, Name = "Emma"
            });

            modelBuilder.Entity <ApiUser>().HasData(
                new {
                Id       = 1,
                UserName = "******",
                ApiKey   = "111"
            },
                new {
                Id       = 2,
                UserName = "******",
                ApiKey   = "jahaja"
            }
                );

            modelBuilder.Entity <User>().HasData(
                new
            {
                Id             = 1,
                Username       = "******",
                Password       = "******",
                Firstname      = "John",
                Lastname       = "Doe",
                Email          = "*****@*****.**",
                IsSuspended    = false,
                Country        = "England",
                City           = "Brighton",
                DateRegistered = DateTime.Now,
                Birthdate      = DateTime.Now.AddYears(-18),
                Role           = Role.Regular
            }
                );
            modelBuilder.Entity <User>().HasData(
                new
            {
                Id             = 2,
                Username       = "******",
                Password       = "******",
                Firstname      = "Patrick",
                Lastname       = "Plopinopel",
                Email          = "*****@*****.**",
                IsSuspended    = false,
                Country        = "USA",
                City           = "El Paso",
                DateRegistered = DateTime.Now,
                Birthdate      = DateTime.Now.AddYears(-23),
                Role           = Role.Regular
            }
                );
            modelBuilder.Entity <User>().HasData(
                new
            {
                Id             = 3,
                Username       = "******",
                Password       = "******",
                Firstname      = "Svetlana",
                Lastname       = "Orgonsk",
                Email          = "*****@*****.**",
                IsSuspended    = false,
                Country        = "Ukraine",
                City           = "Kiev",
                DateRegistered = DateTime.Now,
                Birthdate      = DateTime.Now.AddYears(-45),
                Role           = Role.Regular
            }
                );

            modelBuilder.Entity <Like>().HasData(
                new
            {
                Id     = 1,
                PostId = 1,
                UserId = 2
            }
                );
            modelBuilder.Entity <Like>().HasData(
                new
            {
                Id     = 2,
                PostId = 2,
                UserId = 1
            }
                );
            modelBuilder.Entity <Like>().HasData(
                new
            {
                Id     = 3,
                PostId = 1,
                UserId = 3
            }
                );
            modelBuilder.Entity <Post>().HasData(
                new
            {
                Id      = 1,
                Text    = "Hey everybody! You all good?",
                Created = DateTime.Now,
                UserId  = 2
            }
                );
            modelBuilder.Entity <Post>().HasData(
                new
            {
                Id      = 2,
                Text    = "Having the most lovely",
                Created = DateTime.Now,
                UserId  = 1
            }
                );
            modelBuilder.Entity <Post>().HasData(
                new
            {
                Id      = 3,
                Text    = "Russia... Is not very nice(to us)...",
                Created = DateTime.Now,
                UserId  = 3
            }
                );
            modelBuilder.Entity <Comment>().HasData(
                new
            {
                Id      = 1,
                Text    = "Cool yo!",
                Created = DateTime.Now,
                PostId  = 3,
                UserId  = 1
            }
                );
            modelBuilder.Entity <Comment>().HasData(
                new
            {
                Id      = 2,
                Text    = "Fast as f**k!",
                Created = DateTime.Now,
                PostId  = 2,
                UserId  = 2
            }
                );

            modelBuilder.Entity <Comment>().HasData(
                new
            {
                Id      = 3,
                Text    = "Uuugghhh.",
                Created = DateTime.Now,
                PostId  = 3,
                UserId  = 3
            }
                );
            modelBuilder.Entity <Comment>().HasData(
                new
            {
                Id      = 4,
                Text    = "Haha awesome!",
                Created = DateTime.Now,
                PostId  = 3,
                UserId  = 2
            }
                );

            modelBuilder.Entity <Conversation>().HasData(
                new
            {
                Id = 1,
                ConversationName = "The cool guys!",
            }
                );

            modelBuilder.Entity <Message>().HasData(
                new
            {
                Id                = 1,
                Text              = "Hello friends!",
                Created           = DateTime.Now,
                UserConversatorId = 1
            }
                );

            modelBuilder.Entity <Message>().HasData(
                new
            {
                Id                = 2,
                Text              = "Hello!",
                Created           = DateTime.Now,
                UserConversatorId = 2
            }
                );

            modelBuilder.Entity <Message>().HasData(
                new
            {
                Id                = 3,
                Text              = "What up?!",
                Created           = DateTime.Now,
                UserConversatorId = 1
            }
                );

            modelBuilder.Entity <Message>().HasData(
                new
            {
                Id                = 4,
                Text              = "Doing laundry, and you?",
                Created           = DateTime.Now,
                UserConversatorId = 2
            }
                );

            modelBuilder.Entity <Message>().HasData(
                new
            {
                Id                = 5,
                Text              = "Eating breakfast, and staying chill!",
                Created           = DateTime.Now,
                UserConversatorId = 1
            }
                );

            modelBuilder.Entity <UserConversator>().HasData(
                new
            {
                Id             = 1,
                UserId         = 1,
                ConversationId = 1
            }
                );

            modelBuilder.Entity <UserConversator>().HasData(
                new
            {
                Id             = 2,
                UserId         = 2,
                ConversationId = 1
            }
                );

            var playerTypeConverter = new EnumToNumberConverter <Role, int>();

            modelBuilder.Entity <User>(entity =>
            {
                entity.Property(e => e.Role)
                .HasConversion(playerTypeConverter)
                .HasDefaultValueSql("((0))");
            });
        }
Beispiel #25
0
        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            base.OnModelCreating(modelBuilder);
            modelBuilder.Entity <AppUser>(entity =>
            {
                entity.Property(e => e.Id)
                .IsUnicode(false)
                .HasMaxLength(100);
            });
            modelBuilder.Entity <AppRole>(entity =>
            {
                entity.Property(e => e.Id)
                .IsUnicode(false)
                .HasMaxLength(100);

                // init data
                entity.HasData(new AppRole
                {
                    ConcurrencyStamp = Guid.NewGuid().ToString(),
                    Id             = Guid.NewGuid().ToString(),
                    Name           = Constants.RoleName.ADMIN,
                    NormalizedName = Constants.RoleName.ADMIN.ToUpper()
                });
            });
            modelBuilder.Entity <Resource>(entity =>
            {
                entity.Property(e => e.Name).HasMaxLength(255);
            });
            modelBuilder.Entity <AppEvent>(entity =>
            {
                var converter = new EnumToNumberConverter <AppEventType, int>();
                entity.Property(e => e.Type)
                .HasConversion(converter);
                entity.Property(e => e.Description)
                .HasMaxLength(2000);
                entity.Property(e => e.Data)
                .HasMaxLength(2000);
                entity.HasOne(e => e.User)
                .WithMany(e => e.Events)
                .HasForeignKey(e => e.UserId)
                .OnDelete(DeleteBehavior.Restrict)
                .HasConstraintName("FK_AppUser_AppEvent");
            });
            modelBuilder.Entity <ProductionBatch>(entity =>
            {
                var converter = new EnumToNumberConverter <BatchStatus, int>();
                entity.Property(e => e.Status)
                .HasConversion(converter);
                entity.Property(e => e.Code)
                .IsUnicode(false)
                .HasMaxLength(100);
                entity.Property(e => e.Info)
                .HasMaxLength(2000);
                entity.HasOne(e => e.Line)
                .WithMany(e => e.Batches)
                .HasForeignKey(e => e.ProductionLineId)
                .OnDelete(DeleteBehavior.Restrict)
                .HasConstraintName("FK_ProductionLine_ProductionBatch");
                entity.HasOne(e => e.Model)
                .WithMany(e => e.Batches)
                .HasForeignKey(e => e.ProductModelId)
                .OnDelete(DeleteBehavior.Restrict)
                .HasConstraintName("FK_ProductModel_ProductionBatch");
            });
            modelBuilder.Entity <ProductionLine>(entity =>
            {
                entity.Property(e => e.Code)
                .IsUnicode(false)
                .HasMaxLength(100);
                entity.Property(e => e.Info)
                .HasMaxLength(2000);
            });
            modelBuilder.Entity <ProductModel>(entity =>
            {
                entity.Property(e => e.Code)
                .IsUnicode(false)
                .HasMaxLength(100);
                entity.Property(e => e.Name)
                .HasMaxLength(255);
                entity.Property(e => e.Info)
                .HasMaxLength(2000);
                entity.Property(e => e.Image)
                .IsUnicode(false);
            });
            modelBuilder.Entity <QCDevice>(entity =>
            {
                entity.Property(e => e.Code)
                .IsUnicode(false)
                .HasMaxLength(100);
                entity.Property(e => e.Info)
                .HasMaxLength(2000);
                entity.Property(e => e.DeviceAPIBaseUrl)
                .HasMaxLength(255);
                entity.HasOne(e => e.Line)
                .WithMany(e => e.Devices)
                .HasForeignKey(e => e.ProductionLineId)
                .OnDelete(DeleteBehavior.Restrict)
                .HasConstraintName("FK_ProductionLine_QCDevice");
                entity.HasOne(e => e.Config)
                .WithMany(e => e.Devices)
                .HasForeignKey(e => e.AppConfigId)
                .IsRequired(false)
                .OnDelete(DeleteBehavior.Restrict)
                .HasConstraintName("FK_AppConfig_QCDevice");
            });
            modelBuilder.Entity <QCEvent>(entity =>
            {
                entity.Property(e => e.Id)
                .IsUnicode(false)
                .HasMaxLength(255);
                entity.Property(e => e.Description)
                .HasMaxLength(2000);
                entity.Property(e => e.LeftImage)
                .IsUnicode(false)
                .HasMaxLength(2000);
                entity.Property(e => e.RightImage)
                .IsUnicode(false)
                .HasMaxLength(2000);
                entity.Property(e => e.Seen)
                .HasDefaultValue(false);
                entity.HasOne(e => e.Batch)
                .WithMany(e => e.Events)
                .HasForeignKey(e => e.ProductionBatchId)
                .OnDelete(DeleteBehavior.Restrict)
                .HasConstraintName("FK_ProductionBatch_QCEvent");
                entity.HasOne(e => e.Device)
                .WithMany(e => e.Events)
                .HasForeignKey(e => e.QCDeviceId)
                .OnDelete(DeleteBehavior.Restrict)
                .HasConstraintName("FK_QCDevice_QCEvent");
            });
            modelBuilder.Entity <QCEventDetail>(entity =>
            {
                entity.Property(e => e.Id)
                .IsUnicode(false)
                .HasMaxLength(255);
                entity.HasOne(e => e.Event)
                .WithMany(e => e.Details)
                .HasForeignKey(e => e.EventId)
                .IsRequired(true)
                .OnDelete(DeleteBehavior.Cascade)
                .HasConstraintName("FK_QCEvent_QCEventDetail");
                entity.HasOne(e => e.DefectType)
                .WithMany(e => e.Details)
                .HasForeignKey(e => e.DefectTypeId)
                .IsRequired(true)
                .OnDelete(DeleteBehavior.Restrict)
                .HasConstraintName("FK_DefectType_QCEventDetail");
            });
            modelBuilder.Entity <DefectType>(entity =>
            {
                entity.Property(e => e.Code)
                .IsUnicode(false)
                .HasMaxLength(100);
                entity.Property(e => e.QCMappingCode)
                .IsUnicode(false)
                .HasMaxLength(100);
                entity.Property(e => e.Name)
                .HasMaxLength(255);
                entity.Property(e => e.Description)
                .HasMaxLength(2000);
                entity.Property(e => e.SampleImage)
                .IsUnicode(false);
            });
            modelBuilder.Entity <AppConfig>(entity =>
            {
                entity.Property(e => e.Name)
                .HasMaxLength(255);
                entity.Property(e => e.ClientId)
                .IsUnicode(false)
                .HasMaxLength(255);
                entity.Property(e => e.ClientSecret)
                .IsUnicode(false)
                .HasMaxLength(500);
            });
        }
Beispiel #26
0
        protected override void OnModelCreating(ModelBuilder builder)
        {
            /** M_USER TABLE CREATION **/
            EntityTypeBuilder <User> user = builder?.Entity <User>()
                                            .ToTable("MST_USER");

            user.HasMany(u => u.UserHistories)
            .WithOne(u => u.User)
            .OnDelete(DeleteBehavior.ClientNoAction);

            user.HasIndex(u => u.Email)
            .IsUnique(true)
            .HasName("MST_USER_EMAIL_INDEX");


            /** M_CATEGORY TABLE CREATION **/
            builder?.Entity <Category>()
            .ToTable("MST_CATEGORY")
            .HasMany(u => u.CategoryHistories)
            .WithOne(u => u.Category)
            .OnDelete(DeleteBehavior.ClientNoAction);


            /** M_TICKET_STATUS TABLE CREATION **/
            builder?.Entity <TicketStatus>()
            .ToTable("MST_TICKET_STATUS")
            .HasMany(u => u.TicketStatusHistories)
            .WithOne(u => u.TicketStatus)
            .OnDelete(DeleteBehavior.ClientNoAction);


            /** TB_R_TICKET TABLE CREATION **/
            EntityTypeBuilder <Ticket> ticket = builder?.Entity <Ticket>()
                                                .ToTable("TR_TICKET");

            ticket.HasMany(u => u.TicketHistories)
            .WithOne(u => u.Ticket)
            .OnDelete(DeleteBehavior.ClientNoAction);

            ticket.HasIndex(u => u.Name)
            .IsUnique(false)
            .HasName("TR_TICKET_NAME_INDEX");


            /** R_LOG TABLE CREATION **/
            EntityTypeBuilder <Log> log = builder?.Entity <Log>()
                                          .ToTable("TR_LOG");

            log.Property(u => u.Message)
            .HasColumnType("text");

            log.Property(u => u.LogLevel)
            .HasConversion(new EnumToNumberConverter <LogLevel, short>());

            log.HasIndex(u => u.LogLevel)
            .IsUnique(false)
            .HasName("TR_LOG_LEVEL_INDEX");

            log.HasIndex(u => u.EventId)
            .IsUnique(false)
            .HasName("TR_LOG_EVENT_ID_INDEX");

            log.HasIndex(u => u.Name)
            .IsUnique(false)
            .HasName("TR_LOG_NAME_INDEX");


            /** TRANSACTION TABLE CREATION **/
            EntityTypeBuilder <TableTransaction> trx = builder?.Entity <TableTransaction>().ToTable("HIS_TRANSACTION");

            trx.HasOne(u => u.User)
            .WithMany(u => u.Transactions)
            .HasForeignKey(u => u.UserId)
            .OnDelete(DeleteBehavior.Cascade);

            trx.HasMany(u => u.UserHistories)
            .WithOne(u => u.TableTransaction)
            .HasForeignKey(u => u.TransactionId)
            .OnDelete(DeleteBehavior.Cascade);

            trx.HasMany(u => u.CategoryHistories)
            .WithOne(u => u.TableTransaction)
            .HasForeignKey(u => u.TransactionId)
            .OnDelete(DeleteBehavior.Cascade);

            trx.HasMany(u => u.TicketStatusHistories)
            .WithOne(u => u.TableTransaction)
            .HasForeignKey(u => u.TransactionId)
            .OnDelete(DeleteBehavior.Cascade);

            trx.HasMany(u => u.TicketHistories)
            .WithOne(u => u.TableTransaction)
            .HasForeignKey(u => u.TransactionId)
            .OnDelete(DeleteBehavior.Cascade);


            /** HISTRORY TABLE CREATION **/
            EnumToNumberConverter <TableTransactionOperation, short> transactionOperationConverter
                = new EnumToNumberConverter <TableTransactionOperation, short>();

            EntityTypeBuilder <UserHistory> his_user = builder?.Entity <UserHistory>().ToTable("HIS_USER");

            his_user.HasOne(u => u.TableTransaction)
            .WithMany(u => u.UserHistories)
            .HasForeignKey(u => u.TransactionId)
            .OnDelete(DeleteBehavior.Cascade)
            .IsRequired();

            his_user.HasOne(u => u.User)
            .WithMany(u => u.UserHistories)
            .HasForeignKey(u => u.Id)
            .OnDelete(DeleteBehavior.ClientNoAction)
            .IsRequired();

            his_user.Property(u => u.Operation)
            .HasConversion(transactionOperationConverter);


            EntityTypeBuilder <CategoryHistory> his_category = builder?.Entity <CategoryHistory>().ToTable("HIS_CATEGORY");

            his_category.HasOne(u => u.TableTransaction)
            .WithMany(u => u.CategoryHistories)
            .HasForeignKey(u => u.TransactionId)
            .OnDelete(DeleteBehavior.Cascade)
            .IsRequired();

            his_category.HasOne(u => u.Category)
            .WithMany(u => u.CategoryHistories)
            .HasForeignKey(u => u.Id)
            .OnDelete(DeleteBehavior.ClientNoAction)
            .IsRequired();

            his_category.Property(u => u.Operation)
            .HasConversion(transactionOperationConverter);


            EntityTypeBuilder <TicketStatusHistory> his_ticket_status = builder?.Entity <TicketStatusHistory>().ToTable("HIS_TICKET_STATUS");

            his_ticket_status.HasOne(u => u.TableTransaction)
            .WithMany(u => u.TicketStatusHistories)
            .HasForeignKey(u => u.TransactionId)
            .OnDelete(DeleteBehavior.Cascade)
            .IsRequired();

            his_ticket_status.HasOne(u => u.TicketStatus)
            .WithMany(u => u.TicketStatusHistories)
            .HasForeignKey(u => u.Id)
            .OnDelete(DeleteBehavior.ClientNoAction)
            .IsRequired();

            his_ticket_status.Property(u => u.Operation)
            .HasConversion(transactionOperationConverter);


            EntityTypeBuilder <TicketHistory> his_ticket = builder?.Entity <TicketHistory>().ToTable("HIS_TICKET");

            his_ticket.HasOne(u => u.TableTransaction)
            .WithMany(u => u.TicketHistories)
            .HasForeignKey(u => u.TransactionId)
            .OnDelete(DeleteBehavior.Cascade)
            .IsRequired();

            his_ticket.HasOne(u => u.Ticket)
            .WithMany(u => u.TicketHistories)
            .HasForeignKey(u => u.Id)
            .OnDelete(DeleteBehavior.ClientNoAction)
            .IsRequired();

            his_ticket.Property(u => u.Operation)
            .HasConversion(transactionOperationConverter);


            List <EntityTypeBuilder> historyTables = new List <EntityTypeBuilder>
            {
                his_user,
                his_category,
                his_ticket_status,
                his_ticket,
            };

            historyTables.ForEach(item =>
            {
                // KEBETULAN SEMUA HISTORY TABLE PK NYA ID, DAN SEQ
                item.HasKey(new string[] { "TransactionId", "Id", "Seq" });
            });
        }
            protected override void OnModelCreating(ModelBuilder modelBuilder)
            {
                base.OnModelCreating(modelBuilder);

                switch (_conversionStrategy)
                {
                case ConversionStrategy.None:
                {
                    var enumProperty = modelBuilder
                                       .Entity <Rider>()
                                       .Property(e => e.Mount);
                    if (_applyColumnType)
                    {
                        enumProperty.HasColumnType("bigint");
                    }
                }
                break;

                case ConversionStrategy.TypeParameter:
                {
                    var enumProperty = modelBuilder
                                       .Entity <Rider>()
                                       .Property(e => e.Mount)
                                       .HasConversion <long>();
                    if (_applyColumnType)
                    {
                        enumProperty.HasColumnType("bigint");
                    }
                }
                break;

                case ConversionStrategy.BuiltInNumberConverter:
                {
                    var converter    = new EnumToNumberConverter <EquineBeast, short>();
                    var enumProperty = modelBuilder
                                       .Entity <Rider>()
                                       .Property(e => e.Mount)
                                       .HasConversion(converter);
                    if (_applyColumnType)
                    {
                        enumProperty.HasColumnType("bigint");
                    }
                }
                break;

                case ConversionStrategy.BuiltInStringConverter:
                {
                    var converter    = new EnumToStringConverter <EquineBeast>();
                    var enumProperty = modelBuilder
                                       .Entity <Rider>()
                                       .Property(e => e.Mount)
                                       .HasConversion(converter);
                    if (_applyColumnType)
                    {
                        enumProperty.HasColumnType("varchar(20)");
                    }
                }
                break;

                case ConversionStrategy.FluentInlineNumberConverter:
                {
                    var enumProperty = modelBuilder
                                       .Entity <Rider>()
                                       .Property(e => e.Mount)
                                       .HasConversion(
                        v => (long)v,
                        v => (EquineBeast)v);
                    if (_applyColumnType)
                    {
                        enumProperty.HasColumnType("bigint");
                    }
                }
                break;

                case ConversionStrategy.FluentInlineStringConverter:
                {
                    var enumProperty = modelBuilder
                                       .Entity <Rider>()
                                       .Property(e => e.Mount)
                                       .HasConversion(
                        v => v.ToString(),
                        v => (EquineBeast)Enum.Parse(typeof(EquineBeast), v));
                    if (_applyColumnType)
                    {
                        enumProperty.HasColumnType("varchar(20)");
                    }
                }
                break;

                default:
                    throw new ArgumentOutOfRangeException(nameof(_conversionStrategy));
                }
            }