From a8b475881959d4a88d821951a615f03e7d0d1725 Mon Sep 17 00:00:00 2001 From: sunpengfei <i@angelzzz.com> Date: 星期四, 07 八月 2025 13:28:30 +0800 Subject: [PATCH] feat:字典优化 --- FlexJobApi.Core/Models/Main/Dictionaries/Commands/SaveDictionaryDataCommand.cs | 10 FlexJobApi.Core/Entities/Tasks/TaskInfo.cs | 39 FlexJobApi.Application/FlexJobApi.Application.xml | 10 FlexJobApi.Core/Entities/Users/Enterprise.cs | 41 FlexJobApi.Core/Entities/Users/UserInfo.cs | 47 FlexJobApi.Core/Entities/Tasks/TaskInfoBenefit.cs | 11 FlexJobApi.Core/Entities/Users/UserInfoExpectJob.cs | 22 FlexJobApi.Database.Migrations/Migrations/20250807051431_UpdateDictionaryData.Designer.cs | 1832 +++++++++++++++++++++++++++++++++ FlexJobApi.Core/Entities/Common/DictionaryData.cs | 2 FlexJobApi.Core/FlexJobApi.Core.xml | 67 FlexJobApi.Application/Dictionaries/Commands/DictionaryCategoryCommandHandler.cs | 28 FlexJobApi.Database.Migrations/REDEME.MD | 2 FlexJobApi.User.Application/Enterprises/Queries/EnterprisesQueryHandler.cs | 6 FlexJobApi.Core/Entities/Users/UserInfoCredential.cs | 22 FlexJobApi.Application/Dictionaries/Commands/DictionaryDataCommandHandler.cs | 28 FlexJobApi.Database.Migrations/Migrations/DefaultDbContextModelSnapshot.cs | 147 + FlexJobApi.Core/Entities/Tasks/TaskInfoCredentialLimit.cs | 24 FlexJobApi.Database.Migrations/Migrations/20250807051431_UpdateDictionaryData.cs | 847 +++++++++++++++ 18 files changed, 3,058 insertions(+), 127 deletions(-) diff --git a/FlexJobApi.Application/Dictionaries/Commands/DictionaryCategoryCommandHandler.cs b/FlexJobApi.Application/Dictionaries/Commands/DictionaryCategoryCommandHandler.cs index c28aaeb..e334e79 100644 --- a/FlexJobApi.Application/Dictionaries/Commands/DictionaryCategoryCommandHandler.cs +++ b/FlexJobApi.Application/Dictionaries/Commands/DictionaryCategoryCommandHandler.cs @@ -1,4 +1,7 @@ 锘縰sing FlexJobApi.Core; +using Furion.DatabaseAccessor; +using Furion.FriendlyException; +using Mapster; using MediatR; using System; using System.Collections.Generic; @@ -11,10 +14,16 @@ /// <summary> /// 瀛楀吀绫诲埆鍛戒护澶勭悊鍣� /// </summary> - public class DictionaryCategoryCommandHandler : + public class DictionaryCategoryCommandHandler( + IRepository<DictionaryCategory> rep, + IRepository<DictionaryData> repDictionaryData + ) : IRequestHandler<DeleteDictionaryCategoryCommand, int>, IRequestHandler<SaveDictionaryCategoryCommand, Guid> { + private readonly IRepository<DictionaryCategory> rep = rep; + private readonly IRepository<DictionaryData> repDictionaryData = repDictionaryData; + /// <summary> /// 鍒犻櫎鏁版嵁瀛楀吀绫诲埆 /// </summary> @@ -32,12 +41,27 @@ /// <param name="request"></param> /// <param name="cancellationToken"></param> /// <returns></returns> + [UnitOfWork] public Task<Guid> Handle(SaveDictionaryCategoryCommand request, CancellationToken cancellationToken) { return request.SaveData<DictionaryCategory, SaveDictionaryCategoryCommand>( null, it => it.Id != request.Id && it.Code == request.Code, - null, + (entity) => + { + if (request.Id.HasValue && entity.Code != request.Code) + { + throw Oops.Oh(EnumErrorCodeType.s400, "缂栧彿涓嶅彲淇敼"); + //var data = repDictionaryData.AsQueryable() + // .Where(it => it.CategoryId == entity.Id) + // .ToList(); + //foreach (var item in data) + //{ + // item.Code = item.Code.Replace($"{entity.Code}-", $"{request.Code}-"); + //} + } + request.Adapt(entity); + }, cancellationToken); } } diff --git a/FlexJobApi.Application/Dictionaries/Commands/DictionaryDataCommandHandler.cs b/FlexJobApi.Application/Dictionaries/Commands/DictionaryDataCommandHandler.cs index 64ebaff..0dce231 100644 --- a/FlexJobApi.Application/Dictionaries/Commands/DictionaryDataCommandHandler.cs +++ b/FlexJobApi.Application/Dictionaries/Commands/DictionaryDataCommandHandler.cs @@ -1,7 +1,9 @@ 锘縰sing FlexJobApi.Core; using Furion.DatabaseAccessor; +using Furion.FriendlyException; using Mapster; using MediatR; +using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.IO; @@ -14,32 +16,48 @@ /// <summary> /// 鏁版嵁瀛楀吀鍛戒护澶勭悊鍣� /// </summary> - public class DictionaryDataCommandHandler : + public class DictionaryDataCommandHandler( + IRepository<DictionaryData> rep, + IRepository<DictionaryCategory> repDictionaryCategory + ) : IRequestHandler<SaveDictionaryDataCommand, Guid>, IRequestHandler<SetDictionaryDataIsDisabledCommand, int> { + private readonly IRepository<DictionaryData> rep = rep; + private readonly IRepository<DictionaryCategory> repDictionaryCategory = repDictionaryCategory; + /// <summary> /// 淇濆瓨鏁版嵁瀛楀吀 /// </summary> /// <param name="request"></param> /// <param name="cancellationToken"></param> /// <returns></returns> - public Task<Guid> Handle(SaveDictionaryDataCommand request, CancellationToken cancellationToken) + public async Task<Guid> Handle(SaveDictionaryDataCommand request, CancellationToken cancellationToken) { - return request.SaveData<DictionaryData, SaveDictionaryDataCommand>( + var category = await repDictionaryCategory + .Where(it => it.Id == request.CategoryId || it.Code == request.CategoryCode) + .Select(it => new + { + it.Id, + it.Code + }) + .FirstOrDefaultAsync(); + if (category == null) throw Oops.Oh(EnumErrorCodeType.s404, "鏁版嵁瀛楀吀绫诲埆"); + request.CategoryId = category.Id; + if (!request.Code.StartsWith($"{request.CategoryCode}-")) throw Oops.Oh(EnumErrorCodeType.s400, "缂栧彿寮�澶撮渶瑕佸寘鍚被鍒紪鍙�-"); + return await request.SaveData<DictionaryData, SaveDictionaryDataCommand>( null, it => it.CategoryId == request.CategoryId - && it.ParentId == request.ParentId && it.Code == request.Code - && it.Content == request.Content && it.Id != request.Id, (entity) => { entity.Path = DbUtils.GetTreeDataPath<DictionaryData>(request.ParentId, cancellationToken).Result; if (request.Id.HasValue) { + if (entity.Code != request.Code) throw Oops.Oh(EnumErrorCodeType.s400, "缂栧彿涓嶅彲淇敼"); DbUtils.UpdateTreeDataChildrenPath<DictionaryData>( $"{entity.Path}/{entity.Code}/", $"{entity.Path}/{request.Code}/", diff --git a/FlexJobApi.Application/FlexJobApi.Application.xml b/FlexJobApi.Application/FlexJobApi.Application.xml index adb41b2..89b8cb5 100644 --- a/FlexJobApi.Application/FlexJobApi.Application.xml +++ b/FlexJobApi.Application/FlexJobApi.Application.xml @@ -9,6 +9,11 @@ 瀛楀吀绫诲埆鍛戒护澶勭悊鍣� </summary> </member> + <member name="M:FlexJobApi.Application.DictionaryCategoryCommandHandler.#ctor(Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.DictionaryCategory},Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.DictionaryData})"> + <summary> + 瀛楀吀绫诲埆鍛戒护澶勭悊鍣� + </summary> + </member> <member name="M:FlexJobApi.Application.DictionaryCategoryCommandHandler.Handle(FlexJobApi.Core.DeleteDictionaryCategoryCommand,System.Threading.CancellationToken)"> <summary> 鍒犻櫎鏁版嵁瀛楀吀绫诲埆 @@ -30,6 +35,11 @@ 鏁版嵁瀛楀吀鍛戒护澶勭悊鍣� </summary> </member> + <member name="M:FlexJobApi.Application.DictionaryDataCommandHandler.#ctor(Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.DictionaryData},Furion.DatabaseAccessor.IRepository{FlexJobApi.Core.DictionaryCategory})"> + <summary> + 鏁版嵁瀛楀吀鍛戒护澶勭悊鍣� + </summary> + </member> <member name="M:FlexJobApi.Application.DictionaryDataCommandHandler.Handle(FlexJobApi.Core.SaveDictionaryDataCommand,System.Threading.CancellationToken)"> <summary> 淇濆瓨鏁版嵁瀛楀吀 diff --git a/FlexJobApi.Core/Entities/Common/DictionaryData.cs b/FlexJobApi.Core/Entities/Common/DictionaryData.cs index ca477ff..bd142cd 100644 --- a/FlexJobApi.Core/Entities/Common/DictionaryData.cs +++ b/FlexJobApi.Core/Entities/Common/DictionaryData.cs @@ -54,6 +54,7 @@ /// 缂栧彿 /// </summary> [MaxLength(128)] + [Required] public string Code { get; set; } /// <summary> @@ -94,6 +95,7 @@ public void Configure(EntityTypeBuilder<DictionaryData> entityBuilder, DbContext dbContext, Type dbContextLocator) { + entityBuilder.HasIndex(x => x.Code).IsUnique(); entityBuilder .HasMany(x => x.Children) .WithOne(x => x.Parent) diff --git a/FlexJobApi.Core/Entities/Tasks/TaskInfo.cs b/FlexJobApi.Core/Entities/Tasks/TaskInfo.cs index 8dbfac7..bcff36b 100644 --- a/FlexJobApi.Core/Entities/Tasks/TaskInfo.cs +++ b/FlexJobApi.Core/Entities/Tasks/TaskInfo.cs @@ -1,4 +1,7 @@ -锘縰sing System; +锘縰sing Furion.DatabaseAccessor; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Metadata.Builders; +using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; @@ -10,7 +13,7 @@ /// <summary> /// 浠诲姟淇℃伅 /// </summary> - public class TaskInfo : CommonEntity + public class TaskInfo : CommonEntity, IEntityTypeBuilder<TaskInfo> { public TaskInfo() { @@ -75,12 +78,22 @@ public List<TaskInfoCredentialLimit> CredentialLimits { get; set; } /// <summary> - /// 浠诲姟鍦扮偣鎵�灞炲尯鍩烮d + /// 浠诲姟鍦扮偣鎵�灞炵渷浠界紪鍙� /// </summary> - public Guid CityId { get; set; } + public string ProvinceCode { get; set; } /// <summary> - /// 浠诲姟鍦扮偣鎵�灞炲尯鍩� + /// 浠诲姟鍦扮偣鎵�灞炵渷浠� + /// </summary> + public DictionaryData Province { get; set; } + + /// <summary> + /// 浠诲姟鍦扮偣鎵�灞炲煄甯傜紪鍙� + /// </summary> + public string CityCode { get; set; } + + /// <summary> + /// 浠诲姟鍦扮偣鎵�灞炲煄甯� /// </summary> public DictionaryData City { get; set; } @@ -98,5 +111,21 @@ /// 浠诲姟缁撴潫鏃堕棿 /// </summary> public DateTime EndTime { get; set; } + + public void Configure(EntityTypeBuilder<TaskInfo> entityBuilder, DbContext dbContext, Type dbContextLocator) + { + entityBuilder + .HasOne(it => it.Province) + .WithMany() + .HasForeignKey(it => it.ProvinceCode) + .HasPrincipalKey(it => it.Code) + .OnDelete(DeleteBehavior.Restrict); + entityBuilder + .HasOne(it => it.City) + .WithMany() + .HasForeignKey(it => it.CityCode) + .HasPrincipalKey(it => it.Code) + .OnDelete(DeleteBehavior.Restrict); + } } } diff --git a/FlexJobApi.Core/Entities/Tasks/TaskInfoBenefit.cs b/FlexJobApi.Core/Entities/Tasks/TaskInfoBenefit.cs index 2b8dcc7..159327d 100644 --- a/FlexJobApi.Core/Entities/Tasks/TaskInfoBenefit.cs +++ b/FlexJobApi.Core/Entities/Tasks/TaskInfoBenefit.cs @@ -25,9 +25,9 @@ public TaskInfo TaskInfo { get; set; } /// <summary> - /// 绂忓埄Id + /// 绂忓埄缂栧彿 /// </summary> - public Guid BenefitId { get; set; } + public string BenefitCode { get; set; } /// <summary> /// 绂忓埄 @@ -42,6 +42,13 @@ .HasForeignKey(it => it.TaskInfoId) .IsRequired() .OnDelete(DeleteBehavior.Restrict); + entityBuilder + .HasOne(it => it.Benefit) + .WithMany() + .HasForeignKey(it => it.BenefitCode) + .HasPrincipalKey(it => it.Code) + .IsRequired() + .OnDelete(DeleteBehavior.Restrict); } } } diff --git a/FlexJobApi.Core/Entities/Tasks/TaskInfoCredentialLimit.cs b/FlexJobApi.Core/Entities/Tasks/TaskInfoCredentialLimit.cs index 5e178d1..3bf4d7b 100644 --- a/FlexJobApi.Core/Entities/Tasks/TaskInfoCredentialLimit.cs +++ b/FlexJobApi.Core/Entities/Tasks/TaskInfoCredentialLimit.cs @@ -1,12 +1,16 @@ -锘縰sing System; +锘縰sing Furion.DatabaseAccessor; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Metadata.Builders; +using System; using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; using System.Linq; using System.Text; using System.Threading.Tasks; namespace FlexJobApi.Core { - public class TaskInfoCredentialLimit : CommonEntity + public class TaskInfoCredentialLimit : CommonEntity, IEntityTypeBuilder<TaskInfoCredentialLimit> { /// <summary> /// 浠诲姟Id @@ -19,13 +23,25 @@ public TaskInfo TaskInfo { get; set; } /// <summary> - /// 璇佷功绫诲瀷Id + /// 璇佷功绫诲瀷缂栧彿 /// </summary> - public Guid? TypeId { get; set; } + [Required] + public string TypeCode { get; set; } /// <summary> /// 璇佷功绫诲瀷 /// </summary> public DictionaryData Type { get; set; } + + public void Configure(EntityTypeBuilder<TaskInfoCredentialLimit> entityBuilder, DbContext dbContext, Type dbContextLocator) + { + entityBuilder + .HasOne(it => it.Type) + .WithMany() + .HasForeignKey(it => it.TypeCode) + .HasPrincipalKey(it => it.Code) + .IsRequired() + .OnDelete(DeleteBehavior.Restrict); + } } } diff --git a/FlexJobApi.Core/Entities/Users/Enterprise.cs b/FlexJobApi.Core/Entities/Users/Enterprise.cs index 035e637..65ac6ef 100644 --- a/FlexJobApi.Core/Entities/Users/Enterprise.cs +++ b/FlexJobApi.Core/Entities/Users/Enterprise.cs @@ -1,4 +1,7 @@ -锘縰sing System; +锘縰sing Furion.DatabaseAccessor; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Metadata.Builders; +using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; @@ -10,7 +13,7 @@ /// <summary> /// 浼佷笟 /// </summary> - public class Enterprise : CommonEntity + public class Enterprise : CommonEntity, IEntityTypeBuilder<Enterprise> { public Enterprise() { @@ -29,9 +32,9 @@ public EnterpriseAuth EnterpriseAuth { get; set; } /// <summary> - /// 鎵�鍦ㄧ渷浠絀d + /// 鎵�鍦ㄧ渷浠界紪鍙� /// </summary> - public Guid? ProvinceId { get; set; } + public string ProvinceCode { get; set; } /// <summary> /// 鎵�鍦ㄧ渷浠� @@ -39,9 +42,9 @@ public DictionaryData Province { get; set; } /// <summary> - /// 鎵�鍦ㄥ煄甯侷d + /// 鎵�鍦ㄥ煄甯傜紪鍙� /// </summary> - public Guid? CityId { get; set; } + public string CityCode { get; set; } /// <summary> /// 鎵�鍦ㄥ煄甯� @@ -49,9 +52,9 @@ public DictionaryData City { get; set; } /// <summary> - /// 鎵�灞炶涓欼d + /// 鎵�灞炶涓氱紪鍙� /// </summary> - public Guid? IndustryTypeId { get; set; } + public string IndustryTypeCode { get; set; } /// <summary> /// 鎵�灞炶涓� @@ -145,5 +148,27 @@ /// 鐢ㄦ埛淇℃伅 /// </summary> public List<UserInfo> UserInfos { get; set; } + + public void Configure(EntityTypeBuilder<Enterprise> entityBuilder, DbContext dbContext, Type dbContextLocator) + { + entityBuilder + .HasOne(it => it.Province) + .WithMany() + .HasForeignKey(it => it.ProvinceCode) + .HasPrincipalKey(it => it.Code) + .OnDelete(DeleteBehavior.Restrict); + entityBuilder + .HasOne(it => it.City) + .WithMany() + .HasForeignKey(it => it.CityCode) + .HasPrincipalKey(it => it.Code) + .OnDelete(DeleteBehavior.Restrict); + entityBuilder + .HasOne(it => it.IndustryType) + .WithMany() + .HasForeignKey(it => it.IndustryTypeCode) + .HasPrincipalKey(it => it.Code) + .OnDelete(DeleteBehavior.Restrict); + } } } diff --git a/FlexJobApi.Core/Entities/Users/UserInfo.cs b/FlexJobApi.Core/Entities/Users/UserInfo.cs index c2228a7..f13498f 100644 --- a/FlexJobApi.Core/Entities/Users/UserInfo.cs +++ b/FlexJobApi.Core/Entities/Users/UserInfo.cs @@ -1,5 +1,6 @@ 锘縰sing Furion.DatabaseAccessor; using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Metadata.Builders; using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; @@ -12,7 +13,7 @@ /// <summary> /// 鐢ㄦ埛淇℃伅 /// </summary> - public class UserInfo : CommonEntity, IEntitySeedData<UserInfo> + public class UserInfo : CommonEntity, IEntitySeedData<UserInfo>, IEntityTypeBuilder<UserInfo> { public UserInfo() { @@ -74,9 +75,9 @@ public List<UserInfoDepartment> UserInfoDepartments { get; set; } /// <summary> - /// 韬唤Id + /// 韬唤缂栧彿 /// </summary> - public Guid? PersonalIdentityId { get; set; } + public string PersonalIdentityCode { get; set; } /// <summary> /// 韬唤 @@ -84,9 +85,9 @@ public DictionaryData PersonalIdentity { get; set; } /// <summary> - /// 瀛﹀巻Id + /// 瀛﹀巻缂栧彿 /// </summary> - public Guid? EducationalBackgroundId { get; set; } + public string EducationalBackgroundCode { get; set; } /// <summary> /// 瀛﹀巻 @@ -94,9 +95,9 @@ public DictionaryData EducationalBackground { get; set; } /// <summary> - /// 甯搁┗鐪佷唤Id + /// 甯搁┗鐪佷唤缂栧彿 /// </summary> - public Guid? ProvinceId { get; set; } + public string ProvinceCode { get; set; } /// <summary> /// 甯搁┗鐪佷唤 @@ -104,9 +105,9 @@ public DictionaryData Province { get; set; } /// <summary> - /// 甯搁┗鍩庡競Id + /// 甯搁┗鍩庡競缂栧彿 /// </summary> - public Guid? CityId { get; set; } + public string CityCode { get; set; } /// <summary> /// 甯搁┗鍩庡競 @@ -163,6 +164,34 @@ /// </summary> public EnumUserInfoStatus Status { get; set; } + public void Configure(EntityTypeBuilder<UserInfo> entityBuilder, DbContext dbContext, Type dbContextLocator) + { + entityBuilder + .HasOne(it => it.PersonalIdentity) + .WithMany() + .HasForeignKey(it => it.PersonalIdentityCode) + .HasPrincipalKey(it => it.Code) + .OnDelete(DeleteBehavior.Restrict); + entityBuilder + .HasOne(it => it.EducationalBackground) + .WithMany() + .HasForeignKey(it => it.EducationalBackgroundCode) + .HasPrincipalKey(it => it.Code) + .OnDelete(DeleteBehavior.Restrict); + entityBuilder + .HasOne(it => it.Province) + .WithMany() + .HasForeignKey(it => it.ProvinceCode) + .HasPrincipalKey(it => it.Code) + .OnDelete(DeleteBehavior.Restrict); + entityBuilder + .HasOne(it => it.City) + .WithMany() + .HasForeignKey(it => it.CityCode) + .HasPrincipalKey(it => it.Code) + .OnDelete(DeleteBehavior.Restrict); + } + public IEnumerable<UserInfo> HasData(DbContext dbContext, Type dbContextLocator) { return new List<UserInfo> diff --git a/FlexJobApi.Core/Entities/Users/UserInfoCredential.cs b/FlexJobApi.Core/Entities/Users/UserInfoCredential.cs index cda1e12..f63c53a 100644 --- a/FlexJobApi.Core/Entities/Users/UserInfoCredential.cs +++ b/FlexJobApi.Core/Entities/Users/UserInfoCredential.cs @@ -1,4 +1,7 @@ -锘縰sing System; +锘縰sing Furion.DatabaseAccessor; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Metadata.Builders; +using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; @@ -10,7 +13,7 @@ /// <summary> /// 鐢ㄦ埛淇℃伅璧勬牸璇佷功 /// </summary> - public class UserInfoCredential : CommonEntity + public class UserInfoCredential : CommonEntity, IEntityTypeBuilder<UserInfoCredential> { /// <summary> /// 鐢ㄦ埛淇℃伅Id @@ -23,9 +26,10 @@ public UserInfo UserInfo { get; set; } /// <summary> - /// 璇佷功绫诲瀷Id + /// 璇佷功绫诲瀷缂栧彿 /// </summary> - public Guid? TypeId { get; set; } + [Required] + public string TypeCode { get; set; } /// <summary> /// 璇佷功绫诲瀷 @@ -69,5 +73,15 @@ /// </summary> public string BackImg { get; set; } + public void Configure(EntityTypeBuilder<UserInfoCredential> entityBuilder, DbContext dbContext, Type dbContextLocator) + { + entityBuilder + .HasOne(it => it.Type) + .WithMany() + .HasForeignKey(it => it.TypeCode) + .HasPrincipalKey(it => it.Code) + .IsRequired() + .OnDelete(DeleteBehavior.Restrict); + } } } diff --git a/FlexJobApi.Core/Entities/Users/UserInfoExpectJob.cs b/FlexJobApi.Core/Entities/Users/UserInfoExpectJob.cs index 60b21b8..7bd8840 100644 --- a/FlexJobApi.Core/Entities/Users/UserInfoExpectJob.cs +++ b/FlexJobApi.Core/Entities/Users/UserInfoExpectJob.cs @@ -1,4 +1,7 @@ -锘縰sing System; +锘縰sing Furion.DatabaseAccessor; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Metadata.Builders; +using System; using System.Collections.Generic; using System.Linq; using System.Text; @@ -9,7 +12,7 @@ /// <summary> /// 鐢ㄦ埛淇℃伅鏈熸湜宀椾綅 /// </summary> - public class UserInfoExpectJob : CommonEntity + public class UserInfoExpectJob : CommonEntity, IEntityTypeBuilder<UserInfoExpectJob> { /// <summary> /// 鐢ㄦ埛淇℃伅Id @@ -22,13 +25,24 @@ public UserInfo UserInfo { get; set; } /// <summary> - /// 鏈熸湜宀椾綅Id + /// 鏈熸湜宀椾綅缂栧彿 /// </summary> - public Guid PersonalIdentityId { get; set; } + public string PersonalIdentityCode { get; set; } /// <summary> /// 鏈熸湜宀椾綅 /// </summary> public DictionaryData PersonalIdentity { get; set; } + + public void Configure(EntityTypeBuilder<UserInfoExpectJob> entityBuilder, DbContext dbContext, Type dbContextLocator) + { + entityBuilder + .HasOne(it => it.PersonalIdentity) + .WithMany() + .HasForeignKey(it => it.PersonalIdentityCode) + .HasPrincipalKey(it => it.Code) + .IsRequired() + .OnDelete(DeleteBehavior.Restrict); + } } } diff --git a/FlexJobApi.Core/FlexJobApi.Core.xml b/FlexJobApi.Core/FlexJobApi.Core.xml index ba3a216..1bb9277 100644 --- a/FlexJobApi.Core/FlexJobApi.Core.xml +++ b/FlexJobApi.Core/FlexJobApi.Core.xml @@ -534,14 +534,24 @@ 璧勬牸璇佷功 </summary> </member> - <member name="P:FlexJobApi.Core.TaskInfo.CityId"> + <member name="P:FlexJobApi.Core.TaskInfo.ProvinceCode"> <summary> - 浠诲姟鍦扮偣鎵�灞炲尯鍩烮d + 浠诲姟鍦扮偣鎵�灞炵渷浠界紪鍙� + </summary> + </member> + <member name="P:FlexJobApi.Core.TaskInfo.Province"> + <summary> + 浠诲姟鍦扮偣鎵�灞炵渷浠� + </summary> + </member> + <member name="P:FlexJobApi.Core.TaskInfo.CityCode"> + <summary> + 浠诲姟鍦扮偣鎵�灞炲煄甯傜紪鍙� </summary> </member> <member name="P:FlexJobApi.Core.TaskInfo.City"> <summary> - 浠诲姟鍦扮偣鎵�灞炲尯鍩� + 浠诲姟鍦扮偣鎵�灞炲煄甯� </summary> </member> <member name="P:FlexJobApi.Core.TaskInfo.Address"> @@ -574,9 +584,9 @@ 浠诲姟 </summary> </member> - <member name="P:FlexJobApi.Core.TaskInfoBenefit.BenefitId"> + <member name="P:FlexJobApi.Core.TaskInfoBenefit.BenefitCode"> <summary> - 绂忓埄Id + 绂忓埄缂栧彿 </summary> </member> <member name="P:FlexJobApi.Core.TaskInfoBenefit.Benefit"> @@ -594,9 +604,9 @@ 浠诲姟 </summary> </member> - <member name="P:FlexJobApi.Core.TaskInfoCredentialLimit.TypeId"> + <member name="P:FlexJobApi.Core.TaskInfoCredentialLimit.TypeCode"> <summary> - 璇佷功绫诲瀷Id + 璇佷功绫诲瀷缂栧彿 </summary> </member> <member name="P:FlexJobApi.Core.TaskInfoCredentialLimit.Type"> @@ -714,9 +724,9 @@ 浼佷笟璁よ瘉 </summary> </member> - <member name="P:FlexJobApi.Core.Enterprise.ProvinceId"> + <member name="P:FlexJobApi.Core.Enterprise.ProvinceCode"> <summary> - 鎵�鍦ㄧ渷浠絀d + 鎵�鍦ㄧ渷浠界紪鍙� </summary> </member> <member name="P:FlexJobApi.Core.Enterprise.Province"> @@ -724,9 +734,9 @@ 鎵�鍦ㄧ渷浠� </summary> </member> - <member name="P:FlexJobApi.Core.Enterprise.CityId"> + <member name="P:FlexJobApi.Core.Enterprise.CityCode"> <summary> - 鎵�鍦ㄥ煄甯侷d + 鎵�鍦ㄥ煄甯傜紪鍙� </summary> </member> <member name="P:FlexJobApi.Core.Enterprise.City"> @@ -734,9 +744,9 @@ 鎵�鍦ㄥ煄甯� </summary> </member> - <member name="P:FlexJobApi.Core.Enterprise.IndustryTypeId"> + <member name="P:FlexJobApi.Core.Enterprise.IndustryTypeCode"> <summary> - 鎵�灞炶涓欼d + 鎵�灞炶涓氱紪鍙� </summary> </member> <member name="P:FlexJobApi.Core.Enterprise.IndustryType"> @@ -1249,9 +1259,9 @@ 鐢ㄦ埛淇℃伅閮ㄩ棬 </summary> </member> - <member name="P:FlexJobApi.Core.UserInfo.PersonalIdentityId"> + <member name="P:FlexJobApi.Core.UserInfo.PersonalIdentityCode"> <summary> - 韬唤Id + 韬唤缂栧彿 </summary> </member> <member name="P:FlexJobApi.Core.UserInfo.PersonalIdentity"> @@ -1259,9 +1269,9 @@ 韬唤 </summary> </member> - <member name="P:FlexJobApi.Core.UserInfo.EducationalBackgroundId"> + <member name="P:FlexJobApi.Core.UserInfo.EducationalBackgroundCode"> <summary> - 瀛﹀巻Id + 瀛﹀巻缂栧彿 </summary> </member> <member name="P:FlexJobApi.Core.UserInfo.EducationalBackground"> @@ -1269,9 +1279,9 @@ 瀛﹀巻 </summary> </member> - <member name="P:FlexJobApi.Core.UserInfo.ProvinceId"> + <member name="P:FlexJobApi.Core.UserInfo.ProvinceCode"> <summary> - 甯搁┗鐪佷唤Id + 甯搁┗鐪佷唤缂栧彿 </summary> </member> <member name="P:FlexJobApi.Core.UserInfo.Province"> @@ -1279,9 +1289,9 @@ 甯搁┗鐪佷唤 </summary> </member> - <member name="P:FlexJobApi.Core.UserInfo.CityId"> + <member name="P:FlexJobApi.Core.UserInfo.CityCode"> <summary> - 甯搁┗鍩庡競Id + 甯搁┗鍩庡競缂栧彿 </summary> </member> <member name="P:FlexJobApi.Core.UserInfo.City"> @@ -1384,9 +1394,9 @@ 鐢ㄦ埛淇℃伅 </summary> </member> - <member name="P:FlexJobApi.Core.UserInfoCredential.TypeId"> + <member name="P:FlexJobApi.Core.UserInfoCredential.TypeCode"> <summary> - 璇佷功绫诲瀷Id + 璇佷功绫诲瀷缂栧彿 </summary> </member> <member name="P:FlexJobApi.Core.UserInfoCredential.Type"> @@ -1469,9 +1479,9 @@ 鐢ㄦ埛淇℃伅 </summary> </member> - <member name="P:FlexJobApi.Core.UserInfoExpectJob.PersonalIdentityId"> + <member name="P:FlexJobApi.Core.UserInfoExpectJob.PersonalIdentityCode"> <summary> - 鏈熸湜宀椾綅Id + 鏈熸湜宀椾綅缂栧彿 </summary> </member> <member name="P:FlexJobApi.Core.UserInfoExpectJob.PersonalIdentity"> @@ -2217,7 +2227,12 @@ </member> <member name="P:FlexJobApi.Core.SaveDictionaryDataCommand.CategoryId"> <summary> - 绫诲埆Id + 绫诲埆Id锛圛d/缂栧彿浜岄�変竴锛� + </summary> + </member> + <member name="P:FlexJobApi.Core.SaveDictionaryDataCommand.CategoryCode"> + <summary> + 绫诲埆缂栧彿锛圛d/缂栧彿浜岄�変竴锛� </summary> </member> <member name="P:FlexJobApi.Core.SaveDictionaryDataCommand.ParentId"> diff --git a/FlexJobApi.Core/Models/Main/Dictionaries/Commands/SaveDictionaryDataCommand.cs b/FlexJobApi.Core/Models/Main/Dictionaries/Commands/SaveDictionaryDataCommand.cs index 759dcfe..1cb7540 100644 --- a/FlexJobApi.Core/Models/Main/Dictionaries/Commands/SaveDictionaryDataCommand.cs +++ b/FlexJobApi.Core/Models/Main/Dictionaries/Commands/SaveDictionaryDataCommand.cs @@ -15,9 +15,14 @@ public class SaveDictionaryDataCommand : SaveDataCommand { /// <summary> - /// 绫诲埆Id + /// 绫诲埆Id锛圛d/缂栧彿浜岄�変竴锛� /// </summary> - public Guid CategoryId { get; set; } + public Guid? CategoryId { get; set; } + + /// <summary> + /// 绫诲埆缂栧彿锛圛d/缂栧彿浜岄�変竴锛� + /// </summary> + public string CategoryCode { get; set; } /// <summary> /// 涓婄骇Id @@ -28,6 +33,7 @@ /// 缂栧彿 /// </summary> [MaxLength(128)] + [Required] public string Code { get; set; } /// <summary> diff --git a/FlexJobApi.Database.Migrations/Migrations/20250807051431_UpdateDictionaryData.Designer.cs b/FlexJobApi.Database.Migrations/Migrations/20250807051431_UpdateDictionaryData.Designer.cs new file mode 100644 index 0000000..d43bef4 --- /dev/null +++ b/FlexJobApi.Database.Migrations/Migrations/20250807051431_UpdateDictionaryData.Designer.cs @@ -0,0 +1,1832 @@ +锘�// <auto-generated /> +using System; +using FlexJobApi.EntityFramework.Core; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +#nullable disable + +namespace FlexJobApi.Database.Migrations.Migrations +{ + [DbContext(typeof(DefaultDbContext))] + [Migration("20250807051431_UpdateDictionaryData")] + partial class UpdateDictionaryData + { + /// <inheritdoc /> + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "9.0.7") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); + + modelBuilder.Entity("FlexJobApi.Core.Department", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property<DateTimeOffset>("CreatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("CreatedUserInfoId") + .HasColumnType("uniqueidentifier"); + + b.Property<Guid>("EnterpriseId") + .HasColumnType("uniqueidentifier"); + + b.Property<bool>("IsDeleted") + .HasColumnType("bit"); + + b.Property<bool>("IsDisabled") + .HasColumnType("bit"); + + b.Property<string>("Name") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property<Guid?>("ParentId") + .HasColumnType("uniqueidentifier"); + + b.Property<string>("Path") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("Remark") + .HasColumnType("nvarchar(max)"); + + b.Property<int>("Sort") + .HasColumnType("int"); + + b.Property<string>("TraceId") + .HasColumnType("nvarchar(max)"); + + b.Property<DateTimeOffset?>("UpdatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("UpdatedUserInfoId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("EnterpriseId"); + + b.HasIndex("ParentId"); + + b.ToTable("Department"); + }); + + modelBuilder.Entity("FlexJobApi.Core.DictionaryCategory", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property<string>("Code") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property<DateTimeOffset>("CreatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("CreatedUserInfoId") + .HasColumnType("uniqueidentifier"); + + b.Property<string>("FieldNames") + .HasColumnType("nvarchar(max)"); + + b.Property<bool>("IsDeleted") + .HasColumnType("bit"); + + b.Property<string>("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property<string>("Remark") + .HasColumnType("nvarchar(max)"); + + b.Property<int>("Sort") + .HasColumnType("int"); + + b.Property<string>("TraceId") + .HasColumnType("nvarchar(max)"); + + b.Property<DateTimeOffset?>("UpdatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("UpdatedUserInfoId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.ToTable("DictionaryCategory"); + }); + + modelBuilder.Entity("FlexJobApi.Core.DictionaryData", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property<Guid>("CategoryId") + .HasColumnType("uniqueidentifier"); + + b.Property<string>("Code") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property<string>("Content") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property<DateTimeOffset>("CreatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("CreatedUserInfoId") + .HasColumnType("uniqueidentifier"); + + b.Property<string>("Field1") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("Field2") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("Field3") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("Field4") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("Field5") + .HasColumnType("nvarchar(max)"); + + b.Property<bool>("IsDeleted") + .HasColumnType("bit"); + + b.Property<bool>("IsDisabled") + .HasColumnType("bit"); + + b.Property<Guid?>("ParentId") + .HasColumnType("uniqueidentifier"); + + b.Property<string>("Path") + .HasColumnType("nvarchar(max)"); + + b.Property<int>("Sort") + .HasColumnType("int"); + + b.Property<string>("TraceId") + .HasColumnType("nvarchar(max)"); + + b.Property<DateTimeOffset?>("UpdatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("UpdatedUserInfoId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("CategoryId"); + + b.HasIndex("Code") + .IsUnique(); + + b.HasIndex("ParentId"); + + b.ToTable("DictionaryData"); + }); + + modelBuilder.Entity("FlexJobApi.Core.Enterprise", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property<string>("BankBranchName") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("BankCard") + .HasMaxLength(32) + .HasColumnType("nvarchar(32)"); + + b.Property<string>("BankName") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("CityCode") + .HasColumnType("nvarchar(128)"); + + b.Property<string>("ContactEmail") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("ContactPhoneNumber") + .HasMaxLength(11) + .HasColumnType("nvarchar(11)"); + + b.Property<string>("Contacts") + .HasMaxLength(32) + .HasColumnType("nvarchar(32)"); + + b.Property<DateTimeOffset>("CreatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("CreatedUserInfoId") + .HasColumnType("uniqueidentifier"); + + b.Property<Guid>("EnterpriseAuthId") + .HasColumnType("uniqueidentifier"); + + b.Property<string>("IndustryTypeCode") + .HasColumnType("nvarchar(128)"); + + b.Property<bool>("IsCheckedBankCard") + .HasColumnType("bit"); + + b.Property<bool>("IsDeleted") + .HasColumnType("bit"); + + b.Property<string>("MainBusiness") + .HasColumnType("nvarchar(max)"); + + b.Property<decimal?>("MergeSignCost") + .HasColumnType("decimal(18,2)"); + + b.Property<int?>("PayAccess") + .HasColumnType("int"); + + b.Property<string>("ProvinceCode") + .HasColumnType("nvarchar(128)"); + + b.Property<int?>("RealAccess") + .HasColumnType("int"); + + b.Property<decimal?>("RealVerifyCost") + .HasColumnType("decimal(18,2)"); + + b.Property<decimal?>("SignCost") + .HasColumnType("decimal(18,2)"); + + b.Property<int?>("SmsAccess") + .HasColumnType("int"); + + b.Property<decimal>("SmsCost") + .HasColumnType("decimal(18,2)"); + + b.Property<int>("Sort") + .HasColumnType("int"); + + b.Property<string>("TraceId") + .HasColumnType("nvarchar(max)"); + + b.Property<DateTimeOffset?>("UpdatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("UpdatedUserInfoId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("CityCode"); + + b.HasIndex("EnterpriseAuthId"); + + b.HasIndex("IndustryTypeCode"); + + b.HasIndex("ProvinceCode"); + + b.ToTable("Enterprise"); + }); + + modelBuilder.Entity("FlexJobApi.Core.EnterpriseAuth", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property<string>("BankCard") + .HasMaxLength(32) + .HasColumnType("nvarchar(32)"); + + b.Property<string>("BankCardImg") + .HasColumnType("nvarchar(max)"); + + b.Property<DateTimeOffset>("CreatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("CreatedUserInfoId") + .HasColumnType("uniqueidentifier"); + + b.Property<string>("EnterpriseName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property<int?>("EnterpriseRealMethod") + .HasColumnType("int"); + + b.Property<string>("Identity") + .HasMaxLength(18) + .HasColumnType("nvarchar(18)"); + + b.Property<string>("IdentityBackImg") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("IdentityImg") + .HasColumnType("nvarchar(max)"); + + b.Property<bool>("IsDeleted") + .HasColumnType("bit"); + + b.Property<bool>("IsReal") + .HasColumnType("bit"); + + b.Property<string>("LegalIdentity") + .HasMaxLength(18) + .HasColumnType("nvarchar(18)"); + + b.Property<string>("LegalPerson") + .HasMaxLength(32) + .HasColumnType("nvarchar(32)"); + + b.Property<string>("LicenseImage") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("Name") + .HasMaxLength(32) + .HasColumnType("nvarchar(32)"); + + b.Property<int?>("PersonalRealMethod") + .HasColumnType("int"); + + b.Property<string>("PhoneNumber") + .HasMaxLength(11) + .HasColumnType("nvarchar(11)"); + + b.Property<bool?>("Proxy") + .HasColumnType("bit"); + + b.Property<string>("ProxyPowerAttorneyUrl") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("SocietyCreditCode") + .IsRequired() + .HasMaxLength(18) + .HasColumnType("nvarchar(18)"); + + b.Property<int>("Sort") + .HasColumnType("int"); + + b.Property<string>("TraceId") + .HasColumnType("nvarchar(max)"); + + b.Property<DateTimeOffset?>("UpdatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("UpdatedUserInfoId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.ToTable("EnterpriseAuth"); + }); + + modelBuilder.Entity("FlexJobApi.Core.Menu", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property<int>("ClientType") + .HasColumnType("int"); + + b.Property<string>("Code") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property<DateTimeOffset>("CreatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("CreatedUserInfoId") + .HasColumnType("uniqueidentifier"); + + b.Property<string>("Group") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("Icon") + .HasColumnType("nvarchar(max)"); + + b.Property<bool>("IsCache") + .HasColumnType("bit"); + + b.Property<bool>("IsDeleted") + .HasColumnType("bit"); + + b.Property<bool>("IsDisabled") + .HasColumnType("bit"); + + b.Property<string>("Location") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property<Guid?>("ParentId") + .HasColumnType("uniqueidentifier"); + + b.Property<string>("Path") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("Remark") + .HasColumnType("nvarchar(max)"); + + b.Property<int>("Sort") + .HasColumnType("int"); + + b.Property<string>("TraceId") + .HasColumnType("nvarchar(max)"); + + b.Property<int>("Type") + .HasColumnType("int"); + + b.Property<DateTimeOffset?>("UpdatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("UpdatedUserInfoId") + .HasColumnType("uniqueidentifier"); + + b.Property<string>("Url") + .HasColumnType("nvarchar(max)"); + + b.Property<int>("UserType") + .HasColumnType("int"); + + b.Property<int>("VisitLevel") + .HasColumnType("int"); + + b.Property<string>("Width") + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.HasIndex("ParentId"); + + b.ToTable("Menu"); + }); + + modelBuilder.Entity("FlexJobApi.Core.Resource", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property<string>("ActionName") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("ActionSummary") + .HasColumnType("nvarchar(max)"); + + b.Property<bool>("AllowAnonymous") + .HasColumnType("bit"); + + b.Property<string>("ApplicationName") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("Code") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property<int>("Controller") + .HasColumnType("int"); + + b.Property<string>("ControllerSummary") + .HasColumnType("nvarchar(max)"); + + b.Property<DateTimeOffset>("CreatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("CreatedUserInfoId") + .HasColumnType("uniqueidentifier"); + + b.Property<string>("DynamicAssemblyName") + .HasColumnType("nvarchar(max)"); + + b.Property<bool>("IsDeleted") + .HasColumnType("bit"); + + b.Property<bool>("IsExpired") + .HasColumnType("bit"); + + b.Property<int>("Method") + .HasColumnType("int"); + + b.Property<string>("Name") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property<string>("RequestTypeFullName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property<string>("RequestTypeName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property<string>("ResponseTypeFullName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property<string>("ResponseTypeName") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property<string>("Route") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property<string>("RouteArea") + .HasColumnType("nvarchar(max)"); + + b.Property<int>("Service") + .HasColumnType("int"); + + b.Property<string>("ServiceName") + .HasColumnType("nvarchar(max)"); + + b.Property<int>("Sort") + .HasColumnType("int"); + + b.Property<string>("TraceId") + .HasColumnType("nvarchar(max)"); + + b.Property<DateTimeOffset?>("UpdatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("UpdatedUserInfoId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.ToTable("Resource"); + }); + + modelBuilder.Entity("FlexJobApi.Core.Role", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property<int>("ClientType") + .HasColumnType("int"); + + b.Property<DateTimeOffset>("CreatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("CreatedUserInfoId") + .HasColumnType("uniqueidentifier"); + + b.Property<int>("DataPower") + .HasColumnType("int"); + + b.Property<bool>("IsDeleted") + .HasColumnType("bit"); + + b.Property<bool>("IsDisabled") + .HasColumnType("bit"); + + b.Property<int>("MinLevel") + .HasColumnType("int"); + + b.Property<string>("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property<string>("Remark") + .HasColumnType("nvarchar(max)"); + + b.Property<int>("Sort") + .HasColumnType("int"); + + b.Property<string>("TraceId") + .HasColumnType("nvarchar(max)"); + + b.Property<DateTimeOffset?>("UpdatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("UpdatedUserInfoId") + .HasColumnType("uniqueidentifier"); + + b.Property<int>("UserType") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.ToTable("Role"); + }); + + modelBuilder.Entity("FlexJobApi.Core.RoleMenu", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property<DateTimeOffset>("CreatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("CreatedUserInfoId") + .HasColumnType("uniqueidentifier"); + + b.Property<bool>("IsDeleted") + .HasColumnType("bit"); + + b.Property<Guid>("MenuId") + .HasColumnType("uniqueidentifier"); + + b.Property<Guid>("RoleId") + .HasColumnType("uniqueidentifier"); + + b.Property<int>("Sort") + .HasColumnType("int"); + + b.Property<string>("TraceId") + .HasColumnType("nvarchar(max)"); + + b.Property<DateTimeOffset?>("UpdatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("UpdatedUserInfoId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("MenuId"); + + b.HasIndex("RoleId"); + + b.ToTable("RoleMenu"); + }); + + modelBuilder.Entity("FlexJobApi.Core.RoleResource", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property<DateTimeOffset>("CreatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("CreatedUserInfoId") + .HasColumnType("uniqueidentifier"); + + b.Property<int>("DataPower") + .HasColumnType("int"); + + b.Property<bool>("IsDeleted") + .HasColumnType("bit"); + + b.Property<Guid>("ResourceId") + .HasColumnType("uniqueidentifier"); + + b.Property<Guid>("RoleId") + .HasColumnType("uniqueidentifier"); + + b.Property<int>("Sort") + .HasColumnType("int"); + + b.Property<string>("TraceId") + .HasColumnType("nvarchar(max)"); + + b.Property<DateTimeOffset?>("UpdatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("UpdatedUserInfoId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("ResourceId"); + + b.HasIndex("RoleId"); + + b.ToTable("RoleResource"); + }); + + modelBuilder.Entity("FlexJobApi.Core.TaskInfo", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property<string>("Address") + .HasColumnType("nvarchar(max)"); + + b.Property<int>("AgeMaxLimit") + .HasColumnType("int"); + + b.Property<int>("AgeMinLimit") + .HasColumnType("int"); + + b.Property<DateTime>("BeginTime") + .HasColumnType("datetime2"); + + b.Property<int>("BillingMethod") + .HasColumnType("int"); + + b.Property<string>("CityCode") + .HasColumnType("nvarchar(128)"); + + b.Property<DateTimeOffset>("CreatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("CreatedUserInfoId") + .HasColumnType("uniqueidentifier"); + + b.Property<DateTime>("EndTime") + .HasColumnType("datetime2"); + + b.Property<Guid>("EnterpriseId") + .HasColumnType("uniqueidentifier"); + + b.Property<int>("GenderLimit") + .HasColumnType("int"); + + b.Property<bool>("IsDeleted") + .HasColumnType("bit"); + + b.Property<string>("Name") + .IsRequired() + .HasColumnType("nvarchar(max)"); + + b.Property<string>("ProvinceCode") + .HasColumnType("nvarchar(128)"); + + b.Property<decimal>("ServiceFee") + .HasColumnType("decimal(18,2)"); + + b.Property<int>("SettlementCycle") + .HasColumnType("int"); + + b.Property<int>("Sort") + .HasColumnType("int"); + + b.Property<string>("TraceId") + .HasColumnType("nvarchar(max)"); + + b.Property<DateTimeOffset?>("UpdatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("UpdatedUserInfoId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("CityCode"); + + b.HasIndex("EnterpriseId"); + + b.HasIndex("ProvinceCode"); + + b.ToTable("TaskInfo"); + }); + + modelBuilder.Entity("FlexJobApi.Core.TaskInfoBenefit", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property<string>("BenefitCode") + .IsRequired() + .HasColumnType("nvarchar(128)"); + + b.Property<DateTimeOffset>("CreatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("CreatedUserInfoId") + .HasColumnType("uniqueidentifier"); + + b.Property<bool>("IsDeleted") + .HasColumnType("bit"); + + b.Property<int>("Sort") + .HasColumnType("int"); + + b.Property<Guid>("TaskInfoId") + .HasColumnType("uniqueidentifier"); + + b.Property<string>("TraceId") + .HasColumnType("nvarchar(max)"); + + b.Property<DateTimeOffset?>("UpdatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("UpdatedUserInfoId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("BenefitCode"); + + b.HasIndex("TaskInfoId"); + + b.ToTable("TaskInfoBenefit"); + }); + + modelBuilder.Entity("FlexJobApi.Core.TaskInfoCredentialLimit", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property<DateTimeOffset>("CreatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("CreatedUserInfoId") + .HasColumnType("uniqueidentifier"); + + b.Property<bool>("IsDeleted") + .HasColumnType("bit"); + + b.Property<int>("Sort") + .HasColumnType("int"); + + b.Property<Guid>("TaskInfoId") + .HasColumnType("uniqueidentifier"); + + b.Property<string>("TraceId") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("TypeCode") + .IsRequired() + .HasColumnType("nvarchar(128)"); + + b.Property<DateTimeOffset?>("UpdatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("UpdatedUserInfoId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("TaskInfoId"); + + b.HasIndex("TypeCode"); + + b.ToTable("TaskInfoCredentialLimit"); + }); + + modelBuilder.Entity("FlexJobApi.Core.TaskInfoUser", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property<DateTimeOffset>("CreatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("CreatedUserInfoId") + .HasColumnType("uniqueidentifier"); + + b.Property<int>("HireStatus") + .HasColumnType("int"); + + b.Property<DateTime?>("HireTime") + .HasColumnType("datetime2"); + + b.Property<bool>("IsDeleted") + .HasColumnType("bit"); + + b.Property<int?>("SignContractStatus") + .HasColumnType("int"); + + b.Property<DateTime?>("SignContractTime") + .HasColumnType("datetime2"); + + b.Property<int>("Sort") + .HasColumnType("int"); + + b.Property<Guid>("TaskInfoId") + .HasColumnType("uniqueidentifier"); + + b.Property<string>("TraceId") + .HasColumnType("nvarchar(max)"); + + b.Property<DateTimeOffset?>("UpdatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("UpdatedUserInfoId") + .HasColumnType("uniqueidentifier"); + + b.Property<Guid>("UserInfoId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("TaskInfoId"); + + b.HasIndex("UserInfoId"); + + b.ToTable("TaskInfoUser"); + }); + + modelBuilder.Entity("FlexJobApi.Core.UserAuth", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property<string>("BankCard") + .HasMaxLength(32) + .HasColumnType("nvarchar(32)"); + + b.Property<string>("BankCardImg") + .HasColumnType("nvarchar(max)"); + + b.Property<DateTimeOffset>("CreatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("CreatedUserInfoId") + .HasColumnType("uniqueidentifier"); + + b.Property<string>("Identity") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("IdentityBackImg") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("IdentityImg") + .HasColumnType("nvarchar(max)"); + + b.Property<bool>("IsCheckPhoneNumber") + .HasColumnType("bit"); + + b.Property<bool>("IsDeleted") + .HasColumnType("bit"); + + b.Property<bool>("IsReal") + .HasColumnType("bit"); + + b.Property<string>("Name") + .IsRequired() + .HasMaxLength(32) + .HasColumnType("nvarchar(32)"); + + b.Property<string>("Password") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("PhoneNumber") + .HasMaxLength(11) + .HasColumnType("nvarchar(11)"); + + b.Property<int?>("RealAccess") + .HasColumnType("int"); + + b.Property<int>("Sort") + .HasColumnType("int"); + + b.Property<string>("TraceId") + .HasColumnType("nvarchar(max)"); + + b.Property<DateTimeOffset?>("UpdatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("UpdatedUserInfoId") + .HasColumnType("uniqueidentifier"); + + b.Property<string>("UserName") + .IsRequired() + .HasMaxLength(32) + .HasColumnType("nvarchar(32)"); + + b.HasKey("Id"); + + b.ToTable("UserAuth"); + + b.HasData( + new + { + Id = new Guid("11111111-1111-1111-1111-111111111111"), + CreatedTime = new DateTimeOffset(new DateTime(2000, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 8, 0, 0, 0)), + IsCheckPhoneNumber = false, + IsDeleted = false, + IsReal = false, + Name = "绠$悊鍛�", + Password = "iEYggKrMhQ3ASUGLobra1w==:fn/DsMJUbD9FGpvBvR3moMpMPptdxzZlourPVhU479I=", + Sort = 0, + UserName = "system" + }); + }); + + modelBuilder.Entity("FlexJobApi.Core.UserInfo", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property<string>("Avatar") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("CityCode") + .HasColumnType("nvarchar(128)"); + + b.Property<DateTimeOffset>("CreatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("CreatedUserInfoId") + .HasColumnType("uniqueidentifier"); + + b.Property<string>("EducationalBackgroundCode") + .HasColumnType("nvarchar(128)"); + + b.Property<Guid?>("EnterpriseId") + .HasColumnType("uniqueidentifier"); + + b.Property<int?>("FreeTime") + .HasColumnType("int"); + + b.Property<int?>("Height") + .HasColumnType("int"); + + b.Property<bool>("IsDeleted") + .HasColumnType("bit"); + + b.Property<int?>("JobSeekingStatus") + .HasColumnType("int"); + + b.Property<int>("Level") + .HasColumnType("int"); + + b.Property<string>("PersonalIdentityCode") + .HasColumnType("nvarchar(128)"); + + b.Property<string>("ProvinceCode") + .HasColumnType("nvarchar(128)"); + + b.Property<string>("Remark") + .HasColumnType("nvarchar(max)"); + + b.Property<int>("Sort") + .HasColumnType("int"); + + b.Property<int>("Status") + .HasColumnType("int"); + + b.Property<string>("TraceId") + .HasColumnType("nvarchar(max)"); + + b.Property<int>("Type") + .HasColumnType("int"); + + b.Property<DateTimeOffset?>("UpdatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("UpdatedUserInfoId") + .HasColumnType("uniqueidentifier"); + + b.Property<Guid>("UserAuthId") + .HasColumnType("uniqueidentifier"); + + b.Property<int?>("Weight") + .HasColumnType("int"); + + b.Property<string>("WorkExperience") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("WorkSeniority") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("WxmpOpenId") + .HasMaxLength(32) + .HasColumnType("nvarchar(32)"); + + b.HasKey("Id"); + + b.HasIndex("CityCode"); + + b.HasIndex("EducationalBackgroundCode"); + + b.HasIndex("EnterpriseId"); + + b.HasIndex("PersonalIdentityCode"); + + b.HasIndex("ProvinceCode"); + + b.HasIndex("UserAuthId"); + + b.ToTable("UserInfo"); + + b.HasData( + new + { + Id = new Guid("11111111-1111-1111-1111-111111111112"), + CreatedTime = new DateTimeOffset(new DateTime(2000, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified), new TimeSpan(0, 8, 0, 0, 0)), + IsDeleted = false, + Level = 999, + Sort = 0, + Status = 0, + Type = 100, + UserAuthId = new Guid("11111111-1111-1111-1111-111111111111") + }); + }); + + modelBuilder.Entity("FlexJobApi.Core.UserInfoBankCard", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property<string>("Bank") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property<string>("Code") + .IsRequired() + .HasMaxLength(32) + .HasColumnType("nvarchar(32)"); + + b.Property<DateTimeOffset>("CreatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("CreatedUserInfoId") + .HasColumnType("uniqueidentifier"); + + b.Property<bool>("IsDeleted") + .HasColumnType("bit"); + + b.Property<string>("PhoneNumber") + .IsRequired() + .HasMaxLength(11) + .HasColumnType("nvarchar(11)"); + + b.Property<int>("Sort") + .HasColumnType("int"); + + b.Property<string>("TraceId") + .HasColumnType("nvarchar(max)"); + + b.Property<DateTimeOffset?>("UpdatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("UpdatedUserInfoId") + .HasColumnType("uniqueidentifier"); + + b.Property<Guid>("UserInfoId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("UserInfoId"); + + b.ToTable("UserInfoBankCard"); + }); + + modelBuilder.Entity("FlexJobApi.Core.UserInfoCredential", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property<string>("BackImg") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("Code") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property<DateTimeOffset>("CreatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("CreatedUserInfoId") + .HasColumnType("uniqueidentifier"); + + b.Property<DateTime>("EndDate") + .HasColumnType("datetime2"); + + b.Property<string>("Img") + .HasColumnType("nvarchar(max)"); + + b.Property<bool>("IsDeleted") + .HasColumnType("bit"); + + b.Property<bool>("IsForever") + .HasColumnType("bit"); + + b.Property<string>("IssueUnit") + .HasColumnType("nvarchar(max)"); + + b.Property<int>("Sort") + .HasColumnType("int"); + + b.Property<DateTime>("StartDate") + .HasColumnType("datetime2"); + + b.Property<string>("TraceId") + .HasColumnType("nvarchar(max)"); + + b.Property<string>("TypeCode") + .IsRequired() + .HasColumnType("nvarchar(128)"); + + b.Property<DateTimeOffset?>("UpdatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("UpdatedUserInfoId") + .HasColumnType("uniqueidentifier"); + + b.Property<Guid>("UserInfoId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("TypeCode"); + + b.HasIndex("UserInfoId"); + + b.ToTable("UserInfoCredential"); + }); + + modelBuilder.Entity("FlexJobApi.Core.UserInfoDepartment", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property<DateTimeOffset>("CreatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("CreatedUserInfoId") + .HasColumnType("uniqueidentifier"); + + b.Property<Guid>("DepartmentId") + .HasColumnType("uniqueidentifier"); + + b.Property<bool>("IsDeleted") + .HasColumnType("bit"); + + b.Property<int>("Sort") + .HasColumnType("int"); + + b.Property<string>("TraceId") + .HasColumnType("nvarchar(max)"); + + b.Property<DateTimeOffset?>("UpdatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("UpdatedUserInfoId") + .HasColumnType("uniqueidentifier"); + + b.Property<Guid>("UserInfoId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("DepartmentId"); + + b.HasIndex("UserInfoId"); + + b.ToTable("UserInfoDepartment"); + }); + + modelBuilder.Entity("FlexJobApi.Core.UserInfoExpectJob", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property<DateTimeOffset>("CreatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("CreatedUserInfoId") + .HasColumnType("uniqueidentifier"); + + b.Property<bool>("IsDeleted") + .HasColumnType("bit"); + + b.Property<string>("PersonalIdentityCode") + .IsRequired() + .HasColumnType("nvarchar(128)"); + + b.Property<int>("Sort") + .HasColumnType("int"); + + b.Property<string>("TraceId") + .HasColumnType("nvarchar(max)"); + + b.Property<DateTimeOffset?>("UpdatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("UpdatedUserInfoId") + .HasColumnType("uniqueidentifier"); + + b.Property<Guid>("UserInfoId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("PersonalIdentityCode"); + + b.HasIndex("UserInfoId"); + + b.ToTable("UserInfoExpectJob"); + }); + + modelBuilder.Entity("FlexJobApi.Core.UserInfoPhoto", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property<DateTimeOffset>("CreatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("CreatedUserInfoId") + .HasColumnType("uniqueidentifier"); + + b.Property<string>("Img") + .HasColumnType("nvarchar(max)"); + + b.Property<bool>("IsDeleted") + .HasColumnType("bit"); + + b.Property<int>("Sort") + .HasColumnType("int"); + + b.Property<string>("TraceId") + .HasColumnType("nvarchar(max)"); + + b.Property<DateTimeOffset?>("UpdatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("UpdatedUserInfoId") + .HasColumnType("uniqueidentifier"); + + b.Property<Guid>("UserInfoId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("UserInfoId"); + + b.ToTable("UserInfoPhoto"); + }); + + modelBuilder.Entity("FlexJobApi.Core.UserInfoRole", b => + { + b.Property<Guid>("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property<DateTimeOffset>("CreatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("CreatedUserInfoId") + .HasColumnType("uniqueidentifier"); + + b.Property<bool>("IsDeleted") + .HasColumnType("bit"); + + b.Property<Guid>("RoleId") + .HasColumnType("uniqueidentifier"); + + b.Property<int>("Sort") + .HasColumnType("int"); + + b.Property<string>("TraceId") + .HasColumnType("nvarchar(max)"); + + b.Property<DateTimeOffset?>("UpdatedTime") + .HasColumnType("datetimeoffset"); + + b.Property<Guid?>("UpdatedUserInfoId") + .HasColumnType("uniqueidentifier"); + + b.Property<Guid>("UserInfoId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.HasIndex("UserInfoId"); + + b.ToTable("UserInfoRole"); + }); + + modelBuilder.Entity("FlexJobApi.Core.Department", b => + { + b.HasOne("FlexJobApi.Core.Enterprise", "Enterprise") + .WithMany("Departments") + .HasForeignKey("EnterpriseId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("FlexJobApi.Core.Department", "Parent") + .WithMany("Children") + .HasForeignKey("ParentId"); + + b.Navigation("Enterprise"); + + b.Navigation("Parent"); + }); + + modelBuilder.Entity("FlexJobApi.Core.DictionaryData", b => + { + b.HasOne("FlexJobApi.Core.DictionaryCategory", "Category") + .WithMany() + .HasForeignKey("CategoryId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("FlexJobApi.Core.DictionaryData", "Parent") + .WithMany("Children") + .HasForeignKey("ParentId"); + + b.Navigation("Category"); + + b.Navigation("Parent"); + }); + + modelBuilder.Entity("FlexJobApi.Core.Enterprise", b => + { + b.HasOne("FlexJobApi.Core.DictionaryData", "City") + .WithMany() + .HasForeignKey("CityCode") + .HasPrincipalKey("Code") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("FlexJobApi.Core.EnterpriseAuth", "EnterpriseAuth") + .WithMany() + .HasForeignKey("EnterpriseAuthId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("FlexJobApi.Core.DictionaryData", "IndustryType") + .WithMany() + .HasForeignKey("IndustryTypeCode") + .HasPrincipalKey("Code") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("FlexJobApi.Core.DictionaryData", "Province") + .WithMany() + .HasForeignKey("ProvinceCode") + .HasPrincipalKey("Code") + .OnDelete(DeleteBehavior.Restrict); + + b.Navigation("City"); + + b.Navigation("EnterpriseAuth"); + + b.Navigation("IndustryType"); + + b.Navigation("Province"); + }); + + modelBuilder.Entity("FlexJobApi.Core.Menu", b => + { + b.HasOne("FlexJobApi.Core.Menu", "Parent") + .WithMany("Children") + .HasForeignKey("ParentId"); + + b.Navigation("Parent"); + }); + + modelBuilder.Entity("FlexJobApi.Core.RoleMenu", b => + { + b.HasOne("FlexJobApi.Core.Menu", "Menu") + .WithMany() + .HasForeignKey("MenuId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("FlexJobApi.Core.Role", "Role") + .WithMany("RoleMenus") + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Menu"); + + b.Navigation("Role"); + }); + + modelBuilder.Entity("FlexJobApi.Core.RoleResource", b => + { + b.HasOne("FlexJobApi.Core.Resource", "Resource") + .WithMany() + .HasForeignKey("ResourceId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("FlexJobApi.Core.Role", "Role") + .WithMany("RoleResources") + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Resource"); + + b.Navigation("Role"); + }); + + modelBuilder.Entity("FlexJobApi.Core.TaskInfo", b => + { + b.HasOne("FlexJobApi.Core.DictionaryData", "City") + .WithMany() + .HasForeignKey("CityCode") + .HasPrincipalKey("Code") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("FlexJobApi.Core.Enterprise", "Enterprise") + .WithMany() + .HasForeignKey("EnterpriseId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("FlexJobApi.Core.DictionaryData", "Province") + .WithMany() + .HasForeignKey("ProvinceCode") + .HasPrincipalKey("Code") + .OnDelete(DeleteBehavior.Restrict); + + b.Navigation("City"); + + b.Navigation("Enterprise"); + + b.Navigation("Province"); + }); + + modelBuilder.Entity("FlexJobApi.Core.TaskInfoBenefit", b => + { + b.HasOne("FlexJobApi.Core.DictionaryData", "Benefit") + .WithMany() + .HasForeignKey("BenefitCode") + .HasPrincipalKey("Code") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("FlexJobApi.Core.TaskInfo", "TaskInfo") + .WithMany("Benefits") + .HasForeignKey("TaskInfoId") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.Navigation("Benefit"); + + b.Navigation("TaskInfo"); + }); + + modelBuilder.Entity("FlexJobApi.Core.TaskInfoCredentialLimit", b => + { + b.HasOne("FlexJobApi.Core.TaskInfo", "TaskInfo") + .WithMany("CredentialLimits") + .HasForeignKey("TaskInfoId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("FlexJobApi.Core.DictionaryData", "Type") + .WithMany() + .HasForeignKey("TypeCode") + .HasPrincipalKey("Code") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.Navigation("TaskInfo"); + + b.Navigation("Type"); + }); + + modelBuilder.Entity("FlexJobApi.Core.TaskInfoUser", b => + { + b.HasOne("FlexJobApi.Core.TaskInfo", "TaskInfo") + .WithMany() + .HasForeignKey("TaskInfoId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("FlexJobApi.Core.UserInfo", "UserInfo") + .WithMany() + .HasForeignKey("UserInfoId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("TaskInfo"); + + b.Navigation("UserInfo"); + }); + + modelBuilder.Entity("FlexJobApi.Core.UserInfo", b => + { + b.HasOne("FlexJobApi.Core.DictionaryData", "City") + .WithMany() + .HasForeignKey("CityCode") + .HasPrincipalKey("Code") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("FlexJobApi.Core.DictionaryData", "EducationalBackground") + .WithMany() + .HasForeignKey("EducationalBackgroundCode") + .HasPrincipalKey("Code") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("FlexJobApi.Core.Enterprise", "Enterprise") + .WithMany("UserInfos") + .HasForeignKey("EnterpriseId"); + + b.HasOne("FlexJobApi.Core.DictionaryData", "PersonalIdentity") + .WithMany() + .HasForeignKey("PersonalIdentityCode") + .HasPrincipalKey("Code") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("FlexJobApi.Core.DictionaryData", "Province") + .WithMany() + .HasForeignKey("ProvinceCode") + .HasPrincipalKey("Code") + .OnDelete(DeleteBehavior.Restrict); + + b.HasOne("FlexJobApi.Core.UserAuth", "UserAuth") + .WithMany("UserInfos") + .HasForeignKey("UserAuthId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("City"); + + b.Navigation("EducationalBackground"); + + b.Navigation("Enterprise"); + + b.Navigation("PersonalIdentity"); + + b.Navigation("Province"); + + b.Navigation("UserAuth"); + }); + + modelBuilder.Entity("FlexJobApi.Core.UserInfoBankCard", b => + { + b.HasOne("FlexJobApi.Core.UserInfo", "UserInfo") + .WithMany() + .HasForeignKey("UserInfoId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("UserInfo"); + }); + + modelBuilder.Entity("FlexJobApi.Core.UserInfoCredential", b => + { + b.HasOne("FlexJobApi.Core.DictionaryData", "Type") + .WithMany() + .HasForeignKey("TypeCode") + .HasPrincipalKey("Code") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("FlexJobApi.Core.UserInfo", "UserInfo") + .WithMany("UserInfoCredentials") + .HasForeignKey("UserInfoId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Type"); + + b.Navigation("UserInfo"); + }); + + modelBuilder.Entity("FlexJobApi.Core.UserInfoDepartment", b => + { + b.HasOne("FlexJobApi.Core.Department", "Department") + .WithMany() + .HasForeignKey("DepartmentId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("FlexJobApi.Core.UserInfo", "UserInfo") + .WithMany("UserInfoDepartments") + .HasForeignKey("UserInfoId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Department"); + + b.Navigation("UserInfo"); + }); + + modelBuilder.Entity("FlexJobApi.Core.UserInfoExpectJob", b => + { + b.HasOne("FlexJobApi.Core.DictionaryData", "PersonalIdentity") + .WithMany() + .HasForeignKey("PersonalIdentityCode") + .HasPrincipalKey("Code") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); + + b.HasOne("FlexJobApi.Core.UserInfo", "UserInfo") + .WithMany("UserInfoExpectJobs") + .HasForeignKey("UserInfoId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("PersonalIdentity"); + + b.Navigation("UserInfo"); + }); + + modelBuilder.Entity("FlexJobApi.Core.UserInfoPhoto", b => + { + b.HasOne("FlexJobApi.Core.UserInfo", "UserInfo") + .WithMany() + .HasForeignKey("UserInfoId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("UserInfo"); + }); + + modelBuilder.Entity("FlexJobApi.Core.UserInfoRole", b => + { + b.HasOne("FlexJobApi.Core.Role", "Role") + .WithMany("UserInfoRoles") + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("FlexJobApi.Core.UserInfo", "UserInfo") + .WithMany("UserInfoRoles") + .HasForeignKey("UserInfoId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.Navigation("Role"); + + b.Navigation("UserInfo"); + }); + + modelBuilder.Entity("FlexJobApi.Core.Department", b => + { + b.Navigation("Children"); + }); + + modelBuilder.Entity("FlexJobApi.Core.DictionaryData", b => + { + b.Navigation("Children"); + }); + + modelBuilder.Entity("FlexJobApi.Core.Enterprise", b => + { + b.Navigation("Departments"); + + b.Navigation("UserInfos"); + }); + + modelBuilder.Entity("FlexJobApi.Core.Menu", b => + { + b.Navigation("Children"); + }); + + modelBuilder.Entity("FlexJobApi.Core.Role", b => + { + b.Navigation("RoleMenus"); + + b.Navigation("RoleResources"); + + b.Navigation("UserInfoRoles"); + }); + + modelBuilder.Entity("FlexJobApi.Core.TaskInfo", b => + { + b.Navigation("Benefits"); + + b.Navigation("CredentialLimits"); + }); + + modelBuilder.Entity("FlexJobApi.Core.UserAuth", b => + { + b.Navigation("UserInfos"); + }); + + modelBuilder.Entity("FlexJobApi.Core.UserInfo", b => + { + b.Navigation("UserInfoCredentials"); + + b.Navigation("UserInfoDepartments"); + + b.Navigation("UserInfoExpectJobs"); + + b.Navigation("UserInfoRoles"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/FlexJobApi.Database.Migrations/Migrations/20250807051431_UpdateDictionaryData.cs b/FlexJobApi.Database.Migrations/Migrations/20250807051431_UpdateDictionaryData.cs new file mode 100644 index 0000000..10d2c85 --- /dev/null +++ b/FlexJobApi.Database.Migrations/Migrations/20250807051431_UpdateDictionaryData.cs @@ -0,0 +1,847 @@ +锘縰sing System; +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace FlexJobApi.Database.Migrations.Migrations +{ + /// <inheritdoc /> + public partial class UpdateDictionaryData : Migration + { + /// <inheritdoc /> + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "FK_Enterprise_DictionaryData_CityId", + table: "Enterprise"); + + migrationBuilder.DropForeignKey( + name: "FK_Enterprise_DictionaryData_IndustryTypeId", + table: "Enterprise"); + + migrationBuilder.DropForeignKey( + name: "FK_Enterprise_DictionaryData_ProvinceId", + table: "Enterprise"); + + migrationBuilder.DropForeignKey( + name: "FK_TaskInfo_DictionaryData_CityId", + table: "TaskInfo"); + + migrationBuilder.DropForeignKey( + name: "FK_TaskInfoBenefit_DictionaryData_BenefitId", + table: "TaskInfoBenefit"); + + migrationBuilder.DropForeignKey( + name: "FK_TaskInfoCredentialLimit_DictionaryData_TypeId", + table: "TaskInfoCredentialLimit"); + + migrationBuilder.DropForeignKey( + name: "FK_UserInfo_DictionaryData_CityId", + table: "UserInfo"); + + migrationBuilder.DropForeignKey( + name: "FK_UserInfo_DictionaryData_EducationalBackgroundId", + table: "UserInfo"); + + migrationBuilder.DropForeignKey( + name: "FK_UserInfo_DictionaryData_PersonalIdentityId", + table: "UserInfo"); + + migrationBuilder.DropForeignKey( + name: "FK_UserInfo_DictionaryData_ProvinceId", + table: "UserInfo"); + + migrationBuilder.DropForeignKey( + name: "FK_UserInfoCredential_DictionaryData_TypeId", + table: "UserInfoCredential"); + + migrationBuilder.DropForeignKey( + name: "FK_UserInfoExpectJob_DictionaryData_PersonalIdentityId", + table: "UserInfoExpectJob"); + + migrationBuilder.DropIndex( + name: "IX_UserInfoExpectJob_PersonalIdentityId", + table: "UserInfoExpectJob"); + + migrationBuilder.DropIndex( + name: "IX_UserInfoCredential_TypeId", + table: "UserInfoCredential"); + + migrationBuilder.DropIndex( + name: "IX_UserInfo_CityId", + table: "UserInfo"); + + migrationBuilder.DropIndex( + name: "IX_UserInfo_EducationalBackgroundId", + table: "UserInfo"); + + migrationBuilder.DropIndex( + name: "IX_UserInfo_PersonalIdentityId", + table: "UserInfo"); + + migrationBuilder.DropIndex( + name: "IX_UserInfo_ProvinceId", + table: "UserInfo"); + + migrationBuilder.DropIndex( + name: "IX_TaskInfoCredentialLimit_TypeId", + table: "TaskInfoCredentialLimit"); + + migrationBuilder.DropIndex( + name: "IX_TaskInfoBenefit_BenefitId", + table: "TaskInfoBenefit"); + + migrationBuilder.DropIndex( + name: "IX_TaskInfo_CityId", + table: "TaskInfo"); + + migrationBuilder.DropIndex( + name: "IX_Enterprise_CityId", + table: "Enterprise"); + + migrationBuilder.DropIndex( + name: "IX_Enterprise_IndustryTypeId", + table: "Enterprise"); + + migrationBuilder.DropIndex( + name: "IX_Enterprise_ProvinceId", + table: "Enterprise"); + + migrationBuilder.DropColumn( + name: "PersonalIdentityId", + table: "UserInfoExpectJob"); + + migrationBuilder.DropColumn( + name: "TypeId", + table: "UserInfoCredential"); + + migrationBuilder.DropColumn( + name: "CityId", + table: "UserInfo"); + + migrationBuilder.DropColumn( + name: "EducationalBackgroundId", + table: "UserInfo"); + + migrationBuilder.DropColumn( + name: "PersonalIdentityId", + table: "UserInfo"); + + migrationBuilder.DropColumn( + name: "ProvinceId", + table: "UserInfo"); + + migrationBuilder.DropColumn( + name: "TypeId", + table: "TaskInfoCredentialLimit"); + + migrationBuilder.DropColumn( + name: "BenefitId", + table: "TaskInfoBenefit"); + + migrationBuilder.DropColumn( + name: "CityId", + table: "TaskInfo"); + + migrationBuilder.DropColumn( + name: "CityId", + table: "Enterprise"); + + migrationBuilder.DropColumn( + name: "IndustryTypeId", + table: "Enterprise"); + + migrationBuilder.DropColumn( + name: "ProvinceId", + table: "Enterprise"); + + migrationBuilder.AddColumn<string>( + name: "PersonalIdentityCode", + table: "UserInfoExpectJob", + type: "nvarchar(128)", + nullable: false, + defaultValue: ""); + + migrationBuilder.AddColumn<string>( + name: "TypeCode", + table: "UserInfoCredential", + type: "nvarchar(128)", + nullable: false, + defaultValue: ""); + + migrationBuilder.AddColumn<string>( + name: "CityCode", + table: "UserInfo", + type: "nvarchar(128)", + nullable: true); + + migrationBuilder.AddColumn<string>( + name: "EducationalBackgroundCode", + table: "UserInfo", + type: "nvarchar(128)", + nullable: true); + + migrationBuilder.AddColumn<string>( + name: "PersonalIdentityCode", + table: "UserInfo", + type: "nvarchar(128)", + nullable: true); + + migrationBuilder.AddColumn<string>( + name: "ProvinceCode", + table: "UserInfo", + type: "nvarchar(128)", + nullable: true); + + migrationBuilder.AddColumn<string>( + name: "TypeCode", + table: "TaskInfoCredentialLimit", + type: "nvarchar(128)", + nullable: false, + defaultValue: ""); + + migrationBuilder.AddColumn<string>( + name: "BenefitCode", + table: "TaskInfoBenefit", + type: "nvarchar(128)", + nullable: false, + defaultValue: ""); + + migrationBuilder.AddColumn<string>( + name: "CityCode", + table: "TaskInfo", + type: "nvarchar(128)", + nullable: true); + + migrationBuilder.AddColumn<string>( + name: "ProvinceCode", + table: "TaskInfo", + type: "nvarchar(128)", + nullable: true); + + migrationBuilder.AddColumn<string>( + name: "CityCode", + table: "Enterprise", + type: "nvarchar(128)", + nullable: true); + + migrationBuilder.AddColumn<string>( + name: "IndustryTypeCode", + table: "Enterprise", + type: "nvarchar(128)", + nullable: true); + + migrationBuilder.AddColumn<string>( + name: "ProvinceCode", + table: "Enterprise", + type: "nvarchar(128)", + nullable: true); + + migrationBuilder.AlterColumn<string>( + name: "Code", + table: "DictionaryData", + type: "nvarchar(128)", + maxLength: 128, + nullable: false, + defaultValue: "", + oldClrType: typeof(string), + oldType: "nvarchar(128)", + oldMaxLength: 128, + oldNullable: true); + + migrationBuilder.AddUniqueConstraint( + name: "AK_DictionaryData_Code", + table: "DictionaryData", + column: "Code"); + + migrationBuilder.UpdateData( + table: "UserInfo", + keyColumn: "Id", + keyValue: new Guid("11111111-1111-1111-1111-111111111112"), + columns: new[] { "CityCode", "EducationalBackgroundCode", "PersonalIdentityCode", "ProvinceCode" }, + values: new object[] { null, null, null, null }); + + migrationBuilder.CreateIndex( + name: "IX_UserInfoExpectJob_PersonalIdentityCode", + table: "UserInfoExpectJob", + column: "PersonalIdentityCode"); + + migrationBuilder.CreateIndex( + name: "IX_UserInfoCredential_TypeCode", + table: "UserInfoCredential", + column: "TypeCode"); + + migrationBuilder.CreateIndex( + name: "IX_UserInfo_CityCode", + table: "UserInfo", + column: "CityCode"); + + migrationBuilder.CreateIndex( + name: "IX_UserInfo_EducationalBackgroundCode", + table: "UserInfo", + column: "EducationalBackgroundCode"); + + migrationBuilder.CreateIndex( + name: "IX_UserInfo_PersonalIdentityCode", + table: "UserInfo", + column: "PersonalIdentityCode"); + + migrationBuilder.CreateIndex( + name: "IX_UserInfo_ProvinceCode", + table: "UserInfo", + column: "ProvinceCode"); + + migrationBuilder.CreateIndex( + name: "IX_TaskInfoCredentialLimit_TypeCode", + table: "TaskInfoCredentialLimit", + column: "TypeCode"); + + migrationBuilder.CreateIndex( + name: "IX_TaskInfoBenefit_BenefitCode", + table: "TaskInfoBenefit", + column: "BenefitCode"); + + migrationBuilder.CreateIndex( + name: "IX_TaskInfo_CityCode", + table: "TaskInfo", + column: "CityCode"); + + migrationBuilder.CreateIndex( + name: "IX_TaskInfo_ProvinceCode", + table: "TaskInfo", + column: "ProvinceCode"); + + migrationBuilder.CreateIndex( + name: "IX_Enterprise_CityCode", + table: "Enterprise", + column: "CityCode"); + + migrationBuilder.CreateIndex( + name: "IX_Enterprise_IndustryTypeCode", + table: "Enterprise", + column: "IndustryTypeCode"); + + migrationBuilder.CreateIndex( + name: "IX_Enterprise_ProvinceCode", + table: "Enterprise", + column: "ProvinceCode"); + + migrationBuilder.CreateIndex( + name: "IX_DictionaryData_Code", + table: "DictionaryData", + column: "Code", + unique: true); + + migrationBuilder.AddForeignKey( + name: "FK_Enterprise_DictionaryData_CityCode", + table: "Enterprise", + column: "CityCode", + principalTable: "DictionaryData", + principalColumn: "Code", + onDelete: ReferentialAction.Restrict); + + migrationBuilder.AddForeignKey( + name: "FK_Enterprise_DictionaryData_IndustryTypeCode", + table: "Enterprise", + column: "IndustryTypeCode", + principalTable: "DictionaryData", + principalColumn: "Code", + onDelete: ReferentialAction.Restrict); + + migrationBuilder.AddForeignKey( + name: "FK_Enterprise_DictionaryData_ProvinceCode", + table: "Enterprise", + column: "ProvinceCode", + principalTable: "DictionaryData", + principalColumn: "Code", + onDelete: ReferentialAction.Restrict); + + migrationBuilder.AddForeignKey( + name: "FK_TaskInfo_DictionaryData_CityCode", + table: "TaskInfo", + column: "CityCode", + principalTable: "DictionaryData", + principalColumn: "Code", + onDelete: ReferentialAction.Restrict); + + migrationBuilder.AddForeignKey( + name: "FK_TaskInfo_DictionaryData_ProvinceCode", + table: "TaskInfo", + column: "ProvinceCode", + principalTable: "DictionaryData", + principalColumn: "Code", + onDelete: ReferentialAction.Restrict); + + migrationBuilder.AddForeignKey( + name: "FK_TaskInfoBenefit_DictionaryData_BenefitCode", + table: "TaskInfoBenefit", + column: "BenefitCode", + principalTable: "DictionaryData", + principalColumn: "Code", + onDelete: ReferentialAction.Restrict); + + migrationBuilder.AddForeignKey( + name: "FK_TaskInfoCredentialLimit_DictionaryData_TypeCode", + table: "TaskInfoCredentialLimit", + column: "TypeCode", + principalTable: "DictionaryData", + principalColumn: "Code", + onDelete: ReferentialAction.Restrict); + + migrationBuilder.AddForeignKey( + name: "FK_UserInfo_DictionaryData_CityCode", + table: "UserInfo", + column: "CityCode", + principalTable: "DictionaryData", + principalColumn: "Code", + onDelete: ReferentialAction.Restrict); + + migrationBuilder.AddForeignKey( + name: "FK_UserInfo_DictionaryData_EducationalBackgroundCode", + table: "UserInfo", + column: "EducationalBackgroundCode", + principalTable: "DictionaryData", + principalColumn: "Code", + onDelete: ReferentialAction.Restrict); + + migrationBuilder.AddForeignKey( + name: "FK_UserInfo_DictionaryData_PersonalIdentityCode", + table: "UserInfo", + column: "PersonalIdentityCode", + principalTable: "DictionaryData", + principalColumn: "Code", + onDelete: ReferentialAction.Restrict); + + migrationBuilder.AddForeignKey( + name: "FK_UserInfo_DictionaryData_ProvinceCode", + table: "UserInfo", + column: "ProvinceCode", + principalTable: "DictionaryData", + principalColumn: "Code", + onDelete: ReferentialAction.Restrict); + + migrationBuilder.AddForeignKey( + name: "FK_UserInfoCredential_DictionaryData_TypeCode", + table: "UserInfoCredential", + column: "TypeCode", + principalTable: "DictionaryData", + principalColumn: "Code", + onDelete: ReferentialAction.Restrict); + + migrationBuilder.AddForeignKey( + name: "FK_UserInfoExpectJob_DictionaryData_PersonalIdentityCode", + table: "UserInfoExpectJob", + column: "PersonalIdentityCode", + principalTable: "DictionaryData", + principalColumn: "Code", + onDelete: ReferentialAction.Restrict); + } + + /// <inheritdoc /> + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "FK_Enterprise_DictionaryData_CityCode", + table: "Enterprise"); + + migrationBuilder.DropForeignKey( + name: "FK_Enterprise_DictionaryData_IndustryTypeCode", + table: "Enterprise"); + + migrationBuilder.DropForeignKey( + name: "FK_Enterprise_DictionaryData_ProvinceCode", + table: "Enterprise"); + + migrationBuilder.DropForeignKey( + name: "FK_TaskInfo_DictionaryData_CityCode", + table: "TaskInfo"); + + migrationBuilder.DropForeignKey( + name: "FK_TaskInfo_DictionaryData_ProvinceCode", + table: "TaskInfo"); + + migrationBuilder.DropForeignKey( + name: "FK_TaskInfoBenefit_DictionaryData_BenefitCode", + table: "TaskInfoBenefit"); + + migrationBuilder.DropForeignKey( + name: "FK_TaskInfoCredentialLimit_DictionaryData_TypeCode", + table: "TaskInfoCredentialLimit"); + + migrationBuilder.DropForeignKey( + name: "FK_UserInfo_DictionaryData_CityCode", + table: "UserInfo"); + + migrationBuilder.DropForeignKey( + name: "FK_UserInfo_DictionaryData_EducationalBackgroundCode", + table: "UserInfo"); + + migrationBuilder.DropForeignKey( + name: "FK_UserInfo_DictionaryData_PersonalIdentityCode", + table: "UserInfo"); + + migrationBuilder.DropForeignKey( + name: "FK_UserInfo_DictionaryData_ProvinceCode", + table: "UserInfo"); + + migrationBuilder.DropForeignKey( + name: "FK_UserInfoCredential_DictionaryData_TypeCode", + table: "UserInfoCredential"); + + migrationBuilder.DropForeignKey( + name: "FK_UserInfoExpectJob_DictionaryData_PersonalIdentityCode", + table: "UserInfoExpectJob"); + + migrationBuilder.DropIndex( + name: "IX_UserInfoExpectJob_PersonalIdentityCode", + table: "UserInfoExpectJob"); + + migrationBuilder.DropIndex( + name: "IX_UserInfoCredential_TypeCode", + table: "UserInfoCredential"); + + migrationBuilder.DropIndex( + name: "IX_UserInfo_CityCode", + table: "UserInfo"); + + migrationBuilder.DropIndex( + name: "IX_UserInfo_EducationalBackgroundCode", + table: "UserInfo"); + + migrationBuilder.DropIndex( + name: "IX_UserInfo_PersonalIdentityCode", + table: "UserInfo"); + + migrationBuilder.DropIndex( + name: "IX_UserInfo_ProvinceCode", + table: "UserInfo"); + + migrationBuilder.DropIndex( + name: "IX_TaskInfoCredentialLimit_TypeCode", + table: "TaskInfoCredentialLimit"); + + migrationBuilder.DropIndex( + name: "IX_TaskInfoBenefit_BenefitCode", + table: "TaskInfoBenefit"); + + migrationBuilder.DropIndex( + name: "IX_TaskInfo_CityCode", + table: "TaskInfo"); + + migrationBuilder.DropIndex( + name: "IX_TaskInfo_ProvinceCode", + table: "TaskInfo"); + + migrationBuilder.DropIndex( + name: "IX_Enterprise_CityCode", + table: "Enterprise"); + + migrationBuilder.DropIndex( + name: "IX_Enterprise_IndustryTypeCode", + table: "Enterprise"); + + migrationBuilder.DropIndex( + name: "IX_Enterprise_ProvinceCode", + table: "Enterprise"); + + migrationBuilder.DropUniqueConstraint( + name: "AK_DictionaryData_Code", + table: "DictionaryData"); + + migrationBuilder.DropIndex( + name: "IX_DictionaryData_Code", + table: "DictionaryData"); + + migrationBuilder.DropColumn( + name: "PersonalIdentityCode", + table: "UserInfoExpectJob"); + + migrationBuilder.DropColumn( + name: "TypeCode", + table: "UserInfoCredential"); + + migrationBuilder.DropColumn( + name: "CityCode", + table: "UserInfo"); + + migrationBuilder.DropColumn( + name: "EducationalBackgroundCode", + table: "UserInfo"); + + migrationBuilder.DropColumn( + name: "PersonalIdentityCode", + table: "UserInfo"); + + migrationBuilder.DropColumn( + name: "ProvinceCode", + table: "UserInfo"); + + migrationBuilder.DropColumn( + name: "TypeCode", + table: "TaskInfoCredentialLimit"); + + migrationBuilder.DropColumn( + name: "BenefitCode", + table: "TaskInfoBenefit"); + + migrationBuilder.DropColumn( + name: "CityCode", + table: "TaskInfo"); + + migrationBuilder.DropColumn( + name: "ProvinceCode", + table: "TaskInfo"); + + migrationBuilder.DropColumn( + name: "CityCode", + table: "Enterprise"); + + migrationBuilder.DropColumn( + name: "IndustryTypeCode", + table: "Enterprise"); + + migrationBuilder.DropColumn( + name: "ProvinceCode", + table: "Enterprise"); + + migrationBuilder.AddColumn<Guid>( + name: "PersonalIdentityId", + table: "UserInfoExpectJob", + type: "uniqueidentifier", + nullable: false, + defaultValue: new Guid("00000000-0000-0000-0000-000000000000")); + + migrationBuilder.AddColumn<Guid>( + name: "TypeId", + table: "UserInfoCredential", + type: "uniqueidentifier", + nullable: true); + + migrationBuilder.AddColumn<Guid>( + name: "CityId", + table: "UserInfo", + type: "uniqueidentifier", + nullable: true); + + migrationBuilder.AddColumn<Guid>( + name: "EducationalBackgroundId", + table: "UserInfo", + type: "uniqueidentifier", + nullable: true); + + migrationBuilder.AddColumn<Guid>( + name: "PersonalIdentityId", + table: "UserInfo", + type: "uniqueidentifier", + nullable: true); + + migrationBuilder.AddColumn<Guid>( + name: "ProvinceId", + table: "UserInfo", + type: "uniqueidentifier", + nullable: true); + + migrationBuilder.AddColumn<Guid>( + name: "TypeId", + table: "TaskInfoCredentialLimit", + type: "uniqueidentifier", + nullable: true); + + migrationBuilder.AddColumn<Guid>( + name: "BenefitId", + table: "TaskInfoBenefit", + type: "uniqueidentifier", + nullable: false, + defaultValue: new Guid("00000000-0000-0000-0000-000000000000")); + + migrationBuilder.AddColumn<Guid>( + name: "CityId", + table: "TaskInfo", + type: "uniqueidentifier", + nullable: false, + defaultValue: new Guid("00000000-0000-0000-0000-000000000000")); + + migrationBuilder.AddColumn<Guid>( + name: "CityId", + table: "Enterprise", + type: "uniqueidentifier", + nullable: true); + + migrationBuilder.AddColumn<Guid>( + name: "IndustryTypeId", + table: "Enterprise", + type: "uniqueidentifier", + nullable: true); + + migrationBuilder.AddColumn<Guid>( + name: "ProvinceId", + table: "Enterprise", + type: "uniqueidentifier", + nullable: true); + + migrationBuilder.AlterColumn<string>( + name: "Code", + table: "DictionaryData", + type: "nvarchar(128)", + maxLength: 128, + nullable: true, + oldClrType: typeof(string), + oldType: "nvarchar(128)", + oldMaxLength: 128); + + migrationBuilder.UpdateData( + table: "UserInfo", + keyColumn: "Id", + keyValue: new Guid("11111111-1111-1111-1111-111111111112"), + columns: new[] { "CityId", "EducationalBackgroundId", "PersonalIdentityId", "ProvinceId" }, + values: new object[] { null, null, null, null }); + + migrationBuilder.CreateIndex( + name: "IX_UserInfoExpectJob_PersonalIdentityId", + table: "UserInfoExpectJob", + column: "PersonalIdentityId"); + + migrationBuilder.CreateIndex( + name: "IX_UserInfoCredential_TypeId", + table: "UserInfoCredential", + column: "TypeId"); + + migrationBuilder.CreateIndex( + name: "IX_UserInfo_CityId", + table: "UserInfo", + column: "CityId"); + + migrationBuilder.CreateIndex( + name: "IX_UserInfo_EducationalBackgroundId", + table: "UserInfo", + column: "EducationalBackgroundId"); + + migrationBuilder.CreateIndex( + name: "IX_UserInfo_PersonalIdentityId", + table: "UserInfo", + column: "PersonalIdentityId"); + + migrationBuilder.CreateIndex( + name: "IX_UserInfo_ProvinceId", + table: "UserInfo", + column: "ProvinceId"); + + migrationBuilder.CreateIndex( + name: "IX_TaskInfoCredentialLimit_TypeId", + table: "TaskInfoCredentialLimit", + column: "TypeId"); + + migrationBuilder.CreateIndex( + name: "IX_TaskInfoBenefit_BenefitId", + table: "TaskInfoBenefit", + column: "BenefitId"); + + migrationBuilder.CreateIndex( + name: "IX_TaskInfo_CityId", + table: "TaskInfo", + column: "CityId"); + + migrationBuilder.CreateIndex( + name: "IX_Enterprise_CityId", + table: "Enterprise", + column: "CityId"); + + migrationBuilder.CreateIndex( + name: "IX_Enterprise_IndustryTypeId", + table: "Enterprise", + column: "IndustryTypeId"); + + migrationBuilder.CreateIndex( + name: "IX_Enterprise_ProvinceId", + table: "Enterprise", + column: "ProvinceId"); + + migrationBuilder.AddForeignKey( + name: "FK_Enterprise_DictionaryData_CityId", + table: "Enterprise", + column: "CityId", + principalTable: "DictionaryData", + principalColumn: "Id"); + + migrationBuilder.AddForeignKey( + name: "FK_Enterprise_DictionaryData_IndustryTypeId", + table: "Enterprise", + column: "IndustryTypeId", + principalTable: "DictionaryData", + principalColumn: "Id"); + + migrationBuilder.AddForeignKey( + name: "FK_Enterprise_DictionaryData_ProvinceId", + table: "Enterprise", + column: "ProvinceId", + principalTable: "DictionaryData", + principalColumn: "Id"); + + migrationBuilder.AddForeignKey( + name: "FK_TaskInfo_DictionaryData_CityId", + table: "TaskInfo", + column: "CityId", + principalTable: "DictionaryData", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_TaskInfoBenefit_DictionaryData_BenefitId", + table: "TaskInfoBenefit", + column: "BenefitId", + principalTable: "DictionaryData", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + + migrationBuilder.AddForeignKey( + name: "FK_TaskInfoCredentialLimit_DictionaryData_TypeId", + table: "TaskInfoCredentialLimit", + column: "TypeId", + principalTable: "DictionaryData", + principalColumn: "Id"); + + migrationBuilder.AddForeignKey( + name: "FK_UserInfo_DictionaryData_CityId", + table: "UserInfo", + column: "CityId", + principalTable: "DictionaryData", + principalColumn: "Id"); + + migrationBuilder.AddForeignKey( + name: "FK_UserInfo_DictionaryData_EducationalBackgroundId", + table: "UserInfo", + column: "EducationalBackgroundId", + principalTable: "DictionaryData", + principalColumn: "Id"); + + migrationBuilder.AddForeignKey( + name: "FK_UserInfo_DictionaryData_PersonalIdentityId", + table: "UserInfo", + column: "PersonalIdentityId", + principalTable: "DictionaryData", + principalColumn: "Id"); + + migrationBuilder.AddForeignKey( + name: "FK_UserInfo_DictionaryData_ProvinceId", + table: "UserInfo", + column: "ProvinceId", + principalTable: "DictionaryData", + principalColumn: "Id"); + + migrationBuilder.AddForeignKey( + name: "FK_UserInfoCredential_DictionaryData_TypeId", + table: "UserInfoCredential", + column: "TypeId", + principalTable: "DictionaryData", + principalColumn: "Id"); + + migrationBuilder.AddForeignKey( + name: "FK_UserInfoExpectJob_DictionaryData_PersonalIdentityId", + table: "UserInfoExpectJob", + column: "PersonalIdentityId", + principalTable: "DictionaryData", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + } + } +} diff --git a/FlexJobApi.Database.Migrations/Migrations/DefaultDbContextModelSnapshot.cs b/FlexJobApi.Database.Migrations/Migrations/DefaultDbContextModelSnapshot.cs index b919251..7af560f 100644 --- a/FlexJobApi.Database.Migrations/Migrations/DefaultDbContextModelSnapshot.cs +++ b/FlexJobApi.Database.Migrations/Migrations/DefaultDbContextModelSnapshot.cs @@ -135,6 +135,7 @@ .HasColumnType("uniqueidentifier"); b.Property<string>("Code") + .IsRequired() .HasMaxLength(128) .HasColumnType("nvarchar(128)"); @@ -191,6 +192,9 @@ b.HasIndex("CategoryId"); + b.HasIndex("Code") + .IsUnique(); + b.HasIndex("ParentId"); b.ToTable("DictionaryData"); @@ -212,8 +216,8 @@ b.Property<string>("BankName") .HasColumnType("nvarchar(max)"); - b.Property<Guid?>("CityId") - .HasColumnType("uniqueidentifier"); + b.Property<string>("CityCode") + .HasColumnType("nvarchar(128)"); b.Property<string>("ContactEmail") .HasColumnType("nvarchar(max)"); @@ -235,8 +239,8 @@ b.Property<Guid>("EnterpriseAuthId") .HasColumnType("uniqueidentifier"); - b.Property<Guid?>("IndustryTypeId") - .HasColumnType("uniqueidentifier"); + b.Property<string>("IndustryTypeCode") + .HasColumnType("nvarchar(128)"); b.Property<bool>("IsCheckedBankCard") .HasColumnType("bit"); @@ -253,8 +257,8 @@ b.Property<int?>("PayAccess") .HasColumnType("int"); - b.Property<Guid?>("ProvinceId") - .HasColumnType("uniqueidentifier"); + b.Property<string>("ProvinceCode") + .HasColumnType("nvarchar(128)"); b.Property<int?>("RealAccess") .HasColumnType("int"); @@ -285,13 +289,13 @@ b.HasKey("Id"); - b.HasIndex("CityId"); + b.HasIndex("CityCode"); b.HasIndex("EnterpriseAuthId"); - b.HasIndex("IndustryTypeId"); + b.HasIndex("IndustryTypeCode"); - b.HasIndex("ProvinceId"); + b.HasIndex("ProvinceCode"); b.ToTable("Enterprise"); }); @@ -733,8 +737,8 @@ b.Property<int>("BillingMethod") .HasColumnType("int"); - b.Property<Guid>("CityId") - .HasColumnType("uniqueidentifier"); + b.Property<string>("CityCode") + .HasColumnType("nvarchar(128)"); b.Property<DateTimeOffset>("CreatedTime") .HasColumnType("datetimeoffset"); @@ -758,6 +762,9 @@ .IsRequired() .HasColumnType("nvarchar(max)"); + b.Property<string>("ProvinceCode") + .HasColumnType("nvarchar(128)"); + b.Property<decimal>("ServiceFee") .HasColumnType("decimal(18,2)"); @@ -778,9 +785,11 @@ b.HasKey("Id"); - b.HasIndex("CityId"); + b.HasIndex("CityCode"); b.HasIndex("EnterpriseId"); + + b.HasIndex("ProvinceCode"); b.ToTable("TaskInfo"); }); @@ -791,8 +800,9 @@ .ValueGeneratedOnAdd() .HasColumnType("uniqueidentifier"); - b.Property<Guid>("BenefitId") - .HasColumnType("uniqueidentifier"); + b.Property<string>("BenefitCode") + .IsRequired() + .HasColumnType("nvarchar(128)"); b.Property<DateTimeOffset>("CreatedTime") .HasColumnType("datetimeoffset"); @@ -820,7 +830,7 @@ b.HasKey("Id"); - b.HasIndex("BenefitId"); + b.HasIndex("BenefitCode"); b.HasIndex("TaskInfoId"); @@ -851,8 +861,9 @@ b.Property<string>("TraceId") .HasColumnType("nvarchar(max)"); - b.Property<Guid?>("TypeId") - .HasColumnType("uniqueidentifier"); + b.Property<string>("TypeCode") + .IsRequired() + .HasColumnType("nvarchar(128)"); b.Property<DateTimeOffset?>("UpdatedTime") .HasColumnType("datetimeoffset"); @@ -864,7 +875,7 @@ b.HasIndex("TaskInfoId"); - b.HasIndex("TypeId"); + b.HasIndex("TypeCode"); b.ToTable("TaskInfoCredentialLimit"); }); @@ -1020,8 +1031,8 @@ b.Property<string>("Avatar") .HasColumnType("nvarchar(max)"); - b.Property<Guid?>("CityId") - .HasColumnType("uniqueidentifier"); + b.Property<string>("CityCode") + .HasColumnType("nvarchar(128)"); b.Property<DateTimeOffset>("CreatedTime") .HasColumnType("datetimeoffset"); @@ -1029,8 +1040,8 @@ b.Property<Guid?>("CreatedUserInfoId") .HasColumnType("uniqueidentifier"); - b.Property<Guid?>("EducationalBackgroundId") - .HasColumnType("uniqueidentifier"); + b.Property<string>("EducationalBackgroundCode") + .HasColumnType("nvarchar(128)"); b.Property<Guid?>("EnterpriseId") .HasColumnType("uniqueidentifier"); @@ -1050,11 +1061,11 @@ b.Property<int>("Level") .HasColumnType("int"); - b.Property<Guid?>("PersonalIdentityId") - .HasColumnType("uniqueidentifier"); + b.Property<string>("PersonalIdentityCode") + .HasColumnType("nvarchar(128)"); - b.Property<Guid?>("ProvinceId") - .HasColumnType("uniqueidentifier"); + b.Property<string>("ProvinceCode") + .HasColumnType("nvarchar(128)"); b.Property<string>("Remark") .HasColumnType("nvarchar(max)"); @@ -1095,15 +1106,15 @@ b.HasKey("Id"); - b.HasIndex("CityId"); + b.HasIndex("CityCode"); - b.HasIndex("EducationalBackgroundId"); + b.HasIndex("EducationalBackgroundCode"); b.HasIndex("EnterpriseId"); - b.HasIndex("PersonalIdentityId"); + b.HasIndex("PersonalIdentityCode"); - b.HasIndex("ProvinceId"); + b.HasIndex("ProvinceCode"); b.HasIndex("UserAuthId"); @@ -1219,8 +1230,9 @@ b.Property<string>("TraceId") .HasColumnType("nvarchar(max)"); - b.Property<Guid?>("TypeId") - .HasColumnType("uniqueidentifier"); + b.Property<string>("TypeCode") + .IsRequired() + .HasColumnType("nvarchar(128)"); b.Property<DateTimeOffset?>("UpdatedTime") .HasColumnType("datetimeoffset"); @@ -1233,7 +1245,7 @@ b.HasKey("Id"); - b.HasIndex("TypeId"); + b.HasIndex("TypeCode"); b.HasIndex("UserInfoId"); @@ -1297,8 +1309,9 @@ b.Property<bool>("IsDeleted") .HasColumnType("bit"); - b.Property<Guid>("PersonalIdentityId") - .HasColumnType("uniqueidentifier"); + b.Property<string>("PersonalIdentityCode") + .IsRequired() + .HasColumnType("nvarchar(128)"); b.Property<int>("Sort") .HasColumnType("int"); @@ -1317,7 +1330,7 @@ b.HasKey("Id"); - b.HasIndex("PersonalIdentityId"); + b.HasIndex("PersonalIdentityCode"); b.HasIndex("UserInfoId"); @@ -1444,7 +1457,9 @@ { b.HasOne("FlexJobApi.Core.DictionaryData", "City") .WithMany() - .HasForeignKey("CityId"); + .HasForeignKey("CityCode") + .HasPrincipalKey("Code") + .OnDelete(DeleteBehavior.Restrict); b.HasOne("FlexJobApi.Core.EnterpriseAuth", "EnterpriseAuth") .WithMany() @@ -1454,11 +1469,15 @@ b.HasOne("FlexJobApi.Core.DictionaryData", "IndustryType") .WithMany() - .HasForeignKey("IndustryTypeId"); + .HasForeignKey("IndustryTypeCode") + .HasPrincipalKey("Code") + .OnDelete(DeleteBehavior.Restrict); b.HasOne("FlexJobApi.Core.DictionaryData", "Province") .WithMany() - .HasForeignKey("ProvinceId"); + .HasForeignKey("ProvinceCode") + .HasPrincipalKey("Code") + .OnDelete(DeleteBehavior.Restrict); b.Navigation("City"); @@ -1520,9 +1539,9 @@ { b.HasOne("FlexJobApi.Core.DictionaryData", "City") .WithMany() - .HasForeignKey("CityId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); + .HasForeignKey("CityCode") + .HasPrincipalKey("Code") + .OnDelete(DeleteBehavior.Restrict); b.HasOne("FlexJobApi.Core.Enterprise", "Enterprise") .WithMany() @@ -1530,17 +1549,26 @@ .OnDelete(DeleteBehavior.Cascade) .IsRequired(); + b.HasOne("FlexJobApi.Core.DictionaryData", "Province") + .WithMany() + .HasForeignKey("ProvinceCode") + .HasPrincipalKey("Code") + .OnDelete(DeleteBehavior.Restrict); + b.Navigation("City"); b.Navigation("Enterprise"); + + b.Navigation("Province"); }); modelBuilder.Entity("FlexJobApi.Core.TaskInfoBenefit", b => { b.HasOne("FlexJobApi.Core.DictionaryData", "Benefit") .WithMany() - .HasForeignKey("BenefitId") - .OnDelete(DeleteBehavior.Cascade) + .HasForeignKey("BenefitCode") + .HasPrincipalKey("Code") + .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("FlexJobApi.Core.TaskInfo", "TaskInfo") @@ -1564,7 +1592,10 @@ b.HasOne("FlexJobApi.Core.DictionaryData", "Type") .WithMany() - .HasForeignKey("TypeId"); + .HasForeignKey("TypeCode") + .HasPrincipalKey("Code") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); b.Navigation("TaskInfo"); @@ -1594,11 +1625,15 @@ { b.HasOne("FlexJobApi.Core.DictionaryData", "City") .WithMany() - .HasForeignKey("CityId"); + .HasForeignKey("CityCode") + .HasPrincipalKey("Code") + .OnDelete(DeleteBehavior.Restrict); b.HasOne("FlexJobApi.Core.DictionaryData", "EducationalBackground") .WithMany() - .HasForeignKey("EducationalBackgroundId"); + .HasForeignKey("EducationalBackgroundCode") + .HasPrincipalKey("Code") + .OnDelete(DeleteBehavior.Restrict); b.HasOne("FlexJobApi.Core.Enterprise", "Enterprise") .WithMany("UserInfos") @@ -1606,11 +1641,15 @@ b.HasOne("FlexJobApi.Core.DictionaryData", "PersonalIdentity") .WithMany() - .HasForeignKey("PersonalIdentityId"); + .HasForeignKey("PersonalIdentityCode") + .HasPrincipalKey("Code") + .OnDelete(DeleteBehavior.Restrict); b.HasOne("FlexJobApi.Core.DictionaryData", "Province") .WithMany() - .HasForeignKey("ProvinceId"); + .HasForeignKey("ProvinceCode") + .HasPrincipalKey("Code") + .OnDelete(DeleteBehavior.Restrict); b.HasOne("FlexJobApi.Core.UserAuth", "UserAuth") .WithMany("UserInfos") @@ -1646,7 +1685,10 @@ { b.HasOne("FlexJobApi.Core.DictionaryData", "Type") .WithMany() - .HasForeignKey("TypeId"); + .HasForeignKey("TypeCode") + .HasPrincipalKey("Code") + .OnDelete(DeleteBehavior.Restrict) + .IsRequired(); b.HasOne("FlexJobApi.Core.UserInfo", "UserInfo") .WithMany("UserInfoCredentials") @@ -1682,8 +1724,9 @@ { b.HasOne("FlexJobApi.Core.DictionaryData", "PersonalIdentity") .WithMany() - .HasForeignKey("PersonalIdentityId") - .OnDelete(DeleteBehavior.Cascade) + .HasForeignKey("PersonalIdentityCode") + .HasPrincipalKey("Code") + .OnDelete(DeleteBehavior.Restrict) .IsRequired(); b.HasOne("FlexJobApi.Core.UserInfo", "UserInfo") diff --git a/FlexJobApi.Database.Migrations/REDEME.MD b/FlexJobApi.Database.Migrations/REDEME.MD index 66ab628..75c52e5 100644 --- a/FlexJobApi.Database.Migrations/REDEME.MD +++ b/FlexJobApi.Database.Migrations/REDEME.MD @@ -1,7 +1,7 @@ -------------------------------主数据库--------------------------------------- 新增迁移文件 -dotnet ef migrations add UpdateResource0806002 -s "../FlexJobApi.Web.Entry" -c DefaultDbContext +dotnet ef migrations add UpdateDictionaryData -s "../FlexJobApi.Web.Entry" -c DefaultDbContext 删除迁移文件 dotnet ef migrations remove -s "../FlexJobApi.Web.Entry" -c DefaultDbContext diff --git a/FlexJobApi.User.Application/Enterprises/Queries/EnterprisesQueryHandler.cs b/FlexJobApi.User.Application/Enterprises/Queries/EnterprisesQueryHandler.cs index a8917d7..fdece96 100644 --- a/FlexJobApi.User.Application/Enterprises/Queries/EnterprisesQueryHandler.cs +++ b/FlexJobApi.User.Application/Enterprises/Queries/EnterprisesQueryHandler.cs @@ -50,11 +50,11 @@ } var s = (from e in q join a in repEnterpriseAuth.AsQueryable().AsNoTracking() on e.EnterpriseAuthId equals a.Id - join p in repDictionaryData.AsQueryable().AsNoTracking() on e.ProvinceId equals p.Id into pg + join p in repDictionaryData.AsQueryable().AsNoTracking() on e.ProvinceCode equals p.Code into pg from pgi in pg.DefaultIfEmpty() - join c in repDictionaryData.AsQueryable().AsNoTracking() on e.CityId equals c.Id into cg + join c in repDictionaryData.AsQueryable().AsNoTracking() on e.CityCode equals c.Code into cg from cgi in cg.DefaultIfEmpty() - join i in repDictionaryData.AsQueryable().AsNoTracking() on e.IndustryTypeId equals i.Id into ig + join i in repDictionaryData.AsQueryable().AsNoTracking() on e.IndustryTypeCode equals i.Code into ig from igi in ig.DefaultIfEmpty() select new GetEnterprisesQueryResultItem { -- Gitblit v1.9.1