mirror of https://github.com/EasyAbp/EShop.git
78 changed files with 4700 additions and 638 deletions
@ -1,17 +0,0 @@ |
|||||
using System; |
|
||||
using Volo.Abp.Application.Dtos; |
|
||||
using Volo.Abp.MultiTenancy; |
|
||||
|
|
||||
namespace EasyAbp.EShop.Products.ProductTypes.Dtos |
|
||||
{ |
|
||||
public class ProductTypeDto : FullAuditedEntityDto<Guid> |
|
||||
{ |
|
||||
public string UniqueName { get; set; } |
|
||||
|
|
||||
public string DisplayName { get; set; } |
|
||||
|
|
||||
public string Description { get; set; } |
|
||||
|
|
||||
public MultiTenancySides MultiTenancySide { get; set; } |
|
||||
} |
|
||||
} |
|
||||
@ -1,16 +0,0 @@ |
|||||
using System; |
|
||||
using EasyAbp.EShop.Products.ProductTypes.Dtos; |
|
||||
using Volo.Abp.Application.Dtos; |
|
||||
using Volo.Abp.Application.Services; |
|
||||
|
|
||||
namespace EasyAbp.EShop.Products.ProductTypes |
|
||||
{ |
|
||||
public interface IProductTypeAppService : |
|
||||
IReadOnlyAppService< |
|
||||
ProductTypeDto, |
|
||||
Guid, |
|
||||
PagedAndSortedResultRequestDto> |
|
||||
{ |
|
||||
|
|
||||
} |
|
||||
} |
|
||||
@ -0,0 +1,14 @@ |
|||||
|
using System; |
||||
|
|
||||
|
namespace EasyAbp.EShop.Products.Products.Dtos |
||||
|
{ |
||||
|
[Serializable] |
||||
|
public class ProductGroupDto |
||||
|
{ |
||||
|
public string Name { get; set; } |
||||
|
|
||||
|
public string DisplayName { get; set; } |
||||
|
|
||||
|
public string Description { get; set; } |
||||
|
} |
||||
|
} |
||||
@ -1,22 +0,0 @@ |
|||||
using System; |
|
||||
using EasyAbp.EShop.Products.Permissions; |
|
||||
using EasyAbp.EShop.Products.ProductTypes.Dtos; |
|
||||
using Volo.Abp.Application.Dtos; |
|
||||
using Volo.Abp.Application.Services; |
|
||||
|
|
||||
namespace EasyAbp.EShop.Products.ProductTypes |
|
||||
{ |
|
||||
public class ProductTypeAppService : ReadOnlyAppService<ProductType, ProductTypeDto, Guid, PagedAndSortedResultRequestDto>, |
|
||||
IProductTypeAppService |
|
||||
{ |
|
||||
protected override string GetPolicyName { get; set; } = ProductsPermissions.ProductTypes.Default; |
|
||||
protected override string GetListPolicyName { get; set; } = ProductsPermissions.ProductTypes.Default; |
|
||||
|
|
||||
private readonly IProductTypeRepository _repository; |
|
||||
|
|
||||
public ProductTypeAppService(IProductTypeRepository repository) : base(repository) |
|
||||
{ |
|
||||
_repository = repository; |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
@ -0,0 +1,17 @@ |
|||||
|
using System; |
||||
|
using EasyAbp.EShop.Products.Options.ProductGroups; |
||||
|
|
||||
|
namespace EasyAbp.EShop.Products.Options |
||||
|
{ |
||||
|
public class EShopProductsOptions |
||||
|
{ |
||||
|
public ProductGroupConfigurations Groups { get; } |
||||
|
|
||||
|
public Type DefaultFileDownloadProviderType { get; set; } |
||||
|
|
||||
|
public EShopProductsOptions() |
||||
|
{ |
||||
|
Groups = new ProductGroupConfigurations(); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,8 @@ |
|||||
|
namespace EasyAbp.EShop.Products.Options.ProductGroups |
||||
|
{ |
||||
|
[ProductGroupName(ProductsConsts.DefaultProductGroupName)] |
||||
|
public class DefaultProductGroup |
||||
|
{ |
||||
|
|
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,7 @@ |
|||||
|
namespace EasyAbp.EShop.Products.Options.ProductGroups |
||||
|
{ |
||||
|
public interface IProductGroup |
||||
|
{ |
||||
|
|
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,7 @@ |
|||||
|
namespace EasyAbp.EShop.Products.Options.ProductGroups |
||||
|
{ |
||||
|
public interface IProductGroupConfigurationProvider |
||||
|
{ |
||||
|
ProductGroupConfiguration Get(string productGroupName); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,9 @@ |
|||||
|
namespace EasyAbp.EShop.Products.Options.ProductGroups |
||||
|
{ |
||||
|
public class ProductGroupConfiguration |
||||
|
{ |
||||
|
public string DisplayName { get; set; } |
||||
|
|
||||
|
public string Description { get; set; } |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,20 @@ |
|||||
|
using Microsoft.Extensions.Options; |
||||
|
using Volo.Abp.DependencyInjection; |
||||
|
|
||||
|
namespace EasyAbp.EShop.Products.Options.ProductGroups |
||||
|
{ |
||||
|
public class ProductGroupConfigurationProvider : IProductGroupConfigurationProvider, ITransientDependency |
||||
|
{ |
||||
|
private readonly EShopProductsOptions _options; |
||||
|
|
||||
|
public ProductGroupConfigurationProvider(IOptions<EShopProductsOptions> options) |
||||
|
{ |
||||
|
_options = options.Value; |
||||
|
} |
||||
|
|
||||
|
public ProductGroupConfiguration Get(string productGroupName) |
||||
|
{ |
||||
|
return _options.Groups.GetConfiguration(productGroupName); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,73 @@ |
|||||
|
using System; |
||||
|
using System.Collections.Generic; |
||||
|
using JetBrains.Annotations; |
||||
|
using Volo.Abp; |
||||
|
|
||||
|
namespace EasyAbp.EShop.Products.Options.ProductGroups |
||||
|
{ |
||||
|
public class ProductGroupConfigurations |
||||
|
{ |
||||
|
private readonly Dictionary<string, ProductGroupConfiguration> _groups; |
||||
|
|
||||
|
public ProductGroupConfigurations() |
||||
|
{ |
||||
|
_groups = new Dictionary<string, ProductGroupConfiguration>(); |
||||
|
} |
||||
|
|
||||
|
public ProductGroupConfigurations Configure<TGroup>( |
||||
|
Action<ProductGroupConfiguration> configureAction) |
||||
|
{ |
||||
|
return Configure( |
||||
|
ProductGroupNameAttribute.GetGroupName<TGroup>(), |
||||
|
configureAction |
||||
|
); |
||||
|
} |
||||
|
|
||||
|
public ProductGroupConfigurations Configure( |
||||
|
[NotNull] string name, |
||||
|
[NotNull] Action<ProductGroupConfiguration> configureAction) |
||||
|
{ |
||||
|
Check.NotNullOrWhiteSpace(name, nameof(name)); |
||||
|
Check.NotNull(configureAction, nameof(configureAction)); |
||||
|
|
||||
|
configureAction( |
||||
|
_groups.GetOrAdd( |
||||
|
name, |
||||
|
() => new ProductGroupConfiguration() |
||||
|
) |
||||
|
); |
||||
|
|
||||
|
return this; |
||||
|
} |
||||
|
|
||||
|
public ProductGroupConfigurations ConfigureAll(Action<string, ProductGroupConfiguration> configureAction) |
||||
|
{ |
||||
|
foreach (var group in _groups) |
||||
|
{ |
||||
|
configureAction(group.Key, group.Value); |
||||
|
} |
||||
|
|
||||
|
return this; |
||||
|
} |
||||
|
|
||||
|
[NotNull] |
||||
|
public ProductGroupConfiguration GetConfiguration<TGroup>() |
||||
|
{ |
||||
|
return GetConfiguration(ProductGroupNameAttribute.GetGroupName<TGroup>()); |
||||
|
} |
||||
|
|
||||
|
[NotNull] |
||||
|
public ProductGroupConfiguration GetConfiguration([NotNull] string name) |
||||
|
{ |
||||
|
Check.NotNullOrWhiteSpace(name, nameof(name)); |
||||
|
|
||||
|
return _groups.GetOrDefault(name); |
||||
|
} |
||||
|
|
||||
|
[NotNull] |
||||
|
public Dictionary<string, ProductGroupConfiguration> GetConfigurationsDictionary() |
||||
|
{ |
||||
|
return _groups; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,42 @@ |
|||||
|
using System; |
||||
|
using System.Reflection; |
||||
|
using JetBrains.Annotations; |
||||
|
using Volo.Abp; |
||||
|
|
||||
|
namespace EasyAbp.EShop.Products.Options.ProductGroups |
||||
|
{ |
||||
|
public class ProductGroupNameAttribute : Attribute |
||||
|
{ |
||||
|
[NotNull] |
||||
|
public string Name { get; } |
||||
|
|
||||
|
public ProductGroupNameAttribute([NotNull] string name) |
||||
|
{ |
||||
|
Check.NotNullOrWhiteSpace(name, nameof(name)); |
||||
|
|
||||
|
Name = name; |
||||
|
} |
||||
|
|
||||
|
public virtual string GetName(Type type) |
||||
|
{ |
||||
|
return Name; |
||||
|
} |
||||
|
|
||||
|
public static string GetGroupName<T>() |
||||
|
{ |
||||
|
return GetGroupName(typeof(T)); |
||||
|
} |
||||
|
|
||||
|
public static string GetGroupName(Type type) |
||||
|
{ |
||||
|
var nameAttribute = type.GetCustomAttribute<ProductGroupNameAttribute>(); |
||||
|
|
||||
|
if (nameAttribute == null) |
||||
|
{ |
||||
|
return type.FullName; |
||||
|
} |
||||
|
|
||||
|
return nameAttribute.GetName(type); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -1,10 +0,0 @@ |
|||||
using System.Threading.Tasks; |
|
||||
using Volo.Abp.Data; |
|
||||
|
|
||||
namespace EasyAbp.EShop.Products.ProductTypes |
|
||||
{ |
|
||||
public interface IProductTypeDataSeeder |
|
||||
{ |
|
||||
Task SeedAsync(DataSeedContext context); |
|
||||
} |
|
||||
} |
|
||||
@ -1,9 +0,0 @@ |
|||||
using System; |
|
||||
using Volo.Abp.Domain.Repositories; |
|
||||
|
|
||||
namespace EasyAbp.EShop.Products.ProductTypes |
|
||||
{ |
|
||||
public interface IProductTypeRepository : IRepository<ProductType, Guid> |
|
||||
{ |
|
||||
} |
|
||||
} |
|
||||
@ -1,38 +0,0 @@ |
|||||
using System; |
|
||||
using JetBrains.Annotations; |
|
||||
using Volo.Abp.Domain.Entities.Auditing; |
|
||||
using Volo.Abp.MultiTenancy; |
|
||||
|
|
||||
namespace EasyAbp.EShop.Products.ProductTypes |
|
||||
{ |
|
||||
public class ProductType : FullAuditedAggregateRoot<Guid> |
|
||||
{ |
|
||||
public virtual string UniqueName { get; protected set; } |
|
||||
|
|
||||
[NotNull] |
|
||||
public virtual string DisplayName { get; protected set; } |
|
||||
|
|
||||
[CanBeNull] |
|
||||
public virtual string Description { get; protected set; } |
|
||||
|
|
||||
public virtual MultiTenancySides MultiTenancySide { get; protected set; } |
|
||||
|
|
||||
protected ProductType() |
|
||||
{ |
|
||||
} |
|
||||
|
|
||||
public ProductType( |
|
||||
Guid id, |
|
||||
string uniqueName, |
|
||||
string displayName, |
|
||||
string description, |
|
||||
MultiTenancySides multiTenancySide |
|
||||
) :base(id) |
|
||||
{ |
|
||||
UniqueName = uniqueName; |
|
||||
DisplayName = displayName; |
|
||||
Description = description; |
|
||||
MultiTenancySide = multiTenancySide; |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
@ -1,31 +0,0 @@ |
|||||
using System.Threading.Tasks; |
|
||||
using Volo.Abp.Data; |
|
||||
using Volo.Abp.DependencyInjection; |
|
||||
using Volo.Abp.Guids; |
|
||||
using Volo.Abp.MultiTenancy; |
|
||||
|
|
||||
namespace EasyAbp.EShop.Products.ProductTypes |
|
||||
{ |
|
||||
public class ProductTypeDataSeeder : IProductTypeDataSeeder, ITransientDependency |
|
||||
{ |
|
||||
private readonly IGuidGenerator _guidGenerator; |
|
||||
private readonly IProductTypeRepository _productTypeRepository; |
|
||||
|
|
||||
public ProductTypeDataSeeder( |
|
||||
IGuidGenerator guidGenerator, |
|
||||
IProductTypeRepository productTypeRepository) |
|
||||
{ |
|
||||
_guidGenerator = guidGenerator; |
|
||||
_productTypeRepository = productTypeRepository; |
|
||||
} |
|
||||
|
|
||||
public async Task SeedAsync(DataSeedContext context) |
|
||||
{ |
|
||||
if (await _productTypeRepository.GetCountAsync() == 0) |
|
||||
{ |
|
||||
await _productTypeRepository.InsertAsync(new ProductType(_guidGenerator.Create(), ProductsConsts.DefaultProductType, "Default", |
|
||||
null, MultiTenancySides.Both), true); |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
@ -0,0 +1,14 @@ |
|||||
|
using System; |
||||
|
using Volo.Abp; |
||||
|
|
||||
|
namespace EasyAbp.EShop.Products.Products |
||||
|
{ |
||||
|
public class NonexistentProductGroupException : BusinessException |
||||
|
{ |
||||
|
public NonexistentProductGroupException(string productGroupName) : base( |
||||
|
"NonexistentProductGroup", |
||||
|
$"The specified product group ({productGroupName}) is nonexistent.") |
||||
|
{ |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -1,24 +0,0 @@ |
|||||
using System.Threading.Tasks; |
|
||||
using EasyAbp.EShop.Products.ProductTypes; |
|
||||
using Volo.Abp.Data; |
|
||||
using Volo.Abp.DependencyInjection; |
|
||||
using Volo.Abp.Uow; |
|
||||
|
|
||||
namespace EasyAbp.EShop.Products |
|
||||
{ |
|
||||
public class ProductsDataSeedContributor : IDataSeedContributor, ITransientDependency |
|
||||
{ |
|
||||
private readonly IProductTypeDataSeeder _productTypeDataSeeder; |
|
||||
|
|
||||
public ProductsDataSeedContributor(IProductTypeDataSeeder productTypeDataSeeder) |
|
||||
{ |
|
||||
_productTypeDataSeeder = productTypeDataSeeder; |
|
||||
} |
|
||||
|
|
||||
[UnitOfWork(true)] |
|
||||
public async Task SeedAsync(DataSeedContext context) |
|
||||
{ |
|
||||
await _productTypeDataSeeder.SeedAsync(context); |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
@ -1,14 +0,0 @@ |
|||||
using System; |
|
||||
using EasyAbp.EShop.Products.EntityFrameworkCore; |
|
||||
using Volo.Abp.Domain.Repositories.EntityFrameworkCore; |
|
||||
using Volo.Abp.EntityFrameworkCore; |
|
||||
|
|
||||
namespace EasyAbp.EShop.Products.ProductTypes |
|
||||
{ |
|
||||
public class ProductTypeRepository : EfCoreRepository<IProductsDbContext, ProductType, Guid>, IProductTypeRepository |
|
||||
{ |
|
||||
public ProductTypeRepository(IDbContextProvider<IProductsDbContext> dbContextProvider) : base(dbContextProvider) |
|
||||
{ |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
@ -1,34 +0,0 @@ |
|||||
using System; |
|
||||
using System.Threading.Tasks; |
|
||||
using EasyAbp.EShop.Products.ProductTypes.Dtos; |
|
||||
using Microsoft.AspNetCore.Mvc; |
|
||||
using Volo.Abp; |
|
||||
using Volo.Abp.Application.Dtos; |
|
||||
|
|
||||
namespace EasyAbp.EShop.Products.ProductTypes |
|
||||
{ |
|
||||
[RemoteService(Name = "EShopProducts")] |
|
||||
[Route("/api/eShop/products/productType")] |
|
||||
public class ProductTypeController : ProductsController, IProductTypeAppService |
|
||||
{ |
|
||||
private readonly IProductTypeAppService _service; |
|
||||
|
|
||||
public ProductTypeController(IProductTypeAppService service) |
|
||||
{ |
|
||||
_service = service; |
|
||||
} |
|
||||
|
|
||||
[HttpGet] |
|
||||
[Route("{id}")] |
|
||||
public Task<ProductTypeDto> GetAsync(Guid id) |
|
||||
{ |
|
||||
return _service.GetAsync(id); |
|
||||
} |
|
||||
|
|
||||
[HttpGet] |
|
||||
public Task<PagedResultDto<ProductTypeDto>> GetListAsync(PagedAndSortedResultRequestDto input) |
|
||||
{ |
|
||||
return _service.GetListAsync(input); |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
@ -1,45 +0,0 @@ |
|||||
@page |
|
||||
@using EasyAbp.EShop.Products.Localization |
|
||||
@using EasyAbp.EShop.Products.Web.Menus |
|
||||
@using EasyAbp.EShop.Products.Web.Pages.EShop.Products.ProductTypes.ProductType |
|
||||
@using Microsoft.AspNetCore.Mvc.Localization |
|
||||
@using Volo.Abp.AspNetCore.Mvc.UI.Layout |
|
||||
@model IndexModel |
|
||||
@inject IPageLayout PageLayout |
|
||||
@inject IHtmlLocalizer<ProductsResource> L |
|
||||
@{ |
|
||||
PageLayout.Content.Title = L["ProductType"].Value; |
|
||||
PageLayout.Content.BreadCrumb.Add(L["Menu:ProductType"].Value); |
|
||||
PageLayout.Content.MenuItemName = ProductsMenus.ProductType; |
|
||||
} |
|
||||
|
|
||||
@section scripts |
|
||||
{ |
|
||||
<abp-script src="/Pages/EShop/Products/ProductTypes/ProductType/index.js" /> |
|
||||
} |
|
||||
@section styles |
|
||||
{ |
|
||||
<abp-style src="/Pages/EShop/Products/ProductTypes/ProductType/index.css"/> |
|
||||
} |
|
||||
|
|
||||
<abp-card> |
|
||||
<abp-card-header> |
|
||||
<abp-row> |
|
||||
<abp-column size-md="_6"> |
|
||||
<abp-card-title>@L["ProductType"]</abp-card-title> |
|
||||
</abp-column> |
|
||||
</abp-row> |
|
||||
</abp-card-header> |
|
||||
<abp-card-body> |
|
||||
<abp-table striped-rows="true" id="ProductTypeTable" class="nowrap"> |
|
||||
<thead> |
|
||||
<tr> |
|
||||
<th>@L["ProductTypeUniqueName"]</th> |
|
||||
<th>@L["ProductTypeDisplayName"]</th> |
|
||||
<th>@L["ProductTypeDescription"]</th> |
|
||||
<th>@L["ProductTypeMultiTenancySide"]</th> |
|
||||
</tr> |
|
||||
</thead> |
|
||||
</abp-table> |
|
||||
</abp-card-body> |
|
||||
</abp-card> |
|
||||
@ -1,12 +0,0 @@ |
|||||
using System.Threading.Tasks; |
|
||||
|
|
||||
namespace EasyAbp.EShop.Products.Web.Pages.EShop.Products.ProductTypes.ProductType |
|
||||
{ |
|
||||
public class IndexModel : ProductsPageModel |
|
||||
{ |
|
||||
public async Task OnGetAsync() |
|
||||
{ |
|
||||
await Task.CompletedTask; |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
@ -1,23 +0,0 @@ |
|||||
$(function () { |
|
||||
|
|
||||
var l = abp.localization.getResource('EasyAbpEShopProducts'); |
|
||||
|
|
||||
var service = easyAbp.eShop.products.productTypes.productType; |
|
||||
|
|
||||
var dataTable = $('#ProductTypeTable').DataTable(abp.libs.datatables.normalizeConfiguration({ |
|
||||
processing: true, |
|
||||
serverSide: true, |
|
||||
paging: true, |
|
||||
searching: false, |
|
||||
autoWidth: false, |
|
||||
scrollCollapse: true, |
|
||||
order: [[1, "asc"]], |
|
||||
ajax: abp.libs.datatables.createAjax(service.getList), |
|
||||
columnDefs: [ |
|
||||
{ data: "uniqueName" }, |
|
||||
{ data: "displayName" }, |
|
||||
{ data: "description" }, |
|
||||
{ data: "multiTenancySide" }, |
|
||||
] |
|
||||
})); |
|
||||
}); |
|
||||
@ -1,26 +0,0 @@ |
|||||
using Shouldly; |
|
||||
using System.Threading.Tasks; |
|
||||
using Xunit; |
|
||||
|
|
||||
namespace EasyAbp.EShop.Products.ProductTypes |
|
||||
{ |
|
||||
public class ProductTypeAppServiceTests : ProductsApplicationTestBase |
|
||||
{ |
|
||||
private readonly IProductTypeAppService _productTypeAppService; |
|
||||
|
|
||||
public ProductTypeAppServiceTests() |
|
||||
{ |
|
||||
_productTypeAppService = GetRequiredService<IProductTypeAppService>(); |
|
||||
} |
|
||||
|
|
||||
[Fact] |
|
||||
public async Task Test1() |
|
||||
{ |
|
||||
// Arrange
|
|
||||
|
|
||||
// Act
|
|
||||
|
|
||||
// Assert
|
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
@ -1,23 +0,0 @@ |
|||||
using System.Threading.Tasks; |
|
||||
using Shouldly; |
|
||||
using Xunit; |
|
||||
|
|
||||
namespace EasyAbp.EShop.Products.ProductTypes |
|
||||
{ |
|
||||
public class ProductTypeDomainTests : ProductsDomainTestBase |
|
||||
{ |
|
||||
public ProductTypeDomainTests() |
|
||||
{ |
|
||||
} |
|
||||
|
|
||||
[Fact] |
|
||||
public async Task Test1() |
|
||||
{ |
|
||||
// Arrange
|
|
||||
|
|
||||
// Assert
|
|
||||
|
|
||||
// Assert
|
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
@ -1,31 +0,0 @@ |
|||||
using System; |
|
||||
using System.Threading.Tasks; |
|
||||
using EasyAbp.EShop.Products.ProductTypes; |
|
||||
using Volo.Abp.Domain.Repositories; |
|
||||
using Xunit; |
|
||||
|
|
||||
namespace EasyAbp.EShop.Products.EntityFrameworkCore.ProductTypes |
|
||||
{ |
|
||||
public class ProductTypeRepositoryTests : ProductsEntityFrameworkCoreTestBase |
|
||||
{ |
|
||||
private readonly IRepository<ProductType, Guid> _productTypeRepository; |
|
||||
|
|
||||
public ProductTypeRepositoryTests() |
|
||||
{ |
|
||||
_productTypeRepository = GetRequiredService<IRepository<ProductType, Guid>>(); |
|
||||
} |
|
||||
|
|
||||
[Fact] |
|
||||
public async Task Test1() |
|
||||
{ |
|
||||
await WithUnitOfWorkAsync(async () => |
|
||||
{ |
|
||||
// Arrange
|
|
||||
|
|
||||
// Act
|
|
||||
|
|
||||
//Assert
|
|
||||
}); |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
File diff suppressed because it is too large
@ -0,0 +1,89 @@ |
|||||
|
using System; |
||||
|
using Microsoft.EntityFrameworkCore.Migrations; |
||||
|
|
||||
|
namespace EShopSample.Migrations |
||||
|
{ |
||||
|
public partial class RemovedProductTypeEntity : Migration |
||||
|
{ |
||||
|
protected override void Up(MigrationBuilder migrationBuilder) |
||||
|
{ |
||||
|
migrationBuilder.DropTable( |
||||
|
name: "EasyAbpEShopProductsProductTypes"); |
||||
|
|
||||
|
migrationBuilder.DropColumn( |
||||
|
name: "ProductTypeId", |
||||
|
table: "EasyAbpEShopProductsProducts"); |
||||
|
|
||||
|
migrationBuilder.DropColumn( |
||||
|
name: "ProductTypeUniqueName", |
||||
|
table: "EasyAbpEShopOrdersOrderLines"); |
||||
|
|
||||
|
migrationBuilder.AddColumn<string>( |
||||
|
name: "ProductGroupName", |
||||
|
table: "EasyAbpEShopProductsProducts", |
||||
|
nullable: true); |
||||
|
|
||||
|
migrationBuilder.AddColumn<string>( |
||||
|
name: "ProductGroupDisplayName", |
||||
|
table: "EasyAbpEShopOrdersOrderLines", |
||||
|
nullable: true); |
||||
|
|
||||
|
migrationBuilder.AddColumn<string>( |
||||
|
name: "ProductGroupName", |
||||
|
table: "EasyAbpEShopOrdersOrderLines", |
||||
|
nullable: true); |
||||
|
} |
||||
|
|
||||
|
protected override void Down(MigrationBuilder migrationBuilder) |
||||
|
{ |
||||
|
migrationBuilder.DropColumn( |
||||
|
name: "ProductGroupName", |
||||
|
table: "EasyAbpEShopProductsProducts"); |
||||
|
|
||||
|
migrationBuilder.DropColumn( |
||||
|
name: "ProductGroupDisplayName", |
||||
|
table: "EasyAbpEShopOrdersOrderLines"); |
||||
|
|
||||
|
migrationBuilder.DropColumn( |
||||
|
name: "ProductGroupName", |
||||
|
table: "EasyAbpEShopOrdersOrderLines"); |
||||
|
|
||||
|
migrationBuilder.AddColumn<Guid>( |
||||
|
name: "ProductTypeId", |
||||
|
table: "EasyAbpEShopProductsProducts", |
||||
|
type: "uniqueidentifier", |
||||
|
nullable: false, |
||||
|
defaultValue: new Guid("00000000-0000-0000-0000-000000000000")); |
||||
|
|
||||
|
migrationBuilder.AddColumn<string>( |
||||
|
name: "ProductTypeUniqueName", |
||||
|
table: "EasyAbpEShopOrdersOrderLines", |
||||
|
type: "nvarchar(max)", |
||||
|
nullable: true); |
||||
|
|
||||
|
migrationBuilder.CreateTable( |
||||
|
name: "EasyAbpEShopProductsProductTypes", |
||||
|
columns: table => new |
||||
|
{ |
||||
|
Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false), |
||||
|
ConcurrencyStamp = table.Column<string>(type: "nvarchar(40)", maxLength: 40, nullable: true), |
||||
|
CreationTime = table.Column<DateTime>(type: "datetime2", nullable: false), |
||||
|
CreatorId = table.Column<Guid>(type: "uniqueidentifier", nullable: true), |
||||
|
DeleterId = table.Column<Guid>(type: "uniqueidentifier", nullable: true), |
||||
|
DeletionTime = table.Column<DateTime>(type: "datetime2", nullable: true), |
||||
|
Description = table.Column<string>(type: "nvarchar(max)", nullable: true), |
||||
|
DisplayName = table.Column<string>(type: "nvarchar(max)", nullable: true), |
||||
|
ExtraProperties = table.Column<string>(type: "nvarchar(max)", nullable: true), |
||||
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false, defaultValue: false), |
||||
|
LastModificationTime = table.Column<DateTime>(type: "datetime2", nullable: true), |
||||
|
LastModifierId = table.Column<Guid>(type: "uniqueidentifier", nullable: true), |
||||
|
MultiTenancySide = table.Column<int>(type: "int", nullable: false), |
||||
|
UniqueName = table.Column<string>(type: "nvarchar(max)", nullable: true) |
||||
|
}, |
||||
|
constraints: table => |
||||
|
{ |
||||
|
table.PrimaryKey("PK_EasyAbpEShopProductsProductTypes", x => x.Id); |
||||
|
}); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
Loading…
Reference in new issue