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
cd6f6254
Commit
cd6f6254
authored
May 02, 2020
by
gdlcf88
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Close #20: Record entity data when a product changed
parent
378d145a
Changes
25
Hide whitespace changes
Inline
Side-by-side
Showing
25 changed files
with
2925 additions
and
16 deletions
+2925
-16
ProductDetailDto.cs
...bp/EShop/Products/ProductDetails/Dtos/ProductDetailDto.cs
+1
-0
ProductDto.cs
...tracts/EasyAbp/EShop/Products/Products/Dtos/ProductDto.cs
+1
-0
ProductDetailHistoryRecorder.cs
...ts/ProductDetailHistories/ProductDetailHistoryRecorder.cs
+44
-0
ProductHistoryRecorder.cs
...EShop/Products/ProductHistories/ProductHistoryRecorder.cs
+42
-0
ProductAppService.cs
...tion/EasyAbp/EShop/Products/Products/ProductAppService.cs
+3
-3
ProductsApplicationAutoMapperProfile.cs
...bp/EShop/Products/ProductsApplicationAutoMapperProfile.cs
+1
-0
IProductDetailHistoryRepository.cs
...ProductDetailHistories/IProductDetailHistoryRepository.cs
+9
-0
ProductDetailHistory.cs
...p/Products/ProductDetailHistories/ProductDetailHistory.cs
+29
-0
IProductHistoryRepository.cs
...op/Products/ProductHistories/IProductHistoryRepository.cs
+9
-0
ProductHistory.cs
...EasyAbp/EShop/Products/ProductHistories/ProductHistory.cs
+29
-0
AttributeOptionIdsSerializer.cs
...p/EShop/Products/Products/AttributeOptionIdsSerializer.cs
+10
-3
EShopProductsEntityFrameworkCoreModule.cs
...tyFrameworkCore/EShopProductsEntityFrameworkCoreModule.cs
+4
-0
IProductsDbContext.cs
.../EShop/Products/EntityFrameworkCore/IProductsDbContext.cs
+4
-0
ProductsDbContext.cs
...p/EShop/Products/EntityFrameworkCore/ProductsDbContext.cs
+4
-0
ProductsDbContextModelCreatingExtensions.cs
...FrameworkCore/ProductsDbContextModelCreatingExtensions.cs
+16
-0
ProductDetailHistoryRepository.cs
.../ProductDetailHistories/ProductDetailHistoryRepository.cs
+14
-0
ProductHistoryRepository.cs
...hop/Products/ProductHistories/ProductHistoryRepository.cs
+14
-0
CreateModal.cshtml.cs
.../EShop/Products/Products/ProductSku/CreateModal.cshtml.cs
+8
-10
ProductDetailHistoryDomainTests.cs
...ProductDetailHistories/ProductDetailHistoryDomainTests.cs
+23
-0
ProductHistoryDomainTests.cs
...omain.Tests/ProductHistories/ProductHistoryDomainTests.cs
+23
-0
ProductDetailHistoryRepositoryTests.cs
...uctDetailHistories/ProductDetailHistoryRepositoryTests.cs
+31
-0
ProductHistoryRepositoryTests.cs
...orkCore/ProductHistories/ProductHistoryRepositoryTests.cs
+31
-0
20200502071826_AddedHistoryEntities.Designer.cs
...igrations/20200502071826_AddedHistoryEntities.Designer.cs
+2465
-0
20200502071826_AddedHistoryEntities.cs
...rations/Migrations/20200502071826_AddedHistoryEntities.cs
+52
-0
EasyMallMigrationsDbContextModelSnapshot.cs
...ns/Migrations/EasyMallMigrationsDbContextModelSnapshot.cs
+58
-0
No files found.
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application.Contracts/EasyAbp/EShop/Products/ProductDetails/Dtos/ProductDetailDto.cs
View file @
cd6f6254
...
...
@@ -3,6 +3,7 @@ using Volo.Abp.Application.Dtos;
namespace
EasyAbp.EShop.Products.ProductDetails.Dtos
{
[
Serializable
]
public
class
ProductDetailDto
:
EntityDto
<
Guid
>
{
public
string
Description
{
get
;
set
;
}
...
...
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application.Contracts/EasyAbp/EShop/Products/Products/Dtos/ProductDto.cs
View file @
cd6f6254
...
...
@@ -4,6 +4,7 @@ using Volo.Abp.Application.Dtos;
namespace
EasyAbp.EShop.Products.Products.Dtos
{
[
Serializable
]
public
class
ProductDto
:
FullAuditedEntityDto
<
Guid
>
{
public
Guid
ProductTypeId
{
get
;
set
;
}
...
...
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application/EasyAbp/EShop/Products/ProductDetailHistories/ProductDetailHistoryRecorder.cs
0 → 100644
View file @
cd6f6254
using
System.Threading.Tasks
;
using
EasyAbp.EShop.Products.ProductDetails
;
using
EasyAbp.EShop.Products.ProductDetails.Dtos
;
using
EasyAbp.EShop.Products.ProductHistories
;
using
Volo.Abp.DependencyInjection
;
using
Volo.Abp.Domain.Entities.Events
;
using
Volo.Abp.EventBus
;
using
Volo.Abp.Guids
;
using
Volo.Abp.Json
;
using
Volo.Abp.ObjectMapping
;
namespace
EasyAbp.EShop.Products.ProductDetailHistories
{
public
class
ProductDetailHistoryRecorder
:
ILocalEventHandler
<
EntityChangedEventData
<
ProductDetail
>>,
ITransientDependency
{
private
readonly
IGuidGenerator
_guidGenerator
;
private
readonly
IObjectMapper
_objectMapper
;
private
readonly
IJsonSerializer
_jsonSerializer
;
private
readonly
IProductDetailHistoryRepository
_productDetailHistoryRepository
;
public
ProductDetailHistoryRecorder
(
IGuidGenerator
guidGenerator
,
IObjectMapper
objectMapper
,
IJsonSerializer
jsonSerializer
,
IProductDetailHistoryRepository
productDetailHistoryRepository
)
{
_guidGenerator
=
guidGenerator
;
_objectMapper
=
objectMapper
;
_jsonSerializer
=
jsonSerializer
;
_productDetailHistoryRepository
=
productDetailHistoryRepository
;
}
public
async
Task
HandleEventAsync
(
EntityChangedEventData
<
ProductDetail
>
eventData
)
{
var
modificationTime
=
eventData
.
Entity
.
LastModificationTime
??
eventData
.
Entity
.
CreationTime
;
var
serializedDto
=
_jsonSerializer
.
Serialize
(
_objectMapper
.
Map
<
ProductDetail
,
ProductDetailDto
>(
eventData
.
Entity
));
await
_productDetailHistoryRepository
.
InsertAsync
(
new
ProductDetailHistory
(
_guidGenerator
.
Create
(),
eventData
.
Entity
.
Id
,
modificationTime
,
serializedDto
));
}
}
}
\ No newline at end of file
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application/EasyAbp/EShop/Products/ProductHistories/ProductHistoryRecorder.cs
0 → 100644
View file @
cd6f6254
using
System.Threading.Tasks
;
using
EasyAbp.EShop.Products.Products
;
using
EasyAbp.EShop.Products.Products.Dtos
;
using
Volo.Abp.DependencyInjection
;
using
Volo.Abp.Domain.Entities.Events
;
using
Volo.Abp.EventBus
;
using
Volo.Abp.Guids
;
using
Volo.Abp.Json
;
using
Volo.Abp.ObjectMapping
;
namespace
EasyAbp.EShop.Products.ProductHistories
{
public
class
ProductHistoryRecorder
:
ILocalEventHandler
<
EntityChangedEventData
<
Product
>>,
ITransientDependency
{
private
readonly
IGuidGenerator
_guidGenerator
;
private
readonly
IObjectMapper
_objectMapper
;
private
readonly
IJsonSerializer
_jsonSerializer
;
private
readonly
IProductHistoryRepository
_productHistoryRepository
;
public
ProductHistoryRecorder
(
IGuidGenerator
guidGenerator
,
IObjectMapper
objectMapper
,
IJsonSerializer
jsonSerializer
,
IProductHistoryRepository
productHistoryRepository
)
{
_guidGenerator
=
guidGenerator
;
_objectMapper
=
objectMapper
;
_jsonSerializer
=
jsonSerializer
;
_productHistoryRepository
=
productHistoryRepository
;
}
public
async
Task
HandleEventAsync
(
EntityChangedEventData
<
Product
>
eventData
)
{
var
modificationTime
=
eventData
.
Entity
.
LastModificationTime
??
eventData
.
Entity
.
CreationTime
;
var
serializedDto
=
_jsonSerializer
.
Serialize
(
_objectMapper
.
Map
<
Product
,
ProductDto
>(
eventData
.
Entity
));
await
_productHistoryRepository
.
InsertAsync
(
new
ProductHistory
(
_guidGenerator
.
Create
(),
eventData
.
Entity
.
Id
,
modificationTime
,
serializedDto
));
}
}
}
\ No newline at end of file
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application/EasyAbp/EShop/Products/Products/ProductAppService.cs
View file @
cd6f6254
...
...
@@ -65,7 +65,7 @@ namespace EasyAbp.EShop.Products.Products
await
Repository
.
InsertAsync
(
product
,
autoSave
:
true
);
await
CheckProductDetail
Id
Async
(
product
.
Id
,
input
.
ProductDetailId
);
await
CheckProductDetail
Available
Async
(
product
.
Id
,
input
.
ProductDetailId
);
await
AddProductToStoreAsync
(
product
.
Id
,
input
.
StoreId
);
...
...
@@ -74,7 +74,7 @@ namespace EasyAbp.EShop.Products.Products
return
MapToGetOutputDto
(
product
);
}
pr
ivate
async
Task
CheckProductDetailId
Async
(
Guid
currentProductId
,
Guid
desiredProductDetailId
)
pr
otected
virtual
async
Task
CheckProductDetailAvailable
Async
(
Guid
currentProductId
,
Guid
desiredProductDetailId
)
{
var
otherOwner
=
await
_repository
.
FindAsync
(
x
=>
x
.
ProductDetailId
==
desiredProductDetailId
&&
x
.
Id
!=
currentProductId
);
...
...
@@ -109,7 +109,7 @@ namespace EasyAbp.EShop.Products.Products
await
Repository
.
UpdateAsync
(
product
,
autoSave
:
true
);
await
CheckProductDetail
Id
Async
(
product
.
Id
,
input
.
ProductDetailId
);
await
CheckProductDetail
Available
Async
(
product
.
Id
,
input
.
ProductDetailId
);
await
UpdateProductCategoriesAsync
(
product
.
Id
,
input
.
CategoryIds
);
...
...
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Application/EasyAbp/EShop/Products/ProductsApplicationAutoMapperProfile.cs
View file @
cd6f6254
...
...
@@ -9,6 +9,7 @@ using EasyAbp.EShop.Products.ProductCategories.Dtos;
using
AutoMapper
;
using
EasyAbp.EShop.Products.ProductDetails
;
using
EasyAbp.EShop.Products.ProductDetails.Dtos
;
using
EasyAbp.EShop.Products.ProductDetailHistories
;
using
Volo.Abp.AutoMapper
;
namespace
EasyAbp.EShop.Products
...
...
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain/EasyAbp/EShop/Products/ProductDetailHistories/IProductDetailHistoryRepository.cs
0 → 100644
View file @
cd6f6254
using
System
;
using
Volo.Abp.Domain.Repositories
;
namespace
EasyAbp.EShop.Products.ProductDetailHistories
{
public
interface
IProductDetailHistoryRepository
:
IRepository
<
ProductDetailHistory
,
Guid
>
{
}
}
\ No newline at end of file
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain/EasyAbp/EShop/Products/ProductDetailHistories/ProductDetailHistory.cs
0 → 100644
View file @
cd6f6254
using
System
;
using
JetBrains.Annotations
;
using
Volo.Abp.Domain.Entities
;
namespace
EasyAbp.EShop.Products.ProductDetailHistories
{
public
class
ProductDetailHistory
:
AggregateRoot
<
Guid
>
{
public
virtual
Guid
ProductDetailId
{
get
;
protected
set
;
}
public
virtual
DateTime
ModificationTime
{
get
;
protected
set
;
}
[
NotNull
]
public
virtual
string
SerializedDto
{
get
;
protected
set
;
}
protected
ProductDetailHistory
()
{}
public
ProductDetailHistory
(
Guid
id
,
Guid
productDetailId
,
DateTime
modificationTime
,
[
NotNull
]
string
serializedDto
)
:
base
(
id
)
{
ProductDetailId
=
productDetailId
;
ModificationTime
=
modificationTime
;
SerializedDto
=
serializedDto
;
}
}
}
\ No newline at end of file
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain/EasyAbp/EShop/Products/ProductHistories/IProductHistoryRepository.cs
0 → 100644
View file @
cd6f6254
using
System
;
using
Volo.Abp.Domain.Repositories
;
namespace
EasyAbp.EShop.Products.ProductHistories
{
public
interface
IProductHistoryRepository
:
IRepository
<
ProductHistory
,
Guid
>
{
}
}
\ No newline at end of file
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain/EasyAbp/EShop/Products/ProductHistories/ProductHistory.cs
0 → 100644
View file @
cd6f6254
using
System
;
using
JetBrains.Annotations
;
using
Volo.Abp.Domain.Entities
;
namespace
EasyAbp.EShop.Products.ProductHistories
{
public
class
ProductHistory
:
AggregateRoot
<
Guid
>
{
public
virtual
Guid
ProductId
{
get
;
protected
set
;
}
public
virtual
DateTime
ModificationTime
{
get
;
protected
set
;
}
[
NotNull
]
public
virtual
string
SerializedDto
{
get
;
protected
set
;
}
protected
ProductHistory
()
{}
public
ProductHistory
(
Guid
id
,
Guid
productId
,
DateTime
modificationTime
,
[
NotNull
]
string
serializedDto
)
:
base
(
id
)
{
ProductId
=
productId
;
ModificationTime
=
modificationTime
;
SerializedDto
=
serializedDto
;
}
}
}
\ No newline at end of file
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Domain/EasyAbp/EShop/Products/Products/AttributeOptionIdsSerializer.cs
View file @
cd6f6254
...
...
@@ -2,13 +2,20 @@
using
System.Collections.Generic
;
using
System.Linq
;
using
System.Threading.Tasks
;
using
Newtonsoft.Json
;
using
Volo.Abp.DependencyInjection
;
using
Volo.Abp.Json
;
namespace
EasyAbp.EShop.Products.Products
{
public
class
AttributeOptionIdsSerializer
:
IAttributeOptionIdsSerializer
,
ITransientDependency
{
private
readonly
IJsonSerializer
_jsonSerializer
;
public
AttributeOptionIdsSerializer
(
IJsonSerializer
jsonSerializer
)
{
_jsonSerializer
=
jsonSerializer
;
}
public
async
Task
<
string
>
FormatAsync
(
string
serializedAttributeOptionIds
)
{
return
await
SerializeAsync
(
await
DeserializeAsync
(
serializedAttributeOptionIds
));
...
...
@@ -16,12 +23,12 @@ namespace EasyAbp.EShop.Products.Products
public
Task
<
string
>
SerializeAsync
(
IEnumerable
<
Guid
>
attributeOptionIds
)
{
return
Task
.
FromResult
(
JsonConvert
.
SerializeObject
(
attributeOptionIds
.
OrderBy
(
x
=>
x
)));
return
Task
.
FromResult
(
_jsonSerializer
.
Serialize
(
attributeOptionIds
.
OrderBy
(
x
=>
x
)));
}
public
Task
<
IEnumerable
<
Guid
>>
DeserializeAsync
(
string
serializedAttributeOptionIds
)
{
return
Task
.
FromResult
(
JsonConvert
.
DeserializeObject
<
IEnumerable
<
Guid
>>(
serializedAttributeOptionIds
));
return
Task
.
FromResult
(
_jsonSerializer
.
Deserialize
<
IEnumerable
<
Guid
>>(
serializedAttributeOptionIds
));
}
}
}
\ No newline at end of file
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.EntityFrameworkCore/EasyAbp/EShop/Products/EntityFrameworkCore/EShopProductsEntityFrameworkCoreModule.cs
View file @
cd6f6254
using
EasyAbp.EShop.Products.ProductDetailHistories
;
using
EasyAbp.EShop.Products.ProductHistories
;
using
EasyAbp.EShop.Products.ProductStores
;
using
EasyAbp.EShop.Products.ProductCategories
;
using
EasyAbp.EShop.Products.ProductTypes
;
...
...
@@ -29,6 +31,8 @@ namespace EasyAbp.EShop.Products.EntityFrameworkCore
options
.
AddRepository
<
ProductType
,
ProductTypeRepository
>();
options
.
AddRepository
<
ProductCategory
,
ProductCategoryRepository
>();
options
.
AddRepository
<
ProductStore
,
ProductStoreRepository
>();
options
.
AddRepository
<
ProductHistory
,
ProductHistoryRepository
>();
options
.
AddRepository
<
ProductDetailHistory
,
ProductDetailHistoryRepository
>();
});
}
}
...
...
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.EntityFrameworkCore/EasyAbp/EShop/Products/EntityFrameworkCore/IProductsDbContext.cs
View file @
cd6f6254
...
...
@@ -7,6 +7,8 @@ using EasyAbp.EShop.Products.ProductTypes;
using
EasyAbp.EShop.Products.ProductCategories
;
using
EasyAbp.EShop.Products.ProductDetails
;
using
EasyAbp.EShop.Products.ProductStores
;
using
EasyAbp.EShop.Products.ProductHistories
;
using
EasyAbp.EShop.Products.ProductDetailHistories
;
namespace
EasyAbp.EShop.Products.EntityFrameworkCore
{
...
...
@@ -25,5 +27,7 @@ namespace EasyAbp.EShop.Products.EntityFrameworkCore
DbSet
<
ProductType
>
ProductTypes
{
get
;
set
;
}
DbSet
<
ProductCategory
>
ProductCategories
{
get
;
set
;
}
DbSet
<
ProductStore
>
ProductStores
{
get
;
set
;
}
DbSet
<
ProductHistory
>
ProductHistories
{
get
;
set
;
}
DbSet
<
ProductDetailHistory
>
ProductDetailHistories
{
get
;
set
;
}
}
}
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.EntityFrameworkCore/EasyAbp/EShop/Products/EntityFrameworkCore/ProductsDbContext.cs
View file @
cd6f6254
...
...
@@ -7,6 +7,8 @@ using EasyAbp.EShop.Products.ProductTypes;
using
EasyAbp.EShop.Products.ProductCategories
;
using
EasyAbp.EShop.Products.ProductDetails
;
using
EasyAbp.EShop.Products.ProductStores
;
using
EasyAbp.EShop.Products.ProductHistories
;
using
EasyAbp.EShop.Products.ProductDetailHistories
;
namespace
EasyAbp.EShop.Products.EntityFrameworkCore
{
...
...
@@ -25,6 +27,8 @@ namespace EasyAbp.EShop.Products.EntityFrameworkCore
public
DbSet
<
ProductType
>
ProductTypes
{
get
;
set
;
}
public
DbSet
<
ProductCategory
>
ProductCategories
{
get
;
set
;
}
public
DbSet
<
ProductStore
>
ProductStores
{
get
;
set
;
}
public
DbSet
<
ProductHistory
>
ProductHistories
{
get
;
set
;
}
public
DbSet
<
ProductDetailHistory
>
ProductDetailHistories
{
get
;
set
;
}
public
ProductsDbContext
(
DbContextOptions
<
ProductsDbContext
>
options
)
:
base
(
options
)
...
...
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.EntityFrameworkCore/EasyAbp/EShop/Products/EntityFrameworkCore/ProductsDbContextModelCreatingExtensions.cs
View file @
cd6f6254
using
EasyAbp.EShop.Products.ProductDetailHistories
;
using
EasyAbp.EShop.Products.ProductHistories
;
using
EasyAbp.EShop.Products.ProductStores
;
using
EasyAbp.EShop.Products.ProductCategories
;
using
EasyAbp.EShop.Products.ProductTypes
;
...
...
@@ -110,6 +112,20 @@ namespace EasyAbp.EShop.Products.EntityFrameworkCore
b
.
ConfigureByConvention
();
/* Configure more properties here */
});
builder
.
Entity
<
ProductHistory
>(
b
=>
{
b
.
ToTable
(
options
.
TablePrefix
+
"ProductHistories"
,
options
.
Schema
);
b
.
ConfigureByConvention
();
/* Configure more properties here */
});
builder
.
Entity
<
ProductDetailHistory
>(
b
=>
{
b
.
ToTable
(
options
.
TablePrefix
+
"ProductDetailHistories"
,
options
.
Schema
);
b
.
ConfigureByConvention
();
/* Configure more properties here */
});
}
}
}
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.EntityFrameworkCore/EasyAbp/EShop/Products/ProductDetailHistories/ProductDetailHistoryRepository.cs
0 → 100644
View file @
cd6f6254
using
System
;
using
EasyAbp.EShop.Products.EntityFrameworkCore
;
using
Volo.Abp.Domain.Repositories.EntityFrameworkCore
;
using
Volo.Abp.EntityFrameworkCore
;
namespace
EasyAbp.EShop.Products.ProductDetailHistories
{
public
class
ProductDetailHistoryRepository
:
EfCoreRepository
<
ProductsDbContext
,
ProductDetailHistory
,
Guid
>,
IProductDetailHistoryRepository
{
public
ProductDetailHistoryRepository
(
IDbContextProvider
<
ProductsDbContext
>
dbContextProvider
)
:
base
(
dbContextProvider
)
{
}
}
}
\ No newline at end of file
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.EntityFrameworkCore/EasyAbp/EShop/Products/ProductHistories/ProductHistoryRepository.cs
0 → 100644
View file @
cd6f6254
using
System
;
using
EasyAbp.EShop.Products.EntityFrameworkCore
;
using
Volo.Abp.Domain.Repositories.EntityFrameworkCore
;
using
Volo.Abp.EntityFrameworkCore
;
namespace
EasyAbp.EShop.Products.ProductHistories
{
public
class
ProductHistoryRepository
:
EfCoreRepository
<
ProductsDbContext
,
ProductHistory
,
Guid
>,
IProductHistoryRepository
{
public
ProductHistoryRepository
(
IDbContextProvider
<
ProductsDbContext
>
dbContextProvider
)
:
base
(
dbContextProvider
)
{
}
}
}
\ No newline at end of file
modules/EasyAbp.EShop.Products/src/EasyAbp.EShop.Products.Web/Pages/EShop/Products/Products/ProductSku/CreateModal.cshtml.cs
View file @
cd6f6254
...
...
@@ -2,18 +2,12 @@ using System;
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
EasyAbp.EShop.Products.Products
;
using
EasyAbp.EShop.Products.Products.Dtos
;
using
EasyAbp.EShop.Products.ProductTypes
;
using
EasyAbp.EShop.Products.Web.Pages.EShop.Products.Products.Product.ViewModels
;
using
EasyAbp.EShop.Products.Web.Pages.EShop.Products.Products.ProductSku.ViewModels
;
using
Microsoft.AspNetCore.Mvc
;
using
Microsoft.AspNetCore.Mvc.Rendering
;
using
Newtonsoft.Json
;
using
Volo.Abp.Application.Dtos
;
using
Volo.Abp.Json
;
namespace
EasyAbp.EShop.Products.Web.Pages.EShop.Products.Products.ProductSku
{
...
...
@@ -34,11 +28,15 @@ namespace EasyAbp.EShop.Products.Web.Pages.EShop.Products.Products.ProductSku
public
Dictionary
<
string
,
Guid
>
SelectedAttributeOptionIdDict
{
get
;
set
;
}
public
Dictionary
<
string
,
ICollection
<
SelectListItem
>>
Attributes
{
get
;
set
;
}
private
readonly
IJsonSerializer
_jsonSerializer
;
private
readonly
IProductAppService
_productAppService
;
public
CreateModalModel
(
IProductAppService
productAppService
)
public
CreateModalModel
(
IJsonSerializer
jsonSerializer
,
IProductAppService
productAppService
)
{
_jsonSerializer
=
jsonSerializer
;
_productAppService
=
productAppService
;
}
...
...
@@ -60,7 +58,7 @@ namespace EasyAbp.EShop.Products.Web.Pages.EShop.Products.Products.ProductSku
{
var
createDto
=
ObjectMapper
.
Map
<
CreateEditProductSkuViewModel
,
CreateProductSkuDto
>(
ProductSku
);
createDto
.
SerializedAttributeOptionIds
=
JsonConvert
.
SerializeObject
(
SelectedAttributeOptionIdDict
.
Values
);
createDto
.
SerializedAttributeOptionIds
=
_jsonSerializer
.
Serialize
(
SelectedAttributeOptionIdDict
.
Values
);
await
_productAppService
.
CreateSkuAsync
(
ProductId
,
StoreId
,
createDto
);
...
...
modules/EasyAbp.EShop.Products/test/EasyAbp.EShop.Products.Domain.Tests/ProductDetailHistories/ProductDetailHistoryDomainTests.cs
0 → 100644
View file @
cd6f6254
using
System.Threading.Tasks
;
using
Shouldly
;
using
Xunit
;
namespace
EasyAbp.EShop.Products.ProductDetailHistories
{
public
class
ProductDetailHistoryDomainTests
:
ProductsDomainTestBase
{
public
ProductDetailHistoryDomainTests
()
{
}
[
Fact
]
public
async
Task
Test1
()
{
// Arrange
// Assert
// Assert
}
}
}
modules/EasyAbp.EShop.Products/test/EasyAbp.EShop.Products.Domain.Tests/ProductHistories/ProductHistoryDomainTests.cs
0 → 100644
View file @
cd6f6254
using
System.Threading.Tasks
;
using
Shouldly
;
using
Xunit
;
namespace
EasyAbp.EShop.Products.ProductHistories
{
public
class
ProductHistoryDomainTests
:
ProductsDomainTestBase
{
public
ProductHistoryDomainTests
()
{
}
[
Fact
]
public
async
Task
Test1
()
{
// Arrange
// Assert
// Assert
}
}
}
modules/EasyAbp.EShop.Products/test/EasyAbp.EShop.Products.EntityFrameworkCore.Tests/EntityFrameworkCore/ProductDetailHistories/ProductDetailHistoryRepositoryTests.cs
0 → 100644
View file @
cd6f6254
using
System
;
using
System.Threading.Tasks
;
using
EasyAbp.EShop.Products.ProductDetailHistories
;
using
Volo.Abp.Domain.Repositories
;
using
Xunit
;
namespace
EasyAbp.EShop.Products.EntityFrameworkCore.ProductDetailHistories
{
public
class
ProductDetailHistoryRepositoryTests
:
ProductsEntityFrameworkCoreTestBase
{
private
readonly
IRepository
<
ProductDetailHistory
,
Guid
>
_productDetailHistoryRepository
;
public
ProductDetailHistoryRepositoryTests
()
{
_productDetailHistoryRepository
=
GetRequiredService
<
IRepository
<
ProductDetailHistory
,
Guid
>>();
}
[
Fact
]
public
async
Task
Test1
()
{
await
WithUnitOfWorkAsync
(
async
()
=>
{
// Arrange
// Act
//Assert
});
}
}
}
modules/EasyAbp.EShop.Products/test/EasyAbp.EShop.Products.EntityFrameworkCore.Tests/EntityFrameworkCore/ProductHistories/ProductHistoryRepositoryTests.cs
0 → 100644
View file @
cd6f6254
using
System
;
using
System.Threading.Tasks
;
using
EasyAbp.EShop.Products.ProductHistories
;
using
Volo.Abp.Domain.Repositories
;
using
Xunit
;
namespace
EasyAbp.EShop.Products.EntityFrameworkCore.ProductHistories
{
public
class
ProductHistoryRepositoryTests
:
ProductsEntityFrameworkCoreTestBase
{
private
readonly
IRepository
<
ProductHistory
,
Guid
>
_productHistoryRepository
;
public
ProductHistoryRepositoryTests
()
{
_productHistoryRepository
=
GetRequiredService
<
IRepository
<
ProductHistory
,
Guid
>>();
}
[
Fact
]
public
async
Task
Test1
()
{
await
WithUnitOfWorkAsync
(
async
()
=>
{
// Arrange
// Act
//Assert
});
}
}
}
samples/EasyMall/aspnet-core/src/EasyMall.EntityFrameworkCore.DbMigrations/Migrations/20200502071826_AddedHistoryEntities.Designer.cs
0 → 100644
View file @
cd6f6254
// <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
(
"20200502071826_AddedHistoryEntities"
)]
partial
class
AddedHistoryEntities
{
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
<
bool
>(
"IsHidden"
)
.
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
?>(
"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.ProductDetailHistories.ProductDetailHistory"
,
b
=>
{
b
.
Property
<
Guid
>(
"Id"
)
.
ValueGeneratedOnAdd
()
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
string
>(
"ConcurrencyStamp"
)
.
IsConcurrencyToken
()
.
HasColumnName
(
"ConcurrencyStamp"
)
.
HasColumnType
(
"nvarchar(max)"
);
b
.
Property
<
string
>(
"ExtraProperties"
)
.
HasColumnName
(
"ExtraProperties"
)
.
HasColumnType
(
"nvarchar(max)"
);
b
.
Property
<
DateTime
>(
"ModificationTime"
)
.
HasColumnType
(
"datetime2"
);
b
.
Property
<
Guid
>(
"ProductDetailId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
string
>(
"SerializedDto"
)
.
HasColumnType
(
"nvarchar(max)"
);
b
.
HasKey
(
"Id"
);
b
.
ToTable
(
"ProductsProductDetailHistories"
);
});
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.ProductHistories.ProductHistory"
,
b
=>
{
b
.
Property
<
Guid
>(
"Id"
)
.
ValueGeneratedOnAdd
()
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
string
>(
"ConcurrencyStamp"
)
.
IsConcurrencyToken
()
.
HasColumnName
(
"ConcurrencyStamp"
)
.
HasColumnType
(
"nvarchar(max)"
);
b
.
Property
<
string
>(
"ExtraProperties"
)
.
HasColumnName
(
"ExtraProperties"
)
.
HasColumnType
(
"nvarchar(max)"
);
b
.
Property
<
DateTime
>(
"ModificationTime"
)
.
HasColumnType
(
"datetime2"
);
b
.
Property
<
Guid
>(
"ProductId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
string
>(
"SerializedDto"
)
.
HasColumnType
(
"nvarchar(max)"
);
b
.
HasKey
(
"Id"
);
b
.
ToTable
(
"ProductsProductHistories"
);
});
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
>(
"IsHidden"
)
.
HasColumnType
(
"bit"
);
b
.
Property
<
bool
>(
"IsPublished"
)
.
HasColumnType
(
"bit"
);
b
.
Property
<
bool
>(
"IsStatic"
)
.
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/20200502071826_AddedHistoryEntities.cs
0 → 100644
View file @
cd6f6254
using
System
;
using
Microsoft.EntityFrameworkCore.Migrations
;
namespace
EasyMall.Migrations
{
public
partial
class
AddedHistoryEntities
:
Migration
{
protected
override
void
Up
(
MigrationBuilder
migrationBuilder
)
{
migrationBuilder
.
CreateTable
(
name
:
"ProductsProductDetailHistories"
,
columns
:
table
=>
new
{
Id
=
table
.
Column
<
Guid
>(
nullable
:
false
),
ExtraProperties
=
table
.
Column
<
string
>(
nullable
:
true
),
ConcurrencyStamp
=
table
.
Column
<
string
>(
nullable
:
true
),
ProductDetailId
=
table
.
Column
<
Guid
>(
nullable
:
false
),
ModificationTime
=
table
.
Column
<
DateTime
>(
nullable
:
false
),
SerializedDto
=
table
.
Column
<
string
>(
nullable
:
true
)
},
constraints
:
table
=>
{
table
.
PrimaryKey
(
"PK_ProductsProductDetailHistories"
,
x
=>
x
.
Id
);
});
migrationBuilder
.
CreateTable
(
name
:
"ProductsProductHistories"
,
columns
:
table
=>
new
{
Id
=
table
.
Column
<
Guid
>(
nullable
:
false
),
ExtraProperties
=
table
.
Column
<
string
>(
nullable
:
true
),
ConcurrencyStamp
=
table
.
Column
<
string
>(
nullable
:
true
),
ProductId
=
table
.
Column
<
Guid
>(
nullable
:
false
),
ModificationTime
=
table
.
Column
<
DateTime
>(
nullable
:
false
),
SerializedDto
=
table
.
Column
<
string
>(
nullable
:
true
)
},
constraints
:
table
=>
{
table
.
PrimaryKey
(
"PK_ProductsProductHistories"
,
x
=>
x
.
Id
);
});
}
protected
override
void
Down
(
MigrationBuilder
migrationBuilder
)
{
migrationBuilder
.
DropTable
(
name
:
"ProductsProductDetailHistories"
);
migrationBuilder
.
DropTable
(
name
:
"ProductsProductHistories"
);
}
}
}
samples/EasyMall/aspnet-core/src/EasyMall.EntityFrameworkCore.DbMigrations/Migrations/EasyMallMigrationsDbContextModelSnapshot.cs
View file @
cd6f6254
...
...
@@ -137,6 +137,35 @@ namespace EasyMall.Migrations
b
.
ToTable
(
"ProductsProductCategories"
);
});
modelBuilder
.
Entity
(
"EasyAbp.EShop.Products.ProductDetailHistories.ProductDetailHistory"
,
b
=>
{
b
.
Property
<
Guid
>(
"Id"
)
.
ValueGeneratedOnAdd
()
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
string
>(
"ConcurrencyStamp"
)
.
IsConcurrencyToken
()
.
HasColumnName
(
"ConcurrencyStamp"
)
.
HasColumnType
(
"nvarchar(max)"
);
b
.
Property
<
string
>(
"ExtraProperties"
)
.
HasColumnName
(
"ExtraProperties"
)
.
HasColumnType
(
"nvarchar(max)"
);
b
.
Property
<
DateTime
>(
"ModificationTime"
)
.
HasColumnType
(
"datetime2"
);
b
.
Property
<
Guid
>(
"ProductDetailId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
string
>(
"SerializedDto"
)
.
HasColumnType
(
"nvarchar(max)"
);
b
.
HasKey
(
"Id"
);
b
.
ToTable
(
"ProductsProductDetailHistories"
);
});
modelBuilder
.
Entity
(
"EasyAbp.EShop.Products.ProductDetails.ProductDetail"
,
b
=>
{
b
.
Property
<
Guid
>(
"Id"
)
...
...
@@ -190,6 +219,35 @@ namespace EasyMall.Migrations
b
.
ToTable
(
"ProductsProductDetails"
);
});
modelBuilder
.
Entity
(
"EasyAbp.EShop.Products.ProductHistories.ProductHistory"
,
b
=>
{
b
.
Property
<
Guid
>(
"Id"
)
.
ValueGeneratedOnAdd
()
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
string
>(
"ConcurrencyStamp"
)
.
IsConcurrencyToken
()
.
HasColumnName
(
"ConcurrencyStamp"
)
.
HasColumnType
(
"nvarchar(max)"
);
b
.
Property
<
string
>(
"ExtraProperties"
)
.
HasColumnName
(
"ExtraProperties"
)
.
HasColumnType
(
"nvarchar(max)"
);
b
.
Property
<
DateTime
>(
"ModificationTime"
)
.
HasColumnType
(
"datetime2"
);
b
.
Property
<
Guid
>(
"ProductId"
)
.
HasColumnType
(
"uniqueidentifier"
);
b
.
Property
<
string
>(
"SerializedDto"
)
.
HasColumnType
(
"nvarchar(max)"
);
b
.
HasKey
(
"Id"
);
b
.
ToTable
(
"ProductsProductHistories"
);
});
modelBuilder
.
Entity
(
"EasyAbp.EShop.Products.ProductStores.ProductStore"
,
b
=>
{
b
.
Property
<
Guid
>(
"Id"
)
...
...
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