Exemplo n.º 1
0
        /// <summary>
        /// Build model for mapping entity type do database table.
        /// </summary>
        /// <param name="builder">Entity type builder.</param>
        /// <returns>Model for mapping entity type do database table.</returns>
        protected virtual EntityTypeTableModel BuildEntityModel(EntityTypeBuilder <TEntity> builder)
        {
            var model = new EntityTypeTableModel(this.TableName);

            builder.ToTable(this.TableName);

            builder.Ignore(t => ((IPersistentObject)t).IsTransient);
            builder.Ignore(t => ((IPersistentObject)t).IsDeleted);
            builder.Ignore(t => t.DisplayValue);

            builder.HasKey(t => t.Id);
            var Id             = builder.Property(t => t.Id).IsRequired();
            var idSequenceName = this.namingConvention.ApplyToSequenceName($"{this.TableName}_Id");

            switch (this.connectionSettings.ServerType)
            {
            case DatabaseServerType.MSSQLServer:
                SqlServerPropertyBuilderExtensions.UseHiLo(Id, idSequenceName);
                break;

            case DatabaseServerType.PostgreSQL:
                NpgsqlPropertyBuilderExtensions.UseHiLo(Id, idSequenceName);
                break;
            }

            var TypeGuid = builder.Property(t => t.TypeGuid).IsRequired();

            model.Properties.Add(Id);
            model.Properties.Add(TypeGuid);
            return(model);
        }
Exemplo n.º 2
0
        public override void Map(EntityTypeBuilder <Customer> builder)
        {
            builder.ToTable(nameof(Customer), CRMConstant.Schema);
            builder.HasKey(args => args.CustomerID);

            var propertyBuilder = builder.Property(args => args.CustomerID);

            NpgsqlPropertyBuilderExtensions.UseHiLo(propertyBuilder, CRMConstant.Hilo, CRMConstant.Schema);
            SqlServerPropertyBuilderExtensions.UseHiLo(propertyBuilder, CRMConstant.Hilo, CRMConstant.Schema);

            builder.Property(args => args.Name).HasMaxLength(CRMConstant.NameLength).IsRequired();
            builder.HasIndex(args => args.Name).IsUnique();

            builder.Property(args => args.Company).HasMaxLength(CRMConstant.NameLength).IsRequired();

            builder.HasMany(args => args.Contacts).WithOne(args => args.Customer).HasForeignKey(args => args.CustomerID).IsRequired();
            builder.HasMany(args => args.Licenses).WithOne(args => args.Customer).HasForeignKey(args => args.CustomerID).IsRequired();
            base.Map(builder);
        }
        protected override void BuildTargetModel(ModelBuilder modelBuilder)
        {
#pragma warning disable 612, 618
            modelBuilder
            .HasAnnotation("ProductVersion", "6.0.0")
            .HasAnnotation("Relational:MaxIdentifierLength", 128);

            SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder, 1L, 1);

            modelBuilder.HasSequence("catalog_brand_hilo")
            .IncrementsBy(10);

            modelBuilder.HasSequence("catalog_hilo")
            .IncrementsBy(10);

            modelBuilder.HasSequence("catalog_type_hilo")
            .IncrementsBy(10);

            modelBuilder.Entity("Microsoft.eShopWeb.ApplicationCore.Entities.BasketAggregate.Basket", b =>
            {
                b.Property <int>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("int");

                SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property <int>("Id"), 1L, 1);

                b.Property <string>("BuyerId")
                .IsRequired()
                .HasMaxLength(256)
                .HasColumnType("nvarchar(256)");

                b.HasKey("Id");

                b.ToTable("Baskets");
            });

            modelBuilder.Entity("Microsoft.eShopWeb.ApplicationCore.Entities.BasketAggregate.BasketItem", b =>
            {
                b.Property <int>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("int");

                SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property <int>("Id"), 1L, 1);

                b.Property <int>("BasketId")
                .HasColumnType("int");

                b.Property <int>("CatalogItemId")
                .HasColumnType("int");

                b.Property <int>("Quantity")
                .HasColumnType("int");

                b.Property <decimal>("UnitPrice")
                .HasColumnType("decimal(18,2)");

                b.HasKey("Id");

                b.HasIndex("BasketId");

                b.ToTable("BasketItems");
            });

            modelBuilder.Entity("Microsoft.eShopWeb.ApplicationCore.Entities.CatalogBrand", b =>
            {
                b.Property <int>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("int");

                SqlServerPropertyBuilderExtensions.UseHiLo(b.Property <int>("Id"), "catalog_brand_hilo");

                b.Property <string>("Brand")
                .IsRequired()
                .HasMaxLength(100)
                .HasColumnType("nvarchar(100)");

                b.HasKey("Id");

                b.ToTable("CatalogBrands");
            });

            modelBuilder.Entity("Microsoft.eShopWeb.ApplicationCore.Entities.CatalogItem", b =>
            {
                b.Property <int>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("int");

                SqlServerPropertyBuilderExtensions.UseHiLo(b.Property <int>("Id"), "catalog_hilo");

                b.Property <int>("CatalogBrandId")
                .HasColumnType("int");

                b.Property <int>("CatalogTypeId")
                .HasColumnType("int");

                b.Property <string>("Description")
                .HasColumnType("nvarchar(max)");

                b.Property <string>("Name")
                .IsRequired()
                .HasMaxLength(50)
                .HasColumnType("nvarchar(50)");

                b.Property <string>("PictureUri")
                .HasColumnType("nvarchar(max)");

                b.Property <decimal>("Price")
                .HasColumnType("decimal(18,2)");

                b.HasKey("Id");

                b.HasIndex("CatalogBrandId");

                b.HasIndex("CatalogTypeId");

                b.ToTable("Catalog", (string)null);
            });

            modelBuilder.Entity("Microsoft.eShopWeb.ApplicationCore.Entities.CatalogType", b =>
            {
                b.Property <int>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("int");

                SqlServerPropertyBuilderExtensions.UseHiLo(b.Property <int>("Id"), "catalog_type_hilo");

                b.Property <string>("Type")
                .IsRequired()
                .HasMaxLength(100)
                .HasColumnType("nvarchar(100)");

                b.HasKey("Id");

                b.ToTable("CatalogTypes");
            });

            modelBuilder.Entity("Microsoft.eShopWeb.ApplicationCore.Entities.OrderAggregate.Order", b =>
            {
                b.Property <int>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("int");

                SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property <int>("Id"), 1L, 1);

                b.Property <string>("BuyerId")
                .IsRequired()
                .HasMaxLength(256)
                .HasColumnType("nvarchar(256)");

                b.Property <DateTimeOffset>("OrderDate")
                .HasColumnType("datetimeoffset");

                b.HasKey("Id");

                b.ToTable("Orders");
            });

            modelBuilder.Entity("Microsoft.eShopWeb.ApplicationCore.Entities.OrderAggregate.OrderItem", b =>
            {
                b.Property <int>("Id")
                .ValueGeneratedOnAdd()
                .HasColumnType("int");

                SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property <int>("Id"), 1L, 1);

                b.Property <int?>("OrderId")
                .HasColumnType("int");

                b.Property <decimal>("UnitPrice")
                .HasColumnType("decimal(18,2)");

                b.Property <int>("Units")
                .HasColumnType("int");

                b.HasKey("Id");

                b.HasIndex("OrderId");

                b.ToTable("OrderItems");
            });

            modelBuilder.Entity("Microsoft.eShopWeb.ApplicationCore.Entities.BasketAggregate.BasketItem", b =>
            {
                b.HasOne("Microsoft.eShopWeb.ApplicationCore.Entities.BasketAggregate.Basket", null)
                .WithMany("Items")
                .HasForeignKey("BasketId")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();
            });

            modelBuilder.Entity("Microsoft.eShopWeb.ApplicationCore.Entities.CatalogItem", b =>
            {
                b.HasOne("Microsoft.eShopWeb.ApplicationCore.Entities.CatalogBrand", "CatalogBrand")
                .WithMany()
                .HasForeignKey("CatalogBrandId")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();

                b.HasOne("Microsoft.eShopWeb.ApplicationCore.Entities.CatalogType", "CatalogType")
                .WithMany()
                .HasForeignKey("CatalogTypeId")
                .OnDelete(DeleteBehavior.Cascade)
                .IsRequired();

                b.Navigation("CatalogBrand");

                b.Navigation("CatalogType");
            });

            modelBuilder.Entity("Microsoft.eShopWeb.ApplicationCore.Entities.OrderAggregate.Order", b =>
            {
                b.OwnsOne("Microsoft.eShopWeb.ApplicationCore.Entities.OrderAggregate.Address", "ShipToAddress", b1 =>
                {
                    b1.Property <int>("OrderId")
                    .HasColumnType("int");

                    b1.Property <string>("City")
                    .IsRequired()
                    .HasMaxLength(100)
                    .HasColumnType("nvarchar(100)");

                    b1.Property <string>("Country")
                    .IsRequired()
                    .HasMaxLength(90)
                    .HasColumnType("nvarchar(90)");

                    b1.Property <string>("State")
                    .HasMaxLength(60)
                    .HasColumnType("nvarchar(60)");

                    b1.Property <string>("Street")
                    .IsRequired()
                    .HasMaxLength(180)
                    .HasColumnType("nvarchar(180)");

                    b1.Property <string>("ZipCode")
                    .IsRequired()
                    .HasMaxLength(18)
                    .HasColumnType("nvarchar(18)");

                    b1.HasKey("OrderId");

                    b1.ToTable("Orders");

                    b1.WithOwner()
                    .HasForeignKey("OrderId");
                });

                b.Navigation("ShipToAddress")
                .IsRequired();
            });

            modelBuilder.Entity("Microsoft.eShopWeb.ApplicationCore.Entities.OrderAggregate.OrderItem", b =>
            {
                b.HasOne("Microsoft.eShopWeb.ApplicationCore.Entities.OrderAggregate.Order", null)
                .WithMany("OrderItems")
                .HasForeignKey("OrderId");

                b.OwnsOne("Microsoft.eShopWeb.ApplicationCore.Entities.OrderAggregate.CatalogItemOrdered", "ItemOrdered", b1 =>
                {
                    b1.Property <int>("OrderItemId")
                    .HasColumnType("int");

                    b1.Property <int>("CatalogItemId")
                    .HasColumnType("int");

                    b1.Property <string>("PictureUri")
                    .HasColumnType("nvarchar(max)");

                    b1.Property <string>("ProductName")
                    .IsRequired()
                    .HasMaxLength(50)
                    .HasColumnType("nvarchar(50)");

                    b1.HasKey("OrderItemId");

                    b1.ToTable("OrderItems");

                    b1.WithOwner()
                    .HasForeignKey("OrderItemId");
                });

                b.Navigation("ItemOrdered");
            });

            modelBuilder.Entity("Microsoft.eShopWeb.ApplicationCore.Entities.BasketAggregate.Basket", b =>
            {
                b.Navigation("Items");
            });

            modelBuilder.Entity("Microsoft.eShopWeb.ApplicationCore.Entities.OrderAggregate.Order", b =>
            {
                b.Navigation("OrderItems");
            });
#pragma warning restore 612, 618
        }