From ab8cdd88b921021c1f532d0f83df3745b5998d90 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E6=B7=B3?= Date: Tue, 18 Oct 2022 18:01:16 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0codeFirst=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/TestController.cs | 2 +- .../Yi.Framework.ApiMicroservice.csproj | 3 - .../appsettings.Production.json | 58 +++++++++--------- .../appsettings.Staging.json | 22 ++++--- .../appsettings.json | 1 + .../yi-sqlsugar-dev.db | Bin 364544 -> 180224 bytes .../ModelsTemplate/ArticleEntity.cs | 6 +- .../ModelsTemplate/ConfigEntity.cs | 10 +-- .../ModelsTemplate/DeptEntity.cs | 8 +-- .../ModelsTemplate/DictionaryEntity.cs | 6 +- .../ModelsTemplate/DictionaryInfoEntity.cs | 12 ++-- .../ModelsTemplate/FileEntity.cs | 8 +-- .../ModelsTemplate/LogEntity.cs | 4 +- .../ModelsTemplate/LoginLogEntity.cs | 14 ++--- .../ModelsTemplate/MenuEntity.cs | 14 ++--- .../ModelsTemplate/OperationLogEntity.cs | 16 ++--- .../ModelsTemplate/PostEntity.cs | 6 +- .../ModelsTemplate/RoleDeptEntity.cs | 2 +- .../ModelsTemplate/RoleEntity.cs | 14 ++--- .../ModelsTemplate/TenantEntity.cs | 4 +- .../ModelsTemplate/UserEntity.cs | 20 +++--- .../ModelsTemplate/UserPostEntity.cs | 2 +- .../Yi.Framework.Model.csproj | 1 + .../DbExtend/DbSeedExtend.cs | 35 ++++++++++- .../MiddlewareExtend/SqlsugarExtension.cs | 14 ++++- 25 files changed, 161 insertions(+), 121 deletions(-) diff --git a/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/TestController.cs b/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/TestController.cs index 8e0c2f73..a2e327d7 100644 --- a/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/TestController.cs +++ b/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Controllers/TestController.cs @@ -272,7 +272,7 @@ namespace Yi.Framework.ApiMicroservice.Controllers public Result SeedDb() { var rep = _iUserService._repository; - return Result.Success().SetStatus(DbSeedExtend.Invoer(rep._Db)); + return Result.Success().SetStatus(DbSeedExtend.DataInvoer(rep._Db)); } /// diff --git a/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Yi.Framework.ApiMicroservice.csproj b/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Yi.Framework.ApiMicroservice.csproj index 677bea43..922abba3 100644 --- a/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Yi.Framework.ApiMicroservice.csproj +++ b/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/Yi.Framework.ApiMicroservice.csproj @@ -43,9 +43,6 @@ Always - - Always - diff --git a/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/appsettings.Production.json b/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/appsettings.Production.json index ec8aa7bb..07cf237d 100644 --- a/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/appsettings.Production.json +++ b/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/appsettings.Production.json @@ -1,5 +1,5 @@ { - "StartUrl": "http://localohost:19001", + "StartUrl": "http://*:19001", "Logging": { "LogLevel": { "Default": "Information", @@ -12,10 +12,13 @@ "SqlLog_Enable": false, "Consul_Enabled": false, + "DbCodeFirst_Enabled": false, + "DbSeed_Enabled": false, "Apollo_Enabled": false, "HealthCheck_Enabled": false, "RabbitMQ_Enabled": false, "Redis_Enabled": false, + "RedisSeed_Enabled": false, "Kafka_Enabled": false, "ElasticSeach_Enabled": false, "MutiDB_Enabled": false, @@ -23,19 +26,16 @@ "CAP_Enabled": false, "CAPDashboard_Enabled": false, - "DbSeed_Enabled": true, - "RedisSeed_Enabled": false, - "Cors_Enabled": true, "DbList": [ "Sqlite", "Mysql", "Sqlserver", "Oracle" ], "DbSelect": "Sqlite", "DbConn": { "WriteUrl": "DataSource=yi-sqlsugar-dev.db", - //"WriteUrl": "server=119.91.207.67;port=3306;database=yi-sqlsugar-dev;user id=root;password=Qz52013142020.", + //"WriteUrl": "[xxxx];port=3306;database=[xxxx];user id=[xxxx];password=[xxxx]", "ReadUrl": [ - "server=119.91.207.67;port=3306;database=yi-sqlsugar-dev;user id=root;password=Qz52013142020.", - "server=119.91.207.67;port=3306;database=yi-sqlsugar-dev;user id=root;password=Qz52013142020.", - "server=119.91.207.67;port=3306;database=yi-sqlsugar-dev;user id=root;password=Qz52013142020." + "server=[xxxx];port=3306;database=[xxxx];user id=[xxxx];password=[xxxx]", + "server=[xxxx];port=3306;database=[xxxx];user id=[xxxx];password=[xxxx]", + "server=[xxxx];port=3306;database=[xxxx];user id=[xxxx];password=[xxxx]" ] }, "JwtAuthorize": { @@ -44,39 +44,39 @@ "PolicyName": "permission", "DefaultScheme": "Bearer", "IsHttps": false, - "Expiration": 30, + "Expiration": 300, "ReExpiration": 3000 }, "RedisConnOptions": { - "Host": "118.195.191.41", + "Host": "[xxxx]", "Prot": 6379, "DB": 1, - "Password": "Qz52013142020." + "Password": "[xxxx]" }, "RabbitConn": { - "HostName": "118.195.191.41", - "UserName": "cc", - "Password": "cc", + "HostName": "[xxxx]", + "UserName": "[xxxx]", + "Password": "[xxxx]", "Port": 5672 }, "ElasticSeachConn": { - "Url": "https://es-4zakkyyn.public.tencentelasticsearch.com:9200", - "IndexName": "yies", - "UserName": "elastic", - "PassWord": "Qz52013142020." + "Url": "[xxxx]", + "IndexName": "[xxxx]", + "UserName": "[xxxx]", + "PassWord": "[xxxx]" }, "KafkaOptions": { - "BrokerList": "192.168.3.230:9092", - "TopicName": "kafkalog" + "BrokerList": "[xxxx]", + "TopicName": "[xxxx]" }, "ConsulClientOption": { - "IP": "118.195.191.41", - "Port": "8500", - "Datacenter": "dc1" + "IP": "[xxxx]", + "Port": "[xxxx]", + "Datacenter": "[xxxx]" }, "ConsulRegisterOption": { - "IP": "118.195.191.41", - "Port": "19005", + "IP": "[xxxx]", + "Port": "19001", "GroupName": "ApiMicroservice", "HealthCheckUrl": "/Health", "Interval": 10, @@ -85,10 +85,10 @@ "Tag": "13" }, "SMS": { - "ID": "LTAI5tJvjPaXCyyPMfXLNbVA", - "Secret": "fLQv7jjj57fUKLFK8REeAQPFVDjUYn", - "Sign": "JiftCC", - "Template": "SMS_221640732" + "ID": "[xxxx]", + "Secret": "[xxxx]", + "Sign": "[xxxx]", + "Template": "[xxxx]" }, "IPLibraryServiceUrl": "http://gRPCIPLibraryService" } \ No newline at end of file diff --git a/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/appsettings.Staging.json b/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/appsettings.Staging.json index fd710b84..07cf237d 100644 --- a/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/appsettings.Staging.json +++ b/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/appsettings.Staging.json @@ -12,6 +12,7 @@ "SqlLog_Enable": false, "Consul_Enabled": false, + "DbCodeFirst_Enabled": false, "DbSeed_Enabled": false, "Apollo_Enabled": false, "HealthCheck_Enabled": false, @@ -27,23 +28,24 @@ "Cors_Enabled": true, "DbList": [ "Sqlite", "Mysql", "Sqlserver", "Oracle" ], - "DbSelect": "Mysql", - "Pan": { - "ZipPath": "D:/AppWeb/test/zip" - }, - + "DbSelect": "Sqlite", "DbConn": { - "WriteUrl": "server=[xxxx];port=3306;database=[xxxx];user id=[xxxx];password=[xxxx]", + "WriteUrl": "DataSource=yi-sqlsugar-dev.db", + //"WriteUrl": "[xxxx];port=3306;database=[xxxx];user id=[xxxx];password=[xxxx]", "ReadUrl": [ "server=[xxxx];port=3306;database=[xxxx];user id=[xxxx];password=[xxxx]", "server=[xxxx];port=3306;database=[xxxx];user id=[xxxx];password=[xxxx]", "server=[xxxx];port=3306;database=[xxxx];user id=[xxxx];password=[xxxx]" ] }, - "JWTTokenOptions": { - "Audience": "http://localhost:7000", - "Issuer": "http://localhost:7000", - "SecurityKey": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDI2a2EJ7m872v0afyoSDJT2o1+SitIeJSWtLJU8/Wz2m7gStexajkeD+Lka6DSTy8gt9UwfgVQo6uKjVLG5Ex7PiGOODVqAEghBuS7JzIYU5RvI543nNDAPfnJsas96mSA7L/mD7RTE2drj6hf3oZjJpMPZUQI/B1Qjb5H3K3PNwIDAQAB" + "JwtAuthorize": { + "Issuer": "cc", + "Audience": "cc", + "PolicyName": "permission", + "DefaultScheme": "Bearer", + "IsHttps": false, + "Expiration": 300, + "ReExpiration": 3000 }, "RedisConnOptions": { "Host": "[xxxx]", diff --git a/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/appsettings.json b/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/appsettings.json index 0ed84298..07cf237d 100644 --- a/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/appsettings.json +++ b/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/appsettings.json @@ -12,6 +12,7 @@ "SqlLog_Enable": false, "Consul_Enabled": false, + "DbCodeFirst_Enabled": false, "DbSeed_Enabled": false, "Apollo_Enabled": false, "HealthCheck_Enabled": false, diff --git a/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/yi-sqlsugar-dev.db b/Yi.Framework.Net6/Yi.Framework.ApiMicroservice/yi-sqlsugar-dev.db index 7b63d53450bb907b9f7f419cd83b0c020ffef2f6..ce7018e8a79388231b137bfc10def269de7c46f5 100644 GIT binary patch literal 180224 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 G$^Q>*K4_Kz literal 364544 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%0DpG&!s=@djNX)O-BOgRbr$n?cU@Fk`%sv}^oFYx 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 jnM^~2NpL(h [SugarColumn(ColumnName="Title" )] - public string Title { get; set; } + public string? Title { get; set; } /// /// 文章内容 /// [SugarColumn(ColumnName="Content" )] - public string Content { get; set; } + public string? Content { get; set; } /// /// 用户id /// @@ -72,7 +72,7 @@ namespace Yi.Framework.Model.Models /// 描述 /// [SugarColumn(ColumnName="Remark" )] - public string Remark { get; set; } + public string? Remark { get; set; } /// /// 图片列表 /// diff --git a/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/ConfigEntity.cs b/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/ConfigEntity.cs index f41dd6b0..7fd11b35 100644 --- a/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/ConfigEntity.cs +++ b/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/ConfigEntity.cs @@ -22,22 +22,22 @@ namespace Yi.Framework.Model.Models /// 配置名称 /// [SugarColumn(ColumnName="ConfigName" )] - public string ConfigName { get; set; } + public string? ConfigName { get; set; } /// /// 配置键 /// [SugarColumn(ColumnName="ConfigKey" )] - public string ConfigKey { get; set; } + public string? ConfigKey { get; set; } /// /// 配置值 /// [SugarColumn(ColumnName="ConfigValue" )] - public string ConfigValue { get; set; } + public string? ConfigValue { get; set; } /// /// 配置类别 /// [SugarColumn(ColumnName="ConfigType" )] - public string ConfigType { get; set; } + public string? ConfigType { get; set; } /// /// 创建者 /// @@ -77,6 +77,6 @@ namespace Yi.Framework.Model.Models /// 描述 /// [SugarColumn(ColumnName="Remark" )] - public string Remark { get; set; } + public string? Remark { get; set; } } } diff --git a/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/DeptEntity.cs b/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/DeptEntity.cs index c8628796..bfc66554 100644 --- a/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/DeptEntity.cs +++ b/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/DeptEntity.cs @@ -22,17 +22,17 @@ namespace Yi.Framework.Model.Models /// 部门名称 /// [SugarColumn(ColumnName="DeptName" )] - public string DeptName { get; set; } + public string? DeptName { get; set; } /// /// 部门编码 /// [SugarColumn(ColumnName="DeptCode" )] - public string DeptCode { get; set; } + public string? DeptCode { get; set; } /// /// 负责人 /// [SugarColumn(ColumnName="Leader" )] - public string Leader { get; set; } + public string? Leader { get; set; } /// /// 父级id /// @@ -77,6 +77,6 @@ namespace Yi.Framework.Model.Models /// 描述 /// [SugarColumn(ColumnName="Remark" )] - public string Remark { get; set; } + public string? Remark { get; set; } } } diff --git a/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/DictionaryEntity.cs b/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/DictionaryEntity.cs index c95a26fa..b14c1f02 100644 --- a/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/DictionaryEntity.cs +++ b/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/DictionaryEntity.cs @@ -22,12 +22,12 @@ namespace Yi.Framework.Model.Models /// 字典名称 /// [SugarColumn(ColumnName="DictName" )] - public string DictName { get; set; } + public string? DictName { get; set; } /// /// 字典类型 /// [SugarColumn(ColumnName="DictType" )] - public string DictType { get; set; } + public string? DictType { get; set; } /// /// 创建者 /// @@ -67,6 +67,6 @@ namespace Yi.Framework.Model.Models /// 描述 /// [SugarColumn(ColumnName="Remark" )] - public string Remark { get; set; } + public string? Remark { get; set; } } } diff --git a/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/DictionaryInfoEntity.cs b/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/DictionaryInfoEntity.cs index 57dffa89..c1f7200e 100644 --- a/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/DictionaryInfoEntity.cs +++ b/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/DictionaryInfoEntity.cs @@ -22,17 +22,17 @@ namespace Yi.Framework.Model.Models /// 字典类型 /// [SugarColumn(ColumnName="DictType" )] - public string DictType { get; set; } + public string? DictType { get; set; } /// /// 字典标签 /// [SugarColumn(ColumnName="DictLabel" )] - public string DictLabel { get; set; } + public string? DictLabel { get; set; } /// /// 字典值 /// [SugarColumn(ColumnName="DictValue" )] - public string DictValue { get; set; } + public string? DictValue { get; set; } /// /// 是否为该类型的默认值 /// @@ -77,16 +77,16 @@ namespace Yi.Framework.Model.Models /// 描述 /// [SugarColumn(ColumnName="Remark" )] - public string Remark { get; set; } + public string? Remark { get; set; } /// /// tag类型 /// [SugarColumn(ColumnName="ListClass" )] - public string ListClass { get; set; } + public string? ListClass { get; set; } /// /// tagClass /// [SugarColumn(ColumnName="CssClass" )] - public string CssClass { get; set; } + public string? CssClass { get; set; } } } diff --git a/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/FileEntity.cs b/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/FileEntity.cs index 4f0e5a77..1336abe1 100644 --- a/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/FileEntity.cs +++ b/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/FileEntity.cs @@ -22,7 +22,7 @@ namespace Yi.Framework.Model.Models /// 文件类型 /// [SugarColumn(ColumnName="FileType" )] - public string FileType { get; set; } + public string? FileType { get; set; } /// /// 文件大小 /// @@ -32,12 +32,12 @@ namespace Yi.Framework.Model.Models /// 文件名 /// [SugarColumn(ColumnName="FileName" )] - public string FileName { get; set; } + public string? FileName { get; set; } /// /// 文件路径 /// [SugarColumn(ColumnName="FilePath" )] - public string FilePath { get; set; } + public string? FilePath { get; set; } /// /// 创建者 /// @@ -77,6 +77,6 @@ namespace Yi.Framework.Model.Models /// 描述 /// [SugarColumn(ColumnName="Remark" )] - public string Remark { get; set; } + public string? Remark { get; set; } } } diff --git a/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/LogEntity.cs b/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/LogEntity.cs index b7a085b1..e2db6dc9 100644 --- a/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/LogEntity.cs +++ b/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/LogEntity.cs @@ -43,7 +43,7 @@ namespace Yi.Framework.Model.Models /// 消息 /// [SugarColumn(ColumnName="Message" )] - public string Message { get; set; } + public string? Message { get; set; } /// /// 排序字段 /// @@ -53,6 +53,6 @@ namespace Yi.Framework.Model.Models /// 描述 /// [SugarColumn(ColumnName="Remark" )] - public string Remark { get; set; } + public string? Remark { get; set; } } } diff --git a/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/LoginLogEntity.cs b/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/LoginLogEntity.cs index d2165318..9f0dc985 100644 --- a/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/LoginLogEntity.cs +++ b/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/LoginLogEntity.cs @@ -22,32 +22,32 @@ namespace Yi.Framework.Model.Models /// 登录用户 /// [SugarColumn(ColumnName="LoginUser" )] - public string LoginUser { get; set; } + public string? LoginUser { get; set; } /// /// 登录地点 /// [SugarColumn(ColumnName="LoginLocation" )] - public string LoginLocation { get; set; } + public string? LoginLocation { get; set; } /// /// 登录Ip /// [SugarColumn(ColumnName="LoginIp" )] - public string LoginIp { get; set; } + public string? LoginIp { get; set; } /// /// 浏览器 /// [SugarColumn(ColumnName="Browser" )] - public string Browser { get; set; } + public string? Browser { get; set; } /// /// 操作系统 /// [SugarColumn(ColumnName="Os" )] - public string Os { get; set; } + public string? Os { get; set; } /// /// 登录信息 /// [SugarColumn(ColumnName="LogMsg" )] - public string LogMsg { get; set; } + public string? LogMsg { get; set; } /// /// 创建者 /// @@ -82,7 +82,7 @@ namespace Yi.Framework.Model.Models /// 描述 /// [SugarColumn(ColumnName="Remark" )] - public string Remark { get; set; } + public string? Remark { get; set; } /// /// 是否删除 /// diff --git a/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/MenuEntity.cs b/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/MenuEntity.cs index d10103ad..aeb3c471 100644 --- a/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/MenuEntity.cs +++ b/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/MenuEntity.cs @@ -23,7 +23,7 @@ namespace Yi.Framework.Model.Models /// /// [SugarColumn(ColumnName="MenuName" )] - public string MenuName { get; set; } + public string? MenuName { get; set; } /// /// /// @@ -33,7 +33,7 @@ namespace Yi.Framework.Model.Models /// /// [SugarColumn(ColumnName="PermissionCode" )] - public string PermissionCode { get; set; } + public string? PermissionCode { get; set; } /// /// /// @@ -73,12 +73,12 @@ namespace Yi.Framework.Model.Models /// 菜单图标 /// [SugarColumn(ColumnName="MenuIcon" )] - public string MenuIcon { get; set; } + public string? MenuIcon { get; set; } /// /// 菜单组件路由 /// [SugarColumn(ColumnName="Router" )] - public string Router { get; set; } + public string? Router { get; set; } /// /// 是否为外部链接 /// @@ -103,16 +103,16 @@ namespace Yi.Framework.Model.Models /// 描述 /// [SugarColumn(ColumnName="Remark" )] - public string Remark { get; set; } + public string? Remark { get; set; } /// /// 组件路径 /// [SugarColumn(ColumnName="Component" )] - public string Component { get; set; } + public string? Component { get; set; } /// /// 路由参数 /// [SugarColumn(ColumnName="Query" )] - public string Query { get; set; } + public string? Query { get; set; } } } diff --git a/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/OperationLogEntity.cs b/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/OperationLogEntity.cs index 183e60a3..3ee911fd 100644 --- a/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/OperationLogEntity.cs +++ b/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/OperationLogEntity.cs @@ -22,7 +22,7 @@ namespace Yi.Framework.Model.Models /// 操作模块 /// [SugarColumn(ColumnName="Title" )] - public string Title { get; set; } + public string? Title { get; set; } /// /// 操作类型 /// @@ -32,7 +32,7 @@ namespace Yi.Framework.Model.Models /// 请求方法 /// [SugarColumn(ColumnName="RequestMethod" )] - public string RequestMethod { get; set; } + public string? RequestMethod { get; set; } /// /// 操作人员 /// @@ -42,27 +42,27 @@ namespace Yi.Framework.Model.Models /// 操作Ip /// [SugarColumn(ColumnName="OperIp" )] - public string OperIp { get; set; } + public string? OperIp { get; set; } /// /// 操作地点 /// [SugarColumn(ColumnName="OperLocation" )] - public string OperLocation { get; set; } + public string? OperLocation { get; set; } /// /// 操作方法 /// [SugarColumn(ColumnName="Method" )] - public string Method { get; set; } + public string? Method { get; set; } /// /// 请求参数 /// [SugarColumn(ColumnName="RequestParam" )] - public string RequestParam { get; set; } + public string? RequestParam { get; set; } /// /// 请求结果 /// [SugarColumn(ColumnName="RequestResult" )] - public string RequestResult { get; set; } + public string? RequestResult { get; set; } /// /// 创建者 /// @@ -97,7 +97,7 @@ namespace Yi.Framework.Model.Models /// 描述 /// [SugarColumn(ColumnName="Remark" )] - public string Remark { get; set; } + public string? Remark { get; set; } /// /// 是否删除 /// diff --git a/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/PostEntity.cs b/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/PostEntity.cs index 35e513ca..02564b99 100644 --- a/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/PostEntity.cs +++ b/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/PostEntity.cs @@ -22,12 +22,12 @@ namespace Yi.Framework.Model.Models /// 岗位编码 /// [SugarColumn(ColumnName="PostCode" )] - public string PostCode { get; set; } + public string? PostCode { get; set; } /// /// 岗位名称 /// [SugarColumn(ColumnName="PostName" )] - public string PostName { get; set; } + public string? PostName { get; set; } /// /// 创建者 /// @@ -67,6 +67,6 @@ namespace Yi.Framework.Model.Models /// 描述 /// [SugarColumn(ColumnName="Remark" )] - public string Remark { get; set; } + public string? Remark { get; set; } } } diff --git a/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/RoleDeptEntity.cs b/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/RoleDeptEntity.cs index a63cc7ab..5a3689c0 100644 --- a/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/RoleDeptEntity.cs +++ b/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/RoleDeptEntity.cs @@ -67,6 +67,6 @@ namespace Yi.Framework.Model.Models /// 描述 /// [SugarColumn(ColumnName="Remark" )] - public string Remark { get; set; } + public string? Remark { get; set; } } } diff --git a/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/RoleEntity.cs b/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/RoleEntity.cs index 63a36218..e269079b 100644 --- a/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/RoleEntity.cs +++ b/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/RoleEntity.cs @@ -9,20 +9,20 @@ namespace Yi.Framework.Model.Models /// 角色表 /// [SugarTable("Role")] - public partial class RoleEntity:IBaseModelEntity + public partial class RoleEntity : IBaseModelEntity { public RoleEntity() { this.CreateTime = DateTime.Now; } [JsonConverter(typeof(ValueToStringConverter))] - [SugarColumn(ColumnName="Id" ,IsPrimaryKey = true )] - public long Id { get; set; } + [SugarColumn(ColumnName = "Id", IsPrimaryKey = true)] + public long Id { get; set; } /// /// /// - [SugarColumn(ColumnName="RoleName" )] - public string RoleName { get; set; } + [SugarColumn(ColumnName = "RoleName")] + public string? RoleName { get; set; } /// /// 创建者 /// @@ -57,7 +57,7 @@ namespace Yi.Framework.Model.Models /// 角色编码 /// [SugarColumn(ColumnName="RoleCode" )] - public string RoleCode { get; set; } + public string? RoleCode { get; set; } /// /// 排序字段 /// @@ -67,7 +67,7 @@ namespace Yi.Framework.Model.Models /// 描述 /// [SugarColumn(ColumnName="Remark" )] - public string Remark { get; set; } + public string? Remark { get; set; } /// /// 角色数据范围 /// diff --git a/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/TenantEntity.cs b/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/TenantEntity.cs index 408b15d9..6fe01429 100644 --- a/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/TenantEntity.cs +++ b/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/TenantEntity.cs @@ -22,7 +22,7 @@ namespace Yi.Framework.Model.Models /// /// [SugarColumn(ColumnName="TenantName" )] - public string TenantName { get; set; } + public string? TenantName { get; set; } /// /// 创建者 /// @@ -62,6 +62,6 @@ namespace Yi.Framework.Model.Models /// 描述 /// [SugarColumn(ColumnName="Remark" )] - public string Remark { get; set; } + public string? Remark { get; set; } } } diff --git a/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/UserEntity.cs b/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/UserEntity.cs index 70d7731f..ba887c24 100644 --- a/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/UserEntity.cs +++ b/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/UserEntity.cs @@ -22,7 +22,7 @@ namespace Yi.Framework.Model.Models /// /// [SugarColumn(ColumnName="Name" )] - public string Name { get; set; } + public string? Name { get; set; } /// /// /// @@ -72,42 +72,42 @@ namespace Yi.Framework.Model.Models /// /// [SugarColumn(ColumnName="Salt" )] - public string Salt { get; set; } + public string? Salt { get; set; } /// /// /// [SugarColumn(ColumnName="Icon" )] - public string Icon { get; set; } + public string? Icon { get; set; } /// /// /// [SugarColumn(ColumnName="Nick" )] - public string Nick { get; set; } + public string? Nick { get; set; } /// /// /// [SugarColumn(ColumnName="Email" )] - public string Email { get; set; } + public string? Email { get; set; } /// /// /// [SugarColumn(ColumnName="Ip" )] - public string Ip { get; set; } + public string? Ip { get; set; } /// /// /// [SugarColumn(ColumnName="Address" )] - public string Address { get; set; } + public string? Address { get; set; } /// /// /// [SugarColumn(ColumnName="Phone" )] - public string Phone { get; set; } + public string? Phone { get; set; } /// /// /// [SugarColumn(ColumnName="Introduction" )] - public string Introduction { get; set; } + public string? Introduction { get; set; } /// /// 排序字段 /// @@ -117,7 +117,7 @@ namespace Yi.Framework.Model.Models /// 描述 /// [SugarColumn(ColumnName="Remark" )] - public string Remark { get; set; } + public string? Remark { get; set; } /// /// 部门id /// diff --git a/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/UserPostEntity.cs b/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/UserPostEntity.cs index ef30ac12..bf737ff6 100644 --- a/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/UserPostEntity.cs +++ b/Yi.Framework.Net6/Yi.Framework.Model/ModelsTemplate/UserPostEntity.cs @@ -67,6 +67,6 @@ namespace Yi.Framework.Model.Models /// 描述 /// [SugarColumn(ColumnName="Remark" )] - public string Remark { get; set; } + public string? Remark { get; set; } } } diff --git a/Yi.Framework.Net6/Yi.Framework.Model/Yi.Framework.Model.csproj b/Yi.Framework.Net6/Yi.Framework.Model/Yi.Framework.Model.csproj index 7bc07bb8..03cc9a11 100644 --- a/Yi.Framework.Net6/Yi.Framework.Model/Yi.Framework.Model.csproj +++ b/Yi.Framework.Net6/Yi.Framework.Model/Yi.Framework.Model.csproj @@ -2,6 +2,7 @@ net6.0 + enable diff --git a/Yi.Framework.Net6/Yi.Framework.WebCore/DbExtend/DbSeedExtend.cs b/Yi.Framework.Net6/Yi.Framework.WebCore/DbExtend/DbSeedExtend.cs index b1e23a78..8e93a35c 100644 --- a/Yi.Framework.Net6/Yi.Framework.WebCore/DbExtend/DbSeedExtend.cs +++ b/Yi.Framework.Net6/Yi.Framework.WebCore/DbExtend/DbSeedExtend.cs @@ -13,7 +13,12 @@ namespace Yi.Framework.WebCore.DbExtend { public static class DbSeedExtend { - public static bool Invoer(ISqlSugarClient _Db) + /// + /// 初始化数据 + /// + /// + /// + public static bool DataInvoer(ISqlSugarClient _Db) { bool res = false; var users = SeedFactory.GetUserSeed(); @@ -87,14 +92,40 @@ namespace Yi.Framework.WebCore.DbExtend return res; } + /// + /// codeFirst初始化表 + /// + /// + /// + public static void TableInvoer(ISqlSugarClient _Db) + { + //创建数据库 + _Db.DbMaintenance.CreateDatabase(); + var typeList = Common.Helper.AssemblyHelper.GetClass("Yi.Framework.Model"); + foreach (var t in typeList) + { + //扫描如果存在SugarTable特性,直接codefirst + if (t.GetCustomAttributes(false).Any(a => a.GetType().Equals(typeof(SugarTable)))) + { + _Db.CodeFirst.SetStringDefaultLength(200).InitTables(t);//这样一个表就能成功创建了 + } + } + + } + public static void UseDbSeedInitService(this IApplicationBuilder app) { + if (Appsettings.appBool("DbCodeFirst_Enabled")) + { + var _Db = app.ApplicationServices.GetRequiredService(); + TableInvoer(_Db); + } if (Appsettings.appBool("DbSeed_Enabled")) { var _Db = app.ApplicationServices.GetRequiredService(); - Invoer(_Db); + DataInvoer(_Db); } } diff --git a/Yi.Framework.Net6/Yi.Framework.WebCore/MiddlewareExtend/SqlsugarExtension.cs b/Yi.Framework.Net6/Yi.Framework.WebCore/MiddlewareExtend/SqlsugarExtension.cs index b3dd8d1e..42a88bd3 100644 --- a/Yi.Framework.Net6/Yi.Framework.WebCore/MiddlewareExtend/SqlsugarExtension.cs +++ b/Yi.Framework.Net6/Yi.Framework.WebCore/MiddlewareExtend/SqlsugarExtension.cs @@ -4,6 +4,7 @@ using SqlSugar; using System; using System.Collections.Generic; using System.Linq; +using System.Reflection; using System.Text; using System.Threading.Tasks; using Yi.Framework.Common.Models; @@ -50,9 +51,16 @@ namespace Yi.Framework.WebCore.MiddlewareExtend { EntityService = (c, p) => { - // int? decimal?这种 isnullable=true - if (c.PropertyType.IsGenericType && - c.PropertyType.GetGenericTypeDefinition() == typeof(Nullable<>)) + //// int? decimal?这种 isnullable=true + //if (c.PropertyType.IsGenericType && + //c.PropertyType.GetGenericTypeDefinition() == typeof(Nullable<>)) + //{ + // p.IsNullable = true; + //} + + //高版C#写法 支持string?和string + if (new NullabilityInfoContext() + .Create(c).WriteState is NullabilityState.Nullable) { p.IsNullable = true; }