Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
E
EShop
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
tsai
EShop
Commits
f56695c2
Commit
f56695c2
authored
Apr 29, 2020
by
gdlcf88
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Change ProductDetail to an aggregate root and make it also related to ProductSku, close #1
parent
581cf178
Changes
41
Hide whitespace changes
Inline
Side-by-side
Showing
41 changed files
with
2958 additions
and
69 deletions
+2958
-69
CreateUpdateProductDetailDto.cs
...ducts/ProductDetails/Dtos/CreateUpdateProductDetailDto.cs
+17
-0
ProductDetailDto.cs
...bp/EShop/Products/ProductDetails/Dtos/ProductDetailDto.cs
+10
-0
IProductDetailAppService.cs
...EShop/Products/ProductDetails/IProductDetailAppService.cs
+19
-0
CreateUpdateProductDto.cs
...bp/EShop/Products/Products/Dtos/CreateUpdateProductDto.cs
+3
-3
ProductDetailDto.cs
.../EasyAbp/EShop/Products/Products/Dtos/ProductDetailDto.cs
+0
-9
ProductDto.cs
...tracts/EasyAbp/EShop/Products/Products/Dtos/ProductDto.cs
+2
-2
ProductSkuDto.cs
...cts/EasyAbp/EShop/Products/Products/Dtos/ProductSkuDto.cs
+2
-0
ProductDetailAppService.cs
.../EShop/Products/ProductDetails/ProductDetailAppService.cs
+86
-0
ProductAppService.cs
...tion/EasyAbp/EShop/Products/Products/ProductAppService.cs
+24
-5
ProductsApplicationAutoMapperProfile.cs
...bp/EShop/Products/ProductsApplicationAutoMapperProfile.cs
+4
-1
cs.json
...ared/EasyAbp/EShop/Products/Localization/Products/cs.json
+3
-0
en.json
...ared/EasyAbp/EShop/Products/Localization/Products/en.json
+3
-0
pl.json
...ared/EasyAbp/EShop/Products/Localization/Products/pl.json
+3
-0
pt-BR.json
...d/EasyAbp/EShop/Products/Localization/Products/pt-BR.json
+3
-0
sl.json
...ared/EasyAbp/EShop/Products/Localization/Products/sl.json
+3
-0
tr.json
...ared/EasyAbp/EShop/Products/Localization/Products/tr.json
+3
-0
vi.json
...ared/EasyAbp/EShop/Products/Localization/Products/vi.json
+3
-0
zh-Hans.json
...EasyAbp/EShop/Products/Localization/Products/zh-Hans.json
+3
-0
zh-Hant.json
...EasyAbp/EShop/Products/Localization/Products/zh-Hant.json
+3
-0
IProductDetailRepository.cs
...EShop/Products/ProductDetails/IProductDetailRepository.cs
+11
-0
ProductDetail.cs
...in/EasyAbp/EShop/Products/ProductDetails/ProductDetail.cs
+26
-0
Product.cs
...roducts.Domain/EasyAbp/EShop/Products/Products/Product.cs
+5
-2
ProductSku.cs
...ucts.Domain/EasyAbp/EShop/Products/Products/ProductSku.cs
+5
-1
EasyAbp.EShop.Products.EntityFrameworkCore.csproj
...orkCore/EasyAbp.EShop.Products.EntityFrameworkCore.csproj
+0
-4
EShopProductsEntityFrameworkCoreModule.cs
...tyFrameworkCore/EShopProductsEntityFrameworkCoreModule.cs
+3
-1
IProductsDbContext.cs
.../EShop/Products/EntityFrameworkCore/IProductsDbContext.cs
+1
-0
ProductsDbContext.cs
...p/EShop/Products/EntityFrameworkCore/ProductsDbContext.cs
+1
-0
ProductsDbContextModelCreatingExtensions.cs
...FrameworkCore/ProductsDbContextModelCreatingExtensions.cs
+1
-1
ProductDetailRepository.cs
.../EShop/Products/ProductDetails/ProductDetailRepository.cs
+14
-0
ProductRepository.cs
...Core/EasyAbp/EShop/Products/Products/ProductRepository.cs
+0
-1
CreateModal.cshtml.cs
...ges/EShop/Products/Products/Product/CreateModal.cshtml.cs
+24
-3
EditModal.cshtml.cs
...Pages/EShop/Products/Products/Product/EditModal.cshtml.cs
+26
-2
CreateEditProductAttributeOptionViewModel.cs
...t/ViewModels/CreateEditProductAttributeOptionViewModel.cs
+1
-1
CreateEditProductAttributeViewModel.cs
...Product/ViewModels/CreateEditProductAttributeViewModel.cs
+2
-2
CreateEditProductDetailViewModel.cs
...ts/Product/ViewModels/CreateEditProductDetailViewModel.cs
+6
-1
CreateEditProductViewModel.cs
...Products/Product/ViewModels/CreateEditProductViewModel.cs
+1
-1
index.js
...oducts.Web/Pages/EShop/Products/Products/Product/index.js
+1
-1
ProductsWebAutoMapperProfile.cs
...asyAbp.EShop.Products.Web/ProductsWebAutoMapperProfile.cs
+12
-6
20200428164406_ProductEntitiesAdjustment.Designer.cs
...ions/20200428164406_ProductEntitiesAdjustment.Designer.cs
+2398
-0
20200428164406_ProductEntitiesAdjustment.cs
...ns/Migrations/20200428164406_ProductEntitiesAdjustment.cs
+167
-0
EasyMallMigrationsDbContextModelSnapshot.cs
...ns/Migrations/EasyMallMigrationsDbContextModelSnapshot.cs
+59
-22
No files found.
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application.Contracts/EasyAbp/EShop/Products/Products/Dtos/CreateUpdateProductDetailDto.cs
→
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application.Contracts/EasyAbp/EShop/Products/Product
Detail
s/Dtos/CreateUpdateProductDetailDto.cs
View file @
f56695c2
using
System
;
using
System.ComponentModel
;
using
System.ComponentModel.DataAnnotations
;
namespace
EasyAbp.EShop.Products.Products.Dtos
namespace
EasyAbp.EShop.Products.Product
Detail
s.Dtos
{
public
class
CreateUpdateProductDetailDto
{
/// <summary>
/// This property is for product management permission checking
/// </summary>
[
DisplayName
(
"ProductDetailStoreId"
)]
public
Guid
StoreId
{
get
;
set
;
}
[
DisplayName
(
"ProductDetailDescription"
)]
public
string
Description
{
get
;
set
;
}
}
...
...
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application.Contracts/EasyAbp/EShop/Products/ProductDetails/Dtos/ProductDetailDto.cs
0 → 100644
View file @
f56695c2
using
System
;
using
Volo.Abp.Application.Dtos
;
namespace
EasyAbp.EShop.Products.ProductDetails.Dtos
{
public
class
ProductDetailDto
:
EntityDto
<
Guid
>
{
public
string
Description
{
get
;
set
;
}
}
}
\ No newline at end of file
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application.Contracts/EasyAbp/EShop/Products/ProductDetails/IProductDetailAppService.cs
0 → 100644
View file @
f56695c2
using
System
;
using
System.Threading.Tasks
;
using
EasyAbp.EShop.Products.ProductDetails.Dtos
;
using
Volo.Abp.Application.Dtos
;
using
Volo.Abp.Application.Services
;
namespace
EasyAbp.EShop.Products.ProductDetails
{
public
interface
IProductDetailAppService
:
ICrudAppService
<
ProductDetailDto
,
Guid
,
PagedAndSortedResultRequestDto
,
CreateUpdateProductDetailDto
,
CreateUpdateProductDetailDto
>
{
Task
DeleteAsync
(
Guid
id
,
Guid
storeId
);
}
}
\ No newline at end of file
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application.Contracts/EasyAbp/EShop/Products/Products/Dtos/CreateUpdateProductDto.cs
View file @
f56695c2
...
...
@@ -8,10 +8,12 @@ namespace EasyAbp.EShop.Products.Products.Dtos
{
public
class
CreateUpdateProductDto
:
IValidatableObject
{
[
Required
]
[
DisplayName
(
"ProductProductTypeId"
)]
public
Guid
ProductTypeId
{
get
;
set
;
}
[
DisplayName
(
"ProductDetailId"
)]
public
Guid
ProductDetailId
{
get
;
set
;
}
/// <summary>
/// This property is set for adding the store to ProductStore in creation, or for permission checking in update.
/// </summary>
...
...
@@ -25,8 +27,6 @@ namespace EasyAbp.EShop.Products.Products.Dtos
[
DisplayName
(
"ProductDisplayName"
)]
public
string
DisplayName
{
get
;
set
;
}
public
CreateUpdateProductDetailDto
ProductDetail
{
get
;
set
;
}
public
ICollection
<
CreateUpdateProductAttributeDto
>
ProductAttributes
{
get
;
set
;
}
[
DisplayName
(
"ProductInventoryStrategy"
)]
...
...
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application.Contracts/EasyAbp/EShop/Products/Products/Dtos/ProductDetailDto.cs
deleted
100644 → 0
View file @
581cf178
using
Volo.Abp.Application.Dtos
;
namespace
EasyAbp.EShop.Products.Products.Dtos
{
public
class
ProductDetailDto
:
EntityDto
{
public
string
Description
{
get
;
set
;
}
}
}
\ No newline at end of file
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application.Contracts/EasyAbp/EShop/Products/Products/Dtos/ProductDto.cs
View file @
f56695c2
...
...
@@ -8,6 +8,8 @@ namespace EasyAbp.EShop.Products.Products.Dtos
{
public
Guid
ProductTypeId
{
get
;
set
;
}
public
Guid
ProductDetailId
{
get
;
set
;
}
public
ICollection
<
Guid
>
CategoryIds
{
get
;
set
;
}
public
string
DisplayName
{
get
;
set
;
}
...
...
@@ -20,8 +22,6 @@ namespace EasyAbp.EShop.Products.Products.Dtos
public
bool
IsPublished
{
get
;
set
;
}
public
ProductDetailDto
ProductDetail
{
get
;
set
;
}
public
ICollection
<
ProductAttributeDto
>
ProductAttributes
{
get
;
set
;
}
public
ICollection
<
ProductSkuDto
>
ProductSkus
{
get
;
set
;
}
...
...
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application.Contracts/EasyAbp/EShop/Products/Products/Dtos/ProductSkuDto.cs
View file @
f56695c2
...
...
@@ -16,5 +16,7 @@ namespace EasyAbp.EShop.Products.Products.Dtos
public
int
Sold
{
get
;
set
;
}
public
int
OrderMinQuantity
{
get
;
set
;
}
public
Guid
?
ProductDetailId
{
get
;
set
;
}
}
}
\ No newline at end of file
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application/EasyAbp/EShop/Products/ProductDetails/ProductDetailAppService.cs
0 → 100644
View file @
f56695c2
using
System
;
using
System.Threading.Tasks
;
using
EasyAbp.EShop.Products.Authorization
;
using
EasyAbp.EShop.Products.ProductDetails.Dtos
;
using
EasyAbp.EShop.Products.Products
;
using
EasyAbp.EShop.Products.ProductStores
;
using
Volo.Abp
;
using
Volo.Abp.Application.Dtos
;
using
Volo.Abp.Application.Services
;
namespace
EasyAbp.EShop.Products.ProductDetails
{
public
class
ProductDetailAppService
:
CrudAppService
<
ProductDetail
,
ProductDetailDto
,
Guid
,
PagedAndSortedResultRequestDto
,
CreateUpdateProductDetailDto
,
CreateUpdateProductDetailDto
>,
IProductDetailAppService
{
protected
override
string
CreatePolicyName
{
get
;
set
;
}
=
ProductsPermissions
.
Products
.
Create
;
protected
override
string
DeletePolicyName
{
get
;
set
;
}
=
ProductsPermissions
.
Products
.
Delete
;
protected
override
string
UpdatePolicyName
{
get
;
set
;
}
=
ProductsPermissions
.
Products
.
Update
;
protected
override
string
GetPolicyName
{
get
;
set
;
}
=
ProductsPermissions
.
Products
.
Default
;
protected
override
string
GetListPolicyName
{
get
;
set
;
}
=
ProductsPermissions
.
Products
.
Default
;
private
readonly
IProductRepository
_productRepository
;
private
readonly
IProductStoreRepository
_productStoreRepository
;
private
readonly
IProductDetailRepository
_repository
;
public
ProductDetailAppService
(
IProductRepository
productRepository
,
IProductStoreRepository
productStoreRepository
,
IProductDetailRepository
repository
)
:
base
(
repository
)
{
_productRepository
=
productRepository
;
_productStoreRepository
=
productStoreRepository
;
_repository
=
repository
;
}
public
override
async
Task
<
ProductDetailDto
>
UpdateAsync
(
Guid
id
,
CreateUpdateProductDetailDto
input
)
{
await
CheckUpdatePolicyAsync
();
var
product
=
await
_productRepository
.
GetAsync
(
x
=>
x
.
ProductDetailId
==
id
);
await
CheckStoreIsProductOwnerAsync
(
product
.
Id
,
input
.
StoreId
);
var
detail
=
await
GetEntityByIdAsync
(
id
);
MapToEntity
(
input
,
detail
);
await
Repository
.
UpdateAsync
(
detail
,
autoSave
:
true
);
return
MapToGetOutputDto
(
detail
);
}
public
virtual
async
Task
DeleteAsync
(
Guid
id
,
Guid
storeId
)
{
await
CheckDeletePolicyAsync
();
var
product
=
await
_productRepository
.
GetAsync
(
x
=>
x
.
ProductDetailId
==
id
);
await
CheckStoreIsProductOwnerAsync
(
product
.
Id
,
storeId
);
await
Repository
.
DeleteAsync
(
id
);
}
[
RemoteService
(
false
)]
public
override
Task
DeleteAsync
(
Guid
id
)
{
throw
new
NotImplementedException
();
}
[
RemoteService
(
false
)]
public
override
Task
<
PagedResultDto
<
ProductDetailDto
>>
GetListAsync
(
PagedAndSortedResultRequestDto
input
)
{
throw
new
NotImplementedException
();
}
protected
virtual
async
Task
CheckStoreIsProductOwnerAsync
(
Guid
productId
,
Guid
storeId
)
{
var
productStore
=
await
_productStoreRepository
.
GetAsync
(
productId
,
storeId
);
if
(!
productStore
.
IsOwner
)
{
throw
new
StoreIsNotProductOwnerException
(
productId
,
storeId
);
}
}
}
}
\ No newline at end of file
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application/EasyAbp/EShop/Products/Products/ProductAppService.cs
View file @
f56695c2
...
...
@@ -4,10 +4,12 @@ using System.Linq;
using
System.Threading.Tasks
;
using
EasyAbp.EShop.Products.Authorization
;
using
EasyAbp.EShop.Products.ProductCategories
;
using
EasyAbp.EShop.Products.ProductDetails
;
using
EasyAbp.EShop.Products.Products.Dtos
;
using
EasyAbp.EShop.Products.ProductStores
;
using
Volo.Abp
;
using
Volo.Abp.Application.Services
;
using
Volo.Abp.Domain.Entities
;
namespace
EasyAbp.EShop.Products.Products
{
...
...
@@ -53,6 +55,8 @@ namespace EasyAbp.EShop.Products.Products
await
Repository
.
InsertAsync
(
product
,
autoSave
:
true
);
await
CheckProductDetailIdAsync
(
product
.
Id
,
input
.
ProductDetailId
);
await
AddProductToStoreAsync
(
product
.
Id
,
input
.
StoreId
);
await
UpdateProductCategoriesAsync
(
product
.
Id
,
input
.
CategoryIds
);
...
...
@@ -60,6 +64,19 @@ namespace EasyAbp.EShop.Products.Products
return
MapToGetOutputDto
(
product
);
}
private
async
Task
CheckProductDetailIdAsync
(
Guid
currentProductId
,
Guid
desiredProductDetailId
)
{
var
otherOwner
=
await
_repository
.
FindAsync
(
x
=>
x
.
ProductDetailId
==
desiredProductDetailId
&&
x
.
Id
!=
currentProductId
);
// Todo: should also check ProductSku owner
if
(
otherOwner
!=
null
)
{
throw
new
EntityNotFoundException
(
typeof
(
ProductDetail
),
desiredProductDetailId
);
}
}
protected
virtual
async
Task
AddProductToStoreAsync
(
Guid
productId
,
Guid
storeId
)
{
await
_productStoreRepository
.
InsertAsync
(
new
ProductStore
(
GuidGenerator
.
Create
(),
CurrentTenant
.
Id
,
...
...
@@ -71,7 +88,7 @@ namespace EasyAbp.EShop.Products.Products
await
CheckUpdatePolicyAsync
();
await
CheckStoreIsProductOwnerAsync
(
id
,
input
.
StoreId
);
var
product
=
await
GetEntityByIdAsync
(
id
);
MapToEntity
(
input
,
product
);
...
...
@@ -80,18 +97,20 @@ namespace EasyAbp.EShop.Products.Products
await
Repository
.
UpdateAsync
(
product
,
autoSave
:
true
);
await
CheckProductDetailIdAsync
(
product
.
Id
,
input
.
ProductDetailId
);
await
UpdateProductCategoriesAsync
(
product
.
Id
,
input
.
CategoryIds
);
return
MapToGetOutputDto
(
product
);
}
protected
virtual
async
Task
CheckStoreIsProductOwnerAsync
(
Guid
i
d
,
Guid
storeId
)
protected
virtual
async
Task
CheckStoreIsProductOwnerAsync
(
Guid
productI
d
,
Guid
storeId
)
{
var
productStore
=
await
_productStoreRepository
.
GetAsync
(
i
d
,
storeId
);
var
productStore
=
await
_productStoreRepository
.
GetAsync
(
productI
d
,
storeId
);
if
(!
productStore
.
IsOwner
)
{
throw
new
StoreIsNotProductOwnerException
(
i
d
,
storeId
);
throw
new
StoreIsNotProductOwnerException
(
productI
d
,
storeId
);
}
}
...
...
@@ -134,7 +153,7 @@ namespace EasyAbp.EShop.Products.Products
product
.
ProductAttributes
.
RemoveAll
(
a
=>
exceptAttributeNames
.
Contains
(
a
.
DisplayName
));
}
[
RemoteService
(
IsMetadataEnabled
=
false
)]
[
RemoteService
(
false
)]
public
override
async
Task
DeleteAsync
(
Guid
id
)
{
throw
new
NotImplementedException
();
...
...
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application/EasyAbp/EShop/Products/ProductsApplicationAutoMapperProfile.cs
View file @
f56695c2
...
...
@@ -7,6 +7,8 @@ using EasyAbp.EShop.Products.ProductTypes.Dtos;
using
EasyAbp.EShop.Products.ProductCategories
;
using
EasyAbp.EShop.Products.ProductCategories.Dtos
;
using
AutoMapper
;
using
EasyAbp.EShop.Products.ProductDetails
;
using
EasyAbp.EShop.Products.ProductDetails.Dtos
;
using
Volo.Abp.AutoMapper
;
namespace
EasyAbp.EShop.Products
...
...
@@ -29,7 +31,8 @@ namespace EasyAbp.EShop.Products
.
ForSourceMember
(
dto
=>
dto
.
CategoryIds
,
opt
=>
opt
.
DoNotValidate
())
.
Ignore
(
p
=>
p
.
ProductAttributes
)
.
Ignore
(
p
=>
p
.
ProductSkus
);
CreateMap
<
CreateUpdateProductDetailDto
,
ProductDetail
>(
MemberList
.
Source
);
CreateMap
<
CreateUpdateProductDetailDto
,
ProductDetail
>(
MemberList
.
Source
)
.
ForSourceMember
(
dto
=>
dto
.
StoreId
,
opt
=>
opt
.
DoNotValidate
());
CreateMap
<
CreateUpdateProductAttributeDto
,
ProductAttribute
>(
MemberList
.
Source
);
CreateMap
<
CreateUpdateProductAttributeOptionDto
,
ProductAttributeOption
>(
MemberList
.
Source
);
CreateMap
<
Category
,
CategoryDto
>();
...
...
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/cs.json
View file @
f56695c2
...
...
@@ -5,8 +5,11 @@
"Product"
:
"Product"
,
"ProductStore"
:
"ProductStore"
,
"ProductProductTypeId"
:
"ProductProductTypeId"
,
"ProductDetailId"
:
"ProductDetailId"
,
"ProductProductStoreId"
:
"ProductProductStoreId"
,
"ProductDisplayName"
:
"ProductDisplayName"
,
"ProductDetailProductId"
:
"ProductDetailProductId"
,
"ProductDetailProductSkuId"
:
"ProductDetailProductSkuId"
,
"ProductDetailDescription"
:
"ProductDetailDescription"
,
"ProductDetailDisplayOrder"
:
"ProductDetailDisplayOrder"
,
"ProductAttributeNames"
:
"ProductAttributeNames"
,
...
...
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/en.json
View file @
f56695c2
...
...
@@ -6,8 +6,11 @@
"Product"
:
"Product"
,
"ProductStore"
:
"ProductStore"
,
"ProductProductTypeId"
:
"ProductProductTypeId"
,
"ProductDetailId"
:
"ProductDetailId"
,
"ProductProductStoreId"
:
"ProductProductStoreId"
,
"ProductDisplayName"
:
"ProductDisplayName"
,
"ProductDetailProductId"
:
"ProductDetailProductId"
,
"ProductDetailProductSkuId"
:
"ProductDetailProductSkuId"
,
"ProductDetailDescription"
:
"ProductDetailDescription"
,
"ProductDetailDisplayOrder"
:
"ProductDetailDisplayOrder"
,
"ProductAttributeNames"
:
"ProductAttributeNames"
,
...
...
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/pl.json
View file @
f56695c2
...
...
@@ -5,8 +5,11 @@
"Product"
:
"Product"
,
"ProductStore"
:
"ProductStore"
,
"ProductProductTypeId"
:
"ProductProductTypeId"
,
"ProductDetailId"
:
"ProductDetailId"
,
"ProductProductStoreId"
:
"ProductProductStoreId"
,
"ProductDisplayName"
:
"ProductDisplayName"
,
"ProductDetailProductId"
:
"ProductDetailProductId"
,
"ProductDetailProductSkuId"
:
"ProductDetailProductSkuId"
,
"ProductDetailDescription"
:
"ProductDetailDescription"
,
"ProductDetailDisplayOrder"
:
"ProductDetailDisplayOrder"
,
"ProductAttributeNames"
:
"ProductAttributeNames"
,
...
...
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/pt-BR.json
View file @
f56695c2
...
...
@@ -5,8 +5,11 @@
"Product"
:
"Product"
,
"ProductStore"
:
"ProductStore"
,
"ProductProductTypeId"
:
"ProductProductTypeId"
,
"ProductDetailId"
:
"ProductDetailId"
,
"ProductProductStoreId"
:
"ProductProductStoreId"
,
"ProductDisplayName"
:
"ProductDisplayName"
,
"ProductDetailProductId"
:
"ProductDetailProductId"
,
"ProductDetailProductSkuId"
:
"ProductDetailProductSkuId"
,
"ProductDetailDescription"
:
"ProductDetailDescription"
,
"ProductDetailDisplayOrder"
:
"ProductDetailDisplayOrder"
,
"ProductAttributeNames"
:
"ProductAttributeNames"
,
...
...
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/sl.json
View file @
f56695c2
...
...
@@ -6,8 +6,11 @@
"Product"
:
"Product"
,
"ProductStore"
:
"ProductStore"
,
"ProductProductTypeId"
:
"ProductProductTypeId"
,
"ProductDetailId"
:
"ProductDetailId"
,
"ProductProductStoreId"
:
"ProductProductStoreId"
,
"ProductDisplayName"
:
"ProductDisplayName"
,
"ProductDetailProductId"
:
"ProductDetailProductId"
,
"ProductDetailProductSkuId"
:
"ProductDetailProductSkuId"
,
"ProductDetailDescription"
:
"ProductDetailDescription"
,
"ProductDetailDisplayOrder"
:
"ProductDetailDisplayOrder"
,
"ProductAttributeNames"
:
"ProductAttributeNames"
,
...
...
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/tr.json
View file @
f56695c2
...
...
@@ -6,8 +6,11 @@
"Product"
:
"Product"
,
"ProductStore"
:
"ProductStore"
,
"ProductProductTypeId"
:
"ProductProductTypeId"
,
"ProductDetailId"
:
"ProductDetailId"
,
"ProductProductStoreId"
:
"ProductProductStoreId"
,
"ProductDisplayName"
:
"ProductDisplayName"
,
"ProductDetailProductId"
:
"ProductDetailProductId"
,
"ProductDetailProductSkuId"
:
"ProductDetailProductSkuId"
,
"ProductDetailDescription"
:
"ProductDetailDescription"
,
"ProductDetailDisplayOrder"
:
"ProductDetailDisplayOrder"
,
"ProductAttributeNames"
:
"ProductAttributeNames"
,
...
...
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/vi.json
View file @
f56695c2
...
...
@@ -5,8 +5,11 @@
"Product"
:
"Product"
,
"ProductStore"
:
"ProductStore"
,
"ProductProductTypeId"
:
"ProductProductTypeId"
,
"ProductDetailId"
:
"ProductDetailId"
,
"ProductProductStoreId"
:
"ProductProductStoreId"
,
"ProductDisplayName"
:
"ProductDisplayName"
,
"ProductDetailProductId"
:
"ProductDetailProductId"
,
"ProductDetailProductSkuId"
:
"ProductDetailProductSkuId"
,
"ProductDetailDescription"
:
"ProductDetailDescription"
,
"ProductDetailDisplayOrder"
:
"ProductDetailDisplayOrder"
,
"ProductAttributeNames"
:
"ProductAttributeNames"
,
...
...
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/zh-Hans.json
View file @
f56695c2
...
...
@@ -6,8 +6,11 @@
"Product"
:
"Product"
,
"ProductStore"
:
"ProductStore"
,
"ProductProductTypeId"
:
"ProductProductTypeId"
,
"ProductDetailId"
:
"ProductDetailId"
,
"ProductProductStoreId"
:
"ProductProductStoreId"
,
"ProductDisplayName"
:
"ProductDisplayName"
,
"ProductDetailProductId"
:
"ProductDetailProductId"
,
"ProductDetailProductSkuId"
:
"ProductDetailProductSkuId"
,
"ProductDetailDescription"
:
"ProductDetailDescription"
,
"ProductDetailDisplayOrder"
:
"ProductDetailDisplayOrder"
,
"ProductAttributeNames"
:
"ProductAttributeNames"
,
...
...
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain.Shared/EasyAbp/EShop/Products/Localization/Products/zh-Hant.json
View file @
f56695c2
...
...
@@ -6,8 +6,11 @@
"Product"
:
"Product"
,
"ProductStore"
:
"ProductStore"
,
"ProductProductTypeId"
:
"ProductProductTypeId"
,
"ProductDetailId"
:
"ProductDetailId"
,
"ProductProductStoreId"
:
"ProductProductStoreId"
,
"ProductDisplayName"
:
"ProductDisplayName"
,
"ProductDetailProductId"
:
"ProductDetailProductId"
,
"ProductDetailProductSkuId"
:
"ProductDetailProductSkuId"
,
"ProductDetailDescription"
:
"ProductDetailDescription"
,
"ProductDetailDisplayOrder"
:
"ProductDetailDisplayOrder"
,
"ProductAttributeNames"
:
"ProductAttributeNames"
,
...
...
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain/EasyAbp/EShop/Products/ProductDetails/IProductDetailRepository.cs
0 → 100644
View file @
f56695c2
using
System
;
using
System.Linq
;
using
EasyAbp.EShop.Products.Products
;
using
Volo.Abp.Domain.Repositories
;
namespace
EasyAbp.EShop.Products.ProductDetails
{
public
interface
IProductDetailRepository
:
IRepository
<
ProductDetail
,
Guid
>
{
}
}
\ No newline at end of file
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain/EasyAbp/EShop/Products/Products/ProductDetail.cs
→
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain/EasyAbp/EShop/Products/Product
Detail
s/ProductDetail.cs
View file @
f56695c2
using
System
;
using
JetBrains.Annotations
;
using
Volo.Abp.Domain.Entities
;
using
Volo.Abp.Domain.Entities
.Auditing
;
namespace
EasyAbp.EShop.Products.Products
namespace
EasyAbp.EShop.Products.Product
Detail
s
{
public
class
ProductDetail
:
Entity
public
class
ProductDetail
:
FullAuditedAggregateRoot
<
Guid
>
{
public
virtual
Guid
ProductId
{
get
;
protected
set
;
}
[
CanBeNull
]
public
virtual
string
Description
{
get
;
protected
set
;
}
protected
ProductDetail
()
{}
public
ProductDetail
(
Guid
productI
d
,
[
CanBeNull
]
string
description
)
Guid
i
d
,
[
CanBeNull
]
string
description
)
:
base
(
id
)
{
ProductId
=
productId
;
Description
=
description
;
}
public
override
object
[]
GetKeys
(
)
public
void
SetDescription
(
string
description
)
{
return
new
object
[]
{
ProductId
}
;
Description
=
description
;
}
}
}
\ No newline at end of file
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain/EasyAbp/EShop/Products/Products/Product.cs
View file @
f56695c2
using
System
;
using
System.Collections.Generic
;
using
EasyAbp.EShop.Products.ProductDetails
;
using
JetBrains.Annotations
;
using
Volo.Abp.Domain.Entities.Auditing
;
...
...
@@ -9,6 +10,8 @@ namespace EasyAbp.EShop.Products.Products
{
public
virtual
Guid
ProductTypeId
{
get
;
protected
set
;
}
public
virtual
Guid
ProductDetailId
{
get
;
protected
set
;
}
[
NotNull
]
public
virtual
string
DisplayName
{
get
;
protected
set
;
}
...
...
@@ -21,8 +24,6 @@ namespace EasyAbp.EShop.Products.Products
public
virtual
bool
IsPublished
{
get
;
protected
set
;
}
public
virtual
ProductDetail
ProductDetail
{
get
;
protected
set
;
}
public
virtual
ICollection
<
ProductAttribute
>
ProductAttributes
{
get
;
protected
set
;
}
public
virtual
ICollection
<
ProductSku
>
ProductSkus
{
get
;
protected
set
;
}
...
...
@@ -36,6 +37,7 @@ namespace EasyAbp.EShop.Products.Products
public
Product
(
Guid
id
,
Guid
productTypeId
,
Guid
productDetailId
,
string
displayName
,
InventoryStrategy
inventoryStrategy
,
bool
isPublished
,
...
...
@@ -44,6 +46,7 @@ namespace EasyAbp.EShop.Products.Products
)
:
base
(
id
)
{
ProductTypeId
=
productTypeId
;
ProductDetailId
=
productDetailId
;
DisplayName
=
displayName
;
InventoryStrategy
=
inventoryStrategy
;
IsPublished
=
isPublished
;
...
...
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain/EasyAbp/EShop/Products/Products/ProductSku.cs
View file @
f56695c2
...
...
@@ -21,6 +21,8 @@ namespace EasyAbp.EShop.Products.Products
public
virtual
int
Sold
{
get
;
protected
set
;
}
public
virtual
int
OrderMinQuantity
{
get
;
protected
set
;
}
public
Guid
?
ProductDetailId
{
get
;
set
;
}
protected
ProductSku
()
{}
...
...
@@ -32,7 +34,8 @@ namespace EasyAbp.EShop.Products.Products
decimal
price
,
int
inventory
,
int
sold
,
int
orderMinQuantity
)
:
base
(
id
)
int
orderMinQuantity
,
Guid
?
productDetailId
)
:
base
(
id
)
{
SerializedAttributeOptionIds
=
serializedAttributeOptionIds
;
Currency
=
currency
;
...
...
@@ -41,6 +44,7 @@ namespace EasyAbp.EShop.Products.Products
Inventory
=
inventory
;
Sold
=
sold
;
OrderMinQuantity
=
orderMinQuantity
;
ProductDetailId
=
productDetailId
;
}
}
}
\ No newline at end of file
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.EntityFrameworkCore/EasyAbp.EShop.Products.EntityFrameworkCore.csproj
View file @
f56695c2
...
...
@@ -12,8 +12,4 @@
<ProjectReference Include="..\EasyAbp.EShop.Products.Domain\EasyAbp.EShop.Products.Domain.csproj" />
</ItemGroup>
<ItemGroup>
<Folder Include="EasyAbp\EShop\Products" />
</ItemGroup>
</Project>
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.EntityFrameworkCore/EasyAbp/EShop/Products/EntityFrameworkCore/EShopProductsEntityFrameworkCoreModule.cs
View file @
f56695c2
...
...
@@ -2,6 +2,7 @@ using EasyAbp.EShop.Products.ProductStores;
using
EasyAbp.EShop.Products.ProductCategories
;
using
EasyAbp.EShop.Products.ProductTypes
;
using
EasyAbp.EShop.Products.Categories
;
using
EasyAbp.EShop.Products.ProductDetails
;
using
EasyAbp.EShop.Products.Products
;
using
Microsoft.Extensions.DependencyInjection
;
using
Volo.Abp.EntityFrameworkCore
;
...
...
@@ -22,8 +23,9 @@ namespace EasyAbp.EShop.Products.EntityFrameworkCore
/* Add custom repositories here. Example:
* options.AddRepository<Question, EfCoreQuestionRepository>();
*/
options
.
AddRepository
<
Product
,
ProductRepository
>();
options
.
AddRepository
<
Category
,
CategoryRepository
>();
options
.
AddRepository
<
Product
,
ProductRepository
>();
options
.
AddRepository
<
ProductDetail
,
ProductDetailRepository
>();
options
.
AddRepository
<
ProductType
,
ProductTypeRepository
>();
options
.
AddRepository
<
ProductCategory
,
ProductCategoryRepository
>();
options
.
AddRepository
<
ProductStore
,
ProductStoreRepository
>();
...
...
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.EntityFrameworkCore/EasyAbp/EShop/Products/EntityFrameworkCore/IProductsDbContext.cs
View file @
f56695c2
...
...
@@ -5,6 +5,7 @@ using EasyAbp.EShop.Products.Products;
using
EasyAbp.EShop.Products.Categories
;
using
EasyAbp.EShop.Products.ProductTypes
;
using
EasyAbp.EShop.Products.ProductCategories
;
using
EasyAbp.EShop.Products.ProductDetails
;
using
EasyAbp.EShop.Products.ProductStores
;
namespace
EasyAbp.EShop.Products.EntityFrameworkCore
...
...
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.EntityFrameworkCore/EasyAbp/EShop/Products/EntityFrameworkCore/ProductsDbContext.cs
View file @
f56695c2
...
...
@@ -5,6 +5,7 @@ using EasyAbp.EShop.Products.Products;
using
EasyAbp.EShop.Products.Categories
;
using
EasyAbp.EShop.Products.ProductTypes
;
using
EasyAbp.EShop.Products.ProductCategories
;
using
EasyAbp.EShop.Products.ProductDetails
;
using
EasyAbp.EShop.Products.ProductStores
;
namespace
EasyAbp.EShop.Products.EntityFrameworkCore
...
...
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.EntityFrameworkCore/EasyAbp/EShop/Products/EntityFrameworkCore/ProductsDbContextModelCreatingExtensions.cs
View file @
f56695c2
...
...
@@ -4,6 +4,7 @@ using EasyAbp.EShop.Products.ProductTypes;
using
EasyAbp.EShop.Products.Categories
;
using
EasyAbp.EShop.Products.Products
;
using
System
;
using
EasyAbp.EShop.Products.ProductDetails
;
using
Microsoft.EntityFrameworkCore
;
using
Volo.Abp
;
using
Volo.Abp.EntityFrameworkCore.Modeling
;
...
...
@@ -57,7 +58,6 @@ namespace EasyAbp.EShop.Products.EntityFrameworkCore
b
.
ToTable
(
options
.
TablePrefix
+
"ProductDetails"
,
options
.
Schema
);
b
.
ConfigureByConvention
();
/* Configure more properties here */
b
.
HasKey
(
x
=>
new
{
x
.
ProductId
});
});
builder
.
Entity
<
ProductAttribute
>(
b
=>
...
...
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.EntityFrameworkCore/EasyAbp/EShop/Products/ProductDetails/ProductDetailRepository.cs
0 → 100644
View file @
f56695c2
using
System
;
using
EasyAbp.EShop.Products.EntityFrameworkCore
;
using
Volo.Abp.Domain.Repositories.EntityFrameworkCore
;
using
Volo.Abp.EntityFrameworkCore
;
namespace
EasyAbp.EShop.Products.ProductDetails
{
public
class
ProductDetailRepository
:
EfCoreRepository
<
ProductsDbContext
,
ProductDetail
,
Guid
>,
IProductDetailRepository
{
public
ProductDetailRepository
(
IDbContextProvider
<
ProductsDbContext
>
dbContextProvider
)
:
base
(
dbContextProvider
)
{
}
}
}
\ No newline at end of file
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.EntityFrameworkCore/EasyAbp/EShop/Products/Products/ProductRepository.cs
View file @
f56695c2
...
...
@@ -16,7 +16,6 @@ namespace EasyAbp.EShop.Products.Products
public
override
IQueryable
<
Product
>
WithDetails
()
{
return
base
.
WithDetails
()
.
Include
(
x
=>
x
.
ProductDetail
)
.
Include
(
x
=>
x
.
ProductAttributes
).
ThenInclude
(
x
=>
x
.
ProductAttributeOptions
)
.
Include
(
x
=>
x
.
ProductSkus
);
}
...
...
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Web/Pages/EShop/Products/Products/Product/CreateModal.cshtml.cs
View file @
f56695c2
...
...
@@ -4,6 +4,8 @@ using System.Linq;
using
System.Threading.Tasks
;
using
EasyAbp.EShop.Products.Categories
;
using
EasyAbp.EShop.Products.Categories.Dtos
;
using
EasyAbp.EShop.Products.ProductDetails
;
using
EasyAbp.EShop.Products.ProductDetails.Dtos
;
using
EasyAbp.EShop.Products.Products
;
using
EasyAbp.EShop.Products.Products.Dtos
;
using
EasyAbp.EShop.Products.ProductTypes
;
...
...
@@ -16,6 +18,9 @@ namespace EasyAbp.EShop.Products.Web.Pages.EShop.Products.Products.Product
{
public
class
CreateModalModel
:
ProductsPageModel
{
[
BindProperty
(
SupportsGet
=
true
)]
public
Guid
StoreId
{
get
;
set
;
}
[
BindProperty
]
public
CreateEditProductViewModel
Product
{
get
;
set
;
}
...
...
@@ -25,19 +30,22 @@ namespace EasyAbp.EShop.Products.Web.Pages.EShop.Products.Products.Product
private
readonly
IProductTypeAppService
_productTypeAppService
;
private
readonly
ICategoryAppService
_categoryAppService
;
private
readonly
IProductDetailAppService
_productDetailAppService
;
private
readonly
IProductAppService
_service
;
public
CreateModalModel
(
IProductTypeAppService
productTypeAppService
,
ICategoryAppService
categoryAppService
,
IProductDetailAppService
productDetailAppService
,
IProductAppService
service
)
{
_productTypeAppService
=
productTypeAppService
;
_categoryAppService
=
categoryAppService
;
_productDetailAppService
=
productDetailAppService
;
_service
=
service
;
}
public
virtual
async
Task
OnGetAsync
(
Guid
storeId
,
Guid
?
categoryId
)
public
virtual
async
Task
OnGetAsync
(
Guid
?
categoryId
)
{
ProductTypes
=
(
await
_productTypeAppService
.
GetListAsync
(
new
PagedAndSortedResultRequestDto
...
...
@@ -51,7 +59,11 @@ namespace EasyAbp.EShop.Products.Web.Pages.EShop.Products.Products.Product
Product
=
new
CreateEditProductViewModel
{
StoreId
=
storeId
StoreId
=
StoreId
,
ProductDetail
=
new
CreateEditProductDetailViewModel
{
StoreId
=
StoreId
}
};
if
(
categoryId
.
HasValue
)
...
...
@@ -62,7 +74,16 @@ namespace EasyAbp.EShop.Products.Web.Pages.EShop.Products.Products.Product
public
virtual
async
Task
<
IActionResult
>
OnPostAsync
()
{
await
_service
.
CreateAsync
(
ObjectMapper
.
Map
<
CreateEditProductViewModel
,
CreateUpdateProductDto
>(
Product
));
var
detail
=
await
_productDetailAppService
.
CreateAsync
(
ObjectMapper
.
Map
<
CreateEditProductDetailViewModel
,
CreateUpdateProductDetailDto
>(
Product
.
ProductDetail
));
var
createDto
=
ObjectMapper
.
Map
<
CreateEditProductViewModel
,
CreateUpdateProductDto
>(
Product
);
createDto
.
ProductDetailId
=
detail
.
Id
;
var
product
=
await
_service
.
CreateAsync
(
createDto
);
return
NoContent
();
}
}
...
...
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Web/Pages/EShop/Products/Products/Product/EditModal.cshtml.cs
View file @
f56695c2
...
...
@@ -3,6 +3,8 @@ using System.Collections.Generic;
using
System.Linq
;
using
System.Threading.Tasks
;
using
EasyAbp.EShop.Products.Categories
;
using
EasyAbp.EShop.Products.ProductDetails
;
using
EasyAbp.EShop.Products.ProductDetails.Dtos
;
using
Microsoft.AspNetCore.Mvc
;
using
EasyAbp.EShop.Products.Products
;
using
EasyAbp.EShop.Products.Products.Dtos
;
...
...
@@ -28,15 +30,18 @@ namespace EasyAbp.EShop.Products.Web.Pages.EShop.Products.Products.Product
private
readonly
IProductTypeAppService
_productTypeAppService
;
private
readonly
ICategoryAppService
_categoryAppService
;
private
readonly
IProductDetailAppService
_productDetailAppService
;
private
readonly
IProductAppService
_service
;
public
EditModalModel
(
IProductTypeAppService
productTypeAppService
,
ICategoryAppService
categoryAppService
,
IProductDetailAppService
productDetailAppService
,
IProductAppService
service
)
{
_productTypeAppService
=
productTypeAppService
;
_categoryAppService
=
categoryAppService
;
_productDetailAppService
=
productDetailAppService
;
_service
=
service
;
}
...
...
@@ -53,16 +58,35 @@ namespace EasyAbp.EShop.Products.Web.Pages.EShop.Products.Products.Product
.
Select
(
dto
=>
new
SelectListItem
(
dto
.
DisplayName
,
dto
.
Id
.
ToString
())).
ToList
();
var
productDto
=
await
_service
.
GetAsync
(
Id
);
var
detailDto
=
await
_productDetailAppService
.
GetAsync
(
productDto
.
ProductDetailId
);
Product
=
ObjectMapper
.
Map
<
ProductDto
,
CreateEditProductViewModel
>(
productDto
);
Product
.
ProductDetail
=
new
CreateEditProductDetailViewModel
{
StoreId
=
storeId
,
Description
=
detailDto
.
Description
};
Product
.
StoreId
=
storeId
;
}
public
virtual
async
Task
<
IActionResult
>
OnPostAsync
()
{
await
_service
.
UpdateAsync
(
Id
,
ObjectMapper
.
Map
<
CreateEditProductViewModel
,
CreateUpdateProductDto
>(
Product
));
var
product
=
await
_service
.
GetAsync
(
Id
);
var
detail
=
await
_productDetailAppService
.
GetAsync
(
product
.
ProductDetailId
);
await
_productDetailAppService
.
UpdateAsync
(
detail
.
Id
,
ObjectMapper
.
Map
<
CreateEditProductDetailViewModel
,
CreateUpdateProductDetailDto
>(
Product
.
ProductDetail
));
var
updateProductDto
=
ObjectMapper
.
Map
<
CreateEditProductViewModel
,
CreateUpdateProductDto
>(
Product
);
updateProductDto
.
ProductDetailId
=
detail
.
Id
;
await
_service
.
UpdateAsync
(
Id
,
updateProductDto
);
return
NoContent
();
}
}
...
...
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Web/Pages/EShop/Products/Products/Product/ViewModels/Create
Update
ProductAttributeOptionViewModel.cs
→
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Web/Pages/EShop/Products/Products/Product/ViewModels/Create
Edit
ProductAttributeOptionViewModel.cs
View file @
f56695c2
...
...
@@ -2,7 +2,7 @@
namespace
EasyAbp.EShop.Products.Web.Pages.EShop.Products.Products.Product.ViewModels
{
public
class
Create
Update
ProductAttributeOptionViewModel
public
class
Create
Edit
ProductAttributeOptionViewModel
{
[
Required
]
[
Display
(
Name
=
"ProductAttributeOptionDisplayName"
)]
...
...
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Web/Pages/EShop/Products/Products/Product/ViewModels/Create
Update
ProductAttributeViewModel.cs
→
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Web/Pages/EShop/Products/Products/Product/ViewModels/Create
Edit
ProductAttributeViewModel.cs
View file @
f56695c2
...
...
@@ -3,7 +3,7 @@ using System.ComponentModel.DataAnnotations;
namespace
EasyAbp.EShop.Products.Web.Pages.EShop.Products.Products.Product.ViewModels
{
public
class
Create
Update
ProductAttributeViewModel
public
class
Create
Edit
ProductAttributeViewModel
{
[
Required
]
[
Display
(
Name
=
"ProductAttributeDisplayName"
)]
...
...
@@ -15,6 +15,6 @@ namespace EasyAbp.EShop.Products.Web.Pages.EShop.Products.Products.Product.ViewM
[
Display
(
Name
=
"ProductAttributeDisplayOrder"
)]
public
int
DisplayOrder
{
get
;
set
;
}
=
0
;
public
List
<
Create
Update
ProductAttributeOptionViewModel
>
ProductAttributeOptions
{
get
;
set
;
}
public
List
<
Create
Edit
ProductAttributeOptionViewModel
>
ProductAttributeOptions
{
get
;
set
;
}
}
}
\ No newline at end of file
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Web/Pages/EShop/Products/Products/Product/ViewModels/Create
Update
ProductDetailViewModel.cs
→
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Web/Pages/EShop/Products/Products/Product/ViewModels/Create
Edit
ProductDetailViewModel.cs
View file @
f56695c2
...
...
@@ -4,12 +4,17 @@ using System.ComponentModel;
using
System.ComponentModel.DataAnnotations
;
using
EasyAbp.EShop.Products.Products
;
using
EasyAbp.EShop.Products.Products.Dtos
;
using
Microsoft.AspNetCore.Mvc
;
using
Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form
;
namespace
EasyAbp.EShop.Products.Web.Pages.EShop.Products.Products.Product.ViewModels
{
public
class
Create
Update
ProductDetailViewModel
public
class
Create
Edit
ProductDetailViewModel
{
[
HiddenInput
]
[
Display
(
Name
=
"ProductStore"
)]
public
Guid
StoreId
{
get
;
set
;
}
[
TextArea
(
Rows
=
4
)]
[
Display
(
Name
=
"ProductDetailDescription"
)]
public
string
Description
{
get
;
set
;
}
...
...
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Web/Pages/EShop/Products/Products/Product/ViewModels/CreateEditProductViewModel.cs
View file @
f56695c2
...
...
@@ -28,7 +28,7 @@ namespace EasyAbp.EShop.Products.Web.Pages.EShop.Products.Products.Product.ViewM
[
Display
(
Name
=
"ProductDisplayName"
)]
public
string
DisplayName
{
get
;
set
;
}
public
Create
Update
ProductDetailViewModel
ProductDetail
{
get
;
set
;
}
public
Create
Edit
ProductDetailViewModel
ProductDetail
{
get
;
set
;
}
[
Required
]
[
Placeholder
(
"ProductAttributeNamesPlaceholder"
)]
...
...
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Web/Pages/EShop/Products/Products/Product/index.js
View file @
f56695c2
...
...
@@ -34,7 +34,7 @@ $(function () {
return
l
(
'
ProductDeletionConfirmationMessage
'
,
data
.
record
.
id
);
},
action
:
function
(
data
)
{
service
.
delete
(
{
id
:
data
.
record
.
id
,
storeId
:
storeId
}
)
service
.
delete
(
data
.
record
.
id
,
storeId
)
.
then
(
function
()
{
abp
.
notify
.
info
(
l
(
'
SuccessfullyDeleted
'
));
dataTable
.
ajax
.
reload
();
...
...
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Web/ProductsWebAutoMapperProfile.cs
View file @
f56695c2
...
...
@@ -5,6 +5,7 @@ using EasyAbp.EShop.Products.Products.Dtos;
using
EasyAbp.EShop.Products.Categories.Dtos
;
using
EasyAbp.EShop.Products.ProductTypes.Dtos
;
using
AutoMapper
;
using
EasyAbp.EShop.Products.ProductDetails.Dtos
;
using
EasyAbp.EShop.Products.Web.Pages.EShop.Products.Products.Product.ViewModels
;
using
Volo.Abp.AutoMapper
;
...
...
@@ -18,7 +19,9 @@ namespace EasyAbp.EShop.Products.Web
* Alternatively, you can split your mapping configurations
* into multiple profile classes for a better organization. */
CreateMap
<
ProductDto
,
CreateEditProductViewModel
>()
.
Ignore
(
dto
=>
dto
.
ProductDetail
)
.
Ignore
(
dto
=>
dto
.
StoreId
)
.
ForSourceMember
(
dto
=>
dto
.
ProductDetailId
,
opt
=>
opt
.
DoNotValidate
())
// .Ignore(x => x.ProductAttributes);
.
ForMember
(
dest
=>
dest
.
ProductAttributeNames
,
opt
=>
opt
.
MapFrom
(
source
=>
...
...
@@ -29,6 +32,8 @@ namespace EasyAbp.EShop.Products.Web
.
Select
(
a
=>
a
.
ProductAttributeOptions
.
Select
(
o
=>
o
.
DisplayName
).
JoinAsString
(
","
))
.
JoinAsString
(
Environment
.
NewLine
)));
CreateMap
<
CreateEditProductViewModel
,
CreateUpdateProductDto
>()
.
Ignore
(
dto
=>
dto
.
ProductDetailId
)
.
ForSourceMember
(
model
=>
model
.
ProductDetail
,
opt
=>
opt
.
DoNotValidate
())
.
ForMember
(
dest
=>
dest
.
ProductAttributes
,
opt
=>
opt
.
MapFrom
(
x
=>
x
.
ProductAttributeNames
.
Split
(
","
,
StringSplitOptions
.
RemoveEmptyEntries
).
Select
((
s
,
i
)
=>
...
...
@@ -40,12 +45,13 @@ namespace EasyAbp.EShop.Products.Web
.
Split
(
","
,
StringSplitOptions
.
RemoveEmptyEntries
).
Select
(
o
=>
new
CreateUpdateProductAttributeOptionDto
{
DisplayName
=
o
}))
})));
CreateMap
<
ProductDetailDto
,
CreateUpdateProductDetailViewModel
>();
CreateMap
<
CreateUpdateProductDetailViewModel
,
CreateUpdateProductDetailDto
>();
CreateMap
<
ProductAttributeDto
,
CreateUpdateProductAttributeViewModel
>();
CreateMap
<
CreateUpdateProductAttributeViewModel
,
CreateUpdateProductAttributeDto
>();
CreateMap
<
ProductAttributeOptionDto
,
CreateUpdateProductAttributeOptionViewModel
>();
CreateMap
<
CreateUpdateProductAttributeOptionViewModel
,
CreateUpdateProductAttributeOptionDto
>();
CreateMap
<
ProductDetailDto
,
CreateEditProductDetailViewModel
>()
.
Ignore
(
model
=>
model
.
StoreId
);
CreateMap
<
CreateEditProductDetailViewModel
,
CreateUpdateProductDetailDto
>();
CreateMap
<
ProductAttributeDto
,
CreateEditProductAttributeViewModel
>();
CreateMap
<
CreateEditProductAttributeViewModel
,
CreateUpdateProductAttributeDto
>();
CreateMap
<
ProductAttributeOptionDto
,
CreateEditProductAttributeOptionViewModel
>();
CreateMap
<
CreateEditProductAttributeOptionViewModel
,
CreateUpdateProductAttributeOptionDto
>();
CreateMap
<
CategoryDto
,
CreateUpdateCategoryDto
>();
CreateMap
<
ProductTypeDto
,
CreateUpdateProductTypeDto
>();
}
...
...
samples/EasyMall/aspnet-core/src/EasyMall.EntityFrameworkCore.DbMigrations/Migrations/20200428164406_ProductEntitiesAdjustment.Designer.cs
0 → 100644
View file @
f56695c2
// <auto-generated />
using
System
;
using
EasyMall.EntityFrameworkCore
;
using
Microsoft.EntityFrameworkCore
;
using
Microsoft.EntityFrameworkCore.Infrastructure
;
using
Microsoft.EntityFrameworkCore.Metadata
;
using
Microsoft.EntityFrameworkCore.Migrations
;
using
Microsoft.EntityFrameworkCore.Storage.ValueConversion
;
namespace
EasyMall.Migrations
{
[
DbContext
(
typeof
(
EasyMallMigrationsDbContext
))]
[
Migration
(
"20200428164406_ProductEntitiesAdjustment"
)]
partial
class
ProductEntitiesAdjustment
{
protected
override
void
BuildTargetModel
(
ModelBuilder
modelBuilder
)
{
#pragma warning disable 612, 618
modelBuilder
.
HasAnnotation
(
"ProductVersion"
,
"3.1.2"
)
.
HasAnnotation
(
"Relational:MaxIdentifierLength"
,
128
)
.
HasAnnotation
(
"SqlServer:ValueGenerationStrategy"
,
SqlServerValueGenerationStrategy
.
IdentityColumn
);
modelBuilder
.
Entity
(
"EasyAbp.EShop.Products.Categories.Category"
,
b
=>
{
b
.
Property
<
Guid
>(
"Id"
)
.
ValueGeneratedOnAdd
()
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
string
>(
"ConcurrencyStamp"
)
.
IsConcurrencyToken
()
.
HasColumnName
(
"ConcurrencyStamp"
)
.
HasColumnType
(
"nvarchar(max)"
);
b
.
Property
<
DateTime
>(
"CreationTime"
)
.
HasColumnName
(
"CreationTime"
)
.
HasColumnType
(
"datetime2"
);
b
.
Property
<
Guid
?>(
"CreatorId"
)
.
HasColumnName
(
"CreatorId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
Guid
?>(
"DeleterId"
)
.
HasColumnName
(
"DeleterId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
DateTime
?>(
"DeletionTime"
)
.
HasColumnName
(
"DeletionTime"
)
.
HasColumnType
(
"datetime2"
);
b
.
Property
<
string
>(
"Description"
)
.
HasColumnType
(
"nvarchar(max)"
);
b
.
Property
<
string
>(
"DisplayName"
)
.
HasColumnType
(
"nvarchar(max)"
);
b
.
Property
<
string
>(
"ExtraProperties"
)
.
HasColumnName
(
"ExtraProperties"
)
.
HasColumnType
(
"nvarchar(max)"
);
b
.
Property
<
bool
>(
"IsDeleted"
)
.
ValueGeneratedOnAdd
()
.
HasColumnName
(
"IsDeleted"
)
.
HasColumnType
(
"bit"
)
.
HasDefaultValue
(
false
);
b
.
Property
<
DateTime
?>(
"LastModificationTime"
)
.
HasColumnName
(
"LastModificationTime"
)
.
HasColumnType
(
"datetime2"
);
b
.
Property
<
Guid
?>(
"LastModifierId"
)
.
HasColumnName
(
"LastModifierId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
string
>(
"MediaResources"
)
.
HasColumnType
(
"nvarchar(max)"
);
b
.
Property
<
Guid
?>(
"ParentCategoryId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
Guid
?>(
"TenantId"
)
.
HasColumnName
(
"TenantId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
HasKey
(
"Id"
);
b
.
ToTable
(
"ProductsCategories"
);
});
modelBuilder
.
Entity
(
"EasyAbp.EShop.Products.ProductCategories.ProductCategory"
,
b
=>
{
b
.
Property
<
Guid
>(
"Id"
)
.
ValueGeneratedOnAdd
()
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
Guid
>(
"CategoryId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
string
>(
"ConcurrencyStamp"
)
.
IsConcurrencyToken
()
.
HasColumnName
(
"ConcurrencyStamp"
)
.
HasColumnType
(
"nvarchar(max)"
);
b
.
Property
<
DateTime
>(
"CreationTime"
)
.
HasColumnName
(
"CreationTime"
)
.
HasColumnType
(
"datetime2"
);
b
.
Property
<
Guid
?>(
"CreatorId"
)
.
HasColumnName
(
"CreatorId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
int
>(
"DisplayOrder"
)
.
HasColumnType
(
"int"
);
b
.
Property
<
string
>(
"ExtraProperties"
)
.
HasColumnName
(
"ExtraProperties"
)
.
HasColumnType
(
"nvarchar(max)"
);
b
.
Property
<
DateTime
?>(
"LastModificationTime"
)
.
HasColumnName
(
"LastModificationTime"
)
.
HasColumnType
(
"datetime2"
);
b
.
Property
<
Guid
?>(
"LastModifierId"
)
.
HasColumnName
(
"LastModifierId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
Guid
>(
"ProductId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
Guid
?>(
"TenantId"
)
.
HasColumnName
(
"TenantId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
HasKey
(
"Id"
);
b
.
ToTable
(
"ProductsProductCategories"
);
});
modelBuilder
.
Entity
(
"EasyAbp.EShop.Products.ProductDetails.ProductDetail"
,
b
=>
{
b
.
Property
<
Guid
>(
"Id"
)
.
ValueGeneratedOnAdd
()
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
string
>(
"ConcurrencyStamp"
)
.
IsConcurrencyToken
()
.
HasColumnName
(
"ConcurrencyStamp"
)
.
HasColumnType
(
"nvarchar(max)"
);
b
.
Property
<
DateTime
>(
"CreationTime"
)
.
HasColumnName
(
"CreationTime"
)
.
HasColumnType
(
"datetime2"
);
b
.
Property
<
Guid
?>(
"CreatorId"
)
.
HasColumnName
(
"CreatorId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
Guid
?>(
"DeleterId"
)
.
HasColumnName
(
"DeleterId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
DateTime
?>(
"DeletionTime"
)
.
HasColumnName
(
"DeletionTime"
)
.
HasColumnType
(
"datetime2"
);
b
.
Property
<
string
>(
"Description"
)
.
HasColumnType
(
"nvarchar(max)"
);
b
.
Property
<
string
>(
"ExtraProperties"
)
.
HasColumnName
(
"ExtraProperties"
)
.
HasColumnType
(
"nvarchar(max)"
);
b
.
Property
<
bool
>(
"IsDeleted"
)
.
ValueGeneratedOnAdd
()
.
HasColumnName
(
"IsDeleted"
)
.
HasColumnType
(
"bit"
)
.
HasDefaultValue
(
false
);
b
.
Property
<
DateTime
?>(
"LastModificationTime"
)
.
HasColumnName
(
"LastModificationTime"
)
.
HasColumnType
(
"datetime2"
);
b
.
Property
<
Guid
?>(
"LastModifierId"
)
.
HasColumnName
(
"LastModifierId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
HasKey
(
"Id"
);
b
.
ToTable
(
"ProductsProductDetails"
);
});
modelBuilder
.
Entity
(
"EasyAbp.EShop.Products.ProductStores.ProductStore"
,
b
=>
{
b
.
Property
<
Guid
>(
"Id"
)
.
ValueGeneratedOnAdd
()
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
string
>(
"ConcurrencyStamp"
)
.
IsConcurrencyToken
()
.
HasColumnName
(
"ConcurrencyStamp"
)
.
HasColumnType
(
"nvarchar(max)"
);
b
.
Property
<
DateTime
>(
"CreationTime"
)
.
HasColumnName
(
"CreationTime"
)
.
HasColumnType
(
"datetime2"
);
b
.
Property
<
Guid
?>(
"CreatorId"
)
.
HasColumnName
(
"CreatorId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
Guid
?>(
"DeleterId"
)
.
HasColumnName
(
"DeleterId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
DateTime
?>(
"DeletionTime"
)
.
HasColumnName
(
"DeletionTime"
)
.
HasColumnType
(
"datetime2"
);
b
.
Property
<
string
>(
"ExtraProperties"
)
.
HasColumnName
(
"ExtraProperties"
)
.
HasColumnType
(
"nvarchar(max)"
);
b
.
Property
<
bool
>(
"IsDeleted"
)
.
ValueGeneratedOnAdd
()
.
HasColumnName
(
"IsDeleted"
)
.
HasColumnType
(
"bit"
)
.
HasDefaultValue
(
false
);
b
.
Property
<
bool
>(
"IsOwner"
)
.
HasColumnType
(
"bit"
);
b
.
Property
<
DateTime
?>(
"LastModificationTime"
)
.
HasColumnName
(
"LastModificationTime"
)
.
HasColumnType
(
"datetime2"
);
b
.
Property
<
Guid
?>(
"LastModifierId"
)
.
HasColumnName
(
"LastModifierId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
Guid
>(
"ProductId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
Guid
>(
"StoreId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
Guid
?>(
"TenantId"
)
.
HasColumnName
(
"TenantId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
HasKey
(
"Id"
);
b
.
ToTable
(
"ProductsProductStores"
);
});
modelBuilder
.
Entity
(
"EasyAbp.EShop.Products.ProductTypes.ProductType"
,
b
=>
{
b
.
Property
<
Guid
>(
"Id"
)
.
ValueGeneratedOnAdd
()
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
string
>(
"ConcurrencyStamp"
)
.
IsConcurrencyToken
()
.
HasColumnName
(
"ConcurrencyStamp"
)
.
HasColumnType
(
"nvarchar(max)"
);
b
.
Property
<
DateTime
>(
"CreationTime"
)
.
HasColumnName
(
"CreationTime"
)
.
HasColumnType
(
"datetime2"
);
b
.
Property
<
Guid
?>(
"CreatorId"
)
.
HasColumnName
(
"CreatorId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
Guid
?>(
"DeleterId"
)
.
HasColumnName
(
"DeleterId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
DateTime
?>(
"DeletionTime"
)
.
HasColumnName
(
"DeletionTime"
)
.
HasColumnType
(
"datetime2"
);
b
.
Property
<
string
>(
"Description"
)
.
HasColumnType
(
"nvarchar(max)"
);
b
.
Property
<
string
>(
"DisplayName"
)
.
HasColumnType
(
"nvarchar(max)"
);
b
.
Property
<
string
>(
"ExtraProperties"
)
.
HasColumnName
(
"ExtraProperties"
)
.
HasColumnType
(
"nvarchar(max)"
);
b
.
Property
<
bool
>(
"IsDeleted"
)
.
ValueGeneratedOnAdd
()
.
HasColumnName
(
"IsDeleted"
)
.
HasColumnType
(
"bit"
)
.
HasDefaultValue
(
false
);
b
.
Property
<
DateTime
?>(
"LastModificationTime"
)
.
HasColumnName
(
"LastModificationTime"
)
.
HasColumnType
(
"datetime2"
);
b
.
Property
<
Guid
?>(
"LastModifierId"
)
.
HasColumnName
(
"LastModifierId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
int
>(
"MultiTenancySide"
)
.
HasColumnType
(
"int"
);
b
.
Property
<
string
>(
"Name"
)
.
HasColumnType
(
"nvarchar(max)"
);
b
.
HasKey
(
"Id"
);
b
.
ToTable
(
"ProductsProductTypes"
);
});
modelBuilder
.
Entity
(
"EasyAbp.EShop.Products.Products.Product"
,
b
=>
{
b
.
Property
<
Guid
>(
"Id"
)
.
ValueGeneratedOnAdd
()
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
string
>(
"ConcurrencyStamp"
)
.
IsConcurrencyToken
()
.
HasColumnName
(
"ConcurrencyStamp"
)
.
HasColumnType
(
"nvarchar(max)"
);
b
.
Property
<
DateTime
>(
"CreationTime"
)
.
HasColumnName
(
"CreationTime"
)
.
HasColumnType
(
"datetime2"
);
b
.
Property
<
Guid
?>(
"CreatorId"
)
.
HasColumnName
(
"CreatorId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
Guid
?>(
"DeleterId"
)
.
HasColumnName
(
"DeleterId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
DateTime
?>(
"DeletionTime"
)
.
HasColumnName
(
"DeletionTime"
)
.
HasColumnType
(
"datetime2"
);
b
.
Property
<
string
>(
"DisplayName"
)
.
HasColumnType
(
"nvarchar(max)"
);
b
.
Property
<
int
>(
"DisplayOrder"
)
.
HasColumnType
(
"int"
);
b
.
Property
<
string
>(
"ExtraProperties"
)
.
HasColumnName
(
"ExtraProperties"
)
.
HasColumnType
(
"nvarchar(max)"
);
b
.
Property
<
int
>(
"InventoryStrategy"
)
.
HasColumnType
(
"int"
);
b
.
Property
<
bool
>(
"IsDeleted"
)
.
ValueGeneratedOnAdd
()
.
HasColumnName
(
"IsDeleted"
)
.
HasColumnType
(
"bit"
)
.
HasDefaultValue
(
false
);
b
.
Property
<
bool
>(
"IsPublished"
)
.
HasColumnType
(
"bit"
);
b
.
Property
<
DateTime
?>(
"LastModificationTime"
)
.
HasColumnName
(
"LastModificationTime"
)
.
HasColumnType
(
"datetime2"
);
b
.
Property
<
Guid
?>(
"LastModifierId"
)
.
HasColumnName
(
"LastModifierId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
string
>(
"MediaResources"
)
.
HasColumnType
(
"nvarchar(max)"
);
b
.
Property
<
Guid
>(
"ProductDetailId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
Guid
>(
"ProductTypeId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
HasKey
(
"Id"
);
b
.
ToTable
(
"ProductsProducts"
);
});
modelBuilder
.
Entity
(
"EasyAbp.EShop.Products.Products.ProductAttribute"
,
b
=>
{
b
.
Property
<
Guid
>(
"Id"
)
.
ValueGeneratedOnAdd
()
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
DateTime
>(
"CreationTime"
)
.
HasColumnName
(
"CreationTime"
)
.
HasColumnType
(
"datetime2"
);
b
.
Property
<
Guid
?>(
"CreatorId"
)
.
HasColumnName
(
"CreatorId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
Guid
?>(
"DeleterId"
)
.
HasColumnName
(
"DeleterId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
DateTime
?>(
"DeletionTime"
)
.
HasColumnName
(
"DeletionTime"
)
.
HasColumnType
(
"datetime2"
);
b
.
Property
<
string
>(
"Description"
)
.
HasColumnType
(
"nvarchar(max)"
);
b
.
Property
<
string
>(
"DisplayName"
)
.
HasColumnType
(
"nvarchar(max)"
);
b
.
Property
<
int
>(
"DisplayOrder"
)
.
HasColumnType
(
"int"
);
b
.
Property
<
bool
>(
"IsDeleted"
)
.
ValueGeneratedOnAdd
()
.
HasColumnName
(
"IsDeleted"
)
.
HasColumnType
(
"bit"
)
.
HasDefaultValue
(
false
);
b
.
Property
<
DateTime
?>(
"LastModificationTime"
)
.
HasColumnName
(
"LastModificationTime"
)
.
HasColumnType
(
"datetime2"
);
b
.
Property
<
Guid
?>(
"LastModifierId"
)
.
HasColumnName
(
"LastModifierId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
Guid
?>(
"ProductId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
HasKey
(
"Id"
);
b
.
HasIndex
(
"ProductId"
);
b
.
ToTable
(
"ProductsProductAttributes"
);
});
modelBuilder
.
Entity
(
"EasyAbp.EShop.Products.Products.ProductAttributeOption"
,
b
=>
{
b
.
Property
<
Guid
>(
"Id"
)
.
ValueGeneratedOnAdd
()
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
DateTime
>(
"CreationTime"
)
.
HasColumnName
(
"CreationTime"
)
.
HasColumnType
(
"datetime2"
);
b
.
Property
<
Guid
?>(
"CreatorId"
)
.
HasColumnName
(
"CreatorId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
Guid
?>(
"DeleterId"
)
.
HasColumnName
(
"DeleterId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
DateTime
?>(
"DeletionTime"
)
.
HasColumnName
(
"DeletionTime"
)
.
HasColumnType
(
"datetime2"
);
b
.
Property
<
string
>(
"Description"
)
.
HasColumnType
(
"nvarchar(max)"
);
b
.
Property
<
string
>(
"DisplayName"
)
.
HasColumnType
(
"nvarchar(max)"
);
b
.
Property
<
int
>(
"DisplayOrder"
)
.
HasColumnType
(
"int"
);
b
.
Property
<
bool
>(
"IsDeleted"
)
.
ValueGeneratedOnAdd
()
.
HasColumnName
(
"IsDeleted"
)
.
HasColumnType
(
"bit"
)
.
HasDefaultValue
(
false
);
b
.
Property
<
DateTime
?>(
"LastModificationTime"
)
.
HasColumnName
(
"LastModificationTime"
)
.
HasColumnType
(
"datetime2"
);
b
.
Property
<
Guid
?>(
"LastModifierId"
)
.
HasColumnName
(
"LastModifierId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
Guid
?>(
"ProductAttributeId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
HasKey
(
"Id"
);
b
.
HasIndex
(
"ProductAttributeId"
);
b
.
ToTable
(
"ProductsProductAttributeOptions"
);
});
modelBuilder
.
Entity
(
"EasyAbp.EShop.Products.Products.ProductSku"
,
b
=>
{
b
.
Property
<
Guid
>(
"Id"
)
.
ValueGeneratedOnAdd
()
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
DateTime
>(
"CreationTime"
)
.
HasColumnName
(
"CreationTime"
)
.
HasColumnType
(
"datetime2"
);
b
.
Property
<
Guid
?>(
"CreatorId"
)
.
HasColumnName
(
"CreatorId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
string
>(
"Currency"
)
.
HasColumnType
(
"nvarchar(max)"
);
b
.
Property
<
Guid
?>(
"DeleterId"
)
.
HasColumnName
(
"DeleterId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
DateTime
?>(
"DeletionTime"
)
.
HasColumnName
(
"DeletionTime"
)
.
HasColumnType
(
"datetime2"
);
b
.
Property
<
int
>(
"Inventory"
)
.
HasColumnType
(
"int"
);
b
.
Property
<
bool
>(
"IsDeleted"
)
.
ValueGeneratedOnAdd
()
.
HasColumnName
(
"IsDeleted"
)
.
HasColumnType
(
"bit"
)
.
HasDefaultValue
(
false
);
b
.
Property
<
DateTime
?>(
"LastModificationTime"
)
.
HasColumnName
(
"LastModificationTime"
)
.
HasColumnType
(
"datetime2"
);
b
.
Property
<
Guid
?>(
"LastModifierId"
)
.
HasColumnName
(
"LastModifierId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
int
>(
"OrderMinQuantity"
)
.
HasColumnType
(
"int"
);
b
.
Property
<
decimal
>(
"OriginalPrice"
)
.
HasColumnType
(
"decimal(18,6)"
);
b
.
Property
<
decimal
>(
"Price"
)
.
HasColumnType
(
"decimal(18,6)"
);
b
.
Property
<
Guid
?>(
"ProductDetailId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
Guid
?>(
"ProductId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
string
>(
"SerializedAttributeOptionIds"
)
.
HasColumnType
(
"nvarchar(max)"
);
b
.
Property
<
int
>(
"Sold"
)
.
HasColumnType
(
"int"
);
b
.
HasKey
(
"Id"
);
b
.
HasIndex
(
"ProductId"
);
b
.
ToTable
(
"ProductsProductSkus"
);
});
modelBuilder
.
Entity
(
"EasyAbp.EShop.Stores.Stores.Store"
,
b
=>
{
b
.
Property
<
Guid
>(
"Id"
)
.
ValueGeneratedOnAdd
()
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
string
>(
"ConcurrencyStamp"
)
.
IsConcurrencyToken
()
.
HasColumnName
(
"ConcurrencyStamp"
)
.
HasColumnType
(
"nvarchar(max)"
);
b
.
Property
<
DateTime
>(
"CreationTime"
)
.
HasColumnName
(
"CreationTime"
)
.
HasColumnType
(
"datetime2"
);
b
.
Property
<
Guid
?>(
"CreatorId"
)
.
HasColumnName
(
"CreatorId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
Guid
?>(
"DeleterId"
)
.
HasColumnName
(
"DeleterId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
DateTime
?>(
"DeletionTime"
)
.
HasColumnName
(
"DeletionTime"
)
.
HasColumnType
(
"datetime2"
);
b
.
Property
<
string
>(
"ExtraProperties"
)
.
HasColumnName
(
"ExtraProperties"
)
.
HasColumnType
(
"nvarchar(max)"
);
b
.
Property
<
bool
>(
"IsDeleted"
)
.
ValueGeneratedOnAdd
()
.
HasColumnName
(
"IsDeleted"
)
.
HasColumnType
(
"bit"
)
.
HasDefaultValue
(
false
);
b
.
Property
<
DateTime
?>(
"LastModificationTime"
)
.
HasColumnName
(
"LastModificationTime"
)
.
HasColumnType
(
"datetime2"
);
b
.
Property
<
Guid
?>(
"LastModifierId"
)
.
HasColumnName
(
"LastModifierId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
string
>(
"Name"
)
.
HasColumnType
(
"nvarchar(max)"
);
b
.
Property
<
Guid
?>(
"TenantId"
)
.
HasColumnName
(
"TenantId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
HasKey
(
"Id"
);
b
.
ToTable
(
"StoresStores"
);
});
modelBuilder
.
Entity
(
"Volo.Abp.AuditLogging.AuditLog"
,
b
=>
{
b
.
Property
<
Guid
>(
"Id"
)
.
ValueGeneratedOnAdd
()
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
string
>(
"ApplicationName"
)
.
HasColumnName
(
"ApplicationName"
)
.
HasColumnType
(
"nvarchar(96)"
)
.
HasMaxLength
(
96
);
b
.
Property
<
string
>(
"BrowserInfo"
)
.
HasColumnName
(
"BrowserInfo"
)
.
HasColumnType
(
"nvarchar(512)"
)
.
HasMaxLength
(
512
);
b
.
Property
<
string
>(
"ClientId"
)
.
HasColumnName
(
"ClientId"
)
.
HasColumnType
(
"nvarchar(64)"
)
.
HasMaxLength
(
64
);
b
.
Property
<
string
>(
"ClientIpAddress"
)
.
HasColumnName
(
"ClientIpAddress"
)
.
HasColumnType
(
"nvarchar(64)"
)
.
HasMaxLength
(
64
);
b
.
Property
<
string
>(
"ClientName"
)
.
HasColumnName
(
"ClientName"
)
.
HasColumnType
(
"nvarchar(128)"
)
.
HasMaxLength
(
128
);
b
.
Property
<
string
>(
"Comments"
)
.
HasColumnName
(
"Comments"
)
.
HasColumnType
(
"nvarchar(256)"
)
.
HasMaxLength
(
256
);
b
.
Property
<
string
>(
"ConcurrencyStamp"
)
.
IsConcurrencyToken
()
.
HasColumnName
(
"ConcurrencyStamp"
)
.
HasColumnType
(
"nvarchar(max)"
);
b
.
Property
<
string
>(
"CorrelationId"
)
.
HasColumnName
(
"CorrelationId"
)
.
HasColumnType
(
"nvarchar(64)"
)
.
HasMaxLength
(
64
);
b
.
Property
<
string
>(
"Exceptions"
)
.
HasColumnName
(
"Exceptions"
)
.
HasColumnType
(
"nvarchar(4000)"
)
.
HasMaxLength
(
4000
);
b
.
Property
<
int
>(
"ExecutionDuration"
)
.
HasColumnName
(
"ExecutionDuration"
)
.
HasColumnType
(
"int"
);
b
.
Property
<
DateTime
>(
"ExecutionTime"
)
.
HasColumnType
(
"datetime2"
);
b
.
Property
<
string
>(
"ExtraProperties"
)
.
HasColumnName
(
"ExtraProperties"
)
.
HasColumnType
(
"nvarchar(max)"
);
b
.
Property
<
string
>(
"HttpMethod"
)
.
HasColumnName
(
"HttpMethod"
)
.
HasColumnType
(
"nvarchar(16)"
)
.
HasMaxLength
(
16
);
b
.
Property
<
int
?>(
"HttpStatusCode"
)
.
HasColumnName
(
"HttpStatusCode"
)
.
HasColumnType
(
"int"
);
b
.
Property
<
Guid
?>(
"ImpersonatorTenantId"
)
.
HasColumnName
(
"ImpersonatorTenantId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
Guid
?>(
"ImpersonatorUserId"
)
.
HasColumnName
(
"ImpersonatorUserId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
Guid
?>(
"TenantId"
)
.
HasColumnName
(
"TenantId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
string
>(
"TenantName"
)
.
HasColumnType
(
"nvarchar(max)"
);
b
.
Property
<
string
>(
"Url"
)
.
HasColumnName
(
"Url"
)
.
HasColumnType
(
"nvarchar(256)"
)
.
HasMaxLength
(
256
);
b
.
Property
<
Guid
?>(
"UserId"
)
.
HasColumnName
(
"UserId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
string
>(
"UserName"
)
.
HasColumnName
(
"UserName"
)
.
HasColumnType
(
"nvarchar(256)"
)
.
HasMaxLength
(
256
);
b
.
HasKey
(
"Id"
);
b
.
HasIndex
(
"TenantId"
,
"ExecutionTime"
);
b
.
HasIndex
(
"TenantId"
,
"UserId"
,
"ExecutionTime"
);
b
.
ToTable
(
"AbpAuditLogs"
);
});
modelBuilder
.
Entity
(
"Volo.Abp.AuditLogging.AuditLogAction"
,
b
=>
{
b
.
Property
<
Guid
>(
"Id"
)
.
ValueGeneratedOnAdd
()
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
Guid
>(
"AuditLogId"
)
.
HasColumnName
(
"AuditLogId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
int
>(
"ExecutionDuration"
)
.
HasColumnName
(
"ExecutionDuration"
)
.
HasColumnType
(
"int"
);
b
.
Property
<
DateTime
>(
"ExecutionTime"
)
.
HasColumnName
(
"ExecutionTime"
)
.
HasColumnType
(
"datetime2"
);
b
.
Property
<
string
>(
"ExtraProperties"
)
.
HasColumnName
(
"ExtraProperties"
)
.
HasColumnType
(
"nvarchar(max)"
);
b
.
Property
<
string
>(
"MethodName"
)
.
HasColumnName
(
"MethodName"
)
.
HasColumnType
(
"nvarchar(128)"
)
.
HasMaxLength
(
128
);
b
.
Property
<
string
>(
"Parameters"
)
.
HasColumnName
(
"Parameters"
)
.
HasColumnType
(
"nvarchar(2000)"
)
.
HasMaxLength
(
2000
);
b
.
Property
<
string
>(
"ServiceName"
)
.
HasColumnName
(
"ServiceName"
)
.
HasColumnType
(
"nvarchar(256)"
)
.
HasMaxLength
(
256
);
b
.
Property
<
Guid
?>(
"TenantId"
)
.
HasColumnName
(
"TenantId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
HasKey
(
"Id"
);
b
.
HasIndex
(
"AuditLogId"
);
b
.
HasIndex
(
"TenantId"
,
"ServiceName"
,
"MethodName"
,
"ExecutionTime"
);
b
.
ToTable
(
"AbpAuditLogActions"
);
});
modelBuilder
.
Entity
(
"Volo.Abp.AuditLogging.EntityChange"
,
b
=>
{
b
.
Property
<
Guid
>(
"Id"
)
.
ValueGeneratedOnAdd
()
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
Guid
>(
"AuditLogId"
)
.
HasColumnName
(
"AuditLogId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
DateTime
>(
"ChangeTime"
)
.
HasColumnName
(
"ChangeTime"
)
.
HasColumnType
(
"datetime2"
);
b
.
Property
<
byte
>(
"ChangeType"
)
.
HasColumnName
(
"ChangeType"
)
.
HasColumnType
(
"tinyint"
);
b
.
Property
<
string
>(
"EntityId"
)
.
IsRequired
()
.
HasColumnName
(
"EntityId"
)
.
HasColumnType
(
"nvarchar(128)"
)
.
HasMaxLength
(
128
);
b
.
Property
<
Guid
?>(
"EntityTenantId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
string
>(
"EntityTypeFullName"
)
.
IsRequired
()
.
HasColumnName
(
"EntityTypeFullName"
)
.
HasColumnType
(
"nvarchar(128)"
)
.
HasMaxLength
(
128
);
b
.
Property
<
string
>(
"ExtraProperties"
)
.
HasColumnName
(
"ExtraProperties"
)
.
HasColumnType
(
"nvarchar(max)"
);
b
.
Property
<
Guid
?>(
"TenantId"
)
.
HasColumnName
(
"TenantId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
HasKey
(
"Id"
);
b
.
HasIndex
(
"AuditLogId"
);
b
.
HasIndex
(
"TenantId"
,
"EntityTypeFullName"
,
"EntityId"
);
b
.
ToTable
(
"AbpEntityChanges"
);
});
modelBuilder
.
Entity
(
"Volo.Abp.AuditLogging.EntityPropertyChange"
,
b
=>
{
b
.
Property
<
Guid
>(
"Id"
)
.
ValueGeneratedOnAdd
()
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
Guid
>(
"EntityChangeId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
string
>(
"NewValue"
)
.
HasColumnName
(
"NewValue"
)
.
HasColumnType
(
"nvarchar(512)"
)
.
HasMaxLength
(
512
);
b
.
Property
<
string
>(
"OriginalValue"
)
.
HasColumnName
(
"OriginalValue"
)
.
HasColumnType
(
"nvarchar(512)"
)
.
HasMaxLength
(
512
);
b
.
Property
<
string
>(
"PropertyName"
)
.
IsRequired
()
.
HasColumnName
(
"PropertyName"
)
.
HasColumnType
(
"nvarchar(128)"
)
.
HasMaxLength
(
128
);
b
.
Property
<
string
>(
"PropertyTypeFullName"
)
.
IsRequired
()
.
HasColumnName
(
"PropertyTypeFullName"
)
.
HasColumnType
(
"nvarchar(64)"
)
.
HasMaxLength
(
64
);
b
.
Property
<
Guid
?>(
"TenantId"
)
.
HasColumnName
(
"TenantId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
HasKey
(
"Id"
);
b
.
HasIndex
(
"EntityChangeId"
);
b
.
ToTable
(
"AbpEntityPropertyChanges"
);
});
modelBuilder
.
Entity
(
"Volo.Abp.BackgroundJobs.BackgroundJobRecord"
,
b
=>
{
b
.
Property
<
Guid
>(
"Id"
)
.
ValueGeneratedOnAdd
()
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
string
>(
"ConcurrencyStamp"
)
.
IsConcurrencyToken
()
.
HasColumnName
(
"ConcurrencyStamp"
)
.
HasColumnType
(
"nvarchar(max)"
);
b
.
Property
<
DateTime
>(
"CreationTime"
)
.
HasColumnName
(
"CreationTime"
)
.
HasColumnType
(
"datetime2"
);
b
.
Property
<
string
>(
"ExtraProperties"
)
.
HasColumnName
(
"ExtraProperties"
)
.
HasColumnType
(
"nvarchar(max)"
);
b
.
Property
<
bool
>(
"IsAbandoned"
)
.
ValueGeneratedOnAdd
()
.
HasColumnType
(
"bit"
)
.
HasDefaultValue
(
false
);
b
.
Property
<
string
>(
"JobArgs"
)
.
IsRequired
()
.
HasColumnType
(
"nvarchar(max)"
)
.
HasMaxLength
(
1048576
);
b
.
Property
<
string
>(
"JobName"
)
.
IsRequired
()
.
HasColumnType
(
"nvarchar(128)"
)
.
HasMaxLength
(
128
);
b
.
Property
<
DateTime
?>(
"LastTryTime"
)
.
HasColumnType
(
"datetime2"
);
b
.
Property
<
DateTime
>(
"NextTryTime"
)
.
HasColumnType
(
"datetime2"
);
b
.
Property
<
byte
>(
"Priority"
)
.
ValueGeneratedOnAdd
()
.
HasColumnType
(
"tinyint"
)
.
HasDefaultValue
((
byte
)
15
);
b
.
Property
<
short
>(
"TryCount"
)
.
ValueGeneratedOnAdd
()
.
HasColumnType
(
"smallint"
)
.
HasDefaultValue
((
short
)
0
);
b
.
HasKey
(
"Id"
);
b
.
HasIndex
(
"IsAbandoned"
,
"NextTryTime"
);
b
.
ToTable
(
"AbpBackgroundJobs"
);
});
modelBuilder
.
Entity
(
"Volo.Abp.FeatureManagement.FeatureValue"
,
b
=>
{
b
.
Property
<
Guid
>(
"Id"
)
.
ValueGeneratedOnAdd
()
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
string
>(
"Name"
)
.
IsRequired
()
.
HasColumnType
(
"nvarchar(128)"
)
.
HasMaxLength
(
128
);
b
.
Property
<
string
>(
"ProviderKey"
)
.
HasColumnType
(
"nvarchar(64)"
)
.
HasMaxLength
(
64
);
b
.
Property
<
string
>(
"ProviderName"
)
.
HasColumnType
(
"nvarchar(64)"
)
.
HasMaxLength
(
64
);
b
.
Property
<
string
>(
"Value"
)
.
IsRequired
()
.
HasColumnType
(
"nvarchar(128)"
)
.
HasMaxLength
(
128
);
b
.
HasKey
(
"Id"
);
b
.
HasIndex
(
"Name"
,
"ProviderName"
,
"ProviderKey"
);
b
.
ToTable
(
"AbpFeatureValues"
);
});
modelBuilder
.
Entity
(
"Volo.Abp.Identity.IdentityClaimType"
,
b
=>
{
b
.
Property
<
Guid
>(
"Id"
)
.
ValueGeneratedOnAdd
()
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
string
>(
"ConcurrencyStamp"
)
.
IsConcurrencyToken
()
.
IsRequired
()
.
HasColumnName
(
"ConcurrencyStamp"
)
.
HasColumnType
(
"nvarchar(256)"
)
.
HasMaxLength
(
256
);
b
.
Property
<
string
>(
"Description"
)
.
HasColumnType
(
"nvarchar(256)"
)
.
HasMaxLength
(
256
);
b
.
Property
<
string
>(
"ExtraProperties"
)
.
HasColumnName
(
"ExtraProperties"
)
.
HasColumnType
(
"nvarchar(max)"
);
b
.
Property
<
bool
>(
"IsStatic"
)
.
HasColumnType
(
"bit"
);
b
.
Property
<
string
>(
"Name"
)
.
IsRequired
()
.
HasColumnType
(
"nvarchar(256)"
)
.
HasMaxLength
(
256
);
b
.
Property
<
string
>(
"Regex"
)
.
HasColumnType
(
"nvarchar(512)"
)
.
HasMaxLength
(
512
);
b
.
Property
<
string
>(
"RegexDescription"
)
.
HasColumnType
(
"nvarchar(128)"
)
.
HasMaxLength
(
128
);
b
.
Property
<
bool
>(
"Required"
)
.
HasColumnType
(
"bit"
);
b
.
Property
<
int
>(
"ValueType"
)
.
HasColumnType
(
"int"
);
b
.
HasKey
(
"Id"
);
b
.
ToTable
(
"AbpClaimTypes"
);
});
modelBuilder
.
Entity
(
"Volo.Abp.Identity.IdentityRole"
,
b
=>
{
b
.
Property
<
Guid
>(
"Id"
)
.
ValueGeneratedOnAdd
()
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
string
>(
"ConcurrencyStamp"
)
.
IsConcurrencyToken
()
.
IsRequired
()
.
HasColumnName
(
"ConcurrencyStamp"
)
.
HasColumnType
(
"nvarchar(256)"
)
.
HasMaxLength
(
256
);
b
.
Property
<
string
>(
"ExtraProperties"
)
.
HasColumnName
(
"ExtraProperties"
)
.
HasColumnType
(
"nvarchar(max)"
);
b
.
Property
<
bool
>(
"IsDefault"
)
.
HasColumnName
(
"IsDefault"
)
.
HasColumnType
(
"bit"
);
b
.
Property
<
bool
>(
"IsPublic"
)
.
HasColumnName
(
"IsPublic"
)
.
HasColumnType
(
"bit"
);
b
.
Property
<
bool
>(
"IsStatic"
)
.
HasColumnName
(
"IsStatic"
)
.
HasColumnType
(
"bit"
);
b
.
Property
<
string
>(
"Name"
)
.
IsRequired
()
.
HasColumnType
(
"nvarchar(256)"
)
.
HasMaxLength
(
256
);
b
.
Property
<
string
>(
"NormalizedName"
)
.
IsRequired
()
.
HasColumnType
(
"nvarchar(256)"
)
.
HasMaxLength
(
256
);
b
.
Property
<
Guid
?>(
"TenantId"
)
.
HasColumnName
(
"TenantId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
HasKey
(
"Id"
);
b
.
HasIndex
(
"NormalizedName"
);
b
.
ToTable
(
"AbpRoles"
);
});
modelBuilder
.
Entity
(
"Volo.Abp.Identity.IdentityRoleClaim"
,
b
=>
{
b
.
Property
<
Guid
>(
"Id"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
string
>(
"ClaimType"
)
.
IsRequired
()
.
HasColumnType
(
"nvarchar(256)"
)
.
HasMaxLength
(
256
);
b
.
Property
<
string
>(
"ClaimValue"
)
.
HasColumnType
(
"nvarchar(1024)"
)
.
HasMaxLength
(
1024
);
b
.
Property
<
Guid
>(
"RoleId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
Guid
?>(
"TenantId"
)
.
HasColumnName
(
"TenantId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
HasKey
(
"Id"
);
b
.
HasIndex
(
"RoleId"
);
b
.
ToTable
(
"AbpRoleClaims"
);
});
modelBuilder
.
Entity
(
"Volo.Abp.Identity.IdentityUser"
,
b
=>
{
b
.
Property
<
Guid
>(
"Id"
)
.
ValueGeneratedOnAdd
()
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
int
>(
"AccessFailedCount"
)
.
ValueGeneratedOnAdd
()
.
HasColumnName
(
"AccessFailedCount"
)
.
HasColumnType
(
"int"
)
.
HasDefaultValue
(
0
);
b
.
Property
<
string
>(
"ConcurrencyStamp"
)
.
IsConcurrencyToken
()
.
HasColumnName
(
"ConcurrencyStamp"
)
.
HasColumnType
(
"nvarchar(max)"
);
b
.
Property
<
DateTime
>(
"CreationTime"
)
.
HasColumnName
(
"CreationTime"
)
.
HasColumnType
(
"datetime2"
);
b
.
Property
<
Guid
?>(
"CreatorId"
)
.
HasColumnName
(
"CreatorId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
Guid
?>(
"DeleterId"
)
.
HasColumnName
(
"DeleterId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
DateTime
?>(
"DeletionTime"
)
.
HasColumnName
(
"DeletionTime"
)
.
HasColumnType
(
"datetime2"
);
b
.
Property
<
string
>(
"Email"
)
.
IsRequired
()
.
HasColumnName
(
"Email"
)
.
HasColumnType
(
"nvarchar(256)"
)
.
HasMaxLength
(
256
);
b
.
Property
<
bool
>(
"EmailConfirmed"
)
.
ValueGeneratedOnAdd
()
.
HasColumnName
(
"EmailConfirmed"
)
.
HasColumnType
(
"bit"
)
.
HasDefaultValue
(
false
);
b
.
Property
<
string
>(
"ExtraProperties"
)
.
HasColumnName
(
"ExtraProperties"
)
.
HasColumnType
(
"nvarchar(max)"
);
b
.
Property
<
bool
>(
"IsDeleted"
)
.
ValueGeneratedOnAdd
()
.
HasColumnName
(
"IsDeleted"
)
.
HasColumnType
(
"bit"
)
.
HasDefaultValue
(
false
);
b
.
Property
<
DateTime
?>(
"LastModificationTime"
)
.
HasColumnName
(
"LastModificationTime"
)
.
HasColumnType
(
"datetime2"
);
b
.
Property
<
Guid
?>(
"LastModifierId"
)
.
HasColumnName
(
"LastModifierId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
bool
>(
"LockoutEnabled"
)
.
ValueGeneratedOnAdd
()
.
HasColumnName
(
"LockoutEnabled"
)
.
HasColumnType
(
"bit"
)
.
HasDefaultValue
(
false
);
b
.
Property
<
DateTimeOffset
?>(
"LockoutEnd"
)
.
HasColumnType
(
"datetimeoffset"
);
b
.
Property
<
string
>(
"Name"
)
.
HasColumnName
(
"Name"
)
.
HasColumnType
(
"nvarchar(64)"
)
.
HasMaxLength
(
64
);
b
.
Property
<
string
>(
"NormalizedEmail"
)
.
IsRequired
()
.
HasColumnName
(
"NormalizedEmail"
)
.
HasColumnType
(
"nvarchar(256)"
)
.
HasMaxLength
(
256
);
b
.
Property
<
string
>(
"NormalizedUserName"
)
.
IsRequired
()
.
HasColumnName
(
"NormalizedUserName"
)
.
HasColumnType
(
"nvarchar(256)"
)
.
HasMaxLength
(
256
);
b
.
Property
<
string
>(
"PasswordHash"
)
.
HasColumnName
(
"PasswordHash"
)
.
HasColumnType
(
"nvarchar(256)"
)
.
HasMaxLength
(
256
);
b
.
Property
<
string
>(
"PhoneNumber"
)
.
HasColumnName
(
"PhoneNumber"
)
.
HasColumnType
(
"nvarchar(16)"
)
.
HasMaxLength
(
16
);
b
.
Property
<
bool
>(
"PhoneNumberConfirmed"
)
.
ValueGeneratedOnAdd
()
.
HasColumnName
(
"PhoneNumberConfirmed"
)
.
HasColumnType
(
"bit"
)
.
HasDefaultValue
(
false
);
b
.
Property
<
string
>(
"SecurityStamp"
)
.
IsRequired
()
.
HasColumnName
(
"SecurityStamp"
)
.
HasColumnType
(
"nvarchar(256)"
)
.
HasMaxLength
(
256
);
b
.
Property
<
string
>(
"Surname"
)
.
HasColumnName
(
"Surname"
)
.
HasColumnType
(
"nvarchar(64)"
)
.
HasMaxLength
(
64
);
b
.
Property
<
Guid
?>(
"TenantId"
)
.
HasColumnName
(
"TenantId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
bool
>(
"TwoFactorEnabled"
)
.
ValueGeneratedOnAdd
()
.
HasColumnName
(
"TwoFactorEnabled"
)
.
HasColumnType
(
"bit"
)
.
HasDefaultValue
(
false
);
b
.
Property
<
string
>(
"UserName"
)
.
IsRequired
()
.
HasColumnName
(
"UserName"
)
.
HasColumnType
(
"nvarchar(256)"
)
.
HasMaxLength
(
256
);
b
.
HasKey
(
"Id"
);
b
.
HasIndex
(
"Email"
);
b
.
HasIndex
(
"NormalizedEmail"
);
b
.
HasIndex
(
"NormalizedUserName"
);
b
.
HasIndex
(
"UserName"
);
b
.
ToTable
(
"AbpUsers"
);
});
modelBuilder
.
Entity
(
"Volo.Abp.Identity.IdentityUserClaim"
,
b
=>
{
b
.
Property
<
Guid
>(
"Id"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
string
>(
"ClaimType"
)
.
IsRequired
()
.
HasColumnType
(
"nvarchar(256)"
)
.
HasMaxLength
(
256
);
b
.
Property
<
string
>(
"ClaimValue"
)
.
HasColumnType
(
"nvarchar(1024)"
)
.
HasMaxLength
(
1024
);
b
.
Property
<
Guid
?>(
"TenantId"
)
.
HasColumnName
(
"TenantId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
Guid
>(
"UserId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
HasKey
(
"Id"
);
b
.
HasIndex
(
"UserId"
);
b
.
ToTable
(
"AbpUserClaims"
);
});
modelBuilder
.
Entity
(
"Volo.Abp.Identity.IdentityUserLogin"
,
b
=>
{
b
.
Property
<
Guid
>(
"UserId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
string
>(
"LoginProvider"
)
.
HasColumnType
(
"nvarchar(64)"
)
.
HasMaxLength
(
64
);
b
.
Property
<
string
>(
"ProviderDisplayName"
)
.
HasColumnType
(
"nvarchar(128)"
)
.
HasMaxLength
(
128
);
b
.
Property
<
string
>(
"ProviderKey"
)
.
IsRequired
()
.
HasColumnType
(
"nvarchar(196)"
)
.
HasMaxLength
(
196
);
b
.
Property
<
Guid
?>(
"TenantId"
)
.
HasColumnName
(
"TenantId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
HasKey
(
"UserId"
,
"LoginProvider"
);
b
.
HasIndex
(
"LoginProvider"
,
"ProviderKey"
);
b
.
ToTable
(
"AbpUserLogins"
);
});
modelBuilder
.
Entity
(
"Volo.Abp.Identity.IdentityUserRole"
,
b
=>
{
b
.
Property
<
Guid
>(
"UserId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
Guid
>(
"RoleId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
Guid
?>(
"TenantId"
)
.
HasColumnName
(
"TenantId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
HasKey
(
"UserId"
,
"RoleId"
);
b
.
HasIndex
(
"RoleId"
,
"UserId"
);
b
.
ToTable
(
"AbpUserRoles"
);
});
modelBuilder
.
Entity
(
"Volo.Abp.Identity.IdentityUserToken"
,
b
=>
{
b
.
Property
<
Guid
>(
"UserId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
string
>(
"LoginProvider"
)
.
HasColumnType
(
"nvarchar(64)"
)
.
HasMaxLength
(
64
);
b
.
Property
<
string
>(
"Name"
)
.
HasColumnType
(
"nvarchar(128)"
)
.
HasMaxLength
(
128
);
b
.
Property
<
Guid
?>(
"TenantId"
)
.
HasColumnName
(
"TenantId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
string
>(
"Value"
)
.
HasColumnType
(
"nvarchar(max)"
);
b
.
HasKey
(
"UserId"
,
"LoginProvider"
,
"Name"
);
b
.
ToTable
(
"AbpUserTokens"
);
});
modelBuilder
.
Entity
(
"Volo.Abp.IdentityServer.ApiResources.ApiResource"
,
b
=>
{
b
.
Property
<
Guid
>(
"Id"
)
.
ValueGeneratedOnAdd
()
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
string
>(
"ConcurrencyStamp"
)
.
IsConcurrencyToken
()
.
HasColumnName
(
"ConcurrencyStamp"
)
.
HasColumnType
(
"nvarchar(max)"
);
b
.
Property
<
DateTime
>(
"CreationTime"
)
.
HasColumnName
(
"CreationTime"
)
.
HasColumnType
(
"datetime2"
);
b
.
Property
<
Guid
?>(
"CreatorId"
)
.
HasColumnName
(
"CreatorId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
Guid
?>(
"DeleterId"
)
.
HasColumnName
(
"DeleterId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
DateTime
?>(
"DeletionTime"
)
.
HasColumnName
(
"DeletionTime"
)
.
HasColumnType
(
"datetime2"
);
b
.
Property
<
string
>(
"Description"
)
.
HasColumnType
(
"nvarchar(1000)"
)
.
HasMaxLength
(
1000
);
b
.
Property
<
string
>(
"DisplayName"
)
.
HasColumnType
(
"nvarchar(200)"
)
.
HasMaxLength
(
200
);
b
.
Property
<
bool
>(
"Enabled"
)
.
HasColumnType
(
"bit"
);
b
.
Property
<
string
>(
"ExtraProperties"
)
.
HasColumnName
(
"ExtraProperties"
)
.
HasColumnType
(
"nvarchar(max)"
);
b
.
Property
<
bool
>(
"IsDeleted"
)
.
ValueGeneratedOnAdd
()
.
HasColumnName
(
"IsDeleted"
)
.
HasColumnType
(
"bit"
)
.
HasDefaultValue
(
false
);
b
.
Property
<
DateTime
?>(
"LastModificationTime"
)
.
HasColumnName
(
"LastModificationTime"
)
.
HasColumnType
(
"datetime2"
);
b
.
Property
<
Guid
?>(
"LastModifierId"
)
.
HasColumnName
(
"LastModifierId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
string
>(
"Name"
)
.
IsRequired
()
.
HasColumnType
(
"nvarchar(200)"
)
.
HasMaxLength
(
200
);
b
.
Property
<
string
>(
"Properties"
)
.
HasColumnType
(
"nvarchar(max)"
);
b
.
HasKey
(
"Id"
);
b
.
ToTable
(
"IdentityServerApiResources"
);
});
modelBuilder
.
Entity
(
"Volo.Abp.IdentityServer.ApiResources.ApiResourceClaim"
,
b
=>
{
b
.
Property
<
Guid
>(
"ApiResourceId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
string
>(
"Type"
)
.
HasColumnType
(
"nvarchar(200)"
)
.
HasMaxLength
(
200
);
b
.
HasKey
(
"ApiResourceId"
,
"Type"
);
b
.
ToTable
(
"IdentityServerApiClaims"
);
});
modelBuilder
.
Entity
(
"Volo.Abp.IdentityServer.ApiResources.ApiScope"
,
b
=>
{
b
.
Property
<
Guid
>(
"ApiResourceId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
string
>(
"Name"
)
.
HasColumnType
(
"nvarchar(200)"
)
.
HasMaxLength
(
200
);
b
.
Property
<
string
>(
"Description"
)
.
HasColumnType
(
"nvarchar(1000)"
)
.
HasMaxLength
(
1000
);
b
.
Property
<
string
>(
"DisplayName"
)
.
HasColumnType
(
"nvarchar(200)"
)
.
HasMaxLength
(
200
);
b
.
Property
<
bool
>(
"Emphasize"
)
.
HasColumnType
(
"bit"
);
b
.
Property
<
bool
>(
"Required"
)
.
HasColumnType
(
"bit"
);
b
.
Property
<
bool
>(
"ShowInDiscoveryDocument"
)
.
HasColumnType
(
"bit"
);
b
.
HasKey
(
"ApiResourceId"
,
"Name"
);
b
.
ToTable
(
"IdentityServerApiScopes"
);
});
modelBuilder
.
Entity
(
"Volo.Abp.IdentityServer.ApiResources.ApiScopeClaim"
,
b
=>
{
b
.
Property
<
Guid
>(
"ApiResourceId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
string
>(
"Name"
)
.
HasColumnType
(
"nvarchar(200)"
)
.
HasMaxLength
(
200
);
b
.
Property
<
string
>(
"Type"
)
.
HasColumnType
(
"nvarchar(200)"
)
.
HasMaxLength
(
200
);
b
.
HasKey
(
"ApiResourceId"
,
"Name"
,
"Type"
);
b
.
ToTable
(
"IdentityServerApiScopeClaims"
);
});
modelBuilder
.
Entity
(
"Volo.Abp.IdentityServer.ApiResources.ApiSecret"
,
b
=>
{
b
.
Property
<
Guid
>(
"ApiResourceId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
string
>(
"Type"
)
.
HasColumnType
(
"nvarchar(250)"
)
.
HasMaxLength
(
250
);
b
.
Property
<
string
>(
"Value"
)
.
HasColumnType
(
"nvarchar(4000)"
)
.
HasMaxLength
(
4000
);
b
.
Property
<
string
>(
"Description"
)
.
HasColumnType
(
"nvarchar(2000)"
)
.
HasMaxLength
(
2000
);
b
.
Property
<
DateTime
?>(
"Expiration"
)
.
HasColumnType
(
"datetime2"
);
b
.
HasKey
(
"ApiResourceId"
,
"Type"
,
"Value"
);
b
.
ToTable
(
"IdentityServerApiSecrets"
);
});
modelBuilder
.
Entity
(
"Volo.Abp.IdentityServer.Clients.Client"
,
b
=>
{
b
.
Property
<
Guid
>(
"Id"
)
.
ValueGeneratedOnAdd
()
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
int
>(
"AbsoluteRefreshTokenLifetime"
)
.
HasColumnType
(
"int"
);
b
.
Property
<
int
>(
"AccessTokenLifetime"
)
.
HasColumnType
(
"int"
);
b
.
Property
<
int
>(
"AccessTokenType"
)
.
HasColumnType
(
"int"
);
b
.
Property
<
bool
>(
"AllowAccessTokensViaBrowser"
)
.
HasColumnType
(
"bit"
);
b
.
Property
<
bool
>(
"AllowOfflineAccess"
)
.
HasColumnType
(
"bit"
);
b
.
Property
<
bool
>(
"AllowPlainTextPkce"
)
.
HasColumnType
(
"bit"
);
b
.
Property
<
bool
>(
"AllowRememberConsent"
)
.
HasColumnType
(
"bit"
);
b
.
Property
<
bool
>(
"AlwaysIncludeUserClaimsInIdToken"
)
.
HasColumnType
(
"bit"
);
b
.
Property
<
bool
>(
"AlwaysSendClientClaims"
)
.
HasColumnType
(
"bit"
);
b
.
Property
<
int
>(
"AuthorizationCodeLifetime"
)
.
HasColumnType
(
"int"
);
b
.
Property
<
bool
>(
"BackChannelLogoutSessionRequired"
)
.
HasColumnType
(
"bit"
);
b
.
Property
<
string
>(
"BackChannelLogoutUri"
)
.
HasColumnType
(
"nvarchar(2000)"
)
.
HasMaxLength
(
2000
);
b
.
Property
<
string
>(
"ClientClaimsPrefix"
)
.
HasColumnType
(
"nvarchar(200)"
)
.
HasMaxLength
(
200
);
b
.
Property
<
string
>(
"ClientId"
)
.
IsRequired
()
.
HasColumnType
(
"nvarchar(200)"
)
.
HasMaxLength
(
200
);
b
.
Property
<
string
>(
"ClientName"
)
.
HasColumnType
(
"nvarchar(200)"
)
.
HasMaxLength
(
200
);
b
.
Property
<
string
>(
"ClientUri"
)
.
HasColumnType
(
"nvarchar(2000)"
)
.
HasMaxLength
(
2000
);
b
.
Property
<
string
>(
"ConcurrencyStamp"
)
.
IsConcurrencyToken
()
.
HasColumnName
(
"ConcurrencyStamp"
)
.
HasColumnType
(
"nvarchar(max)"
);
b
.
Property
<
int
?>(
"ConsentLifetime"
)
.
HasColumnType
(
"int"
);
b
.
Property
<
DateTime
>(
"CreationTime"
)
.
HasColumnName
(
"CreationTime"
)
.
HasColumnType
(
"datetime2"
);
b
.
Property
<
Guid
?>(
"CreatorId"
)
.
HasColumnName
(
"CreatorId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
Guid
?>(
"DeleterId"
)
.
HasColumnName
(
"DeleterId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
DateTime
?>(
"DeletionTime"
)
.
HasColumnName
(
"DeletionTime"
)
.
HasColumnType
(
"datetime2"
);
b
.
Property
<
string
>(
"Description"
)
.
HasColumnType
(
"nvarchar(1000)"
)
.
HasMaxLength
(
1000
);
b
.
Property
<
int
>(
"DeviceCodeLifetime"
)
.
HasColumnType
(
"int"
);
b
.
Property
<
bool
>(
"EnableLocalLogin"
)
.
HasColumnType
(
"bit"
);
b
.
Property
<
bool
>(
"Enabled"
)
.
HasColumnType
(
"bit"
);
b
.
Property
<
string
>(
"ExtraProperties"
)
.
HasColumnName
(
"ExtraProperties"
)
.
HasColumnType
(
"nvarchar(max)"
);
b
.
Property
<
bool
>(
"FrontChannelLogoutSessionRequired"
)
.
HasColumnType
(
"bit"
);
b
.
Property
<
string
>(
"FrontChannelLogoutUri"
)
.
HasColumnType
(
"nvarchar(2000)"
)
.
HasMaxLength
(
2000
);
b
.
Property
<
int
>(
"IdentityTokenLifetime"
)
.
HasColumnType
(
"int"
);
b
.
Property
<
bool
>(
"IncludeJwtId"
)
.
HasColumnType
(
"bit"
);
b
.
Property
<
bool
>(
"IsDeleted"
)
.
ValueGeneratedOnAdd
()
.
HasColumnName
(
"IsDeleted"
)
.
HasColumnType
(
"bit"
)
.
HasDefaultValue
(
false
);
b
.
Property
<
DateTime
?>(
"LastModificationTime"
)
.
HasColumnName
(
"LastModificationTime"
)
.
HasColumnType
(
"datetime2"
);
b
.
Property
<
Guid
?>(
"LastModifierId"
)
.
HasColumnName
(
"LastModifierId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
string
>(
"LogoUri"
)
.
HasColumnType
(
"nvarchar(2000)"
)
.
HasMaxLength
(
2000
);
b
.
Property
<
string
>(
"PairWiseSubjectSalt"
)
.
HasColumnType
(
"nvarchar(200)"
)
.
HasMaxLength
(
200
);
b
.
Property
<
string
>(
"ProtocolType"
)
.
IsRequired
()
.
HasColumnType
(
"nvarchar(200)"
)
.
HasMaxLength
(
200
);
b
.
Property
<
int
>(
"RefreshTokenExpiration"
)
.
HasColumnType
(
"int"
);
b
.
Property
<
int
>(
"RefreshTokenUsage"
)
.
HasColumnType
(
"int"
);
b
.
Property
<
bool
>(
"RequireClientSecret"
)
.
HasColumnType
(
"bit"
);
b
.
Property
<
bool
>(
"RequireConsent"
)
.
HasColumnType
(
"bit"
);
b
.
Property
<
bool
>(
"RequirePkce"
)
.
HasColumnType
(
"bit"
);
b
.
Property
<
int
>(
"SlidingRefreshTokenLifetime"
)
.
HasColumnType
(
"int"
);
b
.
Property
<
bool
>(
"UpdateAccessTokenClaimsOnRefresh"
)
.
HasColumnType
(
"bit"
);
b
.
Property
<
string
>(
"UserCodeType"
)
.
HasColumnType
(
"nvarchar(100)"
)
.
HasMaxLength
(
100
);
b
.
Property
<
int
?>(
"UserSsoLifetime"
)
.
HasColumnType
(
"int"
);
b
.
HasKey
(
"Id"
);
b
.
HasIndex
(
"ClientId"
);
b
.
ToTable
(
"IdentityServerClients"
);
});
modelBuilder
.
Entity
(
"Volo.Abp.IdentityServer.Clients.ClientClaim"
,
b
=>
{
b
.
Property
<
Guid
>(
"ClientId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
string
>(
"Type"
)
.
HasColumnType
(
"nvarchar(250)"
)
.
HasMaxLength
(
250
);
b
.
Property
<
string
>(
"Value"
)
.
HasColumnType
(
"nvarchar(250)"
)
.
HasMaxLength
(
250
);
b
.
HasKey
(
"ClientId"
,
"Type"
,
"Value"
);
b
.
ToTable
(
"IdentityServerClientClaims"
);
});
modelBuilder
.
Entity
(
"Volo.Abp.IdentityServer.Clients.ClientCorsOrigin"
,
b
=>
{
b
.
Property
<
Guid
>(
"ClientId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
string
>(
"Origin"
)
.
HasColumnType
(
"nvarchar(150)"
)
.
HasMaxLength
(
150
);
b
.
HasKey
(
"ClientId"
,
"Origin"
);
b
.
ToTable
(
"IdentityServerClientCorsOrigins"
);
});
modelBuilder
.
Entity
(
"Volo.Abp.IdentityServer.Clients.ClientGrantType"
,
b
=>
{
b
.
Property
<
Guid
>(
"ClientId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
string
>(
"GrantType"
)
.
HasColumnType
(
"nvarchar(250)"
)
.
HasMaxLength
(
250
);
b
.
HasKey
(
"ClientId"
,
"GrantType"
);
b
.
ToTable
(
"IdentityServerClientGrantTypes"
);
});
modelBuilder
.
Entity
(
"Volo.Abp.IdentityServer.Clients.ClientIdPRestriction"
,
b
=>
{
b
.
Property
<
Guid
>(
"ClientId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
string
>(
"Provider"
)
.
HasColumnType
(
"nvarchar(200)"
)
.
HasMaxLength
(
200
);
b
.
HasKey
(
"ClientId"
,
"Provider"
);
b
.
ToTable
(
"IdentityServerClientIdPRestrictions"
);
});
modelBuilder
.
Entity
(
"Volo.Abp.IdentityServer.Clients.ClientPostLogoutRedirectUri"
,
b
=>
{
b
.
Property
<
Guid
>(
"ClientId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
string
>(
"PostLogoutRedirectUri"
)
.
HasColumnType
(
"nvarchar(2000)"
)
.
HasMaxLength
(
2000
);
b
.
HasKey
(
"ClientId"
,
"PostLogoutRedirectUri"
);
b
.
ToTable
(
"IdentityServerClientPostLogoutRedirectUris"
);
});
modelBuilder
.
Entity
(
"Volo.Abp.IdentityServer.Clients.ClientProperty"
,
b
=>
{
b
.
Property
<
Guid
>(
"ClientId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
string
>(
"Key"
)
.
HasColumnType
(
"nvarchar(250)"
)
.
HasMaxLength
(
250
);
b
.
Property
<
string
>(
"Value"
)
.
IsRequired
()
.
HasColumnType
(
"nvarchar(2000)"
)
.
HasMaxLength
(
2000
);
b
.
HasKey
(
"ClientId"
,
"Key"
);
b
.
ToTable
(
"IdentityServerClientProperties"
);
});
modelBuilder
.
Entity
(
"Volo.Abp.IdentityServer.Clients.ClientRedirectUri"
,
b
=>
{
b
.
Property
<
Guid
>(
"ClientId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
string
>(
"RedirectUri"
)
.
HasColumnType
(
"nvarchar(2000)"
)
.
HasMaxLength
(
2000
);
b
.
HasKey
(
"ClientId"
,
"RedirectUri"
);
b
.
ToTable
(
"IdentityServerClientRedirectUris"
);
});
modelBuilder
.
Entity
(
"Volo.Abp.IdentityServer.Clients.ClientScope"
,
b
=>
{
b
.
Property
<
Guid
>(
"ClientId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
string
>(
"Scope"
)
.
HasColumnType
(
"nvarchar(200)"
)
.
HasMaxLength
(
200
);
b
.
HasKey
(
"ClientId"
,
"Scope"
);
b
.
ToTable
(
"IdentityServerClientScopes"
);
});
modelBuilder
.
Entity
(
"Volo.Abp.IdentityServer.Clients.ClientSecret"
,
b
=>
{
b
.
Property
<
Guid
>(
"ClientId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
string
>(
"Type"
)
.
HasColumnType
(
"nvarchar(250)"
)
.
HasMaxLength
(
250
);
b
.
Property
<
string
>(
"Value"
)
.
HasColumnType
(
"nvarchar(4000)"
)
.
HasMaxLength
(
4000
);
b
.
Property
<
string
>(
"Description"
)
.
HasColumnType
(
"nvarchar(2000)"
)
.
HasMaxLength
(
2000
);
b
.
Property
<
DateTime
?>(
"Expiration"
)
.
HasColumnType
(
"datetime2"
);
b
.
HasKey
(
"ClientId"
,
"Type"
,
"Value"
);
b
.
ToTable
(
"IdentityServerClientSecrets"
);
});
modelBuilder
.
Entity
(
"Volo.Abp.IdentityServer.Devices.DeviceFlowCodes"
,
b
=>
{
b
.
Property
<
Guid
>(
"Id"
)
.
ValueGeneratedOnAdd
()
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
string
>(
"ClientId"
)
.
IsRequired
()
.
HasColumnType
(
"nvarchar(200)"
)
.
HasMaxLength
(
200
);
b
.
Property
<
string
>(
"ConcurrencyStamp"
)
.
IsConcurrencyToken
()
.
HasColumnName
(
"ConcurrencyStamp"
)
.
HasColumnType
(
"nvarchar(max)"
);
b
.
Property
<
DateTime
>(
"CreationTime"
)
.
HasColumnName
(
"CreationTime"
)
.
HasColumnType
(
"datetime2"
);
b
.
Property
<
Guid
?>(
"CreatorId"
)
.
HasColumnName
(
"CreatorId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
string
>(
"Data"
)
.
IsRequired
()
.
HasColumnType
(
"nvarchar(max)"
)
.
HasMaxLength
(
50000
);
b
.
Property
<
string
>(
"DeviceCode"
)
.
IsRequired
()
.
HasColumnType
(
"nvarchar(200)"
)
.
HasMaxLength
(
200
);
b
.
Property
<
DateTime
?>(
"Expiration"
)
.
IsRequired
()
.
HasColumnType
(
"datetime2"
);
b
.
Property
<
string
>(
"ExtraProperties"
)
.
HasColumnName
(
"ExtraProperties"
)
.
HasColumnType
(
"nvarchar(max)"
);
b
.
Property
<
string
>(
"SubjectId"
)
.
HasColumnType
(
"nvarchar(200)"
)
.
HasMaxLength
(
200
);
b
.
Property
<
string
>(
"UserCode"
)
.
IsRequired
()
.
HasColumnType
(
"nvarchar(200)"
)
.
HasMaxLength
(
200
);
b
.
HasKey
(
"Id"
);
b
.
HasIndex
(
"DeviceCode"
)
.
IsUnique
();
b
.
HasIndex
(
"Expiration"
);
b
.
HasIndex
(
"UserCode"
)
.
IsUnique
();
b
.
ToTable
(
"IdentityServerDeviceFlowCodes"
);
});
modelBuilder
.
Entity
(
"Volo.Abp.IdentityServer.Grants.PersistedGrant"
,
b
=>
{
b
.
Property
<
string
>(
"Key"
)
.
HasColumnType
(
"nvarchar(200)"
)
.
HasMaxLength
(
200
);
b
.
Property
<
string
>(
"ClientId"
)
.
IsRequired
()
.
HasColumnType
(
"nvarchar(200)"
)
.
HasMaxLength
(
200
);
b
.
Property
<
string
>(
"ConcurrencyStamp"
)
.
IsConcurrencyToken
()
.
HasColumnName
(
"ConcurrencyStamp"
)
.
HasColumnType
(
"nvarchar(max)"
);
b
.
Property
<
DateTime
>(
"CreationTime"
)
.
HasColumnType
(
"datetime2"
);
b
.
Property
<
string
>(
"Data"
)
.
IsRequired
()
.
HasColumnType
(
"nvarchar(max)"
)
.
HasMaxLength
(
50000
);
b
.
Property
<
DateTime
?>(
"Expiration"
)
.
HasColumnType
(
"datetime2"
);
b
.
Property
<
string
>(
"ExtraProperties"
)
.
HasColumnName
(
"ExtraProperties"
)
.
HasColumnType
(
"nvarchar(max)"
);
b
.
Property
<
Guid
>(
"Id"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
string
>(
"SubjectId"
)
.
HasColumnType
(
"nvarchar(200)"
)
.
HasMaxLength
(
200
);
b
.
Property
<
string
>(
"Type"
)
.
IsRequired
()
.
HasColumnType
(
"nvarchar(50)"
)
.
HasMaxLength
(
50
);
b
.
HasKey
(
"Key"
);
b
.
HasIndex
(
"Expiration"
);
b
.
HasIndex
(
"SubjectId"
,
"ClientId"
,
"Type"
);
b
.
ToTable
(
"IdentityServerPersistedGrants"
);
});
modelBuilder
.
Entity
(
"Volo.Abp.IdentityServer.IdentityResources.IdentityClaim"
,
b
=>
{
b
.
Property
<
Guid
>(
"IdentityResourceId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
string
>(
"Type"
)
.
HasColumnType
(
"nvarchar(200)"
)
.
HasMaxLength
(
200
);
b
.
HasKey
(
"IdentityResourceId"
,
"Type"
);
b
.
ToTable
(
"IdentityServerIdentityClaims"
);
});
modelBuilder
.
Entity
(
"Volo.Abp.IdentityServer.IdentityResources.IdentityResource"
,
b
=>
{
b
.
Property
<
Guid
>(
"Id"
)
.
ValueGeneratedOnAdd
()
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
string
>(
"ConcurrencyStamp"
)
.
IsConcurrencyToken
()
.
HasColumnName
(
"ConcurrencyStamp"
)
.
HasColumnType
(
"nvarchar(max)"
);
b
.
Property
<
DateTime
>(
"CreationTime"
)
.
HasColumnName
(
"CreationTime"
)
.
HasColumnType
(
"datetime2"
);
b
.
Property
<
Guid
?>(
"CreatorId"
)
.
HasColumnName
(
"CreatorId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
Guid
?>(
"DeleterId"
)
.
HasColumnName
(
"DeleterId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
DateTime
?>(
"DeletionTime"
)
.
HasColumnName
(
"DeletionTime"
)
.
HasColumnType
(
"datetime2"
);
b
.
Property
<
string
>(
"Description"
)
.
HasColumnType
(
"nvarchar(1000)"
)
.
HasMaxLength
(
1000
);
b
.
Property
<
string
>(
"DisplayName"
)
.
HasColumnType
(
"nvarchar(200)"
)
.
HasMaxLength
(
200
);
b
.
Property
<
bool
>(
"Emphasize"
)
.
HasColumnType
(
"bit"
);
b
.
Property
<
bool
>(
"Enabled"
)
.
HasColumnType
(
"bit"
);
b
.
Property
<
string
>(
"ExtraProperties"
)
.
HasColumnName
(
"ExtraProperties"
)
.
HasColumnType
(
"nvarchar(max)"
);
b
.
Property
<
bool
>(
"IsDeleted"
)
.
ValueGeneratedOnAdd
()
.
HasColumnName
(
"IsDeleted"
)
.
HasColumnType
(
"bit"
)
.
HasDefaultValue
(
false
);
b
.
Property
<
DateTime
?>(
"LastModificationTime"
)
.
HasColumnName
(
"LastModificationTime"
)
.
HasColumnType
(
"datetime2"
);
b
.
Property
<
Guid
?>(
"LastModifierId"
)
.
HasColumnName
(
"LastModifierId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
string
>(
"Name"
)
.
IsRequired
()
.
HasColumnType
(
"nvarchar(200)"
)
.
HasMaxLength
(
200
);
b
.
Property
<
string
>(
"Properties"
)
.
HasColumnType
(
"nvarchar(max)"
);
b
.
Property
<
bool
>(
"Required"
)
.
HasColumnType
(
"bit"
);
b
.
Property
<
bool
>(
"ShowInDiscoveryDocument"
)
.
HasColumnType
(
"bit"
);
b
.
HasKey
(
"Id"
);
b
.
ToTable
(
"IdentityServerIdentityResources"
);
});
modelBuilder
.
Entity
(
"Volo.Abp.PermissionManagement.PermissionGrant"
,
b
=>
{
b
.
Property
<
Guid
>(
"Id"
)
.
ValueGeneratedOnAdd
()
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
string
>(
"Name"
)
.
IsRequired
()
.
HasColumnType
(
"nvarchar(128)"
)
.
HasMaxLength
(
128
);
b
.
Property
<
string
>(
"ProviderKey"
)
.
IsRequired
()
.
HasColumnType
(
"nvarchar(64)"
)
.
HasMaxLength
(
64
);
b
.
Property
<
string
>(
"ProviderName"
)
.
IsRequired
()
.
HasColumnType
(
"nvarchar(64)"
)
.
HasMaxLength
(
64
);
b
.
Property
<
Guid
?>(
"TenantId"
)
.
HasColumnName
(
"TenantId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
HasKey
(
"Id"
);
b
.
HasIndex
(
"Name"
,
"ProviderName"
,
"ProviderKey"
);
b
.
ToTable
(
"AbpPermissionGrants"
);
});
modelBuilder
.
Entity
(
"Volo.Abp.SettingManagement.Setting"
,
b
=>
{
b
.
Property
<
Guid
>(
"Id"
)
.
ValueGeneratedOnAdd
()
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
string
>(
"Name"
)
.
IsRequired
()
.
HasColumnType
(
"nvarchar(128)"
)
.
HasMaxLength
(
128
);
b
.
Property
<
string
>(
"ProviderKey"
)
.
HasColumnType
(
"nvarchar(64)"
)
.
HasMaxLength
(
64
);
b
.
Property
<
string
>(
"ProviderName"
)
.
HasColumnType
(
"nvarchar(64)"
)
.
HasMaxLength
(
64
);
b
.
Property
<
string
>(
"Value"
)
.
IsRequired
()
.
HasColumnType
(
"nvarchar(2048)"
)
.
HasMaxLength
(
2048
);
b
.
HasKey
(
"Id"
);
b
.
HasIndex
(
"Name"
,
"ProviderName"
,
"ProviderKey"
);
b
.
ToTable
(
"AbpSettings"
);
});
modelBuilder
.
Entity
(
"Volo.Abp.TenantManagement.Tenant"
,
b
=>
{
b
.
Property
<
Guid
>(
"Id"
)
.
ValueGeneratedOnAdd
()
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
string
>(
"ConcurrencyStamp"
)
.
IsConcurrencyToken
()
.
HasColumnName
(
"ConcurrencyStamp"
)
.
HasColumnType
(
"nvarchar(max)"
);
b
.
Property
<
DateTime
>(
"CreationTime"
)
.
HasColumnName
(
"CreationTime"
)
.
HasColumnType
(
"datetime2"
);
b
.
Property
<
Guid
?>(
"CreatorId"
)
.
HasColumnName
(
"CreatorId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
Guid
?>(
"DeleterId"
)
.
HasColumnName
(
"DeleterId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
DateTime
?>(
"DeletionTime"
)
.
HasColumnName
(
"DeletionTime"
)
.
HasColumnType
(
"datetime2"
);
b
.
Property
<
string
>(
"ExtraProperties"
)
.
HasColumnName
(
"ExtraProperties"
)
.
HasColumnType
(
"nvarchar(max)"
);
b
.
Property
<
bool
>(
"IsDeleted"
)
.
ValueGeneratedOnAdd
()
.
HasColumnName
(
"IsDeleted"
)
.
HasColumnType
(
"bit"
)
.
HasDefaultValue
(
false
);
b
.
Property
<
DateTime
?>(
"LastModificationTime"
)
.
HasColumnName
(
"LastModificationTime"
)
.
HasColumnType
(
"datetime2"
);
b
.
Property
<
Guid
?>(
"LastModifierId"
)
.
HasColumnName
(
"LastModifierId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
string
>(
"Name"
)
.
IsRequired
()
.
HasColumnType
(
"nvarchar(64)"
)
.
HasMaxLength
(
64
);
b
.
HasKey
(
"Id"
);
b
.
HasIndex
(
"Name"
);
b
.
ToTable
(
"AbpTenants"
);
});
modelBuilder
.
Entity
(
"Volo.Abp.TenantManagement.TenantConnectionString"
,
b
=>
{
b
.
Property
<
Guid
>(
"TenantId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
string
>(
"Name"
)
.
HasColumnType
(
"nvarchar(64)"
)
.
HasMaxLength
(
64
);
b
.
Property
<
string
>(
"Value"
)
.
IsRequired
()
.
HasColumnType
(
"nvarchar(1024)"
)
.
HasMaxLength
(
1024
);
b
.
HasKey
(
"TenantId"
,
"Name"
);
b
.
ToTable
(
"AbpTenantConnectionStrings"
);
});
modelBuilder
.
Entity
(
"EasyAbp.EShop.Products.Products.ProductAttribute"
,
b
=>
{
b
.
HasOne
(
"EasyAbp.EShop.Products.Products.Product"
,
null
)
.
WithMany
(
"ProductAttributes"
)
.
HasForeignKey
(
"ProductId"
);
});
modelBuilder
.
Entity
(
"EasyAbp.EShop.Products.Products.ProductAttributeOption"
,
b
=>
{
b
.
HasOne
(
"EasyAbp.EShop.Products.Products.ProductAttribute"
,
null
)
.
WithMany
(
"ProductAttributeOptions"
)
.
HasForeignKey
(
"ProductAttributeId"
);
});
modelBuilder
.
Entity
(
"EasyAbp.EShop.Products.Products.ProductSku"
,
b
=>
{
b
.
HasOne
(
"EasyAbp.EShop.Products.Products.Product"
,
null
)
.
WithMany
(
"ProductSkus"
)
.
HasForeignKey
(
"ProductId"
);
});
modelBuilder
.
Entity
(
"Volo.Abp.AuditLogging.AuditLogAction"
,
b
=>
{
b
.
HasOne
(
"Volo.Abp.AuditLogging.AuditLog"
,
null
)
.
WithMany
(
"Actions"
)
.
HasForeignKey
(
"AuditLogId"
)
.
OnDelete
(
DeleteBehavior
.
Cascade
)
.
IsRequired
();
});
modelBuilder
.
Entity
(
"Volo.Abp.AuditLogging.EntityChange"
,
b
=>
{
b
.
HasOne
(
"Volo.Abp.AuditLogging.AuditLog"
,
null
)
.
WithMany
(
"EntityChanges"
)
.
HasForeignKey
(
"AuditLogId"
)
.
OnDelete
(
DeleteBehavior
.
Cascade
)
.
IsRequired
();
});
modelBuilder
.
Entity
(
"Volo.Abp.AuditLogging.EntityPropertyChange"
,
b
=>
{
b
.
HasOne
(
"Volo.Abp.AuditLogging.EntityChange"
,
null
)
.
WithMany
(
"PropertyChanges"
)
.
HasForeignKey
(
"EntityChangeId"
)
.
OnDelete
(
DeleteBehavior
.
Cascade
)
.
IsRequired
();
});
modelBuilder
.
Entity
(
"Volo.Abp.Identity.IdentityRoleClaim"
,
b
=>
{
b
.
HasOne
(
"Volo.Abp.Identity.IdentityRole"
,
null
)
.
WithMany
(
"Claims"
)
.
HasForeignKey
(
"RoleId"
)
.
OnDelete
(
DeleteBehavior
.
Cascade
)
.
IsRequired
();
});
modelBuilder
.
Entity
(
"Volo.Abp.Identity.IdentityUserClaim"
,
b
=>
{
b
.
HasOne
(
"Volo.Abp.Identity.IdentityUser"
,
null
)
.
WithMany
(
"Claims"
)
.
HasForeignKey
(
"UserId"
)
.
OnDelete
(
DeleteBehavior
.
Cascade
)
.
IsRequired
();
});
modelBuilder
.
Entity
(
"Volo.Abp.Identity.IdentityUserLogin"
,
b
=>
{
b
.
HasOne
(
"Volo.Abp.Identity.IdentityUser"
,
null
)
.
WithMany
(
"Logins"
)
.
HasForeignKey
(
"UserId"
)
.
OnDelete
(
DeleteBehavior
.
Cascade
)
.
IsRequired
();
});
modelBuilder
.
Entity
(
"Volo.Abp.Identity.IdentityUserRole"
,
b
=>
{
b
.
HasOne
(
"Volo.Abp.Identity.IdentityRole"
,
null
)
.
WithMany
()
.
HasForeignKey
(
"RoleId"
)
.
OnDelete
(
DeleteBehavior
.
Cascade
)
.
IsRequired
();
b
.
HasOne
(
"Volo.Abp.Identity.IdentityUser"
,
null
)
.
WithMany
(
"Roles"
)
.
HasForeignKey
(
"UserId"
)
.
OnDelete
(
DeleteBehavior
.
Cascade
)
.
IsRequired
();
});
modelBuilder
.
Entity
(
"Volo.Abp.Identity.IdentityUserToken"
,
b
=>
{
b
.
HasOne
(
"Volo.Abp.Identity.IdentityUser"
,
null
)
.
WithMany
(
"Tokens"
)
.
HasForeignKey
(
"UserId"
)
.
OnDelete
(
DeleteBehavior
.
Cascade
)
.
IsRequired
();
});
modelBuilder
.
Entity
(
"Volo.Abp.IdentityServer.ApiResources.ApiResourceClaim"
,
b
=>
{
b
.
HasOne
(
"Volo.Abp.IdentityServer.ApiResources.ApiResource"
,
null
)
.
WithMany
(
"UserClaims"
)
.
HasForeignKey
(
"ApiResourceId"
)
.
OnDelete
(
DeleteBehavior
.
Cascade
)
.
IsRequired
();
});
modelBuilder
.
Entity
(
"Volo.Abp.IdentityServer.ApiResources.ApiScope"
,
b
=>
{
b
.
HasOne
(
"Volo.Abp.IdentityServer.ApiResources.ApiResource"
,
null
)
.
WithMany
(
"Scopes"
)
.
HasForeignKey
(
"ApiResourceId"
)
.
OnDelete
(
DeleteBehavior
.
Cascade
)
.
IsRequired
();
});
modelBuilder
.
Entity
(
"Volo.Abp.IdentityServer.ApiResources.ApiScopeClaim"
,
b
=>
{
b
.
HasOne
(
"Volo.Abp.IdentityServer.ApiResources.ApiScope"
,
null
)
.
WithMany
(
"UserClaims"
)
.
HasForeignKey
(
"ApiResourceId"
,
"Name"
)
.
OnDelete
(
DeleteBehavior
.
Cascade
)
.
IsRequired
();
});
modelBuilder
.
Entity
(
"Volo.Abp.IdentityServer.ApiResources.ApiSecret"
,
b
=>
{
b
.
HasOne
(
"Volo.Abp.IdentityServer.ApiResources.ApiResource"
,
null
)
.
WithMany
(
"Secrets"
)
.
HasForeignKey
(
"ApiResourceId"
)
.
OnDelete
(
DeleteBehavior
.
Cascade
)
.
IsRequired
();
});
modelBuilder
.
Entity
(
"Volo.Abp.IdentityServer.Clients.ClientClaim"
,
b
=>
{
b
.
HasOne
(
"Volo.Abp.IdentityServer.Clients.Client"
,
null
)
.
WithMany
(
"Claims"
)
.
HasForeignKey
(
"ClientId"
)
.
OnDelete
(
DeleteBehavior
.
Cascade
)
.
IsRequired
();
});
modelBuilder
.
Entity
(
"Volo.Abp.IdentityServer.Clients.ClientCorsOrigin"
,
b
=>
{
b
.
HasOne
(
"Volo.Abp.IdentityServer.Clients.Client"
,
null
)
.
WithMany
(
"AllowedCorsOrigins"
)
.
HasForeignKey
(
"ClientId"
)
.
OnDelete
(
DeleteBehavior
.
Cascade
)
.
IsRequired
();
});
modelBuilder
.
Entity
(
"Volo.Abp.IdentityServer.Clients.ClientGrantType"
,
b
=>
{
b
.
HasOne
(
"Volo.Abp.IdentityServer.Clients.Client"
,
null
)
.
WithMany
(
"AllowedGrantTypes"
)
.
HasForeignKey
(
"ClientId"
)
.
OnDelete
(
DeleteBehavior
.
Cascade
)
.
IsRequired
();
});
modelBuilder
.
Entity
(
"Volo.Abp.IdentityServer.Clients.ClientIdPRestriction"
,
b
=>
{
b
.
HasOne
(
"Volo.Abp.IdentityServer.Clients.Client"
,
null
)
.
WithMany
(
"IdentityProviderRestrictions"
)
.
HasForeignKey
(
"ClientId"
)
.
OnDelete
(
DeleteBehavior
.
Cascade
)
.
IsRequired
();
});
modelBuilder
.
Entity
(
"Volo.Abp.IdentityServer.Clients.ClientPostLogoutRedirectUri"
,
b
=>
{
b
.
HasOne
(
"Volo.Abp.IdentityServer.Clients.Client"
,
null
)
.
WithMany
(
"PostLogoutRedirectUris"
)
.
HasForeignKey
(
"ClientId"
)
.
OnDelete
(
DeleteBehavior
.
Cascade
)
.
IsRequired
();
});
modelBuilder
.
Entity
(
"Volo.Abp.IdentityServer.Clients.ClientProperty"
,
b
=>
{
b
.
HasOne
(
"Volo.Abp.IdentityServer.Clients.Client"
,
null
)
.
WithMany
(
"Properties"
)
.
HasForeignKey
(
"ClientId"
)
.
OnDelete
(
DeleteBehavior
.
Cascade
)
.
IsRequired
();
});
modelBuilder
.
Entity
(
"Volo.Abp.IdentityServer.Clients.ClientRedirectUri"
,
b
=>
{
b
.
HasOne
(
"Volo.Abp.IdentityServer.Clients.Client"
,
null
)
.
WithMany
(
"RedirectUris"
)
.
HasForeignKey
(
"ClientId"
)
.
OnDelete
(
DeleteBehavior
.
Cascade
)
.
IsRequired
();
});
modelBuilder
.
Entity
(
"Volo.Abp.IdentityServer.Clients.ClientScope"
,
b
=>
{
b
.
HasOne
(
"Volo.Abp.IdentityServer.Clients.Client"
,
null
)
.
WithMany
(
"AllowedScopes"
)
.
HasForeignKey
(
"ClientId"
)
.
OnDelete
(
DeleteBehavior
.
Cascade
)
.
IsRequired
();
});
modelBuilder
.
Entity
(
"Volo.Abp.IdentityServer.Clients.ClientSecret"
,
b
=>
{
b
.
HasOne
(
"Volo.Abp.IdentityServer.Clients.Client"
,
null
)
.
WithMany
(
"ClientSecrets"
)
.
HasForeignKey
(
"ClientId"
)
.
OnDelete
(
DeleteBehavior
.
Cascade
)
.
IsRequired
();
});
modelBuilder
.
Entity
(
"Volo.Abp.IdentityServer.IdentityResources.IdentityClaim"
,
b
=>
{
b
.
HasOne
(
"Volo.Abp.IdentityServer.IdentityResources.IdentityResource"
,
null
)
.
WithMany
(
"UserClaims"
)
.
HasForeignKey
(
"IdentityResourceId"
)
.
OnDelete
(
DeleteBehavior
.
Cascade
)
.
IsRequired
();
});
modelBuilder
.
Entity
(
"Volo.Abp.TenantManagement.TenantConnectionString"
,
b
=>
{
b
.
HasOne
(
"Volo.Abp.TenantManagement.Tenant"
,
null
)
.
WithMany
(
"ConnectionStrings"
)
.
HasForeignKey
(
"TenantId"
)
.
OnDelete
(
DeleteBehavior
.
Cascade
)
.
IsRequired
();
});
#pragma warning restore 612, 618
}
}
}
samples/EasyMall/aspnet-core/src/EasyMall.EntityFrameworkCore.DbMigrations/Migrations/20200428164406_ProductEntitiesAdjustment.cs
0 → 100644
View file @
f56695c2
using
System
;
using
Microsoft.EntityFrameworkCore.Migrations
;
namespace
EasyMall.Migrations
{
public
partial
class
ProductEntitiesAdjustment
:
Migration
{
protected
override
void
Up
(
MigrationBuilder
migrationBuilder
)
{
migrationBuilder
.
DropForeignKey
(
name
:
"FK_ProductsProductDetails_ProductsProducts_ProductId"
,
table
:
"ProductsProductDetails"
);
migrationBuilder
.
DropPrimaryKey
(
name
:
"PK_ProductsProductDetails"
,
table
:
"ProductsProductDetails"
);
migrationBuilder
.
DropColumn
(
name
:
"ProductId"
,
table
:
"ProductsProductDetails"
);
migrationBuilder
.
AddColumn
<
Guid
>(
name
:
"ProductDetailId"
,
table
:
"ProductsProductSkus"
,
nullable
:
true
);
migrationBuilder
.
AddColumn
<
Guid
>(
name
:
"ProductDetailId"
,
table
:
"ProductsProducts"
,
nullable
:
false
,
defaultValue
:
new
Guid
(
"00000000-0000-0000-0000-000000000000"
));
migrationBuilder
.
AddColumn
<
Guid
>(
name
:
"Id"
,
table
:
"ProductsProductDetails"
,
nullable
:
false
,
defaultValue
:
new
Guid
(
"00000000-0000-0000-0000-000000000000"
));
migrationBuilder
.
AddColumn
<
string
>(
name
:
"ConcurrencyStamp"
,
table
:
"ProductsProductDetails"
,
nullable
:
true
);
migrationBuilder
.
AddColumn
<
DateTime
>(
name
:
"CreationTime"
,
table
:
"ProductsProductDetails"
,
nullable
:
false
,
defaultValue
:
new
DateTime
(
1
,
1
,
1
,
0
,
0
,
0
,
0
,
DateTimeKind
.
Unspecified
));
migrationBuilder
.
AddColumn
<
Guid
>(
name
:
"CreatorId"
,
table
:
"ProductsProductDetails"
,
nullable
:
true
);
migrationBuilder
.
AddColumn
<
Guid
>(
name
:
"DeleterId"
,
table
:
"ProductsProductDetails"
,
nullable
:
true
);
migrationBuilder
.
AddColumn
<
DateTime
>(
name
:
"DeletionTime"
,
table
:
"ProductsProductDetails"
,
nullable
:
true
);
migrationBuilder
.
AddColumn
<
string
>(
name
:
"ExtraProperties"
,
table
:
"ProductsProductDetails"
,
nullable
:
true
);
migrationBuilder
.
AddColumn
<
bool
>(
name
:
"IsDeleted"
,
table
:
"ProductsProductDetails"
,
nullable
:
false
,
defaultValue
:
false
);
migrationBuilder
.
AddColumn
<
DateTime
>(
name
:
"LastModificationTime"
,
table
:
"ProductsProductDetails"
,
nullable
:
true
);
migrationBuilder
.
AddColumn
<
Guid
>(
name
:
"LastModifierId"
,
table
:
"ProductsProductDetails"
,
nullable
:
true
);
migrationBuilder
.
AddPrimaryKey
(
name
:
"PK_ProductsProductDetails"
,
table
:
"ProductsProductDetails"
,
column
:
"Id"
);
}
protected
override
void
Down
(
MigrationBuilder
migrationBuilder
)
{
migrationBuilder
.
DropPrimaryKey
(
name
:
"PK_ProductsProductDetails"
,
table
:
"ProductsProductDetails"
);
migrationBuilder
.
DropColumn
(
name
:
"ProductDetailId"
,
table
:
"ProductsProductSkus"
);
migrationBuilder
.
DropColumn
(
name
:
"ProductDetailId"
,
table
:
"ProductsProducts"
);
migrationBuilder
.
DropColumn
(
name
:
"Id"
,
table
:
"ProductsProductDetails"
);
migrationBuilder
.
DropColumn
(
name
:
"ConcurrencyStamp"
,
table
:
"ProductsProductDetails"
);
migrationBuilder
.
DropColumn
(
name
:
"CreationTime"
,
table
:
"ProductsProductDetails"
);
migrationBuilder
.
DropColumn
(
name
:
"CreatorId"
,
table
:
"ProductsProductDetails"
);
migrationBuilder
.
DropColumn
(
name
:
"DeleterId"
,
table
:
"ProductsProductDetails"
);
migrationBuilder
.
DropColumn
(
name
:
"DeletionTime"
,
table
:
"ProductsProductDetails"
);
migrationBuilder
.
DropColumn
(
name
:
"ExtraProperties"
,
table
:
"ProductsProductDetails"
);
migrationBuilder
.
DropColumn
(
name
:
"IsDeleted"
,
table
:
"ProductsProductDetails"
);
migrationBuilder
.
DropColumn
(
name
:
"LastModificationTime"
,
table
:
"ProductsProductDetails"
);
migrationBuilder
.
DropColumn
(
name
:
"LastModifierId"
,
table
:
"ProductsProductDetails"
);
migrationBuilder
.
AddColumn
<
Guid
>(
name
:
"ProductId"
,
table
:
"ProductsProductDetails"
,
type
:
"uniqueidentifier"
,
nullable
:
false
,
defaultValue
:
new
Guid
(
"00000000-0000-0000-0000-000000000000"
));
migrationBuilder
.
AddPrimaryKey
(
name
:
"PK_ProductsProductDetails"
,
table
:
"ProductsProductDetails"
,
column
:
"ProductId"
);
migrationBuilder
.
AddForeignKey
(
name
:
"FK_ProductsProductDetails_ProductsProducts_ProductId"
,
table
:
"ProductsProductDetails"
,
column
:
"ProductId"
,
principalTable
:
"ProductsProducts"
,
principalColumn
:
"Id"
,
onDelete
:
ReferentialAction
.
Cascade
);
}
}
}
samples/EasyMall/aspnet-core/src/EasyMall.EntityFrameworkCore.DbMigrations/Migrations/EasyMallMigrationsDbContextModelSnapshot.cs
View file @
f56695c2
...
...
@@ -134,6 +134,59 @@ namespace EasyMall.Migrations
b
.
ToTable
(
"ProductsProductCategories"
);
});
modelBuilder
.
Entity
(
"EasyAbp.EShop.Products.ProductDetails.ProductDetail"
,
b
=>
{
b
.
Property
<
Guid
>(
"Id"
)
.
ValueGeneratedOnAdd
()
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
string
>(
"ConcurrencyStamp"
)
.
IsConcurrencyToken
()
.
HasColumnName
(
"ConcurrencyStamp"
)
.
HasColumnType
(
"nvarchar(max)"
);
b
.
Property
<
DateTime
>(
"CreationTime"
)
.
HasColumnName
(
"CreationTime"
)
.
HasColumnType
(
"datetime2"
);
b
.
Property
<
Guid
?>(
"CreatorId"
)
.
HasColumnName
(
"CreatorId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
Guid
?>(
"DeleterId"
)
.
HasColumnName
(
"DeleterId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
DateTime
?>(
"DeletionTime"
)
.
HasColumnName
(
"DeletionTime"
)
.
HasColumnType
(
"datetime2"
);
b
.
Property
<
string
>(
"Description"
)
.
HasColumnType
(
"nvarchar(max)"
);
b
.
Property
<
string
>(
"ExtraProperties"
)
.
HasColumnName
(
"ExtraProperties"
)
.
HasColumnType
(
"nvarchar(max)"
);
b
.
Property
<
bool
>(
"IsDeleted"
)
.
ValueGeneratedOnAdd
()
.
HasColumnName
(
"IsDeleted"
)
.
HasColumnType
(
"bit"
)
.
HasDefaultValue
(
false
);
b
.
Property
<
DateTime
?>(
"LastModificationTime"
)
.
HasColumnName
(
"LastModificationTime"
)
.
HasColumnType
(
"datetime2"
);
b
.
Property
<
Guid
?>(
"LastModifierId"
)
.
HasColumnName
(
"LastModifierId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
HasKey
(
"Id"
);
b
.
ToTable
(
"ProductsProductDetails"
);
});
modelBuilder
.
Entity
(
"EasyAbp.EShop.Products.ProductStores.ProductStore"
,
b
=>
{
b
.
Property
<
Guid
>(
"Id"
)
...
...
@@ -319,6 +372,9 @@ namespace EasyMall.Migrations
b
.
Property
<
string
>(
"MediaResources"
)
.
HasColumnType
(
"nvarchar(max)"
);
b
.
Property
<
Guid
>(
"ProductDetailId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
Guid
>(
"ProductTypeId"
)
.
HasColumnType
(
"uniqueidentifier"
);
...
...
@@ -437,19 +493,6 @@ namespace EasyMall.Migrations
b
.
ToTable
(
"ProductsProductAttributeOptions"
);
});
modelBuilder
.
Entity
(
"EasyAbp.EShop.Products.Products.ProductDetail"
,
b
=>
{
b
.
Property
<
Guid
>(
"ProductId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
string
>(
"Description"
)
.
HasColumnType
(
"nvarchar(max)"
);
b
.
HasKey
(
"ProductId"
);
b
.
ToTable
(
"ProductsProductDetails"
);
});
modelBuilder
.
Entity
(
"EasyAbp.EShop.Products.Products.ProductSku"
,
b
=>
{
b
.
Property
<
Guid
>(
"Id"
)
...
...
@@ -501,6 +544,9 @@ namespace EasyMall.Migrations
b
.
Property
<
decimal
>(
"Price"
)
.
HasColumnType
(
"decimal(18,6)"
);
b
.
Property
<
Guid
?>(
"ProductDetailId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
Guid
?>(
"ProductId"
)
.
HasColumnType
(
"uniqueidentifier"
);
...
...
@@ -2125,15 +2171,6 @@ namespace EasyMall.Migrations
.
HasForeignKey
(
"ProductAttributeId"
);
});
modelBuilder
.
Entity
(
"EasyAbp.EShop.Products.Products.ProductDetail"
,
b
=>
{
b
.
HasOne
(
"EasyAbp.EShop.Products.Products.Product"
,
null
)
.
WithOne
(
"ProductDetail"
)
.
HasForeignKey
(
"EasyAbp.EShop.Products.Products.ProductDetail"
,
"ProductId"
)
.
OnDelete
(
DeleteBehavior
.
Cascade
)
.
IsRequired
();
});
modelBuilder
.
Entity
(
"EasyAbp.EShop.Products.Products.ProductSku"
,
b
=>
{
b
.
HasOne
(
"EasyAbp.EShop.Products.Products.Product"
,
null
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment