diff --git a/CHANGELOG.md b/CHANGELOG.md index fa718297e21..9058f619007 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,18 +7,14 @@ > - 如果涉及到代码重构,则当天发版,次版本号 `加 1`,修订版本号 `清 0`。 > - 如果 `.NET SDK` 主版本号升级,则当天发版,主版本号 `加 1`。 -## v2.19(未发布版本) +## v2.19(当前版本) - **新特性** - [新增] 定时任务监听器 `ISpareTimeListener` [#I468Q1](https://gitee.com/dotnetchina/Furion/issues/I468Q1) - [新增] 执行 `Sql` 支持 `JsonElement` 参数 [61985d6](https://gitee.com/dotnetchina/Furion/commit/61985d6a300485d553cbe8461b01f01bcd0936ef) - [新增] `Swagger` 配置枚举及标签排序过滤器 [#I46LON](https://gitee.com/dotnetchina/Furion/issues/I46LON) [!404](https://gitee.com/dotnetchina/Furion/pulls/404) - - [新增] 远程请求 `application/octet-stream` 类型默认支持[d9bad03](https://gitee.com/dotnetchina/Furion/commit/d9bad0320cc4a204e24bc3a070517ebce4cdc5d7) - -- **突破性变化** - - - [重构] 事件总线所有代码 [#I46X02](https://gitee.com/dotnetchina/Furion/issues/I46X02) + - [新增] 远程请求 `application/octet-stream` 类型默认支持 [d9bad03](https://gitee.com/dotnetchina/Furion/commit/d9bad0320cc4a204e24bc3a070517ebce4cdc5d7) - **问题修复** @@ -31,12 +27,14 @@ - [修复] 管道 `Channel` 读取器无法释放 `Handler` 对象问题 [10f4a90](https://gitee.com/dotnetchina/Furion/commit/10f4a900ee558a29f40ae21366a0eba83eceb3eb) - [修复] `Worker Services` 下日志不输出问题 [c482548](https://gitee.com/dotnetchina/Furion/commit/c48254822c09092906ef77f04d54497e27665a92) - [修复] 远程请求 `multipart/form-data` 类型对接微信小程序上传文件 问题 [d9bad03](https://gitee.com/dotnetchina/Furion/commit/d9bad0320cc4a204e24bc3a070517ebce4cdc5d7) + - [修复] 工作单元上下文在某些情况下共享事务失效问题 [006d439](https://gitee.com/dotnetchina/Furion/commit/006d439de3357d4d58ea6d7d3f9d51771a7b604e) + - [修复] `Swagger` 枚举值在 `GET` 请求中 `Schema` 显示不正确问题 [fb72fd7](https://gitee.com/dotnetchina/Furion/commit/fb72fd7c98de5bf2246dd1bf08200152bd7ab7a0) - **文档** --- -## v2.18(当前版本) +## v2.18(已发布) - **新特性** diff --git a/framework/Furion.Extras.Authentication.JwtBearer/Furion.Extras.Authentication.JwtBearer.csproj b/framework/Furion.Extras.Authentication.JwtBearer/Furion.Extras.Authentication.JwtBearer.csproj index 8399a68b9c2..84924953668 100644 --- a/framework/Furion.Extras.Authentication.JwtBearer/Furion.Extras.Authentication.JwtBearer.csproj +++ b/framework/Furion.Extras.Authentication.JwtBearer/Furion.Extras.Authentication.JwtBearer.csproj @@ -2,12 +2,12 @@ net5.0 - 2.18.7 + 2.19.0 Furion Jwt 授权验证拓展插件。 - + diff --git a/framework/Furion.Extras.DatabaseAccessor.Dapper/Furion.Extras.DatabaseAccessor.Dapper.csproj b/framework/Furion.Extras.DatabaseAccessor.Dapper/Furion.Extras.DatabaseAccessor.Dapper.csproj index 29ff9fc34b9..ebaa156a22d 100644 --- a/framework/Furion.Extras.DatabaseAccessor.Dapper/Furion.Extras.DatabaseAccessor.Dapper.csproj +++ b/framework/Furion.Extras.DatabaseAccessor.Dapper/Furion.Extras.DatabaseAccessor.Dapper.csproj @@ -2,7 +2,7 @@ net5.0 - 2.18.7 + 2.19.0 Furion 数据库访问器 Dapper 插件。 diff --git a/framework/Furion.Extras.DatabaseAccessor.MongoDB/Furion.Extras.DatabaseAccessor.MongoDB.csproj b/framework/Furion.Extras.DatabaseAccessor.MongoDB/Furion.Extras.DatabaseAccessor.MongoDB.csproj index 37f6f14970b..f99c8351d39 100644 --- a/framework/Furion.Extras.DatabaseAccessor.MongoDB/Furion.Extras.DatabaseAccessor.MongoDB.csproj +++ b/framework/Furion.Extras.DatabaseAccessor.MongoDB/Furion.Extras.DatabaseAccessor.MongoDB.csproj @@ -2,7 +2,7 @@ net5.0 - 2.18.7 + 2.19.0 Furion 数据库访问器 MongoDB 插件。 diff --git a/framework/Furion.Extras.DatabaseAccessor.SqlSugar/Furion.Extras.DatabaseAccessor.SqlSugar.csproj b/framework/Furion.Extras.DatabaseAccessor.SqlSugar/Furion.Extras.DatabaseAccessor.SqlSugar.csproj index 57363e32d2a..78bbab506f1 100644 --- a/framework/Furion.Extras.DatabaseAccessor.SqlSugar/Furion.Extras.DatabaseAccessor.SqlSugar.csproj +++ b/framework/Furion.Extras.DatabaseAccessor.SqlSugar/Furion.Extras.DatabaseAccessor.SqlSugar.csproj @@ -2,7 +2,7 @@ net5.0 - 2.18.7 + 2.19.0 Furion 数据库访问器 SqlSugar 插件。 @@ -11,7 +11,7 @@ - + diff --git a/framework/Furion.Extras.DependencyModel.CodeAnalysis/Furion.Extras.DependencyModel.CodeAnalysis.csproj b/framework/Furion.Extras.DependencyModel.CodeAnalysis/Furion.Extras.DependencyModel.CodeAnalysis.csproj index ddaca7297ad..1b115898189 100644 --- a/framework/Furion.Extras.DependencyModel.CodeAnalysis/Furion.Extras.DependencyModel.CodeAnalysis.csproj +++ b/framework/Furion.Extras.DependencyModel.CodeAnalysis/Furion.Extras.DependencyModel.CodeAnalysis.csproj @@ -2,17 +2,17 @@ net5.0 - 2.18.7 + 2.19.0 Furion 程序集扫描和代码分析拓展插件。 - + - + - + diff --git a/framework/Furion.Extras.Logging.Serilog/Furion.Extras.Logging.Serilog.csproj b/framework/Furion.Extras.Logging.Serilog/Furion.Extras.Logging.Serilog.csproj index 6cd979b5ca9..058fff0abb8 100644 --- a/framework/Furion.Extras.Logging.Serilog/Furion.Extras.Logging.Serilog.csproj +++ b/framework/Furion.Extras.Logging.Serilog/Furion.Extras.Logging.Serilog.csproj @@ -2,7 +2,7 @@ net5.0 - 2.18.7 + 2.19.0 Furion 日志记录 Serilog 插件。 diff --git a/framework/Furion.Extras.ObjectMapper.Mapster/Furion.Extras.ObjectMapper.Mapster.csproj b/framework/Furion.Extras.ObjectMapper.Mapster/Furion.Extras.ObjectMapper.Mapster.csproj index 632273ee69f..2b990d26f34 100644 --- a/framework/Furion.Extras.ObjectMapper.Mapster/Furion.Extras.ObjectMapper.Mapster.csproj +++ b/framework/Furion.Extras.ObjectMapper.Mapster/Furion.Extras.ObjectMapper.Mapster.csproj @@ -2,7 +2,7 @@ net5.0 - 2.18.7 + 2.19.0 Furion 对象映射 Mapster 插件。 diff --git a/framework/Furion.Pure.Extras.DependencyModel.CodeAnalysis/Furion.Pure.Extras.DependencyModel.CodeAnalysis.csproj b/framework/Furion.Pure.Extras.DependencyModel.CodeAnalysis/Furion.Pure.Extras.DependencyModel.CodeAnalysis.csproj index 418c127cbb4..9c79b712303 100644 --- a/framework/Furion.Pure.Extras.DependencyModel.CodeAnalysis/Furion.Pure.Extras.DependencyModel.CodeAnalysis.csproj +++ b/framework/Furion.Pure.Extras.DependencyModel.CodeAnalysis/Furion.Pure.Extras.DependencyModel.CodeAnalysis.csproj @@ -2,16 +2,16 @@ net5.0 - 2.18.7 + 2.19.0 Furion 程序集扫描和代码分析拓展插件。 - + - + diff --git a/framework/Furion.Pure/App/App.cs b/framework/Furion.Pure/App/App.cs index fb505b2ea89..9939528b86f 100644 --- a/framework/Furion.Pure/App/App.cs +++ b/framework/Furion.Pure/App/App.cs @@ -4,7 +4,7 @@ // You may obtain a copy of Mulan PSL v2 at: // https://gitee.com/dotnetchina/Furion/blob/master/LICENSE // THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. -// See the Mulan PSL v2 for more details. +// See the Mulan PSL v2 for more details. using Furion.ConfigurableOptions; using Furion.DependencyInjection; @@ -337,8 +337,7 @@ private static (IEnumerable Assemblies, IEnumerable External internal static bool CanBeMiniProfiler() { // 减少不必要的监听 - if (Settings.InjectMiniProfiler != true - || HttpContext == null + if (Settings.InjectMiniProfiler != true || HttpContext == null || !(HttpContext.Request.Headers.TryGetValue("request-from", out var value) && value == "swagger")) return false; return true; diff --git a/framework/Furion.Pure/Furion.Pure.csproj b/framework/Furion.Pure/Furion.Pure.csproj index 99782c5b7ca..9d8a411590d 100644 --- a/framework/Furion.Pure/Furion.Pure.csproj +++ b/framework/Furion.Pure/Furion.Pure.csproj @@ -2,7 +2,7 @@ net5.0 - 2.18.7 + 2.19.0 让 .NET 开发更简单,更通用,更流行。 true @@ -22,9 +22,9 @@ - + - + diff --git a/framework/Furion/Furion.csproj b/framework/Furion/Furion.csproj index b285aaaf41d..cd867f691f7 100644 --- a/framework/Furion/Furion.csproj +++ b/framework/Furion/Furion.csproj @@ -2,7 +2,7 @@ net5.0 - 2.18.7 + 2.19.0 让 .NET 开发更简单,更通用,更流行。 true @@ -28,9 +28,9 @@ - + - + diff --git a/handbook/build/404.html b/handbook/build/404.html index 117b3b7443f..f1cab03178d 100644 --- a/handbook/build/404.html +++ b/handbook/build/404.html @@ -3,17 +3,17 @@ - + -Page Not Found | Furion - - +Page Not Found | Furion + +
-
Skip to main content

Page Not Found

We could not find what you were looking for.

Please contact the owner of the site that linked you to the original URL and let them know their link is broken.

- - +
Skip to main content

Page Not Found

We could not find what you were looking for.

Please contact the owner of the site that linked you to the original URL and let them know their link is broken.

+ + \ No newline at end of file diff --git a/handbook/build/assets/css/styles.5b8b908b.css b/handbook/build/assets/css/styles.5b8b908b.css new file mode 100644 index 00000000000..f52ed0d6ac9 --- /dev/null +++ b/handbook/build/assets/css/styles.5b8b908b.css @@ -0,0 +1 @@ +.container,.row .col{padding:0 var(--ifm-spacing-horizontal);width:100%}.row .col,img{max-width:100%}.markdown li,body{word-wrap:break-word}body,ol ol,ol ul,ul ol,ul ul{margin:0}pre,table{overflow:auto}blockquote,pre{margin:0 0 var(--ifm-spacing-vertical)}.breadcrumbs__link,.button{transition-timing-function:var(--ifm-transition-timing-default)}.button,code{vertical-align:middle}.button--outline.button--active,.button--outline:active,.button--outline:hover,:root{--ifm-button-color:var(--ifm-font-color-base-inverse)}.avatar__photo,.card,.text--truncate{overflow:hidden}.navbar--dark,:root{--ifm-navbar-link-hover-color:var(--ifm-color-primary)}:root,html[data-theme=dark]{--ifm-color-emphasis-500:var(--ifm-color-gray-500)}.admonition-icon svg,.alert__icon svg{fill:var(--ifm-alert-foreground-color)}.react-toggle,html{-webkit-tap-highlight-color:transparent}.DocSearch-Hit-content-wrapper,.navbar__title,.text--truncate{text-overflow:ellipsis;white-space:nowrap}.button,.dropdown__link,.navbar__title,.text--truncate{white-space:nowrap}*,.DocSearch-Container,.DocSearch-Container *,.furion-log-item,.furion-who-custom,.furion-who-des{box-sizing:border-box}:root{--ifm-color-scheme:light;--ifm-dark-value:10%;--ifm-darker-value:15%;--ifm-darkest-value:30%;--ifm-light-value:15%;--ifm-lighter-value:30%;--ifm-lightest-value:50%;--ifm-contrast-background-value:90%;--ifm-contrast-foreground-value:70%;--ifm-contrast-background-dark-value:70%;--ifm-contrast-foreground-dark-value:90%;--ifm-color-primary:#3578e5;--ifm-color-secondary:#ebedf0;--ifm-color-success:#00a400;--ifm-color-info:#54c7ec;--ifm-color-warning:#ffba00;--ifm-color-danger:#fa383e;--ifm-color-primary-dark:#306cce;--ifm-color-primary-darker:#2d66c3;--ifm-color-primary-darkest:#2554a0;--ifm-color-primary-light:#538ce9;--ifm-color-primary-lighter:#72a1ed;--ifm-color-primary-lightest:#9abcf2;--ifm-color-primary-contrast-background:#ebf2fc;--ifm-color-primary-contrast-foreground:#102445;--ifm-color-secondary-dark:#d4d5d8;--ifm-color-secondary-darker:#c8c9cc;--ifm-color-secondary-darkest:#a4a6a8;--ifm-color-secondary-light:#eef0f2;--ifm-color-secondary-lighter:#f1f2f5;--ifm-color-secondary-lightest:#f5f6f8;--ifm-color-secondary-contrast-background:#fdfdfe;--ifm-color-secondary-contrast-foreground:#474748;--ifm-color-success-dark:#009400;--ifm-color-success-darker:#008b00;--ifm-color-success-darkest:#007300;--ifm-color-success-light:#26b226;--ifm-color-success-lighter:#4dbf4d;--ifm-color-success-lightest:#80d280;--ifm-color-success-contrast-background:#e6f6e6;--ifm-color-success-contrast-foreground:#003100;--ifm-color-info-dark:#4cb3d4;--ifm-color-info-darker:#47a9c9;--ifm-color-info-darkest:#3b8ba5;--ifm-color-info-light:#6ecfef;--ifm-color-info-lighter:#87d8f2;--ifm-color-info-lightest:#aae3f6;--ifm-color-info-contrast-background:#eef9fd;--ifm-color-info-contrast-foreground:#193c47;--ifm-color-warning-dark:#e6a700;--ifm-color-warning-darker:#d99e00;--ifm-color-warning-darkest:#b38200;--ifm-color-warning-light:#ffc426;--ifm-color-warning-lighter:#ffcf4d;--ifm-color-warning-lightest:#ffdd80;--ifm-color-warning-contrast-background:#fff8e6;--ifm-color-warning-contrast-foreground:#4d3800;--ifm-color-danger-dark:#e13238;--ifm-color-danger-darker:#d53035;--ifm-color-danger-darkest:#af272b;--ifm-color-danger-light:#fb565b;--ifm-color-danger-lighter:#fb7478;--ifm-color-danger-lightest:#fd9c9f;--ifm-color-danger-contrast-background:#ffebec;--ifm-color-danger-contrast-foreground:#4b1113;--ifm-color-white:#fff;--ifm-color-black:#000;--ifm-color-gray-0:var(--ifm-color-white);--ifm-color-gray-100:#f5f6f7;--ifm-color-gray-200:#ebedf0;--ifm-color-gray-300:#dadde1;--ifm-color-gray-400:#ccd0d5;--ifm-color-gray-500:#bec3c9;--ifm-color-gray-600:#8d949e;--ifm-color-gray-700:#606770;--ifm-color-gray-800:#444950;--ifm-color-gray-900:#1c1e21;--ifm-color-gray-1000:var(--ifm-color-black);--ifm-color-emphasis-0:var(--ifm-color-gray-0);--ifm-color-emphasis-100:var(--ifm-color-gray-100);--ifm-color-emphasis-200:var(--ifm-color-gray-200);--ifm-color-emphasis-300:var(--ifm-color-gray-300);--ifm-color-emphasis-400:var(--ifm-color-gray-400);--ifm-color-emphasis-600:var(--ifm-color-gray-600);--ifm-color-emphasis-700:var(--ifm-color-gray-700);--ifm-color-emphasis-800:var(--ifm-color-gray-800);--ifm-color-emphasis-900:var(--ifm-color-gray-900);--ifm-color-emphasis-1000:var(--ifm-color-gray-1000);--ifm-color-content:var(--ifm-color-emphasis-900);--ifm-color-content-inverse:var(--ifm-color-emphasis-0);--ifm-color-content-secondary:#525860;--ifm-background-color:transparent;--ifm-background-surface-color:var(--ifm-color-content-inverse);--ifm-global-border-width:1px;--ifm-global-radius:0.4rem;--ifm-hover-overlay:rgba(0,0,0,0.05);--ifm-font-color-base:var(--ifm-color-content);--ifm-font-color-base-inverse:var(--ifm-color-content-inverse);--ifm-font-color-secondary:var(--ifm-color-content-secondary);--ifm-font-family-base:system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--ifm-font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--ifm-font-size-base:100%;--ifm-font-weight-light:300;--ifm-font-weight-normal:400;--ifm-font-weight-semibold:500;--ifm-font-weight-bold:700;--ifm-font-weight-base:var(--ifm-font-weight-normal);--ifm-line-height-base:1.65;--ifm-global-spacing:1rem;--ifm-spacing-vertical:var(--ifm-global-spacing);--ifm-spacing-horizontal:var(--ifm-global-spacing);--ifm-transition-fast:200ms;--ifm-transition-slow:400ms;--ifm-transition-timing-default:cubic-bezier(0.08,0.52,0.52,1);--ifm-global-shadow-lw:0 1px 2px 0 rgba(0,0,0,0.1);--ifm-global-shadow-md:0 5px 40px rgba(0,0,0,0.2);--ifm-global-shadow-tl:0 12px 28px 0 rgba(0,0,0,0.2),0 2px 4px 0 rgba(0,0,0,0.1);--ifm-z-index-dropdown:4;--ifm-z-index-fixed:5;--ifm-z-index-overlay:7;--ifm-container-width:1140px;--ifm-container-width-xl:1320px;--ifm-code-background:#f6f7f8;--ifm-code-border-radius:var(--ifm-global-radius);--ifm-code-font-size:90%;--ifm-code-padding-horizontal:0.1rem;--ifm-code-padding-vertical:0.1rem;--ifm-pre-background:var(--ifm-color-emphasis-100);--ifm-pre-border-radius:var(--ifm-code-border-radius);--ifm-pre-color:inherit;--ifm-pre-line-height:1.45;--ifm-pre-padding:1rem;--ifm-heading-color:inherit;--ifm-heading-margin-top:0;--ifm-heading-margin-bottom:var(--ifm-spacing-vertical);--ifm-heading-font-family:var(--ifm-font-family-base);--ifm-heading-font-weight:var(--ifm-font-weight-bold);--ifm-heading-line-height:1.25;--ifm-h1-font-size:2rem;--ifm-h2-font-size:1.5rem;--ifm-h3-font-size:1.25rem;--ifm-h4-font-size:1rem;--ifm-h5-font-size:0.875rem;--ifm-h6-font-size:0.85rem;--ifm-image-alignment-padding:1.25rem;--ifm-leading-desktop:1.25;--ifm-leading:calc(var(--ifm-leading-desktop)*1rem);--ifm-list-left-padding:2rem;--ifm-list-margin:1rem;--ifm-list-item-margin:0.25rem;--ifm-list-paragraph-margin:1rem;--ifm-table-cell-padding:0.75rem;--ifm-table-background:transparent;--ifm-table-stripe-background:var(--ifm-color-emphasis-100);--ifm-table-border-width:1px;--ifm-table-border-color:var(--ifm-color-emphasis-300);--ifm-table-head-background:inherit;--ifm-table-head-color:inherit;--ifm-table-head-font-weight:var(--ifm-font-weight-bold);--ifm-table-cell-color:inherit;--ifm-link-color:var(--ifm-color-primary);--ifm-link-decoration:none;--ifm-link-hover-color:var(--ifm-link-color);--ifm-link-hover-decoration:underline;--ifm-paragraph-margin-bottom:var(--ifm-leading);--ifm-blockquote-font-size:var(--ifm-font-size-base);--ifm-blockquote-border-left-width:2px;--ifm-blockquote-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-blockquote-padding-vertical:0;--ifm-blockquote-shadow:none;--ifm-blockquote-color:var(--ifm-color-emphasis-800);--ifm-blockquote-border-color:var(--ifm-color-emphasis-300);--ifm-hr-border-color:var(--ifm-color-emphasis-500);--ifm-hr-border-width:1px;--ifm-hr-margin-vertical:1.5rem;--ifm-scrollbar-size:7px;--ifm-scrollbar-track-background-color:#f1f1f1;--ifm-scrollbar-thumb-background-color:silver;--ifm-scrollbar-thumb-hover-background-color:#a7a7a7;--ifm-alert-background-color:inherit;--ifm-alert-border-color:inherit;--ifm-alert-border-radius:var(--ifm-global-radius);--ifm-alert-border-width:0px;--ifm-alert-border-left-width:5px;--ifm-alert-color:var(--ifm-font-color-base);--ifm-alert-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-alert-padding-vertical:var(--ifm-spacing-vertical);--ifm-alert-shadow:var(--ifm-global-shadow-lw);--ifm-avatar-intro-margin:1rem;--ifm-avatar-intro-alignment:inherit;--ifm-avatar-photo-size-sm:2rem;--ifm-avatar-photo-size-md:3rem;--ifm-avatar-photo-size-lg:4rem;--ifm-avatar-photo-size-xl:6rem;--ifm-badge-background-color:inherit;--ifm-badge-border-color:inherit;--ifm-badge-border-radius:var(--ifm-global-radius);--ifm-badge-border-width:var(--ifm-global-border-width);--ifm-badge-color:var(--ifm-color-white);--ifm-badge-padding-horizontal:calc(var(--ifm-spacing-horizontal)*0.5);--ifm-badge-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-breadcrumb-border-radius:1.5rem;--ifm-breadcrumb-spacing:0.0625rem;--ifm-breadcrumb-color-active:var(--ifm-color-primary);--ifm-breadcrumb-item-background-active:var(--ifm-hover-overlay);--ifm-breadcrumb-padding-horizontal:1rem;--ifm-breadcrumb-padding-vertical:0.5rem;--ifm-breadcrumb-size-multiplier:1;--ifm-breadcrumb-separator:url('data:image/svg+xml;utf8,');--ifm-breadcrumb-separator-filter:none;--ifm-breadcrumb-separator-size:0.5rem;--ifm-breadcrumb-separator-size-multiplier:1.25;--ifm-button-background-color:inherit;--ifm-button-border-color:var(--ifm-button-background-color);--ifm-button-border-width:var(--ifm-global-border-width);--ifm-button-font-weight:var(--ifm-font-weight-bold);--ifm-button-padding-horizontal:1.5rem;--ifm-button-padding-vertical:0.375rem;--ifm-button-size-multiplier:1;--ifm-button-transition-duration:var(--ifm-transition-fast);--ifm-button-border-radius:calc(var(--ifm-global-radius)*var(--ifm-button-size-multiplier));--ifm-button-group-margin:2px;--ifm-card-background-color:var(--ifm-background-surface-color);--ifm-card-border-radius:calc(var(--ifm-global-radius)*2);--ifm-card-horizontal-spacing:var(--ifm-global-spacing);--ifm-card-vertical-spacing:var(--ifm-global-spacing);--ifm-toc-border-color:var(--ifm-color-emphasis-300);--ifm-toc-link-color:var(--ifm-color-content-secondary);--ifm-toc-padding-vertical:0.5rem;--ifm-toc-padding-horizontal:0.5rem;--ifm-dropdown-background-color:var(--ifm-background-surface-color);--ifm-dropdown-font-weight:var(--ifm-font-weight-semibold);--ifm-dropdown-link-color:var(--ifm-font-color-base);--ifm-dropdown-hover-background-color:var(--ifm-hover-overlay);--ifm-footer-background-color:var(--ifm-color-emphasis-100);--ifm-footer-color:inherit;--ifm-footer-link-color:var(--ifm-color-emphasis-700);--ifm-footer-link-hover-color:var(--ifm-color-primary);--ifm-footer-link-horizontal-spacing:0.5rem;--ifm-footer-padding-horizontal:calc(var(--ifm-spacing-horizontal)*2);--ifm-footer-padding-vertical:calc(var(--ifm-spacing-vertical)*2);--ifm-footer-title-color:inherit;--ifm-hero-background-color:var(--ifm-background-surface-color);--ifm-hero-text-color:var(--ifm-color-emphasis-800);--ifm-menu-color:var(--ifm-color-emphasis-700);--ifm-menu-color-active:var(--ifm-color-primary);--ifm-menu-color-background-active:var(--ifm-hover-overlay);--ifm-menu-color-background-hover:var(--ifm-hover-overlay);--ifm-menu-link-padding-horizontal:1rem;--ifm-menu-link-padding-vertical:0.375rem;--ifm-menu-link-sublist-icon:url('data:image/svg+xml;utf8,');--ifm-menu-link-sublist-icon-filter:none;--ifm-navbar-background-color:var(--ifm-background-surface-color);--ifm-navbar-height:3.75rem;--ifm-navbar-item-padding-horizontal:0.75rem;--ifm-navbar-item-padding-vertical:0.25rem;--ifm-navbar-link-color:var(--ifm-font-color-base);--ifm-navbar-link-active-color:var(--ifm-link-color);--ifm-navbar-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-navbar-padding-vertical:calc(var(--ifm-spacing-vertical)*0.5);--ifm-navbar-shadow:var(--ifm-global-shadow-lw);--ifm-navbar-search-input-background-color:var(--ifm-color-emphasis-200);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-800);--ifm-navbar-search-input-placeholder-color:var(--ifm-color-emphasis-500);--ifm-navbar-search-input-icon:url('data:image/svg+xml;utf8,');--ifm-navbar-sidebar-width:83vw;--ifm-pagination-border-radius:calc(var(--ifm-global-radius)*var(--ifm-pagination-size-multiplier));--ifm-pagination-color-active:var(--ifm-color-primary);--ifm-pagination-font-size:1rem;--ifm-pagination-item-active-background:var(--ifm-hover-overlay);--ifm-pagination-page-spacing:0.0625rem;--ifm-pagination-padding-horizontal:calc(var(--ifm-spacing-horizontal)*1);--ifm-pagination-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-pagination-size-multiplier:1;--ifm-pagination-nav-border-radius:var(--ifm-global-radius);--ifm-pagination-nav-color-hover:var(--ifm-color-primary);--ifm-pills-color-active:var(--ifm-color-primary);--ifm-pills-color-background-active:var(--ifm-hover-overlay);--ifm-pills-spacing:0.0625rem;--ifm-tabs-color:var(--ifm-font-color-secondary);--ifm-tabs-color-active:var(--ifm-color-primary);--ifm-tabs-color-active-border:var(--ifm-tabs-color-active);--ifm-tabs-padding-horizontal:1rem;--ifm-tabs-padding-vertical:1rem;--ifm-tabs-spacing:0.0625rem;--ifm-color-primary:#25c2a0;--ifm-color-primary-dark:#21af90;--ifm-color-primary-darker:#1fa588;--ifm-color-primary-darkest:#1a8870;--ifm-color-primary-light:#46cbae;--ifm-color-primary-lighter:#66d4bd;--ifm-color-primary-lightest:#92e0d0;--ifm-code-font-size:95%;--docusaurus-announcement-bar-height:auto;--collapse-button-bg-color-dark:#2e333a;--docsearch-primary-color:#5468ff;--docsearch-text-color:#1c1e21;--docsearch-spacing:12px;--docsearch-icon-stroke-width:1.4;--docsearch-highlight-color:var(--docsearch-primary-color);--docsearch-muted-color:#969faf;--docsearch-container-background:rgba(101,108,133,0.8);--docsearch-logo-color:#5468ff;--docsearch-modal-width:560px;--docsearch-modal-height:600px;--docsearch-modal-background:#f5f6f7;--docsearch-modal-shadow:inset 1px 1px 0 0 hsla(0,0%,100%,0.5),0 3px 8px 0 #555a64;--docsearch-searchbox-height:56px;--docsearch-searchbox-background:#ebedf0;--docsearch-searchbox-focus-background:#fff;--docsearch-searchbox-shadow:inset 0 0 0 2px var(--docsearch-primary-color);--docsearch-hit-height:56px;--docsearch-hit-color:#444950;--docsearch-hit-active-color:#fff;--docsearch-hit-background:#fff;--docsearch-hit-shadow:0 1px 3px 0 #d4d9e1;--docsearch-key-gradient:linear-gradient(-225deg,#d5dbe4,#f8f8f8);--docsearch-key-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 2px 1px rgba(30,35,90,0.4);--docsearch-footer-height:44px;--docsearch-footer-background:#fff;--docsearch-footer-shadow:0 -1px 0 0 #e0e3e8,0 -3px 6px 0 rgba(69,98,155,0.12);--docsearch-primary-color:var(--ifm-color-primary);--docsearch-text-color:var(--ifm-font-color-base);--docusaurus-tag-list-border:var(--ifm-color-emphasis-300);--docusaurus-btt-background:var(--ifm-color-primary);--docusaurus-btt-color:#fff;--doc-sidebar-width:300px;--doc-sidebar-hidden-width:30px}.badge--danger,.badge--info,.badge--primary,.badge--secondary,.badge--success,.badge--warning{--ifm-badge-border-color:var(--ifm-badge-background-color)}.button--link,.button--outline{--ifm-button-background-color:transparent}.navbar--dark,.navbar--primary{--ifm-navbar-search-input-background-color:hsla(0,0%,100%,0.1);--ifm-navbar-search-input-placeholder-color:hsla(0,0%,100%,0.5)}html{-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;-webkit-text-size-adjust:100%;text-size-adjust:100%;background-color:var(--ifm-background-color);color:var(--ifm-font-color-base);color-scheme:var(--ifm-color-scheme);font:var(--ifm-font-size-base)/var(--ifm-line-height-base) var(--ifm-font-family-base)}iframe{border:0;color-scheme:auto}.container{margin:0 auto;max-width:var(--ifm-container-width)}.padding-bottom--none,.padding-vert--none{padding-bottom:0!important}.padding-top--none,.padding-vert--none{padding-top:0!important}.padding-horiz--none,.padding-left--none{padding-left:0!important}.padding-horiz--none,.padding-right--none{padding-right:0!important}.container--fluid{max-width:inherit}.row{display:flex;flex-direction:row;flex-wrap:wrap;margin:0 calc(var(--ifm-spacing-horizontal)*-1)}.margin-bottom--none,.margin-vert--none,.markdown>:last-child,.system-window pre{margin-bottom:0!important}.margin-top--none,.margin-vert--none,.tabItem_1uMI{margin-top:0!important}.row .col{--ifm-col-width:100%;flex:1 0;margin-left:0}.row .col[class*=col--]{flex:0 0 var(--ifm-col-width);max-width:var(--ifm-col-width)}.row .col.col--1{--ifm-col-width:8.33333%}.row .col.col--offset-1{margin-left:8.33333%}.row .col.col--2{--ifm-col-width:16.66667%}.row .col.col--offset-2{margin-left:16.66667%}.row .col.col--3{--ifm-col-width:25%}.row .col.col--offset-3{margin-left:25%}.row .col.col--4{--ifm-col-width:33.33333%}.row .col.col--offset-4{margin-left:33.33333%}.row .col.col--5{--ifm-col-width:41.66667%}.row .col.col--offset-5{margin-left:41.66667%}.row .col.col--6{--ifm-col-width:50%}.row .col.col--offset-6{margin-left:50%}.row .col.col--7{--ifm-col-width:58.33333%}.row .col.col--offset-7{margin-left:58.33333%}.row .col.col--8{--ifm-col-width:66.66667%}.row .col.col--offset-8{margin-left:66.66667%}.row .col.col--9{--ifm-col-width:75%}.row .col.col--offset-9{margin-left:75%}.row .col.col--10{--ifm-col-width:83.33333%}.row .col.col--offset-10{margin-left:83.33333%}.row .col.col--11{--ifm-col-width:91.66667%}.row .col.col--offset-11{margin-left:91.66667%}.row .col.col--12{--ifm-col-width:100%}.row .col.col--offset-12{margin-left:100%}.row--no-gutters{margin-left:0;margin-right:0}.margin-horiz--none,.margin-left--none{margin-left:0!important}.margin-horiz--none,.margin-right--none{margin-right:0!important}.row--no-gutters>.col{padding-left:0;padding-right:0}.row--align-top{align-items:flex-start}.row--align-bottom{align-items:flex-end}.row--align-center{align-items:center}.row--align-stretch{align-items:stretch}.row--align-baseline{align-items:baseline}.margin--none{margin:0!important}.markdown>h2,.markdown>h3,.markdown>h4,.markdown>h5,.markdown>h6{margin-bottom:calc(var(--ifm-heading-vertical-rhythm-bottom)*var(--ifm-leading))}.margin-bottom--xs,.margin-vert--xs{margin-bottom:.25rem!important}.margin-top--xs,.margin-vert--xs{margin-top:.25rem!important}.margin-horiz--xs,.margin-left--xs{margin-left:.25rem!important}.margin-horiz--xs,.margin-right--xs{margin-right:.25rem!important}.margin--xs{margin:.25rem!important}.margin-bottom--sm,.margin-vert--sm{margin-bottom:.5rem!important}.margin-top--sm,.margin-vert--sm{margin-top:.5rem!important}.margin-horiz--sm,.margin-left--sm{margin-left:.5rem!important}.margin-horiz--sm,.margin-right--sm{margin-right:.5rem!important}.margin--sm{margin:.5rem!important}.margin-bottom--md,.margin-vert--md{margin-bottom:1rem!important}.margin-top--md,.margin-vert--md{margin-top:1rem!important}.margin-horiz--md,.margin-left--md{margin-left:1rem!important}.margin-horiz--md,.margin-right--md{margin-right:1rem!important}.margin--md{margin:1rem!important}.margin-bottom--lg,.margin-vert--lg{margin-bottom:2rem!important}.margin-top--lg,.margin-vert--lg{margin-top:2rem!important}.margin-horiz--lg,.margin-left--lg{margin-left:2rem!important}.margin-horiz--lg,.margin-right--lg{margin-right:2rem!important}.margin--lg{margin:2rem!important}.margin-bottom--xl,.margin-vert--xl{margin-bottom:5rem!important}.margin-top--xl,.margin-vert--xl{margin-top:5rem!important}.margin-horiz--xl,.margin-left--xl{margin-left:5rem!important}.margin-horiz--xl,.margin-right--xl{margin-right:5rem!important}.margin--xl{margin:5rem!important}.padding--none{padding:0!important}.padding-bottom--xs,.padding-vert--xs{padding-bottom:.25rem!important}.padding-top--xs,.padding-vert--xs{padding-top:.25rem!important}.padding-horiz--xs,.padding-left--xs{padding-left:.25rem!important}.padding-horiz--xs,.padding-right--xs{padding-right:.25rem!important}.padding--xs{padding:.25rem!important}.padding-bottom--sm,.padding-vert--sm{padding-bottom:.5rem!important}.padding-top--sm,.padding-vert--sm{padding-top:.5rem!important}.padding-horiz--sm,.padding-left--sm{padding-left:.5rem!important}.padding-horiz--sm,.padding-right--sm{padding-right:.5rem!important}.padding--sm{padding:.5rem!important}.padding-bottom--md,.padding-vert--md{padding-bottom:1rem!important}.padding-top--md,.padding-vert--md{padding-top:1rem!important}.padding-horiz--md,.padding-left--md{padding-left:1rem!important}.padding-horiz--md,.padding-right--md{padding-right:1rem!important}.padding--md{padding:1rem!important}.padding-bottom--lg,.padding-vert--lg{padding-bottom:2rem!important}.padding-top--lg,.padding-vert--lg{padding-top:2rem!important}.padding-horiz--lg,.padding-left--lg{padding-left:2rem!important}.padding-horiz--lg,.padding-right--lg{padding-right:2rem!important}.padding--lg{padding:2rem!important}.padding-bottom--xl,.padding-vert--xl{padding-bottom:5rem!important}.padding-top--xl,.padding-vert--xl{padding-top:5rem!important}.padding-horiz--xl,.padding-left--xl{padding-left:5rem!important}.padding-horiz--xl,.padding-right--xl{padding-right:5rem!important}.padding--xl{padding:5rem!important}code{background-color:var(--ifm-code-background);border:.1rem solid rgba(0,0,0,.1);border-radius:var(--ifm-code-border-radius);font-family:var(--ifm-font-family-monospace);font-size:var(--ifm-code-font-size);padding:var(--ifm-code-padding-vertical) var(--ifm-code-padding-horizontal)}a code{color:inherit}pre{background-color:var(--ifm-pre-background);border-radius:var(--ifm-pre-border-radius);color:var(--ifm-pre-color);font:var(--ifm-code-font-size)/var(--ifm-pre-line-height) var(--ifm-font-family-monospace);padding:var(--ifm-pre-padding)}pre code{background-color:transparent;border:none;font-size:100%;line-height:inherit;padding:0}kbd{background-color:var(--ifm-color-emphasis-0);border:1px solid var(--ifm-color-emphasis-400);border-radius:.2rem;box-shadow:inset 0 -1px 0 var(--ifm-color-emphasis-400);color:var(--ifm-color-emphasis-800);font:80% var(--ifm-font-family-monospace);padding:.15rem .3rem}h1,h2,h3,h4,h5,h6{color:var(--ifm-heading-color);font-family:var(--ifm-heading-font-family);font-weight:var(--ifm-heading-font-weight);line-height:var(--ifm-heading-line-height);margin:var(--ifm-heading-margin-top) 0 var(--ifm-heading-margin-bottom) 0}h1{font-size:var(--ifm-h1-font-size)}h2{font-size:var(--ifm-h2-font-size)}h3{font-size:var(--ifm-h3-font-size)}h4{font-size:var(--ifm-h4-font-size)}h5{font-size:var(--ifm-h5-font-size)}h6{font-size:var(--ifm-h6-font-size)}img[align=right]{padding-left:var(--image-alignment-padding)}img[align=left]{padding-right:var(--image-alignment-padding)}.markdown{--ifm-h1-vertical-rhythm-top:3;--ifm-h2-vertical-rhythm-top:2;--ifm-h3-vertical-rhythm-top:1.5;--ifm-heading-vertical-rhythm-top:1.25;--ifm-h1-vertical-rhythm-bottom:1.25;--ifm-heading-vertical-rhythm-bottom:1}.markdown:after,.markdown:before{content:"";display:table}.markdown:after{clear:both}.markdown h1:first-child{--ifm-h1-font-size:3rem;margin-bottom:calc(var(--ifm-h1-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown>h2{--ifm-h2-font-size:2rem;margin-top:calc(var(--ifm-h2-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h3{--ifm-h3-font-size:1.5rem;margin-top:calc(var(--ifm-h3-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h4,.markdown>h5,.markdown>h6{margin-top:calc(var(--ifm-heading-vertical-rhythm-top)*var(--ifm-leading))}.markdown>p,.markdown>pre,.markdown>ul{margin-bottom:var(--ifm-leading)}.markdown li>p{margin-top:var(--ifm-list-paragraph-margin)}.markdown li+li{margin-top:var(--ifm-list-item-margin)}ol,ul{margin:0 0 var(--ifm-list-margin);padding-left:var(--ifm-list-left-padding)}ol ol,ul ol{list-style-type:lower-roman}ol ol ol,ol ul ol,ul ol ol,ul ul ol{list-style-type:lower-alpha}table{border-collapse:collapse;display:block;margin-bottom:var(--ifm-spacing-vertical)}table thead tr{border-bottom:2px solid var(--ifm-table-border-color)}table tr{background-color:var(--ifm-table-background);border-top:var(--ifm-table-border-width) solid var(--ifm-table-border-color)}table tr:nth-child(2n){background-color:var(--ifm-table-stripe-background)}table td,table th{border:var(--ifm-table-border-width) solid var(--ifm-table-border-color);padding:var(--ifm-table-cell-padding)}table th{background-color:var(--ifm-table-head-background);color:var(--ifm-table-head-color);font-weight:var(--ifm-table-head-font-weight)}table td{color:var(--ifm-table-cell-color)}strong{font-weight:var(--ifm-font-weight-bold)}a{color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration);transition:color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}a:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.breadcrumbs__link:hover,.button:hover,.text--no-decoration,.text--no-decoration:hover,a:not([href]){text-decoration:none}p{margin:0 0 var(--ifm-paragraph-margin-bottom)}blockquote{border-left-width:0;border:0 solid var(--ifm-blockquote-border-color);border-left:var(--ifm-blockquote-border-left-width) solid var(--ifm-blockquote-border-color);box-shadow:var(--ifm-blockquote-shadow);color:var(--ifm-blockquote-color);font-size:var(--ifm-blockquote-font-size);padding:var(--ifm-blockquote-padding-vertical) var(--ifm-blockquote-padding-horizontal)}blockquote>:first-child{margin-top:0}blockquote>:last-child{margin-bottom:0}hr{border:var(--ifm-hr-border-width) solid var(--ifm-hr-border-color);margin:var(--ifm-hr-margin-vertical) 0}.shadow--lw{box-shadow:var(--ifm-global-shadow-lw)!important}.shadow--md{box-shadow:var(--ifm-global-shadow-md)!important}.shadow--tl{box-shadow:var(--ifm-global-shadow-tl)!important}.sidebarItemLinkActive_12pM,.text--primary{color:var(--ifm-color-primary)}.text--secondary{color:var(--ifm-color-secondary)}.text--success{color:var(--ifm-color-success)}.text--info{color:var(--ifm-color-info)}.text--warning{color:var(--ifm-color-warning)}.text--danger{color:var(--ifm-color-danger)}.text--center{text-align:center}.text--left{text-align:left}.text--justify{text-align:justify}.text--right{text-align:right}.text--capitalize{text-transform:capitalize}.text--lowercase{text-transform:lowercase}.admonition h5,.alert__heading,.text--uppercase{text-transform:uppercase}.text--light{font-weight:var(--ifm-font-weight-light)}.text--normal{font-weight:var(--ifm-font-weight-normal)}.text--semibold{font-weight:var(--ifm-font-weight-semibold)}.text--bold{font-weight:var(--ifm-font-weight-bold)}.text--italic{font-style:italic}.text--break{word-wrap:break-word!important;word-break:break-word!important}.clean-btn{background:none;border:none;color:inherit;cursor:pointer;font-family:inherit;padding:0}.alert,.alert .close{color:var(--ifm-alert-foreground-color)}.alert--primary{--ifm-alert-background-color:var(--ifm-color-primary-contrast-background);--ifm-alert-background-color-highlight:rgba(53,120,229,0.15);--ifm-alert-foreground-color:var(--ifm-color-primary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-primary-dark)}.alert--secondary{--ifm-alert-background-color:var(--ifm-color-secondary-contrast-background);--ifm-alert-background-color-highlight:rgba(235,237,240,0.15);--ifm-alert-foreground-color:var(--ifm-color-secondary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-secondary-dark)}.alert--success{--ifm-alert-background-color:var(--ifm-color-success-contrast-background);--ifm-alert-background-color-highlight:rgba(0,164,0,0.15);--ifm-alert-foreground-color:var(--ifm-color-success-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-success-dark)}.alert--info{--ifm-alert-background-color:var(--ifm-color-info-contrast-background);--ifm-alert-background-color-highlight:rgba(84,199,236,0.15);--ifm-alert-foreground-color:var(--ifm-color-info-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-info-dark)}.alert--warning{--ifm-alert-background-color:var(--ifm-color-warning-contrast-background);--ifm-alert-background-color-highlight:rgba(255,186,0,0.15);--ifm-alert-foreground-color:var(--ifm-color-warning-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-warning-dark)}.alert--danger{--ifm-alert-background-color:var(--ifm-color-danger-contrast-background);--ifm-alert-background-color-highlight:rgba(250,56,62,0.15);--ifm-alert-foreground-color:var(--ifm-color-danger-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-danger-dark)}.alert{--ifm-code-background:var(--ifm-alert-background-color-highlight);--ifm-link-color:var(--ifm-alert-foreground-color);--ifm-link-hover-color:var(--ifm-alert-foreground-color);--ifm-link-decoration:underline;--ifm-tabs-color:var(--ifm-alert-foreground-color);--ifm-tabs-color-active:var(--ifm-alert-foreground-color);--ifm-tabs-color-active-border:var(--ifm-alert-border-color);background-color:var(--ifm-alert-background-color);border-left-width:var(--ifm-alert-border-width);border:var(--ifm-alert-border-width) solid var(--ifm-alert-border-color);border-left:var(--ifm-alert-border-left-width) solid var(--ifm-alert-border-color);border-radius:var(--ifm-alert-border-radius);box-shadow:var(--ifm-alert-shadow);padding:var(--ifm-alert-padding-vertical) var(--ifm-alert-padding-horizontal)}.alert__heading{align-items:center;display:flex;font:700 var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family);margin-bottom:.5rem}.alert__icon{display:inline-flex;margin-right:.4em}.alert__icon svg{stroke:var(--ifm-alert-foreground-color);stroke-width:0}.alert .close{margin:calc(var(--ifm-alert-padding-vertical)*-1) calc(var(--ifm-alert-padding-horizontal)*-1) 0 0;opacity:.75}.alert .close:focus,.alert .close:hover{opacity:1}.alert a{-webkit-text-decoration-color:var(--ifm-alert-border-color);text-decoration-color:var(--ifm-alert-border-color)}.alert a:hover{text-decoration-thickness:2px}.avatar,.navbar,.navbar>.container,.navbar>.container-fluid{display:flex}.avatar__photo-link{display:block}.avatar__photo{border-radius:50%;height:var(--ifm-avatar-photo-size-md);width:var(--ifm-avatar-photo-size-md)}.avatar__photo--sm{height:var(--ifm-avatar-photo-size-sm);width:var(--ifm-avatar-photo-size-sm)}.avatar__photo--lg{height:var(--ifm-avatar-photo-size-lg);width:var(--ifm-avatar-photo-size-lg)}.avatar__photo--xl{height:var(--ifm-avatar-photo-size-xl);width:var(--ifm-avatar-photo-size-xl)}.avatar__photo+.avatar__intro{margin-left:var(--ifm-avatar-intro-margin)}.avatar__intro{display:flex;flex:1 1;flex-direction:column;justify-content:center;text-align:var(--ifm-avatar-intro-alignment)}.badge,.breadcrumbs__item,.breadcrumbs__link,.button,.dropdown>.navbar__link:after,.menu__link--sublist:after{display:inline-block}.avatar__name{font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base)}.avatar__subtitle{margin-top:.25rem}.avatar--vertical{--ifm-avatar-intro-alignment:center;--ifm-avatar-intro-margin:0.5rem;align-items:center;flex-direction:column}.avatar--vertical .avatar__intro{margin-left:0}.badge{background-color:var(--ifm-badge-background-color);border:var(--ifm-badge-border-width) solid var(--ifm-badge-border-color);border-radius:var(--ifm-badge-border-radius);color:var(--ifm-badge-color);font-size:75%;font-weight:var(--ifm-font-weight-bold);line-height:1;padding:var(--ifm-badge-padding-vertical) var(--ifm-badge-padding-horizontal)}.badge--primary{--ifm-badge-background-color:var(--ifm-color-primary)}.badge--secondary{--ifm-badge-background-color:var(--ifm-color-secondary);color:var(--ifm-color-black)}.badge--success{--ifm-badge-background-color:var(--ifm-color-success)}.badge--info{--ifm-badge-background-color:var(--ifm-color-info)}.badge--warning{--ifm-badge-background-color:var(--ifm-color-warning)}.badge--danger{--ifm-badge-background-color:var(--ifm-color-danger)}.breadcrumbs{margin-bottom:0;padding-left:0}.breadcrumbs__item:not(:first-child){margin-left:var(--ifm-breadcrumb-spacing)}.breadcrumbs__item:not(:last-child){margin-right:var(--ifm-breadcrumb-spacing)}.breadcrumbs__item:not(:last-child):after{background:var(--ifm-breadcrumb-separator) center;content:" ";display:inline-block;filter:var(--ifm-breadcrumb-separator-filter);height:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier));margin:0 .5rem;opacity:.5;width:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier))}.breadcrumbs__item--active .breadcrumbs__link{color:var(--ifm-breadcrumb-color-active)}.breadcrumbs__item--active .breadcrumbs__link,.breadcrumbs__item:not(.breadcrumbs__item--active):hover .breadcrumbs__link{background:var(--ifm-breadcrumb-item-background-active)}.breadcrumbs__link{border-radius:var(--ifm-breadcrumb-border-radius);color:var(--ifm-font-color-base);font-size:calc(1rem*var(--ifm-breadcrumb-size-multiplier));padding:calc(var(--ifm-breadcrumb-padding-vertical)*var(--ifm-breadcrumb-size-multiplier)) calc(var(--ifm-breadcrumb-padding-horizontal)*var(--ifm-breadcrumb-size-multiplier));transition-duration:var(--ifm-transition-fast);transition-property:background,color}.breadcrumbs--sm{--ifm-breadcrumb-size-multiplier:0.8}.breadcrumbs--lg{--ifm-breadcrumb-size-multiplier:1.2}.button{background-color:var(--ifm-button-background-color);border:var(--ifm-button-border-width) solid var(--ifm-button-border-color);border-radius:var(--ifm-button-border-radius);cursor:pointer;font-size:calc(.875rem*var(--ifm-button-size-multiplier));font-weight:var(--ifm-button-font-weight);line-height:1.5;padding:calc(var(--ifm-button-padding-vertical)*var(--ifm-button-size-multiplier)) calc(var(--ifm-button-padding-horizontal)*var(--ifm-button-size-multiplier));text-align:center;transition-duration:var(--ifm-button-transition-duration);transition-property:color,background,border-color;-webkit-user-select:none;-ms-user-select:none;user-select:none}.DocSearch-Button,.react-toggle{-webkit-user-select:none;-ms-user-select:none}.button,.button:hover{color:var(--ifm-button-color)}.button--outline{--ifm-button-color:var(--ifm-button-border-color)}.button--outline:hover{--ifm-button-background-color:var(--ifm-button-border-color)}.button--link{--ifm-button-border-color:transparent;color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}.button--link.button--active,.button--link:active,.button--link:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.button.disabled,.button:disabled,.button[disabled]{opacity:.65;pointer-events:none}.button--sm{--ifm-button-size-multiplier:0.8}.button--lg{--ifm-button-size-multiplier:1.35}.button--block,.furion-contributor-item img{display:block;width:100%}.button.button--secondary{color:var(--ifm-color-gray-900)}.button.button--secondary.button--outline:not(.button--active):not(:hover),.sidebarItemLink_1RT6{color:var(--ifm-font-color-base)}.button--primary{--ifm-button-border-color:var(--ifm-color-primary)}.button--primary:not(.button--outline){--ifm-button-background-color:var(--ifm-color-primary)}.button--primary:not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-primary-dark);--ifm-button-border-color:var(--ifm-color-primary-dark)}.button--primary.button--active,.button--primary:active{--ifm-button-border-color:var(--ifm-color-primary-darker);--ifm-button-background-color:var(--ifm-color-primary-darker);background-color:var(--ifm-color-primary-darker);border-color:var(--ifm-color-primary-darker)}.button--secondary{--ifm-button-border-color:var(--ifm-color-secondary)}.button--secondary:not(.button--outline){--ifm-button-background-color:var(--ifm-color-secondary)}.button--secondary:not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-secondary-dark);--ifm-button-border-color:var(--ifm-color-secondary-dark)}.button--secondary.button--active,.button--secondary:active{--ifm-button-border-color:var(--ifm-color-secondary-darker);--ifm-button-background-color:var(--ifm-color-secondary-darker);background-color:var(--ifm-color-secondary-darker);border-color:var(--ifm-color-secondary-darker)}.button--success{--ifm-button-border-color:var(--ifm-color-success)}.button--success:not(.button--outline){--ifm-button-background-color:var(--ifm-color-success)}.button--success:not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-success-dark);--ifm-button-border-color:var(--ifm-color-success-dark)}.button--success.button--active,.button--success:active{--ifm-button-border-color:var(--ifm-color-success-darker);--ifm-button-background-color:var(--ifm-color-success-darker);background-color:var(--ifm-color-success-darker);border-color:var(--ifm-color-success-darker)}.button--info{--ifm-button-border-color:var(--ifm-color-info)}.button--info:not(.button--outline){--ifm-button-background-color:var(--ifm-color-info)}.button--info:not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-info-dark);--ifm-button-border-color:var(--ifm-color-info-dark)}.button--info.button--active,.button--info:active{--ifm-button-border-color:var(--ifm-color-info-darker);--ifm-button-background-color:var(--ifm-color-info-darker);background-color:var(--ifm-color-info-darker);border-color:var(--ifm-color-info-darker)}.button--warning{--ifm-button-border-color:var(--ifm-color-warning)}.button--warning:not(.button--outline){--ifm-button-background-color:var(--ifm-color-warning)}.button--warning:not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-warning-dark);--ifm-button-border-color:var(--ifm-color-warning-dark)}.button--warning.button--active,.button--warning:active{--ifm-button-border-color:var(--ifm-color-warning-darker);--ifm-button-background-color:var(--ifm-color-warning-darker);background-color:var(--ifm-color-warning-darker);border-color:var(--ifm-color-warning-darker)}.button--danger{--ifm-button-border-color:var(--ifm-color-danger)}.button--danger:not(.button--outline){--ifm-button-background-color:var(--ifm-color-danger)}.button--danger:not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-danger-dark);--ifm-button-border-color:var(--ifm-color-danger-dark)}.button--danger.button--active,.button--danger:active{--ifm-button-border-color:var(--ifm-color-danger-darker);--ifm-button-background-color:var(--ifm-color-danger-darker);background-color:var(--ifm-color-danger-darker);border-color:var(--ifm-color-danger-darker)}.button-group{display:inline-flex}.button-group>.button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0;margin-left:var(--ifm-button-group-margin)}.button-group>.button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.button-group>.button--active{z-index:1}.button-group--block{display:flex;justify-content:stretch}.button-group--block>.button{flex-grow:1}.card{background-color:var(--ifm-card-background-color);border-radius:var(--ifm-card-border-radius);box-shadow:var(--ifm-global-shadow-lw);display:flex;flex-direction:column}.card--full-height,body,html{height:100%}.card__image{padding-top:var(--ifm-card-vertical-spacing)}.card__image:first-child{padding-top:0}.card__body,.card__footer,.card__header{padding:var(--ifm-card-vertical-spacing) var(--ifm-card-horizontal-spacing)}.card__body:not(:last-child),.card__footer:not(:last-child),.card__header:not(:last-child){padding-bottom:0}.admonition-content>:last-child,.card__body>:last-child,.card__footer>:last-child,.card__header>:last-child{margin-bottom:0}.card__footer{margin-top:auto}.table-of-contents{font-size:.8rem;margin-bottom:0;padding:var(--ifm-toc-padding-vertical) 0}.table-of-contents,.table-of-contents ul{list-style:none;padding-left:var(--ifm-toc-padding-horizontal)}.table-of-contents li{margin:var(--ifm-toc-padding-vertical) var(--ifm-toc-padding-horizontal)}.table-of-contents__left-border{border-left:1px solid var(--ifm-toc-border-color)}.table-of-contents__link{color:var(--ifm-toc-link-color)}.table-of-contents__link--active,.table-of-contents__link--active code,.table-of-contents__link:hover,.table-of-contents__link:hover code{color:var(--ifm-color-primary);text-decoration:none}.close{color:var(--ifm-color-black);float:right;font-size:1.5rem;font-weight:var(--ifm-font-weight-bold);line-height:1;opacity:.5;padding:1rem;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.dropdown__menu,.menu__link,.menu__link:hover{transition-duration:var(--ifm-transition-fast);transition-timing-function:var(--ifm-transition-timing-default)}.close:hover{opacity:.7}.backToTopButton_35hR:not(:focus):hover,.close:focus{opacity:.8}.dropdown{display:inline-flex;font-weight:var(--ifm-dropdown-font-weight);position:relative;vertical-align:top}.dropdown--hoverable:hover .dropdown__menu,.dropdown--show .dropdown__menu{opacity:1;transform:translateY(0);visibility:visible}.dropdown--right .dropdown__menu{left:inherit;right:0}.dropdown--nocaret .navbar__link:after{content:none!important}.dropdown__menu{background-color:var(--ifm-dropdown-background-color);border-radius:var(--ifm-global-radius);box-shadow:var(--ifm-global-shadow-md);left:0;list-style:none;max-height:calc(100vh - var(--ifm-navbar-height));min-width:10rem;opacity:0;overflow-y:auto;padding:.5rem;position:absolute;top:calc(100% - var(--ifm-navbar-item-padding-vertical));transform:translateY(-.625rem);transition-property:opacity,transform,visibility;visibility:hidden;z-index:var(--ifm-z-index-dropdown)}.dropdown__link{border-radius:.25rem;color:var(--ifm-dropdown-link-color);display:block;font-size:.875rem;margin-top:.2rem;padding:.25rem .5rem}.dropdown__link--active,.dropdown__link:hover{background-color:var(--ifm-dropdown-hover-background-color);color:var(--ifm-dropdown-link-color);text-decoration:none}.dropdown__link--active,.dropdown__link--active:hover{--ifm-dropdown-link-color:var(--ifm-link-color)}.dropdown>.navbar__link:after{border-color:currentcolor transparent;border-style:solid;border-width:.4em .4em 0;content:"";margin-left:.3em;position:relative;top:2px;transform:translateY(-50%)}.footer{background-color:var(--ifm-footer-background-color);color:var(--ifm-footer-color);padding:var(--ifm-footer-padding-vertical) var(--ifm-footer-padding-horizontal)}.footer--dark{--ifm-footer-background-color:#303846;--ifm-footer-color:var(--ifm-footer-link-color);--ifm-footer-link-color:var(--ifm-color-secondary);--ifm-footer-title-color:var(--ifm-color-white)}.footer__links{margin-bottom:1rem}.footer__link-item{color:var(--ifm-footer-link-color);line-height:2}.footer__link-item:hover{color:var(--ifm-footer-link-hover-color)}.footer__link-separator{margin:0 var(--ifm-footer-link-horizontal-spacing)}.footer__logo{margin-top:1rem;max-width:10rem}.footer__title{color:var(--ifm-footer-title-color);font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base);margin-bottom:var(--ifm-heading-margin-bottom)}.footer__item{margin-top:0}.footer__items{list-style:none;margin-bottom:0;padding-left:0}[type=checkbox]{padding:0}.hero{align-items:center;background-color:var(--ifm-hero-background-color);color:var(--ifm-hero-text-color);display:flex;padding:4rem 2rem}.hero--primary{--ifm-hero-background-color:var(--ifm-color-primary);--ifm-hero-text-color:var(--ifm-font-color-base-inverse)}.hero--dark{--ifm-hero-background-color:#303846;--ifm-hero-text-color:var(--ifm-color-white)}.blogPostTitle_GeHD,.hero__title{font-size:3rem}.hero__subtitle{font-size:1.5rem}.menu{font-weight:var(--ifm-font-weight-semibold);overflow-x:hidden}.menu__list{list-style:none;margin:0;padding-left:0}.menu__list .menu__list{margin-left:var(--ifm-menu-link-padding-horizontal)}.menu__list-item:not(:first-child){margin-top:.25rem}.menu__list-item--collapsed .menu__list{height:0;overflow:hidden}.details_2Ziz[data-collapsed=false].isBrowser_2j9b>summary:before,.details_2Ziz[open]:not(.isBrowser_2j9b)>summary:before,.menu__list-item--collapsed .menu__link--sublist:after{transform:rotate(90deg)}.menu__link{border-radius:.25rem;display:flex;justify-content:space-between;line-height:1.25;padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal);position:relative}.menu__link,.menu__link:hover{color:var(--ifm-menu-color);transition-property:color,background}.menu__link:hover{background:var(--ifm-menu-color-background-hover);text-decoration:none}.menu__link--sublist{margin-bottom:.25rem}.menu__link--sublist:after{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem;content:" ";filter:var(--ifm-menu-link-sublist-icon-filter);height:1.25rem;min-width:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast) linear}.menu__link--active,.menu__link--active:hover{color:var(--ifm-menu-color-active)}.navbar__brand,.navbar__link{color:var(--ifm-navbar-link-color)}.menu__link--active:not(.menu__link--sublist){background:var(--ifm-menu-color-background-active)}.navbar--dark,html[data-theme=dark]{--ifm-menu-link-sublist-icon-filter:invert(100%) sepia(94%) saturate(17%) hue-rotate(223deg) brightness(104%) contrast(98%)}.navbar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-navbar-shadow);height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.navbar--fixed-top{position:sticky;top:0;z-index:var(--ifm-z-index-fixed)}.navbar-sidebar,.navbar-sidebar__backdrop{bottom:0;opacity:0;position:fixed;transition-timing-function:ease-in-out;visibility:hidden;top:0;left:0}.navbar__inner{display:flex;flex-wrap:wrap;justify-content:space-between;width:100%}.navbar__brand{align-items:center;display:flex;font-weight:700;height:2rem;margin-right:1rem;min-width:0}.navbar__brand:hover{color:inherit;text-decoration:none}.navbar__title{flex:1 1 auto;overflow:hidden}.navbar__toggle{display:none;margin-right:.5rem}.navbar__logo{height:100%;margin-right:.5rem}.navbar__items{align-items:center;display:flex;flex:1;min-width:0}.navbar__items--center{flex:0 0 auto}.navbar__items--center .navbar__brand{margin:0}.furion-banner-item,.navbar__items--center+.navbar__items--right{flex:1}.navbar__items--right{flex:0 0 auto;justify-content:flex-end}.navbar__items--right>:last-child{padding-right:0}.navbar__item{display:inline-block;padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}#nprogress,.navbar__item.dropdown .navbar__link:not([href]){pointer-events:none}.navbar__link{font-weight:var(--ifm-font-weight-semibold)}.navbar__link--active,.navbar__link:hover{color:var(--ifm-navbar-link-hover-color);text-decoration:none}.navbar--dark{--ifm-navbar-background-color:#242526;--ifm-navbar-link-color:var(--ifm-color-gray-100);--ifm-navbar-search-input-color:var(--ifm-color-white);--ifm-menu-color:var(--ifm-color-gray-300);--ifm-navbar-toggle-color:var(--ifm-color-white)}.navbar--dark .navbar__toggle{color:var(--ifm-color-white)}.navbar--primary{--ifm-navbar-background-color:var(--ifm-color-primary);--ifm-navbar-link-hover-color:var(--ifm-color-white);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-500)}.navbar__search-input{-webkit-appearance:none;appearance:none;background:var(--ifm-navbar-search-input-background-color) var(--ifm-navbar-search-input-icon) no-repeat .75rem center/1rem 1rem;border:none;border-radius:2rem;color:var(--ifm-navbar-search-input-color);cursor:text;display:inline-block;font-size:.9rem;height:2rem;padding:0 .5rem 0 2.25rem;width:12.5rem}.navbar__search-input:-ms-input-placeholder{color:var(--ifm-navbar-search-input-placeholder-color)}.navbar__search-input::placeholder{color:var(--ifm-navbar-search-input-placeholder-color)}.navbar-sidebar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-global-shadow-md);overflow-x:hidden;transform:translate3d(-100%,0,0);transition-duration:.25s;transition-property:opacity,visibility,transform;width:var(--ifm-navbar-sidebar-width)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar__items{transform:translateZ(0)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar--show .navbar-sidebar__backdrop{opacity:1;visibility:visible}.navbar-sidebar__backdrop{background-color:rgba(0,0,0,.6);right:0;transition-duration:.1s;transition-property:opacity,visibility}.navbar-sidebar__brand{align-items:center;box-shadow:var(--ifm-navbar-shadow);display:flex;flex:1;height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.navbar-sidebar__items{display:flex;height:calc(100% - var(--ifm-navbar-height));transition:transform var(--ifm-transition-fast) ease-in-out}.navbar-sidebar__items--show-secondary{transform:translate3d(calc(var(--ifm-navbar-sidebar-width)*-1),0,0)}.navbar-sidebar__item{flex-shrink:0;padding:.5rem;width:calc(var(--ifm-navbar-sidebar-width))}.navbar-sidebar__back{background:var(--ifm-menu-color-background-active);font-size:15px;font-weight:var(--ifm-button-font-weight);margin:0 0 .2rem -.5rem;padding:.6rem 1.5rem;position:relative;text-align:left;top:-.5rem;width:calc(100% + 1rem)}.navbar-sidebar__close{display:flex;margin-left:auto}.pagination__item,.pagination__link{display:inline-block}.pagination{font-size:var(--ifm-pagination-font-size);padding-left:0}.pagination--sm{--ifm-pagination-font-size:0.8rem;--ifm-pagination-padding-horizontal:0.8rem;--ifm-pagination-padding-vertical:0.2rem}.pagination--lg{--ifm-pagination-font-size:1.2rem;--ifm-pagination-padding-horizontal:1.2rem;--ifm-pagination-padding-vertical:0.3rem}.pagination__item:not(:first-child){margin-left:var(--ifm-pagination-page-spacing)}.pagination__item:not(:last-child){margin-right:var(--ifm-pagination-page-spacing)}.pagination__item>span{padding:var(--ifm-pagination-padding-vertical)}.pagination__item--active .pagination__link{color:var(--ifm-pagination-color-active)}.pagination__item--active .pagination__link,.pagination__item:not(.pagination__item--active):hover .pagination__link{background:var(--ifm-pagination-item-active-background)}.pagination__item--disabled,.pagination__item[disabled]{opacity:.25;pointer-events:none}.pagination__link{border-radius:var(--ifm-pagination-border-radius);color:var(--ifm-font-color-base);padding:var(--ifm-pagination-padding-vertical) var(--ifm-pagination-padding-horizontal);transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination__link:hover,.sidebarItemLink_1RT6:hover{text-decoration:none}.pagination-nav{display:flex}.pagination-nav__item{display:flex;flex:1 50%;max-width:50%}.pagination-nav__item--next{text-align:right}.pagination-nav__item+.pagination-nav__item{margin-left:var(--ifm-spacing-horizontal)}.pagination-nav__link{border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-pagination-nav-border-radius);flex-grow:1;line-height:var(--ifm-heading-line-height);padding:var(--ifm-global-spacing);transition:border-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination-nav__link:hover{border-color:var(--ifm-pagination-nav-color-hover);text-decoration:none}.pagination-nav__label{font-size:var(--ifm-h4-font-size);font-weight:var(--ifm-heading-font-weight);word-break:break-word}.pagination-nav__sublabel{color:var(--ifm-color-content-secondary);font-size:var(--ifm-h5-font-size);font-weight:var(--ifm-font-weight-semibold);margin-bottom:.25rem}.pills,.sidebarItemTitle_2hhb,.sidebarMenuCloseIcon_1lpH,.tabs{font-weight:var(--ifm-font-weight-bold)}.pills{padding-left:0}.pills__item{border-radius:.5rem;cursor:pointer;display:inline-block;padding:.25rem 1rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pills__item--active{background:var(--ifm-pills-color-background-active);color:var(--ifm-pills-color-active)}.pills__item:not(.pills__item--active):hover{background-color:var(--ifm-pills-color-background-active)}.pills__item:not(:first-child){margin-left:var(--ifm-pills-spacing)}.pills__item:not(:last-child){margin-right:var(--ifm-pills-spacing)}.docItemContainer_33ec article>:first-child,.docItemContainer_33ec header+*,.pills__item+.pills__item{margin-top:0}.pills--block{display:flex;justify-content:stretch}.pills--block .pills__item{flex-grow:1;text-align:center}.tabs{color:var(--ifm-tabs-color);display:flex;margin-bottom:0;overflow-x:auto;padding-left:0}.tabs__item{border-bottom:3px solid transparent;border-radius:var(--ifm-global-radius);cursor:pointer;display:inline-flex;padding:var(--ifm-tabs-padding-vertical) var(--ifm-tabs-padding-horizontal);transition:background-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.tabs__item--active{border-bottom-color:var(--ifm-tabs-color-active-border);border-bottom-left-radius:0;border-bottom-right-radius:0;color:var(--ifm-tabs-color-active)}.tabs__item:hover{background-color:var(--ifm-hover-overlay)}.tabs--block{justify-content:stretch}.tabs--block .tabs__item{flex-grow:1;justify-content:center}html[data-theme=dark]{--ifm-color-scheme:dark;--ifm-color-emphasis-0:var(--ifm-color-gray-1000);--ifm-color-emphasis-100:var(--ifm-color-gray-900);--ifm-color-emphasis-200:var(--ifm-color-gray-800);--ifm-color-emphasis-300:var(--ifm-color-gray-700);--ifm-color-emphasis-400:var(--ifm-color-gray-600);--ifm-color-emphasis-600:var(--ifm-color-gray-400);--ifm-color-emphasis-700:var(--ifm-color-gray-300);--ifm-color-emphasis-800:var(--ifm-color-gray-200);--ifm-color-emphasis-900:var(--ifm-color-gray-100);--ifm-color-emphasis-1000:var(--ifm-color-gray-0);--ifm-background-color:#18191a;--ifm-background-surface-color:#242526;--ifm-hover-overlay:hsla(0,0%,100%,0.05);--ifm-color-content-secondary:#fff;--ifm-breadcrumb-separator-filter:invert(64%) sepia(11%) saturate(0%) hue-rotate(149deg) brightness(99%) contrast(95%);--ifm-code-background:#333437;--ifm-scrollbar-track-background-color:#444;--ifm-scrollbar-thumb-background-color:#686868;--ifm-scrollbar-thumb-hover-background-color:#7a7a7a;--ifm-color-primary-contrast-background:#102445;--ifm-color-primary-contrast-foreground:#ebf2fc;--ifm-color-secondary-contrast-background:#474748;--ifm-color-secondary-contrast-foreground:#fdfdfe;--ifm-color-success-contrast-background:#003100;--ifm-color-success-contrast-foreground:#e6f6e6;--ifm-color-info-contrast-background:#193c47;--ifm-color-info-contrast-foreground:#eef9fd;--ifm-color-warning-contrast-background:#4d3800;--ifm-color-warning-contrast-foreground:#fff8e6;--ifm-color-danger-contrast-background:#4b1113;--ifm-color-danger-contrast-foreground:#ffebec;--docsearch-text-color:#f5f6f7;--docsearch-container-background:rgba(9,10,17,0.8);--docsearch-modal-background:#15172a;--docsearch-modal-shadow:inset 1px 1px 0 0 #2c2e40,0 3px 8px 0 #000309;--docsearch-searchbox-background:#090a11;--docsearch-searchbox-focus-background:#000;--docsearch-hit-color:#bec3c9;--docsearch-hit-shadow:none;--docsearch-hit-background:#090a11;--docsearch-key-gradient:linear-gradient(-26.5deg,#565872,#31355b);--docsearch-key-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 2px 2px 0 rgba(3,4,9,0.3);--docsearch-footer-background:#1e2136;--docsearch-footer-shadow:inset 0 1px 0 0 rgba(73,76,106,0.5),0 -4px 8px 0 rgba(0,0,0,0.2);--docsearch-logo-color:#fff;--docsearch-muted-color:#7f8497}.admonition h5{margin-bottom:8px;margin-top:0}.admonition-icon{display:inline-block;margin-right:.4em;vertical-align:middle}.admonition-icon svg{stroke-width:0;stroke:var(--ifm-alert-foreground-color);display:inline-block;height:22px;width:22px}.admonition{margin-bottom:1em}.docusaurus-highlight-code-line{background-color:#484d5b;display:block;margin:0 calc(var(--ifm-pre-padding)*-1);padding:0 var(--ifm-pre-padding)}#nprogress .bar{background:#29d;height:2px;left:0;position:fixed;top:0;width:100%;z-index:9}#nprogress .peg{box-shadow:0 0 10px #29d,0 0 5px #29d;height:100%;opacity:1;position:absolute;right:0;transform:rotate(3deg) translateY(-4px);width:100px}#docusaurus-base-url-issue-banner-container{display:none}.furion-join-group{background:hsla(0,0%,100%,.5);border-radius:5px;bottom:20px;box-shadow:0 0 12px #211b50;left:50%;margin-left:-128px;overflow:hidden;position:fixed;width:256px;z-index:8}.furion-join-group img{display:block;height:18em;margin:1em auto 0}.furion-join-group a{background:#8759ff;border:none;color:#fff;cursor:pointer;display:block;line-height:1.5;margin:0;min-width:15em;outline:0;padding:.5em 0;text-decoration:none;width:100%}.furion-join-group button:hover{background:rgba(135,89,255,.9)}.furion-give-me-star{background-color:#182c61;color:#fff;font-size:14px;padding:.6em;position:relative;text-align:center}.furion-gitee-star{margin-left:7px;position:relative;vertical-align:middle}.furion-star-project{bottom:0;display:inline-block;position:fixed;right:0;z-index:10}.furion-star-project img{animation:3s infinite a;-webkit-animation:3s infinite a;display:block;height:50px;position:relative;transform-origin:bottom;-webkit-transform-origin:bottom}@keyframes a{0%,65%,to{transform:rotate(0)}70%,80%,90%{transform:rotate(6deg)}75%,85%,95%{transform:rotate(-6deg)}}.details_2Ziz{--docusaurus-details-summary-arrow-size:0.38rem;--docusaurus-details-transition:transform 200ms ease;--docusaurus-details-decoration-color:grey}.details_2Ziz>summary{cursor:pointer;list-style:none;padding-left:1rem;position:relative}.details_2Ziz>summary::-webkit-details-marker{display:none}.details_2Ziz>summary:before{border:var(--docusaurus-details-summary-arrow-size) solid transparent;border-left:var(--docusaurus-details-summary-arrow-size) solid var(--docusaurus-details-decoration-color);content:"";left:0;position:absolute;top:.45rem;transform:rotate(0);transform-origin:calc(var(--docusaurus-details-summary-arrow-size)/2) 50%;transition:var(--docusaurus-details-transition)}.collapsibleContent_3OHp{border-top:1px solid var(--docusaurus-details-decoration-color);margin-top:1rem;padding-top:1rem}.skipToContent_1oUP{background-color:var(--ifm-background-surface-color);color:var(--ifm-color-emphasis-900);left:100%;padding:calc(var(--ifm-global-spacing)/2) var(--ifm-global-spacing);position:fixed;top:1rem;z-index:calc(var(--ifm-z-index-fixed) + 1)}.skipToContent_1oUP:focus{box-shadow:var(--ifm-global-shadow-md);left:1rem}.announcementBar_3WsW{align-items:center;background-color:var(--ifm-color-white);border-bottom:1px solid var(--ifm-color-emphasis-100);color:var(--ifm-color-black);display:flex;height:var(--docusaurus-announcement-bar-height)}.collapseSidebarButton_1CGd,.sidebarLogo_3h0W,.themedImage_1VuW,html[data-announcement-bar-initially-dismissed=true] .announcementBar_3WsW{display:none}.announcementBarPlaceholder_2m9F{flex:0 0 10px}.announcementBarClose_38nx{align-self:stretch;flex:0 0 30px;line-height:0;padding:0}.announcementBarContent_3EUC{flex:1 1 auto;font-size:85%;padding:5px 0;text-align:center}.announcementBarContent_3EUC a{color:inherit;text-decoration:underline}.react-toggle{cursor:pointer;position:relative;touch-action:pan-x;user-select:none}.react-toggle-screenreader-only{clip:rect(0 0 0 0);border:0;height:1px;margin:-1px;overflow:hidden;position:absolute;width:1px}.react-toggle--disabled{cursor:not-allowed}.react-toggle-track{background-color:#4d4d4d;border-radius:30px;height:24px;transition:.2s;width:50px}.react-toggle-track-check,.react-toggle-track-x{bottom:0;height:10px;margin:auto 0;top:0;position:absolute}.react-toggle-track-check{left:8px;opacity:0;transition:opacity .25s;width:14px}.react-toggle--checked .react-toggle-track-check,.react-toggle-track-x,[data-theme=dark] .react-toggle .react-toggle-track-check{opacity:1;transition:opacity .25s}.react-toggle-track-x{right:10px;width:10px}.react-toggle--checked .react-toggle-track-x,[data-theme=dark] .react-toggle .react-toggle-track-x{opacity:0}.react-toggle-thumb{background-color:#fafafa;border:1px solid #4d4d4d;border-radius:50%;height:22px;left:1px;position:absolute;top:1px;transition:.25s;width:22px}.react-toggle--checked .react-toggle-thumb,[data-theme=dark] .react-toggle .react-toggle-thumb{left:27px}.react-toggle--focus .react-toggle-thumb,.react-toggle:hover .react-toggle-thumb{box-shadow:0 0 2px 3px var(--ifm-color-primary)}.react-toggle:active:not(.react-toggle--disabled) .react-toggle-thumb{box-shadow:0 0 5px 5px var(--ifm-color-primary)}.toggle_71bT{align-items:center;display:flex;height:10px;justify-content:center;width:10px}.toggle_71bT:before{position:absolute}.iconExternalLink_3J9K{margin-left:.3rem;position:relative;top:1px}.iconLanguage_3vod{margin-right:5px;vertical-align:text-bottom}html[data-theme=dark] .themedImage--dark_hz6m,html[data-theme=light] .themedImage--light_3UqQ{display:initial}.navbarHideable_2qcr{transition:transform var(--ifm-transition-fast) ease}.navbarHidden_3yey{transform:translate3d(0,calc(-100% - 2px),0)}.navbarSidebarToggle_wkoY{margin-right:1rem}.navbarSidebarCloseSvg_2XuS{fill:var(--ifm-color-emphasis-600)}.footerLogoLink_qW4Z{opacity:.5;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.codeBlockContent_hGly:hover>.copyButton_Ue-o,.codeBlockTitle_eoMF:hover+.codeBlockContent_hGly .copyButton_Ue-o,.copyButton_Ue-o:focus,.footerLogoLink_qW4Z:hover,.hash-link:focus,:hover>.hash-link{opacity:1}body:not(.navigation-with-keyboard) :not(input):focus{outline:0}#__docusaurus{display:flex;flex-direction:column;min-height:100%}.main-wrapper{flex:1 0 auto}.docusaurus-mt-lg{margin-top:3rem}.sidebar_2ahu{max-height:calc(100vh - var(--ifm-navbar-height) - 2rem);overflow-y:auto;position:sticky;top:calc(var(--ifm-navbar-height) + 2rem)}.sidebarItemTitle_2hhb{font-size:var(--ifm-h3-font-size)}.sidebarItemList_2xAf{font-size:.9rem;list-style:none;padding-left:0}.sidebarItem_2UVv{margin-top:.7rem}.tabItemActive_2DSg{animation:.5s ease-in-out 5 b}@keyframes b{0%{background-color:var(--ifm-hover-overlay)}to{background-color:transparent}}.sidebarMenuIcon_fgN0{vertical-align:middle}.sidebarMenuCloseIcon_1lpH{align-items:center;display:inline-flex;font-size:1.5rem;height:24px;justify-content:center;line-height:.9;width:24px}.DocSearch-Button,.DocSearch-Button-Container{align-items:center;display:flex}.searchQueryInput_35WP,.searchVersionInput_3Dkp{background:var(--docsearch-searchbox-focus-background);border:2px solid var(--ifm-toc-border-color);border-radius:var(--ifm-global-radius);color:var(--docsearch-text-color);font:var(--ifm-font-size-base) var(--ifm-font-family-base);margin-bottom:.5rem;padding:.8rem;transition:border var(--ifm-transition-fast) ease;width:100%}.searchQueryInput_35WP:focus,.searchVersionInput_3Dkp:focus{border-color:var(--docsearch-primary-color);outline:0}.searchQueryInput_35WP:-ms-input-placeholder{color:var(--docsearch-muted-color)}.searchQueryInput_35WP::placeholder{color:var(--docsearch-muted-color)}.searchResultsColumn_3okB{font-size:.9rem;font-weight:700}.algoliaLogo_hvIi{max-width:150px}.algoliaLogoPathFill_wnAy{fill:var(--ifm-font-color-base)}.searchResultItem_3EK0{border-bottom:1px solid var(--ifm-toc-border-color);padding:1rem 0}.searchResultItemHeading_3ioS{font-weight:400;margin-bottom:0}.searchResultItemPath_1-7G{--ifm-breadcrumb-separator-size-multiplier:1;color:var(--ifm-color-content-secondary);font-size:.8rem}.searchResultItemSummary_17EU{font-style:italic;margin:.5rem 0 0}.loadingSpinner_EGxz{animation:1s linear infinite c;border:.4em solid #eee;border-radius:50%;border-top:.4em solid var(--ifm-color-primary);height:3rem;margin:0 auto;width:3rem}@keyframes c{to{transform:rotate(1turn)}}.loader_1VUO{margin-top:2rem}.search-result-match{background:rgba(255,215,142,.25);color:var(--docsearch-hit-color);padding:.09em 0}.DocSearch-Button{background:var(--docsearch-searchbox-background);border:0;border-radius:40px;color:var(--docsearch-muted-color);cursor:pointer;font-weight:500;height:36px;justify-content:space-between;padding:0 8px;user-select:none}.DocSearch-Footer,.DocSearch-Help{-webkit-user-select:none;-ms-user-select:none}.DocSearch-Button:active,.DocSearch-Button:focus,.DocSearch-Button:hover{background:var(--docsearch-searchbox-focus-background);box-shadow:var(--docsearch-searchbox-shadow);color:var(--docsearch-text-color);outline:0}.DocSearch-Search-Icon{stroke-width:1.6}.DocSearch-Hit-Tree,.DocSearch-Hit-action,.DocSearch-Hit-icon,.DocSearch-Reset{stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Button .DocSearch-Search-Icon{color:var(--docsearch-text-color)}.DocSearch-Button-Placeholder{font-size:1rem;padding:0 12px 0 6px}.DocSearch-Input,.DocSearch-Link{-webkit-appearance:none;font:inherit}.DocSearch-Button-Keys{display:flex;min-width:calc(40px + .8em)}.DocSearch-Button-Key{align-items:center;background:var(--docsearch-key-gradient);border-radius:3px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;padding-bottom:2px;position:relative;top:-1px;width:20px}.DocSearch--active{overflow:hidden!important}.DocSearch-Container{background-color:var(--docsearch-container-background);height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:5}.DocSearch-Container a{text-decoration:none}.DocSearch-Link{appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;margin:0;padding:0}.DocSearch-Modal{background:var(--docsearch-modal-background);border-radius:6px;box-shadow:var(--docsearch-modal-shadow);flex-direction:column;margin:60px auto auto;max-width:var(--docsearch-modal-width);position:relative}.DocSearch-SearchBar{display:flex;padding:var(--docsearch-spacing) var(--docsearch-spacing) 0}.DocSearch-Form{align-items:center;background:var(--docsearch-searchbox-focus-background);border-radius:4px;box-shadow:var(--docsearch-searchbox-shadow);display:flex;height:var(--docsearch-searchbox-height);margin:0;padding:0 var(--docsearch-spacing);position:relative;width:100%}.DocSearch-Input{appearance:none;background:0 0;border:0;color:var(--docsearch-text-color);flex:1;font-size:1.2em;height:100%;outline:0;padding:0 0 0 8px;width:80%}.DocSearch-Hit-action-button,.DocSearch-Reset{-webkit-appearance:none;border:0;cursor:pointer}.DocSearch-Input:-ms-input-placeholder{color:var(--docsearch-muted-color);opacity:1}.DocSearch-Input::placeholder{color:var(--docsearch-muted-color);opacity:1}.DocSearch-Input::-webkit-search-cancel-button,.DocSearch-Input::-webkit-search-decoration,.DocSearch-Input::-webkit-search-results-button,.DocSearch-Input::-webkit-search-results-decoration{display:none}.DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{margin:0;padding:0}.DocSearch-Container--Stalled .DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}.DocSearch-Cancel,.DocSearch-Container--Stalled .DocSearch-MagnifierLabel,.DocSearch-LoadingIndicator,.DocSearch-Reset[hidden]{display:none}.DocSearch-Reset{animation:.1s ease-in forwards d;appearance:none;background:none;border-radius:50%;color:var(--docsearch-icon-color);padding:2px;right:0}.DocSearch-Help,.DocSearch-HitsFooter,.DocSearch-Label{color:var(--docsearch-muted-color)}.DocSearch-Reset:focus{outline:0}.DocSearch-Reset:hover{color:var(--docsearch-highlight-color)}.DocSearch-LoadingIndicator svg,.DocSearch-MagnifierLabel svg{height:24px;width:24px}.DocSearch-Dropdown{max-height:calc(var(--docsearch-modal-height) - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height));min-height:var(--docsearch-spacing);overflow-y:auto;overflow-y:overlay;padding:0 var(--docsearch-spacing);scrollbar-color:var(--docsearch-muted-color) var(--docsearch-modal-background);scrollbar-width:thin}.DocSearch-Dropdown::-webkit-scrollbar{width:12px}.DocSearch-Dropdown::-webkit-scrollbar-track{background:0 0}.DocSearch-Dropdown::-webkit-scrollbar-thumb{background-color:var(--docsearch-muted-color);border:3px solid var(--docsearch-modal-background);border-radius:20px}.DocSearch-Dropdown ul{list-style:none;margin:0;padding:0}.DocSearch-Label{font-size:.75em;line-height:1.6em}.DocSearch-Help{font-size:.9em;margin:0;user-select:none}.DocSearch-Title{font-size:1.2em}.DocSearch-Logo a,.docs-wrapper{display:flex}.DocSearch-Logo svg{color:var(--docsearch-logo-color);margin-left:8px}.DocSearch-Hits:last-of-type{margin-bottom:24px}.DocSearch-Hits mark{background:none;color:var(--docsearch-highlight-color)}.DocSearch-HitsFooter{display:flex;font-size:.85em;justify-content:center;margin-bottom:var(--docsearch-spacing);padding:var(--docsearch-spacing)}.DocSearch-HitsFooter a{border-bottom:1px solid;color:inherit}.DocSearch-Hit{border-radius:4px;display:flex;padding-bottom:4px;position:relative}.DocSearch-Hit--deleting{opacity:0;transition:.25s linear}.DocSearch-Hit--favoriting{transform:scale(0);transform-origin:top center;transition:.25s linear .25s}.DocSearch-Hit a{background:var(--docsearch-hit-background);border-radius:4px;box-shadow:var(--docsearch-hit-shadow);display:block;padding-left:var(--docsearch-spacing);width:100%}.DocSearch-Hit-source{background:var(--docsearch-modal-background);color:var(--docsearch-highlight-color);font-size:.85em;font-weight:600;line-height:32px;margin:0 -4px;padding:8px 4px 0;position:sticky;top:0;z-index:3}.DocSearch-Hit-Tree{color:var(--docsearch-muted-color);height:var(--docsearch-hit-height);opacity:.5;width:24px}.DocSearch-Hit[aria-selected=true] a{background-color:var(--docsearch-highlight-color)}.DocSearch-Hit[aria-selected=true] mark{text-decoration:underline}.DocSearch-Hit-Container{align-items:center;color:var(--docsearch-hit-color);display:flex;flex-direction:row;height:var(--docsearch-hit-height);padding:0 var(--docsearch-spacing) 0 0}.DocSearch-Hit-icon{height:20px;width:20px}.DocSearch-Hit-action,.DocSearch-Hit-icon{color:var(--docsearch-muted-color)}.DocSearch-Hit-action{align-items:center;display:flex;height:22px;width:22px}.DocSearch-Hit-action svg{display:block;height:18px;width:18px}.DocSearch-Hit-action+.DocSearch-Hit-action{margin-left:6px}.DocSearch-Hit-action-button{appearance:none;background:none;border-radius:50%;color:inherit;padding:2px}.docSidebarContainer_3Kbt,svg.DocSearch-Hit-Select-Icon{display:none}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Select-Icon,.tocCollapsibleContent_2Ydz a{display:block}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:rgba(0,0,0,.2);transition:background-color .1s ease-in}.DocSearch-Hit-action-button:focus path,.DocSearch-Hit-action-button:hover path{fill:#fff}.DocSearch-Hit-content-wrapper{display:flex;flex:1 1 auto;flex-direction:column;font-weight:500;justify-content:center;line-height:1.2em;margin:0 8px;overflow-x:hidden;position:relative;width:80%}.DocSearch-Hit-title{font-size:.9em}.DocSearch-Hit-path{color:var(--docsearch-muted-color);font-size:.75em}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Tree,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-action,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-icon,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-path,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-text,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-title,.DocSearch-Hit[aria-selected=true] mark{color:var(--docsearch-hit-active-color)!important}.DocSearch-ErrorScreen,.DocSearch-NoResults,.DocSearch-StartScreen{font-size:.9em;margin:0 auto;padding:36px 0;text-align:center;width:80%}.DocSearch-Screen-Icon{color:var(--docsearch-muted-color);padding-bottom:12px}.DocSearch-NoResults-Prefill-List{display:inline-block;padding-bottom:24px;text-align:left}.DocSearch-NoResults-Prefill-List ul{display:inline-block;padding:8px 0 0}.DocSearch-NoResults-Prefill-List li{list-style-position:inside;list-style-type:"» "}.DocSearch-Prefill{-webkit-appearance:none;appearance:none;background:none;border:0;border-radius:1em;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;font-size:1em;font-weight:700;padding:0}.DocSearch-Prefill:focus,.DocSearch-Prefill:hover{outline:0;text-decoration:underline}.DocSearch-Footer{align-items:center;background:var(--docsearch-footer-background);border-radius:0 0 8px 8px;box-shadow:var(--docsearch-footer-shadow);display:flex;flex-direction:row-reverse;flex-shrink:0;height:var(--docsearch-footer-height);justify-content:space-between;padding:0 var(--docsearch-spacing);position:relative;user-select:none;width:100%;z-index:6}.DocSearch-Commands{color:var(--docsearch-muted-color);display:flex;list-style:none;margin:0;padding:0}.DocSearch-Commands li{align-items:center;display:flex}.DocSearch-Commands li:not(:last-of-type){margin-right:.8em}.DocSearch-Commands-Key{align-items:center;background:var(--docsearch-key-gradient);border-radius:2px;box-shadow:var(--docsearch-key-shadow);display:flex;height:18px;justify-content:center;margin-right:.4em;padding-bottom:1px;width:20px}@keyframes d{0%{opacity:0}to{opacity:1}}.DocSearch-Button{margin:0;transition:all var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.DocSearch-Container{z-index:calc(var(--ifm-z-index-fixed) + 1)}.codeBlockContainer_K1bP{border-radius:var(--ifm-global-radius);box-shadow:var(--ifm-global-shadow-lw);margin-bottom:var(--ifm-leading);overflow:hidden}.codeBlockContent_hGly{direction:ltr;position:relative}.codeBlockTitle_eoMF{border-bottom:1px solid var(--ifm-color-emphasis-300);font-size:var(--ifm-code-font-size);font-weight:500;padding:.75rem var(--ifm-pre-padding)}.codeBlock_23N8{border-radius:0;margin:0;padding:0}.copyButton_Ue-o{background:rgba(0,0,0,.3);border-radius:var(--ifm-global-radius);color:var(--ifm-color-white);opacity:0;padding:.4rem .5rem;position:absolute;right:calc(var(--ifm-pre-padding)/2);top:calc(var(--ifm-pre-padding)/2);transition:opacity .2s ease-in-out;-webkit-user-select:none;-ms-user-select:none;user-select:none}.codeBlockLines_39YC{display:flex;flex-direction:column;float:left;font:inherit;min-width:100%;padding:var(--ifm-pre-padding)}.tableOfContents_35-E{max-height:calc(100vh - var(--ifm-navbar-height) - 2rem);overflow-y:auto;position:sticky;top:calc(var(--ifm-navbar-height) + 1rem)}.iconEdit_2_ui{margin-right:.3em;vertical-align:sub}.tag_1Okp{border:1px solid var(--docusaurus-tag-list-border);transition:border var(--ifm-transition-fast)}.tag_1Okp:hover{--docusaurus-tag-list-border:var(--ifm-link-color);text-decoration:none}.tagRegular_3MiF{border-radius:.5rem;font-size:90%;padding:.3rem .5rem}.tagWithCount_1HU1{align-items:center;border-left:0;display:flex;padding:0 .5rem 0 1rem;position:relative}.tagWithCount_1HU1:after,.tagWithCount_1HU1:before{border:1px solid var(--docusaurus-tag-list-border);content:"";position:absolute;top:50%;transition:inherit}.tagWithCount_1HU1:before{border-bottom:0;border-right:0;height:1.18rem;right:100%;transform:translate(50%,-50%) rotate(-45deg);width:1.18rem}.tagWithCount_1HU1:after{border-radius:50%;height:.5rem;left:0;transform:translateY(-50%);width:.5rem}.tagWithCount_1HU1 span{background:var(--ifm-color-secondary);border-radius:var(--ifm-global-radius);color:var(--ifm-color-black);font-size:.7rem;line-height:1.2;margin-left:.3rem;padding:.1rem .4rem}.tag_21yA{display:inline-block;margin:.5rem .5rem 0 1rem}.anchor{display:block;position:relative;top:-.5rem}.hash-link{opacity:0;padding-left:.5rem;transition:opacity var(--ifm-transition-fast)}.tags_2ga9{display:inline}.tag_11ep{display:inline-block;margin:0 .4rem .5rem 0}.lastUpdated_13-_{font-size:smaller;font-style:italic;margin-top:.2rem}.tocCollapsible_1PrD{background-color:var(--ifm-menu-color-background-active);border-radius:var(--ifm-global-radius);margin:1rem 0}.tocCollapsibleButton_2O1e{align-items:center;display:flex;font-size:inherit;justify-content:space-between;padding:.4rem .8rem;width:100%}.tocCollapsibleButton_2O1e:after{background:var(--ifm-menu-link-sublist-icon) 50% 50%/2rem 2rem no-repeat;content:"";filter:var(--ifm-menu-link-sublist-icon-filter);height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast);width:1.25rem}.tocCollapsibleContent_2Ydz>ul{border-left:none;border-top:1px solid var(--ifm-color-emphasis-300);font-size:15px;padding:.2rem 0}.tocCollapsibleContent_2Ydz ul li{margin:.4rem .8rem}.tocCollapsibleExpanded_3GYr .tocCollapsibleButton_2O1e:after{transform:none}.anchorWithStickyNavbar_31ik{scroll-margin-top:calc(var(--ifm-navbar-height) + .5rem)}.anchorWithHideOnScrollNavbar_3R7-{scroll-margin-top:.5rem}.details_1VDD{--docusaurus-details-decoration-color:var(--ifm-alert-border-color);--docusaurus-details-transition:transform var(--ifm-transition-fast) ease;border:1px solid var(--ifm-alert-border-color);margin:0 0 var(--ifm-spacing-vertical)}.backToTopButton_35hR{align-items:center;background:var(--docusaurus-btt-background);border-radius:50%;bottom:1.3rem;box-shadow:0 .125rem .3125rem 0 rgba(0,0,0,.3);color:var(--docusaurus-btt-color);display:flex;height:3rem;justify-content:center;opacity:0;position:fixed;right:1.3rem;transform:scale(0);transition:all var(--ifm-transition-fast) ease-in-out;width:3rem;z-index:var(--ifm-z-index-fixed)}.backToTopButtonShow_18ls{opacity:1;transform:scale(1)}.docMainContainer_3ufF,.docPage_31aa{display:flex;width:100%}.blogPostData_291c{font-size:.9rem}.blogPostDetailsFull_3kfx{flex-direction:column}.image_1yU8{height:100%;object-fit:cover;width:100%}.authorCol_1R69{flex-grow:1!important;max-width:inherit!important}.furion-banner{align-items:center;background-color:#211b50;color:#fff;padding:4rem 2rem}.furion-banner-container{display:flex;justify-content:space-between;margin:0 auto;max-width:1140px}.furion-banner-project{font-size:1.5em;font-weight:700}.furion-banner-description{-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;background-image:linear-gradient(81deg,#8759ff,#3fc4fe,#42ffac);font-size:2.5em;font-weight:700;line-height:1.25;margin:24px 0}.furion-banner-spec{font-family:Muli;font-size:1em;font-weight:500;line-height:1.33;opacity:.7;padding:0}.furion-banner-spec li{list-style:none;margin-bottom:1em;padding-left:1em;position:relative}.furion-banner-spec li:before{background-color:#8759ff;content:"";height:4px;left:0;position:absolute;top:.5em;width:4px}.furion-support-platform{color:#fff;font-family:Muli;font-size:.85em;font-weight:500;line-height:2;margin-top:3em;opacity:.6}.furion-support-icons{display:flex;margin-top:12px}.furion-support-icons span{margin-right:20px}.furion-get-start{background:#8759ff;border-radius:2em;color:#fff;display:inline-block;line-height:1.5;margin-top:4em;min-width:240px;padding:8px 32px;text-align:center;text-decoration:none}.furion-get-start:hover{background:rgba(135,89,255,.9);color:#fff;text-decoration:none}.furion-banner-item .system-window{width:34rem}.system-top-bar{background-image:linear-gradient(90deg,rgba(136,89,255,.2),rgba(63,196,254,.2) 90%,rgba(66,255,172,.2));padding:.25em 1em}.system-top-bar-circle{border-radius:50%;display:inline-block;filter:brightness(100%);height:.5em;margin-left:.3em;width:.5em}.system-window{--ifm-leading:0;background:#211b50;border-radius:1em;overflow:hidden;padding:0;width:95%}.system-window iframe{border-radius:unset}.blue-accent{--uni-border-color:#3fbbfe;--uni-box-shadow-color:rgba(63,187,254,0.1);--ifm-menu-color-active:#3fbbfe}.preview-border{border:1px solid #3fbbfe;box-shadow:0 6px 58px 0 rgba(63,187,254,.1)}.furion-content{margin-bottom:4em;margin-top:4em;text-align:center}.furion-small-title{color:#412a94;font-family:Muli;font-size:1em;font-weight:600;letter-spacing:1px;opacity:.6}.furion-big-title.dark,.furion-contributor-item.dark a,.furion-log-number span.dark,.furion-remark-p p.dark,.furion-small-title.dark{color:#f5f6f7}.furion-big-title{color:#412a94;font-family:Poppins;font-size:2em;font-weight:700;line-height:1.31;margin-bottom:2em}.furion-gitee-log{display:flex;flex-wrap:nowrap;justify-content:center}.furion-log-item{height:173px;margin-right:65px;position:relative;width:260px}.furion-log-jiao{background:#fff;border-right:1px dashed #a795e8;border-top:1px dashed #a795e8;height:100px;position:absolute;right:-6px;top:-6px;width:100px}.furion-log-jiao.dark{background:#18191a}.furion-log-item:last-child{margin-right:0}.furion-log-number{align-items:center;display:flex;flex-direction:column;height:100%;justify-content:center;position:relative;width:100%;z-index:2}.furion-log-number div{font-size:3em;font-weight:700}.furion-log-number span{color:#1c1e21;font-family:Poppins,sans-serif;font-stretch:normal;font-style:normal;letter-spacing:normal;line-height:normal}.furion-remark{display:flex;justify-content:center}.furion-remark-item{border-image-slice:1;border-image-source:linear-gradient(var(--uni-border-gradient-degrees),#8759ff,#3fc4fe 51%,#42ffac);border-style:solid;border-width:6px;height:100%;margin:2em;max-width:320px;padding:4em 2em}.furion-remark-item:first-child{--uni-border-gradient-degrees:41deg;border-right:0;border-top:0}.furion-remark-item:nth-child(2){--uni-border-gradient-degrees:100deg;border:0}.furion-remark-item:last-child{--uni-border-gradient-degrees:221deg;border-bottom:0;border-left:0}.furion-remark-p{height:150px}.furion-remark-p h1{font-size:24px}.furion-remark-p p,.furion-who-des p{font-family:Muli;font-size:1em;line-height:1.75;opacity:.8}.furion-remark-p p{color:#474747;text-align:center}.furion-whouse{align-items:center;background-color:#412a94!important;color:#fff;display:flex;padding:5rem 0}.furion-who-custom{align-items:center;background-color:#fff;color:#723cff;display:flex;flex-wrap:wrap;justify-content:flex-end;min-height:500px;padding:6rem;text-align:right;width:60%}.furion-custom-img{color:transparent;margin-left:3em;text-decoration:none}.furion-who-des{padding:0 5rem}.furion-who-des p{color:#fff;margin-bottom:.8em}.footer{background-color:#211b50!important}.furion-links{margin:4em;text-align:center}.furion-links-content a{display:inline-block;font-size:20px;font-weight:600;margin:0 1em}.furion-contributors,.furion-proccesson{margin:4em 0;text-align:center}#dotnet-china{height:100px}.furion-contributor-item{background-color:#f3f3f3;border-radius:4px;box-shadow:4px 3px 16px -3px #0009;box-sizing:border-box;color:#333;display:inline-block;height:170px;margin:10px 5px;overflow:hidden;padding:10px;position:relative;text-align:center;width:130px}.furion-contributor-extra{background-color:#412a94;border-radius:4px;color:#fff;font-size:12px;padding:2px 5px;position:absolute;right:0;text-align:left;top:-9px}.furion-contributor-item a{color:#333;display:block;font-size:10pt;font-weight:700;text-decoration:none}.furion-contributor-item div{margin-top:10px}.furion-contributor-item.dark{background:#333}.furion-get-start-btn{position:relative}.furion-version{color:#ff0;font-size:16px;margin-left:210px;margin-top:-53px;position:absolute;z-index:3}.navbar{background-color:#211b50}.navbar__brand,.navbar__items,.navbar__link{color:#fff}.navbar__link--active,.navbar__link:hover{color:#ff0}.menu__list-item .navbar__link--active,.menu__list-item .navbar__link:hover{color:#743dff}@media (min-width:997px){.searchBox_1Doo{padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.menuLinkText_1J2g{cursor:auto}.menuLinkText_1J2g:hover{background:none}.sidebar_15mo{display:flex;flex-direction:column;height:100%;max-height:100vh;padding-top:var(--ifm-navbar-height);position:sticky;top:0;transition:opacity 50ms;width:var(--doc-sidebar-width)}.sidebarWithHideableNavbar_267A{padding-top:0}.sidebarHidden_2kNb{height:0;opacity:0;overflow:hidden;visibility:hidden}.sidebarLogo_3h0W{align-items:center;color:inherit!important;display:flex!important;margin:0 var(--ifm-navbar-padding-horizontal);max-height:var(--ifm-navbar-height);min-height:var(--ifm-navbar-height);text-decoration:none!important}.sidebarLogo_3h0W img{height:2rem;margin-right:.5rem}.menu_Bmed{flex-grow:1;padding:.5rem}.menuWithAnnouncementBar_2WvA{margin-bottom:var(--docusaurus-announcement-bar-height)}.collapseSidebarButton_1CGd{background-color:var(--ifm-button-background-color);border:1px solid var(--ifm-toc-border-color);border-radius:0;bottom:0;display:block!important;height:40px;position:sticky}.collapseSidebarButtonIcon_3E-R{margin-top:4px;transform:rotate(180deg)}.expandSidebarButtonIcon_1naQ,html[dir=rtl] .collapseSidebarButtonIcon_3E-R{transform:rotate(0)}html[data-theme=dark] .collapseSidebarButton_1CGd,html[data-theme=dark] .collapsedDocSidebar_2JMH:focus,html[data-theme=dark] .collapsedDocSidebar_2JMH:hover{background-color:var(--collapse-button-bg-color-dark)}.collapsedDocSidebar_2JMH:focus,.collapsedDocSidebar_2JMH:hover,html[data-theme=dark] .collapseSidebarButton_1CGd:focus,html[data-theme=dark] .collapseSidebarButton_1CGd:hover{background-color:var(--ifm-color-emphasis-200)}.docMainContainer_3ufF{flex-grow:1;max-width:calc(100% - var(--doc-sidebar-width))}.docMainContainerEnhanced_3NYZ{max-width:calc(100% - var(--doc-sidebar-hidden-width))}.docSidebarContainer_3Kbt{border-right:1px solid var(--ifm-toc-border-color);-webkit-clip-path:inset(0);clip-path:inset(0);display:block;margin-top:calc(var(--ifm-navbar-height)*-1);transition:width var(--ifm-transition-fast) ease;width:var(--doc-sidebar-width);will-change:width}.docSidebarContainerHidden_3pA8{cursor:pointer;width:var(--doc-sidebar-hidden-width)}.collapsedDocSidebar_2JMH{align-items:center;display:flex;height:100%;justify-content:center;max-height:100vh;position:sticky;top:0;transition:background-color var(--ifm-transition-fast) ease}html[dir=rtl] .expandSidebarButtonIcon_1naQ{transform:rotate(180deg)}.docItemWrapperEnhanced_2vyJ{max-width:calc(var(--ifm-container-width) + var(--doc-sidebar-width))!important}}@media only screen and (min-width:997px){.lastUpdated_13-_{text-align:right}.docItemCol_3FnS{max-width:75%!important}.tocMobile_3Hoh{display:none}}@media screen and (min-width:1024px){:root{--docusaurus-announcement-bar-height:30px}.announcementBarClose_38nx,.announcementBarPlaceholder_2m9F{flex-basis:50px}}@media (min-width:1440px){.container{max-width:var(--ifm-container-width-xl)}}@media screen and (max-width:1024px){.furion-join-group{display:none}.furion-banner-container{flex-direction:column;justify-content:unset}.furion-get-start-btn{text-align:center}#dotnet-china{height:45px}.furion-banner-item .system-window{margin-top:3rem;width:100%}.furion-gitee-log{align-items:center;flex-direction:column;flex-wrap:unset;justify-content:center;padding:20px}.furion-log-item{height:173px;margin-right:0;margin-top:25px;width:100%}.furion-big-title{margin-bottom:1em}.furion-remark,.furion-whouse{flex-direction:column}.furion-whouse{padding-bottom:1em}.furion-who-des{padding-bottom:2em;padding-top:1em}.furion-remark-item{border:none;margin:0;max-width:unset;padding-bottom:0;width:100%}.furion-custom-img{margin-bottom:2em;margin-left:0}.furion-custom-img img{max-width:unset}.furion-who-custom{align-items:center;justify-content:center;text-align:center;width:100%}.furion-contributors{margin:4em 0}}@media screen and (max-width:997px){.toggle_3Zt9{display:none}}@media (max-width:996px){.row .col.col.col{--ifm-col-width:100%;flex-basis:var(--ifm-col-width);margin-left:0}.footer{--ifm-footer-padding-horizontal:0}.footer__link-separator,.navbar__item{display:none}.footer__col{margin-bottom:calc(var(--ifm-spacing-vertical)*3)}.footer__link-item{display:block}.hero{padding-left:0;padding-right:0}.navbar>.container,.navbar>.container-fluid{padding:0}.navbar__toggle{display:inherit}.navbar__search-input{width:9rem}.pills--block,.tabs--block{flex-direction:column}.pills--block .pills__item:not(:first-child){margin-top:var(--ifm-pills-spacing)}.pills--block .pills__item:not(:last-child){margin-bottom:var(--ifm-pills-spacing)}.tabs--block .tabs__item:not(:first-child){margin-top:var(--ifm-tabs-spacing)}.tabs--block .tabs__item:not(:last-child){margin-bottom:var(--ifm-tabs-spacing)}.searchBox_1Doo{position:absolute;right:var(--ifm-navbar-padding-horizontal)}}@media only screen and (max-width:996px){.sidebar_2ahu,.tableOfContents_35-E{display:none}.searchQueryColumn_22lI,.searchResultsColumn_3okB{max-width:60%!important}.searchLogoColumn_21YU,.searchVersionColumn_1eqi{max-width:40%!important}.searchLogoColumn_21YU{padding-left:0!important}.docItemContainer_gpai{padding:0 .3rem}}@media (max-width:750px){.DocSearch-Button-Keys,.DocSearch-Button-Placeholder,.DocSearch-Commands,.DocSearch-Hit-Tree{display:none}:root{--docsearch-spacing:10px;--docsearch-footer-height:40px}.DocSearch-Dropdown{height:100%;max-height:calc(var(--docsearch-vh,1vh)*100 - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height))}.DocSearch-Container{height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh,1vh)*100);position:absolute}.DocSearch-Footer{border-radius:0;bottom:0;position:absolute}.DocSearch-Hit-content-wrapper{display:flex;position:relative;width:80%}.DocSearch-Modal{border-radius:0;box-shadow:none;height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh,1vh)*100);margin:0;max-width:100%;width:100%}.DocSearch-Cancel{-webkit-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;flex:none;font:inherit;font-size:1em;font-weight:500;margin-left:var(--docsearch-spacing);outline:0;overflow:hidden;padding:0;-webkit-user-select:none;-ms-user-select:none;user-select:none;white-space:nowrap}}@media screen and (max-width:576px){.searchQueryColumn_22lI{max-width:100%!important}.searchVersionColumn_1eqi{max-width:100%!important;padding-left:var(--ifm-spacing-horizontal)!important}}@media (pointer:fine){.thin-scrollbar::-webkit-scrollbar{height:var(--ifm-scrollbar-size);width:var(--ifm-scrollbar-size)}.thin-scrollbar::-webkit-scrollbar-track{background:var(--ifm-scrollbar-track-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb{background:var(--ifm-scrollbar-thumb-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb:hover{background:var(--ifm-scrollbar-thumb-hover-background-color)}}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Reset{stroke-width:var(--docsearch-icon-stroke-width);animation:none;-webkit-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;right:0}.DocSearch-Hit--deleting,.DocSearch-Hit--favoriting{transition:none}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:rgba(0,0,0,.2);transition:none}}@media print{.announcementBar_3WsW,.footer,.menu,.navbar,.pagination-nav,.table-of-contents{display:none}.tabs{page-break-inside:avoid}.codeBlockLines_39YC{white-space:pre-wrap}} \ No newline at end of file diff --git a/handbook/build/assets/css/styles.9213d4d0.css b/handbook/build/assets/css/styles.9213d4d0.css deleted file mode 100644 index 5f88bffe15b..00000000000 --- a/handbook/build/assets/css/styles.9213d4d0.css +++ /dev/null @@ -1,25 +0,0 @@ -.container,.row .col{padding:0 var(--ifm-spacing-horizontal);width:100%}.row .col,img{max-width:100%}.markdown li,body{word-wrap:break-word}body,ol ol,ol ul,ul ol,ul ul{margin:0}pre,table{overflow:auto}blockquote,pre{margin:0 0 var(--ifm-spacing-vertical)}.alert a:hover,blockquote a:hover{text-decoration-thickness:2px}.breadcrumbs__link,.button{transition-timing-function:var(--ifm-transition-timing-default)}.button,code{vertical-align:middle}.button--outline.button--active,.button--outline:active,.button--outline:hover,:root{--ifm-button-color:var(--ifm-font-color-base-inverse)}.avatar__photo,.card,.text--truncate{overflow:hidden}.navbar--dark,:root{--ifm-navbar-link-hover-color:var(--ifm-color-primary)}:root,html[data-theme=dark]{--ifm-color-emphasis-500:var(--ifm-color-gray-500)}.admonition-icon svg,.alert__icon svg{fill:var(--ifm-alert-foreground-color)}.react-toggle,html{-webkit-tap-highlight-color:transparent}.DocSearch-Hit-content-wrapper,.navbar__title,.text--truncate{text-overflow:ellipsis;white-space:nowrap}.button,.dropdown__link,.navbar__title,.text--truncate{white-space:nowrap}*,.DocSearch-Container,.DocSearch-Container *,.furion-log-item,.furion-who-custom,.furion-who-des{box-sizing:border-box}:root{--ifm-color-scheme:light;--ifm-dark-value:10%;--ifm-darker-value:15%;--ifm-darkest-value:30%;--ifm-light-value:15%;--ifm-lighter-value:30%;--ifm-lightest-value:50%;--ifm-contrast-background-value:90%;--ifm-contrast-foreground-value:70%;--ifm-contrast-background-dark-value:70%;--ifm-contrast-foreground-dark-value:90%;--ifm-color-primary:#3578e5;--ifm-color-secondary:#ebedf0;--ifm-color-success:#00a400;--ifm-color-info:#54c7ec;--ifm-color-warning:#ffba00;--ifm-color-danger:#fa383e;--ifm-color-primary-dark:#306cce;--ifm-color-primary-darker:#2d66c3;--ifm-color-primary-darkest:#2554a0;--ifm-color-primary-light:#538ce9;--ifm-color-primary-lighter:#72a1ed;--ifm-color-primary-lightest:#9abcf2;--ifm-color-primary-contrast-background:#ebf2fc;--ifm-color-primary-contrast-foreground:#102445;--ifm-color-secondary-dark:#d4d5d8;--ifm-color-secondary-darker:#c8c9cc;--ifm-color-secondary-darkest:#a4a6a8;--ifm-color-secondary-light:#eef0f2;--ifm-color-secondary-lighter:#f1f2f5;--ifm-color-secondary-lightest:#f5f6f8;--ifm-color-secondary-contrast-background:#fdfdfe;--ifm-color-secondary-contrast-foreground:#474748;--ifm-color-success-dark:#009400;--ifm-color-success-darker:#008b00;--ifm-color-success-darkest:#007300;--ifm-color-success-light:#26b226;--ifm-color-success-lighter:#4dbf4d;--ifm-color-success-lightest:#80d280;--ifm-color-success-contrast-background:#e6f6e6;--ifm-color-success-contrast-foreground:#003100;--ifm-color-info-dark:#4cb3d4;--ifm-color-info-darker:#47a9c9;--ifm-color-info-darkest:#3b8ba5;--ifm-color-info-light:#6ecfef;--ifm-color-info-lighter:#87d8f2;--ifm-color-info-lightest:#aae3f6;--ifm-color-info-contrast-background:#eef9fd;--ifm-color-info-contrast-foreground:#193c47;--ifm-color-warning-dark:#e6a700;--ifm-color-warning-darker:#d99e00;--ifm-color-warning-darkest:#b38200;--ifm-color-warning-light:#ffc426;--ifm-color-warning-lighter:#ffcf4d;--ifm-color-warning-lightest:#ffdd80;--ifm-color-warning-contrast-background:#fff8e6;--ifm-color-warning-contrast-foreground:#4d3800;--ifm-color-danger-dark:#e13238;--ifm-color-danger-darker:#d53035;--ifm-color-danger-darkest:#af272b;--ifm-color-danger-light:#fb565b;--ifm-color-danger-lighter:#fb7478;--ifm-color-danger-lightest:#fd9c9f;--ifm-color-danger-contrast-background:#ffebec;--ifm-color-danger-contrast-foreground:#4b1113;--ifm-color-white:#fff;--ifm-color-black:#000;--ifm-color-gray-0:var(--ifm-color-white);--ifm-color-gray-100:#f5f6f7;--ifm-color-gray-200:#ebedf0;--ifm-color-gray-300:#dadde1;--ifm-color-gray-400:#ccd0d5;--ifm-color-gray-500:#bec3c9;--ifm-color-gray-600:#8d949e;--ifm-color-gray-700:#606770;--ifm-color-gray-800:#444950;--ifm-color-gray-900:#1c1e21;--ifm-color-gray-1000:var(--ifm-color-black);--ifm-color-emphasis-0:var(--ifm-color-gray-0);--ifm-color-emphasis-100:var(--ifm-color-gray-100);--ifm-color-emphasis-200:var(--ifm-color-gray-200);--ifm-color-emphasis-300:var(--ifm-color-gray-300);--ifm-color-emphasis-400:var(--ifm-color-gray-400);--ifm-color-emphasis-600:var(--ifm-color-gray-600);--ifm-color-emphasis-700:var(--ifm-color-gray-700);--ifm-color-emphasis-800:var(--ifm-color-gray-800);--ifm-color-emphasis-900:var(--ifm-color-gray-900);--ifm-color-emphasis-1000:var(--ifm-color-gray-1000);--ifm-color-content:var(--ifm-color-emphasis-900);--ifm-color-content-inverse:var(--ifm-color-emphasis-0);--ifm-color-content-secondary:#525860;--ifm-background-color:transparent;--ifm-background-surface-color:var(--ifm-color-content-inverse);--ifm-global-border-width:1px;--ifm-global-radius:0.4rem;--ifm-hover-overlay:rgba(0,0,0,0.05);--ifm-font-color-base:var(--ifm-color-content);--ifm-font-color-base-inverse:var(--ifm-color-content-inverse);--ifm-font-color-secondary:var(--ifm-color-content-secondary);--ifm-font-family-base:system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--ifm-font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--ifm-font-size-base:100%;--ifm-font-weight-light:300;--ifm-font-weight-normal:400;--ifm-font-weight-semibold:500;--ifm-font-weight-bold:700;--ifm-font-weight-base:var(--ifm-font-weight-normal);--ifm-line-height-base:1.65;--ifm-global-spacing:1rem;--ifm-spacing-vertical:var(--ifm-global-spacing);--ifm-spacing-horizontal:var(--ifm-global-spacing);--ifm-transition-fast:200ms;--ifm-transition-slow:400ms;--ifm-transition-timing-default:cubic-bezier(0.08,0.52,0.52,1);--ifm-global-shadow-lw:0 1px 2px 0 rgba(0,0,0,0.1);--ifm-global-shadow-md:0 5px 40px rgba(0,0,0,0.2);--ifm-global-shadow-tl:0 12px 28px 0 rgba(0,0,0,0.2),0 2px 4px 0 rgba(0,0,0,0.1);--ifm-z-index-dropdown:4;--ifm-z-index-fixed:5;--ifm-z-index-overlay:7;--ifm-container-width:1140px;--ifm-container-width-xl:1320px;--ifm-code-background:#f6f7f8;--ifm-code-border-radius:var(--ifm-global-radius);--ifm-code-font-size:90%;--ifm-code-padding-horizontal:0.1rem;--ifm-code-padding-vertical:0.1rem;--ifm-pre-background:var(--ifm-color-emphasis-100);--ifm-pre-border-radius:var(--ifm-code-border-radius);--ifm-pre-color:inherit;--ifm-pre-line-height:1.45;--ifm-pre-padding:1rem;--ifm-heading-color:inherit;--ifm-heading-margin-top:0;--ifm-heading-margin-bottom:var(--ifm-spacing-vertical);--ifm-heading-font-family:var(--ifm-font-family-base);--ifm-heading-font-weight:var(--ifm-font-weight-bold);--ifm-heading-line-height:1.25;--ifm-h1-font-size:2rem;--ifm-h2-font-size:1.5rem;--ifm-h3-font-size:1.25rem;--ifm-h4-font-size:1rem;--ifm-h5-font-size:0.875rem;--ifm-h6-font-size:0.85rem;--ifm-image-alignment-padding:1.25rem;--ifm-leading-desktop:1.25;--ifm-leading:calc(var(--ifm-leading-desktop)*1rem);--ifm-list-left-padding:2rem;--ifm-list-margin:1rem;--ifm-list-item-margin:0.25rem;--ifm-list-paragraph-margin:1rem;--ifm-table-cell-padding:0.75rem;--ifm-table-background:transparent;--ifm-table-stripe-background:var(--ifm-color-emphasis-100);--ifm-table-border-width:1px;--ifm-table-border-color:var(--ifm-color-emphasis-300);--ifm-table-head-background:inherit;--ifm-table-head-color:inherit;--ifm-table-head-font-weight:var(--ifm-font-weight-bold);--ifm-table-cell-color:inherit;--ifm-link-color:var(--ifm-color-primary);--ifm-link-decoration:none;--ifm-link-hover-color:var(--ifm-link-color);--ifm-link-hover-decoration:underline;--ifm-paragraph-margin-bottom:var(--ifm-leading);--ifm-blockquote-base-background:#ffe773;--ifm-blockquote-font-size:var(--ifm-font-size-base);--ifm-blockquote-border-left-width:5px;--ifm-blockquote-color:var(--ifm-font-color-base);--ifm-blockquote-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-blockquote-padding-vertical:var(--ifm-spacing-vertical);--ifm-blockquote-shadow:var(--ifm-global-shadow-lw);--ifm-blockquote-background-color:rgba(255,231,115,0.2);--ifm-blockquote-foreground-color:var(--ifm-font-color-base);--ifm-blockquote-border-color:#f2db6d;--ifm-hr-border-color:var(--ifm-color-emphasis-500);--ifm-hr-border-width:1px;--ifm-hr-margin-vertical:1.5rem;--ifm-scrollbar-size:7px;--ifm-scrollbar-track-background-color:#f1f1f1;--ifm-scrollbar-thumb-background-color:silver;--ifm-scrollbar-thumb-hover-background-color:#a7a7a7;--ifm-alert-background-color:inherit;--ifm-alert-border-color:inherit;--ifm-alert-border-radius:var(--ifm-global-radius);--ifm-alert-border-width:0px;--ifm-alert-border-left-width:5px;--ifm-alert-color:var(--ifm-font-color-base);--ifm-alert-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-alert-padding-vertical:var(--ifm-spacing-vertical);--ifm-alert-shadow:var(--ifm-global-shadow-lw);--ifm-avatar-intro-margin:1rem;--ifm-avatar-intro-alignment:inherit;--ifm-avatar-photo-size-sm:2rem;--ifm-avatar-photo-size-md:3rem;--ifm-avatar-photo-size-lg:4rem;--ifm-avatar-photo-size-xl:6rem;--ifm-badge-background-color:inherit;--ifm-badge-border-color:inherit;--ifm-badge-border-radius:var(--ifm-global-radius);--ifm-badge-border-width:var(--ifm-global-border-width);--ifm-badge-color:var(--ifm-color-white);--ifm-badge-padding-horizontal:calc(var(--ifm-spacing-horizontal)*0.5);--ifm-badge-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-breadcrumb-border-radius:1.5rem;--ifm-breadcrumb-spacing:0.0625rem;--ifm-breadcrumb-color-active:var(--ifm-color-primary);--ifm-breadcrumb-item-background-active:var(--ifm-hover-overlay);--ifm-breadcrumb-padding-horizontal:1rem;--ifm-breadcrumb-padding-vertical:0.5rem;--ifm-breadcrumb-size-multiplier:1;--ifm-breadcrumb-separator:url('data:image/svg+xml;utf8,');--ifm-breadcrumb-separator-filter:none;--ifm-breadcrumb-separator-size:0.5rem;--ifm-breadcrumb-separator-size-multiplier:1.25;--ifm-button-background-color:inherit;--ifm-button-border-color:var(--ifm-button-background-color);--ifm-button-border-width:var(--ifm-global-border-width);--ifm-button-font-weight:var(--ifm-font-weight-bold);--ifm-button-padding-horizontal:1.5rem;--ifm-button-padding-vertical:0.375rem;--ifm-button-size-multiplier:1;--ifm-button-transition-duration:var(--ifm-transition-fast);--ifm-button-border-radius:calc(var(--ifm-global-radius)*var(--ifm-button-size-multiplier));--ifm-button-group-margin:2px;--ifm-card-background-color:var(--ifm-background-surface-color);--ifm-card-border-radius:calc(var(--ifm-global-radius)*2);--ifm-card-horizontal-spacing:var(--ifm-global-spacing);--ifm-card-vertical-spacing:var(--ifm-global-spacing);--ifm-toc-border-color:var(--ifm-color-emphasis-300);--ifm-toc-link-color:var(--ifm-color-content-secondary);--ifm-toc-padding-vertical:0.5rem;--ifm-toc-padding-horizontal:0.5rem;--ifm-dropdown-background-color:var(--ifm-background-surface-color);--ifm-dropdown-font-weight:var(--ifm-font-weight-semibold);--ifm-dropdown-link-color:var(--ifm-font-color-base);--ifm-dropdown-hover-background-color:var(--ifm-hover-overlay);--ifm-footer-background-color:var(--ifm-color-emphasis-100);--ifm-footer-color:inherit;--ifm-footer-link-color:var(--ifm-color-emphasis-700);--ifm-footer-link-hover-color:var(--ifm-color-primary);--ifm-footer-link-horizontal-spacing:0.5rem;--ifm-footer-padding-horizontal:calc(var(--ifm-spacing-horizontal)*2);--ifm-footer-padding-vertical:calc(var(--ifm-spacing-vertical)*2);--ifm-footer-title-color:inherit;--ifm-hero-background-color:var(--ifm-background-surface-color);--ifm-hero-text-color:var(--ifm-color-emphasis-800);--ifm-menu-color:var(--ifm-color-emphasis-700);--ifm-menu-color-active:var(--ifm-color-primary);--ifm-menu-color-background-active:var(--ifm-hover-overlay);--ifm-menu-color-background-hover:var(--ifm-hover-overlay);--ifm-menu-link-padding-horizontal:1rem;--ifm-menu-link-padding-vertical:0.375rem;--ifm-menu-link-sublist-icon:url('data:image/svg+xml;utf8,');--ifm-menu-link-sublist-icon-filter:none;--ifm-navbar-background-color:var(--ifm-background-surface-color);--ifm-navbar-height:3.75rem;--ifm-navbar-item-padding-horizontal:0.75rem;--ifm-navbar-item-padding-vertical:0.25rem;--ifm-navbar-link-color:var(--ifm-font-color-base);--ifm-navbar-link-active-color:var(--ifm-link-color);--ifm-navbar-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-navbar-padding-vertical:calc(var(--ifm-spacing-vertical)*0.5);--ifm-navbar-shadow:var(--ifm-global-shadow-lw);--ifm-navbar-search-input-background-color:var(--ifm-color-emphasis-200);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-800);--ifm-navbar-search-input-placeholder-color:var(--ifm-color-emphasis-500);--ifm-navbar-search-input-icon:url('data:image/svg+xml;utf8,');--ifm-navbar-sidebar-width:80vw;--ifm-pagination-border-radius:calc(var(--ifm-global-radius)*var(--ifm-pagination-size-multiplier));--ifm-pagination-color-active:var(--ifm-color-primary);--ifm-pagination-font-size:1rem;--ifm-pagination-item-active-background:var(--ifm-hover-overlay);--ifm-pagination-page-spacing:0.0625rem;--ifm-pagination-padding-horizontal:calc(var(--ifm-spacing-horizontal)*1);--ifm-pagination-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-pagination-size-multiplier:1;--ifm-pagination-nav-border-radius:var(--ifm-global-radius);--ifm-pagination-nav-color-hover:var(--ifm-color-primary);--ifm-pills-color-active:var(--ifm-color-primary);--ifm-pills-color-background-active:var(--ifm-hover-overlay);--ifm-pills-spacing:0.0625rem;--ifm-tabs-color:var(--ifm-font-color-secondary);--ifm-tabs-color-active:var(--ifm-color-primary);--ifm-tabs-color-active-border:var(--ifm-tabs-color-active);--ifm-tabs-padding-horizontal:1rem;--ifm-tabs-padding-vertical:1rem;--ifm-tabs-spacing:0.0625rem;--ifm-color-primary:#25c2a0;--ifm-color-primary-dark:#21af90;--ifm-color-primary-darker:#1fa588;--ifm-color-primary-darkest:#1a8870;--ifm-color-primary-light:#46cbae;--ifm-color-primary-lighter:#66d4bd;--ifm-color-primary-lightest:#92e0d0;--ifm-code-font-size:95%;--docusaurus-announcement-bar-height:auto;--collapse-button-bg-color-dark:#2e333a;--docsearch-primary-color:#5468ff;--docsearch-text-color:#1c1e21;--docsearch-spacing:12px;--docsearch-icon-stroke-width:1.4;--docsearch-highlight-color:var(--docsearch-primary-color);--docsearch-muted-color:#969faf;--docsearch-container-background:rgba(101,108,133,0.8);--docsearch-logo-color:#5468ff;--docsearch-modal-width:560px;--docsearch-modal-height:600px;--docsearch-modal-background:#f5f6f7;--docsearch-modal-shadow:inset 1px 1px 0 0 hsla(0,0%,100%,0.5),0 3px 8px 0 #555a64;--docsearch-searchbox-height:56px;--docsearch-searchbox-background:#ebedf0;--docsearch-searchbox-focus-background:#fff;--docsearch-searchbox-shadow:inset 0 0 0 2px var(--docsearch-primary-color);--docsearch-hit-height:56px;--docsearch-hit-color:#444950;--docsearch-hit-active-color:#fff;--docsearch-hit-background:#fff;--docsearch-hit-shadow:0 1px 3px 0 #d4d9e1;--docsearch-key-gradient:linear-gradient(-225deg,#d5dbe4,#f8f8f8);--docsearch-key-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 2px 1px rgba(30,35,90,0.4);--docsearch-footer-height:44px;--docsearch-footer-background:#fff;--docsearch-footer-shadow:0 -1px 0 0 #e0e3e8,0 -3px 6px 0 rgba(69,98,155,0.12);--docsearch-primary-color:var(--ifm-color-primary);--docsearch-text-color:var(--ifm-font-color-base);--docusaurus-btt-background:var(--ifm-color-primary);--docusaurus-btt-color:#fff;--doc-sidebar-width:300px;--doc-sidebar-hidden-width:30px}.alert,blockquote{--ifm-link-decoration:underline}.badge--danger,.badge--info,.badge--primary,.badge--secondary,.badge--success,.badge--warning{--ifm-badge-border-color:var(--ifm-badge-background-color)}.button--link,.button--outline{--ifm-button-background-color:transparent}.navbar--dark,.navbar--primary{--ifm-navbar-search-input-background-color:hsla(0,0%,100%,0.1);--ifm-navbar-search-input-placeholder-color:hsla(0,0%,100%,0.5)}html{-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;-webkit-text-size-adjust:100%;text-size-adjust:100%;background-color:var(--ifm-background-color);color:var(--ifm-font-color-base);color-scheme:var(--ifm-color-scheme);font:var(--ifm-font-size-base)/var(--ifm-line-height-base) var(--ifm-font-family-base)}iframe{color-scheme:auto}.container{margin:0 auto;max-width:var(--ifm-container-width)}.padding-bottom--none,.padding-vert--none{padding-bottom:0!important}.padding-top--none,.padding-vert--none{padding-top:0!important}.padding-horiz--none,.padding-left--none{padding-left:0!important}.padding-horiz--none,.padding-right--none{padding-right:0!important}.container--fluid{max-width:inherit}.row{display:flex;flex-direction:row;flex-wrap:wrap;margin:0 calc(var(--ifm-spacing-horizontal)*-1)}.margin-bottom--none,.margin-vert--none,.markdown>:last-child,.system-window pre{margin-bottom:0!important}.margin-top--none,.margin-vert--none,.markdown>:first-child,.tabItem_1uMI{margin-top:0!important}.row .col{--ifm-col-width:100%;flex:1 0;margin-left:0}.row .col.col--1,.row .col.col--2,.row .col.col--3,.row .col[class*=col--]{flex:0 0 var(--ifm-col-width);max-width:var(--ifm-col-width)}.row .col.col--1{--ifm-col-width:8.33333%}.row .col.col--offset-1{margin-left:8.33333%}.row .col.col--2{--ifm-col-width:16.66667%}.row .col.col--offset-2{margin-left:16.66667%}.row .col.col--3{--ifm-col-width:25%}.row .col.col--offset-3{margin-left:25%}.row .col.col--4{--ifm-col-width:33.33333%;flex:0 0 var(--ifm-col-width);max-width:var(--ifm-col-width)}.row .col.col--offset-4{margin-left:33.33333%}.row .col.col--5{--ifm-col-width:41.66667%;flex:0 0 var(--ifm-col-width);max-width:var(--ifm-col-width)}.row .col.col--6,.row .col.col--7{flex:0 0 var(--ifm-col-width);max-width:var(--ifm-col-width)}.row .col.col--offset-5{margin-left:41.66667%}.row .col.col--6{--ifm-col-width:50%}.row .col.col--offset-6{margin-left:50%}.row .col.col--7{--ifm-col-width:58.33333%}.row .col.col--offset-7{margin-left:58.33333%}.row .col.col--8{--ifm-col-width:66.66667%;flex:0 0 var(--ifm-col-width);max-width:var(--ifm-col-width)}.row .col.col--offset-8{margin-left:66.66667%}.row .col.col--9{--ifm-col-width:75%;flex:0 0 var(--ifm-col-width);max-width:var(--ifm-col-width)}.row .col.col--10,.row .col.col--11{flex:0 0 var(--ifm-col-width);max-width:var(--ifm-col-width)}.row .col.col--offset-9{margin-left:75%}.row .col.col--10{--ifm-col-width:83.33333%}.row .col.col--offset-10{margin-left:83.33333%}.row .col.col--11{--ifm-col-width:91.66667%}.row .col.col--offset-11{margin-left:91.66667%}.row .col.col--12{--ifm-col-width:100%;flex:0 0 var(--ifm-col-width);max-width:var(--ifm-col-width)}.row .col.col--offset-12{margin-left:100%}.row--no-gutters{margin-left:0;margin-right:0}.margin-horiz--none,.margin-left--none{margin-left:0!important}.margin-horiz--none,.margin-right--none{margin-right:0!important}.row--no-gutters>.col{padding-left:0;padding-right:0}.row--align-top{align-items:flex-start}.row--align-bottom{align-items:flex-end}.row--align-center{align-items:center}.row--align-stretch{align-items:stretch}.row--align-baseline{align-items:baseline}.margin--none{margin:0!important}.margin-bottom--xs,.margin-vert--xs{margin-bottom:.25rem!important}.margin-top--xs,.margin-vert--xs{margin-top:.25rem!important}.margin-horiz--xs,.margin-left--xs{margin-left:.25rem!important}.margin-horiz--xs,.margin-right--xs{margin-right:.25rem!important}.margin--xs{margin:.25rem!important}.margin-bottom--sm,.margin-vert--sm{margin-bottom:.5rem!important}.margin-top--sm,.margin-vert--sm{margin-top:.5rem!important}.margin-horiz--sm,.margin-left--sm{margin-left:.5rem!important}.margin-horiz--sm,.margin-right--sm{margin-right:.5rem!important}.margin--sm{margin:.5rem!important}.margin-bottom--md,.margin-vert--md{margin-bottom:1rem!important}.margin-top--md,.margin-vert--md{margin-top:1rem!important}.margin-horiz--md,.margin-left--md{margin-left:1rem!important}.margin-horiz--md,.margin-right--md{margin-right:1rem!important}.margin--md{margin:1rem!important}.margin-bottom--lg,.margin-vert--lg{margin-bottom:2rem!important}.margin-top--lg,.margin-vert--lg{margin-top:2rem!important}.margin-horiz--lg,.margin-left--lg{margin-left:2rem!important}.margin-horiz--lg,.margin-right--lg{margin-right:2rem!important}.margin--lg{margin:2rem!important}.margin-bottom--xl,.margin-vert--xl{margin-bottom:5rem!important}.margin-top--xl,.margin-vert--xl{margin-top:5rem!important}.margin-horiz--xl,.margin-left--xl{margin-left:5rem!important}.margin-horiz--xl,.margin-right--xl{margin-right:5rem!important}.margin--xl{margin:5rem!important}.padding--none{padding:0!important}.padding-bottom--xs,.padding-vert--xs{padding-bottom:.25rem!important}.padding-top--xs,.padding-vert--xs{padding-top:.25rem!important}.padding-horiz--xs,.padding-left--xs{padding-left:.25rem!important}.padding-horiz--xs,.padding-right--xs{padding-right:.25rem!important}.padding--xs{padding:.25rem!important}.padding-bottom--sm,.padding-vert--sm{padding-bottom:.5rem!important}.padding-top--sm,.padding-vert--sm{padding-top:.5rem!important}.padding-horiz--sm,.padding-left--sm{padding-left:.5rem!important}.padding-horiz--sm,.padding-right--sm{padding-right:.5rem!important}.padding--sm{padding:.5rem!important}.padding-bottom--md,.padding-vert--md{padding-bottom:1rem!important}.padding-top--md,.padding-vert--md{padding-top:1rem!important}.padding-horiz--md,.padding-left--md{padding-left:1rem!important}.padding-horiz--md,.padding-right--md{padding-right:1rem!important}.padding--md{padding:1rem!important}.padding-bottom--lg,.padding-vert--lg{padding-bottom:2rem!important}.padding-top--lg,.padding-vert--lg{padding-top:2rem!important}.padding-horiz--lg,.padding-left--lg{padding-left:2rem!important}.padding-horiz--lg,.padding-right--lg{padding-right:2rem!important}.padding--lg{padding:2rem!important}.padding-bottom--xl,.padding-vert--xl{padding-bottom:5rem!important}.padding-top--xl,.padding-vert--xl{padding-top:5rem!important}.padding-horiz--xl,.padding-left--xl{padding-left:5rem!important}.padding-horiz--xl,.padding-right--xl{padding-right:5rem!important}.padding--xl{padding:5rem!important}code{background-color:var(--ifm-code-background);border:.1rem solid rgba(0,0,0,.1);border-radius:var(--ifm-code-border-radius);font-family:var(--ifm-font-family-monospace);font-size:var(--ifm-code-font-size);padding:var(--ifm-code-padding-vertical) var(--ifm-code-padding-horizontal)}a code{color:inherit}pre{background-color:var(--ifm-pre-background);border-radius:var(--ifm-pre-border-radius);color:var(--ifm-pre-color);font:var(--ifm-code-font-size)/var(--ifm-pre-line-height) var(--ifm-font-family-monospace);padding:var(--ifm-pre-padding)}pre code{background-color:transparent;border:none;font-size:100%;line-height:inherit;padding:0}kbd{background-color:var(--ifm-color-emphasis-0);border:1px solid var(--ifm-color-emphasis-400);border-radius:.2rem;box-shadow:inset 0 -1px 0 var(--ifm-color-emphasis-400);color:var(--ifm-color-emphasis-800);font:80% var(--ifm-font-family-monospace);padding:.15rem .3rem}h1,h2,h3,h4,h5,h6{color:var(--ifm-heading-color);font-family:var(--ifm-heading-font-family);font-weight:var(--ifm-heading-font-weight);line-height:var(--ifm-heading-line-height);margin:var(--ifm-heading-margin-top) 0 var(--ifm-heading-margin-bottom) 0}h1{font-size:var(--ifm-h1-font-size)}h2{font-size:var(--ifm-h2-font-size)}h3{font-size:var(--ifm-h3-font-size)}h4{font-size:var(--ifm-h4-font-size)}h5{font-size:var(--ifm-h5-font-size)}h6{font-size:var(--ifm-h6-font-size)}img[align=right]{padding-left:var(--image-alignment-padding)}img[align=left]{padding-right:var(--image-alignment-padding)}.markdown{--ifm-h1-vertical-rhythm-top:3;--ifm-h2-vertical-rhythm-top:2;--ifm-h3-vertical-rhythm-top:1.5;--ifm-heading-vertical-rhythm-top:1.25;--ifm-h1-vertical-rhythm-bottom:1.25;--ifm-heading-vertical-rhythm-bottom:1}.markdown:after,.markdown:before{content:"";display:table}.markdown:after{clear:both}.markdown>h1{--ifm-h1-font-size:3rem;margin-bottom:calc(var(--ifm-h1-vertical-rhythm-bottom)*var(--ifm-leading));margin-top:calc(var(--ifm-h1-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h2,.markdown>h3,.markdown>h4,.markdown>h5,.markdown>h6{margin-bottom:calc(var(--ifm-heading-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown>h2{--ifm-h2-font-size:2rem;margin-top:calc(var(--ifm-h2-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h3{--ifm-h3-font-size:1.5rem;margin-top:calc(var(--ifm-h3-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h4,.markdown>h5,.markdown>h6{margin-top:calc(var(--ifm-heading-vertical-rhythm-top)*var(--ifm-leading))}.markdown>p,.markdown>pre,.markdown>ul{margin-bottom:var(--ifm-leading)}.markdown li>p{margin-top:var(--ifm-list-paragraph-margin)}.markdown li+li{margin-top:var(--ifm-list-item-margin)}ol,ul{margin:0 0 var(--ifm-list-margin);padding-left:var(--ifm-list-left-padding)}ol ol,ul ol{list-style-type:lower-roman}ol ol ol,ol ul ol,ul ol ol,ul ul ol{list-style-type:lower-alpha}table{border-collapse:collapse;display:block;margin-bottom:var(--ifm-spacing-vertical)}table thead tr{border-bottom:2px solid var(--ifm-table-border-color)}table tr{background-color:var(--ifm-table-background);border-top:var(--ifm-table-border-width) solid var(--ifm-table-border-color)}table tr:nth-child(2n){background-color:var(--ifm-table-stripe-background)}table td,table th{border:var(--ifm-table-border-width) solid var(--ifm-table-border-color);padding:var(--ifm-table-cell-padding)}table th{background-color:var(--ifm-table-head-background);color:var(--ifm-table-head-color);font-weight:var(--ifm-table-head-font-weight)}table td{color:var(--ifm-table-cell-color)}strong{font-weight:var(--ifm-font-weight-bold)}a{color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration);transition:color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}a:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.breadcrumbs__link:hover,.button:hover,.text--no-decoration,.text--no-decoration:hover,a:not([href]){text-decoration:none}p{margin:0 0 var(--ifm-paragraph-margin-bottom)}blockquote{--ifm-code-background:rgba(235,237,240,0.15);--ifm-link-color:var(--ifm-blockquote-foreground-color);--ifm-link-hover-color:var(--ifm-blockquote-foreground-color);background-color:var(--ifm-blockquote-background-color);border-left-width:0;border:0 solid var(--ifm-blockquote-border-color);border-left:var(--ifm-blockquote-border-left-width) solid var(--ifm-blockquote-border-color);box-shadow:var(--ifm-blockquote-shadow);color:var(--ifm-blockquote-foreground-color);font-size:var(--ifm-blockquote-font-size);padding:var(--ifm-blockquote-padding-vertical) var(--ifm-blockquote-padding-horizontal)}blockquote>:first-child{margin-top:0}blockquote>:last-child{margin-bottom:0}blockquote a{-webkit-text-decoration-color:var(--ifm-blockquote-border-color);text-decoration-color:var(--ifm-blockquote-border-color)}hr{border:var(--ifm-hr-border-width) solid var(--ifm-hr-border-color);margin:var(--ifm-hr-margin-vertical) 0}.shadow--lw{box-shadow:var(--ifm-global-shadow-lw)!important}.shadow--md{box-shadow:var(--ifm-global-shadow-md)!important}.shadow--tl{box-shadow:var(--ifm-global-shadow-tl)!important}.sidebarItemLinkActive_12pM,.text--primary{color:var(--ifm-color-primary)}.text--secondary{color:var(--ifm-color-secondary)}.text--success{color:var(--ifm-color-success)}.text--info{color:var(--ifm-color-info)}.text--warning{color:var(--ifm-color-warning)}.text--danger{color:var(--ifm-color-danger)}.text--center{text-align:center}.text--left{text-align:left}.text--justify{text-align:justify}.text--right{text-align:right}.text--capitalize{text-transform:capitalize}.text--lowercase{text-transform:lowercase}.admonition h5,.alert__heading,.text--uppercase{text-transform:uppercase}.text--light{font-weight:var(--ifm-font-weight-light)}.text--normal{font-weight:var(--ifm-font-weight-normal)}.text--semibold{font-weight:var(--ifm-font-weight-semibold)}.text--bold{font-weight:var(--ifm-font-weight-bold)}.text--italic{font-style:italic}.text--break{word-wrap:break-word!important;word-break:break-word!important}.clean-btn{background:none;border:none;color:inherit;cursor:pointer;padding:0}.alert,.alert .close{color:var(--ifm-alert-foreground-color)}.alert--primary{--ifm-alert-background-color:var( - --ifm-color-primary-contrast-background - );--ifm-alert-background-color-highlight:rgba(53,120,229,0.15);--ifm-alert-foreground-color:var( - --ifm-color-primary-contrast-foreground - );--ifm-alert-border-color:var(--ifm-color-primary-dark)}.alert--secondary{--ifm-alert-background-color:var( - --ifm-color-secondary-contrast-background - );--ifm-alert-background-color-highlight:rgba(235,237,240,0.15);--ifm-alert-foreground-color:var( - --ifm-color-secondary-contrast-foreground - );--ifm-alert-border-color:var(--ifm-color-secondary-dark)}.alert--success{--ifm-alert-background-color:var( - --ifm-color-success-contrast-background - );--ifm-alert-background-color-highlight:rgba(0,164,0,0.15);--ifm-alert-foreground-color:var( - --ifm-color-success-contrast-foreground - );--ifm-alert-border-color:var(--ifm-color-success-dark)}.alert--info{--ifm-alert-background-color:var( - --ifm-color-info-contrast-background - );--ifm-alert-background-color-highlight:rgba(84,199,236,0.15);--ifm-alert-foreground-color:var( - --ifm-color-info-contrast-foreground - );--ifm-alert-border-color:var(--ifm-color-info-dark)}.alert--warning{--ifm-alert-background-color:var( - --ifm-color-warning-contrast-background - );--ifm-alert-background-color-highlight:rgba(255,186,0,0.15);--ifm-alert-foreground-color:var( - --ifm-color-warning-contrast-foreground - );--ifm-alert-border-color:var(--ifm-color-warning-dark)}.alert--danger{--ifm-alert-background-color:var( - --ifm-color-danger-contrast-background - );--ifm-alert-background-color-highlight:rgba(250,56,62,0.15);--ifm-alert-foreground-color:var( - --ifm-color-danger-contrast-foreground - );--ifm-alert-border-color:var(--ifm-color-danger-dark)}.alert{--ifm-code-background:var(--ifm-alert-background-color-highlight);--ifm-link-color:var(--ifm-alert-foreground-color);--ifm-link-hover-color:var(--ifm-alert-foreground-color);--ifm-tabs-color:var(--ifm-alert-foreground-color);--ifm-tabs-color-active:var(--ifm-alert-foreground-color);--ifm-tabs-color-active-border:var(--ifm-alert-border-color);background-color:var(--ifm-alert-background-color);border-left-width:var(--ifm-alert-border-width);border:var(--ifm-alert-border-width) solid var(--ifm-alert-border-color);border-left:var(--ifm-alert-border-left-width) solid var(--ifm-alert-border-color);border-radius:var(--ifm-alert-border-radius);box-shadow:var(--ifm-alert-shadow);padding:var(--ifm-alert-padding-vertical) var(--ifm-alert-padding-horizontal)}.alert__heading{align-items:center;display:flex;font:700 var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family);margin-bottom:.5rem}.alert__icon{display:inline-flex;margin-right:.4em}.alert__icon svg{stroke:var(--ifm-alert-foreground-color);stroke-width:0}.alert .close{margin:calc(var(--ifm-alert-padding-vertical)*-1) calc(var(--ifm-alert-padding-horizontal)*-1) 0 0;opacity:.75}.alert .close:focus,.alert .close:hover{opacity:1}.alert a{-webkit-text-decoration-color:var(--ifm-alert-border-color);text-decoration-color:var(--ifm-alert-border-color)}.avatar,.navbar,.navbar>.container,.navbar>.container-fluid{display:flex}.avatar__photo-link,.tocCollapsibleContent_2Ydz a{display:block}.avatar__photo{border-radius:50%;height:var(--ifm-avatar-photo-size-md);width:var(--ifm-avatar-photo-size-md)}.avatar__photo--sm{height:var(--ifm-avatar-photo-size-sm);width:var(--ifm-avatar-photo-size-sm)}.avatar__photo--lg{height:var(--ifm-avatar-photo-size-lg);width:var(--ifm-avatar-photo-size-lg)}.avatar__photo--xl{height:var(--ifm-avatar-photo-size-xl);width:var(--ifm-avatar-photo-size-xl)}.avatar__photo+.avatar__intro{margin-left:var(--ifm-avatar-intro-margin)}.avatar__intro{display:flex;flex:1 1;flex-direction:column;justify-content:center;text-align:var(--ifm-avatar-intro-alignment)}.badge,.breadcrumbs__item,.breadcrumbs__link,.button,.dropdown>.navbar__link:after,.menu__link--sublist:after{display:inline-block}.avatar__name{font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base)}.avatar__subtitle{margin-top:.25rem}.avatar--vertical{--ifm-avatar-intro-alignment:center;--ifm-avatar-intro-margin:0.5rem;align-items:center;flex-direction:column}.avatar--vertical .avatar__intro{margin-left:0}.badge{background-color:var(--ifm-badge-background-color);border:var(--ifm-badge-border-width) solid var(--ifm-badge-border-color);border-radius:var(--ifm-badge-border-radius);color:var(--ifm-badge-color);font-size:75%;font-weight:var(--ifm-font-weight-bold);line-height:1;padding:var(--ifm-badge-padding-vertical) var(--ifm-badge-padding-horizontal)}.badge--primary{--ifm-badge-background-color:var(--ifm-color-primary)}.badge--secondary{--ifm-badge-background-color:var(--ifm-color-secondary);color:var(--ifm-color-black)}.badge--success{--ifm-badge-background-color:var(--ifm-color-success)}.badge--info{--ifm-badge-background-color:var(--ifm-color-info)}.badge--warning{--ifm-badge-background-color:var(--ifm-color-warning)}.badge--danger{--ifm-badge-background-color:var(--ifm-color-danger)}.breadcrumbs{margin-bottom:0;padding-left:0}.breadcrumbs__item:not(:first-child){margin-left:var(--ifm-breadcrumb-spacing)}.breadcrumbs__item:not(:last-child){margin-right:var(--ifm-breadcrumb-spacing)}.breadcrumbs__item:not(:last-child):after{background:var(--ifm-breadcrumb-separator) center;content:" ";display:inline-block;filter:var(--ifm-breadcrumb-separator-filter);height:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier));margin:0 .5rem;opacity:.5;width:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier))}.breadcrumbs__item--active .breadcrumbs__link{color:var(--ifm-breadcrumb-color-active)}.breadcrumbs__item--active .breadcrumbs__link,.breadcrumbs__item:not(.breadcrumbs__item--active):hover .breadcrumbs__link{background:var(--ifm-breadcrumb-item-background-active)}.breadcrumbs__link{border-radius:var(--ifm-breadcrumb-border-radius);color:var(--ifm-font-color-base);font-size:calc(1rem*var(--ifm-breadcrumb-size-multiplier));padding:calc(var(--ifm-breadcrumb-padding-vertical)*var(--ifm-breadcrumb-size-multiplier)) calc(var(--ifm-breadcrumb-padding-horizontal)*var(--ifm-breadcrumb-size-multiplier));transition-duration:var(--ifm-transition-fast);transition-property:background,color}.breadcrumbs--sm{--ifm-breadcrumb-size-multiplier:0.8}.breadcrumbs--lg{--ifm-breadcrumb-size-multiplier:1.2}.button{background-color:var(--ifm-button-background-color);border:var(--ifm-button-border-width) solid var(--ifm-button-border-color);border-radius:var(--ifm-button-border-radius);cursor:pointer;font-size:calc(.875rem*var(--ifm-button-size-multiplier));font-weight:var(--ifm-button-font-weight);line-height:1.5;padding:calc(var(--ifm-button-padding-vertical)*var(--ifm-button-size-multiplier)) calc(var(--ifm-button-padding-horizontal)*var(--ifm-button-size-multiplier));text-align:center;transition-duration:var(--ifm-button-transition-duration);transition-property:color,background,border-color;-webkit-user-select:none;-ms-user-select:none;user-select:none}.copyButton_Ue-o,.react-toggle{-webkit-user-select:none;-ms-user-select:none}.button,.button:hover{color:var(--ifm-button-color)}.button--outline{--ifm-button-color:var(--ifm-button-border-color)}.button--outline:hover{--ifm-button-background-color:var(--ifm-button-border-color)}.button--link{--ifm-button-border-color:transparent;color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}.button--link.button--active,.button--link:active,.button--link:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.button.disabled,.button:disabled,.button[disabled]{opacity:.65;pointer-events:none}.button--sm{--ifm-button-size-multiplier:0.8}.button--lg{--ifm-button-size-multiplier:1.35}.button--block,.furion-contributor-item img{display:block;width:100%}.button.button--secondary{color:var(--ifm-color-gray-900)}.button.button--secondary.button--outline:not(.button--active):not(:hover),.sidebarItemLink_1RT6{color:var(--ifm-font-color-base)}.button--primary{--ifm-button-border-color:var(--ifm-color-primary)}.button--primary:not(.button--outline){--ifm-button-background-color:var(--ifm-color-primary)}.button--primary:not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-primary-dark);--ifm-button-border-color:var(--ifm-color-primary-dark)}.button--primary.button--active,.button--primary:active{--ifm-button-border-color:var(--ifm-color-primary-darker);--ifm-button-background-color:var(--ifm-color-primary-darker);background-color:var(--ifm-color-primary-darker);border-color:var(--ifm-color-primary-darker)}.button--secondary{--ifm-button-border-color:var(--ifm-color-secondary)}.button--secondary:not(.button--outline){--ifm-button-background-color:var(--ifm-color-secondary)}.button--secondary:not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-secondary-dark);--ifm-button-border-color:var(--ifm-color-secondary-dark)}.button--secondary.button--active,.button--secondary:active{--ifm-button-border-color:var(--ifm-color-secondary-darker);--ifm-button-background-color:var(--ifm-color-secondary-darker);background-color:var(--ifm-color-secondary-darker);border-color:var(--ifm-color-secondary-darker)}.button--success{--ifm-button-border-color:var(--ifm-color-success)}.button--success:not(.button--outline){--ifm-button-background-color:var(--ifm-color-success)}.button--success:not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-success-dark);--ifm-button-border-color:var(--ifm-color-success-dark)}.button--success.button--active,.button--success:active{--ifm-button-border-color:var(--ifm-color-success-darker);--ifm-button-background-color:var(--ifm-color-success-darker);background-color:var(--ifm-color-success-darker);border-color:var(--ifm-color-success-darker)}.button--info{--ifm-button-border-color:var(--ifm-color-info)}.button--info:not(.button--outline){--ifm-button-background-color:var(--ifm-color-info)}.button--info:not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-info-dark);--ifm-button-border-color:var(--ifm-color-info-dark)}.button--info.button--active,.button--info:active{--ifm-button-border-color:var(--ifm-color-info-darker);--ifm-button-background-color:var(--ifm-color-info-darker);background-color:var(--ifm-color-info-darker);border-color:var(--ifm-color-info-darker)}.button--warning{--ifm-button-border-color:var(--ifm-color-warning)}.button--warning:not(.button--outline){--ifm-button-background-color:var(--ifm-color-warning)}.button--warning:not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-warning-dark);--ifm-button-border-color:var(--ifm-color-warning-dark)}.button--warning.button--active,.button--warning:active{--ifm-button-border-color:var(--ifm-color-warning-darker);--ifm-button-background-color:var(--ifm-color-warning-darker);background-color:var(--ifm-color-warning-darker);border-color:var(--ifm-color-warning-darker)}.button--danger{--ifm-button-border-color:var(--ifm-color-danger)}.button--danger:not(.button--outline){--ifm-button-background-color:var(--ifm-color-danger)}.button--danger:not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-danger-dark);--ifm-button-border-color:var(--ifm-color-danger-dark)}.button--danger.button--active,.button--danger:active{--ifm-button-border-color:var(--ifm-color-danger-darker);--ifm-button-background-color:var(--ifm-color-danger-darker);background-color:var(--ifm-color-danger-darker);border-color:var(--ifm-color-danger-darker)}.button-group{display:inline-flex}.button-group>.button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0;margin-left:var(--ifm-button-group-margin)}.button-group>.button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.button-group>.button--active{z-index:1}.button-group--block{display:flex;justify-content:stretch}.button-group--block>.button{flex-grow:1}.card{background-color:var(--ifm-card-background-color);border-radius:var(--ifm-card-border-radius);box-shadow:var(--ifm-global-shadow-lw);display:flex;flex-direction:column}.card--full-height,body,html{height:100%}.card__image{padding-top:var(--ifm-card-vertical-spacing)}.card__image:first-child{padding-top:0}.card__body,.card__footer,.card__header{padding:var(--ifm-card-vertical-spacing) var(--ifm-card-horizontal-spacing)}.card__body:not(:last-child),.card__footer:not(:last-child),.card__header:not(:last-child){padding-bottom:0}.admonition-content>:last-child,.card__body>:last-child,.card__footer>:last-child,.card__header>:last-child{margin-bottom:0}.card__footer{margin-top:auto}.table-of-contents{font-size:.8rem;margin-bottom:0;padding:var(--ifm-toc-padding-vertical) 0}.table-of-contents,.table-of-contents ul{list-style-type:none;padding-left:var(--ifm-toc-padding-horizontal)}.table-of-contents li{margin:var(--ifm-toc-padding-vertical) var(--ifm-toc-padding-horizontal)}.table-of-contents__left-border{border-left:1px solid var(--ifm-toc-border-color)}.table-of-contents__link{color:var(--ifm-toc-link-color)}.table-of-contents__link--active,.table-of-contents__link--active code,.table-of-contents__link:hover,.table-of-contents__link:hover code{color:var(--ifm-color-primary);text-decoration:none}.close{color:var(--ifm-color-black);float:right;font-size:1.5rem;font-weight:var(--ifm-font-weight-bold);line-height:1;opacity:.5;padding:1rem;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.dropdown__menu,.menu__link,.menu__link:hover{transition-duration:var(--ifm-transition-fast);transition-timing-function:var(--ifm-transition-timing-default)}.close:hover{opacity:.7}.backToTopButton_35hR:hover,.close:focus{opacity:.8}.dropdown{display:inline-flex;font-weight:var(--ifm-dropdown-font-weight);position:relative;vertical-align:top}.admonition-icon,.furion-gitee-star,.sidebarMenuIcon_fgN0{vertical-align:middle}.dropdown--hoverable:hover .dropdown__menu,.dropdown--show .dropdown__menu{opacity:1;transform:translateY(0);visibility:visible}.dropdown--right .dropdown__menu{right:0}.dropdown--nocaret .navbar__link:after{content:none!important}.dropdown__menu{background-color:var(--ifm-dropdown-background-color);border-radius:var(--ifm-global-radius);box-shadow:var(--ifm-global-shadow-md);list-style:none;max-height:calc(100vh - var(--ifm-navbar-height));min-width:10rem;opacity:0;overflow-y:auto;padding:.5rem;position:absolute;top:100%;transform:translateY(-10px);transition-property:opacity,transform,visibility;visibility:hidden;z-index:var(--ifm-z-index-dropdown)}.dropdown__link{border-radius:.25rem;color:var(--ifm-dropdown-link-color);display:block;font-size:.875rem;margin-top:.2rem;padding:.25rem .5rem}.dropdown__link--active,.dropdown__link:hover{background-color:var(--ifm-dropdown-hover-background-color);color:var(--ifm-dropdown-link-color);text-decoration:none}.dropdown__link--active,.dropdown__link--active:hover{--ifm-dropdown-link-color:var(--ifm-link-color)}.dropdown>.navbar__link:after{border-color:currentcolor transparent;border-style:solid;border-width:.4em .4em 0;content:"";margin-left:.3em;position:relative;top:2px;transform:translateY(-50%)}.footer{background-color:var(--ifm-footer-background-color);color:var(--ifm-footer-color);padding:var(--ifm-footer-padding-vertical) var(--ifm-footer-padding-horizontal)}.navbar__item.dropdown,[type=checkbox]{padding:0}.footer--dark{--ifm-footer-background-color:#303846;--ifm-footer-color:var(--ifm-footer-link-color);--ifm-footer-link-color:var(--ifm-color-secondary);--ifm-footer-title-color:var(--ifm-color-white)}.footer__links{margin-bottom:1rem}.footer__link-item{color:var(--ifm-footer-link-color);line-height:2}.footer__link-item:hover{color:var(--ifm-footer-link-hover-color)}.footer__link-separator{margin:0 var(--ifm-footer-link-horizontal-spacing)}.footer__logo{margin-top:1rem;max-width:10rem}.footer__title{color:var(--ifm-footer-title-color);font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base);margin-bottom:var(--ifm-heading-margin-bottom)}.footer__item{margin-top:0}.footer__items{list-style-type:none;margin-bottom:0;padding-left:0}.hero{align-items:center;background-color:var(--ifm-hero-background-color);color:var(--ifm-hero-text-color);display:flex;padding:4rem 2rem}.hero--primary{--ifm-hero-background-color:var(--ifm-color-primary);--ifm-hero-text-color:var(--ifm-font-color-base-inverse)}.hero--dark{--ifm-hero-background-color:#303846;--ifm-hero-text-color:var(--ifm-color-white)}.blogPostTitle_GeHD,.hero__title{font-size:3rem}.hero__subtitle{font-size:1.5rem}.menu{font-weight:var(--ifm-font-weight-semibold);overflow-x:hidden}.menu__list{list-style-type:none;margin:0;padding-left:0}.menu__list .menu__list{margin-left:var(--ifm-menu-link-padding-horizontal)}.menu__list-item:not(:first-child){margin-top:.25rem}.menu__list-item--collapsed .menu__list{height:0;overflow:hidden}.menu__link--sublist:after,.tocCollapsibleButton_2O1e:after{filter:var(--ifm-menu-link-sublist-icon-filter);height:1.25rem}.details_2Ziz[data-collapsed=false].isClient_1Fil>summary:before,.details_2Ziz[open]:not(.isClient_1Fil)>summary:before,.menu__list-item--collapsed .menu__link--sublist:after{transform:rotate(90deg)}.menu__link{border-radius:.25rem;display:flex;justify-content:space-between;line-height:1.25;padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal);position:relative}.menu__link,.menu__link:hover{color:var(--ifm-menu-color);transition-property:color,background}.navbar-sidebar,.navbar-sidebar__backdrop{bottom:0;opacity:0;transition-timing-function:ease-in-out;visibility:hidden;left:0;top:0}.menu__link:hover{background:var(--ifm-menu-color-background-hover);text-decoration:none}.menu__link--sublist{margin-bottom:.25rem}.menu__link--sublist:after{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem;content:" ";min-width:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast) linear}.menu__link--active,.menu__link--active:hover{color:var(--ifm-menu-color-active)}.navbar__brand,.navbar__link{color:var(--ifm-navbar-link-color)}.menu__link--active:not(.menu__link--sublist){background:var(--ifm-menu-color-background-active)}.navbar--dark,html[data-theme=dark]{--ifm-menu-link-sublist-icon-filter:invert(100%) sepia(94%) saturate(17%) hue-rotate(223deg) brightness(104%) contrast(98%)}.navbar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-navbar-shadow);height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.navbar__item,.navbar__link{padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.navbar--fixed-top{position:sticky;top:0;z-index:var(--ifm-z-index-fixed)}.navbar__inner{display:flex;flex-wrap:wrap;justify-content:space-between;width:100%}.navbar__brand{align-items:center;display:flex;font-weight:700;height:2rem;margin-right:1rem;min-width:0}.navbar__brand:hover{color:inherit;text-decoration:none}.navbar__title{flex:1 1 auto;overflow:hidden}.navbar__toggle{display:none;margin-right:.5rem}.navbar__logo{height:100%;margin-right:.5rem}.navbar__items{align-items:center;display:flex;flex:1;min-width:0}.navbar__items--center{flex:0 0 auto}.navbar__items--center .navbar__brand{margin:0}.furion-banner-item,.navbar__items--center+.navbar__items--right{flex:1}.navbar__items--right{flex:0 0 auto;justify-content:flex-end}.navbar__items--right>:last-child{padding-right:0}.navbar__item{display:inline-block}#nprogress,.navbar__item.dropdown .navbar__link:not([href]){pointer-events:none}.navbar__link{font-weight:var(--ifm-font-weight-semibold)}.navbar__link--active,.navbar__link:hover{color:var(--ifm-navbar-link-hover-color);text-decoration:none}.navbar--dark{--ifm-navbar-background-color:#242526;--ifm-navbar-link-color:var(--ifm-color-gray-100);--ifm-navbar-search-input-color:var(--ifm-color-white);--ifm-menu-color:var(--ifm-color-gray-300);--ifm-navbar-toggle-color:var(--ifm-color-white)}.navbar--dark .navbar__toggle{color:var(--ifm-color-white)}.navbar--primary{--ifm-navbar-background-color:var(--ifm-color-primary);--ifm-navbar-link-hover-color:var(--ifm-color-white);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-500)}.navbar__search-input{-webkit-appearance:none;appearance:none;background:var(--ifm-navbar-search-input-background-color) var(--ifm-navbar-search-input-icon) no-repeat .75rem center/1rem 1rem;border:none;border-radius:2rem;color:var(--ifm-navbar-search-input-color);cursor:text;display:inline-block;font-size:.9rem;height:2rem;padding:0 .5rem 0 2.25rem;width:12.5rem}.navbar__search-input:-ms-input-placeholder{color:var(--ifm-navbar-search-input-placeholder-color)}.navbar__search-input::placeholder{color:var(--ifm-navbar-search-input-placeholder-color)}.navbar-sidebar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-global-shadow-md);overflow-x:hidden;position:fixed;transform:translate3d(-100%,0,0);transition-duration:.25s;transition-property:opacity,visibility,transform;width:var(--ifm-navbar-sidebar-width)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar__items{transform:translateZ(0)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar--show .navbar-sidebar__backdrop{opacity:1;visibility:visible}.navbar-sidebar__backdrop{background-color:rgba(0,0,0,.6);position:fixed;right:0;transition-duration:.1s;transition-property:opacity,visibility}.navbar-sidebar__brand{align-items:center;box-shadow:var(--ifm-navbar-shadow);display:flex;flex:1;height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.navbar-sidebar__items{display:flex;height:calc(100% - var(--ifm-navbar-height));transition:transform var(--ifm-transition-fast) ease-in-out}.pagination__item,.pagination__link{display:inline-block}.navbar-sidebar__items--show-secondary{transform:translate3d(calc(var(--ifm-navbar-sidebar-width)*-1),0,0)}.navbar-sidebar__item{flex-shrink:0;padding:.5rem;width:calc(var(--ifm-navbar-sidebar-width))}.navbar-sidebar__item--secondary{padding-top:0}.navbar-sidebar__back{background:var(--ifm-menu-color-background-active);font-size:15px;font-weight:var(--ifm-button-font-weight);margin:0 0 .7rem -.5rem;padding:.6rem 1.5rem;text-align:left;width:calc(100% + 1rem)}.pagination{font-size:var(--ifm-pagination-font-size);padding-left:0}.pagination--sm{--ifm-pagination-font-size:0.8rem;--ifm-pagination-padding-horizontal:0.8rem;--ifm-pagination-padding-vertical:0.2rem}.pagination--lg{--ifm-pagination-font-size:1.2rem;--ifm-pagination-padding-horizontal:1.2rem;--ifm-pagination-padding-vertical:0.3rem}.pagination__item:not(:first-child){margin-left:var(--ifm-pagination-page-spacing)}.pagination__item:not(:last-child){margin-right:var(--ifm-pagination-page-spacing)}.pagination__item>span{padding:var(--ifm-pagination-padding-vertical)}.pagination__item--active .pagination__link{color:var(--ifm-pagination-color-active)}.pagination__item--active .pagination__link,.pagination__item:not(.pagination__item--active):hover .pagination__link{background:var(--ifm-pagination-item-active-background)}.pagination__item--disabled,.pagination__item[disabled]{opacity:.25;pointer-events:none}.pagination__link{border-radius:var(--ifm-pagination-border-radius);color:var(--ifm-font-color-base);padding:var(--ifm-pagination-padding-vertical) var(--ifm-pagination-padding-horizontal);transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination__link:hover,.sidebarItemLink_1RT6:hover{text-decoration:none}.pagination-nav{display:flex}.pagination-nav__item{display:flex;flex:1 50%;max-width:50%}.pagination-nav__item--next{text-align:right}.pagination-nav__item+.pagination-nav__item{margin-left:var(--ifm-spacing-horizontal)}.pagination-nav__link{border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-pagination-nav-border-radius);flex-grow:1;line-height:var(--ifm-heading-line-height);padding:var(--ifm-global-spacing);transition:border-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination-nav__link:hover{border-color:var(--ifm-pagination-nav-color-hover);text-decoration:none}.pagination-nav__label{font-size:var(--ifm-h4-font-size);font-weight:var(--ifm-heading-font-weight);word-break:break-word}.pagination-nav__sublabel{color:var(--ifm-color-content-secondary);font-size:var(--ifm-h5-font-size);font-weight:var(--ifm-font-weight-semibold);margin-bottom:.25rem}.pills,.sidebarItemTitle_2hhb,.sidebarMenuCloseIcon_1lpH,.tabs{font-weight:var(--ifm-font-weight-bold)}.pills{padding-left:0}.pills__item{border-radius:.5rem;cursor:pointer;display:inline-block;padding:.25rem 1rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pills__item--active{background:var(--ifm-pills-color-background-active);color:var(--ifm-pills-color-active)}.pills__item:not(.pills__item--active):hover{background-color:var(--ifm-pills-color-background-active)}.pills__item:not(:first-child){margin-left:var(--ifm-pills-spacing)}.pills__item:not(:last-child){margin-right:var(--ifm-pills-spacing)}.docItemContainer_33ec article :first-child,.docItemContainer_33ec header+*,.pills__item+.pills__item{margin-top:0}.pills--block{display:flex;justify-content:stretch}.pills--block .pills__item{flex-grow:1;text-align:center}.tabs{color:var(--ifm-tabs-color);display:flex;margin-bottom:0;overflow-x:auto;padding-left:0}.tabs__item{border-bottom:3px solid transparent;border-radius:var(--ifm-global-radius);cursor:pointer;display:inline-flex;padding:var(--ifm-tabs-padding-vertical) var(--ifm-tabs-padding-horizontal);transition:background-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.tabs__item--active{border-bottom-color:var(--ifm-tabs-color-active-border);border-bottom-left-radius:0;border-bottom-right-radius:0;color:var(--ifm-tabs-color-active)}.tabs__item:hover{background-color:var(--ifm-hover-overlay)}.tabs--block{justify-content:stretch}.tabs--block .tabs__item{flex-grow:1;justify-content:center}html[data-theme=dark]{--ifm-color-scheme:dark;--ifm-color-emphasis-0:var(--ifm-color-gray-1000);--ifm-color-emphasis-100:var(--ifm-color-gray-900);--ifm-color-emphasis-200:var(--ifm-color-gray-800);--ifm-color-emphasis-300:var(--ifm-color-gray-700);--ifm-color-emphasis-400:var(--ifm-color-gray-600);--ifm-color-emphasis-600:var(--ifm-color-gray-400);--ifm-color-emphasis-700:var(--ifm-color-gray-300);--ifm-color-emphasis-800:var(--ifm-color-gray-200);--ifm-color-emphasis-900:var(--ifm-color-gray-100);--ifm-color-emphasis-1000:var(--ifm-color-gray-0);--ifm-background-color:#18191a;--ifm-background-surface-color:#242526;--ifm-hover-overlay:hsla(0,0%,100%,0.05);--ifm-color-content-secondary:#fff;--ifm-breadcrumb-separator-filter:invert(64%) sepia(11%) saturate(0%) hue-rotate(149deg) brightness(99%) contrast(95%);--ifm-code-background:#333437;--ifm-blockquote-background-color:#4d4523;--ifm-scrollbar-track-background-color:#444;--ifm-scrollbar-thumb-background-color:#686868;--ifm-scrollbar-thumb-hover-background-color:#7a7a7a;--ifm-color-primary-contrast-background:#102445;--ifm-color-primary-contrast-foreground:#ebf2fc;--ifm-color-secondary-contrast-background:#474748;--ifm-color-secondary-contrast-foreground:#fdfdfe;--ifm-color-success-contrast-background:#003100;--ifm-color-success-contrast-foreground:#e6f6e6;--ifm-color-info-contrast-background:#193c47;--ifm-color-info-contrast-foreground:#eef9fd;--ifm-color-warning-contrast-background:#4d3800;--ifm-color-warning-contrast-foreground:#fff8e6;--ifm-color-danger-contrast-background:#4b1113;--ifm-color-danger-contrast-foreground:#ffebec;--docsearch-text-color:#f5f6f7;--docsearch-container-background:rgba(9,10,17,0.8);--docsearch-modal-background:#15172a;--docsearch-modal-shadow:inset 1px 1px 0 0 #2c2e40,0 3px 8px 0 #000309;--docsearch-searchbox-background:#090a11;--docsearch-searchbox-focus-background:#000;--docsearch-hit-color:#bec3c9;--docsearch-hit-shadow:none;--docsearch-hit-background:#090a11;--docsearch-key-gradient:linear-gradient(-26.5deg,#565872,#31355b);--docsearch-key-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 2px 2px 0 rgba(3,4,9,0.3);--docsearch-footer-background:#1e2136;--docsearch-footer-shadow:inset 0 1px 0 0 rgba(73,76,106,0.5),0 -4px 8px 0 rgba(0,0,0,0.2);--docsearch-logo-color:#fff;--docsearch-muted-color:#7f8497}.admonition h5{margin-bottom:8px;margin-top:0}.admonition-icon{display:inline-block;margin-right:.4em}.admonition-icon svg{stroke-width:0;stroke:var(--ifm-alert-foreground-color);display:inline-block;height:22px;width:22px}.admonition{margin-bottom:1em}.docusaurus-highlight-code-line{background-color:#484d5b;display:block;margin:0 calc(var(--ifm-pre-padding)*-1);padding:0 var(--ifm-pre-padding)}#nprogress .bar{background:#29d;height:2px;left:0;position:fixed;top:0;width:100%;z-index:9}#nprogress .peg{box-shadow:0 0 10px #29d,0 0 5px #29d;height:100%;opacity:1;position:absolute;right:0;transform:rotate(3deg) translateY(-4px);width:100px}#docusaurus-base-url-issue-banner-container{display:none}.furion-join-group{background:hsla(0,0%,100%,.5);border-radius:5px;bottom:20px;box-shadow:0 0 12px #211b50;left:50%;margin-left:-128px;overflow:hidden;position:fixed;width:256px;z-index:8}.furion-join-group img{display:block;height:18em;margin:1em auto 0}.furion-join-group a{background:#8759ff;border:none;color:#fff;cursor:pointer;display:block;line-height:1.5;margin:0;min-width:15em;outline:0;padding:.5em 0;text-decoration:none;width:100%}.furion-join-group button:hover{background:rgba(135,89,255,.9)}.furion-give-me-star{background-color:#182c61;color:#fff;font-size:14px;padding:.6em;position:relative;text-align:center}.furion-gitee-star{margin-left:7px;position:relative}.furion-star-project{bottom:0;display:inline-block;position:fixed;right:0;z-index:10}.furion-star-project img{animation:3s infinite a;-webkit-animation:3s infinite a;display:block;height:50px;position:relative;transform-origin:bottom;-webkit-transform-origin:bottom}@keyframes a{0%,65%,to{transform:rotate(0)}70%,80%,90%{transform:rotate(6deg)}75%,85%,95%{transform:rotate(-6deg)}}.details_2Ziz{--docusaurus-details-summary-arrow-size:0.38rem;--docusaurus-details-transition:transform 200ms ease;--docusaurus-details-decoration-color:grey}.details_2Ziz>summary{cursor:pointer;list-style:none;margin-left:1.8rem;position:relative}.details_2Ziz>summary::-webkit-details-marker{display:none}.details_2Ziz>summary:before{border-bottom:var(--docusaurus-details-summary-arrow-size) solid transparent;border-left:var(--docusaurus-details-summary-arrow-size) solid var(--docusaurus-details-decoration-color);border-top:var(--docusaurus-details-summary-arrow-size) solid transparent;content:"";height:0;left:-1.2rem;position:absolute;top:.45rem;transform:rotate(0);transform-origin:calc(var(--docusaurus-details-summary-arrow-size)/2) 50%;transition:var(--docusaurus-details-transition);width:0}.collapsibleContent_3OHp{border-top:1px solid var(--docusaurus-details-decoration-color);margin-top:1rem;padding-top:1rem}.skipToContent_1oUP{background-color:var(--ifm-background-surface-color);color:var(--ifm-color-emphasis-900);left:100%;padding:calc(var(--ifm-global-spacing)/2) var(--ifm-global-spacing);position:fixed;top:1rem;z-index:calc(var(--ifm-z-index-fixed) + 1)}.skipToContent_1oUP:focus{box-shadow:var(--ifm-global-shadow-md);left:1rem}.announcementBar_3WsW{background-color:var(--ifm-color-white);border-bottom:1px solid var(--ifm-color-emphasis-100);color:var(--ifm-color-black);height:var(--docusaurus-announcement-bar-height);position:relative;width:100%}.collapseSidebarButton_1CGd,.sidebarLogo_3h0W,.themedImage_1VuW,html[data-announcement-bar-initially-dismissed=true] .announcementBar_3WsW{display:none}.announcementBarClose_38nx{font-size:1.25rem;height:100%;position:absolute;right:0;top:0;width:55px}.announcementBarContent_3EUC{font-size:85%;padding:5px 0;text-align:center;width:100%}.announcementBarCloseable_3myR{margin-right:55px}.announcementBarContent_3EUC a{color:inherit;text-decoration:underline}.react-toggle{cursor:pointer;position:relative;touch-action:pan-x;user-select:none}.react-toggle-screenreader-only{clip:rect(0 0 0 0);border:0;height:1px;margin:-1px;overflow:hidden;position:absolute;width:1px}.react-toggle--disabled{cursor:not-allowed}.react-toggle-track{background-color:#4d4d4d;border-radius:30px;height:24px;transition:.2s;width:50px}.react-toggle-track-check,.react-toggle-track-x{bottom:0;height:10px;margin:auto 0;top:0;position:absolute}.react-toggle-track-check{left:8px;opacity:0;transition:opacity .25s;width:14px}.react-toggle--checked .react-toggle-track-check,.react-toggle-track-x,[data-theme=dark] .react-toggle .react-toggle-track-check{opacity:1;transition:opacity .25s}.react-toggle-track-x{right:10px;width:10px}.react-toggle--checked .react-toggle-track-x,[data-theme=dark] .react-toggle .react-toggle-track-x{opacity:0}.react-toggle-thumb{background-color:#fafafa;border:1px solid #4d4d4d;border-radius:50%;height:22px;left:1px;position:absolute;top:1px;transition:.25s;width:22px}.react-toggle--checked .react-toggle-thumb,[data-theme=dark] .react-toggle .react-toggle-thumb{left:27px}.react-toggle--focus .react-toggle-thumb,.react-toggle:hover .react-toggle-thumb{box-shadow:0 0 2px 3px var(--ifm-color-primary)}.react-toggle:active:not(.react-toggle--disabled) .react-toggle-thumb{box-shadow:0 0 5px 5px var(--ifm-color-primary)}.toggle_71bT{align-items:center;display:flex;height:10px;justify-content:center;width:10px}.toggle_71bT:before{position:absolute}.iconExternalLink_3J9K{margin-left:.3rem;position:relative;top:1px}.sidebar_2ahu,.tableOfContents_35-E{max-height:calc(100vh - var(--ifm-navbar-height) - 2rem);overflow-y:auto;position:sticky}html[data-theme=dark] .themedImage--dark_hz6m,html[data-theme=light] .themedImage--light_3UqQ{display:initial}.navbarHideable_2qcr{transition:transform var(--ifm-transition-fast) ease}.navbarHidden_3yey{transform:translate3d(0,calc(-100% - 2px),0)}.footerLogoLink_qW4Z{opacity:.5;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.codeBlockContent_hGly:hover>.copyButton_Ue-o,.codeBlockTitle_eoMF:hover+.codeBlockContent_hGly .copyButton_Ue-o,.copyButton_Ue-o:focus,.footerLogoLink_qW4Z:hover,.hash-link:focus,:hover>.hash-link{opacity:1}body:not(.navigation-with-keyboard) :not(input):focus{outline:0}#__docusaurus{display:flex;flex-direction:column;min-height:100%}.main-wrapper{flex:1 0 auto}.docusaurus-mt-lg{margin-top:3rem}.sidebar_2ahu{top:calc(var(--ifm-navbar-height) + 2rem)}.sidebarItemTitle_2hhb{font-size:var(--ifm-h3-font-size)}.sidebarItemList_2xAf{font-size:.9rem;list-style:none;padding-left:0}.sidebarItem_2UVv{margin-top:.7rem}.tableOfContents_35-E{top:calc(var(--ifm-navbar-height) + 1rem)}.tabItemActive_2DSg{animation:.5s ease-in-out 5 b}@keyframes b{0%{background-color:var(--ifm-hover-overlay)}to{background-color:transparent}}.tocCollapsible_1PrD{background-color:var(--ifm-menu-color-background-active);border-radius:var(--ifm-global-radius);margin:1rem 0}.tocCollapsibleButton_2O1e{align-items:center;display:flex;font-size:inherit;justify-content:space-between;padding:.4rem .8rem;width:100%}.tocCollapsibleButton_2O1e:after{background:var(--ifm-menu-link-sublist-icon) 50% 50%/2rem 2rem no-repeat;content:"";transform:rotate(180deg);transition:transform var(--ifm-transition-fast);width:1.25rem}.tocCollapsibleContent_2Ydz>ul{border-left:none;border-top:1px solid var(--ifm-color-emphasis-300);font-size:15px;padding:.2rem 0}.tocCollapsibleContent_2Ydz ul li{margin:.4rem .8rem}.tocCollapsibleExpanded_3GYr .tocCollapsibleButton_2O1e:after{transform:none}.sidebarMenuCloseIcon_1lpH{align-items:center;display:inline-flex;font-size:1.5rem;height:24px;justify-content:center;line-height:.9;width:24px}.codeBlockContainer_K1bP{border-radius:var(--ifm-global-radius);box-shadow:var(--ifm-global-shadow-lw);margin-bottom:var(--ifm-leading);overflow:hidden}.codeBlockContent_hGly{direction:ltr;position:relative}.codeBlockTitle_eoMF{border-bottom:1px solid var(--ifm-color-emphasis-300);font-size:var(--ifm-code-font-size);font-weight:500;padding:.75rem var(--ifm-pre-padding)}.codeBlock_23N8{border-radius:0;margin:0;padding:0}.copyButton_Ue-o{background:rgba(0,0,0,.3);border-radius:var(--ifm-global-radius);color:var(--ifm-color-white);opacity:0;padding:.4rem .5rem;position:absolute;right:calc(var(--ifm-pre-padding)/2);top:calc(var(--ifm-pre-padding)/2);transition:opacity .2s ease-in-out;user-select:none}.DocSearch-Button,.DocSearch-Help{-webkit-user-select:none;-ms-user-select:none}.codeBlockLines_39YC{display:flex;flex-direction:column;float:left;font:inherit;min-width:100%;padding:var(--ifm-pre-padding)}.DocSearch-Button,.DocSearch-Button-Container{align-items:center;display:flex}.searchQueryInput_35WP,.searchVersionInput_3Dkp{background:var(--docsearch-searchbox-focus-background);border:2px solid var(--ifm-toc-border-color);border-radius:var(--ifm-global-radius);color:var(--docsearch-text-color);font:var(--ifm-font-size-base) var(--ifm-font-family-base);margin-bottom:.5rem;padding:.8rem;transition:border var(--ifm-transition-fast) ease;width:100%}.searchQueryInput_35WP:focus,.searchVersionInput_3Dkp:focus{border-color:var(--docsearch-primary-color);outline:0}.searchQueryInput_35WP:-ms-input-placeholder{color:var(--docsearch-muted-color)}.searchQueryInput_35WP::placeholder{color:var(--docsearch-muted-color)}.searchResultsColumn_3okB{font-size:.9rem;font-weight:700}.algoliaLogo_hvIi{max-width:150px}.algoliaLogoPathFill_wnAy{fill:var(--ifm-font-color-base)}.searchResultItem_3EK0{border-bottom:1px solid var(--ifm-toc-border-color);padding:1rem 0}.searchResultItemHeading_3ioS{font-weight:400;margin-bottom:0}.searchResultItemPath_1-7G{--ifm-breadcrumb-separator-size-multiplier:1;color:var(--ifm-color-content-secondary);font-size:.8rem}.searchResultItemSummary_17EU{font-style:italic;margin:.5rem 0 0}.loadingSpinner_EGxz{animation:1s linear infinite c;border:.4em solid #eee;border-radius:50%;border-top:.4em solid var(--ifm-color-primary);height:3rem;margin:0 auto;width:3rem}@keyframes c{to{transform:rotate(1turn)}}.loader_1VUO{margin-top:2rem}.search-result-match{background:rgba(255,215,142,.25);color:var(--docsearch-hit-color);padding:.09em 0}.DocSearch-Button{background:var(--docsearch-searchbox-background);border:0;border-radius:40px;color:var(--docsearch-muted-color);cursor:pointer;font-weight:500;height:36px;justify-content:space-between;padding:0 8px;user-select:none}.DocSearch-Button:active,.DocSearch-Button:focus,.DocSearch-Button:hover{background:var(--docsearch-searchbox-focus-background);box-shadow:var(--docsearch-searchbox-shadow);color:var(--docsearch-text-color);outline:0}.DocSearch-Search-Icon{stroke-width:1.6}.DocSearch-Hit-Tree,.DocSearch-Hit-action,.DocSearch-Hit-icon,.DocSearch-Reset{stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Button .DocSearch-Search-Icon{color:var(--docsearch-text-color)}.DocSearch-Button-Placeholder{font-size:1rem;padding:0 12px 0 6px}.DocSearch-Input,.DocSearch-Link{-webkit-appearance:none;font:inherit}.DocSearch-Button-Keys{display:flex;min-width:calc(40px + .8em)}.DocSearch-Button-Key{align-items:center;background:var(--docsearch-key-gradient);border-radius:3px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;padding-bottom:2px;position:relative;top:-1px;width:20px}.DocSearch--active{overflow:hidden!important}.DocSearch-Container{background-color:var(--docsearch-container-background);height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:5}.DocSearch-Container a{text-decoration:none}.DocSearch-Link{appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;margin:0;padding:0}.DocSearch-Modal{background:var(--docsearch-modal-background);border-radius:6px;box-shadow:var(--docsearch-modal-shadow);flex-direction:column;margin:60px auto auto;max-width:var(--docsearch-modal-width);position:relative}.DocSearch-SearchBar{display:flex;padding:var(--docsearch-spacing) var(--docsearch-spacing) 0}.DocSearch-Form{align-items:center;background:var(--docsearch-searchbox-focus-background);border-radius:4px;box-shadow:var(--docsearch-searchbox-shadow);display:flex;height:var(--docsearch-searchbox-height);margin:0;padding:0 var(--docsearch-spacing);position:relative;width:100%}.DocSearch-Input{appearance:none;background:0 0;border:0;color:var(--docsearch-text-color);flex:1;font-size:1.2em;height:100%;outline:0;padding:0 0 0 8px;width:80%}.DocSearch-Hit-action-button,.DocSearch-Reset{-webkit-appearance:none;border:0;cursor:pointer}.DocSearch-Input:-ms-input-placeholder{color:var(--docsearch-muted-color);opacity:1}.DocSearch-Input::placeholder{color:var(--docsearch-muted-color);opacity:1}.DocSearch-Input::-webkit-search-cancel-button,.DocSearch-Input::-webkit-search-decoration,.DocSearch-Input::-webkit-search-results-button,.DocSearch-Input::-webkit-search-results-decoration{display:none}.DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{margin:0;padding:0}.DocSearch-Container--Stalled .DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}.DocSearch-Cancel,.DocSearch-Container--Stalled .DocSearch-MagnifierLabel,.DocSearch-LoadingIndicator,.DocSearch-Reset[hidden]{display:none}.DocSearch-Reset{animation:.1s ease-in forwards d;appearance:none;background:none;border-radius:50%;color:var(--docsearch-icon-color);padding:2px;right:0}.DocSearch-Help,.DocSearch-HitsFooter,.DocSearch-Label{color:var(--docsearch-muted-color)}.DocSearch-Reset:focus{outline:0}.DocSearch-Reset:hover{color:var(--docsearch-highlight-color)}.DocSearch-LoadingIndicator svg,.DocSearch-MagnifierLabel svg{height:24px;width:24px}.DocSearch-Dropdown{max-height:calc(var(--docsearch-modal-height) - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height));min-height:var(--docsearch-spacing);overflow-y:auto;overflow-y:overlay;padding:0 var(--docsearch-spacing);scrollbar-color:var(--docsearch-muted-color) var(--docsearch-modal-background);scrollbar-width:thin}.DocSearch-Dropdown::-webkit-scrollbar{width:12px}.DocSearch-Dropdown::-webkit-scrollbar-track{background:0 0}.DocSearch-Dropdown::-webkit-scrollbar-thumb{background-color:var(--docsearch-muted-color);border:3px solid var(--docsearch-modal-background);border-radius:20px}.DocSearch-Dropdown ul{list-style:none;margin:0;padding:0}.DocSearch-Label{font-size:.75em;line-height:1.6em}.DocSearch-Help{font-size:.9em;margin:0;user-select:none}.DocSearch-Title{font-size:1.2em}.DocSearch-Logo a,.docs-wrapper{display:flex}.DocSearch-Logo svg{color:var(--docsearch-logo-color);margin-left:8px}.DocSearch-Hits:last-of-type{margin-bottom:24px}.DocSearch-Hits mark{background:none;color:var(--docsearch-highlight-color)}.DocSearch-HitsFooter{display:flex;font-size:.85em;justify-content:center;margin-bottom:var(--docsearch-spacing);padding:var(--docsearch-spacing)}.DocSearch-HitsFooter a{border-bottom:1px solid;color:inherit}.DocSearch-Hit{border-radius:4px;display:flex;padding-bottom:4px;position:relative}.DocSearch-Hit--deleting{opacity:0;transition:.25s linear}.DocSearch-Hit--favoriting{transform:scale(0);transform-origin:top center;transition:.25s linear .25s}.DocSearch-Hit a{background:var(--docsearch-hit-background);border-radius:4px;box-shadow:var(--docsearch-hit-shadow);display:block;padding-left:var(--docsearch-spacing);width:100%}.DocSearch-Hit-source{background:var(--docsearch-modal-background);color:var(--docsearch-highlight-color);font-size:.85em;font-weight:600;line-height:32px;margin:0 -4px;padding:8px 4px 0;position:sticky;top:0;z-index:3}.DocSearch-Hit-Tree{color:var(--docsearch-muted-color);height:var(--docsearch-hit-height);opacity:.5;width:24px}.DocSearch-Hit[aria-selected=true] a{background-color:var(--docsearch-highlight-color)}.DocSearch-Hit[aria-selected=true] mark{text-decoration:underline}.DocSearch-Hit-Container{align-items:center;color:var(--docsearch-hit-color);display:flex;flex-direction:row;height:var(--docsearch-hit-height);padding:0 var(--docsearch-spacing) 0 0}.DocSearch-Hit-icon{height:20px;width:20px}.DocSearch-Hit-action,.DocSearch-Hit-icon{color:var(--docsearch-muted-color)}.DocSearch-Hit-action{align-items:center;display:flex;height:22px;width:22px}.DocSearch-Hit-action svg{display:block;height:18px;width:18px}.DocSearch-Hit-action+.DocSearch-Hit-action{margin-left:6px}.DocSearch-Hit-action-button{appearance:none;background:none;border-radius:50%;color:inherit;padding:2px}.docSidebarContainer_3Kbt,svg.DocSearch-Hit-Select-Icon{display:none}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Select-Icon{display:block}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:rgba(0,0,0,.2);transition:background-color .1s ease-in}.DocSearch-Hit-action-button:focus path,.DocSearch-Hit-action-button:hover path{fill:#fff}.DocSearch-Hit-content-wrapper{display:flex;flex:1 1 auto;flex-direction:column;font-weight:500;justify-content:center;line-height:1.2em;margin:0 8px;overflow-x:hidden;position:relative;width:80%}.DocSearch-Hit-title{font-size:.9em}.DocSearch-Hit-path{color:var(--docsearch-muted-color);font-size:.75em}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Tree,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-action,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-icon,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-path,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-text,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-title,.DocSearch-Hit[aria-selected=true] mark{color:var(--docsearch-hit-active-color)!important}.DocSearch-ErrorScreen,.DocSearch-NoResults,.DocSearch-StartScreen{font-size:.9em;margin:0 auto;padding:36px 0;text-align:center;width:80%}.DocSearch-Screen-Icon{color:var(--docsearch-muted-color);padding-bottom:12px}.DocSearch-NoResults-Prefill-List{display:inline-block;padding-bottom:24px;text-align:left}.DocSearch-NoResults-Prefill-List ul{display:inline-block;padding:8px 0 0}.DocSearch-NoResults-Prefill-List li{list-style-position:inside;list-style-type:"» "}.DocSearch-Prefill{-webkit-appearance:none;appearance:none;background:none;border:0;border-radius:1em;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;font-size:1em;font-weight:700;padding:0}.DocSearch-Prefill:focus,.DocSearch-Prefill:hover{outline:0;text-decoration:underline}.DocSearch-Footer{align-items:center;background:var(--docsearch-footer-background);border-radius:0 0 8px 8px;box-shadow:var(--docsearch-footer-shadow);display:flex;flex-direction:row-reverse;flex-shrink:0;height:var(--docsearch-footer-height);justify-content:space-between;padding:0 var(--docsearch-spacing);position:relative;-webkit-user-select:none;-ms-user-select:none;user-select:none;width:100%;z-index:6}.DocSearch-Commands li,.DocSearch-Commands-Key{align-items:center;display:flex}.DocSearch-Commands{color:var(--docsearch-muted-color);display:flex;list-style:none;margin:0;padding:0}.DocSearch-Commands li:not(:last-of-type){margin-right:.8em}.DocSearch-Commands-Key{background:var(--docsearch-key-gradient);border-radius:2px;box-shadow:var(--docsearch-key-shadow);height:18px;justify-content:center;margin-right:.4em;padding-bottom:1px;width:20px}@keyframes d{0%{opacity:0}to{opacity:1}}.DocSearch-Button{margin:0;transition:all var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.DocSearch-Container{z-index:calc(var(--ifm-z-index-fixed) + 1)}.anchor{display:block;position:relative;top:-.5rem}.hash-link{opacity:0;padding-left:.5rem;transition:opacity var(--ifm-transition-fast)}.enhancedAnchor_2LWZ{top:calc(var(--ifm-navbar-height)*-1 - .5rem)}.h1Heading_27L5{font-size:3rem;margin-bottom:calc(var(--ifm-leading-desktop)*var(--ifm-leading))}.details_1VDD{--docusaurus-details-decoration-color:var(--ifm-alert-border-color);--docusaurus-details-transition:transform var(--ifm-transition-fast) ease;border:1px solid var(--ifm-alert-border-color);margin:0 0 var(--ifm-spacing-vertical)}.iconEdit_2_ui{margin-right:.3em;vertical-align:sub}.lastUpdated_3DPF{font-size:smaller;font-style:italic;margin-top:.2rem}.backToTopButton_35hR{align-items:center;background:var(--docusaurus-btt-background);border-radius:50%;bottom:1.3rem;box-shadow:0 .125rem .3125rem 0 rgba(0,0,0,.3);color:var(--docusaurus-btt-color);display:flex;height:3rem;justify-content:center;opacity:0;position:fixed;right:1.3rem;transform:scale(0);transition:all var(--ifm-transition-fast) ease-in-out;width:3rem;z-index:var(--ifm-z-index-fixed)}.backToTopButtonShow_18ls{opacity:1;transform:scale(1)}.docMainContainer_3ufF,.docPage_31aa{display:flex;width:100%}.blogPostData_291c{font-size:.9rem}.blogPostDetailsFull_3kfx{flex-direction:column}.furion-banner{align-items:center;background-color:#211b50;color:#fff;padding:4rem 2rem}.furion-banner-container{display:flex;justify-content:space-between;margin:0 auto;max-width:1140px}.furion-banner-project{font-size:1.5em;font-weight:700}.furion-banner-description{-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text;background-image:linear-gradient(81deg,#8759ff,#3fc4fe,#42ffac);font-size:2.5em;font-weight:700;line-height:1.25;margin:24px 0}.furion-banner-spec{font-family:Muli;font-size:1em;font-weight:500;line-height:1.33;opacity:.7;padding:0}.furion-banner-spec li{list-style:none;margin-bottom:1em;padding-left:1em;position:relative}.furion-banner-spec li:before{background-color:#8759ff;content:"";height:4px;left:0;position:absolute;top:.5em;width:4px}.furion-support-platform{color:#fff;font-family:Muli;font-size:.85em;font-weight:500;line-height:2;margin-top:3em;opacity:.6}.furion-support-icons{display:flex;margin-top:12px}.furion-support-icons span{margin-right:20px}.furion-get-start{background:#8759ff;border-radius:2em;color:#fff;display:inline-block;line-height:1.5;margin-top:4em;min-width:240px;padding:8px 32px;text-align:center;text-decoration:none}.furion-get-start:hover{background:rgba(135,89,255,.9);color:#fff;text-decoration:none}.furion-banner-item .system-window{width:34rem}.system-top-bar{background-image:linear-gradient(90deg,rgba(136,89,255,.2),rgba(63,196,254,.2) 90%,rgba(66,255,172,.2));padding:.25em 1em}.system-top-bar-circle{border-radius:50%;display:inline-block;filter:brightness(100%);height:.5em;margin-left:.3em;width:.5em}.system-window{--ifm-leading:0;background:#211b50;border-radius:1em;overflow:hidden;padding:0;width:95%}.system-window iframe{border-radius:unset}.blue-accent{--uni-border-color:#3fbbfe;--uni-box-shadow-color:rgba(63,187,254,0.1);--ifm-menu-color-active:#3fbbfe}.preview-border{border:1px solid #3fbbfe;box-shadow:0 6px 58px 0 rgba(63,187,254,.1)}.furion-content{margin-bottom:4em;margin-top:4em;text-align:center}.furion-small-title{color:#412a94;font-family:Muli;font-size:1em;font-weight:600;letter-spacing:1px;opacity:.6}.furion-big-title.dark,.furion-contributor-item.dark a,.furion-log-number span.dark,.furion-remark-p p.dark,.furion-small-title.dark{color:#f5f6f7}.furion-big-title{color:#412a94;font-family:Poppins;font-size:2em;font-weight:700;line-height:1.31;margin-bottom:2em}.furion-gitee-log{display:flex;flex-wrap:nowrap;justify-content:center}.furion-log-item{height:173px;margin-right:65px;position:relative;width:260px}.furion-log-jiao{background:#fff;border-right:1px dashed #a795e8;border-top:1px dashed #a795e8;height:100px;position:absolute;right:-6px;top:-6px;width:100px}.furion-log-jiao.dark{background:#18191a}.furion-log-item:last-child{margin-right:0}.furion-log-number{align-items:center;display:flex;flex-direction:column;height:100%;justify-content:center;position:relative;width:100%;z-index:2}.furion-log-number div{font-size:3em;font-weight:700}.furion-log-number span{color:#1c1e21;font-family:Poppins,sans-serif;font-stretch:normal;font-style:normal;letter-spacing:normal;line-height:normal}.furion-remark{display:flex;justify-content:center}.furion-remark-item{border-image-slice:1;border-image-source:linear-gradient(var(--uni-border-gradient-degrees),#8759ff,#3fc4fe 51%,#42ffac);border-style:solid;border-width:6px;height:100%;margin:2em;max-width:320px;padding:4em 2em}.furion-remark-item:first-child{--uni-border-gradient-degrees:41deg;border-right:0;border-top:0}.furion-remark-item:nth-child(2){--uni-border-gradient-degrees:100deg;border:0}.furion-remark-item:last-child{--uni-border-gradient-degrees:221deg;border-bottom:0;border-left:0}.furion-remark-p{height:150px}.furion-remark-p h1{font-size:24px}.furion-remark-p p,.furion-who-des p{font-family:Muli;font-size:1em;line-height:1.75;opacity:.8}.furion-remark-p p{color:#474747;text-align:center}.furion-whouse{align-items:center;background-color:#412a94!important;color:#fff;display:flex;padding:5rem 0}.furion-who-custom{align-items:center;background-color:#fff;color:#723cff;display:flex;flex-wrap:wrap;justify-content:flex-end;min-height:500px;padding:6rem;text-align:right;width:60%}.furion-custom-img{color:transparent;margin-left:3em;text-decoration:none}.furion-who-des{padding:0 5rem}.furion-who-des p{color:#fff;margin-bottom:.8em}.footer{background-color:#211b50!important}.furion-links{margin:4em;text-align:center}.furion-links-content a{display:inline-block;font-size:20px;font-weight:600;margin:0 1em}.furion-contributors,.furion-proccesson{margin:4em 0;text-align:center}#dotnet-china{height:100px}.furion-contributor-item{background-color:#f3f3f3;border-radius:4px;box-shadow:4px 3px 16px -3px #0009;box-sizing:border-box;color:#333;display:inline-block;height:170px;margin:10px 5px;overflow:hidden;padding:10px;position:relative;text-align:center;width:130px}.furion-contributor-extra{background-color:#412a94;border-radius:4px;color:#fff;font-size:12px;padding:2px 5px;position:absolute;right:0;text-align:left;top:-9px}.furion-contributor-item a{color:#333;display:block;font-size:10pt;font-weight:700;text-decoration:none}.furion-contributor-item div{margin-top:10px}.furion-contributor-item.dark{background:#333}.furion-get-start-btn{position:relative}.furion-version{color:#ff0;font-size:16px;margin-left:210px;margin-top:-53px;position:absolute;z-index:3}.navbar{background-color:#211b50}.navbar__brand,.navbar__items,.navbar__link{color:#fff}.navbar__link--active,.navbar__link:hover{color:#ff0}.menu__list-item .navbar__link--active,.menu__list-item .navbar__link:hover{color:#743dff}@media (min-width:997px){.searchBox_1Doo{padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.menuLinkText_1J2g{cursor:auto}.menuLinkText_1J2g:hover{background:none}.sidebar_15mo{display:flex;flex-direction:column;height:100%;max-height:100vh;padding-top:var(--ifm-navbar-height);position:sticky;top:0;transition:opacity 50ms;width:var(--doc-sidebar-width)}.sidebarWithHideableNavbar_267A{padding-top:0}.sidebarHidden_2kNb{height:0;opacity:0;overflow:hidden;visibility:hidden}.sidebarLogo_3h0W{align-items:center;color:inherit!important;display:flex!important;margin:0 var(--ifm-navbar-padding-horizontal);max-height:var(--ifm-navbar-height);min-height:var(--ifm-navbar-height);text-decoration:none!important}.sidebarLogo_3h0W img{height:2rem;margin-right:.5rem}.menu_Bmed{flex-grow:1;padding:.5rem}.menuWithAnnouncementBar_2WvA{margin-bottom:var(--docusaurus-announcement-bar-height)}.collapseSidebarButton_1CGd{background-color:var(--ifm-button-background-color);border:1px solid var(--ifm-toc-border-color);border-radius:0;bottom:0;display:block!important;height:40px;position:sticky}.collapseSidebarButtonIcon_3E-R{margin-top:4px;transform:rotate(180deg)}.expandSidebarButtonIcon_1naQ,html[dir=rtl] .collapseSidebarButtonIcon_3E-R{transform:rotate(0)}html[data-theme=dark] .collapseSidebarButton_1CGd,html[data-theme=dark] .collapsedDocSidebar_2JMH:focus,html[data-theme=dark] .collapsedDocSidebar_2JMH:hover{background-color:var(--collapse-button-bg-color-dark)}.collapsedDocSidebar_2JMH:focus,.collapsedDocSidebar_2JMH:hover,html[data-theme=dark] .collapseSidebarButton_1CGd:focus,html[data-theme=dark] .collapseSidebarButton_1CGd:hover{background-color:var(--ifm-color-emphasis-200)}.docMainContainer_3ufF{flex-grow:1;max-width:calc(100% - var(--doc-sidebar-width))}.docMainContainerEnhanced_3NYZ{max-width:calc(100% - var(--doc-sidebar-hidden-width))}.docSidebarContainer_3Kbt{border-right:1px solid var(--ifm-toc-border-color);-webkit-clip-path:inset(0);clip-path:inset(0);display:block;margin-top:calc(var(--ifm-navbar-height)*-1);transition:width var(--ifm-transition-fast) ease;width:var(--doc-sidebar-width);will-change:width}.docSidebarContainerHidden_3pA8{cursor:pointer;width:var(--doc-sidebar-hidden-width)}.collapsedDocSidebar_2JMH{align-items:center;display:flex;height:100%;justify-content:center;max-height:100vh;position:sticky;top:0;transition:background-color var(--ifm-transition-fast) ease}html[dir=rtl] .expandSidebarButtonIcon_1naQ{transform:rotate(180deg)}.docItemWrapperEnhanced_2vyJ{max-width:calc(var(--ifm-container-width) + var(--doc-sidebar-width))!important}}@media only screen and (min-width:997px){.docItemCol_3FnS{max-width:75%!important}.lastUpdated_3DPF{text-align:right}.tocMobile_3Hoh{display:none}}@media screen and (min-width:1024px){:root{--docusaurus-announcement-bar-height:30px}}@media (min-width:1440px){.container{max-width:var(--ifm-container-width-xl)}}@media (max-width:1200px){h1{--ifm-h1-font-size:calc(1.375rem + 1.5vw)}}@media screen and (max-width:1024px){.furion-join-group{display:none}.furion-banner-container{flex-direction:column;justify-content:unset}.furion-get-start-btn{text-align:center}#dotnet-china{height:45px}.furion-banner-item .system-window{margin-top:3rem;width:100%}.furion-gitee-log{align-items:center;flex-direction:column;flex-wrap:unset;justify-content:center;padding:20px}.furion-log-item{height:173px;margin-right:0;margin-top:25px;width:100%}.furion-big-title{margin-bottom:1em}.furion-remark,.furion-whouse{flex-direction:column}.furion-whouse{padding-bottom:1em}.furion-who-des{padding-bottom:2em;padding-top:1em}.furion-remark-item{border:none;margin:0;max-width:unset;padding-bottom:0;width:100%}.furion-custom-img{margin-bottom:2em;margin-left:0}.furion-custom-img img{max-width:unset}.furion-who-custom{align-items:center;justify-content:center;text-align:center;width:100%}.furion-contributors{margin:4em 0}}@media screen and (max-width:997px){.toggle_3Zt9{display:none}}@media (max-width:996px){.row .col.col.col{--ifm-col-width:100%;flex-basis:var(--ifm-col-width);margin-left:0;max-width:var(--ifm-col-width)}.footer{--ifm-footer-padding-horizontal:0}.footer__link-separator,.navbar__item{display:none}.footer__col{margin-bottom:calc(var(--ifm-spacing-vertical)*3)}.footer__link-item{display:block}.hero{padding-left:0;padding-right:0}.navbar>.container,.navbar>.container-fluid{padding:0}.navbar__toggle{display:inherit}.navbar__search-input{width:9rem}.pills--block,.tabs--block{flex-direction:column}.pills--block .pills__item:not(:first-child){margin-top:var(--ifm-pills-spacing)}.pills--block .pills__item:not(:last-child){margin-bottom:var(--ifm-pills-spacing)}.tabs--block .tabs__item:not(:first-child){margin-top:var(--ifm-tabs-spacing)}.tabs--block .tabs__item:not(:last-child){margin-bottom:var(--ifm-tabs-spacing)}.searchBox_1Doo{position:absolute;right:var(--ifm-navbar-padding-horizontal)}}@media only screen and (max-width:996px){.sidebar_2ahu,.tableOfContents_35-E{display:none}.docItemContainer_gpai{padding:0 .3rem}.searchQueryColumn_22lI,.searchResultsColumn_3okB{max-width:60%!important}.searchLogoColumn_21YU,.searchVersionColumn_1eqi{max-width:40%!important}.searchLogoColumn_21YU{padding-left:0!important}}@media (max-width:750px){.DocSearch-Button-Keys,.DocSearch-Button-Placeholder,.DocSearch-Commands,.DocSearch-Hit-Tree{display:none}:root{--docsearch-spacing:10px;--docsearch-footer-height:40px}.DocSearch-Dropdown{height:100%;max-height:calc(var(--docsearch-vh, 1vh)*100 - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height))}.DocSearch-Container{height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);position:absolute}.DocSearch-Footer{border-radius:0;bottom:0;position:absolute}.DocSearch-Hit-content-wrapper{display:flex;position:relative;width:80%}.DocSearch-Modal{border-radius:0;box-shadow:none;height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);margin:0;max-width:100%;width:100%}.DocSearch-Cancel{-webkit-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;flex:none;font:inherit;font-size:1em;font-weight:500;margin-left:var(--docsearch-spacing);outline:0;overflow:hidden;padding:0;-webkit-user-select:none;-ms-user-select:none;user-select:none;white-space:nowrap}}@media screen and (max-width:576px){.announcementBarClose_38nx{width:35px}.announcementBarContent_3EUC{width:auto}.announcementBarCloseable_3myR{margin-right:35px}.searchQueryColumn_22lI{max-width:100%!important}.searchVersionColumn_1eqi{max-width:100%!important;padding-left:var(--ifm-spacing-horizontal)!important}}@media (pointer:fine){.thin-scrollbar::-webkit-scrollbar{height:var(--ifm-scrollbar-size);width:var(--ifm-scrollbar-size)}.thin-scrollbar::-webkit-scrollbar-track{background:var(--ifm-scrollbar-track-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb{background:var(--ifm-scrollbar-thumb-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb:hover{background:var(--ifm-scrollbar-thumb-hover-background-color)}}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Reset{stroke-width:var(--docsearch-icon-stroke-width);animation:none;-webkit-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;right:0}.DocSearch-Hit--deleting,.DocSearch-Hit--favoriting{transition:none}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:rgba(0,0,0,.2);transition:none}}@media print{.announcementBar_3WsW,.footer,.menu,.navbar,.pagination-nav,.table-of-contents{display:none}.tabs{page-break-inside:avoid}.codeBlockLines_39YC{white-space:pre-wrap}} \ No newline at end of file diff --git a/handbook/build/assets/js/000e798f.3f20c17b.js b/handbook/build/assets/js/000e798f.3f20c17b.js new file mode 100644 index 00000000000..fca97702a09 --- /dev/null +++ b/handbook/build/assets/js/000e798f.3f20c17b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[4847],{3905:function(e,t,n){n.d(t,{Zo:function(){return c},kt:function(){return m}});var r=n(7294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var p=r.createContext({}),u=function(e){var t=r.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},c=function(e){var t=u(e.components);return r.createElement(p.Provider,{value:t},e.children)},s={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,i=e.mdxType,o=e.originalType,p=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),d=u(n),m=i,f=d["".concat(p,".").concat(m)]||d[m]||s[m]||o;return n?r.createElement(f,a(a({ref:t},c),{},{components:n})):r.createElement(f,a({ref:t},c))}));function m(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var o=n.length,a=new Array(o);a[0]=d;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l.mdxType="string"==typeof e?e:i,a[1]=l;for(var u=2;u.NET 6 Preview 5 SDK",id:"\u5b89\u88c5-net-6-preview-5-sdk",children:[]},{value:"\u5347\u7ea7 Visual Studio 2019",id:"\u5347\u7ea7-visual-studio-2019",children:[]},{value:"\u7b2c\u4e00\u4e2a\u4f8b\u5b50",id:"\u7b2c\u4e00\u4e2a\u4f8b\u5b50",children:[]},{value:"\u6253\u5f00\u5e76\u542f\u52a8\u9879\u76ee",id:"\u6253\u5f00\u5e76\u542f\u52a8\u9879\u76ee",children:[]}]}],d={toc:s};function m(e){var t=e.components,n=(0,i.Z)(e,a);return(0,o.kt)("wrapper",(0,r.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"2021 \u5e74 06 \u6708 18 \u65e5\uff0c\u5fae\u8f6f\u53d1\u5e03\u4e86 ",(0,o.kt)("inlineCode",{parentName:"strong"},".NET 6 Preview 5")," \u7248\u672c\uff0c",(0,o.kt)("inlineCode",{parentName:"strong"},"Furion")," \u5728\u5f53\u5929\u7b2c\u4e00\u65f6\u95f4\u9002\u914d\u4e86\u8be5\u7248\u672c\uff0c\u5e76\u53d1\u5e03 ",(0,o.kt)("inlineCode",{parentName:"strong"},"Furion v3.0.0-preview.5.21301.9")," \u7248\u672c\u3002")),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/tree/net6.0-preview5/"},"Furion .NET 6 Preview 5 \u6e90\u7801\u5730\u5740")),(0,o.kt)("h2",{id:"\u7b49\u4e0d\u53ca\u5c1d\u9c9c\u4e86"},"\u7b49\u4e0d\u53ca\u5c1d\u9c9c\u4e86"),(0,o.kt)("h3",{id:"\u5b89\u88c5-net-6-preview-5-sdk"},"\u5b89\u88c5 ",(0,o.kt)("inlineCode",{parentName:"h3"},".NET 6 Preview 5 SDK")),(0,o.kt)("p",null,"\u5c1d\u9c9c\u4e4b\u524d\uff0c\u9996\u5148\u5148\u5b89\u88c5 ",(0,o.kt)("inlineCode",{parentName:"p"},".NET 6 Preview 5 SDK"),"\uff0c\u4e0b\u8f7d\u5730\u5740\uff1a",(0,o.kt)("a",{parentName:"p",href:"https://dotnet.microsoft.com/download/dotnet/6.0"},"https://dotnet.microsoft.com/download/dotnet/6.0")),(0,o.kt)("p",null,"\u4e0b\u8f7d\u5bf9\u5e94\u7cfb\u7edf\u548c\u5904\u7406\u5668\u7248\u672c\u5373\u53ef\u3002"),(0,o.kt)("h3",{id:"\u5347\u7ea7-visual-studio-2019"},"\u5347\u7ea7 ",(0,o.kt)("inlineCode",{parentName:"h3"},"Visual Studio 2019")),(0,o.kt)("p",null,"\u76ee\u524d ",(0,o.kt)("inlineCode",{parentName:"p"},".NET 6 Preview 5")," \u652f\u6301\u4f7f\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"Visual Studio 2019 Preview 16.11.0 Preview 2.0")," \u7248\u672c\uff0c",(0,o.kt)("strong",{parentName:"p"},"\u6ce8\u610f\u662f ",(0,o.kt)("inlineCode",{parentName:"strong"},"Preview")," \u6700\u65b0\u7248\u672c"),"\u3002\u4e0b\u8f7d\u5730\u5740\uff1a",(0,o.kt)("a",{parentName:"p",href:"https://visualstudio.microsoft.com/zh-hans/thank-you-downloading-visual-studio/?sku=enterprise&ch=pre&rel=16"},"https://visualstudio.microsoft.com/zh-hans/thank-you-downloading-visual-studio/?sku=enterprise&ch=pre&rel=16")),(0,o.kt)("p",null,"\u5df2\u7ecf\u5b89\u88c5\u4e86 ",(0,o.kt)("inlineCode",{parentName:"p"},"Visual Studio 2019 Preview")," \u7248\u672c\u7684\u670b\u53cb\u76f4\u63a5\u5347\u7ea7\u5230\u6700\u65b0\u7248\u5373\u53ef\u3002"),(0,o.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u7279\u522b\u8bf4\u660e")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u5982\u679c\u4f7f\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"Visual Studio Code")," \u5f00\u53d1\uff0c\u53ef\u5ffd\u7565\u6b64\u9009\u9879\u3002"))),(0,o.kt)("h3",{id:"\u7b2c\u4e00\u4e2a\u4f8b\u5b50"},"\u7b2c\u4e00\u4e2a\u4f8b\u5b50"),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"Furion v3.0.0-preview.5.21301.9")," \u76ee\u524d\u63d0\u4f9b\u4e86\u6240\u6709\u7c7b\u578b\u7684\u811a\u624b\u67b6\uff0c\u7248\u672c\u53f7\u7edf\u4e00 ",(0,o.kt)("inlineCode",{parentName:"p"},"3.0.0-preview.5.21301.9"),"\u3002"),(0,o.kt)("p",null,"\u5b89\u88c5\u811a\u624b\u67b6\uff0c\u6253\u5f00 ",(0,o.kt)("inlineCode",{parentName:"p"},"CMD/Powershell")," \u6267\u884c\u4ee5\u4e0b\u547d\u4ee4\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"dotnet new --install Furion.Template.Api::3.0.0-preview.5.21301.9\n")),(0,o.kt)("p",null,"\u521b\u5efa\u9879\u76ee"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"dotnet new furionapi -n FurionNET6\n")),(0,o.kt)("h3",{id:"\u6253\u5f00\u5e76\u542f\u52a8\u9879\u76ee"},"\u6253\u5f00\u5e76\u542f\u52a8\u9879\u76ee"),(0,o.kt)("p",null,"\u6253\u5f00\u6d4f\u89c8\u5668\u67e5\u770b\u6548\u679c\u5373\u53ef\u3002"))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/000e798f.bd052f2a.js b/handbook/build/assets/js/000e798f.bd052f2a.js deleted file mode 100644 index a39e1c5d154..00000000000 --- a/handbook/build/assets/js/000e798f.bd052f2a.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[4847],{3905:function(e,t,n){n.d(t,{Zo:function(){return c},kt:function(){return m}});var r=n(7294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var p=r.createContext({}),u=function(e){var t=r.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},c=function(e){var t=u(e.components);return r.createElement(p.Provider,{value:t},e.children)},d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},s=r.forwardRef((function(e,t){var n=e.components,i=e.mdxType,o=e.originalType,p=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),s=u(n),m=i,f=s["".concat(p,".").concat(m)]||s[m]||d[m]||o;return n?r.createElement(f,a(a({ref:t},c),{},{components:n})):r.createElement(f,a({ref:t},c))}));function m(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var o=n.length,a=new Array(o);a[0]=s;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l.mdxType="string"==typeof e?e:i,a[1]=l;for(var u=2;u.NET 6 Preview 5 SDK",id:"\u5b89\u88c5-net-6-preview-5-sdk",children:[]},{value:"\u5347\u7ea7 Visual Studio 2019",id:"\u5347\u7ea7-visual-studio-2019",children:[]},{value:"\u7b2c\u4e00\u4e2a\u4f8b\u5b50",id:"\u7b2c\u4e00\u4e2a\u4f8b\u5b50",children:[]},{value:"\u6253\u5f00\u5e76\u542f\u52a8\u9879\u76ee",id:"\u6253\u5f00\u5e76\u542f\u52a8\u9879\u76ee",children:[]}]}],d={toc:c};function s(e){var t=e.components,n=(0,i.Z)(e,a);return(0,o.kt)("wrapper",(0,r.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"2021 \u5e74 06 \u6708 18 \u65e5\uff0c\u5fae\u8f6f\u53d1\u5e03\u4e86 ",(0,o.kt)("inlineCode",{parentName:"strong"},".NET 6 Preview 5")," \u7248\u672c\uff0c",(0,o.kt)("inlineCode",{parentName:"strong"},"Furion")," \u5728\u5f53\u5929\u7b2c\u4e00\u65f6\u95f4\u9002\u914d\u4e86\u8be5\u7248\u672c\uff0c\u5e76\u53d1\u5e03 ",(0,o.kt)("inlineCode",{parentName:"strong"},"Furion v3.0.0-preview.5.21301.9")," \u7248\u672c\u3002")),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/tree/net6.0-preview5/"},"Furion .NET 6 Preview 5 \u6e90\u7801\u5730\u5740")),(0,o.kt)("h2",{id:"\u7b49\u4e0d\u53ca\u5c1d\u9c9c\u4e86"},"\u7b49\u4e0d\u53ca\u5c1d\u9c9c\u4e86"),(0,o.kt)("h3",{id:"\u5b89\u88c5-net-6-preview-5-sdk"},"\u5b89\u88c5 ",(0,o.kt)("inlineCode",{parentName:"h3"},".NET 6 Preview 5 SDK")),(0,o.kt)("p",null,"\u5c1d\u9c9c\u4e4b\u524d\uff0c\u9996\u5148\u5148\u5b89\u88c5 ",(0,o.kt)("inlineCode",{parentName:"p"},".NET 6 Preview 5 SDK"),"\uff0c\u4e0b\u8f7d\u5730\u5740\uff1a",(0,o.kt)("a",{parentName:"p",href:"https://dotnet.microsoft.com/download/dotnet/6.0"},"https://dotnet.microsoft.com/download/dotnet/6.0")),(0,o.kt)("p",null,"\u4e0b\u8f7d\u5bf9\u5e94\u7cfb\u7edf\u548c\u5904\u7406\u5668\u7248\u672c\u5373\u53ef\u3002"),(0,o.kt)("h3",{id:"\u5347\u7ea7-visual-studio-2019"},"\u5347\u7ea7 ",(0,o.kt)("inlineCode",{parentName:"h3"},"Visual Studio 2019")),(0,o.kt)("p",null,"\u76ee\u524d ",(0,o.kt)("inlineCode",{parentName:"p"},".NET 6 Preview 5")," \u652f\u6301\u4f7f\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"Visual Studio 2019 Preview 16.11.0 Preview 2.0")," \u7248\u672c\uff0c",(0,o.kt)("strong",{parentName:"p"},"\u6ce8\u610f\u662f ",(0,o.kt)("inlineCode",{parentName:"strong"},"Preview")," \u6700\u65b0\u7248\u672c"),"\u3002\u4e0b\u8f7d\u5730\u5740\uff1a",(0,o.kt)("a",{parentName:"p",href:"https://visualstudio.microsoft.com/zh-hans/thank-you-downloading-visual-studio/?sku=enterprise&ch=pre&rel=16"},"https://visualstudio.microsoft.com/zh-hans/thank-you-downloading-visual-studio/?sku=enterprise&ch=pre&rel=16")),(0,o.kt)("p",null,"\u5df2\u7ecf\u5b89\u88c5\u4e86 ",(0,o.kt)("inlineCode",{parentName:"p"},"Visual Studio 2019 Preview")," \u7248\u672c\u7684\u670b\u53cb\u76f4\u63a5\u5347\u7ea7\u5230\u6700\u65b0\u7248\u5373\u53ef\u3002"),(0,o.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u7279\u522b\u8bf4\u660e")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u5982\u679c\u4f7f\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"Visual Studio Code")," \u5f00\u53d1\uff0c\u53ef\u5ffd\u7565\u6b64\u9009\u9879\u3002"))),(0,o.kt)("h3",{id:"\u7b2c\u4e00\u4e2a\u4f8b\u5b50"},"\u7b2c\u4e00\u4e2a\u4f8b\u5b50"),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"Furion v3.0.0-preview.5.21301.9")," \u76ee\u524d\u63d0\u4f9b\u4e86\u6240\u6709\u7c7b\u578b\u7684\u811a\u624b\u67b6\uff0c\u7248\u672c\u53f7\u7edf\u4e00 ",(0,o.kt)("inlineCode",{parentName:"p"},"3.0.0-preview.5.21301.9"),"\u3002"),(0,o.kt)("p",null,"\u5b89\u88c5\u811a\u624b\u67b6\uff0c\u6253\u5f00 ",(0,o.kt)("inlineCode",{parentName:"p"},"CMD/Powershell")," \u6267\u884c\u4ee5\u4e0b\u547d\u4ee4\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"dotnet new --install Furion.Template.Api::3.0.0-preview.5.21301.9\n")),(0,o.kt)("p",null,"\u521b\u5efa\u9879\u76ee"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"dotnet new furionapi -n FurionNET6\n")),(0,o.kt)("h3",{id:"\u6253\u5f00\u5e76\u542f\u52a8\u9879\u76ee"},"\u6253\u5f00\u5e76\u542f\u52a8\u9879\u76ee"),(0,o.kt)("p",null,"\u6253\u5f00\u6d4f\u89c8\u5668\u67e5\u770b\u6548\u679c\u5373\u53ef\u3002"))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/00cf5050.6db45421.js b/handbook/build/assets/js/00cf5050.6db45421.js new file mode 100644 index 00000000000..3527a88e04f --- /dev/null +++ b/handbook/build/assets/js/00cf5050.6db45421.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[8133],{3905:function(e,t,n){n.d(t,{Zo:function(){return d},kt:function(){return u}});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var p=a.createContext({}),s=function(e){var t=a.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},d=function(e){var t=s(e.components);return a.createElement(p.Provider,{value:t},e.children)},c={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,p=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),m=s(n),u=r,k=m["".concat(p,".").concat(u)]||m[u]||c[u]||i;return n?a.createElement(k,o(o({ref:t},d),{},{components:n})):a.createElement(k,o({ref:t},d))}));function u(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,o=new Array(i);o[0]=m;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l.mdxType="string"==typeof e?e:r,o[1]=l;for(var s=2;sCORS \u670d\u52a1",id:"1641-\u6dfb\u52a0-cors-\u670d\u52a1",children:[]},{value:"16.4.2 \u914d\u7f6e\u5141\u8bb8\u8de8\u57df\u57df\u540d",id:"1642-\u914d\u7f6e\u5141\u8bb8\u8de8\u57df\u57df\u540d",children:[]}]},{value:"16.5 CorsAccessorSettings \u914d\u7f6e",id:"165-corsaccessorsettings-\u914d\u7f6e",children:[]},{value:"16.6 \u4f7f\u7528 axios \u524d\u7aef\u6ce8\u610f\u4e8b\u9879",id:"166-\u4f7f\u7528-axios-\u524d\u7aef\u6ce8\u610f\u4e8b\u9879",children:[]},{value:"16.7 \u4f7f\u7528 $.ajax \u524d\u7aef\u6ce8\u610f\u4e8b\u9879",id:"167-\u4f7f\u7528-ajax-\u524d\u7aef\u6ce8\u610f\u4e8b\u9879",children:[]},{value:"16.8 \u7981\u7528\u8de8\u57df",id:"168-\u7981\u7528\u8de8\u57df",children:[]},{value:"16.9 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"169-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],c={toc:d};function m(e){var t=e.components,n=(0,r.Z)(e,o);return(0,i.kt)("wrapper",(0,a.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"161-\u4ec0\u4e48\u662f\u8de8\u57df"},"16.1 \u4ec0\u4e48\u662f\u8de8\u57df"),(0,i.kt)("p",null,"\u7b80\u5355\u6765\u8bf4\uff0c\u5f53\u4e00\u4e2a\u8bf7\u6c42 ",(0,i.kt)("inlineCode",{parentName:"p"},"url")," \u7684\u534f\u8bae\u3001\u57df\u540d\u3001\u7aef\u53e3\u4e09\u8005\u4e4b\u95f4\u4efb\u610f\u4e00\u4e2a\u4e0e\u5f53\u524d\u9875\u9762 ",(0,i.kt)("inlineCode",{parentName:"p"},"url")," \u4e0d\u540c\u5373\u4e3a\u8de8\u57df\u3002\u90a3\u4e3a\u4ec0\u4e48\u4f1a\u51fa\u73b0\u8de8\u57df\u95ee\u9898\u5462\uff1f"),(0,i.kt)("p",null,"\u51fa\u4e8e\u6d4f\u89c8\u5668\u7684\u540c\u6e90\u7b56\u7565\u9650\u5236\u3002\u540c\u6e90\u7b56\u7565\uff08Sameoriginpolicy\uff09\u662f\u4e00\u79cd\u7ea6\u5b9a\uff0c\u5b83\u662f\u6d4f\u89c8\u5668\u6700\u6838\u5fc3\u4e5f\u6700\u57fa\u672c\u7684\u5b89\u5168\u529f\u80fd\uff0c\u5982\u679c\u7f3a\u5c11\u4e86\u540c\u6e90\u7b56\u7565\uff0c\u5219\u6d4f\u89c8\u5668\u7684\u6b63\u5e38\u529f\u80fd\u53ef\u80fd\u90fd\u4f1a\u53d7\u5230\u5f71\u54cd\u3002\u53ef\u4ee5\u8bf4 ",(0,i.kt)("inlineCode",{parentName:"p"},"Web")," \u662f\u6784\u5efa\u5728\u540c\u6e90\u7b56\u7565\u57fa\u7840\u4e4b\u4e0a\u7684\uff0c\u6d4f\u89c8\u5668\u53ea\u662f\u9488\u5bf9\u540c\u6e90\u7b56\u7565\u7684\u4e00\u79cd\u5b9e\u73b0\u3002\u540c\u6e90\u7b56\u7565\u4f1a\u963b\u6b62\u4e00\u4e2a\u57df\u7684 javascript \u811a\u672c\u548c\u53e6\u5916\u4e00\u4e2a\u57df\u7684\u5185\u5bb9\u8fdb\u884c\u4ea4\u4e92\u3002\u6240\u8c13\u540c\u6e90\uff08\u5373\u6307\u5728\u540c\u4e00\u4e2a\u57df\uff09\u5c31\u662f\u4e24\u4e2a\u9875\u9762\u5177\u6709\u76f8\u540c\u7684\u534f\u8bae\uff08protocol\uff09\uff0c\u4e3b\u673a\uff08host\uff09\u548c\u7aef\u53e3\u53f7\uff08port\uff09"),(0,i.kt)("h2",{id:"162-\u6709\u8de8\u57df\u884c\u4e3a\u793a\u4f8b"},"16.2 \u6709\u8de8\u57df\u884c\u4e3a\u793a\u4f8b"),(0,i.kt)("table",null,(0,i.kt)("thead",{parentName:"table"},(0,i.kt)("tr",{parentName:"thead"},(0,i.kt)("th",{parentName:"tr",align:null},"\u5f53\u524d\u9875\u9762 url"),(0,i.kt)("th",{parentName:"tr",align:null},"\u88ab\u8bf7\u6c42\u9875\u9762 url"),(0,i.kt)("th",{parentName:"tr",align:null},"\u662f\u5426\u8de8\u57df"),(0,i.kt)("th",{parentName:"tr",align:null},"\u539f\u56e0"))),(0,i.kt)("tbody",{parentName:"table"},(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("a",{parentName:"td",href:"http://www.furion.pro/"},"http://www.furion.pro/")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("a",{parentName:"td",href:"http://www.furion.pro/index.html"},"http://www.furion.pro/index.html")),(0,i.kt)("td",{parentName:"tr",align:null},"\u5426"),(0,i.kt)("td",{parentName:"tr",align:null},"\u540c\u6e90\uff08\u534f\u8bae\u3001\u57df\u540d\u3001\u7aef\u53e3\u53f7\u76f8\u540c\uff09")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("a",{parentName:"td",href:"http://www.furion.pro/"},"http://www.furion.pro/")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("a",{parentName:"td",href:"https://www.furion.pro/index.html"},"https://www.furion.pro/index.html")),(0,i.kt)("td",{parentName:"tr",align:null},"\u8de8\u57df"),(0,i.kt)("td",{parentName:"tr",align:null},"\u534f\u8bae\u4e0d\u540c\uff08http/https\uff09")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("a",{parentName:"td",href:"http://www.furion.pro/"},"http://www.furion.pro/")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("a",{parentName:"td",href:"http://www.baidu.com/"},"http://www.baidu.com/")),(0,i.kt)("td",{parentName:"tr",align:null},"\u8de8\u57df"),(0,i.kt)("td",{parentName:"tr",align:null},"\u4e3b\u57df\u540d\u4e0d\u540c\uff08chinadot/baidu\uff09")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("a",{parentName:"td",href:"http://www.furion.pro/"},"http://www.furion.pro/")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("a",{parentName:"td",href:"http://blog.furion.pro/"},"http://blog.furion.pro/")),(0,i.kt)("td",{parentName:"tr",align:null},"\u8de8\u57df"),(0,i.kt)("td",{parentName:"tr",align:null},"\u5b50\u57df\u540d\u4e0d\u540c\uff08www/blog\uff09")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("a",{parentName:"td",href:"http://www.furion.pro:8080/"},"http://www.furion.pro:8080/")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("a",{parentName:"td",href:"http://www.furion.pro:7001/"},"http://www.furion.pro:7001/")),(0,i.kt)("td",{parentName:"tr",align:null},"\u8de8\u57df"),(0,i.kt)("td",{parentName:"tr",align:null},"\u7aef\u53e3\u53f7\u4e0d\u540c\uff088080/7001\uff09")))),(0,i.kt)("h2",{id:"163-\u4ec0\u4e48\u662f-cors"},"16.3 \u4ec0\u4e48\u662f CORS"),(0,i.kt)("p",null,"\u8de8\u6e90\u8d44\u6e90\u5171\u4eab (",(0,i.kt)("inlineCode",{parentName:"p"},"CORS"),") \uff1a"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"\u662f\u4e00\u79cd ",(0,i.kt)("inlineCode",{parentName:"li"},"W3C")," \u6807\u51c6\uff0c\u53ef\u8ba9\u670d\u52a1\u5668\u653e\u5bbd\u76f8\u540c\u7684\u6e90\u7b56\u7565\u3002"),(0,i.kt)("li",{parentName:"ul"},"\u4e0d\u662f\u4e00\u9879\u5b89\u5168\u529f\u80fd\uff0c",(0,i.kt)("inlineCode",{parentName:"li"},"CORS")," \u653e\u5bbd ",(0,i.kt)("inlineCode",{parentName:"li"},"security"),"\u3002 ",(0,i.kt)("inlineCode",{parentName:"li"},"API")," \u4e0d\u80fd\u901a\u8fc7\u5141\u8bb8 ",(0,i.kt)("inlineCode",{parentName:"li"},"CORS")," \u6765\u66f4\u5b89\u5168\u3002 \u6709\u5173\u8be6\u7ec6\u4fe1\u606f\uff0c\u8bf7\u53c2\u9605 ",(0,i.kt)("a",{parentName:"li",href:"https://docs.microsoft.com/zh-cn/aspnet/core/security/cors?view=aspnetcore-5.0#how-cors"},"CORS \u5de5\u4f5c\u539f\u7406"),"\u3002"),(0,i.kt)("li",{parentName:"ul"},"\u5141\u8bb8\u670d\u52a1\u5668\u660e\u786e\u5141\u8bb8\u4e00\u4e9b\u8de8\u6e90\u8bf7\u6c42\uff0c\u540c\u65f6\u62d2\u7edd\u5176\u4ed6\u8bf7\u6c42\u3002"),(0,i.kt)("li",{parentName:"ul"},"\u6bd4\u65e9\u671f\u7684\u6280\u672f\uff08\u5982 JSONP\uff09\u66f4\u5b89\u5168\u4e14\u66f4\u7075\u6d3b\u3002")),(0,i.kt)("h2",{id:"164-\u5982\u4f55\u4f7f\u7528"},"16.4 \u5982\u4f55\u4f7f\u7528"),(0,i.kt)("h3",{id:"1641-\u6dfb\u52a0-cors-\u670d\u52a1"},"16.4.1 \u6dfb\u52a0 ",(0,i.kt)("inlineCode",{parentName:"h3"},"CORS")," \u670d\u52a1"),(0,i.kt)("p",null,"\u542f\u7528\u8de8\u57df ",(0,i.kt)("inlineCode",{parentName:"p"},"Cors")," \u652f\u6301\u9996\u5148\u6dfb\u52a0 ",(0,i.kt)("inlineCode",{parentName:"p"},"CorsAccessor")," \u670d\u52a1\uff0c\u5982\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{13,22}","{13,22}":!0},"using Microsoft.AspNetCore.Builder;\nusing Microsoft.AspNetCore.Hosting;\nusing Microsoft.Extensions.DependencyInjection;\nusing Microsoft.Extensions.Hosting;\n\nnamespace Furion.Web.Core\n{\n [AppStartup(700)]\n public sealed class FurWebCoreStartup : AppStartup\n {\n public void ConfigureServices(IServiceCollection services)\n {\n services.AddCorsAccessor();\n\n // ...\n }\n\n public void Configure(IApplicationBuilder app, IWebHostEnvironment env)\n {\n //...\n\n app.UseCorsAccessor();\n\n // ...\n }\n }\n}\n")),(0,i.kt)("div",{className:"admonition admonition-caution alert alert--warning"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 16 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"}))),"\u7279\u522b\u6ce8\u610f")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},(0,i.kt)("inlineCode",{parentName:"p"},"services.AddCorsAccessor();")," \u9700\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"services.AddControllers()")," \u4e4b\u524d\u6ce8\u518c\u3002"),(0,i.kt)("p",{parentName:"div"},(0,i.kt)("inlineCode",{parentName:"p"},"app.UseCorsAccessor();")," \u9700\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"app.UseRouting();")," \u548c ",(0,i.kt)("inlineCode",{parentName:"p"},"app.UseAuthentication();")," \u4e4b\u95f4\u6ce8\u518c\u3002"))),(0,i.kt)("h3",{id:"1642-\u914d\u7f6e\u5141\u8bb8\u8de8\u57df\u57df\u540d"},"16.4.2 \u914d\u7f6e\u5141\u8bb8\u8de8\u57df\u57df\u540d"),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u5c0f\u63d0\u9192")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c",(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u5141\u8bb8\u6240\u6709\u57df\u540d\u6765\u6e90\u8bbf\u95ee\uff0c\u4e5f\u5c31\u662f\u65e0\u9700\u914d\u7f6e\u4efb\u4f55\u6765\u6e90\u57df\u540d\uff0c\u53e6\u5916\u524d\u7aef\u4e5f\u9700\u8981\u8bbe\u7f6e\u8bf7\u6c42\u53c2\u6570\uff1a",(0,i.kt)("inlineCode",{parentName:"p"},"withCredentials:false")))),(0,i.kt)("p",null,"\u5982\u679c\u9700\u8981\u6307\u5b9a\u7279\u5b9a\u57df\u540d\uff0c\u5219\u6dfb\u52a0\u4ee5\u4e0b\u914d\u7f6e\u5373\u53ef\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-json",metastring:"{4}","{4}":!0},'{\n "CorsAccessorSettings": {\n "PolicyName": "\u81ea\u5b9a\u4e49\u8de8\u57df\u7b56\u7565\u540d",\n "WithOrigins": ["http://localhost:4200", "https://furion.pro"]\n }\n}\n')),(0,i.kt)("h2",{id:"165-corsaccessorsettings-\u914d\u7f6e"},"16.5 ",(0,i.kt)("inlineCode",{parentName:"h2"},"CorsAccessorSettings")," \u914d\u7f6e"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"CorsAccessorSettings"),(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"PolicyName"),"\uff1a\u8de8\u57df\u7b56\u7565\u540d\uff0c\u5b57\u7b26\u4e32\u7c7b\u578b\uff0c\u5fc5\u586b\uff0c\u9ed8\u8ba4 ",(0,i.kt)("inlineCode",{parentName:"li"},"FurCorsAccessor")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"WithOrigins"),"\uff1a\u5141\u8bb8\u8de8\u57df\u7684\u57df\u540d\u5217\u8868\uff0c\u5b57\u7b26\u4e32\u6570\u7ec4\u7c7b\u578b\uff0c\u9ed8\u8ba4 ",(0,i.kt)("inlineCode",{parentName:"li"},'[ "http://localhost:4200" ]')),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"WithHeaders"),"\uff1a\u8bf7\u6c42\u8868\u5934\uff0c\u6ca1\u6709\u914d\u7f6e\u5219\u5141\u8bb8\u6240\u6709\u8868\u5934\uff0c\u5b57\u7b26\u4e32\u6570\u7ec4\u7c7b\u578b"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"WithExposedHeaders"),"\uff1a\u54cd\u5e94\u6807\u5934\uff0c\u5b57\u7b26\u4e32\u6570\u7ec4\u7c7b\u578b"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"WithMethods"),"\uff1a\u8bbe\u7f6e\u8de8\u57df\u5141\u8bb8\u8bf7\u6c42\u8c13\u8bcd\uff0c\u6ca1\u6709\u914d\u7f6e\u5219\u5141\u8bb8\u6240\u6709\uff0c\u5b57\u7b26\u4e32\u6570\u7ec4\u7c7b\u578b"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"AllowCredentials"),"\uff1a\u8de8\u57df\u8bf7\u6c42\u4e2d\u7684\u51ed\u636e\uff0c",(0,i.kt)("inlineCode",{parentName:"li"},"bool")," \u7c7b\u578b"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"SetPreflightMaxAge"),"\uff1a\u8bbe\u7f6e\u9884\u68c0\u8fc7\u671f\u65f6\u95f4\uff0c",(0,i.kt)("inlineCode",{parentName:"li"},"int")," \u7c7b\u578b\uff0c\u5355\u4f4d\u79d2\uff0c**\u6b64\u914d\u7f6e\u53ef\u4ee5\u63a7\u5236\u5ba2\u6237\u7aef\u53d1\u9001\u975e ",(0,i.kt)("inlineCode",{parentName:"li"},"GET"),"\uff0c",(0,i.kt)("inlineCode",{parentName:"li"},"HEAD"),"\uff0c",(0,i.kt)("inlineCode",{parentName:"li"},"POST")," \u8bf7\u6c42\u524d\u53d1\u9001 ",(0,i.kt)("inlineCode",{parentName:"li"},"OPTION")," \u8bf7\u6c42\u68c0\u67e5\uff0c\u72b6\u6001\u7801\uff08204\uff09")))),(0,i.kt)("h2",{id:"166-\u4f7f\u7528-axios-\u524d\u7aef\u6ce8\u610f\u4e8b\u9879"},"16.6 \u4f7f\u7528 ",(0,i.kt)("inlineCode",{parentName:"h2"},"axios")," \u524d\u7aef\u6ce8\u610f\u4e8b\u9879"),(0,i.kt)("p",null,"\u7531\u4e8e ",(0,i.kt)("inlineCode",{parentName:"p"},"axios")," \u5bf9\u8de8\u57df\u6709\u7279\u5b9a\u7684\u9700\u8981\uff0c\u9700\u8981\u54cd\u5e94\u62a5\u6587\u4e2d\u516c\u5f00\u7279\u5b9a ",(0,i.kt)("inlineCode",{parentName:"p"},"Header")," \u624d\u80fd\u653e\u884c\uff0c\u5982\uff1a",(0,i.kt)("inlineCode",{parentName:"p"},"Access-Control-Expose-Headers: xxxxx"),"\uff0c\u6240\u4ee5\uff0c\u5982\u679c\u524d\u7aef\u4f7f\u7528\u4e86 ",(0,i.kt)("inlineCode",{parentName:"p"},"axios")," \u8bf7\u6c42\uff0c\u9700\u8981\u6dfb\u52a0\u4ee5\u4e0b\u914d\u7f6e\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'{\n "CorsAccessorSettings": {\n "WithExposedHeaders": ["access-token","x-access-token"]\n }\n}\n')),(0,i.kt)("p",null,"\u53e6\u5916\u8bf7\u6c42\u8bbe\u7f6e ",(0,i.kt)("inlineCode",{parentName:"p"},"withCredentials: false")," \u5373\u53ef\u3002"),(0,i.kt)("h2",{id:"167-\u4f7f\u7528-ajax-\u524d\u7aef\u6ce8\u610f\u4e8b\u9879"},"16.7 \u4f7f\u7528 ",(0,i.kt)("inlineCode",{parentName:"h2"},"$.ajax")," \u524d\u7aef\u6ce8\u610f\u4e8b\u9879"),(0,i.kt)("p",null,"\u4f7f\u7528 ",(0,i.kt)("inlineCode",{parentName:"p"},"Jquery")," \u524d\u7aef\u8bf7\u6c42\u53ef\u4ee5\u53c2\u8003\u4ee5\u4e0b\u914d\u7f6e\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{4-7}","{4-7}":!0},'$.ajax({\n \xa0 \xa0 \xa0 \xa0url: "http://localhost:8080/getdata",\n \xa0 \xa0 \xa0 \xa0type: "GET",\n \xa0 \xa0 \xa0 \xa0xhrFields: {\n \xa0 \xa0 \xa0 \xa0\xa0 \xa0 withCredentials: false // \u5982\u679c\u662fhttps\u8bf7\u6c42\uff0c\u53ef\u4ee5\u8bd5\u8bd5 true\n \xa0 \xa0 \xa0 \xa0},\n \xa0 \xa0 \xa0 \xa0crossDomain: true,\n \xa0 \xa0 \xa0 \xa0success: function (res) {\n \xa0 \xa0 \xa0 \xa0\xa0 \xa0 render(res);\n \xa0 \xa0 \xa0 \xa0}\n});\n')),(0,i.kt)("h2",{id:"168-\u7981\u7528\u8de8\u57df"},"16.8 \u7981\u7528\u8de8\u57df"),(0,i.kt)("p",null,"\u6709\u65f6\u5019\uff0c\u6211\u4eec\u5e0c\u671b\u67d0\u4e2a\u65b9\u6cd5\u4e0d\u68c0\u67e5\u8de8\u57df\u8bf7\u6c42\uff0c\u53ef\u4ee5\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Action")," \u4e2d\u8d34 ",(0,i.kt)("inlineCode",{parentName:"p"},"[DisableCors]")," \u7279\u6027\u5373\u53ef\u3002"),(0,i.kt)("h2",{id:"169-\u53cd\u9988\u4e0e\u5efa\u8bae"},"16.9 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,i.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))),(0,i.kt)("hr",null),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e86\u89e3\u66f4\u591a")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u60f3\u4e86\u89e3\u66f4\u591a ",(0,i.kt)("inlineCode",{parentName:"p"},"\u8de8\u57df\u8bf7\u6c42")," \u77e5\u8bc6\u53ef\u67e5\u9605 ",(0,i.kt)("a",{parentName:"p",href:"https://docs.microsoft.com/zh-cn/aspnet/core/security/cors?view=aspnetcore-5.0"},"ASP.NET Core - \u542f\u7528\u8de8\u57df\u8bf7\u6c42")," \u7ae0\u8282\u3002"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/00cf5050.80d16e73.js b/handbook/build/assets/js/00cf5050.80d16e73.js deleted file mode 100644 index d2f6e6851ff..00000000000 --- a/handbook/build/assets/js/00cf5050.80d16e73.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[8133],{3905:function(e,t,n){n.d(t,{Zo:function(){return d},kt:function(){return u}});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var p=a.createContext({}),s=function(e){var t=a.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},d=function(e){var t=s(e.components);return a.createElement(p.Provider,{value:t},e.children)},c={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,p=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),m=s(n),u=r,k=m["".concat(p,".").concat(u)]||m[u]||c[u]||i;return n?a.createElement(k,o(o({ref:t},d),{},{components:n})):a.createElement(k,o({ref:t},d))}));function u(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,o=new Array(i);o[0]=m;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l.mdxType="string"==typeof e?e:r,o[1]=l;for(var s=2;sCORS \u670d\u52a1",id:"1641-\u6dfb\u52a0-cors-\u670d\u52a1",children:[]},{value:"16.4.2 \u914d\u7f6e\u5141\u8bb8\u8de8\u57df\u57df\u540d",id:"1642-\u914d\u7f6e\u5141\u8bb8\u8de8\u57df\u57df\u540d",children:[]}]},{value:"16.5 CorsAccessorSettings \u914d\u7f6e",id:"165-corsaccessorsettings-\u914d\u7f6e",children:[]},{value:"16.6 \u4f7f\u7528 axios \u524d\u7aef\u6ce8\u610f\u4e8b\u9879",id:"166-\u4f7f\u7528-axios-\u524d\u7aef\u6ce8\u610f\u4e8b\u9879",children:[]},{value:"16.7 \u4f7f\u7528 $.ajax \u524d\u7aef\u6ce8\u610f\u4e8b\u9879",id:"167-\u4f7f\u7528-ajax-\u524d\u7aef\u6ce8\u610f\u4e8b\u9879",children:[]},{value:"16.8 \u7981\u7528\u8de8\u57df",id:"168-\u7981\u7528\u8de8\u57df",children:[]},{value:"16.9 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"169-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],c={toc:d};function m(e){var t=e.components,n=(0,r.Z)(e,o);return(0,i.kt)("wrapper",(0,a.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"161-\u4ec0\u4e48\u662f\u8de8\u57df"},"16.1 \u4ec0\u4e48\u662f\u8de8\u57df"),(0,i.kt)("p",null,"\u7b80\u5355\u6765\u8bf4\uff0c\u5f53\u4e00\u4e2a\u8bf7\u6c42 ",(0,i.kt)("inlineCode",{parentName:"p"},"url")," \u7684\u534f\u8bae\u3001\u57df\u540d\u3001\u7aef\u53e3\u4e09\u8005\u4e4b\u95f4\u4efb\u610f\u4e00\u4e2a\u4e0e\u5f53\u524d\u9875\u9762 ",(0,i.kt)("inlineCode",{parentName:"p"},"url")," \u4e0d\u540c\u5373\u4e3a\u8de8\u57df\u3002\u90a3\u4e3a\u4ec0\u4e48\u4f1a\u51fa\u73b0\u8de8\u57df\u95ee\u9898\u5462\uff1f"),(0,i.kt)("p",null,"\u51fa\u4e8e\u6d4f\u89c8\u5668\u7684\u540c\u6e90\u7b56\u7565\u9650\u5236\u3002\u540c\u6e90\u7b56\u7565\uff08Sameoriginpolicy\uff09\u662f\u4e00\u79cd\u7ea6\u5b9a\uff0c\u5b83\u662f\u6d4f\u89c8\u5668\u6700\u6838\u5fc3\u4e5f\u6700\u57fa\u672c\u7684\u5b89\u5168\u529f\u80fd\uff0c\u5982\u679c\u7f3a\u5c11\u4e86\u540c\u6e90\u7b56\u7565\uff0c\u5219\u6d4f\u89c8\u5668\u7684\u6b63\u5e38\u529f\u80fd\u53ef\u80fd\u90fd\u4f1a\u53d7\u5230\u5f71\u54cd\u3002\u53ef\u4ee5\u8bf4 ",(0,i.kt)("inlineCode",{parentName:"p"},"Web")," \u662f\u6784\u5efa\u5728\u540c\u6e90\u7b56\u7565\u57fa\u7840\u4e4b\u4e0a\u7684\uff0c\u6d4f\u89c8\u5668\u53ea\u662f\u9488\u5bf9\u540c\u6e90\u7b56\u7565\u7684\u4e00\u79cd\u5b9e\u73b0\u3002\u540c\u6e90\u7b56\u7565\u4f1a\u963b\u6b62\u4e00\u4e2a\u57df\u7684 javascript \u811a\u672c\u548c\u53e6\u5916\u4e00\u4e2a\u57df\u7684\u5185\u5bb9\u8fdb\u884c\u4ea4\u4e92\u3002\u6240\u8c13\u540c\u6e90\uff08\u5373\u6307\u5728\u540c\u4e00\u4e2a\u57df\uff09\u5c31\u662f\u4e24\u4e2a\u9875\u9762\u5177\u6709\u76f8\u540c\u7684\u534f\u8bae\uff08protocol\uff09\uff0c\u4e3b\u673a\uff08host\uff09\u548c\u7aef\u53e3\u53f7\uff08port\uff09"),(0,i.kt)("h2",{id:"162-\u6709\u8de8\u57df\u884c\u4e3a\u793a\u4f8b"},"16.2 \u6709\u8de8\u57df\u884c\u4e3a\u793a\u4f8b"),(0,i.kt)("table",null,(0,i.kt)("thead",{parentName:"table"},(0,i.kt)("tr",{parentName:"thead"},(0,i.kt)("th",{parentName:"tr",align:null},"\u5f53\u524d\u9875\u9762 url"),(0,i.kt)("th",{parentName:"tr",align:null},"\u88ab\u8bf7\u6c42\u9875\u9762 url"),(0,i.kt)("th",{parentName:"tr",align:null},"\u662f\u5426\u8de8\u57df"),(0,i.kt)("th",{parentName:"tr",align:null},"\u539f\u56e0"))),(0,i.kt)("tbody",{parentName:"table"},(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("a",{parentName:"td",href:"http://www.furion.pro/"},"http://www.furion.pro/")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("a",{parentName:"td",href:"http://www.furion.pro/index.html"},"http://www.furion.pro/index.html")),(0,i.kt)("td",{parentName:"tr",align:null},"\u5426"),(0,i.kt)("td",{parentName:"tr",align:null},"\u540c\u6e90\uff08\u534f\u8bae\u3001\u57df\u540d\u3001\u7aef\u53e3\u53f7\u76f8\u540c\uff09")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("a",{parentName:"td",href:"http://www.furion.pro/"},"http://www.furion.pro/")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("a",{parentName:"td",href:"https://www.furion.pro/index.html"},"https://www.furion.pro/index.html")),(0,i.kt)("td",{parentName:"tr",align:null},"\u8de8\u57df"),(0,i.kt)("td",{parentName:"tr",align:null},"\u534f\u8bae\u4e0d\u540c\uff08http/https\uff09")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("a",{parentName:"td",href:"http://www.furion.pro/"},"http://www.furion.pro/")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("a",{parentName:"td",href:"http://www.baidu.com/"},"http://www.baidu.com/")),(0,i.kt)("td",{parentName:"tr",align:null},"\u8de8\u57df"),(0,i.kt)("td",{parentName:"tr",align:null},"\u4e3b\u57df\u540d\u4e0d\u540c\uff08chinadot/baidu\uff09")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("a",{parentName:"td",href:"http://www.furion.pro/"},"http://www.furion.pro/")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("a",{parentName:"td",href:"http://blog.furion.pro/"},"http://blog.furion.pro/")),(0,i.kt)("td",{parentName:"tr",align:null},"\u8de8\u57df"),(0,i.kt)("td",{parentName:"tr",align:null},"\u5b50\u57df\u540d\u4e0d\u540c\uff08www/blog\uff09")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("a",{parentName:"td",href:"http://www.furion.pro:8080/"},"http://www.furion.pro:8080/")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("a",{parentName:"td",href:"http://www.furion.pro:7001/"},"http://www.furion.pro:7001/")),(0,i.kt)("td",{parentName:"tr",align:null},"\u8de8\u57df"),(0,i.kt)("td",{parentName:"tr",align:null},"\u7aef\u53e3\u53f7\u4e0d\u540c\uff088080/7001\uff09")))),(0,i.kt)("h2",{id:"163-\u4ec0\u4e48\u662f-cors"},"16.3 \u4ec0\u4e48\u662f CORS"),(0,i.kt)("p",null,"\u8de8\u6e90\u8d44\u6e90\u5171\u4eab (",(0,i.kt)("inlineCode",{parentName:"p"},"CORS"),") \uff1a"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"\u662f\u4e00\u79cd ",(0,i.kt)("inlineCode",{parentName:"li"},"W3C")," \u6807\u51c6\uff0c\u53ef\u8ba9\u670d\u52a1\u5668\u653e\u5bbd\u76f8\u540c\u7684\u6e90\u7b56\u7565\u3002"),(0,i.kt)("li",{parentName:"ul"},"\u4e0d\u662f\u4e00\u9879\u5b89\u5168\u529f\u80fd\uff0c",(0,i.kt)("inlineCode",{parentName:"li"},"CORS")," \u653e\u5bbd ",(0,i.kt)("inlineCode",{parentName:"li"},"security"),"\u3002 ",(0,i.kt)("inlineCode",{parentName:"li"},"API")," \u4e0d\u80fd\u901a\u8fc7\u5141\u8bb8 ",(0,i.kt)("inlineCode",{parentName:"li"},"CORS")," \u6765\u66f4\u5b89\u5168\u3002 \u6709\u5173\u8be6\u7ec6\u4fe1\u606f\uff0c\u8bf7\u53c2\u9605 ",(0,i.kt)("a",{parentName:"li",href:"https://docs.microsoft.com/zh-cn/aspnet/core/security/cors?view=aspnetcore-5.0#how-cors"},"CORS \u5de5\u4f5c\u539f\u7406"),"\u3002"),(0,i.kt)("li",{parentName:"ul"},"\u5141\u8bb8\u670d\u52a1\u5668\u660e\u786e\u5141\u8bb8\u4e00\u4e9b\u8de8\u6e90\u8bf7\u6c42\uff0c\u540c\u65f6\u62d2\u7edd\u5176\u4ed6\u8bf7\u6c42\u3002"),(0,i.kt)("li",{parentName:"ul"},"\u6bd4\u65e9\u671f\u7684\u6280\u672f\uff08\u5982 JSONP\uff09\u66f4\u5b89\u5168\u4e14\u66f4\u7075\u6d3b\u3002")),(0,i.kt)("h2",{id:"164-\u5982\u4f55\u4f7f\u7528"},"16.4 \u5982\u4f55\u4f7f\u7528"),(0,i.kt)("h3",{id:"1641-\u6dfb\u52a0-cors-\u670d\u52a1"},"16.4.1 \u6dfb\u52a0 ",(0,i.kt)("inlineCode",{parentName:"h3"},"CORS")," \u670d\u52a1"),(0,i.kt)("p",null,"\u542f\u7528\u8de8\u57df ",(0,i.kt)("inlineCode",{parentName:"p"},"Cors")," \u652f\u6301\u9996\u5148\u6dfb\u52a0 ",(0,i.kt)("inlineCode",{parentName:"p"},"CorsAccessor")," \u670d\u52a1\uff0c\u5982\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{13,22}","{13,22}":!0},"using Microsoft.AspNetCore.Builder;\nusing Microsoft.AspNetCore.Hosting;\nusing Microsoft.Extensions.DependencyInjection;\nusing Microsoft.Extensions.Hosting;\n\nnamespace Furion.Web.Core\n{\n [AppStartup(700)]\n public sealed class FurWebCoreStartup : AppStartup\n {\n public void ConfigureServices(IServiceCollection services)\n {\n services.AddCorsAccessor();\n\n // ...\n }\n\n public void Configure(IApplicationBuilder app, IWebHostEnvironment env)\n {\n //...\n\n app.UseCorsAccessor();\n\n // ...\n }\n }\n}\n")),(0,i.kt)("div",{className:"admonition admonition-caution alert alert--warning"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 16 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"}))),"\u7279\u522b\u6ce8\u610f")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},(0,i.kt)("inlineCode",{parentName:"p"},"services.AddCorsAccessor();")," \u9700\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"services.AddControllers()")," \u4e4b\u524d\u6ce8\u518c\u3002"),(0,i.kt)("p",{parentName:"div"},(0,i.kt)("inlineCode",{parentName:"p"},"app.UseCorsAccessor();")," \u9700\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"app.UseRouting();")," \u548c ",(0,i.kt)("inlineCode",{parentName:"p"},"app.UseAuthentication();")," \u4e4b\u95f4\u6ce8\u518c\u3002"))),(0,i.kt)("h3",{id:"1642-\u914d\u7f6e\u5141\u8bb8\u8de8\u57df\u57df\u540d"},"16.4.2 \u914d\u7f6e\u5141\u8bb8\u8de8\u57df\u57df\u540d"),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u5c0f\u63d0\u9192")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c",(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u5141\u8bb8\u6240\u6709\u57df\u540d\u6765\u6e90\u8bbf\u95ee\uff0c\u4e5f\u5c31\u662f\u65e0\u9700\u914d\u7f6e\u4efb\u4f55\u6765\u6e90\u57df\u540d\uff0c\u53e6\u5916\u524d\u7aef\u4e5f\u9700\u8981\u8bbe\u7f6e\u8bf7\u6c42\u53c2\u6570\uff1a",(0,i.kt)("inlineCode",{parentName:"p"},"withCredentials:false")))),(0,i.kt)("p",null,"\u5982\u679c\u9700\u8981\u6307\u5b9a\u7279\u5b9a\u57df\u540d\uff0c\u5219\u6dfb\u52a0\u4ee5\u4e0b\u914d\u7f6e\u5373\u53ef\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-json",metastring:"{4}","{4}":!0},'{\n "CorsAccessorSettings": {\n "PolicyName": "\u81ea\u5b9a\u4e49\u8de8\u57df\u7b56\u7565\u540d",\n "WithOrigins": ["http://localhost:4200", "https://furion.pro"]\n }\n}\n')),(0,i.kt)("h2",{id:"165-corsaccessorsettings-\u914d\u7f6e"},"16.5 ",(0,i.kt)("inlineCode",{parentName:"h2"},"CorsAccessorSettings")," \u914d\u7f6e"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"CorsAccessorSettings"),(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"PolicyName"),"\uff1a\u8de8\u57df\u7b56\u7565\u540d\uff0c\u5b57\u7b26\u4e32\u7c7b\u578b\uff0c\u5fc5\u586b\uff0c\u9ed8\u8ba4 ",(0,i.kt)("inlineCode",{parentName:"li"},"FurCorsAccessor")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"WithOrigins"),"\uff1a\u5141\u8bb8\u8de8\u57df\u7684\u57df\u540d\u5217\u8868\uff0c\u5b57\u7b26\u4e32\u6570\u7ec4\u7c7b\u578b\uff0c\u9ed8\u8ba4 ",(0,i.kt)("inlineCode",{parentName:"li"},'[ "http://localhost:4200" ]')),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"WithHeaders"),"\uff1a\u8bf7\u6c42\u8868\u5934\uff0c\u6ca1\u6709\u914d\u7f6e\u5219\u5141\u8bb8\u6240\u6709\u8868\u5934\uff0c\u5b57\u7b26\u4e32\u6570\u7ec4\u7c7b\u578b"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"WithExposedHeaders"),"\uff1a\u54cd\u5e94\u6807\u5934\uff0c\u5b57\u7b26\u4e32\u6570\u7ec4\u7c7b\u578b"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"WithMethods"),"\uff1a\u8bbe\u7f6e\u8de8\u57df\u5141\u8bb8\u8bf7\u6c42\u8c13\u8bcd\uff0c\u6ca1\u6709\u914d\u7f6e\u5219\u5141\u8bb8\u6240\u6709\uff0c\u5b57\u7b26\u4e32\u6570\u7ec4\u7c7b\u578b"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"AllowCredentials"),"\uff1a\u8de8\u57df\u8bf7\u6c42\u4e2d\u7684\u51ed\u636e\uff0c",(0,i.kt)("inlineCode",{parentName:"li"},"bool")," \u7c7b\u578b"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"SetPreflightMaxAge"),"\uff1a\u8bbe\u7f6e\u9884\u68c0\u8fc7\u671f\u65f6\u95f4\uff0c",(0,i.kt)("inlineCode",{parentName:"li"},"int")," \u7c7b\u578b\uff0c\u5355\u4f4d\u79d2\uff0c**\u6b64\u914d\u7f6e\u53ef\u4ee5\u63a7\u5236\u5ba2\u6237\u7aef\u53d1\u9001\u975e ",(0,i.kt)("inlineCode",{parentName:"li"},"GET"),"\uff0c",(0,i.kt)("inlineCode",{parentName:"li"},"HEAD"),"\uff0c",(0,i.kt)("inlineCode",{parentName:"li"},"POST")," \u8bf7\u6c42\u524d\u53d1\u9001 ",(0,i.kt)("inlineCode",{parentName:"li"},"OPTION")," \u8bf7\u6c42\u68c0\u67e5\uff0c\u72b6\u6001\u7801\uff08204\uff09")))),(0,i.kt)("h2",{id:"166-\u4f7f\u7528-axios-\u524d\u7aef\u6ce8\u610f\u4e8b\u9879"},"16.6 \u4f7f\u7528 ",(0,i.kt)("inlineCode",{parentName:"h2"},"axios")," \u524d\u7aef\u6ce8\u610f\u4e8b\u9879"),(0,i.kt)("p",null,"\u7531\u4e8e ",(0,i.kt)("inlineCode",{parentName:"p"},"axios")," \u5bf9\u8de8\u57df\u6709\u7279\u5b9a\u7684\u9700\u8981\uff0c\u9700\u8981\u54cd\u5e94\u62a5\u6587\u4e2d\u516c\u5f00\u7279\u5b9a ",(0,i.kt)("inlineCode",{parentName:"p"},"Header")," \u624d\u80fd\u653e\u884c\uff0c\u5982\uff1a",(0,i.kt)("inlineCode",{parentName:"p"},"Access-Control-Expose-Headers: xxxxx"),"\uff0c\u6240\u4ee5\uff0c\u5982\u679c\u524d\u7aef\u4f7f\u7528\u4e86 ",(0,i.kt)("inlineCode",{parentName:"p"},"axios")," \u8bf7\u6c42\uff0c\u9700\u8981\u6dfb\u52a0\u4ee5\u4e0b\u914d\u7f6e\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'{\n "CorsAccessorSettings": {\n "WithExposedHeaders": ["access-token","x-access-token"]\n }\n}\n')),(0,i.kt)("p",null,"\u53e6\u5916\u8bf7\u6c42\u8bbe\u7f6e ",(0,i.kt)("inlineCode",{parentName:"p"},"withCredentials: false")," \u5373\u53ef\u3002"),(0,i.kt)("h2",{id:"167-\u4f7f\u7528-ajax-\u524d\u7aef\u6ce8\u610f\u4e8b\u9879"},"16.7 \u4f7f\u7528 ",(0,i.kt)("inlineCode",{parentName:"h2"},"$.ajax")," \u524d\u7aef\u6ce8\u610f\u4e8b\u9879"),(0,i.kt)("p",null,"\u4f7f\u7528 ",(0,i.kt)("inlineCode",{parentName:"p"},"Jquery")," \u524d\u7aef\u8bf7\u6c42\u53ef\u4ee5\u53c2\u8003\u4ee5\u4e0b\u914d\u7f6e\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{4-7}","{4-7}":!0},'$.ajax({\n \xa0 \xa0 \xa0 \xa0url: "http://localhost:8080/getdata",\n \xa0 \xa0 \xa0 \xa0type: "GET",\n \xa0 \xa0 \xa0 \xa0xhrFields: {\n \xa0 \xa0 \xa0 \xa0\xa0 \xa0 withCredentials: false // \u5982\u679c\u662fhttps\u8bf7\u6c42\uff0c\u53ef\u4ee5\u8bd5\u8bd5 true\n \xa0 \xa0 \xa0 \xa0},\n \xa0 \xa0 \xa0 \xa0crossDomain: true,\n \xa0 \xa0 \xa0 \xa0success: function (res) {\n \xa0 \xa0 \xa0 \xa0\xa0 \xa0 render(res);\n \xa0 \xa0 \xa0 \xa0}\n});\n')),(0,i.kt)("h2",{id:"168-\u7981\u7528\u8de8\u57df"},"16.8 \u7981\u7528\u8de8\u57df"),(0,i.kt)("p",null,"\u6709\u65f6\u5019\uff0c\u6211\u4eec\u5e0c\u671b\u67d0\u4e2a\u65b9\u6cd5\u4e0d\u68c0\u67e5\u8de8\u57df\u8bf7\u6c42\uff0c\u53ef\u4ee5\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Action")," \u4e2d\u8d34 ",(0,i.kt)("inlineCode",{parentName:"p"},"[DisableCors]")," \u7279\u6027\u5373\u53ef\u3002"),(0,i.kt)("h2",{id:"169-\u53cd\u9988\u4e0e\u5efa\u8bae"},"16.9 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,i.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))),(0,i.kt)("hr",null),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e86\u89e3\u66f4\u591a")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u60f3\u4e86\u89e3\u66f4\u591a ",(0,i.kt)("inlineCode",{parentName:"p"},"\u8de8\u57df\u8bf7\u6c42")," \u77e5\u8bc6\u53ef\u67e5\u9605 ",(0,i.kt)("a",{parentName:"p",href:"https://docs.microsoft.com/zh-cn/aspnet/core/security/cors?view=aspnetcore-5.0"},"ASP.NET Core - \u542f\u7528\u8de8\u57df\u8bf7\u6c42")," \u7ae0\u8282\u3002"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/01a85c17.5bc1d18e.js b/handbook/build/assets/js/01a85c17.5bc1d18e.js deleted file mode 100644 index 52b770a3e4d..00000000000 --- a/handbook/build/assets/js/01a85c17.5bc1d18e.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[4013,5965],{6165:function(e,t,r){r.d(t,{Z:function(){return b}});var n=r(3366),a=r(7294),l=r(6010),o=r(6199),c=r(6742),s="sidebar_2ahu",i="sidebarItemTitle_2hhb",m="sidebarItemList_2xAf",u="sidebarItem_2UVv",f="sidebarItemLink_1RT6",d="sidebarItemLinkActive_12pM",v=r(4973);function g(e){var t=e.sidebar;return 0===t.items.length?null:a.createElement("nav",{className:(0,l.Z)(s,"thin-scrollbar"),"aria-label":(0,v.I)({id:"theme.blog.sidebar.navAriaLabel",message:"Blog recent posts navigation",description:"The ARIA label for recent posts in the blog sidebar"})},a.createElement("div",{className:(0,l.Z)(i,"margin-bottom--md")},t.title),a.createElement("ul",{className:m},t.items.map((function(e){return a.createElement("li",{key:e.permalink,className:u},a.createElement(c.Z,{isNavLink:!0,to:e.permalink,className:f,activeClassName:d},e.title))}))))}var h=r(571),E=["sidebar","toc","children"];var b=function(e){var t=e.sidebar,r=e.toc,c=e.children,s=(0,n.Z)(e,E),i=t&&t.items.length>0;return a.createElement(o.Z,s,a.createElement("div",{className:"container margin-vert--lg"},a.createElement("div",{className:"row"},i&&a.createElement("aside",{className:"col col--3"},a.createElement(g,{sidebar:t})),a.createElement("main",{className:(0,l.Z)("col",{"col--7":i,"col--9 col--offset-1":!i})},c),r&&a.createElement("div",{className:"col col--2"},a.createElement(h.Z,{toc:r})))))}},94:function(e,t,r){r.r(t);var n=r(7294),a=r(6742),l=r(6165),o=r(4973),c=r(3018);t.default=function(e){var t=e.tags,r=e.sidebar,s=(0,o.I)({id:"theme.tags.tagsPageTitle",message:"Tags",description:"The title of the tag list page"}),i={};Object.keys(t).forEach((function(e){var t=function(e){return e[0].toUpperCase()}(e);i[t]=i[t]||[],i[t].push(e)}));var m=Object.entries(i).sort((function(e,t){var r=e[0],n=t[0];return r.localeCompare(n)})).map((function(e){var r=e[0],l=e[1];return n.createElement("article",{key:r},n.createElement("h2",null,r),l.map((function(e){return n.createElement(a.Z,{className:"padding-right--md",href:t[e].permalink,key:e},t[e].name," (",t[e].count,")")})),n.createElement("hr",null))})).filter((function(e){return null!=e}));return n.createElement(l.Z,{title:s,wrapperClassName:c.kM.wrapper.blogPages,pageClassName:c.kM.page.blogTagsListPage,searchMetadatas:{tag:"blog_tags_list"},sidebar:r},n.createElement("h1",null,s),n.createElement("section",{className:"margin-vert--lg"},m))}},571:function(e,t,r){r.d(t,{r:function(){return s},Z:function(){return i}});var n=r(7294),a=r(6010);var l=function(e,t,r){var a=(0,n.useState)(void 0),l=a[0],o=a[1];(0,n.useEffect)((function(){function n(){var n=function(){var e=Array.from(document.getElementsByClassName("anchor")),t=e.find((function(e){return e.getBoundingClientRect().top>=r}));if(t){if(t.getBoundingClientRect().top>=r){var n=e[e.indexOf(t)-1];return null!=n?n:t}return t}return e[e.length-1]}();if(n)for(var a=0,c=!1,s=document.getElementsByClassName(e);a0&&l.createElement("div",{className:"row footer__links"},a.map((function(e,t){return l.createElement("div",{key:t,className:"col footer__col"},null!=e.title?l.createElement("h4",{className:"footer__title"},e.title):null,null!=e.items&&Array.isArray(e.items)&&e.items.length>0?l.createElement("ul",{className:"footer__items"},e.items.map((function(e,t){return e.html?l.createElement("li",{key:t,className:"footer__item",dangerouslySetInnerHTML:{__html:e.html}}):l.createElement("li",{key:e.href||e.to,className:"footer__item"},l.createElement(f,e))}))):null)}))),(u||r)&&l.createElement("div",{className:"footer__bottom text--center"},u&&u.src&&l.createElement("div",{className:"margin-bottom--sm"},u.href?l.createElement("a",{href:u.href,target:"_blank",rel:"noopener noreferrer",className:m},l.createElement(d,{alt:u.alt,url:v})):l.createElement(d,{alt:u.alt,url:v})),r?l.createElement("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:r}}):null))):null}}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/01a85c17.7d421bde.js b/handbook/build/assets/js/01a85c17.7d421bde.js new file mode 100644 index 00000000000..9c0bb5701cd --- /dev/null +++ b/handbook/build/assets/js/01a85c17.7d421bde.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[4013,613],{6165:function(e,t,r){r.d(t,{Z:function(){return _}});var n=r(3366),a=r(7294),l=r(6010),c=r(4328),o=r(6742),i="sidebar_2ahu",s="sidebarItemTitle_2hhb",m="sidebarItemList_2xAf",u="sidebarItem_2UVv",f="sidebarItemLink_1RT6",d="sidebarItemLinkActive_12pM",v=r(4973);function h(e){var t=e.sidebar;return 0===t.items.length?null:a.createElement("nav",{className:(0,l.Z)(i,"thin-scrollbar"),"aria-label":(0,v.I)({id:"theme.blog.sidebar.navAriaLabel",message:"Blog recent posts navigation",description:"The ARIA label for recent posts in the blog sidebar"})},a.createElement("div",{className:(0,l.Z)(s,"margin-bottom--md")},t.title),a.createElement("ul",{className:m},t.items.map((function(e){return a.createElement("li",{key:e.permalink,className:u},a.createElement(o.Z,{isNavLink:!0,to:e.permalink,className:f,activeClassName:d},e.title))}))))}var E=r(571),g=["sidebar","toc","children"];var _=function(e){var t=e.sidebar,r=e.toc,o=e.children,i=(0,n.Z)(e,g),s=t&&t.items.length>0;return a.createElement(c.Z,i,a.createElement("div",{className:"container margin-vert--lg"},a.createElement("div",{className:"row"},s&&a.createElement("aside",{className:"col col--3"},a.createElement(h,{sidebar:t})),a.createElement("main",{className:(0,l.Z)("col",{"col--7":s,"col--9 col--offset-1":!s}),itemScope:!0,itemType:"http://schema.org/Blog"},o),r&&a.createElement("div",{className:"col col--2"},a.createElement(E.Z,{toc:r})))))}},94:function(e,t,r){r.r(t);var n=r(7294),a=r(6165),l=r(6584),c=r(941);t.default=function(e){var t=e.tags,r=e.sidebar,o=(0,c.MA)();return n.createElement(a.Z,{title:o,wrapperClassName:c.kM.wrapper.blogPages,pageClassName:c.kM.page.blogTagsListPage,searchMetadatas:{tag:"blog_tags_list"},sidebar:r},n.createElement("h1",null,o),n.createElement(l.Z,{tags:Object.values(t)}))}},571:function(e,t,r){r.d(t,{r:function(){return d},Z:function(){return v}});var n=r(7294),a=r(6010),l=r(941);function c(e){var t=e.getBoundingClientRect();return t.top===t.bottom?c(e.parentNode):t}function o(e){var t,r=e.anchorTopOffset,n=Array.from(document.querySelectorAll(".anchor.anchor__h2, .anchor.anchor__h3")),a=n.find((function(e){return c(e).top>=r}));return a?function(e){return e.top>0&&e.bottom0&&l.createElement("div",{className:"row footer__links"},a.map((function(e,t){return l.createElement("div",{key:t,className:"col footer__col"},null!=e.title?l.createElement("h4",{className:"footer__title"},e.title):null,null!=e.items&&Array.isArray(e.items)&&e.items.length>0?l.createElement("ul",{className:"footer__items"},e.items.map((function(e,t){return e.html?l.createElement("li",{key:t,className:"footer__item",dangerouslySetInnerHTML:{__html:e.html}}):l.createElement("li",{key:e.href||e.to,className:"footer__item"},l.createElement(f,e))}))):null)}))),(u||r)&&l.createElement("div",{className:"footer__bottom text--center"},u&&u.src&&l.createElement("div",{className:"margin-bottom--sm"},u.href?l.createElement("a",{href:u.href,target:"_blank",rel:"noopener noreferrer",className:m},l.createElement(d,{alt:u.alt,url:v})):l.createElement(d,{alt:u.alt,url:v})),r?l.createElement("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:r}}):null))):null}}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/0249e0f1.3976d17e.js b/handbook/build/assets/js/0249e0f1.3976d17e.js new file mode 100644 index 00000000000..f9be0c90285 --- /dev/null +++ b/handbook/build/assets/js/0249e0f1.3976d17e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[590],{3905:function(e,t,n){n.d(t,{Zo:function(){return u},kt:function(){return f}});var r=n(7294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var c=r.createContext({}),p=function(e){var t=r.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},u=function(e){var t=p(e.components);return r.createElement(c.Provider,{value:t},e.children)},s={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,a=e.originalType,c=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),d=p(n),f=o,m=d["".concat(c,".").concat(f)]||d[f]||s[f]||a;return n?r.createElement(m,i(i({ref:t},u),{},{components:n})):r.createElement(m,i({ref:t},u))}));function f(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=n.length,i=new Array(a);i[0]=d;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l.mdxType="string"==typeof e?e:o,i[1]=l;for(var p=2;p=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var c=r.createContext({}),p=function(e){var t=r.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},u=function(e){var t=p(e.components);return r.createElement(c.Provider,{value:t},e.children)},s={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,a=e.originalType,c=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),d=p(n),f=o,m=d["".concat(c,".").concat(f)]||d[f]||s[f]||a;return n?r.createElement(m,i(i({ref:t},u),{},{components:n})):r.createElement(m,i({ref:t},u))}));function f(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=n.length,i=new Array(a);i[0]=d;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l.mdxType="string"==typeof e?e:o,i[1]=l;for(var p=2;p=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var p=a.createContext({}),m=function(e){var t=a.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},c=function(e){var t=m(e.components);return a.createElement(p.Provider,{value:t},e.children)},l={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},d=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,p=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),d=m(n),u=r,y=d["".concat(p,".").concat(u)]||d[u]||l[u]||i;return n?a.createElement(y,o(o({ref:t},c),{},{components:n})):a.createElement(y,o({ref:t},c))}));function u(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,o=new Array(i);o[0]=d;var s={};for(var p in t)hasOwnProperty.call(t,p)&&(s[p]=t[p]);s.originalType=e,s.mdxType="string"==typeof e?e:r,o[1]=s;for(var m=2;mIEntityChangedListener \u5b9a\u4e49",id:"9254-ientitychangedlistener-\u5b9a\u4e49",children:[]},{value:"9.25.5 [SuppressChangedListener] \u8df3\u8fc7\u76d1\u542c",id:"9255-suppresschangedlistener-\u8df3\u8fc7\u76d1\u542c",children:[]},{value:"9.25.6 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"9256-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],l={toc:c};function d(e){var t=e.components,n=(0,r.Z)(e,o);return(0,i.kt)("wrapper",(0,a.Z)({},l,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"9251-\u5b9e\u4f53\u6570\u636e\u76d1\u542c\u5668"},"9.25.1 \u5b9e\u4f53\u6570\u636e\u76d1\u542c\u5668"),(0,i.kt)("p",null,"\u5728\u6700\u65b0\u7684 ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u7684 ",(0,i.kt)("inlineCode",{parentName:"p"},"1.1.6+")," \u7248\u672c\u4e2d\uff0c\u65b0\u589e\u4e86 ",(0,i.kt)("inlineCode",{parentName:"p"},"IEntityChangedListener")," \u5b9e\u4f53\u6570\u636e\u76d1\u542c\u63a5\u53e3\uff0c\u53ef\u4ee5\u76d1\u542c ",(0,i.kt)("inlineCode",{parentName:"p"},"EFCore")," \u4efb\u4f55\u5b9e\u4f53\u8868 ",(0,i.kt)("inlineCode",{parentName:"p"},"\u589e\u5220\u6539")," \u64cd\u4f5c\u3002"),(0,i.kt)("h2",{id:"9252-\u6709\u4f55\u4f5c\u7528"},"9.25.2 \u6709\u4f55\u4f5c\u7528"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"\u7c7b\u4f3c\u6570\u636e\u5e93 ",(0,i.kt)("inlineCode",{parentName:"li"},"\u89e6\u53d1\u5668")," \u529f\u80fd\uff0c\u53ef\u5b9e\u73b0 ",(0,i.kt)("inlineCode",{parentName:"li"},"\u589e\u5220\u6539")," \u76d1\u542c"),(0,i.kt)("li",{parentName:"ul"},"\u53ef\u4ee5\u5b9e\u73b0\u7279\u6b8a\u64cd\u4f5c\uff0c\u6bd4\u5982\u5237\u65b0\u7f13\u5b58\uff0c\u8bb0\u5f55\u65e5\u5fd7\u7b49")),(0,i.kt)("h2",{id:"9253-\u5982\u4f55\u4f7f\u7528"},"9.25.3 \u5982\u4f55\u4f7f\u7528"),(0,i.kt)("p",null,"\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\uff0c\u9ed8\u8ba4\u4e0d\u542f\u7528\u5b9e\u4f53\u6570\u636e\u76d1\u542c\u5668\uff0c\u5982\u60f3\u542f\u7528\uff0c\u53ea\u9700\u8981\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"\u6570\u636e\u5e93\u4e0a\u4e0b\u6587")," \u6784\u9020\u51fd\u6570\u4e2d\u542f\u7528\u5373\u53ef\uff1a"),(0,i.kt)("h3",{id:"92531-\u542f\u7528\u6570\u636e\u76d1\u542c"},"9.25.3.1 \u542f\u7528\u6570\u636e\u76d1\u542c"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{11}","{11}":!0},'using Furion.DatabaseAccessor;\nusing Microsoft.EntityFrameworkCore;\n\nnamespace Furion.EntityFramework.Core\n{\n [AppDbContext("Sqlite3ConnectionString")]\n public class DefaultDbContext : AppDbContext\n {\n public DefaultDbContext(DbContextOptions options) : base(options)\n {\n EnabledEntityChangedListener = true;\n }\n }\n}\n')),(0,i.kt)("h3",{id:"92532-\u76d1\u542c\u7279\u5b9a\u5b9e\u4f53\u6570\u636e"},"9.25.3.2 \u76d1\u542c\u7279\u5b9a\u5b9e\u4f53\u6570\u636e"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{9,30-41}","{9,30-41}":!0},'using Furion.DatabaseAccessor;\nusing Microsoft.EntityFrameworkCore;\nusing Microsoft.Extensions.Caching.Memory;\nusing System;\nusing System.Collections.Generic;\n\nnamespace Furion.Core\n{\n public class Post : Entity, IEntityChangedListener\n {\n /// \n /// \u6784\u9020\u51fd\u6570\n /// \n public Post()\n {\n CreatedTime = DateTimeOffset.UtcNow;\n IsDeleted = false;\n }\n\n /// \n /// \u540d\u79f0\n /// \n public string Name { get; set; }\n\n /// \n /// Person \u96c6\u5408\n /// \n public ICollection Persons { get; set; }\n\n /// \n /// \u5b9e\u4f53\u66f4\u6539\u540e\u89e6\u53d1\n /// \n /// \u65b0\u6570\u636e\n /// \u65e7\u6570\u636e\n /// \u6570\u636e\u5e93\u4e0a\u4e0b\u6587\n /// \u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u5b9a\u4f4d\u5668\n /// \u5b9e\u4f53\u72b6\u6001\n public void OnChanged(Post entity, Post oldEntity, DbContext dbContext, Type dbContextLocator, EntityState state)\n {\n // \u5237\u65b0\u7f13\u5b58\n App.GetService().Set("Key", "Value");\n }\n }\n}\n')),(0,i.kt)("h2",{id:"9254-ientitychangedlistener-\u5b9a\u4e49"},"9.25.4 ",(0,i.kt)("inlineCode",{parentName:"h2"},"IEntityChangedListener")," \u5b9a\u4e49"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{25}","{25}":!0},'/// \n/// \u5b9e\u4f53\u6570\u636e\u6539\u53d8\u76d1\u542c\u4f9d\u8d56\u63a5\u53e3\n/// \n/// \npublic interface IEntityChangedListener\n where TEntity : class, IPrivateEntity, new()\n{\n /// \n /// \u76d1\u542c\u6570\u636e\u6539\u53d8\u4e4b\u524d\uff08\u4ec5\u652f\u6301EFCore\u64cd\u4f5c\uff09\n /// \n /// \n /// \n /// \n /// \n void OnChanging(TEntity entity, DbContext dbContext, Type dbContextLocator, EntityState state) { }\n\n /// \n /// \u76d1\u542c\u6570\u636e\u6539\u53d8\u4e4b\u540e\uff08\u4ec5\u652f\u6301EFCore\u64cd\u4f5c\uff09\n /// \n /// \u65b0\u503c\n /// \u65e7\u503c\n /// \n /// \n /// \n void OnChanged(TEntity newEntity, TEntity oldEntity, DbContext dbContext, Type dbContextLocator, EntityState state);\n\n /// \n /// \u76d1\u542c\u6570\u636e\u6539\u53d8\u5931\u8d25\uff08\u4ec5\u652f\u6301EFCore\u64cd\u4f5c\uff09\n /// \n /// \n /// \n /// \n /// \n void OnChangeFailed(TEntity entity, DbContext dbContext, Type dbContextLocator, EntityState state) { }\n}\n')),(0,i.kt)("h2",{id:"9255-suppresschangedlistener-\u8df3\u8fc7\u76d1\u542c"},"9.25.5 ",(0,i.kt)("inlineCode",{parentName:"h2"},"[SuppressChangedListener]")," \u8df3\u8fc7\u76d1\u542c"),(0,i.kt)("p",null,"\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c",(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4f1a\u5bf9\u6240\u6709\u65b0\u589e\u3001\u66f4\u65b0\u3001\u7f16\u8f91\u7684\u5b9e\u4f53\u8fdb\u884c\u76d1\u542c\uff0c\u6709\u4e9b\u65f6\u5019\u6211\u4eec\u65e0\u9700\u76d1\u542c\u7279\u5b9a\u5b9e\u4f53\uff0c\u53ea\u9700\u8981\u5728\u5b9e\u4f53\u4e0a\u8d34 ",(0,i.kt)("inlineCode",{parentName:"p"},"[SuppressChangedListener]")," \u7279\u6027\u5373\u53ef\u3002"),(0,i.kt)("h2",{id:"9256-\u53cd\u9988\u4e0e\u5efa\u8bae"},"9.25.6 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,i.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/0482bd9e.afb80baf.js b/handbook/build/assets/js/0482bd9e.afb80baf.js new file mode 100644 index 00000000000..c0e66a851a9 --- /dev/null +++ b/handbook/build/assets/js/0482bd9e.afb80baf.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[3533],{3905:function(e,t,n){n.d(t,{Zo:function(){return c},kt:function(){return u}});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var p=a.createContext({}),m=function(e){var t=a.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},c=function(e){var t=m(e.components);return a.createElement(p.Provider,{value:t},e.children)},l={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},d=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,p=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),d=m(n),u=r,y=d["".concat(p,".").concat(u)]||d[u]||l[u]||i;return n?a.createElement(y,o(o({ref:t},c),{},{components:n})):a.createElement(y,o({ref:t},c))}));function u(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,o=new Array(i);o[0]=d;var s={};for(var p in t)hasOwnProperty.call(t,p)&&(s[p]=t[p]);s.originalType=e,s.mdxType="string"==typeof e?e:r,o[1]=s;for(var m=2;mIEntityChangedListener \u5b9a\u4e49",id:"9254-ientitychangedlistener-\u5b9a\u4e49",children:[]},{value:"9.25.5 [SuppressChangedListener] \u8df3\u8fc7\u76d1\u542c",id:"9255-suppresschangedlistener-\u8df3\u8fc7\u76d1\u542c",children:[]},{value:"9.25.6 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"9256-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],l={toc:c};function d(e){var t=e.components,n=(0,r.Z)(e,o);return(0,i.kt)("wrapper",(0,a.Z)({},l,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"9251-\u5b9e\u4f53\u6570\u636e\u76d1\u542c\u5668"},"9.25.1 \u5b9e\u4f53\u6570\u636e\u76d1\u542c\u5668"),(0,i.kt)("p",null,"\u5728\u6700\u65b0\u7684 ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u7684 ",(0,i.kt)("inlineCode",{parentName:"p"},"1.1.6+")," \u7248\u672c\u4e2d\uff0c\u65b0\u589e\u4e86 ",(0,i.kt)("inlineCode",{parentName:"p"},"IEntityChangedListener")," \u5b9e\u4f53\u6570\u636e\u76d1\u542c\u63a5\u53e3\uff0c\u53ef\u4ee5\u76d1\u542c ",(0,i.kt)("inlineCode",{parentName:"p"},"EFCore")," \u4efb\u4f55\u5b9e\u4f53\u8868 ",(0,i.kt)("inlineCode",{parentName:"p"},"\u589e\u5220\u6539")," \u64cd\u4f5c\u3002"),(0,i.kt)("h2",{id:"9252-\u6709\u4f55\u4f5c\u7528"},"9.25.2 \u6709\u4f55\u4f5c\u7528"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"\u7c7b\u4f3c\u6570\u636e\u5e93 ",(0,i.kt)("inlineCode",{parentName:"li"},"\u89e6\u53d1\u5668")," \u529f\u80fd\uff0c\u53ef\u5b9e\u73b0 ",(0,i.kt)("inlineCode",{parentName:"li"},"\u589e\u5220\u6539")," \u76d1\u542c"),(0,i.kt)("li",{parentName:"ul"},"\u53ef\u4ee5\u5b9e\u73b0\u7279\u6b8a\u64cd\u4f5c\uff0c\u6bd4\u5982\u5237\u65b0\u7f13\u5b58\uff0c\u8bb0\u5f55\u65e5\u5fd7\u7b49")),(0,i.kt)("h2",{id:"9253-\u5982\u4f55\u4f7f\u7528"},"9.25.3 \u5982\u4f55\u4f7f\u7528"),(0,i.kt)("p",null,"\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\uff0c\u9ed8\u8ba4\u4e0d\u542f\u7528\u5b9e\u4f53\u6570\u636e\u76d1\u542c\u5668\uff0c\u5982\u60f3\u542f\u7528\uff0c\u53ea\u9700\u8981\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"\u6570\u636e\u5e93\u4e0a\u4e0b\u6587")," \u6784\u9020\u51fd\u6570\u4e2d\u542f\u7528\u5373\u53ef\uff1a"),(0,i.kt)("h3",{id:"92531-\u542f\u7528\u6570\u636e\u76d1\u542c"},"9.25.3.1 \u542f\u7528\u6570\u636e\u76d1\u542c"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{11}","{11}":!0},'using Furion.DatabaseAccessor;\nusing Microsoft.EntityFrameworkCore;\n\nnamespace Furion.EntityFramework.Core\n{\n [AppDbContext("Sqlite3ConnectionString")]\n public class DefaultDbContext : AppDbContext\n {\n public DefaultDbContext(DbContextOptions options) : base(options)\n {\n EnabledEntityChangedListener = true;\n }\n }\n}\n')),(0,i.kt)("h3",{id:"92532-\u76d1\u542c\u7279\u5b9a\u5b9e\u4f53\u6570\u636e"},"9.25.3.2 \u76d1\u542c\u7279\u5b9a\u5b9e\u4f53\u6570\u636e"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{9,30-41}","{9,30-41}":!0},'using Furion.DatabaseAccessor;\nusing Microsoft.EntityFrameworkCore;\nusing Microsoft.Extensions.Caching.Memory;\nusing System;\nusing System.Collections.Generic;\n\nnamespace Furion.Core\n{\n public class Post : Entity, IEntityChangedListener\n {\n /// \n /// \u6784\u9020\u51fd\u6570\n /// \n public Post()\n {\n CreatedTime = DateTimeOffset.UtcNow;\n IsDeleted = false;\n }\n\n /// \n /// \u540d\u79f0\n /// \n public string Name { get; set; }\n\n /// \n /// Person \u96c6\u5408\n /// \n public ICollection Persons { get; set; }\n\n /// \n /// \u5b9e\u4f53\u66f4\u6539\u540e\u89e6\u53d1\n /// \n /// \u65b0\u6570\u636e\n /// \u65e7\u6570\u636e\n /// \u6570\u636e\u5e93\u4e0a\u4e0b\u6587\n /// \u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u5b9a\u4f4d\u5668\n /// \u5b9e\u4f53\u72b6\u6001\n public void OnChanged(Post entity, Post oldEntity, DbContext dbContext, Type dbContextLocator, EntityState state)\n {\n // \u5237\u65b0\u7f13\u5b58\n App.GetService().Set("Key", "Value");\n }\n }\n}\n')),(0,i.kt)("h2",{id:"9254-ientitychangedlistener-\u5b9a\u4e49"},"9.25.4 ",(0,i.kt)("inlineCode",{parentName:"h2"},"IEntityChangedListener")," \u5b9a\u4e49"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{25}","{25}":!0},'/// \n/// \u5b9e\u4f53\u6570\u636e\u6539\u53d8\u76d1\u542c\u4f9d\u8d56\u63a5\u53e3\n/// \n/// \npublic interface IEntityChangedListener\n where TEntity : class, IPrivateEntity, new()\n{\n /// \n /// \u76d1\u542c\u6570\u636e\u6539\u53d8\u4e4b\u524d\uff08\u4ec5\u652f\u6301EFCore\u64cd\u4f5c\uff09\n /// \n /// \n /// \n /// \n /// \n void OnChanging(TEntity entity, DbContext dbContext, Type dbContextLocator, EntityState state) { }\n\n /// \n /// \u76d1\u542c\u6570\u636e\u6539\u53d8\u4e4b\u540e\uff08\u4ec5\u652f\u6301EFCore\u64cd\u4f5c\uff09\n /// \n /// \u65b0\u503c\n /// \u65e7\u503c\n /// \n /// \n /// \n void OnChanged(TEntity newEntity, TEntity oldEntity, DbContext dbContext, Type dbContextLocator, EntityState state);\n\n /// \n /// \u76d1\u542c\u6570\u636e\u6539\u53d8\u5931\u8d25\uff08\u4ec5\u652f\u6301EFCore\u64cd\u4f5c\uff09\n /// \n /// \n /// \n /// \n /// \n void OnChangeFailed(TEntity entity, DbContext dbContext, Type dbContextLocator, EntityState state) { }\n}\n')),(0,i.kt)("h2",{id:"9255-suppresschangedlistener-\u8df3\u8fc7\u76d1\u542c"},"9.25.5 ",(0,i.kt)("inlineCode",{parentName:"h2"},"[SuppressChangedListener]")," \u8df3\u8fc7\u76d1\u542c"),(0,i.kt)("p",null,"\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c",(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4f1a\u5bf9\u6240\u6709\u65b0\u589e\u3001\u66f4\u65b0\u3001\u7f16\u8f91\u7684\u5b9e\u4f53\u8fdb\u884c\u76d1\u542c\uff0c\u6709\u4e9b\u65f6\u5019\u6211\u4eec\u65e0\u9700\u76d1\u542c\u7279\u5b9a\u5b9e\u4f53\uff0c\u53ea\u9700\u8981\u5728\u5b9e\u4f53\u4e0a\u8d34 ",(0,i.kt)("inlineCode",{parentName:"p"},"[SuppressChangedListener]")," \u7279\u6027\u5373\u53ef\u3002"),(0,i.kt)("h2",{id:"9256-\u53cd\u9988\u4e0e\u5efa\u8bae"},"9.25.6 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,i.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/04b9380e.40a2b1a6.js b/handbook/build/assets/js/04b9380e.40a2b1a6.js new file mode 100644 index 00000000000..b1c8c49a691 --- /dev/null +++ b/handbook/build/assets/js/04b9380e.40a2b1a6.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[3867],{3905:function(e,n,t){t.d(n,{Zo:function(){return p},kt:function(){return u}});var r=t(7294);function a(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function s(e){for(var n=1;n=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var c=r.createContext({}),l=function(e){var n=r.useContext(c),t=n;return e&&(t="function"==typeof e?e(n):s(s({},n),e)),t},p=function(e){var n=l(e.components);return r.createElement(c.Provider,{value:n},e.children)},d={inlineCode:"code",wrapper:function(e){var n=e.children;return r.createElement(r.Fragment,{},n)}},m=r.forwardRef((function(e,n){var t=e.components,a=e.mdxType,i=e.originalType,c=e.parentName,p=o(e,["components","mdxType","originalType","parentName"]),m=l(t),u=a,v=m["".concat(c,".").concat(u)]||m[u]||d[u]||i;return t?r.createElement(v,s(s({ref:n},p),{},{components:t})):r.createElement(v,s({ref:n},p))}));function u(e,n){var t=arguments,a=n&&n.mdxType;if("string"==typeof e||a){var i=t.length,s=new Array(i);s[0]=m;var o={};for(var c in n)hasOwnProperty.call(n,c)&&(o[c]=n[c]);o.originalType=e,o.mdxType="string"==typeof e?e:a,s[1]=o;for(var l=2;lMessageCenter \u6d88\u606f\u4e2d\u5fc3",id:"222-messagecenter-\u6d88\u606f\u4e2d\u5fc3",children:[{value:"22.2.1 \u6ce8\u518c \u8f7b\u91cf\u7ea7\u4e8b\u4ef6\u603b\u7ebf\u670d\u52a1",id:"2221-\u6ce8\u518c-\u8f7b\u91cf\u7ea7\u4e8b\u4ef6\u603b\u7ebf\u670d\u52a1",children:[]},{value:"22.2.2 \u5b9a\u4e49\u8ba2\u9605\u5904\u7406\u7a0b\u5e8f",id:"2222-\u5b9a\u4e49\u8ba2\u9605\u5904\u7406\u7a0b\u5e8f",children:[]},{value:"22.2.3 \u53d1\u5e03\u6d88\u606f",id:"2223-\u53d1\u5e03\u6d88\u606f",children:[]},{value:"22.2.4 \u76f4\u63a5\u8ba2\u9605\u6d88\u606f",id:"2224-\u76f4\u63a5\u8ba2\u9605\u6d88\u606f",children:[]}]},{value:"22.3 \u540c\u6b65\u65b9\u5f0f\u6267\u884c",id:"223-\u540c\u6b65\u65b9\u5f0f\u6267\u884c",children:[]},{value:"22.4 \u5173\u4e8e\u4f9d\u8d56\u6ce8\u5165",id:"224-\u5173\u4e8e\u4f9d\u8d56\u6ce8\u5165",children:[]},{value:"22.5 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"225-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],m={toc:d};function u(e){var n=e.components,t=(0,a.Z)(e,o);return(0,i.kt)("wrapper",(0,r.Z)({},m,t,{components:n,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"221-\u4ec0\u4e48\u662f\u4e8b\u4ef6\u603b\u7ebf"},"22.1 \u4ec0\u4e48\u662f\u4e8b\u4ef6\u603b\u7ebf"),(0,i.kt)("p",null,"\u4e8b\u4ef6\u603b\u7ebf\u662f\u5bf9\u53d1\u5e03-\u8ba2\u9605\u6a21\u5f0f\u7684\u4e00\u79cd\u5b9e\u73b0\u3002\u5b83\u662f\u4e00\u79cd\u96c6\u4e2d\u5f0f\u4e8b\u4ef6\u5904\u7406\u673a\u5236\uff0c\u5141\u8bb8\u4e0d\u540c\u7684\u7ec4\u4ef6\u4e4b\u95f4\u8fdb\u884c\u5f7c\u6b64\u901a\u4fe1\u800c\u53c8\u4e0d\u9700\u8981\u76f8\u4e92\u4f9d\u8d56\uff0c\u8fbe\u5230\u4e00\u79cd\u89e3\u8026\u7684\u76ee\u7684\u3002"),(0,i.kt)("p",null,"\u6211\u4eec\u6765\u770b\u770b\u4e8b\u4ef6\u603b\u7ebf\u7684\u5904\u7406\u6d41\u7a0b\uff1a"),(0,i.kt)("img",{src:(0,s.Z)("img/event1.png")}),(0,i.kt)("h2",{id:"222-messagecenter-\u6d88\u606f\u4e2d\u5fc3"},"22.2 ",(0,i.kt)("inlineCode",{parentName:"h2"},"MessageCenter")," \u6d88\u606f\u4e2d\u5fc3"),(0,i.kt)("p",null,"\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\uff0c\u5b9e\u73b0\u4e86\u4e00\u79cd\u8f7b\u91cf\u7ea7\u7684\u4e8b\u4ef6\u603b\u7ebf\u5b9e\u73b0\u673a\u5236\uff1a",(0,i.kt)("inlineCode",{parentName:"p"},"MessageCenter"),"\uff08\u6d88\u606f\u4e2d\u5fc3\uff09\uff0c",(0,i.kt)("inlineCode",{parentName:"p"},"MessageCenter")," \u91c7\u7528\u5b57\u7b26\u4e32\u6d88\u606f\u673a\u5236\u8fdb\u884c\u5e7f\u64ad\uff0c \u53ef\u4ee5\u5728\u7edd\u5927\u591a\u6570\u4e2d\u5c0f\u578b\u9879\u76ee\u4e2d\u53d1\u6325\u4f5c\u7528\uff0c\u7f3a\u70b9\u662f\u6d88\u606f\u5904\u7406\u662f\u5728\u4e3b\u7ebf\u7a0b\u4e2d\u5b8c\u6210\u5e76\u4e14\u6d88\u606f\u4e0d\u652f\u6301\u5206\u5e03\u5f0f\u5b58\u50a8\u3002"),(0,i.kt)("p",null,"\u53e6\u5916\uff0c",(0,i.kt)("inlineCode",{parentName:"p"},"MessageCenter")," \u652f\u6301\u5355\u64ad\u3001\u591a\u64ad\u53d1\u5e03\u53ca\u591a\u8ba2\u9605\u3002\u5982\u56fe\u6240\u793a\uff1a"),(0,i.kt)("img",{src:(0,s.Z)("img/event2.png")}),(0,i.kt)("h3",{id:"2221-\u6ce8\u518c-\u8f7b\u91cf\u7ea7\u4e8b\u4ef6\u603b\u7ebf\u670d\u52a1"},"22.2.1 \u6ce8\u518c ",(0,i.kt)("inlineCode",{parentName:"h3"},"\u8f7b\u91cf\u7ea7\u4e8b\u4ef6\u603b\u7ebf\u670d\u52a1")),(0,i.kt)("p",null,"\u5982\u679c\u60f3\u4f7f\u7528 ",(0,i.kt)("inlineCode",{parentName:"p"},"MessageCenter")," \u8f7b\u91cf\u7ea7\u4e8b\u4ef6\u603b\u7ebf\uff0c\u53ea\u9700\u8981\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Startup.cs")," \u4e2d\u6ce8\u518c\u670d\u52a1\u5373\u53ef\uff0c\u5982\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{3}","{3}":!0},"public void ConfigureServices(IServiceCollection services)\n{\n services.AddSimpleEventBus();\n}\n")),(0,i.kt)("h3",{id:"2222-\u5b9a\u4e49\u8ba2\u9605\u5904\u7406\u7a0b\u5e8f"},"22.2.2 \u5b9a\u4e49\u8ba2\u9605\u5904\u7406\u7a0b\u5e8f"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"MessageCenter")," \u662f\u6839\u636e ",(0,i.kt)("inlineCode",{parentName:"p"},"MesseageId")," \u6d88\u606f Id \u6765\u89e6\u53d1\u5bf9\u5e94\u7684\u5904\u7406\u7a0b\u5e8f\u7684\uff0c\u6240\u4ee5\u6211\u4eec\u9700\u8981\u5b9a\u4e49 ",(0,i.kt)("inlineCode",{parentName:"p"},"\u8ba2\u9605\u5904\u7406\u7a0b\u5e8f\u7c7b"),"\uff0c\u8be5\u7c7b\u9700\u5b9e\u73b0 ",(0,i.kt)("inlineCode",{parentName:"p"},"ISubscribeHandler")," \u63a5\u53e3\uff0c\u5982\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,4-5,11-13}","{1,4-5,11-13}":!0},'public class UserChangeSubscribeHandler : ISubscribeHandler\n{\n // \u5b9a\u4e49\u4e00\u6761\u6d88\u606f\n [SubscribeMessage("create:user")]\n public void CreateUser(string eventId, object payload)\n {\n Console.WriteLine("\u6211\u662f"+eventId);\n }\n\n // \u591a\u6761\u6d88\u606f\u5171\u7528\u540c\u4e00\u4e2a\u5904\u7406\u7a0b\u5e8f\n [SubscribeMessage("delete:user")]\n [SubscribeMessage("remove:user")]\n public void RemoveUser(string eventId, object payload)\n {\n Console.WriteLine("\u6211\u662f"+eventId);\n }\n\n // \u652f\u6301\u5f02\u6b65\n [SubscribeMessage("delete:user")]\n public async Task SupportAsync(string eventId, object payload)\n {\n await MethodAsync();\n }\n}\n')),(0,i.kt)("h3",{id:"2223-\u53d1\u5e03\u6d88\u606f"},"22.2.3 \u53d1\u5e03\u6d88\u606f"),(0,i.kt)("p",null,"\u5b9a\u4e49\u597d\u8ba2\u9605\u5904\u7406\u7a0b\u5e8f\u540e\uff0c\u6211\u4eec\u5c31\u53ef\u4ee5\u5728\u7a0b\u5e8f\u4efb\u4f55\u5730\u65b9\u8fdb\u884c\u5e7f\u64ad\u6d88\u606f\uff0c\u4e8b\u4ef6\u603b\u7ebf\u4f1a\u81ea\u52a8\u6839\u636e ",(0,i.kt)("inlineCode",{parentName:"p"},"\u6d88\u606f Id")," \u89e6\u53d1\u5bf9\u5e94\u7684\u5904\u7406\u7a0b\u5e8f\u65b9\u6cd5\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'MessageCenter.Send("create:user", new User {}); // => \u6253\u5370\uff1a\u6211\u662fcreate:user\n\nMessageCenter.Send("delete:user", new User {}); // => \u6253\u5370\uff1a\u6211\u662fdelete:user\nMessageCenter.Send("remove:user", new User {}); // => \u6253\u5370\uff1a\u6211\u662fremove:user\n')),(0,i.kt)("h3",{id:"2224-\u76f4\u63a5\u8ba2\u9605\u6d88\u606f"},"22.2.4 \u76f4\u63a5\u8ba2\u9605\u6d88\u606f"),(0,i.kt)("p",null,"\u5728\u4e0a\u9762\u7684\u4f8b\u5b50\u4e2d\uff0c\u6211\u4eec\u9700\u8981\u521b\u5efa ",(0,i.kt)("inlineCode",{parentName:"p"},"ISubscribeHandler")," \u7684\u6d3e\u751f\u7c7b\u8fdb\u884c\u76f8\u5173\u914d\u7f6e\u624d\u80fd\u5b9e\u73b0\u8ba2\u9605\u5904\u7406\u3002"),(0,i.kt)("p",null,"\u5728\u67d0\u4e9b\u7279\u6b8a\u60c5\u51b5\u4e0b\uff0c\u53ef\u80fd\u53ea\u9700\u8981\u8ba2\u9605\u4e00\u6b21\u5373\u53ef\u3002\u6240\u4ee5\uff0c\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\uff0c\u4e3a\u4e86\u66f4\u7b80\u4fbf\u7684\u8ba2\u9605\u6d88\u606f\uff0c\u4e5f\u63d0\u4f9b\u4e86 ",(0,i.kt)("inlineCode",{parentName:"p"},"MessageCenter.Subscribe")," \u9759\u6001\u65b9\u6cd5\uff0c\u5982\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'MessageCenter.Subscribe("create:user", (i,p) => {\n // do something\u3002\u3002\u3002\n});\n')),(0,i.kt)("h2",{id:"223-\u540c\u6b65\u65b9\u5f0f\u6267\u884c"},"22.3 \u540c\u6b65\u65b9\u5f0f\u6267\u884c"),(0,i.kt)("p",null,"\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c\u4e8b\u4ef6\u603b\u7ebf\u603b\u662f\u91c7\u7528\u65b0\u7ebf\u7a0b\u65b9\u5f0f\u6267\u884c\uff0c\u4f46\u662f\u6211\u4eec\u53ef\u4ee5\u914d\u7f6e\u4e3a\u540c\u6b65\u65b9\u5f0f\uff0c\u5982\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'MessageCenter.Send("create:user", isSync: true);\n')),(0,i.kt)("h2",{id:"224-\u5173\u4e8e\u4f9d\u8d56\u6ce8\u5165"},"22.4 \u5173\u4e8e\u4f9d\u8d56\u6ce8\u5165"),(0,i.kt)("p",null,"\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\uff0c\u4e8b\u4ef6\u603b\u7ebf\u662f\u4e0d\u652f\u6301\u6784\u9020\u51fd\u6570\u6ce8\u5165\u7684\uff0c\u800c\u4e14\u6784\u9020\u51fd\u6570\u4e5f\u53ea\u4f1a\u6267\u884c\u4e00\u6b21\u3002\u6240\u4ee5\u9700\u8981\u7528\u5230\u670d\u52a1\uff0c\u5e94\u8be5\u901a\u8fc7\u9759\u6001\u7c7b\u89e3\u6790\uff0c",(0,i.kt)("inlineCode",{parentName:"p"},"App.GetService()")," \u6216 ",(0,i.kt)("inlineCode",{parentName:"p"},"Db.GetRepository()"),"\u3002"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{5,12-20}","{5,12-20}":!0},'public class UserChangeSubscribeHandler : ISubscribeHandler\n{\n public UserChangeSubscribeHandler()\n {\n // \u4e0d\u652f\u6301\u8fd9\u91cc\u89e3\u6790\u670d\u52a1\uff01\uff01\uff01\uff01\uff01\uff01\uff01\uff01\uff01\uff01\uff01\n }\n\n // \u5b9a\u4e49\u4e00\u6761\u6d88\u606f\n [SubscribeMessage("create:user")]\n public void CreateUser(string eventId, object payload)\n {\n // \u521b\u5efa\u4e00\u4e2a\u4f5c\u7528\u57df\uff0c\u5bf9\u8c61\u4f7f\u7528\u5b8c\u6210\u81ea\u52a8\u91ca\u653e\n Scoped.Create((_, scope) =>\n {\n var services = scope.ServiceProvider;\n\n var repository = Db.GetRepository(services); // services \u4f20\u9012\u8fdb\u53bb\n var someService = App.GetService(services); // services \u4f20\u9012\u8fdb\u53bb\n var otherService = services.GetService(); // \u76f4\u63a5\u7528 services \u89e3\u6790\n });\n }\n}\n')),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u5173\u4e8e ",(0,i.kt)("inlineCode",{parentName:"h5"},"App.GetService()")," \u89e3\u6790\u670d\u52a1")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u5728\u9ad8\u9891\u5b9a\u65f6\u4efb\u52a1\u4e2d\u8c03\u7528",(0,i.kt)("inlineCode",{parentName:"p"},"App.GetService(TService)"),"\uff0c\u53ef\u80fd\u4f1a\u51fa\u73b0\u5185\u5b58\u65e0\u6cd5\u56de\u6536\u7684\u60c5\u51b5\uff0c\u5efa\u8bae\u59cb\u7ec8\u4f7f\u7528",(0,i.kt)("inlineCode",{parentName:"p"},"scope.ServiceProvider.GetService(TService)"),"\u6765\u83b7\u53d6",(0,i.kt)("inlineCode",{parentName:"p"},"TService")))),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u6570\u636e\u5e93\u64cd\u4f5c\u6ce8\u610f")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u5982\u679c\u4f5c\u7528\u57df\u4e2d\u5bf9",(0,i.kt)("strong",{parentName:"p"},"\u6570\u636e\u5e93\u6709\u4efb\u4f55\u53d8\u66f4\u64cd\u4f5c"),"\uff0c\u9700\u624b\u52a8\u8c03\u7528 ",(0,i.kt)("inlineCode",{parentName:"p"},"SaveChanges")," \u6216\u5e26 ",(0,i.kt)("inlineCode",{parentName:"p"},"Now")," \u7ed3\u5c3e\u7684\u65b9\u6cd5\u3002\u4e5f\u53ef\u4ee5\u4f7f\u7528 ",(0,i.kt)("inlineCode",{parentName:"p"},"Scoped.CreateUow(handler)")," \u4ee3\u66ff\u3002"))),(0,i.kt)("div",{className:"admonition admonition-warning alert alert--danger"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"}))),"\u5173\u4e8e\u4f9d\u8d56\u6ce8\u5165")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},(0,i.kt)("inlineCode",{parentName:"p"},"ISubscribeHandler")," \u63a5\u53e3\u4e3b\u8981\u662f\u7528\u6765\u67e5\u627e\u5b9a\u4e49\u4e8b\u4ef6\u5bf9\u8c61\u7684\uff0c\u4e5f\u5c31\u662f\u5b83\u7684\u5b9e\u73b0\u7c7b\u5e76\u672a\u63d0\u4f9b\u4f9d\u8d56\u6ce8\u5165\u529f\u80fd\uff0c\u6240\u4ee5\u5728\u5b9e\u73b0\u7c7b\u5e76\u4e0d\u652f\u6301\u6784\u9020\u51fd\u6570\u6ce8\u5165\u4f9d\u8d56\u9879\u3002"))),(0,i.kt)("h2",{id:"225-\u53cd\u9988\u4e0e\u5efa\u8bae"},"22.5 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,i.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/04b9380e.9235da42.js b/handbook/build/assets/js/04b9380e.9235da42.js deleted file mode 100644 index 0b796601152..00000000000 --- a/handbook/build/assets/js/04b9380e.9235da42.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[3867],{3905:function(e,n,t){t.d(n,{Zo:function(){return p},kt:function(){return u}});var r=t(7294);function a(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function s(e){for(var n=1;n=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var c=r.createContext({}),l=function(e){var n=r.useContext(c),t=n;return e&&(t="function"==typeof e?e(n):s(s({},n),e)),t},p=function(e){var n=l(e.components);return r.createElement(c.Provider,{value:n},e.children)},d={inlineCode:"code",wrapper:function(e){var n=e.children;return r.createElement(r.Fragment,{},n)}},m=r.forwardRef((function(e,n){var t=e.components,a=e.mdxType,i=e.originalType,c=e.parentName,p=o(e,["components","mdxType","originalType","parentName"]),m=l(t),u=a,v=m["".concat(c,".").concat(u)]||m[u]||d[u]||i;return t?r.createElement(v,s(s({ref:n},p),{},{components:t})):r.createElement(v,s({ref:n},p))}));function u(e,n){var t=arguments,a=n&&n.mdxType;if("string"==typeof e||a){var i=t.length,s=new Array(i);s[0]=m;var o={};for(var c in n)hasOwnProperty.call(n,c)&&(o[c]=n[c]);o.originalType=e,o.mdxType="string"==typeof e?e:a,s[1]=o;for(var l=2;lMessageCenter \u6d88\u606f\u4e2d\u5fc3",id:"222-messagecenter-\u6d88\u606f\u4e2d\u5fc3",children:[{value:"22.2.1 \u6ce8\u518c \u8f7b\u91cf\u7ea7\u4e8b\u4ef6\u603b\u7ebf\u670d\u52a1",id:"2221-\u6ce8\u518c-\u8f7b\u91cf\u7ea7\u4e8b\u4ef6\u603b\u7ebf\u670d\u52a1",children:[]},{value:"22.2.2 \u5b9a\u4e49\u8ba2\u9605\u5904\u7406\u7a0b\u5e8f",id:"2222-\u5b9a\u4e49\u8ba2\u9605\u5904\u7406\u7a0b\u5e8f",children:[]},{value:"22.2.3 \u53d1\u5e03\u6d88\u606f",id:"2223-\u53d1\u5e03\u6d88\u606f",children:[]},{value:"22.2.4 \u76f4\u63a5\u8ba2\u9605\u6d88\u606f",id:"2224-\u76f4\u63a5\u8ba2\u9605\u6d88\u606f",children:[]}]},{value:"22.3 \u540c\u6b65\u65b9\u5f0f\u6267\u884c",id:"223-\u540c\u6b65\u65b9\u5f0f\u6267\u884c",children:[]},{value:"22.4 \u5173\u4e8e\u4f9d\u8d56\u6ce8\u5165",id:"224-\u5173\u4e8e\u4f9d\u8d56\u6ce8\u5165",children:[]},{value:"22.5 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"225-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],m={toc:d};function u(e){var n=e.components,t=(0,a.Z)(e,o);return(0,i.kt)("wrapper",(0,r.Z)({},m,t,{components:n,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"221-\u4ec0\u4e48\u662f\u4e8b\u4ef6\u603b\u7ebf"},"22.1 \u4ec0\u4e48\u662f\u4e8b\u4ef6\u603b\u7ebf"),(0,i.kt)("p",null,"\u4e8b\u4ef6\u603b\u7ebf\u662f\u5bf9\u53d1\u5e03-\u8ba2\u9605\u6a21\u5f0f\u7684\u4e00\u79cd\u5b9e\u73b0\u3002\u5b83\u662f\u4e00\u79cd\u96c6\u4e2d\u5f0f\u4e8b\u4ef6\u5904\u7406\u673a\u5236\uff0c\u5141\u8bb8\u4e0d\u540c\u7684\u7ec4\u4ef6\u4e4b\u95f4\u8fdb\u884c\u5f7c\u6b64\u901a\u4fe1\u800c\u53c8\u4e0d\u9700\u8981\u76f8\u4e92\u4f9d\u8d56\uff0c\u8fbe\u5230\u4e00\u79cd\u89e3\u8026\u7684\u76ee\u7684\u3002"),(0,i.kt)("p",null,"\u6211\u4eec\u6765\u770b\u770b\u4e8b\u4ef6\u603b\u7ebf\u7684\u5904\u7406\u6d41\u7a0b\uff1a"),(0,i.kt)("img",{src:(0,s.Z)("img/event1.png")}),(0,i.kt)("h2",{id:"222-messagecenter-\u6d88\u606f\u4e2d\u5fc3"},"22.2 ",(0,i.kt)("inlineCode",{parentName:"h2"},"MessageCenter")," \u6d88\u606f\u4e2d\u5fc3"),(0,i.kt)("p",null,"\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\uff0c\u5b9e\u73b0\u4e86\u4e00\u79cd\u8f7b\u91cf\u7ea7\u7684\u4e8b\u4ef6\u603b\u7ebf\u5b9e\u73b0\u673a\u5236\uff1a",(0,i.kt)("inlineCode",{parentName:"p"},"MessageCenter"),"\uff08\u6d88\u606f\u4e2d\u5fc3\uff09\uff0c",(0,i.kt)("inlineCode",{parentName:"p"},"MessageCenter")," \u91c7\u7528\u5b57\u7b26\u4e32\u6d88\u606f\u673a\u5236\u8fdb\u884c\u5e7f\u64ad\uff0c \u53ef\u4ee5\u5728\u7edd\u5927\u591a\u6570\u4e2d\u5c0f\u578b\u9879\u76ee\u4e2d\u53d1\u6325\u4f5c\u7528\uff0c\u7f3a\u70b9\u662f\u6d88\u606f\u5904\u7406\u662f\u5728\u4e3b\u7ebf\u7a0b\u4e2d\u5b8c\u6210\u5e76\u4e14\u6d88\u606f\u4e0d\u652f\u6301\u5206\u5e03\u5f0f\u5b58\u50a8\u3002"),(0,i.kt)("p",null,"\u53e6\u5916\uff0c",(0,i.kt)("inlineCode",{parentName:"p"},"MessageCenter")," \u652f\u6301\u5355\u64ad\u3001\u591a\u64ad\u53d1\u5e03\u53ca\u591a\u8ba2\u9605\u3002\u5982\u56fe\u6240\u793a\uff1a"),(0,i.kt)("img",{src:(0,s.Z)("img/event2.png")}),(0,i.kt)("h3",{id:"2221-\u6ce8\u518c-\u8f7b\u91cf\u7ea7\u4e8b\u4ef6\u603b\u7ebf\u670d\u52a1"},"22.2.1 \u6ce8\u518c ",(0,i.kt)("inlineCode",{parentName:"h3"},"\u8f7b\u91cf\u7ea7\u4e8b\u4ef6\u603b\u7ebf\u670d\u52a1")),(0,i.kt)("p",null,"\u5982\u679c\u60f3\u4f7f\u7528 ",(0,i.kt)("inlineCode",{parentName:"p"},"MessageCenter")," \u8f7b\u91cf\u7ea7\u4e8b\u4ef6\u603b\u7ebf\uff0c\u53ea\u9700\u8981\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Startup.cs")," \u4e2d\u6ce8\u518c\u670d\u52a1\u5373\u53ef\uff0c\u5982\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{3}","{3}":!0},"public void ConfigureServices(IServiceCollection services)\n{\n services.AddSimpleEventBus();\n}\n")),(0,i.kt)("h3",{id:"2222-\u5b9a\u4e49\u8ba2\u9605\u5904\u7406\u7a0b\u5e8f"},"22.2.2 \u5b9a\u4e49\u8ba2\u9605\u5904\u7406\u7a0b\u5e8f"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"MessageCenter")," \u662f\u6839\u636e ",(0,i.kt)("inlineCode",{parentName:"p"},"MesseageId")," \u6d88\u606f Id \u6765\u89e6\u53d1\u5bf9\u5e94\u7684\u5904\u7406\u7a0b\u5e8f\u7684\uff0c\u6240\u4ee5\u6211\u4eec\u9700\u8981\u5b9a\u4e49 ",(0,i.kt)("inlineCode",{parentName:"p"},"\u8ba2\u9605\u5904\u7406\u7a0b\u5e8f\u7c7b"),"\uff0c\u8be5\u7c7b\u9700\u5b9e\u73b0 ",(0,i.kt)("inlineCode",{parentName:"p"},"ISubscribeHandler")," \u63a5\u53e3\uff0c\u5982\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,4-5,11-13}","{1,4-5,11-13}":!0},'public class UserChangeSubscribeHandler : ISubscribeHandler\n{\n // \u5b9a\u4e49\u4e00\u6761\u6d88\u606f\n [SubscribeMessage("create:user")]\n public void CreateUser(string eventId, object payload)\n {\n Console.WriteLine("\u6211\u662f"+eventId);\n }\n\n // \u591a\u6761\u6d88\u606f\u5171\u7528\u540c\u4e00\u4e2a\u5904\u7406\u7a0b\u5e8f\n [SubscribeMessage("delete:user")]\n [SubscribeMessage("remove:user")]\n public void RemoveUser(string eventId, object payload)\n {\n Console.WriteLine("\u6211\u662f"+eventId);\n }\n\n // \u652f\u6301\u5f02\u6b65\n [SubscribeMessage("delete:user")]\n public async Task SupportAsync(string eventId, object payload)\n {\n await MethodAsync();\n }\n}\n')),(0,i.kt)("h3",{id:"2223-\u53d1\u5e03\u6d88\u606f"},"22.2.3 \u53d1\u5e03\u6d88\u606f"),(0,i.kt)("p",null,"\u5b9a\u4e49\u597d\u8ba2\u9605\u5904\u7406\u7a0b\u5e8f\u540e\uff0c\u6211\u4eec\u5c31\u53ef\u4ee5\u5728\u7a0b\u5e8f\u4efb\u4f55\u5730\u65b9\u8fdb\u884c\u5e7f\u64ad\u6d88\u606f\uff0c\u4e8b\u4ef6\u603b\u7ebf\u4f1a\u81ea\u52a8\u6839\u636e ",(0,i.kt)("inlineCode",{parentName:"p"},"\u6d88\u606f Id")," \u89e6\u53d1\u5bf9\u5e94\u7684\u5904\u7406\u7a0b\u5e8f\u65b9\u6cd5\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'MessageCenter.Send("create:user", new User {}); // => \u6253\u5370\uff1a\u6211\u662fcreate:user\n\nMessageCenter.Send("delete:user", new User {}); // => \u6253\u5370\uff1a\u6211\u662fdelete:user\nMessageCenter.Send("remove:user", new User {}); // => \u6253\u5370\uff1a\u6211\u662fremove:user\n')),(0,i.kt)("h3",{id:"2224-\u76f4\u63a5\u8ba2\u9605\u6d88\u606f"},"22.2.4 \u76f4\u63a5\u8ba2\u9605\u6d88\u606f"),(0,i.kt)("p",null,"\u5728\u4e0a\u9762\u7684\u4f8b\u5b50\u4e2d\uff0c\u6211\u4eec\u9700\u8981\u521b\u5efa ",(0,i.kt)("inlineCode",{parentName:"p"},"ISubscribeHandler")," \u7684\u6d3e\u751f\u7c7b\u8fdb\u884c\u76f8\u5173\u914d\u7f6e\u624d\u80fd\u5b9e\u73b0\u8ba2\u9605\u5904\u7406\u3002"),(0,i.kt)("p",null,"\u5728\u67d0\u4e9b\u7279\u6b8a\u60c5\u51b5\u4e0b\uff0c\u53ef\u80fd\u53ea\u9700\u8981\u8ba2\u9605\u4e00\u6b21\u5373\u53ef\u3002\u6240\u4ee5\uff0c\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\uff0c\u4e3a\u4e86\u66f4\u7b80\u4fbf\u7684\u8ba2\u9605\u6d88\u606f\uff0c\u4e5f\u63d0\u4f9b\u4e86 ",(0,i.kt)("inlineCode",{parentName:"p"},"MessageCenter.Subscribe")," \u9759\u6001\u65b9\u6cd5\uff0c\u5982\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'MessageCenter.Subscribe("create:user", (i,p) => {\n // do something\u3002\u3002\u3002\n});\n')),(0,i.kt)("h2",{id:"223-\u540c\u6b65\u65b9\u5f0f\u6267\u884c"},"22.3 \u540c\u6b65\u65b9\u5f0f\u6267\u884c"),(0,i.kt)("p",null,"\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c\u4e8b\u4ef6\u603b\u7ebf\u603b\u662f\u91c7\u7528\u65b0\u7ebf\u7a0b\u65b9\u5f0f\u6267\u884c\uff0c\u4f46\u662f\u6211\u4eec\u53ef\u4ee5\u914d\u7f6e\u4e3a\u540c\u6b65\u65b9\u5f0f\uff0c\u5982\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'MessageCenter.Send("create:user", isSync: true);\n')),(0,i.kt)("h2",{id:"224-\u5173\u4e8e\u4f9d\u8d56\u6ce8\u5165"},"22.4 \u5173\u4e8e\u4f9d\u8d56\u6ce8\u5165"),(0,i.kt)("p",null,"\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\uff0c\u4e8b\u4ef6\u603b\u7ebf\u662f\u4e0d\u652f\u6301\u6784\u9020\u51fd\u6570\u6ce8\u5165\u7684\uff0c\u800c\u4e14\u6784\u9020\u51fd\u6570\u4e5f\u53ea\u4f1a\u6267\u884c\u4e00\u6b21\u3002\u6240\u4ee5\u9700\u8981\u7528\u5230\u670d\u52a1\uff0c\u5e94\u8be5\u901a\u8fc7\u9759\u6001\u7c7b\u89e3\u6790\uff0c",(0,i.kt)("inlineCode",{parentName:"p"},"App.GetService()")," \u6216 ",(0,i.kt)("inlineCode",{parentName:"p"},"Db.GetRepository()"),"\u3002"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{5,12-20}","{5,12-20}":!0},'public class UserChangeSubscribeHandler : ISubscribeHandler\n{\n public UserChangeSubscribeHandler()\n {\n // \u4e0d\u652f\u6301\u8fd9\u91cc\u89e3\u6790\u670d\u52a1\uff01\uff01\uff01\uff01\uff01\uff01\uff01\uff01\uff01\uff01\uff01\n }\n\n // \u5b9a\u4e49\u4e00\u6761\u6d88\u606f\n [SubscribeMessage("create:user")]\n public void CreateUser(string eventId, object payload)\n {\n // \u521b\u5efa\u4e00\u4e2a\u4f5c\u7528\u57df\uff0c\u5bf9\u8c61\u4f7f\u7528\u5b8c\u6210\u81ea\u52a8\u91ca\u653e\n Scoped.Create((_, scope) =>\n {\n var services = scope.ServiceProvider;\n\n var repository = Db.GetRepository(services); // services \u4f20\u9012\u8fdb\u53bb\n var someService = App.GetService(services); // services \u4f20\u9012\u8fdb\u53bb\n var otherService = services.GetService(); // \u76f4\u63a5\u7528 services \u89e3\u6790\n });\n }\n}\n')),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u5173\u4e8e ",(0,i.kt)("inlineCode",{parentName:"h5"},"App.GetService()")," \u89e3\u6790\u670d\u52a1")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u5728\u9ad8\u9891\u5b9a\u65f6\u4efb\u52a1\u4e2d\u8c03\u7528",(0,i.kt)("inlineCode",{parentName:"p"},"App.GetService(TService)"),"\uff0c\u53ef\u80fd\u4f1a\u51fa\u73b0\u5185\u5b58\u65e0\u6cd5\u56de\u6536\u7684\u60c5\u51b5\uff0c\u5efa\u8bae\u59cb\u7ec8\u4f7f\u7528",(0,i.kt)("inlineCode",{parentName:"p"},"scope.ServiceProvider.GetService(TService)"),"\u6765\u83b7\u53d6",(0,i.kt)("inlineCode",{parentName:"p"},"TService")))),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u6570\u636e\u5e93\u64cd\u4f5c\u6ce8\u610f")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u5982\u679c\u4f5c\u7528\u57df\u4e2d\u5bf9",(0,i.kt)("strong",{parentName:"p"},"\u6570\u636e\u5e93\u6709\u4efb\u4f55\u53d8\u66f4\u64cd\u4f5c"),"\uff0c\u9700\u624b\u52a8\u8c03\u7528 ",(0,i.kt)("inlineCode",{parentName:"p"},"SaveChanges")," \u6216\u5e26 ",(0,i.kt)("inlineCode",{parentName:"p"},"Now")," \u7ed3\u5c3e\u7684\u65b9\u6cd5\u3002\u4e5f\u53ef\u4ee5\u4f7f\u7528 ",(0,i.kt)("inlineCode",{parentName:"p"},"Scoped.CreateUow(handler)")," \u4ee3\u66ff\u3002"))),(0,i.kt)("div",{className:"admonition admonition-warning alert alert--danger"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"}))),"\u5173\u4e8e\u4f9d\u8d56\u6ce8\u5165")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},(0,i.kt)("inlineCode",{parentName:"p"},"ISubscribeHandler")," \u63a5\u53e3\u4e3b\u8981\u662f\u7528\u6765\u67e5\u627e\u5b9a\u4e49\u4e8b\u4ef6\u5bf9\u8c61\u7684\uff0c\u4e5f\u5c31\u662f\u5b83\u7684\u5b9e\u73b0\u7c7b\u5e76\u672a\u63d0\u4f9b\u4f9d\u8d56\u6ce8\u5165\u529f\u80fd\uff0c\u6240\u4ee5\u5728\u5b9e\u73b0\u7c7b\u5e76\u4e0d\u652f\u6301\u6784\u9020\u51fd\u6570\u6ce8\u5165\u4f9d\u8d56\u9879\u3002"))),(0,i.kt)("h2",{id:"225-\u53cd\u9988\u4e0e\u5efa\u8bae"},"22.5 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,i.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/083979a2.082e0cb8.js b/handbook/build/assets/js/083979a2.082e0cb8.js deleted file mode 100644 index 11e41a5184a..00000000000 --- a/handbook/build/assets/js/083979a2.082e0cb8.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[6732],{3905:function(e,n,t){t.d(n,{Zo:function(){return d},kt:function(){return u}});var a=t(7294);function i(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function r(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function o(e){for(var n=1;n=0||(i[t]=e[t]);return i}(e,n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(i[t]=e[t])}return i}var l=a.createContext({}),p=function(e){var n=a.useContext(l),t=n;return e&&(t="function"==typeof e?e(n):o(o({},n),e)),t},d=function(e){var n=p(e.components);return a.createElement(l.Provider,{value:n},e.children)},s={inlineCode:"code",wrapper:function(e){var n=e.children;return a.createElement(a.Fragment,{},n)}},m=a.forwardRef((function(e,n){var t=e.components,i=e.mdxType,r=e.originalType,l=e.parentName,d=c(e,["components","mdxType","originalType","parentName"]),m=p(t),u=i,h=m["".concat(l,".").concat(u)]||m[u]||s[u]||r;return t?a.createElement(h,o(o({ref:n},d),{},{components:t})):a.createElement(h,o({ref:n},d))}));function u(e,n){var t=arguments,i=n&&n.mdxType;if("string"==typeof e||i){var r=t.length,o=new Array(r);o[0]=m;var c={};for(var l in n)hasOwnProperty.call(n,l)&&(c[l]=n[l]);c.originalType=e,c.mdxType="string"==typeof e?e:i,o[1]=c;for(var p=2;pIDistributedCache",id:"1442-idistributedcache",children:[]},{value:"14.4.3 \u5206\u5e03\u5f0f\u5185\u5b58\u7f13\u5b58",id:"1443-\u5206\u5e03\u5f0f\u5185\u5b58\u7f13\u5b58",children:[]},{value:"14.4.4 \u5206\u5e03\u5f0f SQL Server \u7f13\u5b58",id:"1444-\u5206\u5e03\u5f0f-sql-server-\u7f13\u5b58",children:[]},{value:"14.4.5 \u5206\u5e03\u5f0f Redis \u7f13\u5b58",id:"1445-\u5206\u5e03\u5f0f-redis-\u7f13\u5b58",children:[]},{value:"14.4.6 \u5206\u5e03\u5f0f NCache \u7f13\u5b58",id:"1446-\u5206\u5e03\u5f0f-ncache-\u7f13\u5b58",children:[]}]},{value:"14.5 \u5206\u5e03\u5f0f\u7f13\u5b58\u4f7f\u7528",id:"145-\u5206\u5e03\u5f0f\u7f13\u5b58\u4f7f\u7528",children:[]},{value:"14.6 \u5206\u5e03\u5f0f\u7f13\u5b58\u5efa\u8bae",id:"146-\u5206\u5e03\u5f0f\u7f13\u5b58\u5efa\u8bae",children:[]},{value:"14.7 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"147-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],s={toc:d};function m(e){var n=e.components,t=(0,i.Z)(e,o);return(0,r.kt)("wrapper",(0,a.Z)({},s,t,{components:n,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"141-\u4ec0\u4e48\u662f\u7f13\u5b58"},"14.1 \u4ec0\u4e48\u662f\u7f13\u5b58"),(0,r.kt)("p",null,"\u7f13\u5b58\u53ef\u4ee5\u51cf\u5c11\u751f\u6210\u5185\u5bb9\u6240\u9700\u7684\u5de5\u4f5c\uff0c\u4ece\u800c\u663e\u8457\u63d0\u9ad8\u5e94\u7528\u7a0b\u5e8f\u7684\u6027\u80fd\u548c\u53ef\u4f38\u7f29\u6027\u3002 ",(0,r.kt)("strong",{parentName:"p"},"\u7f13\u5b58\u6700\u9002\u7528\u4e8e\u4e0d\u7ecf\u5e38\u66f4\u6539\u7684\u6570\u636e\uff0c\u56e0\u4e3a\u751f\u6210\u6210\u672c\u5f88\u9ad8"),"\u3002 \u901a\u8fc7\u7f13\u5b58\uff0c\u53ef\u4ee5\u6bd4\u4ece\u6570\u636e\u6e90\u8fd4\u56de\u7684\u6570\u636e\u7684\u526f\u672c\u901f\u5ea6\u5feb\u5f97\u591a\u3002 \u5e94\u8be5\u5bf9\u5e94\u7528\u8fdb\u884c\u7f16\u5199\u548c\u6d4b\u8bd5\uff0c\u4f7f\u5176\u4e0d\u8981\u6c38\u8fdc\u4f9d\u8d56\u4e8e\u7f13\u5b58\u7684\u6570\u636e\u3002"),(0,r.kt)("h2",{id:"142-\u7f13\u5b58\u7c7b\u578b"},"14.2 \u7f13\u5b58\u7c7b\u578b"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u5185\u5b58\u7f13\u5b58\uff1a\u987e\u540d\u601d\u4e49\uff0c\u5c31\u662f\u7f13\u5b58\u5728\u5e94\u7528\u90e8\u7f72\u6240\u5728\u670d\u52a1\u5668\u7684\u5185\u5b58\u4e2d"),(0,r.kt)("li",{parentName:"ul"},"\u5206\u5e03\u5f0f\u7f13\u5b58\uff1a\u5206\u5e03\u5f0f\u7f13\u5b58\u662f\u7531\u591a\u4e2a\u5e94\u7528\u670d\u52a1\u5668\u5171\u4eab\u7684\u7f13\u5b58"),(0,r.kt)("li",{parentName:"ul"},"\u54cd\u5e94\u7f13\u5b58\uff1a\u7f13\u5b58\u670d\u52a1\u5668\u7aef ",(0,r.kt)("inlineCode",{parentName:"li"},"Not Modified")," \u7684\u6570\u636e")),(0,r.kt)("h2",{id:"143-\u5185\u5b58\u7f13\u5b58\u4f7f\u7528"},"14.3 \u5185\u5b58\u7f13\u5b58\u4f7f\u7528"),(0,r.kt)("p",null,"\u5185\u5b58\u7f13\u5b58\u662f\u6700\u5e38\u7528\u7684\u7f13\u5b58\u65b9\u5f0f\uff0c\u5177\u6709\u5b58\u53d6\u5feb\uff0c\u6548\u7387\u9ad8\u7279\u70b9\u3002"),(0,r.kt)("p",null,"\u5185\u5b58\u7f13\u5b58\u901a\u8fc7\u6ce8\u5165 ",(0,r.kt)("inlineCode",{parentName:"p"},"IMemoryCache")," \u65b9\u5f0f\u6ce8\u5165\u5373\u53ef\u3002"),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u5907\u6ce8")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\uff0c\u5185\u5b58\u7f13\u5b58\u670d\u52a1\u5df2\u7ecf\u9ed8\u8ba4\u6ce8\u518c\uff0c\u65e0\u9700\u624b\u52a8\u6ce8\u518c\u3002"))),(0,r.kt)("h3",{id:"1431-\u57fa\u672c\u4f7f\u7528"},"14.3.1 \u57fa\u672c\u4f7f\u7528"),(0,r.kt)("p",null,"\u5982\uff0c\u7f13\u5b58\u5f53\u524d\u65f6\u95f4\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{13,21-24}","{13,21-24}":!0},'using Furion.DynamicApiController;\nusing Microsoft.Extensions.Caching.Memory;\nusing System;\n\nnamespace Furion.Application\n{\n public class CacheServices : IDynamicApiController\n {\n private const string _timeCacheKey = "cache_time";\n\n private readonly IMemoryCache _memoryCache;\n\n public CacheServices(IMemoryCache memoryCache)\n {\n _memoryCache = memoryCache;\n }\n\n [ApiDescriptionSettings(KeepName = true)]\n public DateTimeOffset GetOrCreate()\n {\n return _memoryCache.GetOrCreate(_timeCacheKey, entry =>\n {\n return DateTimeOffset.UtcNow;\n });\n }\n }\n}\n')),(0,r.kt)("h3",{id:"1432-\u8bbe\u7f6e\u7f13\u5b58\u9009\u9879"},"14.3.2 \u8bbe\u7f6e\u7f13\u5b58\u9009\u9879"),(0,r.kt)("p",null,"\u5185\u5b58\u7f13\u5b58\u652f\u6301\u8bbe\u7f6e\u7f13\u5b58\u65f6\u95f4\u3001\u7f13\u5b58\u5927\u5c0f\u3001\u53ca\u7edd\u5bf9\u7f13\u5b58\u8fc7\u671f\u65f6\u95f4\u7b49"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"_memoryCache.GetOrCreate(_timeCacheKey, entry =>\n{\n entry.SlidingExpiration = TimeSpan.FromSeconds(3); // \u6ed1\u52a8\u7f13\u5b58\u65f6\u95f4\n return DateTimeOffset.UtcNow;\n});\n\nawait _memoryCache.GetOrCreateAsync(_timeCacheKey, async entry =>\n{\n // \u8fd9\u91cc\u53ef\u4ee5\u4f7f\u7528\u5f02\u6b65~~\n});\n")),(0,r.kt)("div",{className:"admonition admonition-caution alert alert--warning"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 16 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"}))),"\u5173\u4e8e\u7f13\u5b58\u65f6\u95f4")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u53ea\u6709\u5177\u6709\u53ef\u8c03\u8fc7\u671f\u7684\u7f13\u5b58\u9879\u96c6\u5b58\u5728\u8fc7\u65f6\u7684\u98ce\u9669\u3002 \u5982\u679c\u8bbf\u95ee\u7684\u65f6\u95f4\u6bd4\u6ed1\u52a8\u8fc7\u671f\u65f6\u95f4\u95f4\u9694\u66f4\u9891\u7e41\uff0c\u5219\u8be5\u9879\u5c06\u6c38\u4e0d\u8fc7\u671f\u3002"),(0,r.kt)("p",{parentName:"div"},"\u5c06\u5f39\u6027\u8fc7\u671f\u4e0e\u7edd\u5bf9\u8fc7\u671f\u7ec4\u5408\u5728\u4e00\u8d77\uff0c\u4ee5\u4fdd\u8bc1\u9879\u76ee\u5728\u5176\u7edd\u5bf9\u8fc7\u671f\u65f6\u95f4\u901a\u8fc7\u540e\u8fc7\u671f\u3002 \u7edd\u5bf9\u8fc7\u671f\u4f1a\u5c06\u9879\u7684\u4e0a\u9650\u8bbe\u7f6e\u4e3a\u53ef\u7f13\u5b58\u9879\u7684\u65f6\u95f4\uff0c\u540c\u65f6\u4ecd\u5141\u8bb8\u9879\u5728\u53ef\u8c03\u6574\u8fc7\u671f\u65f6\u95f4\u95f4\u9694\u5185\u672a\u8bf7\u6c42\u65f6\u63d0\u524d\u8fc7\u671f\u3002"),(0,r.kt)("p",{parentName:"div"},"\u5982\u679c\u540c\u65f6\u6307\u5b9a\u4e86\u7edd\u5bf9\u8fc7\u671f\u548c\u53ef\u8c03\u8fc7\u671f\u65f6\u95f4\uff0c\u5219\u8fc7\u671f\u65f6\u95f4\u4ee5\u903b\u8f91\u65b9\u5f0f\u8fd0\u7b97\u3002 \u5982\u679c\u6ed1\u52a8\u8fc7\u671f\u65f6\u95f4\u95f4\u9694 \u6216 \u7edd\u5bf9\u8fc7\u671f\u65f6\u95f4\u901a\u8fc7\uff0c\u5219\u4ece\u7f13\u5b58\u4e2d\u9010\u51fa\u8be5\u9879\u3002"),(0,r.kt)("p",{parentName:"div"},"\u5982\uff1a"),(0,r.kt)("pre",{parentName:"div"},(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"_memoryCache.GetOrCreate(_timeCacheKey, entry =>\n{\n entry.SetSlidingExpiration(TimeSpan.FromSeconds(3));\n entry.AbsoluteExpirationRelativeToNow = TimeSpan.FromSeconds(20);\n return DateTime.Now;\n});\n")),(0,r.kt)("p",{parentName:"div"},"\u524d\u9762\u7684\u4ee3\u7801\u4fdd\u8bc1\u6570\u636e\u7684\u7f13\u5b58\u65f6\u95f4\u4e0d\u8d85\u8fc7\u7edd\u5bf9\u65f6\u95f4\u3002"))),(0,r.kt)("h3",{id:"1433-\u624b\u52a8\u8bbe\u7f6e\u7f13\u5b58\u9009\u9879"},"14.3.3 \u624b\u52a8\u8bbe\u7f6e\u7f13\u5b58\u9009\u9879"),(0,r.kt)("p",null,"\u9664\u4e86\u4e0a\u9762\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"Func")," \u65b9\u5f0f\u8bbe\u7f6e\u7f13\u5b58\u9009\u9879\uff0c\u6211\u4eec\u53ef\u4ee5\u624b\u52a8\u521b\u5efa\u5e76\u8bbe\u7f6e\uff0c\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"var cacheEntryOptions = new MemoryCacheEntryOptions()\n .SetSlidingExpiration(TimeSpan.FromSeconds(3));\n\n_memoryCache.Set(_timeCacheKey, DateTimeOffset.UtcNow, cacheEntryOptions);\n")),(0,r.kt)("h3",{id:"1434-\u7f13\u5b58\u4f9d\u8d56\u5173\u7cfb"},"14.3.4 \u7f13\u5b58\u4f9d\u8d56\u5173\u7cfb"),(0,r.kt)("p",null,"\u4e0b\u9762\u7684\u793a\u4f8b\u6f14\u793a\u5982\u4f55\u5728\u4f9d\u8d56\u6761\u76ee\u8fc7\u671f\u65f6\u4f7f\u7f13\u5b58\u6761\u76ee\u8fc7\u671f\u3002 ",(0,r.kt)("inlineCode",{parentName:"p"},"CancellationChangeToken")," \u6dfb\u52a0\u5230\u7f13\u5b58\u7684\u9879\u3002 \u5f53 ",(0,r.kt)("inlineCode",{parentName:"p"},"Cancel")," \u5728\u4e0a\u8c03\u7528\u65f6 ",(0,r.kt)("inlineCode",{parentName:"p"},"CancellationTokenSource")," \uff0c\u5c06\u9010\u51fa\u4e24\u4e2a\u7f13\u5b58\u9879\u3002"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'public IActionResult CreateDependentEntries()\n{\n var cts = new CancellationTokenSource();\n _cache.Set(CacheKeys.DependentCTS, cts);\n\n using (var entry = _cache.CreateEntry(CacheKeys.Parent))\n {\n // expire this entry if the dependant entry expires.\n entry.Value = DateTime.Now;\n entry.RegisterPostEvictionCallback(DependentEvictionCallback, this);\n\n _cache.Set(CacheKeys.Child,\n DateTime.Now,\n new CancellationChangeToken(cts.Token));\n }\n\n return RedirectToAction("GetDependentEntries");\n}\n\npublic IActionResult GetDependentEntries()\n{\n return View("Dependent", new DependentViewModel\n {\n ParentCachedTime = _cache.Get(CacheKeys.Parent),\n ChildCachedTime = _cache.Get(CacheKeys.Child),\n Message = _cache.Get(CacheKeys.DependentMessage)\n });\n}\n\npublic IActionResult RemoveChildEntry()\n{\n _cache.Get(CacheKeys.DependentCTS).Cancel();\n return RedirectToAction("GetDependentEntries");\n}\n\nprivate static void DependentEvictionCallback(object key, object value,\n EvictionReason reason, object state)\n{\n var message = $"Parent entry was evicted. Reason: {reason}.";\n ((HomeController)state)._cache.Set(CacheKeys.DependentMessage, message);\n}\n')),(0,r.kt)("p",null,"\u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"CancellationTokenSource")," \u5141\u8bb8\u5c06\u591a\u4e2a\u7f13\u5b58\u6761\u76ee\u4f5c\u4e3a\u4e00\u4e2a\u7ec4\u9010\u51fa\u3002 ",(0,r.kt)("inlineCode",{parentName:"p"},"using")," \u5728\u4e0a\u9762\u7684\u4ee3\u7801\u4e2d\uff0c\u5728\u5757\u4e2d\u521b\u5efa\u7684\u7f13\u5b58\u6761\u76ee ",(0,r.kt)("inlineCode",{parentName:"p"},"using")," \u5c06\u7ee7\u627f\u89e6\u53d1\u5668\u548c\u8fc7\u671f\u8bbe\u7f6e\u3002"),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e86\u89e3\u66f4\u591a")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u60f3\u4e86\u89e3\u66f4\u591a ",(0,r.kt)("inlineCode",{parentName:"p"},"\u5185\u5b58\u4e2d\u7684\u7f13\u5b58")," \u77e5\u8bc6\u53ef\u67e5\u9605 ",(0,r.kt)("a",{parentName:"p",href:"https://docs.microsoft.com/zh-cn/aspnet/core/performance/caching/memory?view=aspnetcore-5.0"},"ASP.NET Core - \u5185\u5b58\u7f13\u5b58")," \u7ae0\u8282\u3002"))),(0,r.kt)("h2",{id:"144-\u5206\u5e03\u5f0f\u7f13\u5b58"},"14.4 \u5206\u5e03\u5f0f\u7f13\u5b58"),(0,r.kt)("p",null,"\u5206\u5e03\u5f0f\u7f13\u5b58\u662f\u7531\u591a\u4e2a\u5e94\u7528\u670d\u52a1\u5668\u5171\u4eab\u7684\u7f13\u5b58\uff0c\u901a\u5e38\u4f5c\u4e3a\u5916\u90e8\u670d\u52a1\u5728\u8bbf\u95ee\u5b83\u7684\u5e94\u7528\u670d\u52a1\u5668\u4e0a\u7ef4\u62a4\u3002 \u5206\u5e03\u5f0f\u7f13\u5b58\u53ef\u4ee5\u63d0\u9ad8 ",(0,r.kt)("inlineCode",{parentName:"p"},"ASP.NET Core")," \u5e94\u7528\u7a0b\u5e8f\u7684\u6027\u80fd\u548c\u53ef\u4f38\u7f29\u6027\uff0c\u5c24\u5176\u662f\u5728\u5e94\u7528\u7a0b\u5e8f\u7531\u4e91\u670d\u52a1\u6216\u670d\u52a1\u5668\u573a\u6258\u7ba1\u65f6\u3002"),(0,r.kt)("p",null,"\u4e0e\u5176\u4ed6\u7f13\u5b58\u65b9\u6848\u76f8\u6bd4\uff0c\u5206\u5e03\u5f0f\u7f13\u5b58\u5177\u6709\u591a\u9879\u4f18\u52bf\uff0c\u5176\u4e2d\u7f13\u5b58\u7684\u6570\u636e\u5b58\u50a8\u5728\u5355\u4e2a\u5e94\u7528\u670d\u52a1\u5668\u4e0a\u3002"),(0,r.kt)("p",null,"\u5f53\u5206\u5e03\u5f0f\u7f13\u5b58\u6570\u636e\u65f6\uff0c\u6570\u636e\u5c06\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"(\u4e00\u81f4\u6027) \u8de8\u591a\u4e2a \u670d\u52a1\u5668\u7684\u8bf7\u6c42"),(0,r.kt)("li",{parentName:"ul"},"\u5b58\u6d3b\u5728\u670d\u52a1\u5668\u91cd\u542f\u548c\u5e94\u7528\u90e8\u7f72\u4e4b\u95f4"),(0,r.kt)("li",{parentName:"ul"},"\u4e0d\u4f7f\u7528\u672c\u5730\u5185\u5b58")),(0,r.kt)("p",null,"\u5206\u5e03\u5f0f\u7f13\u5b58\u914d\u7f6e\u662f\u7279\u5b9a\u4e8e\u5b9e\u73b0\u7684\u3002 \u672c\u6587\u4ecb\u7ecd\u5982\u4f55\u914d\u7f6e ",(0,r.kt)("inlineCode",{parentName:"p"},"SQL Server")," \u548c ",(0,r.kt)("inlineCode",{parentName:"p"},"Redis")," \u5206\u5e03\u5f0f\u7f13\u5b58\u3002 \u7b2c\u4e09\u65b9\u5b9e\u73b0\u4e5f\u53ef\u7528\uff0c\u4f8b\u5982 GitHub \u4e0a\u7684 ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/Alachisoft/NCache"},"NCache")," (NCache) \u3002"),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"\u65e0\u8bba\u9009\u62e9\u54ea\u79cd\u5b9e\u73b0\uff0c\u5e94\u7528\u90fd\u4f1a\u4f7f\u7528\u63a5\u53e3\u4e0e\u7f13\u5b58\u4ea4\u4e92 ",(0,r.kt)("inlineCode",{parentName:"strong"},"IDistributedCache")," \u3002")),(0,r.kt)("h3",{id:"1441-\u4f7f\u7528\u6761\u4ef6"},"14.4.1 \u4f7f\u7528\u6761\u4ef6"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u82e5\u8981\u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"li"},"SQL Server")," \u5206\u5e03\u5f0f\u7f13\u5b58\uff0c\u5219\u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"li"},"Microsoft.Extensions.Caching.SqlServer")," \u5305"),(0,r.kt)("li",{parentName:"ul"},"\u82e5\u8981\u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"li"},"Redis")," \u5206\u5e03\u5f0f\u7f13\u5b58\uff0c\u5219\u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"li"},"Microsoft.Extensions.Caching.StackExchangeRedis")," \u5305"),(0,r.kt)("li",{parentName:"ul"},"\u82e5\u8981\u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"li"},"NCache")," \u5206\u5e03\u5f0f\u7f13\u5b58\uff0c\u5219\u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"li"},"NCache.Microsoft.Extensions.Caching.OpenSource")," \u5305")),(0,r.kt)("h3",{id:"1442-idistributedcache"},"14.4.2 ",(0,r.kt)("inlineCode",{parentName:"h3"},"IDistributedCache")),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"IDistributedCache")," \u63a5\u53e3\u63d0\u4f9b\u4ee5\u4e0b\u65b9\u6cd5\u6765\u5904\u7406\u5206\u5e03\u5f0f\u7f13\u5b58\u5b9e\u73b0\u4e2d\u7684\u9879\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Get/GetAsync"),"\uff1a\u63a5\u53d7\u5b57\u7b26\u4e32\u952e\uff0c\u5e76\u68c0\u7d22\u7f13\u5b58\u9879\u4f5c\u4e3a ",(0,r.kt)("inlineCode",{parentName:"li"},"byte[]")," \u6570\u7ec4\uff08\u5982\u679c\u5728\u7f13\u5b58\u4e2d\u627e\u5230\uff09"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Set/SetAsync"),"\uff1a\u4f7f\u7528\u5b57\u7b26\u4e32\u952e\u5c06\u9879 (\u4f5c\u4e3a ",(0,r.kt)("inlineCode",{parentName:"li"},"byte[]")," \u6570\u7ec4) \u6dfb\u52a0\u5230\u7f13\u5b58\u4e2d"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Refresh/RefreshAsync")," \uff1a\u6839\u636e\u9879\u7684\u952e\u5237\u65b0\u7f13\u5b58\u4e2d\u7684\u9879\uff0c\u91cd\u7f6e\u5176\u6ed1\u52a8\u8fc7\u671f\u8d85\u65f6\uff08\u5982\u679c\u6709\uff09"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Remove/RemoveAsync"),"\uff1a\u6839\u636e\u7f13\u5b58\u9879\u7684\u5b57\u7b26\u4e32\u952e\u5220\u9664\u7f13\u5b58\u9879")),(0,r.kt)("h3",{id:"1443-\u5206\u5e03\u5f0f\u5185\u5b58\u7f13\u5b58"},"14.4.3 \u5206\u5e03\u5f0f\u5185\u5b58\u7f13\u5b58"),(0,r.kt)("p",null,"\u5206\u5e03\u5f0f\u5185\u5b58\u7f13\u5b58\uff08",(0,r.kt)("inlineCode",{parentName:"p"},"AddDistributedMemoryCache"),"\uff09\u662f\u4e00\u4e2a\u6846\u67b6\u63d0\u4f9b\u7684\u5b9e\u73b0 ",(0,r.kt)("inlineCode",{parentName:"p"},"IDistributedCache")," \uff0c\u5b83\u5c06\u9879\u5b58\u50a8\u5728\u5185\u5b58\u4e2d\u3002 ",(0,r.kt)("strong",{parentName:"p"},"\u5206\u5e03\u5f0f\u5185\u5b58\u7f13\u5b58\u4e0d\u662f\u5b9e\u9645\u7684\u5206\u5e03\u5f0f\u7f13\u5b58\uff0c\u7f13\u5b58\u9879\u7531\u5e94\u7528\u7a0b\u5e8f\u5b9e\u4f8b\u5b58\u50a8\u5728\u8fd0\u884c\u5e94\u7528\u7a0b\u5e8f\u7684\u670d\u52a1\u5668\u4e0a\u3002")),(0,r.kt)("p",null,"\u5206\u5e03\u5f0f\u5185\u5b58\u7f13\u5b58\u4f18\u70b9\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u7528\u4e8e\u5f00\u53d1\u548c\u6d4b\u8bd5\u65b9\u6848\u3002"),(0,r.kt)("li",{parentName:"ul"},"\u5728\u751f\u4ea7\u73af\u5883\u4e2d\u4f7f\u7528\u5355\u4e00\u670d\u52a1\u5668\u5e76\u4e14\u5185\u5b58\u6d88\u8017\u4e0d\u662f\u95ee\u9898\u3002 \u5b9e\u73b0\u5206\u5e03\u5f0f\u5185\u5b58\u7f13\u5b58\u4f1a\u62bd\u8c61\u5316\u7f13\u5b58\u7684\u6570\u636e\u5b58\u50a8\u3002 \u5982\u679c\u9700\u8981\u591a\u4e2a\u8282\u70b9\u6216\u5bb9\u9519\uff0c\u53ef\u4ee5\u5728\u5c06\u6765\u5b9e\u73b0\u771f\u6b63\u7684\u5206\u5e03\u5f0f\u7f13\u5b58\u89e3\u51b3\u65b9\u6848\u3002")),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u5907\u6ce8")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\uff0c\u5206\u5e03\u5f0f\u5185\u5b58\u7f13\u5b58\u670d\u52a1\u5df2\u7ecf\u9ed8\u8ba4\u6ce8\u518c\uff0c\u65e0\u9700\u624b\u52a8\u8c03\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"services.AddDistributedMemoryCache();")," \u6ce8\u518c\u3002"))),(0,r.kt)("h3",{id:"1444-\u5206\u5e03\u5f0f-sql-server-\u7f13\u5b58"},"14.4.4 \u5206\u5e03\u5f0f SQL Server \u7f13\u5b58"),(0,r.kt)("p",null,"\u5206\u5e03\u5f0f ",(0,r.kt)("inlineCode",{parentName:"p"},"SQL Server")," \u7f13\u5b58\u5b9e\u73b0 (",(0,r.kt)("inlineCode",{parentName:"p"},"AddDistributedSqlServerCache"),") \u5141\u8bb8\u5206\u5e03\u5f0f\u7f13\u5b58\u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"SQL Server")," \u6570\u636e\u5e93\u4f5c\u4e3a\u5176\u540e\u5907\u5b58\u50a8\u3002"),(0,r.kt)("p",null,"\u82e5\u8981\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"SQL Server")," \u5b9e\u4f8b\u4e2d\u521b\u5efa ",(0,r.kt)("inlineCode",{parentName:"p"},"SQL Server")," \u7f13\u5b58\u7684\u9879\u8868\uff0c\u53ef\u4ee5\u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"sql-cache")," \u5de5\u5177\u3002 \u8be5\u5de5\u5177\u5c06\u521b\u5efa\u4e00\u4e2a\u8868\uff0c\u5176\u4e2d\u5305\u542b\u6307\u5b9a\u7684\u540d\u79f0\u548c\u67b6\u6784\u3002"),(0,r.kt)("p",null,"\u901a\u8fc7\u8fd0\u884c\u547d\u4ee4 ",(0,r.kt)("inlineCode",{parentName:"p"},"sql-cache create")," \u521b\u5efa\u4e00\u4e2a\u8868\uff0c\u63d0\u4f9b ",(0,r.kt)("inlineCode",{parentName:"p"},"SQL Server")," \u5b9e\u4f8b (Data Source) \u3001\u6570\u636e\u5e93 (Initial Catalog) \u3001\u67b6\u6784 (\u4f8b\u5982) dbo \u548c\u8868\u540d\u79f0\u3002\u4f8b\u5982 ",(0,r.kt)("inlineCode",{parentName:"p"},"TestCache"),"\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-shell"},'dotnet sql-cache create "Data Source=(localdb)\\MSSQLLocalDB;Initial Catalog=DistCache;Integrated Security=True;" dbo TestCache\n')),(0,r.kt)("p",null,"\u521b\u5efa\u6210\u529f\u540e\uff0c\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Startup.cs")," \u4e2d\u6ce8\u518c\u5373\u53ef\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'services.AddDistributedSqlServerCache(options =>\n{\n options.ConnectionString =\n _config["DistCache_ConnectionString"];\n options.SchemaName = "dbo";\n options.TableName = "TestCache";\n});\n')),(0,r.kt)("h3",{id:"1445-\u5206\u5e03\u5f0f-redis-\u7f13\u5b58"},"14.4.5 \u5206\u5e03\u5f0f ",(0,r.kt)("inlineCode",{parentName:"h3"},"Redis")," \u7f13\u5b58"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Redis")," \u662f\u5185\u5b58\u4e2d\u6570\u636e\u5b58\u50a8\u7684\u5f00\u6e90\u6570\u636e\u5b58\u50a8\uff0c\u901a\u5e38\u7528\u4f5c\u5206\u5e03\u5f0f\u7f13\u5b58\u3002\u5728\u4f7f\u7528\u65f6\u901a\u8fc7 ",(0,r.kt)("inlineCode",{parentName:"p"},"services.AddStackExchangeRedisCache()")," \u4e2d\u6ce8\u518c\u5373\u53ef\u3002"),(0,r.kt)("p",null,"\u8fd9\u91cc\u4e0d\u7ec6\u8bb2 ",(0,r.kt)("inlineCode",{parentName:"p"},"Redis")," \u76f8\u5173\u5185\u5bb9\uff0c\u540e\u7eed\u7ae0\u8282\u4f1a\u4f7f\u7528\u57fa\u672c\u4f8b\u5b50\u6f14\u793a\u3002"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Redis")," \u57fa\u672c\u914d\u7f6e\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'services.AddStackExchangeRedisCache(options =>\n{\n // \u8fde\u63a5\u5b57\u7b26\u4e32\uff0c\u8fd9\u91cc\u4e5f\u53ef\u4ee5\u8bfb\u53d6\u914d\u7f6e\u6587\u4ef6\n options.Configuration = "192.168.111.134,password=aW1HAyupRKmiZn3Q";\n // \u952e\u540d\u524d\u7f00\n options.InstanceName = "furion_";\n});\n')),(0,r.kt)("h3",{id:"1446-\u5206\u5e03\u5f0f-ncache-\u7f13\u5b58"},"14.4.6 \u5206\u5e03\u5f0f ",(0,r.kt)("inlineCode",{parentName:"h3"},"NCache")," \u7f13\u5b58"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"NCache")," \u662f\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},".NET")," \u548c ",(0,r.kt)("inlineCode",{parentName:"p"},".Net Core")," \u4e2d\u4ee5\u672c\u673a\u65b9\u5f0f\u5f00\u53d1\u7684\u5f00\u6e90\u5185\u5b58\u4e2d\u5206\u5e03\u5f0f\u7f13\u5b58\u3002 ",(0,r.kt)("inlineCode",{parentName:"p"},"NCache")," \u5728\u672c\u5730\u5de5\u4f5c\u5e76\u914d\u7f6e\u4e3a\u5206\u5e03\u5f0f\u7f13\u5b58\u7fa4\u96c6\uff0c\u9002\u7528\u4e8e\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Azure")," \u6216\u5176\u4ed6\u6258\u7ba1\u5e73\u53f0\u4e0a\u8fd0\u884c\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"ASP.NET Core")," \u5e94\u7528\u3002\n\u82e5\u8981\u5728\u672c\u5730\u8ba1\u7b97\u673a\u4e0a\u5b89\u88c5\u548c\u914d\u7f6e ",(0,r.kt)("inlineCode",{parentName:"p"},"NCache"),"\uff0c\u8bf7\u53c2\u9605 ",(0,r.kt)("a",{parentName:"p",href:"https://www.alachisoft.com/resources/docs/ncache-oss/getting-started-guide-windows/"},"\u9002\u7528\u4e8e Windows \u7684 NCache \u5165\u95e8\u6307\u5357"),"\u3002"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"NCache")," \u57fa\u672c\u914d\u7f6e\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u5b89\u88c5 ",(0,r.kt)("inlineCode",{parentName:"li"},"Alachisoft.NCache.OpenSource.SDK")," \u5305"),(0,r.kt)("li",{parentName:"ul"},"\u5728 ",(0,r.kt)("a",{parentName:"li",href:"https://www.alachisoft.com/resources/docs/ncache-oss/admin-guide/client-config.html"},"ncconf")," \u4e2d\u914d\u7f6e\u7f13\u5b58\u7fa4\u96c6"),(0,r.kt)("li",{parentName:"ul"},"\u6ce8\u518c ",(0,r.kt)("inlineCode",{parentName:"li"},"NCache")," \u670d\u52a1")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'services.AddNCacheDistributedCache(configuration =>\n{\n configuration.CacheName = "demoClusteredCache";\n configuration.EnableLogs = true;\n configuration.ExceptionsEnabled = true;\n});\n')),(0,r.kt)("h2",{id:"145-\u5206\u5e03\u5f0f\u7f13\u5b58\u4f7f\u7528"},"14.5 \u5206\u5e03\u5f0f\u7f13\u5b58\u4f7f\u7528"),(0,r.kt)("p",null,"\u82e5\u8981\u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"IDistributedCache")," \u63a5\u53e3\uff0c\u8bf7 ",(0,r.kt)("inlineCode",{parentName:"p"},"IDistributedCache")," \u901a\u8fc7\u6784\u9020\u51fd\u6570\u4f9d\u8d56\u5173\u7cfb\u6ce8\u5165\u3002"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{5,16,30-33}","{5,16,30-33}":!0},'public class IndexModel : PageModel\n{\n private readonly IDistributedCache _cache;\n\n public IndexModel(IDistributedCache cache)\n {\n _cache = cache;\n }\n\n public string CachedTimeUTC { get; set; }\n\n public async Task OnGetAsync()\n {\n CachedTimeUTC = "Cached Time Expired";\n // \u83b7\u53d6\u5206\u5e03\u5f0f\u7f13\u5b58\n var encodedCachedTimeUTC = await _cache.GetAsync("cachedTimeUTC");\n\n if (encodedCachedTimeUTC != null)\n {\n CachedTimeUTC = Encoding.UTF8.GetString(encodedCachedTimeUTC);\n }\n }\n\n public async Task OnPostResetCachedTime()\n {\n var currentTimeUTC = DateTime.UtcNow.ToString();\n byte[] encodedCurrentTimeUTC = Encoding.UTF8.GetBytes(currentTimeUTC);\n\n // \u8bbe\u7f6e\u5206\u5e03\u5f0f\u7f13\u5b58\n var options = new DistributedCacheEntryOptions()\n .SetSlidingExpiration(TimeSpan.FromSeconds(20));\n\n await _cache.SetAsync("cachedTimeUTC", encodedCurrentTimeUTC, options);\n\n return RedirectToPage();\n }\n}\n')),(0,r.kt)("h2",{id:"146-\u5206\u5e03\u5f0f\u7f13\u5b58\u5efa\u8bae"},"14.6 \u5206\u5e03\u5f0f\u7f13\u5b58\u5efa\u8bae"),(0,r.kt)("p",null,"\u786e\u5b9a ",(0,r.kt)("inlineCode",{parentName:"p"},"IDistributedCache")," \u6700\u9002\u5408\u4f60\u7684\u5e94\u7528\u7684\u5b9e\u73b0\u65f6\uff0c\u8bf7\u8003\u8651\u4ee5\u4e0b\u4e8b\u9879\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u73b0\u6709\u57fa\u7840\u7ed3\u6784"),(0,r.kt)("li",{parentName:"ul"},"\u6027\u80fd\u8981\u6c42"),(0,r.kt)("li",{parentName:"ul"},"\u6210\u672c"),(0,r.kt)("li",{parentName:"ul"},"\u56e2\u961f\u7ecf\u9a8c")),(0,r.kt)("p",null,"\u7f13\u5b58\u89e3\u51b3\u65b9\u6848\u901a\u5e38\u4f9d\u8d56\u4e8e\u5185\u5b58\u4e2d\u7684\u5b58\u50a8\u4ee5\u5feb\u901f\u68c0\u7d22\u7f13\u5b58\u7684\u6570\u636e\uff0c\u4f46\u662f\uff0c\u5185\u5b58\u662f\u6709\u9650\u7684\u8d44\u6e90\uff0c\u5e76\u4e14\u5f88\u6602\u8d35\u3002 \u4ec5\u5c06\u5e38\u7528\u6570\u636e\u5b58\u50a8\u5728\u7f13\u5b58\u4e2d\u3002"),(0,r.kt)("p",null,"\u901a\u5e38\uff0c",(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("inlineCode",{parentName:"strong"},"Redis")," \u7f13\u5b58\u63d0\u4f9b\u6bd4 ",(0,r.kt)("inlineCode",{parentName:"strong"},"SQL Server")," \u7f13\u5b58\u66f4\u9ad8\u7684\u541e\u5410\u91cf\u548c\u66f4\u4f4e\u7684\u5ef6\u8fdf\u3002")," \u4f46\u662f\uff0c\u901a\u5e38\u9700\u8981\u8fdb\u884c\u57fa\u51c6\u6d4b\u8bd5\u6765\u786e\u5b9a\u7f13\u5b58\u7b56\u7565\u7684\u6027\u80fd\u7279\u5f81\u3002"),(0,r.kt)("p",null,"\u5f53 ",(0,r.kt)("inlineCode",{parentName:"p"},"SQL Server")," \u7528\u4f5c\u5206\u5e03\u5f0f\u7f13\u5b58\u540e\u5907\u5b58\u50a8\u65f6\uff0c\u5bf9\u7f13\u5b58\u4f7f\u7528\u540c\u4e00\u6570\u636e\u5e93\uff0c\u5e76\u4e14\u5e94\u7528\u7684\u666e\u901a\u6570\u636e\u5b58\u50a8\u548c\u68c0\u7d22\u4f1a\u5bf9\u8fd9\u4e24\u79cd\u60c5\u51b5\u7684\u6027\u80fd\u4ea7\u751f\u8d1f\u9762\u5f71\u54cd\u3002 \u5efa\u8bae\u4f7f\u7528\u5206\u5e03\u5f0f\u7f13\u5b58\u540e\u5907\u5b58\u50a8\u7684\u4e13\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"SQL Server")," \u5b9e\u4f8b\u3002"),(0,r.kt)("h2",{id:"147-\u53cd\u9988\u4e0e\u5efa\u8bae"},"14.7 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,r.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))),(0,r.kt)("hr",null),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e86\u89e3\u66f4\u591a")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u60f3\u4e86\u89e3\u66f4\u591a ",(0,r.kt)("inlineCode",{parentName:"p"},"\u5206\u5e03\u5f0f\u7f13\u5b58")," \u77e5\u8bc6\u53ef\u67e5\u9605 ",(0,r.kt)("a",{parentName:"p",href:"https://docs.microsoft.com/zh-cn/aspnet/core/performance/caching/distributed?view=aspnetcore-5.0"},"ASP.NET Core - \u5206\u5e03\u5f0f\u7f13\u5b58")," \u7ae0\u8282\u3002"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/083979a2.50e2b484.js b/handbook/build/assets/js/083979a2.50e2b484.js new file mode 100644 index 00000000000..4e016e4c7d5 --- /dev/null +++ b/handbook/build/assets/js/083979a2.50e2b484.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[6732],{3905:function(e,n,t){t.d(n,{Zo:function(){return d},kt:function(){return u}});var a=t(7294);function i(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function r(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function o(e){for(var n=1;n=0||(i[t]=e[t]);return i}(e,n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(i[t]=e[t])}return i}var l=a.createContext({}),p=function(e){var n=a.useContext(l),t=n;return e&&(t="function"==typeof e?e(n):o(o({},n),e)),t},d=function(e){var n=p(e.components);return a.createElement(l.Provider,{value:n},e.children)},s={inlineCode:"code",wrapper:function(e){var n=e.children;return a.createElement(a.Fragment,{},n)}},m=a.forwardRef((function(e,n){var t=e.components,i=e.mdxType,r=e.originalType,l=e.parentName,d=c(e,["components","mdxType","originalType","parentName"]),m=p(t),u=i,h=m["".concat(l,".").concat(u)]||m[u]||s[u]||r;return t?a.createElement(h,o(o({ref:n},d),{},{components:t})):a.createElement(h,o({ref:n},d))}));function u(e,n){var t=arguments,i=n&&n.mdxType;if("string"==typeof e||i){var r=t.length,o=new Array(r);o[0]=m;var c={};for(var l in n)hasOwnProperty.call(n,l)&&(c[l]=n[l]);c.originalType=e,c.mdxType="string"==typeof e?e:i,o[1]=c;for(var p=2;pIDistributedCache",id:"1442-idistributedcache",children:[]},{value:"14.4.3 \u5206\u5e03\u5f0f\u5185\u5b58\u7f13\u5b58",id:"1443-\u5206\u5e03\u5f0f\u5185\u5b58\u7f13\u5b58",children:[]},{value:"14.4.4 \u5206\u5e03\u5f0f SQL Server \u7f13\u5b58",id:"1444-\u5206\u5e03\u5f0f-sql-server-\u7f13\u5b58",children:[]},{value:"14.4.5 \u5206\u5e03\u5f0f Redis \u7f13\u5b58",id:"1445-\u5206\u5e03\u5f0f-redis-\u7f13\u5b58",children:[]},{value:"14.4.6 \u5206\u5e03\u5f0f NCache \u7f13\u5b58",id:"1446-\u5206\u5e03\u5f0f-ncache-\u7f13\u5b58",children:[]}]},{value:"14.5 \u5206\u5e03\u5f0f\u7f13\u5b58\u4f7f\u7528",id:"145-\u5206\u5e03\u5f0f\u7f13\u5b58\u4f7f\u7528",children:[]},{value:"14.6 \u5206\u5e03\u5f0f\u7f13\u5b58\u5efa\u8bae",id:"146-\u5206\u5e03\u5f0f\u7f13\u5b58\u5efa\u8bae",children:[]},{value:"14.7 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"147-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],s={toc:d};function m(e){var n=e.components,t=(0,i.Z)(e,o);return(0,r.kt)("wrapper",(0,a.Z)({},s,t,{components:n,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"141-\u4ec0\u4e48\u662f\u7f13\u5b58"},"14.1 \u4ec0\u4e48\u662f\u7f13\u5b58"),(0,r.kt)("p",null,"\u7f13\u5b58\u53ef\u4ee5\u51cf\u5c11\u751f\u6210\u5185\u5bb9\u6240\u9700\u7684\u5de5\u4f5c\uff0c\u4ece\u800c\u663e\u8457\u63d0\u9ad8\u5e94\u7528\u7a0b\u5e8f\u7684\u6027\u80fd\u548c\u53ef\u4f38\u7f29\u6027\u3002 ",(0,r.kt)("strong",{parentName:"p"},"\u7f13\u5b58\u6700\u9002\u7528\u4e8e\u4e0d\u7ecf\u5e38\u66f4\u6539\u7684\u6570\u636e\uff0c\u56e0\u4e3a\u751f\u6210\u6210\u672c\u5f88\u9ad8"),"\u3002 \u901a\u8fc7\u7f13\u5b58\uff0c\u53ef\u4ee5\u6bd4\u4ece\u6570\u636e\u6e90\u8fd4\u56de\u7684\u6570\u636e\u7684\u526f\u672c\u901f\u5ea6\u5feb\u5f97\u591a\u3002 \u5e94\u8be5\u5bf9\u5e94\u7528\u8fdb\u884c\u7f16\u5199\u548c\u6d4b\u8bd5\uff0c\u4f7f\u5176\u4e0d\u8981\u6c38\u8fdc\u4f9d\u8d56\u4e8e\u7f13\u5b58\u7684\u6570\u636e\u3002"),(0,r.kt)("h2",{id:"142-\u7f13\u5b58\u7c7b\u578b"},"14.2 \u7f13\u5b58\u7c7b\u578b"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u5185\u5b58\u7f13\u5b58\uff1a\u987e\u540d\u601d\u4e49\uff0c\u5c31\u662f\u7f13\u5b58\u5728\u5e94\u7528\u90e8\u7f72\u6240\u5728\u670d\u52a1\u5668\u7684\u5185\u5b58\u4e2d"),(0,r.kt)("li",{parentName:"ul"},"\u5206\u5e03\u5f0f\u7f13\u5b58\uff1a\u5206\u5e03\u5f0f\u7f13\u5b58\u662f\u7531\u591a\u4e2a\u5e94\u7528\u670d\u52a1\u5668\u5171\u4eab\u7684\u7f13\u5b58"),(0,r.kt)("li",{parentName:"ul"},"\u54cd\u5e94\u7f13\u5b58\uff1a\u7f13\u5b58\u670d\u52a1\u5668\u7aef ",(0,r.kt)("inlineCode",{parentName:"li"},"Not Modified")," \u7684\u6570\u636e")),(0,r.kt)("h2",{id:"143-\u5185\u5b58\u7f13\u5b58\u4f7f\u7528"},"14.3 \u5185\u5b58\u7f13\u5b58\u4f7f\u7528"),(0,r.kt)("p",null,"\u5185\u5b58\u7f13\u5b58\u662f\u6700\u5e38\u7528\u7684\u7f13\u5b58\u65b9\u5f0f\uff0c\u5177\u6709\u5b58\u53d6\u5feb\uff0c\u6548\u7387\u9ad8\u7279\u70b9\u3002"),(0,r.kt)("p",null,"\u5185\u5b58\u7f13\u5b58\u901a\u8fc7\u6ce8\u5165 ",(0,r.kt)("inlineCode",{parentName:"p"},"IMemoryCache")," \u65b9\u5f0f\u6ce8\u5165\u5373\u53ef\u3002"),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u5907\u6ce8")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\uff0c\u5185\u5b58\u7f13\u5b58\u670d\u52a1\u5df2\u7ecf\u9ed8\u8ba4\u6ce8\u518c\uff0c\u65e0\u9700\u624b\u52a8\u6ce8\u518c\u3002"))),(0,r.kt)("h3",{id:"1431-\u57fa\u672c\u4f7f\u7528"},"14.3.1 \u57fa\u672c\u4f7f\u7528"),(0,r.kt)("p",null,"\u5982\uff0c\u7f13\u5b58\u5f53\u524d\u65f6\u95f4\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{13,21-24}","{13,21-24}":!0},'using Furion.DynamicApiController;\nusing Microsoft.Extensions.Caching.Memory;\nusing System;\n\nnamespace Furion.Application\n{\n public class CacheServices : IDynamicApiController\n {\n private const string _timeCacheKey = "cache_time";\n\n private readonly IMemoryCache _memoryCache;\n\n public CacheServices(IMemoryCache memoryCache)\n {\n _memoryCache = memoryCache;\n }\n\n [ApiDescriptionSettings(KeepName = true)]\n public DateTimeOffset GetOrCreate()\n {\n return _memoryCache.GetOrCreate(_timeCacheKey, entry =>\n {\n return DateTimeOffset.UtcNow;\n });\n }\n }\n}\n')),(0,r.kt)("h3",{id:"1432-\u8bbe\u7f6e\u7f13\u5b58\u9009\u9879"},"14.3.2 \u8bbe\u7f6e\u7f13\u5b58\u9009\u9879"),(0,r.kt)("p",null,"\u5185\u5b58\u7f13\u5b58\u652f\u6301\u8bbe\u7f6e\u7f13\u5b58\u65f6\u95f4\u3001\u7f13\u5b58\u5927\u5c0f\u3001\u53ca\u7edd\u5bf9\u7f13\u5b58\u8fc7\u671f\u65f6\u95f4\u7b49"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"_memoryCache.GetOrCreate(_timeCacheKey, entry =>\n{\n entry.SlidingExpiration = TimeSpan.FromSeconds(3); // \u6ed1\u52a8\u7f13\u5b58\u65f6\u95f4\n return DateTimeOffset.UtcNow;\n});\n\nawait _memoryCache.GetOrCreateAsync(_timeCacheKey, async entry =>\n{\n // \u8fd9\u91cc\u53ef\u4ee5\u4f7f\u7528\u5f02\u6b65~~\n});\n")),(0,r.kt)("div",{className:"admonition admonition-caution alert alert--warning"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 16 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"}))),"\u5173\u4e8e\u7f13\u5b58\u65f6\u95f4")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u53ea\u6709\u5177\u6709\u53ef\u8c03\u8fc7\u671f\u7684\u7f13\u5b58\u9879\u96c6\u5b58\u5728\u8fc7\u65f6\u7684\u98ce\u9669\u3002 \u5982\u679c\u8bbf\u95ee\u7684\u65f6\u95f4\u6bd4\u6ed1\u52a8\u8fc7\u671f\u65f6\u95f4\u95f4\u9694\u66f4\u9891\u7e41\uff0c\u5219\u8be5\u9879\u5c06\u6c38\u4e0d\u8fc7\u671f\u3002"),(0,r.kt)("p",{parentName:"div"},"\u5c06\u5f39\u6027\u8fc7\u671f\u4e0e\u7edd\u5bf9\u8fc7\u671f\u7ec4\u5408\u5728\u4e00\u8d77\uff0c\u4ee5\u4fdd\u8bc1\u9879\u76ee\u5728\u5176\u7edd\u5bf9\u8fc7\u671f\u65f6\u95f4\u901a\u8fc7\u540e\u8fc7\u671f\u3002 \u7edd\u5bf9\u8fc7\u671f\u4f1a\u5c06\u9879\u7684\u4e0a\u9650\u8bbe\u7f6e\u4e3a\u53ef\u7f13\u5b58\u9879\u7684\u65f6\u95f4\uff0c\u540c\u65f6\u4ecd\u5141\u8bb8\u9879\u5728\u53ef\u8c03\u6574\u8fc7\u671f\u65f6\u95f4\u95f4\u9694\u5185\u672a\u8bf7\u6c42\u65f6\u63d0\u524d\u8fc7\u671f\u3002"),(0,r.kt)("p",{parentName:"div"},"\u5982\u679c\u540c\u65f6\u6307\u5b9a\u4e86\u7edd\u5bf9\u8fc7\u671f\u548c\u53ef\u8c03\u8fc7\u671f\u65f6\u95f4\uff0c\u5219\u8fc7\u671f\u65f6\u95f4\u4ee5\u903b\u8f91\u65b9\u5f0f\u8fd0\u7b97\u3002 \u5982\u679c\u6ed1\u52a8\u8fc7\u671f\u65f6\u95f4\u95f4\u9694 \u6216 \u7edd\u5bf9\u8fc7\u671f\u65f6\u95f4\u901a\u8fc7\uff0c\u5219\u4ece\u7f13\u5b58\u4e2d\u9010\u51fa\u8be5\u9879\u3002"),(0,r.kt)("p",{parentName:"div"},"\u5982\uff1a"),(0,r.kt)("pre",{parentName:"div"},(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"_memoryCache.GetOrCreate(_timeCacheKey, entry =>\n{\n entry.SetSlidingExpiration(TimeSpan.FromSeconds(3));\n entry.AbsoluteExpirationRelativeToNow = TimeSpan.FromSeconds(20);\n return DateTime.Now;\n});\n")),(0,r.kt)("p",{parentName:"div"},"\u524d\u9762\u7684\u4ee3\u7801\u4fdd\u8bc1\u6570\u636e\u7684\u7f13\u5b58\u65f6\u95f4\u4e0d\u8d85\u8fc7\u7edd\u5bf9\u65f6\u95f4\u3002"))),(0,r.kt)("h3",{id:"1433-\u624b\u52a8\u8bbe\u7f6e\u7f13\u5b58\u9009\u9879"},"14.3.3 \u624b\u52a8\u8bbe\u7f6e\u7f13\u5b58\u9009\u9879"),(0,r.kt)("p",null,"\u9664\u4e86\u4e0a\u9762\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"Func")," \u65b9\u5f0f\u8bbe\u7f6e\u7f13\u5b58\u9009\u9879\uff0c\u6211\u4eec\u53ef\u4ee5\u624b\u52a8\u521b\u5efa\u5e76\u8bbe\u7f6e\uff0c\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"var cacheEntryOptions = new MemoryCacheEntryOptions()\n .SetSlidingExpiration(TimeSpan.FromSeconds(3));\n\n_memoryCache.Set(_timeCacheKey, DateTimeOffset.UtcNow, cacheEntryOptions);\n")),(0,r.kt)("h3",{id:"1434-\u7f13\u5b58\u4f9d\u8d56\u5173\u7cfb"},"14.3.4 \u7f13\u5b58\u4f9d\u8d56\u5173\u7cfb"),(0,r.kt)("p",null,"\u4e0b\u9762\u7684\u793a\u4f8b\u6f14\u793a\u5982\u4f55\u5728\u4f9d\u8d56\u6761\u76ee\u8fc7\u671f\u65f6\u4f7f\u7f13\u5b58\u6761\u76ee\u8fc7\u671f\u3002 ",(0,r.kt)("inlineCode",{parentName:"p"},"CancellationChangeToken")," \u6dfb\u52a0\u5230\u7f13\u5b58\u7684\u9879\u3002 \u5f53 ",(0,r.kt)("inlineCode",{parentName:"p"},"Cancel")," \u5728\u4e0a\u8c03\u7528\u65f6 ",(0,r.kt)("inlineCode",{parentName:"p"},"CancellationTokenSource")," \uff0c\u5c06\u9010\u51fa\u4e24\u4e2a\u7f13\u5b58\u9879\u3002"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'public IActionResult CreateDependentEntries()\n{\n var cts = new CancellationTokenSource();\n _cache.Set(CacheKeys.DependentCTS, cts);\n\n using (var entry = _cache.CreateEntry(CacheKeys.Parent))\n {\n // expire this entry if the dependant entry expires.\n entry.Value = DateTime.Now;\n entry.RegisterPostEvictionCallback(DependentEvictionCallback, this);\n\n _cache.Set(CacheKeys.Child,\n DateTime.Now,\n new CancellationChangeToken(cts.Token));\n }\n\n return RedirectToAction("GetDependentEntries");\n}\n\npublic IActionResult GetDependentEntries()\n{\n return View("Dependent", new DependentViewModel\n {\n ParentCachedTime = _cache.Get(CacheKeys.Parent),\n ChildCachedTime = _cache.Get(CacheKeys.Child),\n Message = _cache.Get(CacheKeys.DependentMessage)\n });\n}\n\npublic IActionResult RemoveChildEntry()\n{\n _cache.Get(CacheKeys.DependentCTS).Cancel();\n return RedirectToAction("GetDependentEntries");\n}\n\nprivate static void DependentEvictionCallback(object key, object value,\n EvictionReason reason, object state)\n{\n var message = $"Parent entry was evicted. Reason: {reason}.";\n ((HomeController)state)._cache.Set(CacheKeys.DependentMessage, message);\n}\n')),(0,r.kt)("p",null,"\u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"CancellationTokenSource")," \u5141\u8bb8\u5c06\u591a\u4e2a\u7f13\u5b58\u6761\u76ee\u4f5c\u4e3a\u4e00\u4e2a\u7ec4\u9010\u51fa\u3002 ",(0,r.kt)("inlineCode",{parentName:"p"},"using")," \u5728\u4e0a\u9762\u7684\u4ee3\u7801\u4e2d\uff0c\u5728\u5757\u4e2d\u521b\u5efa\u7684\u7f13\u5b58\u6761\u76ee ",(0,r.kt)("inlineCode",{parentName:"p"},"using")," \u5c06\u7ee7\u627f\u89e6\u53d1\u5668\u548c\u8fc7\u671f\u8bbe\u7f6e\u3002"),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e86\u89e3\u66f4\u591a")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u60f3\u4e86\u89e3\u66f4\u591a ",(0,r.kt)("inlineCode",{parentName:"p"},"\u5185\u5b58\u4e2d\u7684\u7f13\u5b58")," \u77e5\u8bc6\u53ef\u67e5\u9605 ",(0,r.kt)("a",{parentName:"p",href:"https://docs.microsoft.com/zh-cn/aspnet/core/performance/caching/memory?view=aspnetcore-5.0"},"ASP.NET Core - \u5185\u5b58\u7f13\u5b58")," \u7ae0\u8282\u3002"))),(0,r.kt)("h2",{id:"144-\u5206\u5e03\u5f0f\u7f13\u5b58"},"14.4 \u5206\u5e03\u5f0f\u7f13\u5b58"),(0,r.kt)("p",null,"\u5206\u5e03\u5f0f\u7f13\u5b58\u662f\u7531\u591a\u4e2a\u5e94\u7528\u670d\u52a1\u5668\u5171\u4eab\u7684\u7f13\u5b58\uff0c\u901a\u5e38\u4f5c\u4e3a\u5916\u90e8\u670d\u52a1\u5728\u8bbf\u95ee\u5b83\u7684\u5e94\u7528\u670d\u52a1\u5668\u4e0a\u7ef4\u62a4\u3002 \u5206\u5e03\u5f0f\u7f13\u5b58\u53ef\u4ee5\u63d0\u9ad8 ",(0,r.kt)("inlineCode",{parentName:"p"},"ASP.NET Core")," \u5e94\u7528\u7a0b\u5e8f\u7684\u6027\u80fd\u548c\u53ef\u4f38\u7f29\u6027\uff0c\u5c24\u5176\u662f\u5728\u5e94\u7528\u7a0b\u5e8f\u7531\u4e91\u670d\u52a1\u6216\u670d\u52a1\u5668\u573a\u6258\u7ba1\u65f6\u3002"),(0,r.kt)("p",null,"\u4e0e\u5176\u4ed6\u7f13\u5b58\u65b9\u6848\u76f8\u6bd4\uff0c\u5206\u5e03\u5f0f\u7f13\u5b58\u5177\u6709\u591a\u9879\u4f18\u52bf\uff0c\u5176\u4e2d\u7f13\u5b58\u7684\u6570\u636e\u5b58\u50a8\u5728\u5355\u4e2a\u5e94\u7528\u670d\u52a1\u5668\u4e0a\u3002"),(0,r.kt)("p",null,"\u5f53\u5206\u5e03\u5f0f\u7f13\u5b58\u6570\u636e\u65f6\uff0c\u6570\u636e\u5c06\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"(\u4e00\u81f4\u6027) \u8de8\u591a\u4e2a \u670d\u52a1\u5668\u7684\u8bf7\u6c42"),(0,r.kt)("li",{parentName:"ul"},"\u5b58\u6d3b\u5728\u670d\u52a1\u5668\u91cd\u542f\u548c\u5e94\u7528\u90e8\u7f72\u4e4b\u95f4"),(0,r.kt)("li",{parentName:"ul"},"\u4e0d\u4f7f\u7528\u672c\u5730\u5185\u5b58")),(0,r.kt)("p",null,"\u5206\u5e03\u5f0f\u7f13\u5b58\u914d\u7f6e\u662f\u7279\u5b9a\u4e8e\u5b9e\u73b0\u7684\u3002 \u672c\u6587\u4ecb\u7ecd\u5982\u4f55\u914d\u7f6e ",(0,r.kt)("inlineCode",{parentName:"p"},"SQL Server")," \u548c ",(0,r.kt)("inlineCode",{parentName:"p"},"Redis")," \u5206\u5e03\u5f0f\u7f13\u5b58\u3002 \u7b2c\u4e09\u65b9\u5b9e\u73b0\u4e5f\u53ef\u7528\uff0c\u4f8b\u5982 GitHub \u4e0a\u7684 ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/Alachisoft/NCache"},"NCache")," (NCache) \u3002"),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"\u65e0\u8bba\u9009\u62e9\u54ea\u79cd\u5b9e\u73b0\uff0c\u5e94\u7528\u90fd\u4f1a\u4f7f\u7528\u63a5\u53e3\u4e0e\u7f13\u5b58\u4ea4\u4e92 ",(0,r.kt)("inlineCode",{parentName:"strong"},"IDistributedCache")," \u3002")),(0,r.kt)("h3",{id:"1441-\u4f7f\u7528\u6761\u4ef6"},"14.4.1 \u4f7f\u7528\u6761\u4ef6"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u82e5\u8981\u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"li"},"SQL Server")," \u5206\u5e03\u5f0f\u7f13\u5b58\uff0c\u5219\u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"li"},"Microsoft.Extensions.Caching.SqlServer")," \u5305"),(0,r.kt)("li",{parentName:"ul"},"\u82e5\u8981\u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"li"},"Redis")," \u5206\u5e03\u5f0f\u7f13\u5b58\uff0c\u5219\u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"li"},"Microsoft.Extensions.Caching.StackExchangeRedis")," \u5305"),(0,r.kt)("li",{parentName:"ul"},"\u82e5\u8981\u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"li"},"NCache")," \u5206\u5e03\u5f0f\u7f13\u5b58\uff0c\u5219\u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"li"},"NCache.Microsoft.Extensions.Caching.OpenSource")," \u5305")),(0,r.kt)("h3",{id:"1442-idistributedcache"},"14.4.2 ",(0,r.kt)("inlineCode",{parentName:"h3"},"IDistributedCache")),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"IDistributedCache")," \u63a5\u53e3\u63d0\u4f9b\u4ee5\u4e0b\u65b9\u6cd5\u6765\u5904\u7406\u5206\u5e03\u5f0f\u7f13\u5b58\u5b9e\u73b0\u4e2d\u7684\u9879\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Get/GetAsync"),"\uff1a\u63a5\u53d7\u5b57\u7b26\u4e32\u952e\uff0c\u5e76\u68c0\u7d22\u7f13\u5b58\u9879\u4f5c\u4e3a ",(0,r.kt)("inlineCode",{parentName:"li"},"byte[]")," \u6570\u7ec4\uff08\u5982\u679c\u5728\u7f13\u5b58\u4e2d\u627e\u5230\uff09"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Set/SetAsync"),"\uff1a\u4f7f\u7528\u5b57\u7b26\u4e32\u952e\u5c06\u9879 (\u4f5c\u4e3a ",(0,r.kt)("inlineCode",{parentName:"li"},"byte[]")," \u6570\u7ec4) \u6dfb\u52a0\u5230\u7f13\u5b58\u4e2d"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Refresh/RefreshAsync")," \uff1a\u6839\u636e\u9879\u7684\u952e\u5237\u65b0\u7f13\u5b58\u4e2d\u7684\u9879\uff0c\u91cd\u7f6e\u5176\u6ed1\u52a8\u8fc7\u671f\u8d85\u65f6\uff08\u5982\u679c\u6709\uff09"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Remove/RemoveAsync"),"\uff1a\u6839\u636e\u7f13\u5b58\u9879\u7684\u5b57\u7b26\u4e32\u952e\u5220\u9664\u7f13\u5b58\u9879")),(0,r.kt)("h3",{id:"1443-\u5206\u5e03\u5f0f\u5185\u5b58\u7f13\u5b58"},"14.4.3 \u5206\u5e03\u5f0f\u5185\u5b58\u7f13\u5b58"),(0,r.kt)("p",null,"\u5206\u5e03\u5f0f\u5185\u5b58\u7f13\u5b58\uff08",(0,r.kt)("inlineCode",{parentName:"p"},"AddDistributedMemoryCache"),"\uff09\u662f\u4e00\u4e2a\u6846\u67b6\u63d0\u4f9b\u7684\u5b9e\u73b0 ",(0,r.kt)("inlineCode",{parentName:"p"},"IDistributedCache")," \uff0c\u5b83\u5c06\u9879\u5b58\u50a8\u5728\u5185\u5b58\u4e2d\u3002 ",(0,r.kt)("strong",{parentName:"p"},"\u5206\u5e03\u5f0f\u5185\u5b58\u7f13\u5b58\u4e0d\u662f\u5b9e\u9645\u7684\u5206\u5e03\u5f0f\u7f13\u5b58\uff0c\u7f13\u5b58\u9879\u7531\u5e94\u7528\u7a0b\u5e8f\u5b9e\u4f8b\u5b58\u50a8\u5728\u8fd0\u884c\u5e94\u7528\u7a0b\u5e8f\u7684\u670d\u52a1\u5668\u4e0a\u3002")),(0,r.kt)("p",null,"\u5206\u5e03\u5f0f\u5185\u5b58\u7f13\u5b58\u4f18\u70b9\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u7528\u4e8e\u5f00\u53d1\u548c\u6d4b\u8bd5\u65b9\u6848\u3002"),(0,r.kt)("li",{parentName:"ul"},"\u5728\u751f\u4ea7\u73af\u5883\u4e2d\u4f7f\u7528\u5355\u4e00\u670d\u52a1\u5668\u5e76\u4e14\u5185\u5b58\u6d88\u8017\u4e0d\u662f\u95ee\u9898\u3002 \u5b9e\u73b0\u5206\u5e03\u5f0f\u5185\u5b58\u7f13\u5b58\u4f1a\u62bd\u8c61\u5316\u7f13\u5b58\u7684\u6570\u636e\u5b58\u50a8\u3002 \u5982\u679c\u9700\u8981\u591a\u4e2a\u8282\u70b9\u6216\u5bb9\u9519\uff0c\u53ef\u4ee5\u5728\u5c06\u6765\u5b9e\u73b0\u771f\u6b63\u7684\u5206\u5e03\u5f0f\u7f13\u5b58\u89e3\u51b3\u65b9\u6848\u3002")),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u5907\u6ce8")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\uff0c\u5206\u5e03\u5f0f\u5185\u5b58\u7f13\u5b58\u670d\u52a1\u5df2\u7ecf\u9ed8\u8ba4\u6ce8\u518c\uff0c\u65e0\u9700\u624b\u52a8\u8c03\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"services.AddDistributedMemoryCache();")," \u6ce8\u518c\u3002"))),(0,r.kt)("h3",{id:"1444-\u5206\u5e03\u5f0f-sql-server-\u7f13\u5b58"},"14.4.4 \u5206\u5e03\u5f0f SQL Server \u7f13\u5b58"),(0,r.kt)("p",null,"\u5206\u5e03\u5f0f ",(0,r.kt)("inlineCode",{parentName:"p"},"SQL Server")," \u7f13\u5b58\u5b9e\u73b0 (",(0,r.kt)("inlineCode",{parentName:"p"},"AddDistributedSqlServerCache"),") \u5141\u8bb8\u5206\u5e03\u5f0f\u7f13\u5b58\u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"SQL Server")," \u6570\u636e\u5e93\u4f5c\u4e3a\u5176\u540e\u5907\u5b58\u50a8\u3002"),(0,r.kt)("p",null,"\u82e5\u8981\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"SQL Server")," \u5b9e\u4f8b\u4e2d\u521b\u5efa ",(0,r.kt)("inlineCode",{parentName:"p"},"SQL Server")," \u7f13\u5b58\u7684\u9879\u8868\uff0c\u53ef\u4ee5\u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"sql-cache")," \u5de5\u5177\u3002 \u8be5\u5de5\u5177\u5c06\u521b\u5efa\u4e00\u4e2a\u8868\uff0c\u5176\u4e2d\u5305\u542b\u6307\u5b9a\u7684\u540d\u79f0\u548c\u67b6\u6784\u3002"),(0,r.kt)("p",null,"\u901a\u8fc7\u8fd0\u884c\u547d\u4ee4 ",(0,r.kt)("inlineCode",{parentName:"p"},"sql-cache create")," \u521b\u5efa\u4e00\u4e2a\u8868\uff0c\u63d0\u4f9b ",(0,r.kt)("inlineCode",{parentName:"p"},"SQL Server")," \u5b9e\u4f8b (Data Source) \u3001\u6570\u636e\u5e93 (Initial Catalog) \u3001\u67b6\u6784 (\u4f8b\u5982) dbo \u548c\u8868\u540d\u79f0\u3002\u4f8b\u5982 ",(0,r.kt)("inlineCode",{parentName:"p"},"TestCache"),"\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-shell"},'dotnet sql-cache create "Data Source=(localdb)\\MSSQLLocalDB;Initial Catalog=DistCache;Integrated Security=True;" dbo TestCache\n')),(0,r.kt)("p",null,"\u521b\u5efa\u6210\u529f\u540e\uff0c\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Startup.cs")," \u4e2d\u6ce8\u518c\u5373\u53ef\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'services.AddDistributedSqlServerCache(options =>\n{\n options.ConnectionString =\n _config["DistCache_ConnectionString"];\n options.SchemaName = "dbo";\n options.TableName = "TestCache";\n});\n')),(0,r.kt)("h3",{id:"1445-\u5206\u5e03\u5f0f-redis-\u7f13\u5b58"},"14.4.5 \u5206\u5e03\u5f0f ",(0,r.kt)("inlineCode",{parentName:"h3"},"Redis")," \u7f13\u5b58"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Redis")," \u662f\u5185\u5b58\u4e2d\u6570\u636e\u5b58\u50a8\u7684\u5f00\u6e90\u6570\u636e\u5b58\u50a8\uff0c\u901a\u5e38\u7528\u4f5c\u5206\u5e03\u5f0f\u7f13\u5b58\u3002\u5728\u4f7f\u7528\u65f6\u901a\u8fc7 ",(0,r.kt)("inlineCode",{parentName:"p"},"services.AddStackExchangeRedisCache()")," \u4e2d\u6ce8\u518c\u5373\u53ef\u3002"),(0,r.kt)("p",null,"\u8fd9\u91cc\u4e0d\u7ec6\u8bb2 ",(0,r.kt)("inlineCode",{parentName:"p"},"Redis")," \u76f8\u5173\u5185\u5bb9\uff0c\u540e\u7eed\u7ae0\u8282\u4f1a\u4f7f\u7528\u57fa\u672c\u4f8b\u5b50\u6f14\u793a\u3002"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Redis")," \u57fa\u672c\u914d\u7f6e\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'services.AddStackExchangeRedisCache(options =>\n{\n // \u8fde\u63a5\u5b57\u7b26\u4e32\uff0c\u8fd9\u91cc\u4e5f\u53ef\u4ee5\u8bfb\u53d6\u914d\u7f6e\u6587\u4ef6\n options.Configuration = "192.168.111.134,password=aW1HAyupRKmiZn3Q";\n // \u952e\u540d\u524d\u7f00\n options.InstanceName = "furion_";\n});\n')),(0,r.kt)("h3",{id:"1446-\u5206\u5e03\u5f0f-ncache-\u7f13\u5b58"},"14.4.6 \u5206\u5e03\u5f0f ",(0,r.kt)("inlineCode",{parentName:"h3"},"NCache")," \u7f13\u5b58"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"NCache")," \u662f\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},".NET")," \u548c ",(0,r.kt)("inlineCode",{parentName:"p"},".Net Core")," \u4e2d\u4ee5\u672c\u673a\u65b9\u5f0f\u5f00\u53d1\u7684\u5f00\u6e90\u5185\u5b58\u4e2d\u5206\u5e03\u5f0f\u7f13\u5b58\u3002 ",(0,r.kt)("inlineCode",{parentName:"p"},"NCache")," \u5728\u672c\u5730\u5de5\u4f5c\u5e76\u914d\u7f6e\u4e3a\u5206\u5e03\u5f0f\u7f13\u5b58\u7fa4\u96c6\uff0c\u9002\u7528\u4e8e\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Azure")," \u6216\u5176\u4ed6\u6258\u7ba1\u5e73\u53f0\u4e0a\u8fd0\u884c\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"ASP.NET Core")," \u5e94\u7528\u3002\n\u82e5\u8981\u5728\u672c\u5730\u8ba1\u7b97\u673a\u4e0a\u5b89\u88c5\u548c\u914d\u7f6e ",(0,r.kt)("inlineCode",{parentName:"p"},"NCache"),"\uff0c\u8bf7\u53c2\u9605 ",(0,r.kt)("a",{parentName:"p",href:"https://www.alachisoft.com/resources/docs/ncache-oss/getting-started-guide-windows/"},"\u9002\u7528\u4e8e Windows \u7684 NCache \u5165\u95e8\u6307\u5357"),"\u3002"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"NCache")," \u57fa\u672c\u914d\u7f6e\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u5b89\u88c5 ",(0,r.kt)("inlineCode",{parentName:"li"},"Alachisoft.NCache.OpenSource.SDK")," \u5305"),(0,r.kt)("li",{parentName:"ul"},"\u5728 ",(0,r.kt)("a",{parentName:"li",href:"https://www.alachisoft.com/resources/docs/ncache-oss/admin-guide/client-config.html"},"ncconf")," \u4e2d\u914d\u7f6e\u7f13\u5b58\u7fa4\u96c6"),(0,r.kt)("li",{parentName:"ul"},"\u6ce8\u518c ",(0,r.kt)("inlineCode",{parentName:"li"},"NCache")," \u670d\u52a1")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'services.AddNCacheDistributedCache(configuration =>\n{\n configuration.CacheName = "demoClusteredCache";\n configuration.EnableLogs = true;\n configuration.ExceptionsEnabled = true;\n});\n')),(0,r.kt)("h2",{id:"145-\u5206\u5e03\u5f0f\u7f13\u5b58\u4f7f\u7528"},"14.5 \u5206\u5e03\u5f0f\u7f13\u5b58\u4f7f\u7528"),(0,r.kt)("p",null,"\u82e5\u8981\u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"IDistributedCache")," \u63a5\u53e3\uff0c\u8bf7 ",(0,r.kt)("inlineCode",{parentName:"p"},"IDistributedCache")," \u901a\u8fc7\u6784\u9020\u51fd\u6570\u4f9d\u8d56\u5173\u7cfb\u6ce8\u5165\u3002"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{5,16,30-33}","{5,16,30-33}":!0},'public class IndexModel : PageModel\n{\n private readonly IDistributedCache _cache;\n\n public IndexModel(IDistributedCache cache)\n {\n _cache = cache;\n }\n\n public string CachedTimeUTC { get; set; }\n\n public async Task OnGetAsync()\n {\n CachedTimeUTC = "Cached Time Expired";\n // \u83b7\u53d6\u5206\u5e03\u5f0f\u7f13\u5b58\n var encodedCachedTimeUTC = await _cache.GetAsync("cachedTimeUTC");\n\n if (encodedCachedTimeUTC != null)\n {\n CachedTimeUTC = Encoding.UTF8.GetString(encodedCachedTimeUTC);\n }\n }\n\n public async Task OnPostResetCachedTime()\n {\n var currentTimeUTC = DateTime.UtcNow.ToString();\n byte[] encodedCurrentTimeUTC = Encoding.UTF8.GetBytes(currentTimeUTC);\n\n // \u8bbe\u7f6e\u5206\u5e03\u5f0f\u7f13\u5b58\n var options = new DistributedCacheEntryOptions()\n .SetSlidingExpiration(TimeSpan.FromSeconds(20));\n\n await _cache.SetAsync("cachedTimeUTC", encodedCurrentTimeUTC, options);\n\n return RedirectToPage();\n }\n}\n')),(0,r.kt)("h2",{id:"146-\u5206\u5e03\u5f0f\u7f13\u5b58\u5efa\u8bae"},"14.6 \u5206\u5e03\u5f0f\u7f13\u5b58\u5efa\u8bae"),(0,r.kt)("p",null,"\u786e\u5b9a ",(0,r.kt)("inlineCode",{parentName:"p"},"IDistributedCache")," \u6700\u9002\u5408\u4f60\u7684\u5e94\u7528\u7684\u5b9e\u73b0\u65f6\uff0c\u8bf7\u8003\u8651\u4ee5\u4e0b\u4e8b\u9879\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u73b0\u6709\u57fa\u7840\u7ed3\u6784"),(0,r.kt)("li",{parentName:"ul"},"\u6027\u80fd\u8981\u6c42"),(0,r.kt)("li",{parentName:"ul"},"\u6210\u672c"),(0,r.kt)("li",{parentName:"ul"},"\u56e2\u961f\u7ecf\u9a8c")),(0,r.kt)("p",null,"\u7f13\u5b58\u89e3\u51b3\u65b9\u6848\u901a\u5e38\u4f9d\u8d56\u4e8e\u5185\u5b58\u4e2d\u7684\u5b58\u50a8\u4ee5\u5feb\u901f\u68c0\u7d22\u7f13\u5b58\u7684\u6570\u636e\uff0c\u4f46\u662f\uff0c\u5185\u5b58\u662f\u6709\u9650\u7684\u8d44\u6e90\uff0c\u5e76\u4e14\u5f88\u6602\u8d35\u3002 \u4ec5\u5c06\u5e38\u7528\u6570\u636e\u5b58\u50a8\u5728\u7f13\u5b58\u4e2d\u3002"),(0,r.kt)("p",null,"\u901a\u5e38\uff0c",(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("inlineCode",{parentName:"strong"},"Redis")," \u7f13\u5b58\u63d0\u4f9b\u6bd4 ",(0,r.kt)("inlineCode",{parentName:"strong"},"SQL Server")," \u7f13\u5b58\u66f4\u9ad8\u7684\u541e\u5410\u91cf\u548c\u66f4\u4f4e\u7684\u5ef6\u8fdf\u3002")," \u4f46\u662f\uff0c\u901a\u5e38\u9700\u8981\u8fdb\u884c\u57fa\u51c6\u6d4b\u8bd5\u6765\u786e\u5b9a\u7f13\u5b58\u7b56\u7565\u7684\u6027\u80fd\u7279\u5f81\u3002"),(0,r.kt)("p",null,"\u5f53 ",(0,r.kt)("inlineCode",{parentName:"p"},"SQL Server")," \u7528\u4f5c\u5206\u5e03\u5f0f\u7f13\u5b58\u540e\u5907\u5b58\u50a8\u65f6\uff0c\u5bf9\u7f13\u5b58\u4f7f\u7528\u540c\u4e00\u6570\u636e\u5e93\uff0c\u5e76\u4e14\u5e94\u7528\u7684\u666e\u901a\u6570\u636e\u5b58\u50a8\u548c\u68c0\u7d22\u4f1a\u5bf9\u8fd9\u4e24\u79cd\u60c5\u51b5\u7684\u6027\u80fd\u4ea7\u751f\u8d1f\u9762\u5f71\u54cd\u3002 \u5efa\u8bae\u4f7f\u7528\u5206\u5e03\u5f0f\u7f13\u5b58\u540e\u5907\u5b58\u50a8\u7684\u4e13\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"SQL Server")," \u5b9e\u4f8b\u3002"),(0,r.kt)("h2",{id:"147-\u53cd\u9988\u4e0e\u5efa\u8bae"},"14.7 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,r.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))),(0,r.kt)("hr",null),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e86\u89e3\u66f4\u591a")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u60f3\u4e86\u89e3\u66f4\u591a ",(0,r.kt)("inlineCode",{parentName:"p"},"\u5206\u5e03\u5f0f\u7f13\u5b58")," \u77e5\u8bc6\u53ef\u67e5\u9605 ",(0,r.kt)("a",{parentName:"p",href:"https://docs.microsoft.com/zh-cn/aspnet/core/performance/caching/distributed?view=aspnetcore-5.0"},"ASP.NET Core - \u5206\u5e03\u5f0f\u7f13\u5b58")," \u7ae0\u8282\u3002"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/093b1cf0.4f539049.js b/handbook/build/assets/js/093b1cf0.4f539049.js deleted file mode 100644 index f9b02e186ae..00000000000 --- a/handbook/build/assets/js/093b1cf0.4f539049.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[5786],{3905:function(e,n,t){t.d(n,{Zo:function(){return c},kt:function(){return u}});var r=t(7294);function a(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function o(e){for(var n=1;n=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var l=r.createContext({}),p=function(e){var n=r.useContext(l),t=n;return e&&(t="function"==typeof e?e(n):o(o({},n),e)),t},c=function(e){var n=p(e.components);return r.createElement(l.Provider,{value:n},e.children)},d={inlineCode:"code",wrapper:function(e){var n=e.children;return r.createElement(r.Fragment,{},n)}},m=r.forwardRef((function(e,n){var t=e.components,a=e.mdxType,i=e.originalType,l=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),m=p(t),u=a,k=m["".concat(l,".").concat(u)]||m[u]||d[u]||i;return t?r.createElement(k,o(o({ref:n},c),{},{components:t})):r.createElement(k,o({ref:n},c))}));function u(e,n){var t=arguments,a=n&&n.mdxType;if("string"==typeof e||a){var i=t.length,o=new Array(i);o[0]=m;var s={};for(var l in n)hasOwnProperty.call(n,l)&&(s[l]=n[l]);s.originalType=e,s.mdxType="string"==typeof e?e:a,o[1]=s;for(var p=2;p\u4e3b\u5e93 \u6570\u636e\u5e93\u4e0a\u4e0b\u6587",id:"92721-\u521b\u5efa-\u4e3b\u5e93-\u6570\u636e\u5e93\u4e0a\u4e0b\u6587",children:[]},{value:"9.27.2.2 \u521b\u5efa \u4ece\u5e93 \u6570\u636e\u5e93\u4e0a\u4e0b\u6587",id:"92722-\u521b\u5efa-\u4ece\u5e93-\u6570\u636e\u5e93\u4e0a\u4e0b\u6587",children:[]},{value:"9.27.2.3 \u6ce8\u518c \u4e3b\u4ece\u5e93 \u6570\u636e\u5e93\u4e0a\u4e0b\u6587",id:"92723-\u6ce8\u518c-\u4e3b\u4ece\u5e93-\u6570\u636e\u5e93\u4e0a\u4e0b\u6587",children:[]},{value:"9.27.2.4 \u521b\u5efa Person \u5b9e\u4f53",id:"92724-\u521b\u5efa-person-\u5b9e\u4f53",children:[]},{value:"9.27.2.5 \u5c06 Person \u8f6c\u6362\u6210\u6570\u636e\u5e93\u8868",id:"92725-\u5c06-person-\u8f6c\u6362\u6210\u6570\u636e\u5e93\u8868",children:[]},{value:"9.27.2.6 \u56fa\u5b9a\u4e3b\u4ece\u5e93\u4f7f\u7528\u4f8b\u5b50",id:"92726-\u56fa\u5b9a\u4e3b\u4ece\u5e93\u4f7f\u7528\u4f8b\u5b50",children:[]},{value:"9.27.2.7 \u968f\u673a\u6216 \u81ea\u5b9a\u4e49\u8fd4\u56de\u4ece\u5e93 \u2728",id:"92727-\u968f\u673a\u6216-\u81ea\u5b9a\u4e49\u8fd4\u56de\u4ece\u5e93-",children:[]}]},{value:"9.27.3 \u4e3b\u4ece\u590d\u5236",id:"9273-\u4e3b\u4ece\u590d\u5236",children:[]},{value:"9.27.4 \u4e3b\u4ece\u590d\u5236\u51e0\u79cd\u65b9\u5f0f",id:"9274-\u4e3b\u4ece\u590d\u5236\u51e0\u79cd\u65b9\u5f0f",children:[{value:"9.27.4.1 \u540c\u6b65\u590d\u5236",id:"92741-\u540c\u6b65\u590d\u5236",children:[]},{value:"9.27.4.2 \u5f02\u6b65\u590d\u5236",id:"92742-\u5f02\u6b65\u590d\u5236",children:[]},{value:"9.27.4.3 \u534a\u540c\u6b65\u590d\u5236",id:"92743-\u534a\u540c\u6b65\u590d\u5236",children:[]}]},{value:"9.27.5 SqlServer \u4e3b\u5e93\u914d\u7f6e",id:"9275-sqlserver-\u4e3b\u5e93\u914d\u7f6e",children:[{value:"9.27.5.1 \u6dfb\u52a0 \u672c\u5730\u53d1\u5e03",id:"92751-\u6dfb\u52a0-\u672c\u5730\u53d1\u5e03",children:[]},{value:"9.27.5.2 \u9009\u62e9 \u5206\u53d1\u670d\u52a1\u5668",id:"92752-\u9009\u62e9-\u5206\u53d1\u670d\u52a1\u5668",children:[]},{value:"9.27.5.3 \u542f\u7528 \u4ee3\u7406",id:"92753-\u542f\u7528-\u4ee3\u7406",children:[]},{value:"9.27.5.4 \u53d1\u5e03\u6570\u636e\u5e93",id:"92754-\u53d1\u5e03\u6570\u636e\u5e93",children:[]},{value:"9.27.5.5 \u5feb\u7167\u53d1\u5e03",id:"92755-\u5feb\u7167\u53d1\u5e03",children:[]},{value:"9.27.5.6 \u9009\u62e9\u53d1\u5e03\u9879\u76ee",id:"92756-\u9009\u62e9\u53d1\u5e03\u9879\u76ee",children:[]},{value:"9.27.5.7 \u914d\u7f6e\u5206\u53d1\u8ba1\u5212",id:"92757-\u914d\u7f6e\u5206\u53d1\u8ba1\u5212",children:[]},{value:"9.27.5.8 \u914d\u7f6e\u5b89\u5168\u8bbe\u7f6e",id:"92758-\u914d\u7f6e\u5b89\u5168\u8bbe\u7f6e",children:[]},{value:"9.27.5.9 \u5b8c\u6210\u914d\u7f6e",id:"92759-\u5b8c\u6210\u914d\u7f6e",children:[]}]},{value:"9.27.6 SqlServer \u4ece\u5e93\u914d\u7f6e",id:"9276-sqlserver-\u4ece\u5e93\u914d\u7f6e",children:[{value:"9.27.6.1 \u6dfb\u52a0 \u672c\u5730\u8ba2\u9605",id:"92761-\u6dfb\u52a0-\u672c\u5730\u8ba2\u9605",children:[]},{value:"9.27.6.2 \u9009\u62e9 \u5206\u53d1\u670d\u52a1\u5668",id:"92762-\u9009\u62e9-\u5206\u53d1\u670d\u52a1\u5668",children:[]},{value:"9.27.6.3 \u9009\u62e9 \u5206\u53d1\u4ee3\u7406\u4f4d\u7f6e",id:"92763-\u9009\u62e9-\u5206\u53d1\u4ee3\u7406\u4f4d\u7f6e",children:[]},{value:"9.27.6.4 \u9009\u62e9 \u8ba2\u9605\u6570\u636e\u5e93",id:"92764-\u9009\u62e9-\u8ba2\u9605\u6570\u636e\u5e93",children:[]},{value:"9.27.6.5 \u9009\u62e9 \u5206\u53d1\u5b89\u5168\u8bbe\u7f6e",id:"92765-\u9009\u62e9-\u5206\u53d1\u5b89\u5168\u8bbe\u7f6e",children:[]},{value:"9.27.6.6 \u9009\u62e9 \u540c\u6b65\u8ba1\u5212",id:"92766-\u9009\u62e9-\u540c\u6b65\u8ba1\u5212",children:[]},{value:"9.27.6.7 \u5b8c\u6210\u8ba2\u9605",id:"92767-\u5b8c\u6210\u8ba2\u9605",children:[]}]},{value:"9.27.7 \u5206\u53d1\u5b9a\u4e49\u76d1\u89c6",id:"9277-\u5206\u53d1\u5b9a\u4e49\u76d1\u89c6",children:[]},{value:"9.27.8 \u67e5\u770b\u4e3b\u4ece\u590d\u5236\u7ed3\u679c",id:"9278-\u67e5\u770b\u4e3b\u4ece\u590d\u5236\u7ed3\u679c",children:[]},{value:"9.27.9 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"9279-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],m={toc:d};function u(e){var n=e.components,t=(0,a.Z)(e,s);return(0,i.kt)("wrapper",(0,r.Z)({},m,t,{components:n,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"9271-\u8bfb\u5199\u5206\u79bb"},"9.27.1 \u8bfb\u5199\u5206\u79bb"),(0,i.kt)("p",null,"\u5176\u5b9e\u5c31\u662f\u5c06\u6570\u636e\u5e93\u5206\u4e3a\u4e86\u4e3b\u4ece\u5e93\uff0c\u4e00\u4e2a\u4e3b\u5e93\u7528\u4e8e\u5199\u6570\u636e\uff0c\u591a\u4e2a\u4ece\u5e93\u5b8c\u6210\u8bfb\u6570\u636e\u7684\u64cd\u4f5c\uff0c\u4e3b\u4ece\u5e93\u4e4b\u95f4\u901a\u8fc7\u67d0\u79cd\u673a\u5236\u8fdb\u884c\u6570\u636e\u7684\u540c\u6b65\uff0c\u662f\u4e00\u79cd\u5e38\u89c1\u7684\u6570\u636e\u5e93\u67b6\u6784\u3002"),(0,i.kt)("img",{src:(0,o.Z)("img/readwrite.png"),style:{height:300}}),(0,i.kt)("h3",{id:"92711-\u89e3\u51b3\u4e86\u4ec0\u4e48\u95ee\u9898"},"9.27.1.1 \u89e3\u51b3\u4e86\u4ec0\u4e48\u95ee\u9898"),(0,i.kt)("p",null,"\u5927\u591a\u6570\u4e92\u8054\u7f51\u4e1a\u52a1\uff0c\u5f80\u5f80\u8bfb\u591a\u5199\u5c11\uff0c\u8fd9\u65f6\u5019\uff0c\u6570\u636e\u5e93\u7684\u8bfb\u4f1a\u9996\u5148\u6210\u4e3a\u6570\u636e\u5e93\u7684\u74f6\u9888\uff0c\u8fd9\u65f6\uff0c\u5982\u679c\u6211\u4eec\u5e0c\u671b\u80fd\u591f\u7ebf\u6027\u7684\u63d0\u5347\u6570\u636e\u5e93\u7684\u8bfb\u6027\u80fd\uff0c\u6d88\u9664\u8bfb\u5199\u9501\u51b2\u7a81\u4ece\u800c\u63d0\u5347\u6570\u636e\u5e93\u7684\u5199\u6027\u80fd\uff0c\u90a3\u4e48\u5c31\u53ef\u4ee5\u4f7f\u7528\u201c\u5206\u7ec4\u67b6\u6784\u201d\uff08\u8bfb\u5199\u5206\u79bb\u67b6\u6784\uff09\u3002"),(0,i.kt)("p",null,"\u7528\u4e00\u53e5\u8bdd\u6982\u62ec\uff0c\u8bfb\u5199\u5206\u79bb\u662f\u7528\u6765\u89e3\u51b3\u6570\u636e\u5e93\u7684\u8bfb\u6027\u80fd\u74f6\u9888\u7684\u3002"),(0,i.kt)("h3",{id:"92712-\u6ce8\u610f\u4e8b\u9879"},"9.27.1.2 \u6ce8\u610f\u4e8b\u9879"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"\u6570\u636e\u5e93\u8fde\u63a5\u6c60\u8981\u8fdb\u884c\u533a\u5206\uff0c\u54ea\u4e9b\u662f\u8bfb\u8fde\u63a5\u6c60\uff0c\u54ea\u4e2a\u662f\u5199\u8fde\u63a5\u6c60\uff0c\u7814\u53d1\u7684\u96be\u5ea6\u4f1a\u589e\u52a0\uff1b"),(0,i.kt)("li",{parentName:"ul"},"\u4e3a\u4e86\u4fdd\u8bc1\u9ad8\u53ef\u7528\uff0c\u8bfb\u8fde\u63a5\u6c60\u8981\u80fd\u591f\u5b9e\u73b0\u6545\u969c\u81ea\u52a8\u8f6c\u79fb\uff1b"),(0,i.kt)("li",{parentName:"ul"},"\u4e3b\u4ece\u7684\u4e00\u81f4\u6027\u95ee\u9898\u9700\u8981\u8003\u8651\u3002")),(0,i.kt)("h2",{id:"9272-\u5982\u4f55\u5b9e\u73b0"},"9.27.2 \u5982\u4f55\u5b9e\u73b0"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u5728\u6570\u636e\u5e93\u6a21\u5757\u8bbe\u8ba1\u4e4b\u521d\uff0c\u5c31\u8003\u8651\u4e86\u8bfb\u5199\u5206\u79bb\u8fd9\u79cd\u60c5\u51b5\uff0c\u6240\u4ee5\u4ece\u5e95\u5c42\u5c31\u652f\u6301\u52a8\u6001\u5207\u6362\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u53ca\u8bfb\u5199\u64cd\u4f5c\u65b9\u6cd5\u7ea6\u675f\u3002"),(0,i.kt)("p",null,"\u8bfb\u5199\u5206\u79bb\u64cd\u4f5c\u4e3b\u8981\u4f7f\u7528 ",(0,i.kt)("inlineCode",{parentName:"p"},"IMSRepository")," \u4ed3\u50a8\uff0c\u8be5\u4ed3\u50a8\u5df2\u7ecf\u4e3a\u5f00\u53d1\u8005\u63d0\u4f9b\u65b9\u4fbf\u7684\u64cd\u4f5c\u8c03\u7528\u3002\u5f53\u7136\u4e5f\u53ef\u4ee5\u4e0d\u4f7f\u7528\u8be5\u4ed3\u50a8\u3002"),(0,i.kt)("p",null,"\u4e0b\u9762\u5c31\u7ed9\u5927\u5bb6\u6f14\u793a\u5982\u4f55\u8bfb\u5199\u591a\u5e93\u8bfb\u5199\u64cd\u4f5c\u3002"),(0,i.kt)("h3",{id:"92721-\u521b\u5efa-\u4e3b\u5e93-\u6570\u636e\u5e93\u4e0a\u4e0b\u6587"},"9.27.2.1 \u521b\u5efa ",(0,i.kt)("inlineCode",{parentName:"h3"},"\u4e3b\u5e93")," \u6570\u636e\u5e93\u4e0a\u4e0b\u6587"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'using Furion.DatabaseAccessor;\nusing Microsoft.EntityFrameworkCore;\n\nnamespace Furion.EntityFramework.Core\n{\n /// \n /// \u4e3b\u5e93\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\n /// \n [AppDbContext("MasterConnectionString")]\n public class MasterDbContext : AppDbContext\n {\n public MasterDbContext(DbContextOptions options) : base(options)\n {\n }\n }\n}\n')),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"\u6570\u636e\u5e93\u8fde\u63a5\u5b57\u7b26\u4e32\uff1a")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-json"},'{\n "ConnectionStrings": {\n "MasterConnectionString": "Server=localhost;Database=Furion;User=sa;Password=000000;MultipleActiveResultSets=True;"\n }\n}\n')),(0,i.kt)("h3",{id:"92722-\u521b\u5efa-\u4ece\u5e93-\u6570\u636e\u5e93\u4e0a\u4e0b\u6587"},"9.27.2.2 \u521b\u5efa ",(0,i.kt)("inlineCode",{parentName:"h3"},"\u4ece\u5e93")," \u6570\u636e\u5e93\u4e0a\u4e0b\u6587"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{11}","{11}":!0},'using Furion.Core;\nusing Furion.DatabaseAccessor;\nusing Microsoft.EntityFrameworkCore;\n\nnamespace Furion.EntityFramework.Core\n{\n /// \n /// \u4ece\u5e93\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\n /// \n [AppDbContext("SlaveConnectionString")]\n public class SlaveDbContext : AppDbContext\n {\n public SlaveDbContext(DbContextOptions options) : base(options)\n {\n }\n }\n}\n')),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u6ce8\u610f")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u591a\u6570\u636e\u5e93\u64cd\u4f5c\u9664\u4e86\u9ed8\u8ba4\u6570\u636e\u5e93\u65e0\u9700\u81ea\u5b9a\u4e49 ",(0,i.kt)("strong",{parentName:"p"},"\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u5b9a\u4f4d\u5668"),"\uff0c\u5176\u4ed6\u6570\u636e\u5e93\u90fd\u9700\u8981\u6709\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u5b9a\u4f4d\u5668\u3002\u5982 ",(0,i.kt)("inlineCode",{parentName:"p"},"SlaveDbContextLocator")))),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"\u4ece\u5e93\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u5b9a\u4f4d\u5668\uff1a")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{8}","{8}":!0},"using Furion.DatabaseAccessor;\n\nnamespace Furion.Core\n{\n /// \n /// \u4ece\u5e93\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u5b9a\u4f4d\u5668\n /// \n public class SlaveDbContextLocator : IDbContextLocator\n {\n }\n}\n")),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"\u6570\u636e\u5e93\u8fde\u63a5\u5b57\u7b26\u4e32\uff1a")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-json"},'{\n "ConnectionStrings": {\n "SlaveConnectionString": "Server=localhost;Database=FurSlave;User=sa;Password=000000;MultipleActiveResultSets=True;"\n }\n}\n')),(0,i.kt)("h3",{id:"92723-\u6ce8\u518c-\u4e3b\u4ece\u5e93-\u6570\u636e\u5e93\u4e0a\u4e0b\u6587"},"9.27.2.3 \u6ce8\u518c ",(0,i.kt)("inlineCode",{parentName:"h3"},"\u4e3b\u4ece\u5e93")," \u6570\u636e\u5e93\u4e0a\u4e0b\u6587"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{13-14}","{13-14}":!0},"using Furion.Core;\nusing Microsoft.Extensions.DependencyInjection;\n\nnamespace Furion.EntityFramework.Core\n{\n [AppStartup(600)]\n public sealed class FurEntityFrameworkCoreStartup : AppStartup\n {\n public void ConfigureServices(IServiceCollection services)\n {\n services.AddDatabaseAccessor(options =>\n {\n services.AddDbPool();\n services.AddDbPool();\n });\n }\n }\n}\n")),(0,i.kt)("h3",{id:"92724-\u521b\u5efa-person-\u5b9e\u4f53"},"9.27.2.4 \u521b\u5efa ",(0,i.kt)("inlineCode",{parentName:"h3"},"Person")," \u5b9e\u4f53"),(0,i.kt)("p",null,"\u7531\u4e8e ",(0,i.kt)("inlineCode",{parentName:"p"},"\u4e3b\u4ece\u5e93")," \u5177\u6709\u76f8\u540c\u7684\u6570\u636e\u5e93\u7ed3\u6784\uff0c\u6240\u4ee5\u5b9e\u4f53\u4e5f\u5fc5\u987b\u58f0\u660e ",(0,i.kt)("inlineCode",{parentName:"p"},"\u4e3b\u4ece\u5e93"),"\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{7}","{7}":!0},"using Furion.DatabaseAccessor;\nusing System.ComponentModel.DataAnnotations;\nusing System.ComponentModel.DataAnnotations.Schema;\n\nnamespace Furion.Core\n{\n public class Person : IEntity\n {\n /// \n /// \u4e3b\u952eId\n /// \n [Key]\n [DatabaseGenerated(DatabaseGeneratedOption.Identity)]\n public int Id { get; set; }\n\n /// \n /// \u540d\u79f0\n /// \n public string Name { get; set; }\n\n /// \n /// \u5e74\u9f84\n /// \n public int Age { get; set; }\n }\n}\n")),(0,i.kt)("h3",{id:"92725-\u5c06-person-\u8f6c\u6362\u6210\u6570\u636e\u5e93\u8868"},"9.27.2.5 \u5c06 ",(0,i.kt)("inlineCode",{parentName:"h3"},"Person")," \u8f6c\u6362\u6210\u6570\u636e\u5e93\u8868"),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"\u521b\u5efa\u4e3b\u5e93\u6570\u636e\u5e93\u8868\uff1a")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-shell"},"Add-Migration v0.0.1 -Context MasterDbContext\n")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-shell"},"Update-Database -Context MasterDbContext\n")),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"\u521b\u5efa\u4ece\u5e93\u6570\u636e\u5e93\u8868\uff1a")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-shell"},"Add-Migration v0.0.1 -Context SlaveDbContext\n")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-shell"},"Update-Database -Context SlaveDbContext\n")),(0,i.kt)("img",{src:(0,o.Z)("img/readwrite1.png")}),(0,i.kt)("img",{src:(0,o.Z)("img/readwrite2.png")}),(0,i.kt)("h3",{id:"92726-\u56fa\u5b9a\u4e3b\u4ece\u5e93\u4f7f\u7528\u4f8b\u5b50"},"9.27.2.6 \u56fa\u5b9a\u4e3b\u4ece\u5e93\u4f7f\u7528\u4f8b\u5b50"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{13,19,31,40}","{13,19,31,40}":!0},'using Furion.Core;\nusing Furion.DatabaseAccessor;\nusing Furion.DynamicApiController;\nusing System.Collections.Generic;\n\nnamespace Furion.Application\n{\n public class PersonService : IDynamicApiController\n {\n /// \n /// \u53ef\u8c03\u914d\u4ed3\u50a8\uff08\u8bfb\u5199\u5206\u79bb\uff09\n /// \n private readonly IMSRepository _msRepository;\n\n /// \n /// \u6784\u9020\u51fd\u6570\u521d\u59cb\u5316\n /// \n /// \n public PersonService(IMSRepository msRepository)\n {\n _msRepository = msRepository;\n }\n\n /// \n /// \u65b0\u589e\u8d70\u4e3b\u5e93\n /// \n /// \n /// \n public void Insert(Person person)\n {\n _msRepository.Master().Insert(person);\n }\n\n /// \n /// \u67e5\u8be2\u8d70\u4ece\u5e93\n /// \n /// \n public List Get()\n {\n return _msRepository.Slave1().AsEnumerable().ToList();\n }\n }\n}\n')),(0,i.kt)("h3",{id:"92727-\u968f\u673a\u6216-\u81ea\u5b9a\u4e49\u8fd4\u56de\u4ece\u5e93-"},"9.27.2.7 ",(0,i.kt)("inlineCode",{parentName:"h3"},"\u968f\u673a"),"\u6216 ",(0,i.kt)("inlineCode",{parentName:"h3"},"\u81ea\u5b9a\u4e49"),"\u8fd4\u56de\u4ece\u5e93 \u2728"),(0,i.kt)("p",null,"\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion 2.4.1 + ")," \u7248\u672c\u65b0\u589e\u4e86 ",(0,i.kt)("inlineCode",{parentName:"p"},"IMSRepository")," \u548c ",(0,i.kt)("inlineCode",{parentName:"p"},"IMSRepository")," \u4ed3\u50a8\u7c7b\u578b\uff0c\u53ef\u4ee5\u83b7\u53d6\u968f\u673a\u4ed3\u50a8\u6216\u81ea\u5b9a\u4e49\u4ed3\u50a8\u3002\u4f7f\u7528\u4f8b\u5b50\u5982\u4e0b\uff1a"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"\u914d\u7f6e \u4e3b\u5e93 ",(0,i.kt)("inlineCode",{parentName:"li"},"[AppDbContext]")," \u7279\u6027\u7684 ",(0,i.kt)("inlineCode",{parentName:"li"},"SlaveDbContextLocators")," \u5c5e\u6027\uff0c\u53ef\u901a\u8fc7\u6784\u9020\u51fd\u6570\u6700\u540e\u53c2\u6570\u4f20\u5165\uff0c\u5982\uff1a")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{6}","{6}":!0},'using Furion.DatabaseAccessor;\nusing Microsoft.EntityFrameworkCore;\n\nnamespace Furion.EntityFramework.Core\n{\n [AppDbContext("Sqlite3ConnectionString", DbProvider.Sqlite, typeof(\u4ece\u5e93\u5b9a\u4f4d\u56681), typeof(\u4ece\u5e93\u5b9a\u4f4d\u56682), typeof(\u4ece\u5e93\u5b9a\u4f4d\u56683))]\n public class MasterDbContext : AppDbContext\n {\n public MasterDbContext(DbContextOptions options) : base(options)\n {\n }\n }\n}\n')),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"\u4f7f\u7528 ",(0,i.kt)("inlineCode",{parentName:"li"},"IMSRepository")," \u6216 ",(0,i.kt)("inlineCode",{parentName:"li"},"IMSRepository"))),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{13,19,31,40,49-53}","{13,19,31,40,49-53}":!0},'using Furion.Core;\nusing Furion.DatabaseAccessor;\nusing Furion.DynamicApiController;\nusing System.Collections.Generic;\n\nnamespace Furion.Application\n{\n public class PersonService : IDynamicApiController\n {\n /// \n /// \u53ef\u8c03\u914d\u4ed3\u50a8\uff08\u8bfb\u5199\u5206\u79bb\uff09\n /// \n private readonly IMSRepository _msRepository; // \u4e0d\u6307\u5b9a\u5b9a\u4f4d\u5668\uff0c\u9ed8\u8ba4\u662f MasterDbContextLocator\n\n /// \n /// \u6784\u9020\u51fd\u6570\u521d\u59cb\u5316\n /// \n /// \n public PersonService(IMSRepository msRepository)\n {\n _msRepository = msRepository;\n }\n\n /// \n /// \u65b0\u589e\u8d70\u4e3b\u5e93\n /// \n /// \n /// \n public void Insert(Person person)\n {\n _msRepository.Master().Insert(person);\n }\n\n /// \n /// \u968f\u673a\u4ece\u5e93\n /// \n /// \n public List Get()\n {\n return _msRepository.Slave().AsEnumerable().ToList();\n }\n\n /// \n /// \u81ea\u5b9a\u4e49\u4ece\u5e93\n /// \n /// \n public List Get()\n {\n return _msRepository.Slave(() => {\n // \u8fd9\u91cc\u5199\u4f60\u7684\u903b\u8f91\u8fd4\u56de\u4ece\u5e93\u5b9a\u4f4d\u5668\n\n return \u4f60\u7684\u4ece\u5e93\u5b9a\u4f4d\u5668;\n }).AsEnumerable().ToList();\n }\n }\n}\n')),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u7279\u522b\u8bf4\u660e")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},(0,i.kt)("inlineCode",{parentName:"p"},"IMSRepository")," \u4e0d\u5e26\u6cdb\u578b\u9ed8\u8ba4\u6307\u7684\u662f ",(0,i.kt)("inlineCode",{parentName:"p"},"IMSRepository"),"\uff0c\u5982\u9700\u6cdb\u578b\u7248\u672c\uff0c\u5219\u4f7f\u7528 ",(0,i.kt)("inlineCode",{parentName:"p"},"IMSRepository<\u5b9a\u4f4d\u5668>")))),(0,i.kt)("h2",{id:"9273-\u4e3b\u4ece\u590d\u5236"},"9.27.3 \u4e3b\u4ece\u590d\u5236"),(0,i.kt)("p",null,"\u4e3b\u4ece\u590d\u5236\uff1a\u662f\u4e00\u79cd\u6570\u636e\u5907\u4efd\u7684\u65b9\u6848\u3002"),(0,i.kt)("p",null,"\u7b80\u5355\u6765\u8bf4\uff0c\u662f\u4f7f\u7528\u4e24\u4e2a\u6216\u4e24\u4e2a\u4ee5\u4e0a\u76f8\u540c\u7684\u6570\u636e\u5e93\uff0c\u5c06\u4e00\u4e2a\u6570\u636e\u5e93\u5f53\u505a\u4e3b\u6570\u636e\u5e93\uff0c\u800c\u53e6\u4e00\u4e2a\u6570\u636e\u5e93\u5f53\u505a\u4ece\u6570\u636e\u5e93\u3002",(0,i.kt)("strong",{parentName:"p"},"\u5728\u4e3b\u6570\u636e\u5e93\u4e2d\u8fdb\u884c\u76f8\u5e94\u64cd\u4f5c\u65f6\uff0c\u4ece\u6570\u636e\u5e93\u8bb0\u5f55\u4e0b\u6240\u6709\u4e3b\u6570\u636e\u5e93\u7684\u64cd\u4f5c\uff0c\u4f7f\u5176\u4e8c\u8005\u4e00\u6a21\u4e00\u6837\u3002")),(0,i.kt)("h2",{id:"9274-\u4e3b\u4ece\u590d\u5236\u51e0\u79cd\u65b9\u5f0f"},"9.27.4 \u4e3b\u4ece\u590d\u5236\u51e0\u79cd\u65b9\u5f0f"),(0,i.kt)("h3",{id:"92741-\u540c\u6b65\u590d\u5236"},"9.27.4.1 \u540c\u6b65\u590d\u5236"),(0,i.kt)("p",null,"\u6240\u8c13\u7684\u540c\u6b65\u590d\u5236\uff0c\u610f\u601d\u662f ",(0,i.kt)("inlineCode",{parentName:"p"},"Master")," \u7684\u53d8\u5316\uff0c\u5fc5\u987b\u7b49\u5f85 ",(0,i.kt)("inlineCode",{parentName:"p"},"Slave-1\uff0cSlave-2\uff0c...\uff0cSlave-n")," \u5b8c\u6210\u540e\u624d\u80fd\u8fd4\u56de\u3002\n\u8fd9\u6837\uff0c\u663e\u7136\u4e0d\u53ef\u53d6\uff0c\u6bd4\u5982\uff0c\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Web")," \u524d\u7aef\u9875\u9762\u4e0a\uff0c\u7528\u6237\u589e\u52a0\u4e86\u6761\u8bb0\u5f55\uff0c\u9700\u8981\u7b49\u5f85\u5f88\u957f\u65f6\u95f4\u3002"),(0,i.kt)("h3",{id:"92742-\u5f02\u6b65\u590d\u5236"},"9.27.4.2 \u5f02\u6b65\u590d\u5236"),(0,i.kt)("p",null,"\u5982\u540c AJAX \u8bf7\u6c42\u4e00\u6837\u3002",(0,i.kt)("inlineCode",{parentName:"p"},"Master")," \u53ea\u9700\u8981\u5b8c\u6210\u81ea\u5df1\u7684\u6570\u636e\u5e93\u64cd\u4f5c\u5373\u53ef\u3002\u81f3\u4e8e ",(0,i.kt)("inlineCode",{parentName:"p"},"Slaves")," \u662f\u5426\u6536\u5230\u4e8c\u8fdb\u5236\u65e5\u5fd7\uff0c\u662f\u5426\u5b8c\u6210\u64cd\u4f5c\uff0c\u4e0d\u7528\u5173\u5fc3\u3002",(0,i.kt)("strong",{parentName:"p"},"\uff08\u63a8\u8350\u65b9\u5f0f\uff09")),(0,i.kt)("h3",{id:"92743-\u534a\u540c\u6b65\u590d\u5236"},"9.27.4.3 \u534a\u540c\u6b65\u590d\u5236"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Master")," \u53ea\u4fdd\u8bc1 ",(0,i.kt)("inlineCode",{parentName:"p"},"Slaves")," \u4e2d\u7684\u4e00\u4e2a\u64cd\u4f5c\u6210\u529f\uff0c\u5c31\u8fd4\u56de\uff0c\u5176\u4ed6 ",(0,i.kt)("inlineCode",{parentName:"p"},"Slave")," \u4e0d\u7ba1\u3002"),(0,i.kt)("p",null,"\u4e0b\u9762\u5c06\u4f7f\u7528 ",(0,i.kt)("inlineCode",{parentName:"p"},"SqlServer")," \u7b80\u5355\u914d\u7f6e\u4e3b\u4ece\u590d\u5236\u529f\u80fd\u3002"),(0,i.kt)("h2",{id:"9275-sqlserver-\u4e3b\u5e93\u914d\u7f6e"},"9.27.5 ",(0,i.kt)("inlineCode",{parentName:"h2"},"SqlServer")," \u4e3b\u5e93\u914d\u7f6e"),(0,i.kt)("h3",{id:"92751-\u6dfb\u52a0-\u672c\u5730\u53d1\u5e03"},"9.27.5.1 \u6dfb\u52a0 ",(0,i.kt)("inlineCode",{parentName:"h3"},"\u672c\u5730\u53d1\u5e03")),(0,i.kt)("img",{src:(0,o.Z)("img/dbcopy1.png")}),(0,i.kt)("h3",{id:"92752-\u9009\u62e9-\u5206\u53d1\u670d\u52a1\u5668"},"9.27.5.2 \u9009\u62e9 ",(0,i.kt)("inlineCode",{parentName:"h3"},"\u5206\u53d1\u670d\u52a1\u5668")),(0,i.kt)("img",{src:(0,o.Z)("img/dbcopy2.png")}),(0,i.kt)("h3",{id:"92753-\u542f\u7528-\u4ee3\u7406"},"9.27.5.3 \u542f\u7528 ",(0,i.kt)("inlineCode",{parentName:"h3"},"\u4ee3\u7406")),(0,i.kt)("img",{src:(0,o.Z)("img/dbcopy3.png")}),(0,i.kt)("h3",{id:"92754-\u53d1\u5e03\u6570\u636e\u5e93"},"9.27.5.4 \u53d1\u5e03\u6570\u636e\u5e93"),(0,i.kt)("img",{src:(0,o.Z)("img/dbcopy4.png")}),(0,i.kt)("h3",{id:"92755-\u5feb\u7167\u53d1\u5e03"},"9.27.5.5 \u5feb\u7167\u53d1\u5e03"),(0,i.kt)("img",{src:(0,o.Z)("img/dbcopy5.png")}),(0,i.kt)("p",null,"\u5177\u4f53\u9009\u62e9\u4f55\u79cd\u53d1\u5e03\u7c7b\u578b\uff0c\u89c6\u5177\u4f53\u4e1a\u52a1\u573a\u666f\u800c\u5b9a\u3002"),(0,i.kt)("h3",{id:"92756-\u9009\u62e9\u53d1\u5e03\u9879\u76ee"},"9.27.5.6 \u9009\u62e9\u53d1\u5e03\u9879\u76ee"),(0,i.kt)("img",{src:(0,o.Z)("img/dbcopy6.png")}),(0,i.kt)("h3",{id:"92757-\u914d\u7f6e\u5206\u53d1\u8ba1\u5212"},"9.27.5.7 \u914d\u7f6e\u5206\u53d1\u8ba1\u5212"),(0,i.kt)("img",{src:(0,o.Z)("img/dbcopy7.png")}),(0,i.kt)("img",{src:(0,o.Z)("img/dbcopy8.png")}),(0,i.kt)("h3",{id:"92758-\u914d\u7f6e\u5b89\u5168\u8bbe\u7f6e"},"9.27.5.8 \u914d\u7f6e\u5b89\u5168\u8bbe\u7f6e"),(0,i.kt)("img",{src:(0,o.Z)("img/dbcopy9.png")}),(0,i.kt)("img",{src:(0,o.Z)("img/dbcopy10.png")}),(0,i.kt)("h3",{id:"92759-\u5b8c\u6210\u914d\u7f6e"},"9.27.5.9 \u5b8c\u6210\u914d\u7f6e"),(0,i.kt)("img",{src:(0,o.Z)("img/dbcopy11.png")}),(0,i.kt)("img",{src:(0,o.Z)("img/dbcopy12.png")}),(0,i.kt)("h2",{id:"9276-sqlserver-\u4ece\u5e93\u914d\u7f6e"},"9.27.6 ",(0,i.kt)("inlineCode",{parentName:"h2"},"SqlServer")," \u4ece\u5e93\u914d\u7f6e"),(0,i.kt)("h3",{id:"92761-\u6dfb\u52a0-\u672c\u5730\u8ba2\u9605"},"9.27.6.1 \u6dfb\u52a0 ",(0,i.kt)("inlineCode",{parentName:"h3"},"\u672c\u5730\u8ba2\u9605")),(0,i.kt)("img",{src:(0,o.Z)("img/dbrece1.png")}),(0,i.kt)("h3",{id:"92762-\u9009\u62e9-\u5206\u53d1\u670d\u52a1\u5668"},"9.27.6.2 \u9009\u62e9 ",(0,i.kt)("inlineCode",{parentName:"h3"},"\u5206\u53d1\u670d\u52a1\u5668")),(0,i.kt)("img",{src:(0,o.Z)("img/dbrece2.png")}),(0,i.kt)("h3",{id:"92763-\u9009\u62e9-\u5206\u53d1\u4ee3\u7406\u4f4d\u7f6e"},"9.27.6.3 \u9009\u62e9 ",(0,i.kt)("inlineCode",{parentName:"h3"},"\u5206\u53d1\u4ee3\u7406\u4f4d\u7f6e")),(0,i.kt)("img",{src:(0,o.Z)("img/dbrece3.png")}),(0,i.kt)("h3",{id:"92764-\u9009\u62e9-\u8ba2\u9605\u6570\u636e\u5e93"},"9.27.6.4 \u9009\u62e9 ",(0,i.kt)("inlineCode",{parentName:"h3"},"\u8ba2\u9605\u6570\u636e\u5e93")),(0,i.kt)("img",{src:(0,o.Z)("img/dbrece4.png")}),(0,i.kt)("h3",{id:"92765-\u9009\u62e9-\u5206\u53d1\u5b89\u5168\u8bbe\u7f6e"},"9.27.6.5 \u9009\u62e9 ",(0,i.kt)("inlineCode",{parentName:"h3"},"\u5206\u53d1\u5b89\u5168\u8bbe\u7f6e")),(0,i.kt)("img",{src:(0,o.Z)("img/dbrece5.png")}),(0,i.kt)("img",{src:(0,o.Z)("img/dbrece6.png")}),(0,i.kt)("h3",{id:"92766-\u9009\u62e9-\u540c\u6b65\u8ba1\u5212"},"9.27.6.6 \u9009\u62e9 ",(0,i.kt)("inlineCode",{parentName:"h3"},"\u540c\u6b65\u8ba1\u5212")),(0,i.kt)("img",{src:(0,o.Z)("img/dbrece7.png")}),(0,i.kt)("h3",{id:"92767-\u5b8c\u6210\u8ba2\u9605"},"9.27.6.7 \u5b8c\u6210\u8ba2\u9605"),(0,i.kt)("img",{src:(0,o.Z)("img/dbrece8.png")}),(0,i.kt)("h2",{id:"9277-\u5206\u53d1\u5b9a\u4e49\u76d1\u89c6"},"9.27.7 \u5206\u53d1\u5b9a\u4e49\u76d1\u89c6"),(0,i.kt)("img",{src:(0,o.Z)("img/dbrece9.png")}),(0,i.kt)("h2",{id:"9278-\u67e5\u770b\u4e3b\u4ece\u590d\u5236\u7ed3\u679c"},"9.27.8 \u67e5\u770b\u4e3b\u4ece\u590d\u5236\u7ed3\u679c"),(0,i.kt)("img",{src:(0,o.Z)("img/dbrece10.png")}),(0,i.kt)("img",{src:(0,o.Z)("img/dbrece11.png")}),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u7279\u6027")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},'\u4e3b\u4ece\u590d\u5236\u6709\u4e00\u5b9a\u8fdf\u5ef6\u6027\uff0c\u6240\u4ee5\u7cfb\u7edf\u8bbe\u8ba1\u8981\u6709\u4e00\u5b9a\u201c\u5bb9\u5fcd\u6027"\u3002'))),(0,i.kt)("h2",{id:"9279-\u53cd\u9988\u4e0e\u5efa\u8bae"},"9.27.9 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,i.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/093b1cf0.be98f904.js b/handbook/build/assets/js/093b1cf0.be98f904.js new file mode 100644 index 00000000000..00d7deaa30e --- /dev/null +++ b/handbook/build/assets/js/093b1cf0.be98f904.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[5786],{3905:function(e,n,t){t.d(n,{Zo:function(){return c},kt:function(){return u}});var r=t(7294);function a(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function o(e){for(var n=1;n=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var l=r.createContext({}),p=function(e){var n=r.useContext(l),t=n;return e&&(t="function"==typeof e?e(n):o(o({},n),e)),t},c=function(e){var n=p(e.components);return r.createElement(l.Provider,{value:n},e.children)},d={inlineCode:"code",wrapper:function(e){var n=e.children;return r.createElement(r.Fragment,{},n)}},m=r.forwardRef((function(e,n){var t=e.components,a=e.mdxType,i=e.originalType,l=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),m=p(t),u=a,k=m["".concat(l,".").concat(u)]||m[u]||d[u]||i;return t?r.createElement(k,o(o({ref:n},c),{},{components:t})):r.createElement(k,o({ref:n},c))}));function u(e,n){var t=arguments,a=n&&n.mdxType;if("string"==typeof e||a){var i=t.length,o=new Array(i);o[0]=m;var s={};for(var l in n)hasOwnProperty.call(n,l)&&(s[l]=n[l]);s.originalType=e,s.mdxType="string"==typeof e?e:a,o[1]=s;for(var p=2;p\u4e3b\u5e93 \u6570\u636e\u5e93\u4e0a\u4e0b\u6587",id:"92721-\u521b\u5efa-\u4e3b\u5e93-\u6570\u636e\u5e93\u4e0a\u4e0b\u6587",children:[]},{value:"9.27.2.2 \u521b\u5efa \u4ece\u5e93 \u6570\u636e\u5e93\u4e0a\u4e0b\u6587",id:"92722-\u521b\u5efa-\u4ece\u5e93-\u6570\u636e\u5e93\u4e0a\u4e0b\u6587",children:[]},{value:"9.27.2.3 \u6ce8\u518c \u4e3b\u4ece\u5e93 \u6570\u636e\u5e93\u4e0a\u4e0b\u6587",id:"92723-\u6ce8\u518c-\u4e3b\u4ece\u5e93-\u6570\u636e\u5e93\u4e0a\u4e0b\u6587",children:[]},{value:"9.27.2.4 \u521b\u5efa Person \u5b9e\u4f53",id:"92724-\u521b\u5efa-person-\u5b9e\u4f53",children:[]},{value:"9.27.2.5 \u5c06 Person \u8f6c\u6362\u6210\u6570\u636e\u5e93\u8868",id:"92725-\u5c06-person-\u8f6c\u6362\u6210\u6570\u636e\u5e93\u8868",children:[]},{value:"9.27.2.6 \u56fa\u5b9a\u4e3b\u4ece\u5e93\u4f7f\u7528\u4f8b\u5b50",id:"92726-\u56fa\u5b9a\u4e3b\u4ece\u5e93\u4f7f\u7528\u4f8b\u5b50",children:[]},{value:"9.27.2.7 \u968f\u673a\u6216 \u81ea\u5b9a\u4e49\u8fd4\u56de\u4ece\u5e93 \u2728",id:"92727-\u968f\u673a\u6216-\u81ea\u5b9a\u4e49\u8fd4\u56de\u4ece\u5e93-",children:[]}]},{value:"9.27.3 \u4e3b\u4ece\u590d\u5236",id:"9273-\u4e3b\u4ece\u590d\u5236",children:[]},{value:"9.27.4 \u4e3b\u4ece\u590d\u5236\u51e0\u79cd\u65b9\u5f0f",id:"9274-\u4e3b\u4ece\u590d\u5236\u51e0\u79cd\u65b9\u5f0f",children:[{value:"9.27.4.1 \u540c\u6b65\u590d\u5236",id:"92741-\u540c\u6b65\u590d\u5236",children:[]},{value:"9.27.4.2 \u5f02\u6b65\u590d\u5236",id:"92742-\u5f02\u6b65\u590d\u5236",children:[]},{value:"9.27.4.3 \u534a\u540c\u6b65\u590d\u5236",id:"92743-\u534a\u540c\u6b65\u590d\u5236",children:[]}]},{value:"9.27.5 SqlServer \u4e3b\u5e93\u914d\u7f6e",id:"9275-sqlserver-\u4e3b\u5e93\u914d\u7f6e",children:[{value:"9.27.5.1 \u6dfb\u52a0 \u672c\u5730\u53d1\u5e03",id:"92751-\u6dfb\u52a0-\u672c\u5730\u53d1\u5e03",children:[]},{value:"9.27.5.2 \u9009\u62e9 \u5206\u53d1\u670d\u52a1\u5668",id:"92752-\u9009\u62e9-\u5206\u53d1\u670d\u52a1\u5668",children:[]},{value:"9.27.5.3 \u542f\u7528 \u4ee3\u7406",id:"92753-\u542f\u7528-\u4ee3\u7406",children:[]},{value:"9.27.5.4 \u53d1\u5e03\u6570\u636e\u5e93",id:"92754-\u53d1\u5e03\u6570\u636e\u5e93",children:[]},{value:"9.27.5.5 \u5feb\u7167\u53d1\u5e03",id:"92755-\u5feb\u7167\u53d1\u5e03",children:[]},{value:"9.27.5.6 \u9009\u62e9\u53d1\u5e03\u9879\u76ee",id:"92756-\u9009\u62e9\u53d1\u5e03\u9879\u76ee",children:[]},{value:"9.27.5.7 \u914d\u7f6e\u5206\u53d1\u8ba1\u5212",id:"92757-\u914d\u7f6e\u5206\u53d1\u8ba1\u5212",children:[]},{value:"9.27.5.8 \u914d\u7f6e\u5b89\u5168\u8bbe\u7f6e",id:"92758-\u914d\u7f6e\u5b89\u5168\u8bbe\u7f6e",children:[]},{value:"9.27.5.9 \u5b8c\u6210\u914d\u7f6e",id:"92759-\u5b8c\u6210\u914d\u7f6e",children:[]}]},{value:"9.27.6 SqlServer \u4ece\u5e93\u914d\u7f6e",id:"9276-sqlserver-\u4ece\u5e93\u914d\u7f6e",children:[{value:"9.27.6.1 \u6dfb\u52a0 \u672c\u5730\u8ba2\u9605",id:"92761-\u6dfb\u52a0-\u672c\u5730\u8ba2\u9605",children:[]},{value:"9.27.6.2 \u9009\u62e9 \u5206\u53d1\u670d\u52a1\u5668",id:"92762-\u9009\u62e9-\u5206\u53d1\u670d\u52a1\u5668",children:[]},{value:"9.27.6.3 \u9009\u62e9 \u5206\u53d1\u4ee3\u7406\u4f4d\u7f6e",id:"92763-\u9009\u62e9-\u5206\u53d1\u4ee3\u7406\u4f4d\u7f6e",children:[]},{value:"9.27.6.4 \u9009\u62e9 \u8ba2\u9605\u6570\u636e\u5e93",id:"92764-\u9009\u62e9-\u8ba2\u9605\u6570\u636e\u5e93",children:[]},{value:"9.27.6.5 \u9009\u62e9 \u5206\u53d1\u5b89\u5168\u8bbe\u7f6e",id:"92765-\u9009\u62e9-\u5206\u53d1\u5b89\u5168\u8bbe\u7f6e",children:[]},{value:"9.27.6.6 \u9009\u62e9 \u540c\u6b65\u8ba1\u5212",id:"92766-\u9009\u62e9-\u540c\u6b65\u8ba1\u5212",children:[]},{value:"9.27.6.7 \u5b8c\u6210\u8ba2\u9605",id:"92767-\u5b8c\u6210\u8ba2\u9605",children:[]}]},{value:"9.27.7 \u5206\u53d1\u5b9a\u4e49\u76d1\u89c6",id:"9277-\u5206\u53d1\u5b9a\u4e49\u76d1\u89c6",children:[]},{value:"9.27.8 \u67e5\u770b\u4e3b\u4ece\u590d\u5236\u7ed3\u679c",id:"9278-\u67e5\u770b\u4e3b\u4ece\u590d\u5236\u7ed3\u679c",children:[]},{value:"9.27.9 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"9279-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],m={toc:d};function u(e){var n=e.components,t=(0,a.Z)(e,s);return(0,i.kt)("wrapper",(0,r.Z)({},m,t,{components:n,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"9271-\u8bfb\u5199\u5206\u79bb"},"9.27.1 \u8bfb\u5199\u5206\u79bb"),(0,i.kt)("p",null,"\u5176\u5b9e\u5c31\u662f\u5c06\u6570\u636e\u5e93\u5206\u4e3a\u4e86\u4e3b\u4ece\u5e93\uff0c\u4e00\u4e2a\u4e3b\u5e93\u7528\u4e8e\u5199\u6570\u636e\uff0c\u591a\u4e2a\u4ece\u5e93\u5b8c\u6210\u8bfb\u6570\u636e\u7684\u64cd\u4f5c\uff0c\u4e3b\u4ece\u5e93\u4e4b\u95f4\u901a\u8fc7\u67d0\u79cd\u673a\u5236\u8fdb\u884c\u6570\u636e\u7684\u540c\u6b65\uff0c\u662f\u4e00\u79cd\u5e38\u89c1\u7684\u6570\u636e\u5e93\u67b6\u6784\u3002"),(0,i.kt)("img",{src:(0,o.Z)("img/readwrite.png"),style:{height:300}}),(0,i.kt)("h3",{id:"92711-\u89e3\u51b3\u4e86\u4ec0\u4e48\u95ee\u9898"},"9.27.1.1 \u89e3\u51b3\u4e86\u4ec0\u4e48\u95ee\u9898"),(0,i.kt)("p",null,"\u5927\u591a\u6570\u4e92\u8054\u7f51\u4e1a\u52a1\uff0c\u5f80\u5f80\u8bfb\u591a\u5199\u5c11\uff0c\u8fd9\u65f6\u5019\uff0c\u6570\u636e\u5e93\u7684\u8bfb\u4f1a\u9996\u5148\u6210\u4e3a\u6570\u636e\u5e93\u7684\u74f6\u9888\uff0c\u8fd9\u65f6\uff0c\u5982\u679c\u6211\u4eec\u5e0c\u671b\u80fd\u591f\u7ebf\u6027\u7684\u63d0\u5347\u6570\u636e\u5e93\u7684\u8bfb\u6027\u80fd\uff0c\u6d88\u9664\u8bfb\u5199\u9501\u51b2\u7a81\u4ece\u800c\u63d0\u5347\u6570\u636e\u5e93\u7684\u5199\u6027\u80fd\uff0c\u90a3\u4e48\u5c31\u53ef\u4ee5\u4f7f\u7528\u201c\u5206\u7ec4\u67b6\u6784\u201d\uff08\u8bfb\u5199\u5206\u79bb\u67b6\u6784\uff09\u3002"),(0,i.kt)("p",null,"\u7528\u4e00\u53e5\u8bdd\u6982\u62ec\uff0c\u8bfb\u5199\u5206\u79bb\u662f\u7528\u6765\u89e3\u51b3\u6570\u636e\u5e93\u7684\u8bfb\u6027\u80fd\u74f6\u9888\u7684\u3002"),(0,i.kt)("h3",{id:"92712-\u6ce8\u610f\u4e8b\u9879"},"9.27.1.2 \u6ce8\u610f\u4e8b\u9879"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"\u6570\u636e\u5e93\u8fde\u63a5\u6c60\u8981\u8fdb\u884c\u533a\u5206\uff0c\u54ea\u4e9b\u662f\u8bfb\u8fde\u63a5\u6c60\uff0c\u54ea\u4e2a\u662f\u5199\u8fde\u63a5\u6c60\uff0c\u7814\u53d1\u7684\u96be\u5ea6\u4f1a\u589e\u52a0\uff1b"),(0,i.kt)("li",{parentName:"ul"},"\u4e3a\u4e86\u4fdd\u8bc1\u9ad8\u53ef\u7528\uff0c\u8bfb\u8fde\u63a5\u6c60\u8981\u80fd\u591f\u5b9e\u73b0\u6545\u969c\u81ea\u52a8\u8f6c\u79fb\uff1b"),(0,i.kt)("li",{parentName:"ul"},"\u4e3b\u4ece\u7684\u4e00\u81f4\u6027\u95ee\u9898\u9700\u8981\u8003\u8651\u3002")),(0,i.kt)("h2",{id:"9272-\u5982\u4f55\u5b9e\u73b0"},"9.27.2 \u5982\u4f55\u5b9e\u73b0"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u5728\u6570\u636e\u5e93\u6a21\u5757\u8bbe\u8ba1\u4e4b\u521d\uff0c\u5c31\u8003\u8651\u4e86\u8bfb\u5199\u5206\u79bb\u8fd9\u79cd\u60c5\u51b5\uff0c\u6240\u4ee5\u4ece\u5e95\u5c42\u5c31\u652f\u6301\u52a8\u6001\u5207\u6362\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u53ca\u8bfb\u5199\u64cd\u4f5c\u65b9\u6cd5\u7ea6\u675f\u3002"),(0,i.kt)("p",null,"\u8bfb\u5199\u5206\u79bb\u64cd\u4f5c\u4e3b\u8981\u4f7f\u7528 ",(0,i.kt)("inlineCode",{parentName:"p"},"IMSRepository")," \u4ed3\u50a8\uff0c\u8be5\u4ed3\u50a8\u5df2\u7ecf\u4e3a\u5f00\u53d1\u8005\u63d0\u4f9b\u65b9\u4fbf\u7684\u64cd\u4f5c\u8c03\u7528\u3002\u5f53\u7136\u4e5f\u53ef\u4ee5\u4e0d\u4f7f\u7528\u8be5\u4ed3\u50a8\u3002"),(0,i.kt)("p",null,"\u4e0b\u9762\u5c31\u7ed9\u5927\u5bb6\u6f14\u793a\u5982\u4f55\u8bfb\u5199\u591a\u5e93\u8bfb\u5199\u64cd\u4f5c\u3002"),(0,i.kt)("h3",{id:"92721-\u521b\u5efa-\u4e3b\u5e93-\u6570\u636e\u5e93\u4e0a\u4e0b\u6587"},"9.27.2.1 \u521b\u5efa ",(0,i.kt)("inlineCode",{parentName:"h3"},"\u4e3b\u5e93")," \u6570\u636e\u5e93\u4e0a\u4e0b\u6587"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'using Furion.DatabaseAccessor;\nusing Microsoft.EntityFrameworkCore;\n\nnamespace Furion.EntityFramework.Core\n{\n /// \n /// \u4e3b\u5e93\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\n /// \n [AppDbContext("MasterConnectionString")]\n public class MasterDbContext : AppDbContext\n {\n public MasterDbContext(DbContextOptions options) : base(options)\n {\n }\n }\n}\n')),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"\u6570\u636e\u5e93\u8fde\u63a5\u5b57\u7b26\u4e32\uff1a")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-json"},'{\n "ConnectionStrings": {\n "MasterConnectionString": "Server=localhost;Database=Furion;User=sa;Password=000000;MultipleActiveResultSets=True;"\n }\n}\n')),(0,i.kt)("h3",{id:"92722-\u521b\u5efa-\u4ece\u5e93-\u6570\u636e\u5e93\u4e0a\u4e0b\u6587"},"9.27.2.2 \u521b\u5efa ",(0,i.kt)("inlineCode",{parentName:"h3"},"\u4ece\u5e93")," \u6570\u636e\u5e93\u4e0a\u4e0b\u6587"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{11}","{11}":!0},'using Furion.Core;\nusing Furion.DatabaseAccessor;\nusing Microsoft.EntityFrameworkCore;\n\nnamespace Furion.EntityFramework.Core\n{\n /// \n /// \u4ece\u5e93\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\n /// \n [AppDbContext("SlaveConnectionString")]\n public class SlaveDbContext : AppDbContext\n {\n public SlaveDbContext(DbContextOptions options) : base(options)\n {\n }\n }\n}\n')),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u6ce8\u610f")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u591a\u6570\u636e\u5e93\u64cd\u4f5c\u9664\u4e86\u9ed8\u8ba4\u6570\u636e\u5e93\u65e0\u9700\u81ea\u5b9a\u4e49 ",(0,i.kt)("strong",{parentName:"p"},"\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u5b9a\u4f4d\u5668"),"\uff0c\u5176\u4ed6\u6570\u636e\u5e93\u90fd\u9700\u8981\u6709\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u5b9a\u4f4d\u5668\u3002\u5982 ",(0,i.kt)("inlineCode",{parentName:"p"},"SlaveDbContextLocator")))),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"\u4ece\u5e93\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u5b9a\u4f4d\u5668\uff1a")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{8}","{8}":!0},"using Furion.DatabaseAccessor;\n\nnamespace Furion.Core\n{\n /// \n /// \u4ece\u5e93\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u5b9a\u4f4d\u5668\n /// \n public class SlaveDbContextLocator : IDbContextLocator\n {\n }\n}\n")),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"\u6570\u636e\u5e93\u8fde\u63a5\u5b57\u7b26\u4e32\uff1a")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-json"},'{\n "ConnectionStrings": {\n "SlaveConnectionString": "Server=localhost;Database=FurSlave;User=sa;Password=000000;MultipleActiveResultSets=True;"\n }\n}\n')),(0,i.kt)("h3",{id:"92723-\u6ce8\u518c-\u4e3b\u4ece\u5e93-\u6570\u636e\u5e93\u4e0a\u4e0b\u6587"},"9.27.2.3 \u6ce8\u518c ",(0,i.kt)("inlineCode",{parentName:"h3"},"\u4e3b\u4ece\u5e93")," \u6570\u636e\u5e93\u4e0a\u4e0b\u6587"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{13-14}","{13-14}":!0},"using Furion.Core;\nusing Microsoft.Extensions.DependencyInjection;\n\nnamespace Furion.EntityFramework.Core\n{\n [AppStartup(600)]\n public sealed class FurEntityFrameworkCoreStartup : AppStartup\n {\n public void ConfigureServices(IServiceCollection services)\n {\n services.AddDatabaseAccessor(options =>\n {\n services.AddDbPool();\n services.AddDbPool();\n });\n }\n }\n}\n")),(0,i.kt)("h3",{id:"92724-\u521b\u5efa-person-\u5b9e\u4f53"},"9.27.2.4 \u521b\u5efa ",(0,i.kt)("inlineCode",{parentName:"h3"},"Person")," \u5b9e\u4f53"),(0,i.kt)("p",null,"\u7531\u4e8e ",(0,i.kt)("inlineCode",{parentName:"p"},"\u4e3b\u4ece\u5e93")," \u5177\u6709\u76f8\u540c\u7684\u6570\u636e\u5e93\u7ed3\u6784\uff0c\u6240\u4ee5\u5b9e\u4f53\u4e5f\u5fc5\u987b\u58f0\u660e ",(0,i.kt)("inlineCode",{parentName:"p"},"\u4e3b\u4ece\u5e93"),"\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{7}","{7}":!0},"using Furion.DatabaseAccessor;\nusing System.ComponentModel.DataAnnotations;\nusing System.ComponentModel.DataAnnotations.Schema;\n\nnamespace Furion.Core\n{\n public class Person : IEntity\n {\n /// \n /// \u4e3b\u952eId\n /// \n [Key]\n [DatabaseGenerated(DatabaseGeneratedOption.Identity)]\n public int Id { get; set; }\n\n /// \n /// \u540d\u79f0\n /// \n public string Name { get; set; }\n\n /// \n /// \u5e74\u9f84\n /// \n public int Age { get; set; }\n }\n}\n")),(0,i.kt)("h3",{id:"92725-\u5c06-person-\u8f6c\u6362\u6210\u6570\u636e\u5e93\u8868"},"9.27.2.5 \u5c06 ",(0,i.kt)("inlineCode",{parentName:"h3"},"Person")," \u8f6c\u6362\u6210\u6570\u636e\u5e93\u8868"),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"\u521b\u5efa\u4e3b\u5e93\u6570\u636e\u5e93\u8868\uff1a")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-shell"},"Add-Migration v0.0.1 -Context MasterDbContext\n")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-shell"},"Update-Database -Context MasterDbContext\n")),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"\u521b\u5efa\u4ece\u5e93\u6570\u636e\u5e93\u8868\uff1a")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-shell"},"Add-Migration v0.0.1 -Context SlaveDbContext\n")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-shell"},"Update-Database -Context SlaveDbContext\n")),(0,i.kt)("img",{src:(0,o.Z)("img/readwrite1.png")}),(0,i.kt)("img",{src:(0,o.Z)("img/readwrite2.png")}),(0,i.kt)("h3",{id:"92726-\u56fa\u5b9a\u4e3b\u4ece\u5e93\u4f7f\u7528\u4f8b\u5b50"},"9.27.2.6 \u56fa\u5b9a\u4e3b\u4ece\u5e93\u4f7f\u7528\u4f8b\u5b50"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{13,19,31,40}","{13,19,31,40}":!0},'using Furion.Core;\nusing Furion.DatabaseAccessor;\nusing Furion.DynamicApiController;\nusing System.Collections.Generic;\n\nnamespace Furion.Application\n{\n public class PersonService : IDynamicApiController\n {\n /// \n /// \u53ef\u8c03\u914d\u4ed3\u50a8\uff08\u8bfb\u5199\u5206\u79bb\uff09\n /// \n private readonly IMSRepository _msRepository;\n\n /// \n /// \u6784\u9020\u51fd\u6570\u521d\u59cb\u5316\n /// \n /// \n public PersonService(IMSRepository msRepository)\n {\n _msRepository = msRepository;\n }\n\n /// \n /// \u65b0\u589e\u8d70\u4e3b\u5e93\n /// \n /// \n /// \n public void Insert(Person person)\n {\n _msRepository.Master().Insert(person);\n }\n\n /// \n /// \u67e5\u8be2\u8d70\u4ece\u5e93\n /// \n /// \n public List Get()\n {\n return _msRepository.Slave1().AsEnumerable().ToList();\n }\n }\n}\n')),(0,i.kt)("h3",{id:"92727-\u968f\u673a\u6216-\u81ea\u5b9a\u4e49\u8fd4\u56de\u4ece\u5e93-"},"9.27.2.7 ",(0,i.kt)("inlineCode",{parentName:"h3"},"\u968f\u673a"),"\u6216 ",(0,i.kt)("inlineCode",{parentName:"h3"},"\u81ea\u5b9a\u4e49"),"\u8fd4\u56de\u4ece\u5e93 \u2728"),(0,i.kt)("p",null,"\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion 2.4.1 + ")," \u7248\u672c\u65b0\u589e\u4e86 ",(0,i.kt)("inlineCode",{parentName:"p"},"IMSRepository")," \u548c ",(0,i.kt)("inlineCode",{parentName:"p"},"IMSRepository")," \u4ed3\u50a8\u7c7b\u578b\uff0c\u53ef\u4ee5\u83b7\u53d6\u968f\u673a\u4ed3\u50a8\u6216\u81ea\u5b9a\u4e49\u4ed3\u50a8\u3002\u4f7f\u7528\u4f8b\u5b50\u5982\u4e0b\uff1a"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"\u914d\u7f6e \u4e3b\u5e93 ",(0,i.kt)("inlineCode",{parentName:"li"},"[AppDbContext]")," \u7279\u6027\u7684 ",(0,i.kt)("inlineCode",{parentName:"li"},"SlaveDbContextLocators")," \u5c5e\u6027\uff0c\u53ef\u901a\u8fc7\u6784\u9020\u51fd\u6570\u6700\u540e\u53c2\u6570\u4f20\u5165\uff0c\u5982\uff1a")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{6}","{6}":!0},'using Furion.DatabaseAccessor;\nusing Microsoft.EntityFrameworkCore;\n\nnamespace Furion.EntityFramework.Core\n{\n [AppDbContext("Sqlite3ConnectionString", DbProvider.Sqlite, typeof(\u4ece\u5e93\u5b9a\u4f4d\u56681), typeof(\u4ece\u5e93\u5b9a\u4f4d\u56682), typeof(\u4ece\u5e93\u5b9a\u4f4d\u56683))]\n public class MasterDbContext : AppDbContext\n {\n public MasterDbContext(DbContextOptions options) : base(options)\n {\n }\n }\n}\n')),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"\u4f7f\u7528 ",(0,i.kt)("inlineCode",{parentName:"li"},"IMSRepository")," \u6216 ",(0,i.kt)("inlineCode",{parentName:"li"},"IMSRepository"))),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{13,19,31,40,49-53}","{13,19,31,40,49-53}":!0},'using Furion.Core;\nusing Furion.DatabaseAccessor;\nusing Furion.DynamicApiController;\nusing System.Collections.Generic;\n\nnamespace Furion.Application\n{\n public class PersonService : IDynamicApiController\n {\n /// \n /// \u53ef\u8c03\u914d\u4ed3\u50a8\uff08\u8bfb\u5199\u5206\u79bb\uff09\n /// \n private readonly IMSRepository _msRepository; // \u4e0d\u6307\u5b9a\u5b9a\u4f4d\u5668\uff0c\u9ed8\u8ba4\u662f MasterDbContextLocator\n\n /// \n /// \u6784\u9020\u51fd\u6570\u521d\u59cb\u5316\n /// \n /// \n public PersonService(IMSRepository msRepository)\n {\n _msRepository = msRepository;\n }\n\n /// \n /// \u65b0\u589e\u8d70\u4e3b\u5e93\n /// \n /// \n /// \n public void Insert(Person person)\n {\n _msRepository.Master().Insert(person);\n }\n\n /// \n /// \u968f\u673a\u4ece\u5e93\n /// \n /// \n public List Get()\n {\n return _msRepository.Slave().AsEnumerable().ToList();\n }\n\n /// \n /// \u81ea\u5b9a\u4e49\u4ece\u5e93\n /// \n /// \n public List Get()\n {\n return _msRepository.Slave(() => {\n // \u8fd9\u91cc\u5199\u4f60\u7684\u903b\u8f91\u8fd4\u56de\u4ece\u5e93\u5b9a\u4f4d\u5668\n\n return \u4f60\u7684\u4ece\u5e93\u5b9a\u4f4d\u5668;\n }).AsEnumerable().ToList();\n }\n }\n}\n')),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u7279\u522b\u8bf4\u660e")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},(0,i.kt)("inlineCode",{parentName:"p"},"IMSRepository")," \u4e0d\u5e26\u6cdb\u578b\u9ed8\u8ba4\u6307\u7684\u662f ",(0,i.kt)("inlineCode",{parentName:"p"},"IMSRepository"),"\uff0c\u5982\u9700\u6cdb\u578b\u7248\u672c\uff0c\u5219\u4f7f\u7528 ",(0,i.kt)("inlineCode",{parentName:"p"},"IMSRepository<\u5b9a\u4f4d\u5668>")))),(0,i.kt)("h2",{id:"9273-\u4e3b\u4ece\u590d\u5236"},"9.27.3 \u4e3b\u4ece\u590d\u5236"),(0,i.kt)("p",null,"\u4e3b\u4ece\u590d\u5236\uff1a\u662f\u4e00\u79cd\u6570\u636e\u5907\u4efd\u7684\u65b9\u6848\u3002"),(0,i.kt)("p",null,"\u7b80\u5355\u6765\u8bf4\uff0c\u662f\u4f7f\u7528\u4e24\u4e2a\u6216\u4e24\u4e2a\u4ee5\u4e0a\u76f8\u540c\u7684\u6570\u636e\u5e93\uff0c\u5c06\u4e00\u4e2a\u6570\u636e\u5e93\u5f53\u505a\u4e3b\u6570\u636e\u5e93\uff0c\u800c\u53e6\u4e00\u4e2a\u6570\u636e\u5e93\u5f53\u505a\u4ece\u6570\u636e\u5e93\u3002",(0,i.kt)("strong",{parentName:"p"},"\u5728\u4e3b\u6570\u636e\u5e93\u4e2d\u8fdb\u884c\u76f8\u5e94\u64cd\u4f5c\u65f6\uff0c\u4ece\u6570\u636e\u5e93\u8bb0\u5f55\u4e0b\u6240\u6709\u4e3b\u6570\u636e\u5e93\u7684\u64cd\u4f5c\uff0c\u4f7f\u5176\u4e8c\u8005\u4e00\u6a21\u4e00\u6837\u3002")),(0,i.kt)("h2",{id:"9274-\u4e3b\u4ece\u590d\u5236\u51e0\u79cd\u65b9\u5f0f"},"9.27.4 \u4e3b\u4ece\u590d\u5236\u51e0\u79cd\u65b9\u5f0f"),(0,i.kt)("h3",{id:"92741-\u540c\u6b65\u590d\u5236"},"9.27.4.1 \u540c\u6b65\u590d\u5236"),(0,i.kt)("p",null,"\u6240\u8c13\u7684\u540c\u6b65\u590d\u5236\uff0c\u610f\u601d\u662f ",(0,i.kt)("inlineCode",{parentName:"p"},"Master")," \u7684\u53d8\u5316\uff0c\u5fc5\u987b\u7b49\u5f85 ",(0,i.kt)("inlineCode",{parentName:"p"},"Slave-1\uff0cSlave-2\uff0c...\uff0cSlave-n")," \u5b8c\u6210\u540e\u624d\u80fd\u8fd4\u56de\u3002\n\u8fd9\u6837\uff0c\u663e\u7136\u4e0d\u53ef\u53d6\uff0c\u6bd4\u5982\uff0c\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Web")," \u524d\u7aef\u9875\u9762\u4e0a\uff0c\u7528\u6237\u589e\u52a0\u4e86\u6761\u8bb0\u5f55\uff0c\u9700\u8981\u7b49\u5f85\u5f88\u957f\u65f6\u95f4\u3002"),(0,i.kt)("h3",{id:"92742-\u5f02\u6b65\u590d\u5236"},"9.27.4.2 \u5f02\u6b65\u590d\u5236"),(0,i.kt)("p",null,"\u5982\u540c AJAX \u8bf7\u6c42\u4e00\u6837\u3002",(0,i.kt)("inlineCode",{parentName:"p"},"Master")," \u53ea\u9700\u8981\u5b8c\u6210\u81ea\u5df1\u7684\u6570\u636e\u5e93\u64cd\u4f5c\u5373\u53ef\u3002\u81f3\u4e8e ",(0,i.kt)("inlineCode",{parentName:"p"},"Slaves")," \u662f\u5426\u6536\u5230\u4e8c\u8fdb\u5236\u65e5\u5fd7\uff0c\u662f\u5426\u5b8c\u6210\u64cd\u4f5c\uff0c\u4e0d\u7528\u5173\u5fc3\u3002",(0,i.kt)("strong",{parentName:"p"},"\uff08\u63a8\u8350\u65b9\u5f0f\uff09")),(0,i.kt)("h3",{id:"92743-\u534a\u540c\u6b65\u590d\u5236"},"9.27.4.3 \u534a\u540c\u6b65\u590d\u5236"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Master")," \u53ea\u4fdd\u8bc1 ",(0,i.kt)("inlineCode",{parentName:"p"},"Slaves")," \u4e2d\u7684\u4e00\u4e2a\u64cd\u4f5c\u6210\u529f\uff0c\u5c31\u8fd4\u56de\uff0c\u5176\u4ed6 ",(0,i.kt)("inlineCode",{parentName:"p"},"Slave")," \u4e0d\u7ba1\u3002"),(0,i.kt)("p",null,"\u4e0b\u9762\u5c06\u4f7f\u7528 ",(0,i.kt)("inlineCode",{parentName:"p"},"SqlServer")," \u7b80\u5355\u914d\u7f6e\u4e3b\u4ece\u590d\u5236\u529f\u80fd\u3002"),(0,i.kt)("h2",{id:"9275-sqlserver-\u4e3b\u5e93\u914d\u7f6e"},"9.27.5 ",(0,i.kt)("inlineCode",{parentName:"h2"},"SqlServer")," \u4e3b\u5e93\u914d\u7f6e"),(0,i.kt)("h3",{id:"92751-\u6dfb\u52a0-\u672c\u5730\u53d1\u5e03"},"9.27.5.1 \u6dfb\u52a0 ",(0,i.kt)("inlineCode",{parentName:"h3"},"\u672c\u5730\u53d1\u5e03")),(0,i.kt)("img",{src:(0,o.Z)("img/dbcopy1.png")}),(0,i.kt)("h3",{id:"92752-\u9009\u62e9-\u5206\u53d1\u670d\u52a1\u5668"},"9.27.5.2 \u9009\u62e9 ",(0,i.kt)("inlineCode",{parentName:"h3"},"\u5206\u53d1\u670d\u52a1\u5668")),(0,i.kt)("img",{src:(0,o.Z)("img/dbcopy2.png")}),(0,i.kt)("h3",{id:"92753-\u542f\u7528-\u4ee3\u7406"},"9.27.5.3 \u542f\u7528 ",(0,i.kt)("inlineCode",{parentName:"h3"},"\u4ee3\u7406")),(0,i.kt)("img",{src:(0,o.Z)("img/dbcopy3.png")}),(0,i.kt)("h3",{id:"92754-\u53d1\u5e03\u6570\u636e\u5e93"},"9.27.5.4 \u53d1\u5e03\u6570\u636e\u5e93"),(0,i.kt)("img",{src:(0,o.Z)("img/dbcopy4.png")}),(0,i.kt)("h3",{id:"92755-\u5feb\u7167\u53d1\u5e03"},"9.27.5.5 \u5feb\u7167\u53d1\u5e03"),(0,i.kt)("img",{src:(0,o.Z)("img/dbcopy5.png")}),(0,i.kt)("p",null,"\u5177\u4f53\u9009\u62e9\u4f55\u79cd\u53d1\u5e03\u7c7b\u578b\uff0c\u89c6\u5177\u4f53\u4e1a\u52a1\u573a\u666f\u800c\u5b9a\u3002"),(0,i.kt)("h3",{id:"92756-\u9009\u62e9\u53d1\u5e03\u9879\u76ee"},"9.27.5.6 \u9009\u62e9\u53d1\u5e03\u9879\u76ee"),(0,i.kt)("img",{src:(0,o.Z)("img/dbcopy6.png")}),(0,i.kt)("h3",{id:"92757-\u914d\u7f6e\u5206\u53d1\u8ba1\u5212"},"9.27.5.7 \u914d\u7f6e\u5206\u53d1\u8ba1\u5212"),(0,i.kt)("img",{src:(0,o.Z)("img/dbcopy7.png")}),(0,i.kt)("img",{src:(0,o.Z)("img/dbcopy8.png")}),(0,i.kt)("h3",{id:"92758-\u914d\u7f6e\u5b89\u5168\u8bbe\u7f6e"},"9.27.5.8 \u914d\u7f6e\u5b89\u5168\u8bbe\u7f6e"),(0,i.kt)("img",{src:(0,o.Z)("img/dbcopy9.png")}),(0,i.kt)("img",{src:(0,o.Z)("img/dbcopy10.png")}),(0,i.kt)("h3",{id:"92759-\u5b8c\u6210\u914d\u7f6e"},"9.27.5.9 \u5b8c\u6210\u914d\u7f6e"),(0,i.kt)("img",{src:(0,o.Z)("img/dbcopy11.png")}),(0,i.kt)("img",{src:(0,o.Z)("img/dbcopy12.png")}),(0,i.kt)("h2",{id:"9276-sqlserver-\u4ece\u5e93\u914d\u7f6e"},"9.27.6 ",(0,i.kt)("inlineCode",{parentName:"h2"},"SqlServer")," \u4ece\u5e93\u914d\u7f6e"),(0,i.kt)("h3",{id:"92761-\u6dfb\u52a0-\u672c\u5730\u8ba2\u9605"},"9.27.6.1 \u6dfb\u52a0 ",(0,i.kt)("inlineCode",{parentName:"h3"},"\u672c\u5730\u8ba2\u9605")),(0,i.kt)("img",{src:(0,o.Z)("img/dbrece1.png")}),(0,i.kt)("h3",{id:"92762-\u9009\u62e9-\u5206\u53d1\u670d\u52a1\u5668"},"9.27.6.2 \u9009\u62e9 ",(0,i.kt)("inlineCode",{parentName:"h3"},"\u5206\u53d1\u670d\u52a1\u5668")),(0,i.kt)("img",{src:(0,o.Z)("img/dbrece2.png")}),(0,i.kt)("h3",{id:"92763-\u9009\u62e9-\u5206\u53d1\u4ee3\u7406\u4f4d\u7f6e"},"9.27.6.3 \u9009\u62e9 ",(0,i.kt)("inlineCode",{parentName:"h3"},"\u5206\u53d1\u4ee3\u7406\u4f4d\u7f6e")),(0,i.kt)("img",{src:(0,o.Z)("img/dbrece3.png")}),(0,i.kt)("h3",{id:"92764-\u9009\u62e9-\u8ba2\u9605\u6570\u636e\u5e93"},"9.27.6.4 \u9009\u62e9 ",(0,i.kt)("inlineCode",{parentName:"h3"},"\u8ba2\u9605\u6570\u636e\u5e93")),(0,i.kt)("img",{src:(0,o.Z)("img/dbrece4.png")}),(0,i.kt)("h3",{id:"92765-\u9009\u62e9-\u5206\u53d1\u5b89\u5168\u8bbe\u7f6e"},"9.27.6.5 \u9009\u62e9 ",(0,i.kt)("inlineCode",{parentName:"h3"},"\u5206\u53d1\u5b89\u5168\u8bbe\u7f6e")),(0,i.kt)("img",{src:(0,o.Z)("img/dbrece5.png")}),(0,i.kt)("img",{src:(0,o.Z)("img/dbrece6.png")}),(0,i.kt)("h3",{id:"92766-\u9009\u62e9-\u540c\u6b65\u8ba1\u5212"},"9.27.6.6 \u9009\u62e9 ",(0,i.kt)("inlineCode",{parentName:"h3"},"\u540c\u6b65\u8ba1\u5212")),(0,i.kt)("img",{src:(0,o.Z)("img/dbrece7.png")}),(0,i.kt)("h3",{id:"92767-\u5b8c\u6210\u8ba2\u9605"},"9.27.6.7 \u5b8c\u6210\u8ba2\u9605"),(0,i.kt)("img",{src:(0,o.Z)("img/dbrece8.png")}),(0,i.kt)("h2",{id:"9277-\u5206\u53d1\u5b9a\u4e49\u76d1\u89c6"},"9.27.7 \u5206\u53d1\u5b9a\u4e49\u76d1\u89c6"),(0,i.kt)("img",{src:(0,o.Z)("img/dbrece9.png")}),(0,i.kt)("h2",{id:"9278-\u67e5\u770b\u4e3b\u4ece\u590d\u5236\u7ed3\u679c"},"9.27.8 \u67e5\u770b\u4e3b\u4ece\u590d\u5236\u7ed3\u679c"),(0,i.kt)("img",{src:(0,o.Z)("img/dbrece10.png")}),(0,i.kt)("img",{src:(0,o.Z)("img/dbrece11.png")}),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u7279\u6027")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},'\u4e3b\u4ece\u590d\u5236\u6709\u4e00\u5b9a\u8fdf\u5ef6\u6027\uff0c\u6240\u4ee5\u7cfb\u7edf\u8bbe\u8ba1\u8981\u6709\u4e00\u5b9a\u201c\u5bb9\u5fcd\u6027"\u3002'))),(0,i.kt)("h2",{id:"9279-\u53cd\u9988\u4e0e\u5efa\u8bae"},"9.27.9 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,i.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/09bd0aa2.5913b472.js b/handbook/build/assets/js/09bd0aa2.5913b472.js deleted file mode 100644 index a412aa75a41..00000000000 --- a/handbook/build/assets/js/09bd0aa2.5913b472.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[9013],{3905:function(e,t,n){n.d(t,{Zo:function(){return d},kt:function(){return m}});var r=n(7294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var s=r.createContext({}),c=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},d=function(e){var t=c(e.components);return r.createElement(s.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},p=r.forwardRef((function(e,t){var n=e.components,i=e.mdxType,o=e.originalType,s=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),p=c(n),m=i,f=p["".concat(s,".").concat(m)]||p[m]||u[m]||o;return n?r.createElement(f,a(a({ref:t},d),{},{components:n})):r.createElement(f,a({ref:t},d))}));function m(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var o=n.length,a=new Array(o);a[0]=p;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l.mdxType="string"==typeof e?e:i,a[1]=l;for(var c=2;c")," \u63a5\u53e3\u5e76\u5b9e\u73b0\u5373\u53ef\uff0c\u5982\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{8,24}","{8,24}":!0},"using Furion.DatabaseAccessor;\nusing Microsoft.EntityFrameworkCore;\nusing Microsoft.EntityFrameworkCore.Metadata.Builders;\nusing System;\n\nnamespace Furion.Core\n{\n public class Person : Entity, IEntityTypeBuilder\n {\n public Person()\n {\n CreatedTime = DateTime.Now;\n IsDeleted = false;\n }\n\n public string Name { get; set; }\n\n public int Age { get; set; }\n\n public string Address { get; set; }\n\n public void Configure(EntityTypeBuilder entityBuilder, DbContext dbContext, Type dbContextLocator)\n {\n entityBuilder.HasQueryFilter(u => !u.IsDeleted);\n }\n }\n}\n")),(0,o.kt)("h3",{id:"92322-\u5168\u5c40\u7b5b\u9009\u5668"},"9.23.2.2 \u5168\u5c40\u7b5b\u9009\u5668"),(0,o.kt)("p",null,"\u5168\u5c40\u7b5b\u9009\u5668\u53ef\u4ee5\u914d\u7f6e\u6240\u6709\u5b9e\u4f53\u5e94\u7528\u7b5b\u9009\u5668\u4e2d\uff0c\u65e0\u9700\u4e00\u4e2a\u4e00\u4e2a\u53bb\u914d\u7f6e\u3002\u4f7f\u7528\u65b9\u6cd5\u7a0d\u5fae\u6709\u4e9b\u590d\u6742\uff0c\u9700\u8981\u52a8\u6001\u6784\u5efa ",(0,o.kt)("inlineCode",{parentName:"p"},"Lambda")," \u8868\u8fbe\u5f0f\u3002"),(0,o.kt)("p",null,"\u5b9e\u73b0\u5168\u5c40\u7b5b\u9009\u5668\u4f9d\u8d56\u4e8e ",(0,o.kt)("inlineCode",{parentName:"p"},"IModelBuilderFilter")," \u63a5\u53e3\uff0c\u8be5\u63a5\u53e3\u63d0\u4f9b\u4e24\u4e2a\u65b9\u6cd5\uff1a"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"OnCreating"),"\uff1a\u5b9e\u4f53\u6784\u5efa\u4e4b\u524d"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"OnCreated"),"\uff1a\u5b9e\u4f53\u6784\u5efa\u4e4b\u540e")),(0,o.kt)("p",null,"\u901a\u8fc7\u5b9e\u73b0\u8fd9\u4e24\u4e2a\u65b9\u6cd5\u5373\u53ef\u914d\u7f6e\u5168\u5c40\u8fc7\u6ee4\u5668\uff0c\u5982\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{10,18-19,21,24}","{10,18-19,21,24}":!0},'using Furion.DatabaseAccessor;\nusing Microsoft.EntityFrameworkCore;\nusing Microsoft.EntityFrameworkCore.Metadata.Builders;\nusing System;\nusing System.Linq.Expressions;\n\nnamespace Furion.EntityFramework.Core\n{\n [AppDbContext("Sqlite3ConnectionString")]\n public class FurionDbContext : AppDbContext, IModelBuilderFilter\n {\n public FurionDbContext(DbContextOptions options) : base(options)\n {\n }\n\n public void OnCreating(ModelBuilder modelBuilder, EntityTypeBuilder entityBuilder, DbContext dbContext, Type dbContextLocator)\n {\n // \u8bbe\u7f6e\u8f6f\u5220\u9664\u8868\u8fbe\u5f0f\n var fakeDeleteQueryFilterExpression = FakeDeleteQueryFilterExpression(entityBuilder, dbContext);\n if (fakeDeleteQueryFilterExpression == null) return;\n\n entityBuilder.HasQueryFilter(fakeDeleteQueryFilterExpression);\n }\n }\n}\n')),(0,o.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u5c0f\u5efa\u8bae")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u5982\u679c\u5bf9\u52a8\u6001\u6784\u5efa ",(0,o.kt)("inlineCode",{parentName:"p"},"LambdaExpression")," \u4e0d\u719f\u6089\u7684\u670b\u53cb\uff0c\u53ef\u4ee5\u4f7f\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"System.Linq.Dynamic.Core")," \u5305 ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/zzzprojects/System.Linq.Dynamic.Core"},"https://github.com/zzzprojects/System.Linq.Dynamic.Core")))),(0,o.kt)("h2",{id:"9233-\u53cd\u9988\u4e0e\u5efa\u8bae"},"9.23.3 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,o.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,o.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}p.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/09bd0aa2.b6ce4dd4.js b/handbook/build/assets/js/09bd0aa2.b6ce4dd4.js new file mode 100644 index 00000000000..0b2d0790d62 --- /dev/null +++ b/handbook/build/assets/js/09bd0aa2.b6ce4dd4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[9013],{3905:function(e,t,n){n.d(t,{Zo:function(){return d},kt:function(){return m}});var r=n(7294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var s=r.createContext({}),c=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},d=function(e){var t=c(e.components);return r.createElement(s.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},p=r.forwardRef((function(e,t){var n=e.components,i=e.mdxType,o=e.originalType,s=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),p=c(n),m=i,f=p["".concat(s,".").concat(m)]||p[m]||u[m]||o;return n?r.createElement(f,a(a({ref:t},d),{},{components:n})):r.createElement(f,a({ref:t},d))}));function m(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var o=n.length,a=new Array(o);a[0]=p;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l.mdxType="string"==typeof e?e:i,a[1]=l;for(var c=2;c")," \u63a5\u53e3\u5e76\u5b9e\u73b0\u5373\u53ef\uff0c\u5982\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{8,24}","{8,24}":!0},"using Furion.DatabaseAccessor;\nusing Microsoft.EntityFrameworkCore;\nusing Microsoft.EntityFrameworkCore.Metadata.Builders;\nusing System;\n\nnamespace Furion.Core\n{\n public class Person : Entity, IEntityTypeBuilder\n {\n public Person()\n {\n CreatedTime = DateTime.Now;\n IsDeleted = false;\n }\n\n public string Name { get; set; }\n\n public int Age { get; set; }\n\n public string Address { get; set; }\n\n public void Configure(EntityTypeBuilder entityBuilder, DbContext dbContext, Type dbContextLocator)\n {\n entityBuilder.HasQueryFilter(u => !u.IsDeleted);\n }\n }\n}\n")),(0,o.kt)("h3",{id:"92322-\u5168\u5c40\u7b5b\u9009\u5668"},"9.23.2.2 \u5168\u5c40\u7b5b\u9009\u5668"),(0,o.kt)("p",null,"\u5168\u5c40\u7b5b\u9009\u5668\u53ef\u4ee5\u914d\u7f6e\u6240\u6709\u5b9e\u4f53\u5e94\u7528\u7b5b\u9009\u5668\u4e2d\uff0c\u65e0\u9700\u4e00\u4e2a\u4e00\u4e2a\u53bb\u914d\u7f6e\u3002\u4f7f\u7528\u65b9\u6cd5\u7a0d\u5fae\u6709\u4e9b\u590d\u6742\uff0c\u9700\u8981\u52a8\u6001\u6784\u5efa ",(0,o.kt)("inlineCode",{parentName:"p"},"Lambda")," \u8868\u8fbe\u5f0f\u3002"),(0,o.kt)("p",null,"\u5b9e\u73b0\u5168\u5c40\u7b5b\u9009\u5668\u4f9d\u8d56\u4e8e ",(0,o.kt)("inlineCode",{parentName:"p"},"IModelBuilderFilter")," \u63a5\u53e3\uff0c\u8be5\u63a5\u53e3\u63d0\u4f9b\u4e24\u4e2a\u65b9\u6cd5\uff1a"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"OnCreating"),"\uff1a\u5b9e\u4f53\u6784\u5efa\u4e4b\u524d"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"OnCreated"),"\uff1a\u5b9e\u4f53\u6784\u5efa\u4e4b\u540e")),(0,o.kt)("p",null,"\u901a\u8fc7\u5b9e\u73b0\u8fd9\u4e24\u4e2a\u65b9\u6cd5\u5373\u53ef\u914d\u7f6e\u5168\u5c40\u8fc7\u6ee4\u5668\uff0c\u5982\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{10,18-19,21,24}","{10,18-19,21,24}":!0},'using Furion.DatabaseAccessor;\nusing Microsoft.EntityFrameworkCore;\nusing Microsoft.EntityFrameworkCore.Metadata.Builders;\nusing System;\nusing System.Linq.Expressions;\n\nnamespace Furion.EntityFramework.Core\n{\n [AppDbContext("Sqlite3ConnectionString")]\n public class FurionDbContext : AppDbContext, IModelBuilderFilter\n {\n public FurionDbContext(DbContextOptions options) : base(options)\n {\n }\n\n public void OnCreating(ModelBuilder modelBuilder, EntityTypeBuilder entityBuilder, DbContext dbContext, Type dbContextLocator)\n {\n // \u8bbe\u7f6e\u8f6f\u5220\u9664\u8868\u8fbe\u5f0f\n var fakeDeleteQueryFilterExpression = FakeDeleteQueryFilterExpression(entityBuilder, dbContext);\n if (fakeDeleteQueryFilterExpression == null) return;\n\n entityBuilder.HasQueryFilter(fakeDeleteQueryFilterExpression);\n }\n }\n}\n')),(0,o.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u5c0f\u5efa\u8bae")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u5982\u679c\u5bf9\u52a8\u6001\u6784\u5efa ",(0,o.kt)("inlineCode",{parentName:"p"},"LambdaExpression")," \u4e0d\u719f\u6089\u7684\u670b\u53cb\uff0c\u53ef\u4ee5\u4f7f\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"System.Linq.Dynamic.Core")," \u5305 ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/zzzprojects/System.Linq.Dynamic.Core"},"https://github.com/zzzprojects/System.Linq.Dynamic.Core")))),(0,o.kt)("h2",{id:"9233-\u53cd\u9988\u4e0e\u5efa\u8bae"},"9.23.3 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,o.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,o.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}p.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/0baa6b13.87b489b6.js b/handbook/build/assets/js/0baa6b13.87b489b6.js deleted file mode 100644 index 8049bb5171c..00000000000 --- a/handbook/build/assets/js/0baa6b13.87b489b6.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[657],{3905:function(e,n,t){t.d(n,{Zo:function(){return p},kt:function(){return m}});var i=t(7294);function a(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function r(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);n&&(i=i.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,i)}return t}function o(e){for(var n=1;n=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var l=i.createContext({}),d=function(e){var n=i.useContext(l),t=n;return e&&(t="function"==typeof e?e(n):o(o({},n),e)),t},p=function(e){var n=d(e.components);return i.createElement(l.Provider,{value:n},e.children)},s={inlineCode:"code",wrapper:function(e){var n=e.children;return i.createElement(i.Fragment,{},n)}},u=i.forwardRef((function(e,n){var t=e.components,a=e.mdxType,r=e.originalType,l=e.parentName,p=c(e,["components","mdxType","originalType","parentName"]),u=d(t),m=a,k=u["".concat(l,".").concat(m)]||u[m]||s[m]||r;return t?i.createElement(k,o(o({ref:n},p),{},{components:t})):i.createElement(k,o({ref:n},p))}));function m(e,n){var t=arguments,a=n&&n.mdxType;if("string"==typeof e||a){var r=t.length,o=new Array(r);o[0]=u;var c={};for(var l in n)hasOwnProperty.call(n,l)&&(c[l]=n[l]);c.originalType=e,c.mdxType="string"==typeof e?e:a,o[1]=c;for(var d=2;dInject \u8bbe\u8ba1",id:"241-inject-\u8bbe\u8ba1",children:[]},{value:"2.4.2 Inject \u65b9\u6cd5\u6709\u54ea\u4e9b",id:"242-inject-\u65b9\u6cd5\u6709\u54ea\u4e9b",children:[]},{value:"2.4.3 \u5728 Program.cs \u4e2d\u4f7f\u7528",id:"243-\u5728-programcs-\u4e2d\u4f7f\u7528",children:[{value:"2.4.3.1 Inject() \u65b9\u6cd5",id:"2431-inject-\u65b9\u6cd5",children:[]}]},{value:"2.4.4 Startup.ConfigureServices \u4f7f\u7528",id:"244-startupconfigureservices-\u4f7f\u7528",children:[{value:"2.4.4.1 AddInject() \u65b9\u6cd5",id:"2441-addinject-\u65b9\u6cd5",children:[]},{value:"2.4.4.2 AddInjectBase() \u65b9\u6cd5",id:"2442-addinjectbase-\u65b9\u6cd5",children:[]},{value:"2.4.4.5 AddInjectWithUnifyResult() \u65b9\u6cd5",id:"2445-addinjectwithunifyresult-\u65b9\u6cd5",children:[]}]},{value:"2.4.5 Startup.Configure \u4f7f\u7528",id:"245-startupconfigure-\u4f7f\u7528",children:[{value:"2.4.5.1 UseInject() \u65b9\u6cd5",id:"2451-useinject-\u65b9\u6cd5",children:[]},{value:"2.4.5.1 UseInjectBase() \u65b9\u6cd5",id:"2451-useinjectbase-\u65b9\u6cd5",children:[]}]},{value:"2.4.6 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"246-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],s={toc:p};function u(e){var n=e.components,t=(0,a.Z)(e,o);return(0,r.kt)("wrapper",(0,i.Z)({},s,t,{components:n,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"241-inject-\u8bbe\u8ba1"},"2.4.1 ",(0,r.kt)("inlineCode",{parentName:"h2"},"Inject")," \u8bbe\u8ba1"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Inject [\u026an\u02c8d\u0292ekt]")," \u610f\u601d\u662f ",(0,r.kt)("inlineCode",{parentName:"p"},"\u6ce8\u5165\uff0c\u6ce8\u5c04")," \u7684\u610f\u601d\uff0c\u5728\u8fd9\u91cc\u610f\u4e3a\u4f7f\u7528\u6700\u5c0f\u7684\u4fb5\u5165\u5f0f\u5bf9\u5e94\u7528\u8fdb\u884c\u673a\u80fd\u6539\u9020\u3002"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Inject()")," \u65b9\u6cd5\u662f ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u7684\u6700\u5c0f\u4fb5\u5165\u5f0f\u7684\u65b9\u6cd5\uff0c\u53ef\u4ee5\u8ba9\u4efb\u4f55 ",(0,r.kt)("inlineCode",{parentName:"p"},"ASP.NET Core")," Web \u540e\u7aef\u9879\u76ee\u77ac\u95f4\u652f\u6301\u6240\u6709 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u7279\u6027\u3002"),(0,r.kt)("h2",{id:"242-inject-\u65b9\u6cd5\u6709\u54ea\u4e9b"},"2.4.2 ",(0,r.kt)("inlineCode",{parentName:"h2"},"Inject")," \u65b9\u6cd5\u6709\u54ea\u4e9b"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Inject()"),"\uff1a\u5728 ",(0,r.kt)("inlineCode",{parentName:"li"},"Program.cs")," \u4e2d\u6ce8\u518c"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"AddInject()"),"\uff1a\u5728 ",(0,r.kt)("inlineCode",{parentName:"li"},"Startup.cs")," \u7684 ",(0,r.kt)("inlineCode",{parentName:"li"},"ConfigureServices")," \u4e2d\u6ce8\u518c"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"AddInjectBase()"),"\uff1a\u5728 ",(0,r.kt)("inlineCode",{parentName:"li"},"Startup.cs")," \u7684 ",(0,r.kt)("inlineCode",{parentName:"li"},"ConfigureServices")," \u4e2d\u6ce8\u518c"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"AddInjectWithUnifyResult()/ AddInjectWithUnifyResult()"),"\uff1a\u5728 ",(0,r.kt)("inlineCode",{parentName:"li"},"Startup.cs")," \u7684 ",(0,r.kt)("inlineCode",{parentName:"li"},"ConfigureServices")," \u4e2d\u6ce8\u518c"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"UseInject()"),"\uff1a\u5728 ",(0,r.kt)("inlineCode",{parentName:"li"},"Startup.cs")," \u7684 ",(0,r.kt)("inlineCode",{parentName:"li"},"Configure")," \u4e2d\u6ce8\u518c"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"UseInjectBase()"),"\uff1a\u5728 ",(0,r.kt)("inlineCode",{parentName:"li"},"Startup.cs")," \u7684 ",(0,r.kt)("inlineCode",{parentName:"li"},"Configure")," \u4e2d\u6ce8\u518c")),(0,r.kt)("h2",{id:"243-\u5728-programcs-\u4e2d\u4f7f\u7528"},"2.4.3 \u5728 ",(0,r.kt)("inlineCode",{parentName:"h2"},"Program.cs")," \u4e2d\u4f7f\u7528"),(0,r.kt)("h3",{id:"2431-inject-\u65b9\u6cd5"},"2.4.3.1 ",(0,r.kt)("inlineCode",{parentName:"h3"},"Inject()")," \u65b9\u6cd5"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Inject()")," \u662f\u5728\u542f\u52a8\u7a0b\u5e8f ",(0,r.kt)("inlineCode",{parentName:"p"},"Program.cs")," \u4e2d\u4f7f\u7528\u7684\uff0c\u96c6\u6210 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u552f\u4e00\u65b9\u6cd5\uff0c\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:'{6,18} title="Furion.Web.Entry\\Program.cs"',"{6,18}":!0,title:'"Furion.Web.Entry\\Program.cs"'},"using Microsoft.AspNetCore.Hosting;\nusing Microsoft.Extensions.Hosting;\n\nnamespace Furion.Web.Entry\n{\n public class Program\n {\n public static void Main(string[] args)\n {\n CreateHostBuilder(args).Build().Run();\n }\n\n public static IHostBuilder CreateHostBuilder(string[] args)\n {\n return Host.CreateDefaultBuilder(args)\n .ConfigureWebHostDefaults(webBuilder =>\n {\n webBuilder.Inject()\n .UseStartup();\n });\n }\n }\n}\n")),(0,r.kt)("h2",{id:"244-startupconfigureservices-\u4f7f\u7528"},"2.4.4 ",(0,r.kt)("inlineCode",{parentName:"h2"},"Startup.ConfigureServices")," \u4f7f\u7528"),(0,r.kt)("h3",{id:"2441-addinject-\u65b9\u6cd5"},"2.4.4.1 ",(0,r.kt)("inlineCode",{parentName:"h3"},"AddInject()")," \u65b9\u6cd5"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"AddInject()")," \u65b9\u6cd5\u662f\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Startup.cs")," \u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"ConfigureServices")," \u4e2d\u63d0\u4f9b\u6700\u57fa\u7840\u529f\u80fd\u7684\u6ce8\u518c\u3002"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"AddInject()")," \u5305\u542b\u4ee5\u4e0b\u57fa\u7840\u529f\u80fd\u6ce8\u518c\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"services.AddSpecificationDocuments([options])\n .AddDynamicApiControllers()\n .AddDataValidation()\n .AddFriendlyException();\n")),(0,r.kt)("p",null,"\u4f7f\u7528\u5982\u4e0b\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{3,5,7,10}","{3,5,7,10}":!0},"namespace Furion.Web.Entry\n{\n public class Startup\n {\n public void ConfigureServices(IServiceCollection services)\n {\n services.AddInject(); // \u652f\u6301\u76f4\u63a5\u6ce8\u518c\uff08\u548c\u4e0b\u9762\u4ee3\u7801\u4e8c\u9009\u4e00\uff0c\u4e0d\u80fd\u540c\u65f6\u6ce8\u518c\u4e24\u6b21\uff09\n\n services.AddControllers()\n .AddInject(); // \u652f\u6301\u94fe\u5f0f\u6ce8\u518c\uff08\u548c\u4e0a\u9762\u4ee3\u7801\u4e8c\u9009\u4e00\uff0c\u4e0d\u80fd\u540c\u65f6\u6ce8\u518c\u4e24\u6b21\uff09\n }\n\n public void Configure(IApplicationBuilder app, IWebHostEnvironment env)\n {\n // \u5176\u4ed6\u4ee3\u7801\n }\n }\n}\n")),(0,r.kt)("h3",{id:"2442-addinjectbase-\u65b9\u6cd5"},"2.4.4.2 ",(0,r.kt)("inlineCode",{parentName:"h3"},"AddInjectBase()")," \u65b9\u6cd5"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"AddInjectBase()")," \u65b9\u6cd5\u662f\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Startup.cs")," \u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"ConfigureServices")," \u4e2d\u63d0\u4f9b\u6700\u57fa\u7840\u529f\u80fd\u7684\u6ce8\u518c\u3002"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"AddInjectBase()")," \u5305\u542b\u4ee5\u4e0b\u57fa\u7840\u529f\u80fd\u6ce8\u518c\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"services.AddDataValidation()\n .AddFriendlyException();\n")),(0,r.kt)("p",null,"\u4f7f\u7528\u540c\u4e0a ",(0,r.kt)("inlineCode",{parentName:"p"},"AddInject()"),"\u3002"),(0,r.kt)("h3",{id:"2445-addinjectwithunifyresult-\u65b9\u6cd5"},"2.4.4.5 ",(0,r.kt)("inlineCode",{parentName:"h3"},"AddInjectWithUnifyResult()")," \u65b9\u6cd5"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"AddInjectWithUnifyResult()")," \u65b9\u6cd5\u5b9e\u9645\u4e0a\u7b49\u540c\u4e8e\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"services.AddInject([swaggerGen])\n .AddUnifyResult();\n")),(0,r.kt)("p",null,"\u4f7f\u7528\u540c\u4e0a ",(0,r.kt)("inlineCode",{parentName:"p"},"AddInject()"),"\u3002"),(0,r.kt)("div",{className:"admonition admonition-warning alert alert--danger"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"}))),"\u7279\u522b\u6ce8\u610f")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u6240\u6709 ",(0,r.kt)("inlineCode",{parentName:"p"},".AddInject****()")," \u65b9\u6cd5\u4e0d\u80fd\u540c\u65f6\u6ce8\u518c\uff0c\u53ea\u80fd\u53d6\u5176\u4e00\u3002"))),(0,r.kt)("h2",{id:"245-startupconfigure-\u4f7f\u7528"},"2.4.5 ",(0,r.kt)("inlineCode",{parentName:"h2"},"Startup.Configure")," \u4f7f\u7528"),(0,r.kt)("h3",{id:"2451-useinject-\u65b9\u6cd5"},"2.4.5.1 ",(0,r.kt)("inlineCode",{parentName:"h3"},"UseInject()")," \u65b9\u6cd5"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"UseInject()")," \u65b9\u6cd5\u662f\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Startup.cs")," \u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"Configure")," \u4e2d\u63d0\u4f9b\u6700\u57fa\u7840\u529f\u80fd\u7684\u6ce8\u518c\u3002"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"UseInject()")," \u5305\u542b\u4ee5\u4e0b\u57fa\u7840\u529f\u80fd\u6ce8\u518c\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"app.UseSpecificationDocuments();\n")),(0,r.kt)("p",null,"\u4f7f\u7528\u5982\u4e0b\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{3,5,12}","{3,5,12}":!0},"namespace Furion.Web.Entry\n{\n public class Startup\n {\n public void ConfigureServices(IServiceCollection services)\n {\n // \u5176\u4ed6\u4ee3\u7801\n }\n\n public void Configure(IApplicationBuilder app, IWebHostEnvironment env)\n {\n app.UseInject(); // \u5305\u542b\u6700\u5c0f Swagger \u6ce8\u518c\n }\n }\n}\n")),(0,r.kt)("h3",{id:"2451-useinjectbase-\u65b9\u6cd5"},"2.4.5.1 ",(0,r.kt)("inlineCode",{parentName:"h3"},"UseInjectBase()")," \u65b9\u6cd5"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"UseInjectBase()")," \u65b9\u6cd5\u662f\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Startup.cs")," \u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"Configure")," \u4e2d\u63d0\u4f9b\u6700\u57fa\u7840\u529f\u80fd\u7684\u6ce8\u518c\u3002"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"UseInjectBase()")," \u5b9e\u9645\u4e0a\u662f\u4e2a\u7a7a\u65b9\u6cd5\uff0c\u4e3a\u4e86\u89c4\u8303\u5316\u4ee3\u7801\u7279\u610f\u5efa\u7acb\u7684\u3002"),(0,r.kt)("p",null,"\u4f7f\u7528\u540c\u4e0a ",(0,r.kt)("inlineCode",{parentName:"p"},"UseInject()"),"\u3002"),(0,r.kt)("h2",{id:"246-\u53cd\u9988\u4e0e\u5efa\u8bae"},"2.4.6 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,r.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/0baa6b13.e9c561eb.js b/handbook/build/assets/js/0baa6b13.e9c561eb.js new file mode 100644 index 00000000000..f4fce9f57e3 --- /dev/null +++ b/handbook/build/assets/js/0baa6b13.e9c561eb.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[657],{3905:function(e,n,t){t.d(n,{Zo:function(){return p},kt:function(){return m}});var i=t(7294);function a(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function r(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);n&&(i=i.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,i)}return t}function o(e){for(var n=1;n=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var l=i.createContext({}),d=function(e){var n=i.useContext(l),t=n;return e&&(t="function"==typeof e?e(n):o(o({},n),e)),t},p=function(e){var n=d(e.components);return i.createElement(l.Provider,{value:n},e.children)},s={inlineCode:"code",wrapper:function(e){var n=e.children;return i.createElement(i.Fragment,{},n)}},u=i.forwardRef((function(e,n){var t=e.components,a=e.mdxType,r=e.originalType,l=e.parentName,p=c(e,["components","mdxType","originalType","parentName"]),u=d(t),m=a,k=u["".concat(l,".").concat(m)]||u[m]||s[m]||r;return t?i.createElement(k,o(o({ref:n},p),{},{components:t})):i.createElement(k,o({ref:n},p))}));function m(e,n){var t=arguments,a=n&&n.mdxType;if("string"==typeof e||a){var r=t.length,o=new Array(r);o[0]=u;var c={};for(var l in n)hasOwnProperty.call(n,l)&&(c[l]=n[l]);c.originalType=e,c.mdxType="string"==typeof e?e:a,o[1]=c;for(var d=2;dInject \u8bbe\u8ba1",id:"241-inject-\u8bbe\u8ba1",children:[]},{value:"2.4.2 Inject \u65b9\u6cd5\u6709\u54ea\u4e9b",id:"242-inject-\u65b9\u6cd5\u6709\u54ea\u4e9b",children:[]},{value:"2.4.3 \u5728 Program.cs \u4e2d\u4f7f\u7528",id:"243-\u5728-programcs-\u4e2d\u4f7f\u7528",children:[{value:"2.4.3.1 Inject() \u65b9\u6cd5",id:"2431-inject-\u65b9\u6cd5",children:[]}]},{value:"2.4.4 Startup.ConfigureServices \u4f7f\u7528",id:"244-startupconfigureservices-\u4f7f\u7528",children:[{value:"2.4.4.1 AddInject() \u65b9\u6cd5",id:"2441-addinject-\u65b9\u6cd5",children:[]},{value:"2.4.4.2 AddInjectBase() \u65b9\u6cd5",id:"2442-addinjectbase-\u65b9\u6cd5",children:[]},{value:"2.4.4.5 AddInjectWithUnifyResult() \u65b9\u6cd5",id:"2445-addinjectwithunifyresult-\u65b9\u6cd5",children:[]}]},{value:"2.4.5 Startup.Configure \u4f7f\u7528",id:"245-startupconfigure-\u4f7f\u7528",children:[{value:"2.4.5.1 UseInject() \u65b9\u6cd5",id:"2451-useinject-\u65b9\u6cd5",children:[]},{value:"2.4.5.1 UseInjectBase() \u65b9\u6cd5",id:"2451-useinjectbase-\u65b9\u6cd5",children:[]}]},{value:"2.4.6 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"246-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],s={toc:p};function u(e){var n=e.components,t=(0,a.Z)(e,o);return(0,r.kt)("wrapper",(0,i.Z)({},s,t,{components:n,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"241-inject-\u8bbe\u8ba1"},"2.4.1 ",(0,r.kt)("inlineCode",{parentName:"h2"},"Inject")," \u8bbe\u8ba1"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Inject [\u026an\u02c8d\u0292ekt]")," \u610f\u601d\u662f ",(0,r.kt)("inlineCode",{parentName:"p"},"\u6ce8\u5165\uff0c\u6ce8\u5c04")," \u7684\u610f\u601d\uff0c\u5728\u8fd9\u91cc\u610f\u4e3a\u4f7f\u7528\u6700\u5c0f\u7684\u4fb5\u5165\u5f0f\u5bf9\u5e94\u7528\u8fdb\u884c\u673a\u80fd\u6539\u9020\u3002"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Inject()")," \u65b9\u6cd5\u662f ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u7684\u6700\u5c0f\u4fb5\u5165\u5f0f\u7684\u65b9\u6cd5\uff0c\u53ef\u4ee5\u8ba9\u4efb\u4f55 ",(0,r.kt)("inlineCode",{parentName:"p"},"ASP.NET Core")," Web \u540e\u7aef\u9879\u76ee\u77ac\u95f4\u652f\u6301\u6240\u6709 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u7279\u6027\u3002"),(0,r.kt)("h2",{id:"242-inject-\u65b9\u6cd5\u6709\u54ea\u4e9b"},"2.4.2 ",(0,r.kt)("inlineCode",{parentName:"h2"},"Inject")," \u65b9\u6cd5\u6709\u54ea\u4e9b"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Inject()"),"\uff1a\u5728 ",(0,r.kt)("inlineCode",{parentName:"li"},"Program.cs")," \u4e2d\u6ce8\u518c"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"AddInject()"),"\uff1a\u5728 ",(0,r.kt)("inlineCode",{parentName:"li"},"Startup.cs")," \u7684 ",(0,r.kt)("inlineCode",{parentName:"li"},"ConfigureServices")," \u4e2d\u6ce8\u518c"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"AddInjectBase()"),"\uff1a\u5728 ",(0,r.kt)("inlineCode",{parentName:"li"},"Startup.cs")," \u7684 ",(0,r.kt)("inlineCode",{parentName:"li"},"ConfigureServices")," \u4e2d\u6ce8\u518c"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"AddInjectWithUnifyResult()/ AddInjectWithUnifyResult()"),"\uff1a\u5728 ",(0,r.kt)("inlineCode",{parentName:"li"},"Startup.cs")," \u7684 ",(0,r.kt)("inlineCode",{parentName:"li"},"ConfigureServices")," \u4e2d\u6ce8\u518c"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"UseInject()"),"\uff1a\u5728 ",(0,r.kt)("inlineCode",{parentName:"li"},"Startup.cs")," \u7684 ",(0,r.kt)("inlineCode",{parentName:"li"},"Configure")," \u4e2d\u6ce8\u518c"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"UseInjectBase()"),"\uff1a\u5728 ",(0,r.kt)("inlineCode",{parentName:"li"},"Startup.cs")," \u7684 ",(0,r.kt)("inlineCode",{parentName:"li"},"Configure")," \u4e2d\u6ce8\u518c")),(0,r.kt)("h2",{id:"243-\u5728-programcs-\u4e2d\u4f7f\u7528"},"2.4.3 \u5728 ",(0,r.kt)("inlineCode",{parentName:"h2"},"Program.cs")," \u4e2d\u4f7f\u7528"),(0,r.kt)("h3",{id:"2431-inject-\u65b9\u6cd5"},"2.4.3.1 ",(0,r.kt)("inlineCode",{parentName:"h3"},"Inject()")," \u65b9\u6cd5"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Inject()")," \u662f\u5728\u542f\u52a8\u7a0b\u5e8f ",(0,r.kt)("inlineCode",{parentName:"p"},"Program.cs")," \u4e2d\u4f7f\u7528\u7684\uff0c\u96c6\u6210 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u552f\u4e00\u65b9\u6cd5\uff0c\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:'{6,18} title="Furion.Web.Entry\\Program.cs"',"{6,18}":!0,title:'"Furion.Web.Entry\\Program.cs"'},"using Microsoft.AspNetCore.Hosting;\nusing Microsoft.Extensions.Hosting;\n\nnamespace Furion.Web.Entry\n{\n public class Program\n {\n public static void Main(string[] args)\n {\n CreateHostBuilder(args).Build().Run();\n }\n\n public static IHostBuilder CreateHostBuilder(string[] args)\n {\n return Host.CreateDefaultBuilder(args)\n .ConfigureWebHostDefaults(webBuilder =>\n {\n webBuilder.Inject()\n .UseStartup();\n });\n }\n }\n}\n")),(0,r.kt)("h2",{id:"244-startupconfigureservices-\u4f7f\u7528"},"2.4.4 ",(0,r.kt)("inlineCode",{parentName:"h2"},"Startup.ConfigureServices")," \u4f7f\u7528"),(0,r.kt)("h3",{id:"2441-addinject-\u65b9\u6cd5"},"2.4.4.1 ",(0,r.kt)("inlineCode",{parentName:"h3"},"AddInject()")," \u65b9\u6cd5"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"AddInject()")," \u65b9\u6cd5\u662f\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Startup.cs")," \u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"ConfigureServices")," \u4e2d\u63d0\u4f9b\u6700\u57fa\u7840\u529f\u80fd\u7684\u6ce8\u518c\u3002"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"AddInject()")," \u5305\u542b\u4ee5\u4e0b\u57fa\u7840\u529f\u80fd\u6ce8\u518c\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"services.AddSpecificationDocuments([options])\n .AddDynamicApiControllers()\n .AddDataValidation()\n .AddFriendlyException();\n")),(0,r.kt)("p",null,"\u4f7f\u7528\u5982\u4e0b\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{3,5,7,10}","{3,5,7,10}":!0},"namespace Furion.Web.Entry\n{\n public class Startup\n {\n public void ConfigureServices(IServiceCollection services)\n {\n services.AddInject(); // \u652f\u6301\u76f4\u63a5\u6ce8\u518c\uff08\u548c\u4e0b\u9762\u4ee3\u7801\u4e8c\u9009\u4e00\uff0c\u4e0d\u80fd\u540c\u65f6\u6ce8\u518c\u4e24\u6b21\uff09\n\n services.AddControllers()\n .AddInject(); // \u652f\u6301\u94fe\u5f0f\u6ce8\u518c\uff08\u548c\u4e0a\u9762\u4ee3\u7801\u4e8c\u9009\u4e00\uff0c\u4e0d\u80fd\u540c\u65f6\u6ce8\u518c\u4e24\u6b21\uff09\n }\n\n public void Configure(IApplicationBuilder app, IWebHostEnvironment env)\n {\n // \u5176\u4ed6\u4ee3\u7801\n }\n }\n}\n")),(0,r.kt)("h3",{id:"2442-addinjectbase-\u65b9\u6cd5"},"2.4.4.2 ",(0,r.kt)("inlineCode",{parentName:"h3"},"AddInjectBase()")," \u65b9\u6cd5"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"AddInjectBase()")," \u65b9\u6cd5\u662f\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Startup.cs")," \u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"ConfigureServices")," \u4e2d\u63d0\u4f9b\u6700\u57fa\u7840\u529f\u80fd\u7684\u6ce8\u518c\u3002"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"AddInjectBase()")," \u5305\u542b\u4ee5\u4e0b\u57fa\u7840\u529f\u80fd\u6ce8\u518c\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"services.AddDataValidation()\n .AddFriendlyException();\n")),(0,r.kt)("p",null,"\u4f7f\u7528\u540c\u4e0a ",(0,r.kt)("inlineCode",{parentName:"p"},"AddInject()"),"\u3002"),(0,r.kt)("h3",{id:"2445-addinjectwithunifyresult-\u65b9\u6cd5"},"2.4.4.5 ",(0,r.kt)("inlineCode",{parentName:"h3"},"AddInjectWithUnifyResult()")," \u65b9\u6cd5"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"AddInjectWithUnifyResult()")," \u65b9\u6cd5\u5b9e\u9645\u4e0a\u7b49\u540c\u4e8e\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"services.AddInject([swaggerGen])\n .AddUnifyResult();\n")),(0,r.kt)("p",null,"\u4f7f\u7528\u540c\u4e0a ",(0,r.kt)("inlineCode",{parentName:"p"},"AddInject()"),"\u3002"),(0,r.kt)("div",{className:"admonition admonition-warning alert alert--danger"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"}))),"\u7279\u522b\u6ce8\u610f")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u6240\u6709 ",(0,r.kt)("inlineCode",{parentName:"p"},".AddInject****()")," \u65b9\u6cd5\u4e0d\u80fd\u540c\u65f6\u6ce8\u518c\uff0c\u53ea\u80fd\u53d6\u5176\u4e00\u3002"))),(0,r.kt)("h2",{id:"245-startupconfigure-\u4f7f\u7528"},"2.4.5 ",(0,r.kt)("inlineCode",{parentName:"h2"},"Startup.Configure")," \u4f7f\u7528"),(0,r.kt)("h3",{id:"2451-useinject-\u65b9\u6cd5"},"2.4.5.1 ",(0,r.kt)("inlineCode",{parentName:"h3"},"UseInject()")," \u65b9\u6cd5"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"UseInject()")," \u65b9\u6cd5\u662f\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Startup.cs")," \u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"Configure")," \u4e2d\u63d0\u4f9b\u6700\u57fa\u7840\u529f\u80fd\u7684\u6ce8\u518c\u3002"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"UseInject()")," \u5305\u542b\u4ee5\u4e0b\u57fa\u7840\u529f\u80fd\u6ce8\u518c\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"app.UseSpecificationDocuments();\n")),(0,r.kt)("p",null,"\u4f7f\u7528\u5982\u4e0b\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{3,5,12}","{3,5,12}":!0},"namespace Furion.Web.Entry\n{\n public class Startup\n {\n public void ConfigureServices(IServiceCollection services)\n {\n // \u5176\u4ed6\u4ee3\u7801\n }\n\n public void Configure(IApplicationBuilder app, IWebHostEnvironment env)\n {\n app.UseInject(); // \u5305\u542b\u6700\u5c0f Swagger \u6ce8\u518c\n }\n }\n}\n")),(0,r.kt)("h3",{id:"2451-useinjectbase-\u65b9\u6cd5"},"2.4.5.1 ",(0,r.kt)("inlineCode",{parentName:"h3"},"UseInjectBase()")," \u65b9\u6cd5"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"UseInjectBase()")," \u65b9\u6cd5\u662f\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Startup.cs")," \u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"Configure")," \u4e2d\u63d0\u4f9b\u6700\u57fa\u7840\u529f\u80fd\u7684\u6ce8\u518c\u3002"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"UseInjectBase()")," \u5b9e\u9645\u4e0a\u662f\u4e2a\u7a7a\u65b9\u6cd5\uff0c\u4e3a\u4e86\u89c4\u8303\u5316\u4ee3\u7801\u7279\u610f\u5efa\u7acb\u7684\u3002"),(0,r.kt)("p",null,"\u4f7f\u7528\u540c\u4e0a ",(0,r.kt)("inlineCode",{parentName:"p"},"UseInject()"),"\u3002"),(0,r.kt)("h2",{id:"246-\u53cd\u9988\u4e0e\u5efa\u8bae"},"2.4.6 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,r.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/0f2c6659.a19697da.js b/handbook/build/assets/js/0f2c6659.a19697da.js deleted file mode 100644 index 15691ab43df..00000000000 --- a/handbook/build/assets/js/0f2c6659.a19697da.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[8132],{3905:function(n,e,t){t.d(e,{Zo:function(){return u},kt:function(){return d}});var i=t(7294);function a(n,e,t){return e in n?Object.defineProperty(n,e,{value:t,enumerable:!0,configurable:!0,writable:!0}):n[e]=t,n}function o(n,e){var t=Object.keys(n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(n);e&&(i=i.filter((function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),t.push.apply(t,i)}return t}function p(n){for(var e=1;e=0||(a[t]=n[t]);return a}(n,e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(n);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(n,t)&&(a[t]=n[t])}return a}var s=i.createContext({}),l=function(n){var e=i.useContext(s),t=e;return n&&(t="function"==typeof n?n(e):p(p({},e),n)),t},u=function(n){var e=l(n.components);return i.createElement(s.Provider,{value:e},n.children)},m={inlineCode:"code",wrapper:function(n){var e=n.children;return i.createElement(i.Fragment,{},e)}},c=i.forwardRef((function(n,e){var t=n.components,a=n.mdxType,o=n.originalType,s=n.parentName,u=r(n,["components","mdxType","originalType","parentName"]),c=l(t),d=a,g=c["".concat(s,".").concat(d)]||c[d]||m[d]||o;return t?i.createElement(g,p(p({ref:e},u),{},{components:t})):i.createElement(g,p({ref:e},u))}));function d(n,e){var t=arguments,a=e&&e.mdxType;if("string"==typeof n||a){var o=t.length,p=new Array(o);p[0]=c;var r={};for(var s in e)hasOwnProperty.call(e,s)&&(r[s]=e[s]);r.originalType=n,r.mdxType="string"==typeof n?n:a,p[1]=r;for(var l=2;l=0&&o<=l&&a<=r&&i>=0)||(e.scrollIntoView({block:"center",behavior:"smooth"}),e.classList.add(s),setTimeout((function(){return e.classList.remove(s)}),2e3))}),150))},A=function(n){var e,t;switch(n.keyCode){case u:var i=C.indexOf(n.target)+1;t=C[i]||C[0];break;case l:var a=C.indexOf(n.target)-1;t=C[a]||C[C.length-1]}null==(e=t)||e.focus()};return i.createElement("div",{className:"tabs-container"},i.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,p.Z)("tabs",{"tabs--block":t},d)},m.map((function(n){var e=n.value,t=n.label;return i.createElement("li",{role:"tab",tabIndex:v===e?0:-1,"aria-selected":v===e,className:(0,p.Z)("tabs__item",r,{"tabs__item--active":v===e}),key:e,ref:function(n){return C.push(n)},onKeyDown:A,onFocus:I,onClick:I},t)}))),e?(0,i.cloneElement)(O.filter((function(n){return n.props.value===v}))[0],{className:"margin-vert--md"}):i.createElement("div",{className:"margin-vert--md"},O.map((function(n,e){return(0,i.cloneElement)(n,{key:e,hidden:n.props.value!==v})}))))}},9443:function(n,e,t){var i=(0,t(7294).createContext)(void 0);e.Z=i},3276:function(n,e,t){t.r(e),t.d(e,{frontMatter:function(){return l},contentTitle:function(){return u},metadata:function(){return m},toc:function(){return c},default:function(){return g}});var i=t(7462),a=t(3366),o=(t(7294),t(3905)),p=(t(4996),t(5064)),r=t(8215),s=["components"],l={id:"options",title:"4.2 \u9009\u9879",sidebar_label:"4.2 \u9009\u9879"},u=void 0,m={unversionedId:"options",id:"options",isDocsHomePage:!1,title:"4.2 \u9009\u9879",description:"4.2.1 \u4ec0\u4e48\u662f\u9009\u9879",source:"@site/docs/options.mdx",sourceDirName:".",slug:"/options",permalink:"/furion/docs/options",editUrl:"https://gitee.com/dotnetchina/Furion/tree/master/handbook/docs/options.mdx",version:"current",lastUpdatedBy:"\u975e\u51e1\u4eba\u751f",lastUpdatedAt:1628757426,formattedLastUpdatedAt:"8/12/2021",frontMatter:{id:"options",title:"4.2 \u9009\u9879",sidebar_label:"4.2 \u9009\u9879"},sidebar:"docs",previous:{title:"4.1 \u914d\u7f6e",permalink:"/furion/docs/configuration"},next:{title:"5. \u52a8\u6001 WebAPI",permalink:"/furion/docs/dynamic-api-controller"}},c=[{value:"4.2.1 \u4ec0\u4e48\u662f\u9009\u9879",id:"421-\u4ec0\u4e48\u662f\u9009\u9879",children:[]},{value:"4.2.2 \u4e0e\u914d\u7f6e\u7684\u533a\u522b",id:"422-\u4e0e\u914d\u7f6e\u7684\u533a\u522b",children:[]},{value:"4.2.3 \u9009\u9879\u7684\u4f7f\u7528",id:"423-\u9009\u9879\u7684\u4f7f\u7528",children:[{value:"4.2.3.1 \u914d\u7f6e appsettings.json \u4fe1\u606f",id:"4231-\u914d\u7f6e-appsettingsjson-\u4fe1\u606f",children:[]},{value:"4.2.3.2 \u521b\u5efa AppInfoOptions \u5f3a\u7c7b\u578b\u7c7b",id:"4232-\u521b\u5efa-appinfooptions-\u5f3a\u7c7b\u578b\u7c7b",children:[]},{value:"4.2.3.3 \u6ce8\u518c AppInfoOptions \u670d\u52a1",id:"4233-\u6ce8\u518c-appinfooptions-\u670d\u52a1",children:[]},{value:"4.2.3.4 \u8bfb\u53d6 AppInfoOptions \u4fe1\u606f",id:"4234-\u8bfb\u53d6-appinfooptions-\u4fe1\u606f",children:[]},{value:"4.2.3.5 \u5982\u4f55\u9009\u62e9\u8bfb\u53d6\u65b9\u5f0f",id:"4235-\u5982\u4f55\u9009\u62e9\u8bfb\u53d6\u65b9\u5f0f",children:[]}]},{value:"4.2.4 \u9009\u9879\u63a5\u53e3\u8bf4\u660e",id:"424-\u9009\u9879\u63a5\u53e3\u8bf4\u660e",children:[]},{value:"4.2.5 \u9009\u9879\u81ea\u5b9a\u4e49\u914d\u7f6e",id:"425-\u9009\u9879\u81ea\u5b9a\u4e49\u914d\u7f6e",children:[{value:"4.2.5.1 \u9009\u9879\u67e5\u627e\u952e\u6d41\u7a0b",id:"4251-\u9009\u9879\u67e5\u627e\u952e\u6d41\u7a0b",children:[]}]},{value:"4.2.6 [OptionsSettings] \u8bf4\u660e",id:"426-optionssettings-\u8bf4\u660e",children:[]},{value:"4.2.7 \u9009\u9879\u9a8c\u8bc1",id:"427-\u9009\u9879\u9a8c\u8bc1",children:[]},{value:"4.2.8 \u9009\u9879\u540e\u671f\u914d\u7f6e",id:"428-\u9009\u9879\u540e\u671f\u914d\u7f6e",children:[]},{value:"4.2.9 \u9009\u9879\u66f4\u6539\u901a\u77e5\uff08\u70ed\u66f4\u65b0\uff09",id:"429-\u9009\u9879\u66f4\u6539\u901a\u77e5\uff08\u70ed\u66f4\u65b0\uff09",children:[]},{value:"4.2.10 \u9009\u9879\u7684\u4f18\u7f3a\u70b9",id:"4210-\u9009\u9879\u7684\u4f18\u7f3a\u70b9",children:[]},{value:"4.2.11 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"4211-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],d={toc:c};function g(n){var e=n.components,t=(0,a.Z)(n,s);return(0,o.kt)("wrapper",(0,i.Z)({},d,t,{components:e,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"421-\u4ec0\u4e48\u662f\u9009\u9879"},"4.2.1 \u4ec0\u4e48\u662f\u9009\u9879"),(0,o.kt)("p",null,"\u9009\u9879\u662f ",(0,o.kt)("inlineCode",{parentName:"p"},"ASP.NET Core")," \u63a8\u8350\u7684\u52a8\u6001\u8bfb\u53d6\u914d\u7f6e\u7684\u65b9\u5f0f\uff0c\u8fd9\u79cd\u65b9\u5f0f\u5c06\u914d\u7f6e\u6587\u4ef6\u6570\u636e\u7528\u4e00\u4e2a",(0,o.kt)("strong",{parentName:"p"},"\u5f3a\u7c7b\u578b"),"\u6765\u6258\u7ba1\uff0c\u80fd\u591f\u5b9e\u73b0\u914d\u7f6e\u9a8c\u8bc1\u3001\u9ed8\u8ba4\u503c\u914d\u7f6e\u3001\u5b9e\u65f6\u8bfb\u53d6\u7b49\u529f\u80fd\u3002"),(0,o.kt)("h2",{id:"422-\u4e0e\u914d\u7f6e\u7684\u533a\u522b"},"4.2.2 \u4e0e\u914d\u7f6e\u7684\u533a\u522b"),(0,o.kt)("p",null,"\u9009\u9879\u5b9e\u9645\u4e0a\u4e5f\u662f\u914d\u7f6e\uff0c\u4f46\u5728\u540e\u8005\u7684\u57fa\u7840\u4e0a\u6dfb\u52a0\u4e86\u914d\u7f6e\u9a8c\u8bc1\u3001\u9ed8\u8ba4\u503c/\u540e\u671f\u914d\u7f6e\u8bbe\u5b9a\u53ca\u63d0\u4f9b\u4e86\u591a\u79cd\u63a5\u53e3\u8bfb\u53d6\u914d\u7f6e\u4fe1\u606f\uff0c\u540c\u65f6\u8fd8\u652f\u6301\u4f9b\u914d\u7f6e\u66f4\u6539\u901a\u77e5\u7b49\u5f3a\u5927\u7075\u6d3b\u529f\u80fd\u3002"),(0,o.kt)("p",null,"\u6240\u4ee5\uff0c\u9664\u4e86\u4e00\u6b21\u6027\u8bfb\u53d6\u4f7f\u7528\u7684\u914d\u7f6e\u4ee5\u5916\uff0c\u90fd\u5e94\u8be5\u9009\u7528 ",(0,o.kt)("strong",{parentName:"p"},"\u9009\u9879")," \u66ff\u6362 ",(0,o.kt)("strong",{parentName:"p"},"\u914d\u7f6e"),"\u3002"),(0,o.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u77e5\u8bc6\u5bfc\u822a")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u6709\u5173\u914d\u7f6e\u8bf4\u660e\u53ef\u67e5\u770b\u300a",(0,o.kt)("a",{parentName:"p",href:"/furion/docs/configuration"},"4.1 \u914d\u7f6e"),"\u300b \u7ae0\u8282\u3002"))),(0,o.kt)("h2",{id:"423-\u9009\u9879\u7684\u4f7f\u7528"},"4.2.3 \u9009\u9879\u7684\u4f7f\u7528"),(0,o.kt)("p",null,"\u5047\u8bbe\u6211\u4eec\u9700\u8981\u5728\u7cfb\u7edf\u8fd0\u884c\u65f6\u83b7\u53d6",(0,o.kt)("strong",{parentName:"p"},"\u7cfb\u7edf\u540d\u79f0\u3001\u7248\u672c\u53f7\u53ca\u7248\u6743\u4fe1\u606f"),"\uff0c\u8fd9\u4e9b\u4fe1\u606f\u53ef\u80fd\u968f\u65f6\u53d8\u5316\u800c\u4e14\u9700\u8981\u5728\u591a\u4e2a\u5730\u65b9\u4f7f\u7528\u3002\u8fd9\u65f6\u5c31\u9700\u8981\u5c06\u8fd9\u4e9b\u4fe1\u606f\u914d\u7f6e\u8d77\u6765\u3002\u5177\u4f53\u6b65\u9aa4\u5982\u4e0b\uff1a"),(0,o.kt)("h3",{id:"4231-\u914d\u7f6e-appsettingsjson-\u4fe1\u606f"},"4.2.3.1 \u914d\u7f6e ",(0,o.kt)("inlineCode",{parentName:"h3"},"appsettings.json")," \u4fe1\u606f"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-json",metastring:"{2-6}","{2-6}":!0},'{\n "AppInfo": {\n "Name": "Furion",\n "Version": "1.0.0",\n "Company": "Baiqian"\n }\n}\n')),(0,o.kt)("h3",{id:"4232-\u521b\u5efa-appinfooptions-\u5f3a\u7c7b\u578b\u7c7b"},"4.2.3.2 \u521b\u5efa ",(0,o.kt)("inlineCode",{parentName:"h3"},"AppInfoOptions")," \u5f3a\u7c7b\u578b\u7c7b"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,5}","{1,5}":!0},"using Furion.ConfigurableOptions;\n\nnamespace Furion.Application\n{\n public class AppInfoOptions : IConfigurableOptions\n {\n public string Name { get; set; }\n public string Version { get; set; }\n public string Company { get; set; }\n }\n}\n")),(0,o.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u6e29\u99a8\u63d0\u793a")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u5efa\u8bae\u6240\u6709\u9009\u9879\u7c7b\u90fd\u5e94\u8be5\u4ee5 ",(0,o.kt)("strong",{parentName:"p"},(0,o.kt)("inlineCode",{parentName:"strong"},"Options"))," \u547d\u540d\u7ed3\u5c3e\u3002"),(0,o.kt)("p",{parentName:"div"},"\u53e6\u5916\uff0c",(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u4e86\u975e\u5e38\u7075\u6d3b\u7684\u6ce8\u518c\u9009\u9879\u670d\u52a1\u7684\u65b9\u6cd5\uff0c\u53ea\u9700\u8981\u7ee7\u627f ",(0,o.kt)("strong",{parentName:"p"},(0,o.kt)("inlineCode",{parentName:"strong"},"IConfigurableOptions"))," \u63a5\u53e3\u5373\u53ef\uff0c\u8be5\u63a5\u53e3\u4f4d\u4e8e ",(0,o.kt)("strong",{parentName:"p"},(0,o.kt)("inlineCode",{parentName:"strong"},"Furion.ConfigurableOptions"))," \u547d\u540d\u7a7a\u95f4\u4e0b\u3002"))),(0,o.kt)("h3",{id:"4233-\u6ce8\u518c-appinfooptions-\u670d\u52a1"},"4.2.3.3 \u6ce8\u518c ",(0,o.kt)("inlineCode",{parentName:"h3"},"AppInfoOptions")," \u670d\u52a1"),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"\u9009\u9879\u4e0d\u540c\u4e8e\u914d\u7f6e\uff0c\u9700\u5728\u5e94\u7528\u542f\u52a8\u65f6\u6ce8\u518c")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:'{12} title="Furion.Web.Core\\FurWebCoreStartup.cs"',"{12}":!0,title:'"Furion.Web.Core\\FurWebCoreStartup.cs"'},"using Microsoft.AspNetCore.Builder;\nusing Microsoft.AspNetCore.Hosting;\nusing Microsoft.Extensions.DependencyInjection;\n\nnamespace Furion.Web.Core\n{\n [AppStartup(800)]\n public sealed class FurWebCoreStartup : AppStartup\n {\n public void ConfigureServices(IServiceCollection services)\n {\n services.AddConfigurableOptions();\n }\n }\n}\n")),(0,o.kt)("h3",{id:"4234-\u8bfb\u53d6-appinfooptions-\u4fe1\u606f"},"4.2.3.4 \u8bfb\u53d6 ",(0,o.kt)("inlineCode",{parentName:"h3"},"AppInfoOptions")," \u4fe1\u606f"),(0,o.kt)("p",null,"\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\uff0c\u63d0\u4f9b\u4e86\u591a\u79cd\u8bfb\u53d6\u65b9\u5f0f\uff1a"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"\u901a\u8fc7 ",(0,o.kt)("inlineCode",{parentName:"li"},"App.GetOptions(path)")," \u8bfb\u53d6\uff08",(0,o.kt)("strong",{parentName:"li"},"\u4e0d\u63a8\u8350"),"\uff09"),(0,o.kt)("li",{parentName:"ul"},"\u901a\u8fc7\u4f9d\u8d56\u6ce8\u5165\u4ee5\u4e0b\u5b9e\u4f8b\u8bfb\u53d6\uff1a",(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"IOptions")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"IOptionsSnapshot")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"IOptionsMonitor")))),(0,o.kt)("li",{parentName:"ul"},"\u901a\u8fc7 ",(0,o.kt)("inlineCode",{parentName:"li"},"App")," \u9759\u6001\u7c7b\u63d0\u4f9b\u7684\u9759\u6001\u65b9\u6cd5\u83b7\u53d6\uff1a",(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"App.GetOptions()")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"App.GetOptionsMonitor()")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"App.GetOptionsSnapshot()"))))),(0,o.kt)(p.Z,{defaultValue:"App.GetOptions(path)",values:[{label:"App.GetOptions(path)",value:"App.GetOptions(path)"},{label:"\u4f9d\u8d56\u6ce8\u5165\u65b9\u5f0f",value:"\u4f9d\u8d56\u6ce8\u5165\u65b9\u5f0f"},{label:"App.GetOptions()",value:"App.GetOptions()"}],mdxType:"Tabs"},(0,o.kt)(r.Z,{value:"App.GetOptions(path)",mdxType:"TabItem"},(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{13-16}","{13-16}":!0},'using Furion.Application;\nusing Microsoft.AspNetCore.Mvc;\n\nnamespace Furion.Web.Entry.Controllers\n{\n [Route("api/[controller]")]\n public class DefaultController : ControllerBase\n {\n [HttpGet]\n public string Get()\n {\n // \u4e0d\u63a8\u8350\u91c7\u7528\u6b64\u65b9\u5f0f\u8bfb\u53d6\uff0c\u8be5\u65b9\u5f0f\u4ec5\u5728 ConfigureServices \u542f\u52a8\u65f6\u4f7f\u7528\n var appInfo = App.GetConfig("AppInfo", true);\n return $@"\u540d\u79f0\uff1a{appInfo.Name}\uff0c\n \u7248\u672c\uff1a{appInfo.Version}\uff0c\n \u516c\u53f8\uff1a{appInfo.Company}";\n }\n }\n}\n'))),(0,o.kt)(r.Z,{value:"\u4f9d\u8d56\u6ce8\u5165\u65b9\u5f0f",mdxType:"TabItem"},(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{3,15-17,27-29,31-33,35-37}","{3,15-17,27-29,31-33,35-37}":!0},'using Furion.Application;\nusing Microsoft.AspNetCore.Mvc;\nusing Microsoft.Extensions.Options;\n\nnamespace Furion.Web.Entry.Controllers\n{\n [Route("api/[controller]")]\n public class DefaultController : ControllerBase\n {\n private readonly AppInfoOptions options1;\n private readonly AppInfoOptions options2;\n private readonly AppInfoOptions options3;\n\n public DefaultController(\n IOptions options\n , IOptionsSnapshot optionsSnapshot\n , IOptionsMonitor optionsMonitor)\n {\n options1 = options.Value;\n options2 = optionsSnapshot.Value;\n options3 = optionsMonitor.CurrentValue;\n }\n\n [HttpGet]\n public string Get()\n {\n var info1 = $@"\u540d\u79f0\uff1a{options1.Name}\uff0c\n \u7248\u672c\uff1a{options1.Version}\uff0c\n \u516c\u53f8\uff1a{options1.Company}";\n\n var info2 = $@"\u540d\u79f0\uff1a{options2.Name}\uff0c\n \u7248\u672c\uff1a{options2.Version}\uff0c\n \u516c\u53f8\uff1a{options2.Company}";\n\n var info3 = $@"\u540d\u79f0\uff1a{options3.Name}\uff0c\n \u7248\u672c\uff1a{options3.Version}\uff0c\n \u516c\u53f8\uff1a{options3.Company}";\n\n return $"{info1}-{info2}-{info3}";\n }\n }\n}\n'))),(0,o.kt)(r.Z,{value:"App.GetOptions()",mdxType:"TabItem"},(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{12-15,17-20,22-25}","{12-15,17-20,22-25}":!0},'using Furion.Application;\nusing Microsoft.AspNetCore.Mvc;\n\nnamespace Furion.Web.Entry.Controllers\n{\n [Route("api/[controller]")]\n public class DefaultController : ControllerBase\n {\n [HttpGet]\n public string Get()\n {\n var options1 = App.GetOptions();\n var info1 = $@"\u540d\u79f0\uff1a{options1.Name}\uff0c\n \u7248\u672c\uff1a{options1.Version}\uff0c\n \u516c\u53f8\uff1a{options1.Company}";\n\n var options2 = App.GetOptionsSnapshot();\n var info2 = $@"\u540d\u79f0\uff1a{options2.Name}\uff0c\n \u7248\u672c\uff1a{options2.Version}\uff0c\n \u516c\u53f8\uff1a{options2.Company}";\n\n var options3 = App.GetOptionsMonitor();\n var info3 = $@"\u540d\u79f0\uff1a{options3.Name}\uff0c\n \u7248\u672c\uff1a{options3.Version}\uff0c\n \u516c\u53f8\uff1a{options3.Company}";\n\n return $"{info1}-{info2}-{info3}";\n }\n }\n}\n')))),(0,o.kt)("h3",{id:"4235-\u5982\u4f55\u9009\u62e9\u8bfb\u53d6\u65b9\u5f0f"},"4.2.3.5 \u5982\u4f55\u9009\u62e9\u8bfb\u53d6\u65b9\u5f0f"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"\u5982\u679c\u9009\u9879\u9700\u8981\u5728\u591a\u4e2a\u5730\u65b9\u4f7f\u7528\uff0c\u5219\u65e0\u8bba\u4efb\u4f55\u65f6\u5019\u90fd\u4e0d\u63a8\u8350\u4f7f\u7528 ",(0,o.kt)("inlineCode",{parentName:"li"},"App.GetOptions(path)")),(0,o.kt)("li",{parentName:"ul"},"\u5728\u53ef\u4f9d\u8d56\u6ce8\u5165\u7c7b\u4e2d\uff0c\u4f9d\u8d56\u6ce8\u5165 ",(0,o.kt)("inlineCode",{parentName:"li"},"IOptions[Snapshot|Monitor]")," \u8bfb\u53d6"),(0,o.kt)("li",{parentName:"ul"},"\u5728\u9759\u6001\u7c7b/\u975e\u4f9d\u8d56\u6ce8\u5165\u7c7b\u4e2d\uff0c\u9009\u62e9 ",(0,o.kt)("inlineCode",{parentName:"li"},"App.GetOptions[Snapshot|Monitor]()")," \u8bfb\u53d6")),(0,o.kt)("h2",{id:"424-\u9009\u9879\u63a5\u53e3\u8bf4\u660e"},"4.2.4 \u9009\u9879\u63a5\u53e3\u8bf4\u660e"),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"ASP.NET Core")," \u5e94\u7528\u63d0\u4f9b\u4e86\u591a\u79cd\u8bfb\u53d6\u9009\u9879\u7684\u63a5\u53e3\uff1a"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"IOptions"),"\uff1a",(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"\u4e0d\u652f\u6301\uff1a",(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"\u5728\u5e94\u7528\u542f\u52a8\u540e\u8bfb\u53d6\u914d\u7f6e\u6570\u636e"),(0,o.kt)("li",{parentName:"ul"},"\u547d\u540d\u9009\u9879"))),(0,o.kt)("li",{parentName:"ul"},"\u6ce8\u518c\u4e3a\u5355\u4e00\u5b9e\u4f8b\u4e14\u53ef\u4ee5\u6ce8\u5165\u5230\u4efb\u4f55\u670d\u52a1\u751f\u5b58\u671f"))),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"IOptionsSnapshot"),"\uff1a",(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"\u5728\u6bcf\u6b21\u8bf7\u6c42\u65f6\u5e94\u91cd\u65b0\u8ba1\u7b97\u9009\u9879\u7684\u65b9\u6848\u4e2d\u6709\u7528"),(0,o.kt)("li",{parentName:"ul"},"\u6ce8\u518c\u4e3a\u8303\u56f4\u5185\uff0c\u56e0\u6b64\u65e0\u6cd5\u6ce8\u5165\u5230\u5355\u4e00\u5b9e\u4f8b\u670d\u52a1"),(0,o.kt)("li",{parentName:"ul"},"\u652f\u6301\u547d\u540d\u9009\u9879"))),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"IOptionsMonitor"),"\uff1a",(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"\u7528\u4e8e\u68c0\u7d22\u9009\u9879\u5e76\u7ba1\u7406 TOptions \u5b9e\u4f8b\u7684\u9009\u9879\u901a\u77e5\u3002"),(0,o.kt)("li",{parentName:"ul"},"\u6ce8\u518c\u4e3a\u5355\u4e00\u5b9e\u4f8b\u4e14\u53ef\u4ee5\u6ce8\u5165\u5230\u4efb\u4f55\u670d\u52a1\u751f\u5b58\u671f\u3002"),(0,o.kt)("li",{parentName:"ul"},"\u652f\u6301\uff1a",(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"\u66f4\u6539\u901a\u77e5"),(0,o.kt)("li",{parentName:"ul"},"\u547d\u540d\u9009\u9879"),(0,o.kt)("li",{parentName:"ul"},"\u53ef\u91cd\u8f7d\u914d\u7f6e"),(0,o.kt)("li",{parentName:"ul"},"\u9009\u62e9\u6027\u9009\u9879\u5931\u6548 ",(0,o.kt)("inlineCode",{parentName:"li"},"(IOptionsMonitorCache)"))))))),(0,o.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e86\u89e3\u66f4\u591a")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u60f3\u4e86\u89e3\u66f4\u591a ",(0,o.kt)("inlineCode",{parentName:"p"},"\u9009\u9879\u63a5\u53e3")," \u77e5\u8bc6\u53ef\u67e5\u9605 ",(0,o.kt)("a",{parentName:"p",href:"https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/configuration/options?view=aspnetcore-5.0#options-interfaces"},"ASP.NET Core - \u9009\u9879 - \u9009\u9879\u63a5\u53e3")," \u5c0f\u8282\u3002"))),(0,o.kt)("h2",{id:"425-\u9009\u9879\u81ea\u5b9a\u4e49\u914d\u7f6e"},"4.2.5 \u9009\u9879\u81ea\u5b9a\u4e49\u914d\u7f6e"),(0,o.kt)("p",null,"\u6211\u4eec\u77e5\u9053\uff0c\u9009\u9879\u5b9e\u9645\u4e0a\u9700\u8981\u548c\u914d\u7f6e\u6587\u4ef6\u7279\u5b9a\u952e\u503c\u6302\u94a9\uff0c\u90a3 ",(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u662f\u5982\u4f55\u51c6\u786e\u7684\u627e\u5230\u914d\u7f6e\u6587\u4ef6\u4e2d\u7684\u952e\u503c\u7684\u5462\uff1f"),(0,o.kt)("h3",{id:"4251-\u9009\u9879\u67e5\u627e\u952e\u6d41\u7a0b"},"4.2.5.1 \u9009\u9879\u67e5\u627e\u952e\u6d41\u7a0b"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"\u6ca1\u6709\u8d34 ",(0,o.kt)("inlineCode",{parentName:"strong"},"[OptionsSettings]")," \u7279\u6027"),(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"\u4ee5 ",(0,o.kt)("inlineCode",{parentName:"li"},"Options")," \u7ed3\u5c3e\uff0c\u5219\u53bb\u9664 ",(0,o.kt)("inlineCode",{parentName:"li"},"Options")," \u5b57\u7b26\u4e32"),(0,o.kt)("li",{parentName:"ul"},"\u5426\u5219\u8fd4\u56de ",(0,o.kt)("inlineCode",{parentName:"li"},"\u7c7b\u540d\u79f0")))),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"\u8d34\u4e86 ",(0,o.kt)("inlineCode",{parentName:"strong"},"[OptionsSettings]")," \u7279\u6027"),(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"\u5982\u679c\u914d\u7f6e\u4e86 ",(0,o.kt)("inlineCode",{parentName:"li"},"Path")," \u5c5e\u6027\uff0c\u5219\u8fd4\u56de ",(0,o.kt)("inlineCode",{parentName:"li"},"Path")," \u7684\u503c"),(0,o.kt)("li",{parentName:"ul"},"\u5426\u5219\u8fd4\u56de ",(0,o.kt)("inlineCode",{parentName:"li"},"\u7c7b\u540d\u79f0"))))),(0,o.kt)(p.Z,{defaultValue:"non-optionsettings",values:[{label:"\u65e0[OptionsSettings]",value:"non-optionsettings"},{label:"\u6709[OptionsSettings]",value:"has-optionsettings"}],mdxType:"Tabs"},(0,o.kt)(r.Z,{value:"non-optionsettings",mdxType:"TabItem"},(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"\u4ee5 ",(0,o.kt)("inlineCode",{parentName:"li"},"Options")," \u7ed3\u5c3e\uff0c\u5219\u952e\u540d\u4e3a\uff1a",(0,o.kt)("inlineCode",{parentName:"li"},"AppInfo"))),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1}","{1}":!0},"public class AppInfoOptions : IConfigurableOptions\n{\n public string Name { get; set; }\n public string Version { get; set; }\n public string Company { get; set; }\n}\n")),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"\u4e0d\u4ee5 ",(0,o.kt)("inlineCode",{parentName:"li"},"Options")," \u7ed3\u5c3e\uff0c\u5219\u952e\u540d\u4e3a\uff1a",(0,o.kt)("inlineCode",{parentName:"li"},"AppInfoSettings"))),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1}","{1}":!0},"public class AppInfoSettings : IConfigurableOptions\n{\n public string Name { get; set; }\n public string Version { get; set; }\n public string Company { get; set; }\n}\n"))),(0,o.kt)(r.Z,{value:"has-optionsettings",mdxType:"TabItem"},(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"\u914d\u7f6e\u4e86 ",(0,o.kt)("inlineCode",{parentName:"li"},"Path")," \u5c5e\u6027\uff0c\u5219\u952e\u540d\u4e3a\uff1a",(0,o.kt)("inlineCode",{parentName:"li"},"AppSettings:AppInfo"))),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1}","{1}":!0},'[OptionsSettings("AppSettings:AppInfo")]\npublic class AppInfoOptions : IConfigurableOptions\n{\n public string Name { get; set; }\n public string Version { get; set; }\n public string Company { get; set; }\n}\n')),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"\u6ca1\u6709\u914d\u7f6e ",(0,o.kt)("inlineCode",{parentName:"li"},"Path")," \u5c5e\u6027\uff0c\uff0c\u5219\u952e\u540d\u4e3a\uff1a",(0,o.kt)("inlineCode",{parentName:"li"},"AppInfoSettings"))),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1}","{1}":!0},"[OptionsSettings]\npublic class AppInfoSettings : IConfigurableOptions\n{\n public string Name { get; set; }\n public string Version { get; set; }\n public string Company { get; set; }\n}\n")))),(0,o.kt)("h2",{id:"426-optionssettings-\u8bf4\u660e"},"4.2.6 ",(0,o.kt)("inlineCode",{parentName:"h2"},"[OptionsSettings]")," \u8bf4\u660e"),(0,o.kt)("p",null,"\u9009\u9879\u7c7b\u53ef\u4ee5\u901a\u8fc7 ",(0,o.kt)("inlineCode",{parentName:"p"},"[OptionsSettings]")," \u6765\u914d\u7f6e\u67e5\u627e\u8def\u5f84\u503c\u3002"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"Path"),"\uff1a\u5bf9\u5e94\u914d\u7f6e\u6587\u4ef6\u4e2d\u7684\u952e\uff0c\u652f\u6301 ",(0,o.kt)("strong",{parentName:"li"},"\u5206\u5c42\u952e")," \u5b57\u7b26\u4e32\uff0c\u53c2\u89c1\uff1a\u300a",(0,o.kt)("a",{parentName:"li",href:"configuration/#413-%E8%B7%AF%E5%BE%84%E7%AC%A6-%E6%9F%A5%E6%89%BE%E8%8A%82%E7%82%B9"},"4.1 \u914d\u7f6e - 4.1.3 \u8def\u5f84\u7b26 \u67e5\u627e\u8282\u70b9"),"\u300b"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"PostConfigureAll"),"\uff1a\u9009\u9879\u540e\u671f\u914d\u7f6e\uff0c\u9ed8\u8ba4 ",(0,o.kt)("inlineCode",{parentName:"li"},"false"),"\u3002",(0,o.kt)("a",{parentName:"li",href:"https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/configuration/options?view=aspnetcore-3.1#options-post-configuration"},"ASP.NET Core - \u9009\u9879 - \u9009\u9879\u540e\u671f\u914d\u7f6e"))),(0,o.kt)("h2",{id:"427-\u9009\u9879\u9a8c\u8bc1"},"4.2.7 \u9009\u9879\u9a8c\u8bc1"),(0,o.kt)("p",null,"\u9009\u9879\u652f\u6301\u9a8c\u8bc1\u914d\u7f6e\u6709\u6548\u6027\uff0c\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\uff0c\u901a\u8fc7 ",(0,o.kt)("inlineCode",{parentName:"p"},"services.AddConfigurableOptions()")," \u6ce8\u518c\u9009\u9879\u9ed8\u8ba4\u542f\u7528\u4e86\u9a8c\u8bc1\u652f\u6301\u3002"),(0,o.kt)("p",null,"\u5305\u62ec\uff1a"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"\u7279\u6027\u65b9\u5f0f ",(0,o.kt)("inlineCode",{parentName:"li"},"DataAnnotations")),(0,o.kt)("li",{parentName:"ul"},"\u81ea\u5b9a\u4e49\u590d\u6742\u9a8c\u8bc1 ",(0,o.kt)("inlineCode",{parentName:"li"},"IValidateOptions"))),(0,o.kt)(p.Z,{defaultValue:"texin",values:[{label:"\u7279\u6027\u65b9\u5f0f",value:"texin"},{label:"\u590d\u6742\u9a8c\u8bc1",value:"fuza"}],mdxType:"Tabs"},(0,o.kt)(r.Z,{value:"texin",mdxType:"TabItem"},(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{2,8,10,12}","{2,8,10,12}":!0},'using Furion.ConfigurableOptions;\nusing System.ComponentModel.DataAnnotations;\n\nnamespace Furion.Application\n{\n public class AppInfoOptions : IConfigurableOptions\n {\n [Required(ErrorMessage = "\u540d\u79f0\u4e0d\u80fd\u4e3a\u7a7a")]\n public string Name { get; set; }\n [Required, RegularExpression(@"^[0-9][0-9\\.]+[0-9]$", ErrorMessage = "\u4e0d\u662f\u6709\u6548\u7684\u7248\u672c\u53f7")]\n public string Version { get; set; }\n [Required, MaxLength(100)]\n public string Company { get; set; }\n }\n}\n'))),(0,o.kt)(r.Z,{value:"fuza",mdxType:"TabItem"},(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"\u81ea\u5b9a\u4e49\u9a8c\u8bc1\u7c7b ",(0,o.kt)("inlineCode",{parentName:"li"},"AppInfoValidation")," \u5e76\u7ee7\u627f ",(0,o.kt)("inlineCode",{parentName:"li"},"IValidateOptions")," \u63a5\u53e3\uff0c\u540c\u65f6\u5b9e\u73b0 ",(0,o.kt)("inlineCode",{parentName:"li"},"Validate")," \u65b9\u6cd5\u3002")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,6,8,12,15}","{1,6,8,12,15}":!0},'using Microsoft.Extensions.Options;\nusing System.Text.RegularExpressions;\n\nnamespace Furion.Application\n{\n public class AppInfoValidation : IValidateOptions\n {\n public ValidateOptionsResult Validate(string name, AppInfoOptions options)\n {\n if (!Regex.IsMatch(options.Version, @"^[0-9][0-9\\.]+[0-9]$"))\n {\n return ValidateOptionsResult.Fail("\u4e0d\u662f\u6709\u6548\u7684\u7248\u672c\u53f7");\n }\n\n return ValidateOptionsResult.Success;\n }\n }\n}\n')),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"\u9009\u9879\u7c7b\u7ee7\u627f ",(0,o.kt)("inlineCode",{parentName:"li"},"IConfigurableOptions")," \u63a5\u53e3\uff0c\u5e76\u5b9e\u73b0\u8be5\u63a5\u53e3\u3002")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{6,16-18}","{6,16-18}":!0},'using Furion.ConfigurableOptions;\nusing System.ComponentModel.DataAnnotations;\n\nnamespace Furion.Application\n{\n public class AppInfoOptions : IConfigurableOptions\n {\n [Required(ErrorMessage = "\u540d\u79f0\u4e0d\u80fd\u4e3a\u7a7a")]\n public string Name { get; set; }\n [Required]\n public string Version { get; set; }\n [Required, MaxLength(100)]\n public string Company { get; set; }\n\n // \u9009\u9879\u540e\u671f\u914d\u7f6e\n public void PostConfigure(AppInfoOptions options, IConfiguration configuration)\n {\n }\n }\n}\n')),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"\u5b8c\u6574\u4ee3\u7801\u5982\u4e0b\uff1a")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{4,9,19,25,27,31,34}","{4,9,19,25,27,31,34}":!0},'using Furion.ConfigurableOptions;\nusing Microsoft.Extensions.Options;\nusing System.ComponentModel.DataAnnotations;\nusing System.Text.RegularExpressions;\n\nnamespace Furion.Application\n{\n // \u7ee7\u627f IConfigurableOptions \u63a5\u53e3\n public class AppInfoOptions : IConfigurableOptions\n {\n [Required(ErrorMessage = "\u540d\u79f0\u4e0d\u80fd\u4e3a\u7a7a")]\n public string Name { get; set; }\n [Required]\n public string Version { get; set; }\n [Required, MaxLength(100)]\n public string Company { get; set; }\n\n // \u9009\u9879\u540e\u671f\u914d\u7f6e\n public void PostConfigure(AppInfoOptions options)\n {\n }\n }\n\n // \u521b\u5efa\u81ea\u5b9a\u4e49\u9a8c\u8bc1\u7c7b\n public class AppInfoValidation : IValidateOptions\n {\n public ValidateOptionsResult Validate(string name, AppInfoOptions options)\n {\n if (!Regex.IsMatch(options.Version, @"^[0-9][0-9\\.]+[0-9]$"))\n {\n return ValidateOptionsResult.Fail("\u4e0d\u662f\u6709\u6548\u7684\u7248\u672c\u53f7");\n }\n\n return ValidateOptionsResult.Success;\n }\n }\n}\n')))),(0,o.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u7279\u522b\u8bf4\u660e")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},(0,o.kt)("strong",{parentName:"p"},(0,o.kt)("inlineCode",{parentName:"strong"},"IConfigurableOptions"))," \u7ee7\u627f\u81ea ",(0,o.kt)("strong",{parentName:"p"},(0,o.kt)("inlineCode",{parentName:"strong"},"IConfigurableOptions")),"\uff0c\u4e5f\u5c31\u662f\u81ea\u5b9a\u4e49\u590d\u6742\u9a8c\u8bc1\u9ed8\u8ba4\u5177\u6709 ",(0,o.kt)("strong",{parentName:"p"},(0,o.kt)("inlineCode",{parentName:"strong"},"PostConfigure(TOptions options)"))," \u9009\u9879\u540e\u671f\u914d\u7f6e\u65b9\u6cd5\u3002\u5173\u4e8e\u300a",(0,o.kt)("a",{parentName:"p",href:"#428-%E9%80%89%E9%A1%B9%E5%90%8E%E6%9C%9F%E9%85%8D%E7%BD%AE"},"4.2.8 \u9009\u9879\u540e\u671f\u914d\u7f6e"),"\u300b\u5c06\u5728\u4e0b\u4e00\u5c0f\u8282\u8bf4\u660e\u3002"))),(0,o.kt)("h2",{id:"428-\u9009\u9879\u540e\u671f\u914d\u7f6e"},"4.2.8 \u9009\u9879\u540e\u671f\u914d\u7f6e"),(0,o.kt)("p",null,"\u9009\u9879\u540e\u671f\u914d\u7f6e\u901a\u4fd7\u4e00\u70b9\u6765\u8bf4\uff0c\u53ef\u4ee5\u5728\u8fd0\u884c\u65f6\u89e3\u6790\u503c\u6216\u8bbe\u5b9a\u9ed8\u8ba4\u503c/\u540e\u671f\u914d\u7f6e\u7b49\u3002"),(0,o.kt)("p",null,"\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\uff0c\u914d\u7f6e\u9009\u9879\u540e\u671f\u914d\u7f6e\u5f88\u7b80\u5355\uff0c\u53ea\u9700\u8981\u7ee7\u627f ",(0,o.kt)("inlineCode",{parentName:"p"},"IConfigurableOptions")," \u63a5\u53e3\u5e76\u5b9e\u73b0 ",(0,o.kt)("inlineCode",{parentName:"p"},"PostConfigure(TOptions options)")," \u65b9\u6cd5\u3002"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{7,16-21}","{7,16-21}":!0},'using Furion.ConfigurableOptions;\nusing Microsoft.Extensions.Configuration;\nusing System.ComponentModel.DataAnnotations;\n\nnamespace Furion.Application\n{\n public class AppInfoOptions : IConfigurableOptions\n {\n [Required(ErrorMessage = "\u540d\u79f0\u4e0d\u80fd\u4e3a\u7a7a")]\n public string Name { get; set; }\n [Required]\n public string Version { get; set; }\n [Required, MaxLength(100)]\n public string Company { get; set; }\n\n public void PostConfigure(AppInfoOptions options, IConfiguration configuration)\n {\n options.Name ??= "Furion";\n options.Version ??= "1.0.0";\n options.Company ??= "Baiqian";\n }\n }\n}\n')),(0,o.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u7279\u522b\u8bf4\u660e")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},(0,o.kt)("strong",{parentName:"p"},(0,o.kt)("inlineCode",{parentName:"strong"},"IConfigurableOptions"))," \u7ee7\u627f\u81ea ",(0,o.kt)("strong",{parentName:"p"},(0,o.kt)("inlineCode",{parentName:"strong"},"IConfigurableOptions")),"\uff0c\u4e5f\u5c31\u662f\u81ea\u5b9a\u4e49\u590d\u6742\u9a8c\u8bc1\u9ed8\u8ba4\u5177\u6709 ",(0,o.kt)("strong",{parentName:"p"},(0,o.kt)("inlineCode",{parentName:"strong"},"PostConfigure(TOptions options, IConfiguration configuration)"))," \u9009\u9879\u540e\u671f\u914d\u7f6e\u65b9\u6cd5\u3002"))),(0,o.kt)("h2",{id:"429-\u9009\u9879\u66f4\u6539\u901a\u77e5\uff08\u70ed\u66f4\u65b0\uff09"},"4.2.9 \u9009\u9879\u66f4\u6539\u901a\u77e5\uff08",(0,o.kt)("inlineCode",{parentName:"h2"},"\u70ed\u66f4\u65b0"),"\uff09"),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u4e86\u975e\u5e38\u7b80\u5355\u4e14\u7075\u6d3b\u7684\u65b9\u5f0f\u76d1\u542c\u9009\u9879\u66f4\u6539\uff0c\u4e5f\u5c31\u662f ",(0,o.kt)("strong",{parentName:"p"},(0,o.kt)("inlineCode",{parentName:"strong"},"appsettings.json")," \u6216 \u81ea\u5b9a\u4e49\u914d\u7f6e\u6587\u4ef6\u53d1\u751f\u4efb\u4f55\u66f4\u6539\u90fd\u4f1a\u89e6\u53d1\u5904\u7406\u65b9\u6cd5"),"\u3002"),(0,o.kt)("p",null,"\u4f7f\u7528\u975e\u5e38\u7b80\u5355\uff0c\u53ea\u9700\u8981\u7ee7\u627f ",(0,o.kt)("inlineCode",{parentName:"p"},"IConfigurableOptionsListener")," \u63a5\u53e3\u5e76\u5b9e\u73b0 ",(0,o.kt)("inlineCode",{parentName:"p"},"void OnListener(TOptions options, IConfiguration configuration)")," \u65b9\u6cd5\u5373\u53ef\u3002"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{5,11-15}","{5,11-15}":!0},"using Furion.ConfigurableOptions;\n\nnamespace Furion.Application\n{\n public class AppInfoOptions : IConfigurableOptionsListener\n {\n public string Name { get; set; }\n public string Version { get; set; }\n public string Company { get; set; }\n\n public void OnListener(AppInfoOptions options, IConfiguration configuration)\n {\n var name = options.Name; // \u5b9e\u65f6\u7684\u6700\u65b0\u503c\n var version = options.Version; // \u5b9e\u65f6\u7684\u6700\u65b0\u503c\n }\n\n public void PostConfigure(AppInfoOptions options, IConfiguration configuration)\n {\n }\n }\n}\n")),(0,o.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u7279\u522b\u8bf4\u660e")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},(0,o.kt)("strong",{parentName:"p"},(0,o.kt)("inlineCode",{parentName:"strong"},"IConfigurableOptionsListener"))," \u7ee7\u627f\u81ea ",(0,o.kt)("strong",{parentName:"p"},(0,o.kt)("inlineCode",{parentName:"strong"},"IConfigurableOptions")),"\u3002"))),(0,o.kt)("h2",{id:"4210-\u9009\u9879\u7684\u4f18\u7f3a\u70b9"},"4.2.10 \u9009\u9879\u7684\u4f18\u7f3a\u70b9"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},"\u4f18\u70b9"),(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"\u5f3a\u7c7b\u578b\u914d\u7f6e"),(0,o.kt)("li",{parentName:"ul"},"\u63d0\u4f9b\u591a\u79cd\u8bfb\u53d6\u65b9\u5f0f"),(0,o.kt)("li",{parentName:"ul"},"\u652f\u6301\u70ed\u52a0\u8f7d"),(0,o.kt)("li",{parentName:"ul"},"\u652f\u6301\u8bbe\u7f6e\u9ed8\u8ba4\u503c/\u540e\u671f\u914d\u7f6e"),(0,o.kt)("li",{parentName:"ul"},"\u652f\u6301\u5728\u8fd0\u884c\u73af\u5883\u4e2d\u52a8\u6001\u914d\u7f6e"),(0,o.kt)("li",{parentName:"ul"},"\u652f\u6301\u9a8c\u8bc1\u914d\u7f6e\u6709\u6548\u6027"),(0,o.kt)("li",{parentName:"ul"},"\u652f\u6301\u66f4\u6539\u901a\u77e5"),(0,o.kt)("li",{parentName:"ul"},"\u652f\u6301\u547d\u540d\u9009\u9879"))),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},"\u7f3a\u70b9"),(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"\u9700\u8981\u5b9a\u4e49\u5bf9\u5e94\u7c7b\u578b"),(0,o.kt)("li",{parentName:"ul"},"\u9700\u8981\u5728\u542f\u52a8\u65f6\u6ce8\u518c")))),(0,o.kt)("h2",{id:"4211-\u53cd\u9988\u4e0e\u5efa\u8bae"},"4.2.11 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,o.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,o.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))),(0,o.kt)("hr",null),(0,o.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e86\u89e3\u66f4\u591a")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u60f3\u4e86\u89e3\u66f4\u591a ",(0,o.kt)("inlineCode",{parentName:"p"},"\u9009\u9879")," \u77e5\u8bc6\u53ef\u67e5\u9605 ",(0,o.kt)("a",{parentName:"p",href:"https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/configuration/options?view=aspnetcore-5.0"},"ASP.NET Core - \u9009\u9879")," \u7ae0\u8282\u3002"))))}g.isMDXComponent=!0},6010:function(n,e,t){function i(n){var e,t,a="";if("string"==typeof n||"number"==typeof n)a+=n;else if("object"==typeof n)if(Array.isArray(n))for(e=0;e=0||(a[t]=n[t]);return a}(n,e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(n);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(n,t)&&(a[t]=n[t])}return a}var s=i.createContext({}),l=function(n){var e=i.useContext(s),t=e;return n&&(t="function"==typeof n?n(e):p(p({},e),n)),t},u=function(n){var e=l(n.components);return i.createElement(s.Provider,{value:e},n.children)},m={inlineCode:"code",wrapper:function(n){var e=n.children;return i.createElement(i.Fragment,{},e)}},c=i.forwardRef((function(n,e){var t=n.components,a=n.mdxType,o=n.originalType,s=n.parentName,u=r(n,["components","mdxType","originalType","parentName"]),c=l(t),d=a,g=c["".concat(s,".").concat(d)]||c[d]||m[d]||o;return t?i.createElement(g,p(p({ref:e},u),{},{components:t})):i.createElement(g,p({ref:e},u))}));function d(n,e){var t=arguments,a=e&&e.mdxType;if("string"==typeof n||a){var o=t.length,p=new Array(o);p[0]=c;var r={};for(var s in e)hasOwnProperty.call(e,s)&&(r[s]=e[s]);r.originalType=n,r.mdxType="string"==typeof n?n:a,p[1]=r;for(var l=2;l=0&&o<=l&&a<=r&&i>=0)||(e.scrollIntoView({block:"center",behavior:"smooth"}),e.classList.add(s),setTimeout((function(){return e.classList.remove(s)}),2e3))}),150))},y=function(n){var e,t=null;switch(n.key){case"ArrowRight":var i=b.indexOf(n.target)+1;t=b[i]||b[0];break;case"ArrowLeft":var a=b.indexOf(n.target)-1;t=b[a]||b[b.length-1]}null==(e=t)||e.focus()};return i.createElement("div",{className:"tabs-container"},i.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,p.Z)("tabs",{"tabs--block":a},c)},g.map((function(n){var e=n.value,t=n.label;return i.createElement("li",{role:"tab",tabIndex:O===e?0:-1,"aria-selected":O===e,className:(0,p.Z)("tabs__item",r,{"tabs__item--active":O===e}),key:e,ref:function(n){return b.push(n)},onKeyDown:y,onFocus:I,onClick:I},null!=t?t:e)}))),t?(0,i.cloneElement)(d.filter((function(n){return n.props.value===O}))[0],{className:"margin-vert--md"}):i.createElement("div",{className:"margin-vert--md"},d.map((function(n,e){return(0,i.cloneElement)(n,{key:e,hidden:n.props.value!==O})}))))}},9443:function(n,e,t){var i=(0,t(7294).createContext)(void 0);e.Z=i},6486:function(n,e,t){t.r(e),t.d(e,{frontMatter:function(){return l},contentTitle:function(){return u},metadata:function(){return m},toc:function(){return c},default:function(){return g}});var i=t(7462),a=t(3366),o=(t(7294),t(3905)),p=(t(4996),t(5064)),r=t(8215),s=["components"],l={id:"options",title:"4.2 \u9009\u9879",sidebar_label:"4.2 \u9009\u9879"},u=void 0,m={unversionedId:"options",id:"options",isDocsHomePage:!1,title:"4.2 \u9009\u9879",description:"4.2.1 \u4ec0\u4e48\u662f\u9009\u9879",source:"@site/docs/options.mdx",sourceDirName:".",slug:"/options",permalink:"/furion/docs/options",editUrl:"https://gitee.com/dotnetchina/Furion/tree/master/handbook/docs/options.mdx",tags:[],version:"current",lastUpdatedBy:"\u975e\u51e1\u4eba\u751f",lastUpdatedAt:1628757426,formattedLastUpdatedAt:"8/12/2021",frontMatter:{id:"options",title:"4.2 \u9009\u9879",sidebar_label:"4.2 \u9009\u9879"},sidebar:"docs",previous:{title:"4.1 \u914d\u7f6e",permalink:"/furion/docs/configuration"},next:{title:"5. \u52a8\u6001 WebAPI",permalink:"/furion/docs/dynamic-api-controller"}},c=[{value:"4.2.1 \u4ec0\u4e48\u662f\u9009\u9879",id:"421-\u4ec0\u4e48\u662f\u9009\u9879",children:[]},{value:"4.2.2 \u4e0e\u914d\u7f6e\u7684\u533a\u522b",id:"422-\u4e0e\u914d\u7f6e\u7684\u533a\u522b",children:[]},{value:"4.2.3 \u9009\u9879\u7684\u4f7f\u7528",id:"423-\u9009\u9879\u7684\u4f7f\u7528",children:[{value:"4.2.3.1 \u914d\u7f6e appsettings.json \u4fe1\u606f",id:"4231-\u914d\u7f6e-appsettingsjson-\u4fe1\u606f",children:[]},{value:"4.2.3.2 \u521b\u5efa AppInfoOptions \u5f3a\u7c7b\u578b\u7c7b",id:"4232-\u521b\u5efa-appinfooptions-\u5f3a\u7c7b\u578b\u7c7b",children:[]},{value:"4.2.3.3 \u6ce8\u518c AppInfoOptions \u670d\u52a1",id:"4233-\u6ce8\u518c-appinfooptions-\u670d\u52a1",children:[]},{value:"4.2.3.4 \u8bfb\u53d6 AppInfoOptions \u4fe1\u606f",id:"4234-\u8bfb\u53d6-appinfooptions-\u4fe1\u606f",children:[]},{value:"4.2.3.5 \u5982\u4f55\u9009\u62e9\u8bfb\u53d6\u65b9\u5f0f",id:"4235-\u5982\u4f55\u9009\u62e9\u8bfb\u53d6\u65b9\u5f0f",children:[]}]},{value:"4.2.4 \u9009\u9879\u63a5\u53e3\u8bf4\u660e",id:"424-\u9009\u9879\u63a5\u53e3\u8bf4\u660e",children:[]},{value:"4.2.5 \u9009\u9879\u81ea\u5b9a\u4e49\u914d\u7f6e",id:"425-\u9009\u9879\u81ea\u5b9a\u4e49\u914d\u7f6e",children:[{value:"4.2.5.1 \u9009\u9879\u67e5\u627e\u952e\u6d41\u7a0b",id:"4251-\u9009\u9879\u67e5\u627e\u952e\u6d41\u7a0b",children:[]}]},{value:"4.2.6 [OptionsSettings] \u8bf4\u660e",id:"426-optionssettings-\u8bf4\u660e",children:[]},{value:"4.2.7 \u9009\u9879\u9a8c\u8bc1",id:"427-\u9009\u9879\u9a8c\u8bc1",children:[]},{value:"4.2.8 \u9009\u9879\u540e\u671f\u914d\u7f6e",id:"428-\u9009\u9879\u540e\u671f\u914d\u7f6e",children:[]},{value:"4.2.9 \u9009\u9879\u66f4\u6539\u901a\u77e5\uff08\u70ed\u66f4\u65b0\uff09",id:"429-\u9009\u9879\u66f4\u6539\u901a\u77e5\uff08\u70ed\u66f4\u65b0\uff09",children:[]},{value:"4.2.10 \u9009\u9879\u7684\u4f18\u7f3a\u70b9",id:"4210-\u9009\u9879\u7684\u4f18\u7f3a\u70b9",children:[]},{value:"4.2.11 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"4211-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],d={toc:c};function g(n){var e=n.components,t=(0,a.Z)(n,s);return(0,o.kt)("wrapper",(0,i.Z)({},d,t,{components:e,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"421-\u4ec0\u4e48\u662f\u9009\u9879"},"4.2.1 \u4ec0\u4e48\u662f\u9009\u9879"),(0,o.kt)("p",null,"\u9009\u9879\u662f ",(0,o.kt)("inlineCode",{parentName:"p"},"ASP.NET Core")," \u63a8\u8350\u7684\u52a8\u6001\u8bfb\u53d6\u914d\u7f6e\u7684\u65b9\u5f0f\uff0c\u8fd9\u79cd\u65b9\u5f0f\u5c06\u914d\u7f6e\u6587\u4ef6\u6570\u636e\u7528\u4e00\u4e2a",(0,o.kt)("strong",{parentName:"p"},"\u5f3a\u7c7b\u578b"),"\u6765\u6258\u7ba1\uff0c\u80fd\u591f\u5b9e\u73b0\u914d\u7f6e\u9a8c\u8bc1\u3001\u9ed8\u8ba4\u503c\u914d\u7f6e\u3001\u5b9e\u65f6\u8bfb\u53d6\u7b49\u529f\u80fd\u3002"),(0,o.kt)("h2",{id:"422-\u4e0e\u914d\u7f6e\u7684\u533a\u522b"},"4.2.2 \u4e0e\u914d\u7f6e\u7684\u533a\u522b"),(0,o.kt)("p",null,"\u9009\u9879\u5b9e\u9645\u4e0a\u4e5f\u662f\u914d\u7f6e\uff0c\u4f46\u5728\u540e\u8005\u7684\u57fa\u7840\u4e0a\u6dfb\u52a0\u4e86\u914d\u7f6e\u9a8c\u8bc1\u3001\u9ed8\u8ba4\u503c/\u540e\u671f\u914d\u7f6e\u8bbe\u5b9a\u53ca\u63d0\u4f9b\u4e86\u591a\u79cd\u63a5\u53e3\u8bfb\u53d6\u914d\u7f6e\u4fe1\u606f\uff0c\u540c\u65f6\u8fd8\u652f\u6301\u4f9b\u914d\u7f6e\u66f4\u6539\u901a\u77e5\u7b49\u5f3a\u5927\u7075\u6d3b\u529f\u80fd\u3002"),(0,o.kt)("p",null,"\u6240\u4ee5\uff0c\u9664\u4e86\u4e00\u6b21\u6027\u8bfb\u53d6\u4f7f\u7528\u7684\u914d\u7f6e\u4ee5\u5916\uff0c\u90fd\u5e94\u8be5\u9009\u7528 ",(0,o.kt)("strong",{parentName:"p"},"\u9009\u9879")," \u66ff\u6362 ",(0,o.kt)("strong",{parentName:"p"},"\u914d\u7f6e"),"\u3002"),(0,o.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u77e5\u8bc6\u5bfc\u822a")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u6709\u5173\u914d\u7f6e\u8bf4\u660e\u53ef\u67e5\u770b\u300a",(0,o.kt)("a",{parentName:"p",href:"/furion/docs/configuration"},"4.1 \u914d\u7f6e"),"\u300b \u7ae0\u8282\u3002"))),(0,o.kt)("h2",{id:"423-\u9009\u9879\u7684\u4f7f\u7528"},"4.2.3 \u9009\u9879\u7684\u4f7f\u7528"),(0,o.kt)("p",null,"\u5047\u8bbe\u6211\u4eec\u9700\u8981\u5728\u7cfb\u7edf\u8fd0\u884c\u65f6\u83b7\u53d6",(0,o.kt)("strong",{parentName:"p"},"\u7cfb\u7edf\u540d\u79f0\u3001\u7248\u672c\u53f7\u53ca\u7248\u6743\u4fe1\u606f"),"\uff0c\u8fd9\u4e9b\u4fe1\u606f\u53ef\u80fd\u968f\u65f6\u53d8\u5316\u800c\u4e14\u9700\u8981\u5728\u591a\u4e2a\u5730\u65b9\u4f7f\u7528\u3002\u8fd9\u65f6\u5c31\u9700\u8981\u5c06\u8fd9\u4e9b\u4fe1\u606f\u914d\u7f6e\u8d77\u6765\u3002\u5177\u4f53\u6b65\u9aa4\u5982\u4e0b\uff1a"),(0,o.kt)("h3",{id:"4231-\u914d\u7f6e-appsettingsjson-\u4fe1\u606f"},"4.2.3.1 \u914d\u7f6e ",(0,o.kt)("inlineCode",{parentName:"h3"},"appsettings.json")," \u4fe1\u606f"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-json",metastring:"{2-6}","{2-6}":!0},'{\n "AppInfo": {\n "Name": "Furion",\n "Version": "1.0.0",\n "Company": "Baiqian"\n }\n}\n')),(0,o.kt)("h3",{id:"4232-\u521b\u5efa-appinfooptions-\u5f3a\u7c7b\u578b\u7c7b"},"4.2.3.2 \u521b\u5efa ",(0,o.kt)("inlineCode",{parentName:"h3"},"AppInfoOptions")," \u5f3a\u7c7b\u578b\u7c7b"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,5}","{1,5}":!0},"using Furion.ConfigurableOptions;\n\nnamespace Furion.Application\n{\n public class AppInfoOptions : IConfigurableOptions\n {\n public string Name { get; set; }\n public string Version { get; set; }\n public string Company { get; set; }\n }\n}\n")),(0,o.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u6e29\u99a8\u63d0\u793a")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u5efa\u8bae\u6240\u6709\u9009\u9879\u7c7b\u90fd\u5e94\u8be5\u4ee5 ",(0,o.kt)("strong",{parentName:"p"},(0,o.kt)("inlineCode",{parentName:"strong"},"Options"))," \u547d\u540d\u7ed3\u5c3e\u3002"),(0,o.kt)("p",{parentName:"div"},"\u53e6\u5916\uff0c",(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u4e86\u975e\u5e38\u7075\u6d3b\u7684\u6ce8\u518c\u9009\u9879\u670d\u52a1\u7684\u65b9\u6cd5\uff0c\u53ea\u9700\u8981\u7ee7\u627f ",(0,o.kt)("strong",{parentName:"p"},(0,o.kt)("inlineCode",{parentName:"strong"},"IConfigurableOptions"))," \u63a5\u53e3\u5373\u53ef\uff0c\u8be5\u63a5\u53e3\u4f4d\u4e8e ",(0,o.kt)("strong",{parentName:"p"},(0,o.kt)("inlineCode",{parentName:"strong"},"Furion.ConfigurableOptions"))," \u547d\u540d\u7a7a\u95f4\u4e0b\u3002"))),(0,o.kt)("h3",{id:"4233-\u6ce8\u518c-appinfooptions-\u670d\u52a1"},"4.2.3.3 \u6ce8\u518c ",(0,o.kt)("inlineCode",{parentName:"h3"},"AppInfoOptions")," \u670d\u52a1"),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"\u9009\u9879\u4e0d\u540c\u4e8e\u914d\u7f6e\uff0c\u9700\u5728\u5e94\u7528\u542f\u52a8\u65f6\u6ce8\u518c")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:'{12} title="Furion.Web.Core\\FurWebCoreStartup.cs"',"{12}":!0,title:'"Furion.Web.Core\\FurWebCoreStartup.cs"'},"using Microsoft.AspNetCore.Builder;\nusing Microsoft.AspNetCore.Hosting;\nusing Microsoft.Extensions.DependencyInjection;\n\nnamespace Furion.Web.Core\n{\n [AppStartup(800)]\n public sealed class FurWebCoreStartup : AppStartup\n {\n public void ConfigureServices(IServiceCollection services)\n {\n services.AddConfigurableOptions();\n }\n }\n}\n")),(0,o.kt)("h3",{id:"4234-\u8bfb\u53d6-appinfooptions-\u4fe1\u606f"},"4.2.3.4 \u8bfb\u53d6 ",(0,o.kt)("inlineCode",{parentName:"h3"},"AppInfoOptions")," \u4fe1\u606f"),(0,o.kt)("p",null,"\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\uff0c\u63d0\u4f9b\u4e86\u591a\u79cd\u8bfb\u53d6\u65b9\u5f0f\uff1a"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"\u901a\u8fc7 ",(0,o.kt)("inlineCode",{parentName:"li"},"App.GetOptions(path)")," \u8bfb\u53d6\uff08",(0,o.kt)("strong",{parentName:"li"},"\u4e0d\u63a8\u8350"),"\uff09"),(0,o.kt)("li",{parentName:"ul"},"\u901a\u8fc7\u4f9d\u8d56\u6ce8\u5165\u4ee5\u4e0b\u5b9e\u4f8b\u8bfb\u53d6\uff1a",(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"IOptions")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"IOptionsSnapshot")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"IOptionsMonitor")))),(0,o.kt)("li",{parentName:"ul"},"\u901a\u8fc7 ",(0,o.kt)("inlineCode",{parentName:"li"},"App")," \u9759\u6001\u7c7b\u63d0\u4f9b\u7684\u9759\u6001\u65b9\u6cd5\u83b7\u53d6\uff1a",(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"App.GetOptions()")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"App.GetOptionsMonitor()")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"App.GetOptionsSnapshot()"))))),(0,o.kt)(p.Z,{defaultValue:"App.GetOptions(path)",values:[{label:"App.GetOptions(path)",value:"App.GetOptions(path)"},{label:"\u4f9d\u8d56\u6ce8\u5165\u65b9\u5f0f",value:"\u4f9d\u8d56\u6ce8\u5165\u65b9\u5f0f"},{label:"App.GetOptions()",value:"App.GetOptions()"}],mdxType:"Tabs"},(0,o.kt)(r.Z,{value:"App.GetOptions(path)",mdxType:"TabItem"},(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{13-16}","{13-16}":!0},'using Furion.Application;\nusing Microsoft.AspNetCore.Mvc;\n\nnamespace Furion.Web.Entry.Controllers\n{\n [Route("api/[controller]")]\n public class DefaultController : ControllerBase\n {\n [HttpGet]\n public string Get()\n {\n // \u4e0d\u63a8\u8350\u91c7\u7528\u6b64\u65b9\u5f0f\u8bfb\u53d6\uff0c\u8be5\u65b9\u5f0f\u4ec5\u5728 ConfigureServices \u542f\u52a8\u65f6\u4f7f\u7528\n var appInfo = App.GetConfig("AppInfo", true);\n return $@"\u540d\u79f0\uff1a{appInfo.Name}\uff0c\n \u7248\u672c\uff1a{appInfo.Version}\uff0c\n \u516c\u53f8\uff1a{appInfo.Company}";\n }\n }\n}\n'))),(0,o.kt)(r.Z,{value:"\u4f9d\u8d56\u6ce8\u5165\u65b9\u5f0f",mdxType:"TabItem"},(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{3,15-17,27-29,31-33,35-37}","{3,15-17,27-29,31-33,35-37}":!0},'using Furion.Application;\nusing Microsoft.AspNetCore.Mvc;\nusing Microsoft.Extensions.Options;\n\nnamespace Furion.Web.Entry.Controllers\n{\n [Route("api/[controller]")]\n public class DefaultController : ControllerBase\n {\n private readonly AppInfoOptions options1;\n private readonly AppInfoOptions options2;\n private readonly AppInfoOptions options3;\n\n public DefaultController(\n IOptions options\n , IOptionsSnapshot optionsSnapshot\n , IOptionsMonitor optionsMonitor)\n {\n options1 = options.Value;\n options2 = optionsSnapshot.Value;\n options3 = optionsMonitor.CurrentValue;\n }\n\n [HttpGet]\n public string Get()\n {\n var info1 = $@"\u540d\u79f0\uff1a{options1.Name}\uff0c\n \u7248\u672c\uff1a{options1.Version}\uff0c\n \u516c\u53f8\uff1a{options1.Company}";\n\n var info2 = $@"\u540d\u79f0\uff1a{options2.Name}\uff0c\n \u7248\u672c\uff1a{options2.Version}\uff0c\n \u516c\u53f8\uff1a{options2.Company}";\n\n var info3 = $@"\u540d\u79f0\uff1a{options3.Name}\uff0c\n \u7248\u672c\uff1a{options3.Version}\uff0c\n \u516c\u53f8\uff1a{options3.Company}";\n\n return $"{info1}-{info2}-{info3}";\n }\n }\n}\n'))),(0,o.kt)(r.Z,{value:"App.GetOptions()",mdxType:"TabItem"},(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{12-15,17-20,22-25}","{12-15,17-20,22-25}":!0},'using Furion.Application;\nusing Microsoft.AspNetCore.Mvc;\n\nnamespace Furion.Web.Entry.Controllers\n{\n [Route("api/[controller]")]\n public class DefaultController : ControllerBase\n {\n [HttpGet]\n public string Get()\n {\n var options1 = App.GetOptions();\n var info1 = $@"\u540d\u79f0\uff1a{options1.Name}\uff0c\n \u7248\u672c\uff1a{options1.Version}\uff0c\n \u516c\u53f8\uff1a{options1.Company}";\n\n var options2 = App.GetOptionsSnapshot();\n var info2 = $@"\u540d\u79f0\uff1a{options2.Name}\uff0c\n \u7248\u672c\uff1a{options2.Version}\uff0c\n \u516c\u53f8\uff1a{options2.Company}";\n\n var options3 = App.GetOptionsMonitor();\n var info3 = $@"\u540d\u79f0\uff1a{options3.Name}\uff0c\n \u7248\u672c\uff1a{options3.Version}\uff0c\n \u516c\u53f8\uff1a{options3.Company}";\n\n return $"{info1}-{info2}-{info3}";\n }\n }\n}\n')))),(0,o.kt)("h3",{id:"4235-\u5982\u4f55\u9009\u62e9\u8bfb\u53d6\u65b9\u5f0f"},"4.2.3.5 \u5982\u4f55\u9009\u62e9\u8bfb\u53d6\u65b9\u5f0f"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"\u5982\u679c\u9009\u9879\u9700\u8981\u5728\u591a\u4e2a\u5730\u65b9\u4f7f\u7528\uff0c\u5219\u65e0\u8bba\u4efb\u4f55\u65f6\u5019\u90fd\u4e0d\u63a8\u8350\u4f7f\u7528 ",(0,o.kt)("inlineCode",{parentName:"li"},"App.GetOptions(path)")),(0,o.kt)("li",{parentName:"ul"},"\u5728\u53ef\u4f9d\u8d56\u6ce8\u5165\u7c7b\u4e2d\uff0c\u4f9d\u8d56\u6ce8\u5165 ",(0,o.kt)("inlineCode",{parentName:"li"},"IOptions[Snapshot|Monitor]")," \u8bfb\u53d6"),(0,o.kt)("li",{parentName:"ul"},"\u5728\u9759\u6001\u7c7b/\u975e\u4f9d\u8d56\u6ce8\u5165\u7c7b\u4e2d\uff0c\u9009\u62e9 ",(0,o.kt)("inlineCode",{parentName:"li"},"App.GetOptions[Snapshot|Monitor]()")," \u8bfb\u53d6")),(0,o.kt)("h2",{id:"424-\u9009\u9879\u63a5\u53e3\u8bf4\u660e"},"4.2.4 \u9009\u9879\u63a5\u53e3\u8bf4\u660e"),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"ASP.NET Core")," \u5e94\u7528\u63d0\u4f9b\u4e86\u591a\u79cd\u8bfb\u53d6\u9009\u9879\u7684\u63a5\u53e3\uff1a"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"IOptions"),"\uff1a",(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"\u4e0d\u652f\u6301\uff1a",(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"\u5728\u5e94\u7528\u542f\u52a8\u540e\u8bfb\u53d6\u914d\u7f6e\u6570\u636e"),(0,o.kt)("li",{parentName:"ul"},"\u547d\u540d\u9009\u9879"))),(0,o.kt)("li",{parentName:"ul"},"\u6ce8\u518c\u4e3a\u5355\u4e00\u5b9e\u4f8b\u4e14\u53ef\u4ee5\u6ce8\u5165\u5230\u4efb\u4f55\u670d\u52a1\u751f\u5b58\u671f"))),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"IOptionsSnapshot"),"\uff1a",(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"\u5728\u6bcf\u6b21\u8bf7\u6c42\u65f6\u5e94\u91cd\u65b0\u8ba1\u7b97\u9009\u9879\u7684\u65b9\u6848\u4e2d\u6709\u7528"),(0,o.kt)("li",{parentName:"ul"},"\u6ce8\u518c\u4e3a\u8303\u56f4\u5185\uff0c\u56e0\u6b64\u65e0\u6cd5\u6ce8\u5165\u5230\u5355\u4e00\u5b9e\u4f8b\u670d\u52a1"),(0,o.kt)("li",{parentName:"ul"},"\u652f\u6301\u547d\u540d\u9009\u9879"))),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"IOptionsMonitor"),"\uff1a",(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"\u7528\u4e8e\u68c0\u7d22\u9009\u9879\u5e76\u7ba1\u7406 TOptions \u5b9e\u4f8b\u7684\u9009\u9879\u901a\u77e5\u3002"),(0,o.kt)("li",{parentName:"ul"},"\u6ce8\u518c\u4e3a\u5355\u4e00\u5b9e\u4f8b\u4e14\u53ef\u4ee5\u6ce8\u5165\u5230\u4efb\u4f55\u670d\u52a1\u751f\u5b58\u671f\u3002"),(0,o.kt)("li",{parentName:"ul"},"\u652f\u6301\uff1a",(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"\u66f4\u6539\u901a\u77e5"),(0,o.kt)("li",{parentName:"ul"},"\u547d\u540d\u9009\u9879"),(0,o.kt)("li",{parentName:"ul"},"\u53ef\u91cd\u8f7d\u914d\u7f6e"),(0,o.kt)("li",{parentName:"ul"},"\u9009\u62e9\u6027\u9009\u9879\u5931\u6548 ",(0,o.kt)("inlineCode",{parentName:"li"},"(IOptionsMonitorCache)"))))))),(0,o.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e86\u89e3\u66f4\u591a")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u60f3\u4e86\u89e3\u66f4\u591a ",(0,o.kt)("inlineCode",{parentName:"p"},"\u9009\u9879\u63a5\u53e3")," \u77e5\u8bc6\u53ef\u67e5\u9605 ",(0,o.kt)("a",{parentName:"p",href:"https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/configuration/options?view=aspnetcore-5.0#options-interfaces"},"ASP.NET Core - \u9009\u9879 - \u9009\u9879\u63a5\u53e3")," \u5c0f\u8282\u3002"))),(0,o.kt)("h2",{id:"425-\u9009\u9879\u81ea\u5b9a\u4e49\u914d\u7f6e"},"4.2.5 \u9009\u9879\u81ea\u5b9a\u4e49\u914d\u7f6e"),(0,o.kt)("p",null,"\u6211\u4eec\u77e5\u9053\uff0c\u9009\u9879\u5b9e\u9645\u4e0a\u9700\u8981\u548c\u914d\u7f6e\u6587\u4ef6\u7279\u5b9a\u952e\u503c\u6302\u94a9\uff0c\u90a3 ",(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u662f\u5982\u4f55\u51c6\u786e\u7684\u627e\u5230\u914d\u7f6e\u6587\u4ef6\u4e2d\u7684\u952e\u503c\u7684\u5462\uff1f"),(0,o.kt)("h3",{id:"4251-\u9009\u9879\u67e5\u627e\u952e\u6d41\u7a0b"},"4.2.5.1 \u9009\u9879\u67e5\u627e\u952e\u6d41\u7a0b"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"\u6ca1\u6709\u8d34 ",(0,o.kt)("inlineCode",{parentName:"strong"},"[OptionsSettings]")," \u7279\u6027"),(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"\u4ee5 ",(0,o.kt)("inlineCode",{parentName:"li"},"Options")," \u7ed3\u5c3e\uff0c\u5219\u53bb\u9664 ",(0,o.kt)("inlineCode",{parentName:"li"},"Options")," \u5b57\u7b26\u4e32"),(0,o.kt)("li",{parentName:"ul"},"\u5426\u5219\u8fd4\u56de ",(0,o.kt)("inlineCode",{parentName:"li"},"\u7c7b\u540d\u79f0")))),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"\u8d34\u4e86 ",(0,o.kt)("inlineCode",{parentName:"strong"},"[OptionsSettings]")," \u7279\u6027"),(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"\u5982\u679c\u914d\u7f6e\u4e86 ",(0,o.kt)("inlineCode",{parentName:"li"},"Path")," \u5c5e\u6027\uff0c\u5219\u8fd4\u56de ",(0,o.kt)("inlineCode",{parentName:"li"},"Path")," \u7684\u503c"),(0,o.kt)("li",{parentName:"ul"},"\u5426\u5219\u8fd4\u56de ",(0,o.kt)("inlineCode",{parentName:"li"},"\u7c7b\u540d\u79f0"))))),(0,o.kt)(p.Z,{defaultValue:"non-optionsettings",values:[{label:"\u65e0[OptionsSettings]",value:"non-optionsettings"},{label:"\u6709[OptionsSettings]",value:"has-optionsettings"}],mdxType:"Tabs"},(0,o.kt)(r.Z,{value:"non-optionsettings",mdxType:"TabItem"},(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"\u4ee5 ",(0,o.kt)("inlineCode",{parentName:"li"},"Options")," \u7ed3\u5c3e\uff0c\u5219\u952e\u540d\u4e3a\uff1a",(0,o.kt)("inlineCode",{parentName:"li"},"AppInfo"))),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1}","{1}":!0},"public class AppInfoOptions : IConfigurableOptions\n{\n public string Name { get; set; }\n public string Version { get; set; }\n public string Company { get; set; }\n}\n")),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"\u4e0d\u4ee5 ",(0,o.kt)("inlineCode",{parentName:"li"},"Options")," \u7ed3\u5c3e\uff0c\u5219\u952e\u540d\u4e3a\uff1a",(0,o.kt)("inlineCode",{parentName:"li"},"AppInfoSettings"))),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1}","{1}":!0},"public class AppInfoSettings : IConfigurableOptions\n{\n public string Name { get; set; }\n public string Version { get; set; }\n public string Company { get; set; }\n}\n"))),(0,o.kt)(r.Z,{value:"has-optionsettings",mdxType:"TabItem"},(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"\u914d\u7f6e\u4e86 ",(0,o.kt)("inlineCode",{parentName:"li"},"Path")," \u5c5e\u6027\uff0c\u5219\u952e\u540d\u4e3a\uff1a",(0,o.kt)("inlineCode",{parentName:"li"},"AppSettings:AppInfo"))),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1}","{1}":!0},'[OptionsSettings("AppSettings:AppInfo")]\npublic class AppInfoOptions : IConfigurableOptions\n{\n public string Name { get; set; }\n public string Version { get; set; }\n public string Company { get; set; }\n}\n')),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"\u6ca1\u6709\u914d\u7f6e ",(0,o.kt)("inlineCode",{parentName:"li"},"Path")," \u5c5e\u6027\uff0c\uff0c\u5219\u952e\u540d\u4e3a\uff1a",(0,o.kt)("inlineCode",{parentName:"li"},"AppInfoSettings"))),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1}","{1}":!0},"[OptionsSettings]\npublic class AppInfoSettings : IConfigurableOptions\n{\n public string Name { get; set; }\n public string Version { get; set; }\n public string Company { get; set; }\n}\n")))),(0,o.kt)("h2",{id:"426-optionssettings-\u8bf4\u660e"},"4.2.6 ",(0,o.kt)("inlineCode",{parentName:"h2"},"[OptionsSettings]")," \u8bf4\u660e"),(0,o.kt)("p",null,"\u9009\u9879\u7c7b\u53ef\u4ee5\u901a\u8fc7 ",(0,o.kt)("inlineCode",{parentName:"p"},"[OptionsSettings]")," \u6765\u914d\u7f6e\u67e5\u627e\u8def\u5f84\u503c\u3002"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"Path"),"\uff1a\u5bf9\u5e94\u914d\u7f6e\u6587\u4ef6\u4e2d\u7684\u952e\uff0c\u652f\u6301 ",(0,o.kt)("strong",{parentName:"li"},"\u5206\u5c42\u952e")," \u5b57\u7b26\u4e32\uff0c\u53c2\u89c1\uff1a\u300a",(0,o.kt)("a",{parentName:"li",href:"configuration/#413-%E8%B7%AF%E5%BE%84%E7%AC%A6-%E6%9F%A5%E6%89%BE%E8%8A%82%E7%82%B9"},"4.1 \u914d\u7f6e - 4.1.3 \u8def\u5f84\u7b26 \u67e5\u627e\u8282\u70b9"),"\u300b"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"PostConfigureAll"),"\uff1a\u9009\u9879\u540e\u671f\u914d\u7f6e\uff0c\u9ed8\u8ba4 ",(0,o.kt)("inlineCode",{parentName:"li"},"false"),"\u3002",(0,o.kt)("a",{parentName:"li",href:"https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/configuration/options?view=aspnetcore-3.1#options-post-configuration"},"ASP.NET Core - \u9009\u9879 - \u9009\u9879\u540e\u671f\u914d\u7f6e"))),(0,o.kt)("h2",{id:"427-\u9009\u9879\u9a8c\u8bc1"},"4.2.7 \u9009\u9879\u9a8c\u8bc1"),(0,o.kt)("p",null,"\u9009\u9879\u652f\u6301\u9a8c\u8bc1\u914d\u7f6e\u6709\u6548\u6027\uff0c\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\uff0c\u901a\u8fc7 ",(0,o.kt)("inlineCode",{parentName:"p"},"services.AddConfigurableOptions()")," \u6ce8\u518c\u9009\u9879\u9ed8\u8ba4\u542f\u7528\u4e86\u9a8c\u8bc1\u652f\u6301\u3002"),(0,o.kt)("p",null,"\u5305\u62ec\uff1a"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"\u7279\u6027\u65b9\u5f0f ",(0,o.kt)("inlineCode",{parentName:"li"},"DataAnnotations")),(0,o.kt)("li",{parentName:"ul"},"\u81ea\u5b9a\u4e49\u590d\u6742\u9a8c\u8bc1 ",(0,o.kt)("inlineCode",{parentName:"li"},"IValidateOptions"))),(0,o.kt)(p.Z,{defaultValue:"texin",values:[{label:"\u7279\u6027\u65b9\u5f0f",value:"texin"},{label:"\u590d\u6742\u9a8c\u8bc1",value:"fuza"}],mdxType:"Tabs"},(0,o.kt)(r.Z,{value:"texin",mdxType:"TabItem"},(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{2,8,10,12}","{2,8,10,12}":!0},'using Furion.ConfigurableOptions;\nusing System.ComponentModel.DataAnnotations;\n\nnamespace Furion.Application\n{\n public class AppInfoOptions : IConfigurableOptions\n {\n [Required(ErrorMessage = "\u540d\u79f0\u4e0d\u80fd\u4e3a\u7a7a")]\n public string Name { get; set; }\n [Required, RegularExpression(@"^[0-9][0-9\\.]+[0-9]$", ErrorMessage = "\u4e0d\u662f\u6709\u6548\u7684\u7248\u672c\u53f7")]\n public string Version { get; set; }\n [Required, MaxLength(100)]\n public string Company { get; set; }\n }\n}\n'))),(0,o.kt)(r.Z,{value:"fuza",mdxType:"TabItem"},(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"\u81ea\u5b9a\u4e49\u9a8c\u8bc1\u7c7b ",(0,o.kt)("inlineCode",{parentName:"li"},"AppInfoValidation")," \u5e76\u7ee7\u627f ",(0,o.kt)("inlineCode",{parentName:"li"},"IValidateOptions")," \u63a5\u53e3\uff0c\u540c\u65f6\u5b9e\u73b0 ",(0,o.kt)("inlineCode",{parentName:"li"},"Validate")," \u65b9\u6cd5\u3002")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,6,8,12,15}","{1,6,8,12,15}":!0},'using Microsoft.Extensions.Options;\nusing System.Text.RegularExpressions;\n\nnamespace Furion.Application\n{\n public class AppInfoValidation : IValidateOptions\n {\n public ValidateOptionsResult Validate(string name, AppInfoOptions options)\n {\n if (!Regex.IsMatch(options.Version, @"^[0-9][0-9\\.]+[0-9]$"))\n {\n return ValidateOptionsResult.Fail("\u4e0d\u662f\u6709\u6548\u7684\u7248\u672c\u53f7");\n }\n\n return ValidateOptionsResult.Success;\n }\n }\n}\n')),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"\u9009\u9879\u7c7b\u7ee7\u627f ",(0,o.kt)("inlineCode",{parentName:"li"},"IConfigurableOptions")," \u63a5\u53e3\uff0c\u5e76\u5b9e\u73b0\u8be5\u63a5\u53e3\u3002")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{6,16-18}","{6,16-18}":!0},'using Furion.ConfigurableOptions;\nusing System.ComponentModel.DataAnnotations;\n\nnamespace Furion.Application\n{\n public class AppInfoOptions : IConfigurableOptions\n {\n [Required(ErrorMessage = "\u540d\u79f0\u4e0d\u80fd\u4e3a\u7a7a")]\n public string Name { get; set; }\n [Required]\n public string Version { get; set; }\n [Required, MaxLength(100)]\n public string Company { get; set; }\n\n // \u9009\u9879\u540e\u671f\u914d\u7f6e\n public void PostConfigure(AppInfoOptions options, IConfiguration configuration)\n {\n }\n }\n}\n')),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"\u5b8c\u6574\u4ee3\u7801\u5982\u4e0b\uff1a")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{4,9,19,25,27,31,34}","{4,9,19,25,27,31,34}":!0},'using Furion.ConfigurableOptions;\nusing Microsoft.Extensions.Options;\nusing System.ComponentModel.DataAnnotations;\nusing System.Text.RegularExpressions;\n\nnamespace Furion.Application\n{\n // \u7ee7\u627f IConfigurableOptions \u63a5\u53e3\n public class AppInfoOptions : IConfigurableOptions\n {\n [Required(ErrorMessage = "\u540d\u79f0\u4e0d\u80fd\u4e3a\u7a7a")]\n public string Name { get; set; }\n [Required]\n public string Version { get; set; }\n [Required, MaxLength(100)]\n public string Company { get; set; }\n\n // \u9009\u9879\u540e\u671f\u914d\u7f6e\n public void PostConfigure(AppInfoOptions options)\n {\n }\n }\n\n // \u521b\u5efa\u81ea\u5b9a\u4e49\u9a8c\u8bc1\u7c7b\n public class AppInfoValidation : IValidateOptions\n {\n public ValidateOptionsResult Validate(string name, AppInfoOptions options)\n {\n if (!Regex.IsMatch(options.Version, @"^[0-9][0-9\\.]+[0-9]$"))\n {\n return ValidateOptionsResult.Fail("\u4e0d\u662f\u6709\u6548\u7684\u7248\u672c\u53f7");\n }\n\n return ValidateOptionsResult.Success;\n }\n }\n}\n')))),(0,o.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u7279\u522b\u8bf4\u660e")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},(0,o.kt)("strong",{parentName:"p"},(0,o.kt)("inlineCode",{parentName:"strong"},"IConfigurableOptions"))," \u7ee7\u627f\u81ea ",(0,o.kt)("strong",{parentName:"p"},(0,o.kt)("inlineCode",{parentName:"strong"},"IConfigurableOptions")),"\uff0c\u4e5f\u5c31\u662f\u81ea\u5b9a\u4e49\u590d\u6742\u9a8c\u8bc1\u9ed8\u8ba4\u5177\u6709 ",(0,o.kt)("strong",{parentName:"p"},(0,o.kt)("inlineCode",{parentName:"strong"},"PostConfigure(TOptions options)"))," \u9009\u9879\u540e\u671f\u914d\u7f6e\u65b9\u6cd5\u3002\u5173\u4e8e\u300a",(0,o.kt)("a",{parentName:"p",href:"#428-%E9%80%89%E9%A1%B9%E5%90%8E%E6%9C%9F%E9%85%8D%E7%BD%AE"},"4.2.8 \u9009\u9879\u540e\u671f\u914d\u7f6e"),"\u300b\u5c06\u5728\u4e0b\u4e00\u5c0f\u8282\u8bf4\u660e\u3002"))),(0,o.kt)("h2",{id:"428-\u9009\u9879\u540e\u671f\u914d\u7f6e"},"4.2.8 \u9009\u9879\u540e\u671f\u914d\u7f6e"),(0,o.kt)("p",null,"\u9009\u9879\u540e\u671f\u914d\u7f6e\u901a\u4fd7\u4e00\u70b9\u6765\u8bf4\uff0c\u53ef\u4ee5\u5728\u8fd0\u884c\u65f6\u89e3\u6790\u503c\u6216\u8bbe\u5b9a\u9ed8\u8ba4\u503c/\u540e\u671f\u914d\u7f6e\u7b49\u3002"),(0,o.kt)("p",null,"\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\uff0c\u914d\u7f6e\u9009\u9879\u540e\u671f\u914d\u7f6e\u5f88\u7b80\u5355\uff0c\u53ea\u9700\u8981\u7ee7\u627f ",(0,o.kt)("inlineCode",{parentName:"p"},"IConfigurableOptions")," \u63a5\u53e3\u5e76\u5b9e\u73b0 ",(0,o.kt)("inlineCode",{parentName:"p"},"PostConfigure(TOptions options)")," \u65b9\u6cd5\u3002"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{7,16-21}","{7,16-21}":!0},'using Furion.ConfigurableOptions;\nusing Microsoft.Extensions.Configuration;\nusing System.ComponentModel.DataAnnotations;\n\nnamespace Furion.Application\n{\n public class AppInfoOptions : IConfigurableOptions\n {\n [Required(ErrorMessage = "\u540d\u79f0\u4e0d\u80fd\u4e3a\u7a7a")]\n public string Name { get; set; }\n [Required]\n public string Version { get; set; }\n [Required, MaxLength(100)]\n public string Company { get; set; }\n\n public void PostConfigure(AppInfoOptions options, IConfiguration configuration)\n {\n options.Name ??= "Furion";\n options.Version ??= "1.0.0";\n options.Company ??= "Baiqian";\n }\n }\n}\n')),(0,o.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u7279\u522b\u8bf4\u660e")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},(0,o.kt)("strong",{parentName:"p"},(0,o.kt)("inlineCode",{parentName:"strong"},"IConfigurableOptions"))," \u7ee7\u627f\u81ea ",(0,o.kt)("strong",{parentName:"p"},(0,o.kt)("inlineCode",{parentName:"strong"},"IConfigurableOptions")),"\uff0c\u4e5f\u5c31\u662f\u81ea\u5b9a\u4e49\u590d\u6742\u9a8c\u8bc1\u9ed8\u8ba4\u5177\u6709 ",(0,o.kt)("strong",{parentName:"p"},(0,o.kt)("inlineCode",{parentName:"strong"},"PostConfigure(TOptions options, IConfiguration configuration)"))," \u9009\u9879\u540e\u671f\u914d\u7f6e\u65b9\u6cd5\u3002"))),(0,o.kt)("h2",{id:"429-\u9009\u9879\u66f4\u6539\u901a\u77e5\uff08\u70ed\u66f4\u65b0\uff09"},"4.2.9 \u9009\u9879\u66f4\u6539\u901a\u77e5\uff08",(0,o.kt)("inlineCode",{parentName:"h2"},"\u70ed\u66f4\u65b0"),"\uff09"),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u4e86\u975e\u5e38\u7b80\u5355\u4e14\u7075\u6d3b\u7684\u65b9\u5f0f\u76d1\u542c\u9009\u9879\u66f4\u6539\uff0c\u4e5f\u5c31\u662f ",(0,o.kt)("strong",{parentName:"p"},(0,o.kt)("inlineCode",{parentName:"strong"},"appsettings.json")," \u6216 \u81ea\u5b9a\u4e49\u914d\u7f6e\u6587\u4ef6\u53d1\u751f\u4efb\u4f55\u66f4\u6539\u90fd\u4f1a\u89e6\u53d1\u5904\u7406\u65b9\u6cd5"),"\u3002"),(0,o.kt)("p",null,"\u4f7f\u7528\u975e\u5e38\u7b80\u5355\uff0c\u53ea\u9700\u8981\u7ee7\u627f ",(0,o.kt)("inlineCode",{parentName:"p"},"IConfigurableOptionsListener")," \u63a5\u53e3\u5e76\u5b9e\u73b0 ",(0,o.kt)("inlineCode",{parentName:"p"},"void OnListener(TOptions options, IConfiguration configuration)")," \u65b9\u6cd5\u5373\u53ef\u3002"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{5,11-15}","{5,11-15}":!0},"using Furion.ConfigurableOptions;\n\nnamespace Furion.Application\n{\n public class AppInfoOptions : IConfigurableOptionsListener\n {\n public string Name { get; set; }\n public string Version { get; set; }\n public string Company { get; set; }\n\n public void OnListener(AppInfoOptions options, IConfiguration configuration)\n {\n var name = options.Name; // \u5b9e\u65f6\u7684\u6700\u65b0\u503c\n var version = options.Version; // \u5b9e\u65f6\u7684\u6700\u65b0\u503c\n }\n\n public void PostConfigure(AppInfoOptions options, IConfiguration configuration)\n {\n }\n }\n}\n")),(0,o.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u7279\u522b\u8bf4\u660e")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},(0,o.kt)("strong",{parentName:"p"},(0,o.kt)("inlineCode",{parentName:"strong"},"IConfigurableOptionsListener"))," \u7ee7\u627f\u81ea ",(0,o.kt)("strong",{parentName:"p"},(0,o.kt)("inlineCode",{parentName:"strong"},"IConfigurableOptions")),"\u3002"))),(0,o.kt)("h2",{id:"4210-\u9009\u9879\u7684\u4f18\u7f3a\u70b9"},"4.2.10 \u9009\u9879\u7684\u4f18\u7f3a\u70b9"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},"\u4f18\u70b9"),(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"\u5f3a\u7c7b\u578b\u914d\u7f6e"),(0,o.kt)("li",{parentName:"ul"},"\u63d0\u4f9b\u591a\u79cd\u8bfb\u53d6\u65b9\u5f0f"),(0,o.kt)("li",{parentName:"ul"},"\u652f\u6301\u70ed\u52a0\u8f7d"),(0,o.kt)("li",{parentName:"ul"},"\u652f\u6301\u8bbe\u7f6e\u9ed8\u8ba4\u503c/\u540e\u671f\u914d\u7f6e"),(0,o.kt)("li",{parentName:"ul"},"\u652f\u6301\u5728\u8fd0\u884c\u73af\u5883\u4e2d\u52a8\u6001\u914d\u7f6e"),(0,o.kt)("li",{parentName:"ul"},"\u652f\u6301\u9a8c\u8bc1\u914d\u7f6e\u6709\u6548\u6027"),(0,o.kt)("li",{parentName:"ul"},"\u652f\u6301\u66f4\u6539\u901a\u77e5"),(0,o.kt)("li",{parentName:"ul"},"\u652f\u6301\u547d\u540d\u9009\u9879"))),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},"\u7f3a\u70b9"),(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"\u9700\u8981\u5b9a\u4e49\u5bf9\u5e94\u7c7b\u578b"),(0,o.kt)("li",{parentName:"ul"},"\u9700\u8981\u5728\u542f\u52a8\u65f6\u6ce8\u518c")))),(0,o.kt)("h2",{id:"4211-\u53cd\u9988\u4e0e\u5efa\u8bae"},"4.2.11 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,o.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,o.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))),(0,o.kt)("hr",null),(0,o.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e86\u89e3\u66f4\u591a")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u60f3\u4e86\u89e3\u66f4\u591a ",(0,o.kt)("inlineCode",{parentName:"p"},"\u9009\u9879")," \u77e5\u8bc6\u53ef\u67e5\u9605 ",(0,o.kt)("a",{parentName:"p",href:"https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/configuration/options?view=aspnetcore-5.0"},"ASP.NET Core - \u9009\u9879")," \u7ae0\u8282\u3002"))))}g.isMDXComponent=!0},6010:function(n,e,t){function i(n){var e,t,a="";if("string"==typeof n||"number"==typeof n)a+=n;else if("object"==typeof n)if(Array.isArray(n))for(e=0;e=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var p=i.createContext({}),m=function(e){var t=i.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},d=function(e){var t=m(e.components);return i.createElement(p.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},s=i.forwardRef((function(e,t){var n=e.components,r=e.mdxType,a=e.originalType,p=e.parentName,d=o(e,["components","mdxType","originalType","parentName"]),s=m(n),c=r,k=s["".concat(p,".").concat(c)]||s[c]||u[c]||a;return n?i.createElement(k,l(l({ref:t},d),{},{components:n})):i.createElement(k,l({ref:t},d))}));function c(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var a=n.length,l=new Array(a);l[0]=s;var o={};for(var p in t)hasOwnProperty.call(t,p)&&(o[p]=t[p]);o.originalType=e,o.mdxType="string"==typeof e?e:r,l[1]=o;for(var m=2;m getall \u4f1a\u88ab\u590d\u5199\u4e3a `[HttpHead]`\n [ "other", "PUT" ] // => \u65b0\u589e\u4e00\u6761\u65b0\u89c4\u5219\uff0c\u6bd4\u5982\uff0c\u4e00 `[other]` \u5f00\u5934\u4f1a\u8f6c\u6362\u4e3a `[HttpPut]` \u8bf7\u6c42\n ]\n }\n')))))),(0,a.kt)("h2",{id:"53-\u914d\u7f6e\u793a\u4f8b"},"5.3 \u914d\u7f6e\u793a\u4f8b"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-json"},'{\n "DynamicApiControllerSettings": {\n "SupportedMvcController": true\n }\n}\n')))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/0ff68343.11f32ec0.js b/handbook/build/assets/js/0ff68343.11f32ec0.js new file mode 100644 index 00000000000..ad809526013 --- /dev/null +++ b/handbook/build/assets/js/0ff68343.11f32ec0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[2019],{3905:function(e,t,n){n.d(t,{Zo:function(){return d},kt:function(){return c}});var i=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function l(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var p=i.createContext({}),m=function(e){var t=i.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},d=function(e){var t=m(e.components);return i.createElement(p.Provider,{value:t},e.children)},s={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},u=i.forwardRef((function(e,t){var n=e.components,r=e.mdxType,a=e.originalType,p=e.parentName,d=o(e,["components","mdxType","originalType","parentName"]),u=m(n),c=r,k=u["".concat(p,".").concat(c)]||u[c]||s[c]||a;return n?i.createElement(k,l(l({ref:t},d),{},{components:n})):i.createElement(k,l({ref:t},d))}));function c(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var a=n.length,l=new Array(a);l[0]=u;var o={};for(var p in t)hasOwnProperty.call(t,p)&&(o[p]=t[p]);o.originalType=e,o.mdxType="string"==typeof e?e:r,l[1]=o;for(var m=2;m getall \u4f1a\u88ab\u590d\u5199\u4e3a `[HttpHead]`\n [ "other", "PUT" ] // => \u65b0\u589e\u4e00\u6761\u65b0\u89c4\u5219\uff0c\u6bd4\u5982\uff0c\u4e00 `[other]` \u5f00\u5934\u4f1a\u8f6c\u6362\u4e3a `[HttpPut]` \u8bf7\u6c42\n ]\n }\n')))))),(0,a.kt)("h2",{id:"53-\u914d\u7f6e\u793a\u4f8b"},"5.3 \u914d\u7f6e\u793a\u4f8b"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-json"},'{\n "DynamicApiControllerSettings": {\n "SupportedMvcController": true\n }\n}\n')))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/1181.b44d8966.js b/handbook/build/assets/js/1181.b44d8966.js deleted file mode 100644 index a21d35b2090..00000000000 --- a/handbook/build/assets/js/1181.b44d8966.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[1181,5965],{4608:function(e,t,r){r.r(t);var l=r(7294),a=r(6199),n=r(4973);t.default=function(){return l.createElement(a.Z,{title:(0,n.I)({id:"theme.NotFound.title",message:"Page Not Found"})},l.createElement("main",{className:"container margin-vert--xl"},l.createElement("div",{className:"row"},l.createElement("div",{className:"col col--6 col--offset-3"},l.createElement("h1",{className:"hero__title"},l.createElement(n.Z,{id:"theme.NotFound.title",description:"The title of the 404 page"},"Page Not Found")),l.createElement("p",null,l.createElement(n.Z,{id:"theme.NotFound.p1",description:"The first paragraph of the 404 page"},"We could not find what you were looking for.")),l.createElement("p",null,l.createElement(n.Z,{id:"theme.NotFound.p2",description:"The 2nd paragraph of the 404 page"},"Please contact the owner of the site that linked you to the original URL and let them know their link is broken."))))))}},546:function(e,t,r){r.d(t,{Z:function(){return h}});var l=r(7462),a=r(3366),n=r(7294),o=r(6010),c=r(6742),i=r(3018),m=r(4996),s="footerLogoLink_qW4Z",f=["to","href","label","prependBaseUrlToHref"];function u(e){var t=e.to,r=e.href,o=e.label,i=e.prependBaseUrlToHref,s=(0,a.Z)(e,f),u=(0,m.Z)(t),d=(0,m.Z)(r,{forcePrependBaseUrl:!0});return n.createElement(c.Z,(0,l.Z)({className:"footer__link-item"},r?{target:"_blank",rel:"noopener noreferrer",href:i?d:r}:{to:u},s),o)}var d=function(e){var t=e.url,r=e.alt;return n.createElement("img",{className:"footer__logo",alt:r,src:t,style:{background:"#fff",padding:"5px 10px"}})};var h=function(){var e=(0,i.LU)().footer,t=e||{},r=t.copyright,l=t.links,a=void 0===l?[]:l,c=t.logo,f=void 0===c?{}:c,h=(0,m.Z)(f.src);return e?n.createElement("footer",{className:(0,o.Z)("footer",{"footer--dark":"dark"===e.style})},n.createElement("div",{className:"container"},a&&a.length>0&&n.createElement("div",{className:"row footer__links"},a.map((function(e,t){return n.createElement("div",{key:t,className:"col footer__col"},null!=e.title?n.createElement("h4",{className:"footer__title"},e.title):null,null!=e.items&&Array.isArray(e.items)&&e.items.length>0?n.createElement("ul",{className:"footer__items"},e.items.map((function(e,t){return e.html?n.createElement("li",{key:t,className:"footer__item",dangerouslySetInnerHTML:{__html:e.html}}):n.createElement("li",{key:e.href||e.to,className:"footer__item"},n.createElement(u,e))}))):null)}))),(f||r)&&n.createElement("div",{className:"footer__bottom text--center"},f&&f.src&&n.createElement("div",{className:"margin-bottom--sm"},f.href?n.createElement("a",{href:f.href,target:"_blank",rel:"noopener noreferrer",className:s},n.createElement(d,{alt:f.alt,url:h})):n.createElement(d,{alt:f.alt,url:h})),r?n.createElement("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:r}}):null))):null}}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/1181.ede0c9a4.js b/handbook/build/assets/js/1181.ede0c9a4.js new file mode 100644 index 00000000000..bbf7dd7a6f2 --- /dev/null +++ b/handbook/build/assets/js/1181.ede0c9a4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[1181,613],{4608:function(e,t,r){r.r(t);var l=r(7294),a=r(4328),n=r(4973);t.default=function(){return l.createElement(a.Z,{title:(0,n.I)({id:"theme.NotFound.title",message:"Page Not Found"})},l.createElement("main",{className:"container margin-vert--xl"},l.createElement("div",{className:"row"},l.createElement("div",{className:"col col--6 col--offset-3"},l.createElement("h1",{className:"hero__title"},l.createElement(n.Z,{id:"theme.NotFound.title",description:"The title of the 404 page"},"Page Not Found")),l.createElement("p",null,l.createElement(n.Z,{id:"theme.NotFound.p1",description:"The first paragraph of the 404 page"},"We could not find what you were looking for.")),l.createElement("p",null,l.createElement(n.Z,{id:"theme.NotFound.p2",description:"The 2nd paragraph of the 404 page"},"Please contact the owner of the site that linked you to the original URL and let them know their link is broken."))))))}},546:function(e,t,r){r.d(t,{Z:function(){return h}});var l=r(7462),a=r(3366),n=r(7294),o=r(6010),c=r(6742),i=r(941),m=r(4996),s="footerLogoLink_qW4Z",f=["to","href","label","prependBaseUrlToHref"];function u(e){var t=e.to,r=e.href,o=e.label,i=e.prependBaseUrlToHref,s=(0,a.Z)(e,f),u=(0,m.Z)(t),d=(0,m.Z)(r,{forcePrependBaseUrl:!0});return n.createElement(c.Z,(0,l.Z)({className:"footer__link-item"},r?{target:"_blank",rel:"noopener noreferrer",href:i?d:r}:{to:u},s),o)}var d=function(e){var t=e.url,r=e.alt;return n.createElement("img",{className:"footer__logo",alt:r,src:t,style:{background:"#fff",padding:"5px 10px"}})};var h=function(){var e=(0,i.LU)().footer,t=e||{},r=t.copyright,l=t.links,a=void 0===l?[]:l,c=t.logo,f=void 0===c?{}:c,h=(0,m.Z)(f.src);return e?n.createElement("footer",{className:(0,o.Z)("footer",{"footer--dark":"dark"===e.style})},n.createElement("div",{className:"container"},a&&a.length>0&&n.createElement("div",{className:"row footer__links"},a.map((function(e,t){return n.createElement("div",{key:t,className:"col footer__col"},null!=e.title?n.createElement("h4",{className:"footer__title"},e.title):null,null!=e.items&&Array.isArray(e.items)&&e.items.length>0?n.createElement("ul",{className:"footer__items"},e.items.map((function(e,t){return e.html?n.createElement("li",{key:t,className:"footer__item",dangerouslySetInnerHTML:{__html:e.html}}):n.createElement("li",{key:e.href||e.to,className:"footer__item"},n.createElement(u,e))}))):null)}))),(f||r)&&n.createElement("div",{className:"footer__bottom text--center"},f&&f.src&&n.createElement("div",{className:"margin-bottom--sm"},f.href?n.createElement("a",{href:f.href,target:"_blank",rel:"noopener noreferrer",className:s},n.createElement(d,{alt:f.alt,url:h})):n.createElement(d,{alt:f.alt,url:h})),r?n.createElement("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:r}}):null))):null}}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/14cdac51.5acd87a6.js b/handbook/build/assets/js/14cdac51.5acd87a6.js deleted file mode 100644 index 84384de9888..00000000000 --- a/handbook/build/assets/js/14cdac51.5acd87a6.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[4474],{3905:function(t,e,n){n.d(e,{Zo:function(){return m},kt:function(){return u}});var a=n(7294);function o(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function i(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,a)}return n}function r(t){for(var e=1;e=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}var s=a.createContext({}),c=function(t){var e=a.useContext(s),n=e;return t&&(n="function"==typeof t?t(e):r(r({},e),t)),n},m=function(t){var e=c(t.components);return a.createElement(s.Provider,{value:e},t.children)},p={inlineCode:"code",wrapper:function(t){var e=t.children;return a.createElement(a.Fragment,{},e)}},d=a.forwardRef((function(t,e){var n=t.components,o=t.mdxType,i=t.originalType,s=t.parentName,m=l(t,["components","mdxType","originalType","parentName"]),d=c(n),u=o,C=d["".concat(s,".").concat(u)]||d[u]||p[u]||i;return n?a.createElement(C,r(r({ref:e},m),{},{components:n})):a.createElement(C,r({ref:e},m))}));function u(t,e){var n=arguments,o=e&&e.mdxType;if("string"==typeof t||o){var i=n.length,r=new Array(i);r[0]=d;var l={};for(var s in e)hasOwnProperty.call(e,s)&&(l[s]=e[s]);l.originalType=t,l.mdxType="string"==typeof t?t:o,r[1]=l;for(var c=2;cIEntity \u793a\u8303\uff1a",id:"9322-ientity-\u793a\u8303\uff1a",children:[]},{value:"9.3.2.3 EntityBase \u793a\u8303\uff1a",id:"9323-entitybase-\u793a\u8303\uff1a",children:[]},{value:"9.3.2.4 Entity \u793a\u8303\uff1a",id:"9324-entity-\u793a\u8303\uff1a",children:[]},{value:"9.3.2.5 EntityNotKey \u793a\u8303\uff1a",id:"9325-entitynotkey-\u793a\u8303\uff1a",children:[]}]},{value:"9.3.3 \u81ea\u5b9a\u4e49\u516c\u5171\u5b9e\u4f53",id:"933-\u81ea\u5b9a\u4e49\u516c\u5171\u5b9e\u4f53",children:[]},{value:"9.3.4 \u6570\u636e\u5e93\u5b9e\u4f53\u914d\u7f6e",id:"934-\u6570\u636e\u5e93\u5b9e\u4f53\u914d\u7f6e",children:[{value:"9.3.4.1 \u5728\u6570\u636e\u5e93\u5b9e\u4f53\u4e2d\u914d\u7f6e",id:"9341-\u5728\u6570\u636e\u5e93\u5b9e\u4f53\u4e2d\u914d\u7f6e",children:[]},{value:"9.3.4.2 \u5728\u4efb\u4f55\u5b9e\u4f8b\u7c7b\u4e2d\u914d\u7f6e",id:"9342-\u5728\u4efb\u4f55\u5b9e\u4f8b\u7c7b\u4e2d\u914d\u7f6e",children:[]}]},{value:"9.3.5 \u6570\u636e\u5e93\u5b9e\u4f53\u914d\u7f6e\u8bf4\u660e",id:"935-\u6570\u636e\u5e93\u5b9e\u4f53\u914d\u7f6e\u8bf4\u660e",children:[]},{value:"9.3.6 \u914d\u7f6e\u5217\u540d\u53ca\u5217\u7c7b\u578b",id:"936-\u914d\u7f6e\u5217\u540d\u53ca\u5217\u7c7b\u578b",children:[]},{value:"9.3.7 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"937-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],p={toc:m};function d(t){var e=t.components,n=(0,o.Z)(t,r);return(0,i.kt)("wrapper",(0,a.Z)({},p,n,{components:e,mdxType:"MDXLayout"}),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u63d0\u9192")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u4e00\u65e6\u5b9a\u4e49\u4e86\u5b9e\u4f53\u6216\u6539\u53d8\u4e86\u5b9e\u4f53\u7ed3\u6784\u6216\u5b9e\u4f53\u914d\u7f6e\uff0c\u9700\u8981\u91cd\u65b0\u6267\u884c ",(0,i.kt)("inlineCode",{parentName:"p"},"Add-Migration")," \u548c ",(0,i.kt)("inlineCode",{parentName:"p"},"Update-Database")," \u547d\u4ee4\u3002"))),(0,i.kt)("h2",{id:"931-\u6570\u636e\u5e93\u5b9e\u4f53"},"9.3.1 \u6570\u636e\u5e93\u5b9e\u4f53"),(0,i.kt)("p",null,"\u5728\u9762\u5411\u5bf9\u8c61\u5f00\u53d1\u601d\u60f3\u4e2d\uff0c\u6700\u91cd\u8981\u5c24\u4e3a",(0,i.kt)("strong",{parentName:"p"},"\u5bf9\u8c61"),"\u4e8c\u5b57\uff0c\u5728 .NET \u5f00\u53d1\u8fc7\u53bb\uff0c\u64cd\u4f5c\u6570\u636e\u5e93\u5f80\u5f80\u91c7\u7528 ",(0,i.kt)("inlineCode",{parentName:"p"},"DataTable")," \u548c ",(0,i.kt)("inlineCode",{parentName:"p"},"DataSet")," \u6765\u63a5\u6536\u6570\u636e\u5e93\u8fd4\u56de\u7ed3\u679c\u96c6\uff0c\u800c\u64cd\u4f5c\u6570\u636e\u5e93\u4e5f\u79bb\u4e0d\u5f00\u624b\u5199 ",(0,i.kt)("inlineCode",{parentName:"p"},"sql")," \u8bed\u53e5\u3002"),(0,i.kt)("p",null,"\u5728\u8fc7\u53bb\u9762\u5411\u8fc7\u7a0b\u548c\u5e94\u7528\u4e0d\u53d1\u8fbe\u7684\u65f6\u4ee3\uff0c\u8fd9\u4e9b\u64cd\u4f5c\u786e\u5b9e\u597d\u4f7f\u3002\u7136\u540e\u968f\u7740\u4e2d\u56fd\u4e92\u8054\u7f51\u7f51\u6c11\u7684\u6fc0\u589e\uff0c\u7535\u5b50\u5316\u65f6\u4ee3\u7684\u5230\u6765\uff0c\u5404\u884c\u5404\u4e1a\u5bf9\u5e94\u7528\u9700\u6c42\u4e5f\u8fbe\u5230\u4e86\u524d\u6240\u672a\u6709\u7684\u91cf\u7ea7\u3002"),(0,i.kt)("p",null,"\u6240\u4ee5\uff0c\u5728\u8fc7\u53bb\u624b\u5199 ",(0,i.kt)("inlineCode",{parentName:"p"},"sql")," \u7684\u65f6\u4ee3\u5404\u79cd\u95ee\u9898\u663e\u9732\u65e0\u7591\uff1a"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"\u7a0b\u5e8f\u5458\u80fd\u529b\u53c2\u5dee\u4e0d\u9f50\uff0c\u5199\u51fa\u7684 ",(0,i.kt)("inlineCode",{parentName:"li"},"sql")," \u6027\u80fd\u81ea\u7136\u4e5f\u5929\u5dee\u5730\u522b"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"sql")," \u5c5e\u4e8e\u5b57\u7b26\u4e32\u786c\u7f16\u7a0b\uff0c\u540e\u671f\u7ef4\u62a4\u96be\u4e0a\u52a0\u96be"),(0,i.kt)("li",{parentName:"ul"},"\u8bb8\u591a\u5355\u8868\u751a\u81f3\u591a\u8868\u7ed3\u6784\u4e00\u81f4\uff0c\u51fa\u73b0\u5927\u91cf\u91cd\u590d ",(0,i.kt)("inlineCode",{parentName:"li"},"sql")," \u4ee3\u7801"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"sql")," \u672c\u8eab\u5728\u4e0d\u540c\u7684\u6570\u636e\u5e93\u63d0\u4f9b\u5668\u4e2d\u5199\u6cd5\u6709\u5dee\uff0c\u540e\u7eed\u8fc1\u79fb\u5934\u75db\u4e0d\u5df2")),(0,i.kt)("p",null,"\u5f53\u7136\uff0c",(0,i.kt)("inlineCode",{parentName:"p"},"sql")," \u662f\u65f6\u4ee3\u7684\u4ea7\u7269\uff0c\u6211\u4eec\u4e5f\u79bb\u4e0d\u5f00 ",(0,i.kt)("inlineCode",{parentName:"p"},"sql"),"\uff0c\u4f46\u5bf9\u4e8e\u5927\u591a\u6570\u7a0b\u5e8f\u5458\u548c\u9879\u76ee\u6765\u8bf4\uff0c",(0,i.kt)("inlineCode",{parentName:"p"},"sql")," \u672a\u5fc5\u80fd\u591f\u5e26\u7ed9\u4ed6\u4eec\u591a\u5927\u7684\u6548\u76ca\u3002"),(0,i.kt)("p",null,"\u6240\u4ee5\uff0c",(0,i.kt)("inlineCode",{parentName:"p"},"ORM")," \u5c31\u8bde\u751f\u4e86\uff0c\u6240\u8c13\u7684 ",(0,i.kt)("inlineCode",{parentName:"p"},"ORM")," \u5c31\u662f\u5bf9\u8c61\u5173\u7cfb\u6620\u5c04\uff0c\u82f1\u6587\uff1a",(0,i.kt)("inlineCode",{parentName:"p"},"Object Relational Mapping"),"\uff0c\u7b80\u5355\u70b9\u8bf4\uff0c",(0,i.kt)("inlineCode",{parentName:"p"},"ORM")," \u6839\u636e\u7279\u6709\u7684 ",(0,i.kt)("inlineCode",{parentName:"p"},"POCO \u8d2b\u8840\u6a21\u578b")," \u89c4\u5219\u751f\u6210 ",(0,i.kt)("inlineCode",{parentName:"p"},"sql")," \u8bed\u53e5\u3002\u5927\u5927\u907f\u514d\u4e86\u91cd\u590d ",(0,i.kt)("inlineCode",{parentName:"p"},"sql")," \u548c ",(0,i.kt)("inlineCode",{parentName:"p"},"sql")," \u80fd\u529b\u53c2\u5dee\u4e0d\u9f50\u7b49\u95ee\u9898\u3002\uff08\u5f53\u7136 ",(0,i.kt)("inlineCode",{parentName:"p"},"ORM")," \u4f5c\u8005 ",(0,i.kt)("inlineCode",{parentName:"p"},"sql")," \u80fd\u529b\u4e5f\u4f1a\u5f71\u54cd\u6700\u7ec8\u6027\u80fd\uff09"),(0,i.kt)("p",null,"\u4e0a\u9762\u6240\u8bf4\u7684 ",(0,i.kt)("inlineCode",{parentName:"p"},"POCO")," \u8d2b\u8840\u6a21\u578b\u6b63\u662f\u6211\u4eec\u672c\u7ae0\u8282\u7684 ",(0,i.kt)("strong",{parentName:"p"},"\u6570\u636e\u5e93\u5b9e\u4f53"),"\u3002"),(0,i.kt)("p",null,"\u7b80\u5355\u6765\u8bf4\uff0c\u6570\u636e\u5e93\u5b9e\u4f53\u5c31\u662f\u6570\u636e\u5e93\u8868\u7684\u7c7b\u8868\u73b0\uff0c\u901a\u8fc7\u4e00\u5b9a\u7684\u89c4\u5219\u4f7f\u8fd9\u4e2a\u7c7b\u80fd\u591f\u4e00\u4e00\u5bf9\u5e94\u8868\u7ed3\u6784\u3002\u901a\u5e38\u8fd9\u6837\u7684\u7c7b\u4e5f\u79f0\u4e3a\uff1a",(0,i.kt)("inlineCode",{parentName:"p"},"POCO")," \u8d2b\u8840\u6a21\u578b\uff0c\u4e5f\u5c31\u662f\u53ea\u6709\u5b9a\u4e49\uff0c\u6ca1\u6709\u884c\u4e3a\u3002"),(0,i.kt)("h2",{id:"932-\u5982\u4f55\u5b9a\u4e49\u5b9e\u4f53"},"9.3.2 \u5982\u4f55\u5b9a\u4e49\u5b9e\u4f53"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u591a\u79cd\u5b9a\u4e49\u5b9e\u4f53\u7684\u63a5\u53e3\u4f9d\u8d56\uff1a"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"IEntity"),"\uff1a\u5b9e\u4f53\u57fa\u63a5\u53e3\uff0c\u662f\u6240\u6709\u5b9e\u4f53\u7684\u57fa\u63a5\u53e3"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"IEntityNotKey"),"\uff1a\u65e0\u952e\u5b9e\u4f53\u63a5\u53e3\uff0c\u4e5f\u5c31\u662f\u89c6\u56fe\u3001\u5b58\u50a8\u8fc7\u7a0b\u3001\u51fd\u6570\u4f9d\u8d56\u63a5\u53e3"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"EntityBase"),"\uff1a\u5b9e\u4f53\u57fa\u62bd\u8c61\u7c7b\uff0c\u5185\u7f6e\u4e86 ",(0,i.kt)("inlineCode",{parentName:"li"},"Id"),"\uff0c",(0,i.kt)("inlineCode",{parentName:"li"},"TenantId")," \u5b57\u6bb5"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"Entity"),"\uff1a\u5b9e\u4f53\u901a\u7528\u62bd\u8c61\u7c7b\uff0c\u7ee7\u627f\u81ea ",(0,i.kt)("inlineCode",{parentName:"li"},"EntityBase"),"\uff0c\u540c\u65f6\u5185\u7f6e ",(0,i.kt)("inlineCode",{parentName:"li"},"CreatedTime"),"\uff0c",(0,i.kt)("inlineCode",{parentName:"li"},"UpdatedTime")," \u5b57\u6bb5"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"EntityNotKey"),"\uff1a\u65e0\u952e\u5b9e\u4f53\u62bd\u8c61\u7c7b\uff0c\u89c6\u56fe\u3001\u5b58\u50a8\u8fc7\u7a0b\u3001\u51fd\u6570\u4f9d\u8d56\u62bd\u8c61\u7c7b")),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u5b9e\u4f53\u5b9a\u4e49\u4f4d\u7f6e")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\u6709\u7ea6\u5b9a\uff0c\u5b9e\u4f53\u7edf\u4e00\u5b9a\u4e49\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion.Core")," \u5c42\u3002"))),(0,i.kt)("h3",{id:"9321-\u5b9e\u4f53\u7ee7\u627f\u9009\u7528\u539f\u5219"},"9.3.2.1 \u5b9e\u4f53\u7ee7\u627f\u9009\u7528\u539f\u5219"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"\u5982\u679c\u4f60\u4e0d\u9700\u8981 ",(0,i.kt)("inlineCode",{parentName:"li"},"Furion")," \u4e3a\u5b9e\u4f53\u6dfb\u52a0\u4efb\u4f55\u5185\u7f6e\u7279\u6027\uff0c\u9009\u7528 ",(0,i.kt)("inlineCode",{parentName:"li"},"IEntity"),"\uff0c\u65e0\u952e\u5b9e\u4f53\u9009\u7528 ",(0,i.kt)("inlineCode",{parentName:"li"},"IEntityNotKey")),(0,i.kt)("li",{parentName:"ul"},"\u5982\u679c\u4f60\u53ea\u9700\u8981 ",(0,i.kt)("inlineCode",{parentName:"li"},"Id")," \u5c5e\u6027\uff0c\u9009\u7528 ",(0,i.kt)("inlineCode",{parentName:"li"},"EntityBase")),(0,i.kt)("li",{parentName:"ul"},"\u5982\u679c\u4f60\u9700\u8981 ",(0,i.kt)("inlineCode",{parentName:"li"},"Furion")," \u4e3a\u4f60\u81ea\u52a8\u6dfb\u52a0\u5e38\u7528\u5b57\u6bb5\uff0c\u5219\u9009\u7528 ",(0,i.kt)("inlineCode",{parentName:"li"},"Entity")),(0,i.kt)("li",{parentName:"ul"},"\u5982\u679c\u4f60\u9700\u8981\u89c6\u56fe\u3001\u5b58\u50a8\u8fc7\u7a0b\u3001\u51fd\u6570\u53ef\u4ee5\u901a\u8fc7 ",(0,i.kt)("inlineCode",{parentName:"li"},"DbSet")," \u64cd\u4f5c\uff0c\u5219\u7ee7\u627f ",(0,i.kt)("inlineCode",{parentName:"li"},"EntityNotKey"))),(0,i.kt)("h3",{id:"9322-ientity-\u793a\u8303\uff1a"},"9.3.2.2 ",(0,i.kt)("inlineCode",{parentName:"h3"},"IEntity")," \u793a\u8303\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,5}","{1,5}":!0},"using Furion.DatabaseAccessor;\n\nnamespace Furion.Core\n{\n public class User : IEntity\n {\n /// \n /// \u624b\u5de5\u5b9a\u4e49 Id\n /// \n public int Id { get; set; }\n\n /// \n /// \u540d\u79f0\n /// \n public string Name { get; set; }\n }\n}\n")),(0,i.kt)("h3",{id:"9323-entitybase-\u793a\u8303\uff1a"},"9.3.2.3 ",(0,i.kt)("inlineCode",{parentName:"h3"},"EntityBase")," \u793a\u8303\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,5}","{1,5}":!0},"using Furion.DatabaseAccessor;\n\nnamespace Furion.Core\n{\n public class User : EntityBase\n {\n // \u65e0\u9700\u5b9a\u4e49 Id \u5c5e\u6027\n\n /// \n /// \u540d\u79f0\n /// \n public string Name { get; set; }\n }\n}\n")),(0,i.kt)("h3",{id:"9324-entity-\u793a\u8303\uff1a"},"9.3.2.4 ",(0,i.kt)("inlineCode",{parentName:"h3"},"Entity")," \u793a\u8303\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,5}","{1,5}":!0},"using Furion.DatabaseAccessor;\n\nnamespace Furion.Core\n{\n public class User : Entity\n {\n // \u65e0\u9700\u5b9a\u4e49 Id \u5c5e\u6027\n // \u5e76\u81ea\u52a8\u6dfb\u52a0 CreatedTime\uff0cUpdatedTime \u5c5e\u6027\n\n /// \n /// \u540d\u79f0\n /// \n public string Name { get; set; }\n }\n}\n")),(0,i.kt)("h3",{id:"9325-entitynotkey-\u793a\u8303\uff1a"},"9.3.2.5 ",(0,i.kt)("inlineCode",{parentName:"h3"},"EntityNotKey")," \u793a\u8303\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,5,7-9}","{1,5,7-9}":!0},'using Furion.DatabaseAccessor;\n\nnamespace Furion.Core\n{\n public class UserView : EntityNotKey\n {\n public UserView() : base("\u89c6\u56fe\u540d\u79f0")\n {\n }\n\n /// \n /// Id\n /// \n public int Id { get; set; }\n\n /// \n /// \u540d\u79f0\n /// \n public string Name { get; set; }\n }\n}\n')),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u7279\u522b\u6ce8\u610f")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\uff0c\u6570\u636e\u5e93\u5b9e\u4f53\u5fc5\u987b\u76f4\u63a5\u6216\u95f4\u63a5\u7ee7\u627f ",(0,i.kt)("inlineCode",{parentName:"p"},"IEntity")," \u624d\u80fd\u8fdb\u884c\u4ed3\u50a8\u7b49\u64cd\u4f5c\u3002"))),(0,i.kt)("h2",{id:"933-\u81ea\u5b9a\u4e49\u516c\u5171\u5b9e\u4f53"},"9.3.3 \u81ea\u5b9a\u4e49\u516c\u5171\u5b9e\u4f53"),(0,i.kt)("p",null,"\u5728\u5b9e\u9645\u9879\u76ee\u5f00\u53d1\u4e2d\uff0c\u6211\u4eec\u901a\u5e38\u6bcf\u4e2a\u5e94\u7528\u7684\u6570\u636e\u5e93\u8868\u90fd\u6709\u4e00\u4e9b\u516c\u5171\u7684\u7c7b\uff0c\u6bd4\u5982\u521b\u5efa\u4eba\uff0c\u521b\u5efa\u65f6\u95f4\u7b49\uff0c\u8fd9\u4e2a\u65f6\u5019\u6211\u4eec\u5c31\u9700\u8981\u81ea\u5b9a\u4e49\u516c\u5171\u5b9e\u4f53\u7c7b\u4e86\u3002"),(0,i.kt)("p",null,"\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\uff0c\u521b\u5efa\u516c\u5171\u5b9e\u4f53\u7c7b\u9700\u8981\u6ee1\u8db3\u4ee5\u4e0b\u6761\u4ef6\uff1a"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"\u516c\u5171\u5b9e\u4f53\u7c7b",(0,i.kt)("strong",{parentName:"li"},"\u5fc5\u987b\u662f\u516c\u5f00\u4e14\u662f\u62bd\u8c61\u7c7b")),(0,i.kt)("li",{parentName:"ul"},"\u516c\u5171\u5b9e\u4f53\u7c7b\u5fc5\u987b\u542b\u6709\u65e0\u53c2\u6784\u9020\u51fd\u6570"),(0,i.kt)("li",{parentName:"ul"},"\u516c\u5171\u5b9e\u4f53\u7c7b\u5fc5\u987b\u63d0\u4f9b\u6570\u636e\u5e93\u5b9a\u4f4d\u5668\u7684\u652f\u6301")),(0,i.kt)("p",null,"\u5982\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{83-91}","{83-91}":!0},"using System;\nusing System.ComponentModel.DataAnnotations;\nusing System.ComponentModel.DataAnnotations.Schema;\n\nnamespace Your.Namespace\n{\n public abstract class CommonEntity : CommonEntity\n {\n }\n\n public abstract class CommonEntity : CommonEntity\n {\n }\n\n public abstract class CommonEntity : PrivateCommonEntity\n where TDbContextLocator1 : class, IDbContextLocator\n {\n }\n\n public abstract class CommonEntity : PrivateCommonEntity\n where TDbContextLocator1 : class, IDbContextLocator\n where TDbContextLocator2 : class, IDbContextLocator\n {\n }\n\n public abstract class CommonEntity : PrivateCommonEntity\n where TDbContextLocator1 : class, IDbContextLocator\n where TDbContextLocator2 : class, IDbContextLocator\n where TDbContextLocator3 : class, IDbContextLocator\n {\n }\n\n public abstract class CommonEntity : PrivateCommonEntity\n where TDbContextLocator1 : class, IDbContextLocator\n where TDbContextLocator2 : class, IDbContextLocator\n where TDbContextLocator3 : class, IDbContextLocator\n where TDbContextLocator4 : class, IDbContextLocator\n {\n }\n\n public abstract class CommonEntity : PrivateCommonEntity\n where TDbContextLocator1 : class, IDbContextLocator\n where TDbContextLocator2 : class, IDbContextLocator\n where TDbContextLocator3 : class, IDbContextLocator\n where TDbContextLocator4 : class, IDbContextLocator\n where TDbContextLocator5 : class, IDbContextLocator\n {\n }\n\n public abstract class CommonEntity : PrivateCommonEntity\n where TDbContextLocator1 : class, IDbContextLocator\n where TDbContextLocator2 : class, IDbContextLocator\n where TDbContextLocator3 : class, IDbContextLocator\n where TDbContextLocator4 : class, IDbContextLocator\n where TDbContextLocator5 : class, IDbContextLocator\n where TDbContextLocator6 : class, IDbContextLocator\n {\n }\n\n public abstract class CommonEntity : PrivateCommonEntity\n where TDbContextLocator1 : class, IDbContextLocator\n where TDbContextLocator2 : class, IDbContextLocator\n where TDbContextLocator3 : class, IDbContextLocator\n where TDbContextLocator4 : class, IDbContextLocator\n where TDbContextLocator5 : class, IDbContextLocator\n where TDbContextLocator6 : class, IDbContextLocator\n where TDbContextLocator7 : class, IDbContextLocator\n {\n }\n\n public abstract class CommonEntity : PrivateCommonEntity\n where TDbContextLocator1 : class, IDbContextLocator\n where TDbContextLocator2 : class, IDbContextLocator\n where TDbContextLocator3 : class, IDbContextLocator\n where TDbContextLocator4 : class, IDbContextLocator\n where TDbContextLocator5 : class, IDbContextLocator\n where TDbContextLocator6 : class, IDbContextLocator\n where TDbContextLocator7 : class, IDbContextLocator\n where TDbContextLocator8 : class, IDbContextLocator\n {\n }\n\n public abstract class PrivateCommonEntity : IPrivateEntity\n {\n // \u6ce8\u610f\u662f\u5728\u8fd9\u91cc\u5b9a\u4e49\u4f60\u7684\u516c\u5171\u5b9e\u4f53\n public virtual TKey Id { get; set; }\n\n public virtual DateTime CreatedTime { get; set; }\n\n // \u66f4\u591a\u5c5e\u6027\u5b9a\u4e49\n }\n}\n")),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u8bf4\u660e")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u901a\u8fc7\u4e0a\u9762\u7684\u683c\u5f0f\u5b9a\u4e49\u53ef\u4ee5\u5b8c\u7f8e\u7684\u652f\u6301\u591a\u6570\u636e\u5e93\u64cd\u4f5c\uff0c\u5efa\u8bae\u91c7\u7528\u8fd9\u79cd\u683c\u5f0f\uff0c\u800c\u4e14\u6240\u6709\u7684\u516c\u5171\u5c5e\u6027\u90fd\u5e94\u8be5\u5b9a\u4e49\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"PrivateXXXX")," ",(0,i.kt)("inlineCode",{parentName:"p"},"\u79c1"),"\u6709\u7c7b\u4e2d\u3002"))),(0,i.kt)("h2",{id:"934-\u6570\u636e\u5e93\u5b9e\u4f53\u914d\u7f6e"},"9.3.4 \u6570\u636e\u5e93\u5b9e\u4f53\u914d\u7f6e"),(0,i.kt)("p",null,"\u5728\u8fc7\u53bb\u7684 ",(0,i.kt)("inlineCode",{parentName:"p"},"EF Core")," \u9879\u76ee\u5f00\u53d1\u4e2d\uff0c\u6570\u636e\u5e93\u5b9e\u4f53\u914d\u7f6e\u9700\u8981\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"DbContext")," \u7684 ",(0,i.kt)("inlineCode",{parentName:"p"},"OnModelCreating")," \u4e2d\u914d\u7f6e\u3002",(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u4e3a\u4e86\u7b80\u5316\u914d\u7f6e\u548c\u63d0\u9ad8\u5f00\u53d1\u6548\u7387\uff0c\u62bd\u8c61\u51fa\u4e86 ",(0,i.kt)("inlineCode",{parentName:"p"},"IEntityTypeBuilder")," \u63a5\u53e3\u3002"),(0,i.kt)("p",null,"\u901a\u8fc7 ",(0,i.kt)("inlineCode",{parentName:"p"},"IEntityTypeBuilder")," \u63a5\u53e3\uff0c\u6211\u4eec\u65e0\u9700\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"DbContext")," \u7684 ",(0,i.kt)("inlineCode",{parentName:"p"},"OnModelCreating")," \u4e2d\u914d\u7f6e\uff0c\u53ef\u5728\u4efb\u610f\u5730\u65b9\u914d\u7f6e\u3002"),(0,i.kt)("h3",{id:"9341-\u5728\u6570\u636e\u5e93\u5b9e\u4f53\u4e2d\u914d\u7f6e"},"9.3.4.1 \u5728\u6570\u636e\u5e93\u5b9e\u4f53\u4e2d\u914d\u7f6e"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,5,20-25}","{1,5,20-25}":!0},"using Furion.DatabaseAccessor;\nusing Microsoft.EntityFrameworkCore;\nusing Microsoft.EntityFrameworkCore.Metadata.Builders;\nusing System;\n\nnamespace Furion.Core\n{\n public class User : Entity, IEntityTypeBuilder\n {\n /// \n /// \u540d\u79f0\n /// \n public string Name { get; set; }\n\n /// \n /// \u5e74\u9f84\n /// \n public int Age { get; set; }\n\n // \u914d\u7f6e\u6570\u636e\u5e93\u5b9e\u4f53\n public void Configure(EntityTypeBuilder entityBuilder, DbContext dbContext, Type dbContextLocator)\n {\n entityBuilder.HasKey(u => u.Id);\n entityBuilder.HasIndex(u => u.Name);\n }\n }\n}\n")),(0,i.kt)("h3",{id:"9342-\u5728\u4efb\u4f55\u5b9e\u4f8b\u7c7b\u4e2d\u914d\u7f6e"},"9.3.4.2 \u5728\u4efb\u4f55\u5b9e\u4f8b\u7c7b\u4e2d\u914d\u7f6e"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,8,10-14}","{1,8,10-14}":!0},"using Furion.DatabaseAccessor;\nusing Microsoft.EntityFrameworkCore;\nusing Microsoft.EntityFrameworkCore.Metadata.Builders;\nusing System;\n\nnamespace Furion.Core\n{\n public class SomeClass : IEntityTypeBuilder\n {\n public void Configure(EntityTypeBuilder entityBuilder, DbContext dbContext, Type dbContextLocator)\n {\n entityBuilder.HasKey(u => u.Id);\n entityBuilder.HasIndex(u => u.Name);\n }\n }\n}\n")),(0,i.kt)("p",null,"\u5982\u4e0a\u9762\u4f8b\u5b50\uff0c\u901a\u8fc7 ",(0,i.kt)("inlineCode",{parentName:"p"},"SomeClass")," \u914d\u7f6e ",(0,i.kt)("inlineCode",{parentName:"p"},"User")," \u6570\u636e\u5e93\u5b9e\u4f53\u3002"),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u66f4\u591a\u77e5\u8bc6")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u5982\u9700\u4e86\u89e3\u5b9e\u4f53\u914d\u7f6e\u652f\u6301\u54ea\u4e9b\u914d\u7f6e\u53ef\u67e5\u9605 ",(0,i.kt)("a",{parentName:"p",href:"https://docs.microsoft.com/zh-cn/ef/core/modeling/"},"\u3010EFCore - \u521b\u5efa\u6a21\u578b\u3011")," \u7ae0\u8282\u3002"))),(0,i.kt)("h2",{id:"935-\u6570\u636e\u5e93\u5b9e\u4f53\u914d\u7f6e\u8bf4\u660e"},"9.3.5 \u6570\u636e\u5e93\u5b9e\u4f53\u914d\u7f6e\u8bf4\u660e"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4f1a\u81ea\u52a8\u626b\u63cf\u6240\u6709\u7ee7\u627f ",(0,i.kt)("inlineCode",{parentName:"p"},"IEntity")," \u63a5\u53e3\u7684\u7c7b\u8fdb\u884c ",(0,i.kt)("inlineCode",{parentName:"p"},"DbSet")," \u6ce8\u518c\uff0c\u4e5f\u5c31\u662f\u5b9e\u73b0\u81ea\u52a8\u914d\u7f6e ",(0,i.kt)("inlineCode",{parentName:"p"},"DbContext")," \u7684 ",(0,i.kt)("inlineCode",{parentName:"p"},"OnModelCreating"),"\u3002"),(0,i.kt)("p",null,"\u5982\u679c\u9700\u8981\u8df3\u8fc7\u81ea\u52a8\u6ce8\u518c\uff0c\u53ea\u9700\u8981\u8d34 ",(0,i.kt)("inlineCode",{parentName:"p"},"[Manual]")," \u6216 ",(0,i.kt)("inlineCode",{parentName:"p"},"[SuppressSniffer]")," \u7279\u6027\u5373\u53ef\u3002\u4e00\u65e6\u8d34\u4e86\u6b64\u7279\u6027\uff0c\u90a3\u4e48\u5c31\u9700\u8981\u624b\u52a8\u914d\u7f6e ",(0,i.kt)("inlineCode",{parentName:"p"},"DbContext")," \u7684 ",(0,i.kt)("inlineCode",{parentName:"p"},"OnModelCreating")),(0,i.kt)("h2",{id:"936-\u914d\u7f6e\u5217\u540d\u53ca\u5217\u7c7b\u578b"},"9.3.6 \u914d\u7f6e\u5217\u540d\u53ca\u5217\u7c7b\u578b"),(0,i.kt)("p",null,"\u6709\u65f6\u5019\u6211\u4eec\u9700\u8981\u624b\u52a8\u8bbe\u7f6e\u5217\u540d\u6216\u5217\u7c7b\u578b\uff0c\u6bd4\u5982 ",(0,i.kt)("inlineCode",{parentName:"p"},"decimal(18,2)"),"\uff0c\u8fd9\u65f6\u5019\u53ea\u9700\u8981\u5728\u5c5e\u6027\u4e0a\u9762\u8d34 ",(0,i.kt)("inlineCode",{parentName:"p"},'[Column("\u5217\u540d", TypeName="decimal(18,2)")]')," \u5373\u53ef\u3002"),(0,i.kt)("h2",{id:"937-\u53cd\u9988\u4e0e\u5efa\u8bae"},"9.3.7 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,i.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/14cdac51.ea13a2ca.js b/handbook/build/assets/js/14cdac51.ea13a2ca.js new file mode 100644 index 00000000000..e9f25ca7cf6 --- /dev/null +++ b/handbook/build/assets/js/14cdac51.ea13a2ca.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[4474],{3905:function(t,e,n){n.d(e,{Zo:function(){return m},kt:function(){return u}});var a=n(7294);function o(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function i(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,a)}return n}function r(t){for(var e=1;e=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}var s=a.createContext({}),c=function(t){var e=a.useContext(s),n=e;return t&&(n="function"==typeof t?t(e):r(r({},e),t)),n},m=function(t){var e=c(t.components);return a.createElement(s.Provider,{value:e},t.children)},p={inlineCode:"code",wrapper:function(t){var e=t.children;return a.createElement(a.Fragment,{},e)}},d=a.forwardRef((function(t,e){var n=t.components,o=t.mdxType,i=t.originalType,s=t.parentName,m=l(t,["components","mdxType","originalType","parentName"]),d=c(n),u=o,C=d["".concat(s,".").concat(u)]||d[u]||p[u]||i;return n?a.createElement(C,r(r({ref:e},m),{},{components:n})):a.createElement(C,r({ref:e},m))}));function u(t,e){var n=arguments,o=e&&e.mdxType;if("string"==typeof t||o){var i=n.length,r=new Array(i);r[0]=d;var l={};for(var s in e)hasOwnProperty.call(e,s)&&(l[s]=e[s]);l.originalType=t,l.mdxType="string"==typeof t?t:o,r[1]=l;for(var c=2;cIEntity \u793a\u8303\uff1a",id:"9322-ientity-\u793a\u8303\uff1a",children:[]},{value:"9.3.2.3 EntityBase \u793a\u8303\uff1a",id:"9323-entitybase-\u793a\u8303\uff1a",children:[]},{value:"9.3.2.4 Entity \u793a\u8303\uff1a",id:"9324-entity-\u793a\u8303\uff1a",children:[]},{value:"9.3.2.5 EntityNotKey \u793a\u8303\uff1a",id:"9325-entitynotkey-\u793a\u8303\uff1a",children:[]}]},{value:"9.3.3 \u81ea\u5b9a\u4e49\u516c\u5171\u5b9e\u4f53",id:"933-\u81ea\u5b9a\u4e49\u516c\u5171\u5b9e\u4f53",children:[]},{value:"9.3.4 \u6570\u636e\u5e93\u5b9e\u4f53\u914d\u7f6e",id:"934-\u6570\u636e\u5e93\u5b9e\u4f53\u914d\u7f6e",children:[{value:"9.3.4.1 \u5728\u6570\u636e\u5e93\u5b9e\u4f53\u4e2d\u914d\u7f6e",id:"9341-\u5728\u6570\u636e\u5e93\u5b9e\u4f53\u4e2d\u914d\u7f6e",children:[]},{value:"9.3.4.2 \u5728\u4efb\u4f55\u5b9e\u4f8b\u7c7b\u4e2d\u914d\u7f6e",id:"9342-\u5728\u4efb\u4f55\u5b9e\u4f8b\u7c7b\u4e2d\u914d\u7f6e",children:[]}]},{value:"9.3.5 \u6570\u636e\u5e93\u5b9e\u4f53\u914d\u7f6e\u8bf4\u660e",id:"935-\u6570\u636e\u5e93\u5b9e\u4f53\u914d\u7f6e\u8bf4\u660e",children:[]},{value:"9.3.6 \u914d\u7f6e\u5217\u540d\u53ca\u5217\u7c7b\u578b",id:"936-\u914d\u7f6e\u5217\u540d\u53ca\u5217\u7c7b\u578b",children:[]},{value:"9.3.7 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"937-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],p={toc:m};function d(t){var e=t.components,n=(0,o.Z)(t,r);return(0,i.kt)("wrapper",(0,a.Z)({},p,n,{components:e,mdxType:"MDXLayout"}),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u63d0\u9192")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u4e00\u65e6\u5b9a\u4e49\u4e86\u5b9e\u4f53\u6216\u6539\u53d8\u4e86\u5b9e\u4f53\u7ed3\u6784\u6216\u5b9e\u4f53\u914d\u7f6e\uff0c\u9700\u8981\u91cd\u65b0\u6267\u884c ",(0,i.kt)("inlineCode",{parentName:"p"},"Add-Migration")," \u548c ",(0,i.kt)("inlineCode",{parentName:"p"},"Update-Database")," \u547d\u4ee4\u3002"))),(0,i.kt)("h2",{id:"931-\u6570\u636e\u5e93\u5b9e\u4f53"},"9.3.1 \u6570\u636e\u5e93\u5b9e\u4f53"),(0,i.kt)("p",null,"\u5728\u9762\u5411\u5bf9\u8c61\u5f00\u53d1\u601d\u60f3\u4e2d\uff0c\u6700\u91cd\u8981\u5c24\u4e3a",(0,i.kt)("strong",{parentName:"p"},"\u5bf9\u8c61"),"\u4e8c\u5b57\uff0c\u5728 .NET \u5f00\u53d1\u8fc7\u53bb\uff0c\u64cd\u4f5c\u6570\u636e\u5e93\u5f80\u5f80\u91c7\u7528 ",(0,i.kt)("inlineCode",{parentName:"p"},"DataTable")," \u548c ",(0,i.kt)("inlineCode",{parentName:"p"},"DataSet")," \u6765\u63a5\u6536\u6570\u636e\u5e93\u8fd4\u56de\u7ed3\u679c\u96c6\uff0c\u800c\u64cd\u4f5c\u6570\u636e\u5e93\u4e5f\u79bb\u4e0d\u5f00\u624b\u5199 ",(0,i.kt)("inlineCode",{parentName:"p"},"sql")," \u8bed\u53e5\u3002"),(0,i.kt)("p",null,"\u5728\u8fc7\u53bb\u9762\u5411\u8fc7\u7a0b\u548c\u5e94\u7528\u4e0d\u53d1\u8fbe\u7684\u65f6\u4ee3\uff0c\u8fd9\u4e9b\u64cd\u4f5c\u786e\u5b9e\u597d\u4f7f\u3002\u7136\u540e\u968f\u7740\u4e2d\u56fd\u4e92\u8054\u7f51\u7f51\u6c11\u7684\u6fc0\u589e\uff0c\u7535\u5b50\u5316\u65f6\u4ee3\u7684\u5230\u6765\uff0c\u5404\u884c\u5404\u4e1a\u5bf9\u5e94\u7528\u9700\u6c42\u4e5f\u8fbe\u5230\u4e86\u524d\u6240\u672a\u6709\u7684\u91cf\u7ea7\u3002"),(0,i.kt)("p",null,"\u6240\u4ee5\uff0c\u5728\u8fc7\u53bb\u624b\u5199 ",(0,i.kt)("inlineCode",{parentName:"p"},"sql")," \u7684\u65f6\u4ee3\u5404\u79cd\u95ee\u9898\u663e\u9732\u65e0\u7591\uff1a"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"\u7a0b\u5e8f\u5458\u80fd\u529b\u53c2\u5dee\u4e0d\u9f50\uff0c\u5199\u51fa\u7684 ",(0,i.kt)("inlineCode",{parentName:"li"},"sql")," \u6027\u80fd\u81ea\u7136\u4e5f\u5929\u5dee\u5730\u522b"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"sql")," \u5c5e\u4e8e\u5b57\u7b26\u4e32\u786c\u7f16\u7a0b\uff0c\u540e\u671f\u7ef4\u62a4\u96be\u4e0a\u52a0\u96be"),(0,i.kt)("li",{parentName:"ul"},"\u8bb8\u591a\u5355\u8868\u751a\u81f3\u591a\u8868\u7ed3\u6784\u4e00\u81f4\uff0c\u51fa\u73b0\u5927\u91cf\u91cd\u590d ",(0,i.kt)("inlineCode",{parentName:"li"},"sql")," \u4ee3\u7801"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"sql")," \u672c\u8eab\u5728\u4e0d\u540c\u7684\u6570\u636e\u5e93\u63d0\u4f9b\u5668\u4e2d\u5199\u6cd5\u6709\u5dee\uff0c\u540e\u7eed\u8fc1\u79fb\u5934\u75db\u4e0d\u5df2")),(0,i.kt)("p",null,"\u5f53\u7136\uff0c",(0,i.kt)("inlineCode",{parentName:"p"},"sql")," \u662f\u65f6\u4ee3\u7684\u4ea7\u7269\uff0c\u6211\u4eec\u4e5f\u79bb\u4e0d\u5f00 ",(0,i.kt)("inlineCode",{parentName:"p"},"sql"),"\uff0c\u4f46\u5bf9\u4e8e\u5927\u591a\u6570\u7a0b\u5e8f\u5458\u548c\u9879\u76ee\u6765\u8bf4\uff0c",(0,i.kt)("inlineCode",{parentName:"p"},"sql")," \u672a\u5fc5\u80fd\u591f\u5e26\u7ed9\u4ed6\u4eec\u591a\u5927\u7684\u6548\u76ca\u3002"),(0,i.kt)("p",null,"\u6240\u4ee5\uff0c",(0,i.kt)("inlineCode",{parentName:"p"},"ORM")," \u5c31\u8bde\u751f\u4e86\uff0c\u6240\u8c13\u7684 ",(0,i.kt)("inlineCode",{parentName:"p"},"ORM")," \u5c31\u662f\u5bf9\u8c61\u5173\u7cfb\u6620\u5c04\uff0c\u82f1\u6587\uff1a",(0,i.kt)("inlineCode",{parentName:"p"},"Object Relational Mapping"),"\uff0c\u7b80\u5355\u70b9\u8bf4\uff0c",(0,i.kt)("inlineCode",{parentName:"p"},"ORM")," \u6839\u636e\u7279\u6709\u7684 ",(0,i.kt)("inlineCode",{parentName:"p"},"POCO \u8d2b\u8840\u6a21\u578b")," \u89c4\u5219\u751f\u6210 ",(0,i.kt)("inlineCode",{parentName:"p"},"sql")," \u8bed\u53e5\u3002\u5927\u5927\u907f\u514d\u4e86\u91cd\u590d ",(0,i.kt)("inlineCode",{parentName:"p"},"sql")," \u548c ",(0,i.kt)("inlineCode",{parentName:"p"},"sql")," \u80fd\u529b\u53c2\u5dee\u4e0d\u9f50\u7b49\u95ee\u9898\u3002\uff08\u5f53\u7136 ",(0,i.kt)("inlineCode",{parentName:"p"},"ORM")," \u4f5c\u8005 ",(0,i.kt)("inlineCode",{parentName:"p"},"sql")," \u80fd\u529b\u4e5f\u4f1a\u5f71\u54cd\u6700\u7ec8\u6027\u80fd\uff09"),(0,i.kt)("p",null,"\u4e0a\u9762\u6240\u8bf4\u7684 ",(0,i.kt)("inlineCode",{parentName:"p"},"POCO")," \u8d2b\u8840\u6a21\u578b\u6b63\u662f\u6211\u4eec\u672c\u7ae0\u8282\u7684 ",(0,i.kt)("strong",{parentName:"p"},"\u6570\u636e\u5e93\u5b9e\u4f53"),"\u3002"),(0,i.kt)("p",null,"\u7b80\u5355\u6765\u8bf4\uff0c\u6570\u636e\u5e93\u5b9e\u4f53\u5c31\u662f\u6570\u636e\u5e93\u8868\u7684\u7c7b\u8868\u73b0\uff0c\u901a\u8fc7\u4e00\u5b9a\u7684\u89c4\u5219\u4f7f\u8fd9\u4e2a\u7c7b\u80fd\u591f\u4e00\u4e00\u5bf9\u5e94\u8868\u7ed3\u6784\u3002\u901a\u5e38\u8fd9\u6837\u7684\u7c7b\u4e5f\u79f0\u4e3a\uff1a",(0,i.kt)("inlineCode",{parentName:"p"},"POCO")," \u8d2b\u8840\u6a21\u578b\uff0c\u4e5f\u5c31\u662f\u53ea\u6709\u5b9a\u4e49\uff0c\u6ca1\u6709\u884c\u4e3a\u3002"),(0,i.kt)("h2",{id:"932-\u5982\u4f55\u5b9a\u4e49\u5b9e\u4f53"},"9.3.2 \u5982\u4f55\u5b9a\u4e49\u5b9e\u4f53"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u591a\u79cd\u5b9a\u4e49\u5b9e\u4f53\u7684\u63a5\u53e3\u4f9d\u8d56\uff1a"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"IEntity"),"\uff1a\u5b9e\u4f53\u57fa\u63a5\u53e3\uff0c\u662f\u6240\u6709\u5b9e\u4f53\u7684\u57fa\u63a5\u53e3"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"IEntityNotKey"),"\uff1a\u65e0\u952e\u5b9e\u4f53\u63a5\u53e3\uff0c\u4e5f\u5c31\u662f\u89c6\u56fe\u3001\u5b58\u50a8\u8fc7\u7a0b\u3001\u51fd\u6570\u4f9d\u8d56\u63a5\u53e3"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"EntityBase"),"\uff1a\u5b9e\u4f53\u57fa\u62bd\u8c61\u7c7b\uff0c\u5185\u7f6e\u4e86 ",(0,i.kt)("inlineCode",{parentName:"li"},"Id"),"\uff0c",(0,i.kt)("inlineCode",{parentName:"li"},"TenantId")," \u5b57\u6bb5"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"Entity"),"\uff1a\u5b9e\u4f53\u901a\u7528\u62bd\u8c61\u7c7b\uff0c\u7ee7\u627f\u81ea ",(0,i.kt)("inlineCode",{parentName:"li"},"EntityBase"),"\uff0c\u540c\u65f6\u5185\u7f6e ",(0,i.kt)("inlineCode",{parentName:"li"},"CreatedTime"),"\uff0c",(0,i.kt)("inlineCode",{parentName:"li"},"UpdatedTime")," \u5b57\u6bb5"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"EntityNotKey"),"\uff1a\u65e0\u952e\u5b9e\u4f53\u62bd\u8c61\u7c7b\uff0c\u89c6\u56fe\u3001\u5b58\u50a8\u8fc7\u7a0b\u3001\u51fd\u6570\u4f9d\u8d56\u62bd\u8c61\u7c7b")),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u5b9e\u4f53\u5b9a\u4e49\u4f4d\u7f6e")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\u6709\u7ea6\u5b9a\uff0c\u5b9e\u4f53\u7edf\u4e00\u5b9a\u4e49\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion.Core")," \u5c42\u3002"))),(0,i.kt)("h3",{id:"9321-\u5b9e\u4f53\u7ee7\u627f\u9009\u7528\u539f\u5219"},"9.3.2.1 \u5b9e\u4f53\u7ee7\u627f\u9009\u7528\u539f\u5219"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"\u5982\u679c\u4f60\u4e0d\u9700\u8981 ",(0,i.kt)("inlineCode",{parentName:"li"},"Furion")," \u4e3a\u5b9e\u4f53\u6dfb\u52a0\u4efb\u4f55\u5185\u7f6e\u7279\u6027\uff0c\u9009\u7528 ",(0,i.kt)("inlineCode",{parentName:"li"},"IEntity"),"\uff0c\u65e0\u952e\u5b9e\u4f53\u9009\u7528 ",(0,i.kt)("inlineCode",{parentName:"li"},"IEntityNotKey")),(0,i.kt)("li",{parentName:"ul"},"\u5982\u679c\u4f60\u53ea\u9700\u8981 ",(0,i.kt)("inlineCode",{parentName:"li"},"Id")," \u5c5e\u6027\uff0c\u9009\u7528 ",(0,i.kt)("inlineCode",{parentName:"li"},"EntityBase")),(0,i.kt)("li",{parentName:"ul"},"\u5982\u679c\u4f60\u9700\u8981 ",(0,i.kt)("inlineCode",{parentName:"li"},"Furion")," \u4e3a\u4f60\u81ea\u52a8\u6dfb\u52a0\u5e38\u7528\u5b57\u6bb5\uff0c\u5219\u9009\u7528 ",(0,i.kt)("inlineCode",{parentName:"li"},"Entity")),(0,i.kt)("li",{parentName:"ul"},"\u5982\u679c\u4f60\u9700\u8981\u89c6\u56fe\u3001\u5b58\u50a8\u8fc7\u7a0b\u3001\u51fd\u6570\u53ef\u4ee5\u901a\u8fc7 ",(0,i.kt)("inlineCode",{parentName:"li"},"DbSet")," \u64cd\u4f5c\uff0c\u5219\u7ee7\u627f ",(0,i.kt)("inlineCode",{parentName:"li"},"EntityNotKey"))),(0,i.kt)("h3",{id:"9322-ientity-\u793a\u8303\uff1a"},"9.3.2.2 ",(0,i.kt)("inlineCode",{parentName:"h3"},"IEntity")," \u793a\u8303\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,5}","{1,5}":!0},"using Furion.DatabaseAccessor;\n\nnamespace Furion.Core\n{\n public class User : IEntity\n {\n /// \n /// \u624b\u5de5\u5b9a\u4e49 Id\n /// \n public int Id { get; set; }\n\n /// \n /// \u540d\u79f0\n /// \n public string Name { get; set; }\n }\n}\n")),(0,i.kt)("h3",{id:"9323-entitybase-\u793a\u8303\uff1a"},"9.3.2.3 ",(0,i.kt)("inlineCode",{parentName:"h3"},"EntityBase")," \u793a\u8303\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,5}","{1,5}":!0},"using Furion.DatabaseAccessor;\n\nnamespace Furion.Core\n{\n public class User : EntityBase\n {\n // \u65e0\u9700\u5b9a\u4e49 Id \u5c5e\u6027\n\n /// \n /// \u540d\u79f0\n /// \n public string Name { get; set; }\n }\n}\n")),(0,i.kt)("h3",{id:"9324-entity-\u793a\u8303\uff1a"},"9.3.2.4 ",(0,i.kt)("inlineCode",{parentName:"h3"},"Entity")," \u793a\u8303\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,5}","{1,5}":!0},"using Furion.DatabaseAccessor;\n\nnamespace Furion.Core\n{\n public class User : Entity\n {\n // \u65e0\u9700\u5b9a\u4e49 Id \u5c5e\u6027\n // \u5e76\u81ea\u52a8\u6dfb\u52a0 CreatedTime\uff0cUpdatedTime \u5c5e\u6027\n\n /// \n /// \u540d\u79f0\n /// \n public string Name { get; set; }\n }\n}\n")),(0,i.kt)("h3",{id:"9325-entitynotkey-\u793a\u8303\uff1a"},"9.3.2.5 ",(0,i.kt)("inlineCode",{parentName:"h3"},"EntityNotKey")," \u793a\u8303\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,5,7-9}","{1,5,7-9}":!0},'using Furion.DatabaseAccessor;\n\nnamespace Furion.Core\n{\n public class UserView : EntityNotKey\n {\n public UserView() : base("\u89c6\u56fe\u540d\u79f0")\n {\n }\n\n /// \n /// Id\n /// \n public int Id { get; set; }\n\n /// \n /// \u540d\u79f0\n /// \n public string Name { get; set; }\n }\n}\n')),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u7279\u522b\u6ce8\u610f")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\uff0c\u6570\u636e\u5e93\u5b9e\u4f53\u5fc5\u987b\u76f4\u63a5\u6216\u95f4\u63a5\u7ee7\u627f ",(0,i.kt)("inlineCode",{parentName:"p"},"IEntity")," \u624d\u80fd\u8fdb\u884c\u4ed3\u50a8\u7b49\u64cd\u4f5c\u3002"))),(0,i.kt)("h2",{id:"933-\u81ea\u5b9a\u4e49\u516c\u5171\u5b9e\u4f53"},"9.3.3 \u81ea\u5b9a\u4e49\u516c\u5171\u5b9e\u4f53"),(0,i.kt)("p",null,"\u5728\u5b9e\u9645\u9879\u76ee\u5f00\u53d1\u4e2d\uff0c\u6211\u4eec\u901a\u5e38\u6bcf\u4e2a\u5e94\u7528\u7684\u6570\u636e\u5e93\u8868\u90fd\u6709\u4e00\u4e9b\u516c\u5171\u7684\u7c7b\uff0c\u6bd4\u5982\u521b\u5efa\u4eba\uff0c\u521b\u5efa\u65f6\u95f4\u7b49\uff0c\u8fd9\u4e2a\u65f6\u5019\u6211\u4eec\u5c31\u9700\u8981\u81ea\u5b9a\u4e49\u516c\u5171\u5b9e\u4f53\u7c7b\u4e86\u3002"),(0,i.kt)("p",null,"\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\uff0c\u521b\u5efa\u516c\u5171\u5b9e\u4f53\u7c7b\u9700\u8981\u6ee1\u8db3\u4ee5\u4e0b\u6761\u4ef6\uff1a"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"\u516c\u5171\u5b9e\u4f53\u7c7b",(0,i.kt)("strong",{parentName:"li"},"\u5fc5\u987b\u662f\u516c\u5f00\u4e14\u662f\u62bd\u8c61\u7c7b")),(0,i.kt)("li",{parentName:"ul"},"\u516c\u5171\u5b9e\u4f53\u7c7b\u5fc5\u987b\u542b\u6709\u65e0\u53c2\u6784\u9020\u51fd\u6570"),(0,i.kt)("li",{parentName:"ul"},"\u516c\u5171\u5b9e\u4f53\u7c7b\u5fc5\u987b\u63d0\u4f9b\u6570\u636e\u5e93\u5b9a\u4f4d\u5668\u7684\u652f\u6301")),(0,i.kt)("p",null,"\u5982\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{83-91}","{83-91}":!0},"using System;\nusing System.ComponentModel.DataAnnotations;\nusing System.ComponentModel.DataAnnotations.Schema;\n\nnamespace Your.Namespace\n{\n public abstract class CommonEntity : CommonEntity\n {\n }\n\n public abstract class CommonEntity : CommonEntity\n {\n }\n\n public abstract class CommonEntity : PrivateCommonEntity\n where TDbContextLocator1 : class, IDbContextLocator\n {\n }\n\n public abstract class CommonEntity : PrivateCommonEntity\n where TDbContextLocator1 : class, IDbContextLocator\n where TDbContextLocator2 : class, IDbContextLocator\n {\n }\n\n public abstract class CommonEntity : PrivateCommonEntity\n where TDbContextLocator1 : class, IDbContextLocator\n where TDbContextLocator2 : class, IDbContextLocator\n where TDbContextLocator3 : class, IDbContextLocator\n {\n }\n\n public abstract class CommonEntity : PrivateCommonEntity\n where TDbContextLocator1 : class, IDbContextLocator\n where TDbContextLocator2 : class, IDbContextLocator\n where TDbContextLocator3 : class, IDbContextLocator\n where TDbContextLocator4 : class, IDbContextLocator\n {\n }\n\n public abstract class CommonEntity : PrivateCommonEntity\n where TDbContextLocator1 : class, IDbContextLocator\n where TDbContextLocator2 : class, IDbContextLocator\n where TDbContextLocator3 : class, IDbContextLocator\n where TDbContextLocator4 : class, IDbContextLocator\n where TDbContextLocator5 : class, IDbContextLocator\n {\n }\n\n public abstract class CommonEntity : PrivateCommonEntity\n where TDbContextLocator1 : class, IDbContextLocator\n where TDbContextLocator2 : class, IDbContextLocator\n where TDbContextLocator3 : class, IDbContextLocator\n where TDbContextLocator4 : class, IDbContextLocator\n where TDbContextLocator5 : class, IDbContextLocator\n where TDbContextLocator6 : class, IDbContextLocator\n {\n }\n\n public abstract class CommonEntity : PrivateCommonEntity\n where TDbContextLocator1 : class, IDbContextLocator\n where TDbContextLocator2 : class, IDbContextLocator\n where TDbContextLocator3 : class, IDbContextLocator\n where TDbContextLocator4 : class, IDbContextLocator\n where TDbContextLocator5 : class, IDbContextLocator\n where TDbContextLocator6 : class, IDbContextLocator\n where TDbContextLocator7 : class, IDbContextLocator\n {\n }\n\n public abstract class CommonEntity : PrivateCommonEntity\n where TDbContextLocator1 : class, IDbContextLocator\n where TDbContextLocator2 : class, IDbContextLocator\n where TDbContextLocator3 : class, IDbContextLocator\n where TDbContextLocator4 : class, IDbContextLocator\n where TDbContextLocator5 : class, IDbContextLocator\n where TDbContextLocator6 : class, IDbContextLocator\n where TDbContextLocator7 : class, IDbContextLocator\n where TDbContextLocator8 : class, IDbContextLocator\n {\n }\n\n public abstract class PrivateCommonEntity : IPrivateEntity\n {\n // \u6ce8\u610f\u662f\u5728\u8fd9\u91cc\u5b9a\u4e49\u4f60\u7684\u516c\u5171\u5b9e\u4f53\n public virtual TKey Id { get; set; }\n\n public virtual DateTime CreatedTime { get; set; }\n\n // \u66f4\u591a\u5c5e\u6027\u5b9a\u4e49\n }\n}\n")),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u8bf4\u660e")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u901a\u8fc7\u4e0a\u9762\u7684\u683c\u5f0f\u5b9a\u4e49\u53ef\u4ee5\u5b8c\u7f8e\u7684\u652f\u6301\u591a\u6570\u636e\u5e93\u64cd\u4f5c\uff0c\u5efa\u8bae\u91c7\u7528\u8fd9\u79cd\u683c\u5f0f\uff0c\u800c\u4e14\u6240\u6709\u7684\u516c\u5171\u5c5e\u6027\u90fd\u5e94\u8be5\u5b9a\u4e49\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"PrivateXXXX")," ",(0,i.kt)("inlineCode",{parentName:"p"},"\u79c1"),"\u6709\u7c7b\u4e2d\u3002"))),(0,i.kt)("h2",{id:"934-\u6570\u636e\u5e93\u5b9e\u4f53\u914d\u7f6e"},"9.3.4 \u6570\u636e\u5e93\u5b9e\u4f53\u914d\u7f6e"),(0,i.kt)("p",null,"\u5728\u8fc7\u53bb\u7684 ",(0,i.kt)("inlineCode",{parentName:"p"},"EF Core")," \u9879\u76ee\u5f00\u53d1\u4e2d\uff0c\u6570\u636e\u5e93\u5b9e\u4f53\u914d\u7f6e\u9700\u8981\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"DbContext")," \u7684 ",(0,i.kt)("inlineCode",{parentName:"p"},"OnModelCreating")," \u4e2d\u914d\u7f6e\u3002",(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u4e3a\u4e86\u7b80\u5316\u914d\u7f6e\u548c\u63d0\u9ad8\u5f00\u53d1\u6548\u7387\uff0c\u62bd\u8c61\u51fa\u4e86 ",(0,i.kt)("inlineCode",{parentName:"p"},"IEntityTypeBuilder")," \u63a5\u53e3\u3002"),(0,i.kt)("p",null,"\u901a\u8fc7 ",(0,i.kt)("inlineCode",{parentName:"p"},"IEntityTypeBuilder")," \u63a5\u53e3\uff0c\u6211\u4eec\u65e0\u9700\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"DbContext")," \u7684 ",(0,i.kt)("inlineCode",{parentName:"p"},"OnModelCreating")," \u4e2d\u914d\u7f6e\uff0c\u53ef\u5728\u4efb\u610f\u5730\u65b9\u914d\u7f6e\u3002"),(0,i.kt)("h3",{id:"9341-\u5728\u6570\u636e\u5e93\u5b9e\u4f53\u4e2d\u914d\u7f6e"},"9.3.4.1 \u5728\u6570\u636e\u5e93\u5b9e\u4f53\u4e2d\u914d\u7f6e"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,5,20-25}","{1,5,20-25}":!0},"using Furion.DatabaseAccessor;\nusing Microsoft.EntityFrameworkCore;\nusing Microsoft.EntityFrameworkCore.Metadata.Builders;\nusing System;\n\nnamespace Furion.Core\n{\n public class User : Entity, IEntityTypeBuilder\n {\n /// \n /// \u540d\u79f0\n /// \n public string Name { get; set; }\n\n /// \n /// \u5e74\u9f84\n /// \n public int Age { get; set; }\n\n // \u914d\u7f6e\u6570\u636e\u5e93\u5b9e\u4f53\n public void Configure(EntityTypeBuilder entityBuilder, DbContext dbContext, Type dbContextLocator)\n {\n entityBuilder.HasKey(u => u.Id);\n entityBuilder.HasIndex(u => u.Name);\n }\n }\n}\n")),(0,i.kt)("h3",{id:"9342-\u5728\u4efb\u4f55\u5b9e\u4f8b\u7c7b\u4e2d\u914d\u7f6e"},"9.3.4.2 \u5728\u4efb\u4f55\u5b9e\u4f8b\u7c7b\u4e2d\u914d\u7f6e"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,8,10-14}","{1,8,10-14}":!0},"using Furion.DatabaseAccessor;\nusing Microsoft.EntityFrameworkCore;\nusing Microsoft.EntityFrameworkCore.Metadata.Builders;\nusing System;\n\nnamespace Furion.Core\n{\n public class SomeClass : IEntityTypeBuilder\n {\n public void Configure(EntityTypeBuilder entityBuilder, DbContext dbContext, Type dbContextLocator)\n {\n entityBuilder.HasKey(u => u.Id);\n entityBuilder.HasIndex(u => u.Name);\n }\n }\n}\n")),(0,i.kt)("p",null,"\u5982\u4e0a\u9762\u4f8b\u5b50\uff0c\u901a\u8fc7 ",(0,i.kt)("inlineCode",{parentName:"p"},"SomeClass")," \u914d\u7f6e ",(0,i.kt)("inlineCode",{parentName:"p"},"User")," \u6570\u636e\u5e93\u5b9e\u4f53\u3002"),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u66f4\u591a\u77e5\u8bc6")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u5982\u9700\u4e86\u89e3\u5b9e\u4f53\u914d\u7f6e\u652f\u6301\u54ea\u4e9b\u914d\u7f6e\u53ef\u67e5\u9605 ",(0,i.kt)("a",{parentName:"p",href:"https://docs.microsoft.com/zh-cn/ef/core/modeling/"},"\u3010EFCore - \u521b\u5efa\u6a21\u578b\u3011")," \u7ae0\u8282\u3002"))),(0,i.kt)("h2",{id:"935-\u6570\u636e\u5e93\u5b9e\u4f53\u914d\u7f6e\u8bf4\u660e"},"9.3.5 \u6570\u636e\u5e93\u5b9e\u4f53\u914d\u7f6e\u8bf4\u660e"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4f1a\u81ea\u52a8\u626b\u63cf\u6240\u6709\u7ee7\u627f ",(0,i.kt)("inlineCode",{parentName:"p"},"IEntity")," \u63a5\u53e3\u7684\u7c7b\u8fdb\u884c ",(0,i.kt)("inlineCode",{parentName:"p"},"DbSet")," \u6ce8\u518c\uff0c\u4e5f\u5c31\u662f\u5b9e\u73b0\u81ea\u52a8\u914d\u7f6e ",(0,i.kt)("inlineCode",{parentName:"p"},"DbContext")," \u7684 ",(0,i.kt)("inlineCode",{parentName:"p"},"OnModelCreating"),"\u3002"),(0,i.kt)("p",null,"\u5982\u679c\u9700\u8981\u8df3\u8fc7\u81ea\u52a8\u6ce8\u518c\uff0c\u53ea\u9700\u8981\u8d34 ",(0,i.kt)("inlineCode",{parentName:"p"},"[Manual]")," \u6216 ",(0,i.kt)("inlineCode",{parentName:"p"},"[SuppressSniffer]")," \u7279\u6027\u5373\u53ef\u3002\u4e00\u65e6\u8d34\u4e86\u6b64\u7279\u6027\uff0c\u90a3\u4e48\u5c31\u9700\u8981\u624b\u52a8\u914d\u7f6e ",(0,i.kt)("inlineCode",{parentName:"p"},"DbContext")," \u7684 ",(0,i.kt)("inlineCode",{parentName:"p"},"OnModelCreating")),(0,i.kt)("h2",{id:"936-\u914d\u7f6e\u5217\u540d\u53ca\u5217\u7c7b\u578b"},"9.3.6 \u914d\u7f6e\u5217\u540d\u53ca\u5217\u7c7b\u578b"),(0,i.kt)("p",null,"\u6709\u65f6\u5019\u6211\u4eec\u9700\u8981\u624b\u52a8\u8bbe\u7f6e\u5217\u540d\u6216\u5217\u7c7b\u578b\uff0c\u6bd4\u5982 ",(0,i.kt)("inlineCode",{parentName:"p"},"decimal(18,2)"),"\uff0c\u8fd9\u65f6\u5019\u53ea\u9700\u8981\u5728\u5c5e\u6027\u4e0a\u9762\u8d34 ",(0,i.kt)("inlineCode",{parentName:"p"},'[Column("\u5217\u540d", TypeName="decimal(18,2)")]')," \u5373\u53ef\u3002"),(0,i.kt)("h2",{id:"937-\u53cd\u9988\u4e0e\u5efa\u8bae"},"9.3.7 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,i.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/17896441.68e3acfb.js b/handbook/build/assets/js/17896441.68e3acfb.js new file mode 100644 index 00000000000..fd6d856ce5d --- /dev/null +++ b/handbook/build/assets/js/17896441.68e3acfb.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[7918],{9362:function(e,t,a){a.r(t),a.d(t,{default:function(){return I}});var n=a(7294),r=a(6010),l=a(3783),i=a(6742),o=a(4973);var s=function(e){var t=e.metadata;return n.createElement("nav",{className:"pagination-nav docusaurus-mt-lg","aria-label":(0,o.I)({id:"theme.docs.paginator.navAriaLabel",message:"Docs pages navigation",description:"The ARIA label for the docs pagination"})},n.createElement("div",{className:"pagination-nav__item"},t.previous&&n.createElement(i.Z,{className:"pagination-nav__link",to:t.previous.permalink},n.createElement("div",{className:"pagination-nav__sublabel"},n.createElement(o.Z,{id:"theme.docs.paginator.previous",description:"The label used to navigate to the previous doc"},"Previous")),n.createElement("div",{className:"pagination-nav__label"},"\xab ",t.previous.title))),n.createElement("div",{className:"pagination-nav__item pagination-nav__item--next"},t.next&&n.createElement(i.Z,{className:"pagination-nav__link",to:t.next.permalink},n.createElement("div",{className:"pagination-nav__sublabel"},n.createElement(o.Z,{id:"theme.docs.paginator.next",description:"The label used to navigate to the next doc"},"Next")),n.createElement("div",{className:"pagination-nav__label"},t.next.title," \xbb"))))},c=a(2263),d=a(907),m=a(941);var u={unreleased:function(e){var t=e.siteTitle,a=e.versionMetadata;return n.createElement(o.Z,{id:"theme.docs.versions.unreleasedVersionLabel",description:"The label used to tell the user that he's browsing an unreleased doc version",values:{siteTitle:t,versionLabel:n.createElement("b",null,a.label)}},"This is unreleased documentation for {siteTitle} {versionLabel} version.")},unmaintained:function(e){var t=e.siteTitle,a=e.versionMetadata;return n.createElement(o.Z,{id:"theme.docs.versions.unmaintainedVersionLabel",description:"The label used to tell the user that he's browsing an unmaintained doc version",values:{siteTitle:t,versionLabel:n.createElement("b",null,a.label)}},"This is documentation for {siteTitle} {versionLabel}, which is no longer actively maintained.")}};function v(e){var t=u[e.versionMetadata.banner];return n.createElement(t,e)}function h(e){var t=e.versionLabel,a=e.to,r=e.onClick;return n.createElement(o.Z,{id:"theme.docs.versions.latestVersionSuggestionLabel",description:"The label used to tell the user to check the latest version",values:{versionLabel:t,latestVersionLink:n.createElement("b",null,n.createElement(i.Z,{to:a,onClick:r},n.createElement(o.Z,{id:"theme.docs.versions.latestVersionLinkLabel",description:"The label used for the latest version suggestion link label"},"latest version")))}},"For up-to-date documentation, see the {latestVersionLink} ({versionLabel}).")}function p(e){var t,a=e.versionMetadata,l=(0,c.Z)().siteConfig.title,i=(0,d.gA)({failfast:!0}).pluginId,o=(0,m.J)(i).savePreferredVersionName,s=(0,d.Jo)(i),u=s.latestDocSuggestion,p=s.latestVersionSuggestion,f=null!=u?u:(t=p).docs.find((function(e){return e.id===t.mainDocId}));return n.createElement("div",{className:(0,r.Z)(m.kM.docs.docVersionBanner,"alert alert--warning margin-bottom--md"),role:"alert"},n.createElement("div",null,n.createElement(v,{siteTitle:l,versionMetadata:a})),n.createElement("div",{className:"margin-top--md"},n.createElement(h,{versionLabel:p.label,to:f.path,onClick:function(){return o(p.name)}})))}var f=function(e){var t=e.versionMetadata;return t.banner?n.createElement(p,{versionMetadata:t}):n.createElement(n.Fragment,null)},E=a(1217);function g(e){var t=e.lastUpdatedAt,a=e.formattedLastUpdatedAt;return n.createElement(o.Z,{id:"theme.lastUpdated.atDate",description:"The words used to describe on which date a page has been last updated",values:{date:n.createElement("b",null,n.createElement("time",{dateTime:new Date(1e3*t).toISOString()},a))}}," on {date}")}function b(e){var t=e.lastUpdatedBy;return n.createElement(o.Z,{id:"theme.lastUpdated.byUser",description:"The words used to describe by who the page has been last updated",values:{user:n.createElement("b",null,t)}}," by {user}")}function _(e){var t=e.lastUpdatedAt,a=e.formattedLastUpdatedAt,r=e.lastUpdatedBy;return n.createElement("span",{className:m.kM.common.lastUpdated},n.createElement(o.Z,{id:"theme.lastUpdated.lastUpdatedAtBy",description:"The sentence used to display when a page has been last updated, and by who",values:{atDate:t&&a?n.createElement(g,{lastUpdatedAt:t,formattedLastUpdatedAt:a}):"",byUser:r?n.createElement(b,{lastUpdatedBy:r}):""}},"Last updated{atDate}{byUser}"),!1)}var N=a(6146),k=a(7682),Z="lastUpdated_13-_";function U(e){return n.createElement("div",{className:(0,r.Z)(m.kM.docs.docFooterTagsRow,"row margin-bottom--sm")},n.createElement("div",{className:"col"},n.createElement(k.Z,e)))}function L(e){var t=e.editUrl,a=e.lastUpdatedAt,l=e.lastUpdatedBy,i=e.formattedLastUpdatedAt;return n.createElement("div",{className:(0,r.Z)(m.kM.docs.docFooterEditMetaRow,"row")},n.createElement("div",{className:"col"},t&&n.createElement(N.Z,{editUrl:t})),n.createElement("div",{className:(0,r.Z)("col",Z)},(a||l)&&n.createElement(_,{lastUpdatedAt:a,formattedLastUpdatedAt:i,lastUpdatedBy:l})))}function T(e){var t=e.content.metadata,a=t.editUrl,l=t.lastUpdatedAt,i=t.formattedLastUpdatedAt,o=t.lastUpdatedBy,s=t.tags,c=s.length>0,d=!!(a||l||o);return c||d?n.createElement("footer",{className:(0,r.Z)(m.kM.docs.docFooter,"docusaurus-mt-lg")},c&&n.createElement(U,{tags:s}),d&&n.createElement(L,{editUrl:a,lastUpdatedAt:l,lastUpdatedBy:o,formattedLastUpdatedAt:i})):n.createElement(n.Fragment,null)}var y=a(571),C="tocCollapsible_1PrD",w="tocCollapsibleButton_2O1e",M="tocCollapsibleContent_2Ydz",A="tocCollapsibleExpanded_3GYr";function B(e){var t,a=e.toc,l=e.className,i=(0,m.uR)({initialState:!0}),s=i.collapsed,c=i.toggleCollapsed;return n.createElement("div",{className:(0,r.Z)(C,(t={},t[A]=!s,t),l)},n.createElement("button",{type:"button",className:(0,r.Z)("clean-btn",w),onClick:c},n.createElement(o.Z,{id:"theme.TOCCollapsible.toggleButtonLabel",description:"The label used by the button on the collapsible TOC component"},"On this page")),n.createElement(m.zF,{lazy:!0,className:M,collapsed:s},n.createElement(y.r,{toc:a})))}var O=a(6159),S="docItemContainer_33ec",x="docItemCol_3FnS",F="tocMobile_3Hoh";function I(e){var t,a=e.content,i=e.versionMetadata,o=a.metadata,c=a.frontMatter,d=c.image,u=c.keywords,v=c.hide_title,h=c.hide_table_of_contents,p=o.description,g=o.title,b=!v&&void 0===a.contentTitle,_=(0,l.Z)(),N=!h&&a.toc&&a.toc.length>0,k=N&&("desktop"===_||"ssr"===_);return n.createElement(n.Fragment,null,n.createElement(E.Z,{title:g,description:p,keywords:u,image:d}),n.createElement("div",{className:"row"},n.createElement("div",{className:(0,r.Z)("col",(t={},t[x]=!h,t))},n.createElement(f,{versionMetadata:i}),n.createElement("div",{className:S},n.createElement("article",null,i.badge&&n.createElement("span",{className:(0,r.Z)(m.kM.docs.docVersionBadge,"badge badge--secondary")},"Version: ",i.label),N&&n.createElement(B,{toc:a.toc,className:(0,r.Z)(m.kM.docs.docTocMobile,F)}),n.createElement("div",{className:(0,r.Z)(m.kM.docs.docMarkdown,"markdown")},b&&n.createElement(O.N,null,g),n.createElement(a,null)),n.createElement(T,e)),n.createElement(s,{metadata:o}))),k&&n.createElement("div",{className:"col col--3"},n.createElement(y.Z,{toc:a.toc,className:m.kM.docs.docTocDesktop}))))}},6146:function(e,t,a){a.d(t,{Z:function(){return u}});var n=a(7294),r=a(4973),l=a(7462),i=a(3366),o=a(6010),s="iconEdit_2_ui",c=["className"],d=function(e){var t=e.className,a=(0,i.Z)(e,c);return n.createElement("svg",(0,l.Z)({fill:"currentColor",height:"20",width:"20",viewBox:"0 0 40 40",className:(0,o.Z)(s,t),"aria-hidden":"true"},a),n.createElement("g",null,n.createElement("path",{d:"m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"})))},m=a(941);function u(e){var t=e.editUrl;return n.createElement("a",{href:t,target:"_blank",rel:"noreferrer noopener",className:m.kM.common.editThisPage},n.createElement(d,null),n.createElement(r.Z,{id:"theme.common.editThisPage",description:"The link label to edit the current page"},"Edit this page"))}},6159:function(e,t,a){a.d(t,{N:function(){return u},Z:function(){return v}});var n=a(3366),r=a(7462),l=a(7294),i=a(6010),o=a(4973),s=a(941),c="anchorWithStickyNavbar_31ik",d="anchorWithHideOnScrollNavbar_3R7-",m=["id"],u=function(e){var t=Object.assign({},e);return l.createElement("header",null,l.createElement("h1",(0,r.Z)({},t,{id:void 0}),t.children))},v=function(e){return"h1"===e?u:(t=e,function(e){var a,r=e.id,u=(0,n.Z)(e,m),v=(0,s.LU)().navbar.hideOnScroll;return r?l.createElement(t,u,l.createElement("a",{"aria-hidden":"true",tabIndex:-1,className:(0,i.Z)("anchor","anchor__"+t,(a={},a[d]=v,a[c]=!v,a)),id:r}),u.children,l.createElement("a",{className:"hash-link",href:"#"+r,title:(0,o.I)({id:"theme.common.headingLinkTitle",message:"Direct link to heading",description:"Title for link to heading"})},"#")):l.createElement(t,u)});var t}},571:function(e,t,a){a.d(t,{r:function(){return v},Z:function(){return h}});var n=a(7294),r=a(6010),l=a(941);function i(e){var t=e.getBoundingClientRect();return t.top===t.bottom?i(e.parentNode):t}function o(e){var t,a=e.anchorTopOffset,n=Array.from(document.querySelectorAll(".anchor.anchor__h2, .anchor.anchor__h3")),r=n.find((function(e){return i(e).top>=a}));return r?function(e){return e.top>0&&e.bottom1,M=!v&&void 0===a.contentTitle,D=(0,i.Z)(),O=!h&&a.toc&&a.toc.length>0,S=O&&("desktop"===D||"ssr"===D);return n.createElement(n.Fragment,null,n.createElement(b.Z,{title:f,description:p,keywords:u,image:m}),n.createElement("div",{className:"row"},n.createElement("div",{className:(0,l.Z)("col",(t={},t[B]=!h,t))},n.createElement(E,{versionMetadata:s}),n.createElement("div",{className:w},n.createElement("article",null,I&&n.createElement("span",{className:"badge badge--secondary"},"Version: ",s.label),O&&n.createElement(U,{toc:a.toc,className:x}),n.createElement("div",{className:"markdown"},M&&n.createElement(y.N,null,f),n.createElement(a,null)),(g||L||k)&&n.createElement("footer",{className:"row docusaurus-mt-lg"},n.createElement("div",{className:"col"},g&&n.createElement(C.Z,{editUrl:g})),n.createElement("div",{className:(0,l.Z)("col",A)},(L||k)&&n.createElement(_,{lastUpdatedAt:L,formattedLastUpdatedAt:Z,lastUpdatedBy:k})))),n.createElement(c,{metadata:o}))),S&&n.createElement("div",{className:"col col--3"},n.createElement(N.Z,{toc:a.toc}))))}},6146:function(e,t,a){a.d(t,{Z:function(){return m}});var n=a(7294),l=a(4973),r=a(7462),i=a(3366),s=a(6010),o="iconEdit_2_ui",c=["className"],d=function(e){var t=e.className,a=(0,i.Z)(e,c);return n.createElement("svg",(0,r.Z)({fill:"currentColor",height:"20",width:"20",viewBox:"0 0 40 40",className:(0,s.Z)(o,t),"aria-hidden":"true"},a),n.createElement("g",null,n.createElement("path",{d:"m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"})))};function m(e){var t=e.editUrl;return n.createElement("a",{href:t,target:"_blank",rel:"noreferrer noopener"},n.createElement(d,null),n.createElement(l.Z,{id:"theme.common.editThisPage",description:"The link label to edit the current page"},"Edit this page"))}},6159:function(e,t,a){a.d(t,{N:function(){return u},Z:function(){return v}});var n=a(3366),l=a(7462),r=a(7294),i=a(6010),s=a(4973),o=a(3018),c="enhancedAnchor_2LWZ",d="h1Heading_27L5",m=["id"],u=function(e){var t=Object.assign({},e);return r.createElement("header",null,r.createElement("h1",(0,l.Z)({},t,{id:void 0,className:d}),t.children))},v=function(e){return"h1"===e?u:(t=e,function(e){var a,l=e.id,d=(0,n.Z)(e,m),u=(0,o.LU)().navbar.hideOnScroll;return l?r.createElement(t,d,r.createElement("a",{"aria-hidden":"true",tabIndex:-1,className:(0,i.Z)("anchor",(a={},a[c]=!u,a)),id:l}),d.children,r.createElement("a",{className:"hash-link",href:"#"+l,title:(0,s.I)({id:"theme.common.headingLinkTitle",message:"Direct link to heading",description:"Title for link to heading"})},"#")):r.createElement(t,d)});var t}},571:function(e,t,a){a.d(t,{r:function(){return o},Z:function(){return c}});var n=a(7294),l=a(6010);var r=function(e,t,a){var l=(0,n.useState)(void 0),r=l[0],i=l[1];(0,n.useEffect)((function(){function n(){var n=function(){var e=Array.from(document.getElementsByClassName("anchor")),t=e.find((function(e){return e.getBoundingClientRect().top>=a}));if(t){if(t.getBoundingClientRect().top>=a){var n=e[e.indexOf(t)-1];return null!=n?n:t}return t}return e[e.length-1]}();if(n)for(var l=0,s=!1,o=document.getElementsByClassName(e);l=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var i=a.createContext({}),s=function(e){var t=a.useContext(i),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},m=function(e){var t=s(e.components);return a.createElement(i.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},d=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,i=e.parentName,m=c(e,["components","mdxType","originalType","parentName"]),d=s(n),p=r,f=d["".concat(i,".").concat(p)]||d[p]||u[p]||o;return n?a.createElement(f,l(l({ref:t},m),{},{components:n})):a.createElement(f,l({ref:t},m))}));function p(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,l=new Array(o);l[0]=d;var c={};for(var i in t)hasOwnProperty.call(t,i)&&(c[i]=t[i]);c.originalType=e,c.mdxType="string"==typeof e?e:r,l[1]=c;for(var s=2;s0&&(t=requestAnimationFrame(e),window.scrollTo(0,Math.floor(.85*n)))}(),function(){t&&cancelAnimationFrame(t)})},cancelScrollToTop:function(){return null==e.current?void 0:e.current()}}}var G=function(){var e,t=X(),n=t.smoothScrollTop,r=t.cancelScrollToTop,o=(0,a.useState)(!1),l=o[0],c=o[1];return(0,u.Z)((function(e,t){var n=e.scrollY;if(t){var a=n0&&o.createElement("div",{className:"row footer__links"},r.map((function(e,t){return o.createElement("div",{key:t,className:"col footer__col"},null!=e.title?o.createElement("h4",{className:"footer__title"},e.title):null,null!=e.items&&Array.isArray(e.items)&&e.items.length>0?o.createElement("ul",{className:"footer__items"},e.items.map((function(e,t){return e.html?o.createElement("li",{key:t,className:"footer__item",dangerouslySetInnerHTML:{__html:e.html}}):o.createElement("li",{key:e.href||e.to,className:"footer__item"},o.createElement(d,e))}))):null)}))),(u||n)&&o.createElement("div",{className:"footer__bottom text--center"},u&&u.src&&o.createElement("div",{className:"margin-bottom--sm"},u.href?o.createElement("a",{href:u.href,target:"_blank",rel:"noopener noreferrer",className:m},o.createElement(p,{alt:u.alt,url:f})):o.createElement(p,{alt:u.alt,url:f})),n?o.createElement("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:n}}):null))):null}}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/1be78505.27d82b8a.js b/handbook/build/assets/js/1be78505.27d82b8a.js new file mode 100644 index 00000000000..caef465125b --- /dev/null +++ b/handbook/build/assets/js/1be78505.27d82b8a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[9514,1181,613],{3905:function(e,t,n){n.d(t,{Zo:function(){return m},kt:function(){return p}});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function l(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var i=a.createContext({}),s=function(e){var t=a.useContext(i),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},m=function(e){var t=s(e.components);return a.createElement(i.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},d=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,i=e.parentName,m=c(e,["components","mdxType","originalType","parentName"]),d=s(n),p=r,f=d["".concat(i,".").concat(p)]||d[p]||u[p]||o;return n?a.createElement(f,l(l({ref:t},m),{},{components:n})):a.createElement(f,l({ref:t},m))}));function p(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,l=new Array(o);l[0]=d;var c={};for(var i in t)hasOwnProperty.call(t,i)&&(c[i]=t[i]);c.originalType=e,c.mdxType="string"==typeof e?e:r,l[1]=c;for(var s=2;s0&&(t=requestAnimationFrame(e),window.scrollTo(0,Math.floor(.85*n)))}(),function(){return t&&cancelAnimationFrame(t)})},cancelScrollToTop:function(){return null==e.current?void 0:e.current()}}}var G=function(){var e,t=(0,J.TH)(),n=X(),r=n.smoothScrollTop,o=n.cancelScrollToTop,l=(0,a.useState)(!1),i=l[0],s=l[1];return(0,m.Z)((function(e,t){var n=e.scrollY;if(t){var a=n0&&o.createElement("div",{className:"row footer__links"},r.map((function(e,t){return o.createElement("div",{key:t,className:"col footer__col"},null!=e.title?o.createElement("h4",{className:"footer__title"},e.title):null,null!=e.items&&Array.isArray(e.items)&&e.items.length>0?o.createElement("ul",{className:"footer__items"},e.items.map((function(e,t){return e.html?o.createElement("li",{key:t,className:"footer__item",dangerouslySetInnerHTML:{__html:e.html}}):o.createElement("li",{key:e.href||e.to,className:"footer__item"},o.createElement(d,e))}))):null)}))),(u||n)&&o.createElement("div",{className:"footer__bottom text--center"},u&&u.src&&o.createElement("div",{className:"margin-bottom--sm"},u.href?o.createElement("a",{href:u.href,target:"_blank",rel:"noopener noreferrer",className:m},o.createElement(p,{alt:u.alt,url:f})):o.createElement(p,{alt:u.alt,url:f})),n?o.createElement("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:n}}):null))):null}}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/1c2c7d62.9e9943bd.js b/handbook/build/assets/js/1c2c7d62.99e4e35e.js similarity index 58% rename from handbook/build/assets/js/1c2c7d62.9e9943bd.js rename to handbook/build/assets/js/1c2c7d62.99e4e35e.js index 5b29e2ddd64..ae0190ef855 100644 --- a/handbook/build/assets/js/1c2c7d62.9e9943bd.js +++ b/handbook/build/assets/js/1c2c7d62.99e4e35e.js @@ -1 +1 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[1689],{3905:function(e,n,r){r.d(n,{Zo:function(){return c},kt:function(){return f}});var t=r(7294);function o(e,n,r){return n in e?Object.defineProperty(e,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[n]=r,e}function i(e,n){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n&&(t=t.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),r.push.apply(r,t)}return r}function s(e){for(var n=1;n=0||(o[r]=e[r]);return o}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(t=0;t=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var p=t.createContext({}),l=function(e){var n=t.useContext(p),r=n;return e&&(r="function"==typeof e?e(n):s(s({},n),e)),r},c=function(e){var n=l(e.components);return t.createElement(p.Provider,{value:n},e.children)},u={inlineCode:"code",wrapper:function(e){var n=e.children;return t.createElement(t.Fragment,{},n)}},d=t.forwardRef((function(e,n){var r=e.components,o=e.mdxType,i=e.originalType,p=e.parentName,c=a(e,["components","mdxType","originalType","parentName"]),d=l(r),f=o,x=d["".concat(p,".").concat(f)]||d[f]||u[f]||i;return r?t.createElement(x,s(s({ref:n},c),{},{components:r})):t.createElement(x,s({ref:n},c))}));function f(e,n){var r=arguments,o=n&&n.mdxType;if("string"==typeof e||o){var i=r.length,s=new Array(i);s[0]=d;var a={};for(var p in n)hasOwnProperty.call(n,p)&&(a[p]=n[p]);a.originalType=e,a.mdxType="string"==typeof e?e:o,s[1]=a;for(var l=2;l(u => u.Id == 1);\nvar expression2 = LinqExpression.Create((u,i) => u.Id == 1 && i > 0);\n")),(0,i.kt)("h2",{id:"52-\u62fc\u63a5\u4e24\u4e2a\u8868\u8fbe\u5f0f"},"5.2 \u62fc\u63a5\u4e24\u4e2a\u8868\u8fbe\u5f0f"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"// \u521b\u5efa\u4e00\u4e2a\u521d\u59cb\u5316\u7684\u8868\u8fbe\u5f0f\nvar expression = LinqExpression.And();\nvar expression2 = LinqExpression.IndexAnd();\nvar expression3 = LinqExpression.Or();\nvar expression4 = LinqExpression.IndexOr();\n\n// \u62fc\u63a5\u8868\u8fbe\u5f0f\nvar expression5 = expression.And(expression2);\nvar expression6 = expression.AndIf(age > 18, expression2);\nvar expression7 = expression.Or(expression2);\nvar expression8 = expression.OrIf(age > 18, expression2);\n\n// \u83b7\u53d6\u8868\u8fbe\u5f0f\u5c5e\u6027\u540d\nvar properyName = expression.GetExpressionPropertyName(u => u.Name); // Name\n")))}d.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[1689],{3905:function(e,n,r){r.d(n,{Zo:function(){return c},kt:function(){return f}});var t=r(7294);function o(e,n,r){return n in e?Object.defineProperty(e,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[n]=r,e}function i(e,n){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n&&(t=t.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),r.push.apply(r,t)}return r}function s(e){for(var n=1;n=0||(o[r]=e[r]);return o}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(t=0;t=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var p=t.createContext({}),l=function(e){var n=t.useContext(p),r=n;return e&&(r="function"==typeof e?e(n):s(s({},n),e)),r},c=function(e){var n=l(e.components);return t.createElement(p.Provider,{value:n},e.children)},u={inlineCode:"code",wrapper:function(e){var n=e.children;return t.createElement(t.Fragment,{},n)}},d=t.forwardRef((function(e,n){var r=e.components,o=e.mdxType,i=e.originalType,p=e.parentName,c=a(e,["components","mdxType","originalType","parentName"]),d=l(r),f=o,x=d["".concat(p,".").concat(f)]||d[f]||u[f]||i;return r?t.createElement(x,s(s({ref:n},c),{},{components:r})):t.createElement(x,s({ref:n},c))}));function f(e,n){var r=arguments,o=n&&n.mdxType;if("string"==typeof e||o){var i=r.length,s=new Array(i);s[0]=d;var a={};for(var p in n)hasOwnProperty.call(n,p)&&(a[p]=n[p]);a.originalType=e,a.mdxType="string"==typeof e?e:o,s[1]=a;for(var l=2;l(u => u.Id == 1);\nvar expression2 = LinqExpression.Create((u,i) => u.Id == 1 && i > 0);\n")),(0,i.kt)("h2",{id:"52-\u62fc\u63a5\u4e24\u4e2a\u8868\u8fbe\u5f0f"},"5.2 \u62fc\u63a5\u4e24\u4e2a\u8868\u8fbe\u5f0f"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"// \u521b\u5efa\u4e00\u4e2a\u521d\u59cb\u5316\u7684\u8868\u8fbe\u5f0f\nvar expression = LinqExpression.And();\nvar expression2 = LinqExpression.IndexAnd();\nvar expression3 = LinqExpression.Or();\nvar expression4 = LinqExpression.IndexOr();\n\n// \u62fc\u63a5\u8868\u8fbe\u5f0f\nvar expression5 = expression.And(expression2);\nvar expression6 = expression.AndIf(age > 18, expression2);\nvar expression7 = expression.Or(expression2);\nvar expression8 = expression.OrIf(age > 18, expression2);\n\n// \u83b7\u53d6\u8868\u8fbe\u5f0f\u5c5e\u6027\u540d\nvar properyName = expression.GetExpressionPropertyName(u => u.Name); // Name\n")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/1df36e8e.b935c1fc.js b/handbook/build/assets/js/1df36e8e.b935c1fc.js new file mode 100644 index 00000000000..5f0f1de664a --- /dev/null +++ b/handbook/build/assets/js/1df36e8e.b935c1fc.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[9606],{3911:function(o){o.exports=JSON.parse('{"/furion/blog/tags/furion":{"allTagsPath":"/furion/blog/tags","slug":"/furion/blog/tags/furion","name":"furion","count":6,"permalink":"/furion/blog/tags/furion"},"/furion/blog/tags/furos":{"allTagsPath":"/furion/blog/tags","slug":"/furion/blog/tags/furos","name":"furos","count":6,"permalink":"/furion/blog/tags/furos"},"/furion/blog/tags/net":{"allTagsPath":"/furion/blog/tags","slug":"/furion/blog/tags/net","name":".net","count":6,"permalink":"/furion/blog/tags/net"},"/furion/blog/tags/netcore":{"allTagsPath":"/furion/blog/tags","slug":"/furion/blog/tags/netcore","name":".netcore","count":6,"permalink":"/furion/blog/tags/netcore"},"/furion/blog/tags/net-5":{"allTagsPath":"/furion/blog/tags","slug":"/furion/blog/tags/net-5","name":".net5","count":6,"permalink":"/furion/blog/tags/net-5"},"/furion/blog/tags/net-6":{"allTagsPath":"/furion/blog/tags","slug":"/furion/blog/tags/net-6","name":".net6","count":4,"permalink":"/furion/blog/tags/net-6"},"/furion/blog/tags/upload":{"allTagsPath":"/furion/blog/tags","slug":"/furion/blog/tags/upload","name":"upload","count":1,"permalink":"/furion/blog/tags/upload"},"/furion/blog/tags/download":{"allTagsPath":"/furion/blog/tags","slug":"/furion/blog/tags/download","name":"download","count":1,"permalink":"/furion/blog/tags/download"},"/furion/blog/tags/httpcontext":{"allTagsPath":"/furion/blog/tags","slug":"/furion/blog/tags/httpcontext","name":"httpcontext","count":1,"permalink":"/furion/blog/tags/httpcontext"}}')}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/1df36e8e.c34e01be.js b/handbook/build/assets/js/1df36e8e.c34e01be.js deleted file mode 100644 index d689e23254d..00000000000 --- a/handbook/build/assets/js/1df36e8e.c34e01be.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[9606],{3911:function(n){n.exports=JSON.parse('{"furion":{"allTagsPath":"/furion/blog/tags","slug":"furion","name":"furion","count":6,"permalink":"/furion/blog/tags/furion"},"furos":{"allTagsPath":"/furion/blog/tags","slug":"furos","name":"furos","count":6,"permalink":"/furion/blog/tags/furos"},"net":{"allTagsPath":"/furion/blog/tags","slug":"net","name":".net","count":6,"permalink":"/furion/blog/tags/net"},"netcore":{"allTagsPath":"/furion/blog/tags","slug":"netcore","name":".netcore","count":6,"permalink":"/furion/blog/tags/netcore"},"net-5":{"allTagsPath":"/furion/blog/tags","slug":"net-5","name":".net5","count":6,"permalink":"/furion/blog/tags/net-5"},"net-6":{"allTagsPath":"/furion/blog/tags","slug":"net-6","name":".net6","count":4,"permalink":"/furion/blog/tags/net-6"},"upload":{"allTagsPath":"/furion/blog/tags","slug":"upload","name":"upload","count":1,"permalink":"/furion/blog/tags/upload"},"download":{"allTagsPath":"/furion/blog/tags","slug":"download","name":"download","count":1,"permalink":"/furion/blog/tags/download"},"httpcontext":{"allTagsPath":"/furion/blog/tags","slug":"httpcontext","name":"httpcontext","count":1,"permalink":"/furion/blog/tags/httpcontext"}}')}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/213bdfa2.5cf64978.js b/handbook/build/assets/js/213bdfa2.5cf64978.js deleted file mode 100644 index 903883a5028..00000000000 --- a/handbook/build/assets/js/213bdfa2.5cf64978.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[4534],{6691:function(n){n.exports=JSON.parse('{"allTagsPath":"/furion/blog/tags","slug":"furion","name":"furion","count":6,"permalink":"/furion/blog/tags/furion"}')}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/213bdfa2.6792e049.js b/handbook/build/assets/js/213bdfa2.6792e049.js new file mode 100644 index 00000000000..9d0abf84635 --- /dev/null +++ b/handbook/build/assets/js/213bdfa2.6792e049.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[4534],{6691:function(n){n.exports=JSON.parse('{"allTagsPath":"/furion/blog/tags","slug":"/furion/blog/tags/furion","name":"furion","count":6,"permalink":"/furion/blog/tags/furion"}')}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/22bdbfc1.1369a5ec.js b/handbook/build/assets/js/22bdbfc1.1369a5ec.js deleted file mode 100644 index 49e57ad8ff6..00000000000 --- a/handbook/build/assets/js/22bdbfc1.1369a5ec.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[3411],{9689:function(o){o.exports=JSON.parse('{"allTagsPath":"/furion/blog/tags","slug":"download","name":"download","count":1,"permalink":"/furion/blog/tags/download"}')}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/22bdbfc1.91e20ec0.js b/handbook/build/assets/js/22bdbfc1.91e20ec0.js new file mode 100644 index 00000000000..1a13588543a --- /dev/null +++ b/handbook/build/assets/js/22bdbfc1.91e20ec0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[3411],{9689:function(o){o.exports=JSON.parse('{"allTagsPath":"/furion/blog/tags","slug":"/furion/blog/tags/download","name":"download","count":1,"permalink":"/furion/blog/tags/download"}')}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/22f09a41.59cbb650.js b/handbook/build/assets/js/22f09a41.59cbb650.js new file mode 100644 index 00000000000..30fef9077bd --- /dev/null +++ b/handbook/build/assets/js/22f09a41.59cbb650.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[6494],{3905:function(e,n,t){t.d(n,{Zo:function(){return p},kt:function(){return s}});var a=t(7294);function r(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function l(e){for(var n=1;n=0||(r[t]=e[t]);return r}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var m=a.createContext({}),d=function(e){var n=a.useContext(m),t=n;return e&&(t="function"==typeof e?e(n):l(l({},n),e)),t},p=function(e){var n=d(e.components);return a.createElement(m.Provider,{value:n},e.children)},k={inlineCode:"code",wrapper:function(e){var n=e.children;return a.createElement(a.Fragment,{},n)}},N=a.forwardRef((function(e,n){var t=e.components,r=e.mdxType,i=e.originalType,m=e.parentName,p=o(e,["components","mdxType","originalType","parentName"]),N=d(t),s=r,u=N["".concat(m,".").concat(s)]||N[s]||k[s]||i;return t?a.createElement(u,l(l({ref:n},p),{},{components:t})):a.createElement(u,l({ref:n},p))}));function s(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var i=t.length,l=new Array(i);l[0]=N;var o={};for(var m in n)hasOwnProperty.call(n,m)&&(o[m]=n[m]);o.originalType=e,o.mdxType="string"==typeof e?e:r,l[1]=o;for(var d=2;dISpareTimeWorker \u65b9\u5f0f",id:"2635-isparetimeworker-\u65b9\u5f0f",children:[]}]},{value:"26.4 \u95f4\u9694\u65b9\u5f0f\u4f7f\u7528",id:"264-\u95f4\u9694\u65b9\u5f0f\u4f7f\u7528",children:[{value:"26.4.1 \u6bcf\u9694\u4e00\u6bb5\u65f6\u95f4\u6267\u884c",id:"2641-\u6bcf\u9694\u4e00\u6bb5\u65f6\u95f4\u6267\u884c",children:[]},{value:"26.4.2 \u914d\u7f6e\u4efb\u52a1\u4fe1\u606f",id:"2642-\u914d\u7f6e\u4efb\u52a1\u4fe1\u606f",children:[]},{value:"26.4.3 \u624b\u52a8\u542f\u52a8\u6267\u884c",id:"2643-\u624b\u52a8\u542f\u52a8\u6267\u884c",children:[]},{value:"26.4.4 ISpareTimeWorker \u65b9\u5f0f",id:"2644-isparetimeworker-\u65b9\u5f0f",children:[]}]},{value:"26.5 Cron \u8868\u8fbe\u5f0f\u4f7f\u7528",id:"265-cron-\u8868\u8fbe\u5f0f\u4f7f\u7528",children:[{value:"26.5.1 \u4ec0\u4e48\u662f Cron \u8868\u8fbe\u5f0f",id:"2651-\u4ec0\u4e48\u662f-cron-\u8868\u8fbe\u5f0f",children:[]},{value:"26.5.2 \u5e38\u89c1 Cron \u8868\u8fbe\u5f0f",id:"2652-\u5e38\u89c1-cron-\u8868\u8fbe\u5f0f",children:[]},{value:"26.5.3 \u5728\u7ebf\u751f\u6210 Cron \u8868\u8fbe\u5f0f",id:"2653-\u5728\u7ebf\u751f\u6210-cron-\u8868\u8fbe\u5f0f",children:[]},{value:"26.5.4 Macro \u6807\u8bc6\u7b26",id:"2654-macro-\u6807\u8bc6\u7b26",children:[]},{value:"26.5.5 \u4f7f\u7528 Cron \u8868\u8fbe\u5f0f",id:"2655-\u4f7f\u7528-cron-\u8868\u8fbe\u5f0f",children:[]},{value:"26.5.6 \u4f7f\u7528 Macro \u5360\u4f4d\u7b26",id:"2656-\u4f7f\u7528-macro-\u5360\u4f4d\u7b26",children:[]},{value:"26.5.7 \u914d\u7f6e\u4efb\u52a1\u4fe1\u606f",id:"2657-\u914d\u7f6e\u4efb\u52a1\u4fe1\u606f",children:[]},{value:"26.5.8 \u624b\u52a8\u542f\u52a8\u6267\u884c",id:"2658-\u624b\u52a8\u542f\u52a8\u6267\u884c",children:[]},{value:"26.5.9 ISpareTimeWorker \u65b9\u5f0f",id:"2659-isparetimeworker-\u65b9\u5f0f",children:[]}]},{value:"26.6 \u81ea\u5b9a\u4e49\u4e0b\u6b21\u6267\u884c\u65f6\u95f4",id:"266-\u81ea\u5b9a\u4e49\u4e0b\u6b21\u6267\u884c\u65f6\u95f4",children:[{value:"26.6.1 \u9ad8\u7ea7\u81ea\u5b9a\u4e49\u95f4\u9694\u65b9\u5f0f",id:"2661-\u9ad8\u7ea7\u81ea\u5b9a\u4e49\u95f4\u9694\u65b9\u5f0f",children:[]},{value:"26.6.2 \u9ad8\u7ea7\u81ea\u5b9a\u4e49 Cron \u8868\u8fbe\u5f0f",id:"2662-\u9ad8\u7ea7\u81ea\u5b9a\u4e49-cron-\u8868\u8fbe\u5f0f",children:[]}]},{value:"26.7 ISpareTimeWorker \u8bf4\u660e",id:"267-isparetimeworker-\u8bf4\u660e",children:[{value:"26.7.1 [SpareTime] \u7279\u6027",id:"2671-sparetime-\u7279\u6027",children:[]}]},{value:"26.8 SpareTime \u9759\u6001\u7c7b",id:"268-sparetime-\u9759\u6001\u7c7b",children:[{value:"26.8.1 \u521d\u59cb\u5316\u4efb\u52a1",id:"2681-\u521d\u59cb\u5316\u4efb\u52a1",children:[]},{value:"26.8.2 \u5b9e\u73b0\u540e\u53f0\u6267\u884c",id:"2682-\u5b9e\u73b0\u540e\u53f0\u6267\u884c",children:[]},{value:"26.8.3 \u5f00\u59cb\u4e00\u4e2a\u4efb\u52a1",id:"2683-\u5f00\u59cb\u4e00\u4e2a\u4efb\u52a1",children:[]},{value:"26.8.4 \u6682\u505c\u4e00\u4e2a\u4efb\u52a1",id:"2684-\u6682\u505c\u4e00\u4e2a\u4efb\u52a1",children:[]},{value:"26.8.5 \u53d6\u6d88\u4e00\u4e2a\u4efb\u52a1",id:"2685-\u53d6\u6d88\u4e00\u4e2a\u4efb\u52a1",children:[]},{value:"26.8.6 \u9500\u6bc1\u6240\u6709\u4efb\u52a1",id:"2686-\u9500\u6bc1\u6240\u6709\u4efb\u52a1",children:[]},{value:"26.8.7 \u83b7\u53d6\u6240\u6709\u4efb\u52a1",id:"2687-\u83b7\u53d6\u6240\u6709\u4efb\u52a1",children:[]},{value:"26.8.8 \u83b7\u53d6\u5355\u4e2a\u4efb\u52a1",id:"2688-\u83b7\u53d6\u5355\u4e2a\u4efb\u52a1",children:[]},{value:"26.8.9 \u89e3\u6790 Cron \u8868\u8fbe\u5f0f",id:"2689-\u89e3\u6790-cron-\u8868\u8fbe\u5f0f",children:[]}]},{value:"26.9 \u5e76\u884c\u548c\u4e32\u884c\u6267\u884c\u65b9\u5f0f",id:"269-\u5e76\u884c\u548c\u4e32\u884c\u6267\u884c\u65b9\u5f0f",children:[{value:"26.9.1 SpareTime \u9759\u6001\u65b9\u5f0f\u6307\u5b9a",id:"2691-sparetime-\u9759\u6001\u65b9\u5f0f\u6307\u5b9a",children:[]},{value:"26.9.2 ISpareTimeWorker \u65b9\u5f0f",id:"2692-isparetimeworker-\u65b9\u5f0f",children:[]}]},{value:"26.10 \u4efb\u52a1\u5f02\u5e38\u5904\u7406",id:"2610-\u4efb\u52a1\u5f02\u5e38\u5904\u7406",children:[]},{value:"26.11 \u5982\u4f55\u5728\u4efb\u52a1\u4e2d\u89e3\u6790\u5bf9\u8c61",id:"2611-\u5982\u4f55\u5728\u4efb\u52a1\u4e2d\u89e3\u6790\u5bf9\u8c61",children:[{value:"26.11.1 SpareTime \u9759\u6001\u7c7b\u4e2d",id:"26111-sparetime-\u9759\u6001\u7c7b\u4e2d",children:[]},{value:"26.11.2 ISpareTimeWorker \u65b9\u5f0f",id:"26112-isparetimeworker-\u65b9\u5f0f",children:[]}]},{value:"26.12 \u5728 BackgroundService \u4e2d\u4f7f\u7528",id:"2612-\u5728-backgroundservice-\u4e2d\u4f7f\u7528",children:[{value:"26.12.1 \u95f4\u9694\u6267\u884c\u65b9\u5f0f",id:"26121-\u95f4\u9694\u6267\u884c\u65b9\u5f0f",children:[]},{value:"26.12.2 Cron \u8868\u8fbe\u5f0f\u6267\u884c\u65b9\u5f0f",id:"26122-cron-\u8868\u8fbe\u5f0f\u6267\u884c\u65b9\u5f0f",children:[]}]},{value:"26.13 \u5b9a\u65f6\u4efb\u52a1\u76d1\u542c\u5668",id:"2613-\u5b9a\u65f6\u4efb\u52a1\u76d1\u542c\u5668",children:[{value:"26.13.1 SpareTimerExecuter \u5c5e\u6027\u8bf4\u660e",id:"26131-sparetimerexecuter-\u5c5e\u6027\u8bf4\u660e",children:[]}]},{value:"26.14 IIS \u90e8\u7f72\u56de\u6536\u8bbe\u7f6e",id:"2614-iis-\u90e8\u7f72\u56de\u6536\u8bbe\u7f6e",children:[]},{value:"26.15 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"2615-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],N={toc:k};function s(e){var n=e.components,t=(0,r.Z)(e,o);return(0,i.kt)("wrapper",(0,a.Z)({},N,t,{components:n,mdxType:"MDXLayout"}),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7248\u672c\u8bf4\u660e")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u4ee5\u4e0b\u5185\u5bb9\u4ec5\u9650 ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion 2.0.0 +")," \u7248\u672c\u4f7f\u7528\u3002"))),(0,i.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"IIS \u90e8\u7f72\u8bf4\u660e")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u7531\u4e8e IIS \u6709\u56de\u6536\u7684\u673a\u5236\uff0c\u6240\u4ee5\u5b9a\u65f6\u4efb\u52a1\u5e94\u8be5\u91c7\u7528\u72ec\u7acb\u90e8\u7f72\uff0c\u4e0d\u7136\u7ecf\u5e38\u51fa\u73b0\u4e0d\u80fd\u89e6\u53d1\u7684\u60c5\u51b5\u3002\u67e5\u770b\u3010",(0,i.kt)("a",{parentName:"p",href:"/furion/docs/process-service"},"Worker Service \u7ae0\u8282"),"\u3011"))),(0,i.kt)("h2",{id:"261-\u5173\u4e8e\u5b9a\u65f6\u4efb\u52a1"},"26.1 \u5173\u4e8e\u5b9a\u65f6\u4efb\u52a1"),(0,i.kt)("p",null,"\u987e\u540d\u601d\u4e49\uff0c\u5b9a\u65f6\u4efb\u52a1\u5c31\u662f\u5728\u7279\u5b9a\u7684\u65f6\u95f4\u6216\u7b26\u5408\u67d0\u79cd\u65f6\u95f4\u89c4\u5f8b\u6267\u884c\u7684\u4efb\u52a1\u3002\u901a\u5e38\u5b9a\u65f6\u4efb\u52a1\u6709\u56db\u79cd\u65f6\u95f4\u8c03\u5ea6\u65b9\u5f0f\uff1a"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"\u7f13\u9694\u65f6\u95f4")," \u65b9\u5f0f\uff1a\u5ef6\u8fdf\u591a\u5c11\u65f6\u95f4\u540e\u8c03\u914d\u4efb\u52a1\uff0c\u8fd9\u79cd\u65b9\u5f0f\u4efb\u52a1\u53ea\u4f1a\u88ab\u8c03\u7528\u4e00\u6b21\u3002"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"\u95f4\u9694\u65f6\u95f4")," \u65b9\u5f0f\uff1a\u6bcf\u9694\u4e00\u6bb5\u56fa\u5b9a\u65f6\u95f4\u8c03\u914d\u4efb\u52a1\uff0c\u65e0\u95f4\u65ad\u8c03\u7528\u4efb\u52a1\u3002"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"Cron \u8868\u8fbe\u5f0f")," \u65b9\u6cd5\uff1a\u901a\u8fc7 ",(0,i.kt)("inlineCode",{parentName:"li"},"Cron")," \u8868\u8fbe\u5f0f\u8ba1\u7b97\u4e0b\u4e00\u6b21\u6267\u884c\u65f6\u95f4\u8fdb\u884c\u8c03\u914d\u4efb\u52a1\uff0c\u53ef\u4ee5\u914d\u7f6e\u7279\u5b9a\u65f6\u95f4\u8303\u56f4\u5185\u6267\u884c\uff0c\u4e5f\u53ef\u4ee5\u65e0\u95f4\u65ad\u6267\u884c\u3002"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"\u81ea\u5b9a\u4e49\u4e0b\u6b21\u6267\u884c\u65f6\u95f4"),"\uff1a\u53ef\u4ee5\u901a\u8fc7\u5404\u79cd\u903b\u8f91\u8fd0\u7b97\u8fd4\u56de\u4e0b\u4e00\u6b21\u6267\u884c\u65f6\u95f4")),(0,i.kt)("h2",{id:"262-\u5982\u4f55\u5b9e\u73b0"},"26.2 \u5982\u4f55\u5b9e\u73b0"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u4e86\u4e24\u79cd\u65b9\u5f0f\u5b9e\u73b0\u5b9a\u65f6\u4efb\u52a1\uff1a"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"SpareTime")," \u9759\u6001\u7c7b\uff1a",(0,i.kt)("inlineCode",{parentName:"li"},"SpareTime")," \u9759\u6001\u7c7b\u63d0\u4f9b ",(0,i.kt)("inlineCode",{parentName:"li"},"SpareTime.Do([options])")," \u65b9\u5f0f\u8c03\u7528\u3002"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"ISpareTimeWorker")," \u4f9d\u8d56\u65b9\u5f0f\uff1a\u901a\u8fc7\u81ea\u5b9a\u4e49\u7c7b\u5b9e\u73b0 ",(0,i.kt)("inlineCode",{parentName:"li"},"ISpareTimeWorker")," \u63a5\u53e3\u5e76\u7f16\u5199\u4e00\u5b9a\u89c4\u5219\u7684\u65b9\u6cd5\u5373\u53ef\u3002",(0,i.kt)("strong",{parentName:"li"},"\u9700\u8981\u5728 ",(0,i.kt)("inlineCode",{parentName:"strong"},"Startup.cs")," \u4e2d\u6ce8\u518c ",(0,i.kt)("inlineCode",{parentName:"strong"},"services.AddTaskScheduler()")))),(0,i.kt)("h2",{id:"263-\u7f13\u9694\u65b9\u5f0f\u4f7f\u7528"},"26.3 \u7f13\u9694\u65b9\u5f0f\u4f7f\u7528"),(0,i.kt)("h3",{id:"2631-\u7279\u5b9a\u65f6\u95f4\u540e\u6267\u884c"},"26.3.1 \u7279\u5b9a\u65f6\u95f4\u540e\u6267\u884c"),(0,i.kt)("p",null,"\u8fd9\u91cc\u6f14\u793a ",(0,i.kt)("inlineCode",{parentName:"p"},"3s")," \u540e\u6267\u884c"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{5}","{5}":!0},'Console.WriteLine("\u5f53\u524d\u65f6\u95f4\uff1a" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));\n\n// timer \u662f\u5b9a\u65f6\u5668\u7684\u5bf9\u8c61\uff0c\u5305\u542b\u5b9a\u65f6\u5668\u76f8\u5173\u4fe1\u606f\n// count \u8868\u793a\u6267\u884c\u6b21\u6570\uff0c\u8fd9\u91cc\u53ea\u6709\u4e00\u6b21\nSpareTime.DoOnce(3000, (timer, count) => {\n Console.WriteLine("\u73b0\u5728\u65f6\u95f4\uff1a" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));\n});\n')),(0,i.kt)("h3",{id:"2632-\u914d\u7f6e\u4efb\u52a1\u4fe1\u606f"},"26.3.2 \u914d\u7f6e\u4efb\u52a1\u4fe1\u606f"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{3}","{3}":!0},'SpareTime.DoOnce(3000, (timer, count) => {\n Console.WriteLine("\u73b0\u5728\u65f6\u95f4\uff1a" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));\n}, "jobName", "\u63cf\u8ff0\u4e00\u4e0b\u8fd9\u4e2a\u4efb\u52a1\u662f\u5e72\u4ec0\u4e48\u7684");\n')),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"jobName")," \u6807\u8bc6\u4efb\u52a1\u7684\u552f\u4e00\u6807\u8bc6\uff0c\u901a\u8fc7\u8fd9\u4e2a\u6807\u8bc6\u53ef\u4ee5\u542f\u52a8\u3001\u6682\u505c\u3001\u9500\u6bc1\u4efb\u52a1\u3002"),(0,i.kt)("h3",{id:"2633-\u624b\u52a8\u542f\u52a8\u6267\u884c"},"26.3.3 \u624b\u52a8\u542f\u52a8\u6267\u884c"),(0,i.kt)("p",null,"\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c\u4efb\u52a1\u521d\u59cb\u5316\u540e\u5c31\u7acb\u5373\u542f\u52a8\uff0c\u7b49\u5f85\u7b26\u5408\u7684\u65f6\u95f4\u5c31\u6267\u884c\uff0c\u6709\u4e9b\u65f6\u5019\u6211\u4eec\u4ec5\u4ec5\u60f3\u521d\u59cb\u5316\u65f6\u95f4\uff0c\u4e0d\u5e0c\u671b\u7acb\u5373\u6267\u884c\uff0c\u53ea\u9700\u8981\u914d\u7f6e ",(0,i.kt)("inlineCode",{parentName:"p"},"startNow")," \u5373\u53ef\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{3,6}","{3,6}":!0},'SpareTime.DoOnce(3000, (timer, count) => {\n Console.WriteLine("\u73b0\u5728\u65f6\u95f4\uff1a" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));\n},"jobName", startNow: false);\n\n// \u624b\u52a8\u542f\u52a8\u6267\u884c\nSpareTime.Start("jobName");\n')),(0,i.kt)("h3",{id:"2634-\u6a21\u62df\u540e\u53f0\u6267\u884c"},"26.3.4 \u6a21\u62df\u540e\u53f0\u6267\u884c"),(0,i.kt)("p",null,"\u6709\u4e9b\u65f6\u5019\uff0c\u6211\u4eec\u53ea\u9700\u8981\u5f00\u542f\u65b0\u7ebf\u7a0b\u53bb\u6267\u884c\u4e00\u4e2a\u4efb\u52a1\uff0c\u6bd4\u5982\u53d1\u77ed\u4fe1\uff0c\u53d1\u90ae\u4ef6\uff0c\u65e0\u9700\u914d\u7f6e\u3002"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{2}","{2}":!0},"// \u6b64\u65b9\u6cd5\u65e0\u9700\u4e3b\u7ebf\u7a0b\u7b49\u5f85\u5373\u53ef\u8fd4\u56de\uff0c\u53ef\u5927\u5927\u63d0\u9ad8\u6027\u80fd\nSpareTime.DoIt(() => {\n // \u8fd9\u91cc\u53d1\u9001\u77ed\u4fe1\uff0c\u53d1\u9001\u90ae\u4ef6\u6216\u8bb0\u5f55\u8bbf\u95ee\u8bb0\u5f55\n});\n")),(0,i.kt)("p",null,"\u8fd8\u53ef\u4ee5\u6307\u5b9a\u591a\u957f\u65f6\u95f4\u540e\u89e6\u53d1\uff0c\u5efa\u8bae ",(0,i.kt)("inlineCode",{parentName:"p"},"10-1000")," \u6beb\u79d2\u4e4b\u95f4\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{3}","{3}":!0},"SpareTime.DoIt(() => {\n // \u53d1\u9001\u77ed\u4fe1\n}, 100);\n")),(0,i.kt)("h3",{id:"2635-isparetimeworker-\u65b9\u5f0f"},"26.3.5 ",(0,i.kt)("inlineCode",{parentName:"h3"},"ISpareTimeWorker")," \u65b9\u5f0f"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,8}","{1,8}":!0},'public class JobWorker : ISpareTimeWorker\n{\n /// \n /// 3s \u540e\u6267\u884c\n /// \n /// \n /// \n [SpareTime(3000, "jobName", DoOnce = true, StartNow = true)]\n public void DoSomething(SpareTimer timer, long count)\n {\n Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));\n }\n\n /// \n /// 3s \u540e\u6267\u884c\uff08\u652f\u6301\u5f02\u6b65\uff09\n /// \n /// \n /// \n [SpareTime(3000, "jobName", DoOnce = true, StartNow = true)]\n public async Task DoSomethingAsync(SpareTimer timer, long count)\n {\n Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));\n await Task.Completed;\n }\n}\n')),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"\u9700\u8981\u5728 ",(0,i.kt)("inlineCode",{parentName:"strong"},"Startup.cs")," \u4e2d\u6ce8\u518c ",(0,i.kt)("inlineCode",{parentName:"strong"},"services.AddTaskScheduler()"))),(0,i.kt)("h2",{id:"264-\u95f4\u9694\u65b9\u5f0f\u4f7f\u7528"},"26.4 \u95f4\u9694\u65b9\u5f0f\u4f7f\u7528"),(0,i.kt)("h3",{id:"2641-\u6bcf\u9694\u4e00\u6bb5\u65f6\u95f4\u6267\u884c"},"26.4.1 \u6bcf\u9694\u4e00\u6bb5\u65f6\u95f4\u6267\u884c"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{2}","{2}":!0},'// \u6bcf\u9694 1s \u6267\u884c\nSpareTime.Do(1000, (timer, count) => {\n Console.WriteLine("\u73b0\u5728\u65f6\u95f4\uff1a" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));\n Console.WriteLine($"\u4e00\u5171\u6267\u884c\u4e86\uff1a{count} \u6b21");\n});\n')),(0,i.kt)("h3",{id:"2642-\u914d\u7f6e\u4efb\u52a1\u4fe1\u606f"},"26.4.2 \u914d\u7f6e\u4efb\u52a1\u4fe1\u606f"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,4}","{1,4}":!0},'SpareTime.Do(1000, (timer, count) => {\n Console.WriteLine("\u73b0\u5728\u65f6\u95f4\uff1a" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));\n Console.WriteLine($"\u4e00\u5171\u6267\u884c\u4e86\uff1a{count} \u6b21");\n}, "jobName", "\u8fd9\u662f\u4e00\u4e2a\u8ba1\u65f6\u5668\u4efb\u52a1");\n')),(0,i.kt)("h3",{id:"2643-\u624b\u52a8\u542f\u52a8\u6267\u884c"},"26.4.3 \u624b\u52a8\u542f\u52a8\u6267\u884c"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,4,6}","{1,4,6}":!0},'SpareTime.Do(1000, (timer, count) => {\n Console.WriteLine("\u73b0\u5728\u65f6\u95f4\uff1a" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));\n Console.WriteLine($"\u4e00\u5171\u6267\u884c\u4e86\uff1a{count} \u6b21");\n}, "jobName", startNow:false);\n\nSpareTime.Start("jobName");\n')),(0,i.kt)("h3",{id:"2644-isparetimeworker-\u65b9\u5f0f"},"26.4.4 ",(0,i.kt)("inlineCode",{parentName:"h3"},"ISpareTimeWorker")," \u65b9\u5f0f"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,8}","{1,8}":!0},'public class JobWorker : ISpareTimeWorker\n{\n /// \n /// \u6bcf\u9694 3s \u6267\u884c\n /// \n /// \n /// \n [SpareTime(3000, "jobName", StartNow = true)]\n public void DoSomething(SpareTimer timer, long count)\n {\n Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));\n Console.WriteLine($"\u4e00\u5171\u6267\u884c\u4e86\uff1a{count} \u6b21");\n }\n}\n')),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"\u9700\u8981\u5728 ",(0,i.kt)("inlineCode",{parentName:"strong"},"Startup.cs")," \u4e2d\u6ce8\u518c ",(0,i.kt)("inlineCode",{parentName:"strong"},"services.AddTaskScheduler()"))),(0,i.kt)("h2",{id:"265-cron-\u8868\u8fbe\u5f0f\u4f7f\u7528"},"26.5 ",(0,i.kt)("inlineCode",{parentName:"h2"},"Cron")," \u8868\u8fbe\u5f0f\u4f7f\u7528"),(0,i.kt)("h3",{id:"2651-\u4ec0\u4e48\u662f-cron-\u8868\u8fbe\u5f0f"},"26.5.1 \u4ec0\u4e48\u662f ",(0,i.kt)("inlineCode",{parentName:"h3"},"Cron")," \u8868\u8fbe\u5f0f"),(0,i.kt)("p",null,"Cron \u8868\u8fbe\u5f0f\u662f\u4e00\u4e2a\u5b57\u7b26\u4e32\uff0c\u5b57\u7b26\u4e32\u4ee5 ",(0,i.kt)("inlineCode",{parentName:"p"},"5")," \u6216 ",(0,i.kt)("inlineCode",{parentName:"p"},"6")," \u4e2a\u7a7a\u683c\u9694\u5f00\uff0c\u5206\u4e3a 6 \u6216 7 \u4e2a\u57df\uff0c\u6bcf\u4e00\u4e2a\u57df\u4ee3\u8868\u4e00\u4e2a\u542b\u4e49\uff0cCron \u6709\u5982\u4e0b\u4e24\u79cd\u8bed\u6cd5\u683c\u5f0f\uff1a"),(0,i.kt)("p",null,"\uff081\uff09 Seconds Minutes Hours DayofMonth Month DayofWeek Year"),(0,i.kt)("p",null,"\uff082\uff09Seconds Minutes Hours DayofMonth Month DayofWeek"),(0,i.kt)("p",null,"Cron \u4ece\u5de6\u5230\u53f3\uff08\u7528\u7a7a\u683c\u9694\u5f00\uff09\uff1a",(0,i.kt)("inlineCode",{parentName:"p"},"\u79d2")," ",(0,i.kt)("inlineCode",{parentName:"p"},"\u5206")," ",(0,i.kt)("inlineCode",{parentName:"p"},"\u5c0f\u65f6")," ",(0,i.kt)("inlineCode",{parentName:"p"},"\u6708\u4efd\u4e2d\u7684\u65e5\u671f")," ",(0,i.kt)("inlineCode",{parentName:"p"},"\u6708\u4efd")," ",(0,i.kt)("inlineCode",{parentName:"p"},"\u661f\u671f\u4e2d\u7684\u65e5\u671f")," ",(0,i.kt)("inlineCode",{parentName:"p"},"\u5e74\u4efd")),(0,i.kt)("table",null,(0,i.kt)("thead",{parentName:"table"},(0,i.kt)("tr",{parentName:"thead"},(0,i.kt)("th",{parentName:"tr",align:null},"\u5b57\u6bb5"),(0,i.kt)("th",{parentName:"tr",align:null},"\u5141\u8bb8\u503c"),(0,i.kt)("th",{parentName:"tr",align:null},"\u5141\u8bb8\u7684\u7279\u6b8a\u5b57\u7b26"))),(0,i.kt)("tbody",{parentName:"table"},(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},"\u79d2\uff08Seconds\uff09"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"0~59")," \u7684\u6574\u6570"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},", - \\* /")," \u56db\u4e2a\u5b57\u7b26")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},"\u5206\uff08Minutes\uff09"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"0~59")," \u7684\u6574\u6570"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},", - \\* /")," \u56db\u4e2a\u5b57\u7b26")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},"\u5c0f\u65f6\uff08Hours\uff09"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"0~23")," \u7684\u6574\u6570"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},", - \\* /")," \u56db\u4e2a\u5b57\u7b26")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},"\u65e5\u671f\uff08DayofMonth\uff09"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"1~31")," \u7684\u6574\u6570\uff08\u4f46\u662f\u4f60\u9700\u8981\u8003\u8651\u5e73\u95f0\u6708\u7684\u5929\u6570\uff09"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},",- \\* ? / L W C")," \u516b\u4e2a\u5b57\u7b26")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},"\u6708\u4efd\uff08Month\uff09"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"1~12")," \u7684\u6574\u6570\u6216\u8005 ",(0,i.kt)("inlineCode",{parentName:"td"},"JAN-DEC")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},", - \\* /")," \u56db\u4e2a\u5b57\u7b26")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},"\u661f\u671f\uff08DayofWeek\uff09"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"1~7")," \u7684\u6574\u6570\u6216\u8005 ",(0,i.kt)("inlineCode",{parentName:"td"},"SUN-SAT \uff081=SUN\uff09")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},", - \\* ? / L C #")," \u516b\u4e2a\u5b57\u7b26")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},"\u5e74(\u53ef\u9009\uff0c\u7559\u7a7a)\uff08Year\uff09"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"1970~2099")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},", - \\* /")," \u56db\u4e2a\u5b57\u7b26")))),(0,i.kt)("p",null,"\u6bcf\u4e00\u4e2a\u57df\u90fd\u4f7f\u7528\u6570\u5b57\uff0c\u4f46\u8fd8\u53ef\u4ee5\u51fa\u73b0\u5982\u4e0b\u7279\u6b8a\u5b57\u7b26\uff0c\u5b83\u4eec\u7684\u542b\u4e49\u662f\uff1a"),(0,i.kt)("p",null,"\uff081\uff09",(0,i.kt)("inlineCode",{parentName:"p"},"_"),"\uff1a\u8868\u793a\u5339\u914d\u8be5\u57df\u7684\u4efb\u610f\u503c\u3002\u5047\u5982\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Minutes")," \u57df\u4f7f\u7528 ",(0,i.kt)("inlineCode",{parentName:"p"},"\\_"),", \u5373\u8868\u793a\u6bcf\u5206\u949f\u90fd\u4f1a\u89e6\u53d1\u4e8b\u4ef6\u3002"),(0,i.kt)("p",null,"\uff082\uff09",(0,i.kt)("inlineCode",{parentName:"p"},"?"),"\uff1a\u53ea\u80fd\u7528\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"DayofMonth")," \u548c ",(0,i.kt)("inlineCode",{parentName:"p"},"DayofWeek")," \u4e24\u4e2a\u57df\u3002\u5b83\u4e5f\u5339\u914d\u57df\u7684\u4efb\u610f\u503c\uff0c\u4f46\u5b9e\u9645\u4e0d\u4f1a\u3002\u56e0\u4e3a ",(0,i.kt)("inlineCode",{parentName:"p"},"DayofMonth")," \u548c ",(0,i.kt)("inlineCode",{parentName:"p"},"DayofWeek")," \u4f1a\u76f8\u4e92\u5f71\u54cd\u3002\u4f8b\u5982\u60f3\u5728\u6bcf\u6708\u7684 ",(0,i.kt)("inlineCode",{parentName:"p"},"20")," \u65e5\u89e6\u53d1\u8c03\u5ea6\uff0c\u4e0d\u7ba1 ",(0,i.kt)("inlineCode",{parentName:"p"},"20")," \u65e5\u5230\u5e95\u662f\u661f\u671f\u51e0\uff0c\u5219\u53ea\u80fd\u4f7f\u7528\u5982\u4e0b\u5199\u6cd5\uff1a ",(0,i.kt)("inlineCode",{parentName:"p"},"13 13 15 20 _ ?"),", \u5176\u4e2d\u6700\u540e\u4e00\u4f4d\u53ea\u80fd\u7528",(0,i.kt)("inlineCode",{parentName:"p"},"\uff1f"),"\uff0c\u800c\u4e0d\u80fd\u4f7f\u7528","_","\uff0c\u5982\u679c\u4f7f\u7528","*","\u8868\u793a\u4e0d\u7ba1\u661f\u671f\u51e0\u90fd\u4f1a\u89e6\u53d1\uff0c\u5b9e\u9645\u4e0a\u5e76\u4e0d\u662f\u8fd9\u6837\u3002"),(0,i.kt)("p",null,"\uff083\uff09",(0,i.kt)("inlineCode",{parentName:"p"},"-"),"\uff1a\u8868\u793a\u8303\u56f4\u3002\u4f8b\u5982\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Minutes")," \u57df\u4f7f\u7528 ",(0,i.kt)("inlineCode",{parentName:"p"},"5-20"),"\uff0c\u8868\u793a\u4ece ",(0,i.kt)("inlineCode",{parentName:"p"},"5")," \u5206\u5230 ",(0,i.kt)("inlineCode",{parentName:"p"},"20")," \u5206\u949f\u6bcf\u5206\u949f\u89e6\u53d1\u4e00\u6b21"),(0,i.kt)("p",null,"\uff084\uff09",(0,i.kt)("inlineCode",{parentName:"p"},"/"),"\uff1a\u8868\u793a\u8d77\u59cb\u65f6\u95f4\u5f00\u59cb\u89e6\u53d1\uff0c\u7136\u540e\u6bcf\u9694\u56fa\u5b9a\u65f6\u95f4\u89e6\u53d1\u4e00\u6b21\u3002\u4f8b\u5982\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Minutes")," \u57df\u4f7f\u7528 ",(0,i.kt)("inlineCode",{parentName:"p"},"5/20"),"\uff0c\u5219\u610f\u5473\u7740 ",(0,i.kt)("inlineCode",{parentName:"p"},"5")," \u5206\u949f\u89e6\u53d1\u4e00\u6b21\uff0c\u800c ",(0,i.kt)("inlineCode",{parentName:"p"},"25\uff0c45")," \u7b49\u5206\u522b\u89e6\u53d1\u4e00\u6b21."),(0,i.kt)("p",null,"\uff085\uff09",(0,i.kt)("inlineCode",{parentName:"p"},","),"\uff1a\u8868\u793a\u5217\u51fa\u679a\u4e3e\u503c\u3002\u4f8b\u5982\uff1a\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Minutes")," \u57df\u4f7f\u7528 ",(0,i.kt)("inlineCode",{parentName:"p"},"5,20"),"\uff0c\u5219\u610f\u5473\u7740\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"5")," \u548c ",(0,i.kt)("inlineCode",{parentName:"p"},"20")," \u5206\u6bcf\u5206\u949f\u89e6\u53d1\u4e00\u6b21\u3002"),(0,i.kt)("p",null,"\uff086\uff09",(0,i.kt)("inlineCode",{parentName:"p"},"L"),"\uff1a\u8868\u793a\u6700\u540e\uff0c\u53ea\u80fd\u51fa\u73b0\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"DayofWeek")," \u548c ",(0,i.kt)("inlineCode",{parentName:"p"},"DayofMonth")," \u57df\u3002\u5982\u679c\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"DayofWeek")," \u57df\u4f7f\u7528 ",(0,i.kt)("inlineCode",{parentName:"p"},"5L"),",\u610f\u5473\u7740\u5728\u6700\u540e\u7684\u4e00\u4e2a\u661f\u671f\u56db\u89e6\u53d1\u3002"),(0,i.kt)("p",null,"\uff087\uff09",(0,i.kt)("inlineCode",{parentName:"p"},"W"),"\uff1a\u8868\u793a\u6709\u6548\u5de5\u4f5c\u65e5(\u5468\u4e00\u5230\u5468\u4e94) \u53ea\u80fd\u51fa\u73b0\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"DayofMonth")," \u57df\uff0c\u7cfb\u7edf\u5c06\u5728\u79bb\u6307\u5b9a\u65e5\u671f\u7684\u6700\u8fd1\u7684\u6709\u6548\u5de5\u4f5c\u65e5\u89e6\u53d1\u4e8b\u4ef6\u3002\u4f8b\u5982\uff1a\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"DayofMonth")," \u4f7f\u7528 ",(0,i.kt)("inlineCode",{parentName:"p"},"5W"),"\uff0c\u5982\u679c ",(0,i.kt)("inlineCode",{parentName:"p"},"5")," \u65e5\u662f\u661f\u671f\u516d\uff0c\u5219\u5c06\u5728\u6700\u8fd1\u7684\u5de5\u4f5c\u65e5\uff1a\u661f\u671f\u4e94\uff0c\u5373 ",(0,i.kt)("inlineCode",{parentName:"p"},"4")," \u65e5\u89e6\u53d1\u3002\u5982\u679c ",(0,i.kt)("inlineCode",{parentName:"p"},"5")," \u65e5\u662f\u661f\u671f\u5929\uff0c\u5219\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"6")," \u65e5(\u5468\u4e00)\u89e6\u53d1\uff1b\u5982\u679c ",(0,i.kt)("inlineCode",{parentName:"p"},"5")," \u65e5\u5728\u661f\u671f\u4e00\u5230\u661f\u671f\u4e94\u4e2d\u7684\u4e00\u5929\uff0c\u5219\u5c31\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"5")," \u65e5\u89e6\u53d1\u3002\u53e6\u5916\u4e00\u70b9\uff0c",(0,i.kt)("inlineCode",{parentName:"p"},"W")," \u7684\u6700\u8fd1\u5bfb\u627e\u4e0d\u4f1a\u8de8\u8fc7\u6708\u4efd \u3002"),(0,i.kt)("p",null,"\uff088\uff09",(0,i.kt)("inlineCode",{parentName:"p"},"LW"),"\uff1a\u8fd9\u4e24\u4e2a\u5b57\u7b26\u53ef\u4ee5\u8fde\u7528\uff0c\u8868\u793a\u5728\u67d0\u4e2a\u6708\u6700\u540e\u4e00\u4e2a\u5de5\u4f5c\u65e5\uff0c\u5373\u6700\u540e\u4e00\u4e2a\u661f\u671f\u4e94\u3002"),(0,i.kt)("p",null,"\uff089\uff09",(0,i.kt)("inlineCode",{parentName:"p"},"#"),"\uff1a\u7528\u4e8e\u786e\u5b9a\u6bcf\u4e2a\u6708\u7b2c\u51e0\u4e2a\u661f\u671f\u51e0\uff0c\u53ea\u80fd\u51fa\u73b0\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"DayofMonth")," \u57df\u3002\u4f8b\u5982\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"4#2"),"\uff0c\u8868\u793a\u67d0\u6708\u7684\u7b2c\u4e8c\u4e2a\u661f\u671f\u4e09\u3002"),(0,i.kt)("h3",{id:"2652-\u5e38\u89c1-cron-\u8868\u8fbe\u5f0f"},"26.5.2 \u5e38\u89c1 ",(0,i.kt)("inlineCode",{parentName:"h3"},"Cron")," \u8868\u8fbe\u5f0f"),(0,i.kt)("table",null,(0,i.kt)("thead",{parentName:"table"},(0,i.kt)("tr",{parentName:"thead"},(0,i.kt)("th",{parentName:"tr",align:null},"\u8868\u8fbe\u5f0f"),(0,i.kt)("th",{parentName:"tr",align:null},"\u8868\u8fbe\u5f0f\u4ee3\u8868\u542b\u4e49"),(0,i.kt)("th",{parentName:"tr",align:null},"\u683c\u5f0f\u5316"))),(0,i.kt)("tbody",{parentName:"table"},(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"* * * * *")),(0,i.kt)("td",{parentName:"tr",align:null},"\u6bcf\u5206\u949f"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.Standard"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"*/1 * * * *")),(0,i.kt)("td",{parentName:"tr",align:null},"\u6bcf\u5206\u949f"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.Standard"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"0 0/1 * * * ?")),(0,i.kt)("td",{parentName:"tr",align:null},"\u6bcf\u5206\u949f"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.IncludeSeconds"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"0 0 * * * ?")),(0,i.kt)("td",{parentName:"tr",align:null},"\u6bcf\u5c0f\u65f6"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.IncludeSeconds"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"0 0 0/1 * * ?")),(0,i.kt)("td",{parentName:"tr",align:null},"\u6bcf\u5c0f\u65f6"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.IncludeSeconds"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"0 23 ? * MON-FRI")),(0,i.kt)("td",{parentName:"tr",align:null},"\u665a\u4e0a 11:00\uff0c\u5468\u4e00\u81f3\u5468\u4e94"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.Standard"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"* * * * * *")),(0,i.kt)("td",{parentName:"tr",align:null},"\u6bcf\u79d2"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.IncludeSeconds"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"*/45 * * * * *")),(0,i.kt)("td",{parentName:"tr",align:null},"\u6bcf 45 \u79d2"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.IncludeSeconds"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"*/5 * * * *")),(0,i.kt)("td",{parentName:"tr",align:null},"\u6bcf 5 \u5206\u949f"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.Standard"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"0 0/10 * * * ?")),(0,i.kt)("td",{parentName:"tr",align:null},"\u6bcf 10 \u5206\u949f"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.IncludeSeconds"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"0 */5 * * * *")),(0,i.kt)("td",{parentName:"tr",align:null},"\u6bcf 5 \u5206\u949f"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.IncludeSeconds"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"30 11 * * 1-5")),(0,i.kt)("td",{parentName:"tr",align:null},"\u5468\u4e00\u81f3\u5468\u4e94\u4e0a\u5348 11:30"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.Standard"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"30 11 * * *")),(0,i.kt)("td",{parentName:"tr",align:null},"11:30"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.Standard"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"0-10 11 * * *")),(0,i.kt)("td",{parentName:"tr",align:null},"\u4e0a\u5348 11:00 \u81f3 11:10 \u4e4b\u95f4\u7684\u6bcf\u4e00\u5206\u949f"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.Standard"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"* * * 3 *")),(0,i.kt)("td",{parentName:"tr",align:null},"\u6bcf\u5206\u949f\uff0c\u53ea\u5728 3 \u6708\u4efd"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.Standard"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"* * * 3,6 *")),(0,i.kt)("td",{parentName:"tr",align:null},"\u6bcf\u5206\u949f\uff0c\u53ea\u5728 3 \u6708\u548c 6 \u6708"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.Standard"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"30 14,16 * * *")),(0,i.kt)("td",{parentName:"tr",align:null},"\u4e0b\u5348 02:30 \u5206\u548c 04:30 \u5206"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.Standard"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"30 6,14,16 * * *")),(0,i.kt)("td",{parentName:"tr",align:null},"\u65e9\u4e0a 06:30\uff0c\u4e0b\u5348 02:30 \u548c 04:30"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.Standard"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"46 9 * * 1")),(0,i.kt)("td",{parentName:"tr",align:null},"\u65e9\u4e0a 09:46\uff0c\u53ea\u5728\u661f\u671f\u4e00"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.Standard"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"23 12 15 * *")),(0,i.kt)("td",{parentName:"tr",align:null},"\u4e0b\u5348 12:23\uff0c\u5728\u672c\u6708\u7684\u7b2c 15 \u5929"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.Standard"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"23 12 * JAN *")),(0,i.kt)("td",{parentName:"tr",align:null},"\u4e0b\u5348 12:23\uff0c\u53ea\u5728 1 \u6708\u4efd"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.Standard"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"23 12 ? JAN *")),(0,i.kt)("td",{parentName:"tr",align:null},"\u4e0b\u5348 12:23\uff0c\u53ea\u5728 1 \u6708\u4efd"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.Standard"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"23 12 * JAN-FEB *")),(0,i.kt)("td",{parentName:"tr",align:null},"\u4e0b\u5348 12:23\uff0c1 \u6708\u81f3 2 \u6708"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.Standard"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"23 12 * JAN-MAR *")),(0,i.kt)("td",{parentName:"tr",align:null},"\u4e0b\u5348 12:23\uff0c1 \u6708\u81f3 3 \u6708"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.Standard"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"23 12 * * SUN")),(0,i.kt)("td",{parentName:"tr",align:null},"\u4e0b\u5348 12:23\uff0c\u4ec5\u5728\u661f\u671f\u5929"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.Standard"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"*/5 15 * * MON-FRI")),(0,i.kt)("td",{parentName:"tr",align:null},"\u6bcf 5 \u5206\u949f\uff0c\u4e0b\u5348 0:00 \u81f3 03:59\uff0c\u5468\u4e00\u81f3\u5468\u4e94"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.Standard"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"* * * * MON#3")),(0,i.kt)("td",{parentName:"tr",align:null},"\u6bcf\u5206\u949f\uff0c\u5728\u6708\u7684\u7b2c\u4e09\u4e2a\u661f\u671f\u4e00"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.Standard"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"* * * * 4L")),(0,i.kt)("td",{parentName:"tr",align:null},"\u6bcf\u4e00\u5206\u949f\uff0c\u5728\u672c\u6708\u7684\u6700\u540e\u4e00\u5929"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.Standard"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"*/5 * L JAN *")),(0,i.kt)("td",{parentName:"tr",align:null},"\u6bcf\u6708\u4e00\u6b21\u6bcf\u6708 5 \u5206\u949f\uff0c\u53ea\u5728 1 \u6708\u4efd"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.Standard"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"30 02 14 * * *")),(0,i.kt)("td",{parentName:"tr",align:null},"\u4e0b\u5348\u5728 02:02:30"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.IncludeSeconds"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"5-10 * * * * *")),(0,i.kt)("td",{parentName:"tr",align:null},"\u6bcf\u5206\u949f\u7684 5-10 \u79d2"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.IncludeSeconds"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"5-10 30-35 10-12 * * *")),(0,i.kt)("td",{parentName:"tr",align:null},"10:00 \u81f3 12:00 \u4e4b\u95f4\u7684\u6bcf\u5206\u949f 5-10 \u79d2\uff0c\u6bcf\u5c0f\u65f6 30-35 \u5206\u949f"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.IncludeSeconds"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"30 */5 * * * *")),(0,i.kt)("td",{parentName:"tr",align:null},"\u6bcf\u5206\u949f\u7684 30 \u79d2\uff0c\u6bcf\u4e94\u5206\u949f"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.IncludeSeconds"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"0 30 10-13 ? * WED,FRI")),(0,i.kt)("td",{parentName:"tr",align:null},"\u6bcf\u5c0f\u65f6\u7684 30 \u5206\u949f\uff0c\u4e0b\u5348 10:00 \u81f3 01:00 \u4e4b\u95f4\uff0c\u4ec5\u5728\u5468\u4e09\u548c\u5468\u4e94"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.IncludeSeconds"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"10 0/5 * * * ?")),(0,i.kt)("td",{parentName:"tr",align:null},"\u6bcf\u5206\u949f\u7684 10 \u79d2\uff0c\u6bcf 05 \u5206\u949f"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.IncludeSeconds"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"0 0 6 1/1 * ?")),(0,i.kt)("td",{parentName:"tr",align:null},"\u4e0b\u5348 06:00"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.IncludeSeconds"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"0 5 0/1 * * ?")),(0,i.kt)("td",{parentName:"tr",align:null},"\u4e00\u4e2a\u5c0f\u65f6\u7684 05 \u5206"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.IncludeSeconds"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"0 0 L * *")),(0,i.kt)("td",{parentName:"tr",align:null},"\u6bcf\u6708\u6700\u540e\u4e00\u5929\u4e0a\u5348 00\uff1a00"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.Standard"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"0 0 L-1 * *")),(0,i.kt)("td",{parentName:"tr",align:null},"\u6bcf\u6708\u6700\u540e\u4e00\u5929\u7684\u51cc\u6668 00\uff1a00"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.Standard"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"0 0 3W * *")),(0,i.kt)("td",{parentName:"tr",align:null},"\u6bcf\u6708\u7b2c 3 \u4e2a\u5de5\u4f5c\u65e5\u4e0a\u5348 00\uff1a00"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.Standard"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"0 0 LW * *")),(0,i.kt)("td",{parentName:"tr",align:null},"\u5728\u6bcf\u6708\u7684\u6700\u540e\u4e00\u4e2a\u5de5\u4f5c\u65e5\uff0c\u4e0a\u5348 00\uff1a00"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.Standard"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"0 0 * * 2L")),(0,i.kt)("td",{parentName:"tr",align:null},"\u672c\u6708\u6700\u540e\u4e00\u4e2a\u661f\u671f\u4e8c\u4e0a\u5348 00\uff1a00"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.Standard"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"0 0 * * 6#3")),(0,i.kt)("td",{parentName:"tr",align:null},"\u6bcf\u6708\u7b2c\u4e09\u4e2a\u661f\u671f\u516d\u4e0a\u5348 00\uff1a00"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.Standard"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"0 0 ? 1 MON#1")),(0,i.kt)("td",{parentName:"tr",align:null},"1 \u6708\u7b2c\u4e00\u4e2a\u661f\u671f\u4e00\u4e0a\u5348 00\uff1a00"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.Standard"))))),(0,i.kt)("h3",{id:"2653-\u5728\u7ebf\u751f\u6210-cron-\u8868\u8fbe\u5f0f"},"26.5.3 \u5728\u7ebf\u751f\u6210 ",(0,i.kt)("inlineCode",{parentName:"h3"},"Cron")," \u8868\u8fbe\u5f0f"),(0,i.kt)("p",null,(0,i.kt)("a",{parentName:"p",href:"https://cron.qqe2.com/"},"https://cron.qqe2.com/")),(0,i.kt)("h3",{id:"2654-macro-\u6807\u8bc6\u7b26"},"26.5.4 ",(0,i.kt)("inlineCode",{parentName:"h3"},"Macro")," \u6807\u8bc6\u7b26"),(0,i.kt)("p",null,"\u4e3a\u4e86\u65b9\u4fbf\u5b9a\u4e49 ",(0,i.kt)("inlineCode",{parentName:"p"},"Cron")," \u8868\u8fbe\u5f0f\uff0c",(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e5f\u63d0\u4f9b\u4e86\u975e\u5e38\u65b9\u4fbf\u7684\u5360\u4f4d\u7b26\u5b9e\u73b0\u5e38\u7528\u7684\u65f6\u95f4\u683c\u5f0f\uff1a"),(0,i.kt)("table",null,(0,i.kt)("thead",{parentName:"table"},(0,i.kt)("tr",{parentName:"thead"},(0,i.kt)("th",{parentName:"tr",align:null},"\u5360\u4f4d\u7b26"),(0,i.kt)("th",{parentName:"tr",align:null},"\u5bf9\u5e94\u8868\u8fbe\u5f0f"),(0,i.kt)("th",{parentName:"tr",align:null},"\u5360\u4f4d\u7b26\u4ee3\u8868\u542b\u4e49"))),(0,i.kt)("tbody",{parentName:"table"},(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"@every_second")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"* * * * * *")),(0,i.kt)("td",{parentName:"tr",align:null},"\u4e00\u79d2\u949f\u8dd1\u4e00\u6b21")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"@every_minute")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"* * * * *")),(0,i.kt)("td",{parentName:"tr",align:null},"\u5728\u5206\u949f\u5f00\u59cb\u65f6\u6bcf\u5206\u949f\u8fd0\u884c\u4e00\u6b21")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"@hourly")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"0 * * * *")),(0,i.kt)("td",{parentName:"tr",align:null},"\u5728\u5c0f\u65f6\u5f00\u59cb\u65f6\u6bcf\u5c0f\u65f6\u8fd0\u884c\u4e00\u6b21")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"@daily")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"0 0 * * *")),(0,i.kt)("td",{parentName:"tr",align:null},"\u6bcf\u5929\u5348\u591c\u8fd0\u884c\u4e00\u6b21")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"@midnight")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"0 0 * * *")),(0,i.kt)("td",{parentName:"tr",align:null},"\u6bcf\u5929\u5348\u591c\u8fd0\u884c\u4e00\u6b21")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"@weekly")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"0 0 * * 0")),(0,i.kt)("td",{parentName:"tr",align:null},"\u5468\u65e5\u4e0a\u5348\u5348\u591c\u6bcf\u5468\u8fd0\u884c\u4e00\u6b21")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"@monthly")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"0 0 1 * *")),(0,i.kt)("td",{parentName:"tr",align:null},"\u6bcf\u6708\u5728\u6bcf\u6708\u7b2c\u4e00\u5929\u7684\u5348\u591c\u8fd0\u884c\u4e00\u6b21")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"@yearly")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"0 0 1 1 *")),(0,i.kt)("td",{parentName:"tr",align:null},"\u6bcf\u5e74 1 \u6708 1 \u65e5\u5348\u591c\u8fd0\u884c\u4e00\u6b21")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"@annually")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"0 0 1 1 *")),(0,i.kt)("td",{parentName:"tr",align:null},"\u6bcf\u5e74 1 \u6708 1 \u65e5\u5348\u591c\u8fd0\u884c\u4e00\u6b21")))),(0,i.kt)("h3",{id:"2655-\u4f7f\u7528-cron-\u8868\u8fbe\u5f0f"},"26.5.5 \u4f7f\u7528 ",(0,i.kt)("inlineCode",{parentName:"h3"},"Cron")," \u8868\u8fbe\u5f0f"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{2,5}","{2,5}":!0},'// \u6bcf\u9694 1s \u6267\u884c\nSpareTime.Do("* * * * * *", (timer, count) => {\n Console.WriteLine("\u73b0\u5728\u65f6\u95f4\uff1a" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));\n Console.WriteLine($"\u4e00\u5171\u6267\u884c\u4e86\uff1a{count} \u6b21");\n}, cronFormat: CronFormat.IncludeSeconds);\n')),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u5173\u4e8e CronFormat")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c",(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u672a\u542f\u7528\u5bf9 ",(0,i.kt)("inlineCode",{parentName:"p"},"\u79d2")," \u7684\u652f\u6301\uff0c\u5982\u9700\u5f00\u542f\uff0c\u5219\u8bbe\u7f6e ",(0,i.kt)("inlineCode",{parentName:"p"},"cronFormat: CronFormat.IncludeSeconds")," \u5373\u53ef\u3002\u9ed8\u8ba4\u503c\u662f ",(0,i.kt)("inlineCode",{parentName:"p"},"cronFormat: CronFormat.Standard")))),(0,i.kt)("h3",{id:"2656-\u4f7f\u7528-macro-\u5360\u4f4d\u7b26"},"26.5.6 \u4f7f\u7528 ",(0,i.kt)("inlineCode",{parentName:"h3"},"Macro")," \u5360\u4f4d\u7b26"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{2}","{2}":!0},'// \u6bcf\u9694 1s \u6267\u884c\nSpareTime.Do("@every_second", (timer, count) => {\n Console.WriteLine("\u73b0\u5728\u65f6\u95f4\uff1a" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));\n Console.WriteLine($"\u4e00\u5171\u6267\u884c\u4e86\uff1a{count} \u6b21");\n});\n')),(0,i.kt)("h3",{id:"2657-\u914d\u7f6e\u4efb\u52a1\u4fe1\u606f"},"26.5.7 \u914d\u7f6e\u4efb\u52a1\u4fe1\u606f"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{4}","{4}":!0},'SpareTime.Do("* * * * *", (timer, count) => {\n Console.WriteLine("\u73b0\u5728\u65f6\u95f4\uff1a" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));\n Console.WriteLine($"\u4e00\u5171\u6267\u884c\u4e86\uff1a{count} \u6b21");\n}, "cronName", "\u6bcf\u5206\u949f\u6267\u884c\u4e00\u6b21");\n')),(0,i.kt)("h3",{id:"2658-\u624b\u52a8\u542f\u52a8\u6267\u884c"},"26.5.8 \u624b\u52a8\u542f\u52a8\u6267\u884c"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{4,6}","{4,6}":!0},'SpareTime.Do("* * * * *", (timer, count) => {\n Console.WriteLine("\u73b0\u5728\u65f6\u95f4\uff1a" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));\n Console.WriteLine($"\u4e00\u5171\u6267\u884c\u4e86\uff1a{count} \u6b21");\n}, "cronName", "\u6bcf\u5206\u949f\u6267\u884c\u4e00\u6b21", startNow: false);\n\nSpareTime.Start("cronName");\n')),(0,i.kt)("h3",{id:"2659-isparetimeworker-\u65b9\u5f0f"},"26.5.9 ",(0,i.kt)("inlineCode",{parentName:"h3"},"ISpareTimeWorker")," \u65b9\u5f0f"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,8}","{1,8}":!0},'public class JobWorker : ISpareTimeWorker\n{\n /// \n /// \u6bcf\u5206\u949f\u6267\u884c\n /// \n /// \n /// \n [SpareTime("* * * * *", "jobName", StartNow = true)]\n public void DoSomething(SpareTimer timer, long count)\n {\n Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));\n Console.WriteLine($"\u4e00\u5171\u6267\u884c\u4e86\uff1a{count} \u6b21");\n }\n\n /// \n /// \u6bcf\u5206\u949f\u6267\u884c\uff08\u652f\u6301\u5f02\u6b65\uff09\n /// \n /// \n /// \n [SpareTime("* * * * *", "jobName", StartNow = true)]\n public async Task DoSomethingAsync(SpareTimer timer, long count)\n {\n Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));\n Console.WriteLine($"\u4e00\u5171\u6267\u884c\u4e86\uff1a{count} \u6b21");\n await Task.Completed;\n }\n}\n')),(0,i.kt)("h2",{id:"266-\u81ea\u5b9a\u4e49\u4e0b\u6b21\u6267\u884c\u65f6\u95f4"},"26.6 \u81ea\u5b9a\u4e49\u4e0b\u6b21\u6267\u884c\u65f6\u95f4"),(0,i.kt)("p",null,"\u6709\u4e9b\u65f6\u5019\u6211\u4eec\u9700\u8981\u8fdb\u884c\u4e00\u4e9b\u4e1a\u52a1\u903b\u8f91\uff0c\u6bd4\u5982\u6570\u636e\u5e93\u67e5\u8be2\u7b49\u64cd\u4f5c\u8fd4\u56de\u4e0b\u4e00\u6b21\u6267\u884c\u65f6\u95f4\uff0c\u8fd9\u4e2a\u65f6\u5019\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7\u9ad8\u7ea7\u81ea\u5b9a\u4e49\u65b9\u5f0f\u3002"),(0,i.kt)("h3",{id:"2661-\u9ad8\u7ea7\u81ea\u5b9a\u4e49\u95f4\u9694\u65b9\u5f0f"},"26.6.1 \u9ad8\u7ea7\u81ea\u5b9a\u4e49\u95f4\u9694\u65b9\u5f0f"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{2,4-5,7}","{2,4-5,7}":!0},'SpareTime.Do(()=>{\n // \u8fd9\u91cc\u53ef\u4ee5\u67e5\u8be2\u6570\u636e\u5e93\u6216\u8fdb\u884c\u6216\u8fdb\u884c\u4efb\u4f55\u4e1a\u52a1\u903b\u8f91\n\n if(\u7b26\u5408\u903b\u8f91){\n return 1000; // \u6bcf\u79d2\u6267\u884c\n }\n else return -1; // \u4e0d\u7b26\u5408\u903b\u8f91\u53d6\u6d88\u4efb\u52a1\n},\n(timer,count)=>{\n Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));\n Console.WriteLine($"\u4e00\u5171\u6267\u884c\u4e86\uff1a{count} \u6b21");\n});\n')),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u914d\u7f6e\u662f\u5426\u6301\u7eed\u68c0\u67e5")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c\u8be5\u81ea\u5b9a\u4e49\u4f1a\u5728\u8fd4\u56de ",(0,i.kt)("inlineCode",{parentName:"p"},"\u5c0f\u4e8e\u6216\u7b49\u4e8e0")," \u65f6\u7ec8\u6b62\u4efb\u52a1\u7684\u6267\u884c\u3002\u4f46\u662f\u6211\u4eec\u5e0c\u671b\u8be5\u4efb\u52a1\u4e0d\u8981\u7ec8\u6b62\uff0c\u53ea\u8981\u7b26\u5408\u6761\u4ef6\u90fd\u4e00\u76f4\u6267\u884c\uff0c\u53ea\u9700\u8981\u914d\u7f6e ",(0,i.kt)("inlineCode",{parentName:"p"},"cancelInNoneNextTime: false")," \u5373\u53ef"))),(0,i.kt)("h3",{id:"2662-\u9ad8\u7ea7\u81ea\u5b9a\u4e49-cron-\u8868\u8fbe\u5f0f"},"26.6.2 \u9ad8\u7ea7\u81ea\u5b9a\u4e49 ",(0,i.kt)("inlineCode",{parentName:"h3"},"Cron")," \u8868\u8fbe\u5f0f"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{2,4-5,7}","{2,4-5,7}":!0},'SpareTime.Do(()=>{\n // \u8fd9\u91cc\u53ef\u4ee5\u67e5\u8be2\u6570\u636e\u5e93\u6216\u8fdb\u884c\u6216\u8fdb\u884c\u4efb\u4f55\u4e1a\u52a1\u903b\u8f91\n\n if(\u7b26\u5408\u903b\u8f91){\n return DateTimeOffset.Now.AddMinutes(10); // \u5341\u5206\u949f\u540e\u518d\u6267\u884c\n }\n else return null; // \u4e0d\u7b26\u5408\u903b\u8f91\u53d6\u6d88\u4efb\u52a1\n},\n(timer,count) => {\n Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));\n Console.WriteLine($"\u4e00\u5171\u6267\u884c\u4e86\uff1a{count} \u6b21");\n});\n')),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u914d\u7f6e\u662f\u5426\u6301\u7eed\u68c0\u67e5")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c\u8be5\u81ea\u5b9a\u4e49\u4f1a\u5728\u8fd4\u56de ",(0,i.kt)("inlineCode",{parentName:"p"},"null")," \u65f6\u7ec8\u6b62\u4efb\u52a1\u7684\u6267\u884c\u3002\u4f46\u662f\u6211\u4eec\u5e0c\u671b\u8be5\u4efb\u52a1\u4e0d\u8981\u7ec8\u6b62\uff0c\u53ea\u8981\u7b26\u5408\u6761\u4ef6\u90fd\u4e00\u76f4\u6267\u884c\uff0c\u53ea\u9700\u8981\u914d\u7f6e ",(0,i.kt)("inlineCode",{parentName:"p"},"cancelInNoneNextTime: false")," \u5373\u53ef\uff0c\u5982\uff1a"),(0,i.kt)("pre",{parentName:"div"},(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{2,4-5,7,12}","{2,4-5,7,12}":!0},'SpareTime.Do(()=>{\n // \u8fd9\u91cc\u53ef\u4ee5\u67e5\u8be2\u6570\u636e\u5e93\u6216\u8fdb\u884c\u6216\u8fdb\u884c\u4efb\u4f55\u4e1a\u52a1\u903b\u8f91\n\n if(\u7b26\u5408\u903b\u8f91){\n return SpareTime.GetCronNextOccurrence("cron \u8868\u8fbe\u5f0f");\n }\n else return null; // \u4e0d\u7b26\u5408\u903b\u8f91\u7ee7\u7eed\u68c0\u67e5\n},\n(timer,count) => {\n Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));\n Console.WriteLine($"\u4e00\u5171\u6267\u884c\u4e86\uff1a{count} \u6b21");\n}, cancelInNoneNextTime: false);\n')))),(0,i.kt)("h2",{id:"267-isparetimeworker-\u8bf4\u660e"},"26.7 ",(0,i.kt)("inlineCode",{parentName:"h2"},"ISpareTimeWorker")," \u8bf4\u660e"),(0,i.kt)("p",null,"\u9664\u4e86\u4e0a\u9762\u7684 ",(0,i.kt)("inlineCode",{parentName:"p"},"SpareTime")," \u9759\u6001\u7c7b\u65b9\u5f0f\uff0c",(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u8fd8\u63d0\u4f9b\u4e86 ",(0,i.kt)("inlineCode",{parentName:"p"},"ISpareTimeWorker")," \u65b9\u5f0f\uff0c\u4f7f\u7528\u8be5\u65b9\u5f0f\u975e\u5e38\u7b80\u5355\uff0c\u53ea\u9700\u8981\u81ea\u5b9a\u4e49\u4e00\u4e2a",(0,i.kt)("strong",{parentName:"p"},"\u516c\u5f00\u4e14\u975e\u62bd\u8c61\u975e\u9759\u6001"),"\u7c7b\u5e76\u5b9e\u73b0 ",(0,i.kt)("inlineCode",{parentName:"p"},"ISpareTimeWorker")," \u5373\u53ef\u3002"),(0,i.kt)("p",null,"\u5728\u8be5\u7c7b\u4e2d\u5b9a\u4e49\u7684\u4efb\u52a1\u65b9\u6cd5\u9700\u6ee1\u8db3\u4ee5\u4e0b\u89c4\u5219\uff1a"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"\u5fc5\u987b\u662f",(0,i.kt)("strong",{parentName:"li"},"\u516c\u5f00\u4e14\u5b9e\u4f8b\u65b9\u6cd5")),(0,i.kt)("li",{parentName:"ul"},"\u8be5\u65b9\u6cd5\u5fc5\u987b\u8fd4\u56de ",(0,i.kt)("inlineCode",{parentName:"li"},"void")," \u4e14\u63d0\u4f9b ",(0,i.kt)("inlineCode",{parentName:"li"},"SpareTimer")," \u548c ",(0,i.kt)("inlineCode",{parentName:"li"},"long")," \u4e24\u4e2a\u53c2\u6570"),(0,i.kt)("li",{parentName:"ul"},"\u5fc5\u987b\u8d34\u6709 ",(0,i.kt)("inlineCode",{parentName:"li"},"[SpareTime]")," \u7279\u6027")),(0,i.kt)("p",null,"\u5982\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,4-5,12-13,20-21,28-30,37-38,45}","{1,4-5,12-13,20-21,28-30,37-38,45}":!0},'public class JobWorker : ISpareTimeWorker\n{\n // \u6bcf\u9694\u4e00\u79d2\u6267\u884c\uff0c\u4e14\u7acb\u5373\u542f\u52a8\n [SpareTime(1000, "jobName1", StartNow = true)]\n public void DoSomething1(SpareTimer timer, long count)\n {\n Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));\n Console.WriteLine($"\u4e00\u5171\u6267\u884c\u4e86\uff1a{count} \u6b21");\n }\n\n // \u6bcf\u5206\u949f\u6267\u884c\uff0c\u4e14\u7acb\u5373\u542f\u52a8\n [SpareTime("* * * * *", "jobName2", StartNow = true)]\n public void DoSomething2(SpareTimer timer, long count)\n {\n Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));\n Console.WriteLine($"\u4e00\u5171\u6267\u884c\u4e86\uff1a{count} \u6b21");\n }\n\n // \u6bcf\u79d2\u6267\u884c\uff0c\u4e14\u7b49\u5f85\u542f\u52a8\n [SpareTime("* * * * * *", "jobName3",CronFormat = CronFormat.IncludeSeconds, StartNow = false)]\n public void DoSomething3(SpareTimer timer, long count)\n {\n Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));\n Console.WriteLine($"\u4e00\u5171\u6267\u884c\u4e86\uff1a{count} \u6b21");\n }\n\n // \u6bcf\u79d2\u6267\u884c\u4e00\u6b21\uff0c\u6bcf\u5206\u949f\u4e5f\u6267\u884c\u4e00\u6b21\n [SpareTime(1000, "jobName4", StartNow = true)]\n [SpareTime("* * * * *", "jobName5", StartNow = true)]\n public void DoSomething4(SpareTimer timer, long count)\n {\n Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));\n Console.WriteLine($"\u4e00\u5171\u6267\u884c\u4e86\uff1a{count} \u6b21");\n }\n\n // \u53ea\u6267\u884c\u4e00\u6b21\n [SpareTime(1000, "jobName5", StartNow = true, DoOnce = true)]\n public void DoSomething5(SpareTimer timer, long count)\n {\n Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));\n Console.WriteLine($"\u4e00\u5171\u6267\u884c\u4e86\uff1a{count} \u6b21");\n }\n\n // \u8bfb\u53d6\u914d\u7f6e\u6587\u4ef6\uff0c\u901a\u8fc7 #(\u914d\u7f6e\u8def\u5f84)\n [SpareTime("#(MyJob:Time)", "jobName6", StartNow = true, DoOnce = true)]\n public void DoSomething5(SpareTimer timer, long count)\n {\n Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));\n Console.WriteLine($"\u4e00\u5171\u6267\u884c\u4e86\uff1a{count} \u6b21");\n }\n\n // \u652f\u6301\u5f02\u6b65\n [SpareTime(1000, "jobName1", StartNow = true)]\n public async Task DoSomethingAsync(SpareTimer timer, long count)\n {\n Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));\n Console.WriteLine($"\u4e00\u5171\u6267\u884c\u4e86\uff1a{count} \u6b21");\n await Task.Completed;\n }\n}\n')),(0,i.kt)("div",{className:"admonition admonition-warning alert alert--danger"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"}))),"\u5173\u4e8e\u4f9d\u8d56\u6ce8\u5165")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},(0,i.kt)("inlineCode",{parentName:"p"},"ISpareTimeWorker")," \u63a5\u53e3\u4e3b\u8981\u662f\u7528\u6765\u67e5\u627e\u5b9a\u65f6\u5668\u5bf9\u8c61\u7684\uff0c\u4e5f\u5c31\u662f\u5b83\u7684\u5b9e\u73b0\u7c7b\u5e76\u672a\u63d0\u4f9b\u4f9d\u8d56\u6ce8\u5165\u529f\u80fd\uff0c\u6240\u4ee5\u5728\u5b9e\u73b0\u7c7b\u5e76\u4e0d\u652f\u6301\u6784\u9020\u51fd\u6570\u6ce8\u5165\u4f9d\u8d56\u9879\u3002"))),(0,i.kt)("h3",{id:"2671-sparetime-\u7279\u6027"},"26.7.1 ",(0,i.kt)("inlineCode",{parentName:"h3"},"[SpareTime]")," \u7279\u6027"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"[SpareTime]")," \u652f\u6301\u4ee5\u4e0b\u914d\u7f6e\u5c5e\u6027"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"Interval"),"\uff1a\u95f4\u9694\u65f6\u95f4, ",(0,i.kt)("inlineCode",{parentName:"li"},"double")," \u7c7b\u578b"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"CronExpression"),"\uff1a",(0,i.kt)("inlineCode",{parentName:"li"},"Cron")," \u8868\u8fbe\u5f0f\uff0c",(0,i.kt)("inlineCode",{parentName:"li"},"string")," \u7c7b\u578b"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"WorkerName"),"\uff1a\u4efb\u52a1\u552f\u4e00\u6807\u8bc6\uff0c",(0,i.kt)("inlineCode",{parentName:"li"},"string")," \u7c7b\u578b\uff0c",(0,i.kt)("inlineCode",{parentName:"li"},"\u5fc5\u586b")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"Description"),"\uff1a\u4efb\u52a1\u63cf\u8ff0\uff0c",(0,i.kt)("inlineCode",{parentName:"li"},"string")," \u7c7b\u578b"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"DoOnce"),"\uff1a\u662f\u5426\u53ea\u6267\u884c\u4e00\u6b21\uff0c",(0,i.kt)("inlineCode",{parentName:"li"},"bool")," \u7c7b\u578b\uff0c\u9ed8\u8ba4 ",(0,i.kt)("inlineCode",{parentName:"li"},"false")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"StartNow"),"\uff1a\u662f\u5426\u7acb\u5373\u542f\u52a8\uff0c\u9ed8\u8ba4 ",(0,i.kt)("inlineCode",{parentName:"li"},"false")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"CronFormat"),"\uff1a",(0,i.kt)("inlineCode",{parentName:"li"},"Cron")," \u8868\u8fbe\u5f0f\u683c\u5f0f\u5316\u65b9\u5f0f\uff0c",(0,i.kt)("inlineCode",{parentName:"li"},"CronFormat")," \u679a\u4e3e\u7c7b\u578b\uff0c\u9ed8\u8ba4 ",(0,i.kt)("inlineCode",{parentName:"li"},"CronFormat.Standard")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"ExecuteType"),"\uff1a\u914d\u7f6e\u4efb\u52a1\u6267\u884c\u65b9\u5f0f\uff0c",(0,i.kt)("inlineCode",{parentName:"li"},"SpareTimeExecuteTypes")," \u679a\u4e3e\u7c7b\u578b\uff0c\u9ed8\u8ba4 ",(0,i.kt)("inlineCode",{parentName:"li"},"SpareTimeExecuteTypes.Parallel"))),(0,i.kt)("h2",{id:"268-sparetime-\u9759\u6001\u7c7b"},"26.8 ",(0,i.kt)("inlineCode",{parentName:"h2"},"SpareTime")," \u9759\u6001\u7c7b"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"SpareTime")," \u9759\u6001\u7c7b\u63d0\u4f9b\u4e86\u4e00\u4e9b\u65b9\u6cd5\u65b9\u4fbf\u521d\u59cb\u5316\u548c\u7ba1\u7406\u4efb\u52a1"),(0,i.kt)("h3",{id:"2681-\u521d\u59cb\u5316\u4efb\u52a1"},"26.8.1 \u521d\u59cb\u5316\u4efb\u52a1"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"// \u5f00\u542f\u95f4\u9694\u4efb\u52a1\nSpareTime.Do(interval, [options]);\n\n// \u5f00\u542f Cron \u8868\u8fbe\u5f0f\u4efb\u52a1\nSpareTime.Do(expression, [options]);\n\n// \u53ea\u6267\u884c\u4e00\u6b21\u4efb\u52a1\nSpareTime.DoOnce(interval, [options]);\n\n// \u5b9e\u73b0\u81ea\u5b9a\u4e49\u4efb\u52a1\nSpareTime.Do(()=>{\n return DateTime.Now.AddMinutes(10);\n},[options]);\n")),(0,i.kt)("h3",{id:"2682-\u5b9e\u73b0\u540e\u53f0\u6267\u884c"},"26.8.2 \u5b9e\u73b0\u540e\u53f0\u6267\u884c"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"// \u5b9e\u73b0\u540e\u53f0\u6267\u884c\nSpareTime.DoIt(()=>{});\n")),(0,i.kt)("h3",{id:"2683-\u5f00\u59cb\u4e00\u4e2a\u4efb\u52a1"},"26.8.3 \u5f00\u59cb\u4e00\u4e2a\u4efb\u52a1"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'SpareTime.Start("\u4efb\u52a1\u6807\u8bc6");\n')),(0,i.kt)("h3",{id:"2684-\u6682\u505c\u4e00\u4e2a\u4efb\u52a1"},"26.8.4 \u6682\u505c\u4e00\u4e2a\u4efb\u52a1"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'SpareTime.Stop("\u4efb\u52a1\u6807\u8bc6");\n// \u8fd8\u53ef\u4ee5\u6807\u8bb0\u4e00\u4e2a\u4efb\u52a1\u6267\u884c\u5931\u8d25\nSpareTime.Stop("\u4efb\u52a1\u6807\u8bc6", true);\n')),(0,i.kt)("h3",{id:"2685-\u53d6\u6d88\u4e00\u4e2a\u4efb\u52a1"},"26.8.5 \u53d6\u6d88\u4e00\u4e2a\u4efb\u52a1"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'SpareTime.Cancel("\u4efb\u52a1\u540d\u79f0");\n')),(0,i.kt)("h3",{id:"2686-\u9500\u6bc1\u6240\u6709\u4efb\u52a1"},"26.8.6 \u9500\u6bc1\u6240\u6709\u4efb\u52a1"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"SpareTime.Dispose();\n")),(0,i.kt)("h3",{id:"2687-\u83b7\u53d6\u6240\u6709\u4efb\u52a1"},"26.8.7 \u83b7\u53d6\u6240\u6709\u4efb\u52a1"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"var workers = SpareTime.GetWorkers();\n")),(0,i.kt)("h3",{id:"2688-\u83b7\u53d6\u5355\u4e2a\u4efb\u52a1"},"26.8.8 \u83b7\u53d6\u5355\u4e2a\u4efb\u52a1"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'var worker = SpareTime.GetWorker("workerName");\n')),(0,i.kt)("h3",{id:"2689-\u89e3\u6790-cron-\u8868\u8fbe\u5f0f"},"26.8.9 \u89e3\u6790 ",(0,i.kt)("inlineCode",{parentName:"h3"},"Cron")," \u8868\u8fbe\u5f0f"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'var nextTime = SpareTime.GetCronNextOccurrence("* * * * *");\n')),(0,i.kt)("h2",{id:"269-\u5e76\u884c\u548c\u4e32\u884c\u6267\u884c\u65b9\u5f0f"},"26.9 ",(0,i.kt)("inlineCode",{parentName:"h2"},"\u5e76\u884c"),"\u548c",(0,i.kt)("inlineCode",{parentName:"h2"},"\u4e32\u884c"),"\u6267\u884c\u65b9\u5f0f"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u4e86\u4efb\u52a1\u4e24\u79cd\u6267\u884c\u65b9\u5f0f ",(0,i.kt)("inlineCode",{parentName:"p"},"\u5e76\u884c")," \u548c ",(0,i.kt)("inlineCode",{parentName:"p"},"\u4e32\u884c"),"\uff1a"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"\u5e76\u884c"),"\uff1a\u65e0\u9700\u7b49\u5f85\u4e0a\u4e00\u6b21\u4efb\u52a1\u5b8c\u6210\uff0c",(0,i.kt)("strong",{parentName:"li"},"\u9ed8\u8ba4\u503c")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"\u4e32\u884c"),"\uff1a\u9700\u7b49\u5f85\u4e0a\u4e00\u6b21\u4efb\u52a1\u5b8c\u6210")),(0,i.kt)("h3",{id:"2691-sparetime-\u9759\u6001\u65b9\u5f0f\u6307\u5b9a"},"26.9.1 ",(0,i.kt)("inlineCode",{parentName:"h3"},"SpareTime")," \u9759\u6001\u65b9\u5f0f\u6307\u5b9a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{3,5}","{3,5}":!0},'SpareTime.Do(1000, (t, i) =>\n{\n Thread.Sleep(5000); // \u6a21\u62df\u6267\u884c\u8017\u65f6\u4efb\u52a1\n Console.WriteLine($"{t.WorkerName} -{t.Description} - {DateTime.Now:yyyy-MM-dd HH:mm:ss} - {i}");\n}, "serialName", "\u6a21\u62df\u4e32\u884c\u4efb\u52a1", executeType: SpareTimeExecuteTypes.Serial);\n')),(0,i.kt)("h3",{id:"2692-isparetimeworker-\u65b9\u5f0f"},"26.9.2 ",(0,i.kt)("inlineCode",{parentName:"h3"},"ISpareTimeWorker")," \u65b9\u5f0f"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1}","{1}":!0},'[SpareTime(1000, "jobName1", StartNow = true, ExecuteType = SpareTimeExecuteTypes.Serial)]\npublic void DoSomething1(SpareTimer timer, long count)\n{\n Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));\n Console.WriteLine($"\u4e00\u5171\u6267\u884c\u4e86\uff1a{count} \u6b21");\n}\n')),(0,i.kt)("h2",{id:"2610-\u4efb\u52a1\u5f02\u5e38\u5904\u7406"},"26.10 \u4efb\u52a1\u5f02\u5e38\u5904\u7406"),(0,i.kt)("p",null,"\u6709\u4e9b\u65f6\u5019\u6211\u4eec\u53ef\u80fd\u5728\u6267\u884c\u4efb\u52a1\u8fc7\u7a0b\u4e2d\u51fa\u73b0\u5f02\u5e38\uff0c",(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u4e5f\u63d0\u4f9b\u4e86\u5c5e\u6027\u5224\u65ad\u662f\u5426\u6709\u5f02\u5e38\u548c\u5f02\u5e38\u4fe1\u606f\uff0c\u65b9\u4fbf\u8bb0\u5f55\u5230\u65e5\u5fd7\u4e2d\uff0c\u5982\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{4-7,11}","{4-7,11}":!0},'SpareTime.Do(1000, (t, c) =>\n{\n // \u5224\u65ad\u662f\u5426\u6709\u5f02\u5e38\n if (t.Exception.Any())\n {\n Console.WriteLine(t.Exception.Values.LastOrDefault()?.Message);\n }\n // \u6267\u884c\u7b2c\u4e09\u6b21\u629b\u5f02\u5e38\n if (c > 2)\n {\n throw Oops.Oh("\u629b\u5f02\u5e38" + c);\n }\n else\n {\n Console.WriteLine($"{t.WorkerName} -{t.Description} - {DateTime.Now:yyyy-MM-dd HH:mm:ss} - {c}");\n }\n}, "exceptionJob");\n')),(0,i.kt)("div",{className:"admonition admonition-warning alert alert--danger"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"}))),"\u7279\u522b\u8bf4\u660e")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u5982\u679c\u4e00\u4e2a\u4efb\u52a1\u9519\u8bef\u6b21\u6570\u8fbe ",(0,i.kt)("inlineCode",{parentName:"p"},"10\u6b21")," \u5219\u4efb\u52a1\u5c06\u81ea\u52a8\u505c\u6b62\uff0c\u5e76\u6807\u8bb0\u4efb\u52a1\u72b6\u6001\u4e3a ",(0,i.kt)("inlineCode",{parentName:"p"},"Failed"),"\u3002"))),(0,i.kt)("h2",{id:"2611-\u5982\u4f55\u5728\u4efb\u52a1\u4e2d\u89e3\u6790\u5bf9\u8c61"},"26.11 \u5982\u4f55\u5728\u4efb\u52a1\u4e2d\u89e3\u6790\u5bf9\u8c61"),(0,i.kt)("p",null,"\u6709\u4e9b\u65f6\u5019\u6211\u4eec\u9700\u8981\u5728\u4efb\u52a1\u4e2d\u8fdb\u884c\u6570\u636e\u5e93\u64cd\u4f5c\u6216\u89e3\u6790\u670d\u52a1\uff0c\u8fd9\u65f6\u5019\u6211\u4eec\u53ea\u9700\u8981\u521b\u5efa\u4e00\u4e2a\u65b0\u7684\u4f5c\u7528\u57df\u5373\u53ef"),(0,i.kt)("h3",{id:"26111-sparetime-\u9759\u6001\u7c7b\u4e2d"},"26.11.1 ",(0,i.kt)("inlineCode",{parentName:"h3"},"SpareTime")," \u9759\u6001\u7c7b\u4e2d"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{2}","{2}":!0},'SpareTime.Do(1000, (timer,count) => {\n Scoped.Create((_, scope) =>\n {\n var services = scope.ServiceProvider;\n\n // \u83b7\u53d6\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\n var dbContext = Db.GetDbContext(services);\n\n // \u83b7\u53d6\u4ed3\u50a8\n var respository = Db.GetRepository(services);\n\n // \u89e3\u6790\u5176\u4ed6\u670d\u52a1\n var otherService = services.GetService();\n var otherService2 = App.GetService(services);\n });\n}, "\u4efb\u52a1\u6807\u8bc6");\n')),(0,i.kt)("h3",{id:"26112-isparetimeworker-\u65b9\u5f0f"},"26.11.2 ",(0,i.kt)("inlineCode",{parentName:"h3"},"ISpareTimeWorker")," \u65b9\u5f0f"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{4}","{4}":!0},'[SpareTime(1000, "jobName1", StartNow = true, ExecuteType = SpareTimeExecuteTypes.Serial)]\npublic void DoSomething1(SpareTimer timer, long count)\n{\n Scoped.Create((_, scope) =>\n {\n var services = scope.ServiceProvider;\n\n // \u83b7\u53d6\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\n var dbContext = Db.GetDbContext(services);\n\n // \u83b7\u53d6\u4ed3\u50a8\n var respository = Db.GetRepository(services);\n\n // \u89e3\u6790\u5176\u4ed6\u670d\u52a1\n var otherService = services.GetService();\n var otherService2 = App.GetService(services);\n });\n}\n')),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u6570\u636e\u5e93\u64cd\u4f5c\u6ce8\u610f")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u5982\u679c\u4f5c\u7528\u57df\u4e2d\u5bf9",(0,i.kt)("strong",{parentName:"p"},"\u6570\u636e\u5e93\u6709\u4efb\u4f55\u53d8\u66f4\u64cd\u4f5c"),"\uff0c\u9700\u624b\u52a8\u8c03\u7528 ",(0,i.kt)("inlineCode",{parentName:"p"},"SaveChanges")," \u6216\u5e26 ",(0,i.kt)("inlineCode",{parentName:"p"},"Now")," \u7ed3\u5c3e\u7684\u65b9\u6cd5\u3002\u4e5f\u53ef\u4ee5\u4f7f\u7528 ",(0,i.kt)("inlineCode",{parentName:"p"},"Scoped.CreateUow(handler)")," \u4ee3\u66ff\u3002"))),(0,i.kt)("h2",{id:"2612-\u5728-backgroundservice-\u4e2d\u4f7f\u7528"},"26.12 \u5728 ",(0,i.kt)("inlineCode",{parentName:"h2"},"BackgroundService")," \u4e2d\u4f7f\u7528"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"BackgroundService")," \u662f ",(0,i.kt)("inlineCode",{parentName:"p"},".NET Core 3")," \u4e4b\u540e\u63d0\u4f9b\u7684\u8f7b\u91cf\u7ea7\u540e\u53f0\u4efb\u52a1\uff0c\u540c\u65f6\u53ef\u4ee5\u53d1\u5e03\u5230 ",(0,i.kt)("inlineCode",{parentName:"p"},"Windows")," \u670d\u52a1\u548c ",(0,i.kt)("inlineCode",{parentName:"p"},"Linux")," \u5b88\u62a4\u8fdb\u7a0b\u4e2d\u3002"),(0,i.kt)("h3",{id:"26121-\u95f4\u9694\u6267\u884c\u65b9\u5f0f"},"26.12.1 \u95f4\u9694\u6267\u884c\u65b9\u5f0f"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{23-27}","{23-27}":!0},'using Furion.TaskScheduler;\nusing Microsoft.Extensions.Hosting;\nusing Microsoft.Extensions.Logging;\nusing System;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace WorkerService1\n{\n public class Worker : BackgroundService\n {\n private readonly ILogger _logger;\n\n public Worker(ILogger logger)\n {\n _logger = logger;\n }\n\n protected override async Task ExecuteAsync(CancellationToken stoppingToken)\n {\n while (!stoppingToken.IsCancellationRequested)\n {\n // \u95f4\u9694\u6267\u884c\u4efb\u52a1\n await SpareTime.DoAsync(1000, () =>\n {\n _logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now);\n }, stoppingToken);\n }\n }\n }\n}\n')),(0,i.kt)("h3",{id:"26122-cron-\u8868\u8fbe\u5f0f\u6267\u884c\u65b9\u5f0f"},"26.12.2 ",(0,i.kt)("inlineCode",{parentName:"h3"},"Cron")," \u8868\u8fbe\u5f0f\u6267\u884c\u65b9\u5f0f"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{23-27}","{23-27}":!0},'using Furion.TaskScheduler;\nusing Microsoft.Extensions.Hosting;\nusing Microsoft.Extensions.Logging;\nusing System;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace WorkerService1\n{\n public class Worker : BackgroundService\n {\n private readonly ILogger _logger;\n\n public Worker(ILogger logger)\n {\n _logger = logger;\n }\n\n protected override async Task ExecuteAsync(CancellationToken stoppingToken)\n {\n while (!stoppingToken.IsCancellationRequested)\n {\n // \u6267\u884c Cron \u8868\u8fbe\u5f0f\u4efb\u52a1\n await SpareTime.DoAsync("*/5 * * * * *", () =>\n {\n _logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now);\n }, stoppingToken, CronFormat.IncludeSeconds);\n }\n }\n }\n}\n')),(0,i.kt)("h2",{id:"2613-\u5b9a\u65f6\u4efb\u52a1\u76d1\u542c\u5668"},"26.13 \u5b9a\u65f6\u4efb\u52a1\u76d1\u542c\u5668"),(0,i.kt)("p",null,"\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion v2.18+")," \u7248\u672c\u4e4b\u540e\u65b0\u589e\u4e86\u5b9a\u65f6\u4efb\u52a1\u76d1\u542c\u5668 ",(0,i.kt)("inlineCode",{parentName:"p"},"ISpareTimeListener"),"\uff0c\u901a\u8fc7\u76d1\u542c\u5668\u53ef\u4ee5\u5b9e\u73b0\u6240\u6709\u5b9a\u65f6\u4efb\u52a1\u7684\u72b6\u6001\u3002\u5982\uff0c\u521b\u5efa\u4e00\u4e2a ",(0,i.kt)("inlineCode",{parentName:"p"},"\u5355\u4f8b")," \u7684\u76d1\u542c\u5668 ",(0,i.kt)("inlineCode",{parentName:"p"},"SpareTimeListener"),"\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{8,15}","{8,15}":!0},'using Furion.DependencyInjection;\nusing Furion.TaskScheduler;\nusing System;\nusing System.Threading.Tasks;\n\nnamespace Furion.Core\n{\n public class SpareTimeListener : ISpareTimeListener, ISingleton\n {\n /// \n /// \u76d1\u542c\u6240\u6709\u4efb\u52a1\n /// \n /// \n /// \n public Task OnListener(SpareTimerExecuter executer)\n {\n switch (executer.Status)\n {\n // \u6267\u884c\u5f00\u59cb\u901a\u77e5\n case 0:\n Console.WriteLine($"{executer.Timer.WorkerName} \u4efb\u52a1\u5f00\u59cb\u901a\u77e5");\n break;\n // \u4efb\u52a1\u6267\u884c\u4e4b\u524d\u901a\u77e5\n case 1:\n Console.WriteLine($"{executer.Timer.WorkerName} \u6267\u884c\u4e4b\u524d\u901a\u77e5");\n break;\n // \u6267\u884c\u6210\u529f\u901a\u77e5\n case 2:\n Console.WriteLine($"{executer.Timer.WorkerName} \u6267\u884c\u6210\u529f\u901a\u77e5");\n break;\n // \u4efb\u52a1\u6267\u884c\u5931\u8d25\u901a\u77e5\n case 3:\n Console.WriteLine($"{executer.Timer.WorkerName} \u6267\u884c\u5931\u8d25\u901a\u77e5");\n break;\n // \u4efb\u52a1\u6267\u884c\u505c\u6b62\u901a\u77e5\n case -1:\n Console.WriteLine($"{executer.Timer.WorkerName} \u6267\u884c\u505c\u6b62\u901a\u77e5");\n break;\n // \u4efb\u52a1\u6267\u884c\u53d6\u6d88\u901a\u77e5\n case -2:\n Console.WriteLine($"{executer.Timer.WorkerName} \u6267\u884c\u53d6\u6d88\u901a\u77e5");\n break;\n default:\n break;\n }\n\n return Task.CompletedTask;\n }\n }\n}\n')),(0,i.kt)("h3",{id:"26131-sparetimerexecuter-\u5c5e\u6027\u8bf4\u660e"},"26.13.1 ",(0,i.kt)("inlineCode",{parentName:"h3"},"SpareTimerExecuter")," \u5c5e\u6027\u8bf4\u660e"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"Timer"),"\uff1a",(0,i.kt)("inlineCode",{parentName:"li"},"SpareTimer")," \u5b9a\u65f6\u5668\u5bf9\u8c61"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"Status"),"\uff1a\u76d1\u542c\u72b6\u6001",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"0"),"\uff1a\u4efb\u52a1\u5f00\u59cb"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"1"),"\uff1a\u6267\u884c\u4e4b\u524d"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"2"),"\uff1a\u6267\u884c\u6210\u529f"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"3"),"\uff1a\u6267\u884c\u5931\u8d25"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"-1"),"\uff1a\u4efb\u52a1\u505c\u6b62"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"-2"),"\uff1a\u4efb\u52a1\u53d6\u6d88")))),(0,i.kt)("h2",{id:"2614-iis-\u90e8\u7f72\u56de\u6536\u8bbe\u7f6e"},"26.14 IIS \u90e8\u7f72\u56de\u6536\u8bbe\u7f6e"),(0,i.kt)("p",null,"\u5982\u679c\u5728\u9879\u76ee\u4e2d\u4f7f\u7528\u4e86\u5b9a\u65f6\u4efb\u52a1\u4e14\u90e8\u7f72\u5230 ",(0,i.kt)("inlineCode",{parentName:"p"},"IIS")," \u4e2d\uff0c\u90a3\u4e48\u9700\u8981\u8bbe\u7f6e ",(0,i.kt)("inlineCode",{parentName:"p"},"IIS")," \u7981\u6b62\u56de\u6536\uff0c\u5982\uff1a"),(0,i.kt)("img",{src:(0,l.Z)("img/iishuishou.jpg")}),(0,i.kt)("div",{className:"admonition admonition-warning alert alert--danger"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"}))),"\u90e8\u7f72\u5efa\u8bae")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u5efa\u8bae\u5b9a\u65f6\u4efb\u52a1\u91c7\u7528 ",(0,i.kt)("inlineCode",{parentName:"p"},"Worker Service")," \u72ec\u7acb\u90e8\u7f72\u65b9\u5f0f\uff0c\u4e0d\u5e94\u4f9d\u6258 ",(0,i.kt)("inlineCode",{parentName:"p"},"Web")," \u9879\u76ee\u8fdb\u7a0b\u4e2d\u3002",(0,i.kt)("a",{parentName:"p",href:"/furion/docs/process-service"},"\u67e5\u770b\u3010 Worker Service\u3011\u7ae0\u8282")))),(0,i.kt)("h2",{id:"2615-\u53cd\u9988\u4e0e\u5efa\u8bae"},"26.15 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,i.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/22f09a41.af8fac20.js b/handbook/build/assets/js/22f09a41.af8fac20.js deleted file mode 100644 index abc666cbc5f..00000000000 --- a/handbook/build/assets/js/22f09a41.af8fac20.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[6494],{3905:function(e,n,t){t.d(n,{Zo:function(){return p},kt:function(){return s}});var a=t(7294);function r(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function l(e){for(var n=1;n=0||(r[t]=e[t]);return r}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var m=a.createContext({}),d=function(e){var n=a.useContext(m),t=n;return e&&(t="function"==typeof e?e(n):l(l({},n),e)),t},p=function(e){var n=d(e.components);return a.createElement(m.Provider,{value:n},e.children)},k={inlineCode:"code",wrapper:function(e){var n=e.children;return a.createElement(a.Fragment,{},n)}},N=a.forwardRef((function(e,n){var t=e.components,r=e.mdxType,i=e.originalType,m=e.parentName,p=o(e,["components","mdxType","originalType","parentName"]),N=d(t),s=r,u=N["".concat(m,".").concat(s)]||N[s]||k[s]||i;return t?a.createElement(u,l(l({ref:n},p),{},{components:t})):a.createElement(u,l({ref:n},p))}));function s(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var i=t.length,l=new Array(i);l[0]=N;var o={};for(var m in n)hasOwnProperty.call(n,m)&&(o[m]=n[m]);o.originalType=e,o.mdxType="string"==typeof e?e:r,l[1]=o;for(var d=2;dISpareTimeWorker \u65b9\u5f0f",id:"2635-isparetimeworker-\u65b9\u5f0f",children:[]}]},{value:"26.4 \u95f4\u9694\u65b9\u5f0f\u4f7f\u7528",id:"264-\u95f4\u9694\u65b9\u5f0f\u4f7f\u7528",children:[{value:"26.4.1 \u6bcf\u9694\u4e00\u6bb5\u65f6\u95f4\u6267\u884c",id:"2641-\u6bcf\u9694\u4e00\u6bb5\u65f6\u95f4\u6267\u884c",children:[]},{value:"26.4.2 \u914d\u7f6e\u4efb\u52a1\u4fe1\u606f",id:"2642-\u914d\u7f6e\u4efb\u52a1\u4fe1\u606f",children:[]},{value:"26.4.3 \u624b\u52a8\u542f\u52a8\u6267\u884c",id:"2643-\u624b\u52a8\u542f\u52a8\u6267\u884c",children:[]},{value:"26.4.4 ISpareTimeWorker \u65b9\u5f0f",id:"2644-isparetimeworker-\u65b9\u5f0f",children:[]}]},{value:"26.5 Cron \u8868\u8fbe\u5f0f\u4f7f\u7528",id:"265-cron-\u8868\u8fbe\u5f0f\u4f7f\u7528",children:[{value:"26.5.1 \u4ec0\u4e48\u662f Cron \u8868\u8fbe\u5f0f",id:"2651-\u4ec0\u4e48\u662f-cron-\u8868\u8fbe\u5f0f",children:[]},{value:"26.5.2 \u5e38\u89c1 Cron \u8868\u8fbe\u5f0f",id:"2652-\u5e38\u89c1-cron-\u8868\u8fbe\u5f0f",children:[]},{value:"26.5.3 \u5728\u7ebf\u751f\u6210 Cron \u8868\u8fbe\u5f0f",id:"2653-\u5728\u7ebf\u751f\u6210-cron-\u8868\u8fbe\u5f0f",children:[]},{value:"26.5.4 Macro \u6807\u8bc6\u7b26",id:"2654-macro-\u6807\u8bc6\u7b26",children:[]},{value:"26.5.5 \u4f7f\u7528 Cron \u8868\u8fbe\u5f0f",id:"2655-\u4f7f\u7528-cron-\u8868\u8fbe\u5f0f",children:[]},{value:"26.5.6 \u4f7f\u7528 Macro \u5360\u4f4d\u7b26",id:"2656-\u4f7f\u7528-macro-\u5360\u4f4d\u7b26",children:[]},{value:"26.5.7 \u914d\u7f6e\u4efb\u52a1\u4fe1\u606f",id:"2657-\u914d\u7f6e\u4efb\u52a1\u4fe1\u606f",children:[]},{value:"26.5.8 \u624b\u52a8\u542f\u52a8\u6267\u884c",id:"2658-\u624b\u52a8\u542f\u52a8\u6267\u884c",children:[]},{value:"26.5.9 ISpareTimeWorker \u65b9\u5f0f",id:"2659-isparetimeworker-\u65b9\u5f0f",children:[]}]},{value:"26.6 \u81ea\u5b9a\u4e49\u4e0b\u6b21\u6267\u884c\u65f6\u95f4",id:"266-\u81ea\u5b9a\u4e49\u4e0b\u6b21\u6267\u884c\u65f6\u95f4",children:[{value:"26.6.1 \u9ad8\u7ea7\u81ea\u5b9a\u4e49\u95f4\u9694\u65b9\u5f0f",id:"2661-\u9ad8\u7ea7\u81ea\u5b9a\u4e49\u95f4\u9694\u65b9\u5f0f",children:[]},{value:"26.6.2 \u9ad8\u7ea7\u81ea\u5b9a\u4e49 Cron \u8868\u8fbe\u5f0f",id:"2662-\u9ad8\u7ea7\u81ea\u5b9a\u4e49-cron-\u8868\u8fbe\u5f0f",children:[]}]},{value:"26.7 ISpareTimeWorker \u8bf4\u660e",id:"267-isparetimeworker-\u8bf4\u660e",children:[{value:"26.7.1 [SpareTime] \u7279\u6027",id:"2671-sparetime-\u7279\u6027",children:[]}]},{value:"26.8 SpareTime \u9759\u6001\u7c7b",id:"268-sparetime-\u9759\u6001\u7c7b",children:[{value:"26.8.1 \u521d\u59cb\u5316\u4efb\u52a1",id:"2681-\u521d\u59cb\u5316\u4efb\u52a1",children:[]},{value:"26.8.2 \u5b9e\u73b0\u540e\u53f0\u6267\u884c",id:"2682-\u5b9e\u73b0\u540e\u53f0\u6267\u884c",children:[]},{value:"26.8.3 \u5f00\u59cb\u4e00\u4e2a\u4efb\u52a1",id:"2683-\u5f00\u59cb\u4e00\u4e2a\u4efb\u52a1",children:[]},{value:"26.8.4 \u6682\u505c\u4e00\u4e2a\u4efb\u52a1",id:"2684-\u6682\u505c\u4e00\u4e2a\u4efb\u52a1",children:[]},{value:"26.8.5 \u53d6\u6d88\u4e00\u4e2a\u4efb\u52a1",id:"2685-\u53d6\u6d88\u4e00\u4e2a\u4efb\u52a1",children:[]},{value:"26.8.6 \u9500\u6bc1\u6240\u6709\u4efb\u52a1",id:"2686-\u9500\u6bc1\u6240\u6709\u4efb\u52a1",children:[]},{value:"26.8.7 \u83b7\u53d6\u6240\u6709\u4efb\u52a1",id:"2687-\u83b7\u53d6\u6240\u6709\u4efb\u52a1",children:[]},{value:"26.8.8 \u83b7\u53d6\u5355\u4e2a\u4efb\u52a1",id:"2688-\u83b7\u53d6\u5355\u4e2a\u4efb\u52a1",children:[]},{value:"26.8.9 \u89e3\u6790 Cron \u8868\u8fbe\u5f0f",id:"2689-\u89e3\u6790-cron-\u8868\u8fbe\u5f0f",children:[]}]},{value:"26.9 \u5e76\u884c\u548c\u4e32\u884c\u6267\u884c\u65b9\u5f0f",id:"269-\u5e76\u884c\u548c\u4e32\u884c\u6267\u884c\u65b9\u5f0f",children:[{value:"26.9.1 SpareTime \u9759\u6001\u65b9\u5f0f\u6307\u5b9a",id:"2691-sparetime-\u9759\u6001\u65b9\u5f0f\u6307\u5b9a",children:[]},{value:"26.9.2 ISpareTimeWorker \u65b9\u5f0f",id:"2692-isparetimeworker-\u65b9\u5f0f",children:[]}]},{value:"26.10 \u4efb\u52a1\u5f02\u5e38\u5904\u7406",id:"2610-\u4efb\u52a1\u5f02\u5e38\u5904\u7406",children:[]},{value:"26.11 \u5982\u4f55\u5728\u4efb\u52a1\u4e2d\u89e3\u6790\u5bf9\u8c61",id:"2611-\u5982\u4f55\u5728\u4efb\u52a1\u4e2d\u89e3\u6790\u5bf9\u8c61",children:[{value:"26.11.1 SpareTime \u9759\u6001\u7c7b\u4e2d",id:"26111-sparetime-\u9759\u6001\u7c7b\u4e2d",children:[]},{value:"26.11.2 ISpareTimeWorker \u65b9\u5f0f",id:"26112-isparetimeworker-\u65b9\u5f0f",children:[]}]},{value:"26.12 \u5728 BackgroundService \u4e2d\u4f7f\u7528",id:"2612-\u5728-backgroundservice-\u4e2d\u4f7f\u7528",children:[{value:"26.12.1 \u95f4\u9694\u6267\u884c\u65b9\u5f0f",id:"26121-\u95f4\u9694\u6267\u884c\u65b9\u5f0f",children:[]},{value:"26.12.2 Cron \u8868\u8fbe\u5f0f\u6267\u884c\u65b9\u5f0f",id:"26122-cron-\u8868\u8fbe\u5f0f\u6267\u884c\u65b9\u5f0f",children:[]}]},{value:"26.13 \u5b9a\u65f6\u4efb\u52a1\u76d1\u542c\u5668",id:"2613-\u5b9a\u65f6\u4efb\u52a1\u76d1\u542c\u5668",children:[{value:"26.13.1 SpareTimerExecuter \u5c5e\u6027\u8bf4\u660e",id:"26131-sparetimerexecuter-\u5c5e\u6027\u8bf4\u660e",children:[]}]},{value:"26.14 IIS \u90e8\u7f72\u56de\u6536\u8bbe\u7f6e",id:"2614-iis-\u90e8\u7f72\u56de\u6536\u8bbe\u7f6e",children:[]},{value:"26.15 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"2615-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],N={toc:k};function s(e){var n=e.components,t=(0,r.Z)(e,o);return(0,i.kt)("wrapper",(0,a.Z)({},N,t,{components:n,mdxType:"MDXLayout"}),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7248\u672c\u8bf4\u660e")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u4ee5\u4e0b\u5185\u5bb9\u4ec5\u9650 ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion 2.0.0 +")," \u7248\u672c\u4f7f\u7528\u3002"))),(0,i.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"IIS \u90e8\u7f72\u8bf4\u660e")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u7531\u4e8e IIS \u6709\u56de\u6536\u7684\u673a\u5236\uff0c\u6240\u4ee5\u5b9a\u65f6\u4efb\u52a1\u5e94\u8be5\u91c7\u7528\u72ec\u7acb\u90e8\u7f72\uff0c\u4e0d\u7136\u7ecf\u5e38\u51fa\u73b0\u4e0d\u80fd\u89e6\u53d1\u7684\u60c5\u51b5\u3002\u67e5\u770b\u3010",(0,i.kt)("a",{parentName:"p",href:"/furion/docs/process-service"},"Worker Service \u7ae0\u8282"),"\u3011"))),(0,i.kt)("h2",{id:"261-\u5173\u4e8e\u5b9a\u65f6\u4efb\u52a1"},"26.1 \u5173\u4e8e\u5b9a\u65f6\u4efb\u52a1"),(0,i.kt)("p",null,"\u987e\u540d\u601d\u4e49\uff0c\u5b9a\u65f6\u4efb\u52a1\u5c31\u662f\u5728\u7279\u5b9a\u7684\u65f6\u95f4\u6216\u7b26\u5408\u67d0\u79cd\u65f6\u95f4\u89c4\u5f8b\u6267\u884c\u7684\u4efb\u52a1\u3002\u901a\u5e38\u5b9a\u65f6\u4efb\u52a1\u6709\u56db\u79cd\u65f6\u95f4\u8c03\u5ea6\u65b9\u5f0f\uff1a"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"\u7f13\u9694\u65f6\u95f4")," \u65b9\u5f0f\uff1a\u5ef6\u8fdf\u591a\u5c11\u65f6\u95f4\u540e\u8c03\u914d\u4efb\u52a1\uff0c\u8fd9\u79cd\u65b9\u5f0f\u4efb\u52a1\u53ea\u4f1a\u88ab\u8c03\u7528\u4e00\u6b21\u3002"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"\u95f4\u9694\u65f6\u95f4")," \u65b9\u5f0f\uff1a\u6bcf\u9694\u4e00\u6bb5\u56fa\u5b9a\u65f6\u95f4\u8c03\u914d\u4efb\u52a1\uff0c\u65e0\u95f4\u65ad\u8c03\u7528\u4efb\u52a1\u3002"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"Cron \u8868\u8fbe\u5f0f")," \u65b9\u6cd5\uff1a\u901a\u8fc7 ",(0,i.kt)("inlineCode",{parentName:"li"},"Cron")," \u8868\u8fbe\u5f0f\u8ba1\u7b97\u4e0b\u4e00\u6b21\u6267\u884c\u65f6\u95f4\u8fdb\u884c\u8c03\u914d\u4efb\u52a1\uff0c\u53ef\u4ee5\u914d\u7f6e\u7279\u5b9a\u65f6\u95f4\u8303\u56f4\u5185\u6267\u884c\uff0c\u4e5f\u53ef\u4ee5\u65e0\u95f4\u65ad\u6267\u884c\u3002"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"\u81ea\u5b9a\u4e49\u4e0b\u6b21\u6267\u884c\u65f6\u95f4"),"\uff1a\u53ef\u4ee5\u901a\u8fc7\u5404\u79cd\u903b\u8f91\u8fd0\u7b97\u8fd4\u56de\u4e0b\u4e00\u6b21\u6267\u884c\u65f6\u95f4")),(0,i.kt)("h2",{id:"262-\u5982\u4f55\u5b9e\u73b0"},"26.2 \u5982\u4f55\u5b9e\u73b0"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u4e86\u4e24\u79cd\u65b9\u5f0f\u5b9e\u73b0\u5b9a\u65f6\u4efb\u52a1\uff1a"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"SpareTime")," \u9759\u6001\u7c7b\uff1a",(0,i.kt)("inlineCode",{parentName:"li"},"SpareTime")," \u9759\u6001\u7c7b\u63d0\u4f9b ",(0,i.kt)("inlineCode",{parentName:"li"},"SpareTime.Do([options])")," \u65b9\u5f0f\u8c03\u7528\u3002"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"ISpareTimeWorker")," \u4f9d\u8d56\u65b9\u5f0f\uff1a\u901a\u8fc7\u81ea\u5b9a\u4e49\u7c7b\u5b9e\u73b0 ",(0,i.kt)("inlineCode",{parentName:"li"},"ISpareTimeWorker")," \u63a5\u53e3\u5e76\u7f16\u5199\u4e00\u5b9a\u89c4\u5219\u7684\u65b9\u6cd5\u5373\u53ef\u3002",(0,i.kt)("strong",{parentName:"li"},"\u9700\u8981\u5728 ",(0,i.kt)("inlineCode",{parentName:"strong"},"Startup.cs")," \u4e2d\u6ce8\u518c ",(0,i.kt)("inlineCode",{parentName:"strong"},"services.AddTaskScheduler()")))),(0,i.kt)("h2",{id:"263-\u7f13\u9694\u65b9\u5f0f\u4f7f\u7528"},"26.3 \u7f13\u9694\u65b9\u5f0f\u4f7f\u7528"),(0,i.kt)("h3",{id:"2631-\u7279\u5b9a\u65f6\u95f4\u540e\u6267\u884c"},"26.3.1 \u7279\u5b9a\u65f6\u95f4\u540e\u6267\u884c"),(0,i.kt)("p",null,"\u8fd9\u91cc\u6f14\u793a ",(0,i.kt)("inlineCode",{parentName:"p"},"3s")," \u540e\u6267\u884c"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{5}","{5}":!0},'Console.WriteLine("\u5f53\u524d\u65f6\u95f4\uff1a" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));\n\n// timer \u662f\u5b9a\u65f6\u5668\u7684\u5bf9\u8c61\uff0c\u5305\u542b\u5b9a\u65f6\u5668\u76f8\u5173\u4fe1\u606f\n// count \u8868\u793a\u6267\u884c\u6b21\u6570\uff0c\u8fd9\u91cc\u53ea\u6709\u4e00\u6b21\nSpareTime.DoOnce(3000, (timer, count) => {\n Console.WriteLine("\u73b0\u5728\u65f6\u95f4\uff1a" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));\n});\n')),(0,i.kt)("h3",{id:"2632-\u914d\u7f6e\u4efb\u52a1\u4fe1\u606f"},"26.3.2 \u914d\u7f6e\u4efb\u52a1\u4fe1\u606f"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{3}","{3}":!0},'SpareTime.DoOnce(3000, (timer, count) => {\n Console.WriteLine("\u73b0\u5728\u65f6\u95f4\uff1a" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));\n}, "jobName", "\u63cf\u8ff0\u4e00\u4e0b\u8fd9\u4e2a\u4efb\u52a1\u662f\u5e72\u4ec0\u4e48\u7684");\n')),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"jobName")," \u6807\u8bc6\u4efb\u52a1\u7684\u552f\u4e00\u6807\u8bc6\uff0c\u901a\u8fc7\u8fd9\u4e2a\u6807\u8bc6\u53ef\u4ee5\u542f\u52a8\u3001\u6682\u505c\u3001\u9500\u6bc1\u4efb\u52a1\u3002"),(0,i.kt)("h3",{id:"2633-\u624b\u52a8\u542f\u52a8\u6267\u884c"},"26.3.3 \u624b\u52a8\u542f\u52a8\u6267\u884c"),(0,i.kt)("p",null,"\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c\u4efb\u52a1\u521d\u59cb\u5316\u540e\u5c31\u7acb\u5373\u542f\u52a8\uff0c\u7b49\u5f85\u7b26\u5408\u7684\u65f6\u95f4\u5c31\u6267\u884c\uff0c\u6709\u4e9b\u65f6\u5019\u6211\u4eec\u4ec5\u4ec5\u60f3\u521d\u59cb\u5316\u65f6\u95f4\uff0c\u4e0d\u5e0c\u671b\u7acb\u5373\u6267\u884c\uff0c\u53ea\u9700\u8981\u914d\u7f6e ",(0,i.kt)("inlineCode",{parentName:"p"},"startNow")," \u5373\u53ef\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{3,6}","{3,6}":!0},'SpareTime.DoOnce(3000, (timer, count) => {\n Console.WriteLine("\u73b0\u5728\u65f6\u95f4\uff1a" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));\n},"jobName", startNow: false);\n\n// \u624b\u52a8\u542f\u52a8\u6267\u884c\nSpareTime.Start("jobName");\n')),(0,i.kt)("h3",{id:"2634-\u6a21\u62df\u540e\u53f0\u6267\u884c"},"26.3.4 \u6a21\u62df\u540e\u53f0\u6267\u884c"),(0,i.kt)("p",null,"\u6709\u4e9b\u65f6\u5019\uff0c\u6211\u4eec\u53ea\u9700\u8981\u5f00\u542f\u65b0\u7ebf\u7a0b\u53bb\u6267\u884c\u4e00\u4e2a\u4efb\u52a1\uff0c\u6bd4\u5982\u53d1\u77ed\u4fe1\uff0c\u53d1\u90ae\u4ef6\uff0c\u65e0\u9700\u914d\u7f6e\u3002"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{2}","{2}":!0},"// \u6b64\u65b9\u6cd5\u65e0\u9700\u4e3b\u7ebf\u7a0b\u7b49\u5f85\u5373\u53ef\u8fd4\u56de\uff0c\u53ef\u5927\u5927\u63d0\u9ad8\u6027\u80fd\nSpareTime.DoIt(() => {\n // \u8fd9\u91cc\u53d1\u9001\u77ed\u4fe1\uff0c\u53d1\u9001\u90ae\u4ef6\u6216\u8bb0\u5f55\u8bbf\u95ee\u8bb0\u5f55\n});\n")),(0,i.kt)("p",null,"\u8fd8\u53ef\u4ee5\u6307\u5b9a\u591a\u957f\u65f6\u95f4\u540e\u89e6\u53d1\uff0c\u5efa\u8bae ",(0,i.kt)("inlineCode",{parentName:"p"},"10-1000")," \u6beb\u79d2\u4e4b\u95f4\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{3}","{3}":!0},"SpareTime.DoIt(() => {\n // \u53d1\u9001\u77ed\u4fe1\n}, 100);\n")),(0,i.kt)("h3",{id:"2635-isparetimeworker-\u65b9\u5f0f"},"26.3.5 ",(0,i.kt)("inlineCode",{parentName:"h3"},"ISpareTimeWorker")," \u65b9\u5f0f"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,8}","{1,8}":!0},'public class JobWorker : ISpareTimeWorker\n{\n /// \n /// 3s \u540e\u6267\u884c\n /// \n /// \n /// \n [SpareTime(3000, "jobName", DoOnce = true, StartNow = true)]\n public void DoSomething(SpareTimer timer, long count)\n {\n Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));\n }\n\n /// \n /// 3s \u540e\u6267\u884c\uff08\u652f\u6301\u5f02\u6b65\uff09\n /// \n /// \n /// \n [SpareTime(3000, "jobName", DoOnce = true, StartNow = true)]\n public async Task DoSomethingAsync(SpareTimer timer, long count)\n {\n Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));\n await Task.Completed;\n }\n}\n')),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"\u9700\u8981\u5728 ",(0,i.kt)("inlineCode",{parentName:"strong"},"Startup.cs")," \u4e2d\u6ce8\u518c ",(0,i.kt)("inlineCode",{parentName:"strong"},"services.AddTaskScheduler()"))),(0,i.kt)("h2",{id:"264-\u95f4\u9694\u65b9\u5f0f\u4f7f\u7528"},"26.4 \u95f4\u9694\u65b9\u5f0f\u4f7f\u7528"),(0,i.kt)("h3",{id:"2641-\u6bcf\u9694\u4e00\u6bb5\u65f6\u95f4\u6267\u884c"},"26.4.1 \u6bcf\u9694\u4e00\u6bb5\u65f6\u95f4\u6267\u884c"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{2}","{2}":!0},'// \u6bcf\u9694 1s \u6267\u884c\nSpareTime.Do(1000, (timer, count) => {\n Console.WriteLine("\u73b0\u5728\u65f6\u95f4\uff1a" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));\n Console.WriteLine($"\u4e00\u5171\u6267\u884c\u4e86\uff1a{count} \u6b21");\n});\n')),(0,i.kt)("h3",{id:"2642-\u914d\u7f6e\u4efb\u52a1\u4fe1\u606f"},"26.4.2 \u914d\u7f6e\u4efb\u52a1\u4fe1\u606f"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,4}","{1,4}":!0},'SpareTime.Do(1000, (timer, count) => {\n Console.WriteLine("\u73b0\u5728\u65f6\u95f4\uff1a" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));\n Console.WriteLine($"\u4e00\u5171\u6267\u884c\u4e86\uff1a{count} \u6b21");\n}, "jobName", "\u8fd9\u662f\u4e00\u4e2a\u8ba1\u65f6\u5668\u4efb\u52a1");\n')),(0,i.kt)("h3",{id:"2643-\u624b\u52a8\u542f\u52a8\u6267\u884c"},"26.4.3 \u624b\u52a8\u542f\u52a8\u6267\u884c"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,4,6}","{1,4,6}":!0},'SpareTime.Do(1000, (timer, count) => {\n Console.WriteLine("\u73b0\u5728\u65f6\u95f4\uff1a" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));\n Console.WriteLine($"\u4e00\u5171\u6267\u884c\u4e86\uff1a{count} \u6b21");\n}, "jobName", startNow:false);\n\nSpareTime.Start("jobName");\n')),(0,i.kt)("h3",{id:"2644-isparetimeworker-\u65b9\u5f0f"},"26.4.4 ",(0,i.kt)("inlineCode",{parentName:"h3"},"ISpareTimeWorker")," \u65b9\u5f0f"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,8}","{1,8}":!0},'public class JobWorker : ISpareTimeWorker\n{\n /// \n /// \u6bcf\u9694 3s \u6267\u884c\n /// \n /// \n /// \n [SpareTime(3000, "jobName", StartNow = true)]\n public void DoSomething(SpareTimer timer, long count)\n {\n Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));\n Console.WriteLine($"\u4e00\u5171\u6267\u884c\u4e86\uff1a{count} \u6b21");\n }\n}\n')),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"\u9700\u8981\u5728 ",(0,i.kt)("inlineCode",{parentName:"strong"},"Startup.cs")," \u4e2d\u6ce8\u518c ",(0,i.kt)("inlineCode",{parentName:"strong"},"services.AddTaskScheduler()"))),(0,i.kt)("h2",{id:"265-cron-\u8868\u8fbe\u5f0f\u4f7f\u7528"},"26.5 ",(0,i.kt)("inlineCode",{parentName:"h2"},"Cron")," \u8868\u8fbe\u5f0f\u4f7f\u7528"),(0,i.kt)("h3",{id:"2651-\u4ec0\u4e48\u662f-cron-\u8868\u8fbe\u5f0f"},"26.5.1 \u4ec0\u4e48\u662f ",(0,i.kt)("inlineCode",{parentName:"h3"},"Cron")," \u8868\u8fbe\u5f0f"),(0,i.kt)("p",null,"Cron \u8868\u8fbe\u5f0f\u662f\u4e00\u4e2a\u5b57\u7b26\u4e32\uff0c\u5b57\u7b26\u4e32\u4ee5 ",(0,i.kt)("inlineCode",{parentName:"p"},"5")," \u6216 ",(0,i.kt)("inlineCode",{parentName:"p"},"6")," \u4e2a\u7a7a\u683c\u9694\u5f00\uff0c\u5206\u4e3a 6 \u6216 7 \u4e2a\u57df\uff0c\u6bcf\u4e00\u4e2a\u57df\u4ee3\u8868\u4e00\u4e2a\u542b\u4e49\uff0cCron \u6709\u5982\u4e0b\u4e24\u79cd\u8bed\u6cd5\u683c\u5f0f\uff1a"),(0,i.kt)("p",null,"\uff081\uff09 Seconds Minutes Hours DayofMonth Month DayofWeek Year"),(0,i.kt)("p",null,"\uff082\uff09Seconds Minutes Hours DayofMonth Month DayofWeek"),(0,i.kt)("p",null,"Cron \u4ece\u5de6\u5230\u53f3\uff08\u7528\u7a7a\u683c\u9694\u5f00\uff09\uff1a",(0,i.kt)("inlineCode",{parentName:"p"},"\u79d2")," ",(0,i.kt)("inlineCode",{parentName:"p"},"\u5206")," ",(0,i.kt)("inlineCode",{parentName:"p"},"\u5c0f\u65f6")," ",(0,i.kt)("inlineCode",{parentName:"p"},"\u6708\u4efd\u4e2d\u7684\u65e5\u671f")," ",(0,i.kt)("inlineCode",{parentName:"p"},"\u6708\u4efd")," ",(0,i.kt)("inlineCode",{parentName:"p"},"\u661f\u671f\u4e2d\u7684\u65e5\u671f")," ",(0,i.kt)("inlineCode",{parentName:"p"},"\u5e74\u4efd")),(0,i.kt)("table",null,(0,i.kt)("thead",{parentName:"table"},(0,i.kt)("tr",{parentName:"thead"},(0,i.kt)("th",{parentName:"tr",align:null},"\u5b57\u6bb5"),(0,i.kt)("th",{parentName:"tr",align:null},"\u5141\u8bb8\u503c"),(0,i.kt)("th",{parentName:"tr",align:null},"\u5141\u8bb8\u7684\u7279\u6b8a\u5b57\u7b26"))),(0,i.kt)("tbody",{parentName:"table"},(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},"\u79d2\uff08Seconds\uff09"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"0~59")," \u7684\u6574\u6570"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},", - \\* /")," \u56db\u4e2a\u5b57\u7b26")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},"\u5206\uff08Minutes\uff09"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"0~59")," \u7684\u6574\u6570"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},", - \\* /")," \u56db\u4e2a\u5b57\u7b26")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},"\u5c0f\u65f6\uff08Hours\uff09"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"0~23")," \u7684\u6574\u6570"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},", - \\* /")," \u56db\u4e2a\u5b57\u7b26")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},"\u65e5\u671f\uff08DayofMonth\uff09"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"1~31")," \u7684\u6574\u6570\uff08\u4f46\u662f\u4f60\u9700\u8981\u8003\u8651\u5e73\u95f0\u6708\u7684\u5929\u6570\uff09"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},",- \\* ? / L W C")," \u516b\u4e2a\u5b57\u7b26")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},"\u6708\u4efd\uff08Month\uff09"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"1~12")," \u7684\u6574\u6570\u6216\u8005 ",(0,i.kt)("inlineCode",{parentName:"td"},"JAN-DEC")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},", - \\* /")," \u56db\u4e2a\u5b57\u7b26")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},"\u661f\u671f\uff08DayofWeek\uff09"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"1~7")," \u7684\u6574\u6570\u6216\u8005 ",(0,i.kt)("inlineCode",{parentName:"td"},"SUN-SAT \uff081=SUN\uff09")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},", - \\* ? / L C #")," \u516b\u4e2a\u5b57\u7b26")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},"\u5e74(\u53ef\u9009\uff0c\u7559\u7a7a)\uff08Year\uff09"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"1970~2099")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},", - \\* /")," \u56db\u4e2a\u5b57\u7b26")))),(0,i.kt)("p",null,"\u6bcf\u4e00\u4e2a\u57df\u90fd\u4f7f\u7528\u6570\u5b57\uff0c\u4f46\u8fd8\u53ef\u4ee5\u51fa\u73b0\u5982\u4e0b\u7279\u6b8a\u5b57\u7b26\uff0c\u5b83\u4eec\u7684\u542b\u4e49\u662f\uff1a"),(0,i.kt)("p",null,"\uff081\uff09",(0,i.kt)("inlineCode",{parentName:"p"},"_"),"\uff1a\u8868\u793a\u5339\u914d\u8be5\u57df\u7684\u4efb\u610f\u503c\u3002\u5047\u5982\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Minutes")," \u57df\u4f7f\u7528 ",(0,i.kt)("inlineCode",{parentName:"p"},"\\_"),", \u5373\u8868\u793a\u6bcf\u5206\u949f\u90fd\u4f1a\u89e6\u53d1\u4e8b\u4ef6\u3002"),(0,i.kt)("p",null,"\uff082\uff09",(0,i.kt)("inlineCode",{parentName:"p"},"?"),"\uff1a\u53ea\u80fd\u7528\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"DayofMonth")," \u548c ",(0,i.kt)("inlineCode",{parentName:"p"},"DayofWeek")," \u4e24\u4e2a\u57df\u3002\u5b83\u4e5f\u5339\u914d\u57df\u7684\u4efb\u610f\u503c\uff0c\u4f46\u5b9e\u9645\u4e0d\u4f1a\u3002\u56e0\u4e3a ",(0,i.kt)("inlineCode",{parentName:"p"},"DayofMonth")," \u548c ",(0,i.kt)("inlineCode",{parentName:"p"},"DayofWeek")," \u4f1a\u76f8\u4e92\u5f71\u54cd\u3002\u4f8b\u5982\u60f3\u5728\u6bcf\u6708\u7684 ",(0,i.kt)("inlineCode",{parentName:"p"},"20")," \u65e5\u89e6\u53d1\u8c03\u5ea6\uff0c\u4e0d\u7ba1 ",(0,i.kt)("inlineCode",{parentName:"p"},"20")," \u65e5\u5230\u5e95\u662f\u661f\u671f\u51e0\uff0c\u5219\u53ea\u80fd\u4f7f\u7528\u5982\u4e0b\u5199\u6cd5\uff1a ",(0,i.kt)("inlineCode",{parentName:"p"},"13 13 15 20 _ ?"),", \u5176\u4e2d\u6700\u540e\u4e00\u4f4d\u53ea\u80fd\u7528",(0,i.kt)("inlineCode",{parentName:"p"},"\uff1f"),"\uff0c\u800c\u4e0d\u80fd\u4f7f\u7528","_","\uff0c\u5982\u679c\u4f7f\u7528","*","\u8868\u793a\u4e0d\u7ba1\u661f\u671f\u51e0\u90fd\u4f1a\u89e6\u53d1\uff0c\u5b9e\u9645\u4e0a\u5e76\u4e0d\u662f\u8fd9\u6837\u3002"),(0,i.kt)("p",null,"\uff083\uff09",(0,i.kt)("inlineCode",{parentName:"p"},"-"),"\uff1a\u8868\u793a\u8303\u56f4\u3002\u4f8b\u5982\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Minutes")," \u57df\u4f7f\u7528 ",(0,i.kt)("inlineCode",{parentName:"p"},"5-20"),"\uff0c\u8868\u793a\u4ece ",(0,i.kt)("inlineCode",{parentName:"p"},"5")," \u5206\u5230 ",(0,i.kt)("inlineCode",{parentName:"p"},"20")," \u5206\u949f\u6bcf\u5206\u949f\u89e6\u53d1\u4e00\u6b21"),(0,i.kt)("p",null,"\uff084\uff09",(0,i.kt)("inlineCode",{parentName:"p"},"/"),"\uff1a\u8868\u793a\u8d77\u59cb\u65f6\u95f4\u5f00\u59cb\u89e6\u53d1\uff0c\u7136\u540e\u6bcf\u9694\u56fa\u5b9a\u65f6\u95f4\u89e6\u53d1\u4e00\u6b21\u3002\u4f8b\u5982\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Minutes")," \u57df\u4f7f\u7528 ",(0,i.kt)("inlineCode",{parentName:"p"},"5/20"),"\uff0c\u5219\u610f\u5473\u7740 ",(0,i.kt)("inlineCode",{parentName:"p"},"5")," \u5206\u949f\u89e6\u53d1\u4e00\u6b21\uff0c\u800c ",(0,i.kt)("inlineCode",{parentName:"p"},"25\uff0c45")," \u7b49\u5206\u522b\u89e6\u53d1\u4e00\u6b21."),(0,i.kt)("p",null,"\uff085\uff09",(0,i.kt)("inlineCode",{parentName:"p"},","),"\uff1a\u8868\u793a\u5217\u51fa\u679a\u4e3e\u503c\u3002\u4f8b\u5982\uff1a\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Minutes")," \u57df\u4f7f\u7528 ",(0,i.kt)("inlineCode",{parentName:"p"},"5,20"),"\uff0c\u5219\u610f\u5473\u7740\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"5")," \u548c ",(0,i.kt)("inlineCode",{parentName:"p"},"20")," \u5206\u6bcf\u5206\u949f\u89e6\u53d1\u4e00\u6b21\u3002"),(0,i.kt)("p",null,"\uff086\uff09",(0,i.kt)("inlineCode",{parentName:"p"},"L"),"\uff1a\u8868\u793a\u6700\u540e\uff0c\u53ea\u80fd\u51fa\u73b0\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"DayofWeek")," \u548c ",(0,i.kt)("inlineCode",{parentName:"p"},"DayofMonth")," \u57df\u3002\u5982\u679c\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"DayofWeek")," \u57df\u4f7f\u7528 ",(0,i.kt)("inlineCode",{parentName:"p"},"5L"),",\u610f\u5473\u7740\u5728\u6700\u540e\u7684\u4e00\u4e2a\u661f\u671f\u56db\u89e6\u53d1\u3002"),(0,i.kt)("p",null,"\uff087\uff09",(0,i.kt)("inlineCode",{parentName:"p"},"W"),"\uff1a\u8868\u793a\u6709\u6548\u5de5\u4f5c\u65e5(\u5468\u4e00\u5230\u5468\u4e94) \u53ea\u80fd\u51fa\u73b0\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"DayofMonth")," \u57df\uff0c\u7cfb\u7edf\u5c06\u5728\u79bb\u6307\u5b9a\u65e5\u671f\u7684\u6700\u8fd1\u7684\u6709\u6548\u5de5\u4f5c\u65e5\u89e6\u53d1\u4e8b\u4ef6\u3002\u4f8b\u5982\uff1a\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"DayofMonth")," \u4f7f\u7528 ",(0,i.kt)("inlineCode",{parentName:"p"},"5W"),"\uff0c\u5982\u679c ",(0,i.kt)("inlineCode",{parentName:"p"},"5")," \u65e5\u662f\u661f\u671f\u516d\uff0c\u5219\u5c06\u5728\u6700\u8fd1\u7684\u5de5\u4f5c\u65e5\uff1a\u661f\u671f\u4e94\uff0c\u5373 ",(0,i.kt)("inlineCode",{parentName:"p"},"4")," \u65e5\u89e6\u53d1\u3002\u5982\u679c ",(0,i.kt)("inlineCode",{parentName:"p"},"5")," \u65e5\u662f\u661f\u671f\u5929\uff0c\u5219\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"6")," \u65e5(\u5468\u4e00)\u89e6\u53d1\uff1b\u5982\u679c ",(0,i.kt)("inlineCode",{parentName:"p"},"5")," \u65e5\u5728\u661f\u671f\u4e00\u5230\u661f\u671f\u4e94\u4e2d\u7684\u4e00\u5929\uff0c\u5219\u5c31\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"5")," \u65e5\u89e6\u53d1\u3002\u53e6\u5916\u4e00\u70b9\uff0c",(0,i.kt)("inlineCode",{parentName:"p"},"W")," \u7684\u6700\u8fd1\u5bfb\u627e\u4e0d\u4f1a\u8de8\u8fc7\u6708\u4efd \u3002"),(0,i.kt)("p",null,"\uff088\uff09",(0,i.kt)("inlineCode",{parentName:"p"},"LW"),"\uff1a\u8fd9\u4e24\u4e2a\u5b57\u7b26\u53ef\u4ee5\u8fde\u7528\uff0c\u8868\u793a\u5728\u67d0\u4e2a\u6708\u6700\u540e\u4e00\u4e2a\u5de5\u4f5c\u65e5\uff0c\u5373\u6700\u540e\u4e00\u4e2a\u661f\u671f\u4e94\u3002"),(0,i.kt)("p",null,"\uff089\uff09",(0,i.kt)("inlineCode",{parentName:"p"},"#"),"\uff1a\u7528\u4e8e\u786e\u5b9a\u6bcf\u4e2a\u6708\u7b2c\u51e0\u4e2a\u661f\u671f\u51e0\uff0c\u53ea\u80fd\u51fa\u73b0\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"DayofMonth")," \u57df\u3002\u4f8b\u5982\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"4#2"),"\uff0c\u8868\u793a\u67d0\u6708\u7684\u7b2c\u4e8c\u4e2a\u661f\u671f\u4e09\u3002"),(0,i.kt)("h3",{id:"2652-\u5e38\u89c1-cron-\u8868\u8fbe\u5f0f"},"26.5.2 \u5e38\u89c1 ",(0,i.kt)("inlineCode",{parentName:"h3"},"Cron")," \u8868\u8fbe\u5f0f"),(0,i.kt)("table",null,(0,i.kt)("thead",{parentName:"table"},(0,i.kt)("tr",{parentName:"thead"},(0,i.kt)("th",{parentName:"tr",align:null},"\u8868\u8fbe\u5f0f"),(0,i.kt)("th",{parentName:"tr",align:null},"\u8868\u8fbe\u5f0f\u4ee3\u8868\u542b\u4e49"),(0,i.kt)("th",{parentName:"tr",align:null},"\u683c\u5f0f\u5316"))),(0,i.kt)("tbody",{parentName:"table"},(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"* * * * *")),(0,i.kt)("td",{parentName:"tr",align:null},"\u6bcf\u5206\u949f"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.Standard"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"*/1 * * * *")),(0,i.kt)("td",{parentName:"tr",align:null},"\u6bcf\u5206\u949f"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.Standard"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"0 0/1 * * * ?")),(0,i.kt)("td",{parentName:"tr",align:null},"\u6bcf\u5206\u949f"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.IncludeSeconds"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"0 0 * * * ?")),(0,i.kt)("td",{parentName:"tr",align:null},"\u6bcf\u5c0f\u65f6"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.IncludeSeconds"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"0 0 0/1 * * ?")),(0,i.kt)("td",{parentName:"tr",align:null},"\u6bcf\u5c0f\u65f6"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.IncludeSeconds"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"0 23 ? * MON-FRI")),(0,i.kt)("td",{parentName:"tr",align:null},"\u665a\u4e0a 11:00\uff0c\u5468\u4e00\u81f3\u5468\u4e94"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.Standard"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"* * * * * *")),(0,i.kt)("td",{parentName:"tr",align:null},"\u6bcf\u79d2"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.IncludeSeconds"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"*/45 * * * * *")),(0,i.kt)("td",{parentName:"tr",align:null},"\u6bcf 45 \u79d2"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.IncludeSeconds"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"*/5 * * * *")),(0,i.kt)("td",{parentName:"tr",align:null},"\u6bcf 5 \u5206\u949f"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.Standard"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"0 0/10 * * * ?")),(0,i.kt)("td",{parentName:"tr",align:null},"\u6bcf 10 \u5206\u949f"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.IncludeSeconds"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"0 */5 * * * *")),(0,i.kt)("td",{parentName:"tr",align:null},"\u6bcf 5 \u5206\u949f"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.IncludeSeconds"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"30 11 * * 1-5")),(0,i.kt)("td",{parentName:"tr",align:null},"\u5468\u4e00\u81f3\u5468\u4e94\u4e0a\u5348 11:30"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.Standard"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"30 11 * * *")),(0,i.kt)("td",{parentName:"tr",align:null},"11:30"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.Standard"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"0-10 11 * * *")),(0,i.kt)("td",{parentName:"tr",align:null},"\u4e0a\u5348 11:00 \u81f3 11:10 \u4e4b\u95f4\u7684\u6bcf\u4e00\u5206\u949f"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.Standard"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"* * * 3 *")),(0,i.kt)("td",{parentName:"tr",align:null},"\u6bcf\u5206\u949f\uff0c\u53ea\u5728 3 \u6708\u4efd"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.Standard"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"* * * 3,6 *")),(0,i.kt)("td",{parentName:"tr",align:null},"\u6bcf\u5206\u949f\uff0c\u53ea\u5728 3 \u6708\u548c 6 \u6708"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.Standard"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"30 14,16 * * *")),(0,i.kt)("td",{parentName:"tr",align:null},"\u4e0b\u5348 02:30 \u5206\u548c 04:30 \u5206"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.Standard"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"30 6,14,16 * * *")),(0,i.kt)("td",{parentName:"tr",align:null},"\u65e9\u4e0a 06:30\uff0c\u4e0b\u5348 02:30 \u548c 04:30"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.Standard"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"46 9 * * 1")),(0,i.kt)("td",{parentName:"tr",align:null},"\u65e9\u4e0a 09:46\uff0c\u53ea\u5728\u661f\u671f\u4e00"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.Standard"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"23 12 15 * *")),(0,i.kt)("td",{parentName:"tr",align:null},"\u4e0b\u5348 12:23\uff0c\u5728\u672c\u6708\u7684\u7b2c 15 \u5929"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.Standard"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"23 12 * JAN *")),(0,i.kt)("td",{parentName:"tr",align:null},"\u4e0b\u5348 12:23\uff0c\u53ea\u5728 1 \u6708\u4efd"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.Standard"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"23 12 ? JAN *")),(0,i.kt)("td",{parentName:"tr",align:null},"\u4e0b\u5348 12:23\uff0c\u53ea\u5728 1 \u6708\u4efd"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.Standard"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"23 12 * JAN-FEB *")),(0,i.kt)("td",{parentName:"tr",align:null},"\u4e0b\u5348 12:23\uff0c1 \u6708\u81f3 2 \u6708"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.Standard"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"23 12 * JAN-MAR *")),(0,i.kt)("td",{parentName:"tr",align:null},"\u4e0b\u5348 12:23\uff0c1 \u6708\u81f3 3 \u6708"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.Standard"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"23 12 * * SUN")),(0,i.kt)("td",{parentName:"tr",align:null},"\u4e0b\u5348 12:23\uff0c\u4ec5\u5728\u661f\u671f\u5929"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.Standard"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"*/5 15 * * MON-FRI")),(0,i.kt)("td",{parentName:"tr",align:null},"\u6bcf 5 \u5206\u949f\uff0c\u4e0b\u5348 0:00 \u81f3 03:59\uff0c\u5468\u4e00\u81f3\u5468\u4e94"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.Standard"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"* * * * MON#3")),(0,i.kt)("td",{parentName:"tr",align:null},"\u6bcf\u5206\u949f\uff0c\u5728\u6708\u7684\u7b2c\u4e09\u4e2a\u661f\u671f\u4e00"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.Standard"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"* * * * 4L")),(0,i.kt)("td",{parentName:"tr",align:null},"\u6bcf\u4e00\u5206\u949f\uff0c\u5728\u672c\u6708\u7684\u6700\u540e\u4e00\u5929"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.Standard"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"*/5 * L JAN *")),(0,i.kt)("td",{parentName:"tr",align:null},"\u6bcf\u6708\u4e00\u6b21\u6bcf\u6708 5 \u5206\u949f\uff0c\u53ea\u5728 1 \u6708\u4efd"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.Standard"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"30 02 14 * * *")),(0,i.kt)("td",{parentName:"tr",align:null},"\u4e0b\u5348\u5728 02:02:30"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.IncludeSeconds"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"5-10 * * * * *")),(0,i.kt)("td",{parentName:"tr",align:null},"\u6bcf\u5206\u949f\u7684 5-10 \u79d2"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.IncludeSeconds"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"5-10 30-35 10-12 * * *")),(0,i.kt)("td",{parentName:"tr",align:null},"10:00 \u81f3 12:00 \u4e4b\u95f4\u7684\u6bcf\u5206\u949f 5-10 \u79d2\uff0c\u6bcf\u5c0f\u65f6 30-35 \u5206\u949f"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.IncludeSeconds"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"30 */5 * * * *")),(0,i.kt)("td",{parentName:"tr",align:null},"\u6bcf\u5206\u949f\u7684 30 \u79d2\uff0c\u6bcf\u4e94\u5206\u949f"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.IncludeSeconds"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"0 30 10-13 ? * WED,FRI")),(0,i.kt)("td",{parentName:"tr",align:null},"\u6bcf\u5c0f\u65f6\u7684 30 \u5206\u949f\uff0c\u4e0b\u5348 10:00 \u81f3 01:00 \u4e4b\u95f4\uff0c\u4ec5\u5728\u5468\u4e09\u548c\u5468\u4e94"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.IncludeSeconds"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"10 0/5 * * * ?")),(0,i.kt)("td",{parentName:"tr",align:null},"\u6bcf\u5206\u949f\u7684 10 \u79d2\uff0c\u6bcf 05 \u5206\u949f"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.IncludeSeconds"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"0 0 6 1/1 * ?")),(0,i.kt)("td",{parentName:"tr",align:null},"\u4e0b\u5348 06:00"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.IncludeSeconds"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"0 5 0/1 * * ?")),(0,i.kt)("td",{parentName:"tr",align:null},"\u4e00\u4e2a\u5c0f\u65f6\u7684 05 \u5206"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.IncludeSeconds"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"0 0 L * *")),(0,i.kt)("td",{parentName:"tr",align:null},"\u6bcf\u6708\u6700\u540e\u4e00\u5929\u4e0a\u5348 00\uff1a00"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.Standard"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"0 0 L-1 * *")),(0,i.kt)("td",{parentName:"tr",align:null},"\u6bcf\u6708\u6700\u540e\u4e00\u5929\u7684\u51cc\u6668 00\uff1a00"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.Standard"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"0 0 3W * *")),(0,i.kt)("td",{parentName:"tr",align:null},"\u6bcf\u6708\u7b2c 3 \u4e2a\u5de5\u4f5c\u65e5\u4e0a\u5348 00\uff1a00"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.Standard"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"0 0 LW * *")),(0,i.kt)("td",{parentName:"tr",align:null},"\u5728\u6bcf\u6708\u7684\u6700\u540e\u4e00\u4e2a\u5de5\u4f5c\u65e5\uff0c\u4e0a\u5348 00\uff1a00"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.Standard"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"0 0 * * 2L")),(0,i.kt)("td",{parentName:"tr",align:null},"\u672c\u6708\u6700\u540e\u4e00\u4e2a\u661f\u671f\u4e8c\u4e0a\u5348 00\uff1a00"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.Standard"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"0 0 * * 6#3")),(0,i.kt)("td",{parentName:"tr",align:null},"\u6bcf\u6708\u7b2c\u4e09\u4e2a\u661f\u671f\u516d\u4e0a\u5348 00\uff1a00"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.Standard"))),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"0 0 ? 1 MON#1")),(0,i.kt)("td",{parentName:"tr",align:null},"1 \u6708\u7b2c\u4e00\u4e2a\u661f\u671f\u4e00\u4e0a\u5348 00\uff1a00"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"CronFormat.Standard"))))),(0,i.kt)("h3",{id:"2653-\u5728\u7ebf\u751f\u6210-cron-\u8868\u8fbe\u5f0f"},"26.5.3 \u5728\u7ebf\u751f\u6210 ",(0,i.kt)("inlineCode",{parentName:"h3"},"Cron")," \u8868\u8fbe\u5f0f"),(0,i.kt)("p",null,(0,i.kt)("a",{parentName:"p",href:"https://cron.qqe2.com/"},"https://cron.qqe2.com/")),(0,i.kt)("h3",{id:"2654-macro-\u6807\u8bc6\u7b26"},"26.5.4 ",(0,i.kt)("inlineCode",{parentName:"h3"},"Macro")," \u6807\u8bc6\u7b26"),(0,i.kt)("p",null,"\u4e3a\u4e86\u65b9\u4fbf\u5b9a\u4e49 ",(0,i.kt)("inlineCode",{parentName:"p"},"Cron")," \u8868\u8fbe\u5f0f\uff0c",(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e5f\u63d0\u4f9b\u4e86\u975e\u5e38\u65b9\u4fbf\u7684\u5360\u4f4d\u7b26\u5b9e\u73b0\u5e38\u7528\u7684\u65f6\u95f4\u683c\u5f0f\uff1a"),(0,i.kt)("table",null,(0,i.kt)("thead",{parentName:"table"},(0,i.kt)("tr",{parentName:"thead"},(0,i.kt)("th",{parentName:"tr",align:null},"\u5360\u4f4d\u7b26"),(0,i.kt)("th",{parentName:"tr",align:null},"\u5bf9\u5e94\u8868\u8fbe\u5f0f"),(0,i.kt)("th",{parentName:"tr",align:null},"\u5360\u4f4d\u7b26\u4ee3\u8868\u542b\u4e49"))),(0,i.kt)("tbody",{parentName:"table"},(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"@every_second")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"* * * * * *")),(0,i.kt)("td",{parentName:"tr",align:null},"\u4e00\u79d2\u949f\u8dd1\u4e00\u6b21")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"@every_minute")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"* * * * *")),(0,i.kt)("td",{parentName:"tr",align:null},"\u5728\u5206\u949f\u5f00\u59cb\u65f6\u6bcf\u5206\u949f\u8fd0\u884c\u4e00\u6b21")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"@hourly")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"0 * * * *")),(0,i.kt)("td",{parentName:"tr",align:null},"\u5728\u5c0f\u65f6\u5f00\u59cb\u65f6\u6bcf\u5c0f\u65f6\u8fd0\u884c\u4e00\u6b21")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"@daily")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"0 0 * * *")),(0,i.kt)("td",{parentName:"tr",align:null},"\u6bcf\u5929\u5348\u591c\u8fd0\u884c\u4e00\u6b21")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"@midnight")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"0 0 * * *")),(0,i.kt)("td",{parentName:"tr",align:null},"\u6bcf\u5929\u5348\u591c\u8fd0\u884c\u4e00\u6b21")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"@weekly")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"0 0 * * 0")),(0,i.kt)("td",{parentName:"tr",align:null},"\u5468\u65e5\u4e0a\u5348\u5348\u591c\u6bcf\u5468\u8fd0\u884c\u4e00\u6b21")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"@monthly")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"0 0 1 * *")),(0,i.kt)("td",{parentName:"tr",align:null},"\u6bcf\u6708\u5728\u6bcf\u6708\u7b2c\u4e00\u5929\u7684\u5348\u591c\u8fd0\u884c\u4e00\u6b21")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"@yearly")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"0 0 1 1 *")),(0,i.kt)("td",{parentName:"tr",align:null},"\u6bcf\u5e74 1 \u6708 1 \u65e5\u5348\u591c\u8fd0\u884c\u4e00\u6b21")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"@annually")),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("inlineCode",{parentName:"td"},"0 0 1 1 *")),(0,i.kt)("td",{parentName:"tr",align:null},"\u6bcf\u5e74 1 \u6708 1 \u65e5\u5348\u591c\u8fd0\u884c\u4e00\u6b21")))),(0,i.kt)("h3",{id:"2655-\u4f7f\u7528-cron-\u8868\u8fbe\u5f0f"},"26.5.5 \u4f7f\u7528 ",(0,i.kt)("inlineCode",{parentName:"h3"},"Cron")," \u8868\u8fbe\u5f0f"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{2,5}","{2,5}":!0},'// \u6bcf\u9694 1s \u6267\u884c\nSpareTime.Do("* * * * * *", (timer, count) => {\n Console.WriteLine("\u73b0\u5728\u65f6\u95f4\uff1a" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));\n Console.WriteLine($"\u4e00\u5171\u6267\u884c\u4e86\uff1a{count} \u6b21");\n}, cronFormat: CronFormat.IncludeSeconds);\n')),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u5173\u4e8e CronFormat")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c",(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u672a\u542f\u7528\u5bf9 ",(0,i.kt)("inlineCode",{parentName:"p"},"\u79d2")," \u7684\u652f\u6301\uff0c\u5982\u9700\u5f00\u542f\uff0c\u5219\u8bbe\u7f6e ",(0,i.kt)("inlineCode",{parentName:"p"},"cronFormat: CronFormat.IncludeSeconds")," \u5373\u53ef\u3002\u9ed8\u8ba4\u503c\u662f ",(0,i.kt)("inlineCode",{parentName:"p"},"cronFormat: CronFormat.Standard")))),(0,i.kt)("h3",{id:"2656-\u4f7f\u7528-macro-\u5360\u4f4d\u7b26"},"26.5.6 \u4f7f\u7528 ",(0,i.kt)("inlineCode",{parentName:"h3"},"Macro")," \u5360\u4f4d\u7b26"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{2}","{2}":!0},'// \u6bcf\u9694 1s \u6267\u884c\nSpareTime.Do("@every_second", (timer, count) => {\n Console.WriteLine("\u73b0\u5728\u65f6\u95f4\uff1a" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));\n Console.WriteLine($"\u4e00\u5171\u6267\u884c\u4e86\uff1a{count} \u6b21");\n});\n')),(0,i.kt)("h3",{id:"2657-\u914d\u7f6e\u4efb\u52a1\u4fe1\u606f"},"26.5.7 \u914d\u7f6e\u4efb\u52a1\u4fe1\u606f"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{4}","{4}":!0},'SpareTime.Do("* * * * *", (timer, count) => {\n Console.WriteLine("\u73b0\u5728\u65f6\u95f4\uff1a" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));\n Console.WriteLine($"\u4e00\u5171\u6267\u884c\u4e86\uff1a{count} \u6b21");\n}, "cronName", "\u6bcf\u5206\u949f\u6267\u884c\u4e00\u6b21");\n')),(0,i.kt)("h3",{id:"2658-\u624b\u52a8\u542f\u52a8\u6267\u884c"},"26.5.8 \u624b\u52a8\u542f\u52a8\u6267\u884c"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{4,6}","{4,6}":!0},'SpareTime.Do("* * * * *", (timer, count) => {\n Console.WriteLine("\u73b0\u5728\u65f6\u95f4\uff1a" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));\n Console.WriteLine($"\u4e00\u5171\u6267\u884c\u4e86\uff1a{count} \u6b21");\n}, "cronName", "\u6bcf\u5206\u949f\u6267\u884c\u4e00\u6b21", startNow: false);\n\nSpareTime.Start("cronName");\n')),(0,i.kt)("h3",{id:"2659-isparetimeworker-\u65b9\u5f0f"},"26.5.9 ",(0,i.kt)("inlineCode",{parentName:"h3"},"ISpareTimeWorker")," \u65b9\u5f0f"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,8}","{1,8}":!0},'public class JobWorker : ISpareTimeWorker\n{\n /// \n /// \u6bcf\u5206\u949f\u6267\u884c\n /// \n /// \n /// \n [SpareTime("* * * * *", "jobName", StartNow = true)]\n public void DoSomething(SpareTimer timer, long count)\n {\n Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));\n Console.WriteLine($"\u4e00\u5171\u6267\u884c\u4e86\uff1a{count} \u6b21");\n }\n\n /// \n /// \u6bcf\u5206\u949f\u6267\u884c\uff08\u652f\u6301\u5f02\u6b65\uff09\n /// \n /// \n /// \n [SpareTime("* * * * *", "jobName", StartNow = true)]\n public async Task DoSomethingAsync(SpareTimer timer, long count)\n {\n Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));\n Console.WriteLine($"\u4e00\u5171\u6267\u884c\u4e86\uff1a{count} \u6b21");\n await Task.Completed;\n }\n}\n')),(0,i.kt)("h2",{id:"266-\u81ea\u5b9a\u4e49\u4e0b\u6b21\u6267\u884c\u65f6\u95f4"},"26.6 \u81ea\u5b9a\u4e49\u4e0b\u6b21\u6267\u884c\u65f6\u95f4"),(0,i.kt)("p",null,"\u6709\u4e9b\u65f6\u5019\u6211\u4eec\u9700\u8981\u8fdb\u884c\u4e00\u4e9b\u4e1a\u52a1\u903b\u8f91\uff0c\u6bd4\u5982\u6570\u636e\u5e93\u67e5\u8be2\u7b49\u64cd\u4f5c\u8fd4\u56de\u4e0b\u4e00\u6b21\u6267\u884c\u65f6\u95f4\uff0c\u8fd9\u4e2a\u65f6\u5019\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7\u9ad8\u7ea7\u81ea\u5b9a\u4e49\u65b9\u5f0f\u3002"),(0,i.kt)("h3",{id:"2661-\u9ad8\u7ea7\u81ea\u5b9a\u4e49\u95f4\u9694\u65b9\u5f0f"},"26.6.1 \u9ad8\u7ea7\u81ea\u5b9a\u4e49\u95f4\u9694\u65b9\u5f0f"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{2,4-5,7}","{2,4-5,7}":!0},'SpareTime.Do(()=>{\n // \u8fd9\u91cc\u53ef\u4ee5\u67e5\u8be2\u6570\u636e\u5e93\u6216\u8fdb\u884c\u6216\u8fdb\u884c\u4efb\u4f55\u4e1a\u52a1\u903b\u8f91\n\n if(\u7b26\u5408\u903b\u8f91){\n return 1000; // \u6bcf\u79d2\u6267\u884c\n }\n else return -1; // \u4e0d\u7b26\u5408\u903b\u8f91\u53d6\u6d88\u4efb\u52a1\n},\n(timer,count)=>{\n Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));\n Console.WriteLine($"\u4e00\u5171\u6267\u884c\u4e86\uff1a{count} \u6b21");\n});\n')),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u914d\u7f6e\u662f\u5426\u6301\u7eed\u68c0\u67e5")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c\u8be5\u81ea\u5b9a\u4e49\u4f1a\u5728\u8fd4\u56de ",(0,i.kt)("inlineCode",{parentName:"p"},"\u5c0f\u4e8e\u6216\u7b49\u4e8e0")," \u65f6\u7ec8\u6b62\u4efb\u52a1\u7684\u6267\u884c\u3002\u4f46\u662f\u6211\u4eec\u5e0c\u671b\u8be5\u4efb\u52a1\u4e0d\u8981\u7ec8\u6b62\uff0c\u53ea\u8981\u7b26\u5408\u6761\u4ef6\u90fd\u4e00\u76f4\u6267\u884c\uff0c\u53ea\u9700\u8981\u914d\u7f6e ",(0,i.kt)("inlineCode",{parentName:"p"},"cancelInNoneNextTime: false")," \u5373\u53ef"))),(0,i.kt)("h3",{id:"2662-\u9ad8\u7ea7\u81ea\u5b9a\u4e49-cron-\u8868\u8fbe\u5f0f"},"26.6.2 \u9ad8\u7ea7\u81ea\u5b9a\u4e49 ",(0,i.kt)("inlineCode",{parentName:"h3"},"Cron")," \u8868\u8fbe\u5f0f"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{2,4-5,7}","{2,4-5,7}":!0},'SpareTime.Do(()=>{\n // \u8fd9\u91cc\u53ef\u4ee5\u67e5\u8be2\u6570\u636e\u5e93\u6216\u8fdb\u884c\u6216\u8fdb\u884c\u4efb\u4f55\u4e1a\u52a1\u903b\u8f91\n\n if(\u7b26\u5408\u903b\u8f91){\n return DateTimeOffset.Now.AddMinutes(10); // \u5341\u5206\u949f\u540e\u518d\u6267\u884c\n }\n else return null; // \u4e0d\u7b26\u5408\u903b\u8f91\u53d6\u6d88\u4efb\u52a1\n},\n(timer,count) => {\n Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));\n Console.WriteLine($"\u4e00\u5171\u6267\u884c\u4e86\uff1a{count} \u6b21");\n});\n')),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u914d\u7f6e\u662f\u5426\u6301\u7eed\u68c0\u67e5")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c\u8be5\u81ea\u5b9a\u4e49\u4f1a\u5728\u8fd4\u56de ",(0,i.kt)("inlineCode",{parentName:"p"},"null")," \u65f6\u7ec8\u6b62\u4efb\u52a1\u7684\u6267\u884c\u3002\u4f46\u662f\u6211\u4eec\u5e0c\u671b\u8be5\u4efb\u52a1\u4e0d\u8981\u7ec8\u6b62\uff0c\u53ea\u8981\u7b26\u5408\u6761\u4ef6\u90fd\u4e00\u76f4\u6267\u884c\uff0c\u53ea\u9700\u8981\u914d\u7f6e ",(0,i.kt)("inlineCode",{parentName:"p"},"cancelInNoneNextTime: false")," \u5373\u53ef\uff0c\u5982\uff1a"),(0,i.kt)("pre",{parentName:"div"},(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{2,4-5,7,12}","{2,4-5,7,12}":!0},'SpareTime.Do(()=>{\n // \u8fd9\u91cc\u53ef\u4ee5\u67e5\u8be2\u6570\u636e\u5e93\u6216\u8fdb\u884c\u6216\u8fdb\u884c\u4efb\u4f55\u4e1a\u52a1\u903b\u8f91\n\n if(\u7b26\u5408\u903b\u8f91){\n return SpareTime.GetCronNextOccurrence("cron \u8868\u8fbe\u5f0f");\n }\n else return null; // \u4e0d\u7b26\u5408\u903b\u8f91\u7ee7\u7eed\u68c0\u67e5\n},\n(timer,count) => {\n Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));\n Console.WriteLine($"\u4e00\u5171\u6267\u884c\u4e86\uff1a{count} \u6b21");\n}, cancelInNoneNextTime: false);\n')))),(0,i.kt)("h2",{id:"267-isparetimeworker-\u8bf4\u660e"},"26.7 ",(0,i.kt)("inlineCode",{parentName:"h2"},"ISpareTimeWorker")," \u8bf4\u660e"),(0,i.kt)("p",null,"\u9664\u4e86\u4e0a\u9762\u7684 ",(0,i.kt)("inlineCode",{parentName:"p"},"SpareTime")," \u9759\u6001\u7c7b\u65b9\u5f0f\uff0c",(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u8fd8\u63d0\u4f9b\u4e86 ",(0,i.kt)("inlineCode",{parentName:"p"},"ISpareTimeWorker")," \u65b9\u5f0f\uff0c\u4f7f\u7528\u8be5\u65b9\u5f0f\u975e\u5e38\u7b80\u5355\uff0c\u53ea\u9700\u8981\u81ea\u5b9a\u4e49\u4e00\u4e2a",(0,i.kt)("strong",{parentName:"p"},"\u516c\u5f00\u4e14\u975e\u62bd\u8c61\u975e\u9759\u6001"),"\u7c7b\u5e76\u5b9e\u73b0 ",(0,i.kt)("inlineCode",{parentName:"p"},"ISpareTimeWorker")," \u5373\u53ef\u3002"),(0,i.kt)("p",null,"\u5728\u8be5\u7c7b\u4e2d\u5b9a\u4e49\u7684\u4efb\u52a1\u65b9\u6cd5\u9700\u6ee1\u8db3\u4ee5\u4e0b\u89c4\u5219\uff1a"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"\u5fc5\u987b\u662f",(0,i.kt)("strong",{parentName:"li"},"\u516c\u5f00\u4e14\u5b9e\u4f8b\u65b9\u6cd5")),(0,i.kt)("li",{parentName:"ul"},"\u8be5\u65b9\u6cd5\u5fc5\u987b\u8fd4\u56de ",(0,i.kt)("inlineCode",{parentName:"li"},"void")," \u4e14\u63d0\u4f9b ",(0,i.kt)("inlineCode",{parentName:"li"},"SpareTimer")," \u548c ",(0,i.kt)("inlineCode",{parentName:"li"},"long")," \u4e24\u4e2a\u53c2\u6570"),(0,i.kt)("li",{parentName:"ul"},"\u5fc5\u987b\u8d34\u6709 ",(0,i.kt)("inlineCode",{parentName:"li"},"[SpareTime]")," \u7279\u6027")),(0,i.kt)("p",null,"\u5982\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,4-5,12-13,20-21,28-30,37-38,45}","{1,4-5,12-13,20-21,28-30,37-38,45}":!0},'public class JobWorker : ISpareTimeWorker\n{\n // \u6bcf\u9694\u4e00\u79d2\u6267\u884c\uff0c\u4e14\u7acb\u5373\u542f\u52a8\n [SpareTime(1000, "jobName1", StartNow = true)]\n public void DoSomething1(SpareTimer timer, long count)\n {\n Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));\n Console.WriteLine($"\u4e00\u5171\u6267\u884c\u4e86\uff1a{count} \u6b21");\n }\n\n // \u6bcf\u5206\u949f\u6267\u884c\uff0c\u4e14\u7acb\u5373\u542f\u52a8\n [SpareTime("* * * * *", "jobName2", StartNow = true)]\n public void DoSomething2(SpareTimer timer, long count)\n {\n Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));\n Console.WriteLine($"\u4e00\u5171\u6267\u884c\u4e86\uff1a{count} \u6b21");\n }\n\n // \u6bcf\u79d2\u6267\u884c\uff0c\u4e14\u7b49\u5f85\u542f\u52a8\n [SpareTime("* * * * * *", "jobName3",CronFormat = CronFormat.IncludeSeconds, StartNow = false)]\n public void DoSomething3(SpareTimer timer, long count)\n {\n Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));\n Console.WriteLine($"\u4e00\u5171\u6267\u884c\u4e86\uff1a{count} \u6b21");\n }\n\n // \u6bcf\u79d2\u6267\u884c\u4e00\u6b21\uff0c\u6bcf\u5206\u949f\u4e5f\u6267\u884c\u4e00\u6b21\n [SpareTime(1000, "jobName4", StartNow = true)]\n [SpareTime("* * * * *", "jobName5", StartNow = true)]\n public void DoSomething4(SpareTimer timer, long count)\n {\n Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));\n Console.WriteLine($"\u4e00\u5171\u6267\u884c\u4e86\uff1a{count} \u6b21");\n }\n\n // \u53ea\u6267\u884c\u4e00\u6b21\n [SpareTime(1000, "jobName5", StartNow = true, DoOnce = true)]\n public void DoSomething5(SpareTimer timer, long count)\n {\n Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));\n Console.WriteLine($"\u4e00\u5171\u6267\u884c\u4e86\uff1a{count} \u6b21");\n }\n\n // \u8bfb\u53d6\u914d\u7f6e\u6587\u4ef6\uff0c\u901a\u8fc7 #(\u914d\u7f6e\u8def\u5f84)\n [SpareTime("#(MyJob:Time)", "jobName6", StartNow = true, DoOnce = true)]\n public void DoSomething5(SpareTimer timer, long count)\n {\n Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));\n Console.WriteLine($"\u4e00\u5171\u6267\u884c\u4e86\uff1a{count} \u6b21");\n }\n\n // \u652f\u6301\u5f02\u6b65\n [SpareTime(1000, "jobName1", StartNow = true)]\n public async Task DoSomethingAsync(SpareTimer timer, long count)\n {\n Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));\n Console.WriteLine($"\u4e00\u5171\u6267\u884c\u4e86\uff1a{count} \u6b21");\n await Task.Completed;\n }\n}\n')),(0,i.kt)("div",{className:"admonition admonition-warning alert alert--danger"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"}))),"\u5173\u4e8e\u4f9d\u8d56\u6ce8\u5165")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},(0,i.kt)("inlineCode",{parentName:"p"},"ISpareTimeWorker")," \u63a5\u53e3\u4e3b\u8981\u662f\u7528\u6765\u67e5\u627e\u5b9a\u65f6\u5668\u5bf9\u8c61\u7684\uff0c\u4e5f\u5c31\u662f\u5b83\u7684\u5b9e\u73b0\u7c7b\u5e76\u672a\u63d0\u4f9b\u4f9d\u8d56\u6ce8\u5165\u529f\u80fd\uff0c\u6240\u4ee5\u5728\u5b9e\u73b0\u7c7b\u5e76\u4e0d\u652f\u6301\u6784\u9020\u51fd\u6570\u6ce8\u5165\u4f9d\u8d56\u9879\u3002"))),(0,i.kt)("h3",{id:"2671-sparetime-\u7279\u6027"},"26.7.1 ",(0,i.kt)("inlineCode",{parentName:"h3"},"[SpareTime]")," \u7279\u6027"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"[SpareTime]")," \u652f\u6301\u4ee5\u4e0b\u914d\u7f6e\u5c5e\u6027"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"Interval"),"\uff1a\u95f4\u9694\u65f6\u95f4, ",(0,i.kt)("inlineCode",{parentName:"li"},"double")," \u7c7b\u578b"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"CronExpression"),"\uff1a",(0,i.kt)("inlineCode",{parentName:"li"},"Cron")," \u8868\u8fbe\u5f0f\uff0c",(0,i.kt)("inlineCode",{parentName:"li"},"string")," \u7c7b\u578b"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"WorkerName"),"\uff1a\u4efb\u52a1\u552f\u4e00\u6807\u8bc6\uff0c",(0,i.kt)("inlineCode",{parentName:"li"},"string")," \u7c7b\u578b\uff0c",(0,i.kt)("inlineCode",{parentName:"li"},"\u5fc5\u586b")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"Description"),"\uff1a\u4efb\u52a1\u63cf\u8ff0\uff0c",(0,i.kt)("inlineCode",{parentName:"li"},"string")," \u7c7b\u578b"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"DoOnce"),"\uff1a\u662f\u5426\u53ea\u6267\u884c\u4e00\u6b21\uff0c",(0,i.kt)("inlineCode",{parentName:"li"},"bool")," \u7c7b\u578b\uff0c\u9ed8\u8ba4 ",(0,i.kt)("inlineCode",{parentName:"li"},"false")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"StartNow"),"\uff1a\u662f\u5426\u7acb\u5373\u542f\u52a8\uff0c\u9ed8\u8ba4 ",(0,i.kt)("inlineCode",{parentName:"li"},"false")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"CronFormat"),"\uff1a",(0,i.kt)("inlineCode",{parentName:"li"},"Cron")," \u8868\u8fbe\u5f0f\u683c\u5f0f\u5316\u65b9\u5f0f\uff0c",(0,i.kt)("inlineCode",{parentName:"li"},"CronFormat")," \u679a\u4e3e\u7c7b\u578b\uff0c\u9ed8\u8ba4 ",(0,i.kt)("inlineCode",{parentName:"li"},"CronFormat.Standard")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"ExecuteType"),"\uff1a\u914d\u7f6e\u4efb\u52a1\u6267\u884c\u65b9\u5f0f\uff0c",(0,i.kt)("inlineCode",{parentName:"li"},"SpareTimeExecuteTypes")," \u679a\u4e3e\u7c7b\u578b\uff0c\u9ed8\u8ba4 ",(0,i.kt)("inlineCode",{parentName:"li"},"SpareTimeExecuteTypes.Parallel"))),(0,i.kt)("h2",{id:"268-sparetime-\u9759\u6001\u7c7b"},"26.8 ",(0,i.kt)("inlineCode",{parentName:"h2"},"SpareTime")," \u9759\u6001\u7c7b"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"SpareTime")," \u9759\u6001\u7c7b\u63d0\u4f9b\u4e86\u4e00\u4e9b\u65b9\u6cd5\u65b9\u4fbf\u521d\u59cb\u5316\u548c\u7ba1\u7406\u4efb\u52a1"),(0,i.kt)("h3",{id:"2681-\u521d\u59cb\u5316\u4efb\u52a1"},"26.8.1 \u521d\u59cb\u5316\u4efb\u52a1"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"// \u5f00\u542f\u95f4\u9694\u4efb\u52a1\nSpareTime.Do(interval, [options]);\n\n// \u5f00\u542f Cron \u8868\u8fbe\u5f0f\u4efb\u52a1\nSpareTime.Do(expression, [options]);\n\n// \u53ea\u6267\u884c\u4e00\u6b21\u4efb\u52a1\nSpareTime.DoOnce(interval, [options]);\n\n// \u5b9e\u73b0\u81ea\u5b9a\u4e49\u4efb\u52a1\nSpareTime.Do(()=>{\n return DateTime.Now.AddMinutes(10);\n},[options]);\n")),(0,i.kt)("h3",{id:"2682-\u5b9e\u73b0\u540e\u53f0\u6267\u884c"},"26.8.2 \u5b9e\u73b0\u540e\u53f0\u6267\u884c"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"// \u5b9e\u73b0\u540e\u53f0\u6267\u884c\nSpareTime.DoIt(()=>{});\n")),(0,i.kt)("h3",{id:"2683-\u5f00\u59cb\u4e00\u4e2a\u4efb\u52a1"},"26.8.3 \u5f00\u59cb\u4e00\u4e2a\u4efb\u52a1"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'SpareTime.Start("\u4efb\u52a1\u6807\u8bc6");\n')),(0,i.kt)("h3",{id:"2684-\u6682\u505c\u4e00\u4e2a\u4efb\u52a1"},"26.8.4 \u6682\u505c\u4e00\u4e2a\u4efb\u52a1"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'SpareTime.Stop("\u4efb\u52a1\u6807\u8bc6");\n// \u8fd8\u53ef\u4ee5\u6807\u8bb0\u4e00\u4e2a\u4efb\u52a1\u6267\u884c\u5931\u8d25\nSpareTime.Stop("\u4efb\u52a1\u6807\u8bc6", true);\n')),(0,i.kt)("h3",{id:"2685-\u53d6\u6d88\u4e00\u4e2a\u4efb\u52a1"},"26.8.5 \u53d6\u6d88\u4e00\u4e2a\u4efb\u52a1"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'SpareTime.Cancel("\u4efb\u52a1\u540d\u79f0");\n')),(0,i.kt)("h3",{id:"2686-\u9500\u6bc1\u6240\u6709\u4efb\u52a1"},"26.8.6 \u9500\u6bc1\u6240\u6709\u4efb\u52a1"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"SpareTime.Dispose();\n")),(0,i.kt)("h3",{id:"2687-\u83b7\u53d6\u6240\u6709\u4efb\u52a1"},"26.8.7 \u83b7\u53d6\u6240\u6709\u4efb\u52a1"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"var workers = SpareTime.GetWorkers();\n")),(0,i.kt)("h3",{id:"2688-\u83b7\u53d6\u5355\u4e2a\u4efb\u52a1"},"26.8.8 \u83b7\u53d6\u5355\u4e2a\u4efb\u52a1"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'var worker = SpareTime.GetWorker("workerName");\n')),(0,i.kt)("h3",{id:"2689-\u89e3\u6790-cron-\u8868\u8fbe\u5f0f"},"26.8.9 \u89e3\u6790 ",(0,i.kt)("inlineCode",{parentName:"h3"},"Cron")," \u8868\u8fbe\u5f0f"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'var nextTime = SpareTime.GetCronNextOccurrence("* * * * *");\n')),(0,i.kt)("h2",{id:"269-\u5e76\u884c\u548c\u4e32\u884c\u6267\u884c\u65b9\u5f0f"},"26.9 ",(0,i.kt)("inlineCode",{parentName:"h2"},"\u5e76\u884c"),"\u548c",(0,i.kt)("inlineCode",{parentName:"h2"},"\u4e32\u884c"),"\u6267\u884c\u65b9\u5f0f"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u4e86\u4efb\u52a1\u4e24\u79cd\u6267\u884c\u65b9\u5f0f ",(0,i.kt)("inlineCode",{parentName:"p"},"\u5e76\u884c")," \u548c ",(0,i.kt)("inlineCode",{parentName:"p"},"\u4e32\u884c"),"\uff1a"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"\u5e76\u884c"),"\uff1a\u65e0\u9700\u7b49\u5f85\u4e0a\u4e00\u6b21\u4efb\u52a1\u5b8c\u6210\uff0c",(0,i.kt)("strong",{parentName:"li"},"\u9ed8\u8ba4\u503c")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"\u4e32\u884c"),"\uff1a\u9700\u7b49\u5f85\u4e0a\u4e00\u6b21\u4efb\u52a1\u5b8c\u6210")),(0,i.kt)("h3",{id:"2691-sparetime-\u9759\u6001\u65b9\u5f0f\u6307\u5b9a"},"26.9.1 ",(0,i.kt)("inlineCode",{parentName:"h3"},"SpareTime")," \u9759\u6001\u65b9\u5f0f\u6307\u5b9a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{3,5}","{3,5}":!0},'SpareTime.Do(1000, (t, i) =>\n{\n Thread.Sleep(5000); // \u6a21\u62df\u6267\u884c\u8017\u65f6\u4efb\u52a1\n Console.WriteLine($"{t.WorkerName} -{t.Description} - {DateTime.Now:yyyy-MM-dd HH:mm:ss} - {i}");\n}, "serialName", "\u6a21\u62df\u4e32\u884c\u4efb\u52a1", executeType: SpareTimeExecuteTypes.Serial);\n')),(0,i.kt)("h3",{id:"2692-isparetimeworker-\u65b9\u5f0f"},"26.9.2 ",(0,i.kt)("inlineCode",{parentName:"h3"},"ISpareTimeWorker")," \u65b9\u5f0f"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1}","{1}":!0},'[SpareTime(1000, "jobName1", StartNow = true, ExecuteType = SpareTimeExecuteTypes.Serial)]\npublic void DoSomething1(SpareTimer timer, long count)\n{\n Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));\n Console.WriteLine($"\u4e00\u5171\u6267\u884c\u4e86\uff1a{count} \u6b21");\n}\n')),(0,i.kt)("h2",{id:"2610-\u4efb\u52a1\u5f02\u5e38\u5904\u7406"},"26.10 \u4efb\u52a1\u5f02\u5e38\u5904\u7406"),(0,i.kt)("p",null,"\u6709\u4e9b\u65f6\u5019\u6211\u4eec\u53ef\u80fd\u5728\u6267\u884c\u4efb\u52a1\u8fc7\u7a0b\u4e2d\u51fa\u73b0\u5f02\u5e38\uff0c",(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u4e5f\u63d0\u4f9b\u4e86\u5c5e\u6027\u5224\u65ad\u662f\u5426\u6709\u5f02\u5e38\u548c\u5f02\u5e38\u4fe1\u606f\uff0c\u65b9\u4fbf\u8bb0\u5f55\u5230\u65e5\u5fd7\u4e2d\uff0c\u5982\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{4-7,11}","{4-7,11}":!0},'SpareTime.Do(1000, (t, c) =>\n{\n // \u5224\u65ad\u662f\u5426\u6709\u5f02\u5e38\n if (t.Exception.Any())\n {\n Console.WriteLine(t.Exception.Values.LastOrDefault()?.Message);\n }\n // \u6267\u884c\u7b2c\u4e09\u6b21\u629b\u5f02\u5e38\n if (c > 2)\n {\n throw Oops.Oh("\u629b\u5f02\u5e38" + c);\n }\n else\n {\n Console.WriteLine($"{t.WorkerName} -{t.Description} - {DateTime.Now:yyyy-MM-dd HH:mm:ss} - {c}");\n }\n}, "exceptionJob");\n')),(0,i.kt)("div",{className:"admonition admonition-warning alert alert--danger"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"}))),"\u7279\u522b\u8bf4\u660e")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u5982\u679c\u4e00\u4e2a\u4efb\u52a1\u9519\u8bef\u6b21\u6570\u8fbe ",(0,i.kt)("inlineCode",{parentName:"p"},"10\u6b21")," \u5219\u4efb\u52a1\u5c06\u81ea\u52a8\u505c\u6b62\uff0c\u5e76\u6807\u8bb0\u4efb\u52a1\u72b6\u6001\u4e3a ",(0,i.kt)("inlineCode",{parentName:"p"},"Failed"),"\u3002"))),(0,i.kt)("h2",{id:"2611-\u5982\u4f55\u5728\u4efb\u52a1\u4e2d\u89e3\u6790\u5bf9\u8c61"},"26.11 \u5982\u4f55\u5728\u4efb\u52a1\u4e2d\u89e3\u6790\u5bf9\u8c61"),(0,i.kt)("p",null,"\u6709\u4e9b\u65f6\u5019\u6211\u4eec\u9700\u8981\u5728\u4efb\u52a1\u4e2d\u8fdb\u884c\u6570\u636e\u5e93\u64cd\u4f5c\u6216\u89e3\u6790\u670d\u52a1\uff0c\u8fd9\u65f6\u5019\u6211\u4eec\u53ea\u9700\u8981\u521b\u5efa\u4e00\u4e2a\u65b0\u7684\u4f5c\u7528\u57df\u5373\u53ef"),(0,i.kt)("h3",{id:"26111-sparetime-\u9759\u6001\u7c7b\u4e2d"},"26.11.1 ",(0,i.kt)("inlineCode",{parentName:"h3"},"SpareTime")," \u9759\u6001\u7c7b\u4e2d"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{2}","{2}":!0},'SpareTime.Do(1000, (timer,count) => {\n Scoped.Create((_, scope) =>\n {\n var services = scope.ServiceProvider;\n\n // \u83b7\u53d6\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\n var dbContext = Db.GetDbContext(services);\n\n // \u83b7\u53d6\u4ed3\u50a8\n var respository = Db.GetRepository(services);\n\n // \u89e3\u6790\u5176\u4ed6\u670d\u52a1\n var otherService = services.GetService();\n var otherService2 = App.GetService(services);\n });\n}, "\u4efb\u52a1\u6807\u8bc6");\n')),(0,i.kt)("h3",{id:"26112-isparetimeworker-\u65b9\u5f0f"},"26.11.2 ",(0,i.kt)("inlineCode",{parentName:"h3"},"ISpareTimeWorker")," \u65b9\u5f0f"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{4}","{4}":!0},'[SpareTime(1000, "jobName1", StartNow = true, ExecuteType = SpareTimeExecuteTypes.Serial)]\npublic void DoSomething1(SpareTimer timer, long count)\n{\n Scoped.Create((_, scope) =>\n {\n var services = scope.ServiceProvider;\n\n // \u83b7\u53d6\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\n var dbContext = Db.GetDbContext(services);\n\n // \u83b7\u53d6\u4ed3\u50a8\n var respository = Db.GetRepository(services);\n\n // \u89e3\u6790\u5176\u4ed6\u670d\u52a1\n var otherService = services.GetService();\n var otherService2 = App.GetService(services);\n });\n}\n')),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u6570\u636e\u5e93\u64cd\u4f5c\u6ce8\u610f")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u5982\u679c\u4f5c\u7528\u57df\u4e2d\u5bf9",(0,i.kt)("strong",{parentName:"p"},"\u6570\u636e\u5e93\u6709\u4efb\u4f55\u53d8\u66f4\u64cd\u4f5c"),"\uff0c\u9700\u624b\u52a8\u8c03\u7528 ",(0,i.kt)("inlineCode",{parentName:"p"},"SaveChanges")," \u6216\u5e26 ",(0,i.kt)("inlineCode",{parentName:"p"},"Now")," \u7ed3\u5c3e\u7684\u65b9\u6cd5\u3002\u4e5f\u53ef\u4ee5\u4f7f\u7528 ",(0,i.kt)("inlineCode",{parentName:"p"},"Scoped.CreateUow(handler)")," \u4ee3\u66ff\u3002"))),(0,i.kt)("h2",{id:"2612-\u5728-backgroundservice-\u4e2d\u4f7f\u7528"},"26.12 \u5728 ",(0,i.kt)("inlineCode",{parentName:"h2"},"BackgroundService")," \u4e2d\u4f7f\u7528"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"BackgroundService")," \u662f ",(0,i.kt)("inlineCode",{parentName:"p"},".NET Core 3")," \u4e4b\u540e\u63d0\u4f9b\u7684\u8f7b\u91cf\u7ea7\u540e\u53f0\u4efb\u52a1\uff0c\u540c\u65f6\u53ef\u4ee5\u53d1\u5e03\u5230 ",(0,i.kt)("inlineCode",{parentName:"p"},"Windows")," \u670d\u52a1\u548c ",(0,i.kt)("inlineCode",{parentName:"p"},"Linux")," \u5b88\u62a4\u8fdb\u7a0b\u4e2d\u3002"),(0,i.kt)("h3",{id:"26121-\u95f4\u9694\u6267\u884c\u65b9\u5f0f"},"26.12.1 \u95f4\u9694\u6267\u884c\u65b9\u5f0f"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{23-27}","{23-27}":!0},'using Furion.TaskScheduler;\nusing Microsoft.Extensions.Hosting;\nusing Microsoft.Extensions.Logging;\nusing System;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace WorkerService1\n{\n public class Worker : BackgroundService\n {\n private readonly ILogger _logger;\n\n public Worker(ILogger logger)\n {\n _logger = logger;\n }\n\n protected override async Task ExecuteAsync(CancellationToken stoppingToken)\n {\n while (!stoppingToken.IsCancellationRequested)\n {\n // \u95f4\u9694\u6267\u884c\u4efb\u52a1\n await SpareTime.DoAsync(1000, () =>\n {\n _logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now);\n }, stoppingToken);\n }\n }\n }\n}\n')),(0,i.kt)("h3",{id:"26122-cron-\u8868\u8fbe\u5f0f\u6267\u884c\u65b9\u5f0f"},"26.12.2 ",(0,i.kt)("inlineCode",{parentName:"h3"},"Cron")," \u8868\u8fbe\u5f0f\u6267\u884c\u65b9\u5f0f"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{23-27}","{23-27}":!0},'using Furion.TaskScheduler;\nusing Microsoft.Extensions.Hosting;\nusing Microsoft.Extensions.Logging;\nusing System;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace WorkerService1\n{\n public class Worker : BackgroundService\n {\n private readonly ILogger _logger;\n\n public Worker(ILogger logger)\n {\n _logger = logger;\n }\n\n protected override async Task ExecuteAsync(CancellationToken stoppingToken)\n {\n while (!stoppingToken.IsCancellationRequested)\n {\n // \u6267\u884c Cron \u8868\u8fbe\u5f0f\u4efb\u52a1\n await SpareTime.DoAsync("*/5 * * * * *", () =>\n {\n _logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now);\n }, stoppingToken, CronFormat.IncludeSeconds);\n }\n }\n }\n}\n')),(0,i.kt)("h2",{id:"2613-\u5b9a\u65f6\u4efb\u52a1\u76d1\u542c\u5668"},"26.13 \u5b9a\u65f6\u4efb\u52a1\u76d1\u542c\u5668"),(0,i.kt)("p",null,"\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion v2.18+")," \u7248\u672c\u4e4b\u540e\u65b0\u589e\u4e86\u5b9a\u65f6\u4efb\u52a1\u76d1\u542c\u5668 ",(0,i.kt)("inlineCode",{parentName:"p"},"ISpareTimeListener"),"\uff0c\u901a\u8fc7\u76d1\u542c\u5668\u53ef\u4ee5\u5b9e\u73b0\u6240\u6709\u5b9a\u65f6\u4efb\u52a1\u7684\u72b6\u6001\u3002\u5982\uff0c\u521b\u5efa\u4e00\u4e2a ",(0,i.kt)("inlineCode",{parentName:"p"},"\u5355\u4f8b")," \u7684\u76d1\u542c\u5668 ",(0,i.kt)("inlineCode",{parentName:"p"},"SpareTimeListener"),"\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{8,15}","{8,15}":!0},'using Furion.DependencyInjection;\nusing Furion.TaskScheduler;\nusing System;\nusing System.Threading.Tasks;\n\nnamespace Furion.Core\n{\n public class SpareTimeListener : ISpareTimeListener, ISingleton\n {\n /// \n /// \u76d1\u542c\u6240\u6709\u4efb\u52a1\n /// \n /// \n /// \n public Task OnListener(SpareTimerExecuter executer)\n {\n switch (executer.Status)\n {\n // \u6267\u884c\u5f00\u59cb\u901a\u77e5\n case 0:\n Console.WriteLine($"{executer.Timer.WorkerName} \u4efb\u52a1\u5f00\u59cb\u901a\u77e5");\n break;\n // \u4efb\u52a1\u6267\u884c\u4e4b\u524d\u901a\u77e5\n case 1:\n Console.WriteLine($"{executer.Timer.WorkerName} \u6267\u884c\u4e4b\u524d\u901a\u77e5");\n break;\n // \u6267\u884c\u6210\u529f\u901a\u77e5\n case 2:\n Console.WriteLine($"{executer.Timer.WorkerName} \u6267\u884c\u6210\u529f\u901a\u77e5");\n break;\n // \u4efb\u52a1\u6267\u884c\u5931\u8d25\u901a\u77e5\n case 3:\n Console.WriteLine($"{executer.Timer.WorkerName} \u6267\u884c\u5931\u8d25\u901a\u77e5");\n break;\n // \u4efb\u52a1\u6267\u884c\u505c\u6b62\u901a\u77e5\n case -1:\n Console.WriteLine($"{executer.Timer.WorkerName} \u6267\u884c\u505c\u6b62\u901a\u77e5");\n break;\n // \u4efb\u52a1\u6267\u884c\u53d6\u6d88\u901a\u77e5\n case -2:\n Console.WriteLine($"{executer.Timer.WorkerName} \u6267\u884c\u53d6\u6d88\u901a\u77e5");\n break;\n default:\n break;\n }\n\n return Task.CompletedTask;\n }\n }\n}\n')),(0,i.kt)("h3",{id:"26131-sparetimerexecuter-\u5c5e\u6027\u8bf4\u660e"},"26.13.1 ",(0,i.kt)("inlineCode",{parentName:"h3"},"SpareTimerExecuter")," \u5c5e\u6027\u8bf4\u660e"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"Timer"),"\uff1a",(0,i.kt)("inlineCode",{parentName:"li"},"SpareTimer")," \u5b9a\u65f6\u5668\u5bf9\u8c61"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"Status"),"\uff1a\u76d1\u542c\u72b6\u6001",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"0"),"\uff1a\u4efb\u52a1\u5f00\u59cb"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"1"),"\uff1a\u6267\u884c\u4e4b\u524d"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"2"),"\uff1a\u6267\u884c\u6210\u529f"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"3"),"\uff1a\u6267\u884c\u5931\u8d25"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"-1"),"\uff1a\u4efb\u52a1\u505c\u6b62"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"-2"),"\uff1a\u4efb\u52a1\u53d6\u6d88")))),(0,i.kt)("h2",{id:"2614-iis-\u90e8\u7f72\u56de\u6536\u8bbe\u7f6e"},"26.14 IIS \u90e8\u7f72\u56de\u6536\u8bbe\u7f6e"),(0,i.kt)("p",null,"\u5982\u679c\u5728\u9879\u76ee\u4e2d\u4f7f\u7528\u4e86\u5b9a\u65f6\u4efb\u52a1\u4e14\u90e8\u7f72\u5230 ",(0,i.kt)("inlineCode",{parentName:"p"},"IIS")," \u4e2d\uff0c\u90a3\u4e48\u9700\u8981\u8bbe\u7f6e ",(0,i.kt)("inlineCode",{parentName:"p"},"IIS")," \u7981\u6b62\u56de\u6536\uff0c\u5982\uff1a"),(0,i.kt)("img",{src:(0,l.Z)("img/iishuishou.jpg")}),(0,i.kt)("div",{className:"admonition admonition-warning alert alert--danger"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"}))),"\u90e8\u7f72\u5efa\u8bae")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u5efa\u8bae\u5b9a\u65f6\u4efb\u52a1\u91c7\u7528 ",(0,i.kt)("inlineCode",{parentName:"p"},"Worker Service")," \u72ec\u7acb\u90e8\u7f72\u65b9\u5f0f\uff0c\u4e0d\u5e94\u4f9d\u6258 ",(0,i.kt)("inlineCode",{parentName:"p"},"Web")," \u9879\u76ee\u8fdb\u7a0b\u4e2d\u3002",(0,i.kt)("a",{parentName:"p",href:"/furion/docs/process-service"},"\u67e5\u770b\u3010 Worker Service\u3011\u7ae0\u8282")))),(0,i.kt)("h2",{id:"2615-\u53cd\u9988\u4e0e\u5efa\u8bae"},"26.15 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,i.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/26682ccc.24132d2d.js b/handbook/build/assets/js/26682ccc.24132d2d.js new file mode 100644 index 00000000000..9a0b56c459d --- /dev/null +++ b/handbook/build/assets/js/26682ccc.24132d2d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[4821],{3905:function(n,e,r){r.d(e,{Zo:function(){return c},kt:function(){return y}});var t=r(7294);function a(n,e,r){return e in n?Object.defineProperty(n,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):n[e]=r,n}function i(n,e){var r=Object.keys(n);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(n);e&&(t=t.filter((function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.push.apply(r,t)}return r}function o(n){for(var e=1;e=0||(a[r]=n[r]);return a}(n,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(n);for(t=0;t=0||Object.prototype.propertyIsEnumerable.call(n,r)&&(a[r]=n[r])}return a}var u=t.createContext({}),p=function(n){var e=t.useContext(u),r=e;return n&&(r="function"==typeof n?n(e):o(o({},e),n)),r},c=function(n){var e=p(n.components);return t.createElement(u.Provider,{value:e},n.children)},l={inlineCode:"code",wrapper:function(n){var e=n.children;return t.createElement(t.Fragment,{},e)}},d=t.forwardRef((function(n,e){var r=n.components,a=n.mdxType,i=n.originalType,u=n.parentName,c=s(n,["components","mdxType","originalType","parentName"]),d=p(r),y=a,m=d["".concat(u,".").concat(y)]||d[y]||l[y]||i;return r?t.createElement(m,o(o({ref:e},c),{},{components:r})):t.createElement(m,o({ref:e},c))}));function y(n,e){var r=arguments,a=e&&e.mdxType;if("string"==typeof n||a){var i=r.length,o=new Array(i);o[0]=d;var s={};for(var u in e)hasOwnProperty.call(e,u)&&(s[u]=e[u]);s.originalType=n,s.mdxType="string"==typeof n?n:a,o[1]=s;for(var p=2;pCase When",id:"91069-case-when",children:[]}]},{value:"9.10.7 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"9107-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],l={toc:c};function d(n){var e=n.components,r=(0,a.Z)(n,o);return(0,i.kt)("wrapper",(0,t.Z)({},l,r,{components:e,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"9101-\u6839\u636e\u4e3b\u952e\u67e5\u8be2\u4e00\u6761"},"9.10.1 \u6839\u636e\u4e3b\u952e\u67e5\u8be2\u4e00\u6761"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"// ==== \u540c\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar person = repository.Find(1);\n\n// \u793a\u4f8b\u4e8c\nvar person = repository.FindOrDefault(1);\n\n// \u793a\u4f8b\u4e09\nvar person = repository.Entities.Find(1);\n\n// ==== \u5f02\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar person = await repository.FindAsync(1);\n\n// \u793a\u4f8b\u4e8c\nvar person = await repository.FindOrDefaultAsync(1);\n\n// \u793a\u4f8b\u4e09\nvar person = await repository.Entities.FindAsync(1);\n\n")),(0,i.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u5c0f\u63d0\u793a")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u53ef\u4ee5\u652f\u6301\u591a\u4e2a\u952e\u67e5\u8be2\uff0c\u5982\u4e3b\u952e\u3001\u8054\u5408\u952e\u3002",(0,i.kt)("inlineCode",{parentName:"p"},'repository.Find(1, "\u767e\u5c0f\u50e7")'),";"))),(0,i.kt)("h2",{id:"9102-\u6839\u636e\u6761\u4ef6\u67e5\u8be2\u4e00\u6761"},"9.10.2 \u6839\u636e\u6761\u4ef6\u67e5\u8be2\u4e00\u6761"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// ==== \u540c\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar person = repository.Single(u => u.Name == "Furion");\n\n// \u793a\u4f8b\u4e8c\nvar person = repository.SingleOrDefault(u => u.Name == "Furion");\n\n// \u793a\u4f8b\u4e09\nvar person = repository.First(u => u.Name == "Furion");\n\n// \u793a\u4f8b\u56db\nvar person = repository.FirstOrDefault(u => u.Name == "Furion");\n\n// \u793a\u4f8b\u4e94\nvar person = repository.Last(u => u.Name == "Furion");\n\n// \u793a\u4f8b\u516d\nvar person = repository.LastOrDefault(u => u.Name == "Furion");\n\n// \u793a\u4f8b\u4e03\nvar person = repository.Entities.Single(u => u.Name == "Furion");\n\n// \u793a\u4f8b\u516b\nvar person = repository.Entities.First(u => u.Name == "Furion");\n\n// \u793a\u4f8b\u4e5d\nvar person = repository.Entities.FirstOrDefault(u => u.Name == "Furion");\n\n// \u793a\u4f8b\u5341\nvar person = repository.Entities.Last(u => u.Name == "Furion");\n\n// \u793a\u4f8b\u5341\u4e00\nvar person = repository.Entities.LastOrDefault(u => u.Name == "Furion");\n\n// ==== \u5f02\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar person = await repository.SingleAsync(u => u.Name == "Furion");\n\n// \u793a\u4f8b\u4e8c\nvar person = await repository.SingleOrDefaultAsync(u => u.Name == "Furion");\n\n// \u793a\u4f8b\u4e09\nvar person = await repository.FirstAsync(u => u.Name == "Furion");\n\n// \u793a\u4f8b\u56db\nvar person = await repository.FirstOrDefaultAsync(u => u.Name == "Furion");\n\n// \u793a\u4f8b\u4e94\nvar person = await repository.LastAsync(u => u.Name == "Furion");\n\n// \u793a\u4f8b\u516d\nvar person = await repository.LastOrDefaultAsync(u => u.Name == "Furion");\n\n// \u793a\u4f8b\u4e03\nvar person = await repository.Entities.SingleAsync(u => u.Name == "Furion");\n\n// \u793a\u4f8b\u516b\nvar person = await repository.Entities.FirstAsync(u => u.Name == "Furion");\n\n// \u793a\u4f8b\u4e5d\nvar person = await repository.Entities.FirstOrDefaultAsync(u => u.Name == "Furion");\n\n// \u793a\u4f8b\u5341\nvar person = await repository.Entities.LastAsync(u => u.Name == "Furion");\n\n// \u793a\u4f8b\u5341\u4e00\nvar person = await repository.Entities.LastOrDefaultAsync(u => u.Name == "Furion");\n')),(0,i.kt)("h2",{id:"9103-\u67e5\u8be2\u6240\u6709\u6570\u636e"},"9.10.3 \u67e5\u8be2\u6240\u6709\u6570\u636e"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"// ==== \u540c\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar persons = repository.Entities;\n\n// \u793a\u4f8b\u4e8c\nvar persons = repository.DetachedEntities;\n\n// \u793a\u4f8b\u4e09\nvar persons = repository.AsQueryable();\n\n// \u793a\u4f8b\u56db\nvar persons = repository.AsEnumerable();\n\n// \u793a\u4f8b\u4e94\nvar persons = await repository.AsQueryable().ToListAsync();\n")),(0,i.kt)("h2",{id:"9104-\u6839\u636e\u6761\u4ef6\u67e5\u8be2\u6240\u6709\u6570\u636e"},"9.10.4 \u6839\u636e\u6761\u4ef6\u67e5\u8be2\u6240\u6709\u6570\u636e"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// \u793a\u4f8b\u4e00\nvar persons = repository.Where(u => u.Id > 10);\n\n// \u793a\u4f8b\u4e8c\nvar persons = repository.Where(u => u.Id > 10 && u.Name.Equals("Furion"));\n\n// \u793a\u4f8b\u4e09 (\u591a\u4e2a where \u91cc\u662f "\u5e76\u4e14"\uff0cId>10 and Name == "Furion")\nvar persons = repository.Where(u => u.Id > 10).Where(u => u.Name.Equals("Furion"));\n\n// \u793a\u4f8b\u56db (\u5224\u65ad name \u662f\u5426\u6709\u503c\uff0c\u5982\u679c name \u662f\u7a7a\u7684\u5219\u4e0d\u4f1a\u6267\u884c u => u.Id > 10 && u.Name.Equals("Furion")\uff0c\u5982\u679c name \u6709\u503c\u5c31\u4f1a\u6267\u884c u => u.Id > 10 && u.Name.Equals("Furion"))\nvar persons = repository.Where(!string.IsNullOrEmpty(name), u => u.Id > 10 && u.Name.Equals("Furion"));\n\n// \u793a\u4f8b\u4e94\nvar persons = repository.Where(!string.IsNullOrEmpty(name), u => u.Id > 10)\n .Where(age > 18, u => u.Name.Contains("\u767e\u5c0f\u50e7"))\n .Where(u => u.Age > 18);\n\n// \u793a\u4f8b\u516d (\u5728\u4e00\u4e2a where \u91cc\u7528\u9017\u53f7\u5206\u9694\u662f "\u6216\u8005"\uff0cName=="Furion" or Name == "\u767e\u5c0f\u50e7" or Name == "MonkSoul")\nvar persons = repository.Where(u => u.Name == "Furion",\n u => u.Name == "\u767e\u5c0f\u50e7",\n u => u.Name == "MonkSoul");\n\n// \u793a\u4f8b\u4e03\nvar persons = repository.Where(u => u.Id > 10).Where(u => u.Name.Equals("Furion"))\n .Where(age > 18, u => u.Name.Contains("\u767e\u5c0f\u50e7"))\n .Where(u => u.Name == "Furion",\n u => u.Name == "\u767e\u5c0f\u50e7",\n u => u.Name == "MonkSoul");\n\n// \u793a\u4f8b\u516b\nvar persons = repository.Where((age > 18, u => u.Name == "Furion"),\n (!string.IsNullOrEmpty(name), u => u.Id > 10));\n\n// \u793a\u4f8b\u4e5d\nvar persons = repository.Where(u => u.Id > 10).Where(u => u.Name.Equals("Furion"))\n .Where(age > 18, u => u.Name.Contains("\u767e\u5c0f\u50e7"))\n .Where(u => u.Name == "Furion",\n u => u.Name == "\u767e\u5c0f\u50e7",\n u => u.Name == "MonkSoul")\n .Where((age > 18, u => u.Name == "Furion"),\n (!string.IsNullOrEmpty(name), u => u.Id > 10));\n\n// \u793a\u4f8b\u5341\nvar persons = repository.Entities.Where(u => u.Id > 10)\n .Where(age > 18, u => u.Name.Contains("\u767e\u5c0f\u50e7"));\n\n// \u793a\u4f8b\u5341\u4e00\nvar persons = repository.DetachedEntities.Where(u => u.Id > 20);\n\n// \u793a\u4f8b\u5341\u4e8c\nvar persons = repository.AsQueryable(u => u.Id > 20).Where(u => u.Name == "Furion");\n')),(0,i.kt)("h2",{id:"9105-\u5206\u9875\u67e5\u8be2"},"9.10.5 \u5206\u9875\u67e5\u8be2"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"// ==== \u540c\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar persons = repository.Where(u => u.Id > 10).ToPagedList();\n\n// \u793a\u4f8b\u4e8c\nvar persons = repository.Where(u => u.Id > 10).ToPagedList(1, 10);\n\n// ==== \u5f02\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar persons = await repository.Where(u => u.Id > 10).ToPagedListAsync();\n\n// \u793a\u4f8b\u4e8c\nvar persons = await repository.Where(u => u.Id > 10).ToPagedListAsync(1, 10);\n")),(0,i.kt)("h2",{id:"9106-\u5176\u4ed6\u67e5\u8be2"},"9.10.6 \u5176\u4ed6\u67e5\u8be2"),(0,i.kt)("h3",{id:"91061-\u67e5\u770b\u8bb0\u5f55\u662f\u5426\u5b58\u5728"},"9.10.6.1 \u67e5\u770b\u8bb0\u5f55\u662f\u5426\u5b58\u5728"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"// ==== \u540c\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar isExists = repository.Any();\n\n// \u793a\u4f8b\u4e8c\nvar isExists = repository.Any(u => u.Id > 10);\n\n// \u793a\u4f8b\u4e09\nvar isExists = repository.Entities.Any();\n\n// \u793a\u4f8b\u56db\nvar isExists = repository.DetachedEntities.Any(u => u.Id > 10);\n\n// \u793a\u4f8b\u4e94\nvar isExists = repository.Where(u => u.Id > 10).Any();\n\n// ==== \u5f02\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar isExists = await repository.AnyAsync();\n\n// \u793a\u4f8b\u4e8c\nvar isExists = await repository.AnyAsync(u => u.Id > 10);\n\n// \u793a\u4f8b\u4e09\nvar isExists = await repository.Entities.AnyAsync();\n\n// \u793a\u4f8b\u56db\nvar isExists = await repository.DetachedEntities.AnyAsync(u => u.Id > 10);\n\n// \u793a\u4f8b\u4e94\nvar isExists = await repository.Where(u => u.Id > 10).AnyAsync();\n")),(0,i.kt)("h3",{id:"91062-\u67e5\u8be2\u8bb0\u5f55\u6570"},"9.10.6.2 \u67e5\u8be2\u8bb0\u5f55\u6570"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"// ==== \u540c\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar count = repository.Count();\n\n// \u793a\u4f8b\u4e8c\nvar count = repository.Count(u => u.Id > 10);\n\n// \u793a\u4f8b\u4e09\nvar count = repository.Entities.Count(u => u.Id > 10);\n\n// \u793a\u4f8b\u56db\nvar count = repository.Entities.DetachedEntities.Count();\n\n// \u793a\u4f8b\u4e94\nvar count = repository.Where(u => u.Id > 10).Count();\n\n// ==== \u5f02\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar count = await repository.CountAsync();\n\n// \u793a\u4f8b\u4e8c\nvar count = await repository.CountAsync(u => u.Id > 10);\n\n// \u793a\u4f8b\u4e09\nvar count = await repository.Entities.CountAsync(u => u.Id > 10);\n\n// \u793a\u4f8b\u56db\nvar count = await repository.Entities.DetachedEntities.CountAsync();\n\n// \u793a\u4f8b\u4e94\nvar count = await repository.Where(u => u.Id > 10).CountAsync();\n")),(0,i.kt)("h3",{id:"91063-\u67e5\u8be2\u6700\u5927\u503c"},"9.10.6.3 \u67e5\u8be2\u6700\u5927\u503c"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"// ==== \u540c\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar entity = repository.Max();\n\n// \u793a\u4f8b\u4e8c\nvar value = repository.Max(u => u.Id);\n\n// \u793a\u4f8b\u4e09\nvar entity = repository.Entities.Max();\n\n// \u793a\u4f8b\u56db\nvar value = repository.Entities.DetachedEntities.Max(u => u.Age);\n\n// \u793a\u4f8b\u4e94\nvar value = repository.Where(u => u.Id > 10).Max(u => u.Age);\n\n// ==== \u5f02\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar entity = await repository.MaxAsync();\n\n// \u793a\u4f8b\u4e8c\nvar value = await repository.MaxAsync(u => u.Id);\n\n// \u793a\u4f8b\u4e09\nvar entity = await repository.Entities.MaxAsync();\n\n// \u793a\u4f8b\u56db\nvar value = await repository.Entities.DetachedEntities.MaxAsync(u => u.Age);\n\n// \u793a\u4f8b\u4e94\nvar value = await repository.Where(u => u.Id > 10).MaxAsync(u => u.Age);\n")),(0,i.kt)("h3",{id:"91064-\u67e5\u8be2\u6700\u5c0f\u503c"},"9.10.6.4 \u67e5\u8be2\u6700\u5c0f\u503c"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"// ==== \u540c\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar entity = repository.Min();\n\n// \u793a\u4f8b\u4e8c\nvar value = repository.Min(u => u.Id);\n\n// \u793a\u4f8b\u4e09\nvar entity = repository.Entities.Min();\n\n// \u793a\u4f8b\u56db\nvar value = repository.Entities.DetachedEntities.Min(u => u.Age);\n\n// \u793a\u4f8b\u4e94\nvar value = repository.Where(u => u.Id > 10).Min(u => u.Age);\n\n// ==== \u5f02\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar entity = await repository.MinAsync();\n\n// \u793a\u4f8b\u4e8c\nvar value = await repository.MinAsync(u => u.Id);\n\n// \u793a\u4f8b\u4e09\nvar entity = await repository.Entities.MinAsync();\n\n// \u793a\u4f8b\u56db\nvar value = await repository.Entities.DetachedEntities.MinAsync(u => u.Age);\n\n// \u793a\u4f8b\u4e94\nvar value = await repository.Where(u => u.Id > 10).MinAsync(u => u.Age);\n")),(0,i.kt)("h3",{id:"91065-\u6c42\u548c\u67e5\u8be2"},"9.10.6.5 \u6c42\u548c\u67e5\u8be2"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"// ==== \u540c\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar sum = repository.Entities.Sum(u => u.Cost);\n\n// \u793a\u4f8b\u4e8c\nvar sum = repository.AsQueryable().Sum(u => u.Cost);\n\n// \u793a\u4f8b\u4e09\nvar sum = repository.DetachedEntities.Sum(u => u.Cost);\n\n// ==== \u5f02\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar sum = await repository.Entities.SumAsync(u => u.Cost);\n\n// \u793a\u4f8b\u4e8c\nvar sum = await repository.AsQueryable().SumAsync(u => u.Cost);\n\n// \u793a\u4f8b\u4e09\nvar sum = await repository.DetachedEntities.SumAsync(u => u.Cost);\n")),(0,i.kt)("h3",{id:"91066-\u6c42\u5e73\u5747\u503c\u67e5\u8be2"},"9.10.6.6 \u6c42\u5e73\u5747\u503c\u67e5\u8be2"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"// ==== \u540c\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar sum = repository.Entities.Average(u => u.Cost);\n\n// \u793a\u4f8b\u4e8c\nvar sum = repository.AsQueryable().Average(u => u.Cost);\n\n// \u793a\u4f8b\u4e09\nvar sum = repository.DetachedEntities.Average(u => u.Cost);\n\n// ==== \u5f02\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar sum = await repository.Entities.AverageAsync(u => u.Cost);\n\n// \u793a\u4f8b\u4e8c\nvar sum = await repository.AsQueryable().AverageAsync(u => u.Cost);\n\n// \u793a\u4f8b\u4e09\nvar sum = await repository.DetachedEntities.AverageAsync(u => u.Cost);\n")),(0,i.kt)("h3",{id:"91067-\u65f6\u95f4\u67e5\u8be2"},"9.10.6.7 \u65f6\u95f4\u67e5\u8be2"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'var starDate = DateTime.Parse("2020-09-10");\nvar endDate = DateTime.Parse("2020-09-10");\nvar query = repository.Where(u => u.CreatedDt >= starDate && u.CreatedDt <= endDate);\n')),(0,i.kt)("h3",{id:"91068-\u6a21\u7cca\u67e5\u8be2"},"9.10.6.8 \u6a21\u7cca\u67e5\u8be2"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// \u793a\u4f8b\u4e00\nrepository.Where(u => u.Name.StartWith("Furion"));\n\n// \u793a\u4f8b\u4e8c\n_testRepository.Where(u => u.Name.EndWith("Furion"));\n\n// \u793a\u4f8b\u4e09\n_testRepository.Where(u => u.Name.Contains("Furion"));\n')),(0,i.kt)("h3",{id:"91069-case-when"},"9.10.6.9 ",(0,i.kt)("inlineCode",{parentName:"h3"},"Case When")),(0,i.kt)("p",null,"\u6570\u636e\u5e93\u4e2d\u7684 ",(0,i.kt)("inlineCode",{parentName:"p"},"Case When")," \u5b9e\u9645\u4e0a\u5bf9\u5e94\u7684\u662f\u6211\u4eec\u7a0b\u5e8f\u4e2d\u7684 ",(0,i.kt)("inlineCode",{parentName:"p"},"\u4e09\u5143\u8868\u8fbe\u5f0f")," \uff0c\u4e5f\u5c31\u662f\u4f7f\u7528 ",(0,i.kt)("inlineCode",{parentName:"p"},"\u4e09\u5143\u8868\u8fbe\u5f0f")," \u5373\u53ef\u81ea\u52a8\u751f\u6210 ",(0,i.kt)("inlineCode",{parentName:"p"},"Case When")," \u8bed\u53e5\u3002"),(0,i.kt)("h2",{id:"9107-\u53cd\u9988\u4e0e\u5efa\u8bae"},"9.10.7 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,i.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/26682ccc.57dcb509.js b/handbook/build/assets/js/26682ccc.57dcb509.js deleted file mode 100644 index 5a72a2599d6..00000000000 --- a/handbook/build/assets/js/26682ccc.57dcb509.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[4821],{3905:function(n,e,r){r.d(e,{Zo:function(){return c},kt:function(){return y}});var t=r(7294);function a(n,e,r){return e in n?Object.defineProperty(n,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):n[e]=r,n}function i(n,e){var r=Object.keys(n);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(n);e&&(t=t.filter((function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.push.apply(r,t)}return r}function o(n){for(var e=1;e=0||(a[r]=n[r]);return a}(n,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(n);for(t=0;t=0||Object.prototype.propertyIsEnumerable.call(n,r)&&(a[r]=n[r])}return a}var u=t.createContext({}),p=function(n){var e=t.useContext(u),r=e;return n&&(r="function"==typeof n?n(e):o(o({},e),n)),r},c=function(n){var e=p(n.components);return t.createElement(u.Provider,{value:e},n.children)},l={inlineCode:"code",wrapper:function(n){var e=n.children;return t.createElement(t.Fragment,{},e)}},d=t.forwardRef((function(n,e){var r=n.components,a=n.mdxType,i=n.originalType,u=n.parentName,c=s(n,["components","mdxType","originalType","parentName"]),d=p(r),y=a,m=d["".concat(u,".").concat(y)]||d[y]||l[y]||i;return r?t.createElement(m,o(o({ref:e},c),{},{components:r})):t.createElement(m,o({ref:e},c))}));function y(n,e){var r=arguments,a=e&&e.mdxType;if("string"==typeof n||a){var i=r.length,o=new Array(i);o[0]=d;var s={};for(var u in e)hasOwnProperty.call(e,u)&&(s[u]=e[u]);s.originalType=n,s.mdxType="string"==typeof n?n:a,o[1]=s;for(var p=2;pCase When",id:"91069-case-when",children:[]}]},{value:"9.10.7 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"9107-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],l={toc:c};function d(n){var e=n.components,r=(0,a.Z)(n,o);return(0,i.kt)("wrapper",(0,t.Z)({},l,r,{components:e,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"9101-\u6839\u636e\u4e3b\u952e\u67e5\u8be2\u4e00\u6761"},"9.10.1 \u6839\u636e\u4e3b\u952e\u67e5\u8be2\u4e00\u6761"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"// ==== \u540c\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar person = repository.Find(1);\n\n// \u793a\u4f8b\u4e8c\nvar person = repository.FindOrDefault(1);\n\n// \u793a\u4f8b\u4e09\nvar person = repository.Entities.Find(1);\n\n// ==== \u5f02\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar person = await repository.FindAsync(1);\n\n// \u793a\u4f8b\u4e8c\nvar person = await repository.FindOrDefaultAsync(1);\n\n// \u793a\u4f8b\u4e09\nvar person = await repository.Entities.FindAsync(1);\n\n")),(0,i.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u5c0f\u63d0\u793a")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u53ef\u4ee5\u652f\u6301\u591a\u4e2a\u952e\u67e5\u8be2\uff0c\u5982\u4e3b\u952e\u3001\u8054\u5408\u952e\u3002",(0,i.kt)("inlineCode",{parentName:"p"},'repository.Find(1, "\u767e\u5c0f\u50e7")'),";"))),(0,i.kt)("h2",{id:"9102-\u6839\u636e\u6761\u4ef6\u67e5\u8be2\u4e00\u6761"},"9.10.2 \u6839\u636e\u6761\u4ef6\u67e5\u8be2\u4e00\u6761"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// ==== \u540c\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar person = repository.Single(u => u.Name == "Furion");\n\n// \u793a\u4f8b\u4e8c\nvar person = repository.SingleOrDefault(u => u.Name == "Furion");\n\n// \u793a\u4f8b\u4e09\nvar person = repository.First(u => u.Name == "Furion");\n\n// \u793a\u4f8b\u56db\nvar person = repository.FirstOrDefault(u => u.Name == "Furion");\n\n// \u793a\u4f8b\u4e94\nvar person = repository.Last(u => u.Name == "Furion");\n\n// \u793a\u4f8b\u516d\nvar person = repository.LastOrDefault(u => u.Name == "Furion");\n\n// \u793a\u4f8b\u4e03\nvar person = repository.Entities.Single(u => u.Name == "Furion");\n\n// \u793a\u4f8b\u516b\nvar person = repository.Entities.First(u => u.Name == "Furion");\n\n// \u793a\u4f8b\u4e5d\nvar person = repository.Entities.FirstOrDefault(u => u.Name == "Furion");\n\n// \u793a\u4f8b\u5341\nvar person = repository.Entities.Last(u => u.Name == "Furion");\n\n// \u793a\u4f8b\u5341\u4e00\nvar person = repository.Entities.LastOrDefault(u => u.Name == "Furion");\n\n// ==== \u5f02\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar person = await repository.SingleAsync(u => u.Name == "Furion");\n\n// \u793a\u4f8b\u4e8c\nvar person = await repository.SingleOrDefaultAsync(u => u.Name == "Furion");\n\n// \u793a\u4f8b\u4e09\nvar person = await repository.FirstAsync(u => u.Name == "Furion");\n\n// \u793a\u4f8b\u56db\nvar person = await repository.FirstOrDefaultAsync(u => u.Name == "Furion");\n\n// \u793a\u4f8b\u4e94\nvar person = await repository.LastAsync(u => u.Name == "Furion");\n\n// \u793a\u4f8b\u516d\nvar person = await repository.LastOrDefaultAsync(u => u.Name == "Furion");\n\n// \u793a\u4f8b\u4e03\nvar person = await repository.Entities.SingleAsync(u => u.Name == "Furion");\n\n// \u793a\u4f8b\u516b\nvar person = await repository.Entities.FirstAsync(u => u.Name == "Furion");\n\n// \u793a\u4f8b\u4e5d\nvar person = await repository.Entities.FirstOrDefaultAsync(u => u.Name == "Furion");\n\n// \u793a\u4f8b\u5341\nvar person = await repository.Entities.LastAsync(u => u.Name == "Furion");\n\n// \u793a\u4f8b\u5341\u4e00\nvar person = await repository.Entities.LastOrDefaultAsync(u => u.Name == "Furion");\n')),(0,i.kt)("h2",{id:"9103-\u67e5\u8be2\u6240\u6709\u6570\u636e"},"9.10.3 \u67e5\u8be2\u6240\u6709\u6570\u636e"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"// ==== \u540c\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar persons = repository.Entities;\n\n// \u793a\u4f8b\u4e8c\nvar persons = repository.DetachedEntities;\n\n// \u793a\u4f8b\u4e09\nvar persons = repository.AsQueryable();\n\n// \u793a\u4f8b\u56db\nvar persons = repository.AsEnumerable();\n\n// \u793a\u4f8b\u4e94\nvar persons = await repository.AsQueryable().ToListAsync();\n")),(0,i.kt)("h2",{id:"9104-\u6839\u636e\u6761\u4ef6\u67e5\u8be2\u6240\u6709\u6570\u636e"},"9.10.4 \u6839\u636e\u6761\u4ef6\u67e5\u8be2\u6240\u6709\u6570\u636e"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// \u793a\u4f8b\u4e00\nvar persons = repository.Where(u => u.Id > 10);\n\n// \u793a\u4f8b\u4e8c\nvar persons = repository.Where(u => u.Id > 10 && u.Name.Equals("Furion"));\n\n// \u793a\u4f8b\u4e09 (\u591a\u4e2a where \u91cc\u662f "\u5e76\u4e14"\uff0cId>10 and Name == "Furion")\nvar persons = repository.Where(u => u.Id > 10).Where(u => u.Name.Equals("Furion"));\n\n// \u793a\u4f8b\u56db (\u5224\u65ad name \u662f\u5426\u6709\u503c\uff0c\u5982\u679c name \u662f\u7a7a\u7684\u5219\u4e0d\u4f1a\u6267\u884c u => u.Id > 10 && u.Name.Equals("Furion")\uff0c\u5982\u679c name \u6709\u503c\u5c31\u4f1a\u6267\u884c u => u.Id > 10 && u.Name.Equals("Furion"))\nvar persons = repository.Where(!string.IsNullOrEmpty(name), u => u.Id > 10 && u.Name.Equals("Furion"));\n\n// \u793a\u4f8b\u4e94\nvar persons = repository.Where(!string.IsNullOrEmpty(name), u => u.Id > 10)\n .Where(age > 18, u => u.Name.Contains("\u767e\u5c0f\u50e7"))\n .Where(u => u.Age > 18);\n\n// \u793a\u4f8b\u516d (\u5728\u4e00\u4e2a where \u91cc\u7528\u9017\u53f7\u5206\u9694\u662f "\u6216\u8005"\uff0cName=="Furion" or Name == "\u767e\u5c0f\u50e7" or Name == "MonkSoul")\nvar persons = repository.Where(u => u.Name == "Furion",\n u => u.Name == "\u767e\u5c0f\u50e7",\n u => u.Name == "MonkSoul");\n\n// \u793a\u4f8b\u4e03\nvar persons = repository.Where(u => u.Id > 10).Where(u => u.Name.Equals("Furion"))\n .Where(age > 18, u => u.Name.Contains("\u767e\u5c0f\u50e7"))\n .Where(u => u.Name == "Furion",\n u => u.Name == "\u767e\u5c0f\u50e7",\n u => u.Name == "MonkSoul");\n\n// \u793a\u4f8b\u516b\nvar persons = repository.Where((age > 18, u => u.Name == "Furion"),\n (!string.IsNullOrEmpty(name), u => u.Id > 10));\n\n// \u793a\u4f8b\u4e5d\nvar persons = repository.Where(u => u.Id > 10).Where(u => u.Name.Equals("Furion"))\n .Where(age > 18, u => u.Name.Contains("\u767e\u5c0f\u50e7"))\n .Where(u => u.Name == "Furion",\n u => u.Name == "\u767e\u5c0f\u50e7",\n u => u.Name == "MonkSoul")\n .Where((age > 18, u => u.Name == "Furion"),\n (!string.IsNullOrEmpty(name), u => u.Id > 10));\n\n// \u793a\u4f8b\u5341\nvar persons = repository.Entities.Where(u => u.Id > 10)\n .Where(age > 18, u => u.Name.Contains("\u767e\u5c0f\u50e7"));\n\n// \u793a\u4f8b\u5341\u4e00\nvar persons = repository.DetachedEntities.Where(u => u.Id > 20);\n\n// \u793a\u4f8b\u5341\u4e8c\nvar persons = repository.AsQueryable(u => u.Id > 20).Where(u => u.Name == "Furion");\n')),(0,i.kt)("h2",{id:"9105-\u5206\u9875\u67e5\u8be2"},"9.10.5 \u5206\u9875\u67e5\u8be2"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"// ==== \u540c\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar persons = repository.Where(u => u.Id > 10).ToPagedList();\n\n// \u793a\u4f8b\u4e8c\nvar persons = repository.Where(u => u.Id > 10).ToPagedList(1, 10);\n\n// ==== \u5f02\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar persons = await repository.Where(u => u.Id > 10).ToPagedListAsync();\n\n// \u793a\u4f8b\u4e8c\nvar persons = await repository.Where(u => u.Id > 10).ToPagedListAsync(1, 10);\n")),(0,i.kt)("h2",{id:"9106-\u5176\u4ed6\u67e5\u8be2"},"9.10.6 \u5176\u4ed6\u67e5\u8be2"),(0,i.kt)("h3",{id:"91061-\u67e5\u770b\u8bb0\u5f55\u662f\u5426\u5b58\u5728"},"9.10.6.1 \u67e5\u770b\u8bb0\u5f55\u662f\u5426\u5b58\u5728"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"// ==== \u540c\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar isExists = repository.Any();\n\n// \u793a\u4f8b\u4e8c\nvar isExists = repository.Any(u => u.Id > 10);\n\n// \u793a\u4f8b\u4e09\nvar isExists = repository.Entities.Any();\n\n// \u793a\u4f8b\u56db\nvar isExists = repository.DetachedEntities.Any(u => u.Id > 10);\n\n// \u793a\u4f8b\u4e94\nvar isExists = repository.Where(u => u.Id > 10).Any();\n\n// ==== \u5f02\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar isExists = await repository.AnyAsync();\n\n// \u793a\u4f8b\u4e8c\nvar isExists = await repository.AnyAsync(u => u.Id > 10);\n\n// \u793a\u4f8b\u4e09\nvar isExists = await repository.Entities.AnyAsync();\n\n// \u793a\u4f8b\u56db\nvar isExists = await repository.DetachedEntities.AnyAsync(u => u.Id > 10);\n\n// \u793a\u4f8b\u4e94\nvar isExists = await repository.Where(u => u.Id > 10).AnyAsync();\n")),(0,i.kt)("h3",{id:"91062-\u67e5\u8be2\u8bb0\u5f55\u6570"},"9.10.6.2 \u67e5\u8be2\u8bb0\u5f55\u6570"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"// ==== \u540c\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar count = repository.Count();\n\n// \u793a\u4f8b\u4e8c\nvar count = repository.Count(u => u.Id > 10);\n\n// \u793a\u4f8b\u4e09\nvar count = repository.Entities.Count(u => u.Id > 10);\n\n// \u793a\u4f8b\u56db\nvar count = repository.Entities.DetachedEntities.Count();\n\n// \u793a\u4f8b\u4e94\nvar count = repository.Where(u => u.Id > 10).Count();\n\n// ==== \u5f02\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar count = await repository.CountAsync();\n\n// \u793a\u4f8b\u4e8c\nvar count = await repository.CountAsync(u => u.Id > 10);\n\n// \u793a\u4f8b\u4e09\nvar count = await repository.Entities.CountAsync(u => u.Id > 10);\n\n// \u793a\u4f8b\u56db\nvar count = await repository.Entities.DetachedEntities.CountAsync();\n\n// \u793a\u4f8b\u4e94\nvar count = await repository.Where(u => u.Id > 10).CountAsync();\n")),(0,i.kt)("h3",{id:"91063-\u67e5\u8be2\u6700\u5927\u503c"},"9.10.6.3 \u67e5\u8be2\u6700\u5927\u503c"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"// ==== \u540c\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar entity = repository.Max();\n\n// \u793a\u4f8b\u4e8c\nvar value = repository.Max(u => u.Id);\n\n// \u793a\u4f8b\u4e09\nvar entity = repository.Entities.Max();\n\n// \u793a\u4f8b\u56db\nvar value = repository.Entities.DetachedEntities.Max(u => u.Age);\n\n// \u793a\u4f8b\u4e94\nvar value = repository.Where(u => u.Id > 10).Max(u => u.Age);\n\n// ==== \u5f02\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar entity = await repository.MaxAsync();\n\n// \u793a\u4f8b\u4e8c\nvar value = await repository.MaxAsync(u => u.Id);\n\n// \u793a\u4f8b\u4e09\nvar entity = await repository.Entities.MaxAsync();\n\n// \u793a\u4f8b\u56db\nvar value = await repository.Entities.DetachedEntities.MaxAsync(u => u.Age);\n\n// \u793a\u4f8b\u4e94\nvar value = await repository.Where(u => u.Id > 10).MaxAsync(u => u.Age);\n")),(0,i.kt)("h3",{id:"91064-\u67e5\u8be2\u6700\u5c0f\u503c"},"9.10.6.4 \u67e5\u8be2\u6700\u5c0f\u503c"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"// ==== \u540c\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar entity = repository.Min();\n\n// \u793a\u4f8b\u4e8c\nvar value = repository.Min(u => u.Id);\n\n// \u793a\u4f8b\u4e09\nvar entity = repository.Entities.Min();\n\n// \u793a\u4f8b\u56db\nvar value = repository.Entities.DetachedEntities.Min(u => u.Age);\n\n// \u793a\u4f8b\u4e94\nvar value = repository.Where(u => u.Id > 10).Min(u => u.Age);\n\n// ==== \u5f02\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar entity = await repository.MinAsync();\n\n// \u793a\u4f8b\u4e8c\nvar value = await repository.MinAsync(u => u.Id);\n\n// \u793a\u4f8b\u4e09\nvar entity = await repository.Entities.MinAsync();\n\n// \u793a\u4f8b\u56db\nvar value = await repository.Entities.DetachedEntities.MinAsync(u => u.Age);\n\n// \u793a\u4f8b\u4e94\nvar value = await repository.Where(u => u.Id > 10).MinAsync(u => u.Age);\n")),(0,i.kt)("h3",{id:"91065-\u6c42\u548c\u67e5\u8be2"},"9.10.6.5 \u6c42\u548c\u67e5\u8be2"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"// ==== \u540c\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar sum = repository.Entities.Sum(u => u.Cost);\n\n// \u793a\u4f8b\u4e8c\nvar sum = repository.AsQueryable().Sum(u => u.Cost);\n\n// \u793a\u4f8b\u4e09\nvar sum = repository.DetachedEntities.Sum(u => u.Cost);\n\n// ==== \u5f02\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar sum = await repository.Entities.SumAsync(u => u.Cost);\n\n// \u793a\u4f8b\u4e8c\nvar sum = await repository.AsQueryable().SumAsync(u => u.Cost);\n\n// \u793a\u4f8b\u4e09\nvar sum = await repository.DetachedEntities.SumAsync(u => u.Cost);\n")),(0,i.kt)("h3",{id:"91066-\u6c42\u5e73\u5747\u503c\u67e5\u8be2"},"9.10.6.6 \u6c42\u5e73\u5747\u503c\u67e5\u8be2"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"// ==== \u540c\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar sum = repository.Entities.Average(u => u.Cost);\n\n// \u793a\u4f8b\u4e8c\nvar sum = repository.AsQueryable().Average(u => u.Cost);\n\n// \u793a\u4f8b\u4e09\nvar sum = repository.DetachedEntities.Average(u => u.Cost);\n\n// ==== \u5f02\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar sum = await repository.Entities.AverageAsync(u => u.Cost);\n\n// \u793a\u4f8b\u4e8c\nvar sum = await repository.AsQueryable().AverageAsync(u => u.Cost);\n\n// \u793a\u4f8b\u4e09\nvar sum = await repository.DetachedEntities.AverageAsync(u => u.Cost);\n")),(0,i.kt)("h3",{id:"91067-\u65f6\u95f4\u67e5\u8be2"},"9.10.6.7 \u65f6\u95f4\u67e5\u8be2"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'var starDate = DateTime.Parse("2020-09-10");\nvar endDate = DateTime.Parse("2020-09-10");\nvar query = repository.Where(u => u.CreatedDt >= starDate && u.CreatedDt <= endDate);\n')),(0,i.kt)("h3",{id:"91068-\u6a21\u7cca\u67e5\u8be2"},"9.10.6.8 \u6a21\u7cca\u67e5\u8be2"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// \u793a\u4f8b\u4e00\nrepository.Where(u => u.Name.StartWith("Furion"));\n\n// \u793a\u4f8b\u4e8c\n_testRepository.Where(u => u.Name.EndWith("Furion"));\n\n// \u793a\u4f8b\u4e09\n_testRepository.Where(u => u.Name.Contains("Furion"));\n')),(0,i.kt)("h3",{id:"91069-case-when"},"9.10.6.9 ",(0,i.kt)("inlineCode",{parentName:"h3"},"Case When")),(0,i.kt)("p",null,"\u6570\u636e\u5e93\u4e2d\u7684 ",(0,i.kt)("inlineCode",{parentName:"p"},"Case When")," \u5b9e\u9645\u4e0a\u5bf9\u5e94\u7684\u662f\u6211\u4eec\u7a0b\u5e8f\u4e2d\u7684 ",(0,i.kt)("inlineCode",{parentName:"p"},"\u4e09\u5143\u8868\u8fbe\u5f0f")," \uff0c\u4e5f\u5c31\u662f\u4f7f\u7528 ",(0,i.kt)("inlineCode",{parentName:"p"},"\u4e09\u5143\u8868\u8fbe\u5f0f")," \u5373\u53ef\u81ea\u52a8\u751f\u6210 ",(0,i.kt)("inlineCode",{parentName:"p"},"Case When")," \u8bed\u53e5\u3002"),(0,i.kt)("h2",{id:"9107-\u53cd\u9988\u4e0e\u5efa\u8bae"},"9.10.7 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,i.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/2729f1a8.6eca01d4.js b/handbook/build/assets/js/2729f1a8.6eca01d4.js new file mode 100644 index 00000000000..1b84f9be110 --- /dev/null +++ b/handbook/build/assets/js/2729f1a8.6eca01d4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[3350],{3905:function(e,n,t){t.d(n,{Zo:function(){return p},kt:function(){return m}});var r=t(7294);function o(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function a(e){for(var n=1;n=0||(o[t]=e[t]);return o}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(o[t]=e[t])}return o}var u=r.createContext({}),c=function(e){var n=r.useContext(u),t=n;return e&&(t="function"==typeof e?e(n):a(a({},n),e)),t},p=function(e){var n=c(e.components);return r.createElement(u.Provider,{value:n},e.children)},s={inlineCode:"code",wrapper:function(e){var n=e.children;return r.createElement(r.Fragment,{},n)}},f=r.forwardRef((function(e,n){var t=e.components,o=e.mdxType,i=e.originalType,u=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),f=c(t),m=o,g=f["".concat(u,".").concat(m)]||f[m]||s[m]||i;return t?r.createElement(g,a(a({ref:n},p),{},{components:t})):r.createElement(g,a({ref:n},p))}));function m(e,n){var t=arguments,o=n&&n.mdxType;if("string"==typeof e||o){var i=t.length,a=new Array(i);a[0]=f;var l={};for(var u in n)hasOwnProperty.call(n,u)&&(l[u]=n[u]);l.originalType=e,l.mdxType="string"==typeof e?e:o,a[1]=l;for(var c=2;c();\n Console.WriteLine(helloService.SayHello());\n\n Console.WriteLine("=============");\n\n var baidu = "https://www.baidu.com".GetAsStringAsync().GetAwaiter().GetResult();\n Console.WriteLine(baidu);\n }\n }\n\n public interface IHelloService\n {\n string SayHello();\n }\n public class HelloService : IHelloService, ITransient\n {\n public string SayHello()\n {\n return "Hello Furion.";\n }\n }\n}\n')),(0,i.kt)("p",null,"\u4ee5\u4e0a\u4ee3\u7801\u901a\u8fc7 ",(0,i.kt)("inlineCode",{parentName:"p"},"var services = Inject.Create();")," \u521b\u5efa\u4e00\u4e2a\u670d\u52a1\u96c6\u5408\uff0c\u6700\u540e\u901a\u8fc7 ",(0,i.kt)("inlineCode",{parentName:"p"},"services.Build()")," \u5373\u53ef\u5b8c\u6210\u521d\u59cb\u5316\u3002"))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/2729f1a8.76b6204e.js b/handbook/build/assets/js/2729f1a8.76b6204e.js deleted file mode 100644 index 5f6f47ab016..00000000000 --- a/handbook/build/assets/js/2729f1a8.76b6204e.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[3350],{3905:function(e,n,t){t.d(n,{Zo:function(){return p},kt:function(){return m}});var r=t(7294);function o(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function a(e){for(var n=1;n=0||(o[t]=e[t]);return o}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(o[t]=e[t])}return o}var c=r.createContext({}),u=function(e){var n=r.useContext(c),t=n;return e&&(t="function"==typeof e?e(n):a(a({},n),e)),t},p=function(e){var n=u(e.components);return r.createElement(c.Provider,{value:n},e.children)},s={inlineCode:"code",wrapper:function(e){var n=e.children;return r.createElement(r.Fragment,{},n)}},f=r.forwardRef((function(e,n){var t=e.components,o=e.mdxType,i=e.originalType,c=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),f=u(t),m=o,g=f["".concat(c,".").concat(m)]||f[m]||s[m]||i;return t?r.createElement(g,a(a({ref:n},p),{},{components:t})):r.createElement(g,a({ref:n},p))}));function m(e,n){var t=arguments,o=n&&n.mdxType;if("string"==typeof e||o){var i=t.length,a=new Array(i);a[0]=f;var l={};for(var c in n)hasOwnProperty.call(n,c)&&(l[c]=n[c]);l.originalType=e,l.mdxType="string"==typeof e?e:o,a[1]=l;for(var u=2;u();\n Console.WriteLine(helloService.SayHello());\n\n Console.WriteLine("=============");\n\n var baidu = "https://www.baidu.com".GetAsStringAsync().GetAwaiter().GetResult();\n Console.WriteLine(baidu);\n }\n }\n\n public interface IHelloService\n {\n string SayHello();\n }\n public class HelloService : IHelloService, ITransient\n {\n public string SayHello()\n {\n return "Hello Furion.";\n }\n }\n}\n')),(0,i.kt)("p",null,"\u4ee5\u4e0a\u4ee3\u7801\u901a\u8fc7 ",(0,i.kt)("inlineCode",{parentName:"p"},"var services = Inject.Create();")," \u521b\u5efa\u4e00\u4e2a\u670d\u52a1\u96c6\u5408\uff0c\u6700\u540e\u901a\u8fc7 ",(0,i.kt)("inlineCode",{parentName:"p"},"services.Build()")," \u5373\u53ef\u5b8c\u6210\u521d\u59cb\u5316\u3002"))}f.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/2b75607b.4c1db2c4.js b/handbook/build/assets/js/2b75607b.4c1db2c4.js new file mode 100644 index 00000000000..fdff71933a4 --- /dev/null +++ b/handbook/build/assets/js/2b75607b.4c1db2c4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[9931],{3905:function(e,t,n){n.d(t,{Zo:function(){return u},kt:function(){return m}});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var d=r.createContext({}),p=function(e){var t=r.useContext(d),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},u=function(e){var t=p(e.components);return r.createElement(d.Provider,{value:t},e.children)},c={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},s=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,i=e.originalType,d=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),s=p(n),m=a,k=s["".concat(d,".").concat(m)]||s[m]||c[m]||i;return n?r.createElement(k,o(o({ref:t},u),{},{components:n})):r.createElement(k,o({ref:t},u))}));function m(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,o=new Array(i);o[0]=s;var l={};for(var d in t)hasOwnProperty.call(t,d)&&(l[d]=t[d]);l.originalType=e,l.mdxType="string"==typeof e?e:a,o[1]=l;for(var p=2;p\u8fde\u7eed GUID \u65b9\u5f0f",id:"2731-\u8fde\u7eed-guid-\u65b9\u5f0f",children:[]},{value:"27.3.2 \u77ed ID",id:"2732-\u77ed-id",children:[]},{value:"27.3.3 \u96ea\u82b1\u7b97\u6cd5 ID",id:"2733-\u96ea\u82b1\u7b97\u6cd5-id",children:[]}]},{value:"27.4 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"274-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],c={toc:u};function s(e){var t=e.components,n=(0,a.Z)(e,o);return(0,i.kt)("wrapper",(0,r.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"271-\u4e3a\u4ec0\u4e48\u9700\u8981\u5206\u5e03\u5f0f-id"},"27.1 \u4e3a\u4ec0\u4e48\u9700\u8981\u5206\u5e03\u5f0f ID"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},(0,i.kt)("inlineCode",{parentName:"p"},"\u5168\u5c40\u552f\u4e00\u6027"),": \u4e0d\u80fd\u51fa\u73b0\u91cd\u590d\u7684 ID \u53f7, \u65e2\u7136\u662f\u552f\u4e00\u6807\u8bc6, \u8fd9\u662f\u6700\u57fa\u672c\u7684\u8981\u6c42.")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},(0,i.kt)("inlineCode",{parentName:"p"},"\u8d8b\u52bf\u9012\u589e"),": \u5728 MySQL InnoDB \u5f15\u64ce\u4e2d\u4f7f\u7528\u7684\u662f\u805a\u96c6\u7d22\u5f15, \u7531\u4e8e\u591a\u6570 RDBMS \u4f7f\u7528 B-tree \u7684\u6570\u636e\u7ed3\u6784\u6765\u5b58\u50a8\u7d22\u5f15\u6570\u636e, \u5728\u4e3b\u952e\u7684\u9009\u62e9\u4e0a\u9762\u6211\u4eec\u5e94\u8be5\u5c3d\u91cf\u4f7f\u7528\u6709\u5e8f\u7684\u4e3b\u952e\u4fdd\u8bc1\u5199\u5165\u6027\u80fd.")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},(0,i.kt)("inlineCode",{parentName:"p"},"\u5355\u8c03\u9012\u589e"),": \u4fdd\u8bc1\u4e0b\u4e00\u4e2a ID \u4e00\u5b9a\u5927\u4e8e\u4e0a\u4e00\u4e2a ID, \u4f8b\u5982\u4e8b\u52a1\u7248\u672c\u53f7, IM \u589e\u91cf\u6d88\u606f, \u6392\u5e8f\u7b49\u7279\u6b8a\u9700\u6c42.")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},(0,i.kt)("inlineCode",{parentName:"p"},"\u4fe1\u606f\u5b89\u5168"),": \u5982\u679c ID \u662f\u8fde\u7eed\u7684, \u6076\u610f\u7528\u6237\u7684\u6252\u53d6\u5de5\u4f5c\u5c31\u975e\u5e38\u5bb9\u6613\u505a\u4e86, \u76f4\u63a5\u6309\u7167\u987a\u5e8f\u4e0b\u8f7d\u6307\u5b9a URL \u5373\u53ef; \u5982\u679c\u662f\u8ba2\u5355\u53f7\u5c31\u66f4\u5371\u9669\u4e86, \u7ade\u5bf9\u53ef\u4ee5\u76f4\u63a5\u77e5\u9053\u6211\u4eec\u4e00\u5929\u7684\u5355\u91cf. \u6240\u4ee5\u5728\u4e00\u4e9b\u5e94\u7528\u573a\u666f\u4e0b, \u4f1a\u9700\u8981 ID \u65e0\u89c4\u5219, \u4e0d\u89c4\u5219."))),(0,i.kt)("h2",{id:"272-\u5206\u5e03\u5f0f-id-\u6709\u54ea\u4e9b"},"27.2 \u5206\u5e03\u5f0f ID \u6709\u54ea\u4e9b"),(0,i.kt)("p",null,"\u5e38\u89c1\u7684\u5206\u5e03\u5f0f ID \u6709 ",(0,i.kt)("inlineCode",{parentName:"p"},"\u8fde\u7eed GUID"),"\u3001",(0,i.kt)("inlineCode",{parentName:"p"},"\u77ed ID"),"\u3001",(0,i.kt)("inlineCode",{parentName:"p"},"\u96ea\u82b1\u7b97\u6cd5 ID"),"\u3002"),(0,i.kt)("h2",{id:"273-\u5982\u4f55\u4f7f\u7528"},"27.3 \u5982\u4f55\u4f7f\u7528"),(0,i.kt)("h3",{id:"2731-\u8fde\u7eed-guid-\u65b9\u5f0f"},"27.3.1 ",(0,i.kt)("inlineCode",{parentName:"h3"},"\u8fde\u7eed GUID")," \u65b9\u5f0f"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"\u9759\u6001 ",(0,i.kt)("inlineCode",{parentName:"li"},"IDGen")," \u65b9\u5f0f")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"var guid = IDGen.NextID();\n\n// \u8fd8\u53ef\u4ee5\u914d\u7f6e\u66f4\u591a\u53c2\u6570\nvar guid2 = IDGen.NextID(new SequentialGuidSettings { LittleEndianBinary16Format = true })); // SequentialGuidSettings \u53c2\u6570\u53d6\u51b3\u4e8e\u4f60\u7684\u5206\u5e03\u5f0fID\u7684\u5b9e\u73b0\n")),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u63d0\u9192")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u5982\u679c\u5728\u5faa\u73af\u4e2d\u4f7f\u7528 ",(0,i.kt)("inlineCode",{parentName:"p"},"IDGen")," \u9759\u6001\u7c7b\u65b9\u5f0f\uff0c\u6027\u80fd\u6700\u5dee\uff0c\u539f\u56e0\u662f\u5e95\u5c42\u4e0d\u65ad\u89e3\u6790\u670d\u52a1\u3002\u5982\u679c\u975e\u5faa\u73af\u4e2d\uff0c\u6027\u80fd\u7b49\u4e8e\u4e0b\u9762\u4e24\u79cd\u7528\u6cd5\u3002"))),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"IDistributedIDGenerator")," \u6ce8\u5165\u65b9\u5f0f ",(0,i.kt)("strong",{parentName:"li"},"\u63a8\u8350"))),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{2,6}","{2,6}":!0},"private readonly IDistributedIDGenerator _idGenerator;\npublic AppServices(IDistributedIDGenerator idGenerator)\n{\n _idGenerator = idGenerator;\n\n var guidObject = _idGenerator.Create();\n}\n")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"SequentialGuidIDGenerator")," \u65b9\u5f0f")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"var idGen = new SequentialGuidIDGenerator();\nvar guid = idGen.Create();\n\n// \u66f4\u591a\u53c2\u6570\nvar idGen2 = new SequentialGuidIDGenerator();\nvar guid2 = idGen2.Create(new SequentialGuidSettings { LittleEndianBinary16Format = true }));\n")),(0,i.kt)("h3",{id:"2732-\u77ed-id"},"27.3.2 \u77ed ID"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"\u77ed ID")," \u6309\u9053\u7406\u4e0d\u5e94\u8be5\u653e\u5728\u5206\u5e03\u5f0f ID \u751f\u6210\u8fd9\u4e2a\u7ae0\u8282\uff0c\u5b83\u7684\u4f5c\u7528\u7528\u9014\u5e38\u7528\u4e8e\u5e76\u53d1\u4e0d\u5f3a\u7684\u5185\u90e8\u7cfb\u7edf\u4e2d\uff0c\u6bd4\u5982 ",(0,i.kt)("inlineCode",{parentName:"p"},"\u4efb\u52a1ID"),"\uff0c",(0,i.kt)("inlineCode",{parentName:"p"},"Issue \u7f16\u53f7")," \u7b49\u7b49\u3002"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'var shortid = ShortIDGen.NextID(); // \u751f\u6210\u4e00\u4e2a\u5305\u542b\u6570\u5b57\uff0c\u5b57\u6bcd\uff0c\u4e0d\u5305\u542b\u7279\u6b8a\u7b26\u53f7\u7684 8 \u4f4d\u77edid\n\n// \u6dfb\u52a0\u66f4\u591a\u914d\u7f6e\nvar shortid = ShortIDGen.NextID(new GenerationOptions {\n UseNumbers = false, // \u4e0d\u5305\u542b\u6570\u5b57\n UseSpecialCharacters = true, // \u5305\u542b\u7279\u6b8a\u7b26\u53f7\n Length = 8\uff0c// \u8bbe\u7f6e\u957f\u5ea6\uff0c\u6ce8\u610f\uff1a\u4e0d\u8bbe\u7f6e\u6b21\u957f\u5ea6\u662f\u968f\u673a\u957f\u5ea6\uff01\uff01\uff01\uff01\uff01\uff01\uff01\n});\n\n// \u81ea\u5b9a\u4e49\u751f\u6210\u77ed ID \u53c2\u4e0e\u8fd0\u7b97\u5b57\u7b26\nstring characters = "\u24b6\u24b7\u24b8\u24b9\u24ba\u24bb\u24bc\u24bd\u24be\u24bf\u24c0\u24c1\u24c2\u24c3\u24c4\u24c5\u24c6\u24c7\u24c8\u24c9\u24ca\u24cb\u24cc\u24cd\u24ce\u24cf\u24d0\u24d1\u24d2\u24d3\u24d4\u24d5\u24d6\u24d7\u24d8\u24d9\u24da\u24db\u24dc\u24dd\u24de\u24df\u24e0\u24e1\u24e2\u24e3\u24e4\u24e5\u24e6\u24e7\u24e8\u24e9\u2460\u2461\u2462\u2463\u2464\u2465\u2466\u2467\u2468\u2469\u246a\u246b"; //whatever you want;\nShortIDGen.SetCharacters(characters);\n\n// \u81ea\u5b9a\u4e49\u968f\u673a\u6570\uff08for\uff09\u6b65\u957f\nint seed = 1939048828;\nShortIDGen.SetSeed(seed);\n\n// \u91cd\u8f7d\u6240\u6709\u81ea\u5b9a\u4e49\u914d\u7f6e\nShortIDGen.Reset();\n')),(0,i.kt)("h3",{id:"2733-\u96ea\u82b1\u7b97\u6cd5-id"},"27.3.3 \u96ea\u82b1\u7b97\u6cd5 ID"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u5728\u6700\u65b0\u7684 ",(0,i.kt)("inlineCode",{parentName:"p"},"2.1 +")," \u7248\u672c\u79fb\u9664\u4e86\u96ea\u82b1\u7b97\u6cd5 ID \u529f\u80fd\uff0c\u539f\u56e0\u662f\uff1a"),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"\u76ee\u524d\uff0c\u96ea\u82b1 ID \u4f7f\u7528\u9891\u7387\u4e0d\u9ad8\uff0c\u800c\u4e14\u5b9e\u73b0\u96ea\u82b1 ID \u7684\u65b9\u5f0f\u4e5f\u662f\u5343\u5dee\u4e07\u522b\uff0c\u6240\u4ee5\u6846\u67b6\u79fb\u9664\u8be5\u529f\u80fd\uff0c\u91c7\u7528\u62d3\u5c55\u6216\u81ea\u96c6\u6210\u65b9\u5f0f\u3002")),(0,i.kt)("h2",{id:"274-\u53cd\u9988\u4e0e\u5efa\u8bae"},"27.4 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,i.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))),(0,i.kt)("hr",null))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/2b75607b.c028617e.js b/handbook/build/assets/js/2b75607b.c028617e.js deleted file mode 100644 index f8e3b2abf0f..00000000000 --- a/handbook/build/assets/js/2b75607b.c028617e.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[9931],{3905:function(e,t,n){n.d(t,{Zo:function(){return u},kt:function(){return m}});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var d=r.createContext({}),p=function(e){var t=r.useContext(d),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},u=function(e){var t=p(e.components);return r.createElement(d.Provider,{value:t},e.children)},c={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},s=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,i=e.originalType,d=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),s=p(n),m=a,k=s["".concat(d,".").concat(m)]||s[m]||c[m]||i;return n?r.createElement(k,o(o({ref:t},u),{},{components:n})):r.createElement(k,o({ref:t},u))}));function m(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,o=new Array(i);o[0]=s;var l={};for(var d in t)hasOwnProperty.call(t,d)&&(l[d]=t[d]);l.originalType=e,l.mdxType="string"==typeof e?e:a,o[1]=l;for(var p=2;p\u8fde\u7eed GUID \u65b9\u5f0f",id:"2731-\u8fde\u7eed-guid-\u65b9\u5f0f",children:[]},{value:"27.3.2 \u77ed ID",id:"2732-\u77ed-id",children:[]},{value:"27.3.3 \u96ea\u82b1\u7b97\u6cd5 ID",id:"2733-\u96ea\u82b1\u7b97\u6cd5-id",children:[]}]},{value:"27.4 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"274-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],c={toc:u};function s(e){var t=e.components,n=(0,a.Z)(e,o);return(0,i.kt)("wrapper",(0,r.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"271-\u4e3a\u4ec0\u4e48\u9700\u8981\u5206\u5e03\u5f0f-id"},"27.1 \u4e3a\u4ec0\u4e48\u9700\u8981\u5206\u5e03\u5f0f ID"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},(0,i.kt)("inlineCode",{parentName:"p"},"\u5168\u5c40\u552f\u4e00\u6027"),": \u4e0d\u80fd\u51fa\u73b0\u91cd\u590d\u7684 ID \u53f7, \u65e2\u7136\u662f\u552f\u4e00\u6807\u8bc6, \u8fd9\u662f\u6700\u57fa\u672c\u7684\u8981\u6c42.")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},(0,i.kt)("inlineCode",{parentName:"p"},"\u8d8b\u52bf\u9012\u589e"),": \u5728 MySQL InnoDB \u5f15\u64ce\u4e2d\u4f7f\u7528\u7684\u662f\u805a\u96c6\u7d22\u5f15, \u7531\u4e8e\u591a\u6570 RDBMS \u4f7f\u7528 B-tree \u7684\u6570\u636e\u7ed3\u6784\u6765\u5b58\u50a8\u7d22\u5f15\u6570\u636e, \u5728\u4e3b\u952e\u7684\u9009\u62e9\u4e0a\u9762\u6211\u4eec\u5e94\u8be5\u5c3d\u91cf\u4f7f\u7528\u6709\u5e8f\u7684\u4e3b\u952e\u4fdd\u8bc1\u5199\u5165\u6027\u80fd.")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},(0,i.kt)("inlineCode",{parentName:"p"},"\u5355\u8c03\u9012\u589e"),": \u4fdd\u8bc1\u4e0b\u4e00\u4e2a ID \u4e00\u5b9a\u5927\u4e8e\u4e0a\u4e00\u4e2a ID, \u4f8b\u5982\u4e8b\u52a1\u7248\u672c\u53f7, IM \u589e\u91cf\u6d88\u606f, \u6392\u5e8f\u7b49\u7279\u6b8a\u9700\u6c42.")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("p",{parentName:"li"},(0,i.kt)("inlineCode",{parentName:"p"},"\u4fe1\u606f\u5b89\u5168"),": \u5982\u679c ID \u662f\u8fde\u7eed\u7684, \u6076\u610f\u7528\u6237\u7684\u6252\u53d6\u5de5\u4f5c\u5c31\u975e\u5e38\u5bb9\u6613\u505a\u4e86, \u76f4\u63a5\u6309\u7167\u987a\u5e8f\u4e0b\u8f7d\u6307\u5b9a URL \u5373\u53ef; \u5982\u679c\u662f\u8ba2\u5355\u53f7\u5c31\u66f4\u5371\u9669\u4e86, \u7ade\u5bf9\u53ef\u4ee5\u76f4\u63a5\u77e5\u9053\u6211\u4eec\u4e00\u5929\u7684\u5355\u91cf. \u6240\u4ee5\u5728\u4e00\u4e9b\u5e94\u7528\u573a\u666f\u4e0b, \u4f1a\u9700\u8981 ID \u65e0\u89c4\u5219, \u4e0d\u89c4\u5219."))),(0,i.kt)("h2",{id:"272-\u5206\u5e03\u5f0f-id-\u6709\u54ea\u4e9b"},"27.2 \u5206\u5e03\u5f0f ID \u6709\u54ea\u4e9b"),(0,i.kt)("p",null,"\u5e38\u89c1\u7684\u5206\u5e03\u5f0f ID \u6709 ",(0,i.kt)("inlineCode",{parentName:"p"},"\u8fde\u7eed GUID"),"\u3001",(0,i.kt)("inlineCode",{parentName:"p"},"\u77ed ID"),"\u3001",(0,i.kt)("inlineCode",{parentName:"p"},"\u96ea\u82b1\u7b97\u6cd5 ID"),"\u3002"),(0,i.kt)("h2",{id:"273-\u5982\u4f55\u4f7f\u7528"},"27.3 \u5982\u4f55\u4f7f\u7528"),(0,i.kt)("h3",{id:"2731-\u8fde\u7eed-guid-\u65b9\u5f0f"},"27.3.1 ",(0,i.kt)("inlineCode",{parentName:"h3"},"\u8fde\u7eed GUID")," \u65b9\u5f0f"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"\u9759\u6001 ",(0,i.kt)("inlineCode",{parentName:"li"},"IDGen")," \u65b9\u5f0f")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"var guid = IDGen.NextID();\n\n// \u8fd8\u53ef\u4ee5\u914d\u7f6e\u66f4\u591a\u53c2\u6570\nvar guid2 = IDGen.NextID(new SequentialGuidSettings { LittleEndianBinary16Format = true })); // SequentialGuidSettings \u53c2\u6570\u53d6\u51b3\u4e8e\u4f60\u7684\u5206\u5e03\u5f0fID\u7684\u5b9e\u73b0\n")),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u63d0\u9192")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u5982\u679c\u5728\u5faa\u73af\u4e2d\u4f7f\u7528 ",(0,i.kt)("inlineCode",{parentName:"p"},"IDGen")," \u9759\u6001\u7c7b\u65b9\u5f0f\uff0c\u6027\u80fd\u6700\u5dee\uff0c\u539f\u56e0\u662f\u5e95\u5c42\u4e0d\u65ad\u89e3\u6790\u670d\u52a1\u3002\u5982\u679c\u975e\u5faa\u73af\u4e2d\uff0c\u6027\u80fd\u7b49\u4e8e\u4e0b\u9762\u4e24\u79cd\u7528\u6cd5\u3002"))),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"IDistributedIDGenerator")," \u6ce8\u5165\u65b9\u5f0f ",(0,i.kt)("strong",{parentName:"li"},"\u63a8\u8350"))),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{2,6}","{2,6}":!0},"private readonly IDistributedIDGenerator _idGenerator;\npublic AppServices(IDistributedIDGenerator idGenerator)\n{\n _idGenerator = idGenerator;\n\n var guidObject = _idGenerator.Create();\n}\n")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"SequentialGuidIDGenerator")," \u65b9\u5f0f")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"var idGen = new SequentialGuidIDGenerator();\nvar guid = idGen.Create();\n\n// \u66f4\u591a\u53c2\u6570\nvar idGen2 = new SequentialGuidIDGenerator();\nvar guid2 = idGen2.Create(new SequentialGuidSettings { LittleEndianBinary16Format = true }));\n")),(0,i.kt)("h3",{id:"2732-\u77ed-id"},"27.3.2 \u77ed ID"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"\u77ed ID")," \u6309\u9053\u7406\u4e0d\u5e94\u8be5\u653e\u5728\u5206\u5e03\u5f0f ID \u751f\u6210\u8fd9\u4e2a\u7ae0\u8282\uff0c\u5b83\u7684\u4f5c\u7528\u7528\u9014\u5e38\u7528\u4e8e\u5e76\u53d1\u4e0d\u5f3a\u7684\u5185\u90e8\u7cfb\u7edf\u4e2d\uff0c\u6bd4\u5982 ",(0,i.kt)("inlineCode",{parentName:"p"},"\u4efb\u52a1ID"),"\uff0c",(0,i.kt)("inlineCode",{parentName:"p"},"Issue \u7f16\u53f7")," \u7b49\u7b49\u3002"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'var shortid = ShortIDGen.NextID(); // \u751f\u6210\u4e00\u4e2a\u5305\u542b\u6570\u5b57\uff0c\u5b57\u6bcd\uff0c\u4e0d\u5305\u542b\u7279\u6b8a\u7b26\u53f7\u7684 8 \u4f4d\u77edid\n\n// \u6dfb\u52a0\u66f4\u591a\u914d\u7f6e\nvar shortid = ShortIDGen.NextID(new GenerationOptions {\n UseNumbers = false, // \u4e0d\u5305\u542b\u6570\u5b57\n UseSpecialCharacters = true, // \u5305\u542b\u7279\u6b8a\u7b26\u53f7\n Length = 8\uff0c// \u8bbe\u7f6e\u957f\u5ea6\uff0c\u6ce8\u610f\uff1a\u4e0d\u8bbe\u7f6e\u6b21\u957f\u5ea6\u662f\u968f\u673a\u957f\u5ea6\uff01\uff01\uff01\uff01\uff01\uff01\uff01\n});\n\n// \u81ea\u5b9a\u4e49\u751f\u6210\u77ed ID \u53c2\u4e0e\u8fd0\u7b97\u5b57\u7b26\nstring characters = "\u24b6\u24b7\u24b8\u24b9\u24ba\u24bb\u24bc\u24bd\u24be\u24bf\u24c0\u24c1\u24c2\u24c3\u24c4\u24c5\u24c6\u24c7\u24c8\u24c9\u24ca\u24cb\u24cc\u24cd\u24ce\u24cf\u24d0\u24d1\u24d2\u24d3\u24d4\u24d5\u24d6\u24d7\u24d8\u24d9\u24da\u24db\u24dc\u24dd\u24de\u24df\u24e0\u24e1\u24e2\u24e3\u24e4\u24e5\u24e6\u24e7\u24e8\u24e9\u2460\u2461\u2462\u2463\u2464\u2465\u2466\u2467\u2468\u2469\u246a\u246b"; //whatever you want;\nShortIDGen.SetCharacters(characters);\n\n// \u81ea\u5b9a\u4e49\u968f\u673a\u6570\uff08for\uff09\u6b65\u957f\nint seed = 1939048828;\nShortIDGen.SetSeed(seed);\n\n// \u91cd\u8f7d\u6240\u6709\u81ea\u5b9a\u4e49\u914d\u7f6e\nShortIDGen.Reset();\n')),(0,i.kt)("h3",{id:"2733-\u96ea\u82b1\u7b97\u6cd5-id"},"27.3.3 \u96ea\u82b1\u7b97\u6cd5 ID"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u5728\u6700\u65b0\u7684 ",(0,i.kt)("inlineCode",{parentName:"p"},"2.1 +")," \u7248\u672c\u79fb\u9664\u4e86\u96ea\u82b1\u7b97\u6cd5 ID \u529f\u80fd\uff0c\u539f\u56e0\u662f\uff1a"),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"\u76ee\u524d\uff0c\u96ea\u82b1 ID \u4f7f\u7528\u9891\u7387\u4e0d\u9ad8\uff0c\u800c\u4e14\u5b9e\u73b0\u96ea\u82b1 ID \u7684\u65b9\u5f0f\u4e5f\u662f\u5343\u5dee\u4e07\u522b\uff0c\u6240\u4ee5\u6846\u67b6\u79fb\u9664\u8be5\u529f\u80fd\uff0c\u91c7\u7528\u62d3\u5c55\u6216\u81ea\u96c6\u6210\u65b9\u5f0f\u3002")),(0,i.kt)("h2",{id:"274-\u53cd\u9988\u4e0e\u5efa\u8bae"},"27.4 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,i.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))),(0,i.kt)("hr",null))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/2b85edf2.2ac8507b.js b/handbook/build/assets/js/2b85edf2.2ac8507b.js new file mode 100644 index 00000000000..e86371deb89 --- /dev/null +++ b/handbook/build/assets/js/2b85edf2.2ac8507b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[8980],{3905:function(e,n,t){t.d(n,{Zo:function(){return u},kt:function(){return m}});var a=t(7294);function r(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function o(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function i(e){for(var n=1;n=0||(r[t]=e[t]);return r}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var c=a.createContext({}),s=function(e){var n=a.useContext(c),t=n;return e&&(t="function"==typeof e?e(n):i(i({},n),e)),t},u=function(e){var n=s(e.components);return a.createElement(c.Provider,{value:n},e.children)},p={inlineCode:"code",wrapper:function(e){var n=e.children;return a.createElement(a.Fragment,{},n)}},d=a.forwardRef((function(e,n){var t=e.components,r=e.mdxType,o=e.originalType,c=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),d=s(t),m=r,v=d["".concat(c,".").concat(m)]||d[m]||p[m]||o;return t?a.createElement(v,i(i({ref:n},u),{},{components:t})):a.createElement(v,i({ref:n},u))}));function m(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var o=t.length,i=new Array(o);i[0]=d;var l={};for(var c in n)hasOwnProperty.call(n,c)&&(l[c]=n[c]);l.originalType=e,l.mdxType="string"==typeof e?e:r,i[1]=l;for(var s=2;s=0&&o<=s&&r<=l&&a>=0)||(n.scrollIntoView({block:"center",behavior:"smooth"}),n.classList.add(c),setTimeout((function(){return n.classList.remove(c)}),2e3))}),150))},O=function(e){var n,t=null;switch(e.key){case"ArrowRight":var a=C.indexOf(e.target)+1;t=C[a]||C[0];break;case"ArrowLeft":var r=C.indexOf(e.target)-1;t=C[r]||C[C.length-1]}null==(n=t)||n.focus()};return a.createElement("div",{className:"tabs-container"},a.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.Z)("tabs",{"tabs--block":r},d)},v.map((function(e){var n=e.value,t=e.label;return a.createElement("li",{role:"tab",tabIndex:N===n?0:-1,"aria-selected":N===n,className:(0,i.Z)("tabs__item",l,{"tabs__item--active":N===n}),key:n,ref:function(e){return C.push(e)},onKeyDown:O,onFocus:x,onClick:x},null!=t?t:n)}))),t?(0,a.cloneElement)(m.filter((function(e){return e.props.value===N}))[0],{className:"margin-vert--md"}):a.createElement("div",{className:"margin-vert--md"},m.map((function(e,n){return(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==N})}))))}},9443:function(e,n,t){var a=(0,t(7294).createContext)(void 0);n.Z=a},4390:function(e,n,t){t.r(n),t.d(n,{frontMatter:function(){return s},contentTitle:function(){return u},metadata:function(){return p},toc:function(){return d},default:function(){return v}});var a=t(7462),r=t(3366),o=(t(7294),t(3905)),i=(t(4996),t(5064)),l=t(8215),c=["components"],s={id:"tran",title:"9.26 \u4e8b\u52a1\u548c\u5de5\u4f5c\u5355\u5143",sidebar_label:"9.26 \u4e8b\u52a1\u548c\u5de5\u4f5c\u5355\u5143 (UnitOfWork)"},u=void 0,p={unversionedId:"tran",id:"tran",isDocsHomePage:!1,title:"9.26 \u4e8b\u52a1\u548c\u5de5\u4f5c\u5355\u5143",description:"9.26.1 \u4e8b\u52a1",source:"@site/docs/tran.mdx",sourceDirName:".",slug:"/tran",permalink:"/furion/docs/tran",editUrl:"https://gitee.com/dotnetchina/Furion/tree/master/handbook/docs/tran.mdx",tags:[],version:"current",lastUpdatedBy:"Monk",lastUpdatedAt:1624502128,formattedLastUpdatedAt:"6/24/2021",frontMatter:{id:"tran",title:"9.26 \u4e8b\u52a1\u548c\u5de5\u4f5c\u5355\u5143",sidebar_label:"9.26 \u4e8b\u52a1\u548c\u5de5\u4f5c\u5355\u5143 (UnitOfWork)"},sidebar:"docs",previous:{title:"9.25. \u5b9e\u4f53\u6570\u636e\u76d1\u542c\u5668",permalink:"/furion/docs/dbcontext-entitytrigger"},next:{title:"9.27 \u8bfb\u5199\u5206\u79bb/\u4e3b\u4ece\u590d\u5236",permalink:"/furion/docs/dbcontext-read-write"}},d=[{value:"9.26.1 \u4e8b\u52a1",id:"9261-\u4e8b\u52a1",children:[]},{value:"9.26.2 \u5de5\u4f5c\u5355\u5143",id:"9262-\u5de5\u4f5c\u5355\u5143",children:[]},{value:"9.26.3 \u5982\u4f55\u4f7f\u7528",id:"9263-\u5982\u4f55\u4f7f\u7528",children:[{value:"9.26.3.1 \u81ea\u52a8\u7ba1\u7406",id:"92631-\u81ea\u52a8\u7ba1\u7406",children:[]},{value:"9.26.3.2 EnsureTransaction() \u65b9\u6cd5 \u2728",id:"92632-ensuretransaction-\u65b9\u6cd5-",children:[]},{value:"9.26.3.2 \u624b\u52a8\u7ba1\u7406",id:"92632-\u624b\u52a8\u7ba1\u7406",children:[]}]},{value:"9.26.4 \u5de5\u4f5c\u5355\u5143\u7279\u6027\u8bf4\u660e",id:"9264-\u5de5\u4f5c\u5355\u5143\u7279\u6027\u8bf4\u660e",children:[{value:"9.26.4.1 [UnitOfWork] \u7279\u6027",id:"92641-unitofwork-\u7279\u6027",children:[]},{value:"9.26.4.2 [ManualCommit] \u7279\u6027",id:"92642-manualcommit-\u7279\u6027",children:[]}]},{value:"9.26.5 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"9265-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],m={toc:d};function v(e){var n=e.components,t=(0,r.Z)(e,c);return(0,o.kt)("wrapper",(0,a.Z)({},m,t,{components:n,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"9261-\u4e8b\u52a1"},"9.26.1 \u4e8b\u52a1"),(0,o.kt)("p",null,"\u4e8b\u52a1\u6307\u4f5c\u4e3a\u5355\u4e2a\u903b\u8f91\u5de5\u4f5c\u5355\u5143\u6267\u884c\u7684\u4e00\u7cfb\u5217\u64cd\u4f5c\uff0c\u8981\u4e48",(0,o.kt)("strong",{parentName:"p"},"\u5b8c\u5168\u5730\u6267\u884c\uff0c\u8981\u4e48\u5b8c\u5168\u5730\u4e0d\u6267\u884c"),"\u3002"),(0,o.kt)("p",null,"\u7b80\u5355\u7684\u8bf4\uff0c\u4e8b\u52a1\u5c31\u662f\u5e76\u53d1\u63a7\u5236\u7684\u5355\u4f4d\uff0c\u662f\u7528\u6237\u5b9a\u4e49\u7684\u4e00\u4e2a\u64cd\u4f5c\u5e8f\u5217\u3002 \u800c\u4e00\u4e2a\u903b\u8f91\u5de5\u4f5c\u5355\u5143\u8981\u6210\u4e3a\u4e8b\u52a1\uff0c\u5c31\u5fc5\u987b\u6ee1\u8db3 ",(0,o.kt)("inlineCode",{parentName:"p"},"ACID")," \u5c5e\u6027\u3002"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"A"),"\uff1a\u539f\u5b50\u6027\uff08Atomicity\uff09\uff1a\u4e8b\u52a1\u4e2d\u7684\u64cd\u4f5c\u8981\u4e48\u90fd\u4e0d\u505a\uff0c\u8981\u4e48\u5c31\u5168\u505a"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"C"),"\uff1a\u4e00\u81f4\u6027\uff08Consistency\uff09\uff1a\u4e8b\u52a1\u6267\u884c\u7684\u7ed3\u679c\u5fc5\u987b\u662f\u4ece\u6570\u636e\u5e93\u4ece\u4e00\u4e2a\u4e00\u81f4\u6027\u72b6\u6001\u8f6c\u6362\u5230\u53e6\u4e00\u4e2a\u4e00\u81f4\u6027\u72b6\u6001"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"I"),"\uff1a\u9694\u79bb\u6027\uff08Isolation\uff09\uff1a\u4e00\u4e2a\u4e8b\u52a1\u7684\u6267\u884c\u4e0d\u80fd\u88ab\u5176\u4ed6\u4e8b\u52a1\u5e72\u6270"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"D"),"\uff1a\u6301\u4e45\u6027\uff08Durability\uff09\uff1a\u4e00\u4e2a\u4e8b\u52a1\u4e00\u65e6\u63d0\u4ea4\uff0c\u5b83\u5bf9\u6570\u636e\u5e93\u4e2d\u6570\u636e\u7684\u6539\u53d8\u5c31\u5e94\u8be5\u662f\u6c38\u4e45\u6027\u7684")),(0,o.kt)("h2",{id:"9262-\u5de5\u4f5c\u5355\u5143"},"9.26.2 \u5de5\u4f5c\u5355\u5143"),(0,o.kt)("p",null,"\u7b80\u5355\u6765\u8bf4\uff0c\u5c31\u662f\u4e3a\u4e86\u4fdd\u8bc1\u4e00\u6b21\u5b8c\u6574\u7684\u529f\u80fd\u64cd\u4f5c\u6240\u4ea7\u751f\u7684\u4e00\u4e9b\u5217\u63d0\u4ea4\u6570\u636e\u7684\u5b8c\u6574\u6027\uff0c\u8d77\u7740\u4e8b\u52a1\u7684\u4f5c\u7528\u3002\u5728\u8ba1\u7b97\u673a\u9886\u57df\u4e2d\uff0c\u5de5\u4f5c\u5355\u5143\u901a\u5e38\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"UnitOfWork")," \u540d\u79f0\u8868\u793a\u3002"),(0,o.kt)("p",null,"\u901a\u5e38\u6211\u4eec\u4fdd\u8bc1\u7528\u6237\u7684\u6bcf\u4e00\u6b21\u8bf7\u6c42\u90fd\u662f\u5904\u4e8e\u5728\u4e00\u4e2a\u529f\u80fd\u5355\u5143\u4e2d\uff0c\u4e5f\u5c31\u662f\u5de5\u4f5c\u5355\u5143\u3002"),(0,o.kt)("h2",{id:"9263-\u5982\u4f55\u4f7f\u7528"},"9.26.3 \u5982\u4f55\u4f7f\u7528"),(0,o.kt)("h3",{id:"92631-\u81ea\u52a8\u7ba1\u7406"},"9.26.3.1 \u81ea\u52a8\u7ba1\u7406"),(0,o.kt)("p",null,"\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\uff0c\u6211\u4eec\u53ea\u9700\u8981\u5728\u63a7\u5236\u5668 Action \u4e2d\u8d34 ",(0,o.kt)("inlineCode",{parentName:"p"},"[UnitOfWork]")," \u7279\u6027\u5373\u53ef\u5f00\u542f\u5de5\u4f5c\u5355\u5143\u6a21\u5f0f\uff0c\u4fdd\u8bc1\u4e86\u6bcf\u4e00\u6b21\u8bf7\u6c42\u90fd\u662f\u4e00\u4e2a ",(0,o.kt)("inlineCode",{parentName:"p"},"\u5de5\u4f5c\u5355\u5143"),"\uff0c\u8981\u4e48\u540c\u65f6\u6210\u529f\uff0c\u8981\u4e48\u540c\u65f6\u5931\u8d25\u3002"),(0,o.kt)("h3",{id:"92632-ensuretransaction-\u65b9\u6cd5-"},"9.26.3.2 ",(0,o.kt)("inlineCode",{parentName:"h3"},"EnsureTransaction()")," \u65b9\u6cd5 \u2728"),(0,o.kt)("p",null,"\u6709\u4e9b\u65f6\u5019\u6211\u4eec\u901a\u8fc7\u9759\u6001\u7c7b\u6216\u8005\u5176\u4ed6\u65b9\u5f0f\u4e0d\u5c0f\u5fc3\u521b\u5efa\u4e86\u65b0\u7684 ",(0,o.kt)("inlineCode",{parentName:"p"},"DbContext")," \u5b9e\u4f8b\uff0c\u8fd9\u65f6\u5019\u8d34\u4e86 ",(0,o.kt)("inlineCode",{parentName:"p"},"[UnitOfWork]")," \u4e5f\u4e0d\u89c1\u8d77\u6548\uff0c\u8fd9\u65f6\u5019\u53ef\u4ee5\u901a\u8fc7\u4ee5\u4e0b\u65b9\u6cd5\u6765\u786e\u8ba4\u4e8b\u52a1\u662f\u5426\u6709\u6548\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},"repository.EnsureTransaction();\n")),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"\u5982\u679c\u4e0d\u559c\u6b22\u624b\u52a8\u65b9\u5f0f\u4e5f\u53ef\u4ee5\u901a\u8fc7 ",(0,o.kt)("inlineCode",{parentName:"strong"},"[UnitOfWork(true)]")," \u5f00\u542f\u6b64\u529f\u80fd\u3002")),(0,o.kt)("p",null,"\u8be5\u65b9\u6cd5\u4f1a\u5c06\u5f53\u524d\u4ed3\u50a8\u6dfb\u52a0\u5230\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u6c60\u4e2d\uff0c\u5e76\u786e\u4fdd\u4e8b\u52a1\u53ef\u7528\u3002"),(0,o.kt)("h3",{id:"92632-\u624b\u52a8\u7ba1\u7406"},"9.26.3.2 \u624b\u52a8\u7ba1\u7406"),(0,o.kt)(i.Z,{defaultValue:"one",values:[{label:"\u793a\u4f8b\u4e00",value:"one"},{label:"\u793a\u4f8b\u4e8c",value:"two"},{label:"\u793a\u4f8b\u4e09\uff08\u5206\u5e03\u5f0f\uff09",value:"three"}],mdxType:"Tabs"},(0,o.kt)(l.Z,{value:"one",mdxType:"TabItem"},(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},'// \u5f00\u542f\u4e8b\u52a1\nusing (var transaction = _testRepository.Database.BeginTransaction())\n{\n try\n {\n _testRepository.Insert(new Blog { Url = "http://blogs.msdn.com/dotnet" });\n _testRepository.SaveNow();\n\n _testRepository.Insert(new Blog { Url = "http://blogs.msdn.com/visualstudio" });\n _testRepository.SaveNow();\n\n var blogs = _testRepository.Entity\n .OrderBy(b => b.Url)\n .ToList();\n\n // \u63d0\u4ea4\u4e8b\u52a1\n transaction.Commit();\n }\n catch (Exception)\n {\n // \u56de\u6eda\u4e8b\u52a1\n // transaction.RollBack(); // \u65b0\u7248\u672c\u81ea\u52a8\u56de\u6eda\u4e86\n }\n}\n'))),(0,o.kt)(l.Z,{value:"two",mdxType:"TabItem"},(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},'var options = new DbContextOptionsBuilder()\n .UseSqlServer(new SqlConnection(connectionString))\n .Options;\n\n// \u521b\u5efa\u8fde\u63a5\u5b57\u7b26\u4e32\nusing (var context1 = new DefaultDbContext(options))\n{\n // \u5f00\u542f\u4e8b\u52a1\n using (var transaction = context1.Database.BeginTransaction())\n {\n try\n {\n _testRepository.Insert(new Blog { Url = "http://blogs.msdn.com/dotnet" });\n _testRepository.SaveNow();\n\n context1.Blogs.Add(new Blog { Url = "http://blogs.msdn.com/dotnet" });\n context1.SaveChanges();\n\n // \u521b\u5efa\u65b0\u7684\u8fde\u63a5\u5bf9\u8c61\n using (var context2 = new DefaultDbContext(options))\n {\n // \u5171\u4eab\u8fde\u63a5\u4e8b\u52a1\n context2.Database.UseTransaction(transaction.GetDbTransaction());\n\n var blogs = context2.Blogs\n .OrderBy(b => b.Url)\n .ToList();\n }\n\n // \u63d0\u4ea4\u4e8b\u52a1\n transaction.Commit();\n }\n catch (Exception)\n {\n // \u56de\u6eda\u4e8b\u52a1\n // transaction.RollBack(); // \u65b0\u7248\u672c\u81ea\u52a8\u56de\u6eda\u4e86\n }\n }\n}\n'))),(0,o.kt)(l.Z,{value:"three",mdxType:"TabItem"},(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1-2}","{1-2}":!0},'// \u5f00\u542f\u5206\u5e03\u5f0f\u4e8b\u52a1\nusing (var scope = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions { IsolationLevel = IsolationLevel.ReadCommitted }))\n{\n using (var connection = new SqlConnection(connectionString))\n {\n connection.Open();\n\n try\n {\n // \u8fd9\u91cc\u662f Ado.NET \u64cd\u4f5c\n var command = connection.CreateCommand();\n command.CommandText = "DELETE FROM dbo.Blogs";\n command.ExecuteNonQuery();\n\n // \u521b\u5efaEF Core \u6570\u636e\u5e93\u4e0a\u4e0b\u6587\n var options = new DbContextOptionsBuilder()\n .UseSqlServer(connection)\n .Options;\n using (var context = new BloggingContext(options))\n {\n context.Blogs.Add(new Blog { Url = "http://blogs.msdn.com/dotnet" });\n context.SaveChanges();\n }\n\n // \u6846\u67b6\u5c01\u88c5\u7684\u4ed3\u50a8\n _testRepository.Insert(new Blog { Url = "http://blogs.msdn.com/dotnet" });\n _testRepository.SaveChanges();\n\n // \u63d0\u4ea4\u4e8b\u52a1\n scope.Complete();\n }\n catch (System.Exception)\n {\n // \u81ea\u52a8\u56de\u6eda\n }\n }\n}\n')))),(0,o.kt)("h2",{id:"9264-\u5de5\u4f5c\u5355\u5143\u7279\u6027\u8bf4\u660e"},"9.26.4 \u5de5\u4f5c\u5355\u5143\u7279\u6027\u8bf4\u660e"),(0,o.kt)("h3",{id:"92641-unitofwork-\u7279\u6027"},"9.26.4.1 ",(0,o.kt)("inlineCode",{parentName:"h3"},"[UnitOfWork]")," \u7279\u6027"),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"[UnitOfWork]")," \u7279\u6027\u53ea\u80fd\u7528\u4e8e\u63a7\u5236\u5668\u7684 ",(0,o.kt)("inlineCode",{parentName:"p"},"Action")," \u4e2d\uff0c\u4e00\u65e6\u8d34\u4e86 ",(0,o.kt)("inlineCode",{parentName:"p"},"[UnitOfWork]")," \u7279\u6027\u540e\uff0c\u90a3\u4e48\u8be5\u8bf7\u6c42\u81ea\u52a8\u542f\u7528\u5de5\u4f5c\u5355\u5143\u6a21\u5f0f\uff0c\u8981\u4e48\u6210\u529f\uff0c\u8981\u4e48\u5931\u8d25\u3002"),(0,o.kt)("h3",{id:"92642-manualcommit-\u7279\u6027"},"9.26.4.2 ",(0,o.kt)("inlineCode",{parentName:"h3"},"[ManualCommit]")," \u7279\u6027"),(0,o.kt)("p",null,"\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c",(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4f1a\u5728\u4e00\u6b21\u6210\u529f\u8bf7\u6c42\u4e4b\u540e\u81ea\u52a8\u8c03\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"SaveChanges()")," \u65b9\u6cd5\uff0c\u5982\u679c\u9009\u62e9\u624b\u52a8\u8c03\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"SaveChanges()")," \u65b9\u6cd5\uff0c\u53ef\u4ee5\u5728\u63a7\u5236\u5668 ",(0,o.kt)("inlineCode",{parentName:"p"},"Action")," \u4e2d\u8d34 ",(0,o.kt)("inlineCode",{parentName:"p"},"[ManualCommit]")," \u7279\u6027\u5373\u53ef\u3002"),(0,o.kt)("h2",{id:"9265-\u53cd\u9988\u4e0e\u5efa\u8bae"},"9.26.5 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,o.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,o.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))),(0,o.kt)("hr",null),(0,o.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e86\u89e3\u66f4\u591a")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u60f3\u4e86\u89e3\u66f4\u591a ",(0,o.kt)("inlineCode",{parentName:"p"},"\u4e8b\u52a1")," \u77e5\u8bc6\u53ef\u67e5\u9605 ",(0,o.kt)("a",{parentName:"p",href:"https://docs.microsoft.com/zh-cn/ef/core/saving/transactions"},"EF Core - \u4f7f\u7528\u4e8b\u52a1")," \u7ae0\u8282\u3002"))))}v.isMDXComponent=!0},6010:function(e,n,t){function a(e){var n,t,r="";if("string"==typeof e||"number"==typeof e)r+=e;else if("object"==typeof e)if(Array.isArray(e))for(n=0;n=0||(r[t]=e[t]);return r}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var c=a.createContext({}),s=function(e){var n=a.useContext(c),t=n;return e&&(t="function"==typeof e?e(n):i(i({},n),e)),t},u=function(e){var n=s(e.components);return a.createElement(c.Provider,{value:n},e.children)},p={inlineCode:"code",wrapper:function(e){var n=e.children;return a.createElement(a.Fragment,{},n)}},d=a.forwardRef((function(e,n){var t=e.components,r=e.mdxType,o=e.originalType,c=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),d=s(t),m=r,v=d["".concat(c,".").concat(m)]||d[m]||p[m]||o;return t?a.createElement(v,i(i({ref:n},u),{},{components:t})):a.createElement(v,i({ref:n},u))}));function m(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var o=t.length,i=new Array(o);i[0]=d;var l={};for(var c in n)hasOwnProperty.call(n,c)&&(l[c]=n[c]);l.originalType=e,l.mdxType="string"==typeof e?e:r,i[1]=l;for(var s=2;s=0&&o<=s&&r<=l&&a>=0)||(n.scrollIntoView({block:"center",behavior:"smooth"}),n.classList.add(c),setTimeout((function(){return n.classList.remove(c)}),2e3))}),150))},x=function(e){var n,t;switch(e.keyCode){case u:var a=y.indexOf(e.target)+1;t=y[a]||y[0];break;case s:var r=y.indexOf(e.target)-1;t=y[r]||y[y.length-1]}null==(n=t)||n.focus()};return a.createElement("div",{className:"tabs-container"},a.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.Z)("tabs",{"tabs--block":t},m)},p.map((function(e){var n=e.value,t=e.label;return a.createElement("li",{role:"tab",tabIndex:h===n?0:-1,"aria-selected":h===n,className:(0,i.Z)("tabs__item",l,{"tabs__item--active":h===n}),key:n,ref:function(e){return y.push(e)},onKeyDown:x,onFocus:w,onClick:w},t)}))),n?(0,a.cloneElement)(N.filter((function(e){return e.props.value===h}))[0],{className:"margin-vert--md"}):a.createElement("div",{className:"margin-vert--md"},N.map((function(e,n){return(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==h})}))))}},9443:function(e,n,t){var a=(0,t(7294).createContext)(void 0);n.Z=a},4081:function(e,n,t){t.r(n),t.d(n,{frontMatter:function(){return s},contentTitle:function(){return u},metadata:function(){return p},toc:function(){return d},default:function(){return v}});var a=t(7462),r=t(3366),o=(t(7294),t(3905)),i=(t(4996),t(5064)),l=t(8215),c=["components"],s={id:"tran",title:"9.26 \u4e8b\u52a1\u548c\u5de5\u4f5c\u5355\u5143",sidebar_label:"9.26 \u4e8b\u52a1\u548c\u5de5\u4f5c\u5355\u5143 (UnitOfWork)"},u=void 0,p={unversionedId:"tran",id:"tran",isDocsHomePage:!1,title:"9.26 \u4e8b\u52a1\u548c\u5de5\u4f5c\u5355\u5143",description:"9.26.1 \u4e8b\u52a1",source:"@site/docs/tran.mdx",sourceDirName:".",slug:"/tran",permalink:"/furion/docs/tran",editUrl:"https://gitee.com/dotnetchina/Furion/tree/master/handbook/docs/tran.mdx",version:"current",lastUpdatedBy:"Monk",lastUpdatedAt:1624502128,formattedLastUpdatedAt:"6/24/2021",frontMatter:{id:"tran",title:"9.26 \u4e8b\u52a1\u548c\u5de5\u4f5c\u5355\u5143",sidebar_label:"9.26 \u4e8b\u52a1\u548c\u5de5\u4f5c\u5355\u5143 (UnitOfWork)"},sidebar:"docs",previous:{title:"9.25. \u5b9e\u4f53\u6570\u636e\u76d1\u542c\u5668",permalink:"/furion/docs/dbcontext-entitytrigger"},next:{title:"9.27 \u8bfb\u5199\u5206\u79bb/\u4e3b\u4ece\u590d\u5236",permalink:"/furion/docs/dbcontext-read-write"}},d=[{value:"9.26.1 \u4e8b\u52a1",id:"9261-\u4e8b\u52a1",children:[]},{value:"9.26.2 \u5de5\u4f5c\u5355\u5143",id:"9262-\u5de5\u4f5c\u5355\u5143",children:[]},{value:"9.26.3 \u5982\u4f55\u4f7f\u7528",id:"9263-\u5982\u4f55\u4f7f\u7528",children:[{value:"9.26.3.1 \u81ea\u52a8\u7ba1\u7406",id:"92631-\u81ea\u52a8\u7ba1\u7406",children:[]},{value:"9.26.3.2 EnsureTransaction() \u65b9\u6cd5 \u2728",id:"92632-ensuretransaction-\u65b9\u6cd5-",children:[]},{value:"9.26.3.2 \u624b\u52a8\u7ba1\u7406",id:"92632-\u624b\u52a8\u7ba1\u7406",children:[]}]},{value:"9.26.4 \u5de5\u4f5c\u5355\u5143\u7279\u6027\u8bf4\u660e",id:"9264-\u5de5\u4f5c\u5355\u5143\u7279\u6027\u8bf4\u660e",children:[{value:"9.26.4.1 [UnitOfWork] \u7279\u6027",id:"92641-unitofwork-\u7279\u6027",children:[]},{value:"9.26.4.2 [ManualCommit] \u7279\u6027",id:"92642-manualcommit-\u7279\u6027",children:[]}]},{value:"9.26.5 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"9265-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],m={toc:d};function v(e){var n=e.components,t=(0,r.Z)(e,c);return(0,o.kt)("wrapper",(0,a.Z)({},m,t,{components:n,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"9261-\u4e8b\u52a1"},"9.26.1 \u4e8b\u52a1"),(0,o.kt)("p",null,"\u4e8b\u52a1\u6307\u4f5c\u4e3a\u5355\u4e2a\u903b\u8f91\u5de5\u4f5c\u5355\u5143\u6267\u884c\u7684\u4e00\u7cfb\u5217\u64cd\u4f5c\uff0c\u8981\u4e48",(0,o.kt)("strong",{parentName:"p"},"\u5b8c\u5168\u5730\u6267\u884c\uff0c\u8981\u4e48\u5b8c\u5168\u5730\u4e0d\u6267\u884c"),"\u3002"),(0,o.kt)("p",null,"\u7b80\u5355\u7684\u8bf4\uff0c\u4e8b\u52a1\u5c31\u662f\u5e76\u53d1\u63a7\u5236\u7684\u5355\u4f4d\uff0c\u662f\u7528\u6237\u5b9a\u4e49\u7684\u4e00\u4e2a\u64cd\u4f5c\u5e8f\u5217\u3002 \u800c\u4e00\u4e2a\u903b\u8f91\u5de5\u4f5c\u5355\u5143\u8981\u6210\u4e3a\u4e8b\u52a1\uff0c\u5c31\u5fc5\u987b\u6ee1\u8db3 ",(0,o.kt)("inlineCode",{parentName:"p"},"ACID")," \u5c5e\u6027\u3002"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"A"),"\uff1a\u539f\u5b50\u6027\uff08Atomicity\uff09\uff1a\u4e8b\u52a1\u4e2d\u7684\u64cd\u4f5c\u8981\u4e48\u90fd\u4e0d\u505a\uff0c\u8981\u4e48\u5c31\u5168\u505a"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"C"),"\uff1a\u4e00\u81f4\u6027\uff08Consistency\uff09\uff1a\u4e8b\u52a1\u6267\u884c\u7684\u7ed3\u679c\u5fc5\u987b\u662f\u4ece\u6570\u636e\u5e93\u4ece\u4e00\u4e2a\u4e00\u81f4\u6027\u72b6\u6001\u8f6c\u6362\u5230\u53e6\u4e00\u4e2a\u4e00\u81f4\u6027\u72b6\u6001"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"I"),"\uff1a\u9694\u79bb\u6027\uff08Isolation\uff09\uff1a\u4e00\u4e2a\u4e8b\u52a1\u7684\u6267\u884c\u4e0d\u80fd\u88ab\u5176\u4ed6\u4e8b\u52a1\u5e72\u6270"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"D"),"\uff1a\u6301\u4e45\u6027\uff08Durability\uff09\uff1a\u4e00\u4e2a\u4e8b\u52a1\u4e00\u65e6\u63d0\u4ea4\uff0c\u5b83\u5bf9\u6570\u636e\u5e93\u4e2d\u6570\u636e\u7684\u6539\u53d8\u5c31\u5e94\u8be5\u662f\u6c38\u4e45\u6027\u7684")),(0,o.kt)("h2",{id:"9262-\u5de5\u4f5c\u5355\u5143"},"9.26.2 \u5de5\u4f5c\u5355\u5143"),(0,o.kt)("p",null,"\u7b80\u5355\u6765\u8bf4\uff0c\u5c31\u662f\u4e3a\u4e86\u4fdd\u8bc1\u4e00\u6b21\u5b8c\u6574\u7684\u529f\u80fd\u64cd\u4f5c\u6240\u4ea7\u751f\u7684\u4e00\u4e9b\u5217\u63d0\u4ea4\u6570\u636e\u7684\u5b8c\u6574\u6027\uff0c\u8d77\u7740\u4e8b\u52a1\u7684\u4f5c\u7528\u3002\u5728\u8ba1\u7b97\u673a\u9886\u57df\u4e2d\uff0c\u5de5\u4f5c\u5355\u5143\u901a\u5e38\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"UnitOfWork")," \u540d\u79f0\u8868\u793a\u3002"),(0,o.kt)("p",null,"\u901a\u5e38\u6211\u4eec\u4fdd\u8bc1\u7528\u6237\u7684\u6bcf\u4e00\u6b21\u8bf7\u6c42\u90fd\u662f\u5904\u4e8e\u5728\u4e00\u4e2a\u529f\u80fd\u5355\u5143\u4e2d\uff0c\u4e5f\u5c31\u662f\u5de5\u4f5c\u5355\u5143\u3002"),(0,o.kt)("h2",{id:"9263-\u5982\u4f55\u4f7f\u7528"},"9.26.3 \u5982\u4f55\u4f7f\u7528"),(0,o.kt)("h3",{id:"92631-\u81ea\u52a8\u7ba1\u7406"},"9.26.3.1 \u81ea\u52a8\u7ba1\u7406"),(0,o.kt)("p",null,"\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\uff0c\u6211\u4eec\u53ea\u9700\u8981\u5728\u63a7\u5236\u5668 Action \u4e2d\u8d34 ",(0,o.kt)("inlineCode",{parentName:"p"},"[UnitOfWork]")," \u7279\u6027\u5373\u53ef\u5f00\u542f\u5de5\u4f5c\u5355\u5143\u6a21\u5f0f\uff0c\u4fdd\u8bc1\u4e86\u6bcf\u4e00\u6b21\u8bf7\u6c42\u90fd\u662f\u4e00\u4e2a ",(0,o.kt)("inlineCode",{parentName:"p"},"\u5de5\u4f5c\u5355\u5143"),"\uff0c\u8981\u4e48\u540c\u65f6\u6210\u529f\uff0c\u8981\u4e48\u540c\u65f6\u5931\u8d25\u3002"),(0,o.kt)("h3",{id:"92632-ensuretransaction-\u65b9\u6cd5-"},"9.26.3.2 ",(0,o.kt)("inlineCode",{parentName:"h3"},"EnsureTransaction()")," \u65b9\u6cd5 \u2728"),(0,o.kt)("p",null,"\u6709\u4e9b\u65f6\u5019\u6211\u4eec\u901a\u8fc7\u9759\u6001\u7c7b\u6216\u8005\u5176\u4ed6\u65b9\u5f0f\u4e0d\u5c0f\u5fc3\u521b\u5efa\u4e86\u65b0\u7684 ",(0,o.kt)("inlineCode",{parentName:"p"},"DbContext")," \u5b9e\u4f8b\uff0c\u8fd9\u65f6\u5019\u8d34\u4e86 ",(0,o.kt)("inlineCode",{parentName:"p"},"[UnitOfWork]")," \u4e5f\u4e0d\u89c1\u8d77\u6548\uff0c\u8fd9\u65f6\u5019\u53ef\u4ee5\u901a\u8fc7\u4ee5\u4e0b\u65b9\u6cd5\u6765\u786e\u8ba4\u4e8b\u52a1\u662f\u5426\u6709\u6548\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},"repository.EnsureTransaction();\n")),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"\u5982\u679c\u4e0d\u559c\u6b22\u624b\u52a8\u65b9\u5f0f\u4e5f\u53ef\u4ee5\u901a\u8fc7 ",(0,o.kt)("inlineCode",{parentName:"strong"},"[UnitOfWork(true)]")," \u5f00\u542f\u6b64\u529f\u80fd\u3002")),(0,o.kt)("p",null,"\u8be5\u65b9\u6cd5\u4f1a\u5c06\u5f53\u524d\u4ed3\u50a8\u6dfb\u52a0\u5230\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u6c60\u4e2d\uff0c\u5e76\u786e\u4fdd\u4e8b\u52a1\u53ef\u7528\u3002"),(0,o.kt)("h3",{id:"92632-\u624b\u52a8\u7ba1\u7406"},"9.26.3.2 \u624b\u52a8\u7ba1\u7406"),(0,o.kt)(i.Z,{defaultValue:"one",values:[{label:"\u793a\u4f8b\u4e00",value:"one"},{label:"\u793a\u4f8b\u4e8c",value:"two"},{label:"\u793a\u4f8b\u4e09\uff08\u5206\u5e03\u5f0f\uff09",value:"three"}],mdxType:"Tabs"},(0,o.kt)(l.Z,{value:"one",mdxType:"TabItem"},(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},'// \u5f00\u542f\u4e8b\u52a1\nusing (var transaction = _testRepository.Database.BeginTransaction())\n{\n try\n {\n _testRepository.Insert(new Blog { Url = "http://blogs.msdn.com/dotnet" });\n _testRepository.SaveNow();\n\n _testRepository.Insert(new Blog { Url = "http://blogs.msdn.com/visualstudio" });\n _testRepository.SaveNow();\n\n var blogs = _testRepository.Entity\n .OrderBy(b => b.Url)\n .ToList();\n\n // \u63d0\u4ea4\u4e8b\u52a1\n transaction.Commit();\n }\n catch (Exception)\n {\n // \u56de\u6eda\u4e8b\u52a1\n // transaction.RollBack(); // \u65b0\u7248\u672c\u81ea\u52a8\u56de\u6eda\u4e86\n }\n}\n'))),(0,o.kt)(l.Z,{value:"two",mdxType:"TabItem"},(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},'var options = new DbContextOptionsBuilder()\n .UseSqlServer(new SqlConnection(connectionString))\n .Options;\n\n// \u521b\u5efa\u8fde\u63a5\u5b57\u7b26\u4e32\nusing (var context1 = new DefaultDbContext(options))\n{\n // \u5f00\u542f\u4e8b\u52a1\n using (var transaction = context1.Database.BeginTransaction())\n {\n try\n {\n _testRepository.Insert(new Blog { Url = "http://blogs.msdn.com/dotnet" });\n _testRepository.SaveNow();\n\n context1.Blogs.Add(new Blog { Url = "http://blogs.msdn.com/dotnet" });\n context1.SaveChanges();\n\n // \u521b\u5efa\u65b0\u7684\u8fde\u63a5\u5bf9\u8c61\n using (var context2 = new DefaultDbContext(options))\n {\n // \u5171\u4eab\u8fde\u63a5\u4e8b\u52a1\n context2.Database.UseTransaction(transaction.GetDbTransaction());\n\n var blogs = context2.Blogs\n .OrderBy(b => b.Url)\n .ToList();\n }\n\n // \u63d0\u4ea4\u4e8b\u52a1\n transaction.Commit();\n }\n catch (Exception)\n {\n // \u56de\u6eda\u4e8b\u52a1\n // transaction.RollBack(); // \u65b0\u7248\u672c\u81ea\u52a8\u56de\u6eda\u4e86\n }\n }\n}\n'))),(0,o.kt)(l.Z,{value:"three",mdxType:"TabItem"},(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1-2}","{1-2}":!0},'// \u5f00\u542f\u5206\u5e03\u5f0f\u4e8b\u52a1\nusing (var scope = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions { IsolationLevel = IsolationLevel.ReadCommitted }))\n{\n using (var connection = new SqlConnection(connectionString))\n {\n connection.Open();\n\n try\n {\n // \u8fd9\u91cc\u662f Ado.NET \u64cd\u4f5c\n var command = connection.CreateCommand();\n command.CommandText = "DELETE FROM dbo.Blogs";\n command.ExecuteNonQuery();\n\n // \u521b\u5efaEF Core \u6570\u636e\u5e93\u4e0a\u4e0b\u6587\n var options = new DbContextOptionsBuilder()\n .UseSqlServer(connection)\n .Options;\n using (var context = new BloggingContext(options))\n {\n context.Blogs.Add(new Blog { Url = "http://blogs.msdn.com/dotnet" });\n context.SaveChanges();\n }\n\n // \u6846\u67b6\u5c01\u88c5\u7684\u4ed3\u50a8\n _testRepository.Insert(new Blog { Url = "http://blogs.msdn.com/dotnet" });\n _testRepository.SaveChanges();\n\n // \u63d0\u4ea4\u4e8b\u52a1\n scope.Complete();\n }\n catch (System.Exception)\n {\n // \u81ea\u52a8\u56de\u6eda\n }\n }\n}\n')))),(0,o.kt)("h2",{id:"9264-\u5de5\u4f5c\u5355\u5143\u7279\u6027\u8bf4\u660e"},"9.26.4 \u5de5\u4f5c\u5355\u5143\u7279\u6027\u8bf4\u660e"),(0,o.kt)("h3",{id:"92641-unitofwork-\u7279\u6027"},"9.26.4.1 ",(0,o.kt)("inlineCode",{parentName:"h3"},"[UnitOfWork]")," \u7279\u6027"),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"[UnitOfWork]")," \u7279\u6027\u53ea\u80fd\u7528\u4e8e\u63a7\u5236\u5668\u7684 ",(0,o.kt)("inlineCode",{parentName:"p"},"Action")," \u4e2d\uff0c\u4e00\u65e6\u8d34\u4e86 ",(0,o.kt)("inlineCode",{parentName:"p"},"[UnitOfWork]")," \u7279\u6027\u540e\uff0c\u90a3\u4e48\u8be5\u8bf7\u6c42\u81ea\u52a8\u542f\u7528\u5de5\u4f5c\u5355\u5143\u6a21\u5f0f\uff0c\u8981\u4e48\u6210\u529f\uff0c\u8981\u4e48\u5931\u8d25\u3002"),(0,o.kt)("h3",{id:"92642-manualcommit-\u7279\u6027"},"9.26.4.2 ",(0,o.kt)("inlineCode",{parentName:"h3"},"[ManualCommit]")," \u7279\u6027"),(0,o.kt)("p",null,"\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c",(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4f1a\u5728\u4e00\u6b21\u6210\u529f\u8bf7\u6c42\u4e4b\u540e\u81ea\u52a8\u8c03\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"SaveChanges()")," \u65b9\u6cd5\uff0c\u5982\u679c\u9009\u62e9\u624b\u52a8\u8c03\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"SaveChanges()")," \u65b9\u6cd5\uff0c\u53ef\u4ee5\u5728\u63a7\u5236\u5668 ",(0,o.kt)("inlineCode",{parentName:"p"},"Action")," \u4e2d\u8d34 ",(0,o.kt)("inlineCode",{parentName:"p"},"[ManualCommit]")," \u7279\u6027\u5373\u53ef\u3002"),(0,o.kt)("h2",{id:"9265-\u53cd\u9988\u4e0e\u5efa\u8bae"},"9.26.5 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,o.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,o.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))),(0,o.kt)("hr",null),(0,o.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e86\u89e3\u66f4\u591a")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u60f3\u4e86\u89e3\u66f4\u591a ",(0,o.kt)("inlineCode",{parentName:"p"},"\u4e8b\u52a1")," \u77e5\u8bc6\u53ef\u67e5\u9605 ",(0,o.kt)("a",{parentName:"p",href:"https://docs.microsoft.com/zh-cn/ef/core/saving/transactions"},"EF Core - \u4f7f\u7528\u4e8b\u52a1")," \u7ae0\u8282\u3002"))))}v.isMDXComponent=!0},6010:function(e,n,t){function a(e){var n,t,r="";if("string"==typeof e||"number"==typeof e)r+=e;else if("object"==typeof e)if(Array.isArray(e))for(n=0;n=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var l=r.createContext({}),c=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},p=function(e){var t=c(e.components);return r.createElement(l.Provider,{value:t},e.children)},d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},s=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,i=e.originalType,l=e.parentName,p=u(e,["components","mdxType","originalType","parentName"]),s=c(n),f=o,m=s["".concat(l,".").concat(f)]||s[f]||d[f]||i;return n?r.createElement(m,a(a({ref:t},p),{},{components:n})):r.createElement(m,a({ref:t},p))}));function f(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=n.length,a=new Array(i);a[0]=s;var u={};for(var l in t)hasOwnProperty.call(t,l)&&(u[l]=t[l]);u.originalType=e,u.mdxType="string"==typeof e?e:o,a[1]=u;for(var c=2;c=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var l=r.createContext({}),c=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},p=function(e){var t=c(e.components);return r.createElement(l.Provider,{value:t},e.children)},d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},s=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,a=e.originalType,l=e.parentName,p=u(e,["components","mdxType","originalType","parentName"]),s=c(n),f=o,m=s["".concat(l,".").concat(f)]||s[f]||d[f]||a;return n?r.createElement(m,i(i({ref:t},p),{},{components:n})):r.createElement(m,i({ref:t},p))}));function f(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=n.length,i=new Array(a);i[0]=s;var u={};for(var l in t)hasOwnProperty.call(t,l)&&(u[l]=t[l]);u.originalType=e,u.mdxType="string"==typeof e?e:o,i[1]=u;for(var c=2;c=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var c=n.createContext({}),p=function(e){var t=n.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},u=function(e){var t=p(e.components);return n.createElement(c.Provider,{value:t},e.children)},s={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},f=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,c=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),f=p(r),d=o,m=f["".concat(c,".").concat(d)]||f[d]||s[d]||a;return r?n.createElement(m,i(i({ref:t},u),{},{components:r})):n.createElement(m,i({ref:t},u))}));function d(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=r.length,i=new Array(a);i[0]=f;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l.mdxType="string"==typeof e?e:o,i[1]=l;for(var p=2;p();\n")))}f.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[6647],{3905:function(e,t,r){r.d(t,{Zo:function(){return u},kt:function(){return d}});var n=r(7294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var c=n.createContext({}),p=function(e){var t=n.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},u=function(e){var t=p(e.components);return n.createElement(c.Provider,{value:t},e.children)},s={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},f=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,c=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),f=p(r),d=o,m=f["".concat(c,".").concat(d)]||f[d]||s[d]||a;return r?n.createElement(m,i(i({ref:t},u),{},{components:r})):n.createElement(m,i({ref:t},u))}));function d(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=r.length,i=new Array(a);i[0]=f;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l.mdxType="string"==typeof e?e:o,i[1]=l;for(var p=2;p();\n")))}f.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/3653278d.05d483a8.js b/handbook/build/assets/js/3653278d.05d483a8.js new file mode 100644 index 00000000000..7afb95cccb3 --- /dev/null +++ b/handbook/build/assets/js/3653278d.05d483a8.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[7132],{3905:function(e,n,t){t.d(n,{Zo:function(){return p},kt:function(){return u}});var r=t(7294);function a(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function o(e){for(var n=1;n=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var c=r.createContext({}),l=function(e){var n=r.useContext(c),t=n;return e&&(t="function"==typeof e?e(n):o(o({},n),e)),t},p=function(e){var n=l(e.components);return r.createElement(c.Provider,{value:n},e.children)},d={inlineCode:"code",wrapper:function(e){var n=e.children;return r.createElement(r.Fragment,{},n)}},m=r.forwardRef((function(e,n){var t=e.components,a=e.mdxType,i=e.originalType,c=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),m=l(t),u=a,v=m["".concat(c,".").concat(u)]||m[u]||d[u]||i;return t?r.createElement(v,o(o({ref:n},p),{},{components:t})):r.createElement(v,o({ref:n},p))}));function u(e,n){var t=arguments,a=n&&n.mdxType;if("string"==typeof e||a){var i=t.length,o=new Array(i);o[0]=m;var s={};for(var c in n)hasOwnProperty.call(n,c)&&(s[c]=n[c]);s.originalType=e,s.mdxType="string"==typeof e?e:a,o[1]=s;for(var l=2;lSQL",id:"91221-\u521b\u5efa\u89c6\u56fe-sql",children:[]},{value:"9.12.2.2 \u89c6\u56fe\u6a21\u578b",id:"91222-\u89c6\u56fe\u6a21\u578b",children:[]}]},{value:"9.12.3 \u89c6\u56fe\u4f7f\u7528",id:"9123-\u89c6\u56fe\u4f7f\u7528",children:[]},{value:"9.12.4 \u89c6\u56fe\u6700\u4f73\u8bfb\u53d6\u65b9\u5f0f \u2714",id:"9124-\u89c6\u56fe\u6700\u4f73\u8bfb\u53d6\u65b9\u5f0f-",children:[]},{value:"9.12.5 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"9125-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],d={toc:p};function m(e){var n=e.components,t=(0,a.Z)(e,o);return(0,i.kt)("wrapper",(0,r.Z)({},d,t,{components:n,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"9121-\u5173\u4e8e\u89c6\u56fe"},"9.12.1 \u5173\u4e8e\u89c6\u56fe"),(0,i.kt)("p",null,"\u89c6\u56fe\u662f\u6570\u636e\u5e93\u4e2d\u975e\u5e38\u91cd\u8981\u7684\u5bf9\u8c61\uff0c\u662f\u4e00\u5f20\u865a\u62df\u8868\uff0c\u901a\u8fc7\u89c6\u56fe\u6211\u4eec\u53ef\u4ee5\u5bf9\u7ed3\u679c\u8fdb\u884c\u7b5b\u9009\u7f13\u5b58\uff0c\u540c\u65f6\u8fd8\u80fd\u5b9e\u73b0\u9897\u7c92\u5316\u6743\u9650\u63a7\u5236\uff0c\u5982\u63a7\u5236\u6307\u5b9a\u884c\uff0c\u6307\u5b9a\u5217\u3002"),(0,i.kt)("h2",{id:"9122-\u89c6\u56fe\u7684\u4f7f\u7528"},"9.12.2 \u89c6\u56fe\u7684\u4f7f\u7528"),(0,i.kt)("p",null,"\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u4e2d\u5b9e\u73b0\u89c6\u56fe\u7684\u64cd\u4f5c\u975e\u5e38\u7b80\u5355\uff0c\u53ea\u9700\u8981\u521b\u5efa\u89c6\u56fe\u6a21\u578b\uff0c\u5e76\u7ee7\u627f ",(0,i.kt)("inlineCode",{parentName:"p"},"EntityNotKey")," \u57fa\u7c7b\u5373\u53ef\u3002\u4ee3\u7801\u5982\u4e0b\uff1a"),(0,i.kt)("h3",{id:"91221-\u521b\u5efa\u89c6\u56fe-sql"},"9.12.2.1 \u521b\u5efa\u89c6\u56fe ",(0,i.kt)("inlineCode",{parentName:"h3"},"SQL")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-sql"},"CREATE VIEW V_Person AS\nSELECT Id,Name,Age,Address FROM person\n")),(0,i.kt)("h3",{id:"91222-\u89c6\u56fe\u6a21\u578b"},"9.12.2.2 \u89c6\u56fe\u6a21\u578b"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{5,10}","{5,10}":!0},'using Furion.DatabaseAccessor;\n\nnamespace Furion.Core\n{\n public class V_Person : EntityNotKey\n {\n /// \n /// \u914d\u7f6e\u89c6\u56fe\u540d\n /// \n public V_Person() : base("V_Person")\n {\n }\n\n /// \n /// \u4e3b\u952eId\n /// \n public int Id { get; set; }\n\n /// \n /// \u59d3\u540d\n /// \n public string Name { get; set; }\n\n /// \n /// \u5e74\u9f84\n /// \n public int Age { get; set; }\n\n /// \n /// \u4f4f\u5740\n /// \n public string Address { get; set; }\n }\n}\n')),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u89c6\u56fe\u540d\u79f0")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u89c6\u56fe\u5b9e\u4f53\u53ea\u9700\u8981\u7ee7\u627f ",(0,i.kt)("inlineCode",{parentName:"p"},"EntityNotKey")," \u57fa\u7c7b\u5e76\u7f16\u5199\u65e0\u53c2\u6784\u9020\u51fd\u6570\u7ee7\u627f ",(0,i.kt)("inlineCode",{parentName:"p"},'base("\u89c6\u56fe\u540d\u79f0")')," \u5373\u53ef\u3002"))),(0,i.kt)("h2",{id:"9123-\u89c6\u56fe\u4f7f\u7528"},"9.12.3 \u89c6\u56fe\u4f7f\u7528"),(0,i.kt)("p",null,"\u89c6\u56fe\u9664\u4e86\u4e0d\u80fd\u64cd\u4f5c\uff08\u5199\uff09\u4ee5\u5916\uff0c\u5176\u4ed6\u64cd\u4f5c\u548c\u8868\u64cd\u4f5c\u65e0\u5f02\u3002"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"var vEntities = v_repository.Where(u => u.Id >10).ToList();\n")),(0,i.kt)("h2",{id:"9124-\u89c6\u56fe\u6700\u4f73\u8bfb\u53d6\u65b9\u5f0f-"},"9.12.4 \u89c6\u56fe\u6700\u4f73\u8bfb\u53d6\u65b9\u5f0f \u2714"),(0,i.kt)("p",null,"\u7531\u4e8e\u89c6\u56fe\u662f\u865a\u62df\u8868\uff0c\u4e0d\u5e94\u8be5\u5bf9\u5176\u8fdb\u884c\u5199\u64cd\u4f5c\uff0c\u6240\u4ee5\u5e94\u8be5\u91c7\u7528 ",(0,i.kt)("inlineCode",{parentName:"p"},"\u53ea\u8bfb\u4ed3\u50a8\u521d\u59cb\u5316\u89c6\u56fe"),"\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{11,13,16}","{11,13,16}":!0},"using Furion.Core;\nusing Furion.DatabaseAccessor;\nusing Furion.DynamicApiController;\nusing System.Collections.Generic;\nusing System.Threading.Tasks;\n\nnamespace Furion.Application.Persons\n{\n public class FurionService : IDynamicApiController\n {\n private readonly IReadableRepository _readableRepository;\n\n public FurionService(IRepository repository)\n {\n // \u521d\u59cb\u5316\u53ea\u8bfb\u4ed3\u50a8\n _readableRepository = repository.Constraint>();\n }\n\n /// \n /// \u8bfb\u53d6\u89c6\u56fe\n /// \n /// \n public async Task> GetVPerson()\n {\n var list = await _readableRepository.AsQueryable().ToListAsync();\n return list;\n }\n }\n}\n")),(0,i.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u5c0f\u77e5\u8bc6")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u901a\u8fc7 ",(0,i.kt)("inlineCode",{parentName:"p"},".Constraint")," \u65b9\u6cd5\u53ef\u4ee5\u5c06\u4ed3\u50a8\u7ea6\u675f\u4e3a\u7279\u5b9a\u4ed3\u50a8\uff0c\u5982\u53ea\u8bfb\u4ed3\u50a8\uff0c\u53ef\u8bfb\u53ef\u5199\u4ed3\u50a8\uff0c\u53ea\u65b0\u589e\u4ed3\u50a8\u7b49\u3002"))),(0,i.kt)("h2",{id:"9125-\u53cd\u9988\u4e0e\u5efa\u8bae"},"9.12.5 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,i.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/3653278d.7b429233.js b/handbook/build/assets/js/3653278d.7b429233.js deleted file mode 100644 index d986dfd6346..00000000000 --- a/handbook/build/assets/js/3653278d.7b429233.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[7132],{3905:function(e,n,t){t.d(n,{Zo:function(){return p},kt:function(){return u}});var r=t(7294);function a(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function o(e){for(var n=1;n=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var c=r.createContext({}),l=function(e){var n=r.useContext(c),t=n;return e&&(t="function"==typeof e?e(n):o(o({},n),e)),t},p=function(e){var n=l(e.components);return r.createElement(c.Provider,{value:n},e.children)},d={inlineCode:"code",wrapper:function(e){var n=e.children;return r.createElement(r.Fragment,{},n)}},m=r.forwardRef((function(e,n){var t=e.components,a=e.mdxType,i=e.originalType,c=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),m=l(t),u=a,v=m["".concat(c,".").concat(u)]||m[u]||d[u]||i;return t?r.createElement(v,o(o({ref:n},p),{},{components:t})):r.createElement(v,o({ref:n},p))}));function u(e,n){var t=arguments,a=n&&n.mdxType;if("string"==typeof e||a){var i=t.length,o=new Array(i);o[0]=m;var s={};for(var c in n)hasOwnProperty.call(n,c)&&(s[c]=n[c]);s.originalType=e,s.mdxType="string"==typeof e?e:a,o[1]=s;for(var l=2;lSQL",id:"91221-\u521b\u5efa\u89c6\u56fe-sql",children:[]},{value:"9.12.2.2 \u89c6\u56fe\u6a21\u578b",id:"91222-\u89c6\u56fe\u6a21\u578b",children:[]}]},{value:"9.12.3 \u89c6\u56fe\u4f7f\u7528",id:"9123-\u89c6\u56fe\u4f7f\u7528",children:[]},{value:"9.12.4 \u89c6\u56fe\u6700\u4f73\u8bfb\u53d6\u65b9\u5f0f \u2714",id:"9124-\u89c6\u56fe\u6700\u4f73\u8bfb\u53d6\u65b9\u5f0f-",children:[]},{value:"9.12.5 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"9125-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],d={toc:p};function m(e){var n=e.components,t=(0,a.Z)(e,o);return(0,i.kt)("wrapper",(0,r.Z)({},d,t,{components:n,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"9121-\u5173\u4e8e\u89c6\u56fe"},"9.12.1 \u5173\u4e8e\u89c6\u56fe"),(0,i.kt)("p",null,"\u89c6\u56fe\u662f\u6570\u636e\u5e93\u4e2d\u975e\u5e38\u91cd\u8981\u7684\u5bf9\u8c61\uff0c\u662f\u4e00\u5f20\u865a\u62df\u8868\uff0c\u901a\u8fc7\u89c6\u56fe\u6211\u4eec\u53ef\u4ee5\u5bf9\u7ed3\u679c\u8fdb\u884c\u7b5b\u9009\u7f13\u5b58\uff0c\u540c\u65f6\u8fd8\u80fd\u5b9e\u73b0\u9897\u7c92\u5316\u6743\u9650\u63a7\u5236\uff0c\u5982\u63a7\u5236\u6307\u5b9a\u884c\uff0c\u6307\u5b9a\u5217\u3002"),(0,i.kt)("h2",{id:"9122-\u89c6\u56fe\u7684\u4f7f\u7528"},"9.12.2 \u89c6\u56fe\u7684\u4f7f\u7528"),(0,i.kt)("p",null,"\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u4e2d\u5b9e\u73b0\u89c6\u56fe\u7684\u64cd\u4f5c\u975e\u5e38\u7b80\u5355\uff0c\u53ea\u9700\u8981\u521b\u5efa\u89c6\u56fe\u6a21\u578b\uff0c\u5e76\u7ee7\u627f ",(0,i.kt)("inlineCode",{parentName:"p"},"EntityNotKey")," \u57fa\u7c7b\u5373\u53ef\u3002\u4ee3\u7801\u5982\u4e0b\uff1a"),(0,i.kt)("h3",{id:"91221-\u521b\u5efa\u89c6\u56fe-sql"},"9.12.2.1 \u521b\u5efa\u89c6\u56fe ",(0,i.kt)("inlineCode",{parentName:"h3"},"SQL")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-sql"},"CREATE VIEW V_Person AS\nSELECT Id,Name,Age,Address FROM person\n")),(0,i.kt)("h3",{id:"91222-\u89c6\u56fe\u6a21\u578b"},"9.12.2.2 \u89c6\u56fe\u6a21\u578b"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{5,10}","{5,10}":!0},'using Furion.DatabaseAccessor;\n\nnamespace Furion.Core\n{\n public class V_Person : EntityNotKey\n {\n /// \n /// \u914d\u7f6e\u89c6\u56fe\u540d\n /// \n public V_Person() : base("V_Person")\n {\n }\n\n /// \n /// \u4e3b\u952eId\n /// \n public int Id { get; set; }\n\n /// \n /// \u59d3\u540d\n /// \n public string Name { get; set; }\n\n /// \n /// \u5e74\u9f84\n /// \n public int Age { get; set; }\n\n /// \n /// \u4f4f\u5740\n /// \n public string Address { get; set; }\n }\n}\n')),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u89c6\u56fe\u540d\u79f0")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u89c6\u56fe\u5b9e\u4f53\u53ea\u9700\u8981\u7ee7\u627f ",(0,i.kt)("inlineCode",{parentName:"p"},"EntityNotKey")," \u57fa\u7c7b\u5e76\u7f16\u5199\u65e0\u53c2\u6784\u9020\u51fd\u6570\u7ee7\u627f ",(0,i.kt)("inlineCode",{parentName:"p"},'base("\u89c6\u56fe\u540d\u79f0")')," \u5373\u53ef\u3002"))),(0,i.kt)("h2",{id:"9123-\u89c6\u56fe\u4f7f\u7528"},"9.12.3 \u89c6\u56fe\u4f7f\u7528"),(0,i.kt)("p",null,"\u89c6\u56fe\u9664\u4e86\u4e0d\u80fd\u64cd\u4f5c\uff08\u5199\uff09\u4ee5\u5916\uff0c\u5176\u4ed6\u64cd\u4f5c\u548c\u8868\u64cd\u4f5c\u65e0\u5f02\u3002"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"var vEntities = v_repository.Where(u => u.Id >10).ToList();\n")),(0,i.kt)("h2",{id:"9124-\u89c6\u56fe\u6700\u4f73\u8bfb\u53d6\u65b9\u5f0f-"},"9.12.4 \u89c6\u56fe\u6700\u4f73\u8bfb\u53d6\u65b9\u5f0f \u2714"),(0,i.kt)("p",null,"\u7531\u4e8e\u89c6\u56fe\u662f\u865a\u62df\u8868\uff0c\u4e0d\u5e94\u8be5\u5bf9\u5176\u8fdb\u884c\u5199\u64cd\u4f5c\uff0c\u6240\u4ee5\u5e94\u8be5\u91c7\u7528 ",(0,i.kt)("inlineCode",{parentName:"p"},"\u53ea\u8bfb\u4ed3\u50a8\u521d\u59cb\u5316\u89c6\u56fe"),"\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{11,13,16}","{11,13,16}":!0},"using Furion.Core;\nusing Furion.DatabaseAccessor;\nusing Furion.DynamicApiController;\nusing System.Collections.Generic;\nusing System.Threading.Tasks;\n\nnamespace Furion.Application.Persons\n{\n public class FurionService : IDynamicApiController\n {\n private readonly IReadableRepository _readableRepository;\n\n public FurionService(IRepository repository)\n {\n // \u521d\u59cb\u5316\u53ea\u8bfb\u4ed3\u50a8\n _readableRepository = repository.Constraint>();\n }\n\n /// \n /// \u8bfb\u53d6\u89c6\u56fe\n /// \n /// \n public async Task> GetVPerson()\n {\n var list = await _readableRepository.AsQueryable().ToListAsync();\n return list;\n }\n }\n}\n")),(0,i.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u5c0f\u77e5\u8bc6")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u901a\u8fc7 ",(0,i.kt)("inlineCode",{parentName:"p"},".Constraint")," \u65b9\u6cd5\u53ef\u4ee5\u5c06\u4ed3\u50a8\u7ea6\u675f\u4e3a\u7279\u5b9a\u4ed3\u50a8\uff0c\u5982\u53ea\u8bfb\u4ed3\u50a8\uff0c\u53ef\u8bfb\u53ef\u5199\u4ed3\u50a8\uff0c\u53ea\u65b0\u589e\u4ed3\u50a8\u7b49\u3002"))),(0,i.kt)("h2",{id:"9125-\u53cd\u9988\u4e0e\u5efa\u8bae"},"9.12.5 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,i.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/3720c009.37828eaa.js b/handbook/build/assets/js/3720c009.37828eaa.js new file mode 100644 index 00000000000..cdd83532873 --- /dev/null +++ b/handbook/build/assets/js/3720c009.37828eaa.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[3751,613],{3578:function(e,t,r){r.r(t);var a=r(7294),n=r(4328),l=r(941),c=r(6584);t.default=function(e){var t=e.tags,r=(0,l.MA)();return a.createElement(n.Z,{title:r,wrapperClassName:l.kM.wrapper.docsPages,pageClassName:l.kM.page.docsTagsListPage,searchMetadatas:{tag:"doc_tags_list"}},a.createElement("div",{className:"container margin-vert--lg"},a.createElement("div",{className:"row"},a.createElement("main",{className:"col col--8 col--offset-2"},a.createElement("h1",null,r),a.createElement(c.Z,{tags:t})))))}},7211:function(e,t,r){r.d(t,{Z:function(){return m}});var a=r(7294),n=r(6010),l=r(6742),c="tag_1Okp",o="tagRegular_3MiF",s="tagWithCount_1HU1";var m=function(e){var t,r=e.permalink,m=e.name,i=e.count;return a.createElement(l.Z,{href:r,className:(0,n.Z)(c,(t={},t[o]=!i,t[s]=i,t))},m,i&&a.createElement("span",null,i))}},6584:function(e,t,r){r.d(t,{Z:function(){return s}});var a=r(7294),n=r(7211),l=r(941),c="tag_21yA";function o(e){var t=e.letterEntry;return a.createElement("article",null,a.createElement("h2",null,t.letter),a.createElement("ul",{className:"padding--none"},t.tags.map((function(e){return a.createElement("li",{key:e.permalink,className:c},a.createElement(n.Z,e))}))),a.createElement("hr",null))}var s=function(e){var t=e.tags,r=(0,l.PZ)(t);return a.createElement("section",{className:"margin-vert--lg"},r.map((function(e){return a.createElement(o,{key:e.letter,letterEntry:e})})))}},546:function(e,t,r){r.d(t,{Z:function(){return E}});var a=r(7462),n=r(3366),l=r(7294),c=r(6010),o=r(6742),s=r(941),m=r(4996),i="footerLogoLink_qW4Z",u=["to","href","label","prependBaseUrlToHref"];function f(e){var t=e.to,r=e.href,c=e.label,s=e.prependBaseUrlToHref,i=(0,n.Z)(e,u),f=(0,m.Z)(t),g=(0,m.Z)(r,{forcePrependBaseUrl:!0});return l.createElement(o.Z,(0,a.Z)({className:"footer__link-item"},r?{target:"_blank",rel:"noopener noreferrer",href:s?g:r}:{to:f},i),c)}var g=function(e){var t=e.url,r=e.alt;return l.createElement("img",{className:"footer__logo",alt:r,src:t,style:{background:"#fff",padding:"5px 10px"}})};var E=function(){var e=(0,s.LU)().footer,t=e||{},r=t.copyright,a=t.links,n=void 0===a?[]:a,o=t.logo,u=void 0===o?{}:o,E=(0,m.Z)(u.src);return e?l.createElement("footer",{className:(0,c.Z)("footer",{"footer--dark":"dark"===e.style})},l.createElement("div",{className:"container"},n&&n.length>0&&l.createElement("div",{className:"row footer__links"},n.map((function(e,t){return l.createElement("div",{key:t,className:"col footer__col"},null!=e.title?l.createElement("h4",{className:"footer__title"},e.title):null,null!=e.items&&Array.isArray(e.items)&&e.items.length>0?l.createElement("ul",{className:"footer__items"},e.items.map((function(e,t){return e.html?l.createElement("li",{key:t,className:"footer__item",dangerouslySetInnerHTML:{__html:e.html}}):l.createElement("li",{key:e.href||e.to,className:"footer__item"},l.createElement(f,e))}))):null)}))),(u||r)&&l.createElement("div",{className:"footer__bottom text--center"},u&&u.src&&l.createElement("div",{className:"margin-bottom--sm"},u.href?l.createElement("a",{href:u.href,target:"_blank",rel:"noopener noreferrer",className:i},l.createElement(g,{alt:u.alt,url:E})):l.createElement(g,{alt:u.alt,url:E})),r?l.createElement("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:r}}):null))):null}}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/389f6040.50723638.js b/handbook/build/assets/js/389f6040.50723638.js new file mode 100644 index 00000000000..aa86437d293 --- /dev/null +++ b/handbook/build/assets/js/389f6040.50723638.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[6],{1118:function(e){e.exports=JSON.parse('{"blogPosts":[{"id":"net6-preview7","metadata":{"permalink":"/furion/blog/net6-preview7","editUrl":"https://gitee.com/dotnetchina/Furion/tree/master/handbook/blog/2021-08-11-net6-preview7.mdx","source":"@site/blog/2021-08-11-net6-preview7.mdx","title":"5. .NET 6 Preview 7 \u5c1d\u9c9c","description":"2021 \u5e74 08 \u6708 11 \u65e5\uff0c\u5fae\u8f6f\u53d1\u5e03\u4e86 .NET 6 Preview 7 \u7248\u672c\uff0cFurion \u5728\u5f53\u5929\u7b2c\u4e00\u65f6\u95f4\u9002\u914d\u4e86\u8be5\u7248\u672c\uff0c\u5e76\u53d1\u5e03 Furion v3.0.0-rc.2 \u7248\u672c\u3002","date":"2021-08-11T00:00:00.000Z","formattedDate":"August 11, 2021","tags":[{"label":"furion","permalink":"/furion/blog/tags/furion"},{"label":"furos","permalink":"/furion/blog/tags/furos"},{"label":".net","permalink":"/furion/blog/tags/net"},{"label":".netcore","permalink":"/furion/blog/tags/netcore"},{"label":".net5","permalink":"/furion/blog/tags/net-5"},{"label":".net6","permalink":"/furion/blog/tags/net-6"}],"readingTime":0.58,"truncated":false,"authors":[{"name":"dotNET China","title":"\u8ba9 .NET \u5f00\u53d1\u66f4\u7b80\u5355\uff0c\u66f4\u901a\u7528\uff0c\u66f4\u6d41\u884c\u3002","url":"https://www.chinadot.net","imageURL":"https://i.loli.net/2021/01/19/M8q5a3OTZWUKicl.png"}],"nextItem":{"title":"5. \u5728\u63a7\u5236\u53f0\u4e2d\u4f7f\u7528","permalink":"/furion/blog/console"}}},{"id":"console","metadata":{"permalink":"/furion/blog/console","editUrl":"https://gitee.com/dotnetchina/Furion/tree/master/handbook/blog/2021-07-24-console.mdx","source":"@site/blog/2021-07-24-console.mdx","title":"5. \u5728\u63a7\u5236\u53f0\u4e2d\u4f7f\u7528","description":"Furion \u4ece v2.15.3+ \u7248\u672c\u5f00\u59cb\uff0c\u652f\u6301\u5168\u5e73\u53f0\u5e94\u7528\u7a0b\u5e8f\u5f00\u53d1\uff0c\u5305\u62ec Web\uff0c\u63a7\u5236\u53f0\uff0cWinForm\uff0cWPF\uff0cXamarin/MAUI \u7b49\u3002","date":"2021-07-24T00:00:00.000Z","formattedDate":"July 24, 2021","tags":[{"label":"furion","permalink":"/furion/blog/tags/furion"},{"label":"furos","permalink":"/furion/blog/tags/furos"},{"label":".net","permalink":"/furion/blog/tags/net"},{"label":".netcore","permalink":"/furion/blog/tags/netcore"},{"label":".net5","permalink":"/furion/blog/tags/net-5"},{"label":".net6","permalink":"/furion/blog/tags/net-6"}],"readingTime":0.475,"truncated":false,"authors":[{"name":"dotNET China","title":"\u8ba9 .NET \u5f00\u53d1\u66f4\u7b80\u5355\uff0c\u66f4\u901a\u7528\uff0c\u66f4\u6d41\u884c\u3002","url":"https://www.chinadot.net","imageURL":"https://i.loli.net/2021/01/19/M8q5a3OTZWUKicl.png"}],"prevItem":{"title":"5. .NET 6 Preview 7 \u5c1d\u9c9c","permalink":"/furion/blog/net6-preview7"},"nextItem":{"title":"4. .NET 6 Preview 6 \u5c1d\u9c9c","permalink":"/furion/blog/net6-preview6"}}},{"id":"net6-preview6","metadata":{"permalink":"/furion/blog/net6-preview6","editUrl":"https://gitee.com/dotnetchina/Furion/tree/master/handbook/blog/2021-07-15-net6-preview6.mdx","source":"@site/blog/2021-07-15-net6-preview6.mdx","title":"4. .NET 6 Preview 6 \u5c1d\u9c9c","description":"2021 \u5e74 07 \u6708 15 \u65e5\uff0c\u5fae\u8f6f\u53d1\u5e03\u4e86 .NET 6 Preview 6 \u7248\u672c\uff0cFurion \u5728\u5f53\u5929\u7b2c\u4e00\u65f6\u95f4\u9002\u914d\u4e86\u8be5\u7248\u672c\uff0c\u5e76\u53d1\u5e03 Furion v3.0.0-rc.1 \u7248\u672c\u3002","date":"2021-07-15T00:00:00.000Z","formattedDate":"July 15, 2021","tags":[{"label":"furion","permalink":"/furion/blog/tags/furion"},{"label":"furos","permalink":"/furion/blog/tags/furos"},{"label":".net","permalink":"/furion/blog/tags/net"},{"label":".netcore","permalink":"/furion/blog/tags/netcore"},{"label":".net5","permalink":"/furion/blog/tags/net-5"},{"label":".net6","permalink":"/furion/blog/tags/net-6"}],"readingTime":0.58,"truncated":false,"authors":[{"name":"dotNET China","title":"\u8ba9 .NET \u5f00\u53d1\u66f4\u7b80\u5355\uff0c\u66f4\u901a\u7528\uff0c\u66f4\u6d41\u884c\u3002","url":"https://www.chinadot.net","imageURL":"https://i.loli.net/2021/01/19/M8q5a3OTZWUKicl.png"}],"prevItem":{"title":"5. \u5728\u63a7\u5236\u53f0\u4e2d\u4f7f\u7528","permalink":"/furion/blog/console"},"nextItem":{"title":"3. .NET 6 Preview 5 \u5c1d\u9c9c","permalink":"/furion/blog/net6-preview5"}}},{"id":"net6-preview5","metadata":{"permalink":"/furion/blog/net6-preview5","editUrl":"https://gitee.com/dotnetchina/Furion/tree/master/handbook/blog/2021-06-18-net6-preview5.mdx","source":"@site/blog/2021-06-18-net6-preview5.mdx","title":"3. .NET 6 Preview 5 \u5c1d\u9c9c","description":"2021 \u5e74 06 \u6708 18 \u65e5\uff0c\u5fae\u8f6f\u53d1\u5e03\u4e86 .NET 6 Preview 5 \u7248\u672c\uff0cFurion \u5728\u5f53\u5929\u7b2c\u4e00\u65f6\u95f4\u9002\u914d\u4e86\u8be5\u7248\u672c\uff0c\u5e76\u53d1\u5e03 Furion v3.0.0-preview.5.21301.9 \u7248\u672c\u3002","date":"2021-06-18T00:00:00.000Z","formattedDate":"June 18, 2021","tags":[{"label":"furion","permalink":"/furion/blog/tags/furion"},{"label":"furos","permalink":"/furion/blog/tags/furos"},{"label":".net","permalink":"/furion/blog/tags/net"},{"label":".netcore","permalink":"/furion/blog/tags/netcore"},{"label":".net5","permalink":"/furion/blog/tags/net-5"},{"label":".net6","permalink":"/furion/blog/tags/net-6"}],"readingTime":0.51,"truncated":false,"authors":[{"name":"dotNET China","title":"\u8ba9 .NET \u5f00\u53d1\u66f4\u7b80\u5355\uff0c\u66f4\u901a\u7528\uff0c\u66f4\u6d41\u884c\u3002","url":"https://www.chinadot.net","imageURL":"https://i.loli.net/2021/01/19/M8q5a3OTZWUKicl.png"}],"prevItem":{"title":"4. .NET 6 Preview 6 \u5c1d\u9c9c","permalink":"/furion/blog/net6-preview6"},"nextItem":{"title":"2. \u6587\u4ef6\u4e0a\u4f20\u4e0b\u8f7d","permalink":"/furion/blog/fileupload-download"}}},{"id":"fileupload-download","metadata":{"permalink":"/furion/blog/fileupload-download","editUrl":"https://gitee.com/dotnetchina/Furion/tree/master/handbook/blog/2021-02-02-fileupload-download.mdx","source":"@site/blog/2021-02-02-fileupload-download.mdx","title":"2. \u6587\u4ef6\u4e0a\u4f20\u4e0b\u8f7d","description":"\u6587\u4ef6\u4e0b\u8f7d","date":"2021-02-02T00:00:00.000Z","formattedDate":"February 2, 2021","tags":[{"label":"furion","permalink":"/furion/blog/tags/furion"},{"label":"furos","permalink":"/furion/blog/tags/furos"},{"label":".net","permalink":"/furion/blog/tags/net"},{"label":".netcore","permalink":"/furion/blog/tags/netcore"},{"label":".net5","permalink":"/furion/blog/tags/net-5"},{"label":"upload","permalink":"/furion/blog/tags/upload"},{"label":"download","permalink":"/furion/blog/tags/download"}],"readingTime":0.625,"truncated":true,"authors":[{"name":"dotNET China","title":"\u8ba9 .NET \u5f00\u53d1\u66f4\u7b80\u5355\uff0c\u66f4\u901a\u7528\uff0c\u66f4\u6d41\u884c\u3002","url":"https://www.chinadot.net","imageURL":"https://i.loli.net/2021/01/19/M8q5a3OTZWUKicl.png"}],"prevItem":{"title":"3. .NET 6 Preview 5 \u5c1d\u9c9c","permalink":"/furion/blog/net6-preview5"},"nextItem":{"title":"1. HttpContext \u5e94\u7528","permalink":"/furion/blog/httpcontext"}}},{"id":"httpcontext","metadata":{"permalink":"/furion/blog/httpcontext","editUrl":"https://gitee.com/dotnetchina/Furion/tree/master/handbook/blog/2021-02-01-httpcontext.mdx","source":"@site/blog/2021-02-01-httpcontext.mdx","title":"1. HttpContext \u5e94\u7528","description":"HttpContext \u91cd\u5927\u8c03\u6574","date":"2021-02-01T00:00:00.000Z","formattedDate":"February 1, 2021","tags":[{"label":"furion","permalink":"/furion/blog/tags/furion"},{"label":"furos","permalink":"/furion/blog/tags/furos"},{"label":".net","permalink":"/furion/blog/tags/net"},{"label":".netcore","permalink":"/furion/blog/tags/netcore"},{"label":".net5","permalink":"/furion/blog/tags/net-5"},{"label":"httpcontext","permalink":"/furion/blog/tags/httpcontext"}],"readingTime":0.65,"truncated":true,"authors":[{"name":"dotNET China","title":"\u8ba9 .NET \u5f00\u53d1\u66f4\u7b80\u5355\uff0c\u66f4\u901a\u7528\uff0c\u66f4\u6d41\u884c\u3002","url":"https://www.chinadot.net","imageURL":"https://i.loli.net/2021/01/19/M8q5a3OTZWUKicl.png"}],"prevItem":{"title":"2. \u6587\u4ef6\u4e0a\u4f20\u4e0b\u8f7d","permalink":"/furion/blog/fileupload-download"}}}]}')}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/3a136e85.824ae458.js b/handbook/build/assets/js/3a136e85.824ae458.js deleted file mode 100644 index e389f5da746..00000000000 --- a/handbook/build/assets/js/3a136e85.824ae458.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[1254],{3905:function(e,t,r){r.d(t,{Zo:function(){return d},kt:function(){return b}});var n=r(7294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function l(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var i=n.createContext({}),p=function(e){var t=n.useContext(i),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},d=function(e){var t=p(e.components);return n.createElement(i.Provider,{value:t},e.children)},s={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},u=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,i=e.parentName,d=c(e,["components","mdxType","originalType","parentName"]),u=p(r),b=o,m=u["".concat(i,".").concat(b)]||u[b]||s[b]||a;return r?n.createElement(m,l(l({ref:t},d),{},{components:r})):n.createElement(m,l({ref:t},d))}));function b(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=r.length,l=new Array(a);l[0]=u;var c={};for(var i in t)hasOwnProperty.call(t,i)&&(c[i]=t[i]);c.originalType=e,c.mdxType="string"==typeof e?e:o,l[1]=c;for(var p=2;pSql \u4ed3\u50a8",id:"24-\u83b7\u53d6-sql-\u4ed3\u50a8",children:[]},{value:"2.5 \u83b7\u53d6 Sql \u5b9a\u4f4d\u5668\u4ed3\u50a8",id:"25-\u83b7\u53d6-sql-\u5b9a\u4f4d\u5668\u4ed3\u50a8",children:[]},{value:"2.6 \u83b7\u53d6 Sql \u4ee3\u7406\u5bf9\u8c61",id:"26-\u83b7\u53d6-sql-\u4ee3\u7406\u5bf9\u8c61",children:[]},{value:"2.7 \u83b7\u53d6\u9ed8\u8ba4\u6570\u636e\u5e93\u4e0a\u4e0b\u6587",id:"27-\u83b7\u53d6\u9ed8\u8ba4\u6570\u636e\u5e93\u4e0a\u4e0b\u6587",children:[]},{value:"2.8 \u83b7\u53d6\u5b9a\u4f4d\u5668\u6570\u636e\u5e93\u4e0a\u4e0b\u6587",id:"28-\u83b7\u53d6\u5b9a\u4f4d\u5668\u6570\u636e\u5e93\u4e0a\u4e0b\u6587",children:[]},{value:"2.9 \u521b\u5efa\u65b0\u7684\u9ed8\u8ba4\u6570\u636e\u5e93\u4e0a\u4e0b\u6587",id:"29-\u521b\u5efa\u65b0\u7684\u9ed8\u8ba4\u6570\u636e\u5e93\u4e0a\u4e0b\u6587",children:[]},{value:"2.10 \u521b\u5efa\u65b0\u7684\u5b9a\u4f4d\u5668\u6570\u636e\u5e93\u4e0a\u4e0b\u6587",id:"210-\u521b\u5efa\u65b0\u7684\u5b9a\u4f4d\u5668\u6570\u636e\u5e93\u4e0a\u4e0b\u6587",children:[]},{value:"2.11 \u6839\u636e\u5b9a\u4f4d\u5668\u7c7b\u578b\u83b7\u53d6\u4ed3\u50a8",id:"211-\u6839\u636e\u5b9a\u4f4d\u5668\u7c7b\u578b\u83b7\u53d6\u4ed3\u50a8",children:[]},{value:"2.12 \u83b7\u53d6 \u4e3b\u4ece\u5e93 \u4ed3\u50a8",id:"212-\u83b7\u53d6-\u4e3b\u4ece\u5e93-\u4ed3\u50a8",children:[]},{value:"2.13 \u83b7\u53d6 Sql \u4e3b\u5e93\u5b9a\u4f4d\u5668\u4ed3\u50a8",id:"213-\u83b7\u53d6-sql-\u4e3b\u5e93\u5b9a\u4f4d\u5668\u4ed3\u50a8",children:[]},{value:"2.14 \u83b7\u53d6\u7279\u5b9a\u5b9a\u4f4d\u5668\u4ed3\u50a8",id:"214-\u83b7\u53d6\u7279\u5b9a\u5b9a\u4f4d\u5668\u4ed3\u50a8",children:[]}],s={toc:d};function u(e){var t=e.components,r=(0,o.Z)(e,l);return(0,a.kt)("wrapper",(0,n.Z)({},s,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"21-\u83b7\u53d6\u975e\u6cdb\u578b\u4ed3\u50a8"},"2.1 \u83b7\u53d6\u975e\u6cdb\u578b\u4ed3\u50a8"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs"},"var repository = Db.GetRepository();\n")),(0,a.kt)("h2",{id:"22-\u83b7\u53d6\u6cdb\u578b\u4ed3\u50a8"},"2.2 \u83b7\u53d6\u6cdb\u578b\u4ed3\u50a8"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs"},"var entityRepository = Db.GetRepository();\n")),(0,a.kt)("h2",{id:"23-\u83b7\u53d6\u5e26\u5b9a\u4f4d\u5668\u6cdb\u578b\u4ed3\u50a8"},"2.3 \u83b7\u53d6\u5e26\u5b9a\u4f4d\u5668\u6cdb\u578b\u4ed3\u50a8"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs"},"var locatorRepository = Db.GetRepository();\n")),(0,a.kt)("h2",{id:"24-\u83b7\u53d6-sql-\u4ed3\u50a8"},"2.4 \u83b7\u53d6 ",(0,a.kt)("inlineCode",{parentName:"h2"},"Sql")," \u4ed3\u50a8"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs"},"var sqlRepository = Db.GetSqlRepository();\n")),(0,a.kt)("h2",{id:"25-\u83b7\u53d6-sql-\u5b9a\u4f4d\u5668\u4ed3\u50a8"},"2.5 \u83b7\u53d6 ",(0,a.kt)("inlineCode",{parentName:"h2"},"Sql")," \u5b9a\u4f4d\u5668\u4ed3\u50a8"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs"},"var sqlLocatorRepository = Db.GetSqlRepository();\n")),(0,a.kt)("h2",{id:"26-\u83b7\u53d6-sql-\u4ee3\u7406\u5bf9\u8c61"},"2.6 \u83b7\u53d6 ",(0,a.kt)("inlineCode",{parentName:"h2"},"Sql")," \u4ee3\u7406\u5bf9\u8c61"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs"},"var sqlProxy= Db.GetSqlProxy();\n")),(0,a.kt)("h2",{id:"27-\u83b7\u53d6\u9ed8\u8ba4\u6570\u636e\u5e93\u4e0a\u4e0b\u6587"},"2.7 \u83b7\u53d6\u9ed8\u8ba4\u6570\u636e\u5e93\u4e0a\u4e0b\u6587"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs"},"var dbContext = Db.GetDbContext();\n")),(0,a.kt)("h2",{id:"28-\u83b7\u53d6\u5b9a\u4f4d\u5668\u6570\u636e\u5e93\u4e0a\u4e0b\u6587"},"2.8 \u83b7\u53d6\u5b9a\u4f4d\u5668\u6570\u636e\u5e93\u4e0a\u4e0b\u6587"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs"},"var locatorDbContext = Db.GetDbContext();\nvar locatorDbContext2 = Db.GetDbContext(typeof(TDbContextLocator));\n")),(0,a.kt)("h2",{id:"29-\u521b\u5efa\u65b0\u7684\u9ed8\u8ba4\u6570\u636e\u5e93\u4e0a\u4e0b\u6587"},"2.9 \u521b\u5efa\u65b0\u7684\u9ed8\u8ba4\u6570\u636e\u5e93\u4e0a\u4e0b\u6587"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs"},"var dbContext = Db.GetNewDbContext();\n")),(0,a.kt)("h2",{id:"210-\u521b\u5efa\u65b0\u7684\u5b9a\u4f4d\u5668\u6570\u636e\u5e93\u4e0a\u4e0b\u6587"},"2.10 \u521b\u5efa\u65b0\u7684\u5b9a\u4f4d\u5668\u6570\u636e\u5e93\u4e0a\u4e0b\u6587"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs"},"var locatorDbContext = Db.GetNewDbContext();\nvar locatorDbContext2 = Db.GetNewDbContext(typeof(TDbContextLocator));\n")),(0,a.kt)("h2",{id:"211-\u6839\u636e\u5b9a\u4f4d\u5668\u7c7b\u578b\u83b7\u53d6\u4ed3\u50a8"},"2.11 \u6839\u636e\u5b9a\u4f4d\u5668\u7c7b\u578b\u83b7\u53d6\u4ed3\u50a8"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs"},"var repository = Db.GetRepository(dbContextLocatorType);\n")),(0,a.kt)("h2",{id:"212-\u83b7\u53d6-\u4e3b\u4ece\u5e93-\u4ed3\u50a8"},"2.12 \u83b7\u53d6 ",(0,a.kt)("inlineCode",{parentName:"h2"},"\u4e3b\u4ece\u5e93")," \u4ed3\u50a8"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs"},"var msRepository = Db.GetMSRepository();\n")),(0,a.kt)("h2",{id:"213-\u83b7\u53d6-sql-\u4e3b\u5e93\u5b9a\u4f4d\u5668\u4ed3\u50a8"},"2.13 \u83b7\u53d6 ",(0,a.kt)("inlineCode",{parentName:"h2"},"Sql")," \u4e3b\u5e93\u5b9a\u4f4d\u5668\u4ed3\u50a8"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs"},"var msLocatorRepository = Db.GetMSRepository();\n")),(0,a.kt)("h2",{id:"214-\u83b7\u53d6\u7279\u5b9a\u5b9a\u4f4d\u5668\u4ed3\u50a8"},"2.14 \u83b7\u53d6\u7279\u5b9a\u5b9a\u4f4d\u5668\u4ed3\u50a8"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs"},"var msLocatorRepository = Db.GetDbRepository();\n")))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/3a136e85.ecd77465.js b/handbook/build/assets/js/3a136e85.ecd77465.js new file mode 100644 index 00000000000..5d9bb1210ea --- /dev/null +++ b/handbook/build/assets/js/3a136e85.ecd77465.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[1254],{3905:function(e,t,r){r.d(t,{Zo:function(){return d},kt:function(){return b}});var n=r(7294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function l(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var i=n.createContext({}),p=function(e){var t=n.useContext(i),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},d=function(e){var t=p(e.components);return n.createElement(i.Provider,{value:t},e.children)},s={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},u=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,i=e.parentName,d=c(e,["components","mdxType","originalType","parentName"]),u=p(r),b=o,m=u["".concat(i,".").concat(b)]||u[b]||s[b]||a;return r?n.createElement(m,l(l({ref:t},d),{},{components:r})):n.createElement(m,l({ref:t},d))}));function b(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=r.length,l=new Array(a);l[0]=u;var c={};for(var i in t)hasOwnProperty.call(t,i)&&(c[i]=t[i]);c.originalType=e,c.mdxType="string"==typeof e?e:o,l[1]=c;for(var p=2;pSql \u4ed3\u50a8",id:"24-\u83b7\u53d6-sql-\u4ed3\u50a8",children:[]},{value:"2.5 \u83b7\u53d6 Sql \u5b9a\u4f4d\u5668\u4ed3\u50a8",id:"25-\u83b7\u53d6-sql-\u5b9a\u4f4d\u5668\u4ed3\u50a8",children:[]},{value:"2.6 \u83b7\u53d6 Sql \u4ee3\u7406\u5bf9\u8c61",id:"26-\u83b7\u53d6-sql-\u4ee3\u7406\u5bf9\u8c61",children:[]},{value:"2.7 \u83b7\u53d6\u9ed8\u8ba4\u6570\u636e\u5e93\u4e0a\u4e0b\u6587",id:"27-\u83b7\u53d6\u9ed8\u8ba4\u6570\u636e\u5e93\u4e0a\u4e0b\u6587",children:[]},{value:"2.8 \u83b7\u53d6\u5b9a\u4f4d\u5668\u6570\u636e\u5e93\u4e0a\u4e0b\u6587",id:"28-\u83b7\u53d6\u5b9a\u4f4d\u5668\u6570\u636e\u5e93\u4e0a\u4e0b\u6587",children:[]},{value:"2.9 \u521b\u5efa\u65b0\u7684\u9ed8\u8ba4\u6570\u636e\u5e93\u4e0a\u4e0b\u6587",id:"29-\u521b\u5efa\u65b0\u7684\u9ed8\u8ba4\u6570\u636e\u5e93\u4e0a\u4e0b\u6587",children:[]},{value:"2.10 \u521b\u5efa\u65b0\u7684\u5b9a\u4f4d\u5668\u6570\u636e\u5e93\u4e0a\u4e0b\u6587",id:"210-\u521b\u5efa\u65b0\u7684\u5b9a\u4f4d\u5668\u6570\u636e\u5e93\u4e0a\u4e0b\u6587",children:[]},{value:"2.11 \u6839\u636e\u5b9a\u4f4d\u5668\u7c7b\u578b\u83b7\u53d6\u4ed3\u50a8",id:"211-\u6839\u636e\u5b9a\u4f4d\u5668\u7c7b\u578b\u83b7\u53d6\u4ed3\u50a8",children:[]},{value:"2.12 \u83b7\u53d6 \u4e3b\u4ece\u5e93 \u4ed3\u50a8",id:"212-\u83b7\u53d6-\u4e3b\u4ece\u5e93-\u4ed3\u50a8",children:[]},{value:"2.13 \u83b7\u53d6 Sql \u4e3b\u5e93\u5b9a\u4f4d\u5668\u4ed3\u50a8",id:"213-\u83b7\u53d6-sql-\u4e3b\u5e93\u5b9a\u4f4d\u5668\u4ed3\u50a8",children:[]},{value:"2.14 \u83b7\u53d6\u7279\u5b9a\u5b9a\u4f4d\u5668\u4ed3\u50a8",id:"214-\u83b7\u53d6\u7279\u5b9a\u5b9a\u4f4d\u5668\u4ed3\u50a8",children:[]}],s={toc:d};function u(e){var t=e.components,r=(0,o.Z)(e,l);return(0,a.kt)("wrapper",(0,n.Z)({},s,r,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"21-\u83b7\u53d6\u975e\u6cdb\u578b\u4ed3\u50a8"},"2.1 \u83b7\u53d6\u975e\u6cdb\u578b\u4ed3\u50a8"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs"},"var repository = Db.GetRepository();\n")),(0,a.kt)("h2",{id:"22-\u83b7\u53d6\u6cdb\u578b\u4ed3\u50a8"},"2.2 \u83b7\u53d6\u6cdb\u578b\u4ed3\u50a8"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs"},"var entityRepository = Db.GetRepository();\n")),(0,a.kt)("h2",{id:"23-\u83b7\u53d6\u5e26\u5b9a\u4f4d\u5668\u6cdb\u578b\u4ed3\u50a8"},"2.3 \u83b7\u53d6\u5e26\u5b9a\u4f4d\u5668\u6cdb\u578b\u4ed3\u50a8"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs"},"var locatorRepository = Db.GetRepository();\n")),(0,a.kt)("h2",{id:"24-\u83b7\u53d6-sql-\u4ed3\u50a8"},"2.4 \u83b7\u53d6 ",(0,a.kt)("inlineCode",{parentName:"h2"},"Sql")," \u4ed3\u50a8"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs"},"var sqlRepository = Db.GetSqlRepository();\n")),(0,a.kt)("h2",{id:"25-\u83b7\u53d6-sql-\u5b9a\u4f4d\u5668\u4ed3\u50a8"},"2.5 \u83b7\u53d6 ",(0,a.kt)("inlineCode",{parentName:"h2"},"Sql")," \u5b9a\u4f4d\u5668\u4ed3\u50a8"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs"},"var sqlLocatorRepository = Db.GetSqlRepository();\n")),(0,a.kt)("h2",{id:"26-\u83b7\u53d6-sql-\u4ee3\u7406\u5bf9\u8c61"},"2.6 \u83b7\u53d6 ",(0,a.kt)("inlineCode",{parentName:"h2"},"Sql")," \u4ee3\u7406\u5bf9\u8c61"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs"},"var sqlProxy= Db.GetSqlProxy();\n")),(0,a.kt)("h2",{id:"27-\u83b7\u53d6\u9ed8\u8ba4\u6570\u636e\u5e93\u4e0a\u4e0b\u6587"},"2.7 \u83b7\u53d6\u9ed8\u8ba4\u6570\u636e\u5e93\u4e0a\u4e0b\u6587"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs"},"var dbContext = Db.GetDbContext();\n")),(0,a.kt)("h2",{id:"28-\u83b7\u53d6\u5b9a\u4f4d\u5668\u6570\u636e\u5e93\u4e0a\u4e0b\u6587"},"2.8 \u83b7\u53d6\u5b9a\u4f4d\u5668\u6570\u636e\u5e93\u4e0a\u4e0b\u6587"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs"},"var locatorDbContext = Db.GetDbContext();\nvar locatorDbContext2 = Db.GetDbContext(typeof(TDbContextLocator));\n")),(0,a.kt)("h2",{id:"29-\u521b\u5efa\u65b0\u7684\u9ed8\u8ba4\u6570\u636e\u5e93\u4e0a\u4e0b\u6587"},"2.9 \u521b\u5efa\u65b0\u7684\u9ed8\u8ba4\u6570\u636e\u5e93\u4e0a\u4e0b\u6587"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs"},"var dbContext = Db.GetNewDbContext();\n")),(0,a.kt)("h2",{id:"210-\u521b\u5efa\u65b0\u7684\u5b9a\u4f4d\u5668\u6570\u636e\u5e93\u4e0a\u4e0b\u6587"},"2.10 \u521b\u5efa\u65b0\u7684\u5b9a\u4f4d\u5668\u6570\u636e\u5e93\u4e0a\u4e0b\u6587"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs"},"var locatorDbContext = Db.GetNewDbContext();\nvar locatorDbContext2 = Db.GetNewDbContext(typeof(TDbContextLocator));\n")),(0,a.kt)("h2",{id:"211-\u6839\u636e\u5b9a\u4f4d\u5668\u7c7b\u578b\u83b7\u53d6\u4ed3\u50a8"},"2.11 \u6839\u636e\u5b9a\u4f4d\u5668\u7c7b\u578b\u83b7\u53d6\u4ed3\u50a8"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs"},"var repository = Db.GetRepository(dbContextLocatorType);\n")),(0,a.kt)("h2",{id:"212-\u83b7\u53d6-\u4e3b\u4ece\u5e93-\u4ed3\u50a8"},"2.12 \u83b7\u53d6 ",(0,a.kt)("inlineCode",{parentName:"h2"},"\u4e3b\u4ece\u5e93")," \u4ed3\u50a8"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs"},"var msRepository = Db.GetMSRepository();\n")),(0,a.kt)("h2",{id:"213-\u83b7\u53d6-sql-\u4e3b\u5e93\u5b9a\u4f4d\u5668\u4ed3\u50a8"},"2.13 \u83b7\u53d6 ",(0,a.kt)("inlineCode",{parentName:"h2"},"Sql")," \u4e3b\u5e93\u5b9a\u4f4d\u5668\u4ed3\u50a8"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs"},"var msLocatorRepository = Db.GetMSRepository();\n")),(0,a.kt)("h2",{id:"214-\u83b7\u53d6\u7279\u5b9a\u5b9a\u4f4d\u5668\u4ed3\u50a8"},"2.14 \u83b7\u53d6\u7279\u5b9a\u5b9a\u4f4d\u5668\u4ed3\u50a8"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs"},"var msLocatorRepository = Db.GetDbRepository();\n")))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/3d66e15d.45dfa4aa.js b/handbook/build/assets/js/3d66e15d.2731c46d.js similarity index 65% rename from handbook/build/assets/js/3d66e15d.45dfa4aa.js rename to handbook/build/assets/js/3d66e15d.2731c46d.js index 2394fb3651e..b2e2775ff69 100644 --- a/handbook/build/assets/js/3d66e15d.45dfa4aa.js +++ b/handbook/build/assets/js/3d66e15d.2731c46d.js @@ -1 +1 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[4012],{3905:function(e,t,r){r.d(t,{Zo:function(){return u},kt:function(){return f}});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function c(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var l=n.createContext({}),i=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):c(c({},t),e)),r},u=function(e){var t=i(e.components);return n.createElement(l.Provider,{value:t},e.children)},p={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),d=i(r),f=a,m=d["".concat(l,".").concat(f)]||d[f]||p[f]||o;return r?n.createElement(m,c(c({ref:t},u),{},{components:r})):n.createElement(m,c({ref:t},u))}));function f(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,c=new Array(o);c[0]=d;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s.mdxType="string"==typeof e?e:a,c[1]=s;for(var i=2;i("messageId", (i,p) => {\n\n});\n')),(0,o.kt)("h2",{id:"92-\u53d1\u9001\u6d88\u606f"},"9.2 \u53d1\u9001\u6d88\u606f"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},'MessageCenter.Send("messageId", new {});\n')),(0,o.kt)("h2",{id:"93-\u53d6\u6d88\u8ba2\u9605"},"9.3 \u53d6\u6d88\u8ba2\u9605"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},'MessageCenter.Unsubscribe("messageId");\n')))}d.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[4012],{3905:function(e,t,r){r.d(t,{Zo:function(){return u},kt:function(){return f}});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function c(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var l=n.createContext({}),i=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):c(c({},t),e)),r},u=function(e){var t=i(e.components);return n.createElement(l.Provider,{value:t},e.children)},p={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),d=i(r),f=a,m=d["".concat(l,".").concat(f)]||d[f]||p[f]||o;return r?n.createElement(m,c(c({ref:t},u),{},{components:r})):n.createElement(m,c({ref:t},u))}));function f(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=r.length,c=new Array(o);c[0]=d;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s.mdxType="string"==typeof e?e:a,c[1]=s;for(var i=2;i("messageId", (i,p) => {\n\n});\n')),(0,o.kt)("h2",{id:"92-\u53d1\u9001\u6d88\u606f"},"9.2 \u53d1\u9001\u6d88\u606f"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},'MessageCenter.Send("messageId", new {});\n')),(0,o.kt)("h2",{id:"93-\u53d6\u6d88\u8ba2\u9605"},"9.3 \u53d6\u6d88\u8ba2\u9605"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},'MessageCenter.Unsubscribe("messageId");\n')))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/3d72d16d.57458fb0.js b/handbook/build/assets/js/3d72d16d.57458fb0.js deleted file mode 100644 index f48b7eb76f4..00000000000 --- a/handbook/build/assets/js/3d72d16d.57458fb0.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[4638],{3905:function(e,n,t){t.d(n,{Zo:function(){return p},kt:function(){return m}});var a=t(7294);function i(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function o(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function s(e){for(var n=1;n=0||(i[t]=e[t]);return i}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(i[t]=e[t])}return i}var l=a.createContext({}),c=function(e){var n=a.useContext(l),t=n;return e&&(t="function"==typeof e?e(n):s(s({},n),e)),t},p=function(e){var n=c(e.components);return a.createElement(l.Provider,{value:n},e.children)},d={inlineCode:"code",wrapper:function(e){var n=e.children;return a.createElement(a.Fragment,{},n)}},u=a.forwardRef((function(e,n){var t=e.components,i=e.mdxType,o=e.originalType,l=e.parentName,p=r(e,["components","mdxType","originalType","parentName"]),u=c(t),m=i,k=u["".concat(l,".").concat(m)]||u[m]||d[m]||o;return t?a.createElement(k,s(s({ref:n},p),{},{components:t})):a.createElement(k,s({ref:n},p))}));function m(e,n){var t=arguments,i=n&&n.mdxType;if("string"==typeof e||i){var o=t.length,s=new Array(o);s[0]=u;var r={};for(var l in n)hasOwnProperty.call(n,l)&&(r[l]=n[l]);r.originalType=e,r.mdxType="string"==typeof e?e:i,s[1]=r;for(var c=2;cCookie \u4f7f\u7528",id:"3221-cookie-\u4f7f\u7528",children:[]},{value:"32.2.2 Session \u4f7f\u7528",id:"3222-session-\u4f7f\u7528",children:[]},{value:"32.2.3 Query Strings \u4f7f\u7528",id:"3223-query-strings-\u4f7f\u7528",children:[]},{value:"32.2.4 HttpContext.Items \u4f7f\u7528",id:"3224-httpcontextitems-\u4f7f\u7528",children:[]},{value:"32.2.5 Cache \u65b9\u5f0f",id:"3225-cache-\u65b9\u5f0f",children:[]},{value:"32.2.6 AsyncLocal<T> \u65b9\u5f0f",id:"3226-asynclocalt-\u65b9\u5f0f",children:[]}]},{value:"32.3 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"323-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],d={toc:p};function u(e){var n=e.components,t=(0,i.Z)(e,s);return(0,o.kt)("wrapper",(0,a.Z)({},d,t,{components:n,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"321-\u5173\u4e8e\u4f1a\u8bdd\u548c\u72b6\u6001\u7ba1\u7406"},"32.1 \u5173\u4e8e\u4f1a\u8bdd\u548c\u72b6\u6001\u7ba1\u7406"),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"HTTP")," \u662f\u65e0\u72b6\u6001\u7684\u534f\u8bae\u3002 \u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c",(0,o.kt)("inlineCode",{parentName:"p"},"HTTP")," \u8bf7\u6c42\u662f\u4e0d\u4fdd\u7559\u7528\u6237\u503c\u7684\u72ec\u7acb\u6d88\u606f\u3002\u4f46\u662f\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7\u4ee5\u4e0b\u51e0\u79cd\u65b9\u5f0f\u4fdd\u7559\u8bf7\u6c42\u7528\u6237\u6570\u636e\uff1a"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"Cookie"),"\uff1a\u901a\u5e38\u5b58\u50a8\u5728\u5ba2\u6237\u7aef\u7684\u6570\u636e\uff0c\u8bf7\u6c42\u65f6\u5e26\u56de\u670d\u52a1\u7aef"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"Session"),"\uff1a\u5b58\u50a8\u5728\u670d\u52a1\u7aef\u7684\u6570\u636e\uff08\u53ef\u4ee5\u5728\u5b58\u50a8\u5728\u5185\u5b58\u3001\u8fdb\u7a0b\u7b49\u4ecb\u8d28\u4e2d\uff09"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"Query Strings"),"\uff1a\u901a\u8fc7 ",(0,o.kt)("inlineCode",{parentName:"li"},"Http")," \u8bf7\u6c42\u5730\u5740\u53c2\u6570\u5171\u4eab"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"HttpContext.Items"),"\uff1a\u5b58\u50a8\u5728\u670d\u52a1\u7aef\u7aef\uff0c\u53ea\u5728\u8bf7\u6c42\u58f0\u660e\u5468\u671f\u5185\u4f7f\u7528\uff0c\u8bf7\u6c42\u7ed3\u675f\u81ea\u52a8\u9500\u6bc1"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"Cache"),"\uff1a\u670d\u52a1\u7aef\u7f13\u5b58\uff0c\u5305\u62ec\u5185\u5b58\u7f13\u5b58\u3001\u5206\u5e03\u5f0f\u5185\u5b58\u7f13\u5b58\u3001IO \u7f13\u5b58\u3001\u5e8f\u5217\u5316\u7f13\u5b58\u4ee5\u53ca\u6570\u636e\u5e93\u7f13\u5b58"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"AsyncLocal"),"\uff1a\u901a\u8fc7\u5f02\u6b65\u63a7\u5236\u6d41\u5b9e\u73b0\u672c\u5730\u6570\u636e\u5171\u4eab\uff0c\u8de8\u7ebf\u7a0b")),(0,o.kt)("h2",{id:"322-\u5982\u4f55\u4f7f\u7528"},"32.2 \u5982\u4f55\u4f7f\u7528"),(0,o.kt)("h3",{id:"3221-cookie-\u4f7f\u7528"},"32.2.1 ",(0,o.kt)("inlineCode",{parentName:"h3"},"Cookie")," \u4f7f\u7528"),(0,o.kt)("p",null,"\u4f7f\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"Cookie")," \u975e\u5e38\u7b80\u5355\uff0c\u5982\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},'// \u8bfb\u53d6 Cookies\nvar value = httpContext.Request.Cookies["key"];\n\n// \u8bbe\u7f6e Cookies\nvar option = new CookieOptions();\noption.Expires = DateTime.Now.AddMilliseconds(10);\nhttpContext.Response.Cookies.Append(key, value, option);\n\n// \u5220\u9664 Cookies\nhttpContext.Response.Cookies.Delete(key);\n')),(0,o.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u7279\u522b\u8bf4\u660e")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},(0,o.kt)("inlineCode",{parentName:"p"},"httpContext")," \u53ef\u4ee5\u901a\u8fc7 ",(0,o.kt)("inlineCode",{parentName:"p"},"IHttpContextAccessor")," \u83b7\u53d6\uff0c\u4e5f\u53ef\u4ee5\u901a\u8fc7 ",(0,o.kt)("inlineCode",{parentName:"p"},"App.HttpContext")," \u83b7\u53d6\u3002"))),(0,o.kt)("p",null,"\u6211\u4eec\u8fd8\u53ef\u4ee5\u901a\u8fc7 ",(0,o.kt)("inlineCode",{parentName:"p"},"Cookie")," \u5b9e\u73b0\u6388\u6743\u529f\u80fd\u53ca\u5355\u70b9\u767b\u5f55\uff08SSO\uff09\uff1a",(0,o.kt)("a",{parentName:"p",href:"https://docs.microsoft.com/zh-cn/aspnet/core/security/cookie-sharing?view=aspnetcore-5.0"},"\u7f51\u7ad9\u5171\u4eab Cookie")),(0,o.kt)("h3",{id:"3222-session-\u4f7f\u7528"},"32.2.2 ",(0,o.kt)("inlineCode",{parentName:"h3"},"Session")," \u4f7f\u7528"),(0,o.kt)("p",null,"\u5728\u4f7f\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"Session")," \u4e4b\u524d\uff0c\u5fc5\u987b\u6ce8\u518c ",(0,o.kt)("inlineCode",{parentName:"p"},"Session")," \u670d\u52a1\uff1a\uff08\u5982\u679c"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,5,7-12,32,37,39}","{1,5,7-12,32,37,39}":!0},'public class Startup\n{\n public void ConfigureServices(IServiceCollection services)\n {\n // services.AddDistributedMemoryCache(); \u6846\u67b6\u5185\u90e8\u5df2\u7ecf\u9ed8\u8ba4\u6ce8\u518c\n\n services.AddSession(options =>\n {\n options.IdleTimeout = TimeSpan.FromSeconds(10);\n options.Cookie.HttpOnly = true;\n options.Cookie.IsEssential = true;\n }); // \u6ce8\u610f\u5728\u63a7\u5236\u5668\u4e4b\u524d\u6ce8\u518c\uff01\uff01\uff01\uff01\n\n services.AddControllersWithViews();\n }\n\n public void Configure(IApplicationBuilder app, IWebHostEnvironment env)\n {\n if (env.IsDevelopment())\n {\n app.UseDeveloperExceptionPage();\n }\n else\n {\n app.UseExceptionHandler("/Home/Error");\n app.UseHsts();\n }\n\n app.UseHttpsRedirection();\n app.UseStaticFiles();\n\n app.UseRouting();\n\n app.UseAuthentication();\n app.UseAuthorization();\n\n app.UseSession();\n\n app.UseEndpoints(endpoints =>\n {\n endpoints.MapDefaultControllerRoute();\n endpoints.MapRazorPages();\n });\n }\n}\n')),(0,o.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u4e2d\u95f4\u4ef6\u6ce8\u518c\u987a\u5e8f")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},(0,o.kt)("inlineCode",{parentName:"p"},"app.UseSession()")," \u5fc5\u987b\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"app.UseRouting()")," \u548c ",(0,o.kt)("inlineCode",{parentName:"p"},"app.UseEndpoints()")," ",(0,o.kt)("strong",{parentName:"p"},"\u4e4b\u95f4"),"\u6ce8\u518c\uff01"))),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"\u5e38\u89c1\u4f8b\u5b50\uff1a")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},'// \u8bfb\u53d6 Session\nvar byteArr = httpContext.Session.Get("key"); // \u8fd4\u56de byte[]\nvar str = httpContext.Session.GetString("key"); // \u8fd4\u56de string[]\nvar num = httpContext.Session.GetInt32("key"); // \u8fd4\u56de int\n\n// \u8bbe\u7f6e Session\nhttpContext.Session.SetString("key", "value"); // \u8bbe\u7f6e\u5b57\u7b26\u4e32\nhttpContext.Session.SetInt32("key", 1); // \u8bbe\u7f6e int \u7c7b\u578b\n')),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"\u81ea\u5b9a\u4e49\u8bbe\u7f6e\u4efb\u610f\u7c7b\u578b\u62d3\u5c55\uff1a"))),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},"public static class SessionExtensions\n{\n public static void Set(this ISession session, string key, T value)\n {\n session.SetString(key, JsonSerializer.Serialize(value));\n }\n\n public static T Get(this ISession session, string key)\n {\n var value = session.GetString(key);\n return value == null ? default : JsonSerializer.Deserialize(value);\n }\n}\n")),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"\u9632\u6b62 ",(0,o.kt)("inlineCode",{parentName:"li"},"Session ID")," \u6539\u53d8\u6216 ",(0,o.kt)("inlineCode",{parentName:"li"},"Session")," \u5931\u6548")),(0,o.kt)("p",null,"\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"Startup.cs")," \u7684 ",(0,o.kt)("inlineCode",{parentName:"p"},"ConfigureServices")," \u914d\u7f6e\u5373\u53ef\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},"services.Configure(options =>\n{\n \u3000\u3000options.CheckConsentNeeded = context => false; // \u9ed8\u8ba4\u4e3atrue\uff0c\u6539\u4e3afalse\n\u3000\u3000 options.MinimumSameSitePolicy = SameSiteMode.None;\n});\n")),(0,o.kt)("h3",{id:"3223-query-strings-\u4f7f\u7528"},"32.2.3 ",(0,o.kt)("inlineCode",{parentName:"h3"},"Query Strings")," \u4f7f\u7528"),(0,o.kt)("p",null,"\u8be5\u65b9\u5f0f\u4f7f\u7528\u975e\u5e38\u7b80\u5355\uff0c\u53ea\u9700 ",(0,o.kt)("inlineCode",{parentName:"p"},'httpContext.Request.Query["key"]')," \u5373\u53ef\u3002"),(0,o.kt)("h3",{id:"3224-httpcontextitems-\u4f7f\u7528"},"32.2.4 ",(0,o.kt)("inlineCode",{parentName:"h3"},"HttpContext.Items")," \u4f7f\u7528"),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"HttpContext")," \u5bf9\u8c61\u63d0\u4f9b\u4e86 ",(0,o.kt)("inlineCode",{parentName:"p"},"Items")," \u96c6\u5408\u5c5e\u6027\uff0c\u53ef\u4ee5\u8ba9\u6211\u4eec\u5728\u5355\u6b21\u8bf7\u6c42\u95f4\u5171\u4eab\u6570\u636e\uff0c\u8bf7\u6c42\u7ed3\u675f\u7acb\u5373\u9500\u6bc1\uff0c\u53ef\u4ee5\u5b58\u50a8\u4efb\u4f55\u6570\u636e\u3002\u4f7f\u7528\u4e5f\u975e\u5e38\u7b80\u5355\uff0c\u5982\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},'// \u8bfb\u53d6\nvar value = httpContext.Items["key"];\n\n// \u6dfb\u52a0\nhttpContext.Items["key"] = "\u4efb\u4f55\u503c\u5305\u62ec\u5bf9\u8c61";\n\n// \u5220\u9664\nhttpContext.Items.Remove("key");\n')),(0,o.kt)("h3",{id:"3225-cache-\u65b9\u5f0f"},"32.2.5 ",(0,o.kt)("inlineCode",{parentName:"h3"},"Cache")," \u65b9\u5f0f"),(0,o.kt)("p",null,"\u53c2\u89c1 ",(0,o.kt)("a",{parentName:"p",href:"/docs/cache"},"\u5206\u5e03\u5f0f\u7f13\u5b58")," \u6587\u6863"),(0,o.kt)("h3",{id:"3226-asynclocalt-\u65b9\u5f0f"},"32.2.6 ",(0,o.kt)("inlineCode",{parentName:"h3"},"AsyncLocal")," \u65b9\u5f0f"),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"AsyncLocal")," \u53ef\u4ee5\u8bf4\u662f\u8fdb\u7a0b\u5185\u5171\u4eab\u6570\u636e\u7684\u5927\u5229\u5668\uff0c\u53ef\u4ee5\u901a\u8fc7\u8be5\u7c7b\u5b9e\u73b0\u8de8\u7ebf\u7a0b\u3001\u5f02\u6b65\u63a7\u5236\u6d41\u4e2d\u5171\u4eab\u6570\u636e\uff0c\u5982\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},"using System;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nclass Example\n{\n static AsyncLocal _asyncLocalString = new AsyncLocal();\n\n static ThreadLocal _threadLocalString = new ThreadLocal();\n\n static async Task AsyncMethodA()\n {\n // Start multiple async method calls, with different AsyncLocal values.\n // We also set ThreadLocal values, to demonstrate how the two mechanisms differ.\n _asyncLocalString.Value = \"Value 1\";\n _threadLocalString.Value = \"Value 1\";\n var t1 = AsyncMethodB(\"Value 1\");\n\n _asyncLocalString.Value = \"Value 2\";\n _threadLocalString.Value = \"Value 2\";\n var t2 = AsyncMethodB(\"Value 2\");\n\n // Await both calls\n await t1;\n await t2;\n }\n\n static async Task AsyncMethodB(string expectedValue)\n {\n Console.WriteLine(\"Entering AsyncMethodB.\");\n Console.WriteLine(\" Expected '{0}', AsyncLocal value is '{1}', ThreadLocal value is '{2}'\",\n expectedValue, _asyncLocalString.Value, _threadLocalString.Value);\n await Task.Delay(100);\n Console.WriteLine(\"Exiting AsyncMethodB.\");\n Console.WriteLine(\" Expected '{0}', got '{1}', ThreadLocal value is '{2}'\",\n expectedValue, _asyncLocalString.Value, _threadLocalString.Value);\n }\n\n static async Task Main(string[] args)\n {\n await AsyncMethodA();\n }\n}\n// The example displays the following output:\n// Entering AsyncMethodB.\n// Expected 'Value 1', AsyncLocal value is 'Value 1', ThreadLocal value is 'Value 1'\n// Entering AsyncMethodB.\n// Expected 'Value 2', AsyncLocal value is 'Value 2', ThreadLocal value is 'Value 2'\n// Exiting AsyncMethodB.\n// Expected 'Value 2', got 'Value 2', ThreadLocal value is ''\n// Exiting AsyncMethodB.\n// Expected 'Value 1', got 'Value 1', ThreadLocal value is ''\n")),(0,o.kt)("p",null,"\u4e3a\u4e86\u7b80\u5316\u64cd\u4f5c\uff0c",(0,o.kt)("inlineCode",{parentName:"p"},"Furion v2.18+")," \u7248\u672c\u5b9e\u73b0\u4e86\u8f7b\u91cf\u7ea7\u7684 ",(0,o.kt)("inlineCode",{parentName:"p"},"CallContext")," \u9759\u6001\u7c7b\uff0c\u5185\u90e8\u4f7f\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"AsyncLocal")," \u5b9e\u73b0\uff0c\u4f7f\u7528\u5982\u4e0b\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},'CallContext.SetLocalValue("name", "Furion");\nCallContext.GetLocalValue("name");\n\nCallContext.SetLocalValue("count", 1);\nCallContext.GetLocalValue("count");\n')),(0,o.kt)("p",null,"\u4e86\u89e3\u66f4\u591a ",(0,o.kt)("inlineCode",{parentName:"p"},"AsyncLocal")," \u77e5\u8bc6\uff1a",(0,o.kt)("a",{parentName:"p",href:"https://docs.microsoft.com/zh-cn/dotnet/api/system.threading.asynclocal-1?redirectedfrom=MSDN&view=net-5.0"},"https://docs.microsoft.com/zh-cn/dotnet/api/system.threading.asynclocal-1?redirectedfrom=MSDN&view=net-5.0")),(0,o.kt)("h2",{id:"323-\u53cd\u9988\u4e0e\u5efa\u8bae"},"32.3 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,o.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,o.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/3d72d16d.c1102569.js b/handbook/build/assets/js/3d72d16d.c1102569.js new file mode 100644 index 00000000000..15603ce949e --- /dev/null +++ b/handbook/build/assets/js/3d72d16d.c1102569.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[4638],{3905:function(e,n,t){t.d(n,{Zo:function(){return p},kt:function(){return m}});var a=t(7294);function i(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function o(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function s(e){for(var n=1;n=0||(i[t]=e[t]);return i}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(i[t]=e[t])}return i}var l=a.createContext({}),c=function(e){var n=a.useContext(l),t=n;return e&&(t="function"==typeof e?e(n):s(s({},n),e)),t},p=function(e){var n=c(e.components);return a.createElement(l.Provider,{value:n},e.children)},d={inlineCode:"code",wrapper:function(e){var n=e.children;return a.createElement(a.Fragment,{},n)}},u=a.forwardRef((function(e,n){var t=e.components,i=e.mdxType,o=e.originalType,l=e.parentName,p=r(e,["components","mdxType","originalType","parentName"]),u=c(t),m=i,k=u["".concat(l,".").concat(m)]||u[m]||d[m]||o;return t?a.createElement(k,s(s({ref:n},p),{},{components:t})):a.createElement(k,s({ref:n},p))}));function m(e,n){var t=arguments,i=n&&n.mdxType;if("string"==typeof e||i){var o=t.length,s=new Array(o);s[0]=u;var r={};for(var l in n)hasOwnProperty.call(n,l)&&(r[l]=n[l]);r.originalType=e,r.mdxType="string"==typeof e?e:i,s[1]=r;for(var c=2;cCookie \u4f7f\u7528",id:"3221-cookie-\u4f7f\u7528",children:[]},{value:"32.2.2 Session \u4f7f\u7528",id:"3222-session-\u4f7f\u7528",children:[]},{value:"32.2.3 Query Strings \u4f7f\u7528",id:"3223-query-strings-\u4f7f\u7528",children:[]},{value:"32.2.4 HttpContext.Items \u4f7f\u7528",id:"3224-httpcontextitems-\u4f7f\u7528",children:[]},{value:"32.2.5 Cache \u65b9\u5f0f",id:"3225-cache-\u65b9\u5f0f",children:[]},{value:"32.2.6 AsyncLocal<T> \u65b9\u5f0f",id:"3226-asynclocalt-\u65b9\u5f0f",children:[]}]},{value:"32.3 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"323-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],d={toc:p};function u(e){var n=e.components,t=(0,i.Z)(e,s);return(0,o.kt)("wrapper",(0,a.Z)({},d,t,{components:n,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"321-\u5173\u4e8e\u4f1a\u8bdd\u548c\u72b6\u6001\u7ba1\u7406"},"32.1 \u5173\u4e8e\u4f1a\u8bdd\u548c\u72b6\u6001\u7ba1\u7406"),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"HTTP")," \u662f\u65e0\u72b6\u6001\u7684\u534f\u8bae\u3002 \u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c",(0,o.kt)("inlineCode",{parentName:"p"},"HTTP")," \u8bf7\u6c42\u662f\u4e0d\u4fdd\u7559\u7528\u6237\u503c\u7684\u72ec\u7acb\u6d88\u606f\u3002\u4f46\u662f\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7\u4ee5\u4e0b\u51e0\u79cd\u65b9\u5f0f\u4fdd\u7559\u8bf7\u6c42\u7528\u6237\u6570\u636e\uff1a"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"Cookie"),"\uff1a\u901a\u5e38\u5b58\u50a8\u5728\u5ba2\u6237\u7aef\u7684\u6570\u636e\uff0c\u8bf7\u6c42\u65f6\u5e26\u56de\u670d\u52a1\u7aef"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"Session"),"\uff1a\u5b58\u50a8\u5728\u670d\u52a1\u7aef\u7684\u6570\u636e\uff08\u53ef\u4ee5\u5728\u5b58\u50a8\u5728\u5185\u5b58\u3001\u8fdb\u7a0b\u7b49\u4ecb\u8d28\u4e2d\uff09"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"Query Strings"),"\uff1a\u901a\u8fc7 ",(0,o.kt)("inlineCode",{parentName:"li"},"Http")," \u8bf7\u6c42\u5730\u5740\u53c2\u6570\u5171\u4eab"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"HttpContext.Items"),"\uff1a\u5b58\u50a8\u5728\u670d\u52a1\u7aef\uff0c\u53ea\u5728\u8bf7\u6c42\u58f0\u660e\u5468\u671f\u5185\u4f7f\u7528\uff0c\u8bf7\u6c42\u7ed3\u675f\u81ea\u52a8\u9500\u6bc1"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"Cache"),"\uff1a\u670d\u52a1\u7aef\u7f13\u5b58\uff0c\u5305\u62ec\u5185\u5b58\u7f13\u5b58\u3001\u5206\u5e03\u5f0f\u5185\u5b58\u7f13\u5b58\u3001IO \u7f13\u5b58\u3001\u5e8f\u5217\u5316\u7f13\u5b58\u4ee5\u53ca\u6570\u636e\u5e93\u7f13\u5b58"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"AsyncLocal"),"\uff1a\u901a\u8fc7\u5f02\u6b65\u63a7\u5236\u6d41\u5b9e\u73b0\u672c\u5730\u6570\u636e\u5171\u4eab\uff0c\u8de8\u7ebf\u7a0b")),(0,o.kt)("h2",{id:"322-\u5982\u4f55\u4f7f\u7528"},"32.2 \u5982\u4f55\u4f7f\u7528"),(0,o.kt)("h3",{id:"3221-cookie-\u4f7f\u7528"},"32.2.1 ",(0,o.kt)("inlineCode",{parentName:"h3"},"Cookie")," \u4f7f\u7528"),(0,o.kt)("p",null,"\u4f7f\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"Cookie")," \u975e\u5e38\u7b80\u5355\uff0c\u5982\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},'// \u8bfb\u53d6 Cookies\nvar value = httpContext.Request.Cookies["key"];\n\n// \u8bbe\u7f6e Cookies\nvar option = new CookieOptions();\noption.Expires = DateTime.Now.AddMilliseconds(10);\nhttpContext.Response.Cookies.Append(key, value, option);\n\n// \u5220\u9664 Cookies\nhttpContext.Response.Cookies.Delete(key);\n')),(0,o.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u7279\u522b\u8bf4\u660e")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},(0,o.kt)("inlineCode",{parentName:"p"},"httpContext")," \u53ef\u4ee5\u901a\u8fc7 ",(0,o.kt)("inlineCode",{parentName:"p"},"IHttpContextAccessor")," \u83b7\u53d6\uff0c\u4e5f\u53ef\u4ee5\u901a\u8fc7 ",(0,o.kt)("inlineCode",{parentName:"p"},"App.HttpContext")," \u83b7\u53d6\u3002"))),(0,o.kt)("p",null,"\u6211\u4eec\u8fd8\u53ef\u4ee5\u901a\u8fc7 ",(0,o.kt)("inlineCode",{parentName:"p"},"Cookie")," \u5b9e\u73b0\u6388\u6743\u529f\u80fd\u53ca\u5355\u70b9\u767b\u5f55\uff08SSO\uff09\uff1a",(0,o.kt)("a",{parentName:"p",href:"https://docs.microsoft.com/zh-cn/aspnet/core/security/cookie-sharing?view=aspnetcore-5.0"},"\u7f51\u7ad9\u5171\u4eab Cookie")),(0,o.kt)("h3",{id:"3222-session-\u4f7f\u7528"},"32.2.2 ",(0,o.kt)("inlineCode",{parentName:"h3"},"Session")," \u4f7f\u7528"),(0,o.kt)("p",null,"\u5728\u4f7f\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"Session")," \u4e4b\u524d\uff0c\u5fc5\u987b\u6ce8\u518c ",(0,o.kt)("inlineCode",{parentName:"p"},"Session")," \u670d\u52a1\uff1a\uff08\u5982\u679c"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,5,7-12,32,37,39}","{1,5,7-12,32,37,39}":!0},'public class Startup\n{\n public void ConfigureServices(IServiceCollection services)\n {\n // services.AddDistributedMemoryCache(); \u6846\u67b6\u5185\u90e8\u5df2\u7ecf\u9ed8\u8ba4\u6ce8\u518c\n\n services.AddSession(options =>\n {\n options.IdleTimeout = TimeSpan.FromSeconds(10);\n options.Cookie.HttpOnly = true;\n options.Cookie.IsEssential = true;\n }); // \u6ce8\u610f\u5728\u63a7\u5236\u5668\u4e4b\u524d\u6ce8\u518c\uff01\uff01\uff01\uff01\n\n services.AddControllersWithViews();\n }\n\n public void Configure(IApplicationBuilder app, IWebHostEnvironment env)\n {\n if (env.IsDevelopment())\n {\n app.UseDeveloperExceptionPage();\n }\n else\n {\n app.UseExceptionHandler("/Home/Error");\n app.UseHsts();\n }\n\n app.UseHttpsRedirection();\n app.UseStaticFiles();\n\n app.UseRouting();\n\n app.UseAuthentication();\n app.UseAuthorization();\n\n app.UseSession();\n\n app.UseEndpoints(endpoints =>\n {\n endpoints.MapDefaultControllerRoute();\n endpoints.MapRazorPages();\n });\n }\n}\n')),(0,o.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u4e2d\u95f4\u4ef6\u6ce8\u518c\u987a\u5e8f")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},(0,o.kt)("inlineCode",{parentName:"p"},"app.UseSession()")," \u5fc5\u987b\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"app.UseRouting()")," \u548c ",(0,o.kt)("inlineCode",{parentName:"p"},"app.UseEndpoints()")," ",(0,o.kt)("strong",{parentName:"p"},"\u4e4b\u95f4"),"\u6ce8\u518c\uff01"))),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"\u5e38\u89c1\u4f8b\u5b50\uff1a")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},'// \u8bfb\u53d6 Session\nvar byteArr = httpContext.Session.Get("key"); // \u8fd4\u56de byte[]\nvar str = httpContext.Session.GetString("key"); // \u8fd4\u56de string[]\nvar num = httpContext.Session.GetInt32("key"); // \u8fd4\u56de int\n\n// \u8bbe\u7f6e Session\nhttpContext.Session.SetString("key", "value"); // \u8bbe\u7f6e\u5b57\u7b26\u4e32\nhttpContext.Session.SetInt32("key", 1); // \u8bbe\u7f6e int \u7c7b\u578b\n')),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"\u81ea\u5b9a\u4e49\u8bbe\u7f6e\u4efb\u610f\u7c7b\u578b\u62d3\u5c55\uff1a"))),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},"public static class SessionExtensions\n{\n public static void Set(this ISession session, string key, T value)\n {\n session.SetString(key, JsonSerializer.Serialize(value));\n }\n\n public static T Get(this ISession session, string key)\n {\n var value = session.GetString(key);\n return value == null ? default : JsonSerializer.Deserialize(value);\n }\n}\n")),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"\u9632\u6b62 ",(0,o.kt)("inlineCode",{parentName:"li"},"Session ID")," \u6539\u53d8\u6216 ",(0,o.kt)("inlineCode",{parentName:"li"},"Session")," \u5931\u6548")),(0,o.kt)("p",null,"\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"Startup.cs")," \u7684 ",(0,o.kt)("inlineCode",{parentName:"p"},"ConfigureServices")," \u914d\u7f6e\u5373\u53ef\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},"services.Configure(options =>\n{\n \u3000\u3000options.CheckConsentNeeded = context => false; // \u9ed8\u8ba4\u4e3atrue\uff0c\u6539\u4e3afalse\n\u3000\u3000 options.MinimumSameSitePolicy = SameSiteMode.None;\n});\n")),(0,o.kt)("h3",{id:"3223-query-strings-\u4f7f\u7528"},"32.2.3 ",(0,o.kt)("inlineCode",{parentName:"h3"},"Query Strings")," \u4f7f\u7528"),(0,o.kt)("p",null,"\u8be5\u65b9\u5f0f\u4f7f\u7528\u975e\u5e38\u7b80\u5355\uff0c\u53ea\u9700 ",(0,o.kt)("inlineCode",{parentName:"p"},'httpContext.Request.Query["key"]')," \u5373\u53ef\u3002"),(0,o.kt)("h3",{id:"3224-httpcontextitems-\u4f7f\u7528"},"32.2.4 ",(0,o.kt)("inlineCode",{parentName:"h3"},"HttpContext.Items")," \u4f7f\u7528"),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"HttpContext")," \u5bf9\u8c61\u63d0\u4f9b\u4e86 ",(0,o.kt)("inlineCode",{parentName:"p"},"Items")," \u96c6\u5408\u5c5e\u6027\uff0c\u53ef\u4ee5\u8ba9\u6211\u4eec\u5728\u5355\u6b21\u8bf7\u6c42\u95f4\u5171\u4eab\u6570\u636e\uff0c\u8bf7\u6c42\u7ed3\u675f\u7acb\u5373\u9500\u6bc1\uff0c\u53ef\u4ee5\u5b58\u50a8\u4efb\u4f55\u6570\u636e\u3002\u4f7f\u7528\u4e5f\u975e\u5e38\u7b80\u5355\uff0c\u5982\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},'// \u8bfb\u53d6\nvar value = httpContext.Items["key"];\n\n// \u6dfb\u52a0\nhttpContext.Items["key"] = "\u4efb\u4f55\u503c\u5305\u62ec\u5bf9\u8c61";\n\n// \u5220\u9664\nhttpContext.Items.Remove("key");\n')),(0,o.kt)("h3",{id:"3225-cache-\u65b9\u5f0f"},"32.2.5 ",(0,o.kt)("inlineCode",{parentName:"h3"},"Cache")," \u65b9\u5f0f"),(0,o.kt)("p",null,"\u53c2\u89c1 ",(0,o.kt)("a",{parentName:"p",href:"/docs/cache"},"\u5206\u5e03\u5f0f\u7f13\u5b58")," \u6587\u6863"),(0,o.kt)("h3",{id:"3226-asynclocalt-\u65b9\u5f0f"},"32.2.6 ",(0,o.kt)("inlineCode",{parentName:"h3"},"AsyncLocal")," \u65b9\u5f0f"),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"AsyncLocal")," \u53ef\u4ee5\u8bf4\u662f\u8fdb\u7a0b\u5185\u5171\u4eab\u6570\u636e\u7684\u5927\u5229\u5668\uff0c\u53ef\u4ee5\u901a\u8fc7\u8be5\u7c7b\u5b9e\u73b0\u8de8\u7ebf\u7a0b\u3001\u5f02\u6b65\u63a7\u5236\u6d41\u4e2d\u5171\u4eab\u6570\u636e\uff0c\u5982\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},"using System;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nclass Example\n{\n static AsyncLocal _asyncLocalString = new AsyncLocal();\n\n static ThreadLocal _threadLocalString = new ThreadLocal();\n\n static async Task AsyncMethodA()\n {\n // Start multiple async method calls, with different AsyncLocal values.\n // We also set ThreadLocal values, to demonstrate how the two mechanisms differ.\n _asyncLocalString.Value = \"Value 1\";\n _threadLocalString.Value = \"Value 1\";\n var t1 = AsyncMethodB(\"Value 1\");\n\n _asyncLocalString.Value = \"Value 2\";\n _threadLocalString.Value = \"Value 2\";\n var t2 = AsyncMethodB(\"Value 2\");\n\n // Await both calls\n await t1;\n await t2;\n }\n\n static async Task AsyncMethodB(string expectedValue)\n {\n Console.WriteLine(\"Entering AsyncMethodB.\");\n Console.WriteLine(\" Expected '{0}', AsyncLocal value is '{1}', ThreadLocal value is '{2}'\",\n expectedValue, _asyncLocalString.Value, _threadLocalString.Value);\n await Task.Delay(100);\n Console.WriteLine(\"Exiting AsyncMethodB.\");\n Console.WriteLine(\" Expected '{0}', got '{1}', ThreadLocal value is '{2}'\",\n expectedValue, _asyncLocalString.Value, _threadLocalString.Value);\n }\n\n static async Task Main(string[] args)\n {\n await AsyncMethodA();\n }\n}\n// The example displays the following output:\n// Entering AsyncMethodB.\n// Expected 'Value 1', AsyncLocal value is 'Value 1', ThreadLocal value is 'Value 1'\n// Entering AsyncMethodB.\n// Expected 'Value 2', AsyncLocal value is 'Value 2', ThreadLocal value is 'Value 2'\n// Exiting AsyncMethodB.\n// Expected 'Value 2', got 'Value 2', ThreadLocal value is ''\n// Exiting AsyncMethodB.\n// Expected 'Value 1', got 'Value 1', ThreadLocal value is ''\n")),(0,o.kt)("p",null,"\u4e3a\u4e86\u7b80\u5316\u64cd\u4f5c\uff0c",(0,o.kt)("inlineCode",{parentName:"p"},"Furion v2.18+")," \u7248\u672c\u5b9e\u73b0\u4e86\u8f7b\u91cf\u7ea7\u7684 ",(0,o.kt)("inlineCode",{parentName:"p"},"CallContext")," \u9759\u6001\u7c7b\uff0c\u5185\u90e8\u4f7f\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"AsyncLocal")," \u5b9e\u73b0\uff0c\u4f7f\u7528\u5982\u4e0b\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},'CallContext.SetLocalValue("name", "Furion");\nCallContext.GetLocalValue("name");\n\nCallContext.SetLocalValue("count", 1);\nCallContext.GetLocalValue("count");\n')),(0,o.kt)("p",null,"\u4e86\u89e3\u66f4\u591a ",(0,o.kt)("inlineCode",{parentName:"p"},"AsyncLocal")," \u77e5\u8bc6\uff1a",(0,o.kt)("a",{parentName:"p",href:"https://docs.microsoft.com/zh-cn/dotnet/api/system.threading.asynclocal-1?redirectedfrom=MSDN&view=net-5.0"},"https://docs.microsoft.com/zh-cn/dotnet/api/system.threading.asynclocal-1?redirectedfrom=MSDN&view=net-5.0")),(0,o.kt)("h2",{id:"323-\u53cd\u9988\u4e0e\u5efa\u8bae"},"32.3 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,o.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,o.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/3eb8904d.c8b86857.js b/handbook/build/assets/js/3eb8904d.c8b86857.js deleted file mode 100644 index 40d602a4034..00000000000 --- a/handbook/build/assets/js/3eb8904d.c8b86857.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[5887],{3905:function(e,n,t){t.d(n,{Zo:function(){return d},kt:function(){return u}});var a=t(7294);function r(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function o(e){for(var n=1;n=0||(r[t]=e[t]);return r}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var l=a.createContext({}),s=function(e){var n=a.useContext(l),t=n;return e&&(t="function"==typeof e?e(n):o(o({},n),e)),t},d=function(e){var n=s(e.components);return a.createElement(l.Provider,{value:n},e.children)},m={inlineCode:"code",wrapper:function(e){var n=e.children;return a.createElement(a.Fragment,{},n)}},c=a.forwardRef((function(e,n){var t=e.components,r=e.mdxType,i=e.originalType,l=e.parentName,d=p(e,["components","mdxType","originalType","parentName"]),c=s(t),u=r,k=c["".concat(l,".").concat(u)]||c[u]||m[u]||i;return t?a.createElement(k,o(o({ref:n},d),{},{components:t})):a.createElement(k,o({ref:n},d))}));function u(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var i=t.length,o=new Array(i);o[0]=c;var p={};for(var l in n)hasOwnProperty.call(n,l)&&(p[l]=n[l]);p.originalType=e,p.mdxType="string"==typeof e?e:r,o[1]=p;for(var s=2;sOops.Oh \u91cd\u8f7d\u65b9\u6cd5",id:"752-oopsoh-\u91cd\u8f7d\u65b9\u6cd5",children:[]}]},{value:"7.6 \u6700\u4f73\u5b9e\u8df5 \ud83e\udd17",id:"76-\u6700\u4f73\u5b9e\u8df5-",children:[{value:"7.6.1 \u521b\u5efa\u5f02\u5e38\u4fe1\u606f\u7c7b\u578b",id:"761-\u521b\u5efa\u5f02\u5e38\u4fe1\u606f\u7c7b\u578b",children:[]},{value:"7.6.2 \u5173\u4e8e [ErrorCodeItemMetadata]",id:"762-\u5173\u4e8e-errorcodeitemmetadata",children:[]},{value:"7.6.3 \u9759\u6001\u5f02\u5e38\u7c7b\u4f7f\u7528",id:"763-\u9759\u6001\u5f02\u5e38\u7c7b\u4f7f\u7528",children:[]},{value:"7.6.4 \u5f02\u5e38\u65b9\u6cd5\u91cd\u8bd5",id:"764-\u5f02\u5e38\u65b9\u6cd5\u91cd\u8bd5",children:[]},{value:"7.6.5 \u66f4\u591a\u4f8b\u5b50",id:"765-\u66f4\u591a\u4f8b\u5b50",children:[]}]},{value:"7.7 \u591a\u4e2a\u5f02\u5e38\u4fe1\u606f\u7c7b\u578b",id:"77-\u591a\u4e2a\u5f02\u5e38\u4fe1\u606f\u7c7b\u578b",children:[]},{value:"7.8 IErrorCodeTypeProvider \u63d0\u4f9b\u5668",id:"78-ierrorcodetypeprovider-\u63d0\u4f9b\u5668",children:[]},{value:"7.9 appsetting.json \u4e2d\u914d\u7f6e",id:"79-appsettingjson-\u4e2d\u914d\u7f6e",children:[]},{value:"7.10 [IfException] \u4f7f\u7528",id:"710-ifexception-\u4f7f\u7528",children:[{value:"7.10.1 \u4f7f\u7528\u793a\u4f8b",id:"7101-\u4f7f\u7528\u793a\u4f8b",children:[]},{value:"7.10.2 \u66f4\u591a\u4f8b\u5b50",id:"7102-\u66f4\u591a\u4f8b\u5b50",children:[]}]},{value:"7.11 \u5f02\u5e38\u6d88\u606f\u4f18\u5148\u7ea7",id:"711-\u5f02\u5e38\u6d88\u606f\u4f18\u5148\u7ea7",children:[]},{value:"7.12 \u591a\u8bed\u8a00\u652f\u6301",id:"712-\u591a\u8bed\u8a00\u652f\u6301",children:[]},{value:"7.13 \u89c4\u8303\u5316\u7ed3\u679c\u5f02\u5e38\u5904\u7406",id:"713-\u89c4\u8303\u5316\u7ed3\u679c\u5f02\u5e38\u5904\u7406",children:[]},{value:"7.14 \u5168\u5c40\u5f02\u5e38\u5904\u7406\u63d0\u4f9b\u5668",id:"714-\u5168\u5c40\u5f02\u5e38\u5904\u7406\u63d0\u4f9b\u5668",children:[]},{value:"7.15 FriendlyExceptionSettings \u914d\u7f6e",id:"715-friendlyexceptionsettings-\u914d\u7f6e",children:[]},{value:"7.16 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"716-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],c={toc:m};function u(e){var n=e.components,t=(0,r.Z)(e,p);return(0,i.kt)("wrapper",(0,a.Z)({},c,t,{components:n,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"71-\u4ec0\u4e48\u662f\u5f02\u5e38"},"7.1 \u4ec0\u4e48\u662f\u5f02\u5e38"),(0,i.kt)("p",null,"\u5f02\u5e38\u4e00\u822c\u662f\u6307\u8fd0\u884c\u671f\uff08\u6b64\u5904\u7279\u6307 ",(0,i.kt)("inlineCode",{parentName:"p"},"Exception")," \u7c7b\uff09\u4f1a\u53d1\u751f\u7684\u5bfc\u81f4\u7a0b\u5e8f\u610f\u5916\u4e2d\u6b62\u7684\u95ee\u9898\uff0c\u662f\u4e00\u79cd\u5bf9\u95ee\u9898\u7684\u63cf\u8ff0\u540e\u7684\u5c01\u88c5\u5bf9\u8c61\u3002"),(0,i.kt)("p",null,"\u5728\u8fc7\u53bb\u5f00\u53d1\u4e2d\uff0c\u901a\u5e38\u5f02\u5e38\u7531\u7cfb\u7edf\u8fd0\u884c\u65f6\u51fa\u9519\u629b\u51fa\uff0c\u4f46\u73b0\u5728\u7684\u5f00\u53d1\u8fc7\u7a0b\u4e2d\uff0c\u6211\u4eec\u5e94\u5728\u7a0b\u5e8f\u5f00\u53d1\u4e2d\u5408\u7406\u7684\u629b\u51fa\u5f02\u5e38\uff0c\u6bd4\u5982\u66f4\u65b0\u4e00\u6761\u4e0d\u5b58\u5728\u7684\u5b9e\u4f53\uff0c\u6216\u67e5\u8be2\u4e00\u4e2a\u4e0d\u5b58\u5728\u7684\u6570\u636e\u7b49\u7b49\u3002"),(0,i.kt)("h2",{id:"72-\u5904\u7406\u5f02\u5e38\u65b9\u5f0f"},"7.2 \u5904\u7406\u5f02\u5e38\u65b9\u5f0f"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"\u4e0d\u5904\u7406\uff0c\u76f4\u63a5\u4e2d\u65ad\u7a0b\u5e8f\u6267\u884c\uff08\u4e0d\u63a8\u8350\uff09"),(0,i.kt)("li",{parentName:"ul"},"\u901a\u8fc7 ",(0,i.kt)("inlineCode",{parentName:"li"},"try catch finally")," \u5904\u7406\uff08\u4e0d\u63a8\u8350\uff09"),(0,i.kt)("li",{parentName:"ul"},"\u5168\u5c40\u7edf\u4e00\u5904\u7406\uff0c\u5e76\u8bb0\u5f55\u5f02\u5e38\u4fe1\u606f",(0,i.kt)("strong",{parentName:"li"},"\uff08\u63a8\u8350\uff09")),(0,i.kt)("li",{parentName:"ul"},"\u5f02\u5e38\u6ce8\u89e3\u65b9\u5f0f\u5904\u7406\uff0c\u652f\u6301",(0,i.kt)("strong",{parentName:"li"},"\u672c\u5730\u5316")," ",(0,i.kt)("strong",{parentName:"li"},"\uff08\u63a8\u8350\uff09"))),(0,i.kt)("h2",{id:"73-\u4ec0\u4e48\u662f\u53cb\u597d\u5f02\u5e38\u5904\u7406"},"7.3 \u4ec0\u4e48\u662f\u53cb\u597d\u5f02\u5e38\u5904\u7406"),(0,i.kt)("h3",{id:"731-\u975e\u53cb\u597d\u5f02\u5e38\u5904\u7406"},"7.3.1 \u975e\u53cb\u597d\u5f02\u5e38\u5904\u7406"),(0,i.kt)("p",null,"\u5728\u4e86\u89e3\u53cb\u597d\u5f02\u5e38\u5904\u7406\u4e4b\u524d\u53ef\u4ee5\u770b\u770b\u975e\u53cb\u597d\u5f02\u5e38\u5904\u7406\uff1a"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"\u5bf9\u7ec8\u7aef\u7528\u6237\u629b\u51fa ",(0,i.kt)("inlineCode",{parentName:"li"},"500\u72b6\u6001\u7801")," \u5806\u6808\u4fe1\u606f"),(0,i.kt)("li",{parentName:"ul"},"\u5927\u91cf\u7684 ",(0,i.kt)("inlineCode",{parentName:"li"},"try catch")," \u4ee3\u7801\uff0c\u6c61\u67d3\u6b63\u5e38\u4e1a\u52a1\u903b\u8f91"),(0,i.kt)("li",{parentName:"ul"},"\u6ca1\u6709\u89c4\u8303\u5316\u7684\u5f02\u5e38\u72b6\u6001\u7801\u548c\u5f02\u5e38\u6d88\u606f\u7ba1\u7406"),(0,i.kt)("li",{parentName:"ul"},"\u6ca1\u6709\u5f02\u5e38\u65e5\u5fd7\u6536\u96c6\u8bb0\u5f55"),(0,i.kt)("li",{parentName:"ul"},"\u4e0d\u652f\u6301\u5f02\u5e38\u6d88\u606f\u672c\u5730\u5316\u5904\u7406"),(0,i.kt)("li",{parentName:"ul"},"\u4e0d\u652f\u6301\u5f02\u5e38\u7b56\u7565\uff0c\u5931\u8d25\u540e\u7a0b\u5e8f\u7acb\u5373\u7ec8\u6b62"),(0,i.kt)("li",{parentName:"ul"},"\u4e0d\u652f\u6301\u5206\u5e03\u5f0f\u4e8b\u52a1 CAP"),(0,i.kt)("li",{parentName:"ul"},"\u4e0d\u652f\u6301\u5f02\u5e38\u4f20\u64ad"),(0,i.kt)("li",{parentName:"ul"},"\u8fd4\u56de\u7684\u5f02\u5e38\u683c\u5f0f\u6742\u4e71")),(0,i.kt)("h3",{id:"732-\u53cb\u597d\u5f02\u5e38\u5904\u7406"},"7.3.2 \u53cb\u597d\u5f02\u5e38\u5904\u7406"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"\u5bf9\u7ec8\u7aef\u7528\u6237\u63d0\u793a\u53cb\u597d"),(0,i.kt)("li",{parentName:"ul"},"\u5bf9\u540e\u7aef\u5f00\u53d1\u4eba\u5458\u63d0\u4f9b\u8be6\u7ec6\u7684\u5f02\u5e38\u5806\u6808"),(0,i.kt)("li",{parentName:"ul"},"\u4e0d\u5e72\u6270\u6b63\u5e38\u4e1a\u52a1\u903b\u8f91\u4ee3\u7801\uff0c\u5982 \u6ca1\u6709 ",(0,i.kt)("inlineCode",{parentName:"li"},"try catch")," \u4ee3\u7801"),(0,i.kt)("li",{parentName:"ul"},"\u652f\u6301\u5f02\u5e38\u72b6\u6001\u7801\u591a\u65b9\u8bbe\u7f6e"),(0,i.kt)("li",{parentName:"ul"},"\u652f\u6301\u5f02\u5e38\u6d88\u606f\u672c\u5730\u5316"),(0,i.kt)("li",{parentName:"ul"},"\u5f02\u5e38\u4fe1\u606f\u7edf\u4e00\u914d\u7f6e\u7ba1\u7406"),(0,i.kt)("li",{parentName:"ul"},"\u652f\u6301\u5f02\u5e38\u7b56\u7565\uff0c\u5982\u91cd\u8bd5"),(0,i.kt)("li",{parentName:"ul"},"\u652f\u6301\u5f02\u5e38\u65e5\u5fd7\u6536\u96c6\u8bb0\u5f55"),(0,i.kt)("li",{parentName:"ul"},"\u652f\u6301 CAP \u5206\u5e03\u5f0f\u4e8b\u52a1\u5173\u8054"),(0,i.kt)("li",{parentName:"ul"},"\u652f\u6301\u5185\u90e8\u5f02\u5e38\u5916\u90e8\u4f20\u64ad"),(0,i.kt)("li",{parentName:"ul"},"\u652f\u6301\u8fd4\u56de\u7edf\u4e00\u7684\u5f02\u5e38\u683c\u5f0f\u6570\u636e")),(0,i.kt)("h2",{id:"74-\u53cb\u597d\u5f02\u5e38\u5904\u7406\u4f7f\u7528\u793a\u4f8b"},"7.4 \u53cb\u597d\u5f02\u5e38\u5904\u7406\u4f7f\u7528\u793a\u4f8b"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u4e86\u975e\u5e38\u7075\u6d3b\u7684\u53cb\u597d\u5f02\u5e38\u5904\u7406\u65b9\u5f0f\u3002"),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u5907\u6ce8")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},(0,i.kt)("inlineCode",{parentName:"p"},".AddFriendlyException()")," \u9ed8\u8ba4\u5df2\u7ecf\u96c6\u6210\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"AddInject()")," \u4e2d\u4e86\uff0c\u65e0\u9700\u518d\u6b21\u6ce8\u518c\u3002\u4e5f\u5c31\u662f ",(0,i.kt)("inlineCode",{parentName:"p"},"7.4.1")," \u7ae0\u8282\u53ef\u4e0d\u914d\u7f6e\u3002"))),(0,i.kt)("h3",{id:"741-\u6ce8\u518c\u53cb\u597d\u5f02\u5e38\u670d\u52a1"},"7.4.1 \u6ce8\u518c\u53cb\u597d\u5f02\u5e38\u670d\u52a1"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:'{11} title="Furion.Web.Core\\FurWebCoreStartup.cs"',"{11}":!0,title:'"Furion.Web.Core\\FurWebCoreStartup.cs"'},"using Microsoft.Extensions.DependencyInjection;\n\nnamespace Furion.Web.Core\n{\n [AppStartup(800)]\n public sealed class FurWebCoreStartup : AppStartup\n {\n public void ConfigureServices(IServiceCollection services)\n {\n services.AddControllers()\n .AddFriendlyException();\n }\n }\n}\n")),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u6ce8\u610f")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},(0,i.kt)("inlineCode",{parentName:"p"},".AddFriendlyException()")," \u9700\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"services.AddControllers()")," \u4e4b\u540e\u6ce8\u518c\u3002"))),(0,i.kt)("h3",{id:"742-\u4e24\u4e2a\u4f8b\u5b50"},"7.4.2 \u4e24\u4e2a\u4f8b\u5b50"),(0,i.kt)("h4",{id:"\u7b80\u5355\u629b\u4e2a\u5f02\u5e38"},"\u7b80\u5355\u629b\u4e2a\u5f02\u5e38"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{2,12}","{2,12}":!0},'using Furion.DynamicApiController;\nusing Furion.FriendlyException;\n\nnamespace Furion.Application\n{\n public class FurionAppService : IDynamicApiController\n {\n public int Get(int id)\n {\n if (id < 3)\n {\n throw Oops.Oh($"{id} \u4e0d\u80fd\u5c0f\u4e8e3");\n }\n\n return id;\n }\n }\n}\n')),(0,i.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,i.kt)("img",{src:(0,o.Z)("img/yhyc1.gif")}),(0,i.kt)("h4",{id:"\u629b\u51fa\u7279\u5b9a\u7c7b\u578b\u5f02\u5e38"},"\u629b\u51fa\u7279\u5b9a\u7c7b\u578b\u5f02\u5e38"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{2,13}","{2,13}":!0},'using Furion.DynamicApiController;\nusing Furion.FriendlyException;\nusing System;\n\nnamespace Furion.Application\n{\n public class FurionAppService : IDynamicApiController\n {\n public int Get(int id)\n {\n if (id < 3)\n {\n throw Oops.Oh($"{id} \u4e0d\u80fd\u5c0f\u4e8e3\u3002", typeof(InvalidOperationException));\n }\n\n return id;\n }\n }\n}\n')),(0,i.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,i.kt)("img",{src:(0,o.Z)("img/yhyc2.png")}),(0,i.kt)("h2",{id:"75-\u5173\u4e8e-oopsoh"},"7.5 \u5173\u4e8e Oops.Oh"),(0,i.kt)("p",null,"\u901a\u8fc7\u4e0a\u9762\u7684\u4f8b\u5b50\u53ef\u4ee5\u770b\u51fa\uff0c",(0,i.kt)("inlineCode",{parentName:"p"},"Oops.Oh(errorMessage)")," \u53ef\u4ee5\u7ed3\u5408 ",(0,i.kt)("inlineCode",{parentName:"p"},"throw")," \u629b\u51fa\u5f02\u5e38\u3002\u5bf9\u4e8e\u719f\u6089",(0,i.kt)("inlineCode",{parentName:"p"},"C#"),"\u7684\u4eba\u5458\u6765\u8bf4\uff0c",(0,i.kt)("inlineCode",{parentName:"p"},"throw")," \u540e\u9762\u53ea\u80fd ",(0,i.kt)("inlineCode",{parentName:"p"},"Exception")," \u5b9e\u4f8b\u3002",(0,i.kt)("inlineCode",{parentName:"p"},"Oops.Oh(...)")," \u65b9\u6cd5\u8fd4\u56de\u6b63\u662f ",(0,i.kt)("inlineCode",{parentName:"p"},"Exception")," \u5b9e\u4f8b\u3002"),(0,i.kt)("h3",{id:"751-\u4e3a\u4ec0\u4e48\u8d77\u8fd9\u4e2a\u540d\u5b57\uff1f"},"7.5.1 \u4e3a\u4ec0\u4e48\u8d77\u8fd9\u4e2a\u540d\u5b57\uff1f"),(0,i.kt)("p",null,"\u8fd9\u4e2a\u540d\u5b57\u6765\u6e90\u4e8e\u4e00\u4e2a\u82f1\u8bed\u53e5\u5b50\uff1a",(0,i.kt)("inlineCode",{parentName:"p"},"Oh, Oops!"),"\uff0c\u610f\u601d\u662f ",(0,i.kt)("strong",{parentName:"p"},"\u5662\uff08\u54ce\uff09\uff0c\u51fa\u9519\u4e86\uff01"),"\uff0c\u6240\u4ee5\u5c31\u6709\u4e86 ",(0,i.kt)("inlineCode",{parentName:"p"},"Oops.Oh"),"\u3002"),(0,i.kt)("h3",{id:"752-oopsoh-\u91cd\u8f7d\u65b9\u6cd5"},"7.5.2 ",(0,i.kt)("inlineCode",{parentName:"h3"},"Oops.Oh")," \u91cd\u8f7d\u65b9\u6cd5"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{13,22,30,39}","{13,22,30,39}":!0},'using System;\n\nnamespace Furion.FriendlyException\n{\n public static class Oops\n {\n /// \n /// \u629b\u51fa\u5b57\u7b26\u4e32\u5f02\u5e38\n /// \n /// \u5f02\u5e38\u6d88\u606f\n /// String.Format \u53c2\u6570\n /// \u5f02\u5e38\u5b9e\u4f8b\n public static Exception Oh(string errorMessage, params object[] args);\n\n /// \n /// \u629b\u51fa\u5b57\u7b26\u4e32\u5f02\u5e38\n /// \n /// \u5f02\u5e38\u6d88\u606f\n /// \u5177\u4f53\u5f02\u5e38\u7c7b\u578b\n /// String.Format \u53c2\u6570\n /// \u5f02\u5e38\u5b9e\u4f8b\n public static Exception Oh(string errorMessage, Type exceptionType, params object[] args);\n\n /// \n /// \u629b\u51fa\u9519\u8bef\u7801\u5f02\u5e38\n /// \n /// \u9519\u8bef\u7801\n /// String.Format \u53c2\u6570\n /// \u5f02\u5e38\u5b9e\u4f8b\n public static Exception Oh(object errorCode, params object[] args);\n\n /// \n /// \u629b\u51fa\u9519\u8bef\u7801\u5f02\u5e38\n /// \n /// \u9519\u8bef\u7801\n /// \u5177\u4f53\u5f02\u5e38\u7c7b\u578b\n /// String.Format \u53c2\u6570\n /// \u5f02\u5e38\u5b9e\u4f8b\n public static Exception Oh(object errorCode, Type exceptionType, params object[] args);\n }\n}\n')),(0,i.kt)("h2",{id:"76-\u6700\u4f73\u5b9e\u8df5-"},"7.6 \u6700\u4f73\u5b9e\u8df5 \ud83e\udd17"),(0,i.kt)("p",null,"\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\uff0c\u63d0\u4f9b\u4e86\u975e\u5e38\u7075\u6d3b\u4e14\u89c4\u8303\u5316\u7684\u53cb\u597d\u5f02\u5e38\u5904\u7406\u65b9\u5f0f\uff0c\u901a\u8fc7\u8fd9\u4e2a\u65b9\u5f0f\u53ef\u4ee5\u65b9\u4fbf\u7ba1\u7406\u5f02\u5e38\u72b6\u6001\u7801\u3001\u5f02\u5e38\u4fe1\u606f\u53ca\u5f02\u5e38\u672c\u5730\u5316\u3002"),(0,i.kt)("h3",{id:"761-\u521b\u5efa\u5f02\u5e38\u4fe1\u606f\u7c7b\u578b"},"7.6.1 \u521b\u5efa\u5f02\u5e38\u4fe1\u606f\u7c7b\u578b"),(0,i.kt)("p",null,"\u5b9e\u73b0\u81ea\u5b9a\u4e49\u5f02\u5e38\u4fe1\u606f\u7c7b\u578b\u5fc5\u987b\u9075\u5faa\u4ee5\u4e0b\u914d\u7f6e\uff1a"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"\u7c7b\u578b\u5fc5\u987b\u662f\u516c\u5f00\u4e14\u662f ",(0,i.kt)("inlineCode",{parentName:"li"},"Enum")," \u679a\u4e3e\u7c7b\u578b"),(0,i.kt)("li",{parentName:"ul"},"\u679a\u4e3e\u7c7b\u578b\u5fc5\u987b\u8d34\u6709 ",(0,i.kt)("inlineCode",{parentName:"li"},"[ErrorCodeType]")," \u7279\u6027"),(0,i.kt)("li",{parentName:"ul"},"\u679a\u4e3e\u4e2d\u6bcf\u4e00\u9879\u5fc5\u987b\u8d34\u6709 ",(0,i.kt)("inlineCode",{parentName:"li"},"[ErrorCodeItemMetadata]")," \u7279\u6027")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,5,8,11,14,17}","{1,5,8,11,14,17}":!0},'using Furion.FriendlyException;\n\nnamespace Furion.Application\n{\n [ErrorCodeType]\n public enum ErrorCodes\n {\n [ErrorCodeItemMetadata("{0} \u4e0d\u80fd\u5c0f\u4e8e {1}")]\n z1000,\n\n [ErrorCodeItemMetadata("\u6570\u636e\u4e0d\u5b58\u5728")]\n x1000,\n\n [ErrorCodeItemMetadata("{0} \u53d1\u73b0 {1} \u4e2a\u5f02\u5e38", "\u767e\u5c0f\u50e7", 2)]\n x1001,\n\n [ErrorCodeItemMetadata("\u670d\u52a1\u5668\u8fd0\u884c\u5f02\u5e38", ErrorCode = "Error")]\n SERVER_ERROR\n }\n}\n')),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"important")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u4e86 ",(0,i.kt)("inlineCode",{parentName:"p"},"[ErrorCodeType]")," \u7279\u6027\u548c ",(0,i.kt)("inlineCode",{parentName:"p"},"IErrorCodeTypeProvider")," \u63d0\u4f9b\u5668\u63a5\u53e3\u6765\u63d0\u4f9b\u5f02\u5e38\u4fe1\u606f\u626b\u63cf\uff0c\u8fd9\u91cc\u7528\u7684\u662f ",(0,i.kt)("inlineCode",{parentName:"p"},"[ErrorCodeType]")," \u7279\u6027\u7c7b\u3002"))),(0,i.kt)("h3",{id:"762-\u5173\u4e8e-errorcodeitemmetadata"},"7.6.2 \u5173\u4e8e ",(0,i.kt)("inlineCode",{parentName:"h3"},"[ErrorCodeItemMetadata]")),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u4e86",(0,i.kt)("inlineCode",{parentName:"p"},"[ErrorCodeItemMetadata]")," \u7279\u6027\u7528\u6765\u6807\u8bc6",(0,i.kt)("strong",{parentName:"p"},"\u679a\u4e3e\u5b57\u6bb5"),"\u5f02\u5e38\u5143\u6570\u636e\uff0c\u8be5\u7279\u6027\u652f\u6301\u4f20\u5165 ",(0,i.kt)("inlineCode",{parentName:"p"},"\u6d88\u606f\u5185\u5bb9")," \u548c ",(0,i.kt)("inlineCode",{parentName:"p"},"\u683c\u5f0f\u5316\u53c2\u6570"),"\u3002\u6700\u7ec8\u4f1a\u4f7f\u7528 ",(0,i.kt)("inlineCode",{parentName:"p"},"String.Format(\u6d88\u606f\u5185\u5bb9\uff0c\u683c\u5f0f\u5316\u53c2\u6570)")," \u8fdb\u884c\u683c\u5f0f\u5316\u3002"),(0,i.kt)("p",null,"\u5982\u679c\u6d88\u606f\u5185\u5bb9\u4e2d\u5305\u542b",(0,i.kt)("inlineCode",{parentName:"p"},"\u683c\u5f0f\u5316\u5360\u4f4d\u7b26"),"\u4f46\u672a\u6307\u5b9a",(0,i.kt)("inlineCode",{parentName:"p"},"\u683c\u5f0f\u5316\u53c2\u6570"),"\uff0c\u90a3\u4e48\u4f1a\u67e5\u627e\u5f02\u5e38\u6240\u5728\u65b9\u6cd5\u662f\u5426\u8d34\u6709 ",(0,i.kt)("inlineCode",{parentName:"p"},"[IfException]")," \u7279\u6027\u4e14\u542b\u6709\u683c\u5f0f\u5316\u53c2\u6570\uff0c\u63a5\u7740\u5c31\u4f1a\u67e5\u627e ",(0,i.kt)("inlineCode",{parentName:"p"},"Oops.Oh")," \u4e2d\u6307\u5b9a\u7684 ",(0,i.kt)("inlineCode",{parentName:"p"},"\u683c\u5f0f\u5316\u53c2\u6570"),"\u3002"),(0,i.kt)("h3",{id:"763-\u9759\u6001\u5f02\u5e38\u7c7b\u4f7f\u7528"},"7.6.3 \u9759\u6001\u5f02\u5e38\u7c7b\u4f7f\u7528"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{2,12}","{2,12}":!0},"using Furion.DynamicApiController;\nusing Furion.FriendlyException;\n\nnamespace Furion.Application\n{\n public class FurionAppService : IDynamicApiController\n {\n public int Get(int id)\n {\n if (id < 3)\n {\n throw Oops.Oh(ErrorCodes.z1000, id, 3);\n }\n\n return id;\n }\n }\n}\n")),(0,i.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,i.kt)("img",{src:(0,o.Z)("img/yhyc3.gif")}),(0,i.kt)("h3",{id:"764-\u5f02\u5e38\u65b9\u6cd5\u91cd\u8bd5"},"7.6.4 \u5f02\u5e38\u65b9\u6cd5\u91cd\u8bd5"),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u8c03\u6574\u8bf4\u660e")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},(0,i.kt)("inlineCode",{parentName:"p"},"v2.17.0+")," \u7248\u672c\u4e0b\u9762\u65b9\u6cd5\u8bf7\u4f7f\u7528 ",(0,i.kt)("inlineCode",{parentName:"p"},"Retry.Invoke()")," \u66ff\u4ee3\u3002"))),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"Oops.Retry(() => {\n // Do.....\n}, 3, 1000);\n\n// \u5e26\u8fd4\u56de\u503c\nvar value = Oops.Retry(() => {\n // Do.....\n}, 3, 1000);\n\n// \u53ea\u6709\u7279\u5b9a\u5f02\u5e38\u624d\u76d1\u542c\nOops.Retry(() => {\n\n}, 3, 1000, typeof(ArgumentNullException));\n")),(0,i.kt)("h3",{id:"765-\u66f4\u591a\u4f8b\u5b50"},"7.6.5 \u66f4\u591a\u4f8b\u5b50"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{6}","{6}":!0},'throw Oops.Oh(1000);\nthrow Oops.Oh(ErrorCodes.x1000);\nthrow Oops.Oh("\u54c8\u54c8\u54c8\u54c8");\nthrow Oops.Oh(errorCode: "x1001");\nthrow Oops.Oh(1000, typeof(Exception));\nthrow Oops.Oh(1000).StatusCode(400); // \u8bbe\u7f6e\u9519\u8bef\u7801\nthrow Oops.Bah("\u7528\u6237\u540d\u6216\u5bc6\u7801\u9519\u8bef"); // \u629b\u51fa\u4e1a\u52a1\u5f02\u5e38\uff0c\u72b6\u6001\u7801\u4e3a 400\nthrow Oops.Bah(1000);\n')),(0,i.kt)("h2",{id:"77-\u591a\u4e2a\u5f02\u5e38\u4fe1\u606f\u7c7b\u578b"},"7.7 \u591a\u4e2a\u5f02\u5e38\u4fe1\u606f\u7c7b\u578b"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{5-6,21-22}","{5-6,21-22}":!0},'using Furion.FriendlyException;\n\nnamespace Furion.Application\n{\n [ErrorCodeType]\n public enum ErrorCodes\n {\n [ErrorCodeItemMetadata("{0} \u4e0d\u80fd\u5c0f\u4e8e {1}")]\n z1000,\n\n [ErrorCodeItemMetadata("\u6570\u636e\u4e0d\u5b58\u5728")]\n x1000,\n\n [ErrorCodeItemMetadata("{0} \u53d1\u73b0 {1} \u4e2a\u5f02\u5e38", "\u767e\u5c0f\u50e7", 2)]\n x1001,\n\n [ErrorCodeItemMetadata("\u670d\u52a1\u5668\u8fd0\u884c\u5f02\u5e38", ErrorCode = "Error")]\n SERVER_ERROR\n }\n\n [ErrorCodeType]\n public enum UserErrorCodes\n {\n [ErrorCodeItemMetadata("\u7528\u6237\u6570\u636e\u4e0d\u5b58\u5728")]\n u1000,\n\n [ErrorCodeItemMetadata("\u5176\u4ed6\u5f02\u5e38")]\n u1001\n }\n}\n')),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u6ce8\u610f")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u591a\u4e2a\u5f02\u5e38\u9759\u6001\u7c7b\u4e2d\u4e5f\u5fc5\u987b\u4fdd\u8bc1\u5e38\u91cf\u503c\u552f\u4e00\u6027\uff0c\u4e0d\u53ef\u91cd\u590d\u3002"))),(0,i.kt)("h2",{id:"78-ierrorcodetypeprovider-\u63d0\u4f9b\u5668"},"7.8 ",(0,i.kt)("inlineCode",{parentName:"h2"},"IErrorCodeTypeProvider")," \u63d0\u4f9b\u5668"),(0,i.kt)("p",null,"\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\uff0c\u8fd8\u63d0\u4f9b\u4e86 ",(0,i.kt)("inlineCode",{parentName:"p"},"IErrorCodeTypeProvider")," \u5f02\u5e38\u6d88\u606f\u63d0\u4f9b\u5668\u63a5\u53e3\uff0c\u65b9\u4fbf\u5728\u4e0d\u80fd\u8d34 ",(0,i.kt)("inlineCode",{parentName:"p"},"[ErrorCodeType]")," \u7279\u6027\u60c5\u51b5\u4e0b\u4f7f\u7528\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{2,6,8-11}","{2,6,8-11}":!0},"using Furion.FriendlyException;\nusing System;\n\nnamespace Furion.Application\n{\n public class CustomErrorCodeTypeProvider : IErrorCodeTypeProvider\n {\n public Type[] Definitions => new[] {\n typeof(ErrorCodes),\n typeof(ErrorCodes2)\n };\n }\n}\n")),(0,i.kt)("p",null,"\u542f\u7528 ",(0,i.kt)("inlineCode",{parentName:"p"},"IErrorCodeTypeProvider")," \u63d0\u4f9b\u5668\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:'{11} title="Furion.Web.Core\\FurWebCoreStartup.cs"',"{11}":!0,title:'"Furion.Web.Core\\FurWebCoreStartup.cs"'},"using Microsoft.Extensions.DependencyInjection;\n\nnamespace Furion.Web.Core\n{\n [AppStartup(800)]\n public sealed class FurWebCoreStartup : AppStartup\n {\n public void ConfigureServices(IServiceCollection services)\n {\n services.AddControllers()\n .AddFriendlyException();\n }\n }\n}\n")),(0,i.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u5c0f\u77e5\u8bc6")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u53ea\u6709\u4f7f\u7528 ",(0,i.kt)("inlineCode",{parentName:"p"},"IErrorCodeTypeProvider")," \u65b9\u5f0f\u624d\u9700\u4f7f\u7528\u6cdb\u578b\u65b9\u5f0f\u6ce8\u518c\u3002\u901a\u8fc7\u4e0a\u9762\u7684\u65b9\u5f0f\u6ce8\u518c\u53ef\u4ee5\u540c\u65f6\u652f\u6301 ",(0,i.kt)("inlineCode",{parentName:"p"},"IErrorCodeTypeProvider")," \u548c ",(0,i.kt)("inlineCode",{parentName:"p"},"[ErrorCodeType]")," \u65b9\u5f0f\u3002"))),(0,i.kt)("h2",{id:"79-appsettingjson-\u4e2d\u914d\u7f6e"},"7.9 ",(0,i.kt)("inlineCode",{parentName:"h2"},"appsetting.json")," \u4e2d\u914d\u7f6e"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u8fd8\u63d0\u4f9b\u4e86\u975e\u5e38\u7075\u6d3b\u7684\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e\u5f02\u5e38\uff0c\u901a\u8fc7\u8fd9\u79cd\u65b9\u5f0f\u53ef\u4ee5\u5b9e\u73b0\u5f02\u5e38\u4fe1\u606f\u540e\u671f\u914d\u7f6e\uff0c\u4e5f\u5c31\u662f\u65e0\u9700\u5728\u5f00\u53d1\u9636\u6bb5\u9884\u5148\u5b9a\u4e49\u3002"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-json",metastring:'{2-8} title="Furion.Web.Entry/appsettings.json"',"{2-8}":!0,title:'"Furion.Web.Entry/appsettings.json"'},'{\n "ErrorCodeMessageSettings": {\n "Definitions": [\n [5000, "{0} \u4e0d\u80fd\u5c0f\u4e8e {1}"],\n [5001, "\u6211\u53eb {0} \u540d\u5b57", "\u767e\u5c0f\u50e7"],\n [5002, "Oops! \u51fa\u9519\u4e86"]\n ]\n }\n}\n')),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Definitions")," \u7c7b\u578b\u4e3a\u4e8c\u7ef4\u6570\u7ec4\uff0c\u4e8c\u7ef4\u6570\u7ec4\u4e2d\u7684\u6bcf\u4e00\u4e2a\u6570\u7ec4\u7b2c\u4e00\u4e2a\u53c2\u6570\u4e3a ",(0,i.kt)("inlineCode",{parentName:"p"},"ErrorCode")," \u4e5f\u5c31\u662f\u9519\u8bef\u7801\uff0c\u7b2c\u4e8c\u4e2a\u53c2\u6570\u4e3a ",(0,i.kt)("inlineCode",{parentName:"p"},"ErrorMessage")," \u6d88\u606f\u5185\u5bb9\uff0c\u5269\u4f59\u53c2\u6570\u4f5c\u4e3a ",(0,i.kt)("inlineCode",{parentName:"p"},"ErrorMessage")," \u7684\u683c\u5f0f\u5316\u53c2\u6570\u3002"),(0,i.kt)("h4",{id:"\u4f7f\u7528\u793a\u4f8b"},"\u4f7f\u7528\u793a\u4f8b"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{2,12}","{2,12}":!0},"using Furion.DynamicApiController;\nusing Furion.FriendlyException;\n\nnamespace Furion.Application\n{\n public class FurionAppService : IDynamicApiController\n {\n public int Get(int id)\n {\n if (id < 3)\n {\n throw Oops.Oh(5000, id, 3); // \u53ef\u4ee5\u5c06 5000\u4f5c\u4e3a\u5e38\u91cf\u914d\u7f6e\u8d77\u6765\n }\n\n return id;\n }\n }\n}\n")),(0,i.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u5c0f\u77e5\u8bc6")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},(0,i.kt)("inlineCode",{parentName:"p"},"[ErrorCodeType]")," \u548c ",(0,i.kt)("inlineCode",{parentName:"p"},"IErrorCodeTypeProvider")," \u548c ",(0,i.kt)("inlineCode",{parentName:"p"},"appsettings.json")," \u53ef\u4ee5\u540c\u65f6\u4f7f\u7528\u3002"))),(0,i.kt)("h2",{id:"710-ifexception-\u4f7f\u7528"},"7.10 ",(0,i.kt)("inlineCode",{parentName:"h2"},"[IfException]")," \u4f7f\u7528"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u4e86 ",(0,i.kt)("inlineCode",{parentName:"p"},"[IfException]")," \u7279\u6027\u53ef\u4ee5",(0,i.kt)("strong",{parentName:"p"},"\u8986\u76d6\u9ed8\u8ba4\u6d88\u606f\u914d\u7f6e"),"\u3002\u4e5f\u5c31\u662f\u8986\u76d6 ",(0,i.kt)("inlineCode",{parentName:"p"},"\u5f02\u5e38\u6d88\u606f\u7c7b\u578b")," \u548c ",(0,i.kt)("inlineCode",{parentName:"p"},"appsettings.json")," \u4e2d\u7684\u914d\u7f6e\u3002"),(0,i.kt)("div",{className:"admonition admonition-caution alert alert--warning"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 16 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"}))),"\u7279\u522b\u6ce8\u610f")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},(0,i.kt)("inlineCode",{parentName:"p"},"[IfException]")," \u53ea\u80fd\u8d34\u5728\u65b9\u6cd5\u4e0a\uff0c\u652f\u6301\u591a\u4e2a\u3002"))),(0,i.kt)("h3",{id:"7101-\u4f7f\u7528\u793a\u4f8b"},"7.10.1 \u4f7f\u7528\u793a\u4f8b"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"\u5f02\u5e38\u6d88\u606f\u7c7b\u5b9a\u4e49")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,4}","{1,4}":!0},'[ErrorCodeType]\npublic static class ErrorCodes\n{\n [ErrorCodeItemMetadata("{0} \u4e0d\u80fd\u5c0f\u4e8e {1}")]\n z1000\n}\n')),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"\u8986\u76d6\u9ed8\u8ba4\u914d\u7f6e")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{8}","{8}":!0},'using Furion.DynamicApiController;\nusing Furion.FriendlyException;\n\nnamespace Furion.Application\n{\n public class FurionAppService : IDynamicApiController\n {\n [IfException(ErrorCodes.z1000, ErrorMessage = "\u6211\u8986\u76d6\u4e86\u9ed8\u8ba4\u7684\uff1a{0} \u4e0d\u80fd\u5c0f\u4e8e {1}")]\n public int Get(int id)\n {\n if (id < 3)\n {\n throw Oops.Oh(ErrorCodes.z1000, id, 3);\n }\n\n return id;\n }\n }\n}\n')),(0,i.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,i.kt)("img",{src:(0,o.Z)("img/yhyc4.png")}),(0,i.kt)("h3",{id:"7102-\u66f4\u591a\u4f8b\u5b50"},"7.10.2 \u66f4\u591a\u4f8b\u5b50"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{2,8-11}","{2,8-11}":!0},'using Furion.DynamicApiController;\nusing Furion.FriendlyException;\n\nnamespace Furion.Application\n{\n public class FurionAppService : IDynamicApiController\n {\n [IfException(typeof(ExceptionType), ErrorMessage = "\u7279\u5b9a\u5f02\u5e38\u7c7b\u578b\u5168\u5c40\u62e6\u622a")]\n [IfException(ErrorMessage = "\u5168\u5c40\u5f02\u5e38\u62e6\u622a")]\n [IfException(ErrorCodes.z1000, ErrorMessage = "\u6211\u8986\u76d6\u4e86\u9ed8\u8ba4\u7684\uff1a{0} \u4e0d\u80fd\u5c0f\u4e8e {1}")]\n [IfException(ErrorCodes.x1001, "\u683c\u5f0f\u5316\u53c2\u65701", "\u683c\u5f0f\u5316\u53c2\u65702", ErrorMessage = "\u6211\u8986\u76d6\u4e86\u9ed8\u8ba4\u7684\uff1a{0} \u4e0d\u80fd\u5c0f\u4e8e {1}")]\n [IfException(ErrorCodes.x1000, "\u683c\u5f0f\u5316\u53c2\u65701", "\u683c\u5f0f\u5316\u53c2\u65702")]\n [IfException(ErrorCodes.SERVER_ERROR, "\u683c\u5f0f\u5316\u53c2\u65701", "\u683c\u5f0f\u5316\u53c2\u65702")]\n public int Get(int id)\n {\n if (id < 3)\n {\n throw Oops.Oh(ErrorCodes.z1000, id, 3);\n }\n\n return id;\n }\n }\n}\n')),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u683c\u5f0f\u5316\u6d41\u7a0b")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u5982\u679c\u6d88\u606f\u5185\u5bb9\u4e2d\u5305\u542b",(0,i.kt)("inlineCode",{parentName:"p"},"\u683c\u5f0f\u5316\u5360\u4f4d\u7b26"),"\u4f46\u672a\u6307\u5b9a",(0,i.kt)("inlineCode",{parentName:"p"},"\u683c\u5f0f\u5316\u53c2\u6570"),"\uff0c\u90a3\u4e48\u4f1a\u67e5\u627e\u5f02\u5e38\u6240\u5728\u65b9\u6cd5\u662f\u5426\u8d34\u6709 ",(0,i.kt)("inlineCode",{parentName:"p"},"[IfException]")," \u7279\u6027\u4e14\u542b\u6709\u683c\u5f0f\u5316\u53c2\u6570\uff0c\u63a5\u7740\u5c31\u4f1a\u67e5\u627e ",(0,i.kt)("inlineCode",{parentName:"p"},"Oops.Oh")," \u4e2d\u6307\u5b9a\u7684 ",(0,i.kt)("inlineCode",{parentName:"p"},"\u683c\u5f0f\u5316\u53c2\u6570"),"\u3002"))),(0,i.kt)("h2",{id:"711-\u5f02\u5e38\u6d88\u606f\u4f18\u5148\u7ea7"},"7.11 \u5f02\u5e38\u6d88\u606f\u4f18\u5148\u7ea7"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"[ErrorCodeItemMetadata]")," -> ",(0,i.kt)("inlineCode",{parentName:"p"},"appsettings.json")," -> ",(0,i.kt)("inlineCode",{parentName:"p"},"[IfException]"),"\u3002",(0,i.kt)("strong",{parentName:"p"},"\uff08\u4f4e -> \u9ad8\uff09")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"[IfException]")," \u4f1a\u8986\u76d6 ",(0,i.kt)("inlineCode",{parentName:"li"},"appsettings.json")," \u5b9a\u4e49\u7684\u72b6\u6001\u7801\u6d88\u606f\u3002"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"appsettings.json")," \u4f1a\u8986\u76d6 ",(0,i.kt)("inlineCode",{parentName:"li"},"[ErrorCodeItemMetadata]")," \u5b9a\u4e49\u7684\u6d88\u606f\u3002")),(0,i.kt)("h2",{id:"712-\u591a\u8bed\u8a00\u652f\u6301"},"7.12 \u591a\u8bed\u8a00\u652f\u6301"),(0,i.kt)("p",null,"\u53c2\u89c1 ",(0,i.kt)("a",{parentName:"p",href:"./local-language"},"\u3010\u5168\u7403\u5316\u548c\u672c\u5730\u5316\uff08\u591a\u8bed\u8a00\uff09\u3011")," \u7ae0\u8282"),(0,i.kt)("h2",{id:"713-\u89c4\u8303\u5316\u7ed3\u679c\u5f02\u5e38\u5904\u7406"},"7.13 \u89c4\u8303\u5316\u7ed3\u679c\u5f02\u5e38\u5904\u7406"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{15-16}","{15-16}":!0},'using Furion.DataValidation;\nusing Furion.DependencyInjection;\nusing Furion.UnifyResult.Internal;\nusing Microsoft.AspNetCore.Http;\nusing Microsoft.AspNetCore.Mvc;\nusing Microsoft.AspNetCore.Mvc.Filters;\nusing System;\nusing System.Threading.Tasks;\n\nnamespace Furion.UnifyResult\n{\n /// \n /// RESTful \u98ce\u683c\u8fd4\u56de\u503c\n /// \n [SuppressSniffer, UnifyModel(typeof(RESTfulResult<>))]\n public class RESTfulResultProvider : IUnifyResultProvider\n {\n /// \n /// \u5f02\u5e38\u8fd4\u56de\u503c\n /// \n /// \n /// \n /// \n public IActionResult OnException(ExceptionContext context, ExceptionMetadata metadata)\n {\n return new JsonResult(RESTfulResult(metadata.StatusCode, errors: metadata.Errors));\n }\n\n /// \n /// \u6210\u529f\u8fd4\u56de\u503c\n /// \n /// \n /// \n /// \n public IActionResult OnSucceeded(ActionExecutedContext context, object data)\n {\n return new JsonResult(RESTfulResult(StatusCodes.Status200OK, true, data));\n }\n\n /// \n /// \u9a8c\u8bc1\u5931\u8d25\u8fd4\u56de\u503c\n /// \n /// \n /// \n /// \n public IActionResult OnValidateFailed(ActionExecutingContext context, ValidationMetadata metadata)\n {\n return new JsonResult(RESTfulResult(StatusCodes.Status400BadRequest, errors: metadata.ValidationResult));\n }\n\n /// \n /// \u7279\u5b9a\u72b6\u6001\u7801\u8fd4\u56de\u503c\n /// \n /// \n /// \n /// \n /// \n public async Task OnResponseStatusCodes(HttpContext context, int statusCode, UnifyResultSettingsOptions unifyResultSettings)\n {\n // \u8bbe\u7f6e\u54cd\u5e94\u72b6\u6001\u7801\n UnifyContext.SetResponseStatusCodes(context, statusCode, unifyResultSettings);\n\n switch (statusCode)\n {\n // \u5904\u7406 401 \u72b6\u6001\u7801\n case StatusCodes.Status401Unauthorized:\n await context.Response.WriteAsJsonAsync(RESTfulResult(statusCode, errors: "401 Unauthorized")\n , App.GetOptions()?.JsonSerializerOptions);\n break;\n // \u5904\u7406 403 \u72b6\u6001\u7801\n case StatusCodes.Status403Forbidden:\n await context.Response.WriteAsJsonAsync(RESTfulResult(statusCode, errors: "403 Forbidden")\n , App.GetOptions()?.JsonSerializerOptions);\n break;\n default: break;\n }\n }\n\n /// \n /// \u8fd4\u56de RESTful \u98ce\u683c\u7ed3\u679c\u96c6\n /// \n /// \n /// \n /// \n /// \n /// \n private static RESTfulResult RESTfulResult(int statusCode, bool succeeded = default, object data = default, object errors = default)\n {\n return new RESTfulResult\n {\n StatusCode = statusCode,\n Succeeded = succeeded,\n Data = data,\n Errors = errors,\n Extras = UnifyContext.Take(),\n Timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds()\n };\n }\n }\n}\n')),(0,i.kt)("p",null,"\u4e4b\u540e\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Startup.cs")," \u4e2d\u6ce8\u518c\u5373\u53ef\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"services.AddControllers()\n .AddInjectWithUnifyResult();\n")),(0,i.kt)("h2",{id:"714-\u5168\u5c40\u5f02\u5e38\u5904\u7406\u63d0\u4f9b\u5668"},"7.14 \u5168\u5c40\u5f02\u5e38\u5904\u7406\u63d0\u4f9b\u5668"),(0,i.kt)("p",null,"\u901a\u5e38\u6211\u4eec\u9700\u8981\u5728\u5f02\u5e38\u6355\u83b7\u7684\u65f6\u5019\u5199\u65e5\u5fd7\uff0c\u8fd9\u65f6\u5019\u5c31\u9700\u8981\u4f7f\u7528\u5230 ",(0,i.kt)("inlineCode",{parentName:"p"},"IGlobalExceptionHandler")," \u5f02\u5e38\u5b9a\u4e49\u5904\u7406\u7a0b\u5e8f\uff0c\u5982\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{8}","{8}":!0},"using Furion.DependencyInjection;\nusing Furion.FriendlyException;\nusing Microsoft.AspNetCore.Mvc.Filters;\nusing System.Threading.Tasks;\n\nnamespace Furion.Application\n{\n public class LogExceptionHandler : IGlobalExceptionHandler, ISingleton\n {\n public Task OnExceptionAsync(ExceptionContext context)\n {\n // \u5199\u65e5\u5fd7\n\n return Task.CompletedTask;\n }\n }\n}\n")),(0,i.kt)("h2",{id:"715-friendlyexceptionsettings-\u914d\u7f6e"},"7.15 ",(0,i.kt)("inlineCode",{parentName:"h2"},"FriendlyExceptionSettings")," \u914d\u7f6e"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"HideErrorCode"),"\uff1a\u9690\u85cf\u9519\u8bef\u7801\uff0c",(0,i.kt)("inlineCode",{parentName:"li"},"bool")," \u7c7b\u578b\uff0c\u9ed8\u8ba4 ",(0,i.kt)("inlineCode",{parentName:"li"},"false")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"DefaultErrorCode"),"\uff1a\u9ed8\u8ba4\u9519\u8bef\u7801\uff0c",(0,i.kt)("inlineCode",{parentName:"li"},"string")," \u7c7b\u578b"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"DefaultErrorMessage"),"\uff1a\u9ed8\u8ba4\u9519\u8bef\u6d88\u606f\uff0c",(0,i.kt)("inlineCode",{parentName:"li"},"string")," \u7c7b\u578b")),(0,i.kt)("p",null,"\u914d\u7f6e\u793a\u4f8b"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-json"},'{\n "FriendlyExceptionSettings": {\n "DefaultErrorMessage": "\u7cfb\u7edf\u5f02\u5e38\uff0c\u8bf7\u8054\u7cfb\u7ba1\u7406\u5458"\n }\n}\n')),(0,i.kt)("h2",{id:"716-\u53cd\u9988\u4e0e\u5efa\u8bae"},"7.16 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,i.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/3eb8904d.f28b09f9.js b/handbook/build/assets/js/3eb8904d.f28b09f9.js new file mode 100644 index 00000000000..1e05ae67917 --- /dev/null +++ b/handbook/build/assets/js/3eb8904d.f28b09f9.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[5887],{3905:function(e,n,t){t.d(n,{Zo:function(){return d},kt:function(){return u}});var a=t(7294);function r(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function o(e){for(var n=1;n=0||(r[t]=e[t]);return r}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var l=a.createContext({}),s=function(e){var n=a.useContext(l),t=n;return e&&(t="function"==typeof e?e(n):o(o({},n),e)),t},d=function(e){var n=s(e.components);return a.createElement(l.Provider,{value:n},e.children)},m={inlineCode:"code",wrapper:function(e){var n=e.children;return a.createElement(a.Fragment,{},n)}},c=a.forwardRef((function(e,n){var t=e.components,r=e.mdxType,i=e.originalType,l=e.parentName,d=p(e,["components","mdxType","originalType","parentName"]),c=s(t),u=r,k=c["".concat(l,".").concat(u)]||c[u]||m[u]||i;return t?a.createElement(k,o(o({ref:n},d),{},{components:t})):a.createElement(k,o({ref:n},d))}));function u(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var i=t.length,o=new Array(i);o[0]=c;var p={};for(var l in n)hasOwnProperty.call(n,l)&&(p[l]=n[l]);p.originalType=e,p.mdxType="string"==typeof e?e:r,o[1]=p;for(var s=2;sOops.Oh \u91cd\u8f7d\u65b9\u6cd5",id:"752-oopsoh-\u91cd\u8f7d\u65b9\u6cd5",children:[]}]},{value:"7.6 \u6700\u4f73\u5b9e\u8df5 \ud83e\udd17",id:"76-\u6700\u4f73\u5b9e\u8df5-",children:[{value:"7.6.1 \u521b\u5efa\u5f02\u5e38\u4fe1\u606f\u7c7b\u578b",id:"761-\u521b\u5efa\u5f02\u5e38\u4fe1\u606f\u7c7b\u578b",children:[]},{value:"7.6.2 \u5173\u4e8e [ErrorCodeItemMetadata]",id:"762-\u5173\u4e8e-errorcodeitemmetadata",children:[]},{value:"7.6.3 \u9759\u6001\u5f02\u5e38\u7c7b\u4f7f\u7528",id:"763-\u9759\u6001\u5f02\u5e38\u7c7b\u4f7f\u7528",children:[]},{value:"7.6.4 \u5f02\u5e38\u65b9\u6cd5\u91cd\u8bd5",id:"764-\u5f02\u5e38\u65b9\u6cd5\u91cd\u8bd5",children:[]},{value:"7.6.5 \u66f4\u591a\u4f8b\u5b50",id:"765-\u66f4\u591a\u4f8b\u5b50",children:[]}]},{value:"7.7 \u591a\u4e2a\u5f02\u5e38\u4fe1\u606f\u7c7b\u578b",id:"77-\u591a\u4e2a\u5f02\u5e38\u4fe1\u606f\u7c7b\u578b",children:[]},{value:"7.8 IErrorCodeTypeProvider \u63d0\u4f9b\u5668",id:"78-ierrorcodetypeprovider-\u63d0\u4f9b\u5668",children:[]},{value:"7.9 appsetting.json \u4e2d\u914d\u7f6e",id:"79-appsettingjson-\u4e2d\u914d\u7f6e",children:[]},{value:"7.10 [IfException] \u4f7f\u7528",id:"710-ifexception-\u4f7f\u7528",children:[{value:"7.10.1 \u4f7f\u7528\u793a\u4f8b",id:"7101-\u4f7f\u7528\u793a\u4f8b",children:[]},{value:"7.10.2 \u66f4\u591a\u4f8b\u5b50",id:"7102-\u66f4\u591a\u4f8b\u5b50",children:[]}]},{value:"7.11 \u5f02\u5e38\u6d88\u606f\u4f18\u5148\u7ea7",id:"711-\u5f02\u5e38\u6d88\u606f\u4f18\u5148\u7ea7",children:[]},{value:"7.12 \u591a\u8bed\u8a00\u652f\u6301",id:"712-\u591a\u8bed\u8a00\u652f\u6301",children:[]},{value:"7.13 \u89c4\u8303\u5316\u7ed3\u679c\u5f02\u5e38\u5904\u7406",id:"713-\u89c4\u8303\u5316\u7ed3\u679c\u5f02\u5e38\u5904\u7406",children:[]},{value:"7.14 \u5168\u5c40\u5f02\u5e38\u5904\u7406\u63d0\u4f9b\u5668",id:"714-\u5168\u5c40\u5f02\u5e38\u5904\u7406\u63d0\u4f9b\u5668",children:[]},{value:"7.15 FriendlyExceptionSettings \u914d\u7f6e",id:"715-friendlyexceptionsettings-\u914d\u7f6e",children:[]},{value:"7.16 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"716-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],c={toc:m};function u(e){var n=e.components,t=(0,r.Z)(e,p);return(0,i.kt)("wrapper",(0,a.Z)({},c,t,{components:n,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"71-\u4ec0\u4e48\u662f\u5f02\u5e38"},"7.1 \u4ec0\u4e48\u662f\u5f02\u5e38"),(0,i.kt)("p",null,"\u5f02\u5e38\u4e00\u822c\u662f\u6307\u8fd0\u884c\u671f\uff08\u6b64\u5904\u7279\u6307 ",(0,i.kt)("inlineCode",{parentName:"p"},"Exception")," \u7c7b\uff09\u4f1a\u53d1\u751f\u7684\u5bfc\u81f4\u7a0b\u5e8f\u610f\u5916\u4e2d\u6b62\u7684\u95ee\u9898\uff0c\u662f\u4e00\u79cd\u5bf9\u95ee\u9898\u7684\u63cf\u8ff0\u540e\u7684\u5c01\u88c5\u5bf9\u8c61\u3002"),(0,i.kt)("p",null,"\u5728\u8fc7\u53bb\u5f00\u53d1\u4e2d\uff0c\u901a\u5e38\u5f02\u5e38\u7531\u7cfb\u7edf\u8fd0\u884c\u65f6\u51fa\u9519\u629b\u51fa\uff0c\u4f46\u73b0\u5728\u7684\u5f00\u53d1\u8fc7\u7a0b\u4e2d\uff0c\u6211\u4eec\u5e94\u5728\u7a0b\u5e8f\u5f00\u53d1\u4e2d\u5408\u7406\u7684\u629b\u51fa\u5f02\u5e38\uff0c\u6bd4\u5982\u66f4\u65b0\u4e00\u6761\u4e0d\u5b58\u5728\u7684\u5b9e\u4f53\uff0c\u6216\u67e5\u8be2\u4e00\u4e2a\u4e0d\u5b58\u5728\u7684\u6570\u636e\u7b49\u7b49\u3002"),(0,i.kt)("h2",{id:"72-\u5904\u7406\u5f02\u5e38\u65b9\u5f0f"},"7.2 \u5904\u7406\u5f02\u5e38\u65b9\u5f0f"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"\u4e0d\u5904\u7406\uff0c\u76f4\u63a5\u4e2d\u65ad\u7a0b\u5e8f\u6267\u884c\uff08\u4e0d\u63a8\u8350\uff09"),(0,i.kt)("li",{parentName:"ul"},"\u901a\u8fc7 ",(0,i.kt)("inlineCode",{parentName:"li"},"try catch finally")," \u5904\u7406\uff08\u4e0d\u63a8\u8350\uff09"),(0,i.kt)("li",{parentName:"ul"},"\u5168\u5c40\u7edf\u4e00\u5904\u7406\uff0c\u5e76\u8bb0\u5f55\u5f02\u5e38\u4fe1\u606f",(0,i.kt)("strong",{parentName:"li"},"\uff08\u63a8\u8350\uff09")),(0,i.kt)("li",{parentName:"ul"},"\u5f02\u5e38\u6ce8\u89e3\u65b9\u5f0f\u5904\u7406\uff0c\u652f\u6301",(0,i.kt)("strong",{parentName:"li"},"\u672c\u5730\u5316")," ",(0,i.kt)("strong",{parentName:"li"},"\uff08\u63a8\u8350\uff09"))),(0,i.kt)("h2",{id:"73-\u4ec0\u4e48\u662f\u53cb\u597d\u5f02\u5e38\u5904\u7406"},"7.3 \u4ec0\u4e48\u662f\u53cb\u597d\u5f02\u5e38\u5904\u7406"),(0,i.kt)("h3",{id:"731-\u975e\u53cb\u597d\u5f02\u5e38\u5904\u7406"},"7.3.1 \u975e\u53cb\u597d\u5f02\u5e38\u5904\u7406"),(0,i.kt)("p",null,"\u5728\u4e86\u89e3\u53cb\u597d\u5f02\u5e38\u5904\u7406\u4e4b\u524d\u53ef\u4ee5\u770b\u770b\u975e\u53cb\u597d\u5f02\u5e38\u5904\u7406\uff1a"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"\u5bf9\u7ec8\u7aef\u7528\u6237\u629b\u51fa ",(0,i.kt)("inlineCode",{parentName:"li"},"500\u72b6\u6001\u7801")," \u5806\u6808\u4fe1\u606f"),(0,i.kt)("li",{parentName:"ul"},"\u5927\u91cf\u7684 ",(0,i.kt)("inlineCode",{parentName:"li"},"try catch")," \u4ee3\u7801\uff0c\u6c61\u67d3\u6b63\u5e38\u4e1a\u52a1\u903b\u8f91"),(0,i.kt)("li",{parentName:"ul"},"\u6ca1\u6709\u89c4\u8303\u5316\u7684\u5f02\u5e38\u72b6\u6001\u7801\u548c\u5f02\u5e38\u6d88\u606f\u7ba1\u7406"),(0,i.kt)("li",{parentName:"ul"},"\u6ca1\u6709\u5f02\u5e38\u65e5\u5fd7\u6536\u96c6\u8bb0\u5f55"),(0,i.kt)("li",{parentName:"ul"},"\u4e0d\u652f\u6301\u5f02\u5e38\u6d88\u606f\u672c\u5730\u5316\u5904\u7406"),(0,i.kt)("li",{parentName:"ul"},"\u4e0d\u652f\u6301\u5f02\u5e38\u7b56\u7565\uff0c\u5931\u8d25\u540e\u7a0b\u5e8f\u7acb\u5373\u7ec8\u6b62"),(0,i.kt)("li",{parentName:"ul"},"\u4e0d\u652f\u6301\u5206\u5e03\u5f0f\u4e8b\u52a1 CAP"),(0,i.kt)("li",{parentName:"ul"},"\u4e0d\u652f\u6301\u5f02\u5e38\u4f20\u64ad"),(0,i.kt)("li",{parentName:"ul"},"\u8fd4\u56de\u7684\u5f02\u5e38\u683c\u5f0f\u6742\u4e71")),(0,i.kt)("h3",{id:"732-\u53cb\u597d\u5f02\u5e38\u5904\u7406"},"7.3.2 \u53cb\u597d\u5f02\u5e38\u5904\u7406"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"\u5bf9\u7ec8\u7aef\u7528\u6237\u63d0\u793a\u53cb\u597d"),(0,i.kt)("li",{parentName:"ul"},"\u5bf9\u540e\u7aef\u5f00\u53d1\u4eba\u5458\u63d0\u4f9b\u8be6\u7ec6\u7684\u5f02\u5e38\u5806\u6808"),(0,i.kt)("li",{parentName:"ul"},"\u4e0d\u5e72\u6270\u6b63\u5e38\u4e1a\u52a1\u903b\u8f91\u4ee3\u7801\uff0c\u5982 \u6ca1\u6709 ",(0,i.kt)("inlineCode",{parentName:"li"},"try catch")," \u4ee3\u7801"),(0,i.kt)("li",{parentName:"ul"},"\u652f\u6301\u5f02\u5e38\u72b6\u6001\u7801\u591a\u65b9\u8bbe\u7f6e"),(0,i.kt)("li",{parentName:"ul"},"\u652f\u6301\u5f02\u5e38\u6d88\u606f\u672c\u5730\u5316"),(0,i.kt)("li",{parentName:"ul"},"\u5f02\u5e38\u4fe1\u606f\u7edf\u4e00\u914d\u7f6e\u7ba1\u7406"),(0,i.kt)("li",{parentName:"ul"},"\u652f\u6301\u5f02\u5e38\u7b56\u7565\uff0c\u5982\u91cd\u8bd5"),(0,i.kt)("li",{parentName:"ul"},"\u652f\u6301\u5f02\u5e38\u65e5\u5fd7\u6536\u96c6\u8bb0\u5f55"),(0,i.kt)("li",{parentName:"ul"},"\u652f\u6301 CAP \u5206\u5e03\u5f0f\u4e8b\u52a1\u5173\u8054"),(0,i.kt)("li",{parentName:"ul"},"\u652f\u6301\u5185\u90e8\u5f02\u5e38\u5916\u90e8\u4f20\u64ad"),(0,i.kt)("li",{parentName:"ul"},"\u652f\u6301\u8fd4\u56de\u7edf\u4e00\u7684\u5f02\u5e38\u683c\u5f0f\u6570\u636e")),(0,i.kt)("h2",{id:"74-\u53cb\u597d\u5f02\u5e38\u5904\u7406\u4f7f\u7528\u793a\u4f8b"},"7.4 \u53cb\u597d\u5f02\u5e38\u5904\u7406\u4f7f\u7528\u793a\u4f8b"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u4e86\u975e\u5e38\u7075\u6d3b\u7684\u53cb\u597d\u5f02\u5e38\u5904\u7406\u65b9\u5f0f\u3002"),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u5907\u6ce8")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},(0,i.kt)("inlineCode",{parentName:"p"},".AddFriendlyException()")," \u9ed8\u8ba4\u5df2\u7ecf\u96c6\u6210\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"AddInject()")," \u4e2d\u4e86\uff0c\u65e0\u9700\u518d\u6b21\u6ce8\u518c\u3002\u4e5f\u5c31\u662f ",(0,i.kt)("inlineCode",{parentName:"p"},"7.4.1")," \u7ae0\u8282\u53ef\u4e0d\u914d\u7f6e\u3002"))),(0,i.kt)("h3",{id:"741-\u6ce8\u518c\u53cb\u597d\u5f02\u5e38\u670d\u52a1"},"7.4.1 \u6ce8\u518c\u53cb\u597d\u5f02\u5e38\u670d\u52a1"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:'{11} title="Furion.Web.Core\\FurWebCoreStartup.cs"',"{11}":!0,title:'"Furion.Web.Core\\FurWebCoreStartup.cs"'},"using Microsoft.Extensions.DependencyInjection;\n\nnamespace Furion.Web.Core\n{\n [AppStartup(800)]\n public sealed class FurWebCoreStartup : AppStartup\n {\n public void ConfigureServices(IServiceCollection services)\n {\n services.AddControllers()\n .AddFriendlyException();\n }\n }\n}\n")),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u6ce8\u610f")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},(0,i.kt)("inlineCode",{parentName:"p"},".AddFriendlyException()")," \u9700\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"services.AddControllers()")," \u4e4b\u540e\u6ce8\u518c\u3002"))),(0,i.kt)("h3",{id:"742-\u4e24\u4e2a\u4f8b\u5b50"},"7.4.2 \u4e24\u4e2a\u4f8b\u5b50"),(0,i.kt)("h4",{id:"\u7b80\u5355\u629b\u4e2a\u5f02\u5e38"},"\u7b80\u5355\u629b\u4e2a\u5f02\u5e38"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{2,12}","{2,12}":!0},'using Furion.DynamicApiController;\nusing Furion.FriendlyException;\n\nnamespace Furion.Application\n{\n public class FurionAppService : IDynamicApiController\n {\n public int Get(int id)\n {\n if (id < 3)\n {\n throw Oops.Oh($"{id} \u4e0d\u80fd\u5c0f\u4e8e3");\n }\n\n return id;\n }\n }\n}\n')),(0,i.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,i.kt)("img",{src:(0,o.Z)("img/yhyc1.gif")}),(0,i.kt)("h4",{id:"\u629b\u51fa\u7279\u5b9a\u7c7b\u578b\u5f02\u5e38"},"\u629b\u51fa\u7279\u5b9a\u7c7b\u578b\u5f02\u5e38"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{2,13}","{2,13}":!0},'using Furion.DynamicApiController;\nusing Furion.FriendlyException;\nusing System;\n\nnamespace Furion.Application\n{\n public class FurionAppService : IDynamicApiController\n {\n public int Get(int id)\n {\n if (id < 3)\n {\n throw Oops.Oh($"{id} \u4e0d\u80fd\u5c0f\u4e8e3\u3002", typeof(InvalidOperationException));\n }\n\n return id;\n }\n }\n}\n')),(0,i.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,i.kt)("img",{src:(0,o.Z)("img/yhyc2.png")}),(0,i.kt)("h2",{id:"75-\u5173\u4e8e-oopsoh"},"7.5 \u5173\u4e8e Oops.Oh"),(0,i.kt)("p",null,"\u901a\u8fc7\u4e0a\u9762\u7684\u4f8b\u5b50\u53ef\u4ee5\u770b\u51fa\uff0c",(0,i.kt)("inlineCode",{parentName:"p"},"Oops.Oh(errorMessage)")," \u53ef\u4ee5\u7ed3\u5408 ",(0,i.kt)("inlineCode",{parentName:"p"},"throw")," \u629b\u51fa\u5f02\u5e38\u3002\u5bf9\u4e8e\u719f\u6089",(0,i.kt)("inlineCode",{parentName:"p"},"C#"),"\u7684\u4eba\u5458\u6765\u8bf4\uff0c",(0,i.kt)("inlineCode",{parentName:"p"},"throw")," \u540e\u9762\u53ea\u80fd ",(0,i.kt)("inlineCode",{parentName:"p"},"Exception")," \u5b9e\u4f8b\u3002",(0,i.kt)("inlineCode",{parentName:"p"},"Oops.Oh(...)")," \u65b9\u6cd5\u8fd4\u56de\u6b63\u662f ",(0,i.kt)("inlineCode",{parentName:"p"},"Exception")," \u5b9e\u4f8b\u3002"),(0,i.kt)("h3",{id:"751-\u4e3a\u4ec0\u4e48\u8d77\u8fd9\u4e2a\u540d\u5b57\uff1f"},"7.5.1 \u4e3a\u4ec0\u4e48\u8d77\u8fd9\u4e2a\u540d\u5b57\uff1f"),(0,i.kt)("p",null,"\u8fd9\u4e2a\u540d\u5b57\u6765\u6e90\u4e8e\u4e00\u4e2a\u82f1\u8bed\u53e5\u5b50\uff1a",(0,i.kt)("inlineCode",{parentName:"p"},"Oh, Oops!"),"\uff0c\u610f\u601d\u662f ",(0,i.kt)("strong",{parentName:"p"},"\u5662\uff08\u54ce\uff09\uff0c\u51fa\u9519\u4e86\uff01"),"\uff0c\u6240\u4ee5\u5c31\u6709\u4e86 ",(0,i.kt)("inlineCode",{parentName:"p"},"Oops.Oh"),"\u3002"),(0,i.kt)("h3",{id:"752-oopsoh-\u91cd\u8f7d\u65b9\u6cd5"},"7.5.2 ",(0,i.kt)("inlineCode",{parentName:"h3"},"Oops.Oh")," \u91cd\u8f7d\u65b9\u6cd5"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{13,22,30,39}","{13,22,30,39}":!0},'using System;\n\nnamespace Furion.FriendlyException\n{\n public static class Oops\n {\n /// \n /// \u629b\u51fa\u5b57\u7b26\u4e32\u5f02\u5e38\n /// \n /// \u5f02\u5e38\u6d88\u606f\n /// String.Format \u53c2\u6570\n /// \u5f02\u5e38\u5b9e\u4f8b\n public static Exception Oh(string errorMessage, params object[] args);\n\n /// \n /// \u629b\u51fa\u5b57\u7b26\u4e32\u5f02\u5e38\n /// \n /// \u5f02\u5e38\u6d88\u606f\n /// \u5177\u4f53\u5f02\u5e38\u7c7b\u578b\n /// String.Format \u53c2\u6570\n /// \u5f02\u5e38\u5b9e\u4f8b\n public static Exception Oh(string errorMessage, Type exceptionType, params object[] args);\n\n /// \n /// \u629b\u51fa\u9519\u8bef\u7801\u5f02\u5e38\n /// \n /// \u9519\u8bef\u7801\n /// String.Format \u53c2\u6570\n /// \u5f02\u5e38\u5b9e\u4f8b\n public static Exception Oh(object errorCode, params object[] args);\n\n /// \n /// \u629b\u51fa\u9519\u8bef\u7801\u5f02\u5e38\n /// \n /// \u9519\u8bef\u7801\n /// \u5177\u4f53\u5f02\u5e38\u7c7b\u578b\n /// String.Format \u53c2\u6570\n /// \u5f02\u5e38\u5b9e\u4f8b\n public static Exception Oh(object errorCode, Type exceptionType, params object[] args);\n }\n}\n')),(0,i.kt)("h2",{id:"76-\u6700\u4f73\u5b9e\u8df5-"},"7.6 \u6700\u4f73\u5b9e\u8df5 \ud83e\udd17"),(0,i.kt)("p",null,"\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\uff0c\u63d0\u4f9b\u4e86\u975e\u5e38\u7075\u6d3b\u4e14\u89c4\u8303\u5316\u7684\u53cb\u597d\u5f02\u5e38\u5904\u7406\u65b9\u5f0f\uff0c\u901a\u8fc7\u8fd9\u4e2a\u65b9\u5f0f\u53ef\u4ee5\u65b9\u4fbf\u7ba1\u7406\u5f02\u5e38\u72b6\u6001\u7801\u3001\u5f02\u5e38\u4fe1\u606f\u53ca\u5f02\u5e38\u672c\u5730\u5316\u3002"),(0,i.kt)("h3",{id:"761-\u521b\u5efa\u5f02\u5e38\u4fe1\u606f\u7c7b\u578b"},"7.6.1 \u521b\u5efa\u5f02\u5e38\u4fe1\u606f\u7c7b\u578b"),(0,i.kt)("p",null,"\u5b9e\u73b0\u81ea\u5b9a\u4e49\u5f02\u5e38\u4fe1\u606f\u7c7b\u578b\u5fc5\u987b\u9075\u5faa\u4ee5\u4e0b\u914d\u7f6e\uff1a"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"\u7c7b\u578b\u5fc5\u987b\u662f\u516c\u5f00\u4e14\u662f ",(0,i.kt)("inlineCode",{parentName:"li"},"Enum")," \u679a\u4e3e\u7c7b\u578b"),(0,i.kt)("li",{parentName:"ul"},"\u679a\u4e3e\u7c7b\u578b\u5fc5\u987b\u8d34\u6709 ",(0,i.kt)("inlineCode",{parentName:"li"},"[ErrorCodeType]")," \u7279\u6027"),(0,i.kt)("li",{parentName:"ul"},"\u679a\u4e3e\u4e2d\u6bcf\u4e00\u9879\u5fc5\u987b\u8d34\u6709 ",(0,i.kt)("inlineCode",{parentName:"li"},"[ErrorCodeItemMetadata]")," \u7279\u6027")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,5,8,11,14,17}","{1,5,8,11,14,17}":!0},'using Furion.FriendlyException;\n\nnamespace Furion.Application\n{\n [ErrorCodeType]\n public enum ErrorCodes\n {\n [ErrorCodeItemMetadata("{0} \u4e0d\u80fd\u5c0f\u4e8e {1}")]\n z1000,\n\n [ErrorCodeItemMetadata("\u6570\u636e\u4e0d\u5b58\u5728")]\n x1000,\n\n [ErrorCodeItemMetadata("{0} \u53d1\u73b0 {1} \u4e2a\u5f02\u5e38", "\u767e\u5c0f\u50e7", 2)]\n x1001,\n\n [ErrorCodeItemMetadata("\u670d\u52a1\u5668\u8fd0\u884c\u5f02\u5e38", ErrorCode = "Error")]\n SERVER_ERROR\n }\n}\n')),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"important")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u4e86 ",(0,i.kt)("inlineCode",{parentName:"p"},"[ErrorCodeType]")," \u7279\u6027\u548c ",(0,i.kt)("inlineCode",{parentName:"p"},"IErrorCodeTypeProvider")," \u63d0\u4f9b\u5668\u63a5\u53e3\u6765\u63d0\u4f9b\u5f02\u5e38\u4fe1\u606f\u626b\u63cf\uff0c\u8fd9\u91cc\u7528\u7684\u662f ",(0,i.kt)("inlineCode",{parentName:"p"},"[ErrorCodeType]")," \u7279\u6027\u7c7b\u3002"))),(0,i.kt)("h3",{id:"762-\u5173\u4e8e-errorcodeitemmetadata"},"7.6.2 \u5173\u4e8e ",(0,i.kt)("inlineCode",{parentName:"h3"},"[ErrorCodeItemMetadata]")),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u4e86",(0,i.kt)("inlineCode",{parentName:"p"},"[ErrorCodeItemMetadata]")," \u7279\u6027\u7528\u6765\u6807\u8bc6",(0,i.kt)("strong",{parentName:"p"},"\u679a\u4e3e\u5b57\u6bb5"),"\u5f02\u5e38\u5143\u6570\u636e\uff0c\u8be5\u7279\u6027\u652f\u6301\u4f20\u5165 ",(0,i.kt)("inlineCode",{parentName:"p"},"\u6d88\u606f\u5185\u5bb9")," \u548c ",(0,i.kt)("inlineCode",{parentName:"p"},"\u683c\u5f0f\u5316\u53c2\u6570"),"\u3002\u6700\u7ec8\u4f1a\u4f7f\u7528 ",(0,i.kt)("inlineCode",{parentName:"p"},"String.Format(\u6d88\u606f\u5185\u5bb9\uff0c\u683c\u5f0f\u5316\u53c2\u6570)")," \u8fdb\u884c\u683c\u5f0f\u5316\u3002"),(0,i.kt)("p",null,"\u5982\u679c\u6d88\u606f\u5185\u5bb9\u4e2d\u5305\u542b",(0,i.kt)("inlineCode",{parentName:"p"},"\u683c\u5f0f\u5316\u5360\u4f4d\u7b26"),"\u4f46\u672a\u6307\u5b9a",(0,i.kt)("inlineCode",{parentName:"p"},"\u683c\u5f0f\u5316\u53c2\u6570"),"\uff0c\u90a3\u4e48\u4f1a\u67e5\u627e\u5f02\u5e38\u6240\u5728\u65b9\u6cd5\u662f\u5426\u8d34\u6709 ",(0,i.kt)("inlineCode",{parentName:"p"},"[IfException]")," \u7279\u6027\u4e14\u542b\u6709\u683c\u5f0f\u5316\u53c2\u6570\uff0c\u63a5\u7740\u5c31\u4f1a\u67e5\u627e ",(0,i.kt)("inlineCode",{parentName:"p"},"Oops.Oh")," \u4e2d\u6307\u5b9a\u7684 ",(0,i.kt)("inlineCode",{parentName:"p"},"\u683c\u5f0f\u5316\u53c2\u6570"),"\u3002"),(0,i.kt)("h3",{id:"763-\u9759\u6001\u5f02\u5e38\u7c7b\u4f7f\u7528"},"7.6.3 \u9759\u6001\u5f02\u5e38\u7c7b\u4f7f\u7528"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{2,12}","{2,12}":!0},"using Furion.DynamicApiController;\nusing Furion.FriendlyException;\n\nnamespace Furion.Application\n{\n public class FurionAppService : IDynamicApiController\n {\n public int Get(int id)\n {\n if (id < 3)\n {\n throw Oops.Oh(ErrorCodes.z1000, id, 3);\n }\n\n return id;\n }\n }\n}\n")),(0,i.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,i.kt)("img",{src:(0,o.Z)("img/yhyc3.gif")}),(0,i.kt)("h3",{id:"764-\u5f02\u5e38\u65b9\u6cd5\u91cd\u8bd5"},"7.6.4 \u5f02\u5e38\u65b9\u6cd5\u91cd\u8bd5"),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u8c03\u6574\u8bf4\u660e")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},(0,i.kt)("inlineCode",{parentName:"p"},"v2.17.0+")," \u7248\u672c\u4e0b\u9762\u65b9\u6cd5\u8bf7\u4f7f\u7528 ",(0,i.kt)("inlineCode",{parentName:"p"},"Retry.Invoke()")," \u66ff\u4ee3\u3002"))),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"Oops.Retry(() => {\n // Do.....\n}, 3, 1000);\n\n// \u5e26\u8fd4\u56de\u503c\nvar value = Oops.Retry(() => {\n // Do.....\n}, 3, 1000);\n\n// \u53ea\u6709\u7279\u5b9a\u5f02\u5e38\u624d\u76d1\u542c\nOops.Retry(() => {\n\n}, 3, 1000, typeof(ArgumentNullException));\n")),(0,i.kt)("h3",{id:"765-\u66f4\u591a\u4f8b\u5b50"},"7.6.5 \u66f4\u591a\u4f8b\u5b50"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{6}","{6}":!0},'throw Oops.Oh(1000);\nthrow Oops.Oh(ErrorCodes.x1000);\nthrow Oops.Oh("\u54c8\u54c8\u54c8\u54c8");\nthrow Oops.Oh(errorCode: "x1001");\nthrow Oops.Oh(1000, typeof(Exception));\nthrow Oops.Oh(1000).StatusCode(400); // \u8bbe\u7f6e\u9519\u8bef\u7801\nthrow Oops.Bah("\u7528\u6237\u540d\u6216\u5bc6\u7801\u9519\u8bef"); // \u629b\u51fa\u4e1a\u52a1\u5f02\u5e38\uff0c\u72b6\u6001\u7801\u4e3a 400\nthrow Oops.Bah(1000);\n')),(0,i.kt)("h2",{id:"77-\u591a\u4e2a\u5f02\u5e38\u4fe1\u606f\u7c7b\u578b"},"7.7 \u591a\u4e2a\u5f02\u5e38\u4fe1\u606f\u7c7b\u578b"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{5-6,21-22}","{5-6,21-22}":!0},'using Furion.FriendlyException;\n\nnamespace Furion.Application\n{\n [ErrorCodeType]\n public enum ErrorCodes\n {\n [ErrorCodeItemMetadata("{0} \u4e0d\u80fd\u5c0f\u4e8e {1}")]\n z1000,\n\n [ErrorCodeItemMetadata("\u6570\u636e\u4e0d\u5b58\u5728")]\n x1000,\n\n [ErrorCodeItemMetadata("{0} \u53d1\u73b0 {1} \u4e2a\u5f02\u5e38", "\u767e\u5c0f\u50e7", 2)]\n x1001,\n\n [ErrorCodeItemMetadata("\u670d\u52a1\u5668\u8fd0\u884c\u5f02\u5e38", ErrorCode = "Error")]\n SERVER_ERROR\n }\n\n [ErrorCodeType]\n public enum UserErrorCodes\n {\n [ErrorCodeItemMetadata("\u7528\u6237\u6570\u636e\u4e0d\u5b58\u5728")]\n u1000,\n\n [ErrorCodeItemMetadata("\u5176\u4ed6\u5f02\u5e38")]\n u1001\n }\n}\n')),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u6ce8\u610f")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u591a\u4e2a\u5f02\u5e38\u9759\u6001\u7c7b\u4e2d\u4e5f\u5fc5\u987b\u4fdd\u8bc1\u5e38\u91cf\u503c\u552f\u4e00\u6027\uff0c\u4e0d\u53ef\u91cd\u590d\u3002"))),(0,i.kt)("h2",{id:"78-ierrorcodetypeprovider-\u63d0\u4f9b\u5668"},"7.8 ",(0,i.kt)("inlineCode",{parentName:"h2"},"IErrorCodeTypeProvider")," \u63d0\u4f9b\u5668"),(0,i.kt)("p",null,"\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\uff0c\u8fd8\u63d0\u4f9b\u4e86 ",(0,i.kt)("inlineCode",{parentName:"p"},"IErrorCodeTypeProvider")," \u5f02\u5e38\u6d88\u606f\u63d0\u4f9b\u5668\u63a5\u53e3\uff0c\u65b9\u4fbf\u5728\u4e0d\u80fd\u8d34 ",(0,i.kt)("inlineCode",{parentName:"p"},"[ErrorCodeType]")," \u7279\u6027\u60c5\u51b5\u4e0b\u4f7f\u7528\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{2,6,8-11}","{2,6,8-11}":!0},"using Furion.FriendlyException;\nusing System;\n\nnamespace Furion.Application\n{\n public class CustomErrorCodeTypeProvider : IErrorCodeTypeProvider\n {\n public Type[] Definitions => new[] {\n typeof(ErrorCodes),\n typeof(ErrorCodes2)\n };\n }\n}\n")),(0,i.kt)("p",null,"\u542f\u7528 ",(0,i.kt)("inlineCode",{parentName:"p"},"IErrorCodeTypeProvider")," \u63d0\u4f9b\u5668\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:'{11} title="Furion.Web.Core\\FurWebCoreStartup.cs"',"{11}":!0,title:'"Furion.Web.Core\\FurWebCoreStartup.cs"'},"using Microsoft.Extensions.DependencyInjection;\n\nnamespace Furion.Web.Core\n{\n [AppStartup(800)]\n public sealed class FurWebCoreStartup : AppStartup\n {\n public void ConfigureServices(IServiceCollection services)\n {\n services.AddControllers()\n .AddFriendlyException();\n }\n }\n}\n")),(0,i.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u5c0f\u77e5\u8bc6")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u53ea\u6709\u4f7f\u7528 ",(0,i.kt)("inlineCode",{parentName:"p"},"IErrorCodeTypeProvider")," \u65b9\u5f0f\u624d\u9700\u4f7f\u7528\u6cdb\u578b\u65b9\u5f0f\u6ce8\u518c\u3002\u901a\u8fc7\u4e0a\u9762\u7684\u65b9\u5f0f\u6ce8\u518c\u53ef\u4ee5\u540c\u65f6\u652f\u6301 ",(0,i.kt)("inlineCode",{parentName:"p"},"IErrorCodeTypeProvider")," \u548c ",(0,i.kt)("inlineCode",{parentName:"p"},"[ErrorCodeType]")," \u65b9\u5f0f\u3002"))),(0,i.kt)("h2",{id:"79-appsettingjson-\u4e2d\u914d\u7f6e"},"7.9 ",(0,i.kt)("inlineCode",{parentName:"h2"},"appsetting.json")," \u4e2d\u914d\u7f6e"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u8fd8\u63d0\u4f9b\u4e86\u975e\u5e38\u7075\u6d3b\u7684\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e\u5f02\u5e38\uff0c\u901a\u8fc7\u8fd9\u79cd\u65b9\u5f0f\u53ef\u4ee5\u5b9e\u73b0\u5f02\u5e38\u4fe1\u606f\u540e\u671f\u914d\u7f6e\uff0c\u4e5f\u5c31\u662f\u65e0\u9700\u5728\u5f00\u53d1\u9636\u6bb5\u9884\u5148\u5b9a\u4e49\u3002"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-json",metastring:'{2-8} title="Furion.Web.Entry/appsettings.json"',"{2-8}":!0,title:'"Furion.Web.Entry/appsettings.json"'},'{\n "ErrorCodeMessageSettings": {\n "Definitions": [\n [5000, "{0} \u4e0d\u80fd\u5c0f\u4e8e {1}"],\n [5001, "\u6211\u53eb {0} \u540d\u5b57", "\u767e\u5c0f\u50e7"],\n [5002, "Oops! \u51fa\u9519\u4e86"]\n ]\n }\n}\n')),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Definitions")," \u7c7b\u578b\u4e3a\u4e8c\u7ef4\u6570\u7ec4\uff0c\u4e8c\u7ef4\u6570\u7ec4\u4e2d\u7684\u6bcf\u4e00\u4e2a\u6570\u7ec4\u7b2c\u4e00\u4e2a\u53c2\u6570\u4e3a ",(0,i.kt)("inlineCode",{parentName:"p"},"ErrorCode")," \u4e5f\u5c31\u662f\u9519\u8bef\u7801\uff0c\u7b2c\u4e8c\u4e2a\u53c2\u6570\u4e3a ",(0,i.kt)("inlineCode",{parentName:"p"},"ErrorMessage")," \u6d88\u606f\u5185\u5bb9\uff0c\u5269\u4f59\u53c2\u6570\u4f5c\u4e3a ",(0,i.kt)("inlineCode",{parentName:"p"},"ErrorMessage")," \u7684\u683c\u5f0f\u5316\u53c2\u6570\u3002"),(0,i.kt)("h4",{id:"\u4f7f\u7528\u793a\u4f8b"},"\u4f7f\u7528\u793a\u4f8b"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{2,12}","{2,12}":!0},"using Furion.DynamicApiController;\nusing Furion.FriendlyException;\n\nnamespace Furion.Application\n{\n public class FurionAppService : IDynamicApiController\n {\n public int Get(int id)\n {\n if (id < 3)\n {\n throw Oops.Oh(5000, id, 3); // \u53ef\u4ee5\u5c06 5000\u4f5c\u4e3a\u5e38\u91cf\u914d\u7f6e\u8d77\u6765\n }\n\n return id;\n }\n }\n}\n")),(0,i.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u5c0f\u77e5\u8bc6")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},(0,i.kt)("inlineCode",{parentName:"p"},"[ErrorCodeType]")," \u548c ",(0,i.kt)("inlineCode",{parentName:"p"},"IErrorCodeTypeProvider")," \u548c ",(0,i.kt)("inlineCode",{parentName:"p"},"appsettings.json")," \u53ef\u4ee5\u540c\u65f6\u4f7f\u7528\u3002"))),(0,i.kt)("h2",{id:"710-ifexception-\u4f7f\u7528"},"7.10 ",(0,i.kt)("inlineCode",{parentName:"h2"},"[IfException]")," \u4f7f\u7528"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u4e86 ",(0,i.kt)("inlineCode",{parentName:"p"},"[IfException]")," \u7279\u6027\u53ef\u4ee5",(0,i.kt)("strong",{parentName:"p"},"\u8986\u76d6\u9ed8\u8ba4\u6d88\u606f\u914d\u7f6e"),"\u3002\u4e5f\u5c31\u662f\u8986\u76d6 ",(0,i.kt)("inlineCode",{parentName:"p"},"\u5f02\u5e38\u6d88\u606f\u7c7b\u578b")," \u548c ",(0,i.kt)("inlineCode",{parentName:"p"},"appsettings.json")," \u4e2d\u7684\u914d\u7f6e\u3002"),(0,i.kt)("div",{className:"admonition admonition-caution alert alert--warning"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 16 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"}))),"\u7279\u522b\u6ce8\u610f")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},(0,i.kt)("inlineCode",{parentName:"p"},"[IfException]")," \u53ea\u80fd\u8d34\u5728\u65b9\u6cd5\u4e0a\uff0c\u652f\u6301\u591a\u4e2a\u3002"))),(0,i.kt)("h3",{id:"7101-\u4f7f\u7528\u793a\u4f8b"},"7.10.1 \u4f7f\u7528\u793a\u4f8b"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"\u5f02\u5e38\u6d88\u606f\u7c7b\u5b9a\u4e49")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,4}","{1,4}":!0},'[ErrorCodeType]\npublic static class ErrorCodes\n{\n [ErrorCodeItemMetadata("{0} \u4e0d\u80fd\u5c0f\u4e8e {1}")]\n z1000\n}\n')),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"\u8986\u76d6\u9ed8\u8ba4\u914d\u7f6e")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{8}","{8}":!0},'using Furion.DynamicApiController;\nusing Furion.FriendlyException;\n\nnamespace Furion.Application\n{\n public class FurionAppService : IDynamicApiController\n {\n [IfException(ErrorCodes.z1000, ErrorMessage = "\u6211\u8986\u76d6\u4e86\u9ed8\u8ba4\u7684\uff1a{0} \u4e0d\u80fd\u5c0f\u4e8e {1}")]\n public int Get(int id)\n {\n if (id < 3)\n {\n throw Oops.Oh(ErrorCodes.z1000, id, 3);\n }\n\n return id;\n }\n }\n}\n')),(0,i.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,i.kt)("img",{src:(0,o.Z)("img/yhyc4.png")}),(0,i.kt)("h3",{id:"7102-\u66f4\u591a\u4f8b\u5b50"},"7.10.2 \u66f4\u591a\u4f8b\u5b50"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{2,8-11}","{2,8-11}":!0},'using Furion.DynamicApiController;\nusing Furion.FriendlyException;\n\nnamespace Furion.Application\n{\n public class FurionAppService : IDynamicApiController\n {\n [IfException(typeof(ExceptionType), ErrorMessage = "\u7279\u5b9a\u5f02\u5e38\u7c7b\u578b\u5168\u5c40\u62e6\u622a")]\n [IfException(ErrorMessage = "\u5168\u5c40\u5f02\u5e38\u62e6\u622a")]\n [IfException(ErrorCodes.z1000, ErrorMessage = "\u6211\u8986\u76d6\u4e86\u9ed8\u8ba4\u7684\uff1a{0} \u4e0d\u80fd\u5c0f\u4e8e {1}")]\n [IfException(ErrorCodes.x1001, "\u683c\u5f0f\u5316\u53c2\u65701", "\u683c\u5f0f\u5316\u53c2\u65702", ErrorMessage = "\u6211\u8986\u76d6\u4e86\u9ed8\u8ba4\u7684\uff1a{0} \u4e0d\u80fd\u5c0f\u4e8e {1}")]\n [IfException(ErrorCodes.x1000, "\u683c\u5f0f\u5316\u53c2\u65701", "\u683c\u5f0f\u5316\u53c2\u65702")]\n [IfException(ErrorCodes.SERVER_ERROR, "\u683c\u5f0f\u5316\u53c2\u65701", "\u683c\u5f0f\u5316\u53c2\u65702")]\n public int Get(int id)\n {\n if (id < 3)\n {\n throw Oops.Oh(ErrorCodes.z1000, id, 3);\n }\n\n return id;\n }\n }\n}\n')),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u683c\u5f0f\u5316\u6d41\u7a0b")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u5982\u679c\u6d88\u606f\u5185\u5bb9\u4e2d\u5305\u542b",(0,i.kt)("inlineCode",{parentName:"p"},"\u683c\u5f0f\u5316\u5360\u4f4d\u7b26"),"\u4f46\u672a\u6307\u5b9a",(0,i.kt)("inlineCode",{parentName:"p"},"\u683c\u5f0f\u5316\u53c2\u6570"),"\uff0c\u90a3\u4e48\u4f1a\u67e5\u627e\u5f02\u5e38\u6240\u5728\u65b9\u6cd5\u662f\u5426\u8d34\u6709 ",(0,i.kt)("inlineCode",{parentName:"p"},"[IfException]")," \u7279\u6027\u4e14\u542b\u6709\u683c\u5f0f\u5316\u53c2\u6570\uff0c\u63a5\u7740\u5c31\u4f1a\u67e5\u627e ",(0,i.kt)("inlineCode",{parentName:"p"},"Oops.Oh")," \u4e2d\u6307\u5b9a\u7684 ",(0,i.kt)("inlineCode",{parentName:"p"},"\u683c\u5f0f\u5316\u53c2\u6570"),"\u3002"))),(0,i.kt)("h2",{id:"711-\u5f02\u5e38\u6d88\u606f\u4f18\u5148\u7ea7"},"7.11 \u5f02\u5e38\u6d88\u606f\u4f18\u5148\u7ea7"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"[ErrorCodeItemMetadata]")," -> ",(0,i.kt)("inlineCode",{parentName:"p"},"appsettings.json")," -> ",(0,i.kt)("inlineCode",{parentName:"p"},"[IfException]"),"\u3002",(0,i.kt)("strong",{parentName:"p"},"\uff08\u4f4e -> \u9ad8\uff09")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"[IfException]")," \u4f1a\u8986\u76d6 ",(0,i.kt)("inlineCode",{parentName:"li"},"appsettings.json")," \u5b9a\u4e49\u7684\u72b6\u6001\u7801\u6d88\u606f\u3002"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"appsettings.json")," \u4f1a\u8986\u76d6 ",(0,i.kt)("inlineCode",{parentName:"li"},"[ErrorCodeItemMetadata]")," \u5b9a\u4e49\u7684\u6d88\u606f\u3002")),(0,i.kt)("h2",{id:"712-\u591a\u8bed\u8a00\u652f\u6301"},"7.12 \u591a\u8bed\u8a00\u652f\u6301"),(0,i.kt)("p",null,"\u53c2\u89c1 ",(0,i.kt)("a",{parentName:"p",href:"./local-language"},"\u3010\u5168\u7403\u5316\u548c\u672c\u5730\u5316\uff08\u591a\u8bed\u8a00\uff09\u3011")," \u7ae0\u8282"),(0,i.kt)("h2",{id:"713-\u89c4\u8303\u5316\u7ed3\u679c\u5f02\u5e38\u5904\u7406"},"7.13 \u89c4\u8303\u5316\u7ed3\u679c\u5f02\u5e38\u5904\u7406"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{15-16}","{15-16}":!0},'using Furion.DataValidation;\nusing Furion.DependencyInjection;\nusing Furion.UnifyResult.Internal;\nusing Microsoft.AspNetCore.Http;\nusing Microsoft.AspNetCore.Mvc;\nusing Microsoft.AspNetCore.Mvc.Filters;\nusing System;\nusing System.Threading.Tasks;\n\nnamespace Furion.UnifyResult\n{\n /// \n /// RESTful \u98ce\u683c\u8fd4\u56de\u503c\n /// \n [SuppressSniffer, UnifyModel(typeof(RESTfulResult<>))]\n public class RESTfulResultProvider : IUnifyResultProvider\n {\n /// \n /// \u5f02\u5e38\u8fd4\u56de\u503c\n /// \n /// \n /// \n /// \n public IActionResult OnException(ExceptionContext context, ExceptionMetadata metadata)\n {\n return new JsonResult(RESTfulResult(metadata.StatusCode, errors: metadata.Errors));\n }\n\n /// \n /// \u6210\u529f\u8fd4\u56de\u503c\n /// \n /// \n /// \n /// \n public IActionResult OnSucceeded(ActionExecutedContext context, object data)\n {\n return new JsonResult(RESTfulResult(StatusCodes.Status200OK, true, data));\n }\n\n /// \n /// \u9a8c\u8bc1\u5931\u8d25\u8fd4\u56de\u503c\n /// \n /// \n /// \n /// \n public IActionResult OnValidateFailed(ActionExecutingContext context, ValidationMetadata metadata)\n {\n return new JsonResult(RESTfulResult(StatusCodes.Status400BadRequest, errors: metadata.ValidationResult));\n }\n\n /// \n /// \u7279\u5b9a\u72b6\u6001\u7801\u8fd4\u56de\u503c\n /// \n /// \n /// \n /// \n /// \n public async Task OnResponseStatusCodes(HttpContext context, int statusCode, UnifyResultSettingsOptions unifyResultSettings)\n {\n // \u8bbe\u7f6e\u54cd\u5e94\u72b6\u6001\u7801\n UnifyContext.SetResponseStatusCodes(context, statusCode, unifyResultSettings);\n\n switch (statusCode)\n {\n // \u5904\u7406 401 \u72b6\u6001\u7801\n case StatusCodes.Status401Unauthorized:\n await context.Response.WriteAsJsonAsync(RESTfulResult(statusCode, errors: "401 Unauthorized")\n , App.GetOptions()?.JsonSerializerOptions);\n break;\n // \u5904\u7406 403 \u72b6\u6001\u7801\n case StatusCodes.Status403Forbidden:\n await context.Response.WriteAsJsonAsync(RESTfulResult(statusCode, errors: "403 Forbidden")\n , App.GetOptions()?.JsonSerializerOptions);\n break;\n default: break;\n }\n }\n\n /// \n /// \u8fd4\u56de RESTful \u98ce\u683c\u7ed3\u679c\u96c6\n /// \n /// \n /// \n /// \n /// \n /// \n private static RESTfulResult RESTfulResult(int statusCode, bool succeeded = default, object data = default, object errors = default)\n {\n return new RESTfulResult\n {\n StatusCode = statusCode,\n Succeeded = succeeded,\n Data = data,\n Errors = errors,\n Extras = UnifyContext.Take(),\n Timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds()\n };\n }\n }\n}\n')),(0,i.kt)("p",null,"\u4e4b\u540e\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Startup.cs")," \u4e2d\u6ce8\u518c\u5373\u53ef\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"services.AddControllers()\n .AddInjectWithUnifyResult();\n")),(0,i.kt)("h2",{id:"714-\u5168\u5c40\u5f02\u5e38\u5904\u7406\u63d0\u4f9b\u5668"},"7.14 \u5168\u5c40\u5f02\u5e38\u5904\u7406\u63d0\u4f9b\u5668"),(0,i.kt)("p",null,"\u901a\u5e38\u6211\u4eec\u9700\u8981\u5728\u5f02\u5e38\u6355\u83b7\u7684\u65f6\u5019\u5199\u65e5\u5fd7\uff0c\u8fd9\u65f6\u5019\u5c31\u9700\u8981\u4f7f\u7528\u5230 ",(0,i.kt)("inlineCode",{parentName:"p"},"IGlobalExceptionHandler")," \u5f02\u5e38\u5b9a\u4e49\u5904\u7406\u7a0b\u5e8f\uff0c\u5982\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{8}","{8}":!0},"using Furion.DependencyInjection;\nusing Furion.FriendlyException;\nusing Microsoft.AspNetCore.Mvc.Filters;\nusing System.Threading.Tasks;\n\nnamespace Furion.Application\n{\n public class LogExceptionHandler : IGlobalExceptionHandler, ISingleton\n {\n public Task OnExceptionAsync(ExceptionContext context)\n {\n // \u5199\u65e5\u5fd7\n\n return Task.CompletedTask;\n }\n }\n}\n")),(0,i.kt)("h2",{id:"715-friendlyexceptionsettings-\u914d\u7f6e"},"7.15 ",(0,i.kt)("inlineCode",{parentName:"h2"},"FriendlyExceptionSettings")," \u914d\u7f6e"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"HideErrorCode"),"\uff1a\u9690\u85cf\u9519\u8bef\u7801\uff0c",(0,i.kt)("inlineCode",{parentName:"li"},"bool")," \u7c7b\u578b\uff0c\u9ed8\u8ba4 ",(0,i.kt)("inlineCode",{parentName:"li"},"false")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"DefaultErrorCode"),"\uff1a\u9ed8\u8ba4\u9519\u8bef\u7801\uff0c",(0,i.kt)("inlineCode",{parentName:"li"},"string")," \u7c7b\u578b"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"DefaultErrorMessage"),"\uff1a\u9ed8\u8ba4\u9519\u8bef\u6d88\u606f\uff0c",(0,i.kt)("inlineCode",{parentName:"li"},"string")," \u7c7b\u578b")),(0,i.kt)("p",null,"\u914d\u7f6e\u793a\u4f8b"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-json"},'{\n "FriendlyExceptionSettings": {\n "DefaultErrorMessage": "\u7cfb\u7edf\u5f02\u5e38\uff0c\u8bf7\u8054\u7cfb\u7ba1\u7406\u5458"\n }\n}\n')),(0,i.kt)("h2",{id:"716-\u53cd\u9988\u4e0e\u5efa\u8bae"},"7.16 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,i.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/4034.eec6eb1e.js b/handbook/build/assets/js/4034.eec6eb1e.js deleted file mode 100644 index 64d0e488e48..00000000000 --- a/handbook/build/assets/js/4034.eec6eb1e.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! For license information please see 4034.eec6eb1e.js.LICENSE.txt */ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[4034],{6742:function(e,n,t){t.d(n,{Z:function(){return d}});var r=t(3366),o=t(7294),u=t(3727),i=t(2263),a=t(3919),c=t(412),l=(0,o.createContext)({collectLink:function(){}}),s=t(4996),f=t(8780),v=["isNavLink","to","href","activeClassName","isActive","data-noBrokenLinkCheck","autoAddBaseUrl"];var d=function(e){var n,t,d=e.isNavLink,p=e.to,g=e.href,h=e.activeClassName,m=e.isActive,y=e["data-noBrokenLinkCheck"],b=e.autoAddBaseUrl,w=void 0===b||b,P=(0,r.Z)(e,v),_=(0,i.Z)().siteConfig,E=_.trailingSlash,D=_.baseUrl,O=(0,s.C)().withBaseUrl,A=(0,o.useContext)(l),S=p||g,C=(0,a.Z)(S),x=null==S?void 0:S.replace("pathname://",""),j=void 0!==x?(t=x,w&&function(e){return e.startsWith("/")}(t)?O(t):t):void 0;j&&C&&(j=(0,f.applyTrailingSlash)(j,{trailingSlash:E,baseUrl:D}));var V,k=(0,o.useRef)(!1),L=d?u.OL:u.rU,R=c.Z.canUseIntersectionObserver;(0,o.useEffect)((function(){return!R&&C&&null!=j&&window.docusaurus.prefetch(j),function(){R&&V&&V.disconnect()}}),[j,R,C]);var I=null!==(n=null==j?void 0:j.startsWith("#"))&&void 0!==n&&n,M=!j||!C||I;return j&&C&&!I&&!y&&A.collectLink(j),M?o.createElement("a",Object.assign({href:j},S&&!C&&{target:"_blank",rel:"noopener noreferrer"},P)):o.createElement(L,Object.assign({},P,{onMouseEnter:function(){k.current||null==j||(window.docusaurus.preload(j),k.current=!0)},innerRef:function(e){var n,t;R&&e&&C&&(n=e,t=function(){null!=j&&window.docusaurus.prefetch(j)},(V=new window.IntersectionObserver((function(e){e.forEach((function(e){n===e.target&&(e.isIntersecting||e.intersectionRatio>0)&&(V.unobserve(n),V.disconnect(),t())}))}))).observe(n))},to:j||""},d&&{isActive:m,activeClassName:h}))}},4973:function(e,n,t){t.d(n,{Z:function(){return f},I:function(){return s}});var r=t(7294),o=/{\w+}/g,u="{}";function i(e,n){var t=[],i=e.replace(o,(function(e){var o=e.substr(1,e.length-2),i=null==n?void 0:n[o];if(void 0!==i){var a=r.isValidElement(i)?i:String(i);return t.push(a),u}return e}));return 0===t.length?e:t.every((function(e){return"string"==typeof e}))?i.split(u).reduce((function(e,n,r){var o;return e.concat(n).concat(null!==(o=t[r])&&void 0!==o?o:"")}),""):i.split(u).reduce((function(e,n,o){return[].concat(e,[r.createElement(r.Fragment,{key:o},n,t[o])])}),[])}function a(e){var n=e.children,t=e.values;if("string"!=typeof n)throw console.warn("Illegal children",n),new Error("The Docusaurus component only accept simple string values");return i(n,t)}var c=t(7529);function l(e){var n,t=e.id,r=e.message;return null!==(n=c[null!=t?t:r])&&void 0!==n?n:r}function s(e,n){var t,r=e.message;return i(null!==(t=l({message:r,id:e.id}))&&void 0!==t?t:r,n)}function f(e){var n,t=e.children,o=e.id,u=e.values;if("string"!=typeof t)throw console.warn("Illegal children",t),new Error("The Docusaurus component only accept simple string values");var i=null!==(n=l({message:t,id:o}))&&void 0!==n?n:t;return r.createElement(a,{values:u},i)}},8143:function(e,n,t){t.r(n),t.d(n,{BrowserRouter:function(){return r.VK},HashRouter:function(){return r.UT},Link:function(){return r.rU},MemoryRouter:function(){return r.VA},NavLink:function(){return r.OL},Prompt:function(){return r.NL},Redirect:function(){return r.l_},Route:function(){return r.AW},Router:function(){return r.F0},StaticRouter:function(){return r.gx},Switch:function(){return r.rs},generatePath:function(){return r.Gn},matchPath:function(){return r.LX},useHistory:function(){return r.k6},useLocation:function(){return r.TH},useParams:function(){return r.UO},useRouteMatch:function(){return r.$B},withRouter:function(){return r.EN}});var r=t(3727)},8084:function(e,n,t){t.r(n),t.d(n,{default:function(){return o},useAllPluginInstancesData:function(){return u},usePluginData:function(){return i}});var r=t(2263);function o(){var e=(0,r.Z)().globalData;if(!e)throw new Error("Docusaurus global data not found.");return e}function u(e){var n=o()[e];if(!n)throw new Error('Docusaurus plugin global data not found for "'+e+'" plugin.');return n}function i(e,n){void 0===n&&(n="default");var t=u(e)[n];if(!t)throw new Error('Docusaurus plugin global data not found for "'+e+'" plugin with id "'+n+'".');return t}},8408:function(e,n,t){Object.defineProperty(n,"__esModule",{value:!0}),n.getDocVersionSuggestions=n.getActiveDocContext=n.getActiveVersion=n.getLatestVersion=n.getActivePlugin=void 0;var r=t(8143);n.getActivePlugin=function(e,n,t){void 0===t&&(t={});var o=Object.entries(e).find((function(e){e[0];var t=e[1];return!!r.matchPath(n,{path:t.path,exact:!1,strict:!1})})),u=o?{pluginId:o[0],pluginData:o[1]}:void 0;if(!u&&t.failfast)throw new Error("Can't find active docs plugin for \""+n+'" pathname, while it was expected to be found. Maybe you tried to use a docs feature that can only be used on a docs-related page? Existing docs plugin paths are: '+Object.values(e).map((function(e){return e.path})).join(", "));return u};n.getLatestVersion=function(e){return e.versions.find((function(e){return e.isLast}))};n.getActiveVersion=function(e,t){var o=n.getLatestVersion(e);return[].concat(e.versions.filter((function(e){return e!==o})),[o]).find((function(e){return!!r.matchPath(t,{path:e.path,exact:!1,strict:!1})}))};n.getActiveDocContext=function(e,t){var o,u,i=n.getActiveVersion(e,t),a=null==i?void 0:i.docs.find((function(e){return!!r.matchPath(t,{path:e.path,exact:!0,strict:!1})}));return{activeVersion:i,activeDoc:a,alternateDocVersions:a?(o=a.id,u={},e.versions.forEach((function(e){e.docs.forEach((function(n){n.id===o&&(u[e.name]=n)}))})),u):{}}};n.getDocVersionSuggestions=function(e,t){var r=n.getLatestVersion(e),o=n.getActiveDocContext(e,t);return{latestDocSuggestion:null==o?void 0:o.alternateDocVersions[r.name],latestVersionSuggestion:r}}},6730:function(e,n,t){Object.defineProperty(n,"__esModule",{value:!0}),n.useDocVersionSuggestions=n.useActiveDocContext=n.useActiveVersion=n.useLatestVersion=n.useVersions=n.useActivePluginAndVersion=n.useActivePlugin=n.useDocsData=n.useAllDocsData=void 0;var r=t(655),o=t(8143),u=r.__importStar(t(8084)),i=t(8408),a={};n.useAllDocsData=function(){var e;return null!==(e=u.default()["docusaurus-plugin-content-docs"])&&void 0!==e?e:a};n.useDocsData=function(e){return u.usePluginData("docusaurus-plugin-content-docs",e)};n.useActivePlugin=function(e){void 0===e&&(e={});var t=n.useAllDocsData(),r=o.useLocation().pathname;return i.getActivePlugin(t,r,e)};n.useActivePluginAndVersion=function(e){void 0===e&&(e={});var t=n.useActivePlugin(e),r=o.useLocation().pathname;if(t)return{activePlugin:t,activeVersion:i.getActiveVersion(t.pluginData,r)}};n.useVersions=function(e){return n.useDocsData(e).versions};n.useLatestVersion=function(e){var t=n.useDocsData(e);return i.getLatestVersion(t)};n.useActiveVersion=function(e){var t=n.useDocsData(e),r=o.useLocation().pathname;return i.getActiveVersion(t,r)};n.useActiveDocContext=function(e){var t=n.useDocsData(e),r=o.useLocation().pathname;return i.getActiveDocContext(t,r)};n.useDocVersionSuggestions=function(e){var t=n.useDocsData(e),r=o.useLocation().pathname;return i.getDocVersionSuggestions(t,r)}},1217:function(e,n,t){t.d(n,{Z:function(){return a}});var r=t(7294),o=t(9105),u=t(3018),i=t(4996);function a(e){var n=e.title,t=e.description,a=e.keywords,c=e.image,l=(0,u.LU)().image,s=(0,u.pe)(n),f=(0,i.Z)(c||l,{absolute:!0});return r.createElement(o.Z,null,n&&r.createElement("title",null,s),n&&r.createElement("meta",{property:"og:title",content:s}),t&&r.createElement("meta",{name:"description",content:t}),t&&r.createElement("meta",{property:"og:description",content:t}),a&&r.createElement("meta",{name:"keywords",content:Array.isArray(a)?a.join(","):a}),f&&r.createElement("meta",{property:"og:image",content:f}),f&&r.createElement("meta",{name:"twitter:image",content:f}))}},907:function(e,n,t){t.d(n,{Iw:function(){return r.useActiveDocContext},gA:function(){return r.useActivePlugin},WS:function(){return r.useActivePluginAndVersion},zu:function(){return r.useActiveVersion},_r:function(){return r.useAllDocsData},Jo:function(){return r.useDocVersionSuggestions},zh:function(){return r.useDocsData},yW:function(){return r.useLatestVersion},gB:function(){return r.useVersions}});var r=t(6730)},3783:function(e,n,t){var r=t(7294),o=t(412),u="desktop",i="mobile",a="ssr";function c(){return o.Z.canUseDOM?window.innerWidth>996?u:i:a}n.Z=function(){var e=(0,r.useState)((function(){return c()})),n=e[0],t=e[1];return(0,r.useEffect)((function(){if(o.Z.canUseDOM){return window.addEventListener("resize",e),function(){window.removeEventListener("resize",e),clearTimeout(undefined)}}function e(){t(c())}}),[]),n}},3018:function(e,n,t){t.d(n,{pl:function(){return me},zF:function(){return F},HX:function(){return g},PO:function(){return X},L5:function(){return ie},Cv:function(){return ee},Cn:function(){return Q},kM:function(){return fe},WA:function(){return l},os:function(){return h},Mg:function(){return b},_f:function(){return s},bc:function(){return p},l5:function(){return v},nT:function(){return ye},uR:function(){return L},J:function(){return le},Oh:function(){return se},be:function(){return be},SL:function(){return C},g8:function(){return $},c2:function(){return A},D9:function(){return S},LU:function(){return o},pe:function(){return w}});var r=t(2263);function o(){return(0,r.Z)().siteConfig.themeConfig}var u="localStorage";function i(e){if(void 0===e&&(e=u),"undefined"==typeof window)throw new Error("Browser storage is not available on Node.js/Docusaurus SSR process.");if("none"===e)return null;try{return window[e]}catch(t){return n=t,a||(console.warn("Docusaurus browser storage is not available.\nPossible reasons: running Docusaurus in an iframe, in an incognito browser session, or using too strict browser privacy settings.",n),a=!0),null}var n}var a=!1;var c={get:function(){return null},set:function(){},del:function(){}};var l=function(e,n){if("undefined"==typeof window)return function(e){function n(){throw new Error('Illegal storage API usage for storage key "'+e+'".\nDocusaurus storage APIs are not supposed to be called on the server-rendering process.\nPlease only call storage APIs in effects and event handlers.')}return{get:n,set:n,del:n}}(e);var t=i(null==n?void 0:n.persistence);return null===t?c:{get:function(){return t.getItem(e)},set:function(n){return t.setItem(e,n)},del:function(){return t.removeItem(e)}}};function s(e){void 0===e&&(e=u);var n=i(e);if(!n)return[];for(var t=[],r=0;rt.pluralForms.length&&console.error("For locale="+t.locale+", a maximum of "+t.pluralForms.length+" plural forms are expected ("+t.pluralForms+"), but the message contains "+r.length+" plural forms: "+e+" ");var o=t.select(n),u=t.pluralForms.indexOf(o);return r[Math.min(u,r.length-1)]}(t,n,e)}}}function S(e){var n=(0,P.useRef)();return(0,P.useEffect)((function(){n.current=e})),n.current}function C(e){var n=(0,f.TH)(),t=S(n),r=(0,P.useRef)(!0);(0,P.useEffect)((function(){r.current?r.current=!1:e({location:n,previousLocation:t})}),[n])}var x=t(3366),j=t(412),V=["collapsed"],k=["lazy"];function L(e){var n=e.initialState,t=(0,P.useState)(null!=n&&n),r=t[0],o=t[1],u=(0,P.useCallback)((function(){o((function(e){return!e}))}),[]);return{collapsed:r,setCollapsed:o,toggleCollapsed:u}}var R={display:"none",overflow:"hidden",height:"0px"},I={display:"block",overflow:"visible",height:"auto"};function M(e,n){var t=n?R:I;e.style.display=t.display,e.style.overflow=t.overflow,e.style.height=t.height}function T(e){var n=e.collapsibleRef,t=e.collapsed,r=e.animation,o=(0,P.useRef)(!1);(0,P.useEffect)((function(){var e,u=n.current;function i(){var e,n,t=u.scrollHeight;return{transition:"height "+(null!==(e=null==r?void 0:r.duration)&&void 0!==e?e:function(e){var n=e/36;return Math.round(10*(4+15*Math.pow(n,.25)+n/5))}(t))+"ms "+(null!==(n=null==r?void 0:r.easing)&&void 0!==n?n:"ease-in-out"),height:t+"px"}}function a(){var e=i();u.style.transition=e.transition,u.style.height=e.height}if(!o.current)return M(u,t),void(o.current=!0);return u.style.willChange="height",e=requestAnimationFrame((function(){t?(a(),requestAnimationFrame((function(){u.style.height=R.height,u.style.overflow=R.overflow}))):(u.style.display="block",requestAnimationFrame((function(){a()})))})),function(){return cancelAnimationFrame(e)}}),[n,t,r])}function Z(e){if(!j.Z.canUseDOM)return e?R:I}function N(e){var n=e.as,t=void 0===n?"div":n,r=e.collapsed,o=e.children,u=e.animation,i=e.onCollapseTransitionEnd,a=e.className,c=e.disableSSRStyle,l=(0,P.useRef)(null);return T({collapsibleRef:l,collapsed:r,animation:u}),P.createElement(t,{ref:l,style:c?void 0:Z(r),onTransitionEnd:function(e){if("height"===e.propertyName){var n=l.current,t=n.style.height;r||parseInt(t,10)!==n.scrollHeight||(M(n,!1),null==i||i(!1)),t===R.height&&(M(n,!0),null==i||i(!0))}},className:a},o)}function U(e){var n=e.collapsed,t=(0,x.Z)(e,V),r=(0,P.useState)(!n),o=r[0],u=r[1];(0,P.useLayoutEffect)((function(){n||u(!0)}),[n]);var i=(0,P.useState)(n),a=i[0],c=i[1];return(0,P.useLayoutEffect)((function(){o&&c(n)}),[o,n]),o?P.createElement(N,Object.assign({},t,{collapsed:a})):null}function F(e){var n=e.lazy,t=(0,x.Z)(e,k),r=n?U:N;return P.createElement(r,Object.assign({},t))}var B=t(6010),z="details_2Ziz",W="isClient_1Fil",H="collapsibleContent_3OHp",q=["summary","children"];function G(e){return!!e&&("SUMMARY"===e.tagName||G(e.parentElement))}function J(e,n){return!!e&&(e===n||J(e.parentElement,n))}var X=function(e){var n,t=e.summary,o=e.children,u=(0,x.Z)(e,q),i=(0,r.Z)().isClient,a=(0,P.useRef)(null),c=L({initialState:!u.open}),l=c.collapsed,s=c.setCollapsed,f=(0,P.useState)(u.open),v=f[0],d=f[1];return P.createElement("details",Object.assign({},u,{ref:a,open:v,"data-collapsed":l,className:(0,B.Z)(z,(n={},n[W]=i,n),u.className),onMouseDown:function(e){G(e.target)&&e.detail>1&&e.preventDefault()},onClick:function(e){e.stopPropagation();var n=e.target;G(n)&&J(n,a.current)&&(e.preventDefault(),l?(s(!1),d(!0)):s(!0))}}),t,P.createElement(F,{lazy:!1,collapsed:l,disableSSRStyle:!0,onCollapseTransitionEnd:function(e){s(e),d(!e)}},P.createElement("div",{className:H},o)))};var K=(0,P.createContext)(null);function Q(e){var n=e.children;return P.createElement(K.Provider,{value:(0,P.useState)(null)},n)}function Y(){var e=(0,P.useContext)(K);if(null===e)throw new Error("MobileSecondaryMenuProvider was not used correctly, context value is null");return e}function $(){var e=Y()[0];if(e){var n=e.component;return function(t){return P.createElement(n,Object.assign({},e.props,t))}}return function(){}}function ee(e){var n,t=e.component,r=e.props,o=Y()[1],u=(n=r,(0,P.useMemo)((function(){return n}),[].concat(Object.keys(n),Object.values(n))));return(0,P.useEffect)((function(){o({component:t,props:u})}),[o,t,u]),(0,P.useEffect)((function(){return function(){return o(null)}}),[o]),null}var ne=function(e){return"docs-preferred-version-"+e},te={save:function(e,n,t){l(ne(e),{persistence:n}).set(t)},read:function(e,n){return l(ne(e),{persistence:n}).get()},clear:function(e,n){l(ne(e),{persistence:n}).del()}};function re(e){var n=e.pluginIds,t=e.versionPersistence,r=e.allDocsData;var o={};return n.forEach((function(e){o[e]=function(e){var n=te.read(e,t);return r[e].versions.some((function(e){return e.name===n}))?{preferredVersionName:n}:(te.clear(e,t),{preferredVersionName:null})}(e)})),o}function oe(){var e=(0,m._r)(),n=o().docs.versionPersistence,t=(0,P.useMemo)((function(){return Object.keys(e)}),[e]),r=(0,P.useState)((function(){return function(e){var n={};return e.forEach((function(e){n[e]={preferredVersionName:null}})),n}(t)})),u=r[0],i=r[1];return(0,P.useEffect)((function(){i(re({allDocsData:e,versionPersistence:n,pluginIds:t}))}),[e,n,t]),[u,(0,P.useMemo)((function(){return{savePreferredVersion:function(e,t){te.save(e,n,t),i((function(n){var r;return Object.assign({},n,((r={})[e]={preferredVersionName:t},r))}))}}}),[i])]}var ue=(0,P.createContext)(null);function ie(e){var n=e.children;return y?P.createElement(ae,null,n):P.createElement(P.Fragment,null,n)}function ae(e){var n=e.children,t=oe();return P.createElement(ue.Provider,{value:t},n)}function ce(){var e=(0,P.useContext)(ue);if(!e)throw new Error('Can\'t find docs preferred context, maybe you forgot to use the "DocsPreferredVersionContextProvider"?');return e}function le(e){void 0===e&&(e="default");var n=(0,m.zh)(e),t=ce(),r=t[0],o=t[1],u=r[e].preferredVersionName;return{preferredVersion:u?n.versions.find((function(e){return e.name===u})):null,savePreferredVersionName:(0,P.useCallback)((function(n){o.savePreferredVersion(e,n)}),[o])}}function se(){var e=(0,m._r)(),n=ce()[0];var t=Object.keys(e),r={};return t.forEach((function(t){r[t]=function(t){var r=e[t],o=n[t].preferredVersionName;return o?r.versions.find((function(e){return e.name===o})):null}(t)})),r}var fe={page:{blogListPage:"blog-list-page",blogPostPage:"blog-post-page",blogTagsListPage:"blog-tags-list-page",blogTagsPostPage:"blog-tags-post-page",docPage:"doc-page",mdxPage:"mdx-page"},wrapper:{main:"main-wrapper",blogPages:"blog-wrapper",docPages:"docs-wrapper",mdxPages:"mdx-wrapper"}},ve=l("docusaurus.announcement.dismiss"),de=l("docusaurus.announcement.id"),pe=function(){return"true"===ve.get()},ge=function(e){return ve.set(String(e))},he=(0,P.createContext)(null),me=function(e){var n=e.children,t=function(){var e=o().announcementBar,n=(0,r.Z)().isClient,t=(0,P.useState)((function(){return!!n&&pe()})),u=t[0],i=t[1];(0,P.useEffect)((function(){i(pe())}),[]);var a=(0,P.useCallback)((function(){ge(!0),i(!0)}),[]);return(0,P.useEffect)((function(){if(e){var n=e.id,t=de.get();"annoucement-bar"===t&&(t="announcement-bar");var r=n!==t;de.set(n),r&&ge(!1),!r&&pe()||i(!1)}}),[]),(0,P.useMemo)((function(){return{isClosed:u,close:a}}),[u])}();return P.createElement(he.Provider,{value:t},n)},ye=function(){var e=(0,P.useContext)(he);if(!e)throw new Error("useAnnouncementBar(): AnnouncementBar not found in React context: make sure to use the AnnouncementBarProvider on top of the tree");return e};function be(){var e=(0,r.Z)().siteConfig.baseUrl;return(0,f.TH)().pathname.replace(e,"/")}},8802:function(e,n){Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e,n){var t=n.trailingSlash,r=n.baseUrl;if(e.startsWith("#"))return e;if(void 0===t)return e;var o,u=e.split(/[#?]/)[0],i="/"===u||u===r?u:(o=u,t?function(e){return e.endsWith("/")?e:e+"/"}(o):function(e){return e.endsWith("/")?e.slice(0,-1):e}(o));return e.replace(u,i)}},8780:function(e,n,t){var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(n,"__esModule",{value:!0}),n.uniq=n.applyTrailingSlash=void 0;var o=t(8802);Object.defineProperty(n,"applyTrailingSlash",{enumerable:!0,get:function(){return r(o).default}});var u=t(9964);Object.defineProperty(n,"uniq",{enumerable:!0,get:function(){return r(u).default}})},9964:function(e,n){Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e){return Array.from(new Set(e))}},6010:function(e,n,t){function r(e){var n,t,o="";if("string"==typeof e||"number"==typeof e)o+=e;else if("object"==typeof e)if(Array.isArray(e))for(n=0;n=0;a--)(o=e[a])&&(i=(u<3?o(i):u>3?o(n,t,i):o(n,t))||i);return u>3&&i&&Object.defineProperty(n,t,i),i}function c(e,n){return function(t,r){n(t,r,e)}}function l(e,n){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,n)}function s(e,n,t,r){return new(t||(t=Promise))((function(o,u){function i(e){try{c(r.next(e))}catch(n){u(n)}}function a(e){try{c(r.throw(e))}catch(n){u(n)}}function c(e){var n;e.done?o(e.value):(n=e.value,n instanceof t?n:new t((function(e){e(n)}))).then(i,a)}c((r=r.apply(e,n||[])).next())}))}function f(e,n){var t,r,o,u,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return u={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(u[Symbol.iterator]=function(){return this}),u;function a(u){return function(a){return function(u){if(t)throw new TypeError("Generator is already executing.");for(;i;)try{if(t=1,r&&(o=2&u[0]?r.return:u[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,u[1])).done)return o;switch(r=0,o&&(u=[2&u[0],o.value]),u[0]){case 0:case 1:o=u;break;case 4:return i.label++,{value:u[1],done:!1};case 5:i.label++,r=u[1],u=[0];continue;case 7:u=i.ops.pop(),i.trys.pop();continue;default:if(!(o=i.trys,(o=o.length>0&&o[o.length-1])||6!==u[0]&&2!==u[0])){i=0;continue}if(3===u[0]&&(!o||u[1]>o[0]&&u[1]=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(n?"Object is not iterable.":"Symbol.iterator is not defined.")}function g(e,n){var t="function"==typeof Symbol&&e[Symbol.iterator];if(!t)return e;var r,o,u=t.call(e),i=[];try{for(;(void 0===n||n-- >0)&&!(r=u.next()).done;)i.push(r.value)}catch(a){o={error:a}}finally{try{r&&!r.done&&(t=u.return)&&t.call(u)}finally{if(o)throw o.error}}return i}function h(){for(var e=[],n=0;n1||a(e,n)}))})}function a(e,n){try{(t=o[e](n)).value instanceof b?Promise.resolve(t.value.v).then(c,l):s(u[0][2],t)}catch(r){s(u[0][3],r)}var t}function c(e){a("next",e)}function l(e){a("throw",e)}function s(e,n){e(n),u.shift(),u.length&&a(u[0][0],u[0][1])}}function P(e){var n,t;return n={},r("next"),r("throw",(function(e){throw e})),r("return"),n[Symbol.iterator]=function(){return this},n;function r(r,o){n[r]=e[r]?function(n){return(t=!t)?{value:b(e[r](n)),done:"return"===r}:o?o(n):n}:o}}function _(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var n,t=e[Symbol.asyncIterator];return t?t.call(e):(e=p(e),n={},r("next"),r("throw"),r("return"),n[Symbol.asyncIterator]=function(){return this},n);function r(t){n[t]=e[t]&&function(n){return new Promise((function(r,o){(function(e,n,t,r){Promise.resolve(r).then((function(n){e({value:n,done:t})}),n)})(r,o,(n=e[t](n)).done,n.value)}))}}}function E(e,n){return Object.defineProperty?Object.defineProperty(e,"raw",{value:n}):e.raw=n,e}var D=Object.create?function(e,n){Object.defineProperty(e,"default",{enumerable:!0,value:n})}:function(e,n){e.default=n};function O(e){if(e&&e.__esModule)return e;var n={};if(null!=e)for(var t in e)"default"!==t&&Object.prototype.hasOwnProperty.call(e,t)&&v(n,e,t);return D(n,e),n}function A(e){return e&&e.__esModule?e:{default:e}}function S(e,n,t,r){if("a"===t&&!r)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof n?e!==n||!r:!n.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===t?r:"a"===t?r.call(e):r?r.value:n.get(e)}function C(e,n,t,r,o){if("m"===r)throw new TypeError("Private method is not writable");if("a"===r&&!o)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof n?e!==n||!o:!n.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===r?o.call(e,t):o?o.value=t:n.set(e,t),t}}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/4328.ad94b100.js b/handbook/build/assets/js/4328.ad94b100.js new file mode 100644 index 00000000000..0e4a8345935 --- /dev/null +++ b/handbook/build/assets/js/4328.ad94b100.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[4328],{830:function(e,t,n){n.d(t,{W:function(){return r}});var a=n(7294);function r(){return a.createElement("svg",{width:"20",height:"20",className:"DocSearch-Search-Icon",viewBox:"0 0 20 20"},a.createElement("path",{d:"M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"}))}},8617:function(e,t,n){n.d(t,{Z:function(){return o}});var a=n(7294),r="iconExternalLink_3J9K",o=function(e){var t=e.width,n=void 0===t?13.5:t,o=e.height,l=void 0===o?13.5:o;return a.createElement("svg",{width:n,height:l,"aria-hidden":"true",viewBox:"0 0 24 24",className:r},a.createElement("path",{fill:"currentColor",d:"M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"}))}},4328:function(e,t,n){n.d(t,{Z:function(){return Ee}});var a=n(7294),r=n(6010),o=n(5977),l=n(4973),c=n(941),i="skipToContent_1oUP";function s(e){e.setAttribute("tabindex","-1"),e.focus(),e.removeAttribute("tabindex")}var u=function(){var e=(0,a.useRef)(null),t=(0,o.k6)().action;return(0,c.SL)((function(n){var a=n.location;e.current&&!a.hash&&"PUSH"===t&&s(e.current)})),a.createElement("div",{ref:e},a.createElement("a",{href:"#",className:i,onClick:function(e){e.preventDefault();var t=document.querySelector("main:first-of-type")||document.querySelector(".main-wrapper");t&&s(t)}},a.createElement(l.Z,{id:"theme.common.skipToMainContent",description:"The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation"},"Skip to main content")))},m=n(7462),d=n(3366),f=["width","height","className"];function v(e){var t=e.width,n=void 0===t?20:t,r=e.height,o=void 0===r?20:r,l=e.className,c=(0,d.Z)(e,f);return a.createElement("svg",(0,m.Z)({className:l,viewBox:"0 0 24 24",width:n,height:o,fill:"currentColor"},c),a.createElement("path",{d:"M24 20.188l-8.315-8.209 8.2-8.282-3.697-3.697-8.212 8.318-8.31-8.203-3.666 3.666 8.321 8.24-8.206 8.313 3.666 3.666 8.237-8.318 8.285 8.203z"}))}var h="announcementBar_3WsW",b="announcementBarPlaceholder_2m9F",g="announcementBarClose_38nx",p="announcementBarContent_3EUC";var E=function(){var e=(0,c.nT)(),t=e.isClosed,n=e.close,o=(0,c.LU)().announcementBar;if(!o)return null;var i=o.content,s=o.backgroundColor,u=o.textColor,m=o.isCloseable;return!i||m&&t?null:a.createElement("div",{className:h,style:{backgroundColor:s,color:u},role:"banner"},m&&a.createElement("div",{className:b}),a.createElement("div",{className:p,dangerouslySetInnerHTML:{__html:i}}),m?a.createElement("button",{type:"button",className:(0,r.Z)("clean-btn close",g),onClick:n,"aria-label":(0,l.I)({id:"theme.AnnouncementBar.closeButtonAriaLabel",message:"Close",description:"The ARIA label for close button of announcement bar"})},a.createElement(v,{width:14,height:14})):null)},k=n(1036),Z=n(2389),w={toggle:"toggle_71bT"},C=function(e){var t=e.icon,n=e.style;return a.createElement("span",{className:(0,r.Z)(w.toggle,w.dark),style:n},t)},y=function(e){var t=e.icon,n=e.style;return a.createElement("span",{className:(0,r.Z)(w.toggle,w.light),style:n},t)},N=(0,a.memo)((function(e){var t=e.className,n=e.icons,o=e.checked,l=e.disabled,c=e.onChange,i=(0,a.useState)(o),s=i[0],u=i[1],m=(0,a.useState)(!1),d=m[0],f=m[1],v=(0,a.useRef)(null);return a.createElement("div",{className:(0,r.Z)("react-toggle",t,{"react-toggle--checked":s,"react-toggle--focus":d,"react-toggle--disabled":l})},a.createElement("div",{className:"react-toggle-track",role:"button",tabIndex:-1,onClick:function(){var e;return null==(e=v.current)?void 0:e.click()}},a.createElement("div",{className:"react-toggle-track-check"},n.checked),a.createElement("div",{className:"react-toggle-track-x"},n.unchecked),a.createElement("div",{className:"react-toggle-thumb"})),a.createElement("input",{ref:v,checked:s,type:"checkbox",className:"react-toggle-screenreader-only","aria-label":"Switch between dark and light mode",onChange:c,onClick:function(){return u(!s)},onFocus:function(){return f(!0)},onBlur:function(){return f(!1)},onKeyDown:function(e){var t;"Enter"===e.key&&(null==(t=v.current)||t.click())}}))}));function _(e){var t=(0,c.LU)().colorMode.switchConfig,n=t.darkIcon,r=t.darkIconStyle,o=t.lightIcon,l=t.lightIconStyle,i=(0,Z.Z)();return a.createElement(N,(0,m.Z)({disabled:!i,icons:{checked:a.createElement(C,{icon:n,style:r}),unchecked:a.createElement(y,{icon:o,style:l})}},e))}var S=n(5350),I=n(7898),L=function(e){var t=(0,o.TH)(),n=(0,a.useState)(e),r=n[0],l=n[1],i=(0,a.useRef)(!1),s=(0,a.useState)(0),u=s[0],m=s[1],d=(0,a.useCallback)((function(e){null!==e&&m(e.getBoundingClientRect().height)}),[]);return(0,I.Z)((function(t,n){var a=t.scrollY,r=null==n?void 0:n.scrollY;if(e)if(a=r?l(!1):a+c0&&a.createElement("button",{type:"button",className:"clean-btn navbar-sidebar__back",onClick:s.hide},a.createElement(l.Z,{id:"theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel",description:"The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)"},"\u2190 Back to main menu")),s.content)))}var Y=function(){var e,t=(0,c.LU)().navbar,n=t.hideOnScroll,o=t.style,l=function(){var e=(0,B.Z)(),t="mobile"===e,n=(0,a.useState)(!1),r=n[0],o=n[1];(0,c.Rb)((function(){r&&o(!1)}));var l=(0,a.useCallback)((function(){o((function(e){return!e}))}),[]);return(0,a.useEffect)((function(){"desktop"===e&&o(!1)}),[e]),{shouldRender:t,toggle:l,shown:r}}(),i=K(),s=(0,T.gA)(),u=L(n),d=u.navbarRef,f=u.isNavbarVisible,v=F(),h=v.some((function(e){return"search"===e.type})),b=function(e){return{leftItems:e.filter((function(e){var t;return"left"===(null!=(t=e.position)?t:j)})),rightItems:e.filter((function(e){var t;return"right"===(null!=(t=e.position)?t:j)}))}}(v),g=b.leftItems,p=b.rightItems;return a.createElement("nav",{ref:d,className:(0,r.Z)("navbar","navbar--fixed-top",(e={"navbar--dark":"dark"===o,"navbar--primary":"primary"===o,"navbar-sidebar--show":l.shown},e[V]=n,e[W]=n&&!f,e))},a.createElement("div",{className:"navbar__inner"},a.createElement("div",{className:"navbar__items"},((null==v?void 0:v.length)>0||s)&&a.createElement("button",{"aria-label":"Navigation bar toggle",className:"navbar__toggle clean-btn",type:"button",tabIndex:0,onClick:l.toggle,onKeyDown:l.toggle},a.createElement(A,null)),a.createElement(x.Z,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title"}),g.map((function(e,t){return a.createElement(P.Z,(0,m.Z)({},e,{key:t}))}))),a.createElement("div",{className:"navbar__items navbar__items--right"},p.map((function(e,t){return a.createElement(P.Z,(0,m.Z)({},e,{key:t}))})),!i.disabled&&a.createElement(_,{className:U,checked:i.isDarkTheme,onChange:i.toggle}),!h&&a.createElement(k.Z,null))),a.createElement("div",{role:"presentation",className:"navbar-sidebar__backdrop",onClick:l.toggle}),l.shouldRender&&a.createElement(q,{sidebarShown:l.shown,toggleSidebar:l.toggle}))},G=n(546),X=n(412),Q=(0,c.WA)("theme"),J="light",$="dark",ee=function(e){return e===$?$:J},te=function(e){(0,c.WA)("theme").set(ee(e))},ne=function(){var e=(0,c.LU)().colorMode,t=e.defaultMode,n=e.disableSwitch,r=e.respectPrefersColorScheme,o=(0,a.useState)(function(e){return X.Z.canUseDOM?ee(document.documentElement.getAttribute("data-theme")):ee(e)}(t)),l=o[0],i=o[1],s=(0,a.useCallback)((function(){i(J),te(J)}),[]),u=(0,a.useCallback)((function(){i($),te($)}),[]);return(0,a.useEffect)((function(){document.documentElement.setAttribute("data-theme",ee(l))}),[l]),(0,a.useEffect)((function(){if(!n)try{var e=Q.get();null!==e&&i(ee(e))}catch(t){console.error(t)}}),[i]),(0,a.useEffect)((function(){n&&!r||window.matchMedia("(prefers-color-scheme: dark)").addListener((function(e){var t=e.matches;i(t?$:J)}))}),[]),{isDarkTheme:l===$,setLightTheme:s,setDarkTheme:u}},ae=n(2924);var re=function(e){var t=ne(),n=t.isDarkTheme,r=t.setLightTheme,o=t.setDarkTheme;return a.createElement(ae.Z.Provider,{value:{isDarkTheme:n,setLightTheme:r,setDarkTheme:o}},e.children)},oe="docusaurus.tab.",le=function(){var e=(0,a.useState)({}),t=e[0],n=e[1],r=(0,a.useCallback)((function(e,t){(0,c.WA)("docusaurus.tab."+e).set(t)}),[]);return(0,a.useEffect)((function(){try{var e={};(0,c._f)().forEach((function(t){if(t.startsWith(oe)){var n=t.substring(oe.length);e[n]=(0,c.WA)(t).get()}})),n(e)}catch(t){console.error(t)}}),[]),{tabGroupChoices:t,setTabGroupChoices:function(e,t){n((function(n){var a;return Object.assign({},n,((a={})[e]=t,a))})),r(e,t)}}},ce=n(9443);var ie=function(e){var t=le(),n=t.tabGroupChoices,r=t.setTabGroupChoices;return a.createElement(ce.Z.Provider,{value:{tabGroupChoices:n,setTabGroupChoices:r}},e.children)};function se(e){var t=e.children;return a.createElement(re,null,a.createElement(c.pl,null,a.createElement(ie,null,a.createElement(c.L5,null,a.createElement(c.Cn,null,t)))))}var ue=n(9105),me=n(2263),de=n(4996);function fe(e){var t=e.locale,n=e.version,r=e.tag,o=t;return a.createElement(ue.Z,null,o&&a.createElement("meta",{name:"docsearch:language",content:o}),n&&a.createElement("meta",{name:"docsearch:version",content:n}),r&&a.createElement("meta",{name:"docsearch:docusaurus_tag",content:r}))}var ve=n(1217);function he(){var e=(0,me.Z)().i18n,t=e.defaultLocale,n=e.locales,r=(0,c.l5)();return a.createElement(ue.Z,null,n.map((function(e){return a.createElement("link",{key:e,rel:"alternate",href:r.createUrl({locale:e,fullyQualified:!0}),hrefLang:e})})),a.createElement("link",{rel:"alternate",href:r.createUrl({locale:t,fullyQualified:!0}),hrefLang:"x-default"}))}function be(e){var t=e.permalink,n=(0,me.Z)().siteConfig.url,r=function(){var e=(0,me.Z)().siteConfig.url,t=(0,o.TH)().pathname;return e+(0,de.Z)(t)}(),l=t?""+n+t:r;return a.createElement(ue.Z,null,a.createElement("meta",{property:"og:url",content:l}),a.createElement("link",{rel:"canonical",href:l}))}function ge(e){var t=(0,me.Z)(),n=t.siteConfig.favicon,r=t.i18n,o=r.currentLocale,l=r.localeConfigs,i=(0,c.LU)(),s=i.metadatas,u=i.image,d=e.title,f=e.description,v=e.image,h=e.keywords,b=e.searchMetadatas,g=(0,de.Z)(n),p=(0,c.pe)(d),E=o,k=l[o].direction;return a.createElement(a.Fragment,null,a.createElement(ue.Z,null,a.createElement("html",{lang:E,dir:k}),n&&a.createElement("link",{rel:"shortcut icon",href:g}),a.createElement("title",null,p),a.createElement("meta",{property:"og:title",content:p}),a.createElement("meta",{name:"twitter:card",content:"summary_large_image"})),u&&a.createElement(ve.Z,{image:u}),v&&a.createElement(ve.Z,{image:v}),a.createElement(ve.Z,{description:f,keywords:h}),a.createElement(be,null),a.createElement(he,null),a.createElement(fe,(0,m.Z)({tag:c.HX,locale:o},b)),a.createElement(ue.Z,null,s.map((function(e,t){return a.createElement("meta",(0,m.Z)({key:"metadata_"+t},e))}))))}var pe=function(){(0,a.useEffect)((function(){var e="navigation-with-keyboard";function t(t){"keydown"===t.type&&"Tab"===t.key&&document.body.classList.add(e),"mousedown"===t.type&&document.body.classList.remove(e)}return document.addEventListener("keydown",t),document.addEventListener("mousedown",t),function(){document.body.classList.remove(e),document.removeEventListener("keydown",t),document.removeEventListener("mousedown",t)}}),[])};var Ee=function(e){var t=e.children,n=e.noFooter,o=e.wrapperClassName,l=e.pageClassName;return pe(),a.createElement(se,null,a.createElement(ge,e),a.createElement(u,null),a.createElement(E,null),a.createElement(Y,null),a.createElement("div",{className:(0,r.Z)(c.kM.wrapper.main,o,l)},t),!n&&a.createElement(G.Z,null))}},8030:function(e,t,n){n.d(t,{Z:function(){return g}});var a=n(7462),r=n(3366),o=n(7294),l=n(6742),c=n(6010),i=n(2389),s=n(5350),u={themedImage:"themedImage_1VuW","themedImage--light":"themedImage--light_3UqQ","themedImage--dark":"themedImage--dark_hz6m"},m=["sources","className","alt"],d=function(e){var t=(0,i.Z)(),n=(0,s.Z)().isDarkTheme,l=e.sources,d=e.className,f=e.alt,v=void 0===f?"":f,h=(0,r.Z)(e,m),b=t?n?["dark"]:["light"]:["light","dark"];return o.createElement(o.Fragment,null,b.map((function(e){return o.createElement("img",(0,a.Z)({key:e,src:l[e],alt:v,className:(0,c.Z)(u.themedImage,u["themedImage--"+e],d)},h))})))},f=n(4996),v=n(2263),h=n(941),b=["imageClassName","titleClassName"],g=function(e){var t=(0,v.Z)().siteConfig.title,n=(0,h.LU)().navbar,c=n.title,i=n.logo,s=void 0===i?{src:""}:i,u=e.imageClassName,m=e.titleClassName,g=(0,r.Z)(e,b),p=(0,f.Z)(s.href||"/"),E={light:(0,f.Z)(s.src),dark:(0,f.Z)(s.srcDark||s.src)};return o.createElement(l.Z,(0,a.Z)({to:p},g,s.target&&{target:s.target}),s.src&&o.createElement(d,{className:u,sources:E,alt:s.alt||c||t}),null!=c&&o.createElement("b",{className:m},c))}},5525:function(e,t,n){n.d(t,{O:function(){return b}});var a=n(7462),r=n(3366),o=n(7294),l=n(6010),c=n(6742),i=n(4996),s=n(8617),u=n(3919),m=n(7819),d=["activeBasePath","activeBaseRegex","to","href","label","activeClassName","prependBaseUrlToHref"],f=["className","isDropdownItem"],v=["className","isDropdownItem"],h=["mobile","position"];function b(e){var t,n=e.activeBasePath,l=e.activeBaseRegex,m=e.to,f=e.href,v=e.label,h=e.activeClassName,b=void 0===h?"":h,g=e.prependBaseUrlToHref,p=(0,r.Z)(e,d),E=(0,i.Z)(m),k=(0,i.Z)(n),Z=(0,i.Z)(f,{forcePrependBaseUrl:!0}),w=v&&f&&!(0,u.Z)(f),C="dropdown__link--active"===b;return o.createElement(c.Z,(0,a.Z)({},f?{href:g?Z:f}:Object.assign({isNavLink:!0,activeClassName:null!=(t=p.className)&&t.includes(b)?"":b,to:E},n||l?{isActive:function(e,t){return l?new RegExp(l).test(t.pathname):t.pathname.startsWith(k)}}:null),p),w?o.createElement("span",null,v,o.createElement(s.Z,C&&{width:12,height:12})):v)}function g(e){var t=e.className,n=e.isDropdownItem,c=void 0!==n&&n,i=(0,r.Z)(e,f),s=o.createElement(b,(0,a.Z)({className:(0,l.Z)(c?"dropdown__link":"navbar__item navbar__link",t)},i));return c?o.createElement("li",null,s):s}function p(e){var t=e.className,n=(e.isDropdownItem,(0,r.Z)(e,v));return o.createElement("li",{className:"menu__list-item"},o.createElement(b,(0,a.Z)({className:(0,l.Z)("menu__link",t)},n)))}t.Z=function(e){var t,n=e.mobile,l=void 0!==n&&n,c=(e.position,(0,r.Z)(e,h)),i=l?p:g;return o.createElement(i,(0,a.Z)({},c,{activeClassName:null!=(t=c.activeClassName)?t:(0,m.E)(l)}))}},6400:function(e,t,n){n.d(t,{Z:function(){return f}});var a=n(7462),r=n(3366),o=n(7294),l=n(5525),c=n(907),i=n(6010),s=n(7819),u=n(941),m=n(8780),d=["docId","label","docsPluginId"];function f(e){var t,n=e.docId,f=e.label,v=e.docsPluginId,h=(0,r.Z)(e,d),b=(0,c.Iw)(v),g=b.activeVersion,p=b.activeDoc,E=(0,u.J)(v).preferredVersion,k=(0,c.yW)(v),Z=function(e,t){var n=e.flatMap((function(e){return e.docs})),a=n.find((function(e){return e.id===t}));if(!a){var r=n.map((function(e){return e.id})).join("\n- ");throw new Error("DocNavbarItem: couldn't find any doc with id \""+t+'" in version'+(e.length?"s":"")+" "+e.map((function(e){return e.name})).join(", ")+'".\nAvailable doc ids are:\n- '+r)}return a}((0,m.uniq)([g,E,k].filter(Boolean)),n),w=(0,s.E)(h.mobile);return o.createElement(l.Z,(0,a.Z)({exact:!0},h,{className:(0,i.Z)(h.className,(t={},t[w]=(null==p?void 0:p.sidebar)&&p.sidebar===Z.sidebar,t)),activeClassName:w,label:null!=f?f:Z.id,to:Z.path}))}},9308:function(e,t,n){n.d(t,{Z:function(){return f}});var a=n(7462),r=n(3366),o=n(7294),l=n(5525),c=n(3154),i=n(907),s=n(941),u=n(4973),m=["mobile","docsPluginId","dropdownActiveClassDisabled","dropdownItemsBefore","dropdownItemsAfter"],d=function(e){return e.docs.find((function(t){return t.id===e.mainDocId}))};function f(e){var t,n,f=e.mobile,v=e.docsPluginId,h=e.dropdownActiveClassDisabled,b=e.dropdownItemsBefore,g=e.dropdownItemsAfter,p=(0,r.Z)(e,m),E=(0,i.Iw)(v),k=(0,i.gB)(v),Z=(0,i.yW)(v),w=(0,s.J)(v),C=w.preferredVersion,y=w.savePreferredVersionName;var N,_=(N=k.map((function(e){var t=(null==E?void 0:E.alternateDocVersions[e.name])||d(e);return{isNavLink:!0,label:e.label,to:t.path,isActive:function(){return e===(null==E?void 0:E.activeVersion)},onClick:function(){y(e.name)}}})),[].concat(b,N,g)),S=null!=(t=null!=(n=E.activeVersion)?n:C)?t:Z,I=f&&_?(0,u.I)({id:"theme.navbar.mobileVersionsDropdown.label",message:"Versions",description:"The label for the navbar versions dropdown on mobile view"}):S.label,L=f&&_?void 0:d(S).path;return _.length<=1?o.createElement(l.Z,(0,a.Z)({},p,{mobile:f,label:I,to:L,isActive:h?function(){return!1}:void 0})):o.createElement(c.Z,(0,a.Z)({},p,{mobile:f,label:I,to:L,items:_,isActive:h?function(){return!1}:void 0}))}},7250:function(e,t,n){n.d(t,{Z:function(){return u}});var a=n(7462),r=n(3366),o=n(7294),l=n(5525),c=n(907),i=n(941),s=["label","to","docsPluginId"];function u(e){var t,n=e.label,u=e.to,m=e.docsPluginId,d=(0,r.Z)(e,s),f=(0,c.zu)(m),v=(0,i.J)(m).preferredVersion,h=(0,c.yW)(m),b=null!=(t=null!=f?f:v)?t:h,g=null!=n?n:b.label,p=null!=u?u:function(e){return e.docs.find((function(t){return t.id===e.mainDocId}))}(b).path;return o.createElement(l.Z,(0,a.Z)({},d,{label:g,to:p}))}},3154:function(e,t,n){var a=n(7462),r=n(3366),o=n(7294),l=n(6010),c=n(941),i=n(5525),s=n(7819),u=["items","position","className"],m=["items","className","position"],d=["mobile"];function f(e,t){return e.some((function(e){return function(e,t){return!!(0,c.Mg)(e.to,t)||!(!e.activeBaseRegex||!new RegExp(e.activeBaseRegex).test(t))||!(!e.activeBasePath||!t.startsWith(e.activeBasePath))}(e,t)}))}function v(e){var t,n=e.items,c=e.position,m=e.className,d=(0,r.Z)(e,u),f=(0,o.useRef)(null),v=(0,o.useRef)(null),h=(0,o.useState)(!1),b=h[0],g=h[1];return(0,o.useEffect)((function(){var e=function(e){f.current&&!f.current.contains(e.target)&&g(!1)};return document.addEventListener("mousedown",e),document.addEventListener("touchstart",e),function(){document.removeEventListener("mousedown",e),document.removeEventListener("touchstart",e)}}),[f]),o.createElement("div",{ref:f,className:(0,l.Z)("navbar__item","dropdown","dropdown--hoverable",{"dropdown--right":"right"===c,"dropdown--show":b})},o.createElement(i.O,(0,a.Z)({className:(0,l.Z)("navbar__link",m)},d,{onClick:d.to?void 0:function(e){return e.preventDefault()},onKeyDown:function(e){"Enter"===e.key&&(e.preventDefault(),g(!b))}}),null!=(t=d.children)?t:d.label),o.createElement("ul",{ref:v,className:"dropdown__menu"},n.map((function(e,t){return o.createElement(s.Z,(0,a.Z)({isDropdownItem:!0,onKeyDown:function(e){if(t===n.length-1&&"Tab"===e.key){e.preventDefault(),g(!1);var a=f.current.nextElementSibling;a&&a.focus()}},activeClassName:"dropdown__link--active"},e,{key:t}))}))))}function h(e){var t,n=e.items,u=e.className,d=(e.position,(0,r.Z)(e,m)),v=(0,c.be)(),h=f(n,v),b=(0,c.uR)({initialState:function(){return!h}}),g=b.collapsed,p=b.toggleCollapsed,E=b.setCollapsed;return(0,o.useEffect)((function(){h&&E(!h)}),[v,h]),o.createElement("li",{className:(0,l.Z)("menu__list-item",{"menu__list-item--collapsed":g})},o.createElement(i.O,(0,a.Z)({role:"button",className:(0,l.Z)("menu__link menu__link--sublist",u)},d,{onClick:function(e){e.preventDefault(),p()}}),null!=(t=d.children)?t:d.label),o.createElement(c.zF,{lazy:!0,as:"ul",className:"menu__list",collapsed:g},n.map((function(e,t){return o.createElement(s.Z,(0,a.Z)({mobile:!0,isDropdownItem:!0,onClick:d.onClick,activeClassName:"menu__link--active"},e,{key:t}))}))))}t.Z=function(e){var t=e.mobile,n=void 0!==t&&t,a=(0,r.Z)(e,d),l=n?h:v;return o.createElement(l,a)}},7819:function(e,t,n){n.d(t,{Z:function(){return k},E:function(){return E}});var a=n(3366),r=n(7294),o=n(5525),l=n(3154),c=n(7462),i=["width","height"],s=function(e){var t=e.width,n=void 0===t?20:t,o=e.height,l=void 0===o?20:o,s=(0,a.Z)(e,i);return r.createElement("svg",(0,c.Z)({viewBox:"0 0 20 20",width:n,height:l,"aria-hidden":"true"},s),r.createElement("path",{fill:"currentColor",d:"M19.753 10.909c-.624-1.707-2.366-2.726-4.661-2.726-.09 0-.176.002-.262.006l-.016-2.063 3.525-.607c.115-.019.133-.119.109-.231-.023-.111-.167-.883-.188-.976-.027-.131-.102-.127-.207-.109-.104.018-3.25.461-3.25.461l-.013-2.078c-.001-.125-.069-.158-.194-.156l-1.025.016c-.105.002-.164.049-.162.148l.033 2.307s-3.061.527-3.144.543c-.084.014-.17.053-.151.143.019.09.19 1.094.208 1.172.018.08.072.129.188.107l2.924-.504.035 2.018c-1.077.281-1.801.824-2.256 1.303-.768.807-1.207 1.887-1.207 2.963 0 1.586.971 2.529 2.328 2.695 3.162.387 5.119-3.06 5.769-4.715 1.097 1.506.256 4.354-2.094 5.98-.043.029-.098.129-.033.207l.619.756c.08.096.206.059.256.023 2.51-1.73 3.661-4.515 2.869-6.683zm-7.386 3.188c-.966-.121-.944-.914-.944-1.453 0-.773.327-1.58.876-2.156a3.21 3.21 0 011.229-.799l.082 4.277a2.773 2.773 0 01-1.243.131zm2.427-.553l.046-4.109c.084-.004.166-.01.252-.01.773 0 1.494.145 1.885.361.391.217-1.023 2.713-2.183 3.758zm-8.95-7.668a.196.196 0 00-.196-.145h-1.95a.194.194 0 00-.194.144L.008 16.916c-.017.051-.011.076.062.076h1.733c.075 0 .099-.023.114-.072l1.008-3.318h3.496l1.008 3.318c.016.049.039.072.113.072h1.734c.072 0 .078-.025.062-.076-.014-.05-3.083-9.741-3.494-11.04zm-2.618 6.318l1.447-5.25 1.447 5.25H3.226z"}))},u=n(2263),m=n(941),d="iconLanguage_3vod",f=["mobile","dropdownItemsBefore","dropdownItemsAfter"];function v(e){var t=e.mobile,n=e.dropdownItemsBefore,o=e.dropdownItemsAfter,i=(0,a.Z)(e,f),v=(0,u.Z)().i18n,h=v.currentLocale,b=v.locales,g=v.localeConfigs,p=(0,m.l5)();function E(e){return g[e].label}var k=b.map((function(e){var t="pathname://"+p.createUrl({locale:e,fullyQualified:!1});return{isNavLink:!0,label:E(e),to:t,target:"_self",autoAddBaseUrl:!1,className:e===h?"dropdown__link--active":"",style:{textTransform:"capitalize"}}})),Z=[].concat(n,k,o),w=t?"Languages":E(h);return r.createElement(l.Z,(0,c.Z)({},i,{href:"#",mobile:t,label:r.createElement("span",null,r.createElement(s,{className:d}),r.createElement("span",null,w)),items:Z}))}var h=n(1036);function b(e){return e.mobile?null:r.createElement(h.Z,null)}var g=["type"],p={default:function(){return o.Z},localeDropdown:function(){return v},search:function(){return b},dropdown:function(){return l.Z},docsVersion:function(){return n(7250).Z},docsVersionDropdown:function(){return n(9308).Z},doc:function(){return n(6400).Z}};var E=function(e){return e?"menu__link--active":"navbar__link--active"};function k(e){var t=e.type,n=(0,a.Z)(e,g),o=function(e){var t=p[e];if(!t)throw new Error('No NavbarItem component found for type "'+e+'".');return t()}(function(e,t){return e&&"default"!==e?e:t?"dropdown":"default"}(t,void 0!==n.items));return r.createElement(o,n)}},2924:function(e,t,n){var a=n(7294).createContext(void 0);t.Z=a},9443:function(e,t,n){var a=(0,n(7294).createContext)(void 0);t.Z=a},7898:function(e,t,n){var a=n(7294),r=n(412),o=function(){return r.Z.canUseDOM?{scrollX:window.pageXOffset,scrollY:window.pageYOffset}:null};t.Z=function(e,t){void 0===t&&(t=[]);var n=(0,a.useRef)(o()),r=function(){var t=o();e&&e(t,n.current),n.current=t};(0,a.useEffect)((function(){var e={passive:!0};return r(),window.addEventListener("scroll",r,e),function(){return window.removeEventListener("scroll",r,e)}}),t)}},5350:function(e,t,n){var a=n(7294),r=n(2924);t.Z=function(){var e=(0,a.useContext)(r.Z);if(null==e)throw new Error('"useThemeContext" is used outside of "Layout" component. Please see https://docusaurus.io/docs/api/themes/configuration#usethemecontext.');return e}},1036:function(e,t,n){n.d(t,{Z:function(){return L}});var a=n(7462),r=n(3366),o=n(7294),l=n(3935),c=n(2263),i=n(5977),s=n(4996),u=n(6742),m=n(9105),d=n(6397);function f(){return o.createElement("svg",{width:"15",height:"15",className:"DocSearch-Control-Key-Icon"},o.createElement("path",{d:"M4.505 4.496h2M5.505 5.496v5M8.216 4.496l.055 5.993M10 7.5c.333.333.5.667.5 1v2M12.326 4.5v5.996M8.384 4.496c1.674 0 2.116 0 2.116 1.5s-.442 1.5-2.116 1.5M3.205 9.303c-.09.448-.277 1.21-1.241 1.203C1 10.5.5 9.513.5 8V7c0-1.57.5-2.5 1.464-2.494.964.006 1.134.598 1.24 1.342M12.553 10.5h1.953",strokeWidth:"1.2",stroke:"currentColor",fill:"none",strokeLinecap:"square"}))}var v=n(830);function h(){return(h=Object.assign||function(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var g="Ctrl";var p=o.forwardRef((function(e,t){var n=e.translations,a=void 0===n?{}:n,r=b(e,["translations"]),l=a.buttonText,c=void 0===l?"Search":l,i=a.buttonAriaLabel,s=void 0===i?"Search":i,u=(0,o.useMemo)((function(){return"undefined"!=typeof navigator?/(Mac|iPhone|iPod|iPad)/i.test(navigator.platform)?"\u2318":g:null}),[]);return o.createElement("button",h({type:"button",className:"DocSearch DocSearch-Button","aria-label":s},r,{ref:t}),o.createElement("span",{className:"DocSearch-Button-Container"},o.createElement(v.W,null),o.createElement("span",{className:"DocSearch-Button-Placeholder"},c)),o.createElement("span",{className:"DocSearch-Button-Keys"},null!==u&&o.createElement(o.Fragment,null,o.createElement("span",{className:"DocSearch-Button-Key"},u===g?o.createElement(f,null):u),o.createElement("span",{className:"DocSearch-Button-Key"},"K"))))})),E=n(907),k=n(941);function Z(){var e=function(){var e=(0,c.Z)().i18n,t=(0,E._r)(),n=(0,E.WS)(),a=(0,k.Oh)(),r=[k.HX].concat(Object.keys(t).map((function(e){var r,o,l=(null==n||null==(r=n.activePlugin)?void 0:r.pluginId)===e?n.activeVersion:void 0,c=a[e],i=t[e].versions.find((function(e){return e.isLast})),s=null!=(o=null!=l?l:c)?o:i;return(0,k.os)(e,s.name)})));return{locale:e.currentLocale,tags:r}}();return["language:"+e.locale,e.tags.map((function(e){return"docusaurus_tag:"+e}))]}var w=n(4973),C="searchBox_1Doo",y=["contextualSearch"],N=null;function _(e){var t=e.hit,n=e.children;return o.createElement(u.Z,{to:t.url},n)}function S(e){var t=e.state,n=e.onClose,a=(0,d.Z)().generateSearchPageLink;return o.createElement(u.Z,{to:a(t.query),onClick:n},"See all ",t.context.nbHits," results")}function I(e){var t,u,d=e.contextualSearch,f=(0,r.Z)(e,y),v=(0,c.Z)().siteMetadata,h=Z(),b=null!=(t=null==(u=f.searchParameters)?void 0:u.facetFilters)?t:[],g=d?[].concat(h,b):b,E=Object.assign({},f.searchParameters,{facetFilters:g}),k=(0,s.C)().withBaseUrl,I=(0,i.k6)(),L=(0,o.useRef)(null),D=(0,o.useRef)(null),B=(0,o.useState)(!1),T=B[0],P=B[1],x=(0,o.useState)(null),M=x[0],A=x[1],R=(0,o.useCallback)((function(){return N?Promise.resolve():Promise.all([n.e(4300).then(n.bind(n,4300)),Promise.all([n.e(532),n.e(6945)]).then(n.bind(n,6945)),Promise.all([n.e(532),n.e(5256)]).then(n.bind(n,5256))]).then((function(e){var t=e[0].DocSearchModal;N=t}))}),[]),O=(0,o.useCallback)((function(){R().then((function(){L.current=document.createElement("div"),document.body.insertBefore(L.current,document.body.firstChild),P(!0)}))}),[R,P]),U=(0,o.useCallback)((function(){P(!1),L.current.remove()}),[P]),V=(0,o.useCallback)((function(e){R().then((function(){P(!0),A(e.key)}))}),[R,P,A]),W=(0,o.useRef)({navigate:function(e){var t=e.itemUrl;I.push(t)}}).current,z=(0,o.useRef)((function(e){return e.map((function(e){var t=document.createElement("a");return t.href=e.url,Object.assign({},e,{url:k(""+t.pathname+t.hash)})}))})).current,H=(0,o.useMemo)((function(){return function(e){return o.createElement(S,(0,a.Z)({},e,{onClose:U}))}}),[U]),j=(0,o.useCallback)((function(e){return e.addAlgoliaAgent("docusaurus",v.docusaurusVersion),e}),[v.docusaurusVersion]);!function(e){var t=e.isOpen,n=e.onOpen,a=e.onClose,r=e.onInput,l=e.searchButtonRef;o.useEffect((function(){function e(e){(27===e.keyCode&&t||"k"===e.key&&(e.metaKey||e.ctrlKey)||!function(e){var t=e.target,n=t.tagName;return t.isContentEditable||"INPUT"===n||"SELECT"===n||"TEXTAREA"===n}(e)&&"/"===e.key&&!t)&&(e.preventDefault(),t?a():document.body.classList.contains("DocSearch--active")||document.body.classList.contains("DocSearch--active")||n()),l&&l.current===document.activeElement&&r&&/[a-zA-Z0-9]/.test(String.fromCharCode(e.keyCode))&&r(e)}return window.addEventListener("keydown",e),function(){window.removeEventListener("keydown",e)}}),[t,n,a,r,l])}({isOpen:T,onOpen:O,onClose:U,onInput:V,searchButtonRef:D});var F=(0,w.I)({id:"theme.SearchBar.label",message:"Search",description:"The ARIA label and placeholder for search button"});return o.createElement(o.Fragment,null,o.createElement(m.Z,null,o.createElement("link",{rel:"preconnect",href:"https://"+f.appId+"-dsn.algolia.net",crossOrigin:"anonymous"})),o.createElement("div",{className:C},o.createElement(p,{onTouchStart:R,onFocus:R,onMouseOver:R,onClick:O,ref:D,translations:{buttonText:F,buttonAriaLabel:F}})),T&&(0,l.createPortal)(o.createElement(N,(0,a.Z)({onClose:U,initialScrollY:window.scrollY,initialQuery:M,navigator:W,transformItems:z,hitComponent:_,resultsFooterComponent:H,transformSearchClient:j},f,{searchParameters:E})),L.current))}var L=function(){var e=(0,c.Z)().siteConfig;return o.createElement(I,e.themeConfig.algolia)}},6397:function(e,t,n){var a=n(5977),r=n(412),o=n(2263);t.Z=function(){var e=(0,a.k6)(),t=(0,a.TH)(),n=(0,o.Z)().siteConfig,l=(n=void 0===n?{}:n).baseUrl;return{searchValue:r.Z.canUseDOM&&new URLSearchParams(t.search).get("q")||"",updateSearchPath:function(n){var a=new URLSearchParams(t.search);n?a.set("q",n):a.delete("q"),e.replace({search:a.toString()})},generateSearchPageLink:function(e){return l+"search?q="+encodeURIComponent(e)}}}}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/4848.4dfa8aab.js b/handbook/build/assets/js/4848.4dfa8aab.js deleted file mode 100644 index 573da4b89ed..00000000000 --- a/handbook/build/assets/js/4848.4dfa8aab.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[4848],{6159:function(e,t,n){"use strict";n.d(t,{N:function(){return d},Z:function(){return y}});var r=n(3366),o=n(7462),a=n(7294),l=n(6010),s=n(4973),c=n(3018),i="enhancedAnchor_2LWZ",u="h1Heading_27L5",p=["id"],d=function(e){var t=Object.assign({},e);return a.createElement("header",null,a.createElement("h1",(0,o.Z)({},t,{id:void 0,className:u}),t.children))},y=function(e){return"h1"===e?d:(t=e,function(e){var n,o=e.id,u=(0,r.Z)(e,p),d=(0,c.LU)().navbar.hideOnScroll;return o?a.createElement(t,u,a.createElement("a",{"aria-hidden":"true",tabIndex:-1,className:(0,l.Z)("anchor",(n={},n[i]=!d,n)),id:o}),u.children,a.createElement("a",{className:"hash-link",href:"#"+o,title:(0,s.I)({id:"theme.common.headingLinkTitle",message:"Direct link to heading",description:"Title for link to heading"})},"#")):a.createElement(t,u)});var t}},4848:function(e,t,n){"use strict";n.d(t,{Z:function(){return A}});var r=n(7462),o=n(7294),a=n(6742),l=n(6010),s={plain:{backgroundColor:"#2a2734",color:"#9a86fd"},styles:[{types:["comment","prolog","doctype","cdata","punctuation"],style:{color:"#6c6783"}},{types:["namespace"],style:{opacity:.7}},{types:["tag","operator","number"],style:{color:"#e09142"}},{types:["property","function"],style:{color:"#9a86fd"}},{types:["tag-id","selector","atrule-id"],style:{color:"#eeebff"}},{types:["attr-name"],style:{color:"#c4b9fe"}},{types:["boolean","string","entity","url","attr-value","keyword","control","directive","unit","statement","regex","at-rule","placeholder","variable"],style:{color:"#ffcc99"}},{types:["deleted"],style:{textDecorationLine:"line-through"}},{types:["inserted"],style:{textDecorationLine:"underline"}},{types:["italic"],style:{fontStyle:"italic"}},{types:["important","bold"],style:{fontWeight:"bold"}},{types:["important"],style:{color:"#c4b9fe"}}]},c={Prism:n(7410).Z,theme:s};function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function u(){return(u=Object.assign||function(e){for(var t=1;t0&&e[n-1]===t?e:e.concat(t)},h=function(e,t){var n=e.plain,r=Object.create(null),o=e.styles.reduce((function(e,n){var r=n.languages,o=n.style;return r&&!r.includes(t)||n.types.forEach((function(t){var n=u({},e[t],o);e[t]=n})),e}),r);return o.root=n,o.plain=u({},n,{backgroundColor:null}),o};function m(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&-1===t.indexOf(r)&&(n[r]=e[r]);return n}var g=function(e){function t(){for(var t=this,n=[],r=arguments.length;r--;)n[r]=arguments[r];e.apply(this,n),i(this,"getThemeDict",(function(e){if(void 0!==t.themeDict&&e.theme===t.prevTheme&&e.language===t.prevLanguage)return t.themeDict;t.prevTheme=e.theme,t.prevLanguage=e.language;var n=e.theme?h(e.theme,e.language):void 0;return t.themeDict=n})),i(this,"getLineProps",(function(e){var n=e.key,r=e.className,o=e.style,a=u({},m(e,["key","className","style","line"]),{className:"token-line",style:void 0,key:void 0}),l=t.getThemeDict(t.props);return void 0!==l&&(a.style=l.plain),void 0!==o&&(a.style=void 0!==a.style?u({},a.style,o):o),void 0!==n&&(a.key=n),r&&(a.className+=" "+r),a})),i(this,"getStyleForToken",(function(e){var n=e.types,r=e.empty,o=n.length,a=t.getThemeDict(t.props);if(void 0!==a){if(1===o&&"plain"===n[0])return r?{display:"inline-block"}:void 0;if(1===o&&!r)return a[n[0]];var l=r?{display:"inline-block"}:{},s=n.map((function(e){return a[e]}));return Object.assign.apply(Object,[l].concat(s))}})),i(this,"getTokenProps",(function(e){var n=e.key,r=e.className,o=e.style,a=e.token,l=u({},m(e,["key","className","style","token"]),{className:"token "+a.types.join(" "),children:a.content,style:t.getStyleForToken(a),key:void 0});return void 0!==o&&(l.style=void 0!==l.style?u({},l.style,o):o),void 0!==n&&(l.key=n),r&&(l.className+=" "+r),l})),i(this,"tokenize",(function(e,t,n,r){var o={code:t,grammar:n,language:r,tokens:[]};e.hooks.run("before-tokenize",o);var a=o.tokens=e.tokenize(o.code,o.grammar,o.language);return e.hooks.run("after-tokenize",o),a}))}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.render=function(){var e=this.props,t=e.Prism,n=e.language,r=e.code,o=e.children,a=this.getThemeDict(this.props),l=t.languages[n];return o({tokens:function(e){for(var t=[[]],n=[e],r=[0],o=[e.length],a=0,l=0,s=[],c=[s];l>-1;){for(;(a=r[l]++)0?u:["plain"],i=h):(u=y(u,h.type),h.alias&&(u=y(u,h.alias)),i=h.content),"string"==typeof i){var m=i.split(p),g=m.length;s.push({types:u,content:m[0]});for(var f=1;f0}))}var w=n&&n.replace(/language-/,"");!w&&i.defaultLanguage&&(w=i.defaultLanguage);var A=S.replace(/\n$/,"");if(0===k.length&&void 0!==w){for(var I,z="",R=function(e){switch(e){case"js":case"javascript":case"ts":case"typescript":return P(["js","jsBlock"]);case"jsx":case"tsx":return P(["js","jsBlock","jsx"]);case"html":return P(["js","jsBlock","html"]);case"python":case"py":return P(["python"]);default:return P()}}(w),F=S.replace(/\n$/,"").split("\n"),$=0;$0&&(a=o.getRangeAt(0)),t.append(n),n.select(),n.selectionStart=0,n.selectionEnd=e.length;let l=!1;try{l=document.execCommand("copy")}catch{}n.remove(),a&&(o.removeAllRanges(),o.addRange(a)),r&&r.focus()}(A),d(!0),setTimeout((function(){return d(!1)}),2e3)};return o.createElement(g,(0,r.Z)({},c,{key:String(h),theme:D,code:A,language:w}),(function(e){var t=e.className,n=e.style,a=e.tokens,s=e.getLineProps,c=e.getTokenProps;return o.createElement("div",{className:N},f&&o.createElement("div",{style:n,className:x},f),o.createElement("div",{className:(0,l.Z)(T,w)},o.createElement("pre",{tabIndex:0,className:(0,l.Z)(t,C,"thin-scrollbar"),style:n},o.createElement("code",{className:O},a.map((function(e,t){1===e.length&&""===e[0].content&&(e[0].content="\n");var n=s({line:e,key:t});return k.includes(t+1)&&(n.className+=" docusaurus-highlight-code-line"),o.createElement("span",(0,r.Z)({key:t},n),e.map((function(e,t){return o.createElement("span",(0,r.Z)({key:t},c({token:e,key:t})))})))})))),o.createElement("button",{ref:b,type:"button","aria-label":(0,Z.I)({id:"theme.CodeBlock.copyButtonAriaLabel",message:"Copy code to clipboard",description:"The ARIA label for copy code blocks button"}),className:(0,l.Z)(L,"clean-btn"),onClick:W},p?o.createElement(Z.Z,{id:"theme.CodeBlock.copied",description:"The copied button label on code blocks"},"Copied"):o.createElement(Z.Z,{id:"theme.CodeBlock.copy",description:"The copy button label on code blocks"},"Copy"))))}))}var S=n(6159),_="details_1VDD";function w(e){var t=Object.assign({},e);return o.createElement(E.PO,(0,r.Z)({},t,{className:(0,l.Z)("alert alert--info",_,t.className)}))}var A={code:function(e){var t=e.children;return(0,o.isValidElement)(t)?t:t.includes("\n")?o.createElement(D,e):o.createElement("code",e)},a:function(e){return o.createElement(a.Z,e)},pre:function(e){var t,n=e.children;return(0,o.isValidElement)(null==n||null==(t=n.props)?void 0:t.children)?null==n?void 0:n.props.children:o.createElement(D,(0,o.isValidElement)(n)?null==n?void 0:n.props:Object.assign({},e))},details:function(e){var t=o.Children.toArray(e.children),n=t.find((function(e){var t;return"summary"===(null==e||null==(t=e.props)?void 0:t.mdxType)})),a=o.createElement(o.Fragment,null,t.filter((function(e){return e!==n})));return o.createElement(w,(0,r.Z)({},e,{summary:n}),a)},h1:(0,S.Z)("h1"),h2:(0,S.Z)("h2"),h3:(0,S.Z)("h3"),h4:(0,S.Z)("h4"),h5:(0,S.Z)("h5"),h6:(0,S.Z)("h6")}},7594:function(e,t){function n(e){let t,n=[];for(let r of e.split(",").map((e=>e.trim())))if(/^-?\d+$/.test(r))n.push(parseInt(r,10));else if(t=r.match(/^(-?\d+)(-|\.\.\.?|\u2025|\u2026|\u22EF)(-?\d+)$/)){let[e,r,o,a]=t;if(r&&a){r=parseInt(r),a=parseInt(a);const e=r=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var l=r.createContext({}),p=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},u=function(e){var t=p(e.components);return r.createElement(l.Provider,{value:t},e.children)},m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},s=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,a=e.originalType,l=e.parentName,u=c(e,["components","mdxType","originalType","parentName"]),s=p(n),d=o,f=s["".concat(l,".").concat(d)]||s[d]||m[d]||a;return n?r.createElement(f,i(i({ref:t},u),{},{components:n})):r.createElement(f,i({ref:t},u))}));function d(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=n.length,i=new Array(a);i[0]=s;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c.mdxType="string"==typeof e?e:o,i[1]=c;for(var p=2;p")," \u4ed3\u50a8\u65b9\u5f0f\u5728\u6784\u9020\u51fd\u6570\u4e2d\u521d\u59cb\u5316\uff0c",(0,a.kt)("strong",{parentName:"li"},"\u907f\u514d\u4f7f\u7528 ",(0,a.kt)("inlineCode",{parentName:"strong"},"Db.GetRepository")," \u65b9\u5f0f"),"\u3002"),(0,a.kt)("li",{parentName:"ul"},"\u8bf7\u4ee5",(0,a.kt)("strong",{parentName:"li"},"\u5f02\u6b65\u65b9\u5f0f"),"\u8c03\u7528\u6240\u6709\u6570\u636e\u8bbf\u95ee api\u3002"),(0,a.kt)("li",{parentName:"ul"},"\u68c0\u7d22\u7684\u6570\u636e\u4e0d\u662f\u5fc5\u9700\u7684\u3002 \u7f16\u5199\u67e5\u8be2\u4ee5",(0,a.kt)("strong",{parentName:"li"},"\u4ec5\u8fd4\u56de\u5f53\u524d HTTP \u8bf7\u6c42\u6240\u5fc5\u9700\u7684\u6570\u636e"),"\u3002"),(0,a.kt)("li",{parentName:"ul"},"\u5982\u679c\u6570\u636e\u53ef\u4ee5\u63a5\u53d7\uff0c\u8bf7\u8003\u8651",(0,a.kt)("strong",{parentName:"li"},"\u7f13\u5b58\u7ecf\u5e38\u8bbf\u95ee\u7684\u4ece\u6570\u636e\u5e93\u6216\u8fdc\u7a0b\u670d\u52a1\u68c0\u7d22\u7684\u6570\u636e"),"\u3002 \u4f7f\u7528 MemoryCache \u6216 microsoft.web.distributedcache \uff0c\u5177\u4f53\u53d6\u51b3\u4e8e\u65b9\u6848\u3002"),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("strong",{parentName:"li"},"\u5c3d\u91cf\u51cf\u5c11\u7f51\u7edc\u5f80\u8fd4\u6b21\u6570"),"\u3002 \u76ee\u6807\u662f\u4f7f\u7528\u5355\u4e2a\u8c03\u7528\u800c\u4e0d\u662f\u591a\u4e2a\u8c03\u7528\u6765\u68c0\u7d22\u6240\u9700\u6570\u636e\u3002"),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("strong",{parentName:"li"},"\u5982\u679c\u5f53\u524d\u8bf7\u6c42\u53ea\u6709\u6570\u636e\u67e5\u8be2\uff0c\u8bf7\u4f7f\u7528\u65e0\u8ddf\u8e2a\u67e5\u8be2\u65b9\u5f0f"),"\u3002"),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("strong",{parentName:"li"},"\u5982\u679c\u8bf7\u6c42\u4e2d\u542b\u6709\u64cd\u4f5c\u6570\u636e\u65f6\uff0c\u8bf7\u4e0d\u8981\u5728 Entity Framework Core \u4e2d\u4f7f\u7528\u65e0\u8ddf\u8e2a\u67e5\u8be2"),"\u3002 EF Core \u53ef\u4ee5\u66f4\u6709\u6548\u5730\u8fd4\u56de\u65e0\u8ddf\u8e2a\u67e5\u8be2\u7684\u7ed3\u679c\u3002 \u7b5b\u9009\u548c\u805a\u5408 LINQ \u67e5\u8be2\uff08\u4f8b\u5982\uff0c .Where \u4f7f\u7528.Select\u3001\u6216.Sum \u8bed\u53e5\uff09\uff0c\u4ee5\u4fbf\u6570\u636e\u5e93\u6267\u884c\u7b5b\u9009\u3002"),(0,a.kt)("li",{parentName:"ul"},"\u5bf9\u4e8e\u9700\u8981\u8fdb\u884c\u590d\u6742\u903b\u8f91\u8ba1\u7b97\u67e5\u8be2\u6570\u636e\u60c5\u51b5\uff0c\u8bf7\u5c3d\u53ef\u80fd\u5728\u8fd4\u56de\u67e5\u8be2\u540e\u518d\u5728\u5ba2\u6237\u7aef\u8ba1\u7b97\u3002"),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("strong",{parentName:"li"},"\u4e0d\u8981\u5bf9\u96c6\u5408\u4f7f\u7528\u6295\u5f71\u67e5\u8be2"),'\uff0c\u8fd9\u53ef\u80fd\u4f1a\u5bfc\u81f4\u6267\u884c "N + 1" \u4e2a SQL \u67e5\u8be2\u3002'),(0,a.kt)("li",{parentName:"ul"},"\u4f7f\u7528 \xb7DbContextPool\xb7 \u6c60\u6765\u7ba1\u7406 DbContext\uff0c\u7c7b\u4f3c ADO.NET \u7684\u8fde\u63a5\u6c60\u3002"),(0,a.kt)("li",{parentName:"ul"},"\u624b\u52a8\u6216\u663e\u5f0f\u7f16\u8bd1\u7684\u67e5\u8be2 API\uff0c\u5141\u8bb8\u5e94\u7528\u7a0b\u5e8f\u7f13\u5b58\u67e5\u8be2\u8f6c\u6362\uff0c\u4f7f\u5176\u53ef\u4ec5\u88ab\u8ba1\u7b97\u4e00\u6b21\u5e76\u6267\u884c\u591a\u6b21\u3002")),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs"},"// Create an explicitly compiled query\nprivate static Func _customerById =\n EF.CompileQuery((CustomerContext db, int id) =>\n db.Customers\n .Include(c => c.Address)\n .Single(c => c.Id == id));\n\n// Use the compiled query by invoking it\nusing (var db = new CustomerContext())\n{\n var customer = _customerById(db, 147);\n}\n")),(0,a.kt)("h2",{id:"9292-\u53cd\u9988\u4e0e\u5efa\u8bae"},"9.29.2 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,a.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,a.kt)("div",{parentName:"div",className:"admonition-heading"},(0,a.kt)("h5",{parentName:"div"},(0,a.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,a.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,a.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,a.kt)("div",{parentName:"div",className:"admonition-content"},(0,a.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,a.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/4ad72136.e28301df.js b/handbook/build/assets/js/4ad72136.e28301df.js new file mode 100644 index 00000000000..293981f1f1e --- /dev/null +++ b/handbook/build/assets/js/4ad72136.e28301df.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[9532],{3905:function(e,t,n){n.d(t,{Zo:function(){return u},kt:function(){return d}});var r=n(7294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var l=r.createContext({}),p=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},u=function(e){var t=p(e.components);return r.createElement(l.Provider,{value:t},e.children)},m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},s=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,a=e.originalType,l=e.parentName,u=c(e,["components","mdxType","originalType","parentName"]),s=p(n),d=o,f=s["".concat(l,".").concat(d)]||s[d]||m[d]||a;return n?r.createElement(f,i(i({ref:t},u),{},{components:n})):r.createElement(f,i({ref:t},u))}));function d(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=n.length,i=new Array(a);i[0]=s;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c.mdxType="string"==typeof e?e:o,i[1]=c;for(var p=2;p")," \u4ed3\u50a8\u65b9\u5f0f\u5728\u6784\u9020\u51fd\u6570\u4e2d\u521d\u59cb\u5316\uff0c",(0,a.kt)("strong",{parentName:"li"},"\u907f\u514d\u4f7f\u7528 ",(0,a.kt)("inlineCode",{parentName:"strong"},"Db.GetRepository")," \u65b9\u5f0f"),"\u3002"),(0,a.kt)("li",{parentName:"ul"},"\u8bf7\u4ee5",(0,a.kt)("strong",{parentName:"li"},"\u5f02\u6b65\u65b9\u5f0f"),"\u8c03\u7528\u6240\u6709\u6570\u636e\u8bbf\u95ee api\u3002"),(0,a.kt)("li",{parentName:"ul"},"\u68c0\u7d22\u7684\u6570\u636e\u4e0d\u662f\u5fc5\u9700\u7684\u3002 \u7f16\u5199\u67e5\u8be2\u4ee5",(0,a.kt)("strong",{parentName:"li"},"\u4ec5\u8fd4\u56de\u5f53\u524d HTTP \u8bf7\u6c42\u6240\u5fc5\u9700\u7684\u6570\u636e"),"\u3002"),(0,a.kt)("li",{parentName:"ul"},"\u5982\u679c\u6570\u636e\u53ef\u4ee5\u63a5\u53d7\uff0c\u8bf7\u8003\u8651",(0,a.kt)("strong",{parentName:"li"},"\u7f13\u5b58\u7ecf\u5e38\u8bbf\u95ee\u7684\u4ece\u6570\u636e\u5e93\u6216\u8fdc\u7a0b\u670d\u52a1\u68c0\u7d22\u7684\u6570\u636e"),"\u3002 \u4f7f\u7528 MemoryCache \u6216 microsoft.web.distributedcache \uff0c\u5177\u4f53\u53d6\u51b3\u4e8e\u65b9\u6848\u3002"),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("strong",{parentName:"li"},"\u5c3d\u91cf\u51cf\u5c11\u7f51\u7edc\u5f80\u8fd4\u6b21\u6570"),"\u3002 \u76ee\u6807\u662f\u4f7f\u7528\u5355\u4e2a\u8c03\u7528\u800c\u4e0d\u662f\u591a\u4e2a\u8c03\u7528\u6765\u68c0\u7d22\u6240\u9700\u6570\u636e\u3002"),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("strong",{parentName:"li"},"\u5982\u679c\u5f53\u524d\u8bf7\u6c42\u53ea\u6709\u6570\u636e\u67e5\u8be2\uff0c\u8bf7\u4f7f\u7528\u65e0\u8ddf\u8e2a\u67e5\u8be2\u65b9\u5f0f"),"\u3002"),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("strong",{parentName:"li"},"\u5982\u679c\u8bf7\u6c42\u4e2d\u542b\u6709\u64cd\u4f5c\u6570\u636e\u65f6\uff0c\u8bf7\u4e0d\u8981\u5728 Entity Framework Core \u4e2d\u4f7f\u7528\u65e0\u8ddf\u8e2a\u67e5\u8be2"),"\u3002 EF Core \u53ef\u4ee5\u66f4\u6709\u6548\u5730\u8fd4\u56de\u65e0\u8ddf\u8e2a\u67e5\u8be2\u7684\u7ed3\u679c\u3002 \u7b5b\u9009\u548c\u805a\u5408 LINQ \u67e5\u8be2\uff08\u4f8b\u5982\uff0c .Where \u4f7f\u7528.Select\u3001\u6216.Sum \u8bed\u53e5\uff09\uff0c\u4ee5\u4fbf\u6570\u636e\u5e93\u6267\u884c\u7b5b\u9009\u3002"),(0,a.kt)("li",{parentName:"ul"},"\u5bf9\u4e8e\u9700\u8981\u8fdb\u884c\u590d\u6742\u903b\u8f91\u8ba1\u7b97\u67e5\u8be2\u6570\u636e\u60c5\u51b5\uff0c\u8bf7\u5c3d\u53ef\u80fd\u5728\u8fd4\u56de\u67e5\u8be2\u540e\u518d\u5728\u5ba2\u6237\u7aef\u8ba1\u7b97\u3002"),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("strong",{parentName:"li"},"\u4e0d\u8981\u5bf9\u96c6\u5408\u4f7f\u7528\u6295\u5f71\u67e5\u8be2"),'\uff0c\u8fd9\u53ef\u80fd\u4f1a\u5bfc\u81f4\u6267\u884c "N + 1" \u4e2a SQL \u67e5\u8be2\u3002'),(0,a.kt)("li",{parentName:"ul"},"\u4f7f\u7528 \xb7DbContextPool\xb7 \u6c60\u6765\u7ba1\u7406 DbContext\uff0c\u7c7b\u4f3c ADO.NET \u7684\u8fde\u63a5\u6c60\u3002"),(0,a.kt)("li",{parentName:"ul"},"\u624b\u52a8\u6216\u663e\u5f0f\u7f16\u8bd1\u7684\u67e5\u8be2 API\uff0c\u5141\u8bb8\u5e94\u7528\u7a0b\u5e8f\u7f13\u5b58\u67e5\u8be2\u8f6c\u6362\uff0c\u4f7f\u5176\u53ef\u4ec5\u88ab\u8ba1\u7b97\u4e00\u6b21\u5e76\u6267\u884c\u591a\u6b21\u3002")),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs"},"// Create an explicitly compiled query\nprivate static Func _customerById =\n EF.CompileQuery((CustomerContext db, int id) =>\n db.Customers\n .Include(c => c.Address)\n .Single(c => c.Id == id));\n\n// Use the compiled query by invoking it\nusing (var db = new CustomerContext())\n{\n var customer = _customerById(db, 147);\n}\n")),(0,a.kt)("h2",{id:"9292-\u53cd\u9988\u4e0e\u5efa\u8bae"},"9.29.2 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,a.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,a.kt)("div",{parentName:"div",className:"admonition-heading"},(0,a.kt)("h5",{parentName:"div"},(0,a.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,a.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,a.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,a.kt)("div",{parentName:"div",className:"admonition-content"},(0,a.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,a.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/4b6c538b.33996815.js b/handbook/build/assets/js/4b6c538b.33996815.js new file mode 100644 index 00000000000..a18ababc798 --- /dev/null +++ b/handbook/build/assets/js/4b6c538b.33996815.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[2009],{3905:function(t,e,a){a.d(e,{Zo:function(){return g},kt:function(){return u}});var n=a(7294);function r(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function i(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,n)}return a}function l(t){for(var e=1;e=0||(r[a]=t[a]);return r}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(t,a)&&(r[a]=t[a])}return r}var d=n.createContext({}),m=function(t){var e=n.useContext(d),a=e;return t&&(a="function"==typeof t?t(e):l(l({},e),t)),a},g=function(t){var e=m(t.components);return n.createElement(d.Provider,{value:e},t.children)},k={inlineCode:"code",wrapper:function(t){var e=t.children;return n.createElement(n.Fragment,{},e)}},o=n.forwardRef((function(t,e){var a=t.components,r=t.mdxType,i=t.originalType,d=t.parentName,g=p(t,["components","mdxType","originalType","parentName"]),o=m(a),u=r,N=o["".concat(d,".").concat(u)]||o[u]||k[u]||i;return a?n.createElement(N,l(l({ref:e},g),{},{components:a})):n.createElement(N,l({ref:e},g))}));function u(t,e){var a=arguments,r=e&&e.mdxType;if("string"==typeof t||r){var i=a.length,l=new Array(i);l[0]=o;var p={};for(var d in e)hasOwnProperty.call(e,d)&&(p[d]=e[d]);p.originalType=t,p.mdxType="string"==typeof t?t:r,l[1]=p;for(var m=2;mBenchmarkDotNet",id:"3633-benchmarkdotnet",children:[{value:"36.3.3.1 \u5982\u4f55\u4f7f\u7528",id:"36331-\u5982\u4f55\u4f7f\u7528",children:[]},{value:"36.3.3.2 \u67e5\u770b\u7ed3\u679c",id:"36332-\u67e5\u770b\u7ed3\u679c",children:[]},{value:"36.3.3.3 \u5bfc\u51fa\u62a5\u8868",id:"36333-\u5bfc\u51fa\u62a5\u8868",children:[]}]},{value:"36.3.4 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"3634-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],o={toc:k};function u(t){var e=t.components,a=(0,r.Z)(t,p);return(0,i.kt)("wrapper",(0,n.Z)({},o,a,{components:e,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"3631-\u57fa\u51c6\u6d4b\u8bd5"},"36.3.1 \u57fa\u51c6\u6d4b\u8bd5"),(0,i.kt)("p",null,"\u57fa\u51c6\u6d4b\u8bd5\uff08benchmarking\uff09\u662f\u4e00\u79cd\u6d4b\u91cf\u548c\u8bc4\u4f30\u8f6f\u4ef6\u6027\u80fd\u6307\u6807\u7684\u6d3b\u52a8\u3002\u4f60\u53ef\u4ee5\u5728\u67d0\u4e2a\u65f6\u5019\u901a\u8fc7\u57fa\u51c6\u6d4b\u8bd5\u5efa\u7acb\u4e00\u4e2a\u5df2\u77e5\u7684\u6027\u80fd\u6c34\u5e73\uff08\u79f0\u4e3a\u57fa\u51c6\u7ebf\uff09\uff0c\u5f53\u7cfb\u7edf\u7684\u8f6f\u786c\u4ef6\u73af\u5883\u53d1\u751f\u53d8\u5316\u4e4b\u540e\u518d\u8fdb\u884c\u4e00\u6b21\u57fa\u51c6\u6d4b\u8bd5\u4ee5\u786e\u5b9a\u90a3\u4e9b\u53d8\u5316\u5bf9\u6027\u80fd\u7684\u5f71\u54cd\u3002\u8fd9\u662f\u57fa\u51c6\u6d4b\u8bd5\u6700\u5e38\u89c1\u7684\u7528\u9014\u3002\u5176\u4ed6\u7528\u9014\u5305\u62ec\u6d4b\u5b9a\u67d0\u79cd\u8d1f\u8f7d\u6c34\u5e73\u4e0b\u7684\u6027\u80fd\u6781\u9650\u3001\u7ba1\u7406\u7cfb\u7edf\u6216\u73af\u5883\u7684\u53d8\u5316\u3001\u53d1\u73b0\u53ef\u80fd\u5bfc\u81f4\u6027\u80fd\u95ee\u9898\u7684\u6761\u4ef6\uff0c\u7b49\u7b49\u3002"),(0,i.kt)("h2",{id:"3632-\u57fa\u51c6\u6d4b\u8bd5\u7279\u8d28\u53ca\u610f\u4e49"},"36.3.2 \u57fa\u51c6\u6d4b\u8bd5\u7279\u8d28\u53ca\u610f\u4e49"),(0,i.kt)("h3",{id:"36321-\u7279\u8d28"},"36.3.2.1 \u7279\u8d28"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("strong",{parentName:"li"},"\u53ef\u91cd\u590d\u6027"),"\uff1a\u53ef\u8fdb\u884c\u91cd\u590d\u6027\u7684\u6d4b\u8bd5\uff0c\u8fd9\u6837\u505a\u6709\u5229\u4e8e\u6bd4\u8f83\u6bcf\u6b21\u7684\u6d4b\u8bd5\u7ed3\u679c\uff0c\u5f97\u5230\u6027\u80fd\u7ed3\u679c\u7684\u957f\u671f\u53d8\u5316\u8d8b\u52bf\uff0c\u4e3a\u7cfb\u7edf\u8c03\u4f18\u548c\u4e0a\u7ebf\u524d\u7684\u5bb9\u91cf\u89c4\u5212\u505a\u53c2\u8003\u3002"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("strong",{parentName:"li"},"\u53ef\u89c2\u6d4b\u6027"),"\uff1a\u901a\u8fc7\u5168\u65b9\u4f4d\u7684\u76d1\u63a7\uff08\u5305\u62ec\u6d4b\u8bd5\u5f00\u59cb\u5230\u7ed3\u675f\uff0c\u6267\u884c\u673a\u3001\u670d\u52a1\u5668\u3001\u6570\u636e\u5e93\uff09\uff0c\u53ca\u65f6\u4e86\u89e3\u548c\u5206\u6790\u6d4b\u8bd5\u8fc7\u7a0b\u53d1\u751f\u4e86\u4ec0\u4e48\u3002"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("strong",{parentName:"li"},"\u53ef\u5c55\u793a\u6027"),"\uff1a\u76f8\u5173\u4eba\u5458\u53ef\u4ee5\u76f4\u89c2\u660e\u4e86\u7684\u4e86\u89e3\u6d4b\u8bd5\u7ed3\u679c\uff08web \u754c\u9762\u3001\u4eea\u8868\u76d8\u3001\u6298\u7ebf\u56fe\u6811\u72b6\u56fe\u7b49\u5f62\u5f0f\uff09\u3002"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("strong",{parentName:"li"},"\u771f\u5b9e\u6027"),"\uff1a\u6d4b\u8bd5\u7684\u7ed3\u679c\u53cd\u6620\u4e86\u5ba2\u6237\u4f53\u9a8c\u5230\u7684\u771f\u5b9e\u7684\u60c5\u51b5\uff08\u771f\u5b9e\u51c6\u786e\u7684\u4e1a\u52a1\u573a\u666f+\u4e0e\u751f\u4ea7\u4e00\u81f4\u7684\u914d\u7f6e+\u5408\u7406\u6b63\u786e\u7684\u6d4b\u8bd5\u65b9\u6cd5\uff09\u3002"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("strong",{parentName:"li"},"\u53ef\u6267\u884c\u6027"),"\uff1a\u76f8\u5173\u4eba\u5458\u53ef\u4ee5\u5feb\u901f\u7684\u8fdb\u884c\u6d4b\u8bd5\u9a8c\u8bc1\u4fee\u6539\u8c03\u4f18\uff08\u53ef\u5b9a\u4f4d\u53ef\u5206\u6790\uff09\u3002")),(0,i.kt)("h3",{id:"36322-\u610f\u4e49"},"36.3.2.2 \u610f\u4e49"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"\u4e3a\u5bb9\u91cf\u89c4\u5212\u786e\u5b9a\u7cfb\u7edf\u548c\u5e94\u7528\u7a0b\u5e8f\u7684\u6781\u9650\uff1b"),(0,i.kt)("li",{parentName:"ul"},"\u4e3a\u914d\u7f6e\u6d4b\u8bd5\u7684\u53c2\u6570\u548c\u914d\u7f6e\u9009\u9879\u63d0\u4f9b\u53c2\u8003\u4f9d\u636e\uff1b"),(0,i.kt)("li",{parentName:"ul"},"\u4e3a\u9a8c\u6536\u6d4b\u8bd5\u786e\u5b9a\u7cfb\u7edf\u662f\u5426\u5177\u5907\u81ea\u5df1\u6240\u5ba3\u79f0\u7684\u80fd\u529b\uff1b"),(0,i.kt)("li",{parentName:"ul"},"\u4e3a\u6027\u80fd\u57fa\u7ebf\u7684\u5efa\u7acb\u63d0\u4f9b\u957f\u671f\u7684\u6570\u636e\u7edf\u8ba1\u6765\u6e90\u4ee5\u53ca\u6bd4\u8f83\u57fa\u51c6\uff1b")),(0,i.kt)("h2",{id:"3633-benchmarkdotnet"},"36.3.3 ",(0,i.kt)("inlineCode",{parentName:"h2"},"BenchmarkDotNet")),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"BenchmarkDotNet")," \u662f ",(0,i.kt)("inlineCode",{parentName:"p"},".NET")," \u5e73\u53f0\u63d0\u4f9b\u7684\u57fa\u51c6\u6d4b\u8bd5\u5de5\u5177\uff0c",(0,i.kt)("inlineCode",{parentName:"p"},"BenchmarkDotNet")," \u53ef\u5e2e\u52a9\u60a8\u5c06\u65b9\u6cd5\u8f6c\u6362\u4e3a\u57fa\u51c6\uff0c\u8ddf\u8e2a\u5176\u6027\u80fd\uff0c\u5e76\u5171\u4eab\u53ef\u91cd\u590d\u7684\u6d4b\u91cf\u5b9e\u9a8c\u3002",(0,i.kt)("inlineCode",{parentName:"p"},"BenchmarkDotNet")," \u53ef\u4fdd\u62a4\u60a8\u514d\u53d7\u6d41\u884c\u7684\u57fa\u51c6\u6d4b\u8bd5\u9519\u8bef\uff0c\u5e76\u5728\u57fa\u51c6\u8bbe\u8ba1\u6216\u83b7\u5f97\u7684\u6d4b\u91cf\u4e2d\u51fa\u73b0\u95ee\u9898\u65f6\u8b66\u544a\u60a8\u3002\u7ed3\u679c\u4ee5\u7528\u6237\u53cb\u597d\u7684\u5f62\u5f0f\u5448\u73b0\uff0c\u7a81\u51fa\u663e\u793a\u4e86\u6709\u5173\u5b9e\u9a8c\u7684\u6240\u6709\u91cd\u8981\u4e8b\u5b9e\u3002"),(0,i.kt)("h3",{id:"36331-\u5982\u4f55\u4f7f\u7528"},"36.3.3.1 \u5982\u4f55\u4f7f\u7528"),(0,i.kt)("p",null,"\u521b\u5efa\u4e00\u4e2a ",(0,i.kt)("inlineCode",{parentName:"p"},"\u63a7\u5236\u53f0")," \u5e94\u7528\u7a0b\u5e8f\uff0c\u5e76\u901a\u8fc7 ",(0,i.kt)("inlineCode",{parentName:"p"},"Nuget")," \u5b89\u88c5 ",(0,i.kt)("a",{parentName:"p",href:"https://www.nuget.org/packages/BenchmarkDotNet/"},"BenchmarkDotNet")," \u62d3\u5c55\u5305\u3002\u7f16\u5199\u6d4b\u8bd5\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{3-4,22,25,33}","{3-4,22,25,33}":!0},"using System;\nusing System.Security.Cryptography;\nusing BenchmarkDotNet.Attributes;\nusing BenchmarkDotNet.Running;\n\nnamespace MyBenchmarks\n{\n public class Md5VsSha256\n {\n private const int N = 10000;\n private readonly byte[] data;\n\n private readonly SHA256 sha256 = SHA256.Create();\n private readonly MD5 md5 = MD5.Create();\n\n public Md5VsSha256()\n {\n data = new byte[N];\n new Random(42).NextBytes(data);\n }\n\n [Benchmark]\n public byte[] Sha256() => sha256.ComputeHash(data);\n\n [Benchmark]\n public byte[] Md5() => md5.ComputeHash(data);\n }\n\n public class Program\n {\n public static void Main(string[] args)\n {\n var summary = BenchmarkRunner.Run();\n }\n }\n}\n")),(0,i.kt)("h3",{id:"36332-\u67e5\u770b\u7ed3\u679c"},"36.3.3.2 \u67e5\u770b\u7ed3\u679c"),(0,i.kt)("p",null,"\u8fd0\u884c\u63a7\u5236\u5668\u7a0b\u5e8f\uff0c\u5c06\u5f97\u5230\u4ee5\u4e0b\u7ed3\u679c"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},"BenchmarkDotNet=v0.12.0, OS=Windows 10.0.17763.805 (1809/October2018Update/Redstone5)\nIntel Core i7-7700K CPU 4.20GHz (Kaby Lake), 1 CPU, 8 logical and 4 physical cores\n [Host] : .NET Framework 4.7.2 (4.7.3468.0), X64 RyuJIT\n Net472 : .NET Framework 4.7.2 (4.7.3468.0), X64 RyuJIT\n NetCoreApp30 : .NET Core 3.0.0 (CoreCLR 4.700.19.46205, CoreFX 4.700.19.46214), X64 RyuJIT\n CoreRt30 : .NET CoreRT 1.0.28236.02 @Commit: 741d61493c560ba96e8151f9e56876d4d3828489, X64 AOT\n Mono : Mono 6.4.0 (Visual Studio), X64\n")),(0,i.kt)("table",null,(0,i.kt)("thead",{parentName:"table"},(0,i.kt)("tr",{parentName:"thead"},(0,i.kt)("th",{parentName:"tr",align:null},"Method"),(0,i.kt)("th",{parentName:"tr",align:null},"Runtime"),(0,i.kt)("th",{parentName:"tr",align:null},"N"),(0,i.kt)("th",{parentName:"tr",align:"right"},"Mean"),(0,i.kt)("th",{parentName:"tr",align:"right"},"Error"),(0,i.kt)("th",{parentName:"tr",align:"right"},"StdDev"),(0,i.kt)("th",{parentName:"tr",align:"right"},"Ratio"))),(0,i.kt)("tbody",{parentName:"table"},(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},"Sha256"),(0,i.kt)("td",{parentName:"tr",align:null},".NET 4.7.2"),(0,i.kt)("td",{parentName:"tr",align:null},"1000"),(0,i.kt)("td",{parentName:"tr",align:"right"},"7.735 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"0.1913 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"0.4034 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"1.00")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},"Sha256"),(0,i.kt)("td",{parentName:"tr",align:null},".NET Core 3.0"),(0,i.kt)("td",{parentName:"tr",align:null},"1000"),(0,i.kt)("td",{parentName:"tr",align:"right"},"3.989 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"0.0796 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"0.0745 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"0.50")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},"Sha256"),(0,i.kt)("td",{parentName:"tr",align:null},"CoreRt 3.0"),(0,i.kt)("td",{parentName:"tr",align:null},"1000"),(0,i.kt)("td",{parentName:"tr",align:"right"},"4.091 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"0.0811 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"0.1562 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"0.53")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},"Sha256"),(0,i.kt)("td",{parentName:"tr",align:null},"Mono"),(0,i.kt)("td",{parentName:"tr",align:null},"1000"),(0,i.kt)("td",{parentName:"tr",align:"right"},"13.117 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"0.2485 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"0.5019 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"1.70")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null}),(0,i.kt)("td",{parentName:"tr",align:null}),(0,i.kt)("td",{parentName:"tr",align:null}),(0,i.kt)("td",{parentName:"tr",align:"right"}),(0,i.kt)("td",{parentName:"tr",align:"right"}),(0,i.kt)("td",{parentName:"tr",align:"right"}),(0,i.kt)("td",{parentName:"tr",align:"right"})),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},"Md5"),(0,i.kt)("td",{parentName:"tr",align:null},".NET 4.7.2"),(0,i.kt)("td",{parentName:"tr",align:null},"1000"),(0,i.kt)("td",{parentName:"tr",align:"right"},"2.872 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"0.0552 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"0.0737 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"1.00")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},"Md5"),(0,i.kt)("td",{parentName:"tr",align:null},".NET Core 3.0"),(0,i.kt)("td",{parentName:"tr",align:null},"1000"),(0,i.kt)("td",{parentName:"tr",align:"right"},"1.848 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"0.0348 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"0.0326 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"0.64")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},"Md5"),(0,i.kt)("td",{parentName:"tr",align:null},"CoreRt 3.0"),(0,i.kt)("td",{parentName:"tr",align:null},"1000"),(0,i.kt)("td",{parentName:"tr",align:"right"},"1.817 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"0.0359 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"0.0427 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"0.63")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},"Md5"),(0,i.kt)("td",{parentName:"tr",align:null},"Mono"),(0,i.kt)("td",{parentName:"tr",align:null},"1000"),(0,i.kt)("td",{parentName:"tr",align:"right"},"3.574 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"0.0678 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"0.0753 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"1.24")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null}),(0,i.kt)("td",{parentName:"tr",align:null}),(0,i.kt)("td",{parentName:"tr",align:null}),(0,i.kt)("td",{parentName:"tr",align:"right"}),(0,i.kt)("td",{parentName:"tr",align:"right"}),(0,i.kt)("td",{parentName:"tr",align:"right"}),(0,i.kt)("td",{parentName:"tr",align:"right"})),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},"Sha256"),(0,i.kt)("td",{parentName:"tr",align:null},".NET 4.7.2"),(0,i.kt)("td",{parentName:"tr",align:null},"10000"),(0,i.kt)("td",{parentName:"tr",align:"right"},"74.509 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"1.5787 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"4.6052 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"1.00")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},"Sha256"),(0,i.kt)("td",{parentName:"tr",align:null},".NET Core 3.0"),(0,i.kt)("td",{parentName:"tr",align:null},"10000"),(0,i.kt)("td",{parentName:"tr",align:"right"},"36.049 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"0.7151 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"1.0025 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"0.49")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},"Sha256"),(0,i.kt)("td",{parentName:"tr",align:null},"CoreRt 3.0"),(0,i.kt)("td",{parentName:"tr",align:null},"10000"),(0,i.kt)("td",{parentName:"tr",align:"right"},"36.253 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"0.7076 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"0.7571 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"0.49")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},"Sha256"),(0,i.kt)("td",{parentName:"tr",align:null},"Mono"),(0,i.kt)("td",{parentName:"tr",align:null},"10000"),(0,i.kt)("td",{parentName:"tr",align:"right"},"116.350 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"2.2555 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"3.0110 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"1.58")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null}),(0,i.kt)("td",{parentName:"tr",align:null}),(0,i.kt)("td",{parentName:"tr",align:null}),(0,i.kt)("td",{parentName:"tr",align:"right"}),(0,i.kt)("td",{parentName:"tr",align:"right"}),(0,i.kt)("td",{parentName:"tr",align:"right"}),(0,i.kt)("td",{parentName:"tr",align:"right"})),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},"Md5"),(0,i.kt)("td",{parentName:"tr",align:null},".NET 4.7.2"),(0,i.kt)("td",{parentName:"tr",align:null},"10000"),(0,i.kt)("td",{parentName:"tr",align:"right"},"17.308 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"0.3361 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"0.4250 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"1.00")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},"Md5"),(0,i.kt)("td",{parentName:"tr",align:null},".NET Core 3.0"),(0,i.kt)("td",{parentName:"tr",align:null},"10000"),(0,i.kt)("td",{parentName:"tr",align:"right"},"15.726 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"0.2064 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"0.1930 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"0.90")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},"Md5"),(0,i.kt)("td",{parentName:"tr",align:null},"CoreRt 3.0"),(0,i.kt)("td",{parentName:"tr",align:null},"10000"),(0,i.kt)("td",{parentName:"tr",align:"right"},"15.627 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"0.2631 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"0.2461 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"0.89")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},"Md5"),(0,i.kt)("td",{parentName:"tr",align:null},"Mono"),(0,i.kt)("td",{parentName:"tr",align:null},"10000"),(0,i.kt)("td",{parentName:"tr",align:"right"},"30.205 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"0.5868 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"0.6522 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"1.74")))),(0,i.kt)("h3",{id:"36333-\u5bfc\u51fa\u62a5\u8868"},"36.3.3.3 \u5bfc\u51fa\u62a5\u8868"),(0,i.kt)("p",null,"\u4e5f\u53ef\u4ee5\u5bfc\u51fa\u5404\u79cd\u56fe\u8868"),(0,i.kt)("img",{src:(0,l.Z)("img/bm1.png")}),(0,i.kt)("h2",{id:"3634-\u53cd\u9988\u4e0e\u5efa\u8bae"},"36.3.4 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,i.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))),(0,i.kt)("hr",null),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e86\u89e3\u66f4\u591a")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u60f3\u4e86\u89e3\u66f4\u591a ",(0,i.kt)("inlineCode",{parentName:"p"},"BenchmarkDotNet")," \u77e5\u8bc6\u53ef\u67e5\u9605 ",(0,i.kt)("a",{parentName:"p",href:"https://benchmarkdotnet.org/"},"BenchmarkDotNet \u5b98\u7f51"),"\u3002"))))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/4b6c538b.f9b1b80d.js b/handbook/build/assets/js/4b6c538b.f9b1b80d.js deleted file mode 100644 index 8de92eee012..00000000000 --- a/handbook/build/assets/js/4b6c538b.f9b1b80d.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[2009],{3905:function(t,e,a){a.d(e,{Zo:function(){return g},kt:function(){return u}});var n=a(7294);function r(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function i(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,n)}return a}function l(t){for(var e=1;e=0||(r[a]=t[a]);return r}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(t,a)&&(r[a]=t[a])}return r}var d=n.createContext({}),m=function(t){var e=n.useContext(d),a=e;return t&&(a="function"==typeof t?t(e):l(l({},e),t)),a},g=function(t){var e=m(t.components);return n.createElement(d.Provider,{value:e},t.children)},k={inlineCode:"code",wrapper:function(t){var e=t.children;return n.createElement(n.Fragment,{},e)}},o=n.forwardRef((function(t,e){var a=t.components,r=t.mdxType,i=t.originalType,d=t.parentName,g=p(t,["components","mdxType","originalType","parentName"]),o=m(a),u=r,N=o["".concat(d,".").concat(u)]||o[u]||k[u]||i;return a?n.createElement(N,l(l({ref:e},g),{},{components:a})):n.createElement(N,l({ref:e},g))}));function u(t,e){var a=arguments,r=e&&e.mdxType;if("string"==typeof t||r){var i=a.length,l=new Array(i);l[0]=o;var p={};for(var d in e)hasOwnProperty.call(e,d)&&(p[d]=e[d]);p.originalType=t,p.mdxType="string"==typeof t?t:r,l[1]=p;for(var m=2;mBenchmarkDotNet",id:"3633-benchmarkdotnet",children:[{value:"36.3.3.1 \u5982\u4f55\u4f7f\u7528",id:"36331-\u5982\u4f55\u4f7f\u7528",children:[]},{value:"36.3.3.2 \u67e5\u770b\u7ed3\u679c",id:"36332-\u67e5\u770b\u7ed3\u679c",children:[]},{value:"36.3.3.3 \u5bfc\u51fa\u62a5\u8868",id:"36333-\u5bfc\u51fa\u62a5\u8868",children:[]}]},{value:"36.3.4 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"3634-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],o={toc:k};function u(t){var e=t.components,a=(0,r.Z)(t,p);return(0,i.kt)("wrapper",(0,n.Z)({},o,a,{components:e,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"3631-\u57fa\u51c6\u6d4b\u8bd5"},"36.3.1 \u57fa\u51c6\u6d4b\u8bd5"),(0,i.kt)("p",null,"\u57fa\u51c6\u6d4b\u8bd5\uff08benchmarking\uff09\u662f\u4e00\u79cd\u6d4b\u91cf\u548c\u8bc4\u4f30\u8f6f\u4ef6\u6027\u80fd\u6307\u6807\u7684\u6d3b\u52a8\u3002\u4f60\u53ef\u4ee5\u5728\u67d0\u4e2a\u65f6\u5019\u901a\u8fc7\u57fa\u51c6\u6d4b\u8bd5\u5efa\u7acb\u4e00\u4e2a\u5df2\u77e5\u7684\u6027\u80fd\u6c34\u5e73\uff08\u79f0\u4e3a\u57fa\u51c6\u7ebf\uff09\uff0c\u5f53\u7cfb\u7edf\u7684\u8f6f\u786c\u4ef6\u73af\u5883\u53d1\u751f\u53d8\u5316\u4e4b\u540e\u518d\u8fdb\u884c\u4e00\u6b21\u57fa\u51c6\u6d4b\u8bd5\u4ee5\u786e\u5b9a\u90a3\u4e9b\u53d8\u5316\u5bf9\u6027\u80fd\u7684\u5f71\u54cd\u3002\u8fd9\u662f\u57fa\u51c6\u6d4b\u8bd5\u6700\u5e38\u89c1\u7684\u7528\u9014\u3002\u5176\u4ed6\u7528\u9014\u5305\u62ec\u6d4b\u5b9a\u67d0\u79cd\u8d1f\u8f7d\u6c34\u5e73\u4e0b\u7684\u6027\u80fd\u6781\u9650\u3001\u7ba1\u7406\u7cfb\u7edf\u6216\u73af\u5883\u7684\u53d8\u5316\u3001\u53d1\u73b0\u53ef\u80fd\u5bfc\u81f4\u6027\u80fd\u95ee\u9898\u7684\u6761\u4ef6\uff0c\u7b49\u7b49\u3002"),(0,i.kt)("h2",{id:"3632-\u57fa\u51c6\u6d4b\u8bd5\u7279\u8d28\u53ca\u610f\u4e49"},"36.3.2 \u57fa\u51c6\u6d4b\u8bd5\u7279\u8d28\u53ca\u610f\u4e49"),(0,i.kt)("h3",{id:"36321-\u7279\u8d28"},"36.3.2.1 \u7279\u8d28"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("strong",{parentName:"li"},"\u53ef\u91cd\u590d\u6027"),"\uff1a\u53ef\u8fdb\u884c\u91cd\u590d\u6027\u7684\u6d4b\u8bd5\uff0c\u8fd9\u6837\u505a\u6709\u5229\u4e8e\u6bd4\u8f83\u6bcf\u6b21\u7684\u6d4b\u8bd5\u7ed3\u679c\uff0c\u5f97\u5230\u6027\u80fd\u7ed3\u679c\u7684\u957f\u671f\u53d8\u5316\u8d8b\u52bf\uff0c\u4e3a\u7cfb\u7edf\u8c03\u4f18\u548c\u4e0a\u7ebf\u524d\u7684\u5bb9\u91cf\u89c4\u5212\u505a\u53c2\u8003\u3002"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("strong",{parentName:"li"},"\u53ef\u89c2\u6d4b\u6027"),"\uff1a\u901a\u8fc7\u5168\u65b9\u4f4d\u7684\u76d1\u63a7\uff08\u5305\u62ec\u6d4b\u8bd5\u5f00\u59cb\u5230\u7ed3\u675f\uff0c\u6267\u884c\u673a\u3001\u670d\u52a1\u5668\u3001\u6570\u636e\u5e93\uff09\uff0c\u53ca\u65f6\u4e86\u89e3\u548c\u5206\u6790\u6d4b\u8bd5\u8fc7\u7a0b\u53d1\u751f\u4e86\u4ec0\u4e48\u3002"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("strong",{parentName:"li"},"\u53ef\u5c55\u793a\u6027"),"\uff1a\u76f8\u5173\u4eba\u5458\u53ef\u4ee5\u76f4\u89c2\u660e\u4e86\u7684\u4e86\u89e3\u6d4b\u8bd5\u7ed3\u679c\uff08web \u754c\u9762\u3001\u4eea\u8868\u76d8\u3001\u6298\u7ebf\u56fe\u6811\u72b6\u56fe\u7b49\u5f62\u5f0f\uff09\u3002"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("strong",{parentName:"li"},"\u771f\u5b9e\u6027"),"\uff1a\u6d4b\u8bd5\u7684\u7ed3\u679c\u53cd\u6620\u4e86\u5ba2\u6237\u4f53\u9a8c\u5230\u7684\u771f\u5b9e\u7684\u60c5\u51b5\uff08\u771f\u5b9e\u51c6\u786e\u7684\u4e1a\u52a1\u573a\u666f+\u4e0e\u751f\u4ea7\u4e00\u81f4\u7684\u914d\u7f6e+\u5408\u7406\u6b63\u786e\u7684\u6d4b\u8bd5\u65b9\u6cd5\uff09\u3002"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("strong",{parentName:"li"},"\u53ef\u6267\u884c\u6027"),"\uff1a\u76f8\u5173\u4eba\u5458\u53ef\u4ee5\u5feb\u901f\u7684\u8fdb\u884c\u6d4b\u8bd5\u9a8c\u8bc1\u4fee\u6539\u8c03\u4f18\uff08\u53ef\u5b9a\u4f4d\u53ef\u5206\u6790\uff09\u3002")),(0,i.kt)("h3",{id:"36322-\u610f\u4e49"},"36.3.2.2 \u610f\u4e49"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"\u4e3a\u5bb9\u91cf\u89c4\u5212\u786e\u5b9a\u7cfb\u7edf\u548c\u5e94\u7528\u7a0b\u5e8f\u7684\u6781\u9650\uff1b"),(0,i.kt)("li",{parentName:"ul"},"\u4e3a\u914d\u7f6e\u6d4b\u8bd5\u7684\u53c2\u6570\u548c\u914d\u7f6e\u9009\u9879\u63d0\u4f9b\u53c2\u8003\u4f9d\u636e\uff1b"),(0,i.kt)("li",{parentName:"ul"},"\u4e3a\u9a8c\u6536\u6d4b\u8bd5\u786e\u5b9a\u7cfb\u7edf\u662f\u5426\u5177\u5907\u81ea\u5df1\u6240\u5ba3\u79f0\u7684\u80fd\u529b\uff1b"),(0,i.kt)("li",{parentName:"ul"},"\u4e3a\u6027\u80fd\u57fa\u7ebf\u7684\u5efa\u7acb\u63d0\u4f9b\u957f\u671f\u7684\u6570\u636e\u7edf\u8ba1\u6765\u6e90\u4ee5\u53ca\u6bd4\u8f83\u57fa\u51c6\uff1b")),(0,i.kt)("h2",{id:"3633-benchmarkdotnet"},"36.3.3 ",(0,i.kt)("inlineCode",{parentName:"h2"},"BenchmarkDotNet")),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"BenchmarkDotNet")," \u662f ",(0,i.kt)("inlineCode",{parentName:"p"},".NET")," \u5e73\u53f0\u63d0\u4f9b\u7684\u57fa\u51c6\u6d4b\u8bd5\u5de5\u5177\uff0c",(0,i.kt)("inlineCode",{parentName:"p"},"BenchmarkDotNet")," \u53ef\u5e2e\u52a9\u60a8\u5c06\u65b9\u6cd5\u8f6c\u6362\u4e3a\u57fa\u51c6\uff0c\u8ddf\u8e2a\u5176\u6027\u80fd\uff0c\u5e76\u5171\u4eab\u53ef\u91cd\u590d\u7684\u6d4b\u91cf\u5b9e\u9a8c\u3002",(0,i.kt)("inlineCode",{parentName:"p"},"BenchmarkDotNet")," \u53ef\u4fdd\u62a4\u60a8\u514d\u53d7\u6d41\u884c\u7684\u57fa\u51c6\u6d4b\u8bd5\u9519\u8bef\uff0c\u5e76\u5728\u57fa\u51c6\u8bbe\u8ba1\u6216\u83b7\u5f97\u7684\u6d4b\u91cf\u4e2d\u51fa\u73b0\u95ee\u9898\u65f6\u8b66\u544a\u60a8\u3002\u7ed3\u679c\u4ee5\u7528\u6237\u53cb\u597d\u7684\u5f62\u5f0f\u5448\u73b0\uff0c\u7a81\u51fa\u663e\u793a\u4e86\u6709\u5173\u5b9e\u9a8c\u7684\u6240\u6709\u91cd\u8981\u4e8b\u5b9e\u3002"),(0,i.kt)("h3",{id:"36331-\u5982\u4f55\u4f7f\u7528"},"36.3.3.1 \u5982\u4f55\u4f7f\u7528"),(0,i.kt)("p",null,"\u521b\u5efa\u4e00\u4e2a ",(0,i.kt)("inlineCode",{parentName:"p"},"\u63a7\u5236\u53f0")," \u5e94\u7528\u7a0b\u5e8f\uff0c\u5e76\u901a\u8fc7 ",(0,i.kt)("inlineCode",{parentName:"p"},"Nuget")," \u5b89\u88c5 ",(0,i.kt)("a",{parentName:"p",href:"https://www.nuget.org/packages/BenchmarkDotNet/"},"BenchmarkDotNet")," \u62d3\u5c55\u5305\u3002\u7f16\u5199\u6d4b\u8bd5\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{3-4,22,25,33}","{3-4,22,25,33}":!0},"using System;\nusing System.Security.Cryptography;\nusing BenchmarkDotNet.Attributes;\nusing BenchmarkDotNet.Running;\n\nnamespace MyBenchmarks\n{\n public class Md5VsSha256\n {\n private const int N = 10000;\n private readonly byte[] data;\n\n private readonly SHA256 sha256 = SHA256.Create();\n private readonly MD5 md5 = MD5.Create();\n\n public Md5VsSha256()\n {\n data = new byte[N];\n new Random(42).NextBytes(data);\n }\n\n [Benchmark]\n public byte[] Sha256() => sha256.ComputeHash(data);\n\n [Benchmark]\n public byte[] Md5() => md5.ComputeHash(data);\n }\n\n public class Program\n {\n public static void Main(string[] args)\n {\n var summary = BenchmarkRunner.Run();\n }\n }\n}\n")),(0,i.kt)("h3",{id:"36332-\u67e5\u770b\u7ed3\u679c"},"36.3.3.2 \u67e5\u770b\u7ed3\u679c"),(0,i.kt)("p",null,"\u8fd0\u884c\u63a7\u5236\u5668\u7a0b\u5e8f\uff0c\u5c06\u5f97\u5230\u4ee5\u4e0b\u7ed3\u679c"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},"BenchmarkDotNet=v0.12.0, OS=Windows 10.0.17763.805 (1809/October2018Update/Redstone5)\nIntel Core i7-7700K CPU 4.20GHz (Kaby Lake), 1 CPU, 8 logical and 4 physical cores\n [Host] : .NET Framework 4.7.2 (4.7.3468.0), X64 RyuJIT\n Net472 : .NET Framework 4.7.2 (4.7.3468.0), X64 RyuJIT\n NetCoreApp30 : .NET Core 3.0.0 (CoreCLR 4.700.19.46205, CoreFX 4.700.19.46214), X64 RyuJIT\n CoreRt30 : .NET CoreRT 1.0.28236.02 @Commit: 741d61493c560ba96e8151f9e56876d4d3828489, X64 AOT\n Mono : Mono 6.4.0 (Visual Studio), X64\n")),(0,i.kt)("table",null,(0,i.kt)("thead",{parentName:"table"},(0,i.kt)("tr",{parentName:"thead"},(0,i.kt)("th",{parentName:"tr",align:null},"Method"),(0,i.kt)("th",{parentName:"tr",align:null},"Runtime"),(0,i.kt)("th",{parentName:"tr",align:null},"N"),(0,i.kt)("th",{parentName:"tr",align:"right"},"Mean"),(0,i.kt)("th",{parentName:"tr",align:"right"},"Error"),(0,i.kt)("th",{parentName:"tr",align:"right"},"StdDev"),(0,i.kt)("th",{parentName:"tr",align:"right"},"Ratio"))),(0,i.kt)("tbody",{parentName:"table"},(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},"Sha256"),(0,i.kt)("td",{parentName:"tr",align:null},".NET 4.7.2"),(0,i.kt)("td",{parentName:"tr",align:null},"1000"),(0,i.kt)("td",{parentName:"tr",align:"right"},"7.735 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"0.1913 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"0.4034 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"1.00")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},"Sha256"),(0,i.kt)("td",{parentName:"tr",align:null},".NET Core 3.0"),(0,i.kt)("td",{parentName:"tr",align:null},"1000"),(0,i.kt)("td",{parentName:"tr",align:"right"},"3.989 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"0.0796 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"0.0745 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"0.50")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},"Sha256"),(0,i.kt)("td",{parentName:"tr",align:null},"CoreRt 3.0"),(0,i.kt)("td",{parentName:"tr",align:null},"1000"),(0,i.kt)("td",{parentName:"tr",align:"right"},"4.091 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"0.0811 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"0.1562 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"0.53")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},"Sha256"),(0,i.kt)("td",{parentName:"tr",align:null},"Mono"),(0,i.kt)("td",{parentName:"tr",align:null},"1000"),(0,i.kt)("td",{parentName:"tr",align:"right"},"13.117 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"0.2485 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"0.5019 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"1.70")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null}),(0,i.kt)("td",{parentName:"tr",align:null}),(0,i.kt)("td",{parentName:"tr",align:null}),(0,i.kt)("td",{parentName:"tr",align:"right"}),(0,i.kt)("td",{parentName:"tr",align:"right"}),(0,i.kt)("td",{parentName:"tr",align:"right"}),(0,i.kt)("td",{parentName:"tr",align:"right"})),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},"Md5"),(0,i.kt)("td",{parentName:"tr",align:null},".NET 4.7.2"),(0,i.kt)("td",{parentName:"tr",align:null},"1000"),(0,i.kt)("td",{parentName:"tr",align:"right"},"2.872 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"0.0552 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"0.0737 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"1.00")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},"Md5"),(0,i.kt)("td",{parentName:"tr",align:null},".NET Core 3.0"),(0,i.kt)("td",{parentName:"tr",align:null},"1000"),(0,i.kt)("td",{parentName:"tr",align:"right"},"1.848 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"0.0348 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"0.0326 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"0.64")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},"Md5"),(0,i.kt)("td",{parentName:"tr",align:null},"CoreRt 3.0"),(0,i.kt)("td",{parentName:"tr",align:null},"1000"),(0,i.kt)("td",{parentName:"tr",align:"right"},"1.817 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"0.0359 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"0.0427 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"0.63")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},"Md5"),(0,i.kt)("td",{parentName:"tr",align:null},"Mono"),(0,i.kt)("td",{parentName:"tr",align:null},"1000"),(0,i.kt)("td",{parentName:"tr",align:"right"},"3.574 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"0.0678 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"0.0753 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"1.24")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null}),(0,i.kt)("td",{parentName:"tr",align:null}),(0,i.kt)("td",{parentName:"tr",align:null}),(0,i.kt)("td",{parentName:"tr",align:"right"}),(0,i.kt)("td",{parentName:"tr",align:"right"}),(0,i.kt)("td",{parentName:"tr",align:"right"}),(0,i.kt)("td",{parentName:"tr",align:"right"})),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},"Sha256"),(0,i.kt)("td",{parentName:"tr",align:null},".NET 4.7.2"),(0,i.kt)("td",{parentName:"tr",align:null},"10000"),(0,i.kt)("td",{parentName:"tr",align:"right"},"74.509 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"1.5787 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"4.6052 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"1.00")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},"Sha256"),(0,i.kt)("td",{parentName:"tr",align:null},".NET Core 3.0"),(0,i.kt)("td",{parentName:"tr",align:null},"10000"),(0,i.kt)("td",{parentName:"tr",align:"right"},"36.049 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"0.7151 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"1.0025 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"0.49")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},"Sha256"),(0,i.kt)("td",{parentName:"tr",align:null},"CoreRt 3.0"),(0,i.kt)("td",{parentName:"tr",align:null},"10000"),(0,i.kt)("td",{parentName:"tr",align:"right"},"36.253 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"0.7076 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"0.7571 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"0.49")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},"Sha256"),(0,i.kt)("td",{parentName:"tr",align:null},"Mono"),(0,i.kt)("td",{parentName:"tr",align:null},"10000"),(0,i.kt)("td",{parentName:"tr",align:"right"},"116.350 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"2.2555 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"3.0110 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"1.58")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null}),(0,i.kt)("td",{parentName:"tr",align:null}),(0,i.kt)("td",{parentName:"tr",align:null}),(0,i.kt)("td",{parentName:"tr",align:"right"}),(0,i.kt)("td",{parentName:"tr",align:"right"}),(0,i.kt)("td",{parentName:"tr",align:"right"}),(0,i.kt)("td",{parentName:"tr",align:"right"})),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},"Md5"),(0,i.kt)("td",{parentName:"tr",align:null},".NET 4.7.2"),(0,i.kt)("td",{parentName:"tr",align:null},"10000"),(0,i.kt)("td",{parentName:"tr",align:"right"},"17.308 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"0.3361 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"0.4250 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"1.00")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},"Md5"),(0,i.kt)("td",{parentName:"tr",align:null},".NET Core 3.0"),(0,i.kt)("td",{parentName:"tr",align:null},"10000"),(0,i.kt)("td",{parentName:"tr",align:"right"},"15.726 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"0.2064 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"0.1930 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"0.90")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},"Md5"),(0,i.kt)("td",{parentName:"tr",align:null},"CoreRt 3.0"),(0,i.kt)("td",{parentName:"tr",align:null},"10000"),(0,i.kt)("td",{parentName:"tr",align:"right"},"15.627 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"0.2631 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"0.2461 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"0.89")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},"Md5"),(0,i.kt)("td",{parentName:"tr",align:null},"Mono"),(0,i.kt)("td",{parentName:"tr",align:null},"10000"),(0,i.kt)("td",{parentName:"tr",align:"right"},"30.205 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"0.5868 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"0.6522 us"),(0,i.kt)("td",{parentName:"tr",align:"right"},"1.74")))),(0,i.kt)("h3",{id:"36333-\u5bfc\u51fa\u62a5\u8868"},"36.3.3.3 \u5bfc\u51fa\u62a5\u8868"),(0,i.kt)("p",null,"\u4e5f\u53ef\u4ee5\u5bfc\u51fa\u5404\u79cd\u56fe\u8868"),(0,i.kt)("img",{src:(0,l.Z)("img/bm1.png")}),(0,i.kt)("h2",{id:"3634-\u53cd\u9988\u4e0e\u5efa\u8bae"},"36.3.4 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,i.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))),(0,i.kt)("hr",null),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e86\u89e3\u66f4\u591a")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u60f3\u4e86\u89e3\u66f4\u591a ",(0,i.kt)("inlineCode",{parentName:"p"},"BenchmarkDotNet")," \u77e5\u8bc6\u53ef\u67e5\u9605 ",(0,i.kt)("a",{parentName:"p",href:"https://benchmarkdotnet.org/"},"BenchmarkDotNet \u5b98\u7f51"),"\u3002"))))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/4c19669a.96b7ea08.js b/handbook/build/assets/js/4c19669a.96b7ea08.js deleted file mode 100644 index ebef43f3a63..00000000000 --- a/handbook/build/assets/js/4c19669a.96b7ea08.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[6078],{3905:function(e,t,r){r.d(t,{Zo:function(){return p},kt:function(){return f}});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function l(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var c=n.createContext({}),u=function(e){var t=n.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},p=function(e){var t=u(e.components);return n.createElement(c.Provider,{value:t},e.children)},s={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,l=e.originalType,c=e.parentName,p=i(e,["components","mdxType","originalType","parentName"]),d=u(r),f=a,m=d["".concat(c,".").concat(f)]||d[f]||s[f]||l;return r?n.createElement(m,o(o({ref:t},p),{},{components:r})):n.createElement(m,o({ref:t},p))}));function f(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var l=r.length,o=new Array(l);o[0]=d;var i={};for(var c in t)hasOwnProperty.call(t,c)&&(i[c]=t[c]);i.originalType=e,i.mdxType="string"==typeof e?e:a,o[1]=i;for(var u=2;uHello {0}", name];\n')),(0,l.kt)("h2",{id:"83-\u8bbe\u7f6e\u5f53\u524d\u8bed\u8a00"},"8.3 \u8bbe\u7f6e\u5f53\u524d\u8bed\u8a00"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-cs"},'L.SetCulture("en-US");\n')),(0,l.kt)("h2",{id:"84-\u83b7\u53d6\u7cfb\u7edf\u8bed\u8a00\u5217\u8868"},"8.4 \u83b7\u53d6\u7cfb\u7edf\u8bed\u8a00\u5217\u8868"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-cs"},"var list = L.GetCultures();\n")),(0,l.kt)("h2",{id:"85-\u83b7\u53d6\u5f53\u524d\u9009\u4e2d\u8bed\u8a00"},"8.5 \u83b7\u53d6\u5f53\u524d\u9009\u4e2d\u8bed\u8a00"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-cs"},"var list = L.GetSelectCulture();\n")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/4c19669a.ec21e8fc.js b/handbook/build/assets/js/4c19669a.ec21e8fc.js new file mode 100644 index 00000000000..05ff013874a --- /dev/null +++ b/handbook/build/assets/js/4c19669a.ec21e8fc.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[6078],{3905:function(e,t,r){r.d(t,{Zo:function(){return s},kt:function(){return f}});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function l(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var c=n.createContext({}),u=function(e){var t=n.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},s=function(e){var t=u(e.components);return n.createElement(c.Provider,{value:t},e.children)},p={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,l=e.originalType,c=e.parentName,s=i(e,["components","mdxType","originalType","parentName"]),d=u(r),f=a,m=d["".concat(c,".").concat(f)]||d[f]||p[f]||l;return r?n.createElement(m,o(o({ref:t},s),{},{components:r})):n.createElement(m,o({ref:t},s))}));function f(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var l=r.length,o=new Array(l);o[0]=d;var i={};for(var c in t)hasOwnProperty.call(t,c)&&(i[c]=t[c]);i.originalType=e,i.mdxType="string"==typeof e?e:a,o[1]=i;for(var u=2;uHello {0}", name];\n')),(0,l.kt)("h2",{id:"83-\u8bbe\u7f6e\u5f53\u524d\u8bed\u8a00"},"8.3 \u8bbe\u7f6e\u5f53\u524d\u8bed\u8a00"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-cs"},'L.SetCulture("en-US");\n')),(0,l.kt)("h2",{id:"84-\u83b7\u53d6\u7cfb\u7edf\u8bed\u8a00\u5217\u8868"},"8.4 \u83b7\u53d6\u7cfb\u7edf\u8bed\u8a00\u5217\u8868"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-cs"},"var list = L.GetCultures();\n")),(0,l.kt)("h2",{id:"85-\u83b7\u53d6\u5f53\u524d\u9009\u4e2d\u8bed\u8a00"},"8.5 \u83b7\u53d6\u5f53\u524d\u9009\u4e2d\u8bed\u8a00"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-cs"},"var list = L.GetSelectCulture();\n")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/4c79e569.057d161b.js b/handbook/build/assets/js/4c79e569.057d161b.js new file mode 100644 index 00000000000..aa15b82193e --- /dev/null +++ b/handbook/build/assets/js/4c79e569.057d161b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[8707],{3905:function(e,t,a){a.d(t,{Zo:function(){return s},kt:function(){return k}});var i=a(7294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function r(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,i)}return a}function l(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var o=i.createContext({}),m=function(e){var t=i.useContext(o),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},s=function(e){var t=m(e.components);return i.createElement(o.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},N=i.forwardRef((function(e,t){var a=e.components,n=e.mdxType,r=e.originalType,o=e.parentName,s=p(e,["components","mdxType","originalType","parentName"]),N=m(a),k=n,h=N["".concat(o,".").concat(k)]||N[k]||u[k]||r;return a?i.createElement(h,l(l({ref:t},s),{},{components:a})):i.createElement(h,l({ref:t},s))}));function k(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var r=a.length,l=new Array(r);l[0]=N;var p={};for(var o in t)hasOwnProperty.call(t,o)&&(p[o]=t[o]);p.originalType=e,p.mdxType="string"==typeof e?e:n,l[1]=p;for(var m=2;m")," \u7684 ",(0,r.kt)("inlineCode",{parentName:"li"},"CallContext")," \u5b9e\u73b0 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/commit/9057a212aab8057b668086bd14369fa68ce120df"},"9057a21")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u8fdc\u7a0b\u8bf7\u6c42\u53ef\u914d\u7f6e\u8bf7\u6c42\u5f02\u5e38\u91cd\u8bd5\u7b56\u7565 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/commit/656da87a667c2da7d82425cdcd47146e99602d65"},"656da87")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u8fdc\u7a0b\u8bf7\u6c42 ",(0,r.kt)("inlineCode",{parentName:"li"},"OnRequestFailded")," \u4e8b\u4ef6 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/commit/4a3da4ba2c69380fe5f8c2fda80054544c0a3468"},"4a3da4b")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u7a81\u7834\u6027\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u79fb\u9664]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Scoped")," \u6240\u6709\u5e26\u8fd4\u56de\u503c\u65b9\u6cd5 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/commit/656da87a667c2da7d82425cdcd47146e99602d65"},"656da87")),(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," ",(0,r.kt)("strong",{parentName:"li"},"\u5728 ",(0,r.kt)("inlineCode",{parentName:"strong"},"ConfigureService")," \u4e2d\u8c03\u7528 ",(0,r.kt)("inlineCode",{parentName:"strong"},"App.GetOptions<>()")," \u83b7\u53d6\u914d\u7f6e\u903b\u8f91")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/commit/afa4ac347152ccac37bd1d0f9af1e8ffb665a662"},"afa4ac3"))))),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"\u5728\u8fc7\u53bb\uff0c\u5f88\u591a\u5f00\u53d1\u8005\u603b\u662f\u559c\u6b22\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Startup.cs")," \u914d\u7f6e\u670d\u52a1\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"ConfigureService")," \u65b9\u6cd5\u4e2d\u89e3\u6790\u670d\u52a1\uff0c\u8fd9\u6837\u5bfc\u81f4\u5185\u5b58\u5b58\u5728\u6ea2\u51fa\u98ce\u9669\uff0cGC \u65e0\u6cd5\u56de\u6536\u3002\n\u6b63\u786e\u7684\u65b9\u5f0f\u662f\u5c3d\u53ef\u80fd\u7684\u907f\u514d ",(0,r.kt)("inlineCode",{parentName:"p"},"ConfigureService")," \u4e2d\u89e3\u6790\u670d\u52a1\u3002",(0,r.kt)("strong",{parentName:"p"},"\u5982\u679c\u9700\u8981\u5728\u3010\u542f\u52a8\u65f6\u3011\u83b7\u53d6 ",(0,r.kt)("inlineCode",{parentName:"strong"},"\u914d\u7f6e\u9009\u9879"),"\uff0c\u8bf7\u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"strong"},"App.GetConfig(\u8def\u5f84, true)")," \u4ee3\u66ff ",(0,r.kt)("inlineCode",{parentName:"strong"},"App.GetOptions")),"\u3002")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u9898\u4fee\u590d")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," v2.16+ \u7248\u672c\u91cd\u6784 ",(0,r.kt)("inlineCode",{parentName:"li"},"AppDbContextBuilder")," \u4e4b\u540e\u5199\u9519\u5b9e\u4f53\u7c7b\u578b ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I45E6M"},"#I45E6M")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u8fdc\u7a0b\u8bf7\u6c42\u5355\u4e2a\u503c\u5e8f\u5217\u5316\u9519\u8bef\u5904\u7406\u65b9\u5f0f ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/commit/3282eba2cecb505e339ef3f9c8e823f84dcb43f0"},"3282eba")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," v2.17.3+ \u5355\u5143\u6d4b\u8bd5\u521b\u5efa ",(0,r.kt)("inlineCode",{parentName:"li"},"TestServer")," bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I45JR3"},"#I45JR3")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Retry.Invoke")," \u6b63\u5e38\u65b9\u6cd5\u6b7b\u5faa\u73af bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/pulls/392"},"!392")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u5237\u65b0 ",(0,r.kt)("inlineCode",{parentName:"li"},"Token")," \u751f\u6210\u65b0 ",(0,r.kt)("inlineCode",{parentName:"li"},"Token")," \u5b58\u5728\u6570\u7ec4/\u96c6\u5408\u7c7b\u578b\u5bfc\u81f4 ",(0,r.kt)("inlineCode",{parentName:"li"},"Key")," \u91cd\u590d\u5f02\u5e38\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/commit/aeea2b1b19434f3171bd1c77be057ca36ecf9be2"},"aeea2b1")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u8fdc\u7a0b\u8bf7\u6c42\u5e8f\u5217\u5316\u5f15\u7528\u7c7b\u578b\u5bf9\u8c61\uff08\u4e0d\u542b ",(0,r.kt)("inlineCode",{parentName:"li"},"string"),"\uff09\u4e0d\u6b63\u786e\u7684\u5904\u7406 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/commit/93cf63a023f3372b80edb5debc46271d2281318a"},"93cf63a")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"AppDbContext")," \u9ed8\u8ba4\u79df\u6237\u5c5e\u6027\u53d7\u5de5\u4f5c\u5355\u5143\u5f71\u54cd\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/commit/e51557fdf37ae5646b2ea37c227c970eccdbed38"},"e51557f")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u6587\u6863")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u5305\u7ba1\u7406\u5de5\u5177\u6587\u6863"),(0,r.kt)("li",{parentName:"ul"},"[\u66f4\u65b0]"," \u6a21\u677f\u5f15\u64ce\u3001",(0,r.kt)("inlineCode",{parentName:"li"},"Sql")," \u64cd\u4f5c\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"\u6570\u636e\u5e93\u4e0a\u4e0b\u6587")," \u7b49\u7b49\u6587\u6863")))),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"v217\uff08\u5df2\u53d1\u5e03\uff09"},"v2.17\uff08\u5df2\u53d1\u5e03\uff09"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u65b0\u7279\u6027")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"IPC\uff08Inter-Process Communication\uff0c\u8fdb\u7a0b\u95f4\u901a\u4fe1\uff09")," \u6a21\u5757\u529f\u80fd\uff0c\u76ee\u524d\u63d0\u4f9b\u8fdb\u7a0b\u5185\u901a\u4fe1\u548c\u5171\u4eab\u5185\u5b58\u8fdb\u7a0b\u5916\u901a\u8baf ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/tree/master/framework/Furion/ProcessChannel"},"ProcessChannel")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u8fdc\u7a0b\u8bf7\u6c42 ",(0,r.kt)("inlineCode",{parentName:"li"},"application/xml")," \u548c ",(0,r.kt)("inlineCode",{parentName:"li"},"text/xml")," \u9ed8\u8ba4\u652f\u6301 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/commit/4753a1aed527a6282fe6c05036de9d50bd3b3dd8"},"4753a1a")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u63a7\u5236\u53f0\u5168\u5c40\u5f02\u5e38\u62e6\u622a ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/commit/4a4fe1f40e1856ea36a0c0d19ca625d3f7bf95b7"},"4a4fe1f")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u652f\u6301\u81ea\u5b9a\u4e49 ",(0,r.kt)("inlineCode",{parentName:"li"},".json")," \u914d\u7f6e\u6587\u4ef6\u626b\u63cf\u76ee\u5f55 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/commit/3e2910a8b775fb6323e293b020bbe7cdfb4c6436"},"3e2910a")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u652f\u6301\u6570\u636e\u5e93\u5b9e\u4f53\u63a5\u53e3\u663e\u5f0f\u5b9e\u73b0\u63a5\u53e3\u914d\u7f6e ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/commit/9610a0a481f4f78770bc2fc3ed4cabbef2a8f937"},"9610a0a")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u63a7\u5236\u53f0\u5e94\u7528\u7a0b\u5e8f\u5168\u5c40\u62e6\u622a ",(0,r.kt)("inlineCode",{parentName:"li"},"[IfException]")," \u652f\u6301 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/commit/4a4fe1f40e1856ea36a0c0d19ca625d3f7bf95b7"},"4a4fe1f")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u4f9d\u8d56\u6ce8\u5165\u6a21\u5757\u63a5\u53e3\u53ef\u4ee5\u9650\u5236\u5b9e\u73b0\u7c7b\u751f\u5b58\u5468\u671f\uff0c\u5b9e\u73b0\u7c7b\u4e5f\u652f\u6301\u590d\u5199\u751f\u5b58\u5468\u671f ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/commit/d2ce089130300cdd8b1bc6792f325c5d38ee9404"},"d2ce089")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u7a81\u7834\u6027\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u62bd\u79bb]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Oops.Retry()")," \u91cd\u8bd5\u7b56\u7565\u529f\u80fd\u81f3\u65b0\u7c7b\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"Retry.Invoke()")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/commit/6a7bbd0b30a653b9a42d340a63520485aa6bbfa4"},"6a7bbd0")),(0,r.kt)("li",{parentName:"ul"},"[\u79fb\u9664]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"IHttpContextAccessor.SigninToSwagger()")," \u62d3\u5c55\uff0c\u8bf7\u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"li"},"IHttpContextAccessor.HttpContext.SigninToSwagger()"),"\uff0c\u9000\u51fa\u4e5f\u4e00\u6837"),(0,r.kt)("li",{parentName:"ul"},"[\u79fb\u9664]"," \u5168\u5c40\u5904\u7406 ",(0,r.kt)("inlineCode",{parentName:"li"},"Request Body")," \u91cd\u590d\u8bfb\u5904\u7406 ",(0,r.kt)("inlineCode",{parentName:"li"},"Request.EnableBuffering()")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/commit/d92c24bdb43bfb01643007ebb6a4ee42a5c738e9"},"d92c24b")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u9898\u4fee\u590d")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u89c4\u8303\u5316\u72b6\u6001\u7801\u8fc7\u6ee4\u903b\u8f91\u9519\u8bef\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I44JYS"},"#I44JYS")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u975e\u5173\u7cfb\u578b\u6570\u636e\u5e93\uff08\u5185\u5b58\u6570\u636e\u5e93\uff09\u6ce8\u518c\u53ca\u64cd\u4f5c\u5f02\u5e38 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/commit/e1676512a54374427bedbde17cd8cb59d7852557"},"e167651")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u8fdc\u7a0b\u8bf7\u6c42\u9ed8\u8ba4\u5e8f\u5217\u5316\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/commit/a55603bf7ed109296375dbeffc31591a6f8f8e49"},"a55603b")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u5b9a\u65f6\u4efb\u52a1\u96f6\u70b9/\u6574\u70b9\u63d0\u524d\u4e00\u79d2\u89e6\u53d1\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I4321L"},"#I4321L")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u53cb\u597d\u5f02\u5e38\u5728\u5b50\u7c7b\u91cd\u5199\u62bd\u8c61\u7c7b\u65b9\u6cd5\u5185\u90e8\u629b\u5f02\u5e38\u65e0\u6cd5\u83b7\u53d6\u7684\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/commit/4a4fe1f40e1856ea36a0c0d19ca625d3f7bf95b7"},"4a4fe1f")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u4fee\u590d\u975e Web \u9879\u76ee\u629b\u5f02\u5e38\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/commit/4a4fe1f40e1856ea36a0c0d19ca625d3f7bf95b7"},"4a4fe1f")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u6570\u636e\u5e93\u5b9e\u4f53\u6a21\u578b\u8d34 ",(0,r.kt)("inlineCode",{parentName:"li"},"[NotMapper]")," \u7279\u6027\u65e0\u6548 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I44MNO"},"#I44MNO")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u5176\u4ed6\u66f4\u6539")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," Swagger \u751f\u6210\u6cdb\u578b SchemaIds \u9ed8\u8ba4\u8fde\u63a5\u7b26\uff0c\u7531 ",(0,r.kt)("inlineCode",{parentName:"li"},"Of")," \u6539\u4e3a ",(0,r.kt)("inlineCode",{parentName:"li"},"_")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/commit/81946b64e81d9e290f80cd5bcebdb69c99001153"},"81946b6"))))),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"v216\uff08\u5df2\u53d1\u5e03\uff09"},"v2.16\uff08\u5df2\u53d1\u5e03\uff09"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u65b0\u7279\u6027")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("strong",{parentName:"li"},(0,r.kt)("inlineCode",{parentName:"strong"},"MVC")," \u63a7\u5236\u5668\u652f\u6301\u89c4\u8303\u5316\u5904\u7406 ",(0,r.kt)("a",{parentName:"strong",href:"https://gitee.com/dotnetchina/Furion/issues/I427Z2"},"#I427Z2"))),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"throw Oops.Bah()")," \u629b\u51fa\u4e1a\u52a1\u5f02\u5e38\uff08\u72b6\u6001\u7801 ",(0,r.kt)("inlineCode",{parentName:"li"},"400"),"\uff09"),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"UnifyResultSettings")," \u89c4\u8303\u5316 ",(0,r.kt)("inlineCode",{parentName:"li"},"json")," \u914d\u7f6e\u9009\u9879 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I42NY7"},"#I42NY7")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u591a\u8bed\u8a00\u81ea\u5b9a\u4e49\u914d\u7f6e\u8d44\u6e90\u6587\u4ef6\u540d\u53ca\u81ea\u5b9a\u4e49\u7a0b\u5e8f\u96c6 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I434YJ"},"#I434YJ")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u7a81\u7834\u6027\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," \u89c4\u8303\u5316\u7ed3\u679c ",(0,r.kt)("inlineCode",{parentName:"li"},"IUnifyResultProvider")," \u53c2\u6570 ",(0,r.kt)("strong",{parentName:"li"},"\uff08\u7834\u574f\u6027\u66f4\u6539\uff09")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I427Z2"},"#I427Z2")),(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"IJsonSerializerProvider")," \u63a5\u53e3\u53c2\u6570\uff0c\u53bb\u6389 ",(0,r.kt)("inlineCode",{parentName:"li"},"inherit")," \u53c2\u6570 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/commit/a55603bf7ed109296375dbeffc31591a6f8f8e49"},"a55603b"))))),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u65b0\u7248\u672c\u81ea\u5b9a\u4e49\u89c4\u8303\u5316\u7ed3\u679c")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("pre",{parentName:"div"},(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{15-16}","{15-16}":!0},'using Furion.DataValidation;\nusing Furion.DependencyInjection;\nusing Furion.UnifyResult.Internal;\nusing Microsoft.AspNetCore.Http;\nusing Microsoft.AspNetCore.Mvc;\nusing Microsoft.AspNetCore.Mvc.Filters;\nusing System;\nusing System.Threading.Tasks;\n\nnamespace Furion.UnifyResult\n{\n /// \n /// RESTful \u98ce\u683c\u8fd4\u56de\u503c\n /// \n [SuppressSniffer, UnifyModel(typeof(RESTfulResult<>))]\n public class RESTfulResultProvider : IUnifyResultProvider\n {\n /// \n /// \u5f02\u5e38\u8fd4\u56de\u503c\n /// \n /// \n /// \n /// \n public IActionResult OnException(ExceptionContext context, ExceptionMetadata metadata)\n {\n return new JsonResult(RESTfulResult(metadata.StatusCode, errors: metadata.Errors));\n }\n\n /// \n /// \u6210\u529f\u8fd4\u56de\u503c\n /// \n /// \n /// \n /// \n public IActionResult OnSucceeded(ActionExecutedContext context, object data)\n {\n return new JsonResult(RESTfulResult(StatusCodes.Status200OK, true, data));\n }\n\n /// \n /// \u9a8c\u8bc1\u5931\u8d25\u8fd4\u56de\u503c\n /// \n /// \n /// \n /// \n public IActionResult OnValidateFailed(ActionExecutingContext context, ValidationMetadata metadata)\n {\n return new JsonResult(RESTfulResult(StatusCodes.Status400BadRequest, errors: metadata.ValidationResult));\n }\n\n /// \n /// \u7279\u5b9a\u72b6\u6001\u7801\u8fd4\u56de\u503c\n /// \n /// \n /// \n /// \n /// \n public async Task OnResponseStatusCodes(HttpContext context, int statusCode, UnifyResultSettingsOptions unifyResultSettings)\n {\n // \u8bbe\u7f6e\u54cd\u5e94\u72b6\u6001\u7801\n UnifyContext.SetResponseStatusCodes(context, statusCode, unifyResultSettings);\n\n switch (statusCode)\n {\n // \u5904\u7406 401 \u72b6\u6001\u7801\n case StatusCodes.Status401Unauthorized:\n await context.Response.WriteAsJsonAsync(RESTfulResult(statusCode, errors: "401 Unauthorized")\n , App.GetOptions()?.JsonSerializerOptions);\n break;\n // \u5904\u7406 403 \u72b6\u6001\u7801\n case StatusCodes.Status403Forbidden:\n await context.Response.WriteAsJsonAsync(RESTfulResult(statusCode, errors: "403 Forbidden")\n , App.GetOptions()?.JsonSerializerOptions);\n break;\n default: break;\n }\n }\n\n /// \n /// \u8fd4\u56de RESTful \u98ce\u683c\u7ed3\u679c\u96c6\n /// \n /// \n /// \n /// \n /// \n /// \n private static RESTfulResult RESTfulResult(int statusCode, bool succeeded = default, object data = default, object errors = default)\n {\n return new RESTfulResult\n {\n StatusCode = statusCode,\n Succeeded = succeeded,\n Data = data,\n Errors = errors,\n Extras = UnifyContext.Take(),\n Timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds()\n };\n }\n }\n}\n')))),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u9898\u4fee\u590d")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"MVC")," \u63a7\u5236\u5668\u542f\u7528\u89c4\u8303\u5316\u5904\u7406\u540e\u8fd4\u56de ",(0,r.kt)("inlineCode",{parentName:"li"},"new Json({})")," \u5bf9\u8c61\u4e3a ",(0,r.kt)("inlineCode",{parentName:"li"},"null")," \u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I4354S"},"#I4354S")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u5176\u4ed6\u66f4\u6539")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4f18\u5316]"," \u591a\u8bed\u8a00\u5e95\u5c42\u8bbe\u8ba1\uff0c\u53d6\u6d88\u9700\u8981\u521b\u5efa ",(0,r.kt)("inlineCode",{parentName:"li"},"Lang.cs")," \u7a7a\u7c7b\u7684\u8981\u6c42 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I434YJ"},"#I434YJ")),(0,r.kt)("li",{parentName:"ul"},"[\u4f18\u5316]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"MiniProfiler")," \u6027\u80fd\uff0c\u51cf\u5c11\u4e0d\u5fc5\u8981\u7684\u76d1\u542c")))),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"v215\uff08\u5df2\u53d1\u5e03\uff09"},"v2.15\uff08\u5df2\u53d1\u5e03\uff09"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u65b0\u7279\u6027")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Db.GetDbRepository<\u5b9a\u4f4d\u5668>()")," \u9759\u6001\u65b9\u6cd5 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I41MZP"},"#I41MZP")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u8fdc\u7a0b\u8bf7\u6c42\u7f3a\u7701\u5e8f\u5217\u5316\u914d\u7f6e\u9009\u9879 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I41PBW"},"#I41PBW")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u9898\u4fee\u590d")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u81ea\u52a8\u626b\u63cf\u63a5\u53e3\u8fdb\u884c\u4f9d\u8d56\u6ce8\u5165\u83b7\u53d6\u9996\u4e2a\u63a5\u53e3\u9519\u8bef bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I41D1M"},"#I41D1M")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"IRepository")," \u6ca1\u6709\u5b9e\u73b0 ",(0,r.kt)("inlineCode",{parentName:"li"},"IRepository")," \u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I41MZP"},"#I41MZP")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u8fdc\u7a0b\u8bf7\u6c42\u7f3a\u7701\u5e8f\u5217\u5316 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I41PBW"},"#I41PBW")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u4fee\u590d ",(0,r.kt)("inlineCode",{parentName:"li"},"AppDbContext.Tenant")," \u591a\u79df\u6237\u7a7a\u5f02\u5e38\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I421DA"},"#I421DA")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Worker Service")," \u591a\u4e2a ",(0,r.kt)("inlineCode",{parentName:"li"},"Worker")," \u5b9a\u65f6\u4efb\u52a1\u963b\u585e\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/commit/82a79cce0a3d9b09f4090b7363c3b78327c76846"},"82a79cc")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Jwt")," \u81ea\u52a8\u5237\u65b0\u673a\u5236\u65f6\u533a\u5904\u7406\u95ee\u9898\uff0c\u4e3b\u8981\u9488\u5bf9\u56fd\u5916\u7528\u6237 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I41UB1"},"#I41UB1")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/commit/82a79cce0a3d9b09f4090b7363c3b78327c76846"},"82a79cc")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u5176\u4ed6\u66f4\u6539")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4f18\u5316]"," ",(0,r.kt)("strong",{parentName:"li"},"\u7cfb\u7edf\u542f\u52a8\u6027\u80fd\uff0c\u4ece 106M \u51cf\u5c11\u5230 84M")),(0,r.kt)("li",{parentName:"ul"},"[\u4f18\u5316]"," ",(0,r.kt)("strong",{parentName:"li"},"\u5927\u91cf\u5e95\u5c42\u4ee3\u7801\uff0c\u5305\u5927\u5c0f\u4ece 391Kb \u51cf\u5c11\u5230 350Kb\uff08\u4e0d\u5e26\u6ce8\u91ca\u7248\u672c\u4ec5 64Kb\uff09"))))),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"v213v214\uff08\u5df2\u53d1\u5e03\uff09"},"v2.13/v2.14\uff08\u5df2\u53d1\u5e03\uff09"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u65b0\u7279\u6027")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u7b80\u6613\u5b57\u7b26\u4e32\u6a21\u677f\u529f\u80fd\uff0c\u652f\u6301\u8fdc\u7a0b\u8bf7\u6c42\u3001\u6570\u636e\u5e93\u6a21\u5757\u3001\u65e5\u5fd7\u6a21\u5757\u3001\u4e8b\u4ef6\u603b\u7ebf\u6a21\u5757\u3001\u5b9a\u65f6\u4efb\u52a1\u6a21\u5757\u3001\u5f02\u5e38\u6a21\u5757\u3001\u6570\u636e\u6821\u9a8c\u6a21\u5757 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I402BL"},"#I402BL")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"404")," \u72b6\u6001\u7801\u89c4\u8303\u5316\u9ed8\u8ba4\u5904\u7406 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I408F5"},"#I408F5")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u5b9a\u65f6\u4efb\u52a1 ",(0,r.kt)("inlineCode",{parentName:"li"},"ISpareTimeWorker")," \u58f0\u660e\u65b9\u5f0f\u652f\u6301\u5f02\u6b65\u65b9\u6cd5 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I40KWR"},"#I40KWR")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u81ea\u52a8\u914d\u7f6e\u4e8c\u7ea7\u865a\u62df\u76ee\u5f55 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/pulls/354"},"!354")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u7a81\u7834\u6027\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u5347\u7ea7]"," ",(0,r.kt)("strong",{parentName:"li"},"\u6846\u67b6\u4f9d\u8d56 ",(0,r.kt)("inlineCode",{parentName:"strong"},"SDK")," \u4e3a ",(0,r.kt)("inlineCode",{parentName:"strong"},".NET 5.0.8")," \u7248\u672c")),(0,r.kt)("li",{parentName:"ul"},"[\u79fb\u9664]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Db.GetNewDbContext()")," \u9759\u6001\u65b9\u6cd5 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I400BK"},"#I400BK")),(0,r.kt)("li",{parentName:"ul"},"[\u79fb\u9664]"," \u6570\u636e\u5e93\u6a21\u5757\u65f6\u6001\u8868\u62d3\u5c55\u652f\u6301 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I405HI"},"#I405HI")),(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"IJsonSerializerProvider")," \u63a5\u53e3\u53c2\u6570\uff0c\u65b0\u589e ",(0,r.kt)("inlineCode",{parentName:"li"},"inherit")," \u53c2\u6570 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3ZQU5"},"#I3ZQU5")),(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"AppSettings")," \u914d\u7f6e\u7684 ",(0,r.kt)("inlineCode",{parentName:"li"},"LogEntityFrameworkCoreSqlExecuteCommand")," \u540d\u79f0\u4e3a ",(0,r.kt)("inlineCode",{parentName:"li"},"OutputOriginalSqlExecuteLog")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I40VVE"},"#I40VVE")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u9898\u4fee\u590d")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Worker Services")," \u5b9a\u65f6\u4efb\u52a1\u8fb9\u754c\u503c\u95ee\u9898\u5bfc\u81f4\u8df3\u8fc7\u5355\u6b21\u4efb\u52a1 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I405NI"},"#I405NI")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Worker Services")," \u72ec\u7acb\u53d1\u5e03\u540e\u7a0b\u5e8f\u96c6\u626b\u63cf\u5931\u6548 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3ZH3X"},"#I3ZH3X")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u8fdc\u7a0b\u8bf7\u6c42\u5982\u679c\u914d\u7f6e\u4e86 ",(0,r.kt)("inlineCode",{parentName:"li"},"Client")," \u5ba2\u6237\u7aef\u4f46\u4f20\u5165\u4e86\u7a7a ",(0,r.kt)("inlineCode",{parentName:"li"},"RequestUrl")," \u5730\u5740\u5bfc\u81f4\u5f02\u5e38\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I40BC6"},"#I40BC6")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u89c4\u8303\u5316\u7ed3\u679c\u7be1\u6539\u975e\u77ed\u8def\u7aef\u72b6\u6001\u7801\u51fa\u73b0\u5f02\u5e38 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I408F5"},"#I408F5")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u5176\u4ed6\u66f4\u6539")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4f18\u5316]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"App.GetServiceProvider(type)")," \u89e3\u6790\u670d\u52a1\u6027\u80fd ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I40KXN"},"#I40KXN")),(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," \u89c6\u56fe\u5f15\u64ce\u4fdd\u5b58\u6210\u6587\u4ef6\u6d41\u9ed8\u8ba4\u7f13\u5b58\u533a\u5927\u5c0f\uff0c\u4ece ",(0,r.kt)("inlineCode",{parentName:"li"},"4096")," \u63d0\u5347\u81f3 ",(0,r.kt)("inlineCode",{parentName:"li"},"8192")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I40KH5"},"#I40KH5"))))),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"v210211212-\uff08\u5df2\u53d1\u5e03\uff09"},"v2.10/2.11/2.12 \uff08\u5df2\u53d1\u5e03\uff09"),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"\u8be5\u7248\u672c\u6709\u591a\u4e2a\u7834\u574f\u6027\u66f4\u6539\uff0c\u66f4\u65b0\u65f6\u8bf7\u8ba4\u771f\u67e5\u770b\u3002")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u65b0\u7279\u6027")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"App.Configuration.Reload()")," \u62d3\u5c55 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3XYI8"},"#I3XYI8")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"ISubscribeHandler")," \u652f\u6301\u5f02\u6b65\u65b9\u6cd5\u5b9a\u4e49 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3XYHJ"},"#I3XYHJ")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"app.UseUnifyResultStatusCodes()")," \u53ef\u914d\u7f6e\u4fee\u6539\u8fd4\u56de\u72b6\u6001\u7801 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3VZQH"},"#I3VZQH")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u8fdc\u7a0b\u8bf7\u6c42\u6dfb\u52a0\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"User-Agent")," \u5934 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3W17C"},"#I3W17C")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u652f\u6301 ",(0,r.kt)("inlineCode",{parentName:"li"},"Sql")," \u9ad8\u7ea7\u4ee3\u7406\u5207\u6362\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u5b9a\u4f4d\u5668 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3XFP6"},"#I3XFP6")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3XDCR"},"#I3XDCR")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u5b9a\u65f6\u4efb\u52a1 ",(0,r.kt)("inlineCode",{parentName:"li"},"CronFormat")," \u81ea\u52a8\u8bc6\u522b ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3Y7GT"},"#I3Y7GT")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Sql \u9ad8\u7ea7\u4ee3\u7406")," \u62e6\u622a\u529f\u80fd ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3YHG4"},"#I3YHG4")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u62e6\u622a\u8fdc\u7a0b\u8bf7\u6c42\u6240\u6709\u5f02\u5e38\u5904\u7406 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3YPDE"},"#I3YPDE")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u8fdc\u7a0b\u8bf7\u6c42\u914d\u7f6e ",(0,r.kt)("inlineCode",{parentName:"li"},"Timeout")," \u8d85\u65f6\u65f6\u95f4 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3YPPK"},"#I3YPPK")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u65b0\u589e ",(0,r.kt)("inlineCode",{parentName:"li"},"RSA")," \u52a0\u5bc6\u7b97\u6cd5 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3YZNU"},"#I3YZNU")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/pulls/345"},"!345")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"DataTable")," \u548c ",(0,r.kt)("inlineCode",{parentName:"li"},"DataSet")," \u652f\u6301\u4e0d\u6307\u5b9a\u5f3a\u7c7b\u578b\u8fd4\u56de ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3Z6RI"},"#I3Z6RI")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Sql")," \u5b57\u7b26\u4e32\u62d3\u5c55\u65b9\u6cd5\u8bbe\u7f6e ",(0,r.kt)("inlineCode",{parentName:"li"},"Timeout")," \u8d85\u65f6\u65f6\u95f4 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3ZKWF"},"#I3ZKWF")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Sql")," \u9ad8\u7ea7\u4ee3\u7406 ",(0,r.kt)("inlineCode",{parentName:"li"},"[Timeout]")," \u7279\u6027\uff0c\u8bbe\u7f6e\u8d85\u65f6\u65f6\u95f4 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3ZKWF"},"#I3ZKWF")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u7a81\u7834\u6027\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u79fb\u9664]"," ",(0,r.kt)("strong",{parentName:"li"},(0,r.kt)("inlineCode",{parentName:"strong"},"FakeDelete")," \u5047\u5220\u9664/\u8f6f\u5220\u9664\u6240\u6709\u529f\u80fd ",(0,r.kt)("a",{parentName:"strong",href:"https://gitee.com/dotnetchina/Furion/issues/I3XKII"},"#I3XKII"))),(0,r.kt)("li",{parentName:"ul"},"[\u79fb\u9664]"," ",(0,r.kt)("strong",{parentName:"li"},"\u79fb\u9664 ",(0,r.kt)("inlineCode",{parentName:"strong"},"PBKDF2")," \u52a0\u5bc6\u7b97\u6cd5 ",(0,r.kt)("a",{parentName:"strong",href:"https://gitee.com/dotnetchina/Furion/issues/I3Z0IO"},"#I3Z0IO"))),(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," ",(0,r.kt)("strong",{parentName:"li"},"\u8fdc\u7a0b\u8bf7\u6c42\u8bbe\u7f6e\u8d85\u65f6\u65f6\u95f4\u5355\u4f4d\u7531 ",(0,r.kt)("inlineCode",{parentName:"strong"},"\u5206\u949f")," \u6539\u4e3a ",(0,r.kt)("inlineCode",{parentName:"strong"},"\u79d2")," ",(0,r.kt)("a",{parentName:"strong",href:"https://gitee.com/dotnetchina/Furion/issues/I3YPPK"},"#I3YPPK"))),(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," ",(0,r.kt)("strong",{parentName:"li"},(0,r.kt)("inlineCode",{parentName:"strong"},"IJsonSerializerProvider")," \u63a5\u53e3\u53c2\u6570\uff0c\u65b0\u589e ",(0,r.kt)("inlineCode",{parentName:"strong"},"inherit")," \u53c2\u6570 ",(0,r.kt)("a",{parentName:"strong",href:"https://gitee.com/dotnetchina/Furion/issues/I3ZQU5"},"#I3ZQU5"))),(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"[NonAutomatic]")," \u7279\u6027\u540d\u79f0\u4e3a ",(0,r.kt)("inlineCode",{parentName:"li"},"[Manual]")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3XKKX"},"#I3XKKX")),(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"[NotChangedListener]")," \u7279\u6027\u540d\u79f0\u4e3a ",(0,r.kt)("inlineCode",{parentName:"li"},"[SuppressChangedListener]")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3XKLZ"},"#I3XKLZ")),(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"[ManualSaveChanges]")," \u540d\u79f0\u4e3a ",(0,r.kt)("inlineCode",{parentName:"li"},"[ManualCommit]")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3XKNP"},"#I3XKNP")),(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," ",(0,r.kt)("strong",{parentName:"li"},(0,r.kt)("inlineCode",{parentName:"strong"},"DbContext.TenantIdQueryFilterExpression")," \u540d\u79f0\u4e3a ",(0,r.kt)("inlineCode",{parentName:"strong"},"DbContext.BuildTenantQueryFilter")," ",(0,r.kt)("a",{parentName:"strong",href:"https://gitee.com/dotnetchina/Furion/issues/I3XKTB"},"#I3XKTB"))),(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"[SkipScan]")," \u540d\u79f0\u4e3a ",(0,r.kt)("inlineCode",{parentName:"li"},"[SuppressSniffer]")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3XN5N"},"#I3XN5N")),(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"[SkipProxy]")," \u540d\u79f0\u4e3a ",(0,r.kt)("inlineCode",{parentName:"li"},"[SuppressProxy]")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3XN7O"},"#I3XN7O")),(0,r.kt)("li",{parentName:"ul"},"[\u91cd\u6784]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Sql")," \u6267\u884c\uff0c\u6027\u80fd\u63d0\u5347 20% ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3W33U"},"#I3W33U")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u9898\u4fee\u590d")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u52a8\u6001 WebAPI \u626b\u63cf\u63a7\u5236\u5668\u6ca1\u6709\u5c4f\u853d\u6ca1\u6709\u6ce8\u518c\u7684\u7b2c\u4e09\u65b9\u63a7\u5236\u5668 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3Y7TJ"},"#I3Y7TJ")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"AppDbContext")," \u8bbe\u7f6e ",(0,r.kt)("inlineCode",{parentName:"li"},"TablePrefix")," \u65e0\u6548\uff1a ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3Y57Q"},"#I3Y57Q")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u4fee\u590d\u5b9a\u65f6\u4efb\u52a1\u4f7f\u7528\u5f02\u6b65\u59d4\u6258\u5bfc\u81f4\u7a0b\u5e8f\u7ec8\u6b62 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3XVZ0"},"#I3XVZ0")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u4e8b\u4ef6\u603b\u7ebf\u4e00\u4e2a ",(0,r.kt)("inlineCode",{parentName:"li"},"\u6d88\u606fid")," \u5bf9\u5e94\u591a\u4e2a ",(0,r.kt)("inlineCode",{parentName:"li"},"Handler")," \u53ea\u89e6\u53d1\u7b2c\u4e00\u4e2a",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3XYP0"},"#I3XYP0")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},".ToPagedList()")," \u5206\u9875\u65b9\u6cd5\u4f20\u5165\u5c0f\u4e8e\u6216\u7b49\u4e8e 0 \u7684\u9875\u7801 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3XNAN"},"#I3XNAN")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"JSON")," \u5e8f\u5217\u5316\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"DateTimeOffset")," \u5f02\u5e38 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3XMOL"},"#I3XMOL")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u7ee7\u627f ",(0,r.kt)("inlineCode",{parentName:"li"},"Serilog")," \u65e5\u5fd7\u5728 ",(0,r.kt)("inlineCode",{parentName:"li"},"Worker Service")," \u751f\u6210\u91cd\u590d\u65e5\u5fd7 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3WA0L"},"#I3WA0L")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/pulls/331"},"!331")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"\u7c98\u571f\u5bf9\u8c61")," \u52a8\u6001\u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"li"},"Clay")," \u7c7b\u578b bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3W9LW"},"#I3W9LW")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"ValidationTypes.Numeric")," \u6821\u9a8c\u6570\u503c\u7c7b\u578b\u6b63\u5219\u8868\u8fbe\u5f0f\u9519\u8bef ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3WADS"},"#I3WADS")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u6570\u636e\u5e93\u547d\u4ee4\u53c2\u6570 ",(0,r.kt)("inlineCode",{parentName:"li"},"DbParameter")," \u7684 ",(0,r.kt)("inlineCode",{parentName:"li"},"Value")," \u662f ",(0,r.kt)("inlineCode",{parentName:"li"},"object")," \u7c7b\u578b\u7684\u65f6\u5019\u4e14\u4e0d\u6307\u5b9a ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3YKM6"},"#I3YKM6")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Oracle")," \u6570\u636e\u5e93\u5b58\u50a8\u8fc7\u7a0b ",(0,r.kt)("inlineCode",{parentName:"li"},"\u6e38\u6807\u53c2\u6570")," \u62a5\u9519\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3ZBYE"},"#I3ZBYE")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Worker Services")," \u91c7\u7528\u72ec\u7acb\u53d1\u5e03\u540e\u65e0\u6cd5\u6267\u884c\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3ZH3X"},"#I3ZH3X")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u4fee\u590d\u8fdc\u7a0b\u8bf7\u6c42\u5982\u679c\u65e0\u8fd4\u56de\u503c\u5e8f\u5217\u5316\u5f02\u5e38\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/pulls/348"},"!348")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u5176\u4ed6\u66f4\u6539")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u589e\u5f3a]"," \u652f\u6301 ",(0,r.kt)("inlineCode",{parentName:"li"},"appsettings.json")," \u7b49\u81ea\u5b9a\u4e49\u914d\u7f6e\u6587\u4ef6\u4e2d\u6587\u547d\u540d ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3YBFD"},"#I3YBFD")),(0,r.kt)("li",{parentName:"ul"},"[\u6539\u8fdb]"," \u8fdc\u7a0b\u8bf7\u6c42\u914d\u7f6e\u547d\u540d\u5ba2\u6237\u7aef ",(0,r.kt)("inlineCode",{parentName:"li"},"BaseAddress")," \u5730\u5740\u517c\u5bb9\u5904\u7406 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3YCRH"},"#I3YCRH")),(0,r.kt)("li",{parentName:"ul"},"[\u79fb\u9664]"," \u6846\u67b6\u65e0\u7528\u4ee3\u7801\u3001\u4f18\u5316\u4ee3\u7801"),(0,r.kt)("li",{parentName:"ul"},"[\u4f18\u5316]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Furion")," \u5728 ",(0,r.kt)("inlineCode",{parentName:"li"},"\u975e Web")," \u73af\u5883\u4e0b\u6027\u80fd"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u6587\u6863\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u4f1a\u8bdd\u548c\u72b6\u6001\u7ba1\u7406 \u6587\u6863 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3YI3G"},"#I3YI3G")),(0,r.kt)("li",{parentName:"ul"},"[\u66f4\u65b0]"," \u8fdc\u7a0b\u8bf7\u6c42\u3001\u65e5\u5fd7\u3001\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u3001\u8fdc\u7a0b\u8bf7\u6c42\u3001",(0,r.kt)("inlineCode",{parentName:"li"},"Sql")," \u9ad8\u7ea7\u4ee3\u7406\u6587\u6863"),(0,r.kt)("li",{parentName:"ul"},"[\u66f4\u65b0]"," \u914d\u7f6e\u6587\u4ef6 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3Y2EV"},"#I3Y2EV")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u7b54\u7b54\u7591")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"dapper")," \u591a\u4e2a\u6570\u636e\u6e90\u5982\u4f55\u7ee7\u627f ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3WUOI"},"#I3WUOI")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u5173\u4e8e ",(0,r.kt)("inlineCode",{parentName:"li"},"SpareTime")," \u591a\u6b21\u6267\u884c\u95ee\u9898",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3XEQU"},"#I3XEQU")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u9009\u9879\u66f4\u6539\u901a\u77e5\uff08\u70ed\u66f4\u65b0\uff09\uff1a\u6570\u636e\u5e93\u91cc\u7684\u6570\u636e\u66f4\u6539\u4e86\u5982\u4f55\u901a\u77e5\u9009\u9879\u8fdb\u884c\u6539\u53d8\uff1f ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3XYI8"},"#I3XYI8")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"SaaS")," \u591a\u79df\u6237\u6dfb\u52a0\u65f6\u65e0\u6cd5\u83b7\u53d6\u79df\u6237",(0,r.kt)("inlineCode",{parentName:"li"},"Id")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3Y5CF"},"#I3Y5CF")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u83b7\u53d6 ",(0,r.kt)("inlineCode",{parentName:"li"},"_httpContextAccessor.HttpContext")," \u4e3a\u7a7a",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3Y6BI"},"#I3Y6BI")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Ubuntu")," \u4e2d\u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"li"},"App.Configuration")," \u65b9\u6cd5\u8bfb\u53d6\u4e0d\u5230\u503c ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3Y74H"},"#I3Y74H")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u4f5c\u7528\u57df\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3YHXP"},"#I3YHXP")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"li"},"UnitofWork")," \u63d0\u4ea4\u4e8b\u52a1\uff0c\u53ef\u4ee5\u63d0\u4ea4\u6210\u529f\uff0c\u4f46\u662f\u7cfb\u7edf\u4f1a\u6709\u9519\u8bef ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3YIWU"},"#I3YIWU")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u6570\u636e\u5e93\u8bfb\u5199\u5206\u79bb--\u975e\u9ed8\u8ba4\u4e3b\u5e93\u7684\u4ece\u5e93\u968f\u673a\u8be5\u5982\u4f55\u914d\u7f6e\uff1f ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3YVR7"},"#I3YVR7")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u4e0d\u505a\u5b9e\u73b0")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"SpareTIme")," \u65b0\u589e ",(0,r.kt)("inlineCode",{parentName:"li"},"Dashboard")," \u63a7\u5236\u53f0\u770b\u677f\uff0c\u540c\u65f6\u53ef\u4ee5\u5bf9\u4efb\u52a1\u8fdb\u884c\u6682\u505c\u3001\u5220\u9664\u3001\u67e5\u770b",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3XELY"},"#I3XELY"))))),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"v290-\uff08\u5f53\u524d\u7248\u672c\uff09"},"v2.9.0 \uff08\u5f53\u524d\u7248\u672c\uff09"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u65b0\u7279\u6027")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("strong",{parentName:"li"},"\u5e94\u7528\u5168\u5c40\u672a\u6258\u7ba1\u8d44\u6e90\u76d1\u542c\uff0c\u5e76\u5b9e\u73b0\u7279\u5b9a\u65f6\u673a\u91ca\u653e\u975e\u6258\u7ba1\u8d44\u6e90")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3VXAU"},"#I3VXAU")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u4e0d\u5305\u542b ",(0,r.kt)("inlineCode",{parentName:"li"},"EntityFramework.Core")," \u7248\u672c\u7684 ",(0,r.kt)("inlineCode",{parentName:"li"},"Furion.Pure")," \u5305",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3VGW8"},"#I3VGW8")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," swagger \u652f\u6301\u8bbe\u7f6e\u591a\u8bed\u8a00\u65b9\u5f0f\uff0c\u8bbe\u7f6e\u7684\u8bed\u8a00\u81ea\u52a8\u6dfb\u52a0\u5230 api \u5730\u5740\u540e\u9762 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3VDTD"},"#I3VDTD")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u52a8\u6001 WebAPI \u652f\u6301 ",(0,r.kt)("inlineCode",{parentName:"li"},"[FromRoute]")," \u975e\u5fc5\u586b\uff08\u9009\u586b\uff09\u53c2\u6570\u8bbe\u7f6e ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3VFIM"},"#I3VFIM")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u52a8\u6001 WebAPI \u53c2\u6570\u652f\u6301\u914d\u7f6e\u8def\u7531\u7ea6\u675f ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3VFIR"},"#I3VFIR")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"MD5")," \u548c ",(0,r.kt)("inlineCode",{parentName:"li"},"DESC")," \u52a0\u5bc6\u652f\u6301 ",(0,r.kt)("inlineCode",{parentName:"li"},"\u5927\u5199")," \u8f93\u51fa ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/pulls/326"},"#326")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u7a81\u7834\u6027\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Furion")," \u6240\u6709\u5305\u751f\u6210 ",(0,r.kt)("inlineCode",{parentName:"li"},".snupkg")," \u5305\uff0c\u652f\u6301\u5f00\u53d1\u9636\u6bb5\u76f4\u63a5\u8c03\u8bd5 ",(0,r.kt)("inlineCode",{parentName:"li"},"Furion")," \u6240\u6709\u5305\u6e90\u7801 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3VFIX"},"#I3VFIX")),(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"repository.BuildChange()")," \u65b9\u6cd5\u7684\u8fd4\u56de\u503c\uff0c\u591a\u8fd4\u56de\u4e00\u4e2a ",(0,r.kt)("inlineCode",{parentName:"li"},"IServiceScope")," \u5bf9\u8c61 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3VX3D"},"#I3VX3D")),(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"JWT")," \u5237\u65b0 ",(0,r.kt)("inlineCode",{parentName:"li"},"Token")," \u65b9\u6cd5 ",(0,r.kt)("inlineCode",{parentName:"li"},"AutoRefreshToken")," \u53c2\u6570 ",(0,r.kt)("inlineCode",{parentName:"li"},"days")," \u6539\u4e3a ",(0,r.kt)("inlineCode",{parentName:"li"},"minutes")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3VXNB"},"#I3VXNB")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u9898\u4fee\u590d")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"App.GetOptionsSnapshot<>")," \u4ece\u6839\u670d\u52a1\u89e3\u6790\u5f02\u5e38 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3VS2X"},"#I3VS2X")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u4fee\u590d\u8fdc\u7a0b\u8bf7\u6c42\u5982\u679c\u51fa\u73b0\u5f02\u5e38\uff0c\u8fd4\u56de ",(0,r.kt)("inlineCode",{parentName:"li"},"Stream")," \u4e3a null \u5bfc\u81f4\u5f02\u5e38\u7684\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3VSTU"},"#I3VSTU")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u5982\u679c\u5b9e\u4f53\u88ab\u8ddf\u8e2a\u540e\uff0c\u65e0\u6cd5\u6267\u884c\u5220\u9664\u64cd\u4f5c ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3W08P"},"#I3W08P")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u5176\u4ed6\u66f4\u6539")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4f18\u5316]"," \u8fd0\u884c\u65f6\u5185\u5b58\uff0c\u5b9e\u73b0\u8bf7\u6c42\u7ed3\u675f\u81ea\u52a8\u91ca\u653e\u672a\u6258\u7ba1\u8d44\u6e90 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3VXAU"},"#I3VXAU")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u6587\u6863\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u66f4\u65b0]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"App")," \u9759\u6001\u7c7b\u6587\u6863\u3001\u8fdc\u7a0b\u8bf7\u6c42\u6587\u6863\u3001\u5206\u8868\u5206\u5e93\u6587\u6863"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u7b54\u7b54\u7591")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u52a8\u6001 WebAPI\uff0c\u81ea\u5b9a\u4e49\u6839\u636e\u65b9\u6cd5\u540d\u751f\u6210 ","[HttpMethod]"," \u89c4\u5219\u62a5\u9519 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3VKQG"},"#I3VKQG")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"InsertAsync")," \u7684\u65f6\u5019\u63d0\u793a ",(0,r.kt)("inlineCode",{parentName:"li"},"ID")," \u4e3a\u7a7a ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3VS7E"},"#I3VS7E")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"FirstOrDefault")," \u81ea\u52a8\u8fc7\u6ee4\u4e86 ",(0,r.kt)("inlineCode",{parentName:"li"},"TanantId")," \u5b57\u6bb5 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3W0VH"},"#I3W0VH")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u5bf9\u65b9\u63a5\u53e3\u8fd4\u56de ",(0,r.kt)("inlineCode",{parentName:"li"},"HttpConnectionResponseContent")," \u8fdc\u7a0b\u8bf7\u6c42\u62ff\u4e0d\u5230\u8fd4\u56de\u503c ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3W17C"},"#I3W17C")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u67e5\u8be2\u65b9\u6cd5 ",(0,r.kt)("inlineCode",{parentName:"li"},"FindOrDefault")," \u62a5\u9519 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3W830"},"#I3W830")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"SqlNonQuery")," \u5728 ",(0,r.kt)("inlineCode",{parentName:"li"},"UnitOfWork")," \u5faa\u73af\u6267\u884c",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3W8WW"},"#I3W8WW")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u56e0 ",(0,r.kt)("inlineCode",{parentName:"li"},"Swagger")," \u914d\u7f6e\u95ee\u9898\uff0c\u5bfc\u81f4 ",(0,r.kt)("inlineCode",{parentName:"li"},"Swagger")," \u4e2d\u4e0d\u80fd\u81ea\u52a8\u643a\u5e26 token \u6388\u6743\u7684\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3W934"},"#I3W934")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u8fdc\u7a0b\u8bf7\u6c42 ",(0,r.kt)("inlineCode",{parentName:"li"},"SetBody")," \u53c2\u6570\u8bc6\u522b\u4e0d\u4e86",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3WBM1"},"#I3WBM1")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Scoped.Create")," \u91cc\u6267\u884c ",(0,r.kt)("inlineCode",{parentName:"li"},"sql.SqlNonQuery()")," \u6216\u8005 ",(0,r.kt)("inlineCode",{parentName:"li"},"obj.insert()")," \u95ee\u9898",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3WB5O"},"#I3WB5O")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u8c03\u7528\u51fd\u6570\u6216\u5b58\u50a8\u8fc7\u7a0b\uff0c\u600e\u4e48\u51fa\u53c2\u6570\u636e\u81ea\u5b9a\u4e49\u5bf9\u8c61\uff1f\u5982 ",(0,r.kt)("inlineCode",{parentName:"li"},"Oracle"),"\u6570\u636e\u5e93\u7684\u6570\u7ec4\u6216\u8bb0\u5f55 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3W71W"},"#I3W71W")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u4e0d\u505a\u5b9e\u73b0")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65e0\u6548]"," \u6570\u636e\u5e93\u5c0f\u5199\u4e0b\u5212\u7ebf\u5b57\u6bb5\uff0c\u65e0\u6cd5\u81ea\u52a8\u6620\u5c04\u6210\u5c0f\u9a7c\u5cf0 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3W021"},"#I3W021")),(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"EfCore 5")," \u76f4\u63a5\u591a\u5bf9\u591a\u65f6\u8fdb\u884c ",(0,r.kt)("inlineCode",{parentName:"li"},"SeedData")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3WDRJ"},"#I3WDRJ"))))),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"v270280-\uff08\u5df2\u53d1\u5e03\uff09"},"v2.7.0/2.8.0 \uff08\u5df2\u53d1\u5e03\uff09"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u65b0\u7279\u6027")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},'throw Oops.On("\u5f02\u5e38\u6d88\u606f")')," \u5e94\u7528\u591a\u8bed\u8a00\u652f\u6301 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3UYC2"},"#I3UYC2")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Db.GetMSRepository()")," \u83b7\u53d6\u4e3b\u4ece\u5e93\u4ed3\u50a8\u9759\u6001\u65b9\u6cd5 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3UBSJ"},"#I3UBSJ")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u5de5\u4f5c\u5355\u5143\u7279\u6027\uff0c\u652f\u6301\u9759\u6001\u7c7b\u5f3a\u5236\u6027\u5f00\u542f\u5171\u4eab\u4e8b\u52a1 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3S9N8"},"#I3S9N8")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"EFCore")," \u6267\u884c ",(0,r.kt)("inlineCode",{parentName:"li"},"sql")," \u6a21\u5f0f\u6253\u5370\u65e5\u5fd7 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3SE8X"},"#I3SE8X")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u8fdc\u7a0b\u8bf7\u6c42\u652f\u6301\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"HttpClient")," \u914d\u7f6e ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3SI17"},"#I3SI17")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u65b0\u589e ",(0,r.kt)("inlineCode",{parentName:"li"},"\u77ed ID")," \u751f\u6210\u529f\u80fd ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3T7JP"},"#I3T7JP")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"[SensitiveDetection]")," \u652f\u6301\u914d\u7f6e\u66ff\u6362\u654f\u611f\u8bcd\u6c47 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3THIA"},"#I3THIA")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"SpecificationDocumentBuilder.DocumentGroups")," \u548c ",(0,r.kt)("inlineCode",{parentName:"li"},"SpecificationDocumentBuilder.CheckApiDescriptionInCurrentGroup(currentGroup, apiDescription)")," \u516c\u5f00\u65b9\u6cd5",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3UDSY"},"#I3UDSY")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u7a81\u7834\u6027\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u91cd\u6784]"," \u81ea\u52a8\u626b\u63cf ",(0,r.kt)("inlineCode",{parentName:"li"},".json")," \u548c ",(0,r.kt)("inlineCode",{parentName:"li"},".xml")," \u6587\u4ef6\u5e76\u52a0\u8f7d\u5230\u914d\u7f6e\u4e2d\u7684\u4ee3\u7801\u548c\u89c4\u5219\uff0c\u540c\u65f6\u79fb\u9664\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},".xml")," \u6587\u4ef6\u52a0\u8f7d\uff0c\u53ea\u4fdd\u7559 ",(0,r.kt)("inlineCode",{parentName:"li"},".json")," \u6587\u4ef6 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3UJ3L"},"#I3UJ3L")),(0,r.kt)("li",{parentName:"ul"},"[\u91cd\u6784]"," \u5206\u5e03\u5f0f\u8fde\u7eed ",(0,r.kt)("inlineCode",{parentName:"li"},"GUID")," \u4ee3\u7801 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3UBK0"},"#I3UBK0")),(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," ",(0,r.kt)("strong",{parentName:"li"},(0,r.kt)("inlineCode",{parentName:"strong"},"Scoped.CreateUnitOfWork")," \u540d\u79f0\u4e3a ",(0,r.kt)("inlineCode",{parentName:"strong"},"Scoped.CreateUow")," ",(0,r.kt)("a",{parentName:"strong",href:"https://gitee.com/dotnetchina/Furion/issues/I3SJPU"},"#I3SJPU"))),(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"JWTEncryption.Validate")," \u8fd4\u56de\u503c\uff0c\u652f\u6301\u8fd4\u56de ",(0,r.kt)("inlineCode",{parentName:"li"},"TokenValidationResult")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3S2ND"},"#I3S2ND")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u9898\u4fee\u590d")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"[DataValidation]")," \u548c ",(0,r.kt)("inlineCode",{parentName:"li"},"[SensitiveDetection]")," \u591a\u8bed\u8a00\u5e94\u7528\u5931\u6548 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3UH6U"},"#I3UH6U")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Scoped")," \u7cfb\u5217\u65b9\u6cd5\u5f02\u6b65\u51fa\u73b0 ",(0,r.kt)("inlineCode",{parentName:"li"},"Task is cancel")," \u60c5\u51b5 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3SJF6"},"#I3SJF6")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Mysql")," \u6570\u636e\u5e93\u7684 ",(0,r.kt)("inlineCode",{parentName:"li"},"ToPagedList")," \u65b9\u6cd5\u8fd4\u56de\u7684\u7ed3\u679c\u8fdb\u884c\u904d\u5386\u51fa\u73b0 ",(0,r.kt)("inlineCode",{parentName:"li"},"MySqlConnection is aleady use")," \u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3SJQ3"},"#I3SJQ3")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"tool/cli.psl")," \u6ca1\u6709\u5305\u542b\u9879\u76ee\u540d\u79f0 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3S1T6"},"#I3S1T6")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u8fdc\u7a0b\u8bf7\u6c42\u505a\u4e0a\u4f20\u6587\u4ef6\u65f6\uff0c\u6ca1\u6709\u4f20\u5165 ",(0,r.kt)("inlineCode",{parentName:"li"},"Body"),"\uff0c\u7a0b\u5e8f\u76f4\u63a5\u8df3\u8fc7 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3TKFH"},"#I3TKFH")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u8fdc\u7a0b\u8bf7\u6c42 ",(0,r.kt)("inlineCode",{parentName:"li"},"multipart/form-data")," \u5185\u5bb9\u5206\u5272\u7b26\u7f3a\u5931 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3TNO9"},"#I3TNO9")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u8fdc\u7a0b\u8bf7\u6c42\u4ee3\u7406\u62e6\u622a\u65b9\u5f0f\u8fd4\u56de ",(0,r.kt)("inlineCode",{parentName:"li"},"HttpResponseMessage")," \u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3V161"},"#I3V161")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"repository.Database.SetCommandTimeout(600)")," \u65e0\u6cd5\u751f\u6548",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3VAQS"},"#I3VAQS")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u5176\u4ed6\u66f4\u6539")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u6539\u8fdb]"," \u652f\u6301\u89c4\u8303\u5316\u7ed3\u679c\u4e2d\u95f4\u4ef6\u5224\u65ad\u662f\u5426\u8df3\u8fc7\u89c4\u8303\u5316\u7ed3\u679c ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3T2AA"},"#I3T2AA")),(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," \u66f4\u65b0\u90e8\u5206\u5217 ",(0,r.kt)("inlineCode",{parentName:"li"},"UpdateIncludeNowAsync")," \u5177\u6709\u4e8c\u4e49\u6027 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3RW9Q"},"#I3RW9Q")),(0,r.kt)("li",{parentName:"ul"},"[\u4f18\u5316]"," ",(0,r.kt)("strong",{parentName:"li"},"\u6846\u67b6\u5e95\u5c42\u6027\u80fd\uff0c\u5927\u5927\u51cf\u5c11\u5185\u5b58\u5360\u7528\u548c\u6ea2\u51fa\u60c5\u51b5\uff0c\u542f\u52a8\u5185\u5b58\u4ece\u4e4b\u524d ",(0,r.kt)("inlineCode",{parentName:"strong"},"136M")," \u4e0b\u5c06\u5230 ",(0,r.kt)("inlineCode",{parentName:"strong"},"86M"))),(0,r.kt)("li",{parentName:"ul"},"[\u5176\u4ed6]"," \u5220\u9664\u65e0\u7528\u4ee3\u7801\uff0c\u4f18\u5316\u4e0d\u89c4\u8303\u547d\u540d\u7b49"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u6587\u6863\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Inject")," \u8bf4\u660e\u6587\u6863 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3TITA"},"#I3TITA")),(0,r.kt)("li",{parentName:"ul"},"[\u66f4\u65b0]"," 4.2.9 \u7684\u793a\u4f8b\u4ee3\u7801\u6587\u6863\uff0c\u65b9\u6cd5\u6ca1\u6709\u653e\u5728 class \u4e2d ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3S9T5"},"#I3S9T5")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u6b63]"," \u89c4\u8303\u5316\u7ed3\u679c 6.5.6 \u591a\u5206\u7ec4\u6392\u5e8f\u56fe\u7247\u5f15\u7528\u9519\u8bef ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3UBOQ"},"#I3UBOQ")),(0,r.kt)("li",{parentName:"ul"},"[\u66f4\u65b0]"," \u9759\u6001\u7c7b ",(0,r.kt)("inlineCode",{parentName:"li"},"Scoped")," \u6587\u6863"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u7b54\u7b54\u7591")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"MasterDbContextLocator")," \u4e0d\u968f\u81ea\u5b9a\u4e49\u7684\u53c2\u6570\u751f\u6210 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3SDBB"},"#I3SDBB")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u4e8b\u4ef6\u603b\u7ebf\u4e2d\u8ba2\u9605\u5904\u7406\u7a0b\u5e8f\u7c7b\u83b7\u53d6\u4e0d\u5230\u7528\u6237\u4fe1\u606f\uff0c\u8fd9\u4e2a\u6b63\u5e38\u5417 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3SS0U"},"#I3SS0U")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u5728\u6709\u591a\u79df\u6237\u8fc7\u6ee4\u5668\u7684\u60c5\u51b5\u4e0b\uff0c\u662f\u5426\u6709\u4e00\u79cd\u65b9\u5f0f\u67e5\u8be2\u5168\u91cf\u7684\u6570\u636e ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3T0VI"},"#I3T0VI")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," mysql \u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"li"},'&"tools/cli.ps1"')," \u9875\u9762\u5316\u52a0\u8f7d\u8868\u7ed3\u6784\u5931\u8d25 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3T4F8"},"#I3T4F8")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u5176\u4ed6 Web \u5c42\u7684 Startup \u4f18\u5148\u6267\u884c ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3T8IP"},"#I3T8IP")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u8f85\u52a9\u89d2\u8272\u670d\u52a1\u5b9e\u73b0\u5efa\u8bae ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3T906"},"#I3T906")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u5f00\u542f ",(0,r.kt)("inlineCode",{parentName:"li"},"easy connection")," \u540e\u540c\u4e00\u5185\u7f51\u5730\u5740\u6d4f\u89c8\u5668\u53ef\u4ee5\u6b63\u5e38\u8bbf\u95ee\uff0c\u8fdc\u7a0b\u8bf7\u6c42\u5219\u65e0\u6cd5\u8bbf\u95ee",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3TA2U"},"#I3TA2U")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"scope.ServiceProvider.GetService"),"\u4e0d\u5b58\u5728 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3TQMV"},"#I3TQMV")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u80fd\u5426\u5728 WPF \u9879\u76ee\u4e2d\u4f7f\u7528\u5462\uff1f ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3TMCC"},"#I3TMCC")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Dapper")," \u591a\u4e2a\u6570\u636e\u6e90 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3TM9B"},"#I3TM9B")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"L.GetSelectCulture()")," \u65b9\u6cd5\u5f02\u5e38 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3TQS4"},"#I3TQS4")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u5faa\u73af\u4e2d\u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"li"},"IDGen.NextID()")," \u5f97\u5230\u7684\u7ed3\u679c\u5e76\u4e0d\u662f\u8fde\u7eed\u7684 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3UAF6"},"#I3UAF6")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u6a21\u5757\u5316\u52a8\u6001\u52a0\u8f7d\u63d2\u4ef6\u652f\u6301\u901a\u914d\u7b26\u5339\u914d.dll ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3UDT8"},"#I3UDT8")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"MVC")," \u6a21\u5f0f\uff0c\u5728 ",(0,r.kt)("inlineCode",{parentName:"li"},"Controller")," \u91cc\u5feb\u6377\u65b9\u5f0f\u521b\u5efa ",(0,r.kt)("inlineCode",{parentName:"li"},"View")," \u9875\u9762\u51fa\u9519 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3UFGB"},"#I3UFGB")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u6570\u636e\u5e93\u8fc1\u79fb\u6ca1\u6709\u79cd\u5b50\u6570\u636e ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3UI7G"},"#I3UI7G")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"SpareTimeAttribute")," \u4e2d \u6839\u636e Cron \u8868\u8fbe\u5f0f \u81ea\u52a8\u5339\u914d Cron \u8868\u8fbe\u5f0f\u683c\u5f0f\u5316\u65b9\u5f0f ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3UTKQ"},"#I3UTKQ")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"li"},"workService")," \u96c6\u6210 ",(0,r.kt)("inlineCode",{parentName:"li"},"SqlSugar")," \u62a5\u9519 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3V8HJ"},"#I3V8HJ")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"sqlserver 2008")," \u5206\u9875\u62a5\u9519\u5982\u4f55\u89e3\u51b3\u5462 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3VF96"},"#I3VF96")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u4e0d\u505a\u5b9e\u73b0")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," \u6dfb\u52a0\u4ee4\u724c\u6876\u9650\u6d41\u7b97\u6cd5 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3SCDV"},"#I3SCDV")),(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," \u5b9a\u65f6\u4efb\u52a1\u7acb\u5373\u6267\u884c\u9700\u6c42 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3SF4A"},"#I3SF4A")),(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," \u6587\u6863\u5efa\u8bae \u5173\u4e8e reids \u548c es \u3001\u6d88\u606f\u961f\u5217\u7684 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3T90I"},"#I3T90I")),(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," IP \u9ad8\u9891\u7387\u8bf7\u6c42\u9650\u5236 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3UHE1"},"#I3UHE1")),(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Url")," \u8f6c\u53d1\u5927\u6a21\u5757 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3TZHO"},"#I3TZHO"))))),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"v250260-\uff08\u5df2\u53d1\u5e03\uff09"},"v2.5.0/2.6.0 \uff08\u5df2\u53d1\u5e03\uff09"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u65b0\u7279\u6027")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u865a\u62df\u6587\u4ef6\u670d\u52a1\uff0c\u652f\u6301\u7269\u7406\u6587\u4ef6\u548c\u5d4c\u5165\u8d44\u6e90\u6587\u4ef6 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3RBR9"},"#I3RBR9")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u8bfb\u5199\u5206\u79bb/\u4e3b\u4ece\u590d\u5236\u4ed3\u50a8 ",(0,r.kt)("inlineCode",{parentName:"li"},"IMSRepository")," \u548c ",(0,r.kt)("inlineCode",{parentName:"li"},"IMSRepository")," \u4ed3\u50a8\uff0c\u53ef\u8fdb\u884c\u968f\u673a\u6216\u81ea\u5b9a\u4e49\u83b7\u53d6\u4ece\u5e93"),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u6570\u636e\u8131\u654f\u5904\u7406 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3R5ZF"},"#I3R5ZF")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u7a81\u7834\u6027\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u79fb\u9664]"," ",(0,r.kt)("strong",{parentName:"li"},(0,r.kt)("inlineCode",{parentName:"strong"},"InsertOrUpdate")," \u4e00\u7cfb\u5217\u6570\u636e\u5e93\u64cd\u4f5c\u65b9\u6cd5")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3RI9L"},"#I3RI9L")),(0,r.kt)("li",{parentName:"ul"},"[\u79fb\u9664]"," \u6240\u6709\u5305\u542b ",(0,r.kt)("inlineCode",{parentName:"li"},"Exists")," \u5355\u8bcd\u7684\u6570\u636e\u5e93\u64cd\u4f5c\u65b9\u6cd5 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3RJ0T"},"#I3RJ0T")),(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," \u5206\u5e03\u5f0f GUID ",(0,r.kt)("inlineCode",{parentName:"li"},"IDGenerater")," \u9759\u6001\u7c7b\u540d\u79f0\u4e3a ",(0,r.kt)("inlineCode",{parentName:"li"},"IDGen")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3RGUA"},"#I3RGUA")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u9898\u4fee\u590d")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u8fdc\u7a0b\u8c03\u7528\u65b9\u6cd5\u9519\u8bef\uff0c\u8bf7\u6c42\u62a5\u6587\u5934 ",(0,r.kt)("inlineCode",{parentName:"li"},"Headers")," \u4e0d\u80fd\u6dfb\u52a0\u5230 ",(0,r.kt)("inlineCode",{parentName:"li"},"IHttpDispatchProxy")," \u7684\u5b50\u63a5\u53e3\u4e0a ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3RAF7"},"#I3RAF7")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u5176\u4ed6\u66f4\u6539")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4f18\u5316]"," \u5e94\u7528\u542f\u52a8\u6027\u80fd\uff0c\u51cf\u5c11\u5185\u5b58\u5206\u914d"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u6587\u6863\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u8131\u654f\u5904\u7406\u6587\u6863 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3R6WZ"},"#I3R6WZ")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u6587\u4ef6\u7cfb\u7edf\u6587\u6863\u3001",(0,r.kt)("inlineCode",{parentName:"li"},"FS")," \u9759\u6001\u7c7b\u6587\u6863 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3RCC4"},"#I3RCC4")),(0,r.kt)("li",{parentName:"ul"},"[\u66f4\u65b0]"," \u8bfb\u5199\u5206\u79bb/\u4e3b\u4ece\u590d\u5236\u3001\u6570\u636e\u5e93\u4ed3\u50a8\u6587\u6863\u3001",(0,r.kt)("inlineCode",{parentName:"li"},"Db")," \u9759\u6001\u7c7b ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3R3B6"},"#I3R3B6")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u7b54\u7b54\u7591")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u5173\u4e8e ",(0,r.kt)("inlineCode",{parentName:"li"},"Furion")," \u96c6\u7fa4\u90e8\u7f72 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3R3J4"},"#I3R3J4")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u5347\u7ea7\u6700\u65b0\u6846\u67b6\u4ee5\u540e\uff0c \u6570\u636e\u5e93\u751f\u6210\u6a21\u578b\u62a5\u9519 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3R7TP"},"#I3R7TP")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u4e8b\u52a1\u6267\u884c\u4e2d\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"SaveNow")," \u6267\u884c\u540e\u6709\u8b66\u544a ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3RAJI"},"#I3RAJI")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Hangfire")," \u4f7f\u7528\u4e8b\u52a1\u51fa\u73b0\u9519\u8bef ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3ROQ5"},"#I3ROQ5")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u5982\u4f55\u5b9e\u73b0 cli \u4e0d\u6267\u884c\u67d0\u4e9b\u8868\u7684\u8fc1\u79fb\uff0cweb \u8bf7\u6c42\u53ef\u4ee5\u6b63\u5e38\u64cd\u4f5c\u5462\uff1f ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3ROU5"},"#I3ROU5")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u5728\u4f7f\u7528\u5b9a\u65f6\u4efb\u52a1\u65f6\u5019\u51fa\u73b0\u7684\u95ee\u9898\uff1a\u7ee7\u627f ",(0,r.kt)("inlineCode",{parentName:"li"},"ISpareTimeWorker")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3RRZS"},"#I3RRZS")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"MySql")," \u65f6\u95f4\u5dee 8 \u5c0f\u65f6\u5904\u7406 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3RSCO"},"#I3RSCO")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Db.GetRepository<>")," \u65b9\u6cd5\u7ed3\u5408 ",(0,r.kt)("inlineCode",{parentName:"li"},"[UnitOfWork]")," \u540e\u4e0d\u53ef\u7528 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3RUK5"},"#I3RUK5")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u4e8b\u52a1\u5f00\u542f\u5931\u8d25\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3RYJY"},"#I3RYJY")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u652f\u6301 ",(0,r.kt)("inlineCode",{parentName:"li"},"DbProvider")," \u53ef\u52a8\u6001\u914d\u7f6e ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3RYPE"},"#I3RYPE")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"WorkService")," \u4f9d\u8d56\u6ce8\u5165 ",(0,r.kt)("inlineCode",{parentName:"li"},"ISingleton")," \u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3RZ1L"},"#I3RZ1L")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"ISpareTimeWorker")," \u8fd0\u884c\u671f\u52a8\u6001\u4fee\u6539 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3S33Q"},"#I3S33Q")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u4e0d\u505a\u5b9e\u73b0")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u62d2\u7edd]"," \u6709\u5e8f ",(0,r.kt)("inlineCode",{parentName:"li"},"Guid")," \u7cbe\u5ea6\u662f\u56fa\u5b9a\u7684\u6beb\u79d2\u7ea7\uff1a1 \u6beb\u79d2\u5185\u751f\u6210\u7684\u591a\u4e2a ",(0,r.kt)("inlineCode",{parentName:"li"},"Guid")," \u662f\u65e0\u5e8f\u7684 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3R59J"},"#I3R59J")),(0,r.kt)("li",{parentName:"ul"},"[\u62d2\u7edd]"," \u5efa\u8bae:JWTEncryption.Validate \u65b9\u6cd5\u8fd4\u56de JWT \u7684\u68c0\u67e5\u5931\u8d25\u65f6\u7684\u539f\u56e0 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3S1F2"},"#I3S1F2"))))),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"v240-\uff08\u5df2\u53d1\u5e03\uff09"},"v2.4.0 \uff08\u5df2\u53d1\u5e03\uff09"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u65b0\u7279\u6027")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u652f\u6301\u81ea\u52a8\u52a0\u8f7d\u6a21\u5757\u5316/\u63d2\u4ef6 ",(0,r.kt)("inlineCode",{parentName:"li"},".xml")," \u6ce8\u91ca\u6587\u4ef6 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3Q7XY"},"#I3Q7XY")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"AppDbContext.FailedAutoRollback")," \u5c5e\u6027\uff0c\u53ef\u914d\u7f6e\u4e8b\u52a1\u662f\u5426\u81ea\u52a8\u56de\u6eda ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3QOUS"},"#I3QOUS")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u7a81\u7834\u6027\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u5347\u7ea7]"," ",(0,r.kt)("strong",{parentName:"li"},".NET 5 SDK \u4e3a 5.0.6 \u7248\u672c")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"IJsonSerializerProvider.GetSerializerOptions()")," \u63a5\u53e3\u65b9\u6cd5 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3QIJN"},"#I3QIJN")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u9898\u4fee\u590d")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u901a\u8fc7 ",(0,r.kt)("inlineCode",{parentName:"li"},"services.AddInject()")," \u65b9\u5f0f\u6ce8\u518c\uff0c\u6a21\u5757\u5316/\u63d2\u4ef6\u4e0d\u52a0\u8f7d ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3Q7XH"},"#I3Q7XH")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u79cd\u5b50\u6570\u636e\u8fd4\u56de ",(0,r.kt)("inlineCode",{parentName:"li"},"null")," \u62a5\u7a7a\u5f02\u5e38 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3QCM5"},"#I3QCM5")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u901a\u8fc7 ",(0,r.kt)("inlineCode",{parentName:"li"},"Clay.Object")," \u521b\u5efa\u7c98\u571f\u5bf9\u8c61\u540e\u5c5e\u6027\u53d8\u5c0f\u5199\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3QRV3"},"#I3QRV3")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u5176\u4ed6\u66f4\u6539")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4f18\u5316]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Furion")," \u6846\u67b6\u5e95\u5c42\u6027\u80fd\uff0c\u51cf\u5c11\u5185\u5b58\u5360\u7528\uff0c\u63d0\u9ad8\u5e94\u7528\u521d\u59cb\u5316\u901f\u5ea6 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/commit/92f8cc1"},"92f8cc1")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u6587\u6863\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u66f4\u65b0]"," JSON \u5e8f\u5217\u5316\u6587\u6863\u3001\u89c4\u8303\u5316\u7ed3\u679c\u6587\u6863\u3001\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u6587\u6863"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u7b54\u7b54\u7591")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"InsertOrUpdateNowAsync")," \u62a5\u9519 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3QKO5"},"#I3QKO5")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u4e0d\u505a\u5b9e\u73b0")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," \u5b9a\u65f6\u4efb\u52a1\u81ea\u5b9a\u4e49 ",(0,r.kt)("inlineCode",{parentName:"li"},"Failed")," \u4e8b\u4ef6 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3QCM2"},"#I3QCM2")),(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," \u6a21\u5757\u5316\u52a8\u6001\u751f\u6210\u6570\u636e\u5e93\u8868 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3QH3G"},"#I3QH3G")),(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," \u5efa\u8bae\u4e8b\u4ef6\u603b\u7ebf\u65b0\u589e MQ \u652f\u6301 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3QWZ4"},"#I3QWZ4")),(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," \u91cd\u6784\u89c4\u8303\u5316\u6574\u4e2a\u6a21\u5757\u4ee3\u7801 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3NFT7"},"#I3NFT7"))))),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"v230-\uff08\u5df2\u53d1\u5e03\uff09"},"v2.3.0 \uff08\u5df2\u53d1\u5e03\uff09"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u65b0\u7279\u6027")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Furion.Extras.DatabaseAccessor.MongoDB")," \u62d3\u5c55\u5305\u652f\u6301 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3PKST"},"#I3PKST")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u52a8\u6001\u7c98\u571f\u7c7b\u578b\u76f4\u63a5\u8f6c ",(0,r.kt)("inlineCode",{parentName:"li"},"object")," \u6216 ",(0,r.kt)("inlineCode",{parentName:"li"},"dynamic")," \u7c7b\u578b ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3OY27"},"#I3OY27")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u65b0\u589e ",(0,r.kt)("inlineCode",{parentName:"li"},"Oops.Retry")," \u65b9\u6cd5\uff0c\u652f\u6301\u8bbe\u7f6e\u65b9\u6cd5\u8c03\u7528\u5931\u8d25\u8fdb\u884c\u91cd\u8bd5 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3PJKQ"},"#I3PJKQ")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"JWTSettings")," \u914d\u7f6e\u8282\u70b9 ",(0,r.kt)("inlineCode",{parentName:"li"},"Algorithm"),"\uff0c\u7528\u4e8e\u914d\u7f6e\u52a0\u5bc6\u7b97\u6cd5 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3PQGV"},"#I3PQGV")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"repository.EnsureTransaction()")," \u65b9\u6cd5\u786e\u4fdd\u5de5\u4f5c\u5355\u5143\u4e8b\u52a1\u6709\u6548 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3PVF1"},"#I3PVF1")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u7a81\u7834\u6027\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u652f\u6301]"," \u652f\u6301 .NET 6.0.0 Preview 3 \u7248\u672c ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3P2C7"},"#I3P2C7")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u9898\u4fee\u590d")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u4f7f\u7528\u6570\u636e\u5e93\u751f\u6210\u6a21\u578b ",(0,r.kt)("inlineCode",{parentName:"li"},"tools/cli.ps1"),"\uff0c\u4ece\u6570\u636e\u5e93\u8868\u751f\u6210\u7684\u5b9e\u4f53\u5f02\u5e38 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3PL18"},"#I3PL18")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u8d34\u4e86 ",(0,r.kt)("inlineCode",{parentName:"li"},"[NonUntify]")," \u7279\u6027\u540e\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"Swagger")," \u7684 ",(0,r.kt)("inlineCode",{parentName:"li"},"Example Value")," \u6ca1\u6709\u5339\u914d\u6b63\u786e ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3PK0L"},"#I3PK0L")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"SpareTimer.Tally")," \u5728 ",(0,r.kt)("inlineCode",{parentName:"li"},"Cron")," \u8868\u8fbe\u5f0f\u4e2d\u8ba1\u6570\u65e0\u6548 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3PWSE"},"#I3PWSE")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u5176\u4ed6\u66f4\u6539")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u6539\u8fdb]"," \u6846\u67b6\u9ed8\u8ba4\u5e8f\u5217\u5316\u5e94\u8be5\u4ece\u914d\u7f6e\u4e2d\u8bfb\u53d6\uff0c\u800c\u975e\u624b\u52a8\u7f16\u5199 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3P1SJ"},"#I3P1SJ")),(0,r.kt)("li",{parentName:"ul"},"[\u6539\u8fdb]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"SqlSugar")," \u62d3\u5c55\u5e93\uff0c\u652f\u6301\u975e\u6cdb\u578b\u4ed3\u50a8\u83b7\u53d6\u4e0a\u4e0b\u6587\u64cd\u4f5c\u5bf9\u8c61 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3PK2N"},"#I3PK2N")),(0,r.kt)("li",{parentName:"ul"},"[\u6539\u8fdb]"," \u652f\u6301\u5206\u5e03\u5f0f\u5185\u5b58\u7f13\u5b58\u53ef\u914d\u7f6e\u5316 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3POKD"},"#I3POKD")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u6587\u6863\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u6587\u6863]"," \u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"li"},"JWTSettings")," \u914d\u7f6e\u72ec\u7acb\u6587\u6863 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3PQGW"},"#I3PQGW")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u7b54\u7b54\u7591")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u8f6f\u5220\u9664\u5982\u679c\u6570\u636e\u4e0d\u5b58\u5728\uff0c\u5219\u62a5\u9519 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3PTVB"},"#I3PTVB")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u591a\u4e2a\u7c7b\u96c6\u6210\u6d4b\u8bd5\u4f1a\u9020\u6210\u6570\u636e\u5e93\u5b9a\u4f4d\u5668\u591a\u6b21\u6ce8\u518c\uff0c\u65e0\u6cd5\u8fd0\u884c\u6240\u6709\u6d4b\u8bd5\uff0c\u53ea\u80fd\u4e00\u4e2a\u7c7b\u4e00\u4e2a\u7c7b\u7684\u8fd0\u884c ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3PXGY"},"#I3PXGY")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u4e0d\u505a\u5b9e\u73b0")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," CAS \u652f\u6301",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3PIET"},"#I3PIET"))))),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"v220-\uff08\u5df2\u53d1\u5e03\uff09"},"v2.2.0 \uff08\u5df2\u53d1\u5e03\uff09"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u65b0\u7279\u6027")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Clay")," \u7c98\u571f\u7c7b\u578b\uff0c\u652f\u6301\u8ba9 ",(0,r.kt)("inlineCode",{parentName:"li"},"C#")," \u521b\u5efa\u4e00\u4e2a\u5f31\u7c7b\u578b\u5bf9\u8c61\u5e76\u64cd\u4f5c\u5f31\u7c7b\u578b ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3O2QQ"},"#I3O2QQ")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u65b0\u589e ",(0,r.kt)("inlineCode",{parentName:"li"},"Scoped.Create")," \u5e26\u8fd4\u56de\u503c\u91cd\u8f7d ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3O47J"},"#I3O47J")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u652f\u6301 ",(0,r.kt)("inlineCode",{parentName:"li"},"Scoped.Create()")," \u4e00\u7cfb\u5217\u65b9\u6cd5\u652f\u6301\u4f20\u5165\u4f5c\u7528\u57df\u5de5\u5382 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3OAP5"},"#I3OAP5")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u652f\u6301\u4e8b\u4ef6\u603b\u7ebf\u540c\u6b65\u6267\u884c\u65b9\u5f0f ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3OAW2"},"#I3OAW2")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"[DataValidation]")," \u8df3\u8fc7\u7a7a\u5b57\u7b26\u4e32\u548c\u7a7a\u503c\u9a8c\u8bc1 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3OGEN"},"#I3OGEN")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Worker Service")," \u53ef\u914d\u7f6e\u662f\u5426\u81ea\u52a8\u6ce8\u518c ",(0,r.kt)("inlineCode",{parentName:"li"},"Worker")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3OLW4"},"#I3OLW4")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u7a81\u7834\u6027\u53d8\u5316"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u9898\u4fee\u590d")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u5b9a\u65f6\u4efb\u52a1\u8bbe\u7f6e ",(0,r.kt)("inlineCode",{parentName:"li"},"cancelInNoneNextTime: false")," \u4e00\u6b21\u4e5f\u4e0d\u6267\u884c ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3O3N0"},"#I3O3N0")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," SpareTime \u81ea\u5b9a\u4e49\u4e0b\u6b21\u6267\u884c\u65f6\u95f4\u51fa\u73b0\u7a7a\u5f02\u5e38 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3O46X"},"#I3O46X")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"MiniProfiler")," \u8bbe\u7f6e\u4e3a ",(0,r.kt)("inlineCode",{parentName:"li"},"false")," \u65f6\uff0c\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u63d0\u4ea4\u62e6\u622a\u5668\u672a\u6dfb\u52a0 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3OAWX"},"#I3OAWX")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},'[Consumes("application/x-www-form-urlencoded")]')," \u548c ",(0,r.kt)("inlineCode",{parentName:"li"},"ModelQuery")," \u914d\u7f6e\u540c\u65f6\u914d\u7f6e\u5bfc\u81f4\u7a7a\u5f15\u7528\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3ODUR"},"#I3ODUR")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u5728 Grpc \u4e2d\u4f7f\u7528 jwt \u6388\u6743\u51fa\u73b0\u7a7a\u5f02\u5e38 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3OW3I"},"#I3OW3I")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u5176\u4ed6\u66f4\u6539")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4f18\u5316]"," \u652f\u6301\u53d1\u5e03\u540e\u4ee3\u7801\u7cbe\u7b80\u914d\u7f6e\uff0c\u51cf\u5c11\u4e0d\u5fc5\u8981\u7684\u6587\u4ef6\u5939\u8f93\u51fa ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3OAPF"},"#I3OAPF")),(0,r.kt)("li",{parentName:"ul"},"[\u4f18\u5316]"," \u81ea\u52a8\u5237\u65b0 Token \u673a\u5236\uff0c\u65b0\u589e\u5bb9\u9519\u503c\u5904\u7406\uff0c\u89e3\u51b3\u5e76\u53d1 Token \u5237\u65b0\u5931\u8d25\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3OGYF"},"#I3OGYF")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u6587\u6863\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u7c98\u571f\u5bf9\u8c61\u6587\u6863 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3OG18"},"#I3OG18")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u7b54\u7b54\u7591")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u52a8\u6001 WebAPI \u5982\u4f55\u83b7\u53d6\u63a5\u6536\u6587\u4ef6 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3O29B"},"#I3O29B")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u5b9a\u65f6\u4efb\u52a1\u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"li"},"Scope.CreateUow")," \u5f15\u53d1\u7684\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3O2CD"},"#I3O2CD")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u5355\u6587\u4ef6\u53d1\u5e03\u7a0b\u5e8f\u5de5\u4f5c\u4e0d\u6b63\u5e38 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3O4D8"},"#I3O4D8")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u540c\u65f6\u914d\u7f6e\u79df\u6237\u8fc7\u6ee4\u5668\u548c\u8f6f\u5220\u9664\u8fc7\u6ee4\u5668\uff0c\u6700\u7ec8\u7684 sql \u53ea\u751f\u6210\u4e86\u4e00\u79cd\u8fc7\u6ee4\u6761\u4ef6 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3OB0A"},"#I3OB0A")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," HTTP \u91cd\u5b9a\u5411 HTTPS \u540e\u8de8\u57df\u5931\u6548 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3OB8R"},"#I3OB8R")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u5728 PostgreSql \u6570\u636e\u5e93\u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"li"},"rep.FirstOrDefault(u => u.Id == UserId);")," \u5f15\u8d77\u5f02\u5e38 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3O5OF"},"#I3O5OF")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u5b9a\u65f6\u4efb\u52a1\u6709\u65f6\u80fd\u89e6\u53d1\u6709\u65f6\u4e0d\u80fd\u89e6\u53d1 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3ORBE"},"#I3ORBE")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u4e0d\u505a\u5b9e\u73b0")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4f5c\u5e9f]"," \u6846\u67b6\u4e2d\u7684 swagger \u662f\u5426\u6709\u63d0\u4f9b\u5bfc\u51fa\u6587\u6863\u4e3a markdwon/word \u7684\u529f\u80fd\u8ba1\u5212\uff1f ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3OL8O"},"#I3OL8O")),(0,r.kt)("li",{parentName:"ul"},"[\u4f5c\u5e9f]"," \u6570\u636e\u5e93\u5b9e\u4f53\u7236\u5b50\u7ee7\u627f\uff0c\u5b50\u7c7b\u751f\u6210\u7684 SQL \u4e0d\u4e00\u6837 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3NHU3"},"#I3NHU3")),(0,r.kt)("li",{parentName:"ul"},"[\u4f5c\u5e9f]"," \u652f\u6301\u7b2c\u4e09\u65b9\u6570\u636e\u5e93 ORM ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3OXA3"},"#I3OXA3"))))),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"v210-\uff08\u5df2\u53d1\u5e03\uff09"},"v2.1.0 \uff08\u5df2\u53d1\u5e03\uff09"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u65b0\u7279\u6027")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u65b0\u589e\u5b9a\u65f6\u4efb\u52a1 ",(0,r.kt)("inlineCode",{parentName:"li"},"ISpareTimeWorker")," \u65b9\u5f0f\u652f\u6301 ",(0,r.kt)("inlineCode",{parentName:"li"},'[SpareTime("{\u914d\u7f6e\u8def\u5f84}}]')," \u65b9\u5f0f ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3NTUX"},"#I3NTUX")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u5b9a\u65f6\u4efb\u52a1\u652f\u6301\u5f02\u6b65\u59d4\u6258 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3NP96"},"#I3NP96")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u8f7b\u91cf\u7ea7\u5206\u5e03\u5f0f\u8fde\u7eed GUID \u751f\u6210\u5668 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3NKLZ"},"#I3NKLZ")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"ClayObject")," \u6a21\u5757\uff0c\u5904\u7406 ",(0,r.kt)("inlineCode",{parentName:"li"},"ExpandoObject")," \u53ca ",(0,r.kt)("inlineCode",{parentName:"li"},"IDictionary")," \u7c7b\u578b ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3N3J4"},"#I3N3J4")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Scoped.CreateUow(handler)")," \u521b\u5efa\u4f5c\u7528\u57df\u5e76\u81ea\u52a8\u63d0\u4ea4\u6570\u636e\u5e93\u66f4\u6539\u65b9\u6cd5 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3NU3G"},"#I3NU3G")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u7a81\u7834\u6027\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," \u89c4\u8303\u5316\u7ed3\u679c\u63a5\u53e3 ",(0,r.kt)("inlineCode",{parentName:"li"},"OnResponseStatusCodes")," \u65b9\u6cd5\uff0c\u65b0\u589e ",(0,r.kt)("inlineCode",{parentName:"li"},"UnifyResultStatusCodesOptions")," \u53c2\u6570 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3NDB9"},"#I3NDB9")),(0,r.kt)("li",{parentName:"ul"},"[\u79fb\u9664]"," ",(0,r.kt)("strong",{parentName:"li"},"\u96ea\u82b1 ID \u5b9e\u73b0\u4ee3\u7801 ",(0,r.kt)("a",{parentName:"strong",href:"https://gitee.com/dotnetchina/Furion/issues/I3NKLZ"},"#I3NKLZ"))))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u9898\u4fee\u590d")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Swagger")," \u4e0d\u80fd\u652f\u6301\u975e int \u7c7b\u578b\u7684\u679a\u4e3e ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3NQM8"},"#I3NQM8")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u6570\u636e\u5e93\u7ebf\u7a0b\u6c60\u591a\u7ebf\u7a0b\u5e76\u53d1\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3NR4L"},"#I3NR4L")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u81ea\u5b9a\u4e49\u63a7\u5236\u5668\u8def\u7531\u540e\u4e14\u4e3a\u65b9\u6cd5\u53c2\u6570\u6307\u5b9a\u4e86 ",(0,r.kt)("inlineCode",{parentName:"li"},"[ApiSeat]")," \u540e\u751f\u6210\u8def\u7531\u91cd\u590d ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3NRF6"},"#I3NRF6")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u5176\u4ed6\u66f4\u6539")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u6539\u8fdb]"," \u652f\u6301\u5e94\u7528\u542f\u52a8\u7684\u65f6\u5019\u8fc1\u79fb\u79cd\u5b50\u6570\u636e ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3NH3M"},"#I3NH3M")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u6587\u6863\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u5206\u5e03\u5f0f ID \u751f\u6210\u6587\u6863 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3B6CX"},"#I3B6CX")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u65b0\u589e\u6a21\u5757\u5316\u5f00\u53d1\u6587\u6863 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3NSUS"},"#I3NSUS")),(0,r.kt)("li",{parentName:"ul"},"[\u66f4\u65b0]"," 20.4 \u5b57\u7b26\u4e32\u62d3\u5c55\u65b9\u5f0f > \u9519\u8bef",(0,r.kt)("inlineCode",{parentName:"li"},"ToAESDecrypt")," \u5199\u6210\u4e86 ",(0,r.kt)("inlineCode",{parentName:"li"},"ToToAESDecrypt")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3NNKV"},"#")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u7b54\u7b54\u7591")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u6709\u5173\u3010\u5b9a\u65f6\u4efb\u52a1/\u59d4\u6258\u3011\u7684\u7591\u95ee ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3N3EW"},"#I3N3EW")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u7edf\u4e00\u8fd4\u56de\u683c\u5f0f\u652f\u6301\u81ea\u5b9a\u4e49 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3NU1G"},"#I3NU1G")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u4e0d\u505a\u5b9e\u73b0")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4f5c\u5e9f]"," \u671f\u5f85 IEnumerableExtensions \u6269\u5c55 OrderBy \u51fd\u6570\u6765\u652f\u6301\u5206\u9875\u6392\u5e8f ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3NOQ9"},"#I3NOQ9"))))),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"v200-\uff08\u5df2\u53d1\u5e03\uff09"},"v2.0.0 \uff08\u5df2\u53d1\u5e03\uff09"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u65b0\u7279\u6027")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u63a7\u5236\u53f0\u5e94\u7528\u7a0b\u5e8f\u53ca Worker Services \u652f\u6301 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3K4DG"},"#I3K4DG")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u5b8c\u6574\u4efb\u52a1\u8c03\u5ea6\u529f\u80fd ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3IRUX"},"#I3IRUX")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Cron")," \u8868\u8fbe\u5f0f\u89e3\u6790 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3IQ9Y"},"#I3IQ9Y")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u652f\u6301 ",(0,r.kt)("inlineCode",{parentName:"li"},"Swagger")," \u81ea\u5b9a\u4e49\u914d\u7f6e ",(0,r.kt)("inlineCode",{parentName:"li"},"swagger.json")," \u5730\u5740\u6a21\u677f ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3IHMX"},"#I3IHMX")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u652f\u6301\u914d\u7f6e\u52a8\u6001 WebApi \u533a\u57df ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3IJAZ"},"#I3IJAZ")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u8fdc\u7a0b\u8bf7\u6c42\u65b0\u589e\u652f\u6301\u4f20\u5165\u670d\u52a1\u63d0\u4f9b\u5668 ",(0,r.kt)("inlineCode",{parentName:"li"},"IServiceProvider")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3IVBL"},"#I3IVBL")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u5168\u5c40\u914d\u7f6e\u9009\u578b ",(0,r.kt)("inlineCode",{parentName:"li"},"SupportPackageNamePrefixs")," \u914d\u7f6e\uff0c\u652f\u6301\u914d\u7f6e\u5305\u524d\u7f00 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3K0SN"},"#I3K0SN")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u5e94\u7528\u542f\u52a8\u65f6\u652f\u6301 ",(0,r.kt)("inlineCode",{parentName:"li"},"referenceassembly")," \u7c7b\u578b\u7a0b\u5e8f\u96c6\u626b\u63cf ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3K0SN"},"#I3K0SN")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u4f9d\u8d56\u6ce8\u5165 ",(0,r.kt)("inlineCode",{parentName:"li"},"AOP")," \u62e6\u622a\u83b7\u53d6\u65b9\u6cd5\u771f\u5b9e\u7279\u6027 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3LZBX"},"#I3LZBX")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," EFCore \u624b\u52a8 ",(0,r.kt)("inlineCode",{parentName:"li"},"SaveChanges()")," \u7279\u6027 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3N01Y"},"#I3N01Y")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u652f\u6301 ",(0,r.kt)("inlineCode",{parentName:"li"},"Cors")," \u8de8\u57df\u66f4\u591a\u914d\u7f6e ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3N2J0"},"#I3N2J0")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u7a81\u7834\u6027\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u91cd\u6784]"," \u5b8c\u6574\u4efb\u52a1\u8c03\u5ea6\u529f\u80fd ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3IRUX"},"#I3IRUX")),(0,r.kt)("li",{parentName:"ul"},"[\u91cd\u6784]"," \u65e5\u5fd7\u6a21\u5757\u529f\u80fd ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3J2K0"},"#I3J2K0")),(0,r.kt)("li",{parentName:"ul"},"[\u91cd\u6784]"," \u6a21\u677f\u5f15\u64ce\u529f\u80fd ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3J46E"},"#I3J46E")),(0,r.kt)("li",{parentName:"ul"},"[\u91cd\u6784]"," \u5e95\u5c42 ",(0,r.kt)("inlineCode",{parentName:"li"},"EFCoreRepository")," \u4ed3\u50a8 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3J6W5"},"#I3J6W5")),(0,r.kt)("li",{parentName:"ul"},"[\u91cd\u6784]"," sql \u5b57\u7b26\u4e32\u62d3\u5c55\u5e95\u5c42\u4ee3\u7801 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3IVCE"},"#I3IVCE")),(0,r.kt)("li",{parentName:"ul"},"[\u91cd\u6784]"," \u5e95\u5c42 ",(0,r.kt)("inlineCode",{parentName:"li"},"SqlRepository")," \u6240\u6709\u903b\u8f91\u4ee3\u7801 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3J6V6"},"#I3J6V6")),(0,r.kt)("li",{parentName:"ul"},"[\u91cd\u6784]"," \u6570\u636e\u5e93\u5b9e\u4f53\u62d3\u5c55\u65b9\u6cd5 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3J609"},"#I3J609")),(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," \u4e8b\u4ef6\u4e8b\u4ef6\u603b\u7ebf\u540c\u6b65\u6267\u884c\u4e3a\u5f02\u6b65\u65b9\u5f0f\u6267\u884c ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3J0WA"},"#I3J0WA")),(0,r.kt)("li",{parentName:"ul"},"[\u79fb\u9664]"," \u6846\u67b6\u5e95\u5c42 ",(0,r.kt)("inlineCode",{parentName:"li"},"HttpContext.IsAjaxRequest()")," \u62d3\u5c55 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3IVAA"},"#I3IVAA")),(0,r.kt)("li",{parentName:"ul"},"[\u79fb\u9664]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"ValidationTypes.Required")," \u9a8c\u8bc1 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3KR85"},"#I3KR85")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u9898\u4fee\u590d")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u5173\u95ed ",(0,r.kt)("inlineCode",{parentName:"li"},"InjectMiniProfiler")," \u53c2\u6570\u540e\u5185\u5b58\u7f13\u5b58\u65e0\u6548 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3IHLR"},"#I3IHLR")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u5728\u591a\u79df\u6237\u4e2d\u8c03\u7528 ",(0,r.kt)("inlineCode",{parentName:"li"},"Tenant")," \u5c5e\u6027\u51fa\u73b0\u5076\u7136\u6027\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u88ab\u91ca\u653e\u7684\u60c5\u51b5 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3IC70"},"#I3IC70")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," Sql \u4ee3\u7406\u4e2d\u5982\u679c\u8fd4\u56de\u57fa\u5143\u7c7b\u578b\u629b\u51fa\u4e0d\u80fd\u5c06 object \u8f6c\u6362\u6210\u5bf9\u5e94\u7c7b\u578b\u7684\u5f02\u5e38 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3IC84"},"#I3IC84")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u5b58\u50a8\u8fc7\u7a0b\u591a\u8fd4\u56de\u503c\u7684\u65f6\u5019\uff0coutputvalues \u7684 name \u4e0d\u662f\u5b9a\u4e49\u7684 MSG \u7684 name\uff0c\u662f Msg \u7c7b\u578b\u3002 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3IC7Y"},"#I3IC7Y")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," PhoneNumber \u624b\u673a\u53f7\u9a8c\u8bc1\u6b63\u5219\u8868\u8fbe\u5f0f\u9519\u8bef ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3ID10"},"#I3ID10")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u4f9d\u8d56\u6ce8\u5165 AOP \u62e6\u622a\u65e0\u6cd5\u6355\u83b7\u5185\u90e8\u5f02\u5e38 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3IGCC"},"#I3IGCC")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u5168\u5c40\u62e6\u622a\u6807\u8bb0\u5f02\u5e38\u5df2\u88ab\u5904\u7406\u540e\u5f02\u5e38\u8fc7\u6ee4\u5668\u4f9d\u7136\u6267\u884c ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3J463"},"#I3J463")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u81ea\u5b9a\u4e49\u5168\u5c40\u5f02\u5e38\u62e6\u622a\u5668\u4e0d\u8d77\u4f5c\u7528 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3K1SJ"},"#I3K1SJ")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u5728 WorkerService \u6a21\u5f0f\u4e0b\uff0c\u8fd8\u662f\u4f7f\u7528 WebHostEnvironment \u6765\u5224\u65ad Host \u73af\u5883\uff0c\u4f1a\u5bfc\u81f4\u9519\u8bef ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3LCQY"},"#I3LCQY")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u5b9a\u65f6\u4efb\u52a1 ",(0,r.kt)("inlineCode",{parentName:"li"},"DoOnce")," \u629b\u7a7a\u5f02\u5e38 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3M0ZT"},"#I3M0ZT")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u5176\u4ed6\u66f4\u6539")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u6539\u8fdb]"," \u542f\u52a8\u65f6\u7a0b\u5e8f\u96c6\u626b\u63cf\u7c7b\u578b ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3K0SN"},"#I3K0SN")),(0,r.kt)("li",{parentName:"ul"},"[\u6539\u8fdb]"," ",(0,r.kt)("inlineCode",{parentName:"li"},'App.GetConfig<>("key")')," \u4e0d\u652f\u6301\u83b7\u53d6\u5355\u4e2a\u503c\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3ILF1"},"#I3ILF1")),(0,r.kt)("li",{parentName:"ul"},"[\u6539\u8fdb]"," UrlEncode \u5e94\u8be5\u7528 ",(0,r.kt)("inlineCode",{parentName:"li"},"Uri.EscapeDataString()")," \u800c\u4e0d\u662f ",(0,r.kt)("inlineCode",{parentName:"li"},"HttpUtility.UrlEncode")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3ICTK"},"#I3ICTK")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u6587\u6863\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u5b9a\u4f4d\u4efb\u52a1\u3001\u540e\u53f0\u4efb\u52a1\u6587\u6863 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3JHHG"},"#I3JHHG")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u8f85\u52a9\u89d2\u8272\u670d\u52a1\u6587\u6863 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3K5GN"},"#I3K5GN")),(0,r.kt)("li",{parentName:"ul"},"[\u66f4\u65b0]"," \u52a8\u6001 WebAPI\u3001\u89c4\u8303\u5316\u6587\u6863\u3001\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u6587\u6863"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u7b54\u7b54\u7591")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u6570\u636e\u6821\u9a8c\uff0c\u81ea\u5b9a\u4e49 ErrorMessage \u65e0\u6548\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3ICL3"},"#I3ICL3")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u6700\u65b0 issue \u4e2d\u65b0\u589e\u7684\u201c\u65b0\u589e\u5e38\u7528\u7684 JSON \u5e8f\u5217\u5316\u65b9\u6cd5\u201d \u4f1a\u5bfc\u81f4 AOP \u62e6\u622a\u5f02\u5e38 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3I7VE"},"#I3I7VE")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," Furion.DatabaseAccessor.PrivateEntityBase \u4e2d\u7684 TenantId \u6570\u636e\u7c7b\u578b\u8bbe\u7f6e\u4e3a object ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3IQV6"},"#I3IQV6")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u6709\u5173\u5f02\u5e38\u62e6\u622a\u548c\u5904\u7406\u7684\u7591\u95ee ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3IUFZ"},"#I3IUFZ")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"DataValidation")," \u5728\u7a7a\u503c\u7684\u60c5\u51b5\u4e0b\u88ab\u5ffd\u7565\u6389\u4e86",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3IWSM"},"#I3IWSM")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u65e5\u5fd7\u6587\u6863\u6ca1\u6709\u66f4\u65b0 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3J1DX"},"#I3J1DX")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u5bf9\u4e8e webapi \u7b80\u5355\u7c7b\u578b\u53c2\u6570\uff0c\u662f\u5426\u53ef\u4ee5\u4ee5 json \u65b9\u5f0f\u63d0\u4ea4 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3J18I"},"#I3J18I")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"IUnifyResultProvider")," \u5b9e\u73b0\u4e2d\u5982\u679c ",(0,r.kt)("inlineCode",{parentName:"li"},"UnifyModel")," \u7684 type \u4e0d\u662f\u8303\u578b\u4f1a\u62a5\u9519 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3JBXF"},"#I3JBXF")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u5982\u4f55\u6a21\u5757\u5316\u5f00\u53d1\u65b0\u529f\u80fd\uff1f ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3J7ZZ"},"#I3J7ZZ")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u5efa\u8bae\u589e\u52a0\u5fae\u670d\u52a1\u4e2d\u95f4\u4ef6\u7684\u96c6\u6210 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3JTZQ"},"#I3JTZQ")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u4e8c\u7ea7\u865a\u62df\u76ee\u5f55\u90e8\u7f72\u7684 swagger \u7684 MiniProfiler js \u62a5\u9519 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3IWLR"},"#I3IWLR")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u4e0d\u505a\u5b9e\u73b0")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4f5c\u5e9f]"," \u5728\u8bf7\u6c42\u5ba1\u8ba1\u65e5\u5fd7\u4e2d\u5bf9\u8d34\u6709 DisableAuditing \u7279\u6027\u7684\u5b57\u6bb5\u81ea\u52a8\u8fc7\u6ee4 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3DHAN"},"#I3DHAN"))))),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"v1190-\uff08\u5df2\u53d1\u5e03\uff09"},"v1.19.0 \uff08\u5df2\u53d1\u5e03\uff09"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u65b0\u7279\u6027")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"EFCore 5.0")," \u652f\u6301 ",(0,r.kt)("strong",{parentName:"li"},"SqlServer 2005-2008")," \u6570\u636e\u5e93 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3HZZ6"},"#I3HZZ6")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Sql")," \u9ad8\u7ea7\u4ee3\u7406\u652f\u6301\u6a21\u677f\u66ff\u6362\u4e86 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3HHWU"},"#I3HHWU")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3HH2T"},"#I3HH2T")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"PBKDF2")," \u52a0\u5bc6 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3HN7A"},"#I3HN7A")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u5e38\u7528\u7684 ",(0,r.kt)("inlineCode",{parentName:"li"},"JSON")," \u64cd\u4f5c\u65b9\u6cd5 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3HUYO"},"#I3HUYO")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u6240\u6709\u89e3\u6790\u670d\u52a1\u7684\u65b9\u6cd5\u90fd\u652f\u6301\u4f20\u5165 ",(0,r.kt)("inlineCode",{parentName:"li"},"IServiceProvidier")," \u53c2\u6570 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3HXEU"},"#I3HXEU")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u7a81\u7834\u6027\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u5347\u7ea7]"," .NET 5 SDK \u81f3 5.0.5 \u7248\u672c"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u9898\u4fee\u590d")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u8fdc\u7a0b\u8bf7\u6c42 ",(0,r.kt)("inlineCode",{parentName:"li"},"application/x-www-form-urlencoded")," \u81ea\u52a8\u88ab\u8f6c\u7801\u4e86 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3HDPC"},"#I3HDPC")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"ISqlDispatchProxy")," \u8c03\u7528\u5e26\u8fd4\u56de\u503c\u7684\u5b58\u50a8\u8fc7\u7a0b\u51fa\u9519 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3HISS"},"#I3HISS")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u591a\u6570\u636e\u5e93\u5de5\u4f5c\u5355\u5143\u5f02\u5e38\u65e0\u6cd5\u56de\u6eda\u6570\u636e ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3I2KN"},"#I3I2KN")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/zuohuaijun/Admin.NET/issues/I3HYN5"},"#I3HYN5")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," Serilog \u65e5\u5fd7\u751f\u6210\u592a\u591a\u6587\u4ef6 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3I2PN"},"#I3I2PN")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"1.18.0")," \u7248\u672c\u6570\u636e\u5e93\u8fde\u63a5\u6c60\u5b58\u5728\u8fde\u63a5\u6cc4\u6f0f\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3I5KO"},"#I3I5KO")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," Sqlite \u63d0\u793a\u4e8b\u52a1\u5df2\u5b8c\u6210\u5f02\u5e38 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3I9F2"},"#I3I9F2")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u5176\u4ed6\u66f4\u6539")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u6539\u8fdb]"," \u89c6\u56fe\u6a21\u677f\u529f\u80fd\uff0c\u9ed8\u8ba4\u652f\u6301\u53ef\u679a\u4e3e\u6cdb\u578b\u7c7b\u578b ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3GYEE"},"#I3GYEE")),(0,r.kt)("li",{parentName:"ul"},"[\u6539\u8fdb]"," \u5f00\u53d1\u9636\u6bb5 MiniProfiler \u6253\u5370\u6570\u636e\u5e93\u76f8\u5173\u4fe1\u606f ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3I8VQ"},"#I3I8VQ")),(0,r.kt)("li",{parentName:"ul"},"[\u6539\u8fdb]"," EFCore 5.0 \u672a\u63d0\u4f9b Sqlite \u6570\u636e\u5e93 DataAdapter \u7684\u652f\u6301 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3I9FC"},"#I3I9FC")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u6587\u6863\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u66f4\u65b0]"," \u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u3001\u591a\u79df\u6237\u3001\u4ed3\u50a8\u3001\u65e5\u5fd7\u3001\u5e8f\u5217\u5316\u7b49\u6587\u6863\u3002"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u7b54\u7b54\u7591")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u5efa\u8bae MVC \u6a21\u5f0f\u4e0b\u589e\u52a0 Furion \u7684\u529f\u80fd ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3GY4R"},"#I3GY4R")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u6570\u636e\u5e93\u5173\u8054\u64cd\u4f5c ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3H5QP"},"#I3H5QP")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," 1.17.5 \u7248\u672c suagger \u65e0\u6cd5\u751f\u6210 swagger.json ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3HGPZ"},"#I3HGPZ")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," Serilog \u6269\u5c55+dll \u542f\u52a8\u4e0e swagger \u7684 MiniProfiler \u51b2\u7a81 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3HWJM"},"#I3HWJM")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," Sql \u9ad8\u7ea7\u4ee3\u7406\u8fd4\u56de DataTable \u65f6\uff0c\u7ed3\u679c\u4e3a\u7a7a\u53d6\u4e0d\u5230\u8bb0\u5f55 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3HUWG"},"#I3HUWG")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," Task.Run \u64cd\u4f5c\u6570\u636e\u5e93\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3HZ9D"},"#I3HZ9D")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u4e0d\u505a\u5b9e\u73b0")))),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"v1180-\uff08\u5df2\u53d1\u5e03\uff09"},"v1.18.0 \uff08\u5df2\u53d1\u5e03\uff09"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u65b0\u7279\u6027")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Oracle")," 11 \u7248\u672c\u652f\u6301 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3EVL5"},"#I3EVL5")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Mysql")," \u5b98\u65b9\u5305 ",(0,r.kt)("inlineCode",{parentName:"li"},"MySql.EntityFrameworkCore")," \u652f\u6301 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3E6J1"},"#I3E6J1")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u5168\u5c40\u914d\u7f6e ",(0,r.kt)("inlineCode",{parentName:"li"},"WebApi")," \u53c2\u6570 ",(0,r.kt)("inlineCode",{parentName:"li"},"[FromQury]")," \u5316 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3EFYJ"},"#I3EFYJ")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u516c\u5f00\u6846\u67b6\u5e95\u5c42\u4f9d\u8d56\u6ce8\u5165\u626b\u63cf\u6ce8\u518c\u62d3\u5c55 ",(0,r.kt)("inlineCode",{parentName:"li"},"services.AddRisterTypes(types)")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3EIV3"},"#I3EIV3")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," SqlSugar \u5de5\u4f5c\u5355\u5143\u7279\u6027 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3EJO5"},"#I3EJO5")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u7a81\u7834\u6027\u53d8\u5316"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u9898\u4fee\u590d")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u6c60\u4e00\u65e6\u6709\u4e0a\u4e0b\u6587\u64cd\u4f5c\u5931\u8d25\u8fd8\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u51fa\u73b0\u4e8c\u6b21\u63d0\u4ea4\u6570\u636e\u5e93\u7684\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3EIJJ"},"#I3EIJJ")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u4e0d\u540c\u6570\u636e\u5e93\u547d\u4ee4\u53c2\u6570\u524d\u7f00\u90fd\u6dfb\u52a0\u4e86 ",(0,r.kt)("inlineCode",{parentName:"li"},"@")," \u5904\u7406 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3EBJP"},"#I3EBJP")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u5c1d\u8bd5\u4fee\u590d\u4e8b\u4ef6\u603b\u7ebf\u7ebf\u7a0b\u5b89\u5168\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3EGSB"},"#I3EGSB")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/pulls/236"},"#PR236")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"HttpContextExtensions")," \u7684 ",(0,r.kt)("inlineCode",{parentName:"li"},"SignoutToSwagger")," \u65b9\u6cd5\u65e0\u6548 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3EHNQ"},"#I3EHNQ")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u5982\u679c\u52a8\u6001 WebApi \u8d34\u4e86 ",(0,r.kt)("inlineCode",{parentName:"li"},"[ApiController]")," \u7279\u6027\u540e\uff0c\u5bfc\u81f4\u8def\u7531\u53c2\u6570\u91cd\u590d\u751f\u6210 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3EOQQ"},"#I3EOQQ")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u5982\u679c\u6ca1\u6709\u4efb\u4f55 webapi \u63a7\u5236\u5668\u65f6\uff0c\u6587\u6863\u62a5\u9519 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3EVLB"},"#I3EVLB")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u4f9d\u8d56\u6ce8\u5165\u6cdb\u578b\u7c7b\u578b\u6ce8\u518c\u5931\u8d25 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3EX66"},"#I3EX66")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u5176\u4ed6\u66f4\u6539")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," SqlSugar \u62d3\u5c55\u5e93\u4ed3\u50a8 ",(0,r.kt)("inlineCode",{parentName:"li"},"Context")," \u5c5e\u6027\u7c7b\u578b\u672a ",(0,r.kt)("inlineCode",{parentName:"li"},"SqlSugarClient")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3EHXA"},"#I3EHXA")),(0,r.kt)("li",{parentName:"ul"},"[\u6539\u8fdb]"," \u5237\u65b0 Token \u9ed1\u540d\u5355 Redis \u4e2d\u5206\u7ec4 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3EQWO"},"#I3EQWO")),(0,r.kt)("li",{parentName:"ul"},"[\u6539\u8fdb]"," \u8fdc\u7a0b\u8bf7\u6c42\u5728\u8bf7\u6c42\u62e6\u622a\u6b21\u53d1\u8d77\u4e8c\u6b21\u8bf7\u6c42\u5bfc\u81f4\u5f02\u5e38\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3ER71"},"#I3ER71")),(0,r.kt)("li",{parentName:"ul"},"[\u6539\u8fdb]"," \u591a\u79df\u6237\u9ed8\u8ba4\u7f13\u5b58\u6539\u4e3a\u5206\u5e03\u5f0f\u7f13\u5b58 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3EXEU"},"#I3EXEU")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u6587\u6863\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u66f4\u65b0]"," \u6570\u636e\u5e93\u64cd\u4f5c\u6587\u6863 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3E84X"},"#I3E84X")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u7b54\u7b54\u7591")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u5982\u4f55\u65b9\u4fbf\u7684\u83b7\u53d6 ",(0,r.kt)("inlineCode",{parentName:"li"},"IDynamicApiController")," API \u4ea7\u751f\u7684 url \u548c \u8c13\u8bcd ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3ED17"},"#I3ED17")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," Code First -\u6267\u884c\u547d\u4ee4 ",(0,r.kt)("inlineCode",{parentName:"li"},"Add-Migration")," \u9047\u5230\u4e86\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3EHD0"},"#I3EHD0")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," tools v1.16.0 \u65e0\u6cd5\u751f\u6210\u5b9e\u4f53\uff0c\u4e00\u76f4\u63d0\u793a Missing required argument ",(0,r.kt)("inlineCode",{parentName:"li"},""),". ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3ENZ8"},"#I3ENZ8")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," Authorize \u7684 Logout \u6309\u94ae\uff0c\u65e0\u6cd5\u5b9e\u65f6\u8bf7\u7a7a token",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3EOF9"},"#I3EOF9")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u4e0d\u505a\u5b9e\u73b0")))),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"v1170-\uff08\u5df2\u53d1\u5e03\uff09"},"v1.17.0 \uff08\u5df2\u53d1\u5e03\uff09"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u65b0\u7279\u6027")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u52a8\u6001 WebAPI \u652f\u6301\u7ee7\u627f\u57fa\u7c7b\u914d\u7f6e\u7279\u6027 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3D5PX"},"#I3D5PX")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u8fdc\u7a0b\u8bf7\u6c42\u652f\u6301 ",(0,r.kt)("inlineCode",{parentName:"li"},"multipart/form-data")," \u5185\u5bb9\u7c7b\u578b\u5904\u7406 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3D7KG"},"#I3D7KG")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u5b57\u7b26\u4e32\u52a0\u5bc6\u62d3\u5c55 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3DHBW"},"#I3DHBW")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u65b0\u589e\u8fdc\u7a0b\u8bf7\u6c42\u53ef\u76f4\u63a5\u4e0b\u8f7d\u8fd4\u56de\u503c\u5185\u5bb9\u8f6c\u4e3a string \u7c7b\u578b ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3DIGR"},"#I3DIGR")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u8fdc\u7a0b\u8bf7\u6c42\u5730\u5740\u652f\u6301\u6a21\u677f\u5f15\u64ce ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3D5Y8"},"#I3D5Y8")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"[DataValidation]")," \u9519\u8bef\u6d88\u606f\u652f\u6301 ",(0,r.kt)("inlineCode",{parentName:"li"},"string.Format")," \u64cd\u4f5c ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3E08W"},"#I3E08W")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u8fdc\u7a0b\u8bf7\u6c42 ",(0,r.kt)("inlineCode",{parentName:"li"},"HttpRequestMessage")," \u62d3\u5c55\u65b9\u6cd5 ",(0,r.kt)("inlineCode",{parentName:"li"},"AppendQueries()")," \u8ffd\u52a0\u66f4\u591a ",(0,r.kt)("inlineCode",{parentName:"li"},"query")," \u53c2\u6570\u62d3\u5c55 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3E3DI"},"#I3E3DI")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u7a81\u7834\u6027\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"IRepository.AsAsyncEnumerable()")," \u8fd4\u56de\u503c ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3DIQ1"},"#I3DIQ1"),"\uff0c\u8c03\u6574\u4e3a\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"rep.AsQueryable().ToListAsync()")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u9898\u4fee\u590d")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u6570\u636e\u9a8c\u8bc1\u5931\u8d25\u540e\u4e5f\u6253\u5370\u4e86\u6210\u529f\u7684\u5b57\u6bb5 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3CVBS"},"#I3CVBS")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u8fdc\u7a0b\u8bf7\u6c42\u914d\u7f6e ",(0,r.kt)("inlineCode",{parentName:"li"},"contentType")," \u4e3a ",(0,r.kt)("inlineCode",{parentName:"li"},"application/x-www-form-urlencoded")," \u65e0\u6548\u95ee\u9898",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3CWBS"},"#I3CWBS")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u8fdc\u7a0b\u8bf7\u6c42\u65e0\u6cd5\u6253\u5370\u5b8c\u6574\u7684\u8bf7\u6c42\u5730\u5740\uff0c\u6bd4\u5982\u914d\u7f6e\u4e86 HttpClient \u4e4b\u540e ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3CY42"},"#I3CY42")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u7a0b\u5e8f\u542f\u52a8\u65f6\u6392\u9664\u9ed8\u8ba4\u914d\u7f6e\u6587\u4ef6\u7b97\u6cd5\u4e0d\u5bf9\uff0c\u5e94\u8be5\u91c7\u7528\u6b63\u5219\u8868\u8fbe\u5f0f\u5339\u914d ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3D9E7"},"#I3D9E7")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u8fdc\u7a0b\u8bf7\u6c42\u6210\u529f\u8bf7\u6c42\u62e6\u622a\u4e0d\u751f\u6548 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3DOE4"},"#I3DOE4")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Dapper")," \u62d3\u5c55\u6570\u636e\u5e93\u5207\u6362\u4e3a oracle \u65f6\uff0c\u7cfb\u7edf\u627e\u4e0d\u5230\u6307\u5b9a\u7684\u6587\u4ef6 ",(0,r.kt)("inlineCode",{parentName:"li"},"Oracle.ManagedDataAccess.Core")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3DYM3"},"#I3DYM3")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u5176\u4ed6\u66f4\u6539")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u6539\u8fdb]"," \u83b7\u53d6 ",(0,r.kt)("inlineCode",{parentName:"li"},"JWT token")," \u4fe1\u606f\u652f\u6301\u914d\u7f6e ",(0,r.kt)("inlineCode",{parentName:"li"},"Token")," \u524d\u7f00\uff0c\u5982 ",(0,r.kt)("inlineCode",{parentName:"li"},"Bearer ")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3DJIV"},"#I3DJIV")),(0,r.kt)("li",{parentName:"ul"},"[\u6539\u8fdb]"," \u5237\u65b0 Token \u9ed1\u540d\u5355\u5b58\u50a8\u65b9\u5f0f\uff0c\u5c06\u5185\u5b58\u7f13\u5b58\u8c03\u6574\u4e3a\u5206\u5e03\u5f0f\u7f13\u5b58 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3DPBR"},"#I3DPBR")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u6587\u6863\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," \u8fdc\u7a0b\u8bf7\u6c42\u6587\u6863 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3CPJO"},"#I3CPJO")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u7b54\u7b54\u7591")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"LinqExpression.And")," \u6ca1\u6709 2 \u4e2a\u53c2\u6570\u7684\u65b9\u6cd5 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3CXKZ"},"#I3CXKZ")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u5f02\u5e38\u4fe1\u606f \u5982\u4f55\u8bb0\u5f55\u5230\u6570\u636e\u5e93\u4e2d:) ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3DDGO"},"#I3DDGO")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u65e0\u952e\u5b9e\u4f53\u9009\u7528 ",(0,r.kt)("inlineCode",{parentName:"li"},"IEntityNotKey")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3DWRF"},"#I3DWRF")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u6839\u636e\u4e3b\u952e\u5220\u9664\u4e00\u6761\u8bb0\u5f55\u4e0d\u6210\u529f\uff0c\u65e0\u9519\u8bef\u4fe1\u606f ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3DWWF"},"#I3DWWF")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u5982\u4f55\u81ea\u5b9a\u4e49\u63a5\u53e3\u8fd4\u56de\u683c\u5f0f ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3DZN6"},"#I3DZN6")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," DynamicApiController \u5982\u4f55\u5728\u8fd0\u884c\u65f6\u51b3\u5b9a\u662f\u5426\u516c\u5f00\u4e00\u4e2a Action ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3D5UL"},"#I3D5UL")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Furion.DatabaseAccessor.DbHelpers")," \u65b9\u6cd5\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"ConvertToDbParameters")," \u662f\u4e0d\u662f\u5e94\u8be5\u8fc7\u6ee4\u6389\u8d34 ",(0,r.kt)("inlineCode",{parentName:"li"},"NotMapped")," \u7684\u7279\u6027 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3E2XS"},"#I3E2XS")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u4e0d\u505a\u5b9e\u73b0")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," \u6846\u67b6\u662f\u5426\u63d0\u4f9b ",(0,r.kt)("inlineCode",{parentName:"li"},"ISoftDelete")," \u7c7b\u4f3c\u63a5\u53e3 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3CP93"},"#I3CP93"))))),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"v1160-\uff08\u5df2\u53d1\u5e03\uff09"},"v1.16.0 \uff08\u5df2\u53d1\u5e03\uff09"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u65b0\u7279\u6027")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"IDGenerator")," \u96ea\u82b1 ID \u7b97\u6cd5\uff0c\u611f\u8c22 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/yitter/idgenerator"},"idgenerator")," \u4f5c\u8005\u63d0\u4ea4 PR ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/pulls/204"},"#PR204")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3B60S"},"#I3B60S")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"DbContext")," \u5237\u65b0\u591a\u79df\u6237\u7f13\u5b58\u62d3\u5c55\u65b9\u6cd5 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I39N5U"},"#I39N5U")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u81ea\u5b9a\u4e49\u914d\u7f6e\u5355\u4e2a\u63a7\u5236\u5668\u540d\u79f0\u89c4\u8303\uff0c\u5982\u5c0f\u5199\u8def\u7531 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3A5XL"},"#I3A5XL")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u83b7\u53d6\u5f53\u524d\u9009\u62e9\u533a\u57df\u8bed\u8a00\u65b9\u6cd5 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3BSDH"},"#I3BSDH")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u7a81\u7834\u6027\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u5347\u7ea7]"," .NET 5 SDK \u81f3 5.0.4 \u7248\u672c ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3ASTL"},"#I3ASTL")),(0,r.kt)("li",{parentName:"ul"},"[\u91cd\u6784]"," \u8fdc\u7a0b\u8bf7\u6c42\u6240\u6709\u529f\u80fd ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2LB7M"},"#I2LB7M")),(0,r.kt)("li",{parentName:"ul"},"[\u91cd\u6784]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"JSON")," \u5e8f\u5217\u5316\u529f\u80fd\uff0c\u63d0\u4f9b\u7edf\u4e00\u7684\u62bd\u8c61\u63a5\u53e3\uff0c\u65b9\u4fbf\u81ea\u7531\u66ff\u6362 ",(0,r.kt)("inlineCode",{parentName:"li"},"JSON")," \u5e93 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I39GT9"},"#I39GT9")),(0,r.kt)("li",{parentName:"ul"},"[\u91cd\u6784]"," \u9a8c\u8bc1\u5931\u8d25\u8fd4\u56de\u6d88\u606f\u6a21\u578b\u53ca\u89c4\u8303\u5316\u63a5\u53e3\u9a8c\u8bc1\u53c2\u6570 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3AFQW"},"#I3AFQW")),(0,r.kt)("li",{parentName:"ul"},"[\u4f18\u5316]"," \u63d2\u4ef6\u5f0f\u5f00\u53d1\u70ed\u63d2\u62d4\u529f\u80fd\uff0c\u5b9e\u73b0\u52a8\u6001\u52a0\u8f7d\u5378\u8f7d ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/pulls/200"},"#PR200"),", \u611f\u8c22 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/samwangcoder"},"@SamWangCoder")),(0,r.kt)("li",{parentName:"ul"},"[\u79fb\u9664]"," \u79fb\u9664 ",(0,r.kt)("inlineCode",{parentName:"li"},"JsonSerializerUtility")," \u9759\u6001\u7c7b\u53ca\u79fb\u9664\u5c5e\u6027\u5927\u5199\u5e8f\u5217\u5316\u62d3\u5c55\u914d\u7f6e ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3AFRJ"},"#I3AFRJ")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u9898\u4fee\u590d")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"MVC")," \u6a21\u5f0f\u4e0b\u4e0d\u652f\u6301\u9a8c\u8bc1\u81ea\u5b9a\u4e49\u9a8c\u8bc1\u903b\u8f91 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I39LM5"},"#I39LM5")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u9a8c\u8bc1\u6570\u503c\u7c7b\u578b\u6b63\u5219\u8868\u8fbe\u5f0f\u4e0d\u652f\u6301\u8d1f\u6570 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I39YUV"},"#I39YUV")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u6846\u67b6\u542f\u52a8\u65f6\u65e0\u6cd5\u52a0\u8f7d\u672a\u88ab\u5f15\u7528\u7684\u7a0b\u5e8f\u96c6 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3A3Z4"},"#I3A3Z4")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"EFCoreRepository.IsAttached()")," \u65b9\u6cd5\u5224\u65ad\u9519\u8bef bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3A824"},"#I3A824")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"\u52a8\u6001API")," \u9a7c\u5cf0\u663e\u793a\u914d\u7f6e\u65e0\u6548 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3AF32"},"#I3AF32")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"cli.ps1")," \u4e0d\u652f\u6301\u65b0\u7248\u672c ",(0,r.kt)("inlineCode",{parentName:"li"},"EFCore")," bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3APO9"},"#I3APO9")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"EFCore")," \u5b9e\u4f53\u914d\u7f6e ",(0,r.kt)("inlineCode",{parentName:"li"},"[Table]")," \u7279\u6027\u65e0\u6548 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3BAYH"},"#I3BAYH")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u52a8\u6001 WebAPI ",(0,r.kt)("inlineCode",{parentName:"li"},"CheckIsSplitCamelCase")," bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3BLKX"},"#I3BLKX")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u4fee\u590d\u52a8\u6001 WebAPI \u914d\u7f6e\u4fdd\u7559 Action \u7684 Async \u540e\u7f00\u65e0\u6548\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3C3DA"},"#I3C3DA")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"JWT")," Token \u5237\u65b0\u540e\u65e7\u7684\u5237\u65b0 Token \u4f9d\u65e7\u53ef\u7528 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3C8ZH"},"#I3C8ZH")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u591a\u8bed\u8a00 ",(0,r.kt)("inlineCode",{parentName:"li"},"Razor")," \u89c6\u56fe\u53d8\u91cf\u591a\u8bed\u8a00\u4e71\u7801\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3CBMU"},"#I3CBMU")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u5176\u4ed6\u66f4\u6539")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4f18\u5316]"," \u9ed8\u8ba4\u5e8f\u5217\u5316\u63d0\u4f9b\u5668 ",(0,r.kt)("inlineCode",{parentName:"li"},"System.Text.Json")," \u53cd\u5e8f\u5217\u5316\u5b57\u7b26\u4e32\u65f6\u533a\u5206\u5927\u5c0f\u5199\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3BSXV"},"#I3BSXV")),(0,r.kt)("li",{parentName:"ul"},"[\u4f18\u5316]"," \u4f18\u5316 ",(0,r.kt)("inlineCode",{parentName:"li"},"MessageCenter")," \u6027\u80fd\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I39PRR"},"#I39PRR")),(0,r.kt)("li",{parentName:"ul"},"[\u4f18\u5316]"," \u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u6c60\u5c0f\u6027\u80fd\u4f18\u5316"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u6587\u6863\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Docker")," \u73af\u5883\u4e0b\u81ea\u52a8\u5316\u90e8\u7f72 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/pulls/209"},"#PR209")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"JSON")," \u5e8f\u5217\u5316 \u6587\u6863 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3B6D8"},"#I3B6D8")),(0,r.kt)("li",{parentName:"ul"},"[\u66f4\u65b0]"," \u8de8\u57df\u3001\u5b89\u5168\u6388\u6743\u3001\u5373\u65f6\u901a\u4fe1\u6587\u6863\u3001\u591a\u8bed\u8a00\u3001\u89c4\u8303\u5316\u6587\u6863"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u7b54\u7b54\u7591")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Furion.Extras.DatabaseAccessor.SqlSugar")," \u914d\u7f6e\u591a\u4e2a\u6570\u636e\u5e93\u6253\u5370 SQL \u8bed\u53e5\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I39PDC"},"#I39PDC")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"ORACLE")," \u6570\u636e\u5e93\u591a\u79df\u6237\u6a21\u5f0f\u4e0b\u8fd4\u56de\u503c\u4e3a\u6307\u5b9a\u7c7b\u578b\u65f6\u7cfb\u7edf\u5361\u6b7b ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I39RNH"},"#I39RNH")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u5047\u5220\u9664\u6307\u5411\u5f02\u5e38 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I39XZA"},"#I39XZA")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Furion")," \u591a\u8bed\u8a00\u914d\u7f6e\u8282\u662f\u653e\u5728 ",(0,r.kt)("inlineCode",{parentName:"li"},"AppSettings")," \u91cc\u9762\u8fd8\u662f\u5916\u9762\u5462\uff1f ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3A4SB"},"#I3A4SB")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u6ca1\u627e\u5230\u6570\u636e\u5e93\u4e0a\u4e0b\u6587 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3A5HS"},"#I3A5HS")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u6709 ",(0,r.kt)("inlineCode",{parentName:"li"},"QQ")," \u4ea4\u6d41\u7fa4\u5417\uff1f ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3AAM7"},"#I3AAM7")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Vue3")," \u73af\u5883\u4e0b\u914d\u7f6e ",(0,r.kt)("inlineCode",{parentName:"li"},"SignalR")," \u8de8\u57df\u51fa\u9519 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3ALQ7"},"#I3ALQ7")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u8bbe\u7f6e ",(0,r.kt)("inlineCode",{parentName:"li"},"Swagger")," \u53c2\u6570\u975e\u5fc5\u586b ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3AT02"},"#I3AT02")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," EFCore \u8c03\u7528 Insert \u65f6\u62a5 ",(0,r.kt)("inlineCode",{parentName:"li"},"Unknown column 'Discriminator' in 'field list'")," \u5f02\u5e38 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3B2LC"},"#I3B2LC")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u9006\u5411 ",(0,r.kt)("inlineCode",{parentName:"li"},"mysql")," \u6570\u636e\u5e93\u65f6 ",(0,r.kt)("inlineCode",{parentName:"li"},"cli")," \u51fa\u73b0\u9519\u8bef ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3B64F"},"#I3B64F")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," Sql \u9ad8\u7ea7\u4ee3\u7406\u4f7f\u7528\u8fc7\u7a0b\u4e2d DateTime \u7c7b\u578b\u7684\u53c2\u6570\u5e8f\u5217\u5316\u5931\u8d25 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3AZXK"},"#I3AZXK")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u4f7f\u7528 Mysql \u6267\u884c Add-Migration \u62a5\u9519 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3B8EW"},"#I3B8EW")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," Saas \u591a\u79df\u6237\u6a21\u5f0f-\u72ec\u7acb Database \u6a21\u5f0f\u4e0b\u65e0\u6cd5\u83b7\u53d6 Tenant, \u5bfc\u81f4\u65e0\u6cd5\u81ea\u52a8\u5207\u6362\u7684\u95ee\u9898",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3AVXU"},"#I3AVXU")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u5982\u4f55\u81ea\u5b9a\u4e49 WebAPI \u7edf\u4e00\u7ed3\u679c\u6a21\u578b ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3BBYW"},"#I3BBYW")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3BBYV"},"#I3BBYV")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u5728 ",(0,r.kt)("inlineCode",{parentName:"li"},"Web.Entry")," \u9879\u76ee\u65b0\u5efa\u4e86\u4e00\u4e2a ",(0,r.kt)("inlineCode",{parentName:"li"},"Controller"),"\uff0c\u591a\u4e86\u672a\u77e5\u65b9\u6cd5 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3BKH5"},"#I3BKH5")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"AOP")," \u62e6\u622a\u5982\u4f55\u89e3\u6790\u670d\u52a1 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3BUM3"},"#I3BUM3")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u52a8\u6001 WebAPI \u8fd4\u56de\u53c2\u6570\u88ab\u7701\u7565 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3C2XR"},"#I3C2XR")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u5982\u4f55\u8bbe\u7f6e\u67d0\u4e00\u4e2a\u63a5\u53e3\u54cd\u5e94\u6570\u636e\u4e0d\u81ea\u52a8\u8f6c\u5c0f\u5199\uff0c\u6309\u539f\u59cb\u5b57\u6bb5\u540d\u8fd4\u56de ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I38L9B"},"#I38L9B")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," code first \u5982\u4f55\u914d\u7f6e\u81ea\u52a8\u8fc1\u79fb ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3CCR0"},"#I3CCR0")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," webapi \u6df7\u5408\u6388\u6743\u5982\u4f55\u533a\u5206\u4e0d\u540c\u7cfb\u7edf ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3CJCY"},"#I3CJCY")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," EFCore \u4e0d\u652f\u6301\u9012\u5f52\u65e0\u9650\u7ea7\u904d\u5386\u5173\u7cfb ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3CET9"},"#I3CET9")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u4e0d\u505a\u5b9e\u73b0")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," \u5efa\u8bae ",(0,r.kt)("inlineCode",{parentName:"li"},"EFCore")," \u53ef\u914d\u7f6e\u5916\u952e\u5173\u7cfb\u5bfc\u822a\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3994X"},"#I3994X")),(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," \u5efa\u8bae\u5c06 ",(0,r.kt)("inlineCode",{parentName:"li"},"EFCore")," \u5265\u79bb\u51fa\u6765\uff0c\u4f5c\u4e3a\u63d2\u4ef6\u7684\u5f62\u5f0f\u63d0\u4f9b\u3002\u8fd9\u6837\u53ef\u4ee5\u9009\u62e9\u81ea\u5df1\u559c\u6b22\u7684 ",(0,r.kt)("inlineCode",{parentName:"li"},"ORM")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3ABNX"},"#I3ABNX")),(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," \u4e8b\u4ef6\u603b\u7ebf\u80fd\u5426\u63d0\u4f9b\u8fd4\u56de\u503c ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3AWL6"},"#I3AWL6")),(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," Sql \u6a21\u677f\u80fd\u4eff\u7167 Mybatis \u4e00\u6837\u52a0\u5404\u79cd\u6807\u7b7e\u5417\uff1f",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3ASRS"},"#I3ASRS")),(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," EFCore \u66f4\u65b0\u6216\u6392\u9664\u66f4\u65b0\u6307\u5b9a\u5217\u652f\u6301\u4f20\u5165 DTO \u6a21\u578b ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3AS5K"},"#I3AS5K")),(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," \u65b0\u589e ",(0,r.kt)("inlineCode",{parentName:"li"},"UnitOfWork")," \u4e8b\u52a1\u5b8c\u6210\u4e8b\u4ef6 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3BRMI"},"#I3BRMI"))))),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"v1150-\uff08\u5df2\u53d1\u5e03\uff09"},"v1.15.0 \uff08\u5df2\u53d1\u5e03\uff09"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u65b0\u7279\u6027")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u8df3\u8fc7\u7279\u5b9a\u5b9e\u4f53\u6570\u636e\u5e93\u64cd\u4f5c\u76d1\u542c\u7279\u6027 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I386LB"},"#I386LB")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"IEntityChangedListener")," \u589e\u52a0\u5bf9 ",(0,r.kt)("inlineCode",{parentName:"li"},"OldEntity")," \u7684\u652f\u6301 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I385X2"},"#I385X2")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u5b9e\u65f6\u901a\u4fe1\u81ea\u52a8\u914d\u7f6e\u96c6\u7ebf\u5668\u62d3\u5c55\u53ca\u7279\u6027 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I387QX"},"#I387QX")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Mapster")," \u62d3\u5c55\u652f\u6301 ",(0,r.kt)("inlineCode",{parentName:"li"},"IMapper")," \u4f9d\u8d56\u6ce8\u5165\u65b9\u5f0f ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I38C7C"},"#I38C7C")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"[AppDbContext]")," \u7279\u6027\u9ed8\u8ba4\u6784\u9020\u51fd\u6570 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I38J97"},"#I38J97")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"UnifyContext.GetExceptionMetadata(context)")," \u8fd4\u56de\u9519\u8bef\u7801\u652f\u6301 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I38ONX"},"#I38ONX")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u7a81\u7834\u6027\u53d8\u5316"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u9898\u4fee\u590d")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u591a\u6b21\u5faa\u73af\u4e2d\u8c03\u7528 ",(0,r.kt)("inlineCode",{parentName:"li"},"Db.GetNewDbContext()")," \u8fd8\u662f\u83b7\u53d6\u5230\u540c\u4e00\u4e2a\u5bf9\u8c61 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I38NNP"},"#I38NNP")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Swagger")," \u8fc7\u6ee4\u6389 ",(0,r.kt)("inlineCode",{parentName:"li"},"object ")," \u7c7b\u578b\u5c5e\u6027\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I38FHL"},"#I38FHL")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u540c\u4e00\u7c7b\u4e0d\u652f\u6301\u591a\u7ee7\u627f ",(0,r.kt)("inlineCode",{parentName:"li"},"IEntityChangedListener")," \u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I38UQJ"},"#I38UQJ")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u81ea\u5b9a\u4e49\u5e8f\u5217\u5316\u5c5e\u6027\u540d\u79f0\u5bfc\u81f4\u9a8c\u8bc1\u5931\u8d25\u5c5e\u6027\u4e0d\u5339\u914d\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I38W8Z"},"#I38W8Z")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u5176\u4ed6\u66f4\u6539")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4f18\u5316]"," \u4ee3\u7801\u4e0d\u89c4\u8303\u547d\u540d\u5bfc\u81f4\u5f00\u53d1\u8005\u9605\u8bfb\u4ee3\u7801\u65f6\u4ea7\u751f\u6b67\u4e49"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u6587\u6863\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"FluentValidation")," \u96c6\u6210\u6587\u6863 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I38IOT"},"#I38IOT")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u7b54\u7b54\u7591")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Furion")," \u6846\u67b6\u7248\u672c\u5411\u4e0b\u517c\u5bb9\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I38WMZ"},"#I38WMZ")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u4e0d\u505a\u5b9e\u73b0")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," \u5efa\u8bae ",(0,r.kt)("inlineCode",{parentName:"li"},"SqlSugar")," \u6dfb\u52a0\u52a8\u6001\u5207\u6362\u6570\u636e\u5e93\u529f\u80fd ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I38G4M"},"#I38G4M")),(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," \u5efa\u8bae ",(0,r.kt)("inlineCode",{parentName:"li"},"MessageCenter")," \u91c7\u7528 ",(0,r.kt)("inlineCode",{parentName:"li"},"Channel")," \u5b9e\u73b0 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I38BP8"},"#I38BP8")),(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," \u5efa\u8bae\u63a5\u53e3\u6587\u6863\u6574\u5408 Knife4jUI \u6216 Redoc ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I38S70"},"#I38S70"))))),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"v1140\uff08\u5df2\u53d1\u5e03\uff09"},"v1.14.0\uff08\u5df2\u53d1\u5e03\uff09"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u65b0\u7279\u6027")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"EFCore")," 5.0 \u7684 ",(0,r.kt)("inlineCode",{parentName:"li"},"Oracle")," \u6570\u636e\u5e93\u652f\u6301 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I37Z8E"},"#I37Z8E")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u63a7\u5236\u662f\u5426\u5728\u5f00\u53d1\u73af\u5883\u4e0b\u663e\u793a\u6570\u636e\u5e93\u8fde\u63a5\u4fe1\u606f ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I37YQ2"},"#I37YQ2")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"[NonUnify]")," \u652f\u6301\u5728\u7c7b\u4e2d\u8d34\u6b64\u7279\u6027 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I359Q6"},"#I359Q6")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"\u7f51\u7edc\u8bf7\u6c42")," \u5b57\u7b26\u4e32 ",(0,r.kt)("inlineCode",{parentName:"li"},"HttpClient")," \u62e6\u622a\u5668 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I35F3E"},"#I35F3E")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"HttpContext")," \u53ca ",(0,r.kt)("inlineCode",{parentName:"li"},"HttpRequest")," \u83b7\u53d6\u8fdc\u7a0b\u5730\u5740\u62d3\u5c55 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3688Z"},"#I3688Z")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"services.AddMvcFilter<>")," \u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"li"},"Mvc")," \u8fc7\u6ee4\u5668\u62d3\u5c55 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I368BH"},"#I368BH")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u7a81\u7834\u6027\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u5347\u7ea7]"," \u6846\u67b6\u4f9d\u8d56\u7684 .NET 5 SDK \u81f3\u6700\u65b0\u7248 5.0.3 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I37YQQ"},"#I37YQQ")),(0,r.kt)("li",{parentName:"ul"},"[\u5347\u7ea7]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Swashbuckle.AspNetCore")," \u7ec4\u4ef6\u5305\u5230 ",(0,r.kt)("inlineCode",{parentName:"li"},"6.0.x")," \u7248\u672c ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I37EZK"},"#I37EZK")),(0,r.kt)("li",{parentName:"ul"},"[\u79fb\u9664]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Furion")," \u6846\u67b6 ",(0,r.kt)("inlineCode",{parentName:"li"},"JWT")," \u62d3\u5c55\u7c7b\uff0c\u53ea\u5728 ",(0,r.kt)("inlineCode",{parentName:"li"},"Furion.Extras.Authentication.JwtBearer")," \u4e2d\u4fdd\u7559 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I35D59"},"#I35D59")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u9898\u4fee\u590d")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u4f20\u5165\u9519\u8bef ",(0,r.kt)("inlineCode",{parentName:"li"},"JWT Token")," \u5b57\u7b26\u4e32\u5bfc\u81f4\u81ea\u52a8\u5237\u65b0 ",(0,r.kt)("inlineCode",{parentName:"li"},"Token")," \u51fa\u73b0\u5b57\u7b26\u4e32\u8fb9\u754c\u503c\u5f02\u5e38 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I34ZE5"},"#I34ZE5")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u77ac\u65f6\u4f5c\u7528\u57df\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u4e5f\u4f1a\u81ea\u52a8\u52a0\u5165\u5de5\u4f5c\u5355\u5143\u5bfc\u81f4\u5199\u65e5\u5fd7\u65f6\u8fde\u9501\u5f02\u5e38 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I37WTV"},"#I37WTV")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u5176\u4ed6\u66f4\u6539")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4f18\u5316]"," \u83b7\u53d6\u7cfb\u7edf\u73af\u5883\u53c2\u6570\u7684\u6027\u80fd ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I36SR5"},"#I36SR5")),(0,r.kt)("li",{parentName:"ul"},"[\u4f18\u5316]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Furion")," \u5e95\u5c42\u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"li"},"Mvc")," \u8fc7\u6ee4\u5668\u4ee3\u7801 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I36SKA"},"#I36SKA")),(0,r.kt)("li",{parentName:"ul"},"[\u4f18\u5316]"," \u6dfb\u52a0\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"Json")," \u5e8f\u5217\u5316\u65f6\u95f4\u9ed8\u8ba4\u65f6\u95f4\u683c\u5f0f ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I36SL0"},"#I36SL0")),(0,r.kt)("li",{parentName:"ul"},"[\u5347\u7ea7]"," \u5347\u7ea7 ",(0,r.kt)("inlineCode",{parentName:"li"},"SqlSugar")," \u62d3\u5c55\u5305\u5230 ",(0,r.kt)("inlineCode",{parentName:"li"},"5.0.2.6")," \u7248\u672c ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I36SIG"},"#I36SIG")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u6587\u6863\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u6570\u636e\u5e93\u5165\u95e8\u6587\u6863 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I37Z8S"},"#I37Z8S")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u66f4\u65b0\u65e5\u5fd7\u6587\u6863 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I36PI0"},"#I36PI0")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u8bf7\u6c42\u5ba1\u8ba1\u65e5\u5fd7\u3001\u6267\u884c ",(0,r.kt)("inlineCode",{parentName:"li"},"Sql")," \u66f4\u65b0\u65e5\u5fd7\u6587\u6863 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I36PIK"},"#I36PIK")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u524d\u7aef\u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"li"},"axios")," \u8de8\u57df\u914d\u7f6e\u6587\u6863 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I36PIT"},"#I36PIT")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"App")," \u9759\u6001\u7c7b\u83b7\u53d6\u5e94\u7528\u3001\u73af\u5883\u66f4\u591a\u4fe1\u606f\u6570\u636e ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I36SOV"},"#I36SOV")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u82f1\u6587\u7248 ",(0,r.kt)("inlineCode",{parentName:"li"},"README.md")," \u4ecb\u7ecd ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I37QHP"},"#I37QHP")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u7b54\u7b54\u7591"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u4e0d\u505a\u5b9e\u73b0")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," \u591a\u8bed\u8a00\u8d44\u6e90\u6587\u4ef6\u81ea\u52a8\u521b\u5efa ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I35AA4"},"#I35AA4")),(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," \u5efa\u8bae\u591a\u8bed\u8a00\u52a0\u4e0a\u7ef4\u543e\u5c14\u8bed\u652f\u6301 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I37X1L"},"#I37X1L"))))),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"v1130\uff08\u5df2\u53d1\u5e03\uff09"},"v1.13.0\uff08\u5df2\u53d1\u5e03\uff09"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u65b0\u7279\u6027")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u591a\u8bed\u8a00\u529f\u80fd\u53ca\u62d3\u5c55 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2DOCL"},"#I2DOCL")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u4e8b\u4ef6\u603b\u7ebf\u529f\u80fd\u53ca\u6d88\u606f\u4e2d\u5fc3 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I23BKN"},"#I23BKN")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Swagger")," \u5206\u7ec4\u663e\u793a\u9690\u85cf\u914d\u7f6e ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2AHH8"},"#I2AHH8")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Furion.Extras.Logging.Serilog")," \u62d3\u5c55\u63d2\u4ef6 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2AAN8"},"#I2AAN8")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"cli.ps")," \u652f\u6301 ",(0,r.kt)("inlineCode",{parentName:"li"},"-Namespace")," \u547d\u540d\u7a7a\u95f4\u6307\u5b9a ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2A175"},"#I2A175")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Swagger")," \u89c4\u8303\u5316\u5316\u6587\u6863\u6388\u6743\u5931\u6548\u540e\u81ea\u52a8\u53d6\u6d88\u6388\u6743\u9501 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2AIWC"},"#I2AIWC")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Request.Body")," \u652f\u6301\u91cd\u590d\u8bfb\u529f\u80fd\uff0c\u4e3b\u8981\u89e3\u51b3\u5fae\u4fe1 SDK \u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2AMG0"},"#I2AMG0")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u7f51\u7edc\u8bf7\u6c42\u529f\u80fd\u53ca\u6587\u6863 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2APGJ"},"#I2APGJ")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"SqlSugar")," \u62d3\u5c55\u5305\u652f\u6301\u6253\u5370 ",(0,r.kt)("inlineCode",{parentName:"li"},"sql")," \u5230 ",(0,r.kt)("inlineCode",{parentName:"li"},"MiniProfiler")," \u4e2d ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2ASLS"},"#I2ASLS")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Furion.Extras.DatabaseAccesssor.Dapper")," \u62d3\u5c55\u63d2\u4ef6 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2ASYA"},"#I2ASYA")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Furion.Extras.DatabaseAccessor.PetaPoco")," \u62d3\u5c55\u63d2\u4ef6 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2AUGA"},"#I2AUGA")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u7f51\u7edc\u8bf7\u6c42\u5b57\u7b26\u4e32\u62d3\u5c55\u65b9\u6cd5 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2CPQ0"},"#I2CPQ0")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"SqlSugar")," \u62d3\u5c55\u65b0\u589e ",(0,r.kt)("inlineCode",{parentName:"li"},"PagedList")," \u62d3\u5c55 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2CW99"},"#I2CW99")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u8fdc\u7a0b\u8bf7\u6c42\u652f\u6301\u53c2\u6570\u7279\u6027\u9a8c\u8bc1 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2CX5L"},"#I2CX5L")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"App.User")," \u83b7\u53d6\u5f53\u524d\u6388\u6743\u7528\u6237\u4fe1\u606f\u4fbf\u6377\u65b9\u6cd5 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2CZLO"},"#I2CZLO")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u89c4\u8303\u5316\u6587\u6863\u53ef\u914d\u7f6e\u529f\u80fd\uff0c\u652f\u6301 ",(0,r.kt)("inlineCode",{parentName:"li"},"appsettings.json")," \u914d\u7f6e ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2D1K9"},"#I2D1K9")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u8fdc\u7a0b\u8bf7\u6c42\u62e6\u622a\u5668\u6dfb\u52a0\u65b9\u6cd5\u548c\u65b9\u6cd5\u53c2\u6570 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2D2CM"},"#I2D2CM")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u8fdc\u7a0b\u8bf7\u6c42\u51fa\u9519\u8fd4\u56de\u9ed8\u8ba4\u503c\u652f\u6301 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2D44M"},"#I2D44M")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u8fdc\u7a0b\u8bf7\u6c42 ",(0,r.kt)("inlineCode",{parentName:"li"},"body")," \u53c2\u6570\u5e8f\u5217\u5316\u652f\u6301\u8bbe\u7f6e ",(0,r.kt)("inlineCode",{parentName:"li"},"PropertyNamingPolicy")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2D685"},"#I2D685")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u8fdc\u7a0b\u670d\u52a1\u63a5\u53e3\u5ba2\u6237\u7aef\u914d\u7f6e ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2D7PS"},"#I2D7PS")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"AddInject")," \u548c ",(0,r.kt)("inlineCode",{parentName:"li"},"UseInject")," \u5141\u8bb8\u81ea\u5b9a\u4e49 ",(0,r.kt)("inlineCode",{parentName:"li"},"SecurityDefinitions")," \u548c ",(0,r.kt)("inlineCode",{parentName:"li"},"SwaggerUI")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2DIMG"},"#I2DIMG")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"[SecurityDefine]")," \u9ed8\u8ba4\u6784\u9020\u51fd\u6570 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2DNXT"},"#I2DNXT")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"AspectDispatchProxy")," \u52a8\u6001\u4ee3\u7406\u7c7b ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2DO6I"},"#I2DO6I")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"[QueryParameters]")," \u7279\u6027\uff0c\u652f\u6301\u4e00\u952e\u5c06 ",(0,r.kt)("inlineCode",{parentName:"li"},"Action")," \u53c2\u6570\u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"li"},"[FromQuery]")," \u7279\u6027 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2G8TF"},"#I2G8TF")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u52a8\u6001\u65e5\u5fd7\u914d\u7f6e\u53ca\u62d3\u5c55\u65b9\u6cd5 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2GDGD"},"#I2GDGD")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"WebApi")," \u8bf7\u6c42\u8c13\u8bcd\u9ed8\u8ba4\u89c4\u5219\u914d\u7f6e\u529f\u80fd ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2M70X"},"#I2M70X")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u7a81\u7834\u6027\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u5347\u7ea7]"," ",(0,r.kt)("inlineCode",{parentName:"li"},".NET 5")," SDK \u5230 ",(0,r.kt)("inlineCode",{parentName:"li"},".NET 5.0.2")," \u7248\u672c ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2D0PZ"},"#I2D0PZ")),(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," \u6846\u67b6\u5185\u6240\u6709\u62d3\u5c55\u7c7b\u547d\u540d\u7a7a\u95f4\uff0c\u5168\u90e8\u8fc1\u79fb\u5230 ",(0,r.kt)("inlineCode",{parentName:"li"},"Furion.\u6a21\u5757.Extensions")," \u4e0b ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2AH54"},"#I2AH54")),(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Swagger")," \u8bb0\u4f4f\u6388\u6743\u5b58\u50a8\u65b9\u5f0f\uff0c\u66ff\u6362 ",(0,r.kt)("inlineCode",{parentName:"li"},"Session")," \u5b58\u50a8\u65b9\u5f0f\u4e3a ",(0,r.kt)("inlineCode",{parentName:"li"},"LocalStorage")," \u65b9\u5f0f ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2AKUA"},"#I2AKUA")),(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Furion")," \u6846\u67b6\u5305\u63cf\u8ff0\u6587\u4ef6\uff0c\u51cf\u5c11\u6846\u67b6\u4f53\u79ef ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2APAU"},"#I2APAU")),(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"App.CanBeScanTypes")," \u4e3a ",(0,r.kt)("inlineCode",{parentName:"li"},"App.EffectiveTypes")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2B0ZR"},"#I2B0ZR")),(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"App.ServiceProvider")," \u5c5e\u6027\u5e76\u79fb\u9664 ",(0,r.kt)("inlineCode",{parentName:"li"},"App.GetDuplicateXXX")," \u65b9\u6cd5 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2CYZE"},"#I2CYZE")),(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Db.GetDuplicateDbContext")," \u4e3a ",(0,r.kt)("inlineCode",{parentName:"li"},"Db.GetNewDbContext")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2CZ04"},"#I2CZ04")),(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Db.GetSqlDispatchProxy")," \u4e3a ",(0,r.kt)("inlineCode",{parentName:"li"},"Db.GetSqlProxy")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2DO9T"},"#I2DO9T")),(0,r.kt)("li",{parentName:"ul"},"[\u91cd\u6784]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Aop")," \u670d\u52a1\u62e6\u622a\u5668\uff0c\u652f\u6301\u5f02\u6b65\u3001\u540c\u6b65\u4e24\u79cd\u65b9\u5f0f ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2B9HQ"},"#I2B9HQ")),(0,r.kt)("li",{parentName:"ul"},"[\u91cd\u6784]"," \u7f51\u7edc\u8bf7\u6c42\u6240\u6709\u529f\u80fd ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2BMR7"},"#I2BMR7")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u9898\u4fee\u590d")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Swagger")," \u89c4\u8303\u5316\u5316\u7ed3\u679c\u4e0d\u4e00\u81f4 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2ACF3"},"#I2ACF3")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u6570\u636e\u5e93\u65b0\u589e\u6216\u66f4\u65b0\u5ffd\u7565\u7a7a\u503c\u64cd\u4f5c\u65b9\u6cd5\u62a5\u7a7a\u5f02\u5e38 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2AB6C"},"#I2AB6C")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Startup.cs")," Aop \u5168\u5c40\u62e6\u622a\u65e0\u6548 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2A7T2"},"#I2A7T2")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Token")," \u8fc7\u671f\u540e\u81ea\u52a8\u5237\u65b0 ",(0,r.kt)("inlineCode",{parentName:"li"},"Token")," \u65e0\u6cd5\u83b7\u53d6\u6700\u65b0\u7684\u7528\u6237\u4fe1\u606f bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2AWQI"},"#I2AWQI")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},'[ApiDescriptionSettings(Tag="xx")]')," \u5bfc\u81f4 ",(0,r.kt)("inlineCode",{parentName:"li"},"swagger.json")," \u62a5\u9519 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2B47R"},"#I2B47R")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Mysql")," sql \u6570\u636e\u5e93\u67e5\u8be2\u7ed3\u679c ",(0,r.kt)("inlineCode",{parentName:"li"},"tinyint")," \u7c7b\u578b\u8f6c\u6362\u51fa\u9519 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2BEBM"},"#I2BEBM")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u89c4\u8303\u5316\u7ed3\u679c\u591a\u6b21\u5305\u88f9\u7c7b\u578b bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2BHHZ"},"#I2BHHZ")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u52a8\u6001 Api \u57fa\u5143\u7c7b\u578b\u6570\u7ec4\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2BMS5"},"#I2BMS5")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"sql")," \u67e5\u8be2\u679a\u4e3e\u7c7b\u578b\u8f6c\u6362\u5f02\u5e38 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2BS2Y"},"#I2BS2Y")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"string.SqlQuerizeAsync()")," \u62d3\u5c55\u8fd4\u56de\u9519\u8bef bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2BSTS"},"#I2BSTS")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u52a8\u6001 Api \u5b50\u7c7b\u91cd\u5199\u7236\u7c7b\u65b9\u6cd5\u5e76\u53d6\u522b\u540d\u540e ",(0,r.kt)("inlineCode",{parentName:"li"},"Swagger")," \u5f02\u5e38 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2C9VP"},"#I2C9VP")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u7f51\u7edc\u8bf7\u6c42 ",(0,r.kt)("inlineCode",{parentName:"li"},"application/json")," \u5e8f\u5217\u5316\u5927\u5c0f\u5199\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2CRJC"},"#I2CRJC")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u591a\u6570\u636e\u5e93\u5b9a\u4f4d\u5668\u5b9e\u4f53\u5d4c\u5957\u5173\u8054 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2CVN0"},"#I2CVN0")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u8de8\u57df\u54cd\u5e94\u5934\u8bbe\u7f6e\u65e0\u6548 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2CW5T"},"#I2CW5T")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u8fdc\u7a0b\u7f51\u7edc\u8bf7\u6c42\u4ee3\u7406\u6253\u5370\u5230 ",(0,r.kt)("inlineCode",{parentName:"li"},"MiniProfiler")," bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2CZBC"},"#I2CZBC")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u8fdc\u7a0b\u8bf7\u6c42\u54cd\u5e94\u62e6\u622a\u5668 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2D4DG"},"#I2D4DG")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"SqlSugar")," \u6846\u67b6 ",(0,r.kt)("inlineCode",{parentName:"li"},"AsQueryable()")," \u4e00\u76f4\u8ffd\u52a0\u53c2\u6570 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2DH1D"},"#I2DH1D")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u81ea\u52a8\u5237\u65b0 ",(0,r.kt)("inlineCode",{parentName:"li"},"Token")," \u7a7a\u5f02\u5e38 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2DO29"},"#I2DO29")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u751f\u6210 ",(0,r.kt)("inlineCode",{parentName:"li"},"JWT Token")," \u4e0d\u4f20\u8fc7\u671f\u65f6\u95f4\u51fa\u73b0\u9a8c\u8bc1 401 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2DO8L"},"#I2DO8L")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"AppStartup")," \u6392\u5e8f\u65e0\u6548 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2DVD2"},"#I2DVD2")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u672a\u542f\u7528\u591a\u8bed\u8a00\u670d\u52a1\u65f6\u53cb\u597d\u5f02\u5e38\u548c\u9a8c\u8bc1\u51fa\u73b0\u7a7a\u5f02\u5e38 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2ECUJ"},"#I2ECUJ")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u6570\u636e\u6821\u9a8c\u5b57\u6bcd\u548c\u6570\u5b57\u7ec4\u5408\u65e0\u6cd5\u5339\u914d bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2EF2Q"},"#I2EF2Q")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u6570\u636e\u6821\u9a8c\u624b\u673a\u6216\u56fa\u8bdd\u65e0\u6548 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2M5IZ"},"#I2M5IZ")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Dapper")," \u62d3\u5c55\u89e3\u6790 ",(0,r.kt)("inlineCode",{parentName:"li"},"SqlConnection")," \u5f02\u5e38 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2M5P2"},"#I2M5P2")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u5f00\u542f\u591a\u8bed\u8a00\u540e\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"EF")," \u8fc1\u79fb\u5f02\u5e38 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2M7DT"},"#I2M7DT")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"IEntityTypeBuilder")," \u4e0d\u652f\u6301\u591a\u91cd\u7ee7\u627f bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2PAOD"},"#I2PAOD")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"JwtHandler")," \u8bbe\u7f6e\u81ea\u52a8\u5237\u65b0\u540e\uff0c\u533f\u540d\u8bbf\u95ee\u65e0\u6cd5\u901a\u8fc7 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2SDOX"},"#I2SDOX")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Dapper")," \u62d3\u5c55\u4e2d ",(0,r.kt)("inlineCode",{parentName:"li"},"SqlServer")," \u6570\u636e\u5e93\u83b7\u53d6\u8fde\u63a5\u5bf9\u8c61\u7c7b\u578b bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/pulls/159"},"#PR159")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u5176\u4ed6\u66f4\u6539")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4f18\u5316]"," \u79fb\u9664 ",(0,r.kt)("inlineCode",{parentName:"li"},"Sql")," \u67e5\u8be2\u7ed3\u679c\u6620\u5c04\u68c0\u67e5 ",(0,r.kt)("inlineCode",{parentName:"li"},"[NotMapper]")," \u7279\u6027\u673a\u5236 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I34XD0"},"#I34XD0")),(0,r.kt)("li",{parentName:"ul"},"[\u4f18\u5316]"," \u4f9d\u8d56\u6ce8\u5165\u65f6\u6392\u9664 ",(0,r.kt)("inlineCode",{parentName:"li"},"IDynamicApiController")," \u63a5\u53e3 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2ECTG"},"#I2ECTG")),(0,r.kt)("li",{parentName:"ul"},"[\u4f18\u5316]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"MD5")," \u52a0\u5bc6\u6027\u80fd ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/pulls/158"},"#PR158")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u6587\u6863\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u91cd\u6784]"," \u6587\u6863\u9996\u9875 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I34XBR"},"#I34XBR")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u7f51\u7edc\u8bf7\u6c42\u6587\u6863 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2APGJ"},"#I2APGJ")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u591a\u8bed\u8a00\u6587\u6863 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2DOCL"},"#I2DOCL")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u6587\u6863\u5168\u6587\u641c\u7d22\u5f15\u64ce ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I34XAW"},"#I34XAW")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u5168\u5c40\u9759\u6001\u7c7b\u7c7b\u578b ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I34XB4"},"#I34XB4")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u6846\u67b6\u53ef\u914d\u7f6e\u9009\u9879\u6587\u6863 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I34XB9"},"#I34XB9")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u4e8b\u4ef6\u603b\u7ebf\u6587\u6863 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I34XBI"},"#I34XBI")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u6570\u636e\u52a0\u89e3\u5bc6\u6587\u6863 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I34XC0"},"#I34XC0")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u8d21\u732e\u6307\u5357\u6587\u6863 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I34XC8"},"#I34XC8")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"HttpContext")," \u53ca ",(0,r.kt)("inlineCode",{parentName:"li"},"\u6587\u4ef6\u4e0a\u4f20\u4e0b\u8f7d")," \u535a\u5ba2\u6587\u7ae0 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I34XCB"},"#I34XCB")),(0,r.kt)("li",{parentName:"ul"},"[\u5176\u4ed6]"," \u6587\u6863\u5c0f\u8c03\u6574\uff0c\u5c0f\u4f18\u5316"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u7b54\u7b54\u7591")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u8de8\u57df\u8bbe\u7f6e\u65e0\u6548 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2ASNJ"},"#I2ASNJ")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"MVC")," \u89c6\u56fe\u65e0\u6548\uff0c\u539f\u56e0\u662f ",(0,r.kt)("inlineCode",{parentName:"li"},".cshtml")," \u6587\u4ef6\u6ca1\u6709\u8bbe\u7f6e\u4e3a ",(0,r.kt)("inlineCode",{parentName:"li"},"\u5185\u5bb9")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2AXUU"},"#I2AXUU")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Sql")," \u64cd\u4f5c\u53ef\u4ee5\u5b9e\u73b0\u4e8b\u52a1\u5417\uff1f",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2B0NX"},"#I2B0NX")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"IRepository")," \u64cd\u4f5c\u6570\u636e\u5e93\u4f1a\u6253\u5f00\u591a\u6b21\u6570\u636e\u5e93\u8fde\u63a5 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2BB7B"},"#I2BB7B")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u5982\u4f55\u8fdb\u5165\u81ea\u5b9a\u4e49 ",(0,r.kt)("inlineCode",{parentName:"li"},"AppAuthorizeHandler")," \u65ad\u70b9 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2BGXY"},"#I2BGXY")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"SqlSugar")," \u6ce8\u5165\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2C2AQ"},"#I2C2AQ")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u5efa\u8bae\u589e\u52a0 API \u7b7e\u540d\u9a8c\u8bc1\uff0c\u65f6\u6548\u9a8c\u8bc1 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2C6ET"},"#I2C6ET")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u591a\u6570\u636e\u5e93\u591a\u79df\u6237\u540c\u65f6\u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"li"},"Add-Migration")," \u62a5\u9519 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2CEHS"},"#I2CEHS")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"ISqlSugarRepository")," \u6ca1\u6709 ",(0,r.kt)("inlineCode",{parentName:"li"},"Getxxx")," \u65b9\u6cd5 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2CJLZ"},"#I2CJLZ")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"cli.ps1")," \u5982\u4f55\u5c06 ",(0,r.kt)("inlineCode",{parentName:"li"},"sql")," \u91cc\u7684\u8868\u5bfc\u51fa\u6210 ",(0,r.kt)("inlineCode",{parentName:"li"},"model")," \u7c7b ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2CSUL"},"#I2CSUL")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u624b\u52a8\u4fee\u6539 ",(0,r.kt)("inlineCode",{parentName:"li"},"Swagger")," \u7ec8\u7ed3\u70b9\u8def\u5f84\u65e0\u6548 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2D608"},"#I2D608")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"DefaultDbContext")," \u4e0d\u80fd\u8bc6\u522b ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2DCZX"},"#I2DCZX")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u5404\u5206\u5c42\u9879\u76ee ",(0,r.kt)("inlineCode",{parentName:"li"},"Startup.cs")," \u652f\u6301 ",(0,r.kt)("inlineCode",{parentName:"li"},"Configuration")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2DDUP"},"#I2DDUP")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Aop")," \u65e0\u6cd5\u62e6\u622a\uff0c\u65e0\u6548 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2DEY8"},"#I2DEY8")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"mysql")," \u6267\u884c ",(0,r.kt)("inlineCode",{parentName:"li"},"Add-Migration")," \u62a5\u9519 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2DSB8"},"#I2DSB8"),"\\"),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Entity")," \u521b\u5efa\u65f6\u95f4\u548c\u662f\u5426\u5220\u9664\u6dfb\u52a0\u9ed8\u8ba4\u503c ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2E04H"},"#I2E04H")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"swagger")," \u4e2d\u591a\u4e2a ",(0,r.kt)("inlineCode",{parentName:"li"},"servers")," \u8bbe\u7f6e ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2E0IF"},"#I2E0IF")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u5168\u5c40\u7b5b\u9009\u5668 \u6ca1\u6709\u6267\u884c ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2E5R4"},"#I2E5R4")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u591a\u6570\u636e\u5e93\u5b9a\u4f4d\u5668\u7591\u95ee ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2E77T"},"#I2E77T")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"cli.ps")," \u9006\u5411\u5de5\u7a0b ",(0,r.kt)("inlineCode",{parentName:"li"},"Mysql")," \u6570\u636e\u5e93\u62a5\u9519 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2E7I5"},"#I2E7I5")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Swagger")," \u5f00\u53d1\u73af\u5883 ",(0,r.kt)("inlineCode",{parentName:"li"},"applicationsettings.json")," \u4e2d\u6587\u4e71\u7801 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2EAG1"},"#I2EAG1")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u589e\u52a0\u6307\u5b9a\u8def\u5f84\u7a0b\u5e8f\u96c6\u6620\u5c04 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2EEO2"},"#I2EEO2")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u52a8\u6001\u7f16\u8bd1 ",(0,r.kt)("inlineCode",{parentName:"li"},"cs")," \u811a\u672c\u6587\u4ef6 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2EH66"},"#I2EH66")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u81ea\u5b9a\u4e49\u4e2d\u95f4\u4ef6\uff0c\u8fd4\u56de\u7684\u9519\u8bef\u6ca1\u6709\u89c4\u8303\u5316\u7ed3\u679c ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2NV8S"},"#I2NV8S")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Swagger")," \u5faa\u73af\u5f15\u7528\u8bbe\u7f6e\u751f\u6210\u6587\u6863\u5c42\u7ea7\u65e0\u6548 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2PLQQ"},"#I2PLQQ")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u914d\u7f6e\u6587\u4ef6\u652f\u6301 ",(0,r.kt)("inlineCode",{parentName:"li"},"yaml")," \u6587\u4ef6\u5417? ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2TJ3N"},"#I2TJ3N")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u4fee\u6539\u6570\u636e\u5e93\u672a ",(0,r.kt)("inlineCode",{parentName:"li"},"mysql")," \u6267\u884c ",(0,r.kt)("inlineCode",{parentName:"li"},"Add-Migration")," \u62a5\u9519 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2VR64"},"#I2VR64")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u591a\u6570\u636e\u5e93\u4f7f\u7528\u5b9a\u4f4d\u5668\u65f6\u62a5\u9519 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2VR8F"},"#I2VR8F")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Migration To Oracle")," \u5f02\u5e38 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2WBYQ"},"#I2WBYQ")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u5f00\u53d1\u65f6\u663e\u793a ",(0,r.kt)("inlineCode",{parentName:"li"},"Swagger"),"\uff0c\u4e0a\u7ebf\u65f6\u5173\u95ed ",(0,r.kt)("inlineCode",{parentName:"li"},"Swagger"),"\uff0c\u8fd9\u9700\u8981\u600e\u4e48\u914d\u7f6e ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2WOYV"},"#I2WOYV")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u517c\u5bb9 Mvc \u590d\u6742\u9a8c\u8bc1\u6ca1\u6709\u8bd5\u9a8c\u6210\u529f ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2X3GV"},"#I2X3GV")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Aop")," \u80fd\u4e0d\u80fd\u652f\u6301\u65e0\u63a5\u53e3\u7684\u7c7b ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2X8AS"},"#I2X8AS")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u5173\u4e8e ",(0,r.kt)("inlineCode",{parentName:"li"},"JWT Token")," \u81ea\u52a8\u5237\u65b0\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2YD4K"},"#I2YD4K")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u80fd\u5426\u589e\u52a0\u4e00\u4e2a\u62d3\u5c55\u7684 ",(0,r.kt)("inlineCode",{parentName:"li"},"Entity"),"\uff0c\u589e\u52a0\u4e00\u4e9b\u62d3\u5c55\u7684\u5c5e\u6027 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2YDKT"},"#I2YDKT")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Furion")," \u65e0\u6cd5\u8fd8\u539f\u5305\uff0c\u4f7f\u7528",(0,r.kt)("inlineCode",{parentName:"li"},"Nuget")," \u4e0b\u8f7d\u548c\u901a\u8fc7\u6700\u65b0\u7684\u7684\u811a\u624b\u67b6\u4e0b\u8f7d\u90fd\u63d0\u793a\u8fd9\u4e2a\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I30446"},"#I30446")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u590d\u6742\u6821\u9a8c\u4e0e\u7279\u6027\u9a8c\u8bc1\u4e0d\u80fd\u5e76\u884c ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3046U"},"#I3046U")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u4e0d\u505a\u5b9e\u73b0")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," \u5f15\u5165 Webhook \u673a\u5236 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2A3I0"},"#I2A3I0")),(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," \u589e\u52a0 blog \u5b58\u50a8\u670d\u52a1 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2AMBP"},"#I2AMBP")),(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," Blazor Server \u73af\u5883\u4e0b EF \u7684 DbContext \u591a\u7ebf\u7a0b\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2AMD2"},"#I2AMD2")),(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," \u5e0c\u671b\u5b9e\u73b0\u5de5\u4f5c\u5355\u5143\u64cd\u4f5c\u63a5\u53e3\uff08IUnitOfWork\uff09",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2AOR5"},"#I2AOR5")),(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," \u5efa\u8bae\u65b0\u589e ",(0,r.kt)("inlineCode",{parentName:"li"},"string.ToPagedListAsync()")," \u64cd\u4f5c ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2BZ3Z"},"#I2BZ3Z")),(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," \u5efa\u8bae\u65b0\u589e ",(0,r.kt)("inlineCode",{parentName:"li"},"GraphQL"),"\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"OData")," \u529f\u80fd ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2C9EH"},"#I2C9EH")),(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," \u8feb\u5207\u671f\u671b\u652f\u6301 CAP \u5206\u5e03\u5f0f\u4e8b\u52a1 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2CBRF"},"#I2CBRF")),(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," \u5982\u4f55\u8ba9\u67d0\u4e2a\u65b9\u6cd5\u6216\u5b9e\u4f53\u53d8\u5316\u540e\uff0c\u4e0d\u88ab ",(0,r.kt)("inlineCode",{parentName:"li"},"SavingChangesEvent")," \u7b49\u62e6\u622a ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2CEM9"},"#I2CEM9")),(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," \u5efa\u8bae\u65e5\u5fd7\u5c01\u88c5\u589e\u52a0\u66f4\u591a\u62d3\u5c55\uff0c\u6bd4\u5982\uff1a\u81ea\u5b9a\u4e49\u4fdd\u5b58\u65e5\u5fd7\u6587\u4ef6 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2CW8V"},"#I2CW8V")),(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," \u5bf9 ",(0,r.kt)("inlineCode",{parentName:"li"},"SqlSugar")," \u7684\u652f\u6301\uff0c\u589e\u52a0 ",(0,r.kt)("inlineCode",{parentName:"li"},"Nuget")," \u811a\u624b\u67b6 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2D91U"},"#I2D91U")),(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," \u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"li"},"Middleware")," \u5b9e\u73b0\u53cd\u5411\u4ee3\u7406 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2DKM1"},"#I2DKM1")),(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," \u652f\u6301\u914d\u7f6e\u591a\u4e2a ",(0,r.kt)("inlineCode",{parentName:"li"},"Aop")," \u529f\u80fd ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2E6Z2"},"#I2E6Z2")),(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," \u662f\u5426\u8ba1\u5212\u5f00\u53d1\u7c7b\u4f3c\u7f51\u5173\u7684\u529f\u80fd ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2PD1L"},"#I2PD1L")),(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"waring CS8002"),": \u5f15\u7528\u7a0b\u5e8f\u96c6 ",(0,r.kt)("inlineCode",{parentName:"li"},"Furion")," \u6ca1\u6709\u5f3a\u540d\u79f0 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2WDN2"},"#I2WDN2")),(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," Oracle \u6570\u636e\u5e93\u9a71\u52a8\u96c6\u6210 ",(0,r.kt)("inlineCode",{parentName:"li"},"Devart.Data.Oracle.Entity.EFCore")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2XJIU"},"#I2XJIU"))))),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"v170\uff08\u5df2\u53d1\u5e03\uff09"},"v1.7.0\uff08\u5df2\u53d1\u5e03\uff09"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u65b0\u7279\u6027")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Furion.Extras.ObjectMapper.Mapster")," \u62d3\u5c55\u5305 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I29LSJ"},"#I29LSJ")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Furion.Extras.Logging.Serilog")," \u62d3\u5c55\u5305 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2AAN8"},"#I2AAN8")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Furion.Extras.Web.HttpContext")," \u62d3\u5c55\u5305 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I29LSM"},"#I29LSM")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u5185\u7f6e ",(0,r.kt)("inlineCode",{parentName:"li"},"Token")," \u5237\u65b0\u673a\u5236\u652f\u6301 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I29K57"},"#I29K57")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u52a8\u6001\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\uff0c\u652f\u6301\u8fd0\u884c\u65f6\u6267\u884c ",(0,r.kt)("inlineCode",{parentName:"li"},"OnModelCreating")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I28UDT"},"#I28UDT")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u652f\u6301\u4f9d\u8d56\u6ce8\u5165\u6392\u9664\u6307\u5b9a\u63a5\u53e3 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I29693"},"#I29693")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u89c4\u8303\u5316\u7ed3\u679c\u8fd4\u56de\u65f6\u95f4\u6233\u5b57\u6bb5 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I29697"},"#I29697")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u57fa\u7840 ",(0,r.kt)("inlineCode",{parentName:"li"},"CURD")," \u7236\u7c7b\u64cd\u4f5c\u4f8b\u5b50 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I296SR"},"#I296SR")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},'sql.Change("\u5b9a\u4f4d\u5668\u5b8c\u6574\u7c7b\u578b\u540d\u79f0")')," \u652f\u6301 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I29LAB"},"#I29LAB")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"UpdateInclude")," \u548c ",(0,r.kt)("inlineCode",{parentName:"li"},"UpdateExclude")," \u5ffd\u7565\u7a7a\u53c2\u6570\u652f\u6301 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I29VUG"},"#I29VUG")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u5185\u7f6e\u5047\u5220\u9664\u67e5\u8be2\u8fc7\u6ee4\u5668\u652f\u6301 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I29Y2R"},"#I29Y2R")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u5ffd\u7565\u7a7a\u503c\u6392\u9664\u9ed8\u8ba4\u65f6\u95f4\u683c\u5f0f ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I29VUV"},"#I29VUV")),(0,r.kt)("li",{parentName:"ul"},"[\u5347\u7ea7]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"MiniProfiler")," \u7ec4\u4ef6 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I297R9"},"#I297R9")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u7a81\u7834\u6027\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"AppAuthorizeHandler")," \u6388\u6743\u7ba1\u9053\u4e3a\u5f02\u6b65\u5904\u7406 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I29MD9"},"#I29MD9")),(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Swagger")," \u9ed8\u8ba4\u542f\u7528 ",(0,r.kt)("inlineCode",{parentName:"li"},"JWT")," \u6388\u6743\u652f\u6301 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I29LI4"},"#I29LI4")),(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"HttpContextUtilities")," \u540d\u79f0\u6539\u4e3a ",(0,r.kt)("inlineCode",{parentName:"li"},"HttpContextLocal")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I29KQE"},"#I29KQE")),(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"UnifyResultContext")," \u540d\u79f0\u6539\u4e3a ",(0,r.kt)("inlineCode",{parentName:"li"},"UnifyContext")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I29LLZ"},"#I29LLZ")),(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," \u53ea\u6709\u6267\u884c\u8fc1\u79fb\u547d\u4ee4\u624d\u626b\u63cf\u79cd\u5b50\u6570\u636e ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I29E6P"},"#I29E6P")),(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," \u89c4\u8303\u5316\u7ed3\u679c ",(0,r.kt)("inlineCode",{parentName:"li"},"Successed")," \u5c5e\u6027\u540d\u4e3a ",(0,r.kt)("inlineCode",{parentName:"li"},"Succeeded")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I29NMV"},"#I29NMV")),(0,r.kt)("li",{parentName:"ul"},"[\u79fb\u9664]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Mapster")," \u5bf9\u8c61\u7ec4\u4ef6\uff0c\u91c7\u7528\u63d0\u4f9b\u62d3\u5c55\u65b9\u5f0f ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I29D2M"},"#I29D2M")),(0,r.kt)("li",{parentName:"ul"},"[\u79fb\u9664]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"CacheManager")," \u62d3\u5c55\u7c7b ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I29LU1"},"#I29LU1")),(0,r.kt)("li",{parentName:"ul"},"[\u91cd\u6784]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"SaveChanges")," \u62e6\u622a\u5668 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I292LO"},"#I292LO")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u9898\u4fee\u590d")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u672a\u6ce8\u518c\u7684\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u4e5f\u88ab\u5f15\u7528\u5168\u5c40\u67e5\u8be2\u62e6\u622a\u5668 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I29ZXJ"},"#I29ZXJ")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u624b\u52a8\u8fd4\u56de ",(0,r.kt)("inlineCode",{parentName:"li"},"BadObjectResult")," \u6216 ",(0,r.kt)("inlineCode",{parentName:"li"},"ValidationProblemDetails")," \u7ed3\u679c\u7c7b\u578b\u65f6\u89c4\u8303\u5316\u7ed3\u679c\u5931\u6548 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I29ZU9"},"#I29ZU9")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u52a8\u6001 WebApi ",(0,r.kt)("inlineCode",{parentName:"li"},"KeepName"),"\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"KeepVerb"),"\u3001",(0,r.kt)("inlineCode",{parentName:"li"},"SplitCamelCase")," \u65e0\u6548 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I29X90"},"#I29X90")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Sql\u4ee3\u7406")," \u8fd4\u56de ",(0,r.kt)("inlineCode",{parentName:"li"},"\u5143\u7ec4")," \u7c7b\u578b\u51fa\u9519 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I29SMV"},"#I29SMV")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"401\uff0c403")," \u72b6\u6001\u7801\u89c4\u8303\u5316\u8fd4\u56de\u503c\u5c5e\u6027\u53d8\u5927\u5199 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I29M8Y"},"#I29M8Y")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"HttpContext")," \u7a7a\u5f02\u5e38 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I29LU4"},"#I29LU4")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u63a5\u53e3\u65e0\u8fd4\u56de\u503c\u6ca1\u6709\u5e94\u7528\u89c4\u8303\u5316\u7ed3\u679c bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I29GT7"},"#I29GT7")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u524d\u7aef ",(0,r.kt)("inlineCode",{parentName:"li"},"Less")," \u914d\u7f6e\u6587\u4ef6\u5bfc\u81f4\u4e3b\u673a\u542f\u52a8\u5931\u8d25 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I29E7P"},"#I29E7P")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u6267\u884c ",(0,r.kt)("inlineCode",{parentName:"li"},"sql")," \u7ed3\u679c\u8f6c\u6cdb\u578b\u540e\u5c5e\u6027\u91cd\u590d\u8d4b\u503c bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I29BUO"},"#I29BUO")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Swagger")," \u5173\u95ed ",(0,r.kt)("inlineCode",{parentName:"li"},"MiniProfiler")," \u4e4b\u540e ",(0,r.kt)("inlineCode",{parentName:"li"},"\u7ec4\u4e2d\u7ec4")," \u5931\u6548 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I29789"},"#I29789")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u672a\u542f\u7528\u89c4\u8303\u5316\u7ed3\u679c\u65f6\u5f02\u5e38\u8fd4\u56de ",(0,r.kt)("inlineCode",{parentName:"li"},"System.Object")," \u5b57\u7b26 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2969A"},"#I2969A")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u6b63\u6570\u6570\u636e\u9a8c\u8bc1 0 \u4e5f\u9a8c\u8bc1\u901a\u8fc7 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2955T"},"#I2955T")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u975e\u6cdb\u578b\u7c7b\u96c6\u6210\u6cdb\u578b\u63a5\u53e3\u4f9d\u8d56\u6ce8\u5165 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I294YT"},"#I294YT")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Swagger")," \u4e0d\u652f\u6301 ",(0,r.kt)("inlineCode",{parentName:"li"},"new")," \u8986\u76d6\u7236\u7c7b\u7684 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I28Z1A"},"#I28Z1A")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"JsonSerializerUtility")," \u6ca1\u6709\u516c\u5f00 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I28WMI"},"#I28WMI")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"SqlSugar")," \u62d3\u5c55\u67e5\u8be2\u6cdb\u578b\u7c7b\u578b\u6ce8\u518c\u5f02\u5e38 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I28VMT"},"#I28VMT")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Furion Tools")," \u4e0d\u652f\u6301\u751f\u6210\u4e0d\u540c\u547d\u540d\u7a7a\u95f4\u7684\u5b9e\u4f53 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2A175"},"#I2A175")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u5168\u5c40\u62e6\u622a\u5668\u65e0\u6548 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2A7T2"},"#I2A7T2")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u65b0\u589e\u6216\u66f4\u65b0\u5ffd\u7565\u7a7a\u503c\u7a7a\u5f02\u5e38 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2AB6C"},"#I2AB6C")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u5176\u4ed6\u66f4\u6539")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4f18\u5316]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Token")," \u751f\u6210\u52a0\u5bc6\u7b97\u6cd5 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I29KIH"},"#I29KIH")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u6587\u6863\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u65e5\u5fd7\u6587\u6863 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I28Y9D"},"#I28Y9D")),(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," \u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u3001\u5b9e\u4f53\u62e6\u622a\u5668\u3001\u914d\u7f6e\u3001\u4e00\u5206\u949f\u5165\u95e8\u7b49\u7b49\u6587\u6863"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u7b54\u7b54\u7591")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u95ee\u7b54]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Swagger")," \u5982\u4f55\u5b9e\u73b0\u6388\u6743\u8bbf\u95ee ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I294F2"},"#I294F2")),(0,r.kt)("li",{parentName:"ul"},"[\u95ee\u7b54]"," \u5982\u4f55\u5b9e\u73b0\u591a\u4e2a\u6570\u636e\u5e93\u591a\u5bf9\u591a\u5b9e\u4f53\u914d\u7f6e ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I29G6S"},"#I29G6S")),(0,r.kt)("li",{parentName:"ul"},"[\u95ee\u7b54]"," \u52a8\u6001 WebApi \u652f\u6301\u6587\u4ef6\u4e0a\u4f20\u5417 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I29R5E"},"#I29R5E")),(0,r.kt)("li",{parentName:"ul"},"[\u7591\u95ee]"," \u591a\u4e2a\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u65e0\u6cd5\u751f\u6210\u8fc1\u79fb\u4ee3\u7801 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2A6II"},"#I2A6II")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u4e0d\u505a\u5b9e\u73b0")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," \u5b9e\u73b0 ",(0,r.kt)("inlineCode",{parentName:"li"},"BuildChange")," \u4f20\u5165\u8868\u540d ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I292SN"},"#I292SN")),(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," \u6267\u884c\u6570\u636e\u5e93\u64cd\u4f5c\u7ed3\u679c\u4e0d\u652f\u6301\u5c5e\u6027\u5ffd\u7565\u5927\u5c0f\u5199\u8d4b\u503c ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I29DRQ"},"#I29DRQ")),(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," \u5f15\u5165 ",(0,r.kt)("inlineCode",{parentName:"li"},"Webhook")," \u673a\u5236 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2A3I0"},"#I2A3I0"))))),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"v140\uff08\u5df2\u53d1\u5e03\uff09"},"v1.4.0\uff08\u5df2\u53d1\u5e03\uff09"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u65b0\u7279\u6027")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Furion")," \u652f\u6301\u4e8c\u7ea7\u865a\u62df\u76ee\u5f55\u90e8\u7f72\u529f\u80fd ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I28B77"},"#I28B77")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Furion.Template.RazorWithWebApi")," \u811a\u624b\u67b6 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I28QGI"},"#I28QGI")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Furion.Template.BlazorWithWebApi")," \u811a\u624b\u67b6 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I27Z3O"},"#I27Z3O")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"EFCore")," \u65f6\u6001\u67e5\u8be2\u62d3\u5c55 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I28AJ6"},"#I28AJ")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"[AppDbContext(\u8fde\u63a5\u5b57\u7b26\u4e32\uff0c\u6570\u636e\u5e93\u7c7b\u578b)]")," \u914d\u7f6e\u652f\u6301 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I28QTB"},"#I28QTB")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"DateTimeOffset")," \u8f6c ",(0,r.kt)("inlineCode",{parentName:"li"},"DateTime")," \u62d3\u5c55\u65b9\u6cd5 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I27MQA"},"#I27MQA")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"ValidationTypes")," \u9a8c\u8bc1\u6b63\u5219\u8868\u8fbe\u5f0f\u667a\u80fd\u63d0\u793a ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2801V"},"#I2801V")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"ValiationTypes.WordWithNumber")," \u9a8c\u8bc1 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2805A"},"#I2805")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u83b7\u53d6\u5ba2\u6237\u7aef\u548c\u670d\u52a1\u7aef IP \u5730\u5740 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I28QV9"},"#I28QV9")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u7a81\u7834\u6027\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u5347\u7ea7]"," .NET 5.0 \u7248\u672c\u81f3 .NET 5.0.1 \u7248\u672c ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I28QU1"},"#I28QU")),(0,r.kt)("li",{parentName:"ul"},"[\u91cd\u6784]"," \u89c6\u56fe\u5f15\u64ce\u529f\u80fd\uff0c\u4f18\u5316\u4e0d\u89c4\u8303\u547d\u540d\u548c\u65b0\u589e\u5b57\u7b26\u4e32\u6a21\u677f\u7f16\u8bd1 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I28G0S"},"#I28G0S")),(0,r.kt)("li",{parentName:"ul"},"[\u91cd\u6784]"," \u6570\u636e\u5e93\u5b9e\u4f53\u67e5\u627e\u7b97\u6cd5\uff0c\u5e76\u4f18\u5316\u6027\u80fd ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I28QUQ"},"#I28QUQ")),(0,r.kt)("li",{parentName:"ul"},"[\u4f18\u5316]"," \u5e94\u7528\u542f\u52a8\u521d\u59cb\u5316\u6027\u80fd\u548c\u6570\u636e\u5e93\u7b2c\u4e00\u6b21\u81ea\u52a8\u914d\u7f6e ",(0,r.kt)("inlineCode",{parentName:"li"},"DbSet")," \u6027\u80fd"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u9898\u4fee\u590d")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u591a\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u914d\u7f6e\u5b9a\u4f4d\u5668\u540e\u5b9e\u4f53\u65e0\u6cd5\u6b63\u786e\u751f\u6210 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2888L"},"#I2888L")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u591a\u79df\u6237\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u5b9e\u4f53\u751f\u6210 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2891G"},"#I2891G")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u5bf9\u8c61\u9a8c\u8bc1\u5931\u8d25\u63d0\u793a\u6d88\u606f\u6ca1\u6709\u5e94\u7528 ",(0,r.kt)("inlineCode",{parentName:"li"},"JSON")," \u5927\u5c0f\u5199\u914d\u7f6e bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I27UTX"},"#I27UTX")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u4ed3\u50a8 ",(0,r.kt)("inlineCode",{parentName:"li"},"Insert")," \u6216 ",(0,r.kt)("inlineCode",{parentName:"li"},"Update")," \u65b9\u6cd5\u6307\u5b9a ",(0,r.kt)("inlineCode",{parentName:"li"},"ignoreNullValues")," \u65e0\u6548 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I27UN6"},"#I27UN6")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Controller")," \u6d3e\u751f\u7c7b\u5982\u679c\u8d34\u4e86 ",(0,r.kt)("inlineCode",{parentName:"li"},"[Route]")," \u7279\u6027\u540e\u51fa\u73b0\u5728 ",(0,r.kt)("inlineCode",{parentName:"li"},"Swagger")," \u4e2d bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I27TN7"},"#I27TN7")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"SqlScalar")," \u6267\u884c ",(0,r.kt)("inlineCode",{parentName:"li"},"sql")," \u8fd4\u56de ",(0,r.kt)("inlineCode",{parentName:"li"},"Nullable")," \u7c7b\u578b\u51fa\u73b0\u8f6c\u6362\u5931\u8d25 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I27S2N"},"#I27S2N")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"[UnitOfWork]")," \u7279\u6027\u5f02\u5e38 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I27MLM"},"#I27MLM")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"sql")," \u9759\u6001\u6267\u884c\u65b9\u5f0f\u548c ",(0,r.kt)("inlineCode",{parentName:"li"},"sql")," \u9ad8\u7ea7\u4ee3\u7406\u65e0\u6cd5\u76d1\u542c\u6570\u636e\u5e93\u8fde\u63a5\u72b6\u6001 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I27M4F"},"#I27M4F")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u4fee\u590d\u66f4\u6362 Json \u5e8f\u5217\u5316\u5e93\u65e0\u6548 bug\uff0c\u5982\u66ff\u6362\u4e3a ",(0,r.kt)("inlineCode",{parentName:"li"},"Microsoft.AspNetCore.Mvc.NewtonsoftJson")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I27M43"},"#I27M43")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Furion Tools")," \u5de5\u5177\u751f\u6210\u6a21\u578b bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I27XI5"},"#I27XI5")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u8f6f\u5220\u9664\u6ca1\u6709\u751f\u6548 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2804I"},"#I2804I")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Furion Tools")," \u8bc6\u522b\u5e26\u591a\u4e2a ",(0,r.kt)("inlineCode",{parentName:"li"},"\\\\")," \u7684\u8fde\u63a5\u5b57\u7b26\u4e32\u8bc6\u522b bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I280TS"},"#I280TS"),"\uff0c",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/pulls/91"},"#PR91")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Furion Tools")," \u65e0\u6cd5\u53d6\u6d88\u751f\u6210 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2816M"},"#I2816M")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"DateTimeOffset")," \u8f6c\u672c\u5730\u65f6\u95f4\u5dee 8 \u5c0f\u65f6 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I28BA9"},"#I28BA9")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u542f\u7528 ",(0,r.kt)("inlineCode",{parentName:"li"},"bundle js&css")," \u538b\u7f29\u540e\u542f\u52a8\u5f02\u5e38 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I28KRP"},"#I28KR")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"ValidationTypes.Required")," \u65e0\u6548 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/pulls/98"},"#PR98")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u89c4\u8303\u5316\u7ed3\u679c",(0,r.kt)("inlineCode",{parentName:"li"},"OnValidateFailed")," \u53c2\u6570\u540d\u62fc\u5199\u9519\u8bef bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/pulls/93"},"#PR93"),"\uff0c",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/pulls/92"},"#PR92")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u6388\u6743\u7ba1\u9053\u9a8c\u8bc1\u5931\u8d25\u8fd8\u663e\u793a\u7ed3\u679c bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/pulls/89"},"#PR89")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u5176\u4ed6\u66f4\u6539")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u66f4\u65b0]"," README.md \u53cb\u60c5\u8fde\u63a5\u5730\u5740 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/pulls/88"},"#PR88")),(0,r.kt)("li",{parentName:"ul"},"[\u66f4\u65b0]"," \u6a21\u677f\u811a\u624b\u67b6\u6e90\u7801\uff0c\u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"li"},"EFCore Tools")," \u5e93 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/pulls/87"},"#PR87")),(0,r.kt)("li",{parentName:"ul"},"[\u66f4\u65b0]"," README.md Nuget \u56fe\u6807 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/pulls/85"},"#PR85")),(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," \u5c06 ",(0,r.kt)("inlineCode",{parentName:"li"},"List")," \u8f6c ",(0,r.kt)("inlineCode",{parentName:"li"},"DateTable")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/pulls/97"},"#PR97")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u6587\u6863\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u89c6\u56fe\u5f15\u64ce\u6a21\u677f\u6587\u6863 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I27ZVA"},"#I27ZVA")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"EFCore")," \u65f6\u6001\u67e5\u8be2\u6587\u6863 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I28AJ6"},"#I28AJ"),", ",(0,r.kt)("a",{parentName:"li",href:"https://dotnetchina.gitee.io/furion/docs/dbcontext-hight-query/#91111-%E6%97%B6%E6%80%81%E6%9F%A5%E8%AF%A2"},"DOC")),(0,r.kt)("li",{parentName:"ul"},"[\u66f4\u65b0]"," \u4ed3\u50a8\u6587\u6863\u4e66\u5199\u7eb0\u6f0f bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/pulls/90"},"#PR90")),(0,r.kt)("li",{parentName:"ul"},"[\u66f4\u65b0]"," \u9009\u9879\u6587\u6863\u9519\u8bef bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/pulls/86"},"#PR86")),(0,r.kt)("li",{parentName:"ul"},"[\u66f4\u65b0]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"\u5b9e\u4f53\u6570\u636e\u76d1\u542c\u5668")," \u6587\u6863\u4e66\u5199\u9519\u8bef bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/pulls/83/files"},"#PR83")),(0,r.kt)("li",{parentName:"ul"},"[\u66f4\u65b0]"," \u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u3001\u591a\u6570\u636e\u5e93\u3001\u811a\u624b\u67b6\u7b49\u6587\u6863"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u7b54\u7b54\u7591")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u5efa\u8bae]"," \u5e0c\u671b ",(0,r.kt)("inlineCode",{parentName:"li"},"api")," \u8fd4\u56de\u7684\u503c\u81ea\u52a8\u5c06 null \u8f6c\u4e3a '' \u6216 ","[][#I286IJ]","(",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I286IJ)%EF%BC%8C%E3%80%90%E5%B7%B2%E5%85%B3%E9%97%AD%E3%80%91"},"https://gitee.com/dotnetchina/Furion/issues/I286IJ)\uff0c\u3010\u5df2\u5173\u95ed\u3011")),(0,r.kt)("li",{parentName:"ul"},"[\u5efa\u8bae]"," \u6dfb\u52a0\u7f51\u5173\u529f\u80fd ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I27TP7"},"#I27TP7"),"\uff0c\u3010\u5df2\u5173\u95ed\u3011"),(0,r.kt)("li",{parentName:"ul"},"[\u5efa\u8bae]"," \u65b0\u589e ",(0,r.kt)("inlineCode",{parentName:"li"},"SqlQuery")," \u83b7\u53d6\u5355\u6761\u8bb0\u5f55\u65b9\u6cd5 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I28M1V"},"#I28M1V"),"\uff0c\u3010\u5df2\u5173\u95ed\u3011"),(0,r.kt)("li",{parentName:"ul"},"[\u5efa\u8bae]"," \u5e0c\u671b\u53ef\u4ee5\u63d0\u4f9b\u96c6\u6210 ",(0,r.kt)("inlineCode",{parentName:"li"},"Serilog")," \u4f8b\u5b50 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I282J4"},"#I282J4"),"\uff0c\u3010\u5df2\u5173\u95ed\u3011"),(0,r.kt)("li",{parentName:"ul"},"[\u7591\u95ee]"," \u5982\u4f55\u901a\u8fc7\u7279\u6027\u914d\u7f6e\u552f\u4e00\u7ea6\u675f ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2891L"},"#I2891L"),"\uff0c\u3010\u5df2\u5173\u95ed\u3011"),(0,r.kt)("li",{parentName:"ul"},"[\u7591\u95ee]"," \u600e\u4e48\u8bfb\u53d6 ",(0,r.kt)("inlineCode",{parentName:"li"},"appsettings.json")," \u6570\u7ec4 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I27WUR"},"#I27WU"),"\uff0c\u3010\u5df2\u5173\u95ed\u3011"),(0,r.kt)("li",{parentName:"ul"},"[\u7591\u95ee]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"IRepository")," \u51fa\u73b0\u7a7a\u5f02\u5e38 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I281IE"},"#I281IE"),"\uff0c\u3010\u5df2\u5173\u95ed\u3011"),(0,r.kt)("li",{parentName:"ul"},"[\u7591\u95ee]"," \u89c4\u8303\u5316\u63a5\u53e3\u95ee\u9898\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I28NMZ"},"#I28NMZ"),"\uff0c\u3010\u5df2\u5173\u95ed\u3011"),(0,r.kt)("li",{parentName:"ul"},"[\u7591\u95ee]"," \u7edf\u4e00\u8fd4\u56de\u503c\u6a21\u578b\u4e2d OnResponseStatusCodes \u672a\u6267\u884c ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I28NNL"},"#I28NNL"),"\uff0c\u3010\u5df2\u5173\u95ed\u3011")))),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"v120\uff08\u5df2\u53d1\u5e03\uff09"},"v1.2.0\uff08\u5df2\u53d1\u5e03\uff09"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u65b0\u7279\u6027")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u96ea\u82b1\u7b97\u6cd5 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I26OXG"},"#I26OXG"),", ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/pulls/78"},"#PR78")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"[AppDbContext]")," \u914d\u7f6e\u6570\u636e\u5e93\u63d0\u4f9b\u5668\u652f\u6301 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I27G3T"},"#I27G3T")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u5b9e\u4f53\u8868\u6570\u636e\u66f4\u6539\u76d1\u542c\u63a5\u53e3 ",(0,r.kt)("inlineCode",{parentName:"li"},"IEntityDataChangedListener")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I278DD"},"#I278DD"),", ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I278LQ"},"#I278LQ")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u5168\u5c40\u670d\u52a1\u63a5\u53e3 AOP \u62e6\u622a\u529f\u80fd ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I278CP"},"#I278CP")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u5b9a\u4f4d\u5668\u4ed3\u50a8 ",(0,r.kt)("inlineCode",{parentName:"li"},"IDbRepository")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I276Q3"},"#I276Q3")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u6570\u636e\u5e93\u64cd\u4f5c ",(0,r.kt)("inlineCode",{parentName:"li"},"InsertOrUpdate")," \u652f\u6301\u6392\u9664\u7a7a\u5b57\u7b26\u4e32\u529f\u80fd ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I272OG"},"#I272OG")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u6570\u636e\u5e93\u64cd\u4f5c ",(0,r.kt)("inlineCode",{parentName:"li"},"UpdateInclude")," \u548c ",(0,r.kt)("inlineCode",{parentName:"li"},"UpdateExclude")," \u533f\u540d\u5bf9\u8c61\u652f\u6301 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I271X0"},"#I271X0")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u6570\u636e\u9a8c\u8bc1\u4f20\u5165\u7a7a\u5bf9\u8c61\u8df3\u8fc7\u9a8c\u8bc1\u652f\u6301 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I273R4"},"#I273R4")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u5e94\u7528\u542f\u52a8\u65f6\u652f\u6301\u6392\u9664\u7279\u5b9a\u914d\u7f6e\u6587\u4ef6\u81ea\u52a8\u52a0\u8f7d ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I26U0A"},"#I26U0A")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u5355\u4e2a\u5b9e\u4f53\u8868\u540d\u524d\u7f00\u652f\u6301 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I26LX0"},"#I26LX0")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"MySql")," \u6570\u636e\u5e93\u81ea\u52a8\u914d\u7f6e\u9ed8\u8ba4\u7248\u672c\u53f7 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I26XQ6"},"#I26XQ6")),(0,r.kt)("li",{parentName:"ul"},"[\u4f18\u5316]"," \u6388\u6743\u5904\u7406\u7a0b\u5e8f\u4ee3\u7801"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u7a81\u7834\u6027\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u5b9e\u4f53\u8868\u6570\u636e\u66f4\u6539\u76d1\u542c\u63a5\u53e3 ",(0,r.kt)("inlineCode",{parentName:"li"},"IEntityDataChangedListener")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I278DD"},"#I278DD"),", ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I278LQ"},"#I278LQ")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u5168\u5c40\u670d\u52a1\u63a5\u53e3 AOP \u62e6\u622a\u529f\u80fd ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I278CP"},"#I278CP")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u96ea\u82b1\u7b97\u6cd5 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I26OXG"},"#I26OXG"),", ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/pulls/78"},"#PR78")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u9898\u4fee\u590d")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u89c6\u56fe\u5f15\u64ce\u52a0\u8f7d\u5916\u90e8\u7a0b\u5e8f\u96c6\u51fa\u9519 bug"),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u4f9d\u8d56\u6ce8\u5165\u4ee3\u7406\u63a5\u53e3\u62a5\u7a7a\u5bf9\u8c61\u5f02\u5e38 bug"),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"EFCore")," \u53d6\u6d88\u9644\u52a0\u5b9e\u4f53\u51fa\u9519 bug"),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u6570\u636e\u5e93\u4ed3\u50a8\u5728\u975e Web \u8bf7\u6c42\u4e0b\u51fa\u73b0\u7a7a\u5f02\u5e38 bug"),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u591a\u4e2a\u6388\u6743\u7b56\u7565\u5171\u5b58\u95ee\u9898\u51fa\u73b0\u65e0\u6548 bug"),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u53cb\u597d\u5f02\u5e38 ",(0,r.kt)("inlineCode",{parentName:"li"},"Oop.Oh")," \u4e0d\u652f\u6301\u666e\u901a\u65b9\u6cd5 bug"),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u83b7\u53d6\u591a\u79df\u6237\u5bf9\u8c61\u65f6\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u51fa\u73b0\u4f5c\u7528\u57df\u9a8c\u8bc1\u5931\u8d25 bug"),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u5de5\u4f5c\u5355\u5143\u4e0d\u652f\u6301 ",(0,r.kt)("inlineCode",{parentName:"li"},"Sql\u4ee3\u7406")," \u62e6\u622a bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I27GST"},"#I27GST")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u5176\u4ed6\u66f4\u6539")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u5173\u95ed][#I26O1F]","(",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I26O1F"},"https://gitee.com/dotnetchina/Furion/issues/I26O1F"),"), ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I27B2I"},"#I27B2I"),", ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I27BJ6"},"#I27BJ6"),", ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I27E5Z"},"#I27E5Z"),", ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I27EL4"},"#I27EL4")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u6587\u6863\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e][\u5b9e\u4f53\u6570\u636e\u76d1\u542c\u5668]","(",(0,r.kt)("a",{parentName:"li",href:"https://dotnetchina.gitee.io/furion/docs/dbcontext-entitytrigger"},"https://dotnetchina.gitee.io/furion/docs/dbcontext-entitytrigger"),") \u6587\u6863"),(0,r.kt)("li",{parentName:"ul"},"[\u66f4\u65b0]"," \u4e00\u5206\u949f\u5165\u95e8\u3001\u5e94\u7528\u542f\u52a8\u3001\u5b98\u65b9\u811a\u624b\u67b6\u3001\u6570\u636e\u5e93\u64cd\u4f5c\u6307\u5357\u3001\u5bf9\u8c61\u6620\u5c04\u3001\u89c4\u8303\u5316\u6587\u6863\u3001\u5f02\u5e38\u5904\u7406\u3001\u9274\u6743\u6388\u6743\u6587\u6863")))),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"v110\uff08\u5df2\u53d1\u5e03\uff09"},"v1.1.0\uff08\u5df2\u53d1\u5e03\uff09"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u65b0\u7279\u6027")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Db.GetDbContext()")," \u83b7\u53d6\u9ed8\u8ba4\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u65b9\u6cd5"),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"HttpContextUtility.GetCurrentHttpContext()")," \u83b7\u53d6\u5168\u5c40 ",(0,r.kt)("inlineCode",{parentName:"li"},"HttpContext")," \u4e0a\u4e0b\u6587"),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"App.GetRequiredService<>")," \u89e3\u6790\u670d\u52a1\u65b9\u6cd5"),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"object.GetService<>")," \u5bf9\u8c61\u62d3\u5c55\u65b9\u6cd5"),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u7b56\u7565\u6388\u6743 ",(0,r.kt)("inlineCode",{parentName:"li"},"PolicyPipeline")," \u57fa\u7c7b\u65b9\u6cd5\uff0c\u652f\u6301\u591a\u91cd\u5224\u65ad\u6388\u6743"),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"JWTEncryption.ValidateJwtBearerToken")," \u624b\u52a8\u9a8c\u8bc1\u9759\u6001\u65b9\u6cd5"),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u5168\u5c40\u6570\u636e\u5e93\u4e0a\u4e0b\u6587 ",(0,r.kt)("inlineCode",{parentName:"li"},"InsertOrUpdateIgnoreNullValues")," \u548c ",(0,r.kt)("inlineCode",{parentName:"li"},"EnabledEntityStateTracked")," \u5168\u5c40\u914d\u7f6e"),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Swagger Jwt\u6388\u6743")," \u5168\u5c40\u6388\u6743\u53c2\u6570 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I26GLR"},"#I26GLR")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"InsertOrUpdate")," \u652f\u6301\u81ea\u5b9a\u4e49\u5224\u65ad\u6761\u4ef6\u529f\u80fd ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I269Q1"},"#I269Q1")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u5b57\u7b26\u4e32\u5b57\u6bb5\u5c0f\u5199\u547d\u540d\u652f\u6301 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2695D"},"#I2695D")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u5b57\u7b26\u4e32\u6587\u672c\u5bf9\u6bd4\u529f\u80fd ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I268LE"},"#I268LE")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u5168\u5c40\u5f02\u5e38\u7279\u6027\u6d88\u606f\u529f\u80fd ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2662O"},"#I2662O")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Insert")," \u6216 ",(0,r.kt)("inlineCode",{parentName:"li"},"Update")," \u6570\u636e\u5e93\u5ffd\u7565\u7a7a\u503c\u529f\u80fd ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I264Q4"},"#I264Q4")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u7a81\u7834\u6027\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Fur")," \u9879\u76ee\u540d\u4e3a ",(0,r.kt)("inlineCode",{parentName:"li"},"Furion")),(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Db.GetRequestDbContext<>()")," \u547d\u540d\u4e3a ",(0,r.kt)("inlineCode",{parentName:"li"},"Db.GetDbContext<>()")),(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Db.GetDbContext<>()")," \u547d\u540d\u4e3a ",(0,r.kt)("inlineCode",{parentName:"li"},"Db.GetDuplicateDbContext<>()")),(0,r.kt)("li",{parentName:"ul"},"[\u91cd\u6784]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"App.GetService<>")," \u89e3\u6790\u670d\u52a1\u7684\u5e95\u5c42\u903b\u8f91\uff0c\u5927\u5927\u63d0\u9ad8\u4e86\u89e3\u6790\u670d\u52a1\u7684\u6027\u80fd"),(0,r.kt)("li",{parentName:"ul"},"[\u91cd\u6784]"," \u6388\u6743\u6838\u5fc3\u4ee3\u7801\uff0c\u4fdd\u6301\u548c\u5fae\u8f6f\u4e00\u81f4\u7684\u6388\u6743\u89c4\u8303 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I26DCB"},"#I26DCB")),(0,r.kt)("li",{parentName:"ul"},"[\u79fb\u9664]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"App.GetRequestService<>")," \u65b9\u6cd5"),(0,r.kt)("li",{parentName:"ul"},"[\u79fb\u9664]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"ValidateJwtBearer")," Jwt \u6388\u6743\u65b9\u6cd5\uff0c\u65e0\u9700\u624b\u52a8\u5224\u65ad\u4e86"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u9898\u4fee\u590d")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," Furion \u5b98\u65b9\u811a\u624b\u67b6\u751f\u6210\u540e\u7f16\u8bd1\u5f02\u5e38 bug"),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Tenant")," \u5185\u7f6e\u5c5e\u6027\u4e0d\u662f ",(0,r.kt)("inlineCode",{parentName:"li"},"virtual")," \u4fee\u9970 bug"),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"dockerfile")," \u65b0\u547d\u540d\u6784\u5efa\u5931\u8d25 bug"),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u81ea\u5b9a\u4e49\u89d2\u8272\u6388\u6743\u548c\u591a\u4e2a\u6388\u6743\u5171\u5b58\u51fa\u73b0 403 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I26H1L"},"#I26H1L")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"httpContext.GetEndpoint()")," \u7a7a\u5f02\u5e38 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/pulls/73"},"#PR73")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Oops.Oh")," \u7a7a\u5f02\u5e38\u548c\u4e0d\u652f\u6301\u670d\u52a1\u670d\u52a1\u629b\u5f02\u5e38 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I26EFU"},"#I26EFU"),"\uff0c",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I26GM4"},"#I26GM4")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"cli.ps")," \u751f\u6210\u6587\u4ef6\u7f16\u7801\u4e71\u7801 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I26DVT"},"#I26DVT")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Swagger")," \u6587\u4ef6\u4e0a\u4f20\u6309\u94ae\u4e0d\u663e\u793a ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I26B6U"},"#I26B6U")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u89c4\u8303\u5316\u7ed3\u679c\u6388\u6743\u72b6\u6001\u7801\u5e8f\u5217\u5316\u5927\u5c0f\u5199\u4e0d\u4e00\u81f4\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I26B26"},"#I26B26")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u672a\u542f\u7528\u89c4\u8303\u5316\u7ed3\u679c\u65f6\u4e2d\u6587\u4e71\u7801 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I268T5"},"#I268T5")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"MySql")," \u5f02\u6b65\u5f02\u5e38\u6355\u83b7\u4e0d\u5230 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I265SO"},"#I265SO")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"cli.ps1")," \u63d0\u793a\u627e\u4e0d\u5230\u6570\u636e\u5e93\u8fde\u63a5\u5b57\u7b26\u4e32 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2647U"},"#I2647U")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u5176\u4ed6\u66f4\u6539")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u5176\u4ed6]"," \u4ee3\u7801\u6027\u80fd\u5c0f\u4f18\u5316\u548c\u5c0f\u8c03\u6574"),(0,r.kt)("li",{parentName:"ul"},"[\u5173\u95ed][#I265JV]","(",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I265JV)%EF%BC%8C%5B#I26ERA%5D(https://gitee.com/dotnetchina/Furion/issues/I26ERA)%EF%BC%8C"},"https://gitee.com/dotnetchina/Furion/issues/I265JV)\uff0c[#I26ERA](https://gitee.com/dotnetchina/Furion/issues/I26ERA)\uff0c")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I26EVW"},"#I26EVW"),"\uff0c",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I26GHC"},"#I26GHC"),"\uff0c",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I26GJ1"},"#I26GJ1"),"\uff0c",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I26O1F"},"#I26O1F")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u6587\u6863\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u66f4\u65b0]"," \u4e00\u5206\u949f\u5165\u95e8\u3001\u5b89\u5168\u9274\u6743\u3001\u6570\u636e\u5e93\u7b49\u6587\u6863")))),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"v103\uff08\u5df2\u53d1\u5e03\uff09"},"v1.0.3\uff08\u5df2\u53d1\u5e03\uff09"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u65b0\u7279\u6027")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," Mvc \u6a21\u677f\u811a\u624b\u67b6\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"Fur.Template.Mvc")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," WebApi \u6a21\u677f\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"Fur.Template.Api")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," Mvc/WebApi \u6a21\u677f\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"Fur.Template.App")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," Razar Pages \u6a21\u677f\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"Fur.Template.Razor")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," Blazor \u6a21\u677f\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"Fur.Template.Blazor")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u7a81\u7834\u6027\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"PagedList")," \u5230 ",(0,r.kt)("inlineCode",{parentName:"li"},"System.Collections.Generic")," \u547d\u540d\u7a7a\u95f4\u4e0b"),(0,r.kt)("li",{parentName:"ul"},"[\u4f18\u5316]"," \u89e3\u6790\u670d\u52a1\u6027\u80fd\u95ee\u9898\uff0c\u5e95\u5c42\u4ee3\u7801\u5927\u91cf\u4f18\u5316"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u9898\u4fee\u590d")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"ApiSears.ControllerEnd"),"\u4e0d\u8d77\u4f5c\u7528 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I25KH6"},"#I25KH6")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"RemoteRequest")," \u8bf7\u6c42\u5b8c\u6210\u7ed3\u679c\u5e8f\u5217\u5316\u5c5e\u6027\u5927\u5c0f\u5199\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I25I8R"},"#I25I8R")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"HttpContext.GetEndpoinet()")," \u7a7a\u5f02\u5e38 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/pulls/73"},"#PR73")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u5176\u4ed6\u66f4\u6539")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"\u65e0"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u6587\u6863\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u66f4\u65b0]"," \u5165\u95e8\u6587\u6863\u3001\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u6587\u6863\u3001\u591a\u6570\u636e\u5e93\u64cd\u4f5c\u6587\u6863")))),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"v102\uff08\u5df2\u53d1\u5e03\uff09"},"v1.0.2\uff08\u5df2\u53d1\u5e03\uff09"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u65b0\u7279\u6027")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Pomelo.EntityFrameworkCore.MySql")," \u6700\u65b0 .NET 5 \u5305\u914d\u7f6e ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I24ZQK"},"#I24ZQK")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},".AddDateTimeJsonConverter(format)")," \u65f6\u95f4\u683c\u5f0f\u5e8f\u5217\u5316\u914d\u7f6e"),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"DateTime")," \u548c ",(0,r.kt)("inlineCode",{parentName:"li"},"DateTimeOffset")," \u7c7b\u578b\u5e8f\u5217\u5316\u683c\u5f0f\u914d\u7f6e ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I253FI"},"#I253FI")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u7a81\u7834\u6027\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u66f4\u65b0]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Mapster")," \u5305\u81f3 ",(0,r.kt)("inlineCode",{parentName:"li"},"7.0.0")," \u7248"),(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"App.Services")," \u540d\u4e3a ",(0,r.kt)("inlineCode",{parentName:"li"},"App.ServiceProvider")),(0,r.kt)("li",{parentName:"ul"},"[\u79fb\u9664]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"App.ApplicationServices")," \u548c ",(0,r.kt)("inlineCode",{parentName:"li"},"App.GetRequestService<>()")),(0,r.kt)("li",{parentName:"ul"},"[\u79fb\u9664]"," \u975e Web \u4e3b\u673a\u6ce8\u5165\u62d3\u5c55"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u9898\u4fee\u590d")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"services.AddFriendlyException()")," \u7f3a\u5c11\u914d\u7f6e\u6ce8\u5165 bug"),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u6c60\u88ab\u91ca\u653e\u548c\u9ad8\u5e76\u53d1\u4e0b\u5185\u5b58\u6ea2\u51fa bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2524K"},"#I2524K"),"\uff0c",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I24UMN"},"#I24UMN")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Sql\u4ee3\u7406")," \u8fd4\u56de\u7a7a\u6570\u636e\u65f6\u5f02\u5e38 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I24TCK"},"#I24TCK")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u5de5\u4f5c\u5355\u5143 ",(0,r.kt)("inlineCode",{parentName:"li"},"[UnitOfWork]")," \u591a\u6570\u636e\u5e93\u88ab\u91ca\u653e bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I24Q6W"},"#I24Q6W")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u5176\u4ed6\u66f4\u6539")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"EntityBase")," \u548c ",(0,r.kt)("inlineCode",{parentName:"li"},"Entity")," \u6240\u6709\u5c5e\u6027\u4e3a ",(0,r.kt)("inlineCode",{parentName:"li"},"vitural")," \u4fee\u9970"),(0,r.kt)("li",{parentName:"ul"},"[\u4f18\u5316]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Jwt")," \u8bfb\u53d6\u548c\u89e3\u6790\u6027\u80fd"),(0,r.kt)("li",{parentName:"ul"},"[\u4f18\u5316]"," \u4f18\u5316\u4ee3\u7801\u652f\u6301 C# 9.0 \u6700\u65b0\u8bed\u6cd5"),(0,r.kt)("li",{parentName:"ul"},"[\u4f18\u5316]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"MD5")," \u52a0\u5bc6\u6027\u80fd ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/pulls/71"},"#PR71")),(0,r.kt)("li",{parentName:"ul"},"[\u79fb\u9664]"," \u65e0\u7528\u6216\u672a\u4f7f\u7528\u4ee3\u7801"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u6587\u6863")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u66f4\u65b0]"," \u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u3001\u591a\u6570\u636e\u5e93\u3001\u4e00\u5206\u949f\u5165\u95e8\u6587\u6863")))),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"v100\uff08\u5df2\u53d1\u5e03\uff09"},"v1.0.0\uff08\u5df2\u53d1\u5e03\uff09"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u65b0\u7279\u6027")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u7f51\u7edc\u8bf7\u6c42 ",(0,r.kt)("inlineCode",{parentName:"li"},"RemoteRequest")," \u7ec4\u4ef6 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I1YYWD"},"#I1YYWD")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},".AddInjectBase()")," \u6ce8\u5165\uff0c\u53ea\u5305\u542b\u57fa\u7840\u670d\u52a1\u6ce8\u5165"),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u6240\u6709\u670d\u52a1\u90fd\u652f\u6301 ",(0,r.kt)("inlineCode",{parentName:"li"},"IServiceCollection")," \u548c ",(0,r.kt)("inlineCode",{parentName:"li"},"IMvcBuilder")," \u6ce8\u5165"),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u629b\u5f02\u5e38\u72b6\u6001\u7801\u8bbe\u7f6e\u529f\u80fd ",(0,r.kt)("inlineCode",{parentName:"li"},"StatusCode")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Swagger")," \u5e8f\u5217\u5316\u652f\u6301 ",(0,r.kt)("inlineCode",{parentName:"li"},"Pascal")," \u5c5e\u6027\u547d\u540d\u65b9\u5f0f"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u7a81\u7834\u6027\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u66f4\u65b0]"," ",(0,r.kt)("strong",{parentName:"li"},"\u6240\u6709\u7684\u5305\u4e3a ",(0,r.kt)("inlineCode",{parentName:"strong"},".NET 5")," \u6b63\u5f0f\u7248")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u9898\u4fee\u590d")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"SqlProxy")," \u4ee3\u7406\u5f02\u6b65\u5904\u7406 bug"),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u6570\u636e\u5e93\u7c7b\u578b ",(0,r.kt)("inlineCode",{parentName:"li"},"Datetime")," \u8f6c ",(0,r.kt)("inlineCode",{parentName:"li"},"DateTimeOffset")," bug"),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u5c5e\u6027\u9996\u5b57\u6bcd\u5927\u5c0f\u5199\u5e8f\u5217\u5316\u4e0d\u5339\u914d\u51fa\u73b0 ",(0,r.kt)("inlineCode",{parentName:"li"},"null")," bug"),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u5bf9\u8c61\u5e8f\u5217\u5316\u4e2d\u6587\u51fa\u73b0\u4e71\u7801 bug"),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u9ed8\u8ba4\u5e8f\u5217\u5316\u914d\u7f6e\u65e0\u6548 bug"),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u6570\u636e\u5e93\u975e\u4f9d\u8d56\u6ce8\u5165\u65b9\u5f0f\u63d0\u4ea4\u65e0\u6548 bug"),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u5e94\u7528\u7a0b\u5e8f\u6c60\u63d0\u4ea4\u6240\u6709 ",(0,r.kt)("inlineCode",{parentName:"li"},"DbContext")," \u7a7a\u5f02\u5e38 bug"),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Saas")," \u591a\u79df\u6237 ",(0,r.kt)("inlineCode",{parentName:"li"},"Tenant")," \u7c7b\u578b\u5b57\u7b26\u4e32\u5c5e\u6027\u5728 ",(0,r.kt)("inlineCode",{parentName:"li"},"MySql")," \u6570\u636e\u5e93\u4e0b\u51fa\u73b0 ",(0,r.kt)("inlineCode",{parentName:"li"},"longtext")," \u7c7b\u578b bug"),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Mvc")," \u81ea\u52a8\u9a8c\u8bc1\u5b57\u7b26\u4e32\u7a7a\u503c bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I24M2T"},"#I24M2T")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u679a\u4e3e\u6ce8\u91ca\u88ab\u8986\u76d6 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I24N6J"},"#I24N6J")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u5ffd\u7565\u89c4\u8303\u5316\u7ed3\u679c\u65e0\u6548 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I24B8P"},"#I24B8P")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Swagger")," \u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"ContentType")," \u4e0d\u662f ",(0,r.kt)("inlineCode",{parentName:"li"},"applicaiton/json")," bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I24F3U"},"#I24F3U")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u5185\u7f6e ",(0,r.kt)("inlineCode",{parentName:"li"},"System.Text.Json")," \u548c ",(0,r.kt)("inlineCode",{parentName:"li"},"Newtonsoft.Json")," \u51b2\u7a81 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I24F3U"},"#I24F3U")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u5176\u4ed6\u66f4\u6539")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Fur")," \u6846\u67b6\u57df\u540d\u4e3a\uff1a",(0,r.kt)("a",{parentName:"li",href:"https://furion.pro"},"https://furion.pro")),(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," \u4ed3\u50a8 ",(0,r.kt)("inlineCode",{parentName:"li"},"FromSqlRaw")," \u548c ",(0,r.kt)("inlineCode",{parentName:"li"},"FromSqlInterpolated")," \u63a5\u53e3\u4f4d\u7f6e"),(0,r.kt)("li",{parentName:"ul"},"[\u4f18\u5316]"," \u6570\u636e\u52a0\u89e3\u5bc6\u6027\u80fd\uff0c",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/pulls/70"},"#PR70")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u6587\u6863")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u66f4\u65b0]"," README.md\u3001\u6846\u67b6\u4ecb\u7ecd\u3001\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u3001\u914d\u7f6e\u9009\u9879\u3001\u591a\u79df\u6237\u3001\u8de8\u57df\u6587\u6863")))))}N.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/4c79e569.1be67321.js b/handbook/build/assets/js/4c79e569.1be67321.js deleted file mode 100644 index c33f49a712d..00000000000 --- a/handbook/build/assets/js/4c79e569.1be67321.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[8707],{3905:function(e,t,a){a.d(t,{Zo:function(){return s},kt:function(){return k}});var i=a(7294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function r(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,i)}return a}function l(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var o=i.createContext({}),m=function(e){var t=i.useContext(o),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},s=function(e){var t=m(e.components);return i.createElement(o.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},N=i.forwardRef((function(e,t){var a=e.components,n=e.mdxType,r=e.originalType,o=e.parentName,s=p(e,["components","mdxType","originalType","parentName"]),N=m(a),k=n,h=N["".concat(o,".").concat(k)]||N[k]||u[k]||r;return a?i.createElement(h,l(l({ref:t},s),{},{components:a})):i.createElement(h,l({ref:t},s))}));function k(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var r=a.length,l=new Array(r);l[0]=N;var p={};for(var o in t)hasOwnProperty.call(t,o)&&(p[o]=t[o]);p.originalType=e,p.mdxType="string"==typeof e?e:n,l[1]=p;for(var m=2;m")," \u7684 ",(0,r.kt)("inlineCode",{parentName:"li"},"CallContext")," \u5b9e\u73b0 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/commit/9057a212aab8057b668086bd14369fa68ce120df"},"9057a21")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u8fdc\u7a0b\u8bf7\u6c42\u53ef\u914d\u7f6e\u8bf7\u6c42\u5f02\u5e38\u91cd\u8bd5\u7b56\u7565 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/commit/656da87a667c2da7d82425cdcd47146e99602d65"},"656da87")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u8fdc\u7a0b\u8bf7\u6c42 ",(0,r.kt)("inlineCode",{parentName:"li"},"OnRequestFailded")," \u4e8b\u4ef6 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/commit/4a3da4ba2c69380fe5f8c2fda80054544c0a3468"},"4a3da4b")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u7a81\u7834\u6027\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u79fb\u9664]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Scoped")," \u6240\u6709\u5e26\u8fd4\u56de\u503c\u65b9\u6cd5 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/commit/656da87a667c2da7d82425cdcd47146e99602d65"},"656da87")),(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," ",(0,r.kt)("strong",{parentName:"li"},"\u5728 ",(0,r.kt)("inlineCode",{parentName:"strong"},"ConfigureService")," \u4e2d\u8c03\u7528 ",(0,r.kt)("inlineCode",{parentName:"strong"},"App.GetOptions<>()")," \u83b7\u53d6\u914d\u7f6e\u903b\u8f91")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/commit/afa4ac347152ccac37bd1d0f9af1e8ffb665a662"},"afa4ac3"))))),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"\u5728\u8fc7\u53bb\uff0c\u5f88\u591a\u5f00\u53d1\u8005\u603b\u662f\u559c\u6b22\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Startup.cs")," \u914d\u7f6e\u670d\u52a1\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"ConfigureService")," \u65b9\u6cd5\u4e2d\u89e3\u6790\u670d\u52a1\uff0c\u8fd9\u6837\u5bfc\u81f4\u5185\u5b58\u5b58\u5728\u6ea2\u51fa\u98ce\u9669\uff0cGC \u65e0\u6cd5\u56de\u6536\u3002\n\u6b63\u786e\u7684\u65b9\u5f0f\u662f\u5c3d\u53ef\u80fd\u7684\u907f\u514d ",(0,r.kt)("inlineCode",{parentName:"p"},"ConfigureService")," \u4e2d\u89e3\u6790\u670d\u52a1\u3002",(0,r.kt)("strong",{parentName:"p"},"\u5982\u679c\u9700\u8981\u5728\u3010\u542f\u52a8\u65f6\u3011\u83b7\u53d6 ",(0,r.kt)("inlineCode",{parentName:"strong"},"\u914d\u7f6e\u9009\u9879"),"\uff0c\u8bf7\u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"strong"},"App.GetConfig(\u8def\u5f84, true)")," \u4ee3\u66ff ",(0,r.kt)("inlineCode",{parentName:"strong"},"App.GetOptions")),"\u3002")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u9898\u4fee\u590d")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," v2.16+ \u7248\u672c\u91cd\u6784 ",(0,r.kt)("inlineCode",{parentName:"li"},"AppDbContextBuilder")," \u4e4b\u540e\u5199\u9519\u5b9e\u4f53\u7c7b\u578b ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I45E6M"},"#I45E6M")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u8fdc\u7a0b\u8bf7\u6c42\u5355\u4e2a\u503c\u5e8f\u5217\u5316\u9519\u8bef\u5904\u7406\u65b9\u5f0f ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/commit/3282eba2cecb505e339ef3f9c8e823f84dcb43f0"},"3282eba")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," v2.17.3+ \u5355\u5143\u6d4b\u8bd5\u521b\u5efa ",(0,r.kt)("inlineCode",{parentName:"li"},"TestServer")," bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I45JR3"},"#I45JR3")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Retry.Invoke")," \u6b63\u5e38\u65b9\u6cd5\u6b7b\u5faa\u73af bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/pulls/392"},"!392")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u5237\u65b0 ",(0,r.kt)("inlineCode",{parentName:"li"},"Token")," \u751f\u6210\u65b0 ",(0,r.kt)("inlineCode",{parentName:"li"},"Token")," \u5b58\u5728\u6570\u7ec4/\u96c6\u5408\u7c7b\u578b\u5bfc\u81f4 ",(0,r.kt)("inlineCode",{parentName:"li"},"Key")," \u91cd\u590d\u5f02\u5e38\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/commit/aeea2b1b19434f3171bd1c77be057ca36ecf9be2"},"aeea2b1")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u8fdc\u7a0b\u8bf7\u6c42\u5e8f\u5217\u5316\u5f15\u7528\u7c7b\u578b\u5bf9\u8c61\uff08\u4e0d\u542b ",(0,r.kt)("inlineCode",{parentName:"li"},"string"),"\uff09\u4e0d\u6b63\u786e\u7684\u5904\u7406 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/commit/93cf63a023f3372b80edb5debc46271d2281318a"},"93cf63a")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"AppDbContext")," \u9ed8\u8ba4\u79df\u6237\u5c5e\u6027\u53d7\u5de5\u4f5c\u5355\u5143\u5f71\u54cd\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/commit/e51557fdf37ae5646b2ea37c227c970eccdbed38"},"e51557f")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u6587\u6863")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u5305\u7ba1\u7406\u5de5\u5177\u6587\u6863"),(0,r.kt)("li",{parentName:"ul"},"[\u66f4\u65b0]"," \u6a21\u677f\u5f15\u64ce\u3001",(0,r.kt)("inlineCode",{parentName:"li"},"Sql")," \u64cd\u4f5c\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"\u6570\u636e\u5e93\u4e0a\u4e0b\u6587")," \u7b49\u7b49\u6587\u6863")))),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"v217\uff08\u5df2\u53d1\u5e03\uff09"},"v2.17\uff08\u5df2\u53d1\u5e03\uff09"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u65b0\u7279\u6027")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"IPC\uff08Inter-Process Communication\uff0c\u8fdb\u7a0b\u95f4\u901a\u4fe1\uff09")," \u6a21\u5757\u529f\u80fd\uff0c\u76ee\u524d\u63d0\u4f9b\u8fdb\u7a0b\u5185\u901a\u4fe1\u548c\u5171\u4eab\u5185\u5b58\u8fdb\u7a0b\u5916\u901a\u8baf ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/tree/master/framework/Furion/ProcessChannel"},"ProcessChannel")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u8fdc\u7a0b\u8bf7\u6c42 ",(0,r.kt)("inlineCode",{parentName:"li"},"application/xml")," \u548c ",(0,r.kt)("inlineCode",{parentName:"li"},"text/xml")," \u9ed8\u8ba4\u652f\u6301 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/commit/4753a1aed527a6282fe6c05036de9d50bd3b3dd8"},"4753a1a")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u63a7\u5236\u53f0\u5168\u5c40\u5f02\u5e38\u62e6\u622a ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/commit/4a4fe1f40e1856ea36a0c0d19ca625d3f7bf95b7"},"4a4fe1f")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u652f\u6301\u81ea\u5b9a\u4e49 ",(0,r.kt)("inlineCode",{parentName:"li"},".json")," \u914d\u7f6e\u6587\u4ef6\u626b\u63cf\u76ee\u5f55 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/commit/3e2910a8b775fb6323e293b020bbe7cdfb4c6436"},"3e2910a")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u652f\u6301\u6570\u636e\u5e93\u5b9e\u4f53\u63a5\u53e3\u663e\u5f0f\u5b9e\u73b0\u63a5\u53e3\u914d\u7f6e ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/commit/9610a0a481f4f78770bc2fc3ed4cabbef2a8f937"},"9610a0a")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u63a7\u5236\u53f0\u5e94\u7528\u7a0b\u5e8f\u5168\u5c40\u62e6\u622a ",(0,r.kt)("inlineCode",{parentName:"li"},"[IfException]")," \u652f\u6301 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/commit/4a4fe1f40e1856ea36a0c0d19ca625d3f7bf95b7"},"4a4fe1f")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u4f9d\u8d56\u6ce8\u5165\u6a21\u5757\u63a5\u53e3\u53ef\u4ee5\u9650\u5236\u5b9e\u73b0\u7c7b\u751f\u5b58\u5468\u671f\uff0c\u5b9e\u73b0\u7c7b\u4e5f\u652f\u6301\u590d\u5199\u751f\u5b58\u5468\u671f ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/commit/d2ce089130300cdd8b1bc6792f325c5d38ee9404"},"d2ce089")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u7a81\u7834\u6027\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u62bd\u79bb]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Oops.Retry()")," \u91cd\u8bd5\u7b56\u7565\u529f\u80fd\u81f3\u65b0\u7c7b\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"Retry.Invoke()")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/commit/6a7bbd0b30a653b9a42d340a63520485aa6bbfa4"},"6a7bbd0")),(0,r.kt)("li",{parentName:"ul"},"[\u79fb\u9664]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"IHttpContextAccessor.SigninToSwagger()")," \u62d3\u5c55\uff0c\u8bf7\u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"li"},"IHttpContextAccessor.HttpContext.SigninToSwagger()"),"\uff0c\u9000\u51fa\u4e5f\u4e00\u6837"),(0,r.kt)("li",{parentName:"ul"},"[\u79fb\u9664]"," \u5168\u5c40\u5904\u7406 ",(0,r.kt)("inlineCode",{parentName:"li"},"Request Body")," \u91cd\u590d\u8bfb\u5904\u7406 ",(0,r.kt)("inlineCode",{parentName:"li"},"Request.EnableBuffering()")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/commit/d92c24bdb43bfb01643007ebb6a4ee42a5c738e9"},"d92c24b")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u9898\u4fee\u590d")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u89c4\u8303\u5316\u72b6\u6001\u7801\u8fc7\u6ee4\u903b\u8f91\u9519\u8bef\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I44JYS"},"#I44JYS")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u975e\u5173\u7cfb\u578b\u6570\u636e\u5e93\uff08\u5185\u5b58\u6570\u636e\u5e93\uff09\u6ce8\u518c\u53ca\u64cd\u4f5c\u5f02\u5e38 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/commit/e1676512a54374427bedbde17cd8cb59d7852557"},"e167651")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u8fdc\u7a0b\u8bf7\u6c42\u9ed8\u8ba4\u5e8f\u5217\u5316\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/commit/a55603bf7ed109296375dbeffc31591a6f8f8e49"},"a55603b")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u5b9a\u65f6\u4efb\u52a1\u96f6\u70b9/\u6574\u70b9\u63d0\u524d\u4e00\u79d2\u89e6\u53d1\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I4321L"},"#I4321L")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u53cb\u597d\u5f02\u5e38\u5728\u5b50\u7c7b\u91cd\u5199\u62bd\u8c61\u7c7b\u65b9\u6cd5\u5185\u90e8\u629b\u5f02\u5e38\u65e0\u6cd5\u83b7\u53d6\u7684\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/commit/4a4fe1f40e1856ea36a0c0d19ca625d3f7bf95b7"},"4a4fe1f")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u4fee\u590d\u975e Web \u9879\u76ee\u629b\u5f02\u5e38\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/commit/4a4fe1f40e1856ea36a0c0d19ca625d3f7bf95b7"},"4a4fe1f")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u6570\u636e\u5e93\u5b9e\u4f53\u6a21\u578b\u8d34 ",(0,r.kt)("inlineCode",{parentName:"li"},"[NotMapper]")," \u7279\u6027\u65e0\u6548 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I44MNO"},"#I44MNO")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u5176\u4ed6\u66f4\u6539")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," Swagger \u751f\u6210\u6cdb\u578b SchemaIds \u9ed8\u8ba4\u8fde\u63a5\u7b26\uff0c\u7531 ",(0,r.kt)("inlineCode",{parentName:"li"},"Of")," \u6539\u4e3a ",(0,r.kt)("inlineCode",{parentName:"li"},"_")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/commit/81946b64e81d9e290f80cd5bcebdb69c99001153"},"81946b6"))))),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"v216\uff08\u5df2\u53d1\u5e03\uff09"},"v2.16\uff08\u5df2\u53d1\u5e03\uff09"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u65b0\u7279\u6027")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("strong",{parentName:"li"},(0,r.kt)("inlineCode",{parentName:"strong"},"MVC")," \u63a7\u5236\u5668\u652f\u6301\u89c4\u8303\u5316\u5904\u7406 ",(0,r.kt)("a",{parentName:"strong",href:"https://gitee.com/dotnetchina/Furion/issues/I427Z2"},"#I427Z2"))),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"throw Oops.Bah()")," \u629b\u51fa\u4e1a\u52a1\u5f02\u5e38\uff08\u72b6\u6001\u7801 ",(0,r.kt)("inlineCode",{parentName:"li"},"400"),"\uff09"),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"UnifyResultSettings")," \u89c4\u8303\u5316 ",(0,r.kt)("inlineCode",{parentName:"li"},"json")," \u914d\u7f6e\u9009\u9879 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I42NY7"},"#I42NY7")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u591a\u8bed\u8a00\u81ea\u5b9a\u4e49\u914d\u7f6e\u8d44\u6e90\u6587\u4ef6\u540d\u53ca\u81ea\u5b9a\u4e49\u7a0b\u5e8f\u96c6 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I434YJ"},"#I434YJ")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u7a81\u7834\u6027\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," \u89c4\u8303\u5316\u7ed3\u679c ",(0,r.kt)("inlineCode",{parentName:"li"},"IUnifyResultProvider")," \u53c2\u6570 ",(0,r.kt)("strong",{parentName:"li"},"\uff08\u7834\u574f\u6027\u66f4\u6539\uff09")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I427Z2"},"#I427Z2")),(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"IJsonSerializerProvider")," \u63a5\u53e3\u53c2\u6570\uff0c\u53bb\u6389 ",(0,r.kt)("inlineCode",{parentName:"li"},"inherit")," \u53c2\u6570 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/commit/a55603bf7ed109296375dbeffc31591a6f8f8e49"},"a55603b"))))),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u65b0\u7248\u672c\u81ea\u5b9a\u4e49\u89c4\u8303\u5316\u7ed3\u679c")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("pre",{parentName:"div"},(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{15-16}","{15-16}":!0},'using Furion.DataValidation;\nusing Furion.DependencyInjection;\nusing Furion.UnifyResult.Internal;\nusing Microsoft.AspNetCore.Http;\nusing Microsoft.AspNetCore.Mvc;\nusing Microsoft.AspNetCore.Mvc.Filters;\nusing System;\nusing System.Threading.Tasks;\n\nnamespace Furion.UnifyResult\n{\n /// \n /// RESTful \u98ce\u683c\u8fd4\u56de\u503c\n /// \n [SuppressSniffer, UnifyModel(typeof(RESTfulResult<>))]\n public class RESTfulResultProvider : IUnifyResultProvider\n {\n /// \n /// \u5f02\u5e38\u8fd4\u56de\u503c\n /// \n /// \n /// \n /// \n public IActionResult OnException(ExceptionContext context, ExceptionMetadata metadata)\n {\n return new JsonResult(RESTfulResult(metadata.StatusCode, errors: metadata.Errors));\n }\n\n /// \n /// \u6210\u529f\u8fd4\u56de\u503c\n /// \n /// \n /// \n /// \n public IActionResult OnSucceeded(ActionExecutedContext context, object data)\n {\n return new JsonResult(RESTfulResult(StatusCodes.Status200OK, true, data));\n }\n\n /// \n /// \u9a8c\u8bc1\u5931\u8d25\u8fd4\u56de\u503c\n /// \n /// \n /// \n /// \n public IActionResult OnValidateFailed(ActionExecutingContext context, ValidationMetadata metadata)\n {\n return new JsonResult(RESTfulResult(StatusCodes.Status400BadRequest, errors: metadata.ValidationResult));\n }\n\n /// \n /// \u7279\u5b9a\u72b6\u6001\u7801\u8fd4\u56de\u503c\n /// \n /// \n /// \n /// \n /// \n public async Task OnResponseStatusCodes(HttpContext context, int statusCode, UnifyResultSettingsOptions unifyResultSettings)\n {\n // \u8bbe\u7f6e\u54cd\u5e94\u72b6\u6001\u7801\n UnifyContext.SetResponseStatusCodes(context, statusCode, unifyResultSettings);\n\n switch (statusCode)\n {\n // \u5904\u7406 401 \u72b6\u6001\u7801\n case StatusCodes.Status401Unauthorized:\n await context.Response.WriteAsJsonAsync(RESTfulResult(statusCode, errors: "401 Unauthorized")\n , App.GetOptions()?.JsonSerializerOptions);\n break;\n // \u5904\u7406 403 \u72b6\u6001\u7801\n case StatusCodes.Status403Forbidden:\n await context.Response.WriteAsJsonAsync(RESTfulResult(statusCode, errors: "403 Forbidden")\n , App.GetOptions()?.JsonSerializerOptions);\n break;\n default: break;\n }\n }\n\n /// \n /// \u8fd4\u56de RESTful \u98ce\u683c\u7ed3\u679c\u96c6\n /// \n /// \n /// \n /// \n /// \n /// \n private static RESTfulResult RESTfulResult(int statusCode, bool succeeded = default, object data = default, object errors = default)\n {\n return new RESTfulResult\n {\n StatusCode = statusCode,\n Succeeded = succeeded,\n Data = data,\n Errors = errors,\n Extras = UnifyContext.Take(),\n Timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds()\n };\n }\n }\n}\n')))),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u9898\u4fee\u590d")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"MVC")," \u63a7\u5236\u5668\u542f\u7528\u89c4\u8303\u5316\u5904\u7406\u540e\u8fd4\u56de ",(0,r.kt)("inlineCode",{parentName:"li"},"new Json({})")," \u5bf9\u8c61\u4e3a ",(0,r.kt)("inlineCode",{parentName:"li"},"null")," \u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I4354S"},"#I4354S")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u5176\u4ed6\u66f4\u6539")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4f18\u5316]"," \u591a\u8bed\u8a00\u5e95\u5c42\u8bbe\u8ba1\uff0c\u53d6\u6d88\u9700\u8981\u521b\u5efa ",(0,r.kt)("inlineCode",{parentName:"li"},"Lang.cs")," \u7a7a\u7c7b\u7684\u8981\u6c42 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I434YJ"},"#I434YJ")),(0,r.kt)("li",{parentName:"ul"},"[\u4f18\u5316]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"MiniProfiler")," \u6027\u80fd\uff0c\u51cf\u5c11\u4e0d\u5fc5\u8981\u7684\u76d1\u542c")))),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"v215\uff08\u5df2\u53d1\u5e03\uff09"},"v2.15\uff08\u5df2\u53d1\u5e03\uff09"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u65b0\u7279\u6027")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Db.GetDbRepository<\u5b9a\u4f4d\u5668>()")," \u9759\u6001\u65b9\u6cd5 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I41MZP"},"#I41MZP")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u8fdc\u7a0b\u8bf7\u6c42\u7f3a\u7701\u5e8f\u5217\u5316\u914d\u7f6e\u9009\u9879 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I41PBW"},"#I41PBW")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u9898\u4fee\u590d")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u81ea\u52a8\u626b\u63cf\u63a5\u53e3\u8fdb\u884c\u4f9d\u8d56\u6ce8\u5165\u83b7\u53d6\u9996\u4e2a\u63a5\u53e3\u9519\u8bef bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I41D1M"},"#I41D1M")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"IRepository")," \u6ca1\u6709\u5b9e\u73b0 ",(0,r.kt)("inlineCode",{parentName:"li"},"IRepository")," \u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I41MZP"},"#I41MZP")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u8fdc\u7a0b\u8bf7\u6c42\u7f3a\u7701\u5e8f\u5217\u5316 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I41PBW"},"#I41PBW")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u4fee\u590d ",(0,r.kt)("inlineCode",{parentName:"li"},"AppDbContext.Tenant")," \u591a\u79df\u6237\u7a7a\u5f02\u5e38\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I421DA"},"#I421DA")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Worker Service")," \u591a\u4e2a ",(0,r.kt)("inlineCode",{parentName:"li"},"Worker")," \u5b9a\u65f6\u4efb\u52a1\u963b\u585e\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/commit/82a79cce0a3d9b09f4090b7363c3b78327c76846"},"82a79cc")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Jwt")," \u81ea\u52a8\u5237\u65b0\u673a\u5236\u65f6\u533a\u5904\u7406\u95ee\u9898\uff0c\u4e3b\u8981\u9488\u5bf9\u56fd\u5916\u7528\u6237 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I41UB1"},"#I41UB1")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/commit/82a79cce0a3d9b09f4090b7363c3b78327c76846"},"82a79cc")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u5176\u4ed6\u66f4\u6539")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4f18\u5316]"," ",(0,r.kt)("strong",{parentName:"li"},"\u7cfb\u7edf\u542f\u52a8\u6027\u80fd\uff0c\u4ece 106M \u51cf\u5c11\u5230 84M")),(0,r.kt)("li",{parentName:"ul"},"[\u4f18\u5316]"," ",(0,r.kt)("strong",{parentName:"li"},"\u5927\u91cf\u5e95\u5c42\u4ee3\u7801\uff0c\u5305\u5927\u5c0f\u4ece 391Kb \u51cf\u5c11\u5230 350Kb\uff08\u4e0d\u5e26\u6ce8\u91ca\u7248\u672c\u4ec5 64Kb\uff09"))))),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"v213v214\uff08\u5df2\u53d1\u5e03\uff09"},"v2.13/v2.14\uff08\u5df2\u53d1\u5e03\uff09"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u65b0\u7279\u6027")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u7b80\u6613\u5b57\u7b26\u4e32\u6a21\u677f\u529f\u80fd\uff0c\u652f\u6301\u8fdc\u7a0b\u8bf7\u6c42\u3001\u6570\u636e\u5e93\u6a21\u5757\u3001\u65e5\u5fd7\u6a21\u5757\u3001\u4e8b\u4ef6\u603b\u7ebf\u6a21\u5757\u3001\u5b9a\u65f6\u4efb\u52a1\u6a21\u5757\u3001\u5f02\u5e38\u6a21\u5757\u3001\u6570\u636e\u6821\u9a8c\u6a21\u5757 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I402BL"},"#I402BL")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"404")," \u72b6\u6001\u7801\u89c4\u8303\u5316\u9ed8\u8ba4\u5904\u7406 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I408F5"},"#I408F5")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u5b9a\u65f6\u4efb\u52a1 ",(0,r.kt)("inlineCode",{parentName:"li"},"ISpareTimeWorker")," \u58f0\u660e\u65b9\u5f0f\u652f\u6301\u5f02\u6b65\u65b9\u6cd5 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I40KWR"},"#I40KWR")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u81ea\u52a8\u914d\u7f6e\u4e8c\u7ea7\u865a\u62df\u76ee\u5f55 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/pulls/354"},"!354")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u7a81\u7834\u6027\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u5347\u7ea7]"," ",(0,r.kt)("strong",{parentName:"li"},"\u6846\u67b6\u4f9d\u8d56 ",(0,r.kt)("inlineCode",{parentName:"strong"},"SDK")," \u4e3a ",(0,r.kt)("inlineCode",{parentName:"strong"},".NET 5.0.8")," \u7248\u672c")),(0,r.kt)("li",{parentName:"ul"},"[\u79fb\u9664]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Db.GetNewDbContext()")," \u9759\u6001\u65b9\u6cd5 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I400BK"},"#I400BK")),(0,r.kt)("li",{parentName:"ul"},"[\u79fb\u9664]"," \u6570\u636e\u5e93\u6a21\u5757\u65f6\u6001\u8868\u62d3\u5c55\u652f\u6301 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I405HI"},"#I405HI")),(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"IJsonSerializerProvider")," \u63a5\u53e3\u53c2\u6570\uff0c\u65b0\u589e ",(0,r.kt)("inlineCode",{parentName:"li"},"inherit")," \u53c2\u6570 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3ZQU5"},"#I3ZQU5")),(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"AppSettings")," \u914d\u7f6e\u7684 ",(0,r.kt)("inlineCode",{parentName:"li"},"LogEntityFrameworkCoreSqlExecuteCommand")," \u540d\u79f0\u4e3a ",(0,r.kt)("inlineCode",{parentName:"li"},"OutputOriginalSqlExecuteLog")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I40VVE"},"#I40VVE")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u9898\u4fee\u590d")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Worker Services")," \u5b9a\u65f6\u4efb\u52a1\u8fb9\u754c\u503c\u95ee\u9898\u5bfc\u81f4\u8df3\u8fc7\u5355\u6b21\u4efb\u52a1 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I405NI"},"#I405NI")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Worker Services")," \u72ec\u7acb\u53d1\u5e03\u540e\u7a0b\u5e8f\u96c6\u626b\u63cf\u5931\u6548 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3ZH3X"},"#I3ZH3X")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u8fdc\u7a0b\u8bf7\u6c42\u5982\u679c\u914d\u7f6e\u4e86 ",(0,r.kt)("inlineCode",{parentName:"li"},"Client")," \u5ba2\u6237\u7aef\u4f46\u4f20\u5165\u4e86\u7a7a ",(0,r.kt)("inlineCode",{parentName:"li"},"RequestUrl")," \u5730\u5740\u5bfc\u81f4\u5f02\u5e38\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I40BC6"},"#I40BC6")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u89c4\u8303\u5316\u7ed3\u679c\u7be1\u6539\u975e\u77ed\u8def\u7aef\u72b6\u6001\u7801\u51fa\u73b0\u5f02\u5e38 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I408F5"},"#I408F5")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u5176\u4ed6\u66f4\u6539")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4f18\u5316]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"App.GetServiceProvider(type)")," \u89e3\u6790\u670d\u52a1\u6027\u80fd ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I40KXN"},"#I40KXN")),(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," \u89c6\u56fe\u5f15\u64ce\u4fdd\u5b58\u6210\u6587\u4ef6\u6d41\u9ed8\u8ba4\u7f13\u5b58\u533a\u5927\u5c0f\uff0c\u4ece ",(0,r.kt)("inlineCode",{parentName:"li"},"4096")," \u63d0\u5347\u81f3 ",(0,r.kt)("inlineCode",{parentName:"li"},"8192")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I40KH5"},"#I40KH5"))))),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"v210211212-\uff08\u5df2\u53d1\u5e03\uff09"},"v2.10/2.11/2.12 \uff08\u5df2\u53d1\u5e03\uff09"),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"\u8be5\u7248\u672c\u6709\u591a\u4e2a\u7834\u574f\u6027\u66f4\u6539\uff0c\u66f4\u65b0\u65f6\u8bf7\u8ba4\u771f\u67e5\u770b\u3002")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u65b0\u7279\u6027")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"App.Configuration.Reload()")," \u62d3\u5c55 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3XYI8"},"#I3XYI8")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"ISubscribeHandler")," \u652f\u6301\u5f02\u6b65\u65b9\u6cd5\u5b9a\u4e49 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3XYHJ"},"#I3XYHJ")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"app.UseUnifyResultStatusCodes()")," \u53ef\u914d\u7f6e\u4fee\u6539\u8fd4\u56de\u72b6\u6001\u7801 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3VZQH"},"#I3VZQH")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u8fdc\u7a0b\u8bf7\u6c42\u6dfb\u52a0\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"User-Agent")," \u5934 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3W17C"},"#I3W17C")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u652f\u6301 ",(0,r.kt)("inlineCode",{parentName:"li"},"Sql")," \u9ad8\u7ea7\u4ee3\u7406\u5207\u6362\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u5b9a\u4f4d\u5668 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3XFP6"},"#I3XFP6")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3XDCR"},"#I3XDCR")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u5b9a\u65f6\u4efb\u52a1 ",(0,r.kt)("inlineCode",{parentName:"li"},"CronFormat")," \u81ea\u52a8\u8bc6\u522b ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3Y7GT"},"#I3Y7GT")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Sql \u9ad8\u7ea7\u4ee3\u7406")," \u62e6\u622a\u529f\u80fd ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3YHG4"},"#I3YHG4")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u62e6\u622a\u8fdc\u7a0b\u8bf7\u6c42\u6240\u6709\u5f02\u5e38\u5904\u7406 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3YPDE"},"#I3YPDE")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u8fdc\u7a0b\u8bf7\u6c42\u914d\u7f6e ",(0,r.kt)("inlineCode",{parentName:"li"},"Timeout")," \u8d85\u65f6\u65f6\u95f4 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3YPPK"},"#I3YPPK")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u65b0\u589e ",(0,r.kt)("inlineCode",{parentName:"li"},"RSA")," \u52a0\u5bc6\u7b97\u6cd5 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3YZNU"},"#I3YZNU")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/pulls/345"},"!345")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"DataTable")," \u548c ",(0,r.kt)("inlineCode",{parentName:"li"},"DataSet")," \u652f\u6301\u4e0d\u6307\u5b9a\u5f3a\u7c7b\u578b\u8fd4\u56de ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3Z6RI"},"#I3Z6RI")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Sql")," \u5b57\u7b26\u4e32\u62d3\u5c55\u65b9\u6cd5\u8bbe\u7f6e ",(0,r.kt)("inlineCode",{parentName:"li"},"Timeout")," \u8d85\u65f6\u65f6\u95f4 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3ZKWF"},"#I3ZKWF")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Sql")," \u9ad8\u7ea7\u4ee3\u7406 ",(0,r.kt)("inlineCode",{parentName:"li"},"[Timeout]")," \u7279\u6027\uff0c\u8bbe\u7f6e\u8d85\u65f6\u65f6\u95f4 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3ZKWF"},"#I3ZKWF")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u7a81\u7834\u6027\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u79fb\u9664]"," ",(0,r.kt)("strong",{parentName:"li"},(0,r.kt)("inlineCode",{parentName:"strong"},"FakeDelete")," \u5047\u5220\u9664/\u8f6f\u5220\u9664\u6240\u6709\u529f\u80fd ",(0,r.kt)("a",{parentName:"strong",href:"https://gitee.com/dotnetchina/Furion/issues/I3XKII"},"#I3XKII"))),(0,r.kt)("li",{parentName:"ul"},"[\u79fb\u9664]"," ",(0,r.kt)("strong",{parentName:"li"},"\u79fb\u9664 ",(0,r.kt)("inlineCode",{parentName:"strong"},"PBKDF2")," \u52a0\u5bc6\u7b97\u6cd5 ",(0,r.kt)("a",{parentName:"strong",href:"https://gitee.com/dotnetchina/Furion/issues/I3Z0IO"},"#I3Z0IO"))),(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," ",(0,r.kt)("strong",{parentName:"li"},"\u8fdc\u7a0b\u8bf7\u6c42\u8bbe\u7f6e\u8d85\u65f6\u65f6\u95f4\u5355\u4f4d\u7531 ",(0,r.kt)("inlineCode",{parentName:"strong"},"\u5206\u949f")," \u6539\u4e3a ",(0,r.kt)("inlineCode",{parentName:"strong"},"\u79d2")," ",(0,r.kt)("a",{parentName:"strong",href:"https://gitee.com/dotnetchina/Furion/issues/I3YPPK"},"#I3YPPK"))),(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," ",(0,r.kt)("strong",{parentName:"li"},(0,r.kt)("inlineCode",{parentName:"strong"},"IJsonSerializerProvider")," \u63a5\u53e3\u53c2\u6570\uff0c\u65b0\u589e ",(0,r.kt)("inlineCode",{parentName:"strong"},"inherit")," \u53c2\u6570 ",(0,r.kt)("a",{parentName:"strong",href:"https://gitee.com/dotnetchina/Furion/issues/I3ZQU5"},"#I3ZQU5"))),(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"[NonAutomatic]")," \u7279\u6027\u540d\u79f0\u4e3a ",(0,r.kt)("inlineCode",{parentName:"li"},"[Manual]")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3XKKX"},"#I3XKKX")),(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"[NotChangedListener]")," \u7279\u6027\u540d\u79f0\u4e3a ",(0,r.kt)("inlineCode",{parentName:"li"},"[SuppressChangedListener]")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3XKLZ"},"#I3XKLZ")),(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"[ManualSaveChanges]")," \u540d\u79f0\u4e3a ",(0,r.kt)("inlineCode",{parentName:"li"},"[ManualCommit]")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3XKNP"},"#I3XKNP")),(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," ",(0,r.kt)("strong",{parentName:"li"},(0,r.kt)("inlineCode",{parentName:"strong"},"DbContext.TenantIdQueryFilterExpression")," \u540d\u79f0\u4e3a ",(0,r.kt)("inlineCode",{parentName:"strong"},"DbContext.BuildTenantQueryFilter")," ",(0,r.kt)("a",{parentName:"strong",href:"https://gitee.com/dotnetchina/Furion/issues/I3XKTB"},"#I3XKTB"))),(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"[SkipScan]")," \u540d\u79f0\u4e3a ",(0,r.kt)("inlineCode",{parentName:"li"},"[SuppressSniffer]")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3XN5N"},"#I3XN5N")),(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"[SkipProxy]")," \u540d\u79f0\u4e3a ",(0,r.kt)("inlineCode",{parentName:"li"},"[SuppressProxy]")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3XN7O"},"#I3XN7O")),(0,r.kt)("li",{parentName:"ul"},"[\u91cd\u6784]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Sql")," \u6267\u884c\uff0c\u6027\u80fd\u63d0\u5347 20% ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3W33U"},"#I3W33U")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u9898\u4fee\u590d")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u52a8\u6001 WebAPI \u626b\u63cf\u63a7\u5236\u5668\u6ca1\u6709\u5c4f\u853d\u6ca1\u6709\u6ce8\u518c\u7684\u7b2c\u4e09\u65b9\u63a7\u5236\u5668 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3Y7TJ"},"#I3Y7TJ")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"AppDbContext")," \u8bbe\u7f6e ",(0,r.kt)("inlineCode",{parentName:"li"},"TablePrefix")," \u65e0\u6548\uff1a ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3Y57Q"},"#I3Y57Q")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u4fee\u590d\u5b9a\u65f6\u4efb\u52a1\u4f7f\u7528\u5f02\u6b65\u59d4\u6258\u5bfc\u81f4\u7a0b\u5e8f\u7ec8\u6b62 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3XVZ0"},"#I3XVZ0")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u4e8b\u4ef6\u603b\u7ebf\u4e00\u4e2a ",(0,r.kt)("inlineCode",{parentName:"li"},"\u6d88\u606fid")," \u5bf9\u5e94\u591a\u4e2a ",(0,r.kt)("inlineCode",{parentName:"li"},"Handler")," \u53ea\u89e6\u53d1\u7b2c\u4e00\u4e2a",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3XYP0"},"#I3XYP0")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},".ToPagedList()")," \u5206\u9875\u65b9\u6cd5\u4f20\u5165\u5c0f\u4e8e\u6216\u7b49\u4e8e 0 \u7684\u9875\u7801 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3XNAN"},"#I3XNAN")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"JSON")," \u5e8f\u5217\u5316\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"DateTimeOffset")," \u5f02\u5e38 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3XMOL"},"#I3XMOL")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u7ee7\u627f ",(0,r.kt)("inlineCode",{parentName:"li"},"Serilog")," \u65e5\u5fd7\u5728 ",(0,r.kt)("inlineCode",{parentName:"li"},"Worker Service")," \u751f\u6210\u91cd\u590d\u65e5\u5fd7 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3WA0L"},"#I3WA0L")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/pulls/331"},"!331")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"\u7c98\u571f\u5bf9\u8c61")," \u52a8\u6001\u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"li"},"Clay")," \u7c7b\u578b bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3W9LW"},"#I3W9LW")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"ValidationTypes.Numeric")," \u6821\u9a8c\u6570\u503c\u7c7b\u578b\u6b63\u5219\u8868\u8fbe\u5f0f\u9519\u8bef ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3WADS"},"#I3WADS")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u6570\u636e\u5e93\u547d\u4ee4\u53c2\u6570 ",(0,r.kt)("inlineCode",{parentName:"li"},"DbParameter")," \u7684 ",(0,r.kt)("inlineCode",{parentName:"li"},"Value")," \u662f ",(0,r.kt)("inlineCode",{parentName:"li"},"object")," \u7c7b\u578b\u7684\u65f6\u5019\u4e14\u4e0d\u6307\u5b9a ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3YKM6"},"#I3YKM6")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Oracle")," \u6570\u636e\u5e93\u5b58\u50a8\u8fc7\u7a0b ",(0,r.kt)("inlineCode",{parentName:"li"},"\u6e38\u6807\u53c2\u6570")," \u62a5\u9519\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3ZBYE"},"#I3ZBYE")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Worker Services")," \u91c7\u7528\u72ec\u7acb\u53d1\u5e03\u540e\u65e0\u6cd5\u6267\u884c\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3ZH3X"},"#I3ZH3X")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u4fee\u590d\u8fdc\u7a0b\u8bf7\u6c42\u5982\u679c\u65e0\u8fd4\u56de\u503c\u5e8f\u5217\u5316\u5f02\u5e38\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/pulls/348"},"!348")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u5176\u4ed6\u66f4\u6539")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u589e\u5f3a]"," \u652f\u6301 ",(0,r.kt)("inlineCode",{parentName:"li"},"appsettings.json")," \u7b49\u81ea\u5b9a\u4e49\u914d\u7f6e\u6587\u4ef6\u4e2d\u6587\u547d\u540d ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3YBFD"},"#I3YBFD")),(0,r.kt)("li",{parentName:"ul"},"[\u6539\u8fdb]"," \u8fdc\u7a0b\u8bf7\u6c42\u914d\u7f6e\u547d\u540d\u5ba2\u6237\u7aef ",(0,r.kt)("inlineCode",{parentName:"li"},"BaseAddress")," \u5730\u5740\u517c\u5bb9\u5904\u7406 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3YCRH"},"#I3YCRH")),(0,r.kt)("li",{parentName:"ul"},"[\u79fb\u9664]"," \u6846\u67b6\u65e0\u7528\u4ee3\u7801\u3001\u4f18\u5316\u4ee3\u7801"),(0,r.kt)("li",{parentName:"ul"},"[\u4f18\u5316]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Furion")," \u5728 ",(0,r.kt)("inlineCode",{parentName:"li"},"\u975e Web")," \u73af\u5883\u4e0b\u6027\u80fd"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u6587\u6863\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u4f1a\u8bdd\u548c\u72b6\u6001\u7ba1\u7406 \u6587\u6863 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3YI3G"},"#I3YI3G")),(0,r.kt)("li",{parentName:"ul"},"[\u66f4\u65b0]"," \u8fdc\u7a0b\u8bf7\u6c42\u3001\u65e5\u5fd7\u3001\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u3001\u8fdc\u7a0b\u8bf7\u6c42\u3001",(0,r.kt)("inlineCode",{parentName:"li"},"Sql")," \u9ad8\u7ea7\u4ee3\u7406\u6587\u6863"),(0,r.kt)("li",{parentName:"ul"},"[\u66f4\u65b0]"," \u914d\u7f6e\u6587\u4ef6 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3Y2EV"},"#I3Y2EV")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u7b54\u7b54\u7591")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"dapper")," \u591a\u4e2a\u6570\u636e\u6e90\u5982\u4f55\u7ee7\u627f ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3WUOI"},"#I3WUOI")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u5173\u4e8e ",(0,r.kt)("inlineCode",{parentName:"li"},"SpareTime")," \u591a\u6b21\u6267\u884c\u95ee\u9898",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3XEQU"},"#I3XEQU")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u9009\u9879\u66f4\u6539\u901a\u77e5\uff08\u70ed\u66f4\u65b0\uff09\uff1a\u6570\u636e\u5e93\u91cc\u7684\u6570\u636e\u66f4\u6539\u4e86\u5982\u4f55\u901a\u77e5\u9009\u9879\u8fdb\u884c\u6539\u53d8\uff1f ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3XYI8"},"#I3XYI8")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"SaaS")," \u591a\u79df\u6237\u6dfb\u52a0\u65f6\u65e0\u6cd5\u83b7\u53d6\u79df\u6237",(0,r.kt)("inlineCode",{parentName:"li"},"Id")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3Y5CF"},"#I3Y5CF")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u83b7\u53d6 ",(0,r.kt)("inlineCode",{parentName:"li"},"_httpContextAccessor.HttpContext")," \u4e3a\u7a7a",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3Y6BI"},"#I3Y6BI")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Ubuntu")," \u4e2d\u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"li"},"App.Configuration")," \u65b9\u6cd5\u8bfb\u53d6\u4e0d\u5230\u503c ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3Y74H"},"#I3Y74H")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u4f5c\u7528\u57df\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3YHXP"},"#I3YHXP")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"li"},"UnitofWork")," \u63d0\u4ea4\u4e8b\u52a1\uff0c\u53ef\u4ee5\u63d0\u4ea4\u6210\u529f\uff0c\u4f46\u662f\u7cfb\u7edf\u4f1a\u6709\u9519\u8bef ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3YIWU"},"#I3YIWU")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u6570\u636e\u5e93\u8bfb\u5199\u5206\u79bb--\u975e\u9ed8\u8ba4\u4e3b\u5e93\u7684\u4ece\u5e93\u968f\u673a\u8be5\u5982\u4f55\u914d\u7f6e\uff1f ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3YVR7"},"#I3YVR7")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u4e0d\u505a\u5b9e\u73b0")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"SpareTIme")," \u65b0\u589e ",(0,r.kt)("inlineCode",{parentName:"li"},"Dashboard")," \u63a7\u5236\u53f0\u770b\u677f\uff0c\u540c\u65f6\u53ef\u4ee5\u5bf9\u4efb\u52a1\u8fdb\u884c\u6682\u505c\u3001\u5220\u9664\u3001\u67e5\u770b",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3XELY"},"#I3XELY"))))),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"v290-\uff08\u5f53\u524d\u7248\u672c\uff09"},"v2.9.0 \uff08\u5f53\u524d\u7248\u672c\uff09"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u65b0\u7279\u6027")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("strong",{parentName:"li"},"\u5e94\u7528\u5168\u5c40\u672a\u6258\u7ba1\u8d44\u6e90\u76d1\u542c\uff0c\u5e76\u5b9e\u73b0\u7279\u5b9a\u65f6\u673a\u91ca\u653e\u975e\u6258\u7ba1\u8d44\u6e90")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3VXAU"},"#I3VXAU")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u4e0d\u5305\u542b ",(0,r.kt)("inlineCode",{parentName:"li"},"EntityFramework.Core")," \u7248\u672c\u7684 ",(0,r.kt)("inlineCode",{parentName:"li"},"Furion.Pure")," \u5305",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3VGW8"},"#I3VGW8")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," swagger \u652f\u6301\u8bbe\u7f6e\u591a\u8bed\u8a00\u65b9\u5f0f\uff0c\u8bbe\u7f6e\u7684\u8bed\u8a00\u81ea\u52a8\u6dfb\u52a0\u5230 api \u5730\u5740\u540e\u9762 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3VDTD"},"#I3VDTD")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u52a8\u6001 WebAPI \u652f\u6301 ",(0,r.kt)("inlineCode",{parentName:"li"},"[FromRoute]")," \u975e\u5fc5\u586b\uff08\u9009\u586b\uff09\u53c2\u6570\u8bbe\u7f6e ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3VFIM"},"#I3VFIM")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u52a8\u6001 WebAPI \u53c2\u6570\u652f\u6301\u914d\u7f6e\u8def\u7531\u7ea6\u675f ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3VFIR"},"#I3VFIR")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"MD5")," \u548c ",(0,r.kt)("inlineCode",{parentName:"li"},"DESC")," \u52a0\u5bc6\u652f\u6301 ",(0,r.kt)("inlineCode",{parentName:"li"},"\u5927\u5199")," \u8f93\u51fa ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/pulls/326"},"#326")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u7a81\u7834\u6027\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Furion")," \u6240\u6709\u5305\u751f\u6210 ",(0,r.kt)("inlineCode",{parentName:"li"},".snupkg")," \u5305\uff0c\u652f\u6301\u5f00\u53d1\u9636\u6bb5\u76f4\u63a5\u8c03\u8bd5 ",(0,r.kt)("inlineCode",{parentName:"li"},"Furion")," \u6240\u6709\u5305\u6e90\u7801 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3VFIX"},"#I3VFIX")),(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"repository.BuildChange()")," \u65b9\u6cd5\u7684\u8fd4\u56de\u503c\uff0c\u591a\u8fd4\u56de\u4e00\u4e2a ",(0,r.kt)("inlineCode",{parentName:"li"},"IServiceScope")," \u5bf9\u8c61 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3VX3D"},"#I3VX3D")),(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"JWT")," \u5237\u65b0 ",(0,r.kt)("inlineCode",{parentName:"li"},"Token")," \u65b9\u6cd5 ",(0,r.kt)("inlineCode",{parentName:"li"},"AutoRefreshToken")," \u53c2\u6570 ",(0,r.kt)("inlineCode",{parentName:"li"},"days")," \u6539\u4e3a ",(0,r.kt)("inlineCode",{parentName:"li"},"minutes")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3VXNB"},"#I3VXNB")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u9898\u4fee\u590d")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"App.GetOptionsSnapshot<>")," \u4ece\u6839\u670d\u52a1\u89e3\u6790\u5f02\u5e38 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3VS2X"},"#I3VS2X")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u4fee\u590d\u8fdc\u7a0b\u8bf7\u6c42\u5982\u679c\u51fa\u73b0\u5f02\u5e38\uff0c\u8fd4\u56de ",(0,r.kt)("inlineCode",{parentName:"li"},"Stream")," \u4e3a null \u5bfc\u81f4\u5f02\u5e38\u7684\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3VSTU"},"#I3VSTU")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u5982\u679c\u5b9e\u4f53\u88ab\u8ddf\u8e2a\u540e\uff0c\u65e0\u6cd5\u6267\u884c\u5220\u9664\u64cd\u4f5c ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3W08P"},"#I3W08P")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u5176\u4ed6\u66f4\u6539")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4f18\u5316]"," \u8fd0\u884c\u65f6\u5185\u5b58\uff0c\u5b9e\u73b0\u8bf7\u6c42\u7ed3\u675f\u81ea\u52a8\u91ca\u653e\u672a\u6258\u7ba1\u8d44\u6e90 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3VXAU"},"#I3VXAU")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u6587\u6863\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u66f4\u65b0]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"App")," \u9759\u6001\u7c7b\u6587\u6863\u3001\u8fdc\u7a0b\u8bf7\u6c42\u6587\u6863\u3001\u5206\u8868\u5206\u5e93\u6587\u6863"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u7b54\u7b54\u7591")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u52a8\u6001 WebAPI\uff0c\u81ea\u5b9a\u4e49\u6839\u636e\u65b9\u6cd5\u540d\u751f\u6210 ","[HttpMethod]"," \u89c4\u5219\u62a5\u9519 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3VKQG"},"#I3VKQG")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"InsertAsync")," \u7684\u65f6\u5019\u63d0\u793a ",(0,r.kt)("inlineCode",{parentName:"li"},"ID")," \u4e3a\u7a7a ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3VS7E"},"#I3VS7E")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"FirstOrDefault")," \u81ea\u52a8\u8fc7\u6ee4\u4e86 ",(0,r.kt)("inlineCode",{parentName:"li"},"TanantId")," \u5b57\u6bb5 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3W0VH"},"#I3W0VH")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u5bf9\u65b9\u63a5\u53e3\u8fd4\u56de ",(0,r.kt)("inlineCode",{parentName:"li"},"HttpConnectionResponseContent")," \u8fdc\u7a0b\u8bf7\u6c42\u62ff\u4e0d\u5230\u8fd4\u56de\u503c ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3W17C"},"#I3W17C")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u67e5\u8be2\u65b9\u6cd5 ",(0,r.kt)("inlineCode",{parentName:"li"},"FindOrDefault")," \u62a5\u9519 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3W830"},"#I3W830")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"SqlNonQuery")," \u5728 ",(0,r.kt)("inlineCode",{parentName:"li"},"UnitOfWork")," \u5faa\u73af\u6267\u884c",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3W8WW"},"#I3W8WW")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u56e0 ",(0,r.kt)("inlineCode",{parentName:"li"},"Swagger")," \u914d\u7f6e\u95ee\u9898\uff0c\u5bfc\u81f4 ",(0,r.kt)("inlineCode",{parentName:"li"},"Swagger")," \u4e2d\u4e0d\u80fd\u81ea\u52a8\u643a\u5e26 token \u6388\u6743\u7684\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3W934"},"#I3W934")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u8fdc\u7a0b\u8bf7\u6c42 ",(0,r.kt)("inlineCode",{parentName:"li"},"SetBody")," \u53c2\u6570\u8bc6\u522b\u4e0d\u4e86",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3WBM1"},"#I3WBM1")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Scoped.Create")," \u91cc\u6267\u884c ",(0,r.kt)("inlineCode",{parentName:"li"},"sql.SqlNonQuery()")," \u6216\u8005 ",(0,r.kt)("inlineCode",{parentName:"li"},"obj.insert()")," \u95ee\u9898",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3WB5O"},"#I3WB5O")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u8c03\u7528\u51fd\u6570\u6216\u5b58\u50a8\u8fc7\u7a0b\uff0c\u600e\u4e48\u51fa\u53c2\u6570\u636e\u81ea\u5b9a\u4e49\u5bf9\u8c61\uff1f\u5982 ",(0,r.kt)("inlineCode",{parentName:"li"},"Oracle"),"\u6570\u636e\u5e93\u7684\u6570\u7ec4\u6216\u8bb0\u5f55 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3W71W"},"#I3W71W")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u4e0d\u505a\u5b9e\u73b0")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65e0\u6548]"," \u6570\u636e\u5e93\u5c0f\u5199\u4e0b\u5212\u7ebf\u5b57\u6bb5\uff0c\u65e0\u6cd5\u81ea\u52a8\u6620\u5c04\u6210\u5c0f\u9a7c\u5cf0 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3W021"},"#I3W021")),(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"EfCore 5")," \u76f4\u63a5\u591a\u5bf9\u591a\u65f6\u8fdb\u884c ",(0,r.kt)("inlineCode",{parentName:"li"},"SeedData")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3WDRJ"},"#I3WDRJ"))))),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"v270280-\uff08\u5df2\u53d1\u5e03\uff09"},"v2.7.0/2.8.0 \uff08\u5df2\u53d1\u5e03\uff09"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u65b0\u7279\u6027")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},'throw Oops.On("\u5f02\u5e38\u6d88\u606f")')," \u5e94\u7528\u591a\u8bed\u8a00\u652f\u6301 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3UYC2"},"#I3UYC2")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Db.GetMSRepository()")," \u83b7\u53d6\u4e3b\u4ece\u5e93\u4ed3\u50a8\u9759\u6001\u65b9\u6cd5 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3UBSJ"},"#I3UBSJ")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u5de5\u4f5c\u5355\u5143\u7279\u6027\uff0c\u652f\u6301\u9759\u6001\u7c7b\u5f3a\u5236\u6027\u5f00\u542f\u5171\u4eab\u4e8b\u52a1 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3S9N8"},"#I3S9N8")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"EFCore")," \u6267\u884c ",(0,r.kt)("inlineCode",{parentName:"li"},"sql")," \u6a21\u5f0f\u6253\u5370\u65e5\u5fd7 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3SE8X"},"#I3SE8X")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u8fdc\u7a0b\u8bf7\u6c42\u652f\u6301\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"HttpClient")," \u914d\u7f6e ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3SI17"},"#I3SI17")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u65b0\u589e ",(0,r.kt)("inlineCode",{parentName:"li"},"\u77ed ID")," \u751f\u6210\u529f\u80fd ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3T7JP"},"#I3T7JP")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"[SensitiveDetection]")," \u652f\u6301\u914d\u7f6e\u66ff\u6362\u654f\u611f\u8bcd\u6c47 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3THIA"},"#I3THIA")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"SpecificationDocumentBuilder.DocumentGroups")," \u548c ",(0,r.kt)("inlineCode",{parentName:"li"},"SpecificationDocumentBuilder.CheckApiDescriptionInCurrentGroup(currentGroup, apiDescription)")," \u516c\u5f00\u65b9\u6cd5",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3UDSY"},"#I3UDSY")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u7a81\u7834\u6027\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u91cd\u6784]"," \u81ea\u52a8\u626b\u63cf ",(0,r.kt)("inlineCode",{parentName:"li"},".json")," \u548c ",(0,r.kt)("inlineCode",{parentName:"li"},".xml")," \u6587\u4ef6\u5e76\u52a0\u8f7d\u5230\u914d\u7f6e\u4e2d\u7684\u4ee3\u7801\u548c\u89c4\u5219\uff0c\u540c\u65f6\u79fb\u9664\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},".xml")," \u6587\u4ef6\u52a0\u8f7d\uff0c\u53ea\u4fdd\u7559 ",(0,r.kt)("inlineCode",{parentName:"li"},".json")," \u6587\u4ef6 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3UJ3L"},"#I3UJ3L")),(0,r.kt)("li",{parentName:"ul"},"[\u91cd\u6784]"," \u5206\u5e03\u5f0f\u8fde\u7eed ",(0,r.kt)("inlineCode",{parentName:"li"},"GUID")," \u4ee3\u7801 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3UBK0"},"#I3UBK0")),(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," ",(0,r.kt)("strong",{parentName:"li"},(0,r.kt)("inlineCode",{parentName:"strong"},"Scoped.CreateUnitOfWork")," \u540d\u79f0\u4e3a ",(0,r.kt)("inlineCode",{parentName:"strong"},"Scoped.CreateUow")," ",(0,r.kt)("a",{parentName:"strong",href:"https://gitee.com/dotnetchina/Furion/issues/I3SJPU"},"#I3SJPU"))),(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"JWTEncryption.Validate")," \u8fd4\u56de\u503c\uff0c\u652f\u6301\u8fd4\u56de ",(0,r.kt)("inlineCode",{parentName:"li"},"TokenValidationResult")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3S2ND"},"#I3S2ND")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u9898\u4fee\u590d")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"[DataValidation]")," \u548c ",(0,r.kt)("inlineCode",{parentName:"li"},"[SensitiveDetection]")," \u591a\u8bed\u8a00\u5e94\u7528\u5931\u6548 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3UH6U"},"#I3UH6U")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Scoped")," \u7cfb\u5217\u65b9\u6cd5\u5f02\u6b65\u51fa\u73b0 ",(0,r.kt)("inlineCode",{parentName:"li"},"Task is cancel")," \u60c5\u51b5 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3SJF6"},"#I3SJF6")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Mysql")," \u6570\u636e\u5e93\u7684 ",(0,r.kt)("inlineCode",{parentName:"li"},"ToPagedList")," \u65b9\u6cd5\u8fd4\u56de\u7684\u7ed3\u679c\u8fdb\u884c\u904d\u5386\u51fa\u73b0 ",(0,r.kt)("inlineCode",{parentName:"li"},"MySqlConnection is aleady use")," \u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3SJQ3"},"#I3SJQ3")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"tool/cli.psl")," \u6ca1\u6709\u5305\u542b\u9879\u76ee\u540d\u79f0 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3S1T6"},"#I3S1T6")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u8fdc\u7a0b\u8bf7\u6c42\u505a\u4e0a\u4f20\u6587\u4ef6\u65f6\uff0c\u6ca1\u6709\u4f20\u5165 ",(0,r.kt)("inlineCode",{parentName:"li"},"Body"),"\uff0c\u7a0b\u5e8f\u76f4\u63a5\u8df3\u8fc7 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3TKFH"},"#I3TKFH")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u8fdc\u7a0b\u8bf7\u6c42 ",(0,r.kt)("inlineCode",{parentName:"li"},"multipart/form-data")," \u5185\u5bb9\u5206\u5272\u7b26\u7f3a\u5931 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3TNO9"},"#I3TNO9")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u8fdc\u7a0b\u8bf7\u6c42\u4ee3\u7406\u62e6\u622a\u65b9\u5f0f\u8fd4\u56de ",(0,r.kt)("inlineCode",{parentName:"li"},"HttpResponseMessage")," \u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3V161"},"#I3V161")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"repository.Database.SetCommandTimeout(600)")," \u65e0\u6cd5\u751f\u6548",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3VAQS"},"#I3VAQS")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u5176\u4ed6\u66f4\u6539")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u6539\u8fdb]"," \u652f\u6301\u89c4\u8303\u5316\u7ed3\u679c\u4e2d\u95f4\u4ef6\u5224\u65ad\u662f\u5426\u8df3\u8fc7\u89c4\u8303\u5316\u7ed3\u679c ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3T2AA"},"#I3T2AA")),(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," \u66f4\u65b0\u90e8\u5206\u5217 ",(0,r.kt)("inlineCode",{parentName:"li"},"UpdateIncludeNowAsync")," \u5177\u6709\u4e8c\u4e49\u6027 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3RW9Q"},"#I3RW9Q")),(0,r.kt)("li",{parentName:"ul"},"[\u4f18\u5316]"," ",(0,r.kt)("strong",{parentName:"li"},"\u6846\u67b6\u5e95\u5c42\u6027\u80fd\uff0c\u5927\u5927\u51cf\u5c11\u5185\u5b58\u5360\u7528\u548c\u6ea2\u51fa\u60c5\u51b5\uff0c\u542f\u52a8\u5185\u5b58\u4ece\u4e4b\u524d ",(0,r.kt)("inlineCode",{parentName:"strong"},"136M")," \u4e0b\u5c06\u5230 ",(0,r.kt)("inlineCode",{parentName:"strong"},"86M"))),(0,r.kt)("li",{parentName:"ul"},"[\u5176\u4ed6]"," \u5220\u9664\u65e0\u7528\u4ee3\u7801\uff0c\u4f18\u5316\u4e0d\u89c4\u8303\u547d\u540d\u7b49"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u6587\u6863\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Inject")," \u8bf4\u660e\u6587\u6863 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3TITA"},"#I3TITA")),(0,r.kt)("li",{parentName:"ul"},"[\u66f4\u65b0]"," 4.2.9 \u7684\u793a\u4f8b\u4ee3\u7801\u6587\u6863\uff0c\u65b9\u6cd5\u6ca1\u6709\u653e\u5728 class \u4e2d ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3S9T5"},"#I3S9T5")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u6b63]"," \u89c4\u8303\u5316\u7ed3\u679c 6.5.6 \u591a\u5206\u7ec4\u6392\u5e8f\u56fe\u7247\u5f15\u7528\u9519\u8bef ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3UBOQ"},"#I3UBOQ")),(0,r.kt)("li",{parentName:"ul"},"[\u66f4\u65b0]"," \u9759\u6001\u7c7b ",(0,r.kt)("inlineCode",{parentName:"li"},"Scoped")," \u6587\u6863"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u7b54\u7b54\u7591")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"MasterDbContextLocator")," \u4e0d\u968f\u81ea\u5b9a\u4e49\u7684\u53c2\u6570\u751f\u6210 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3SDBB"},"#I3SDBB")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u4e8b\u4ef6\u603b\u7ebf\u4e2d\u8ba2\u9605\u5904\u7406\u7a0b\u5e8f\u7c7b\u83b7\u53d6\u4e0d\u5230\u7528\u6237\u4fe1\u606f\uff0c\u8fd9\u4e2a\u6b63\u5e38\u5417 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3SS0U"},"#I3SS0U")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u5728\u6709\u591a\u79df\u6237\u8fc7\u6ee4\u5668\u7684\u60c5\u51b5\u4e0b\uff0c\u662f\u5426\u6709\u4e00\u79cd\u65b9\u5f0f\u67e5\u8be2\u5168\u91cf\u7684\u6570\u636e ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3T0VI"},"#I3T0VI")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," mysql \u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"li"},'&"tools/cli.ps1"')," \u9875\u9762\u5316\u52a0\u8f7d\u8868\u7ed3\u6784\u5931\u8d25 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3T4F8"},"#I3T4F8")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u5176\u4ed6 Web \u5c42\u7684 Startup \u4f18\u5148\u6267\u884c ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3T8IP"},"#I3T8IP")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u8f85\u52a9\u89d2\u8272\u670d\u52a1\u5b9e\u73b0\u5efa\u8bae ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3T906"},"#I3T906")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u5f00\u542f ",(0,r.kt)("inlineCode",{parentName:"li"},"easy connection")," \u540e\u540c\u4e00\u5185\u7f51\u5730\u5740\u6d4f\u89c8\u5668\u53ef\u4ee5\u6b63\u5e38\u8bbf\u95ee\uff0c\u8fdc\u7a0b\u8bf7\u6c42\u5219\u65e0\u6cd5\u8bbf\u95ee",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3TA2U"},"#I3TA2U")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"scope.ServiceProvider.GetService"),"\u4e0d\u5b58\u5728 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3TQMV"},"#I3TQMV")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u80fd\u5426\u5728 WPF \u9879\u76ee\u4e2d\u4f7f\u7528\u5462\uff1f ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3TMCC"},"#I3TMCC")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Dapper")," \u591a\u4e2a\u6570\u636e\u6e90 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3TM9B"},"#I3TM9B")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"L.GetSelectCulture()")," \u65b9\u6cd5\u5f02\u5e38 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3TQS4"},"#I3TQS4")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u5faa\u73af\u4e2d\u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"li"},"IDGen.NextID()")," \u5f97\u5230\u7684\u7ed3\u679c\u5e76\u4e0d\u662f\u8fde\u7eed\u7684 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3UAF6"},"#I3UAF6")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u6a21\u5757\u5316\u52a8\u6001\u52a0\u8f7d\u63d2\u4ef6\u652f\u6301\u901a\u914d\u7b26\u5339\u914d.dll ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3UDT8"},"#I3UDT8")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"MVC")," \u6a21\u5f0f\uff0c\u5728 ",(0,r.kt)("inlineCode",{parentName:"li"},"Controller")," \u91cc\u5feb\u6377\u65b9\u5f0f\u521b\u5efa ",(0,r.kt)("inlineCode",{parentName:"li"},"View")," \u9875\u9762\u51fa\u9519 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3UFGB"},"#I3UFGB")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u6570\u636e\u5e93\u8fc1\u79fb\u6ca1\u6709\u79cd\u5b50\u6570\u636e ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3UI7G"},"#I3UI7G")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"SpareTimeAttribute")," \u4e2d \u6839\u636e Cron \u8868\u8fbe\u5f0f \u81ea\u52a8\u5339\u914d Cron \u8868\u8fbe\u5f0f\u683c\u5f0f\u5316\u65b9\u5f0f ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3UTKQ"},"#I3UTKQ")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"li"},"workService")," \u96c6\u6210 ",(0,r.kt)("inlineCode",{parentName:"li"},"SqlSugar")," \u62a5\u9519 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3V8HJ"},"#I3V8HJ")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"sqlserver 2008")," \u5206\u9875\u62a5\u9519\u5982\u4f55\u89e3\u51b3\u5462 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3VF96"},"#I3VF96")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u4e0d\u505a\u5b9e\u73b0")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," \u6dfb\u52a0\u4ee4\u724c\u6876\u9650\u6d41\u7b97\u6cd5 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3SCDV"},"#I3SCDV")),(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," \u5b9a\u65f6\u4efb\u52a1\u7acb\u5373\u6267\u884c\u9700\u6c42 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3SF4A"},"#I3SF4A")),(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," \u6587\u6863\u5efa\u8bae \u5173\u4e8e reids \u548c es \u3001\u6d88\u606f\u961f\u5217\u7684 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3T90I"},"#I3T90I")),(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," IP \u9ad8\u9891\u7387\u8bf7\u6c42\u9650\u5236 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3UHE1"},"#I3UHE1")),(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Url")," \u8f6c\u53d1\u5927\u6a21\u5757 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3TZHO"},"#I3TZHO"))))),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"v250260-\uff08\u5df2\u53d1\u5e03\uff09"},"v2.5.0/2.6.0 \uff08\u5df2\u53d1\u5e03\uff09"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u65b0\u7279\u6027")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u865a\u62df\u6587\u4ef6\u670d\u52a1\uff0c\u652f\u6301\u7269\u7406\u6587\u4ef6\u548c\u5d4c\u5165\u8d44\u6e90\u6587\u4ef6 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3RBR9"},"#I3RBR9")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u8bfb\u5199\u5206\u79bb/\u4e3b\u4ece\u590d\u5236\u4ed3\u50a8 ",(0,r.kt)("inlineCode",{parentName:"li"},"IMSRepository")," \u548c ",(0,r.kt)("inlineCode",{parentName:"li"},"IMSRepository")," \u4ed3\u50a8\uff0c\u53ef\u8fdb\u884c\u968f\u673a\u6216\u81ea\u5b9a\u4e49\u83b7\u53d6\u4ece\u5e93"),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u6570\u636e\u8131\u654f\u5904\u7406 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3R5ZF"},"#I3R5ZF")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u7a81\u7834\u6027\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u79fb\u9664]"," ",(0,r.kt)("strong",{parentName:"li"},(0,r.kt)("inlineCode",{parentName:"strong"},"InsertOrUpdate")," \u4e00\u7cfb\u5217\u6570\u636e\u5e93\u64cd\u4f5c\u65b9\u6cd5")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3RI9L"},"#I3RI9L")),(0,r.kt)("li",{parentName:"ul"},"[\u79fb\u9664]"," \u6240\u6709\u5305\u542b ",(0,r.kt)("inlineCode",{parentName:"li"},"Exists")," \u5355\u8bcd\u7684\u6570\u636e\u5e93\u64cd\u4f5c\u65b9\u6cd5 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3RJ0T"},"#I3RJ0T")),(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," \u5206\u5e03\u5f0f GUID ",(0,r.kt)("inlineCode",{parentName:"li"},"IDGenerater")," \u9759\u6001\u7c7b\u540d\u79f0\u4e3a ",(0,r.kt)("inlineCode",{parentName:"li"},"IDGen")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3RGUA"},"#I3RGUA")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u9898\u4fee\u590d")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u8fdc\u7a0b\u8c03\u7528\u65b9\u6cd5\u9519\u8bef\uff0c\u8bf7\u6c42\u62a5\u6587\u5934 ",(0,r.kt)("inlineCode",{parentName:"li"},"Headers")," \u4e0d\u80fd\u6dfb\u52a0\u5230 ",(0,r.kt)("inlineCode",{parentName:"li"},"IHttpDispatchProxy")," \u7684\u5b50\u63a5\u53e3\u4e0a ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3RAF7"},"#I3RAF7")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u5176\u4ed6\u66f4\u6539")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4f18\u5316]"," \u5e94\u7528\u542f\u52a8\u6027\u80fd\uff0c\u51cf\u5c11\u5185\u5b58\u5206\u914d"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u6587\u6863\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u8131\u654f\u5904\u7406\u6587\u6863 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3R6WZ"},"#I3R6WZ")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u6587\u4ef6\u7cfb\u7edf\u6587\u6863\u3001",(0,r.kt)("inlineCode",{parentName:"li"},"FS")," \u9759\u6001\u7c7b\u6587\u6863 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3RCC4"},"#I3RCC4")),(0,r.kt)("li",{parentName:"ul"},"[\u66f4\u65b0]"," \u8bfb\u5199\u5206\u79bb/\u4e3b\u4ece\u590d\u5236\u3001\u6570\u636e\u5e93\u4ed3\u50a8\u6587\u6863\u3001",(0,r.kt)("inlineCode",{parentName:"li"},"Db")," \u9759\u6001\u7c7b ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3R3B6"},"#I3R3B6")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u7b54\u7b54\u7591")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u5173\u4e8e ",(0,r.kt)("inlineCode",{parentName:"li"},"Furion")," \u96c6\u7fa4\u90e8\u7f72 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3R3J4"},"#I3R3J4")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u5347\u7ea7\u6700\u65b0\u6846\u67b6\u4ee5\u540e\uff0c \u6570\u636e\u5e93\u751f\u6210\u6a21\u578b\u62a5\u9519 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3R7TP"},"#I3R7TP")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u4e8b\u52a1\u6267\u884c\u4e2d\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"SaveNow")," \u6267\u884c\u540e\u6709\u8b66\u544a ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3RAJI"},"#I3RAJI")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Hangfire")," \u4f7f\u7528\u4e8b\u52a1\u51fa\u73b0\u9519\u8bef ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3ROQ5"},"#I3ROQ5")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u5982\u4f55\u5b9e\u73b0 cli \u4e0d\u6267\u884c\u67d0\u4e9b\u8868\u7684\u8fc1\u79fb\uff0cweb \u8bf7\u6c42\u53ef\u4ee5\u6b63\u5e38\u64cd\u4f5c\u5462\uff1f ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3ROU5"},"#I3ROU5")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u5728\u4f7f\u7528\u5b9a\u65f6\u4efb\u52a1\u65f6\u5019\u51fa\u73b0\u7684\u95ee\u9898\uff1a\u7ee7\u627f ",(0,r.kt)("inlineCode",{parentName:"li"},"ISpareTimeWorker")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3RRZS"},"#I3RRZS")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"MySql")," \u65f6\u95f4\u5dee 8 \u5c0f\u65f6\u5904\u7406 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3RSCO"},"#I3RSCO")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Db.GetRepository<>")," \u65b9\u6cd5\u7ed3\u5408 ",(0,r.kt)("inlineCode",{parentName:"li"},"[UnitOfWork]")," \u540e\u4e0d\u53ef\u7528 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3RUK5"},"#I3RUK5")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u4e8b\u52a1\u5f00\u542f\u5931\u8d25\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3RYJY"},"#I3RYJY")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u652f\u6301 ",(0,r.kt)("inlineCode",{parentName:"li"},"DbProvider")," \u53ef\u52a8\u6001\u914d\u7f6e ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3RYPE"},"#I3RYPE")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"WorkService")," \u4f9d\u8d56\u6ce8\u5165 ",(0,r.kt)("inlineCode",{parentName:"li"},"ISingleton")," \u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3RZ1L"},"#I3RZ1L")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"ISpareTimeWorker")," \u8fd0\u884c\u671f\u52a8\u6001\u4fee\u6539 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3S33Q"},"#I3S33Q")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u4e0d\u505a\u5b9e\u73b0")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u62d2\u7edd]"," \u6709\u5e8f ",(0,r.kt)("inlineCode",{parentName:"li"},"Guid")," \u7cbe\u5ea6\u662f\u56fa\u5b9a\u7684\u6beb\u79d2\u7ea7\uff1a1 \u6beb\u79d2\u5185\u751f\u6210\u7684\u591a\u4e2a ",(0,r.kt)("inlineCode",{parentName:"li"},"Guid")," \u662f\u65e0\u5e8f\u7684 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3R59J"},"#I3R59J")),(0,r.kt)("li",{parentName:"ul"},"[\u62d2\u7edd]"," \u5efa\u8bae:JWTEncryption.Validate \u65b9\u6cd5\u8fd4\u56de JWT \u7684\u68c0\u67e5\u5931\u8d25\u65f6\u7684\u539f\u56e0 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3S1F2"},"#I3S1F2"))))),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"v240-\uff08\u5df2\u53d1\u5e03\uff09"},"v2.4.0 \uff08\u5df2\u53d1\u5e03\uff09"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u65b0\u7279\u6027")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u652f\u6301\u81ea\u52a8\u52a0\u8f7d\u6a21\u5757\u5316/\u63d2\u4ef6 ",(0,r.kt)("inlineCode",{parentName:"li"},".xml")," \u6ce8\u91ca\u6587\u4ef6 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3Q7XY"},"#I3Q7XY")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"AppDbContext.FailedAutoRollback")," \u5c5e\u6027\uff0c\u53ef\u914d\u7f6e\u4e8b\u52a1\u662f\u5426\u81ea\u52a8\u56de\u6eda ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3QOUS"},"#I3QOUS")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u7a81\u7834\u6027\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u5347\u7ea7]"," ",(0,r.kt)("strong",{parentName:"li"},".NET 5 SDK \u4e3a 5.0.6 \u7248\u672c")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"IJsonSerializerProvider.GetSerializerOptions()")," \u63a5\u53e3\u65b9\u6cd5 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3QIJN"},"#I3QIJN")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u9898\u4fee\u590d")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u901a\u8fc7 ",(0,r.kt)("inlineCode",{parentName:"li"},"services.AddInject()")," \u65b9\u5f0f\u6ce8\u518c\uff0c\u6a21\u5757\u5316/\u63d2\u4ef6\u4e0d\u52a0\u8f7d ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3Q7XH"},"#I3Q7XH")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u79cd\u5b50\u6570\u636e\u8fd4\u56de ",(0,r.kt)("inlineCode",{parentName:"li"},"null")," \u62a5\u7a7a\u5f02\u5e38 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3QCM5"},"#I3QCM5")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u901a\u8fc7 ",(0,r.kt)("inlineCode",{parentName:"li"},"Clay.Object")," \u521b\u5efa\u7c98\u571f\u5bf9\u8c61\u540e\u5c5e\u6027\u53d8\u5c0f\u5199\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3QRV3"},"#I3QRV3")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u5176\u4ed6\u66f4\u6539")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4f18\u5316]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Furion")," \u6846\u67b6\u5e95\u5c42\u6027\u80fd\uff0c\u51cf\u5c11\u5185\u5b58\u5360\u7528\uff0c\u63d0\u9ad8\u5e94\u7528\u521d\u59cb\u5316\u901f\u5ea6 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/commit/92f8cc1"},"92f8cc1")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u6587\u6863\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u66f4\u65b0]"," JSON \u5e8f\u5217\u5316\u6587\u6863\u3001\u89c4\u8303\u5316\u7ed3\u679c\u6587\u6863\u3001\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u6587\u6863"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u7b54\u7b54\u7591")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"InsertOrUpdateNowAsync")," \u62a5\u9519 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3QKO5"},"#I3QKO5")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u4e0d\u505a\u5b9e\u73b0")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," \u5b9a\u65f6\u4efb\u52a1\u81ea\u5b9a\u4e49 ",(0,r.kt)("inlineCode",{parentName:"li"},"Failed")," \u4e8b\u4ef6 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3QCM2"},"#I3QCM2")),(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," \u6a21\u5757\u5316\u52a8\u6001\u751f\u6210\u6570\u636e\u5e93\u8868 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3QH3G"},"#I3QH3G")),(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," \u5efa\u8bae\u4e8b\u4ef6\u603b\u7ebf\u65b0\u589e MQ \u652f\u6301 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3QWZ4"},"#I3QWZ4")),(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," \u91cd\u6784\u89c4\u8303\u5316\u6574\u4e2a\u6a21\u5757\u4ee3\u7801 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3NFT7"},"#I3NFT7"))))),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"v230-\uff08\u5df2\u53d1\u5e03\uff09"},"v2.3.0 \uff08\u5df2\u53d1\u5e03\uff09"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u65b0\u7279\u6027")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Furion.Extras.DatabaseAccessor.MongoDB")," \u62d3\u5c55\u5305\u652f\u6301 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3PKST"},"#I3PKST")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u52a8\u6001\u7c98\u571f\u7c7b\u578b\u76f4\u63a5\u8f6c ",(0,r.kt)("inlineCode",{parentName:"li"},"object")," \u6216 ",(0,r.kt)("inlineCode",{parentName:"li"},"dynamic")," \u7c7b\u578b ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3OY27"},"#I3OY27")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u65b0\u589e ",(0,r.kt)("inlineCode",{parentName:"li"},"Oops.Retry")," \u65b9\u6cd5\uff0c\u652f\u6301\u8bbe\u7f6e\u65b9\u6cd5\u8c03\u7528\u5931\u8d25\u8fdb\u884c\u91cd\u8bd5 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3PJKQ"},"#I3PJKQ")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"JWTSettings")," \u914d\u7f6e\u8282\u70b9 ",(0,r.kt)("inlineCode",{parentName:"li"},"Algorithm"),"\uff0c\u7528\u4e8e\u914d\u7f6e\u52a0\u5bc6\u7b97\u6cd5 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3PQGV"},"#I3PQGV")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"repository.EnsureTransaction()")," \u65b9\u6cd5\u786e\u4fdd\u5de5\u4f5c\u5355\u5143\u4e8b\u52a1\u6709\u6548 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3PVF1"},"#I3PVF1")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u7a81\u7834\u6027\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u652f\u6301]"," \u652f\u6301 .NET 6.0.0 Preview 3 \u7248\u672c ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3P2C7"},"#I3P2C7")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u9898\u4fee\u590d")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u4f7f\u7528\u6570\u636e\u5e93\u751f\u6210\u6a21\u578b ",(0,r.kt)("inlineCode",{parentName:"li"},"tools/cli.ps1"),"\uff0c\u4ece\u6570\u636e\u5e93\u8868\u751f\u6210\u7684\u5b9e\u4f53\u5f02\u5e38 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3PL18"},"#I3PL18")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u8d34\u4e86 ",(0,r.kt)("inlineCode",{parentName:"li"},"[NonUntify]")," \u7279\u6027\u540e\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"Swagger")," \u7684 ",(0,r.kt)("inlineCode",{parentName:"li"},"Example Value")," \u6ca1\u6709\u5339\u914d\u6b63\u786e ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3PK0L"},"#I3PK0L")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"SpareTimer.Tally")," \u5728 ",(0,r.kt)("inlineCode",{parentName:"li"},"Cron")," \u8868\u8fbe\u5f0f\u4e2d\u8ba1\u6570\u65e0\u6548 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3PWSE"},"#I3PWSE")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u5176\u4ed6\u66f4\u6539")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u6539\u8fdb]"," \u6846\u67b6\u9ed8\u8ba4\u5e8f\u5217\u5316\u5e94\u8be5\u4ece\u914d\u7f6e\u4e2d\u8bfb\u53d6\uff0c\u800c\u975e\u624b\u52a8\u7f16\u5199 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3P1SJ"},"#I3P1SJ")),(0,r.kt)("li",{parentName:"ul"},"[\u6539\u8fdb]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"SqlSugar")," \u62d3\u5c55\u5e93\uff0c\u652f\u6301\u975e\u6cdb\u578b\u4ed3\u50a8\u83b7\u53d6\u4e0a\u4e0b\u6587\u64cd\u4f5c\u5bf9\u8c61 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3PK2N"},"#I3PK2N")),(0,r.kt)("li",{parentName:"ul"},"[\u6539\u8fdb]"," \u652f\u6301\u5206\u5e03\u5f0f\u5185\u5b58\u7f13\u5b58\u53ef\u914d\u7f6e\u5316 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3POKD"},"#I3POKD")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u6587\u6863\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u6587\u6863]"," \u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"li"},"JWTSettings")," \u914d\u7f6e\u72ec\u7acb\u6587\u6863 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3PQGW"},"#I3PQGW")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u7b54\u7b54\u7591")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u8f6f\u5220\u9664\u5982\u679c\u6570\u636e\u4e0d\u5b58\u5728\uff0c\u5219\u62a5\u9519 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3PTVB"},"#I3PTVB")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u591a\u4e2a\u7c7b\u96c6\u6210\u6d4b\u8bd5\u4f1a\u9020\u6210\u6570\u636e\u5e93\u5b9a\u4f4d\u5668\u591a\u6b21\u6ce8\u518c\uff0c\u65e0\u6cd5\u8fd0\u884c\u6240\u6709\u6d4b\u8bd5\uff0c\u53ea\u80fd\u4e00\u4e2a\u7c7b\u4e00\u4e2a\u7c7b\u7684\u8fd0\u884c ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3PXGY"},"#I3PXGY")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u4e0d\u505a\u5b9e\u73b0")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," CAS \u652f\u6301",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3PIET"},"#I3PIET"))))),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"v220-\uff08\u5df2\u53d1\u5e03\uff09"},"v2.2.0 \uff08\u5df2\u53d1\u5e03\uff09"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u65b0\u7279\u6027")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Clay")," \u7c98\u571f\u7c7b\u578b\uff0c\u652f\u6301\u8ba9 ",(0,r.kt)("inlineCode",{parentName:"li"},"C#")," \u521b\u5efa\u4e00\u4e2a\u5f31\u7c7b\u578b\u5bf9\u8c61\u5e76\u64cd\u4f5c\u5f31\u7c7b\u578b ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3O2QQ"},"#I3O2QQ")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u65b0\u589e ",(0,r.kt)("inlineCode",{parentName:"li"},"Scoped.Create")," \u5e26\u8fd4\u56de\u503c\u91cd\u8f7d ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3O47J"},"#I3O47J")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u652f\u6301 ",(0,r.kt)("inlineCode",{parentName:"li"},"Scoped.Create()")," \u4e00\u7cfb\u5217\u65b9\u6cd5\u652f\u6301\u4f20\u5165\u4f5c\u7528\u57df\u5de5\u5382 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3OAP5"},"#I3OAP5")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u652f\u6301\u4e8b\u4ef6\u603b\u7ebf\u540c\u6b65\u6267\u884c\u65b9\u5f0f ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3OAW2"},"#I3OAW2")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"[DataValidation]")," \u8df3\u8fc7\u7a7a\u5b57\u7b26\u4e32\u548c\u7a7a\u503c\u9a8c\u8bc1 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3OGEN"},"#I3OGEN")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Worker Service")," \u53ef\u914d\u7f6e\u662f\u5426\u81ea\u52a8\u6ce8\u518c ",(0,r.kt)("inlineCode",{parentName:"li"},"Worker")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3OLW4"},"#I3OLW4")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u7a81\u7834\u6027\u53d8\u5316"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u9898\u4fee\u590d")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u5b9a\u65f6\u4efb\u52a1\u8bbe\u7f6e ",(0,r.kt)("inlineCode",{parentName:"li"},"cancelInNoneNextTime: false")," \u4e00\u6b21\u4e5f\u4e0d\u6267\u884c ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3O3N0"},"#I3O3N0")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," SpareTime \u81ea\u5b9a\u4e49\u4e0b\u6b21\u6267\u884c\u65f6\u95f4\u51fa\u73b0\u7a7a\u5f02\u5e38 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3O46X"},"#I3O46X")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"MiniProfiler")," \u8bbe\u7f6e\u4e3a ",(0,r.kt)("inlineCode",{parentName:"li"},"false")," \u65f6\uff0c\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u63d0\u4ea4\u62e6\u622a\u5668\u672a\u6dfb\u52a0 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3OAWX"},"#I3OAWX")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},'[Consumes("application/x-www-form-urlencoded")]')," \u548c ",(0,r.kt)("inlineCode",{parentName:"li"},"ModelQuery")," \u914d\u7f6e\u540c\u65f6\u914d\u7f6e\u5bfc\u81f4\u7a7a\u5f15\u7528\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3ODUR"},"#I3ODUR")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u5728 Grpc \u4e2d\u4f7f\u7528 jwt \u6388\u6743\u51fa\u73b0\u7a7a\u5f02\u5e38 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3OW3I"},"#I3OW3I")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u5176\u4ed6\u66f4\u6539")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4f18\u5316]"," \u652f\u6301\u53d1\u5e03\u540e\u4ee3\u7801\u7cbe\u7b80\u914d\u7f6e\uff0c\u51cf\u5c11\u4e0d\u5fc5\u8981\u7684\u6587\u4ef6\u5939\u8f93\u51fa ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3OAPF"},"#I3OAPF")),(0,r.kt)("li",{parentName:"ul"},"[\u4f18\u5316]"," \u81ea\u52a8\u5237\u65b0 Token \u673a\u5236\uff0c\u65b0\u589e\u5bb9\u9519\u503c\u5904\u7406\uff0c\u89e3\u51b3\u5e76\u53d1 Token \u5237\u65b0\u5931\u8d25\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3OGYF"},"#I3OGYF")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u6587\u6863\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u7c98\u571f\u5bf9\u8c61\u6587\u6863 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3OG18"},"#I3OG18")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u7b54\u7b54\u7591")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u52a8\u6001 WebAPI \u5982\u4f55\u83b7\u53d6\u63a5\u6536\u6587\u4ef6 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3O29B"},"#I3O29B")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u5b9a\u65f6\u4efb\u52a1\u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"li"},"Scope.CreateUow")," \u5f15\u53d1\u7684\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3O2CD"},"#I3O2CD")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u5355\u6587\u4ef6\u53d1\u5e03\u7a0b\u5e8f\u5de5\u4f5c\u4e0d\u6b63\u5e38 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3O4D8"},"#I3O4D8")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u540c\u65f6\u914d\u7f6e\u79df\u6237\u8fc7\u6ee4\u5668\u548c\u8f6f\u5220\u9664\u8fc7\u6ee4\u5668\uff0c\u6700\u7ec8\u7684 sql \u53ea\u751f\u6210\u4e86\u4e00\u79cd\u8fc7\u6ee4\u6761\u4ef6 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3OB0A"},"#I3OB0A")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," HTTP \u91cd\u5b9a\u5411 HTTPS \u540e\u8de8\u57df\u5931\u6548 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3OB8R"},"#I3OB8R")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u5728 PostgreSql \u6570\u636e\u5e93\u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"li"},"rep.FirstOrDefault(u => u.Id == UserId);")," \u5f15\u8d77\u5f02\u5e38 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3O5OF"},"#I3O5OF")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u5b9a\u65f6\u4efb\u52a1\u6709\u65f6\u80fd\u89e6\u53d1\u6709\u65f6\u4e0d\u80fd\u89e6\u53d1 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3ORBE"},"#I3ORBE")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u4e0d\u505a\u5b9e\u73b0")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4f5c\u5e9f]"," \u6846\u67b6\u4e2d\u7684 swagger \u662f\u5426\u6709\u63d0\u4f9b\u5bfc\u51fa\u6587\u6863\u4e3a markdwon/word \u7684\u529f\u80fd\u8ba1\u5212\uff1f ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3OL8O"},"#I3OL8O")),(0,r.kt)("li",{parentName:"ul"},"[\u4f5c\u5e9f]"," \u6570\u636e\u5e93\u5b9e\u4f53\u7236\u5b50\u7ee7\u627f\uff0c\u5b50\u7c7b\u751f\u6210\u7684 SQL \u4e0d\u4e00\u6837 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3NHU3"},"#I3NHU3")),(0,r.kt)("li",{parentName:"ul"},"[\u4f5c\u5e9f]"," \u652f\u6301\u7b2c\u4e09\u65b9\u6570\u636e\u5e93 ORM ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3OXA3"},"#I3OXA3"))))),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"v210-\uff08\u5df2\u53d1\u5e03\uff09"},"v2.1.0 \uff08\u5df2\u53d1\u5e03\uff09"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u65b0\u7279\u6027")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u65b0\u589e\u5b9a\u65f6\u4efb\u52a1 ",(0,r.kt)("inlineCode",{parentName:"li"},"ISpareTimeWorker")," \u65b9\u5f0f\u652f\u6301 ",(0,r.kt)("inlineCode",{parentName:"li"},'[SpareTime("{\u914d\u7f6e\u8def\u5f84}}]')," \u65b9\u5f0f ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3NTUX"},"#I3NTUX")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u5b9a\u65f6\u4efb\u52a1\u652f\u6301\u5f02\u6b65\u59d4\u6258 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3NP96"},"#I3NP96")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u8f7b\u91cf\u7ea7\u5206\u5e03\u5f0f\u8fde\u7eed GUID \u751f\u6210\u5668 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3NKLZ"},"#I3NKLZ")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"ClayObject")," \u6a21\u5757\uff0c\u5904\u7406 ",(0,r.kt)("inlineCode",{parentName:"li"},"ExpandoObject")," \u53ca ",(0,r.kt)("inlineCode",{parentName:"li"},"IDictionary")," \u7c7b\u578b ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3N3J4"},"#I3N3J4")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Scoped.CreateUow(handler)")," \u521b\u5efa\u4f5c\u7528\u57df\u5e76\u81ea\u52a8\u63d0\u4ea4\u6570\u636e\u5e93\u66f4\u6539\u65b9\u6cd5 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3NU3G"},"#I3NU3G")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u7a81\u7834\u6027\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," \u89c4\u8303\u5316\u7ed3\u679c\u63a5\u53e3 ",(0,r.kt)("inlineCode",{parentName:"li"},"OnResponseStatusCodes")," \u65b9\u6cd5\uff0c\u65b0\u589e ",(0,r.kt)("inlineCode",{parentName:"li"},"UnifyResultStatusCodesOptions")," \u53c2\u6570 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3NDB9"},"#I3NDB9")),(0,r.kt)("li",{parentName:"ul"},"[\u79fb\u9664]"," ",(0,r.kt)("strong",{parentName:"li"},"\u96ea\u82b1 ID \u5b9e\u73b0\u4ee3\u7801 ",(0,r.kt)("a",{parentName:"strong",href:"https://gitee.com/dotnetchina/Furion/issues/I3NKLZ"},"#I3NKLZ"))))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u9898\u4fee\u590d")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Swagger")," \u4e0d\u80fd\u652f\u6301\u975e int \u7c7b\u578b\u7684\u679a\u4e3e ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3NQM8"},"#I3NQM8")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u6570\u636e\u5e93\u7ebf\u7a0b\u6c60\u591a\u7ebf\u7a0b\u5e76\u53d1\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3NR4L"},"#I3NR4L")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u81ea\u5b9a\u4e49\u63a7\u5236\u5668\u8def\u7531\u540e\u4e14\u4e3a\u65b9\u6cd5\u53c2\u6570\u6307\u5b9a\u4e86 ",(0,r.kt)("inlineCode",{parentName:"li"},"[ApiSeat]")," \u540e\u751f\u6210\u8def\u7531\u91cd\u590d ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3NRF6"},"#I3NRF6")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u5176\u4ed6\u66f4\u6539")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u6539\u8fdb]"," \u652f\u6301\u5e94\u7528\u542f\u52a8\u7684\u65f6\u5019\u8fc1\u79fb\u79cd\u5b50\u6570\u636e ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3NH3M"},"#I3NH3M")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u6587\u6863\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u5206\u5e03\u5f0f ID \u751f\u6210\u6587\u6863 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3B6CX"},"#I3B6CX")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u65b0\u589e\u6a21\u5757\u5316\u5f00\u53d1\u6587\u6863 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3NSUS"},"#I3NSUS")),(0,r.kt)("li",{parentName:"ul"},"[\u66f4\u65b0]"," 20.4 \u5b57\u7b26\u4e32\u62d3\u5c55\u65b9\u5f0f > \u9519\u8bef",(0,r.kt)("inlineCode",{parentName:"li"},"ToAESDecrypt")," \u5199\u6210\u4e86 ",(0,r.kt)("inlineCode",{parentName:"li"},"ToToAESDecrypt")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3NNKV"},"#")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u7b54\u7b54\u7591")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u6709\u5173\u3010\u5b9a\u65f6\u4efb\u52a1/\u59d4\u6258\u3011\u7684\u7591\u95ee ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3N3EW"},"#I3N3EW")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u7edf\u4e00\u8fd4\u56de\u683c\u5f0f\u652f\u6301\u81ea\u5b9a\u4e49 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3NU1G"},"#I3NU1G")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u4e0d\u505a\u5b9e\u73b0")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4f5c\u5e9f]"," \u671f\u5f85 IEnumerableExtensions \u6269\u5c55 OrderBy \u51fd\u6570\u6765\u652f\u6301\u5206\u9875\u6392\u5e8f ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3NOQ9"},"#I3NOQ9"))))),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"v200-\uff08\u5df2\u53d1\u5e03\uff09"},"v2.0.0 \uff08\u5df2\u53d1\u5e03\uff09"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u65b0\u7279\u6027")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u63a7\u5236\u53f0\u5e94\u7528\u7a0b\u5e8f\u53ca Worker Services \u652f\u6301 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3K4DG"},"#I3K4DG")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u5b8c\u6574\u4efb\u52a1\u8c03\u5ea6\u529f\u80fd ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3IRUX"},"#I3IRUX")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Cron")," \u8868\u8fbe\u5f0f\u89e3\u6790 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3IQ9Y"},"#I3IQ9Y")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u652f\u6301 ",(0,r.kt)("inlineCode",{parentName:"li"},"Swagger")," \u81ea\u5b9a\u4e49\u914d\u7f6e ",(0,r.kt)("inlineCode",{parentName:"li"},"swagger.json")," \u5730\u5740\u6a21\u677f ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3IHMX"},"#I3IHMX")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u652f\u6301\u914d\u7f6e\u52a8\u6001 WebApi \u533a\u57df ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3IJAZ"},"#I3IJAZ")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u8fdc\u7a0b\u8bf7\u6c42\u65b0\u589e\u652f\u6301\u4f20\u5165\u670d\u52a1\u63d0\u4f9b\u5668 ",(0,r.kt)("inlineCode",{parentName:"li"},"IServiceProvider")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3IVBL"},"#I3IVBL")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u5168\u5c40\u914d\u7f6e\u9009\u578b ",(0,r.kt)("inlineCode",{parentName:"li"},"SupportPackageNamePrefixs")," \u914d\u7f6e\uff0c\u652f\u6301\u914d\u7f6e\u5305\u524d\u7f00 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3K0SN"},"#I3K0SN")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u5e94\u7528\u542f\u52a8\u65f6\u652f\u6301 ",(0,r.kt)("inlineCode",{parentName:"li"},"referenceassembly")," \u7c7b\u578b\u7a0b\u5e8f\u96c6\u626b\u63cf ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3K0SN"},"#I3K0SN")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u4f9d\u8d56\u6ce8\u5165 ",(0,r.kt)("inlineCode",{parentName:"li"},"AOP")," \u62e6\u622a\u83b7\u53d6\u65b9\u6cd5\u771f\u5b9e\u7279\u6027 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3LZBX"},"#I3LZBX")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," EFCore \u624b\u52a8 ",(0,r.kt)("inlineCode",{parentName:"li"},"SaveChanges()")," \u7279\u6027 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3N01Y"},"#I3N01Y")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u652f\u6301 ",(0,r.kt)("inlineCode",{parentName:"li"},"Cors")," \u8de8\u57df\u66f4\u591a\u914d\u7f6e ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3N2J0"},"#I3N2J0")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u7a81\u7834\u6027\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u91cd\u6784]"," \u5b8c\u6574\u4efb\u52a1\u8c03\u5ea6\u529f\u80fd ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3IRUX"},"#I3IRUX")),(0,r.kt)("li",{parentName:"ul"},"[\u91cd\u6784]"," \u65e5\u5fd7\u6a21\u5757\u529f\u80fd ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3J2K0"},"#I3J2K0")),(0,r.kt)("li",{parentName:"ul"},"[\u91cd\u6784]"," \u6a21\u677f\u5f15\u64ce\u529f\u80fd ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3J46E"},"#I3J46E")),(0,r.kt)("li",{parentName:"ul"},"[\u91cd\u6784]"," \u5e95\u5c42 ",(0,r.kt)("inlineCode",{parentName:"li"},"EFCoreRepository")," \u4ed3\u50a8 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3J6W5"},"#I3J6W5")),(0,r.kt)("li",{parentName:"ul"},"[\u91cd\u6784]"," sql \u5b57\u7b26\u4e32\u62d3\u5c55\u5e95\u5c42\u4ee3\u7801 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3IVCE"},"#I3IVCE")),(0,r.kt)("li",{parentName:"ul"},"[\u91cd\u6784]"," \u5e95\u5c42 ",(0,r.kt)("inlineCode",{parentName:"li"},"SqlRepository")," \u6240\u6709\u903b\u8f91\u4ee3\u7801 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3J6V6"},"#I3J6V6")),(0,r.kt)("li",{parentName:"ul"},"[\u91cd\u6784]"," \u6570\u636e\u5e93\u5b9e\u4f53\u62d3\u5c55\u65b9\u6cd5 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3J609"},"#I3J609")),(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," \u4e8b\u4ef6\u4e8b\u4ef6\u603b\u7ebf\u540c\u6b65\u6267\u884c\u4e3a\u5f02\u6b65\u65b9\u5f0f\u6267\u884c ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3J0WA"},"#I3J0WA")),(0,r.kt)("li",{parentName:"ul"},"[\u79fb\u9664]"," \u6846\u67b6\u5e95\u5c42 ",(0,r.kt)("inlineCode",{parentName:"li"},"HttpContext.IsAjaxRequest()")," \u62d3\u5c55 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3IVAA"},"#I3IVAA")),(0,r.kt)("li",{parentName:"ul"},"[\u79fb\u9664]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"ValidationTypes.Required")," \u9a8c\u8bc1 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3KR85"},"#I3KR85")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u9898\u4fee\u590d")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u5173\u95ed ",(0,r.kt)("inlineCode",{parentName:"li"},"InjectMiniProfiler")," \u53c2\u6570\u540e\u5185\u5b58\u7f13\u5b58\u65e0\u6548 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3IHLR"},"#I3IHLR")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u5728\u591a\u79df\u6237\u4e2d\u8c03\u7528 ",(0,r.kt)("inlineCode",{parentName:"li"},"Tenant")," \u5c5e\u6027\u51fa\u73b0\u5076\u7136\u6027\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u88ab\u91ca\u653e\u7684\u60c5\u51b5 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3IC70"},"#I3IC70")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," Sql \u4ee3\u7406\u4e2d\u5982\u679c\u8fd4\u56de\u57fa\u5143\u7c7b\u578b\u629b\u51fa\u4e0d\u80fd\u5c06 object \u8f6c\u6362\u6210\u5bf9\u5e94\u7c7b\u578b\u7684\u5f02\u5e38 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3IC84"},"#I3IC84")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u5b58\u50a8\u8fc7\u7a0b\u591a\u8fd4\u56de\u503c\u7684\u65f6\u5019\uff0coutputvalues \u7684 name \u4e0d\u662f\u5b9a\u4e49\u7684 MSG \u7684 name\uff0c\u662f Msg \u7c7b\u578b\u3002 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3IC7Y"},"#I3IC7Y")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," PhoneNumber \u624b\u673a\u53f7\u9a8c\u8bc1\u6b63\u5219\u8868\u8fbe\u5f0f\u9519\u8bef ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3ID10"},"#I3ID10")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u4f9d\u8d56\u6ce8\u5165 AOP \u62e6\u622a\u65e0\u6cd5\u6355\u83b7\u5185\u90e8\u5f02\u5e38 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3IGCC"},"#I3IGCC")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u5168\u5c40\u62e6\u622a\u6807\u8bb0\u5f02\u5e38\u5df2\u88ab\u5904\u7406\u540e\u5f02\u5e38\u8fc7\u6ee4\u5668\u4f9d\u7136\u6267\u884c ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3J463"},"#I3J463")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u81ea\u5b9a\u4e49\u5168\u5c40\u5f02\u5e38\u62e6\u622a\u5668\u4e0d\u8d77\u4f5c\u7528 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3K1SJ"},"#I3K1SJ")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u5728 WorkerService \u6a21\u5f0f\u4e0b\uff0c\u8fd8\u662f\u4f7f\u7528 WebHostEnvironment \u6765\u5224\u65ad Host \u73af\u5883\uff0c\u4f1a\u5bfc\u81f4\u9519\u8bef ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3LCQY"},"#I3LCQY")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u5b9a\u65f6\u4efb\u52a1 ",(0,r.kt)("inlineCode",{parentName:"li"},"DoOnce")," \u629b\u7a7a\u5f02\u5e38 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3M0ZT"},"#I3M0ZT")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u5176\u4ed6\u66f4\u6539")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u6539\u8fdb]"," \u542f\u52a8\u65f6\u7a0b\u5e8f\u96c6\u626b\u63cf\u7c7b\u578b ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3K0SN"},"#I3K0SN")),(0,r.kt)("li",{parentName:"ul"},"[\u6539\u8fdb]"," ",(0,r.kt)("inlineCode",{parentName:"li"},'App.GetConfig<>("key")')," \u4e0d\u652f\u6301\u83b7\u53d6\u5355\u4e2a\u503c\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3ILF1"},"#I3ILF1")),(0,r.kt)("li",{parentName:"ul"},"[\u6539\u8fdb]"," UrlEncode \u5e94\u8be5\u7528 ",(0,r.kt)("inlineCode",{parentName:"li"},"Uri.EscapeDataString()")," \u800c\u4e0d\u662f ",(0,r.kt)("inlineCode",{parentName:"li"},"HttpUtility.UrlEncode")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3ICTK"},"#I3ICTK")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u6587\u6863\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u5b9a\u4f4d\u4efb\u52a1\u3001\u540e\u53f0\u4efb\u52a1\u6587\u6863 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3JHHG"},"#I3JHHG")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u8f85\u52a9\u89d2\u8272\u670d\u52a1\u6587\u6863 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3K5GN"},"#I3K5GN")),(0,r.kt)("li",{parentName:"ul"},"[\u66f4\u65b0]"," \u52a8\u6001 WebAPI\u3001\u89c4\u8303\u5316\u6587\u6863\u3001\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u6587\u6863"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u7b54\u7b54\u7591")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u6570\u636e\u6821\u9a8c\uff0c\u81ea\u5b9a\u4e49 ErrorMessage \u65e0\u6548\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3ICL3"},"#I3ICL3")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u6700\u65b0 issue \u4e2d\u65b0\u589e\u7684\u201c\u65b0\u589e\u5e38\u7528\u7684 JSON \u5e8f\u5217\u5316\u65b9\u6cd5\u201d \u4f1a\u5bfc\u81f4 AOP \u62e6\u622a\u5f02\u5e38 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3I7VE"},"#I3I7VE")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," Furion.DatabaseAccessor.PrivateEntityBase \u4e2d\u7684 TenantId \u6570\u636e\u7c7b\u578b\u8bbe\u7f6e\u4e3a object ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3IQV6"},"#I3IQV6")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u6709\u5173\u5f02\u5e38\u62e6\u622a\u548c\u5904\u7406\u7684\u7591\u95ee ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3IUFZ"},"#I3IUFZ")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"DataValidation")," \u5728\u7a7a\u503c\u7684\u60c5\u51b5\u4e0b\u88ab\u5ffd\u7565\u6389\u4e86",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3IWSM"},"#I3IWSM")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u65e5\u5fd7\u6587\u6863\u6ca1\u6709\u66f4\u65b0 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3J1DX"},"#I3J1DX")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u5bf9\u4e8e webapi \u7b80\u5355\u7c7b\u578b\u53c2\u6570\uff0c\u662f\u5426\u53ef\u4ee5\u4ee5 json \u65b9\u5f0f\u63d0\u4ea4 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3J18I"},"#I3J18I")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"IUnifyResultProvider")," \u5b9e\u73b0\u4e2d\u5982\u679c ",(0,r.kt)("inlineCode",{parentName:"li"},"UnifyModel")," \u7684 type \u4e0d\u662f\u8303\u578b\u4f1a\u62a5\u9519 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3JBXF"},"#I3JBXF")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u5982\u4f55\u6a21\u5757\u5316\u5f00\u53d1\u65b0\u529f\u80fd\uff1f ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3J7ZZ"},"#I3J7ZZ")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u5efa\u8bae\u589e\u52a0\u5fae\u670d\u52a1\u4e2d\u95f4\u4ef6\u7684\u96c6\u6210 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3JTZQ"},"#I3JTZQ")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u4e8c\u7ea7\u865a\u62df\u76ee\u5f55\u90e8\u7f72\u7684 swagger \u7684 MiniProfiler js \u62a5\u9519 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3IWLR"},"#I3IWLR")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u4e0d\u505a\u5b9e\u73b0")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4f5c\u5e9f]"," \u5728\u8bf7\u6c42\u5ba1\u8ba1\u65e5\u5fd7\u4e2d\u5bf9\u8d34\u6709 DisableAuditing \u7279\u6027\u7684\u5b57\u6bb5\u81ea\u52a8\u8fc7\u6ee4 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3DHAN"},"#I3DHAN"))))),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"v1190-\uff08\u5df2\u53d1\u5e03\uff09"},"v1.19.0 \uff08\u5df2\u53d1\u5e03\uff09"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u65b0\u7279\u6027")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"EFCore 5.0")," \u652f\u6301 ",(0,r.kt)("strong",{parentName:"li"},"SqlServer 2005-2008")," \u6570\u636e\u5e93 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3HZZ6"},"#I3HZZ6")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Sql")," \u9ad8\u7ea7\u4ee3\u7406\u652f\u6301\u6a21\u677f\u66ff\u6362\u4e86 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3HHWU"},"#I3HHWU")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3HH2T"},"#I3HH2T")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"PBKDF2")," \u52a0\u5bc6 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3HN7A"},"#I3HN7A")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u5e38\u7528\u7684 ",(0,r.kt)("inlineCode",{parentName:"li"},"JSON")," \u64cd\u4f5c\u65b9\u6cd5 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3HUYO"},"#I3HUYO")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u6240\u6709\u89e3\u6790\u670d\u52a1\u7684\u65b9\u6cd5\u90fd\u652f\u6301\u4f20\u5165 ",(0,r.kt)("inlineCode",{parentName:"li"},"IServiceProvidier")," \u53c2\u6570 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3HXEU"},"#I3HXEU")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u7a81\u7834\u6027\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u5347\u7ea7]"," .NET 5 SDK \u81f3 5.0.5 \u7248\u672c"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u9898\u4fee\u590d")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u8fdc\u7a0b\u8bf7\u6c42 ",(0,r.kt)("inlineCode",{parentName:"li"},"application/x-www-form-urlencoded")," \u81ea\u52a8\u88ab\u8f6c\u7801\u4e86 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3HDPC"},"#I3HDPC")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"ISqlDispatchProxy")," \u8c03\u7528\u5e26\u8fd4\u56de\u503c\u7684\u5b58\u50a8\u8fc7\u7a0b\u51fa\u9519 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3HISS"},"#I3HISS")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u591a\u6570\u636e\u5e93\u5de5\u4f5c\u5355\u5143\u5f02\u5e38\u65e0\u6cd5\u56de\u6eda\u6570\u636e ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3I2KN"},"#I3I2KN")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/zuohuaijun/Admin.NET/issues/I3HYN5"},"#I3HYN5")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," Serilog \u65e5\u5fd7\u751f\u6210\u592a\u591a\u6587\u4ef6 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3I2PN"},"#I3I2PN")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"1.18.0")," \u7248\u672c\u6570\u636e\u5e93\u8fde\u63a5\u6c60\u5b58\u5728\u8fde\u63a5\u6cc4\u6f0f\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3I5KO"},"#I3I5KO")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," Sqlite \u63d0\u793a\u4e8b\u52a1\u5df2\u5b8c\u6210\u5f02\u5e38 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3I9F2"},"#I3I9F2")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u5176\u4ed6\u66f4\u6539")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u6539\u8fdb]"," \u89c6\u56fe\u6a21\u677f\u529f\u80fd\uff0c\u9ed8\u8ba4\u652f\u6301\u53ef\u679a\u4e3e\u6cdb\u578b\u7c7b\u578b ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3GYEE"},"#I3GYEE")),(0,r.kt)("li",{parentName:"ul"},"[\u6539\u8fdb]"," \u5f00\u53d1\u9636\u6bb5 MiniProfiler \u6253\u5370\u6570\u636e\u5e93\u76f8\u5173\u4fe1\u606f ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3I8VQ"},"#I3I8VQ")),(0,r.kt)("li",{parentName:"ul"},"[\u6539\u8fdb]"," EFCore 5.0 \u672a\u63d0\u4f9b Sqlite \u6570\u636e\u5e93 DataAdapter \u7684\u652f\u6301 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3I9FC"},"#I3I9FC")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u6587\u6863\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u66f4\u65b0]"," \u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u3001\u591a\u79df\u6237\u3001\u4ed3\u50a8\u3001\u65e5\u5fd7\u3001\u5e8f\u5217\u5316\u7b49\u6587\u6863\u3002"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u7b54\u7b54\u7591")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u5efa\u8bae MVC \u6a21\u5f0f\u4e0b\u589e\u52a0 Furion \u7684\u529f\u80fd ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3GY4R"},"#I3GY4R")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u6570\u636e\u5e93\u5173\u8054\u64cd\u4f5c ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3H5QP"},"#I3H5QP")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," 1.17.5 \u7248\u672c suagger \u65e0\u6cd5\u751f\u6210 swagger.json ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3HGPZ"},"#I3HGPZ")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," Serilog \u6269\u5c55+dll \u542f\u52a8\u4e0e swagger \u7684 MiniProfiler \u51b2\u7a81 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3HWJM"},"#I3HWJM")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," Sql \u9ad8\u7ea7\u4ee3\u7406\u8fd4\u56de DataTable \u65f6\uff0c\u7ed3\u679c\u4e3a\u7a7a\u53d6\u4e0d\u5230\u8bb0\u5f55 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3HUWG"},"#I3HUWG")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," Task.Run \u64cd\u4f5c\u6570\u636e\u5e93\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3HZ9D"},"#I3HZ9D")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u4e0d\u505a\u5b9e\u73b0")))),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"v1180-\uff08\u5df2\u53d1\u5e03\uff09"},"v1.18.0 \uff08\u5df2\u53d1\u5e03\uff09"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u65b0\u7279\u6027")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Oracle")," 11 \u7248\u672c\u652f\u6301 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3EVL5"},"#I3EVL5")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Mysql")," \u5b98\u65b9\u5305 ",(0,r.kt)("inlineCode",{parentName:"li"},"MySql.EntityFrameworkCore")," \u652f\u6301 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3E6J1"},"#I3E6J1")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u5168\u5c40\u914d\u7f6e ",(0,r.kt)("inlineCode",{parentName:"li"},"WebApi")," \u53c2\u6570 ",(0,r.kt)("inlineCode",{parentName:"li"},"[FromQury]")," \u5316 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3EFYJ"},"#I3EFYJ")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u516c\u5f00\u6846\u67b6\u5e95\u5c42\u4f9d\u8d56\u6ce8\u5165\u626b\u63cf\u6ce8\u518c\u62d3\u5c55 ",(0,r.kt)("inlineCode",{parentName:"li"},"services.AddRisterTypes(types)")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3EIV3"},"#I3EIV3")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," SqlSugar \u5de5\u4f5c\u5355\u5143\u7279\u6027 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3EJO5"},"#I3EJO5")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u7a81\u7834\u6027\u53d8\u5316"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u9898\u4fee\u590d")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u6c60\u4e00\u65e6\u6709\u4e0a\u4e0b\u6587\u64cd\u4f5c\u5931\u8d25\u8fd8\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u51fa\u73b0\u4e8c\u6b21\u63d0\u4ea4\u6570\u636e\u5e93\u7684\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3EIJJ"},"#I3EIJJ")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u4e0d\u540c\u6570\u636e\u5e93\u547d\u4ee4\u53c2\u6570\u524d\u7f00\u90fd\u6dfb\u52a0\u4e86 ",(0,r.kt)("inlineCode",{parentName:"li"},"@")," \u5904\u7406 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3EBJP"},"#I3EBJP")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u5c1d\u8bd5\u4fee\u590d\u4e8b\u4ef6\u603b\u7ebf\u7ebf\u7a0b\u5b89\u5168\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3EGSB"},"#I3EGSB")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/pulls/236"},"#PR236")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"HttpContextExtensions")," \u7684 ",(0,r.kt)("inlineCode",{parentName:"li"},"SignoutToSwagger")," \u65b9\u6cd5\u65e0\u6548 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3EHNQ"},"#I3EHNQ")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u5982\u679c\u52a8\u6001 WebApi \u8d34\u4e86 ",(0,r.kt)("inlineCode",{parentName:"li"},"[ApiController]")," \u7279\u6027\u540e\uff0c\u5bfc\u81f4\u8def\u7531\u53c2\u6570\u91cd\u590d\u751f\u6210 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3EOQQ"},"#I3EOQQ")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u5982\u679c\u6ca1\u6709\u4efb\u4f55 webapi \u63a7\u5236\u5668\u65f6\uff0c\u6587\u6863\u62a5\u9519 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3EVLB"},"#I3EVLB")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u4f9d\u8d56\u6ce8\u5165\u6cdb\u578b\u7c7b\u578b\u6ce8\u518c\u5931\u8d25 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3EX66"},"#I3EX66")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u5176\u4ed6\u66f4\u6539")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," SqlSugar \u62d3\u5c55\u5e93\u4ed3\u50a8 ",(0,r.kt)("inlineCode",{parentName:"li"},"Context")," \u5c5e\u6027\u7c7b\u578b\u672a ",(0,r.kt)("inlineCode",{parentName:"li"},"SqlSugarClient")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3EHXA"},"#I3EHXA")),(0,r.kt)("li",{parentName:"ul"},"[\u6539\u8fdb]"," \u5237\u65b0 Token \u9ed1\u540d\u5355 Redis \u4e2d\u5206\u7ec4 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3EQWO"},"#I3EQWO")),(0,r.kt)("li",{parentName:"ul"},"[\u6539\u8fdb]"," \u8fdc\u7a0b\u8bf7\u6c42\u5728\u8bf7\u6c42\u62e6\u622a\u6b21\u53d1\u8d77\u4e8c\u6b21\u8bf7\u6c42\u5bfc\u81f4\u5f02\u5e38\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3ER71"},"#I3ER71")),(0,r.kt)("li",{parentName:"ul"},"[\u6539\u8fdb]"," \u591a\u79df\u6237\u9ed8\u8ba4\u7f13\u5b58\u6539\u4e3a\u5206\u5e03\u5f0f\u7f13\u5b58 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3EXEU"},"#I3EXEU")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u6587\u6863\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u66f4\u65b0]"," \u6570\u636e\u5e93\u64cd\u4f5c\u6587\u6863 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3E84X"},"#I3E84X")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u7b54\u7b54\u7591")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u5982\u4f55\u65b9\u4fbf\u7684\u83b7\u53d6 ",(0,r.kt)("inlineCode",{parentName:"li"},"IDynamicApiController")," API \u4ea7\u751f\u7684 url \u548c \u8c13\u8bcd ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3ED17"},"#I3ED17")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," Code First -\u6267\u884c\u547d\u4ee4 ",(0,r.kt)("inlineCode",{parentName:"li"},"Add-Migration")," \u9047\u5230\u4e86\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3EHD0"},"#I3EHD0")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," tools v1.16.0 \u65e0\u6cd5\u751f\u6210\u5b9e\u4f53\uff0c\u4e00\u76f4\u63d0\u793a Missing required argument ",(0,r.kt)("inlineCode",{parentName:"li"},""),". ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3ENZ8"},"#I3ENZ8")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," Authorize \u7684 Logout \u6309\u94ae\uff0c\u65e0\u6cd5\u5b9e\u65f6\u8bf7\u7a7a token",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3EOF9"},"#I3EOF9")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u4e0d\u505a\u5b9e\u73b0")))),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"v1170-\uff08\u5df2\u53d1\u5e03\uff09"},"v1.17.0 \uff08\u5df2\u53d1\u5e03\uff09"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u65b0\u7279\u6027")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u52a8\u6001 WebAPI \u652f\u6301\u7ee7\u627f\u57fa\u7c7b\u914d\u7f6e\u7279\u6027 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3D5PX"},"#I3D5PX")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u8fdc\u7a0b\u8bf7\u6c42\u652f\u6301 ",(0,r.kt)("inlineCode",{parentName:"li"},"multipart/form-data")," \u5185\u5bb9\u7c7b\u578b\u5904\u7406 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3D7KG"},"#I3D7KG")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u5b57\u7b26\u4e32\u52a0\u5bc6\u62d3\u5c55 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3DHBW"},"#I3DHBW")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u65b0\u589e\u8fdc\u7a0b\u8bf7\u6c42\u53ef\u76f4\u63a5\u4e0b\u8f7d\u8fd4\u56de\u503c\u5185\u5bb9\u8f6c\u4e3a string \u7c7b\u578b ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3DIGR"},"#I3DIGR")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u8fdc\u7a0b\u8bf7\u6c42\u5730\u5740\u652f\u6301\u6a21\u677f\u5f15\u64ce ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3D5Y8"},"#I3D5Y8")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"[DataValidation]")," \u9519\u8bef\u6d88\u606f\u652f\u6301 ",(0,r.kt)("inlineCode",{parentName:"li"},"string.Format")," \u64cd\u4f5c ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3E08W"},"#I3E08W")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u8fdc\u7a0b\u8bf7\u6c42 ",(0,r.kt)("inlineCode",{parentName:"li"},"HttpRequestMessage")," \u62d3\u5c55\u65b9\u6cd5 ",(0,r.kt)("inlineCode",{parentName:"li"},"AppendQueries()")," \u8ffd\u52a0\u66f4\u591a ",(0,r.kt)("inlineCode",{parentName:"li"},"query")," \u53c2\u6570\u62d3\u5c55 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3E3DI"},"#I3E3DI")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u7a81\u7834\u6027\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"IRepository.AsAsyncEnumerable()")," \u8fd4\u56de\u503c ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3DIQ1"},"#I3DIQ1"),"\uff0c\u8c03\u6574\u4e3a\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"rep.AsQueryable().ToListAsync()")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u9898\u4fee\u590d")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u6570\u636e\u9a8c\u8bc1\u5931\u8d25\u540e\u4e5f\u6253\u5370\u4e86\u6210\u529f\u7684\u5b57\u6bb5 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3CVBS"},"#I3CVBS")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u8fdc\u7a0b\u8bf7\u6c42\u914d\u7f6e ",(0,r.kt)("inlineCode",{parentName:"li"},"contentType")," \u4e3a ",(0,r.kt)("inlineCode",{parentName:"li"},"application/x-www-form-urlencoded")," \u65e0\u6548\u95ee\u9898",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3CWBS"},"#I3CWBS")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u8fdc\u7a0b\u8bf7\u6c42\u65e0\u6cd5\u6253\u5370\u5b8c\u6574\u7684\u8bf7\u6c42\u5730\u5740\uff0c\u6bd4\u5982\u914d\u7f6e\u4e86 HttpClient \u4e4b\u540e ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3CY42"},"#I3CY42")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u7a0b\u5e8f\u542f\u52a8\u65f6\u6392\u9664\u9ed8\u8ba4\u914d\u7f6e\u6587\u4ef6\u7b97\u6cd5\u4e0d\u5bf9\uff0c\u5e94\u8be5\u91c7\u7528\u6b63\u5219\u8868\u8fbe\u5f0f\u5339\u914d ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3D9E7"},"#I3D9E7")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u8fdc\u7a0b\u8bf7\u6c42\u6210\u529f\u8bf7\u6c42\u62e6\u622a\u4e0d\u751f\u6548 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3DOE4"},"#I3DOE4")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Dapper")," \u62d3\u5c55\u6570\u636e\u5e93\u5207\u6362\u4e3a oracle \u65f6\uff0c\u7cfb\u7edf\u627e\u4e0d\u5230\u6307\u5b9a\u7684\u6587\u4ef6 ",(0,r.kt)("inlineCode",{parentName:"li"},"Oracle.ManagedDataAccess.Core")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3DYM3"},"#I3DYM3")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u5176\u4ed6\u66f4\u6539")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u6539\u8fdb]"," \u83b7\u53d6 ",(0,r.kt)("inlineCode",{parentName:"li"},"JWT token")," \u4fe1\u606f\u652f\u6301\u914d\u7f6e ",(0,r.kt)("inlineCode",{parentName:"li"},"Token")," \u524d\u7f00\uff0c\u5982 ",(0,r.kt)("inlineCode",{parentName:"li"},"Bearer ")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3DJIV"},"#I3DJIV")),(0,r.kt)("li",{parentName:"ul"},"[\u6539\u8fdb]"," \u5237\u65b0 Token \u9ed1\u540d\u5355\u5b58\u50a8\u65b9\u5f0f\uff0c\u5c06\u5185\u5b58\u7f13\u5b58\u8c03\u6574\u4e3a\u5206\u5e03\u5f0f\u7f13\u5b58 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3DPBR"},"#I3DPBR")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u6587\u6863\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," \u8fdc\u7a0b\u8bf7\u6c42\u6587\u6863 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3CPJO"},"#I3CPJO")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u7b54\u7b54\u7591")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"LinqExpression.And")," \u6ca1\u6709 2 \u4e2a\u53c2\u6570\u7684\u65b9\u6cd5 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3CXKZ"},"#I3CXKZ")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u5f02\u5e38\u4fe1\u606f \u5982\u4f55\u8bb0\u5f55\u5230\u6570\u636e\u5e93\u4e2d:) ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3DDGO"},"#I3DDGO")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u65e0\u952e\u5b9e\u4f53\u9009\u7528 ",(0,r.kt)("inlineCode",{parentName:"li"},"IEntityNotKey")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3DWRF"},"#I3DWRF")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u6839\u636e\u4e3b\u952e\u5220\u9664\u4e00\u6761\u8bb0\u5f55\u4e0d\u6210\u529f\uff0c\u65e0\u9519\u8bef\u4fe1\u606f ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3DWWF"},"#I3DWWF")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u5982\u4f55\u81ea\u5b9a\u4e49\u63a5\u53e3\u8fd4\u56de\u683c\u5f0f ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3DZN6"},"#I3DZN6")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," DynamicApiController \u5982\u4f55\u5728\u8fd0\u884c\u65f6\u51b3\u5b9a\u662f\u5426\u516c\u5f00\u4e00\u4e2a Action ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3D5UL"},"#I3D5UL")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Furion.DatabaseAccessor.DbHelpers")," \u65b9\u6cd5\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"ConvertToDbParameters")," \u662f\u4e0d\u662f\u5e94\u8be5\u8fc7\u6ee4\u6389\u8d34 ",(0,r.kt)("inlineCode",{parentName:"li"},"NotMapped")," \u7684\u7279\u6027 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3E2XS"},"#I3E2XS")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u4e0d\u505a\u5b9e\u73b0")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," \u6846\u67b6\u662f\u5426\u63d0\u4f9b ",(0,r.kt)("inlineCode",{parentName:"li"},"ISoftDelete")," \u7c7b\u4f3c\u63a5\u53e3 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3CP93"},"#I3CP93"))))),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"v1160-\uff08\u5df2\u53d1\u5e03\uff09"},"v1.16.0 \uff08\u5df2\u53d1\u5e03\uff09"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u65b0\u7279\u6027")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"IDGenerator")," \u96ea\u82b1 ID \u7b97\u6cd5\uff0c\u611f\u8c22 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/yitter/idgenerator"},"idgenerator")," \u4f5c\u8005\u63d0\u4ea4 PR ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/pulls/204"},"#PR204")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3B60S"},"#I3B60S")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"DbContext")," \u5237\u65b0\u591a\u79df\u6237\u7f13\u5b58\u62d3\u5c55\u65b9\u6cd5 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I39N5U"},"#I39N5U")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u81ea\u5b9a\u4e49\u914d\u7f6e\u5355\u4e2a\u63a7\u5236\u5668\u540d\u79f0\u89c4\u8303\uff0c\u5982\u5c0f\u5199\u8def\u7531 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3A5XL"},"#I3A5XL")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u83b7\u53d6\u5f53\u524d\u9009\u62e9\u533a\u57df\u8bed\u8a00\u65b9\u6cd5 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3BSDH"},"#I3BSDH")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u7a81\u7834\u6027\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u5347\u7ea7]"," .NET 5 SDK \u81f3 5.0.4 \u7248\u672c ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3ASTL"},"#I3ASTL")),(0,r.kt)("li",{parentName:"ul"},"[\u91cd\u6784]"," \u8fdc\u7a0b\u8bf7\u6c42\u6240\u6709\u529f\u80fd ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2LB7M"},"#I2LB7M")),(0,r.kt)("li",{parentName:"ul"},"[\u91cd\u6784]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"JSON")," \u5e8f\u5217\u5316\u529f\u80fd\uff0c\u63d0\u4f9b\u7edf\u4e00\u7684\u62bd\u8c61\u63a5\u53e3\uff0c\u65b9\u4fbf\u81ea\u7531\u66ff\u6362 ",(0,r.kt)("inlineCode",{parentName:"li"},"JSON")," \u5e93 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I39GT9"},"#I39GT9")),(0,r.kt)("li",{parentName:"ul"},"[\u91cd\u6784]"," \u9a8c\u8bc1\u5931\u8d25\u8fd4\u56de\u6d88\u606f\u6a21\u578b\u53ca\u89c4\u8303\u5316\u63a5\u53e3\u9a8c\u8bc1\u53c2\u6570 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3AFQW"},"#I3AFQW")),(0,r.kt)("li",{parentName:"ul"},"[\u4f18\u5316]"," \u63d2\u4ef6\u5f0f\u5f00\u53d1\u70ed\u63d2\u62d4\u529f\u80fd\uff0c\u5b9e\u73b0\u52a8\u6001\u52a0\u8f7d\u5378\u8f7d ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/pulls/200"},"#PR200"),", \u611f\u8c22 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/samwangcoder"},"@SamWangCoder")),(0,r.kt)("li",{parentName:"ul"},"[\u79fb\u9664]"," \u79fb\u9664 ",(0,r.kt)("inlineCode",{parentName:"li"},"JsonSerializerUtility")," \u9759\u6001\u7c7b\u53ca\u79fb\u9664\u5c5e\u6027\u5927\u5199\u5e8f\u5217\u5316\u62d3\u5c55\u914d\u7f6e ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3AFRJ"},"#I3AFRJ")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u9898\u4fee\u590d")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"MVC")," \u6a21\u5f0f\u4e0b\u4e0d\u652f\u6301\u9a8c\u8bc1\u81ea\u5b9a\u4e49\u9a8c\u8bc1\u903b\u8f91 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I39LM5"},"#I39LM5")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u9a8c\u8bc1\u6570\u503c\u7c7b\u578b\u6b63\u5219\u8868\u8fbe\u5f0f\u4e0d\u652f\u6301\u8d1f\u6570 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I39YUV"},"#I39YUV")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u6846\u67b6\u542f\u52a8\u65f6\u65e0\u6cd5\u52a0\u8f7d\u672a\u88ab\u5f15\u7528\u7684\u7a0b\u5e8f\u96c6 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3A3Z4"},"#I3A3Z4")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"EFCoreRepository.IsAttached()")," \u65b9\u6cd5\u5224\u65ad\u9519\u8bef bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3A824"},"#I3A824")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"\u52a8\u6001API")," \u9a7c\u5cf0\u663e\u793a\u914d\u7f6e\u65e0\u6548 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3AF32"},"#I3AF32")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"cli.ps1")," \u4e0d\u652f\u6301\u65b0\u7248\u672c ",(0,r.kt)("inlineCode",{parentName:"li"},"EFCore")," bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3APO9"},"#I3APO9")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"EFCore")," \u5b9e\u4f53\u914d\u7f6e ",(0,r.kt)("inlineCode",{parentName:"li"},"[Table]")," \u7279\u6027\u65e0\u6548 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3BAYH"},"#I3BAYH")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u52a8\u6001 WebAPI ",(0,r.kt)("inlineCode",{parentName:"li"},"CheckIsSplitCamelCase")," bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3BLKX"},"#I3BLKX")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u4fee\u590d\u52a8\u6001 WebAPI \u914d\u7f6e\u4fdd\u7559 Action \u7684 Async \u540e\u7f00\u65e0\u6548\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3C3DA"},"#I3C3DA")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"JWT")," Token \u5237\u65b0\u540e\u65e7\u7684\u5237\u65b0 Token \u4f9d\u65e7\u53ef\u7528 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3C8ZH"},"#I3C8ZH")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u591a\u8bed\u8a00 ",(0,r.kt)("inlineCode",{parentName:"li"},"Razor")," \u89c6\u56fe\u53d8\u91cf\u591a\u8bed\u8a00\u4e71\u7801\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3CBMU"},"#I3CBMU")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u5176\u4ed6\u66f4\u6539")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4f18\u5316]"," \u9ed8\u8ba4\u5e8f\u5217\u5316\u63d0\u4f9b\u5668 ",(0,r.kt)("inlineCode",{parentName:"li"},"System.Text.Json")," \u53cd\u5e8f\u5217\u5316\u5b57\u7b26\u4e32\u65f6\u533a\u5206\u5927\u5c0f\u5199\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3BSXV"},"#I3BSXV")),(0,r.kt)("li",{parentName:"ul"},"[\u4f18\u5316]"," \u4f18\u5316 ",(0,r.kt)("inlineCode",{parentName:"li"},"MessageCenter")," \u6027\u80fd\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I39PRR"},"#I39PRR")),(0,r.kt)("li",{parentName:"ul"},"[\u4f18\u5316]"," \u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u6c60\u5c0f\u6027\u80fd\u4f18\u5316"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u6587\u6863\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Docker")," \u73af\u5883\u4e0b\u81ea\u52a8\u5316\u90e8\u7f72 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/pulls/209"},"#PR209")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"JSON")," \u5e8f\u5217\u5316 \u6587\u6863 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3B6D8"},"#I3B6D8")),(0,r.kt)("li",{parentName:"ul"},"[\u66f4\u65b0]"," \u8de8\u57df\u3001\u5b89\u5168\u6388\u6743\u3001\u5373\u65f6\u901a\u4fe1\u6587\u6863\u3001\u591a\u8bed\u8a00\u3001\u89c4\u8303\u5316\u6587\u6863"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u7b54\u7b54\u7591")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Furion.Extras.DatabaseAccessor.SqlSugar")," \u914d\u7f6e\u591a\u4e2a\u6570\u636e\u5e93\u6253\u5370 SQL \u8bed\u53e5\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I39PDC"},"#I39PDC")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"ORACLE")," \u6570\u636e\u5e93\u591a\u79df\u6237\u6a21\u5f0f\u4e0b\u8fd4\u56de\u503c\u4e3a\u6307\u5b9a\u7c7b\u578b\u65f6\u7cfb\u7edf\u5361\u6b7b ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I39RNH"},"#I39RNH")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u5047\u5220\u9664\u6307\u5411\u5f02\u5e38 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I39XZA"},"#I39XZA")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Furion")," \u591a\u8bed\u8a00\u914d\u7f6e\u8282\u662f\u653e\u5728 ",(0,r.kt)("inlineCode",{parentName:"li"},"AppSettings")," \u91cc\u9762\u8fd8\u662f\u5916\u9762\u5462\uff1f ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3A4SB"},"#I3A4SB")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u6ca1\u627e\u5230\u6570\u636e\u5e93\u4e0a\u4e0b\u6587 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3A5HS"},"#I3A5HS")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u6709 ",(0,r.kt)("inlineCode",{parentName:"li"},"QQ")," \u4ea4\u6d41\u7fa4\u5417\uff1f ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3AAM7"},"#I3AAM7")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Vue3")," \u73af\u5883\u4e0b\u914d\u7f6e ",(0,r.kt)("inlineCode",{parentName:"li"},"SignalR")," \u8de8\u57df\u51fa\u9519 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3ALQ7"},"#I3ALQ7")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u8bbe\u7f6e ",(0,r.kt)("inlineCode",{parentName:"li"},"Swagger")," \u53c2\u6570\u975e\u5fc5\u586b ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3AT02"},"#I3AT02")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," EFCore \u8c03\u7528 Insert \u65f6\u62a5 ",(0,r.kt)("inlineCode",{parentName:"li"},"Unknown column 'Discriminator' in 'field list'")," \u5f02\u5e38 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3B2LC"},"#I3B2LC")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u9006\u5411 ",(0,r.kt)("inlineCode",{parentName:"li"},"mysql")," \u6570\u636e\u5e93\u65f6 ",(0,r.kt)("inlineCode",{parentName:"li"},"cli")," \u51fa\u73b0\u9519\u8bef ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3B64F"},"#I3B64F")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," Sql \u9ad8\u7ea7\u4ee3\u7406\u4f7f\u7528\u8fc7\u7a0b\u4e2d DateTime \u7c7b\u578b\u7684\u53c2\u6570\u5e8f\u5217\u5316\u5931\u8d25 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3AZXK"},"#I3AZXK")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u4f7f\u7528 Mysql \u6267\u884c Add-Migration \u62a5\u9519 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3B8EW"},"#I3B8EW")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," Saas \u591a\u79df\u6237\u6a21\u5f0f-\u72ec\u7acb Database \u6a21\u5f0f\u4e0b\u65e0\u6cd5\u83b7\u53d6 Tenant, \u5bfc\u81f4\u65e0\u6cd5\u81ea\u52a8\u5207\u6362\u7684\u95ee\u9898",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3AVXU"},"#I3AVXU")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u5982\u4f55\u81ea\u5b9a\u4e49 WebAPI \u7edf\u4e00\u7ed3\u679c\u6a21\u578b ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3BBYW"},"#I3BBYW")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3BBYV"},"#I3BBYV")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u5728 ",(0,r.kt)("inlineCode",{parentName:"li"},"Web.Entry")," \u9879\u76ee\u65b0\u5efa\u4e86\u4e00\u4e2a ",(0,r.kt)("inlineCode",{parentName:"li"},"Controller"),"\uff0c\u591a\u4e86\u672a\u77e5\u65b9\u6cd5 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3BKH5"},"#I3BKH5")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"AOP")," \u62e6\u622a\u5982\u4f55\u89e3\u6790\u670d\u52a1 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3BUM3"},"#I3BUM3")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u52a8\u6001 WebAPI \u8fd4\u56de\u53c2\u6570\u88ab\u7701\u7565 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3C2XR"},"#I3C2XR")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u5982\u4f55\u8bbe\u7f6e\u67d0\u4e00\u4e2a\u63a5\u53e3\u54cd\u5e94\u6570\u636e\u4e0d\u81ea\u52a8\u8f6c\u5c0f\u5199\uff0c\u6309\u539f\u59cb\u5b57\u6bb5\u540d\u8fd4\u56de ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I38L9B"},"#I38L9B")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," code first \u5982\u4f55\u914d\u7f6e\u81ea\u52a8\u8fc1\u79fb ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3CCR0"},"#I3CCR0")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," webapi \u6df7\u5408\u6388\u6743\u5982\u4f55\u533a\u5206\u4e0d\u540c\u7cfb\u7edf ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3CJCY"},"#I3CJCY")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," EFCore \u4e0d\u652f\u6301\u9012\u5f52\u65e0\u9650\u7ea7\u904d\u5386\u5173\u7cfb ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3CET9"},"#I3CET9")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u4e0d\u505a\u5b9e\u73b0")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," \u5efa\u8bae ",(0,r.kt)("inlineCode",{parentName:"li"},"EFCore")," \u53ef\u914d\u7f6e\u5916\u952e\u5173\u7cfb\u5bfc\u822a\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3994X"},"#I3994X")),(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," \u5efa\u8bae\u5c06 ",(0,r.kt)("inlineCode",{parentName:"li"},"EFCore")," \u5265\u79bb\u51fa\u6765\uff0c\u4f5c\u4e3a\u63d2\u4ef6\u7684\u5f62\u5f0f\u63d0\u4f9b\u3002\u8fd9\u6837\u53ef\u4ee5\u9009\u62e9\u81ea\u5df1\u559c\u6b22\u7684 ",(0,r.kt)("inlineCode",{parentName:"li"},"ORM")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3ABNX"},"#I3ABNX")),(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," \u4e8b\u4ef6\u603b\u7ebf\u80fd\u5426\u63d0\u4f9b\u8fd4\u56de\u503c ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3AWL6"},"#I3AWL6")),(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," Sql \u6a21\u677f\u80fd\u4eff\u7167 Mybatis \u4e00\u6837\u52a0\u5404\u79cd\u6807\u7b7e\u5417\uff1f",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3ASRS"},"#I3ASRS")),(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," EFCore \u66f4\u65b0\u6216\u6392\u9664\u66f4\u65b0\u6307\u5b9a\u5217\u652f\u6301\u4f20\u5165 DTO \u6a21\u578b ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3AS5K"},"#I3AS5K")),(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," \u65b0\u589e ",(0,r.kt)("inlineCode",{parentName:"li"},"UnitOfWork")," \u4e8b\u52a1\u5b8c\u6210\u4e8b\u4ef6 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3BRMI"},"#I3BRMI"))))),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"v1150-\uff08\u5df2\u53d1\u5e03\uff09"},"v1.15.0 \uff08\u5df2\u53d1\u5e03\uff09"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u65b0\u7279\u6027")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u8df3\u8fc7\u7279\u5b9a\u5b9e\u4f53\u6570\u636e\u5e93\u64cd\u4f5c\u76d1\u542c\u7279\u6027 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I386LB"},"#I386LB")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"IEntityChangedListener")," \u589e\u52a0\u5bf9 ",(0,r.kt)("inlineCode",{parentName:"li"},"OldEntity")," \u7684\u652f\u6301 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I385X2"},"#I385X2")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u5b9e\u65f6\u901a\u4fe1\u81ea\u52a8\u914d\u7f6e\u96c6\u7ebf\u5668\u62d3\u5c55\u53ca\u7279\u6027 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I387QX"},"#I387QX")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Mapster")," \u62d3\u5c55\u652f\u6301 ",(0,r.kt)("inlineCode",{parentName:"li"},"IMapper")," \u4f9d\u8d56\u6ce8\u5165\u65b9\u5f0f ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I38C7C"},"#I38C7C")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"[AppDbContext]")," \u7279\u6027\u9ed8\u8ba4\u6784\u9020\u51fd\u6570 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I38J97"},"#I38J97")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"UnifyContext.GetExceptionMetadata(context)")," \u8fd4\u56de\u9519\u8bef\u7801\u652f\u6301 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I38ONX"},"#I38ONX")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u7a81\u7834\u6027\u53d8\u5316"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u9898\u4fee\u590d")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u591a\u6b21\u5faa\u73af\u4e2d\u8c03\u7528 ",(0,r.kt)("inlineCode",{parentName:"li"},"Db.GetNewDbContext()")," \u8fd8\u662f\u83b7\u53d6\u5230\u540c\u4e00\u4e2a\u5bf9\u8c61 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I38NNP"},"#I38NNP")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Swagger")," \u8fc7\u6ee4\u6389 ",(0,r.kt)("inlineCode",{parentName:"li"},"object ")," \u7c7b\u578b\u5c5e\u6027\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I38FHL"},"#I38FHL")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u540c\u4e00\u7c7b\u4e0d\u652f\u6301\u591a\u7ee7\u627f ",(0,r.kt)("inlineCode",{parentName:"li"},"IEntityChangedListener")," \u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I38UQJ"},"#I38UQJ")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u81ea\u5b9a\u4e49\u5e8f\u5217\u5316\u5c5e\u6027\u540d\u79f0\u5bfc\u81f4\u9a8c\u8bc1\u5931\u8d25\u5c5e\u6027\u4e0d\u5339\u914d\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I38W8Z"},"#I38W8Z")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u5176\u4ed6\u66f4\u6539")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4f18\u5316]"," \u4ee3\u7801\u4e0d\u89c4\u8303\u547d\u540d\u5bfc\u81f4\u5f00\u53d1\u8005\u9605\u8bfb\u4ee3\u7801\u65f6\u4ea7\u751f\u6b67\u4e49"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u6587\u6863\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"FluentValidation")," \u96c6\u6210\u6587\u6863 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I38IOT"},"#I38IOT")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u7b54\u7b54\u7591")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Furion")," \u6846\u67b6\u7248\u672c\u5411\u4e0b\u517c\u5bb9\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I38WMZ"},"#I38WMZ")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u4e0d\u505a\u5b9e\u73b0")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," \u5efa\u8bae ",(0,r.kt)("inlineCode",{parentName:"li"},"SqlSugar")," \u6dfb\u52a0\u52a8\u6001\u5207\u6362\u6570\u636e\u5e93\u529f\u80fd ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I38G4M"},"#I38G4M")),(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," \u5efa\u8bae ",(0,r.kt)("inlineCode",{parentName:"li"},"MessageCenter")," \u91c7\u7528 ",(0,r.kt)("inlineCode",{parentName:"li"},"Channel")," \u5b9e\u73b0 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I38BP8"},"#I38BP8")),(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," \u5efa\u8bae\u63a5\u53e3\u6587\u6863\u6574\u5408 Knife4jUI \u6216 Redoc ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I38S70"},"#I38S70"))))),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"v1140\uff08\u5df2\u53d1\u5e03\uff09"},"v1.14.0\uff08\u5df2\u53d1\u5e03\uff09"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u65b0\u7279\u6027")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"EFCore")," 5.0 \u7684 ",(0,r.kt)("inlineCode",{parentName:"li"},"Oracle")," \u6570\u636e\u5e93\u652f\u6301 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I37Z8E"},"#I37Z8E")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u63a7\u5236\u662f\u5426\u5728\u5f00\u53d1\u73af\u5883\u4e0b\u663e\u793a\u6570\u636e\u5e93\u8fde\u63a5\u4fe1\u606f ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I37YQ2"},"#I37YQ2")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"[NonUnify]")," \u652f\u6301\u5728\u7c7b\u4e2d\u8d34\u6b64\u7279\u6027 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I359Q6"},"#I359Q6")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"\u7f51\u7edc\u8bf7\u6c42")," \u5b57\u7b26\u4e32 ",(0,r.kt)("inlineCode",{parentName:"li"},"HttpClient")," \u62e6\u622a\u5668 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I35F3E"},"#I35F3E")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"HttpContext")," \u53ca ",(0,r.kt)("inlineCode",{parentName:"li"},"HttpRequest")," \u83b7\u53d6\u8fdc\u7a0b\u5730\u5740\u62d3\u5c55 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3688Z"},"#I3688Z")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"services.AddMvcFilter<>")," \u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"li"},"Mvc")," \u8fc7\u6ee4\u5668\u62d3\u5c55 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I368BH"},"#I368BH")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u7a81\u7834\u6027\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u5347\u7ea7]"," \u6846\u67b6\u4f9d\u8d56\u7684 .NET 5 SDK \u81f3\u6700\u65b0\u7248 5.0.3 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I37YQQ"},"#I37YQQ")),(0,r.kt)("li",{parentName:"ul"},"[\u5347\u7ea7]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Swashbuckle.AspNetCore")," \u7ec4\u4ef6\u5305\u5230 ",(0,r.kt)("inlineCode",{parentName:"li"},"6.0.x")," \u7248\u672c ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I37EZK"},"#I37EZK")),(0,r.kt)("li",{parentName:"ul"},"[\u79fb\u9664]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Furion")," \u6846\u67b6 ",(0,r.kt)("inlineCode",{parentName:"li"},"JWT")," \u62d3\u5c55\u7c7b\uff0c\u53ea\u5728 ",(0,r.kt)("inlineCode",{parentName:"li"},"Furion.Extras.Authentication.JwtBearer")," \u4e2d\u4fdd\u7559 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I35D59"},"#I35D59")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u9898\u4fee\u590d")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u4f20\u5165\u9519\u8bef ",(0,r.kt)("inlineCode",{parentName:"li"},"JWT Token")," \u5b57\u7b26\u4e32\u5bfc\u81f4\u81ea\u52a8\u5237\u65b0 ",(0,r.kt)("inlineCode",{parentName:"li"},"Token")," \u51fa\u73b0\u5b57\u7b26\u4e32\u8fb9\u754c\u503c\u5f02\u5e38 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I34ZE5"},"#I34ZE5")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u77ac\u65f6\u4f5c\u7528\u57df\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u4e5f\u4f1a\u81ea\u52a8\u52a0\u5165\u5de5\u4f5c\u5355\u5143\u5bfc\u81f4\u5199\u65e5\u5fd7\u65f6\u8fde\u9501\u5f02\u5e38 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I37WTV"},"#I37WTV")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u5176\u4ed6\u66f4\u6539")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4f18\u5316]"," \u83b7\u53d6\u7cfb\u7edf\u73af\u5883\u53c2\u6570\u7684\u6027\u80fd ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I36SR5"},"#I36SR5")),(0,r.kt)("li",{parentName:"ul"},"[\u4f18\u5316]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Furion")," \u5e95\u5c42\u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"li"},"Mvc")," \u8fc7\u6ee4\u5668\u4ee3\u7801 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I36SKA"},"#I36SKA")),(0,r.kt)("li",{parentName:"ul"},"[\u4f18\u5316]"," \u6dfb\u52a0\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"Json")," \u5e8f\u5217\u5316\u65f6\u95f4\u9ed8\u8ba4\u65f6\u95f4\u683c\u5f0f ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I36SL0"},"#I36SL0")),(0,r.kt)("li",{parentName:"ul"},"[\u5347\u7ea7]"," \u5347\u7ea7 ",(0,r.kt)("inlineCode",{parentName:"li"},"SqlSugar")," \u62d3\u5c55\u5305\u5230 ",(0,r.kt)("inlineCode",{parentName:"li"},"5.0.2.6")," \u7248\u672c ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I36SIG"},"#I36SIG")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u6587\u6863\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u6570\u636e\u5e93\u5165\u95e8\u6587\u6863 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I37Z8S"},"#I37Z8S")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u66f4\u65b0\u65e5\u5fd7\u6587\u6863 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I36PI0"},"#I36PI0")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u8bf7\u6c42\u5ba1\u8ba1\u65e5\u5fd7\u3001\u6267\u884c ",(0,r.kt)("inlineCode",{parentName:"li"},"Sql")," \u66f4\u65b0\u65e5\u5fd7\u6587\u6863 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I36PIK"},"#I36PIK")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u524d\u7aef\u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"li"},"axios")," \u8de8\u57df\u914d\u7f6e\u6587\u6863 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I36PIT"},"#I36PIT")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"App")," \u9759\u6001\u7c7b\u83b7\u53d6\u5e94\u7528\u3001\u73af\u5883\u66f4\u591a\u4fe1\u606f\u6570\u636e ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I36SOV"},"#I36SOV")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u82f1\u6587\u7248 ",(0,r.kt)("inlineCode",{parentName:"li"},"README.md")," \u4ecb\u7ecd ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I37QHP"},"#I37QHP")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u7b54\u7b54\u7591"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u4e0d\u505a\u5b9e\u73b0")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," \u591a\u8bed\u8a00\u8d44\u6e90\u6587\u4ef6\u81ea\u52a8\u521b\u5efa ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I35AA4"},"#I35AA4")),(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," \u5efa\u8bae\u591a\u8bed\u8a00\u52a0\u4e0a\u7ef4\u543e\u5c14\u8bed\u652f\u6301 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I37X1L"},"#I37X1L"))))),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"v1130\uff08\u5df2\u53d1\u5e03\uff09"},"v1.13.0\uff08\u5df2\u53d1\u5e03\uff09"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u65b0\u7279\u6027")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u591a\u8bed\u8a00\u529f\u80fd\u53ca\u62d3\u5c55 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2DOCL"},"#I2DOCL")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u4e8b\u4ef6\u603b\u7ebf\u529f\u80fd\u53ca\u6d88\u606f\u4e2d\u5fc3 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I23BKN"},"#I23BKN")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Swagger")," \u5206\u7ec4\u663e\u793a\u9690\u85cf\u914d\u7f6e ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2AHH8"},"#I2AHH8")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Furion.Extras.Logging.Serilog")," \u62d3\u5c55\u63d2\u4ef6 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2AAN8"},"#I2AAN8")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"cli.ps")," \u652f\u6301 ",(0,r.kt)("inlineCode",{parentName:"li"},"-Namespace")," \u547d\u540d\u7a7a\u95f4\u6307\u5b9a ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2A175"},"#I2A175")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Swagger")," \u89c4\u8303\u5316\u5316\u6587\u6863\u6388\u6743\u5931\u6548\u540e\u81ea\u52a8\u53d6\u6d88\u6388\u6743\u9501 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2AIWC"},"#I2AIWC")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Request.Body")," \u652f\u6301\u91cd\u590d\u8bfb\u529f\u80fd\uff0c\u4e3b\u8981\u89e3\u51b3\u5fae\u4fe1 SDK \u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2AMG0"},"#I2AMG0")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u7f51\u7edc\u8bf7\u6c42\u529f\u80fd\u53ca\u6587\u6863 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2APGJ"},"#I2APGJ")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"SqlSugar")," \u62d3\u5c55\u5305\u652f\u6301\u6253\u5370 ",(0,r.kt)("inlineCode",{parentName:"li"},"sql")," \u5230 ",(0,r.kt)("inlineCode",{parentName:"li"},"MiniProfiler")," \u4e2d ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2ASLS"},"#I2ASLS")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Furion.Extras.DatabaseAccesssor.Dapper")," \u62d3\u5c55\u63d2\u4ef6 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2ASYA"},"#I2ASYA")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Furion.Extras.DatabaseAccessor.PetaPoco")," \u62d3\u5c55\u63d2\u4ef6 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2AUGA"},"#I2AUGA")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u7f51\u7edc\u8bf7\u6c42\u5b57\u7b26\u4e32\u62d3\u5c55\u65b9\u6cd5 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2CPQ0"},"#I2CPQ0")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"SqlSugar")," \u62d3\u5c55\u65b0\u589e ",(0,r.kt)("inlineCode",{parentName:"li"},"PagedList")," \u62d3\u5c55 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2CW99"},"#I2CW99")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u8fdc\u7a0b\u8bf7\u6c42\u652f\u6301\u53c2\u6570\u7279\u6027\u9a8c\u8bc1 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2CX5L"},"#I2CX5L")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"App.User")," \u83b7\u53d6\u5f53\u524d\u6388\u6743\u7528\u6237\u4fe1\u606f\u4fbf\u6377\u65b9\u6cd5 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2CZLO"},"#I2CZLO")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u89c4\u8303\u5316\u6587\u6863\u53ef\u914d\u7f6e\u529f\u80fd\uff0c\u652f\u6301 ",(0,r.kt)("inlineCode",{parentName:"li"},"appsettings.json")," \u914d\u7f6e ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2D1K9"},"#I2D1K9")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u8fdc\u7a0b\u8bf7\u6c42\u62e6\u622a\u5668\u6dfb\u52a0\u65b9\u6cd5\u548c\u65b9\u6cd5\u53c2\u6570 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2D2CM"},"#I2D2CM")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u8fdc\u7a0b\u8bf7\u6c42\u51fa\u9519\u8fd4\u56de\u9ed8\u8ba4\u503c\u652f\u6301 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2D44M"},"#I2D44M")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u8fdc\u7a0b\u8bf7\u6c42 ",(0,r.kt)("inlineCode",{parentName:"li"},"body")," \u53c2\u6570\u5e8f\u5217\u5316\u652f\u6301\u8bbe\u7f6e ",(0,r.kt)("inlineCode",{parentName:"li"},"PropertyNamingPolicy")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2D685"},"#I2D685")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u8fdc\u7a0b\u670d\u52a1\u63a5\u53e3\u5ba2\u6237\u7aef\u914d\u7f6e ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2D7PS"},"#I2D7PS")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"AddInject")," \u548c ",(0,r.kt)("inlineCode",{parentName:"li"},"UseInject")," \u5141\u8bb8\u81ea\u5b9a\u4e49 ",(0,r.kt)("inlineCode",{parentName:"li"},"SecurityDefinitions")," \u548c ",(0,r.kt)("inlineCode",{parentName:"li"},"SwaggerUI")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2DIMG"},"#I2DIMG")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"[SecurityDefine]")," \u9ed8\u8ba4\u6784\u9020\u51fd\u6570 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2DNXT"},"#I2DNXT")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"AspectDispatchProxy")," \u52a8\u6001\u4ee3\u7406\u7c7b ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2DO6I"},"#I2DO6I")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"[QueryParameters]")," \u7279\u6027\uff0c\u652f\u6301\u4e00\u952e\u5c06 ",(0,r.kt)("inlineCode",{parentName:"li"},"Action")," \u53c2\u6570\u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"li"},"[FromQuery]")," \u7279\u6027 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2G8TF"},"#I2G8TF")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u52a8\u6001\u65e5\u5fd7\u914d\u7f6e\u53ca\u62d3\u5c55\u65b9\u6cd5 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2GDGD"},"#I2GDGD")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"WebApi")," \u8bf7\u6c42\u8c13\u8bcd\u9ed8\u8ba4\u89c4\u5219\u914d\u7f6e\u529f\u80fd ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2M70X"},"#I2M70X")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u7a81\u7834\u6027\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u5347\u7ea7]"," ",(0,r.kt)("inlineCode",{parentName:"li"},".NET 5")," SDK \u5230 ",(0,r.kt)("inlineCode",{parentName:"li"},".NET 5.0.2")," \u7248\u672c ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2D0PZ"},"#I2D0PZ")),(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," \u6846\u67b6\u5185\u6240\u6709\u62d3\u5c55\u7c7b\u547d\u540d\u7a7a\u95f4\uff0c\u5168\u90e8\u8fc1\u79fb\u5230 ",(0,r.kt)("inlineCode",{parentName:"li"},"Furion.\u6a21\u5757.Extensions")," \u4e0b ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2AH54"},"#I2AH54")),(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Swagger")," \u8bb0\u4f4f\u6388\u6743\u5b58\u50a8\u65b9\u5f0f\uff0c\u66ff\u6362 ",(0,r.kt)("inlineCode",{parentName:"li"},"Session")," \u5b58\u50a8\u65b9\u5f0f\u4e3a ",(0,r.kt)("inlineCode",{parentName:"li"},"LocalStorage")," \u65b9\u5f0f ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2AKUA"},"#I2AKUA")),(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Furion")," \u6846\u67b6\u5305\u63cf\u8ff0\u6587\u4ef6\uff0c\u51cf\u5c11\u6846\u67b6\u4f53\u79ef ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2APAU"},"#I2APAU")),(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"App.CanBeScanTypes")," \u4e3a ",(0,r.kt)("inlineCode",{parentName:"li"},"App.EffectiveTypes")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2B0ZR"},"#I2B0ZR")),(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"App.ServiceProvider")," \u5c5e\u6027\u5e76\u79fb\u9664 ",(0,r.kt)("inlineCode",{parentName:"li"},"App.GetDuplicateXXX")," \u65b9\u6cd5 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2CYZE"},"#I2CYZE")),(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Db.GetDuplicateDbContext")," \u4e3a ",(0,r.kt)("inlineCode",{parentName:"li"},"Db.GetNewDbContext")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2CZ04"},"#I2CZ04")),(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Db.GetSqlDispatchProxy")," \u4e3a ",(0,r.kt)("inlineCode",{parentName:"li"},"Db.GetSqlProxy")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2DO9T"},"#I2DO9T")),(0,r.kt)("li",{parentName:"ul"},"[\u91cd\u6784]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Aop")," \u670d\u52a1\u62e6\u622a\u5668\uff0c\u652f\u6301\u5f02\u6b65\u3001\u540c\u6b65\u4e24\u79cd\u65b9\u5f0f ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2B9HQ"},"#I2B9HQ")),(0,r.kt)("li",{parentName:"ul"},"[\u91cd\u6784]"," \u7f51\u7edc\u8bf7\u6c42\u6240\u6709\u529f\u80fd ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2BMR7"},"#I2BMR7")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u9898\u4fee\u590d")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Swagger")," \u89c4\u8303\u5316\u5316\u7ed3\u679c\u4e0d\u4e00\u81f4 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2ACF3"},"#I2ACF3")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u6570\u636e\u5e93\u65b0\u589e\u6216\u66f4\u65b0\u5ffd\u7565\u7a7a\u503c\u64cd\u4f5c\u65b9\u6cd5\u62a5\u7a7a\u5f02\u5e38 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2AB6C"},"#I2AB6C")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Startup.cs")," Aop \u5168\u5c40\u62e6\u622a\u65e0\u6548 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2A7T2"},"#I2A7T2")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Token")," \u8fc7\u671f\u540e\u81ea\u52a8\u5237\u65b0 ",(0,r.kt)("inlineCode",{parentName:"li"},"Token")," \u65e0\u6cd5\u83b7\u53d6\u6700\u65b0\u7684\u7528\u6237\u4fe1\u606f bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2AWQI"},"#I2AWQI")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},'[ApiDescriptionSettings(Tag="xx")]')," \u5bfc\u81f4 ",(0,r.kt)("inlineCode",{parentName:"li"},"swagger.json")," \u62a5\u9519 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2B47R"},"#I2B47R")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Mysql")," sql \u6570\u636e\u5e93\u67e5\u8be2\u7ed3\u679c ",(0,r.kt)("inlineCode",{parentName:"li"},"tinyint")," \u7c7b\u578b\u8f6c\u6362\u51fa\u9519 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2BEBM"},"#I2BEBM")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u89c4\u8303\u5316\u7ed3\u679c\u591a\u6b21\u5305\u88f9\u7c7b\u578b bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2BHHZ"},"#I2BHHZ")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u52a8\u6001 Api \u57fa\u5143\u7c7b\u578b\u6570\u7ec4\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2BMS5"},"#I2BMS5")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"sql")," \u67e5\u8be2\u679a\u4e3e\u7c7b\u578b\u8f6c\u6362\u5f02\u5e38 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2BS2Y"},"#I2BS2Y")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"string.SqlQuerizeAsync()")," \u62d3\u5c55\u8fd4\u56de\u9519\u8bef bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2BSTS"},"#I2BSTS")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u52a8\u6001 Api \u5b50\u7c7b\u91cd\u5199\u7236\u7c7b\u65b9\u6cd5\u5e76\u53d6\u522b\u540d\u540e ",(0,r.kt)("inlineCode",{parentName:"li"},"Swagger")," \u5f02\u5e38 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2C9VP"},"#I2C9VP")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u7f51\u7edc\u8bf7\u6c42 ",(0,r.kt)("inlineCode",{parentName:"li"},"application/json")," \u5e8f\u5217\u5316\u5927\u5c0f\u5199\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2CRJC"},"#I2CRJC")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u591a\u6570\u636e\u5e93\u5b9a\u4f4d\u5668\u5b9e\u4f53\u5d4c\u5957\u5173\u8054 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2CVN0"},"#I2CVN0")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u8de8\u57df\u54cd\u5e94\u5934\u8bbe\u7f6e\u65e0\u6548 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2CW5T"},"#I2CW5T")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u8fdc\u7a0b\u7f51\u7edc\u8bf7\u6c42\u4ee3\u7406\u6253\u5370\u5230 ",(0,r.kt)("inlineCode",{parentName:"li"},"MiniProfiler")," bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2CZBC"},"#I2CZBC")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u8fdc\u7a0b\u8bf7\u6c42\u54cd\u5e94\u62e6\u622a\u5668 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2D4DG"},"#I2D4DG")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"SqlSugar")," \u6846\u67b6 ",(0,r.kt)("inlineCode",{parentName:"li"},"AsQueryable()")," \u4e00\u76f4\u8ffd\u52a0\u53c2\u6570 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2DH1D"},"#I2DH1D")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u81ea\u52a8\u5237\u65b0 ",(0,r.kt)("inlineCode",{parentName:"li"},"Token")," \u7a7a\u5f02\u5e38 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2DO29"},"#I2DO29")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u751f\u6210 ",(0,r.kt)("inlineCode",{parentName:"li"},"JWT Token")," \u4e0d\u4f20\u8fc7\u671f\u65f6\u95f4\u51fa\u73b0\u9a8c\u8bc1 401 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2DO8L"},"#I2DO8L")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"AppStartup")," \u6392\u5e8f\u65e0\u6548 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2DVD2"},"#I2DVD2")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u672a\u542f\u7528\u591a\u8bed\u8a00\u670d\u52a1\u65f6\u53cb\u597d\u5f02\u5e38\u548c\u9a8c\u8bc1\u51fa\u73b0\u7a7a\u5f02\u5e38 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2ECUJ"},"#I2ECUJ")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u6570\u636e\u6821\u9a8c\u5b57\u6bcd\u548c\u6570\u5b57\u7ec4\u5408\u65e0\u6cd5\u5339\u914d bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2EF2Q"},"#I2EF2Q")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u6570\u636e\u6821\u9a8c\u624b\u673a\u6216\u56fa\u8bdd\u65e0\u6548 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2M5IZ"},"#I2M5IZ")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Dapper")," \u62d3\u5c55\u89e3\u6790 ",(0,r.kt)("inlineCode",{parentName:"li"},"SqlConnection")," \u5f02\u5e38 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2M5P2"},"#I2M5P2")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u5f00\u542f\u591a\u8bed\u8a00\u540e\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"EF")," \u8fc1\u79fb\u5f02\u5e38 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2M7DT"},"#I2M7DT")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"IEntityTypeBuilder")," \u4e0d\u652f\u6301\u591a\u91cd\u7ee7\u627f bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2PAOD"},"#I2PAOD")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"JwtHandler")," \u8bbe\u7f6e\u81ea\u52a8\u5237\u65b0\u540e\uff0c\u533f\u540d\u8bbf\u95ee\u65e0\u6cd5\u901a\u8fc7 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2SDOX"},"#I2SDOX")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Dapper")," \u62d3\u5c55\u4e2d ",(0,r.kt)("inlineCode",{parentName:"li"},"SqlServer")," \u6570\u636e\u5e93\u83b7\u53d6\u8fde\u63a5\u5bf9\u8c61\u7c7b\u578b bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/pulls/159"},"#PR159")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u5176\u4ed6\u66f4\u6539")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4f18\u5316]"," \u79fb\u9664 ",(0,r.kt)("inlineCode",{parentName:"li"},"Sql")," \u67e5\u8be2\u7ed3\u679c\u6620\u5c04\u68c0\u67e5 ",(0,r.kt)("inlineCode",{parentName:"li"},"[NotMapper]")," \u7279\u6027\u673a\u5236 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I34XD0"},"#I34XD0")),(0,r.kt)("li",{parentName:"ul"},"[\u4f18\u5316]"," \u4f9d\u8d56\u6ce8\u5165\u65f6\u6392\u9664 ",(0,r.kt)("inlineCode",{parentName:"li"},"IDynamicApiController")," \u63a5\u53e3 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2ECTG"},"#I2ECTG")),(0,r.kt)("li",{parentName:"ul"},"[\u4f18\u5316]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"MD5")," \u52a0\u5bc6\u6027\u80fd ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/pulls/158"},"#PR158")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u6587\u6863\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u91cd\u6784]"," \u6587\u6863\u9996\u9875 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I34XBR"},"#I34XBR")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u7f51\u7edc\u8bf7\u6c42\u6587\u6863 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2APGJ"},"#I2APGJ")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u591a\u8bed\u8a00\u6587\u6863 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2DOCL"},"#I2DOCL")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u6587\u6863\u5168\u6587\u641c\u7d22\u5f15\u64ce ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I34XAW"},"#I34XAW")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u5168\u5c40\u9759\u6001\u7c7b\u7c7b\u578b ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I34XB4"},"#I34XB4")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u6846\u67b6\u53ef\u914d\u7f6e\u9009\u9879\u6587\u6863 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I34XB9"},"#I34XB9")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u4e8b\u4ef6\u603b\u7ebf\u6587\u6863 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I34XBI"},"#I34XBI")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u6570\u636e\u52a0\u89e3\u5bc6\u6587\u6863 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I34XC0"},"#I34XC0")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u8d21\u732e\u6307\u5357\u6587\u6863 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I34XC8"},"#I34XC8")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"HttpContext")," \u53ca ",(0,r.kt)("inlineCode",{parentName:"li"},"\u6587\u4ef6\u4e0a\u4f20\u4e0b\u8f7d")," \u535a\u5ba2\u6587\u7ae0 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I34XCB"},"#I34XCB")),(0,r.kt)("li",{parentName:"ul"},"[\u5176\u4ed6]"," \u6587\u6863\u5c0f\u8c03\u6574\uff0c\u5c0f\u4f18\u5316"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u7b54\u7b54\u7591")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u8de8\u57df\u8bbe\u7f6e\u65e0\u6548 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2ASNJ"},"#I2ASNJ")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"MVC")," \u89c6\u56fe\u65e0\u6548\uff0c\u539f\u56e0\u662f ",(0,r.kt)("inlineCode",{parentName:"li"},".cshtml")," \u6587\u4ef6\u6ca1\u6709\u8bbe\u7f6e\u4e3a ",(0,r.kt)("inlineCode",{parentName:"li"},"\u5185\u5bb9")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2AXUU"},"#I2AXUU")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Sql")," \u64cd\u4f5c\u53ef\u4ee5\u5b9e\u73b0\u4e8b\u52a1\u5417\uff1f",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2B0NX"},"#I2B0NX")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"IRepository")," \u64cd\u4f5c\u6570\u636e\u5e93\u4f1a\u6253\u5f00\u591a\u6b21\u6570\u636e\u5e93\u8fde\u63a5 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2BB7B"},"#I2BB7B")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u5982\u4f55\u8fdb\u5165\u81ea\u5b9a\u4e49 ",(0,r.kt)("inlineCode",{parentName:"li"},"AppAuthorizeHandler")," \u65ad\u70b9 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2BGXY"},"#I2BGXY")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"SqlSugar")," \u6ce8\u5165\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2C2AQ"},"#I2C2AQ")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u5efa\u8bae\u589e\u52a0 API \u7b7e\u540d\u9a8c\u8bc1\uff0c\u65f6\u6548\u9a8c\u8bc1 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2C6ET"},"#I2C6ET")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u591a\u6570\u636e\u5e93\u591a\u79df\u6237\u540c\u65f6\u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"li"},"Add-Migration")," \u62a5\u9519 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2CEHS"},"#I2CEHS")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"ISqlSugarRepository")," \u6ca1\u6709 ",(0,r.kt)("inlineCode",{parentName:"li"},"Getxxx")," \u65b9\u6cd5 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2CJLZ"},"#I2CJLZ")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"cli.ps1")," \u5982\u4f55\u5c06 ",(0,r.kt)("inlineCode",{parentName:"li"},"sql")," \u91cc\u7684\u8868\u5bfc\u51fa\u6210 ",(0,r.kt)("inlineCode",{parentName:"li"},"model")," \u7c7b ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2CSUL"},"#I2CSUL")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u624b\u52a8\u4fee\u6539 ",(0,r.kt)("inlineCode",{parentName:"li"},"Swagger")," \u7ec8\u7ed3\u70b9\u8def\u5f84\u65e0\u6548 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2D608"},"#I2D608")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"DefaultDbContext")," \u4e0d\u80fd\u8bc6\u522b ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2DCZX"},"#I2DCZX")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u5404\u5206\u5c42\u9879\u76ee ",(0,r.kt)("inlineCode",{parentName:"li"},"Startup.cs")," \u652f\u6301 ",(0,r.kt)("inlineCode",{parentName:"li"},"Configuration")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2DDUP"},"#I2DDUP")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Aop")," \u65e0\u6cd5\u62e6\u622a\uff0c\u65e0\u6548 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2DEY8"},"#I2DEY8")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"mysql")," \u6267\u884c ",(0,r.kt)("inlineCode",{parentName:"li"},"Add-Migration")," \u62a5\u9519 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2DSB8"},"#I2DSB8"),"\\"),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Entity")," \u521b\u5efa\u65f6\u95f4\u548c\u662f\u5426\u5220\u9664\u6dfb\u52a0\u9ed8\u8ba4\u503c ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2E04H"},"#I2E04H")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"swagger")," \u4e2d\u591a\u4e2a ",(0,r.kt)("inlineCode",{parentName:"li"},"servers")," \u8bbe\u7f6e ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2E0IF"},"#I2E0IF")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u5168\u5c40\u7b5b\u9009\u5668 \u6ca1\u6709\u6267\u884c ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2E5R4"},"#I2E5R4")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u591a\u6570\u636e\u5e93\u5b9a\u4f4d\u5668\u7591\u95ee ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2E77T"},"#I2E77T")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"cli.ps")," \u9006\u5411\u5de5\u7a0b ",(0,r.kt)("inlineCode",{parentName:"li"},"Mysql")," \u6570\u636e\u5e93\u62a5\u9519 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2E7I5"},"#I2E7I5")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Swagger")," \u5f00\u53d1\u73af\u5883 ",(0,r.kt)("inlineCode",{parentName:"li"},"applicationsettings.json")," \u4e2d\u6587\u4e71\u7801 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2EAG1"},"#I2EAG1")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u589e\u52a0\u6307\u5b9a\u8def\u5f84\u7a0b\u5e8f\u96c6\u6620\u5c04 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2EEO2"},"#I2EEO2")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u52a8\u6001\u7f16\u8bd1 ",(0,r.kt)("inlineCode",{parentName:"li"},"cs")," \u811a\u672c\u6587\u4ef6 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2EH66"},"#I2EH66")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u81ea\u5b9a\u4e49\u4e2d\u95f4\u4ef6\uff0c\u8fd4\u56de\u7684\u9519\u8bef\u6ca1\u6709\u89c4\u8303\u5316\u7ed3\u679c ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2NV8S"},"#I2NV8S")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Swagger")," \u5faa\u73af\u5f15\u7528\u8bbe\u7f6e\u751f\u6210\u6587\u6863\u5c42\u7ea7\u65e0\u6548 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2PLQQ"},"#I2PLQQ")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u914d\u7f6e\u6587\u4ef6\u652f\u6301 ",(0,r.kt)("inlineCode",{parentName:"li"},"yaml")," \u6587\u4ef6\u5417? ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2TJ3N"},"#I2TJ3N")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u4fee\u6539\u6570\u636e\u5e93\u672a ",(0,r.kt)("inlineCode",{parentName:"li"},"mysql")," \u6267\u884c ",(0,r.kt)("inlineCode",{parentName:"li"},"Add-Migration")," \u62a5\u9519 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2VR64"},"#I2VR64")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u591a\u6570\u636e\u5e93\u4f7f\u7528\u5b9a\u4f4d\u5668\u65f6\u62a5\u9519 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2VR8F"},"#I2VR8F")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Migration To Oracle")," \u5f02\u5e38 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2WBYQ"},"#I2WBYQ")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u5f00\u53d1\u65f6\u663e\u793a ",(0,r.kt)("inlineCode",{parentName:"li"},"Swagger"),"\uff0c\u4e0a\u7ebf\u65f6\u5173\u95ed ",(0,r.kt)("inlineCode",{parentName:"li"},"Swagger"),"\uff0c\u8fd9\u9700\u8981\u600e\u4e48\u914d\u7f6e ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2WOYV"},"#I2WOYV")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u517c\u5bb9 Mvc \u590d\u6742\u9a8c\u8bc1\u6ca1\u6709\u8bd5\u9a8c\u6210\u529f ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2X3GV"},"#I2X3GV")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Aop")," \u80fd\u4e0d\u80fd\u652f\u6301\u65e0\u63a5\u53e3\u7684\u7c7b ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2X8AS"},"#I2X8AS")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u5173\u4e8e ",(0,r.kt)("inlineCode",{parentName:"li"},"JWT Token")," \u81ea\u52a8\u5237\u65b0\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2YD4K"},"#I2YD4K")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u80fd\u5426\u589e\u52a0\u4e00\u4e2a\u62d3\u5c55\u7684 ",(0,r.kt)("inlineCode",{parentName:"li"},"Entity"),"\uff0c\u589e\u52a0\u4e00\u4e9b\u62d3\u5c55\u7684\u5c5e\u6027 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2YDKT"},"#I2YDKT")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Furion")," \u65e0\u6cd5\u8fd8\u539f\u5305\uff0c\u4f7f\u7528",(0,r.kt)("inlineCode",{parentName:"li"},"Nuget")," \u4e0b\u8f7d\u548c\u901a\u8fc7\u6700\u65b0\u7684\u7684\u811a\u624b\u67b6\u4e0b\u8f7d\u90fd\u63d0\u793a\u8fd9\u4e2a\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I30446"},"#I30446")),(0,r.kt)("li",{parentName:"ul"},"[\u7b54\u7591]"," \u590d\u6742\u6821\u9a8c\u4e0e\u7279\u6027\u9a8c\u8bc1\u4e0d\u80fd\u5e76\u884c ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I3046U"},"#I3046U")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u4e0d\u505a\u5b9e\u73b0")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," \u5f15\u5165 Webhook \u673a\u5236 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2A3I0"},"#I2A3I0")),(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," \u589e\u52a0 blog \u5b58\u50a8\u670d\u52a1 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2AMBP"},"#I2AMBP")),(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," Blazor Server \u73af\u5883\u4e0b EF \u7684 DbContext \u591a\u7ebf\u7a0b\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2AMD2"},"#I2AMD2")),(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," \u5e0c\u671b\u5b9e\u73b0\u5de5\u4f5c\u5355\u5143\u64cd\u4f5c\u63a5\u53e3\uff08IUnitOfWork\uff09",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2AOR5"},"#I2AOR5")),(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," \u5efa\u8bae\u65b0\u589e ",(0,r.kt)("inlineCode",{parentName:"li"},"string.ToPagedListAsync()")," \u64cd\u4f5c ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2BZ3Z"},"#I2BZ3Z")),(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," \u5efa\u8bae\u65b0\u589e ",(0,r.kt)("inlineCode",{parentName:"li"},"GraphQL"),"\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"OData")," \u529f\u80fd ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2C9EH"},"#I2C9EH")),(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," \u8feb\u5207\u671f\u671b\u652f\u6301 CAP \u5206\u5e03\u5f0f\u4e8b\u52a1 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2CBRF"},"#I2CBRF")),(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," \u5982\u4f55\u8ba9\u67d0\u4e2a\u65b9\u6cd5\u6216\u5b9e\u4f53\u53d8\u5316\u540e\uff0c\u4e0d\u88ab ",(0,r.kt)("inlineCode",{parentName:"li"},"SavingChangesEvent")," \u7b49\u62e6\u622a ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2CEM9"},"#I2CEM9")),(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," \u5efa\u8bae\u65e5\u5fd7\u5c01\u88c5\u589e\u52a0\u66f4\u591a\u62d3\u5c55\uff0c\u6bd4\u5982\uff1a\u81ea\u5b9a\u4e49\u4fdd\u5b58\u65e5\u5fd7\u6587\u4ef6 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2CW8V"},"#I2CW8V")),(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," \u5bf9 ",(0,r.kt)("inlineCode",{parentName:"li"},"SqlSugar")," \u7684\u652f\u6301\uff0c\u589e\u52a0 ",(0,r.kt)("inlineCode",{parentName:"li"},"Nuget")," \u811a\u624b\u67b6 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2D91U"},"#I2D91U")),(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," \u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"li"},"Middleware")," \u5b9e\u73b0\u53cd\u5411\u4ee3\u7406 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2DKM1"},"#I2DKM1")),(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," \u652f\u6301\u914d\u7f6e\u591a\u4e2a ",(0,r.kt)("inlineCode",{parentName:"li"},"Aop")," \u529f\u80fd ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2E6Z2"},"#I2E6Z2")),(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," \u662f\u5426\u8ba1\u5212\u5f00\u53d1\u7c7b\u4f3c\u7f51\u5173\u7684\u529f\u80fd ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2PD1L"},"#I2PD1L")),(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"waring CS8002"),": \u5f15\u7528\u7a0b\u5e8f\u96c6 ",(0,r.kt)("inlineCode",{parentName:"li"},"Furion")," \u6ca1\u6709\u5f3a\u540d\u79f0 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2WDN2"},"#I2WDN2")),(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," Oracle \u6570\u636e\u5e93\u9a71\u52a8\u96c6\u6210 ",(0,r.kt)("inlineCode",{parentName:"li"},"Devart.Data.Oracle.Entity.EFCore")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2XJIU"},"#I2XJIU"))))),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"v170\uff08\u5df2\u53d1\u5e03\uff09"},"v1.7.0\uff08\u5df2\u53d1\u5e03\uff09"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u65b0\u7279\u6027")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Furion.Extras.ObjectMapper.Mapster")," \u62d3\u5c55\u5305 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I29LSJ"},"#I29LSJ")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Furion.Extras.Logging.Serilog")," \u62d3\u5c55\u5305 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2AAN8"},"#I2AAN8")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Furion.Extras.Web.HttpContext")," \u62d3\u5c55\u5305 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I29LSM"},"#I29LSM")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u5185\u7f6e ",(0,r.kt)("inlineCode",{parentName:"li"},"Token")," \u5237\u65b0\u673a\u5236\u652f\u6301 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I29K57"},"#I29K57")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u52a8\u6001\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\uff0c\u652f\u6301\u8fd0\u884c\u65f6\u6267\u884c ",(0,r.kt)("inlineCode",{parentName:"li"},"OnModelCreating")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I28UDT"},"#I28UDT")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u652f\u6301\u4f9d\u8d56\u6ce8\u5165\u6392\u9664\u6307\u5b9a\u63a5\u53e3 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I29693"},"#I29693")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u89c4\u8303\u5316\u7ed3\u679c\u8fd4\u56de\u65f6\u95f4\u6233\u5b57\u6bb5 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I29697"},"#I29697")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u57fa\u7840 ",(0,r.kt)("inlineCode",{parentName:"li"},"CURD")," \u7236\u7c7b\u64cd\u4f5c\u4f8b\u5b50 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I296SR"},"#I296SR")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},'sql.Change("\u5b9a\u4f4d\u5668\u5b8c\u6574\u7c7b\u578b\u540d\u79f0")')," \u652f\u6301 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I29LAB"},"#I29LAB")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"UpdateInclude")," \u548c ",(0,r.kt)("inlineCode",{parentName:"li"},"UpdateExclude")," \u5ffd\u7565\u7a7a\u53c2\u6570\u652f\u6301 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I29VUG"},"#I29VUG")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u5185\u7f6e\u5047\u5220\u9664\u67e5\u8be2\u8fc7\u6ee4\u5668\u652f\u6301 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I29Y2R"},"#I29Y2R")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u5ffd\u7565\u7a7a\u503c\u6392\u9664\u9ed8\u8ba4\u65f6\u95f4\u683c\u5f0f ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I29VUV"},"#I29VUV")),(0,r.kt)("li",{parentName:"ul"},"[\u5347\u7ea7]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"MiniProfiler")," \u7ec4\u4ef6 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I297R9"},"#I297R9")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u7a81\u7834\u6027\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"AppAuthorizeHandler")," \u6388\u6743\u7ba1\u9053\u4e3a\u5f02\u6b65\u5904\u7406 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I29MD9"},"#I29MD9")),(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Swagger")," \u9ed8\u8ba4\u542f\u7528 ",(0,r.kt)("inlineCode",{parentName:"li"},"JWT")," \u6388\u6743\u652f\u6301 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I29LI4"},"#I29LI4")),(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"HttpContextUtilities")," \u540d\u79f0\u6539\u4e3a ",(0,r.kt)("inlineCode",{parentName:"li"},"HttpContextLocal")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I29KQE"},"#I29KQE")),(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"UnifyResultContext")," \u540d\u79f0\u6539\u4e3a ",(0,r.kt)("inlineCode",{parentName:"li"},"UnifyContext")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I29LLZ"},"#I29LLZ")),(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," \u53ea\u6709\u6267\u884c\u8fc1\u79fb\u547d\u4ee4\u624d\u626b\u63cf\u79cd\u5b50\u6570\u636e ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I29E6P"},"#I29E6P")),(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," \u89c4\u8303\u5316\u7ed3\u679c ",(0,r.kt)("inlineCode",{parentName:"li"},"Successed")," \u5c5e\u6027\u540d\u4e3a ",(0,r.kt)("inlineCode",{parentName:"li"},"Succeeded")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I29NMV"},"#I29NMV")),(0,r.kt)("li",{parentName:"ul"},"[\u79fb\u9664]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Mapster")," \u5bf9\u8c61\u7ec4\u4ef6\uff0c\u91c7\u7528\u63d0\u4f9b\u62d3\u5c55\u65b9\u5f0f ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I29D2M"},"#I29D2M")),(0,r.kt)("li",{parentName:"ul"},"[\u79fb\u9664]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"CacheManager")," \u62d3\u5c55\u7c7b ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I29LU1"},"#I29LU1")),(0,r.kt)("li",{parentName:"ul"},"[\u91cd\u6784]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"SaveChanges")," \u62e6\u622a\u5668 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I292LO"},"#I292LO")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u9898\u4fee\u590d")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u672a\u6ce8\u518c\u7684\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u4e5f\u88ab\u5f15\u7528\u5168\u5c40\u67e5\u8be2\u62e6\u622a\u5668 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I29ZXJ"},"#I29ZXJ")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u624b\u52a8\u8fd4\u56de ",(0,r.kt)("inlineCode",{parentName:"li"},"BadObjectResult")," \u6216 ",(0,r.kt)("inlineCode",{parentName:"li"},"ValidationProblemDetails")," \u7ed3\u679c\u7c7b\u578b\u65f6\u89c4\u8303\u5316\u7ed3\u679c\u5931\u6548 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I29ZU9"},"#I29ZU9")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u52a8\u6001 WebApi ",(0,r.kt)("inlineCode",{parentName:"li"},"KeepName"),"\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"KeepVerb"),"\u3001",(0,r.kt)("inlineCode",{parentName:"li"},"SplitCamelCase")," \u65e0\u6548 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I29X90"},"#I29X90")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Sql\u4ee3\u7406")," \u8fd4\u56de ",(0,r.kt)("inlineCode",{parentName:"li"},"\u5143\u7ec4")," \u7c7b\u578b\u51fa\u9519 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I29SMV"},"#I29SMV")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"401\uff0c403")," \u72b6\u6001\u7801\u89c4\u8303\u5316\u8fd4\u56de\u503c\u5c5e\u6027\u53d8\u5927\u5199 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I29M8Y"},"#I29M8Y")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"HttpContext")," \u7a7a\u5f02\u5e38 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I29LU4"},"#I29LU4")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u63a5\u53e3\u65e0\u8fd4\u56de\u503c\u6ca1\u6709\u5e94\u7528\u89c4\u8303\u5316\u7ed3\u679c bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I29GT7"},"#I29GT7")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u524d\u7aef ",(0,r.kt)("inlineCode",{parentName:"li"},"Less")," \u914d\u7f6e\u6587\u4ef6\u5bfc\u81f4\u4e3b\u673a\u542f\u52a8\u5931\u8d25 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I29E7P"},"#I29E7P")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u6267\u884c ",(0,r.kt)("inlineCode",{parentName:"li"},"sql")," \u7ed3\u679c\u8f6c\u6cdb\u578b\u540e\u5c5e\u6027\u91cd\u590d\u8d4b\u503c bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I29BUO"},"#I29BUO")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Swagger")," \u5173\u95ed ",(0,r.kt)("inlineCode",{parentName:"li"},"MiniProfiler")," \u4e4b\u540e ",(0,r.kt)("inlineCode",{parentName:"li"},"\u7ec4\u4e2d\u7ec4")," \u5931\u6548 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I29789"},"#I29789")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u672a\u542f\u7528\u89c4\u8303\u5316\u7ed3\u679c\u65f6\u5f02\u5e38\u8fd4\u56de ",(0,r.kt)("inlineCode",{parentName:"li"},"System.Object")," \u5b57\u7b26 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2969A"},"#I2969A")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u6b63\u6570\u6570\u636e\u9a8c\u8bc1 0 \u4e5f\u9a8c\u8bc1\u901a\u8fc7 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2955T"},"#I2955T")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u975e\u6cdb\u578b\u7c7b\u96c6\u6210\u6cdb\u578b\u63a5\u53e3\u4f9d\u8d56\u6ce8\u5165 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I294YT"},"#I294YT")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Swagger")," \u4e0d\u652f\u6301 ",(0,r.kt)("inlineCode",{parentName:"li"},"new")," \u8986\u76d6\u7236\u7c7b\u7684 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I28Z1A"},"#I28Z1A")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"JsonSerializerUtility")," \u6ca1\u6709\u516c\u5f00 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I28WMI"},"#I28WMI")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"SqlSugar")," \u62d3\u5c55\u67e5\u8be2\u6cdb\u578b\u7c7b\u578b\u6ce8\u518c\u5f02\u5e38 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I28VMT"},"#I28VMT")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Furion Tools")," \u4e0d\u652f\u6301\u751f\u6210\u4e0d\u540c\u547d\u540d\u7a7a\u95f4\u7684\u5b9e\u4f53 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2A175"},"#I2A175")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u5168\u5c40\u62e6\u622a\u5668\u65e0\u6548 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2A7T2"},"#I2A7T2")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u65b0\u589e\u6216\u66f4\u65b0\u5ffd\u7565\u7a7a\u503c\u7a7a\u5f02\u5e38 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2AB6C"},"#I2AB6C")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u5176\u4ed6\u66f4\u6539")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4f18\u5316]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Token")," \u751f\u6210\u52a0\u5bc6\u7b97\u6cd5 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I29KIH"},"#I29KIH")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u6587\u6863\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u65e5\u5fd7\u6587\u6863 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I28Y9D"},"#I28Y9D")),(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," \u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u3001\u5b9e\u4f53\u62e6\u622a\u5668\u3001\u914d\u7f6e\u3001\u4e00\u5206\u949f\u5165\u95e8\u7b49\u7b49\u6587\u6863"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u7b54\u7b54\u7591")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u95ee\u7b54]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Swagger")," \u5982\u4f55\u5b9e\u73b0\u6388\u6743\u8bbf\u95ee ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I294F2"},"#I294F2")),(0,r.kt)("li",{parentName:"ul"},"[\u95ee\u7b54]"," \u5982\u4f55\u5b9e\u73b0\u591a\u4e2a\u6570\u636e\u5e93\u591a\u5bf9\u591a\u5b9e\u4f53\u914d\u7f6e ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I29G6S"},"#I29G6S")),(0,r.kt)("li",{parentName:"ul"},"[\u95ee\u7b54]"," \u52a8\u6001 WebApi \u652f\u6301\u6587\u4ef6\u4e0a\u4f20\u5417 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I29R5E"},"#I29R5E")),(0,r.kt)("li",{parentName:"ul"},"[\u7591\u95ee]"," \u591a\u4e2a\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u65e0\u6cd5\u751f\u6210\u8fc1\u79fb\u4ee3\u7801 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2A6II"},"#I2A6II")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u4e0d\u505a\u5b9e\u73b0")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," \u5b9e\u73b0 ",(0,r.kt)("inlineCode",{parentName:"li"},"BuildChange")," \u4f20\u5165\u8868\u540d ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I292SN"},"#I292SN")),(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," \u6267\u884c\u6570\u636e\u5e93\u64cd\u4f5c\u7ed3\u679c\u4e0d\u652f\u6301\u5c5e\u6027\u5ffd\u7565\u5927\u5c0f\u5199\u8d4b\u503c ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I29DRQ"},"#I29DRQ")),(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," \u5f15\u5165 ",(0,r.kt)("inlineCode",{parentName:"li"},"Webhook")," \u673a\u5236 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2A3I0"},"#I2A3I0"))))),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"v140\uff08\u5df2\u53d1\u5e03\uff09"},"v1.4.0\uff08\u5df2\u53d1\u5e03\uff09"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u65b0\u7279\u6027")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Furion")," \u652f\u6301\u4e8c\u7ea7\u865a\u62df\u76ee\u5f55\u90e8\u7f72\u529f\u80fd ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I28B77"},"#I28B77")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Furion.Template.RazorWithWebApi")," \u811a\u624b\u67b6 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I28QGI"},"#I28QGI")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Furion.Template.BlazorWithWebApi")," \u811a\u624b\u67b6 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I27Z3O"},"#I27Z3O")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"EFCore")," \u65f6\u6001\u67e5\u8be2\u62d3\u5c55 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I28AJ6"},"#I28AJ")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"[AppDbContext(\u8fde\u63a5\u5b57\u7b26\u4e32\uff0c\u6570\u636e\u5e93\u7c7b\u578b)]")," \u914d\u7f6e\u652f\u6301 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I28QTB"},"#I28QTB")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"DateTimeOffset")," \u8f6c ",(0,r.kt)("inlineCode",{parentName:"li"},"DateTime")," \u62d3\u5c55\u65b9\u6cd5 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I27MQA"},"#I27MQA")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"ValidationTypes")," \u9a8c\u8bc1\u6b63\u5219\u8868\u8fbe\u5f0f\u667a\u80fd\u63d0\u793a ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2801V"},"#I2801V")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"ValiationTypes.WordWithNumber")," \u9a8c\u8bc1 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2805A"},"#I2805")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u83b7\u53d6\u5ba2\u6237\u7aef\u548c\u670d\u52a1\u7aef IP \u5730\u5740 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I28QV9"},"#I28QV9")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u7a81\u7834\u6027\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u5347\u7ea7]"," .NET 5.0 \u7248\u672c\u81f3 .NET 5.0.1 \u7248\u672c ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I28QU1"},"#I28QU")),(0,r.kt)("li",{parentName:"ul"},"[\u91cd\u6784]"," \u89c6\u56fe\u5f15\u64ce\u529f\u80fd\uff0c\u4f18\u5316\u4e0d\u89c4\u8303\u547d\u540d\u548c\u65b0\u589e\u5b57\u7b26\u4e32\u6a21\u677f\u7f16\u8bd1 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I28G0S"},"#I28G0S")),(0,r.kt)("li",{parentName:"ul"},"[\u91cd\u6784]"," \u6570\u636e\u5e93\u5b9e\u4f53\u67e5\u627e\u7b97\u6cd5\uff0c\u5e76\u4f18\u5316\u6027\u80fd ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I28QUQ"},"#I28QUQ")),(0,r.kt)("li",{parentName:"ul"},"[\u4f18\u5316]"," \u5e94\u7528\u542f\u52a8\u521d\u59cb\u5316\u6027\u80fd\u548c\u6570\u636e\u5e93\u7b2c\u4e00\u6b21\u81ea\u52a8\u914d\u7f6e ",(0,r.kt)("inlineCode",{parentName:"li"},"DbSet")," \u6027\u80fd"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u9898\u4fee\u590d")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u591a\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u914d\u7f6e\u5b9a\u4f4d\u5668\u540e\u5b9e\u4f53\u65e0\u6cd5\u6b63\u786e\u751f\u6210 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2888L"},"#I2888L")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u591a\u79df\u6237\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u5b9e\u4f53\u751f\u6210 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2891G"},"#I2891G")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u5bf9\u8c61\u9a8c\u8bc1\u5931\u8d25\u63d0\u793a\u6d88\u606f\u6ca1\u6709\u5e94\u7528 ",(0,r.kt)("inlineCode",{parentName:"li"},"JSON")," \u5927\u5c0f\u5199\u914d\u7f6e bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I27UTX"},"#I27UTX")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u4ed3\u50a8 ",(0,r.kt)("inlineCode",{parentName:"li"},"Insert")," \u6216 ",(0,r.kt)("inlineCode",{parentName:"li"},"Update")," \u65b9\u6cd5\u6307\u5b9a ",(0,r.kt)("inlineCode",{parentName:"li"},"ignoreNullValues")," \u65e0\u6548 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I27UN6"},"#I27UN6")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Controller")," \u6d3e\u751f\u7c7b\u5982\u679c\u8d34\u4e86 ",(0,r.kt)("inlineCode",{parentName:"li"},"[Route]")," \u7279\u6027\u540e\u51fa\u73b0\u5728 ",(0,r.kt)("inlineCode",{parentName:"li"},"Swagger")," \u4e2d bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I27TN7"},"#I27TN7")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"SqlScalar")," \u6267\u884c ",(0,r.kt)("inlineCode",{parentName:"li"},"sql")," \u8fd4\u56de ",(0,r.kt)("inlineCode",{parentName:"li"},"Nullable")," \u7c7b\u578b\u51fa\u73b0\u8f6c\u6362\u5931\u8d25 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I27S2N"},"#I27S2N")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"[UnitOfWork]")," \u7279\u6027\u5f02\u5e38 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I27MLM"},"#I27MLM")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"sql")," \u9759\u6001\u6267\u884c\u65b9\u5f0f\u548c ",(0,r.kt)("inlineCode",{parentName:"li"},"sql")," \u9ad8\u7ea7\u4ee3\u7406\u65e0\u6cd5\u76d1\u542c\u6570\u636e\u5e93\u8fde\u63a5\u72b6\u6001 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I27M4F"},"#I27M4F")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u4fee\u590d\u66f4\u6362 Json \u5e8f\u5217\u5316\u5e93\u65e0\u6548 bug\uff0c\u5982\u66ff\u6362\u4e3a ",(0,r.kt)("inlineCode",{parentName:"li"},"Microsoft.AspNetCore.Mvc.NewtonsoftJson")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I27M43"},"#I27M43")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Furion Tools")," \u5de5\u5177\u751f\u6210\u6a21\u578b bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I27XI5"},"#I27XI5")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u8f6f\u5220\u9664\u6ca1\u6709\u751f\u6548 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2804I"},"#I2804I")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Furion Tools")," \u8bc6\u522b\u5e26\u591a\u4e2a ",(0,r.kt)("inlineCode",{parentName:"li"},"\\\\")," \u7684\u8fde\u63a5\u5b57\u7b26\u4e32\u8bc6\u522b bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I280TS"},"#I280TS"),"\uff0c",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/pulls/91"},"#PR91")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Furion Tools")," \u65e0\u6cd5\u53d6\u6d88\u751f\u6210 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2816M"},"#I2816M")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"DateTimeOffset")," \u8f6c\u672c\u5730\u65f6\u95f4\u5dee 8 \u5c0f\u65f6 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I28BA9"},"#I28BA9")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u542f\u7528 ",(0,r.kt)("inlineCode",{parentName:"li"},"bundle js&css")," \u538b\u7f29\u540e\u542f\u52a8\u5f02\u5e38 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I28KRP"},"#I28KR")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"ValidationTypes.Required")," \u65e0\u6548 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/pulls/98"},"#PR98")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u89c4\u8303\u5316\u7ed3\u679c",(0,r.kt)("inlineCode",{parentName:"li"},"OnValidateFailed")," \u53c2\u6570\u540d\u62fc\u5199\u9519\u8bef bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/pulls/93"},"#PR93"),"\uff0c",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/pulls/92"},"#PR92")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u6388\u6743\u7ba1\u9053\u9a8c\u8bc1\u5931\u8d25\u8fd8\u663e\u793a\u7ed3\u679c bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/pulls/89"},"#PR89")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u5176\u4ed6\u66f4\u6539")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u66f4\u65b0]"," README.md \u53cb\u60c5\u8fde\u63a5\u5730\u5740 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/pulls/88"},"#PR88")),(0,r.kt)("li",{parentName:"ul"},"[\u66f4\u65b0]"," \u6a21\u677f\u811a\u624b\u67b6\u6e90\u7801\uff0c\u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"li"},"EFCore Tools")," \u5e93 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/pulls/87"},"#PR87")),(0,r.kt)("li",{parentName:"ul"},"[\u66f4\u65b0]"," README.md Nuget \u56fe\u6807 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/pulls/85"},"#PR85")),(0,r.kt)("li",{parentName:"ul"},"[\u5e9f\u5f03]"," \u5c06 ",(0,r.kt)("inlineCode",{parentName:"li"},"List")," \u8f6c ",(0,r.kt)("inlineCode",{parentName:"li"},"DateTable")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/pulls/97"},"#PR97")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u6587\u6863\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u89c6\u56fe\u5f15\u64ce\u6a21\u677f\u6587\u6863 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I27ZVA"},"#I27ZVA")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"EFCore")," \u65f6\u6001\u67e5\u8be2\u6587\u6863 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I28AJ6"},"#I28AJ"),", ",(0,r.kt)("a",{parentName:"li",href:"https://dotnetchina.gitee.io/furion/docs/dbcontext-hight-query/#91111-%E6%97%B6%E6%80%81%E6%9F%A5%E8%AF%A2"},"DOC")),(0,r.kt)("li",{parentName:"ul"},"[\u66f4\u65b0]"," \u4ed3\u50a8\u6587\u6863\u4e66\u5199\u7eb0\u6f0f bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/pulls/90"},"#PR90")),(0,r.kt)("li",{parentName:"ul"},"[\u66f4\u65b0]"," \u9009\u9879\u6587\u6863\u9519\u8bef bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/pulls/86"},"#PR86")),(0,r.kt)("li",{parentName:"ul"},"[\u66f4\u65b0]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"\u5b9e\u4f53\u6570\u636e\u76d1\u542c\u5668")," \u6587\u6863\u4e66\u5199\u9519\u8bef bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/pulls/83/files"},"#PR83")),(0,r.kt)("li",{parentName:"ul"},"[\u66f4\u65b0]"," \u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u3001\u591a\u6570\u636e\u5e93\u3001\u811a\u624b\u67b6\u7b49\u6587\u6863"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u7b54\u7b54\u7591")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u5efa\u8bae]"," \u5e0c\u671b ",(0,r.kt)("inlineCode",{parentName:"li"},"api")," \u8fd4\u56de\u7684\u503c\u81ea\u52a8\u5c06 null \u8f6c\u4e3a '' \u6216 ","[][#I286IJ]","(",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I286IJ)%EF%BC%8C%E3%80%90%E5%B7%B2%E5%85%B3%E9%97%AD%E3%80%91"},"https://gitee.com/dotnetchina/Furion/issues/I286IJ)\uff0c\u3010\u5df2\u5173\u95ed\u3011")),(0,r.kt)("li",{parentName:"ul"},"[\u5efa\u8bae]"," \u6dfb\u52a0\u7f51\u5173\u529f\u80fd ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I27TP7"},"#I27TP7"),"\uff0c\u3010\u5df2\u5173\u95ed\u3011"),(0,r.kt)("li",{parentName:"ul"},"[\u5efa\u8bae]"," \u65b0\u589e ",(0,r.kt)("inlineCode",{parentName:"li"},"SqlQuery")," \u83b7\u53d6\u5355\u6761\u8bb0\u5f55\u65b9\u6cd5 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I28M1V"},"#I28M1V"),"\uff0c\u3010\u5df2\u5173\u95ed\u3011"),(0,r.kt)("li",{parentName:"ul"},"[\u5efa\u8bae]"," \u5e0c\u671b\u53ef\u4ee5\u63d0\u4f9b\u96c6\u6210 ",(0,r.kt)("inlineCode",{parentName:"li"},"Serilog")," \u4f8b\u5b50 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I282J4"},"#I282J4"),"\uff0c\u3010\u5df2\u5173\u95ed\u3011"),(0,r.kt)("li",{parentName:"ul"},"[\u7591\u95ee]"," \u5982\u4f55\u901a\u8fc7\u7279\u6027\u914d\u7f6e\u552f\u4e00\u7ea6\u675f ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2891L"},"#I2891L"),"\uff0c\u3010\u5df2\u5173\u95ed\u3011"),(0,r.kt)("li",{parentName:"ul"},"[\u7591\u95ee]"," \u600e\u4e48\u8bfb\u53d6 ",(0,r.kt)("inlineCode",{parentName:"li"},"appsettings.json")," \u6570\u7ec4 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I27WUR"},"#I27WU"),"\uff0c\u3010\u5df2\u5173\u95ed\u3011"),(0,r.kt)("li",{parentName:"ul"},"[\u7591\u95ee]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"IRepository")," \u51fa\u73b0\u7a7a\u5f02\u5e38 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I281IE"},"#I281IE"),"\uff0c\u3010\u5df2\u5173\u95ed\u3011"),(0,r.kt)("li",{parentName:"ul"},"[\u7591\u95ee]"," \u89c4\u8303\u5316\u63a5\u53e3\u95ee\u9898\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I28NMZ"},"#I28NMZ"),"\uff0c\u3010\u5df2\u5173\u95ed\u3011"),(0,r.kt)("li",{parentName:"ul"},"[\u7591\u95ee]"," \u7edf\u4e00\u8fd4\u56de\u503c\u6a21\u578b\u4e2d OnResponseStatusCodes \u672a\u6267\u884c ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I28NNL"},"#I28NNL"),"\uff0c\u3010\u5df2\u5173\u95ed\u3011")))),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"v120\uff08\u5df2\u53d1\u5e03\uff09"},"v1.2.0\uff08\u5df2\u53d1\u5e03\uff09"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u65b0\u7279\u6027")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u96ea\u82b1\u7b97\u6cd5 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I26OXG"},"#I26OXG"),", ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/pulls/78"},"#PR78")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"[AppDbContext]")," \u914d\u7f6e\u6570\u636e\u5e93\u63d0\u4f9b\u5668\u652f\u6301 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I27G3T"},"#I27G3T")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u5b9e\u4f53\u8868\u6570\u636e\u66f4\u6539\u76d1\u542c\u63a5\u53e3 ",(0,r.kt)("inlineCode",{parentName:"li"},"IEntityDataChangedListener")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I278DD"},"#I278DD"),", ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I278LQ"},"#I278LQ")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u5168\u5c40\u670d\u52a1\u63a5\u53e3 AOP \u62e6\u622a\u529f\u80fd ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I278CP"},"#I278CP")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u5b9a\u4f4d\u5668\u4ed3\u50a8 ",(0,r.kt)("inlineCode",{parentName:"li"},"IDbRepository")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I276Q3"},"#I276Q3")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u6570\u636e\u5e93\u64cd\u4f5c ",(0,r.kt)("inlineCode",{parentName:"li"},"InsertOrUpdate")," \u652f\u6301\u6392\u9664\u7a7a\u5b57\u7b26\u4e32\u529f\u80fd ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I272OG"},"#I272OG")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u6570\u636e\u5e93\u64cd\u4f5c ",(0,r.kt)("inlineCode",{parentName:"li"},"UpdateInclude")," \u548c ",(0,r.kt)("inlineCode",{parentName:"li"},"UpdateExclude")," \u533f\u540d\u5bf9\u8c61\u652f\u6301 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I271X0"},"#I271X0")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u6570\u636e\u9a8c\u8bc1\u4f20\u5165\u7a7a\u5bf9\u8c61\u8df3\u8fc7\u9a8c\u8bc1\u652f\u6301 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I273R4"},"#I273R4")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u5e94\u7528\u542f\u52a8\u65f6\u652f\u6301\u6392\u9664\u7279\u5b9a\u914d\u7f6e\u6587\u4ef6\u81ea\u52a8\u52a0\u8f7d ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I26U0A"},"#I26U0A")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u5355\u4e2a\u5b9e\u4f53\u8868\u540d\u524d\u7f00\u652f\u6301 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I26LX0"},"#I26LX0")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"MySql")," \u6570\u636e\u5e93\u81ea\u52a8\u914d\u7f6e\u9ed8\u8ba4\u7248\u672c\u53f7 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I26XQ6"},"#I26XQ6")),(0,r.kt)("li",{parentName:"ul"},"[\u4f18\u5316]"," \u6388\u6743\u5904\u7406\u7a0b\u5e8f\u4ee3\u7801"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u7a81\u7834\u6027\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u5b9e\u4f53\u8868\u6570\u636e\u66f4\u6539\u76d1\u542c\u63a5\u53e3 ",(0,r.kt)("inlineCode",{parentName:"li"},"IEntityDataChangedListener")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I278DD"},"#I278DD"),", ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I278LQ"},"#I278LQ")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u5168\u5c40\u670d\u52a1\u63a5\u53e3 AOP \u62e6\u622a\u529f\u80fd ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I278CP"},"#I278CP")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u96ea\u82b1\u7b97\u6cd5 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I26OXG"},"#I26OXG"),", ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/pulls/78"},"#PR78")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u9898\u4fee\u590d")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u89c6\u56fe\u5f15\u64ce\u52a0\u8f7d\u5916\u90e8\u7a0b\u5e8f\u96c6\u51fa\u9519 bug"),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u4f9d\u8d56\u6ce8\u5165\u4ee3\u7406\u63a5\u53e3\u62a5\u7a7a\u5bf9\u8c61\u5f02\u5e38 bug"),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"EFCore")," \u53d6\u6d88\u9644\u52a0\u5b9e\u4f53\u51fa\u9519 bug"),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u6570\u636e\u5e93\u4ed3\u50a8\u5728\u975e Web \u8bf7\u6c42\u4e0b\u51fa\u73b0\u7a7a\u5f02\u5e38 bug"),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u591a\u4e2a\u6388\u6743\u7b56\u7565\u5171\u5b58\u95ee\u9898\u51fa\u73b0\u65e0\u6548 bug"),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u53cb\u597d\u5f02\u5e38 ",(0,r.kt)("inlineCode",{parentName:"li"},"Oop.Oh")," \u4e0d\u652f\u6301\u666e\u901a\u65b9\u6cd5 bug"),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u83b7\u53d6\u591a\u79df\u6237\u5bf9\u8c61\u65f6\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u51fa\u73b0\u4f5c\u7528\u57df\u9a8c\u8bc1\u5931\u8d25 bug"),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u5de5\u4f5c\u5355\u5143\u4e0d\u652f\u6301 ",(0,r.kt)("inlineCode",{parentName:"li"},"Sql\u4ee3\u7406")," \u62e6\u622a bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I27GST"},"#I27GST")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u5176\u4ed6\u66f4\u6539")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u5173\u95ed][#I26O1F]","(",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I26O1F"},"https://gitee.com/dotnetchina/Furion/issues/I26O1F"),"), ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I27B2I"},"#I27B2I"),", ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I27BJ6"},"#I27BJ6"),", ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I27E5Z"},"#I27E5Z"),", ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I27EL4"},"#I27EL4")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u6587\u6863\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e][\u5b9e\u4f53\u6570\u636e\u76d1\u542c\u5668]","(",(0,r.kt)("a",{parentName:"li",href:"https://dotnetchina.gitee.io/furion/docs/dbcontext-entitytrigger"},"https://dotnetchina.gitee.io/furion/docs/dbcontext-entitytrigger"),") \u6587\u6863"),(0,r.kt)("li",{parentName:"ul"},"[\u66f4\u65b0]"," \u4e00\u5206\u949f\u5165\u95e8\u3001\u5e94\u7528\u542f\u52a8\u3001\u5b98\u65b9\u811a\u624b\u67b6\u3001\u6570\u636e\u5e93\u64cd\u4f5c\u6307\u5357\u3001\u5bf9\u8c61\u6620\u5c04\u3001\u89c4\u8303\u5316\u6587\u6863\u3001\u5f02\u5e38\u5904\u7406\u3001\u9274\u6743\u6388\u6743\u6587\u6863")))),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"v110\uff08\u5df2\u53d1\u5e03\uff09"},"v1.1.0\uff08\u5df2\u53d1\u5e03\uff09"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u65b0\u7279\u6027")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Db.GetDbContext()")," \u83b7\u53d6\u9ed8\u8ba4\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u65b9\u6cd5"),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"HttpContextUtility.GetCurrentHttpContext()")," \u83b7\u53d6\u5168\u5c40 ",(0,r.kt)("inlineCode",{parentName:"li"},"HttpContext")," \u4e0a\u4e0b\u6587"),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"App.GetRequiredService<>")," \u89e3\u6790\u670d\u52a1\u65b9\u6cd5"),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"object.GetService<>")," \u5bf9\u8c61\u62d3\u5c55\u65b9\u6cd5"),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u7b56\u7565\u6388\u6743 ",(0,r.kt)("inlineCode",{parentName:"li"},"PolicyPipeline")," \u57fa\u7c7b\u65b9\u6cd5\uff0c\u652f\u6301\u591a\u91cd\u5224\u65ad\u6388\u6743"),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"JWTEncryption.ValidateJwtBearerToken")," \u624b\u52a8\u9a8c\u8bc1\u9759\u6001\u65b9\u6cd5"),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u5168\u5c40\u6570\u636e\u5e93\u4e0a\u4e0b\u6587 ",(0,r.kt)("inlineCode",{parentName:"li"},"InsertOrUpdateIgnoreNullValues")," \u548c ",(0,r.kt)("inlineCode",{parentName:"li"},"EnabledEntityStateTracked")," \u5168\u5c40\u914d\u7f6e"),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Swagger Jwt\u6388\u6743")," \u5168\u5c40\u6388\u6743\u53c2\u6570 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I26GLR"},"#I26GLR")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"InsertOrUpdate")," \u652f\u6301\u81ea\u5b9a\u4e49\u5224\u65ad\u6761\u4ef6\u529f\u80fd ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I269Q1"},"#I269Q1")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u5b57\u7b26\u4e32\u5b57\u6bb5\u5c0f\u5199\u547d\u540d\u652f\u6301 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2695D"},"#I2695D")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u5b57\u7b26\u4e32\u6587\u672c\u5bf9\u6bd4\u529f\u80fd ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I268LE"},"#I268LE")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u5168\u5c40\u5f02\u5e38\u7279\u6027\u6d88\u606f\u529f\u80fd ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2662O"},"#I2662O")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Insert")," \u6216 ",(0,r.kt)("inlineCode",{parentName:"li"},"Update")," \u6570\u636e\u5e93\u5ffd\u7565\u7a7a\u503c\u529f\u80fd ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I264Q4"},"#I264Q4")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u7a81\u7834\u6027\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Fur")," \u9879\u76ee\u540d\u4e3a ",(0,r.kt)("inlineCode",{parentName:"li"},"Furion")),(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Db.GetRequestDbContext<>()")," \u547d\u540d\u4e3a ",(0,r.kt)("inlineCode",{parentName:"li"},"Db.GetDbContext<>()")),(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Db.GetDbContext<>()")," \u547d\u540d\u4e3a ",(0,r.kt)("inlineCode",{parentName:"li"},"Db.GetDuplicateDbContext<>()")),(0,r.kt)("li",{parentName:"ul"},"[\u91cd\u6784]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"App.GetService<>")," \u89e3\u6790\u670d\u52a1\u7684\u5e95\u5c42\u903b\u8f91\uff0c\u5927\u5927\u63d0\u9ad8\u4e86\u89e3\u6790\u670d\u52a1\u7684\u6027\u80fd"),(0,r.kt)("li",{parentName:"ul"},"[\u91cd\u6784]"," \u6388\u6743\u6838\u5fc3\u4ee3\u7801\uff0c\u4fdd\u6301\u548c\u5fae\u8f6f\u4e00\u81f4\u7684\u6388\u6743\u89c4\u8303 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I26DCB"},"#I26DCB")),(0,r.kt)("li",{parentName:"ul"},"[\u79fb\u9664]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"App.GetRequestService<>")," \u65b9\u6cd5"),(0,r.kt)("li",{parentName:"ul"},"[\u79fb\u9664]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"ValidateJwtBearer")," Jwt \u6388\u6743\u65b9\u6cd5\uff0c\u65e0\u9700\u624b\u52a8\u5224\u65ad\u4e86"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u9898\u4fee\u590d")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," Furion \u5b98\u65b9\u811a\u624b\u67b6\u751f\u6210\u540e\u7f16\u8bd1\u5f02\u5e38 bug"),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Tenant")," \u5185\u7f6e\u5c5e\u6027\u4e0d\u662f ",(0,r.kt)("inlineCode",{parentName:"li"},"virtual")," \u4fee\u9970 bug"),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"dockerfile")," \u65b0\u547d\u540d\u6784\u5efa\u5931\u8d25 bug"),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u81ea\u5b9a\u4e49\u89d2\u8272\u6388\u6743\u548c\u591a\u4e2a\u6388\u6743\u5171\u5b58\u51fa\u73b0 403 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I26H1L"},"#I26H1L")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"httpContext.GetEndpoint()")," \u7a7a\u5f02\u5e38 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/pulls/73"},"#PR73")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Oops.Oh")," \u7a7a\u5f02\u5e38\u548c\u4e0d\u652f\u6301\u670d\u52a1\u670d\u52a1\u629b\u5f02\u5e38 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I26EFU"},"#I26EFU"),"\uff0c",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I26GM4"},"#I26GM4")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"cli.ps")," \u751f\u6210\u6587\u4ef6\u7f16\u7801\u4e71\u7801 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I26DVT"},"#I26DVT")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Swagger")," \u6587\u4ef6\u4e0a\u4f20\u6309\u94ae\u4e0d\u663e\u793a ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I26B6U"},"#I26B6U")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u89c4\u8303\u5316\u7ed3\u679c\u6388\u6743\u72b6\u6001\u7801\u5e8f\u5217\u5316\u5927\u5c0f\u5199\u4e0d\u4e00\u81f4\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I26B26"},"#I26B26")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u672a\u542f\u7528\u89c4\u8303\u5316\u7ed3\u679c\u65f6\u4e2d\u6587\u4e71\u7801 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I268T5"},"#I268T5")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"MySql")," \u5f02\u6b65\u5f02\u5e38\u6355\u83b7\u4e0d\u5230 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I265SO"},"#I265SO")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"cli.ps1")," \u63d0\u793a\u627e\u4e0d\u5230\u6570\u636e\u5e93\u8fde\u63a5\u5b57\u7b26\u4e32 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2647U"},"#I2647U")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u5176\u4ed6\u66f4\u6539")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u5176\u4ed6]"," \u4ee3\u7801\u6027\u80fd\u5c0f\u4f18\u5316\u548c\u5c0f\u8c03\u6574"),(0,r.kt)("li",{parentName:"ul"},"[\u5173\u95ed][#I265JV]","(",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I265JV)%EF%BC%8C%5B#I26ERA%5D(https://gitee.com/dotnetchina/Furion/issues/I26ERA)%EF%BC%8C"},"https://gitee.com/dotnetchina/Furion/issues/I265JV)\uff0c[#I26ERA](https://gitee.com/dotnetchina/Furion/issues/I26ERA)\uff0c")," ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I26EVW"},"#I26EVW"),"\uff0c",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I26GHC"},"#I26GHC"),"\uff0c",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I26GJ1"},"#I26GJ1"),"\uff0c",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I26O1F"},"#I26O1F")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u6587\u6863\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u66f4\u65b0]"," \u4e00\u5206\u949f\u5165\u95e8\u3001\u5b89\u5168\u9274\u6743\u3001\u6570\u636e\u5e93\u7b49\u6587\u6863")))),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"v103\uff08\u5df2\u53d1\u5e03\uff09"},"v1.0.3\uff08\u5df2\u53d1\u5e03\uff09"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u65b0\u7279\u6027")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," Mvc \u6a21\u677f\u811a\u624b\u67b6\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"Fur.Template.Mvc")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," WebApi \u6a21\u677f\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"Fur.Template.Api")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," Mvc/WebApi \u6a21\u677f\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"Fur.Template.App")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," Razar Pages \u6a21\u677f\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"Fur.Template.Razor")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," Blazor \u6a21\u677f\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"Fur.Template.Blazor")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u7a81\u7834\u6027\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"PagedList")," \u5230 ",(0,r.kt)("inlineCode",{parentName:"li"},"System.Collections.Generic")," \u547d\u540d\u7a7a\u95f4\u4e0b"),(0,r.kt)("li",{parentName:"ul"},"[\u4f18\u5316]"," \u89e3\u6790\u670d\u52a1\u6027\u80fd\u95ee\u9898\uff0c\u5e95\u5c42\u4ee3\u7801\u5927\u91cf\u4f18\u5316"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u9898\u4fee\u590d")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"ApiSears.ControllerEnd"),"\u4e0d\u8d77\u4f5c\u7528 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I25KH6"},"#I25KH6")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"RemoteRequest")," \u8bf7\u6c42\u5b8c\u6210\u7ed3\u679c\u5e8f\u5217\u5316\u5c5e\u6027\u5927\u5c0f\u5199\u95ee\u9898 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I25I8R"},"#I25I8R")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"HttpContext.GetEndpoinet()")," \u7a7a\u5f02\u5e38 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/pulls/73"},"#PR73")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u5176\u4ed6\u66f4\u6539")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"\u65e0"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u6587\u6863\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u66f4\u65b0]"," \u5165\u95e8\u6587\u6863\u3001\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u6587\u6863\u3001\u591a\u6570\u636e\u5e93\u64cd\u4f5c\u6587\u6863")))),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"v102\uff08\u5df2\u53d1\u5e03\uff09"},"v1.0.2\uff08\u5df2\u53d1\u5e03\uff09"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u65b0\u7279\u6027")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Pomelo.EntityFrameworkCore.MySql")," \u6700\u65b0 .NET 5 \u5305\u914d\u7f6e ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I24ZQK"},"#I24ZQK")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},".AddDateTimeJsonConverter(format)")," \u65f6\u95f4\u683c\u5f0f\u5e8f\u5217\u5316\u914d\u7f6e"),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"DateTime")," \u548c ",(0,r.kt)("inlineCode",{parentName:"li"},"DateTimeOffset")," \u7c7b\u578b\u5e8f\u5217\u5316\u683c\u5f0f\u914d\u7f6e ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I253FI"},"#I253FI")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u7a81\u7834\u6027\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u66f4\u65b0]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Mapster")," \u5305\u81f3 ",(0,r.kt)("inlineCode",{parentName:"li"},"7.0.0")," \u7248"),(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"App.Services")," \u540d\u4e3a ",(0,r.kt)("inlineCode",{parentName:"li"},"App.ServiceProvider")),(0,r.kt)("li",{parentName:"ul"},"[\u79fb\u9664]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"App.ApplicationServices")," \u548c ",(0,r.kt)("inlineCode",{parentName:"li"},"App.GetRequestService<>()")),(0,r.kt)("li",{parentName:"ul"},"[\u79fb\u9664]"," \u975e Web \u4e3b\u673a\u6ce8\u5165\u62d3\u5c55"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u9898\u4fee\u590d")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"services.AddFriendlyException()")," \u7f3a\u5c11\u914d\u7f6e\u6ce8\u5165 bug"),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u6c60\u88ab\u91ca\u653e\u548c\u9ad8\u5e76\u53d1\u4e0b\u5185\u5b58\u6ea2\u51fa bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I2524K"},"#I2524K"),"\uff0c",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I24UMN"},"#I24UMN")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Sql\u4ee3\u7406")," \u8fd4\u56de\u7a7a\u6570\u636e\u65f6\u5f02\u5e38 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I24TCK"},"#I24TCK")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u5de5\u4f5c\u5355\u5143 ",(0,r.kt)("inlineCode",{parentName:"li"},"[UnitOfWork]")," \u591a\u6570\u636e\u5e93\u88ab\u91ca\u653e bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I24Q6W"},"#I24Q6W")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u5176\u4ed6\u66f4\u6539")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"EntityBase")," \u548c ",(0,r.kt)("inlineCode",{parentName:"li"},"Entity")," \u6240\u6709\u5c5e\u6027\u4e3a ",(0,r.kt)("inlineCode",{parentName:"li"},"vitural")," \u4fee\u9970"),(0,r.kt)("li",{parentName:"ul"},"[\u4f18\u5316]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Jwt")," \u8bfb\u53d6\u548c\u89e3\u6790\u6027\u80fd"),(0,r.kt)("li",{parentName:"ul"},"[\u4f18\u5316]"," \u4f18\u5316\u4ee3\u7801\u652f\u6301 C# 9.0 \u6700\u65b0\u8bed\u6cd5"),(0,r.kt)("li",{parentName:"ul"},"[\u4f18\u5316]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"MD5")," \u52a0\u5bc6\u6027\u80fd ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/pulls/71"},"#PR71")),(0,r.kt)("li",{parentName:"ul"},"[\u79fb\u9664]"," \u65e0\u7528\u6216\u672a\u4f7f\u7528\u4ee3\u7801"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u6587\u6863")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u66f4\u65b0]"," \u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u3001\u591a\u6570\u636e\u5e93\u3001\u4e00\u5206\u949f\u5165\u95e8\u6587\u6863")))),(0,r.kt)("hr",null),(0,r.kt)("h2",{id:"v100\uff08\u5df2\u53d1\u5e03\uff09"},"v1.0.0\uff08\u5df2\u53d1\u5e03\uff09"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u65b0\u7279\u6027")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u7f51\u7edc\u8bf7\u6c42 ",(0,r.kt)("inlineCode",{parentName:"li"},"RemoteRequest")," \u7ec4\u4ef6 ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I1YYWD"},"#I1YYWD")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},".AddInjectBase()")," \u6ce8\u5165\uff0c\u53ea\u5305\u542b\u57fa\u7840\u670d\u52a1\u6ce8\u5165"),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u6240\u6709\u670d\u52a1\u90fd\u652f\u6301 ",(0,r.kt)("inlineCode",{parentName:"li"},"IServiceCollection")," \u548c ",(0,r.kt)("inlineCode",{parentName:"li"},"IMvcBuilder")," \u6ce8\u5165"),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," \u629b\u5f02\u5e38\u72b6\u6001\u7801\u8bbe\u7f6e\u529f\u80fd ",(0,r.kt)("inlineCode",{parentName:"li"},"StatusCode")),(0,r.kt)("li",{parentName:"ul"},"[\u65b0\u589e]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Swagger")," \u5e8f\u5217\u5316\u652f\u6301 ",(0,r.kt)("inlineCode",{parentName:"li"},"Pascal")," \u5c5e\u6027\u547d\u540d\u65b9\u5f0f"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u7a81\u7834\u6027\u53d8\u5316")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u66f4\u65b0]"," ",(0,r.kt)("strong",{parentName:"li"},"\u6240\u6709\u7684\u5305\u4e3a ",(0,r.kt)("inlineCode",{parentName:"strong"},".NET 5")," \u6b63\u5f0f\u7248")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u95ee\u9898\u4fee\u590d")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"SqlProxy")," \u4ee3\u7406\u5f02\u6b65\u5904\u7406 bug"),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u6570\u636e\u5e93\u7c7b\u578b ",(0,r.kt)("inlineCode",{parentName:"li"},"Datetime")," \u8f6c ",(0,r.kt)("inlineCode",{parentName:"li"},"DateTimeOffset")," bug"),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u5c5e\u6027\u9996\u5b57\u6bcd\u5927\u5c0f\u5199\u5e8f\u5217\u5316\u4e0d\u5339\u914d\u51fa\u73b0 ",(0,r.kt)("inlineCode",{parentName:"li"},"null")," bug"),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u5bf9\u8c61\u5e8f\u5217\u5316\u4e2d\u6587\u51fa\u73b0\u4e71\u7801 bug"),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u9ed8\u8ba4\u5e8f\u5217\u5316\u914d\u7f6e\u65e0\u6548 bug"),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u6570\u636e\u5e93\u975e\u4f9d\u8d56\u6ce8\u5165\u65b9\u5f0f\u63d0\u4ea4\u65e0\u6548 bug"),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u5e94\u7528\u7a0b\u5e8f\u6c60\u63d0\u4ea4\u6240\u6709 ",(0,r.kt)("inlineCode",{parentName:"li"},"DbContext")," \u7a7a\u5f02\u5e38 bug"),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Saas")," \u591a\u79df\u6237 ",(0,r.kt)("inlineCode",{parentName:"li"},"Tenant")," \u7c7b\u578b\u5b57\u7b26\u4e32\u5c5e\u6027\u5728 ",(0,r.kt)("inlineCode",{parentName:"li"},"MySql")," \u6570\u636e\u5e93\u4e0b\u51fa\u73b0 ",(0,r.kt)("inlineCode",{parentName:"li"},"longtext")," \u7c7b\u578b bug"),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Mvc")," \u81ea\u52a8\u9a8c\u8bc1\u5b57\u7b26\u4e32\u7a7a\u503c bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I24M2T"},"#I24M2T")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u679a\u4e3e\u6ce8\u91ca\u88ab\u8986\u76d6 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I24N6J"},"#I24N6J")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u5ffd\u7565\u89c4\u8303\u5316\u7ed3\u679c\u65e0\u6548 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I24B8P"},"#I24B8P")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Swagger")," \u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"ContentType")," \u4e0d\u662f ",(0,r.kt)("inlineCode",{parentName:"li"},"applicaiton/json")," bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I24F3U"},"#I24F3U")),(0,r.kt)("li",{parentName:"ul"},"[\u4fee\u590d]"," \u5185\u7f6e ",(0,r.kt)("inlineCode",{parentName:"li"},"System.Text.Json")," \u548c ",(0,r.kt)("inlineCode",{parentName:"li"},"Newtonsoft.Json")," \u51b2\u7a81 bug ",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/issues/I24F3U"},"#I24F3U")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u5176\u4ed6\u66f4\u6539")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," ",(0,r.kt)("inlineCode",{parentName:"li"},"Fur")," \u6846\u67b6\u57df\u540d\u4e3a\uff1a",(0,r.kt)("a",{parentName:"li",href:"https://furion.pro"},"https://furion.pro")),(0,r.kt)("li",{parentName:"ul"},"[\u8c03\u6574]"," \u4ed3\u50a8 ",(0,r.kt)("inlineCode",{parentName:"li"},"FromSqlRaw")," \u548c ",(0,r.kt)("inlineCode",{parentName:"li"},"FromSqlInterpolated")," \u63a5\u53e3\u4f4d\u7f6e"),(0,r.kt)("li",{parentName:"ul"},"[\u4f18\u5316]"," \u6570\u636e\u52a0\u89e3\u5bc6\u6027\u80fd\uff0c",(0,r.kt)("a",{parentName:"li",href:"https://gitee.com/dotnetchina/Furion/pulls/70"},"#PR70")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},(0,r.kt)("strong",{parentName:"p"},"\u6587\u6863")),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"[\u66f4\u65b0]"," README.md\u3001\u6846\u67b6\u4ecb\u7ecd\u3001\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u3001\u914d\u7f6e\u9009\u9879\u3001\u591a\u79df\u6237\u3001\u8de8\u57df\u6587\u6863")))))}N.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/4d87bc8d.250b121b.js b/handbook/build/assets/js/4d87bc8d.250b121b.js deleted file mode 100644 index 414684db8b8..00000000000 --- a/handbook/build/assets/js/4d87bc8d.250b121b.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[3021],{3905:function(e,n,r){r.d(n,{Zo:function(){return i},kt:function(){return m}});var t=r(7294);function a(e,n,r){return n in e?Object.defineProperty(e,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[n]=r,e}function u(e,n){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n&&(t=t.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),r.push.apply(r,t)}return r}function s(e){for(var n=1;n=0||(a[r]=e[r]);return a}(e,n);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(e);for(t=0;t=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var d=t.createContext({}),c=function(e){var n=t.useContext(d),r=n;return e&&(r="function"==typeof e?e(n):s(s({},n),e)),r},i=function(e){var n=c(e.components);return t.createElement(d.Provider,{value:n},e.children)},p={inlineCode:"code",wrapper:function(e){var n=e.children;return t.createElement(t.Fragment,{},n)}},l=t.forwardRef((function(e,n){var r=e.components,a=e.mdxType,u=e.originalType,d=e.parentName,i=o(e,["components","mdxType","originalType","parentName"]),l=c(r),m=a,N=l["".concat(d,".").concat(m)]||l[m]||p[m]||u;return r?t.createElement(N,s(s({ref:n},i),{},{components:r})):t.createElement(N,s({ref:n},i))}));function m(e,n){var r=arguments,a=n&&n.mdxType;if("string"==typeof e||a){var u=r.length,s=new Array(u);s[0]=l;var o={};for(var d in n)hasOwnProperty.call(n,d)&&(o[d]=n[d]);o.originalType=e,o.mdxType="string"==typeof e?e:a,s[1]=o;for(var c=2;cu.Name, u=>u.Age);\n\n// \u793a\u4f8b\u4e8c\nrepository.InsertOrUpdateInclude(user, "Age", "Name");\n\n// \u793a\u4f8b\u4e09\nrepository.InsertOrUpdateInclude(user, new[] { u=>u.Name, u=>u.Age});\n\n// \u793a\u4f8b\u56db\nrepository.InsertOrUpdateInclude(user, new[] {"Age", "Name"});\n\n// \u793a\u4f8b\u4e94\nuser.InsertOrUpdateInclude(u=>u.Name, u=>u.Age);\n\n// \u793a\u4f8b\u516d\nuser.InsertOrUpdateInclude("Age", "Name");\n\n// \u793a\u4f8b\u4e03\nuser.InsertOrUpdateInclude(new[] { u=>u.Name, u=>u.Age});\n\n// \u793a\u4f8b\u516b\nuser.InsertOrUpdateInclude(new[] {"Age", "Name"});\n\n// ==== \u5f02\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nawait repository.InsertOrUpdateIncludeAsync(user, u=>u.Name, u=>u.Age);\n\n// \u793a\u4f8b\u4e8c\nawait repository.InsertOrUpdateIncludeAsync(user, "Age", "Name");\n\n// \u793a\u4f8b\u4e09\nawait repository.InsertOrUpdateIncludeAsync(user, new[] { u=>u.Name, u=>u.Age});\n\n// \u793a\u4f8b\u56db\nawait repository.InsertOrUpdateIncludeAsync(user, new[] {"Age", "Name"});\n\n// \u793a\u4f8b\u4e94\nawait user.InsertOrUpdateIncludeAsync(u=>u.Name, u=>u.Age);\n\n// \u793a\u4f8b\u516d\nawait user.InsertOrUpdateIncludeAsync("Age", "Name");\n\n// \u793a\u4f8b\u4e03\nawait user.InsertOrUpdateIncludeAsync(new[] { u=>u.Name, u=>u.Age});\n\n// \u793a\u4f8b\u516b\nawait user.InsertOrUpdateIncludeAsync(new[] {"Age", "Name"});\n')),(0,u.kt)("h2",{id:"974-\u65b0\u589e\u6216\u66f4\u65b0\u90e8\u5206\u5217\uff08\u7acb\u5373\u63d0\u4ea4\uff09"},"9.7.4 \u65b0\u589e\u6216\u66f4\u65b0\u90e8\u5206\u5217\uff08\u7acb\u5373\u63d0\u4ea4\uff09"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre",className:"language-cs"},'// ==== \u540c\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nrepository.InsertOrUpdateIncludeNow(user, u=>u.Name, u=>u.Age);\n\n// \u793a\u4f8b\u4e8c\nrepository.InsertOrUpdateIncludeNow(user, "Age", "Name");\n\n// \u793a\u4f8b\u4e09\nrepository.InsertOrUpdateIncludeNow(user, new[] { u=>u.Name, u=>u.Age});\n\n// \u793a\u4f8b\u56db\nrepository.InsertOrUpdateIncludeNow(user, new[] {"Age", "Name"});\n\n// \u793a\u4f8b\u4e94\nuser.InsertOrUpdateIncludeNow(u=>u.Name, u=>u.Age);\n\n// \u793a\u4f8b\u516d\nuser.InsertOrUpdateIncludeNow("Age", "Name");\n\n// \u793a\u4f8b\u4e03\nuser.InsertOrUpdateIncludeNow(new[] { u=>u.Name, u=>u.Age});\n\n// \u793a\u4f8b\u516b\nuser.InsertOrUpdateIncludeNow(new[] {"Age", "Name"});\n\n// ==== \u5f02\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nawait repository.InsertOrUpdateIncludeNowAsync(user, u=>u.Name, u=>u.Age);\n\n// \u793a\u4f8b\u4e8c\nawait repository.InsertOrUpdateIncludeNowAsync(user, "Age", "Name");\n\n// \u793a\u4f8b\u4e09\nawait repository.InsertOrUpdateIncludeNowAsync(user, new[] { u=>u.Name, u=>u.Age});\n\n// \u793a\u4f8b\u56db\nawait repository.InsertOrUpdateIncludeNowAsync(user, new[] {"Age", "Name"});\n\n// \u793a\u4f8b\u4e94\nawait user.InsertOrUpdateIncludeNowAsync(u=>u.Name, u=>u.Age);\n\n// \u793a\u4f8b\u516d\nawait user.InsertOrUpdateIncludeNowAsync("Age", "Name");\n\n// \u793a\u4f8b\u4e03\nawait user.InsertOrUpdateIncludeNowAsync(new[] { u=>u.Name, u=>u.Age});\n\n// \u793a\u4f8b\u516b\nawait user.InsertOrUpdateIncludeNowAsync(new[] {"Age", "Name"});\n')),(0,u.kt)("h2",{id:"975-\u65b0\u589e\u6216\u66f4\u65b0\u6392\u9664\u7279\u5b9a\u5217\uff08\u4e0d\u7acb\u5373\u63d0\u4ea4\uff09"},"9.7.5 \u65b0\u589e\u6216\u66f4\u65b0\u6392\u9664\u7279\u5b9a\u5217\uff08\u4e0d\u7acb\u5373\u63d0\u4ea4\uff09"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre",className:"language-cs"},'// ==== \u540c\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nrepository.InsertOrUpdateExclude(user, u=>u.Name, u=>u.Age);\n\n// \u793a\u4f8b\u4e8c\nrepository.InsertOrUpdateExclude(user, "Age", "Name");\n\n// \u793a\u4f8b\u4e09\nrepository.InsertOrUpdateExclude(user, new[] { u=>u.Name, u=>u.Age});\n\n// \u793a\u4f8b\u56db\nrepository.InsertOrUpdateExclude(user, new[] {"Age", "Name"});\n\n// \u793a\u4f8b\u4e94\nuser.InsertOrUpdateExclude(u=>u.Name, u=>u.Age);\n\n// \u793a\u4f8b\u516d\nuser.InsertOrUpdateExclude("Age", "Name");\n\n// \u793a\u4f8b\u4e03\nuser.InsertOrUpdateExclude(new[] { u=>u.Name, u=>u.Age});\n\n// \u793a\u4f8b\u516b\nuser.InsertOrUpdateExclude(new[] {"Age", "Name"});\n\n// ==== \u5f02\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nawait repository.InsertOrUpdateExcludeAsync(user, u=>u.Name, u=>u.Age);\n\n// \u793a\u4f8b\u4e8c\nawait repository.InsertOrUpdateExcludeAsync(user, "Age", "Name");\n\n// \u793a\u4f8b\u4e09\nawait repository.InsertOrUpdateExcludeAsync(user, new[] { u=>u.Name, u=>u.Age});\n\n// \u793a\u4f8b\u56db\nawait repository.InsertOrUpdateExcludeAsync(user, new[] {"Age", "Name"});\n\n// \u793a\u4f8b\u4e94\nawait user.InsertOrUpdateExcludeAsync(u=>u.Name, u=>u.Age);\n\n// \u793a\u4f8b\u516d\nawait user.InsertOrUpdateExcludeAsync("Age", "Name");\n\n// \u793a\u4f8b\u4e03\nawait user.InsertOrUpdateExcludeAsync(new[] { u=>u.Name, u=>u.Age});\n\n// \u793a\u4f8b\u516b\nawait user.InsertOrUpdateExcludeAsync(new[] {"Age", "Name"});\n')),(0,u.kt)("h2",{id:"976-\u65b0\u589e\u6216\u66f4\u65b0\u6392\u9664\u7279\u5b9a\u5217\uff08\u7acb\u5373\u63d0\u4ea4\uff09"},"9.7.6 \u65b0\u589e\u6216\u66f4\u65b0\u6392\u9664\u7279\u5b9a\u5217\uff08\u7acb\u5373\u63d0\u4ea4\uff09"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre",className:"language-cs"},'// ==== \u540c\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nrepository.InsertOrUpdateExcludeNow(user, u=>u.Name, u=>u.Age);\n\n// \u793a\u4f8b\u4e8c\nrepository.InsertOrUpdateExcludeNow(user, "Age", "Name");\n\n// \u793a\u4f8b\u4e09\nrepository.InsertOrUpdateExcludeNow(user, new[] { u=>u.Name, u=>u.Age});\n\n// \u793a\u4f8b\u56db\nrepository.InsertOrUpdateExcludeNow(user, new[] {"Age", "Name"});\n\n// \u793a\u4f8b\u4e94\nuser.InsertOrUpdateExcludeNow(u=>u.Name, u=>u.Age);\n\n// \u793a\u4f8b\u516d\nuser.InsertOrUpdateExcludeNow("Age", "Name");\n\n// \u793a\u4f8b\u4e03\nuser.InsertOrUpdateExcludeNow(new[] { u=>u.Name, u=>u.Age});\n\n// \u793a\u4f8b\u516b\nuser.InsertOrUpdateExcludeNow(new[] {"Age", "Name"});\n\n// ==== \u5f02\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nawait repository.InsertOrUpdateExcludeNowAsync(user, u=>u.Name, u=>u.Age);\n\n// \u793a\u4f8b\u4e8c\nawait repository.InsertOrUpdateExcludeNowAsync(user, "Age", "Name");\n\n// \u793a\u4f8b\u4e09\nawait repository.InsertOrUpdateExcludeNowAsync(user, new[] { u=>u.Name, u=>u.Age});\n\n// \u793a\u4f8b\u56db\nawait repository.InsertOrUpdateExcludeNowAsync(user, new[] {"Age", "Name"});\n\n// \u793a\u4f8b\u4e94\nawait user.InsertOrUpdateExcludeNowAsync(u=>u.Name, u=>u.Age);\n\n// \u793a\u4f8b\u516d\nawait user.InsertOrUpdateExcludeNowAsync("Age", "Name");\n\n// \u793a\u4f8b\u4e03\nawait user.InsertOrUpdateExcludeNowAsync(new[] { u=>u.Name, u=>u.Age});\n\n// \u793a\u4f8b\u516b\nawait user.InsertOrUpdateExcludeNowAsync(new[] {"Age", "Name"});\n')),(0,u.kt)("h2",{id:"977-\u53cd\u9988\u4e0e\u5efa\u8bae"},"9.7.7 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,u.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,u.kt)("div",{parentName:"div",className:"admonition-heading"},(0,u.kt)("h5",{parentName:"div"},(0,u.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,u.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,u.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,u.kt)("div",{parentName:"div",className:"admonition-content"},(0,u.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,u.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}l.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/4d87bc8d.b883db96.js b/handbook/build/assets/js/4d87bc8d.b883db96.js new file mode 100644 index 00000000000..5e726fd02da --- /dev/null +++ b/handbook/build/assets/js/4d87bc8d.b883db96.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[3021],{3905:function(e,n,r){r.d(n,{Zo:function(){return i},kt:function(){return m}});var t=r(7294);function a(e,n,r){return n in e?Object.defineProperty(e,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[n]=r,e}function u(e,n){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n&&(t=t.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),r.push.apply(r,t)}return r}function s(e){for(var n=1;n=0||(a[r]=e[r]);return a}(e,n);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(e);for(t=0;t=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var d=t.createContext({}),c=function(e){var n=t.useContext(d),r=n;return e&&(r="function"==typeof e?e(n):s(s({},n),e)),r},i=function(e){var n=c(e.components);return t.createElement(d.Provider,{value:n},e.children)},p={inlineCode:"code",wrapper:function(e){var n=e.children;return t.createElement(t.Fragment,{},n)}},l=t.forwardRef((function(e,n){var r=e.components,a=e.mdxType,u=e.originalType,d=e.parentName,i=o(e,["components","mdxType","originalType","parentName"]),l=c(r),m=a,N=l["".concat(d,".").concat(m)]||l[m]||p[m]||u;return r?t.createElement(N,s(s({ref:n},i),{},{components:r})):t.createElement(N,s({ref:n},i))}));function m(e,n){var r=arguments,a=n&&n.mdxType;if("string"==typeof e||a){var u=r.length,s=new Array(u);s[0]=l;var o={};for(var d in n)hasOwnProperty.call(n,d)&&(o[d]=n[d]);o.originalType=e,o.mdxType="string"==typeof e?e:a,s[1]=o;for(var c=2;cu.Name, u=>u.Age);\n\n// \u793a\u4f8b\u4e8c\nrepository.InsertOrUpdateInclude(user, "Age", "Name");\n\n// \u793a\u4f8b\u4e09\nrepository.InsertOrUpdateInclude(user, new[] { u=>u.Name, u=>u.Age});\n\n// \u793a\u4f8b\u56db\nrepository.InsertOrUpdateInclude(user, new[] {"Age", "Name"});\n\n// \u793a\u4f8b\u4e94\nuser.InsertOrUpdateInclude(u=>u.Name, u=>u.Age);\n\n// \u793a\u4f8b\u516d\nuser.InsertOrUpdateInclude("Age", "Name");\n\n// \u793a\u4f8b\u4e03\nuser.InsertOrUpdateInclude(new[] { u=>u.Name, u=>u.Age});\n\n// \u793a\u4f8b\u516b\nuser.InsertOrUpdateInclude(new[] {"Age", "Name"});\n\n// ==== \u5f02\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nawait repository.InsertOrUpdateIncludeAsync(user, u=>u.Name, u=>u.Age);\n\n// \u793a\u4f8b\u4e8c\nawait repository.InsertOrUpdateIncludeAsync(user, "Age", "Name");\n\n// \u793a\u4f8b\u4e09\nawait repository.InsertOrUpdateIncludeAsync(user, new[] { u=>u.Name, u=>u.Age});\n\n// \u793a\u4f8b\u56db\nawait repository.InsertOrUpdateIncludeAsync(user, new[] {"Age", "Name"});\n\n// \u793a\u4f8b\u4e94\nawait user.InsertOrUpdateIncludeAsync(u=>u.Name, u=>u.Age);\n\n// \u793a\u4f8b\u516d\nawait user.InsertOrUpdateIncludeAsync("Age", "Name");\n\n// \u793a\u4f8b\u4e03\nawait user.InsertOrUpdateIncludeAsync(new[] { u=>u.Name, u=>u.Age});\n\n// \u793a\u4f8b\u516b\nawait user.InsertOrUpdateIncludeAsync(new[] {"Age", "Name"});\n')),(0,u.kt)("h2",{id:"974-\u65b0\u589e\u6216\u66f4\u65b0\u90e8\u5206\u5217\uff08\u7acb\u5373\u63d0\u4ea4\uff09"},"9.7.4 \u65b0\u589e\u6216\u66f4\u65b0\u90e8\u5206\u5217\uff08\u7acb\u5373\u63d0\u4ea4\uff09"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre",className:"language-cs"},'// ==== \u540c\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nrepository.InsertOrUpdateIncludeNow(user, u=>u.Name, u=>u.Age);\n\n// \u793a\u4f8b\u4e8c\nrepository.InsertOrUpdateIncludeNow(user, "Age", "Name");\n\n// \u793a\u4f8b\u4e09\nrepository.InsertOrUpdateIncludeNow(user, new[] { u=>u.Name, u=>u.Age});\n\n// \u793a\u4f8b\u56db\nrepository.InsertOrUpdateIncludeNow(user, new[] {"Age", "Name"});\n\n// \u793a\u4f8b\u4e94\nuser.InsertOrUpdateIncludeNow(u=>u.Name, u=>u.Age);\n\n// \u793a\u4f8b\u516d\nuser.InsertOrUpdateIncludeNow("Age", "Name");\n\n// \u793a\u4f8b\u4e03\nuser.InsertOrUpdateIncludeNow(new[] { u=>u.Name, u=>u.Age});\n\n// \u793a\u4f8b\u516b\nuser.InsertOrUpdateIncludeNow(new[] {"Age", "Name"});\n\n// ==== \u5f02\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nawait repository.InsertOrUpdateIncludeNowAsync(user, u=>u.Name, u=>u.Age);\n\n// \u793a\u4f8b\u4e8c\nawait repository.InsertOrUpdateIncludeNowAsync(user, "Age", "Name");\n\n// \u793a\u4f8b\u4e09\nawait repository.InsertOrUpdateIncludeNowAsync(user, new[] { u=>u.Name, u=>u.Age});\n\n// \u793a\u4f8b\u56db\nawait repository.InsertOrUpdateIncludeNowAsync(user, new[] {"Age", "Name"});\n\n// \u793a\u4f8b\u4e94\nawait user.InsertOrUpdateIncludeNowAsync(u=>u.Name, u=>u.Age);\n\n// \u793a\u4f8b\u516d\nawait user.InsertOrUpdateIncludeNowAsync("Age", "Name");\n\n// \u793a\u4f8b\u4e03\nawait user.InsertOrUpdateIncludeNowAsync(new[] { u=>u.Name, u=>u.Age});\n\n// \u793a\u4f8b\u516b\nawait user.InsertOrUpdateIncludeNowAsync(new[] {"Age", "Name"});\n')),(0,u.kt)("h2",{id:"975-\u65b0\u589e\u6216\u66f4\u65b0\u6392\u9664\u7279\u5b9a\u5217\uff08\u4e0d\u7acb\u5373\u63d0\u4ea4\uff09"},"9.7.5 \u65b0\u589e\u6216\u66f4\u65b0\u6392\u9664\u7279\u5b9a\u5217\uff08\u4e0d\u7acb\u5373\u63d0\u4ea4\uff09"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre",className:"language-cs"},'// ==== \u540c\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nrepository.InsertOrUpdateExclude(user, u=>u.Name, u=>u.Age);\n\n// \u793a\u4f8b\u4e8c\nrepository.InsertOrUpdateExclude(user, "Age", "Name");\n\n// \u793a\u4f8b\u4e09\nrepository.InsertOrUpdateExclude(user, new[] { u=>u.Name, u=>u.Age});\n\n// \u793a\u4f8b\u56db\nrepository.InsertOrUpdateExclude(user, new[] {"Age", "Name"});\n\n// \u793a\u4f8b\u4e94\nuser.InsertOrUpdateExclude(u=>u.Name, u=>u.Age);\n\n// \u793a\u4f8b\u516d\nuser.InsertOrUpdateExclude("Age", "Name");\n\n// \u793a\u4f8b\u4e03\nuser.InsertOrUpdateExclude(new[] { u=>u.Name, u=>u.Age});\n\n// \u793a\u4f8b\u516b\nuser.InsertOrUpdateExclude(new[] {"Age", "Name"});\n\n// ==== \u5f02\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nawait repository.InsertOrUpdateExcludeAsync(user, u=>u.Name, u=>u.Age);\n\n// \u793a\u4f8b\u4e8c\nawait repository.InsertOrUpdateExcludeAsync(user, "Age", "Name");\n\n// \u793a\u4f8b\u4e09\nawait repository.InsertOrUpdateExcludeAsync(user, new[] { u=>u.Name, u=>u.Age});\n\n// \u793a\u4f8b\u56db\nawait repository.InsertOrUpdateExcludeAsync(user, new[] {"Age", "Name"});\n\n// \u793a\u4f8b\u4e94\nawait user.InsertOrUpdateExcludeAsync(u=>u.Name, u=>u.Age);\n\n// \u793a\u4f8b\u516d\nawait user.InsertOrUpdateExcludeAsync("Age", "Name");\n\n// \u793a\u4f8b\u4e03\nawait user.InsertOrUpdateExcludeAsync(new[] { u=>u.Name, u=>u.Age});\n\n// \u793a\u4f8b\u516b\nawait user.InsertOrUpdateExcludeAsync(new[] {"Age", "Name"});\n')),(0,u.kt)("h2",{id:"976-\u65b0\u589e\u6216\u66f4\u65b0\u6392\u9664\u7279\u5b9a\u5217\uff08\u7acb\u5373\u63d0\u4ea4\uff09"},"9.7.6 \u65b0\u589e\u6216\u66f4\u65b0\u6392\u9664\u7279\u5b9a\u5217\uff08\u7acb\u5373\u63d0\u4ea4\uff09"),(0,u.kt)("pre",null,(0,u.kt)("code",{parentName:"pre",className:"language-cs"},'// ==== \u540c\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nrepository.InsertOrUpdateExcludeNow(user, u=>u.Name, u=>u.Age);\n\n// \u793a\u4f8b\u4e8c\nrepository.InsertOrUpdateExcludeNow(user, "Age", "Name");\n\n// \u793a\u4f8b\u4e09\nrepository.InsertOrUpdateExcludeNow(user, new[] { u=>u.Name, u=>u.Age});\n\n// \u793a\u4f8b\u56db\nrepository.InsertOrUpdateExcludeNow(user, new[] {"Age", "Name"});\n\n// \u793a\u4f8b\u4e94\nuser.InsertOrUpdateExcludeNow(u=>u.Name, u=>u.Age);\n\n// \u793a\u4f8b\u516d\nuser.InsertOrUpdateExcludeNow("Age", "Name");\n\n// \u793a\u4f8b\u4e03\nuser.InsertOrUpdateExcludeNow(new[] { u=>u.Name, u=>u.Age});\n\n// \u793a\u4f8b\u516b\nuser.InsertOrUpdateExcludeNow(new[] {"Age", "Name"});\n\n// ==== \u5f02\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nawait repository.InsertOrUpdateExcludeNowAsync(user, u=>u.Name, u=>u.Age);\n\n// \u793a\u4f8b\u4e8c\nawait repository.InsertOrUpdateExcludeNowAsync(user, "Age", "Name");\n\n// \u793a\u4f8b\u4e09\nawait repository.InsertOrUpdateExcludeNowAsync(user, new[] { u=>u.Name, u=>u.Age});\n\n// \u793a\u4f8b\u56db\nawait repository.InsertOrUpdateExcludeNowAsync(user, new[] {"Age", "Name"});\n\n// \u793a\u4f8b\u4e94\nawait user.InsertOrUpdateExcludeNowAsync(u=>u.Name, u=>u.Age);\n\n// \u793a\u4f8b\u516d\nawait user.InsertOrUpdateExcludeNowAsync("Age", "Name");\n\n// \u793a\u4f8b\u4e03\nawait user.InsertOrUpdateExcludeNowAsync(new[] { u=>u.Name, u=>u.Age});\n\n// \u793a\u4f8b\u516b\nawait user.InsertOrUpdateExcludeNowAsync(new[] {"Age", "Name"});\n')),(0,u.kt)("h2",{id:"977-\u53cd\u9988\u4e0e\u5efa\u8bae"},"9.7.7 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,u.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,u.kt)("div",{parentName:"div",className:"admonition-heading"},(0,u.kt)("h5",{parentName:"div"},(0,u.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,u.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,u.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,u.kt)("div",{parentName:"div",className:"admonition-content"},(0,u.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,u.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}l.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/51c11da7.17559564.js b/handbook/build/assets/js/51c11da7.17559564.js new file mode 100644 index 00000000000..2c088cc4bf1 --- /dev/null +++ b/handbook/build/assets/js/51c11da7.17559564.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[8832],{3905:function(e,n,t){t.d(n,{Zo:function(){return d},kt:function(){return u}});var a=t(7294);function r(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function o(e){for(var n=1;n=0||(r[t]=e[t]);return r}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var s=a.createContext({}),c=function(e){var n=a.useContext(s),t=n;return e&&(t="function"==typeof e?e(n):o(o({},n),e)),t},d=function(e){var n=c(e.components);return a.createElement(s.Provider,{value:n},e.children)},p={inlineCode:"code",wrapper:function(e){var n=e.children;return a.createElement(a.Fragment,{},n)}},m=a.forwardRef((function(e,n){var t=e.components,r=e.mdxType,i=e.originalType,s=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),m=c(t),u=r,k=m["".concat(s,".").concat(u)]||m[u]||p[u]||i;return t?a.createElement(k,o(o({ref:n},d),{},{components:t})):a.createElement(k,o({ref:n},d))}));function u(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var i=t.length,o=new Array(i);o[0]=m;var l={};for(var s in n)hasOwnProperty.call(n,s)&&(l[s]=n[s]);l.originalType=e,l.mdxType="string"==typeof e?e:r,o[1]=l;for(var c=2;cSql \u4ee3\u7406",id:"9171-\u5173\u4e8e-sql-\u4ee3\u7406",children:[]},{value:"9.17.2 \u4e86\u89e3 ISqlDispatchProxy",id:"9172-\u4e86\u89e3-isqldispatchproxy",children:[]},{value:"9.17.3 \u5f00\u59cb\u9886\u7565 Sql \u4ee3\u7406",id:"9173-\u5f00\u59cb\u9886\u7565-sql-\u4ee3\u7406",children:[{value:"9.17.3.1 \u6784\u9020\u51fd\u6570\u65b9\u5f0f",id:"91731-\u6784\u9020\u51fd\u6570\u65b9\u5f0f",children:[]},{value:"9.17.3.2 \u65b9\u6cd5\u53c2\u6570\u6ce8\u5165",id:"91732-\u65b9\u6cd5\u53c2\u6570\u6ce8\u5165",children:[]},{value:"9.17.3.3 Db.GetSqlDispatchProxy<ISql>()",id:"91733-dbgetsqldispatchproxyisql",children:[]}]},{value:"9.17.4 Sql \u64cd\u4f5c",id:"9174-sql-\u64cd\u4f5c",children:[{value:"9.17.4.1 \u8fd4\u56de DataTable",id:"91741-\u8fd4\u56de-datatable",children:[]},{value:"9.17.4.2 \u8fd4\u56de List<T>",id:"91742-\u8fd4\u56de-listt",children:[]},{value:"9.17.4.3 \u8fd4\u56de DataSet",id:"91743-\u8fd4\u56de-dataset",children:[]},{value:"9.17.4.4 \u8fd4\u56de Tuple<T1,...T8>",id:"91744-\u8fd4\u56de-tuplet1t8",children:[]},{value:"9.17.4.5 \u8fd4\u56de \u5355\u884c\u5355\u5217",id:"91745-\u8fd4\u56de-\u5355\u884c\u5355\u5217",children:[]},{value:"9.17.4.6 \u65e0\u8fd4\u56de\u503c",id:"91746-\u65e0\u8fd4\u56de\u503c",children:[]}]},{value:"9.17.5 \u5b58\u50a8\u8fc7\u7a0b \u64cd\u4f5c",id:"9175-\u5b58\u50a8\u8fc7\u7a0b-\u64cd\u4f5c",children:[{value:"9.17.5.1 \u8fd4\u56de DataTable",id:"91751-\u8fd4\u56de-datatable",children:[]},{value:"9.17.5.2 \u8fd4\u56de List<T>",id:"91752-\u8fd4\u56de-listt",children:[]},{value:"9.17.5.3 \u8fd4\u56de DataSet",id:"91753-\u8fd4\u56de-dataset",children:[]},{value:"9.17.5.4 \u8fd4\u56de Tuple(T1,...T8)",id:"91754-\u8fd4\u56de-tuplet1t8",children:[]},{value:"9.17.5.5 \u8fd4\u56de \u5355\u884c\u5355\u5217",id:"91755-\u8fd4\u56de-\u5355\u884c\u5355\u5217",children:[]},{value:"9.17.5.6 \u65e0\u8fd4\u56de\u503c",id:"91756-\u65e0\u8fd4\u56de\u503c",children:[]},{value:"9.17.5.7 \u5e26 OUTPUT/RETURN \u8fd4\u56de",id:"91757-\u5e26-outputreturn-\u8fd4\u56de",children:[]}]},{value:"9.17.6 \u51fd\u6570 \u64cd\u4f5c",id:"9176-\u51fd\u6570-\u64cd\u4f5c",children:[]},{value:"9.17.7 Sql \u6a21\u677f\u66ff\u6362",id:"9177-sql-\u6a21\u677f\u66ff\u6362",children:[]},{value:"9.17.8 \u5207\u6362\u6570\u636e\u5e93",id:"9178-\u5207\u6362\u6570\u636e\u5e93",children:[{value:"9.17.8.1 \u5355\u4e2a\u65b9\u6cd5\u65b9\u5f0f",id:"91781-\u5355\u4e2a\u65b9\u6cd5\u65b9\u5f0f",children:[]},{value:"9.17.8.2 \u63a5\u53e3\u65b9\u5f0f",id:"91782-\u63a5\u53e3\u65b9\u5f0f",children:[]},{value:"9.17.8.3 \u8fd0\u884c\u65f6 .Change \u65b9\u6cd5\u5207\u6362",id:"91783-\u8fd0\u884c\u65f6-change-\u65b9\u6cd5\u5207\u6362",children:[]}]},{value:"9.17.9 Sql \u4ee3\u7406\u62e6\u622a",id:"9179-sql-\u4ee3\u7406\u62e6\u622a",children:[]},{value:"9.17.10 \u8bbe\u7f6e\u8d85\u65f6\u65f6\u95f4",id:"91710-\u8bbe\u7f6e\u8d85\u65f6\u65f6\u95f4",children:[]},{value:"9.17.11 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"91711-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],p={toc:d};function m(e){var n=e.components,t=(0,r.Z)(e,o);return(0,i.kt)("wrapper",(0,a.Z)({},p,t,{components:n,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"9171-\u5173\u4e8e-sql-\u4ee3\u7406"},"9.17.1 \u5173\u4e8e ",(0,i.kt)("inlineCode",{parentName:"h2"},"Sql")," \u4ee3\u7406"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Sql")," \u4ee3\u7406\u662f ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\u5bf9 ",(0,i.kt)("inlineCode",{parentName:"p"},"Sql")," \u64cd\u4f5c\u4e00\u4e2a\u975e\u5e38\u91cd\u8981\u7684\u6982\u5ff5\uff0c\u901a\u8fc7\u8fd9\u79cd\u65b9\u5f0f\u53ef\u4ee5\u5927\u5927\u63d0\u9ad8 ",(0,i.kt)("inlineCode",{parentName:"p"},"Sql")," \u4e66\u5199\u6548\u7387\uff0c\u800c\u4e14\u540e\u671f\u6781\u6613\u7ef4\u62a4\u3002"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Sql")," \u4ee3\u7406\u5c5e\u4e8e ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\u4e00\u4e2a\u9ad8\u7ea7\u529f\u80fd\u3002"),(0,i.kt)("h2",{id:"9172-\u4e86\u89e3-isqldispatchproxy"},"9.17.2 \u4e86\u89e3 ",(0,i.kt)("inlineCode",{parentName:"h2"},"ISqlDispatchProxy")),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"ISqlDispatchProxy")," \u63a5\u53e3\u662f ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u5b9e\u73b0",(0,i.kt)("strong",{parentName:"p"},"\u88ab\u4ee3\u7406\u63a5\u53e3"),"\u7684\u552f\u4e00\u4f9d\u8d56\uff0c\u4efb\u4f55\u516c\u5f00\u7684\u63a5\u53e3\u4e00\u65e6\u96c6\u6210\u4e86 ",(0,i.kt)("inlineCode",{parentName:"p"},"ISqlDispatchProxy")," \u63a5\u53e3\uff0c\u90a3\u4e48\u8fd9\u4e2a\u63a5\u53e3\u5c31\u662f",(0,i.kt)("strong",{parentName:"p"},"\u88ab\u6258\u7ba1\u62e6\u622a"),"\u7684 ",(0,i.kt)("inlineCode",{parentName:"p"},"Sql")," \u64cd\u4f5c\u63a5\u53e3\u3002"),(0,i.kt)("p",null,"\u7b80\u5355\u5b9a\u4e49\u4e00\u4e2a ",(0,i.kt)("strong",{parentName:"p"},"Sql \u4ee3\u7406\u63a5\u53e3")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,5}","{1,5}":!0},"using Furion.DatabaseAccessor;\n\nnamespace Furion.Application\n{\n public interface ISql : ISqlDispatchProxy\n {\n }\n}\n")),(0,i.kt)("p",null,"\u4e00\u65e6\u8fd9\u4e2a\u63a5\u53e3\u7ee7\u627f\u4e86 ",(0,i.kt)("inlineCode",{parentName:"p"},"ISqlDispatchProxy"),"\uff0c\u90a3\u4e48\u5b83\u5c31\u4f1a",(0,i.kt)("strong",{parentName:"p"},"\u52a8\u6001\u521b\u5efa\u63a5\u53e3\u5b9e\u4f8b\uff0c\u800c\u4e14\u652f\u6301\u4f9d\u8d56\u6ce8\u5165/\u63a7\u5236\u53cd\u8f6c\u83b7\u53d6\u5b9e\u4f8b"),"\u3002"),(0,i.kt)("h2",{id:"9173-\u5f00\u59cb\u9886\u7565-sql-\u4ee3\u7406"},"9.17.3 \u5f00\u59cb\u9886\u7565 ",(0,i.kt)("inlineCode",{parentName:"h2"},"Sql")," \u4ee3\u7406"),(0,i.kt)("p",null,"\u4e0b\u9762\u6211\u5c06\u901a\u8fc7\u591a\u4e2a\u4f8b\u5b50\u6765\u6f14\u793a ",(0,i.kt)("inlineCode",{parentName:"p"},"Sql")," \u4ee3\u7406\u7684\u7528\u6cd5\uff0c\u4e3a\u4ec0\u4e48\u63a8\u8350\u8fd9\u79cd\u65b9\u5f0f\u64cd\u4f5c ",(0,i.kt)("inlineCode",{parentName:"p"},"Sql"),"\u3002"),(0,i.kt)("p",null,"\u652f\u6301\u5404\u79cd\u65b9\u5f0f\u83b7\u53d6\u5b9e\u4f8b\uff1a"),(0,i.kt)("h3",{id:"91731-\u6784\u9020\u51fd\u6570\u65b9\u5f0f"},"9.17.3.1 \u6784\u9020\u51fd\u6570\u65b9\u5f0f"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1-2}","{1-2}":!0},"private readonly Isql _sql;\npublic FurionService(Isql sql)\n{\n _sql = sql;\n}\n")),(0,i.kt)("h3",{id:"91732-\u65b9\u6cd5\u53c2\u6570\u6ce8\u5165"},"9.17.3.2 \u65b9\u6cd5\u53c2\u6570\u6ce8\u5165"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1}","{1}":!0},"public async Task> GetAll([FromServices] Isql, string keyword)\n{\n}\n")),(0,i.kt)("h3",{id:"91733-dbgetsqldispatchproxyisql"},"9.17.3.3 ",(0,i.kt)("inlineCode",{parentName:"h3"},"Db.GetSqlDispatchProxy()")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"var sql = Db.GetSqlDispatchProxy();\n")),(0,i.kt)("h2",{id:"9174-sql-\u64cd\u4f5c"},"9.17.4 ",(0,i.kt)("inlineCode",{parentName:"h2"},"Sql")," \u64cd\u4f5c"),(0,i.kt)("h3",{id:"91741-\u8fd4\u56de-datatable"},"9.17.4.1 \u8fd4\u56de ",(0,i.kt)("inlineCode",{parentName:"h3"},"DataTable")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{8,12,16,20}","{8,12,16,20}":!0},'using Furion.DatabaseAccessor;\n\nnamespace Furion.Application\n{\n public interface ISql : ISqlDispatchProxy\n {\n // \u6267\u884csql\u5e76\u4f20\u5165\u53c2\u6570\uff0c\u57fa\u5143\u7c7b\u578b\n [SqlExecute("select * from person where id >@id and name like @name")]\n DataTable GetPerson(int id, string name);\n\n // \u6267\u884csql\u5e76\u4f20\u5165\u53c2\u6570\uff0c\u5bf9\u8c61\u7c7b\u578b\n [SqlExecute("select * from person where id >@id and name like @name")]\n DataTable GetPerson(MyParam paras);\n\n // \u6267\u884c\u5b58\u50a8\u8fc7\u7a0b sql\uff0c\u652f\u6301\u8bbe\u7f6e\u53c2\u6570\u7c7b\u578b\n [SqlExecute("exec PROP_NAME @id", CommandType = CommandType.StoredProcedure)]\n DataTable GetPerson(int id);\n\n // \u652f\u6301\u591a\u6570\u636e\u5e93\u64cd\u4f5c\n [SqlExecute("select * from person"), SqlDbContextLocator(typeof(MySqlDbContextLocator))]\n DataTable GetPerson();\n\n // \u5f02\u6b65\u65b9\u5f0f\n [SqlExecute("select * from person"), SqlDbContextLocator(typeof(MySqlDbContextLocator))]\n Task GetPersonAsync();\n }\n}\n')),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u5173\u4e8e\u53c2\u6570")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},(0,i.kt)("inlineCode",{parentName:"p"},"Sql")," \u4ee3\u7406\u53c2\u6570\u67e5\u627e\u89c4\u5219\uff1a"),(0,i.kt)("p",{parentName:"div"},"\u5982\u679c\u65b9\u6cd5\u7684\u53c2\u6570\u662f ",(0,i.kt)("inlineCode",{parentName:"p"},"\u57fa\u5143\u7c7b\u578b"),"\uff08\u6216 ",(0,i.kt)("inlineCode",{parentName:"p"},"string"),"\u3001",(0,i.kt)("inlineCode",{parentName:"p"},"\u503c\u7c7b\u578b"),"\uff09\uff0c\u5219\u81ea\u52a8\u5c06\u8fd9\u4e9b\u7c7b\u578b\u7ec4\u5408\u6210 ",(0,i.kt)("inlineCode",{parentName:"p"},"Dictionary")," \u4f5c\u4e3a ",(0,i.kt)("inlineCode",{parentName:"p"},"Sql")," \u53c2\u6570\u3002\u547d\u4ee4\u53c2\u6570\u53ef\u4f7f\u7528\u65b9\u6cd5\u540c\u540d\u53c2\u6570\u52a0 ",(0,i.kt)("inlineCode",{parentName:"p"},"@")," \u7b26\u53f7\u3002"),(0,i.kt)("p",{parentName:"div"},"\u5982\u679c\u65b9\u6cd5\u7684\u53c2\u6570\u662f ",(0,i.kt)("inlineCode",{parentName:"p"},"\u7c7b\u7c7b\u578b"),"\uff0c\u90a3\u4e48\u81ea\u52a8\u904d\u5386\u8be5\u7c7b\u516c\u5f00\u5b9e\u4f8b\u5c5e\u6027\u751f\u6210 ",(0,i.kt)("inlineCode",{parentName:"p"},"DbParameter[]")," \u6570\u7ec4\uff0c\u6bcf\u4e00\u4e2a\u5c5e\u6027\u540d\u90fd\u5c06\u662f\u547d\u4ee4\u53c2\u6570\uff0c\u4e0d\u533a\u5206\u5927\u5c0f\u5199\uff0c\u5982\uff1a"),(0,i.kt)("pre",{parentName:"div"},(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"public class MyModel\n{\n public int Id {get;set;}\n public string Name {get; set;}\n}\n")),(0,i.kt)("p",{parentName:"div"},"\u90a3\u4e48 ",(0,i.kt)("inlineCode",{parentName:"p"},"sql")," \u8bed\u53e5\u53ef\u4ee5\u76f4\u63a5\u4f7f\u7528\u5c5e\u6027\u540d\u4f5c\u4e3a\u53c2\u6570\uff1a"),(0,i.kt)("pre",{parentName:"div"},(0,i.kt)("code",{parentName:"pre",className:"language-sql"},"select * from person where id > @id and name = @name;\n")))),(0,i.kt)("h3",{id:"91742-\u8fd4\u56de-listt"},"9.17.4.2 \u8fd4\u56de ",(0,i.kt)("inlineCode",{parentName:"h3"},"List")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{8,12,16,20}","{8,12,16,20}":!0},'using Furion.DatabaseAccessor;\n\nnamespace Furion.Application\n{\n public interface ISql : ISqlDispatchProxy\n {\n // \u6267\u884csql\u5e76\u4f20\u5165\u53c2\u6570\uff0c\u57fa\u5143\u7c7b\u578b\n [SqlExecute("select * from person where id >@id and name like @name")]\n List GetPerson(int id, string name);\n\n // \u6267\u884csql\u5e76\u4f20\u5165\u53c2\u6570\uff0c\u5bf9\u8c61\u7c7b\u578b\n [SqlExecute("select * from person where id >@id and name like @name")]\n List GetPerson(MyParam paras);\n\n // \u6267\u884c\u5b58\u50a8\u8fc7\u7a0b sql\uff0c\u652f\u6301\u8bbe\u7f6e\u53c2\u6570\u7c7b\u578b\n [SqlExecute("exec PROP_NAME @id", CommandType = CommandType.StoredProcedure)]\n List GetPerson(int id);\n\n // \u652f\u6301\u591a\u6570\u636e\u5e93\u64cd\u4f5c\n [SqlExecute("select * from person"), SqlDbContextLocator(typeof(MySqlDbContextLocator)]\n List GetPerson();\n\n // \u5f02\u6b65\u65b9\u5f0f\n [SqlExecute("select * from person"), SqlDbContextLocator(typeof(MySqlDbContextLocator)]\n Task> GetPersonAsync();\n }\n}\n')),(0,i.kt)("h3",{id:"91743-\u8fd4\u56de-dataset"},"9.17.4.3 \u8fd4\u56de ",(0,i.kt)("inlineCode",{parentName:"h3"},"DataSet")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{8-10,14-16,20-22,26-28,32-35}","{8-10,14-16,20-22,26-28,32-35}":!0},'using Furion.DatabaseAccessor;\n\nnamespace Furion.Application\n{\n public interface ISql : ISqlDispatchProxy\n {\n // \u6267\u884csql\u5e76\u4f20\u5165\u53c2\u6570\uff0c\u57fa\u5143\u7c7b\u578b\n [SqlExecute(@"\n select * from person where id >@id and name like @name;\n select top 10 * from student where Id >@id;")]\n DataSet GetData(int id, string name);\n\n // \u6267\u884csql\u5e76\u4f20\u5165\u53c2\u6570\uff0c\u5bf9\u8c61\u7c7b\u578b\n [SqlExecute(@"\n select * from person where id >@id and name like @name;\n select top 10 * from student where Id >@id;")]\n DataSet GetData(MyParam paras);\n\n // \u6267\u884c\u5b58\u50a8\u8fc7\u7a0b sql\uff0c\u652f\u6301\u8bbe\u7f6e\u53c2\u6570\u7c7b\u578b\n [SqlExecute(@"\n exec PROP_NAME @id;\n select * from person;", CommandType = CommandType.StoredProcedure)]\n DataSet GetData(int id);\n\n // \u652f\u6301\u591a\u6570\u636e\u5e93\u64cd\u4f5c\n [SqlExecute(@"\n select * from person;\n select * from student;"), SqlDbContextLocator(typeof(MySqlDbContextLocator)]\n DataSet GetData();\n\n // \u5f02\u6b65\u65b9\u5f0f\n [SqlExecute(@"\n select * from person;\n select * from student;\n select 1;"), SqlDbContextLocator(typeof(MySqlDbContextLocator)]\n Task GetDataAsync());\n }\n}\n')),(0,i.kt)("h3",{id:"91744-\u8fd4\u56de-tuplet1t8"},"9.17.4.4 \u8fd4\u56de ",(0,i.kt)("inlineCode",{parentName:"h3"},"Tuple")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{8-10,14-16,20-22,26-28,32-35}","{8-10,14-16,20-22,26-28,32-35}":!0},'using Furion.DatabaseAccessor;\n\nnamespace Furion.Application\n{\n public interface ISql : ISqlDispatchProxy\n {\n // \u6267\u884csql\u5e76\u4f20\u5165\u53c2\u6570\uff0c\u57fa\u5143\u7c7b\u578b\n [SqlExecute(@"\n select * from person where id >@id and name like @name;\n select top 10 * from student where Id >@id;")]\n (List,List) GetData(int id, string name);\n\n // \u6267\u884csql\u5e76\u4f20\u5165\u53c2\u6570\uff0c\u5bf9\u8c61\u7c7b\u578b\n [SqlExecute(@"\n select * from person where id >@id and name like @name;\n select top 10 * from student where Id >@id;")]\n (List,List) GetData(MyParam paras);\n\n // \u6267\u884c\u5b58\u50a8\u8fc7\u7a0b sql\uff0c\u652f\u6301\u8bbe\u7f6e\u53c2\u6570\u7c7b\u578b\n [SqlExecute(@"\n exec PROP_NAME @id;\n select * from person;", CommandType = CommandType.StoredProcedure)]\n (List,List) GetData(int id);\n\n // \u652f\u6301\u591a\u6570\u636e\u5e93\u64cd\u4f5c\n [SqlExecute(@"\n select * from person;\n select * from student;"), SqlDbContextLocator(typeof(MySqlDbContextLocator)]\n (List,List) GetData();\n\n // \u5f02\u6b65\u65b9\u5f0f\n [SqlExecute(@"\n select * from person;\n select * from student;\n select 1;"), SqlDbContextLocator(typeof(MySqlDbContextLocator)]\n Task<(List,List,List)> GetDataAsync();\n }\n}\n')),(0,i.kt)("h3",{id:"91745-\u8fd4\u56de-\u5355\u884c\u5355\u5217"},"9.17.4.5 \u8fd4\u56de ",(0,i.kt)("inlineCode",{parentName:"h3"},"\u5355\u884c\u5355\u5217")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{7,10,13}","{7,10,13}":!0},'using Furion.DatabaseAccessor;\n\nnamespace Furion.Application\n{\n public interface ISql : ISqlDispatchProxy\n {\n [SqlExecute("select Name from person where id = @id")]\n string GetValue(int id);\n\n [SqlExecute("select age from person where id = @id")]\n int GetValue(int id);\n\n [SqlExecute("select Name from person where id = @id")]\n Task GetValueAsync(int id);\n }\n}\n')),(0,i.kt)("h3",{id:"91746-\u65e0\u8fd4\u56de\u503c"},"9.17.4.6 \u65e0\u8fd4\u56de\u503c"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{7,10,13}","{7,10,13}":!0},'using Furion.DatabaseAccessor;\n\nnamespace Furion.Application\n{\n public interface ISql : ISqlDispatchProxy\n {\n [SqlExecute("insert into person(Name,Age) values(@name,@age)")]\n void Insert(MyParam dto);\n\n [SqlExecute("delete from person where id = @id")]\n void Delete(int id);\n\n [SqlExecute("update person set name=@name where id=@id")]\n void Update(int id, string name);\n }\n}\n')),(0,i.kt)("h2",{id:"9175-\u5b58\u50a8\u8fc7\u7a0b-\u64cd\u4f5c"},"9.17.5 ",(0,i.kt)("inlineCode",{parentName:"h2"},"\u5b58\u50a8\u8fc7\u7a0b")," \u64cd\u4f5c"),(0,i.kt)("h3",{id:"91751-\u8fd4\u56de-datatable"},"9.17.5.1 \u8fd4\u56de ",(0,i.kt)("inlineCode",{parentName:"h3"},"DataTable")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{7,10,13}","{7,10,13}":!0},'using Furion.DatabaseAccessor;\n\nnamespace Furion.Application\n{\n public interface ISql : ISqlDispatchProxy\n {\n [SqlProcedure("PROC_Name")]\n DataTable GetPersons(MyParam dto);\n\n [SqlProcedure("PROC_Name")]\n DataTable GetPersons(int id);\n\n [SqlProcedure("PROC_Name")]\n DataTable GetPersons(int id, string name);\n }\n}\n')),(0,i.kt)("h3",{id:"91752-\u8fd4\u56de-listt"},"9.17.5.2 \u8fd4\u56de ",(0,i.kt)("inlineCode",{parentName:"h3"},"List")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{7,10,13}","{7,10,13}":!0},'using Furion.DatabaseAccessor;\n\nnamespace Furion.Application\n{\n public interface ISql : ISqlDispatchProxy\n {\n [SqlProcedure("PROC_Name")]\n List GetPersons(MyParam dto);\n\n [SqlProcedure("PROC_Name")]\n List GetPersons(int id);\n\n [SqlProcedure("PROC_Name")]\n List GetPersons(int id, string name);\n }\n}\n')),(0,i.kt)("h3",{id:"91753-\u8fd4\u56de-dataset"},"9.17.5.3 \u8fd4\u56de ",(0,i.kt)("inlineCode",{parentName:"h3"},"DataSet")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{7,10,13}","{7,10,13}":!0},'using Furion.DatabaseAccessor;\n\nnamespace Furion.Application\n{\n public interface ISql : ISqlDispatchProxy\n {\n [SqlProcedure("PROC_Name")]\n DataSet GetData(MyParam dto);\n\n [SqlProcedure("PROC_Name")]\n DataSet GetData(int id);\n\n [SqlProcedure("PROC_Name")]\n DataSet GetData(int id, string name);\n }\n}\n')),(0,i.kt)("h3",{id:"91754-\u8fd4\u56de-tuplet1t8"},"9.17.5.4 \u8fd4\u56de ",(0,i.kt)("inlineCode",{parentName:"h3"},"Tuple(T1,...T8)")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{7,10,13}","{7,10,13}":!0},'using Furion.DatabaseAccessor;\n\nnamespace Furion.Application\n{\n public interface ISql : ISqlDispatchProxy\n {\n [SqlProcedure("PROC_Name")]\n (List, List) GetData(MyParam dto);\n\n [SqlProcedure("PROC_Name")]\n (List, List) GetData(int id);\n\n [SqlProcedure("PROC_Name")]\n (List, List, Person, int) GetData(int id, string name);\n }\n}\n')),(0,i.kt)("h3",{id:"91755-\u8fd4\u56de-\u5355\u884c\u5355\u5217"},"9.17.5.5 \u8fd4\u56de ",(0,i.kt)("inlineCode",{parentName:"h3"},"\u5355\u884c\u5355\u5217")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{7,10,13}","{7,10,13}":!0},'using Furion.DatabaseAccessor;\n\nnamespace Furion.Application\n{\n public interface ISql : ISqlDispatchProxy\n {\n [SqlProcedure("PROC_Name")]\n object GetValue(MyParam dto);\n\n [SqlProcedure("PROC_Name")]\n string GetValue(int id);\n\n [SqlProcedure("PROC_Name")]\n int GetValue(int id, string name);\n }\n}\n')),(0,i.kt)("h3",{id:"91756-\u65e0\u8fd4\u56de\u503c"},"9.17.5.6 \u65e0\u8fd4\u56de\u503c"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{7,10,13}","{7,10,13}":!0},'using Furion.DatabaseAccessor;\n\nnamespace Furion.Application\n{\n public interface ISql : ISqlDispatchProxy\n {\n [SqlProcedure("PROC_Name")]\n void GetValue(MyParam dto);\n\n [SqlProcedure("PROC_Name")]\n void GetValue(int id);\n\n [SqlProcedure("PROC_Name")]\n void GetValue(int id, string name);\n }\n}\n')),(0,i.kt)("h3",{id:"91757-\u5e26-outputreturn-\u8fd4\u56de"},"9.17.5.7 \u5e26 ",(0,i.kt)("inlineCode",{parentName:"h3"},"OUTPUT/RETURN")," \u8fd4\u56de"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{7,10,13}","{7,10,13}":!0},'using Furion.DatabaseAccessor;\n\nnamespace Furion.Application\n{\n public interface ISql : ISqlDispatchProxy\n {\n [SqlProcedure("PROC_Name")]\n ProcedureOutputResult GetOutput(ProcOutputModel pams);\n\n [SqlProcedure("PROC_Name")]\n ProcedureOutputResult GetOutput(ProcOutputModel pams);\n\n [SqlProcedure("PROC_Name")]\n ProcedureOutputResult<(List, List)> GetOutput(ProcOutputModel pams);\n }\n}\n')),(0,i.kt)("h2",{id:"9176-\u51fd\u6570-\u64cd\u4f5c"},"9.17.6 ",(0,i.kt)("inlineCode",{parentName:"h2"},"\u51fd\u6570")," \u64cd\u4f5c"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{7,10}","{7,10}":!0},'using Furion.DatabaseAccessor;\n\nnamespace Furion.Application\n{\n public interface ISql : ISqlDispatchProxy\n {\n [SqlFunction("FN_Name")] // \u6807\u91cf\u51fd\u6570\n string GetValue(MyParam dto);\n\n [SqlProcedure("FN_Name")] // \u8868\u503c\u51fd\u6570\n List GetPersons(int id);\n }\n}\n')),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u8865\u5145\u8bf4\u660e")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},(0,i.kt)("inlineCode",{parentName:"p"},"Sql")," \u4ee3\u7406\u4f1a\u81ea\u52a8\u5224\u65ad\u8fd4\u56de\u503c\u7136\u540e\u81ea\u52a8\u6267\u884c\u7279\u5b9a\u51fd\u6570\u7c7b\u578b\u3002"))),(0,i.kt)("h2",{id:"9177-sql-\u6a21\u677f\u66ff\u6362"},"9.17.7 ",(0,i.kt)("inlineCode",{parentName:"h2"},"Sql")," \u6a21\u677f\u66ff\u6362"),(0,i.kt)("p",null,"\u5728\u6700\u65b0\u7684 ",(0,i.kt)("inlineCode",{parentName:"p"},"1.18.3")," \u7248\u672c\u4e2d\u63d0\u4f9b\u4e86\u6a21\u677f\u66ff\u6362\u529f\u80fd\uff0c\u5982\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'[SqlExecute("select * from person where id > {id} and name like {name} and age > {user.Age}")]\nList GetPerson(int id, string name, User user);\n')),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u4e24\u8005\u533a\u522b")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u6a21\u677f\u5b57\u7b26\u4e32\u6709\u522b\u4e8e\u547d\u4ee4\u53c2\u6570\u66ff\u6362\uff0c\u6a21\u677f\u5b57\u7b26\u4e32\u91c7\u7528 ",(0,i.kt)("inlineCode",{parentName:"p"},"{ }")," \u65b9\u5f0f\uff0c\u8fd0\u884c\u65f6\u76f4\u63a5\u66ff\u6362\u4e3a\u5b9e\u9645\u7684\u5185\u5bb9\uff0c ",(0,i.kt)("inlineCode",{parentName:"p"},"@")," \u800c\u662f\u8f6c\u6362\u6210 ",(0,i.kt)("inlineCode",{parentName:"p"},"DbParameter")," \u53c2\u6570\u3002"))),(0,i.kt)("h2",{id:"9178-\u5207\u6362\u6570\u636e\u5e93"},"9.17.8 \u5207\u6362\u6570\u636e\u5e93"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Sql")," \u4ee3\u7406\u65b9\u5f0f\u7684\u652f\u6301\u4e09\u79cd\u5207\u6362\u6570\u636e\u5e93\u7684\u65b9\u5f0f\uff1a"),(0,i.kt)("h3",{id:"91781-\u5355\u4e2a\u65b9\u6cd5\u65b9\u5f0f"},"9.17.8.1 \u5355\u4e2a\u65b9\u6cd5\u65b9\u5f0f"),(0,i.kt)("p",null,"\u4e3b\u8981\u901a\u8fc7\u5728\u65b9\u6cd5\u4e0a\u8d34 ",(0,i.kt)("inlineCode",{parentName:"p"},"[SqlDbContextLocator]")," \u7279\u6027"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1}","{1}":!0},'[SqlExecute("select * from person"), SqlDbContextLocator(typeof(MySqlDbContextLocator)]\nList GetPerson();\n')),(0,i.kt)("h3",{id:"91782-\u63a5\u53e3\u65b9\u5f0f"},"9.17.8.2 \u63a5\u53e3\u65b9\u5f0f"),(0,i.kt)("p",null,"\u5728\u63a5\u53e3\u4e2d\u8d34 ",(0,i.kt)("inlineCode",{parentName:"p"},"[SqlDbContextLocator]")," \u7279\u6027\uff0c\u6b64\u65b9\u5f0f\u4e0b\uff0c\u63a5\u53e3\u6240\u6709\u65b9\u6cd5\u5c06\u91c7\u7528\u6307\u5b9a\u7684\u6570\u636e\u5e93\u6267\u884c\u3002"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1}","{1}":!0},'[SqlDbContextLocator(typeof(MySqlDbContextLocator)]\npublic interface ISql : ISqlDispatchProxy\n{\n [SqlFunction("FN_Name")] // \u6807\u91cf\u51fd\u6570\n string GetValue(MyParam dto);\n\n [SqlProcedure("FN_Name")] // \u8868\u503c\u51fd\u6570\n List GetPersons(int id);\n}\n')),(0,i.kt)("h3",{id:"91783-\u8fd0\u884c\u65f6-change-\u65b9\u6cd5\u5207\u6362"},"9.17.8.3 \u8fd0\u884c\u65f6 ",(0,i.kt)("inlineCode",{parentName:"h3"},".Change")," \u65b9\u6cd5\u5207\u6362"),(0,i.kt)("p",null,"\u9664\u4e86\u4ee5\u4e0a\u4e24\u79cd ",(0,i.kt)("inlineCode",{parentName:"p"},"\u9759\u6001")," \u914d\u7f6e\u65b9\u5f0f\uff0c",(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u8fd8\u63d0\u4f9b ",(0,i.kt)("inlineCode",{parentName:"p"},"\u52a8\u6001")," \u65b9\u5f0f\uff0c\u5982\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{2,6}","{2,6}":!0},"// \u5c06 sql \u4ee3\u7406\u6570\u636e\u5e93\u5207\u6362\u6210\u7279\u5b9a\u6570\u636e\u5e93\n_sql.Change();\n_sql.GetPerson();\n\n// \u591a\u6b21\u5207\u6362\n_sql.Change();\n_sql.GetPerson();\n\n// \u8fd8\u652f\u6301\u91cd\u7f6e\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u5b9a\u4f4d\u5668\u4e3a\u521d\u59cb\u72b6\u6001\n_sql.ResetIt();\n_sql.GetPerson();\n")),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u5173\u4e8e\u4f18\u5148\u7ea7\u95ee\u9898")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},(0,i.kt)("inlineCode",{parentName:"p"},".Change<>")," \u4f18\u5148\u7ea7\u5927\u4e8e ",(0,i.kt)("inlineCode",{parentName:"p"},"\u65b9\u6cd5\u8d34 [SqlDbContextLocator]")," \u5927\u4e8e ",(0,i.kt)("inlineCode",{parentName:"p"},"\u63a5\u53e3\u8d34 [SqlDbContextLocator]"),"\u3002"),(0,i.kt)("p",{parentName:"div"},"\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c\u4e0d\u6307\u5b9a ",(0,i.kt)("inlineCode",{parentName:"p"},"DbContextLocator")," \u5c5e\u6027\uff0c\u5219\u4e3a ",(0,i.kt)("inlineCode",{parentName:"p"},"MasterDbContextLocator"),"\u3002"))),(0,i.kt)("h2",{id:"9179-sql-\u4ee3\u7406\u62e6\u622a"},"9.17.9 ",(0,i.kt)("inlineCode",{parentName:"h2"},"Sql")," \u4ee3\u7406\u62e6\u622a"),(0,i.kt)("p",null,"\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion v2.13 +")," \u7248\u672c\u65b0\u589e\u4e86 ",(0,i.kt)("inlineCode",{parentName:"p"},"Sql")," \u4ee3\u7406\u62e6\u622a\u529f\u80fd\uff0c\u53ef\u4ee5\u7be1\u6539\u7279\u5b9a\u65b9\u6cd5\u6216\u6240\u6709\u4ee3\u7406\u65b9\u6cd5\u5b9e\u9645\u6267\u884c\u7684\u53c2\u6570\uff0c\u5982 ",(0,i.kt)("inlineCode",{parentName:"p"},"sql\u8bed\u53e5\u3001\u53c2\u6570\u3001\u6267\u884c\u5bf9\u8c61\u7b49\u7b49"),"\u3002"),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"\u82e5\u5728 ",(0,i.kt)("inlineCode",{parentName:"strong"},"Sql")," \u4ee3\u7406\u4e2d\u5b9e\u73b0\u62e6\u622a\u529f\u80fd\uff0c\u5fc5\u987b\u6ee1\u8db3\u4e24\u4e2a\u6761\u4ef6"),"\uff1a"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"\u65b9\u6cd5\u5fc5\u987b\u662f ",(0,i.kt)("inlineCode",{parentName:"li"},"static")," \u9759\u6001\u65b9\u6cd5\u4e14\u8fd4\u56de\u503c\u4e3a ",(0,i.kt)("inlineCode",{parentName:"li"},"void")," \u4e14\u53ea\u6709\u4e00\u4e2a ",(0,i.kt)("inlineCode",{parentName:"li"},"SqlProxyMethod")," \u53c2\u6570"),(0,i.kt)("li",{parentName:"ul"},"\u65b9\u6cd5\u5fc5\u987b\u8d34 ",(0,i.kt)("inlineCode",{parentName:"li"},"[Interceptor]")," \u7279\u6027")),(0,i.kt)("p",null,"\u5982\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{9,13-17,20-24,26-30,32-36}","{9,13-17,20-24,26-30,32-36}":!0},'public interface ISql : ISqlDispatchProxy\n{\n [SqlFunction("FN_Name")]\n string GetValue(MyParam dto);\n\n [SqlProcedure("FN_Name")]\n List GetPersons(int id);\n\n [SqlExecute("select name from person", InterceptorId = "GetPersonsByName")] // \u901a\u8fc7 InterceptorId \u89e3\u51b3\u65b9\u6cd5\u540d\u91cd\u8f7d\u95ee\u9898\n Task> GetPersons();\n\n // \u53ea\u62e6\u622a GetValue \u65b9\u6cd5\n [Interceptor(nameof(GetValue))]\n static void \u62e6\u622a1(SqlProxyMethod method)\n {\n method.FinalSql += " where id > 1"; // \u7be1\u6539\u6700\u7ec8\u6267\u884c sql\n }\n\n // \u62e6\u622a GetValue \u548c GetPersons \u65b9\u6cd5\n [Interceptor(nameof(GetValue), nameof(GetPersons))]\n static void \u62e6\u622a2(SqlProxyMethod method)\n {\n method.FinalSql += " where id > 1"; // \u7be1\u6539\u6700\u7ec8\u6267\u884c sql\n }\n\n [Interceptor("GetPersonsByName")] // \u5bf9\u5e94\u4e0a\u9762\u7684 InterceptorId \u914d\u7f6e\n static void \u89e3\u51b3\u65b9\u6cd5\u540d\u91cd\u8f7d\u62e6\u622a(SqlProxyMethod method)\n {\n // \u3002\u3002\u3002\n }\n\n [Interceptor]\n static void \u5168\u5c40\u62e6\u622a(SqlProxyMethod method)\n {\n // \u8fd9\u91cc\u4f1a\u62e6\u622a\u6240\u6709\u7684\u65b9\u6cd5\n }\n}\n')),(0,i.kt)("h2",{id:"91710-\u8bbe\u7f6e\u8d85\u65f6\u65f6\u95f4"},"9.17.10 \u8bbe\u7f6e\u8d85\u65f6\u65f6\u95f4"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'[Timeout(1000)]\npublic interface ISql : ISqlDispatchProxy\n{\n [SqlFunction("FN_Name"), Timeout(500)] // \u5355\u4f4d\u79d2\n string GetValue(MyParam dto);\n}\n')),(0,i.kt)("h2",{id:"91711-\u53cd\u9988\u4e0e\u5efa\u8bae"},"9.17.11 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,i.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/51c11da7.51a935bf.js b/handbook/build/assets/js/51c11da7.51a935bf.js deleted file mode 100644 index 08b5bb65f12..00000000000 --- a/handbook/build/assets/js/51c11da7.51a935bf.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[8832],{3905:function(e,n,t){t.d(n,{Zo:function(){return d},kt:function(){return u}});var a=t(7294);function r(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function o(e){for(var n=1;n=0||(r[t]=e[t]);return r}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var s=a.createContext({}),c=function(e){var n=a.useContext(s),t=n;return e&&(t="function"==typeof e?e(n):o(o({},n),e)),t},d=function(e){var n=c(e.components);return a.createElement(s.Provider,{value:n},e.children)},p={inlineCode:"code",wrapper:function(e){var n=e.children;return a.createElement(a.Fragment,{},n)}},m=a.forwardRef((function(e,n){var t=e.components,r=e.mdxType,i=e.originalType,s=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),m=c(t),u=r,k=m["".concat(s,".").concat(u)]||m[u]||p[u]||i;return t?a.createElement(k,o(o({ref:n},d),{},{components:t})):a.createElement(k,o({ref:n},d))}));function u(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var i=t.length,o=new Array(i);o[0]=m;var l={};for(var s in n)hasOwnProperty.call(n,s)&&(l[s]=n[s]);l.originalType=e,l.mdxType="string"==typeof e?e:r,o[1]=l;for(var c=2;cSql \u4ee3\u7406",id:"9171-\u5173\u4e8e-sql-\u4ee3\u7406",children:[]},{value:"9.17.2 \u4e86\u89e3 ISqlDispatchProxy",id:"9172-\u4e86\u89e3-isqldispatchproxy",children:[]},{value:"9.17.3 \u5f00\u59cb\u9886\u7565 Sql \u4ee3\u7406",id:"9173-\u5f00\u59cb\u9886\u7565-sql-\u4ee3\u7406",children:[{value:"9.17.3.1 \u6784\u9020\u51fd\u6570\u65b9\u5f0f",id:"91731-\u6784\u9020\u51fd\u6570\u65b9\u5f0f",children:[]},{value:"9.17.3.2 \u65b9\u6cd5\u53c2\u6570\u6ce8\u5165",id:"91732-\u65b9\u6cd5\u53c2\u6570\u6ce8\u5165",children:[]},{value:"9.17.3.3 Db.GetSqlDispatchProxy<ISql>()",id:"91733-dbgetsqldispatchproxyisql",children:[]}]},{value:"9.17.4 Sql \u64cd\u4f5c",id:"9174-sql-\u64cd\u4f5c",children:[{value:"9.17.4.1 \u8fd4\u56de DataTable",id:"91741-\u8fd4\u56de-datatable",children:[]},{value:"9.17.4.2 \u8fd4\u56de List<T>",id:"91742-\u8fd4\u56de-listt",children:[]},{value:"9.17.4.3 \u8fd4\u56de DataSet",id:"91743-\u8fd4\u56de-dataset",children:[]},{value:"9.17.4.4 \u8fd4\u56de Tuple<T1,...T8>",id:"91744-\u8fd4\u56de-tuplet1t8",children:[]},{value:"9.17.4.5 \u8fd4\u56de \u5355\u884c\u5355\u5217",id:"91745-\u8fd4\u56de-\u5355\u884c\u5355\u5217",children:[]},{value:"9.17.4.6 \u65e0\u8fd4\u56de\u503c",id:"91746-\u65e0\u8fd4\u56de\u503c",children:[]}]},{value:"9.17.5 \u5b58\u50a8\u8fc7\u7a0b \u64cd\u4f5c",id:"9175-\u5b58\u50a8\u8fc7\u7a0b-\u64cd\u4f5c",children:[{value:"9.17.5.1 \u8fd4\u56de DataTable",id:"91751-\u8fd4\u56de-datatable",children:[]},{value:"9.17.5.2 \u8fd4\u56de List<T>",id:"91752-\u8fd4\u56de-listt",children:[]},{value:"9.17.5.3 \u8fd4\u56de DataSet",id:"91753-\u8fd4\u56de-dataset",children:[]},{value:"9.17.5.4 \u8fd4\u56de Tuple(T1,...T8)",id:"91754-\u8fd4\u56de-tuplet1t8",children:[]},{value:"9.17.5.5 \u8fd4\u56de \u5355\u884c\u5355\u5217",id:"91755-\u8fd4\u56de-\u5355\u884c\u5355\u5217",children:[]},{value:"9.17.5.6 \u65e0\u8fd4\u56de\u503c",id:"91756-\u65e0\u8fd4\u56de\u503c",children:[]},{value:"9.17.5.7 \u5e26 OUTPUT/RETURN \u8fd4\u56de",id:"91757-\u5e26-outputreturn-\u8fd4\u56de",children:[]}]},{value:"9.17.6 \u51fd\u6570 \u64cd\u4f5c",id:"9176-\u51fd\u6570-\u64cd\u4f5c",children:[]},{value:"9.17.7 Sql \u6a21\u677f\u66ff\u6362",id:"9177-sql-\u6a21\u677f\u66ff\u6362",children:[]},{value:"9.17.8 \u5207\u6362\u6570\u636e\u5e93",id:"9178-\u5207\u6362\u6570\u636e\u5e93",children:[{value:"9.17.8.1 \u5355\u4e2a\u65b9\u6cd5\u65b9\u5f0f",id:"91781-\u5355\u4e2a\u65b9\u6cd5\u65b9\u5f0f",children:[]},{value:"9.17.8.2 \u63a5\u53e3\u65b9\u5f0f",id:"91782-\u63a5\u53e3\u65b9\u5f0f",children:[]},{value:"9.17.8.3 \u8fd0\u884c\u65f6 .Change \u65b9\u6cd5\u5207\u6362",id:"91783-\u8fd0\u884c\u65f6-change-\u65b9\u6cd5\u5207\u6362",children:[]}]},{value:"9.17.9 Sql \u4ee3\u7406\u62e6\u622a",id:"9179-sql-\u4ee3\u7406\u62e6\u622a",children:[]},{value:"9.17.10 \u8bbe\u7f6e\u8d85\u65f6\u65f6\u95f4",id:"91710-\u8bbe\u7f6e\u8d85\u65f6\u65f6\u95f4",children:[]},{value:"9.17.11 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"91711-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],p={toc:d};function m(e){var n=e.components,t=(0,r.Z)(e,o);return(0,i.kt)("wrapper",(0,a.Z)({},p,t,{components:n,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"9171-\u5173\u4e8e-sql-\u4ee3\u7406"},"9.17.1 \u5173\u4e8e ",(0,i.kt)("inlineCode",{parentName:"h2"},"Sql")," \u4ee3\u7406"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Sql")," \u4ee3\u7406\u662f ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\u5bf9 ",(0,i.kt)("inlineCode",{parentName:"p"},"Sql")," \u64cd\u4f5c\u4e00\u4e2a\u975e\u5e38\u91cd\u8981\u7684\u6982\u5ff5\uff0c\u901a\u8fc7\u8fd9\u79cd\u65b9\u5f0f\u53ef\u4ee5\u5927\u5927\u63d0\u9ad8 ",(0,i.kt)("inlineCode",{parentName:"p"},"Sql")," \u4e66\u5199\u6548\u7387\uff0c\u800c\u4e14\u540e\u671f\u6781\u6613\u7ef4\u62a4\u3002"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Sql")," \u4ee3\u7406\u5c5e\u4e8e ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\u4e00\u4e2a\u9ad8\u7ea7\u529f\u80fd\u3002"),(0,i.kt)("h2",{id:"9172-\u4e86\u89e3-isqldispatchproxy"},"9.17.2 \u4e86\u89e3 ",(0,i.kt)("inlineCode",{parentName:"h2"},"ISqlDispatchProxy")),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"ISqlDispatchProxy")," \u63a5\u53e3\u662f ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u5b9e\u73b0",(0,i.kt)("strong",{parentName:"p"},"\u88ab\u4ee3\u7406\u63a5\u53e3"),"\u7684\u552f\u4e00\u4f9d\u8d56\uff0c\u4efb\u4f55\u516c\u5f00\u7684\u63a5\u53e3\u4e00\u65e6\u96c6\u6210\u4e86 ",(0,i.kt)("inlineCode",{parentName:"p"},"ISqlDispatchProxy")," \u63a5\u53e3\uff0c\u90a3\u4e48\u8fd9\u4e2a\u63a5\u53e3\u5c31\u662f",(0,i.kt)("strong",{parentName:"p"},"\u88ab\u6258\u7ba1\u62e6\u622a"),"\u7684 ",(0,i.kt)("inlineCode",{parentName:"p"},"Sql")," \u64cd\u4f5c\u63a5\u53e3\u3002"),(0,i.kt)("p",null,"\u7b80\u5355\u5b9a\u4e49\u4e00\u4e2a ",(0,i.kt)("strong",{parentName:"p"},"Sql \u4ee3\u7406\u63a5\u53e3")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,5}","{1,5}":!0},"using Furion.DatabaseAccessor;\n\nnamespace Furion.Application\n{\n public interface ISql : ISqlDispatchProxy\n {\n }\n}\n")),(0,i.kt)("p",null,"\u4e00\u65e6\u8fd9\u4e2a\u63a5\u53e3\u7ee7\u627f\u4e86 ",(0,i.kt)("inlineCode",{parentName:"p"},"ISqlDispatchProxy"),"\uff0c\u90a3\u4e48\u5b83\u5c31\u4f1a",(0,i.kt)("strong",{parentName:"p"},"\u52a8\u6001\u521b\u5efa\u63a5\u53e3\u5b9e\u4f8b\uff0c\u800c\u4e14\u652f\u6301\u4f9d\u8d56\u6ce8\u5165/\u63a7\u5236\u53cd\u8f6c\u83b7\u53d6\u5b9e\u4f8b"),"\u3002"),(0,i.kt)("h2",{id:"9173-\u5f00\u59cb\u9886\u7565-sql-\u4ee3\u7406"},"9.17.3 \u5f00\u59cb\u9886\u7565 ",(0,i.kt)("inlineCode",{parentName:"h2"},"Sql")," \u4ee3\u7406"),(0,i.kt)("p",null,"\u4e0b\u9762\u6211\u5c06\u901a\u8fc7\u591a\u4e2a\u4f8b\u5b50\u6765\u6f14\u793a ",(0,i.kt)("inlineCode",{parentName:"p"},"Sql")," \u4ee3\u7406\u7684\u7528\u6cd5\uff0c\u4e3a\u4ec0\u4e48\u63a8\u8350\u8fd9\u79cd\u65b9\u5f0f\u64cd\u4f5c ",(0,i.kt)("inlineCode",{parentName:"p"},"Sql"),"\u3002"),(0,i.kt)("p",null,"\u652f\u6301\u5404\u79cd\u65b9\u5f0f\u83b7\u53d6\u5b9e\u4f8b\uff1a"),(0,i.kt)("h3",{id:"91731-\u6784\u9020\u51fd\u6570\u65b9\u5f0f"},"9.17.3.1 \u6784\u9020\u51fd\u6570\u65b9\u5f0f"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1-2}","{1-2}":!0},"private readonly Isql _sql;\npublic FurionService(Isql sql)\n{\n _sql = sql;\n}\n")),(0,i.kt)("h3",{id:"91732-\u65b9\u6cd5\u53c2\u6570\u6ce8\u5165"},"9.17.3.2 \u65b9\u6cd5\u53c2\u6570\u6ce8\u5165"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1}","{1}":!0},"public async Task> GetAll([FromServices] Isql, string keyword)\n{\n}\n")),(0,i.kt)("h3",{id:"91733-dbgetsqldispatchproxyisql"},"9.17.3.3 ",(0,i.kt)("inlineCode",{parentName:"h3"},"Db.GetSqlDispatchProxy()")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"var sql = Db.GetSqlDispatchProxy();\n")),(0,i.kt)("h2",{id:"9174-sql-\u64cd\u4f5c"},"9.17.4 ",(0,i.kt)("inlineCode",{parentName:"h2"},"Sql")," \u64cd\u4f5c"),(0,i.kt)("h3",{id:"91741-\u8fd4\u56de-datatable"},"9.17.4.1 \u8fd4\u56de ",(0,i.kt)("inlineCode",{parentName:"h3"},"DataTable")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{8,12,16,20}","{8,12,16,20}":!0},'using Furion.DatabaseAccessor;\n\nnamespace Furion.Application\n{\n public interface ISql : ISqlDispatchProxy\n {\n // \u6267\u884csql\u5e76\u4f20\u5165\u53c2\u6570\uff0c\u57fa\u5143\u7c7b\u578b\n [SqlExecute("select * from person where id >@id and name like @name")]\n DataTable GetPerson(int id, string name);\n\n // \u6267\u884csql\u5e76\u4f20\u5165\u53c2\u6570\uff0c\u5bf9\u8c61\u7c7b\u578b\n [SqlExecute("select * from person where id >@id and name like @name")]\n DataTable GetPerson(MyParam paras);\n\n // \u6267\u884c\u5b58\u50a8\u8fc7\u7a0b sql\uff0c\u652f\u6301\u8bbe\u7f6e\u53c2\u6570\u7c7b\u578b\n [SqlExecute("exec PROP_NAME @id", CommandType = CommandType.StoredProcedure)]\n DataTable GetPerson(int id);\n\n // \u652f\u6301\u591a\u6570\u636e\u5e93\u64cd\u4f5c\n [SqlExecute("select * from person"), SqlDbContextLocator(typeof(MySqlDbContextLocator))]\n DataTable GetPerson();\n\n // \u5f02\u6b65\u65b9\u5f0f\n [SqlExecute("select * from person"), SqlDbContextLocator(typeof(MySqlDbContextLocator))]\n Task GetPersonAsync();\n }\n}\n')),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u5173\u4e8e\u53c2\u6570")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},(0,i.kt)("inlineCode",{parentName:"p"},"Sql")," \u4ee3\u7406\u53c2\u6570\u67e5\u627e\u89c4\u5219\uff1a"),(0,i.kt)("p",{parentName:"div"},"\u5982\u679c\u65b9\u6cd5\u7684\u53c2\u6570\u662f ",(0,i.kt)("inlineCode",{parentName:"p"},"\u57fa\u5143\u7c7b\u578b"),"\uff08\u6216 ",(0,i.kt)("inlineCode",{parentName:"p"},"string"),"\u3001",(0,i.kt)("inlineCode",{parentName:"p"},"\u503c\u7c7b\u578b"),"\uff09\uff0c\u5219\u81ea\u52a8\u5c06\u8fd9\u4e9b\u7c7b\u578b\u7ec4\u5408\u6210 ",(0,i.kt)("inlineCode",{parentName:"p"},"Dictionary")," \u4f5c\u4e3a ",(0,i.kt)("inlineCode",{parentName:"p"},"Sql")," \u53c2\u6570\u3002\u547d\u4ee4\u53c2\u6570\u53ef\u4f7f\u7528\u65b9\u6cd5\u540c\u540d\u53c2\u6570\u52a0 ",(0,i.kt)("inlineCode",{parentName:"p"},"@")," \u7b26\u53f7\u3002"),(0,i.kt)("p",{parentName:"div"},"\u5982\u679c\u65b9\u6cd5\u7684\u53c2\u6570\u662f ",(0,i.kt)("inlineCode",{parentName:"p"},"\u7c7b\u7c7b\u578b"),"\uff0c\u90a3\u4e48\u81ea\u52a8\u904d\u5386\u8be5\u7c7b\u516c\u5f00\u5b9e\u4f8b\u5c5e\u6027\u751f\u6210 ",(0,i.kt)("inlineCode",{parentName:"p"},"DbParameter[]")," \u6570\u7ec4\uff0c\u6bcf\u4e00\u4e2a\u5c5e\u6027\u540d\u90fd\u5c06\u662f\u547d\u4ee4\u53c2\u6570\uff0c\u4e0d\u533a\u5206\u5927\u5c0f\u5199\uff0c\u5982\uff1a"),(0,i.kt)("pre",{parentName:"div"},(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"public class MyModel\n{\n public int Id {get;set;}\n public string Name {get; set;}\n}\n")),(0,i.kt)("p",{parentName:"div"},"\u90a3\u4e48 ",(0,i.kt)("inlineCode",{parentName:"p"},"sql")," \u8bed\u53e5\u53ef\u4ee5\u76f4\u63a5\u4f7f\u7528\u5c5e\u6027\u540d\u4f5c\u4e3a\u53c2\u6570\uff1a"),(0,i.kt)("pre",{parentName:"div"},(0,i.kt)("code",{parentName:"pre",className:"language-sql"},"select * from person where id > @id and name = @name;\n")))),(0,i.kt)("h3",{id:"91742-\u8fd4\u56de-listt"},"9.17.4.2 \u8fd4\u56de ",(0,i.kt)("inlineCode",{parentName:"h3"},"List")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{8,12,16,20}","{8,12,16,20}":!0},'using Furion.DatabaseAccessor;\n\nnamespace Furion.Application\n{\n public interface ISql : ISqlDispatchProxy\n {\n // \u6267\u884csql\u5e76\u4f20\u5165\u53c2\u6570\uff0c\u57fa\u5143\u7c7b\u578b\n [SqlExecute("select * from person where id >@id and name like @name")]\n List GetPerson(int id, string name);\n\n // \u6267\u884csql\u5e76\u4f20\u5165\u53c2\u6570\uff0c\u5bf9\u8c61\u7c7b\u578b\n [SqlExecute("select * from person where id >@id and name like @name")]\n List GetPerson(MyParam paras);\n\n // \u6267\u884c\u5b58\u50a8\u8fc7\u7a0b sql\uff0c\u652f\u6301\u8bbe\u7f6e\u53c2\u6570\u7c7b\u578b\n [SqlExecute("exec PROP_NAME @id", CommandType = CommandType.StoredProcedure)]\n List GetPerson(int id);\n\n // \u652f\u6301\u591a\u6570\u636e\u5e93\u64cd\u4f5c\n [SqlExecute("select * from person"), SqlDbContextLocator(typeof(MySqlDbContextLocator)]\n List GetPerson();\n\n // \u5f02\u6b65\u65b9\u5f0f\n [SqlExecute("select * from person"), SqlDbContextLocator(typeof(MySqlDbContextLocator)]\n Task> GetPersonAsync();\n }\n}\n')),(0,i.kt)("h3",{id:"91743-\u8fd4\u56de-dataset"},"9.17.4.3 \u8fd4\u56de ",(0,i.kt)("inlineCode",{parentName:"h3"},"DataSet")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{8-10,14-16,20-22,26-28,32-35}","{8-10,14-16,20-22,26-28,32-35}":!0},'using Furion.DatabaseAccessor;\n\nnamespace Furion.Application\n{\n public interface ISql : ISqlDispatchProxy\n {\n // \u6267\u884csql\u5e76\u4f20\u5165\u53c2\u6570\uff0c\u57fa\u5143\u7c7b\u578b\n [SqlExecute(@"\n select * from person where id >@id and name like @name;\n select top 10 * from student where Id >@id;")]\n DataSet GetData(int id, string name);\n\n // \u6267\u884csql\u5e76\u4f20\u5165\u53c2\u6570\uff0c\u5bf9\u8c61\u7c7b\u578b\n [SqlExecute(@"\n select * from person where id >@id and name like @name;\n select top 10 * from student where Id >@id;")]\n DataSet GetData(MyParam paras);\n\n // \u6267\u884c\u5b58\u50a8\u8fc7\u7a0b sql\uff0c\u652f\u6301\u8bbe\u7f6e\u53c2\u6570\u7c7b\u578b\n [SqlExecute(@"\n exec PROP_NAME @id;\n select * from person;", CommandType = CommandType.StoredProcedure)]\n DataSet GetData(int id);\n\n // \u652f\u6301\u591a\u6570\u636e\u5e93\u64cd\u4f5c\n [SqlExecute(@"\n select * from person;\n select * from student;"), SqlDbContextLocator(typeof(MySqlDbContextLocator)]\n DataSet GetData();\n\n // \u5f02\u6b65\u65b9\u5f0f\n [SqlExecute(@"\n select * from person;\n select * from student;\n select 1;"), SqlDbContextLocator(typeof(MySqlDbContextLocator)]\n Task GetDataAsync());\n }\n}\n')),(0,i.kt)("h3",{id:"91744-\u8fd4\u56de-tuplet1t8"},"9.17.4.4 \u8fd4\u56de ",(0,i.kt)("inlineCode",{parentName:"h3"},"Tuple")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{8-10,14-16,20-22,26-28,32-35}","{8-10,14-16,20-22,26-28,32-35}":!0},'using Furion.DatabaseAccessor;\n\nnamespace Furion.Application\n{\n public interface ISql : ISqlDispatchProxy\n {\n // \u6267\u884csql\u5e76\u4f20\u5165\u53c2\u6570\uff0c\u57fa\u5143\u7c7b\u578b\n [SqlExecute(@"\n select * from person where id >@id and name like @name;\n select top 10 * from student where Id >@id;")]\n (List,List) GetData(int id, string name);\n\n // \u6267\u884csql\u5e76\u4f20\u5165\u53c2\u6570\uff0c\u5bf9\u8c61\u7c7b\u578b\n [SqlExecute(@"\n select * from person where id >@id and name like @name;\n select top 10 * from student where Id >@id;")]\n (List,List) GetData(MyParam paras);\n\n // \u6267\u884c\u5b58\u50a8\u8fc7\u7a0b sql\uff0c\u652f\u6301\u8bbe\u7f6e\u53c2\u6570\u7c7b\u578b\n [SqlExecute(@"\n exec PROP_NAME @id;\n select * from person;", CommandType = CommandType.StoredProcedure)]\n (List,List) GetData(int id);\n\n // \u652f\u6301\u591a\u6570\u636e\u5e93\u64cd\u4f5c\n [SqlExecute(@"\n select * from person;\n select * from student;"), SqlDbContextLocator(typeof(MySqlDbContextLocator)]\n (List,List) GetData();\n\n // \u5f02\u6b65\u65b9\u5f0f\n [SqlExecute(@"\n select * from person;\n select * from student;\n select 1;"), SqlDbContextLocator(typeof(MySqlDbContextLocator)]\n Task<(List,List,List)> GetDataAsync();\n }\n}\n')),(0,i.kt)("h3",{id:"91745-\u8fd4\u56de-\u5355\u884c\u5355\u5217"},"9.17.4.5 \u8fd4\u56de ",(0,i.kt)("inlineCode",{parentName:"h3"},"\u5355\u884c\u5355\u5217")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{7,10,13}","{7,10,13}":!0},'using Furion.DatabaseAccessor;\n\nnamespace Furion.Application\n{\n public interface ISql : ISqlDispatchProxy\n {\n [SqlExecute("select Name from person where id = @id")]\n string GetValue(int id);\n\n [SqlExecute("select age from person where id = @id")]\n int GetValue(int id);\n\n [SqlExecute("select Name from person where id = @id")]\n Task GetValueAsync(int id);\n }\n}\n')),(0,i.kt)("h3",{id:"91746-\u65e0\u8fd4\u56de\u503c"},"9.17.4.6 \u65e0\u8fd4\u56de\u503c"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{7,10,13}","{7,10,13}":!0},'using Furion.DatabaseAccessor;\n\nnamespace Furion.Application\n{\n public interface ISql : ISqlDispatchProxy\n {\n [SqlExecute("insert into person(Name,Age) values(@name,@age)")]\n void Insert(MyParam dto);\n\n [SqlExecute("delete from person where id = @id")]\n void Delete(int id);\n\n [SqlExecute("update person set name=@name where id=@id")]\n void Update(int id, string name);\n }\n}\n')),(0,i.kt)("h2",{id:"9175-\u5b58\u50a8\u8fc7\u7a0b-\u64cd\u4f5c"},"9.17.5 ",(0,i.kt)("inlineCode",{parentName:"h2"},"\u5b58\u50a8\u8fc7\u7a0b")," \u64cd\u4f5c"),(0,i.kt)("h3",{id:"91751-\u8fd4\u56de-datatable"},"9.17.5.1 \u8fd4\u56de ",(0,i.kt)("inlineCode",{parentName:"h3"},"DataTable")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{7,10,13}","{7,10,13}":!0},'using Furion.DatabaseAccessor;\n\nnamespace Furion.Application\n{\n public interface ISql : ISqlDispatchProxy\n {\n [SqlProcedure("PROC_Name")]\n DataTable GetPersons(MyParam dto);\n\n [SqlProcedure("PROC_Name")]\n DataTable GetPersons(int id);\n\n [SqlProcedure("PROC_Name")]\n DataTable GetPersons(int id, string name);\n }\n}\n')),(0,i.kt)("h3",{id:"91752-\u8fd4\u56de-listt"},"9.17.5.2 \u8fd4\u56de ",(0,i.kt)("inlineCode",{parentName:"h3"},"List")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{7,10,13}","{7,10,13}":!0},'using Furion.DatabaseAccessor;\n\nnamespace Furion.Application\n{\n public interface ISql : ISqlDispatchProxy\n {\n [SqlProcedure("PROC_Name")]\n List GetPersons(MyParam dto);\n\n [SqlProcedure("PROC_Name")]\n List GetPersons(int id);\n\n [SqlProcedure("PROC_Name")]\n List GetPersons(int id, string name);\n }\n}\n')),(0,i.kt)("h3",{id:"91753-\u8fd4\u56de-dataset"},"9.17.5.3 \u8fd4\u56de ",(0,i.kt)("inlineCode",{parentName:"h3"},"DataSet")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{7,10,13}","{7,10,13}":!0},'using Furion.DatabaseAccessor;\n\nnamespace Furion.Application\n{\n public interface ISql : ISqlDispatchProxy\n {\n [SqlProcedure("PROC_Name")]\n DataSet GetData(MyParam dto);\n\n [SqlProcedure("PROC_Name")]\n DataSet GetData(int id);\n\n [SqlProcedure("PROC_Name")]\n DataSet GetData(int id, string name);\n }\n}\n')),(0,i.kt)("h3",{id:"91754-\u8fd4\u56de-tuplet1t8"},"9.17.5.4 \u8fd4\u56de ",(0,i.kt)("inlineCode",{parentName:"h3"},"Tuple(T1,...T8)")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{7,10,13}","{7,10,13}":!0},'using Furion.DatabaseAccessor;\n\nnamespace Furion.Application\n{\n public interface ISql : ISqlDispatchProxy\n {\n [SqlProcedure("PROC_Name")]\n (List, List) GetData(MyParam dto);\n\n [SqlProcedure("PROC_Name")]\n (List, List) GetData(int id);\n\n [SqlProcedure("PROC_Name")]\n (List, List, Person, int) GetData(int id, string name);\n }\n}\n')),(0,i.kt)("h3",{id:"91755-\u8fd4\u56de-\u5355\u884c\u5355\u5217"},"9.17.5.5 \u8fd4\u56de ",(0,i.kt)("inlineCode",{parentName:"h3"},"\u5355\u884c\u5355\u5217")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{7,10,13}","{7,10,13}":!0},'using Furion.DatabaseAccessor;\n\nnamespace Furion.Application\n{\n public interface ISql : ISqlDispatchProxy\n {\n [SqlProcedure("PROC_Name")]\n object GetValue(MyParam dto);\n\n [SqlProcedure("PROC_Name")]\n string GetValue(int id);\n\n [SqlProcedure("PROC_Name")]\n int GetValue(int id, string name);\n }\n}\n')),(0,i.kt)("h3",{id:"91756-\u65e0\u8fd4\u56de\u503c"},"9.17.5.6 \u65e0\u8fd4\u56de\u503c"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{7,10,13}","{7,10,13}":!0},'using Furion.DatabaseAccessor;\n\nnamespace Furion.Application\n{\n public interface ISql : ISqlDispatchProxy\n {\n [SqlProcedure("PROC_Name")]\n void GetValue(MyParam dto);\n\n [SqlProcedure("PROC_Name")]\n void GetValue(int id);\n\n [SqlProcedure("PROC_Name")]\n void GetValue(int id, string name);\n }\n}\n')),(0,i.kt)("h3",{id:"91757-\u5e26-outputreturn-\u8fd4\u56de"},"9.17.5.7 \u5e26 ",(0,i.kt)("inlineCode",{parentName:"h3"},"OUTPUT/RETURN")," \u8fd4\u56de"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{7,10,13}","{7,10,13}":!0},'using Furion.DatabaseAccessor;\n\nnamespace Furion.Application\n{\n public interface ISql : ISqlDispatchProxy\n {\n [SqlProcedure("PROC_Name")]\n ProcedureOutputResult GetOutput(ProcOutputModel pams);\n\n [SqlProcedure("PROC_Name")]\n ProcedureOutputResult GetOutput(ProcOutputModel pams);\n\n [SqlProcedure("PROC_Name")]\n ProcedureOutputResult<(List, List)> GetOutput(ProcOutputModel pams);\n }\n}\n')),(0,i.kt)("h2",{id:"9176-\u51fd\u6570-\u64cd\u4f5c"},"9.17.6 ",(0,i.kt)("inlineCode",{parentName:"h2"},"\u51fd\u6570")," \u64cd\u4f5c"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{7,10}","{7,10}":!0},'using Furion.DatabaseAccessor;\n\nnamespace Furion.Application\n{\n public interface ISql : ISqlDispatchProxy\n {\n [SqlFunction("FN_Name")] // \u6807\u91cf\u51fd\u6570\n string GetValue(MyParam dto);\n\n [SqlProcedure("FN_Name")] // \u8868\u503c\u51fd\u6570\n List GetPersons(int id);\n }\n}\n')),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u8865\u5145\u8bf4\u660e")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},(0,i.kt)("inlineCode",{parentName:"p"},"Sql")," \u4ee3\u7406\u4f1a\u81ea\u52a8\u5224\u65ad\u8fd4\u56de\u503c\u7136\u540e\u81ea\u52a8\u6267\u884c\u7279\u5b9a\u51fd\u6570\u7c7b\u578b\u3002"))),(0,i.kt)("h2",{id:"9177-sql-\u6a21\u677f\u66ff\u6362"},"9.17.7 ",(0,i.kt)("inlineCode",{parentName:"h2"},"Sql")," \u6a21\u677f\u66ff\u6362"),(0,i.kt)("p",null,"\u5728\u6700\u65b0\u7684 ",(0,i.kt)("inlineCode",{parentName:"p"},"1.18.3")," \u7248\u672c\u4e2d\u63d0\u4f9b\u4e86\u6a21\u677f\u66ff\u6362\u529f\u80fd\uff0c\u5982\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'[SqlExecute("select * from person where id > {id} and name like {name} and age > {user.Age}")]\nList GetPerson(int id, string name, User user);\n')),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u4e24\u8005\u533a\u522b")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u6a21\u677f\u5b57\u7b26\u4e32\u6709\u522b\u4e8e\u547d\u4ee4\u53c2\u6570\u66ff\u6362\uff0c\u6a21\u677f\u5b57\u7b26\u4e32\u91c7\u7528 ",(0,i.kt)("inlineCode",{parentName:"p"},"{ }")," \u65b9\u5f0f\uff0c\u8fd0\u884c\u65f6\u76f4\u63a5\u66ff\u6362\u4e3a\u5b9e\u9645\u7684\u5185\u5bb9\uff0c ",(0,i.kt)("inlineCode",{parentName:"p"},"@")," \u800c\u662f\u8f6c\u6362\u6210 ",(0,i.kt)("inlineCode",{parentName:"p"},"DbParameter")," \u53c2\u6570\u3002"))),(0,i.kt)("h2",{id:"9178-\u5207\u6362\u6570\u636e\u5e93"},"9.17.8 \u5207\u6362\u6570\u636e\u5e93"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Sql")," \u4ee3\u7406\u65b9\u5f0f\u7684\u652f\u6301\u4e09\u79cd\u5207\u6362\u6570\u636e\u5e93\u7684\u65b9\u5f0f\uff1a"),(0,i.kt)("h3",{id:"91781-\u5355\u4e2a\u65b9\u6cd5\u65b9\u5f0f"},"9.17.8.1 \u5355\u4e2a\u65b9\u6cd5\u65b9\u5f0f"),(0,i.kt)("p",null,"\u4e3b\u8981\u901a\u8fc7\u5728\u65b9\u6cd5\u4e0a\u8d34 ",(0,i.kt)("inlineCode",{parentName:"p"},"[SqlDbContextLocator]")," \u7279\u6027"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1}","{1}":!0},'[SqlExecute("select * from person"), SqlDbContextLocator(typeof(MySqlDbContextLocator)]\nList GetPerson();\n')),(0,i.kt)("h3",{id:"91782-\u63a5\u53e3\u65b9\u5f0f"},"9.17.8.2 \u63a5\u53e3\u65b9\u5f0f"),(0,i.kt)("p",null,"\u5728\u63a5\u53e3\u4e2d\u8d34 ",(0,i.kt)("inlineCode",{parentName:"p"},"[SqlDbContextLocator]")," \u7279\u6027\uff0c\u6b64\u65b9\u5f0f\u4e0b\uff0c\u63a5\u53e3\u6240\u6709\u65b9\u6cd5\u5c06\u91c7\u7528\u6307\u5b9a\u7684\u6570\u636e\u5e93\u6267\u884c\u3002"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1}","{1}":!0},'[SqlDbContextLocator(typeof(MySqlDbContextLocator)]\npublic interface ISql : ISqlDispatchProxy\n{\n [SqlFunction("FN_Name")] // \u6807\u91cf\u51fd\u6570\n string GetValue(MyParam dto);\n\n [SqlProcedure("FN_Name")] // \u8868\u503c\u51fd\u6570\n List GetPersons(int id);\n}\n')),(0,i.kt)("h3",{id:"91783-\u8fd0\u884c\u65f6-change-\u65b9\u6cd5\u5207\u6362"},"9.17.8.3 \u8fd0\u884c\u65f6 ",(0,i.kt)("inlineCode",{parentName:"h3"},".Change")," \u65b9\u6cd5\u5207\u6362"),(0,i.kt)("p",null,"\u9664\u4e86\u4ee5\u4e0a\u4e24\u79cd ",(0,i.kt)("inlineCode",{parentName:"p"},"\u9759\u6001")," \u914d\u7f6e\u65b9\u5f0f\uff0c",(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u8fd8\u63d0\u4f9b ",(0,i.kt)("inlineCode",{parentName:"p"},"\u52a8\u6001")," \u65b9\u5f0f\uff0c\u5982\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{2,6}","{2,6}":!0},"// \u5c06 sql \u4ee3\u7406\u6570\u636e\u5e93\u5207\u6362\u6210\u7279\u5b9a\u6570\u636e\u5e93\n_sql.Change();\n_sql.GetPerson();\n\n// \u591a\u6b21\u5207\u6362\n_sql.Change();\n_sql.GetPerson();\n\n// \u8fd8\u652f\u6301\u91cd\u7f6e\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u5b9a\u4f4d\u5668\u4e3a\u521d\u59cb\u72b6\u6001\n_sql.ResetIt();\n_sql.GetPerson();\n")),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u5173\u4e8e\u4f18\u5148\u7ea7\u95ee\u9898")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},(0,i.kt)("inlineCode",{parentName:"p"},".Change<>")," \u4f18\u5148\u7ea7\u5927\u4e8e ",(0,i.kt)("inlineCode",{parentName:"p"},"\u65b9\u6cd5\u8d34 [SqlDbContextLocator]")," \u5927\u4e8e ",(0,i.kt)("inlineCode",{parentName:"p"},"\u63a5\u53e3\u8d34 [SqlDbContextLocator]"),"\u3002"),(0,i.kt)("p",{parentName:"div"},"\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c\u4e0d\u6307\u5b9a ",(0,i.kt)("inlineCode",{parentName:"p"},"DbContextLocator")," \u5c5e\u6027\uff0c\u5219\u4e3a ",(0,i.kt)("inlineCode",{parentName:"p"},"MasterDbContextLocator"),"\u3002"))),(0,i.kt)("h2",{id:"9179-sql-\u4ee3\u7406\u62e6\u622a"},"9.17.9 ",(0,i.kt)("inlineCode",{parentName:"h2"},"Sql")," \u4ee3\u7406\u62e6\u622a"),(0,i.kt)("p",null,"\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion v2.13 +")," \u7248\u672c\u65b0\u589e\u4e86 ",(0,i.kt)("inlineCode",{parentName:"p"},"Sql")," \u4ee3\u7406\u62e6\u622a\u529f\u80fd\uff0c\u53ef\u4ee5\u7be1\u6539\u7279\u5b9a\u65b9\u6cd5\u6216\u6240\u6709\u4ee3\u7406\u65b9\u6cd5\u5b9e\u9645\u6267\u884c\u7684\u53c2\u6570\uff0c\u5982 ",(0,i.kt)("inlineCode",{parentName:"p"},"sql\u8bed\u53e5\u3001\u53c2\u6570\u3001\u6267\u884c\u5bf9\u8c61\u7b49\u7b49"),"\u3002"),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"\u82e5\u5728 ",(0,i.kt)("inlineCode",{parentName:"strong"},"Sql")," \u4ee3\u7406\u4e2d\u5b9e\u73b0\u62e6\u622a\u529f\u80fd\uff0c\u5fc5\u987b\u6ee1\u8db3\u4e24\u4e2a\u6761\u4ef6"),"\uff1a"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"\u65b9\u6cd5\u5fc5\u987b\u662f ",(0,i.kt)("inlineCode",{parentName:"li"},"static")," \u9759\u6001\u65b9\u6cd5\u4e14\u8fd4\u56de\u503c\u4e3a ",(0,i.kt)("inlineCode",{parentName:"li"},"void")," \u4e14\u53ea\u6709\u4e00\u4e2a ",(0,i.kt)("inlineCode",{parentName:"li"},"SqlProxyMethod")," \u53c2\u6570"),(0,i.kt)("li",{parentName:"ul"},"\u65b9\u6cd5\u5fc5\u987b\u8d34 ",(0,i.kt)("inlineCode",{parentName:"li"},"[Interceptor]")," \u7279\u6027")),(0,i.kt)("p",null,"\u5982\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{9,13-17,20-24,26-30,32-36}","{9,13-17,20-24,26-30,32-36}":!0},'public interface ISql : ISqlDispatchProxy\n{\n [SqlFunction("FN_Name")]\n string GetValue(MyParam dto);\n\n [SqlProcedure("FN_Name")]\n List GetPersons(int id);\n\n [SqlExecute("select name from person", InterceptorId = "GetPersonsByName")] // \u901a\u8fc7 InterceptorId \u89e3\u51b3\u65b9\u6cd5\u540d\u91cd\u8f7d\u95ee\u9898\n Task> GetPersons();\n\n // \u53ea\u62e6\u622a GetValue \u65b9\u6cd5\n [Interceptor(nameof(GetValue))]\n static void \u62e6\u622a1(SqlProxyMethod method)\n {\n method.FinalSql += " where id > 1"; // \u7be1\u6539\u6700\u7ec8\u6267\u884c sql\n }\n\n // \u62e6\u622a GetValue \u548c GetPersons \u65b9\u6cd5\n [Interceptor(nameof(GetValue), nameof(GetPersons))]\n static void \u62e6\u622a2(SqlProxyMethod method)\n {\n method.FinalSql += " where id > 1"; // \u7be1\u6539\u6700\u7ec8\u6267\u884c sql\n }\n\n [Interceptor("GetPersonsByName")] // \u5bf9\u5e94\u4e0a\u9762\u7684 InterceptorId \u914d\u7f6e\n static void \u89e3\u51b3\u65b9\u6cd5\u540d\u91cd\u8f7d\u62e6\u622a(SqlProxyMethod method)\n {\n // \u3002\u3002\u3002\n }\n\n [Interceptor]\n static void \u5168\u5c40\u62e6\u622a(SqlProxyMethod method)\n {\n // \u8fd9\u91cc\u4f1a\u62e6\u622a\u6240\u6709\u7684\u65b9\u6cd5\n }\n}\n')),(0,i.kt)("h2",{id:"91710-\u8bbe\u7f6e\u8d85\u65f6\u65f6\u95f4"},"9.17.10 \u8bbe\u7f6e\u8d85\u65f6\u65f6\u95f4"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'[Timeout(1000)]\npublic interface ISql : ISqlDispatchProxy\n{\n [SqlFunction("FN_Name"), Timeout(500)] // \u5355\u4f4d\u79d2\n string GetValue(MyParam dto);\n}\n')),(0,i.kt)("h2",{id:"91711-\u53cd\u9988\u4e0e\u5efa\u8bae"},"9.17.11 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,i.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/51c14d7f.12fac3a3.js b/handbook/build/assets/js/51c14d7f.12fac3a3.js deleted file mode 100644 index d71330aeabf..00000000000 --- a/handbook/build/assets/js/51c14d7f.12fac3a3.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[8559],{3905:function(e,n,t){t.d(n,{Zo:function(){return s},kt:function(){return m}});var o=t(7294);function r(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function a(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);n&&(o=o.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,o)}return t}function i(e){for(var n=1;n=0||(r[t]=e[t]);return r}(e,n);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var d=o.createContext({}),c=function(e){var n=o.useContext(d),t=n;return e&&(t="function"==typeof e?e(n):i(i({},n),e)),t},s=function(e){var n=c(e.components);return o.createElement(d.Provider,{value:n},e.children)},p={inlineCode:"code",wrapper:function(e){var n=e.children;return o.createElement(o.Fragment,{},n)}},k=o.forwardRef((function(e,n){var t=e.components,r=e.mdxType,a=e.originalType,d=e.parentName,s=l(e,["components","mdxType","originalType","parentName"]),k=c(t),m=r,u=k["".concat(d,".").concat(m)]||k[m]||p[m]||a;return t?o.createElement(u,i(i({ref:n},s),{},{components:t})):o.createElement(u,i({ref:n},s))}));function m(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var a=t.length,i=new Array(a);i[0]=k;var l={};for(var d in n)hasOwnProperty.call(n,d)&&(l[d]=n[d]);l.originalType=e,l.mdxType="string"==typeof e?e:r,i[1]=l;for(var c=2;cDocker \u73af\u5883\u90e8\u7f72",id:"3511-\u5173\u4e8e\u5168-docker-\u73af\u5883\u90e8\u7f72",children:[]},{value:"35.1.2 \u5b89\u88c5 Docker \u7248 Jenkins",id:"3512-\u5b89\u88c5-docker-\u7248-jenkins",children:[{value:"35.1.2.1 \u4f7f\u7528 Dockerfile \u5236\u4f5c\u955c\u50cf",id:"35121-\u4f7f\u7528-dockerfile-\u5236\u4f5c\u955c\u50cf",children:[]},{value:"35.1.2.2 \u8fd0\u884c Jenkins:dotnet \u955c\u50cf",id:"35122-\u8fd0\u884c-jenkinsdotnet-\u955c\u50cf",children:[]}]},{value:"35.1.3 Jenkins \u7684\u81ea\u52a8\u5316\u90e8\u7f72",id:"3513-jenkins-\u7684\u81ea\u52a8\u5316\u90e8\u7f72",children:[{value:"35.1.3.1 \u7f16\u5199 Shell \u811a\u672c",id:"35131-\u7f16\u5199-shell-\u811a\u672c",children:[]}]},{value:"35.1.4 Jenkins \u7684\u81ea\u52a8\u5316\u8fdc\u7a0b\u90e8\u7f72",id:"3514-jenkins-\u7684\u81ea\u52a8\u5316\u8fdc\u7a0b\u90e8\u7f72",children:[{value:"35.1.4.1 \u5b89\u88c5\u63d2\u4ef6",id:"35141-\u5b89\u88c5\u63d2\u4ef6",children:[]},{value:"35.1.4.2 \u914d\u7f6e",id:"35142-\u914d\u7f6e",children:[]},{value:"35.1.4.3 \u5199\u811a\u672c",id:"35143-\u5199\u811a\u672c",children:[]},{value:"35.1.4.4 \u6784\u5efa\u540e\u64cd\u4f5c\uff08\u5173\u952e\uff09",id:"35144-\u6784\u5efa\u540e\u64cd\u4f5c\uff08\u5173\u952e\uff09",children:[]},{value:"35.1.4.5 \u8fdc\u7a0b\u6267\u884c",id:"35145-\u8fdc\u7a0b\u6267\u884c",children:[]}]},{value:"35.1.5 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"3515-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],p={toc:s};function k(e){var n=e.components,t=(0,r.Z)(e,i);return(0,a.kt)("wrapper",(0,o.Z)({},p,t,{components:n,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"3511-\u5173\u4e8e\u5168-docker-\u73af\u5883\u90e8\u7f72"},"35.1.1 \u5173\u4e8e\u5168 ",(0,a.kt)("inlineCode",{parentName:"h2"},"Docker")," \u73af\u5883\u90e8\u7f72"),(0,a.kt)("p",null,"\u5229\u7528\u62e5\u6709 ",(0,a.kt)("inlineCode",{parentName:"p"},".NET")," \u73af\u5883\u7684 ",(0,a.kt)("inlineCode",{parentName:"p"},"Jenkins"),"\uff0c\u8fdb\u884c\u6301\u7eed\u5316\u90e8\u7f72"),(0,a.kt)("h2",{id:"3512-\u5b89\u88c5-docker-\u7248-jenkins"},"35.1.2 \u5b89\u88c5 ",(0,a.kt)("inlineCode",{parentName:"h2"},"Docker")," \u7248 ",(0,a.kt)("inlineCode",{parentName:"h2"},"Jenkins")),(0,a.kt)("p",null,"\u6b63\u5e38\u5728 ",(0,a.kt)("inlineCode",{parentName:"p"},"Docker")," \u4e2d\u62c9\u53d6\u7684 ",(0,a.kt)("inlineCode",{parentName:"p"},"Jenkins:lts")," \u662f\u65e0\u6cd5\u6267\u884c ",(0,a.kt)("inlineCode",{parentName:"p"},"dotnet")," \u547d\u4ee4\u7684\uff08\u5c31\u7b97\u4f60\u5bbf\u4e3b\u673a\u6709 ",(0,a.kt)("inlineCode",{parentName:"p"},"dotnet")," \u73af\u5883\u3001",(0,a.kt)("inlineCode",{parentName:"p"},"docker")," \u4e2d\u4e5f\u6709 ",(0,a.kt)("inlineCode",{parentName:"p"},"dotnet")," \u73af\u5883\u4e5f\u4e0d\u53ef\u4ee5\uff09\uff0c\n\u6240\u4ee5\u6211\u4eec\u53ea\u80fd\u6784\u5efa\u4e00\u4e2a\u5305\u542b ",(0,a.kt)("inlineCode",{parentName:"p"},"dotnet")," \u7684\u955c\u50cf"),(0,a.kt)("h3",{id:"35121-\u4f7f\u7528-dockerfile-\u5236\u4f5c\u955c\u50cf"},"35.1.2.1 \u4f7f\u7528 Dockerfile \u5236\u4f5c\u955c\u50cf"),(0,a.kt)("p",null,"\u4f7f\u7528 ",(0,a.kt)("inlineCode",{parentName:"p"},"Dockerfile")," \u521b\u5efa\u5305\u542b ",(0,a.kt)("inlineCode",{parentName:"p"},"dotnet")," \u7684 ",(0,a.kt)("inlineCode",{parentName:"p"},"Jenkins")," \u955c\u50cf"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"\ud83d\udc49 \u7f16\u5199 ",(0,a.kt)("inlineCode",{parentName:"li"},"Dockerfile"))),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-bash"},'# \u5c01\u88c5Jenkins\u955c\u50cf\uff08\u5e26\u6709dotnet\u73af\u5883\u7684\uff09 sdk=5.1\nFROM jenkins/jenkins:lts\nUSER root\nWORKDIR /dotnet\nRUN wget -O dotnet.tar.gz https://download.visualstudio.microsoft.com/download/pr/820db713-c9a5-466e-b72a-16f2f5ed00e2/628aa2a75f6aa270e77f4a83b3742fb8/dotnet-sdk-5.0.100-linux-x64.tar.gz\nRUN tar zxf dotnet.tar.gz -C ./\nRUN rm -rf dotnet.tar.gz\nENV PATH="${PATH}:/dotnet:/var/jenkins_home/.dotnet/tools"\nENV DOTNET_ROOT="/dotnet"\nRUN apt update -y\nRUN apt install icu-devtools vim zip unzip -y\nRUN usermod -a -G root jenkins\nUSER jenkins\n')),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"\ud83d\udc49 \u547d\u4ee4\u89e3\u91ca")),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-bash"},"- 1. \u8fd9\u4e2aDocker\u955c\u50cf\u57fa\u4e8ejenkins\n- 2. \u8bbe\u7f6e\u5f53\u524d\u7528\u6237\u4e3aroot\uff0c\u56e0\u4e3a\u540e\u9762\u5b89\u88c5\u9700\u8981\u4f7f\u7528root\n- 3. \u8bbe\u7f6e\u5f53\u524d\u5de5\u4f5c\u76ee\u5f55\u4e3adotnet\n- 4. \u4e0b\u8f7ddotnet SDK\u5305\uff0c\u4fdd\u5b58\u4e3adotnet.tar.gz\u3002\u8fd9\u91cc\u8981\u6ce8\u610f\u4e0b\u8f7d\u6b63\u786e\u7248\u672c\u7684SDK\uff0c\u53ef\u524d\u5f80\u5fae\u8f6f\u5b98\u65b9\u7f51\u7ad9\u83b7\u53d6\u4e0b\u8f7d\u94fe\u63a5\uff1ahttps://dotnet.microsoft.com/download\n- 5. \u89e3\u538bdotnet SDK\u5230\u5f53\u524d\u76ee\u5f55\uff0c\u5373/dotnet\u76ee\u5f55\n- 6. \u5220\u9664dotnet SDK\u5305\n- 7. \u628adotnet\u76ee\u5f55\u548cdotnet tools\u76ee\u5f55\u6dfb\u52a0\u5230\u73af\u5883\u53d8\u91cfPATH\uff0c\u8fd9\u6837\u5c31\u53ef\u4ee5\u4f7f\u7528dotnet\u547d\u4ee4\u4e86\n- 8. \u8bbe\u7f6eDOTNET_ROOT\u53d8\u91cf\n- 9. \u66f4\u65b0\u6e90\n- 10. \u5b89\u88c5\u4e00\u4e9b\u5fc5\u9700\u7684\uff0c\u5e38\u7528\u7684\u5de5\u5177\u5305\uff0c\u5176\u4e2dicu-devtools\u662f\u8fd0\u884cdotnet\u9700\u8981\u7684\n- 11. \u4fee\u6539jenkins\u7528\u6237\u5230root\u9644\u52a0\u7ec4\n- 12. \u8bbe\u7f6e\u5f53\u524d\u7528\u6237\u4e3ajenkins\n")),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"\ud83d\udc49 \u6784\u5efa ",(0,a.kt)("inlineCode",{parentName:"li"},"Docker")," \u955c\u50cf ",(0,a.kt)("inlineCode",{parentName:"li"},"name=jenkins:dotnet"))),(0,a.kt)("p",null,(0,a.kt)("inlineCode",{parentName:"p"},"cd")," \u5230\u6839\u76ee\u5f55\u4e0b\uff08\u5fc5\u987b\u542b ",(0,a.kt)("inlineCode",{parentName:"p"},"Dockerfile"),"\uff09 \u53ea\u9700\u6784\u5efa\u547d\u4ee4\uff1a"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-bash"}," docker build -t jenkins:dotnet .\n")),(0,a.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,a.kt)("div",{parentName:"div",className:"admonition-heading"},(0,a.kt)("h5",{parentName:"div"},(0,a.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,a.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,a.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u6ce8\u610f")),(0,a.kt)("div",{parentName:"div",className:"admonition-content"},(0,a.kt)("p",{parentName:"div"},"\u7ed3\u5c3e ",(0,a.kt)("inlineCode",{parentName:"p"},".")," \u4e0d\u80fd\u7701\u7565"))),(0,a.kt)("h3",{id:"35122-\u8fd0\u884c-jenkinsdotnet-\u955c\u50cf"},"35.1.2.2 \u8fd0\u884c ",(0,a.kt)("inlineCode",{parentName:"h3"},"Jenkins:dotnet")," \u955c\u50cf"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-bash"},'docker run -d -p 8080:8080 -p 50000:50000 --name mjenkins \\\n --privileged=true \\\n --restart always \\\n -u root \\\n -e TZ="Asia/Shanghai" \\\n -v /mudata/jenkins:/var/jenkins_home \\\n -v /usr/bin/docker:/usr/bin/docker \\\n -v /var/run/docker.sock:/var/run/docker.sock \\\n -v /mudata/webroot/:/mudata/webroot \\\n jenkins:dotnet\n')),(0,a.kt)("p",null,"\u63a5\u4e0b\u6765\u5c31\u662f\u6bd4\u8f83\u4fd7\u5957\u7684\u5b89\u88c5 ",(0,a.kt)("inlineCode",{parentName:"p"},"Jenkins")," \u6b65\u9aa4\uff0c\u7f51\u4e0a\u8d44\u6599\u5f88\u591a\uff0c\u4e0d\u5c55\u5f00\u4e86\u3002"),(0,a.kt)("h2",{id:"3513-jenkins-\u7684\u81ea\u52a8\u5316\u90e8\u7f72"},"35.1.3 ",(0,a.kt)("inlineCode",{parentName:"h2"},"Jenkins")," \u7684\u81ea\u52a8\u5316\u90e8\u7f72"),(0,a.kt)("h3",{id:"35131-\u7f16\u5199-shell-\u811a\u672c"},"35.1.3.1 \u7f16\u5199 Shell \u811a\u672c"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-bash"},"# Jenkins \u6784\u5efa \u6d4b\u8bd5\u670d\n\necho '============\u67e5\u770b\u6253\u5305\u73af\u5883================'\npwd\nls\necho $PATH\n\nimage_version=`date +%Y%m%d%H%M`;\necho $image_version;\n\ndotnet --info\ndotnet --version\n\n# \u83b7\u53d6\u77ed\u7248\u672c\u53f7\nGITHASH=`git rev-parse --short HEAD`\n\necho '============================begin restore======================================='\ndotnet restore\necho '============================end restore======================================='\n\n#\u8981\u6784\u5efa\u7684\u89e3\u51b3\u65b9\u6848\u540d\u79f0\nsolutionName=MUSaas.SCM.BasicData\n#docker run\u7684\u5bb9\u5668\u540d\u79f0\ncontainerName=jenkinsscmbasic\n#\u6307\u5b9arun\u7684\u7aef\u53e3\nport=9994\n#.sln\u6587\u4ef6\u5168\u8def\u5f84\n#solutionDir=20-Solution/${solutionName}.sln\n#.csproj\u6587\u4ef6\u5168\u8def\u5f84\ncsprojDir=${solutionName}/${solutionName}.csproj\n\n#\u9879\u76ee\u53d1\u5e03\u7684\u76ee\u5f55\nwebDir=/mudata/webroot/jenkins/publish/webapp\n\n#\u5f52\u6863\u76ee\u5f55\narchivesDir=/mudata/webroot/jenkins/publish/archives\n\n#\u6e05\u7a7a\u6587\u4ef6\u5939\nrm -rf ${webDir}/${JOB_NAME}/*\n\n#\u53d1\u5e03\u7f51\u7ad9\u5230webDir\ndotnet publish ${JENKINS_HOME}/workspace/${JOB_NAME}/${csprojDir} -c Release -o ${webDir}/${JOB_NAME} /p:Version=1.0.${BUILD_NUMBER}\n#\u590d\u5236\u914d\u7f6e\u6587\u4ef6\n#cp -rf /vdb1/jenkins/DotNetCoreWebPublishToDockerCommonConfigs/* ${webDir}/${JOB_NAME}/\n\n#\u5224\u65b7\u662f\u5426\u5b58\u5728\nCID=$(docker ps | grep \"${containerName}\" | awk '{print $1}')\necho $CID\nif [ \"$CID\" != \"\" ];then\n docker stop ${containerName}\n docker rm ${containerName}\n docker rmi ${containerName}\n#docker stop $CID\n#docker rm $CID\nfi\n\n\n#\u901a\u8fc7Dockerfile\u91cd\u65b0\u6784\u5efa\u955c\u50cf\ndocker build -t ${containerName} ${webDir}/${JOB_NAME}/.\n#docker run\u5bb9\u5668\u5e76\u7ed1\u5b9a\u5230\u7aef\u53e3\n#docker run -d -p ${port}:80 --name ${containerName} ${containerName}\ndocker run --name ${containerName} --restart=always -d -p ${port}:${port} -v /etc/localtime:/etc/localtime:ro ${containerName}\necho \"success!\"\n\n")),(0,a.kt)("blockquote",null,(0,a.kt)("p",{parentName:"blockquote"},"\u5c31\u8fd9\u6837\u81ea\u52a8\u5316\u90e8\u7f72\u5c31\u597d\u4e86\u3002 \u6d4b\u8bd5\u670d\u7684 ",(0,a.kt)("inlineCode",{parentName:"p"},"Jenkins")," \u5c06\u6e90\u7801\u62c9\u4e0b\u6765\uff0c",(0,a.kt)("inlineCode",{parentName:"p"},"Publish\uff0cDocker Build\uff0cDocker Run"),"\u3002")),(0,a.kt)("blockquote",null,(0,a.kt)("p",{parentName:"blockquote"},"\u8fd9\u91cc\u60f3\u8981\u53d1\u5e03\u7684\u65f6\u5019\uff0c\u6bcf\u6b21\u90fd\u9700\u8981\u624b\u52a8\u53bb\u70b9\u51fb\u201c\u6784\u5efa\u201d\u624d\u4f1a\u6267\u884c\u3002\u4e5f\u53ef\u4ee5\u505a\u6210\u5f53\u5206\u652f\u5408\u5e76\u6210\u529f\u540e\u81ea\u52a8\u8fd0\u884c\u3002\u53cd\u6b63 ",(0,a.kt)("inlineCode",{parentName:"p"},"Jenkins")," \u88c5\u597d\u4e4b\u540e\uff0c\u4f60\u60f3\u8981\u4ec0\u4e48\u90fd\u80fd\u73a9\u8d77\u6765\u3002\u6bd4\u5982\u6307\u5b9a\u5206\u652f\u63d0\u4ea4\u540e\u81ea\u52a8\u201c\u6784\u5efa\u201d\u3001\u6bd4\u5982\u6784\u5efa\u6210\u529f\u540e\u5408\u5e76\u5230 Master \u7b49\u7b49")),(0,a.kt)("h2",{id:"3514-jenkins-\u7684\u81ea\u52a8\u5316\u8fdc\u7a0b\u90e8\u7f72"},"35.1.4 ",(0,a.kt)("inlineCode",{parentName:"h2"},"Jenkins")," \u7684\u81ea\u52a8\u5316\u8fdc\u7a0b\u90e8\u7f72"),(0,a.kt)("h3",{id:"35141-\u5b89\u88c5\u63d2\u4ef6"},"35.1.4.1 \u5b89\u88c5\u63d2\u4ef6"),(0,a.kt)("blockquote",null,(0,a.kt)("p",{parentName:"blockquote"},(0,a.kt)("inlineCode",{parentName:"p"},"Publish Over SSH"))),(0,a.kt)("h3",{id:"35142-\u914d\u7f6e"},"35.1.4.2 \u914d\u7f6e"),(0,a.kt)("blockquote",null,(0,a.kt)("p",{parentName:"blockquote"},"\u7cfb\u7edf\u7ba1\u7406 => ",(0,a.kt)("inlineCode",{parentName:"p"},"Publish over SSH"))),(0,a.kt)("h3",{id:"35143-\u5199\u811a\u672c"},"35.1.4.3 \u5199\u811a\u672c"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-bash"},"# Jenkins \u6784\u5efa \u6b63\u5f0f\u670d\n\necho '============\u67e5\u770b\u6253\u5305\u73af\u5883================'\npwd\nls\necho $PATH\n\nimage_version=`date +%Y%m%d%H%M`;\necho $image_version;\n\ndotnet --info\ndotnet --version\n\n# \u83b7\u53d6\u77ed\u7248\u672c\u53f7\nGITHASH=`git rev-parse --short HEAD`\n\necho '============================begin restore======================================='\ndotnet restore\necho '============================end restore======================================='\n\n#\u8981\u6784\u5efa\u7684\u89e3\u51b3\u65b9\u6848\u540d\u79f0\nsolutionName=MUSaas.SCM.BulkOrder\n#docker run\u7684\u5bb9\u5668\u540d\u79f0\ncontainerName=jenkinsscmbulk\n#\u6307\u5b9arun\u7684\u7aef\u53e3\nport=9986\n#.csproj\u6587\u4ef6\u5168\u8def\u5f84\ncsprojDir=/${solutionName}/${solutionName}.csproj\n\n#\u9879\u76ee\u53d1\u5e03\u7684\u76ee\u5f55\nwebDir=/mudata/webroot/jenkins/publish/webapp\n\n#\u5f52\u6863\u76ee\u5f55\narchivesDir=/mudata/webroot/jenkins/publish/archives\n\n#\u6e05\u7a7a\u6587\u4ef6\u5939\nrm -rf ${webDir}/${JOB_NAME}/*\n\n#\u53d1\u5e03\u7f51\u7ad9\u5230webDir\ndotnet publish ${JENKINS_HOME}/workspace/${JOB_NAME}/${csprojDir} -c Release -o ${webDir}/${JOB_NAME} /p:Version=1.0.${BUILD_NUMBER}\n#\u590d\u5236\u914d\u7f6e\u6587\u4ef6\n#cp -rf /vdb1/jenkins/DotNetCoreWebPublishToDockerCommonConfigs/* ${webDir}/${JOB_NAME}/\n\n\n#\u6784\u5efa\u8fdc\u7a0b\u5305\n\nrm -rf ${JENKINS_HOME}/workspace/${JOB_NAME}/publish\nmkdir ${JENKINS_HOME}/workspace/${JOB_NAME}/publish\n\ntar -czvf ${JENKINS_HOME}/workspace/${JOB_NAME}/publish/${JOB_NAME}.${BUILD_NUMBER}.tar.gz -C ${webDir}/${JOB_NAME} .\n\necho \"success!\"\n")),(0,a.kt)("blockquote",null,(0,a.kt)("p",{parentName:"blockquote"},"\u5927\u6982\u903b\u8f91\u5c31\u662f\u53d1\u5e03\u540e\uff0c\u6253\u4e2a\u5305\u3002\u7136\u540e\u4e22\u7ed9\u8fdc\u7a0b\uff0c\u8fdc\u7a0b\u518d\u6267\u884c ",(0,a.kt)("inlineCode",{parentName:"p"},"shell"))),(0,a.kt)("blockquote",null,(0,a.kt)("p",{parentName:"blockquote"},"\u6ce8\u610f\u8fd9\u91cc\u4e00\u5b9a\u8981\u53d1\u5e03\u5230\u81ea\u5df1\u7684 ",(0,a.kt)("inlineCode",{parentName:"p"},"workspace")," \u4e0b\uff0c\u9632\u6b62\u4e0b\u4e00\u6b65\u6b7b\u6d3b\u627e\u4e0d\u5230\u4f4d\u7f6e\u3002\u5982\u679c\u627e\u4e0d\u5230\u4f4d\u7f6e\uff0c\u53ea\u80fd\u6162\u6162\u7528 ",(0,a.kt)("inlineCode",{parentName:"p"},"ls")," \u547d\u4ee4\uff0c\u4e00\u7ea7\u4e00\u7ea7\u53bb\u6d4b\uff0c\u5f88\u9ebb\u70e6")),(0,a.kt)("h3",{id:"35144-\u6784\u5efa\u540e\u64cd\u4f5c\uff08\u5173\u952e\uff09"},"35.1.4.4 \u6784\u5efa\u540e\u64cd\u4f5c\uff08\u5173\u952e\uff09"),(0,a.kt)("p",null,"\u9009\u62e9 ",(0,a.kt)("inlineCode",{parentName:"p"},"Send Build artifacts over SSH")),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-bash"},"Source files: publish/\nRemove prefix(\u4e0d\u586b)\nRemote directory:/mudata/webroot/publish/\nExec command:bash /mudata/shell/publish.sh ${JOB_NAME} jenkinsscmbase ${JOB_NAME}.${BUILD_NUMBER} 9994\n")),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"\u9009\u62e9\u81ea\u5df1\u7684 SSH \u670d\u52a1\u5668"),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"Source files"),"\uff1a\u4e00\u5b9a\u662f ",(0,a.kt)("inlineCode",{parentName:"li"},"workspace")," \u4e0b\u7684\u5730\u5740"),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"Remote directory"),"\uff1a\u8fdc\u7a0b\u5730\u5740\uff0c\u4ece\u6839\u76ee\u5f55\u5f00\u59cb"),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"Exec command"),"\uff1a\u8981\u6267\u884c\u7684 shell\u3002\u8fd9\u91cc\u6240\u6709\u7684 ",(0,a.kt)("inlineCode",{parentName:"li"},"Jenkins")," \u73af\u5883\u53d8\u91cf\u90fd\u53ef\u4ee5\u7528")),(0,a.kt)("h3",{id:"35145-\u8fdc\u7a0b\u6267\u884c"},"35.1.4.5 \u8fdc\u7a0b\u6267\u884c"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-bash",metastring:'title="publish.sh"',title:'"publish.sh"'},'# Jenkins Prod\u670d \u8c03\u7528\u811a\u672c\nsolutionName=$1\ncontainerName=$2\nfilename=$3\nport=$4\n#.publis\necho ${solutionName}\necho ${containerName}\necho ${filename}\nbaseDir=/mudata/webroot/publish\n\nwebDir=${baseDir}/publish/${filename}\n\nrm -rf ${webDir}\nmkdir ${webDir}\n\ntar -zxvf ${baseDir}/publish/${filename}.tar.gz -C ${webDir}/\nrm -f ${webDir}/appsettings.json && mv ${webDir}/appsettings.Prod.json ${webDir}/appsettings.json\n\n#\u5224\u65b7\u662f\u5426\u5b58\u5728\nCID=$(docker ps | grep "${containerName}" | awk \'{print $1}\')\necho $CID\nif [ "$CID" != "" ];then\n docker stop ${containerName}\n docker rm ${containerName}\n docker rmi ${containerName}\n#docker stop $CID\n#docker rm $CID\nfi\n\ncd ${webDir}/ && docker build -t ${containerName} .\ndocker run --name ${containerName} --restart=always -d -p ${port}:${port} --link myredis:myredis -v /etc/localtime:/etc/localtime:ro ${containerName}\n')),(0,a.kt)("blockquote",null,(0,a.kt)("p",{parentName:"blockquote"},"\u8fd9\u91cc\u7684\u903b\u8f91\u5c31\u662f\u89e3\u538b\uff0c\u7136\u540e ",(0,a.kt)("inlineCode",{parentName:"p"},"Docker")," \u76f8\u5173\u3002\u6bcf\u6b21\u6784\u5efa\u90fd\u662f\u5e26\u7740\u7248\u672c\u53f7\u6765\u7684\u3002")),(0,a.kt)("h2",{id:"3515-\u53cd\u9988\u4e0e\u5efa\u8bae"},"35.1.5 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,a.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,a.kt)("div",{parentName:"div",className:"admonition-heading"},(0,a.kt)("h5",{parentName:"div"},(0,a.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,a.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,a.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,a.kt)("div",{parentName:"div",className:"admonition-content"},(0,a.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,a.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}k.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/51c14d7f.c9a90df9.js b/handbook/build/assets/js/51c14d7f.c9a90df9.js new file mode 100644 index 00000000000..e6de89ad9c9 --- /dev/null +++ b/handbook/build/assets/js/51c14d7f.c9a90df9.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[8559],{3905:function(e,n,t){t.d(n,{Zo:function(){return s},kt:function(){return m}});var o=t(7294);function r(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function a(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);n&&(o=o.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,o)}return t}function i(e){for(var n=1;n=0||(r[t]=e[t]);return r}(e,n);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var d=o.createContext({}),c=function(e){var n=o.useContext(d),t=n;return e&&(t="function"==typeof e?e(n):i(i({},n),e)),t},s=function(e){var n=c(e.components);return o.createElement(d.Provider,{value:n},e.children)},p={inlineCode:"code",wrapper:function(e){var n=e.children;return o.createElement(o.Fragment,{},n)}},k=o.forwardRef((function(e,n){var t=e.components,r=e.mdxType,a=e.originalType,d=e.parentName,s=l(e,["components","mdxType","originalType","parentName"]),k=c(t),m=r,u=k["".concat(d,".").concat(m)]||k[m]||p[m]||a;return t?o.createElement(u,i(i({ref:n},s),{},{components:t})):o.createElement(u,i({ref:n},s))}));function m(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var a=t.length,i=new Array(a);i[0]=k;var l={};for(var d in n)hasOwnProperty.call(n,d)&&(l[d]=n[d]);l.originalType=e,l.mdxType="string"==typeof e?e:r,i[1]=l;for(var c=2;cDocker \u73af\u5883\u90e8\u7f72",id:"3511-\u5173\u4e8e\u5168-docker-\u73af\u5883\u90e8\u7f72",children:[]},{value:"35.1.2 \u5b89\u88c5 Docker \u7248 Jenkins",id:"3512-\u5b89\u88c5-docker-\u7248-jenkins",children:[{value:"35.1.2.1 \u4f7f\u7528 Dockerfile \u5236\u4f5c\u955c\u50cf",id:"35121-\u4f7f\u7528-dockerfile-\u5236\u4f5c\u955c\u50cf",children:[]},{value:"35.1.2.2 \u8fd0\u884c Jenkins:dotnet \u955c\u50cf",id:"35122-\u8fd0\u884c-jenkinsdotnet-\u955c\u50cf",children:[]}]},{value:"35.1.3 Jenkins \u7684\u81ea\u52a8\u5316\u90e8\u7f72",id:"3513-jenkins-\u7684\u81ea\u52a8\u5316\u90e8\u7f72",children:[{value:"35.1.3.1 \u7f16\u5199 Shell \u811a\u672c",id:"35131-\u7f16\u5199-shell-\u811a\u672c",children:[]}]},{value:"35.1.4 Jenkins \u7684\u81ea\u52a8\u5316\u8fdc\u7a0b\u90e8\u7f72",id:"3514-jenkins-\u7684\u81ea\u52a8\u5316\u8fdc\u7a0b\u90e8\u7f72",children:[{value:"35.1.4.1 \u5b89\u88c5\u63d2\u4ef6",id:"35141-\u5b89\u88c5\u63d2\u4ef6",children:[]},{value:"35.1.4.2 \u914d\u7f6e",id:"35142-\u914d\u7f6e",children:[]},{value:"35.1.4.3 \u5199\u811a\u672c",id:"35143-\u5199\u811a\u672c",children:[]},{value:"35.1.4.4 \u6784\u5efa\u540e\u64cd\u4f5c\uff08\u5173\u952e\uff09",id:"35144-\u6784\u5efa\u540e\u64cd\u4f5c\uff08\u5173\u952e\uff09",children:[]},{value:"35.1.4.5 \u8fdc\u7a0b\u6267\u884c",id:"35145-\u8fdc\u7a0b\u6267\u884c",children:[]}]},{value:"35.1.5 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"3515-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],p={toc:s};function k(e){var n=e.components,t=(0,r.Z)(e,i);return(0,a.kt)("wrapper",(0,o.Z)({},p,t,{components:n,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"3511-\u5173\u4e8e\u5168-docker-\u73af\u5883\u90e8\u7f72"},"35.1.1 \u5173\u4e8e\u5168 ",(0,a.kt)("inlineCode",{parentName:"h2"},"Docker")," \u73af\u5883\u90e8\u7f72"),(0,a.kt)("p",null,"\u5229\u7528\u62e5\u6709 ",(0,a.kt)("inlineCode",{parentName:"p"},".NET")," \u73af\u5883\u7684 ",(0,a.kt)("inlineCode",{parentName:"p"},"Jenkins"),"\uff0c\u8fdb\u884c\u6301\u7eed\u5316\u90e8\u7f72"),(0,a.kt)("h2",{id:"3512-\u5b89\u88c5-docker-\u7248-jenkins"},"35.1.2 \u5b89\u88c5 ",(0,a.kt)("inlineCode",{parentName:"h2"},"Docker")," \u7248 ",(0,a.kt)("inlineCode",{parentName:"h2"},"Jenkins")),(0,a.kt)("p",null,"\u6b63\u5e38\u5728 ",(0,a.kt)("inlineCode",{parentName:"p"},"Docker")," \u4e2d\u62c9\u53d6\u7684 ",(0,a.kt)("inlineCode",{parentName:"p"},"Jenkins:lts")," \u662f\u65e0\u6cd5\u6267\u884c ",(0,a.kt)("inlineCode",{parentName:"p"},"dotnet")," \u547d\u4ee4\u7684\uff08\u5c31\u7b97\u4f60\u5bbf\u4e3b\u673a\u6709 ",(0,a.kt)("inlineCode",{parentName:"p"},"dotnet")," \u73af\u5883\u3001",(0,a.kt)("inlineCode",{parentName:"p"},"docker")," \u4e2d\u4e5f\u6709 ",(0,a.kt)("inlineCode",{parentName:"p"},"dotnet")," \u73af\u5883\u4e5f\u4e0d\u53ef\u4ee5\uff09\uff0c\n\u6240\u4ee5\u6211\u4eec\u53ea\u80fd\u6784\u5efa\u4e00\u4e2a\u5305\u542b ",(0,a.kt)("inlineCode",{parentName:"p"},"dotnet")," \u7684\u955c\u50cf"),(0,a.kt)("h3",{id:"35121-\u4f7f\u7528-dockerfile-\u5236\u4f5c\u955c\u50cf"},"35.1.2.1 \u4f7f\u7528 Dockerfile \u5236\u4f5c\u955c\u50cf"),(0,a.kt)("p",null,"\u4f7f\u7528 ",(0,a.kt)("inlineCode",{parentName:"p"},"Dockerfile")," \u521b\u5efa\u5305\u542b ",(0,a.kt)("inlineCode",{parentName:"p"},"dotnet")," \u7684 ",(0,a.kt)("inlineCode",{parentName:"p"},"Jenkins")," \u955c\u50cf"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"\ud83d\udc49 \u7f16\u5199 ",(0,a.kt)("inlineCode",{parentName:"li"},"Dockerfile"))),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-bash"},'# \u5c01\u88c5Jenkins\u955c\u50cf\uff08\u5e26\u6709dotnet\u73af\u5883\u7684\uff09 sdk=5.1\nFROM jenkins/jenkins:lts\nUSER root\nWORKDIR /dotnet\nRUN wget -O dotnet.tar.gz https://download.visualstudio.microsoft.com/download/pr/820db713-c9a5-466e-b72a-16f2f5ed00e2/628aa2a75f6aa270e77f4a83b3742fb8/dotnet-sdk-5.0.100-linux-x64.tar.gz\nRUN tar zxf dotnet.tar.gz -C ./\nRUN rm -rf dotnet.tar.gz\nENV PATH="${PATH}:/dotnet:/var/jenkins_home/.dotnet/tools"\nENV DOTNET_ROOT="/dotnet"\nRUN apt update -y\nRUN apt install icu-devtools vim zip unzip -y\nRUN usermod -a -G root jenkins\nUSER jenkins\n')),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"\ud83d\udc49 \u547d\u4ee4\u89e3\u91ca")),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-bash"},"- 1. \u8fd9\u4e2aDocker\u955c\u50cf\u57fa\u4e8ejenkins\n- 2. \u8bbe\u7f6e\u5f53\u524d\u7528\u6237\u4e3aroot\uff0c\u56e0\u4e3a\u540e\u9762\u5b89\u88c5\u9700\u8981\u4f7f\u7528root\n- 3. \u8bbe\u7f6e\u5f53\u524d\u5de5\u4f5c\u76ee\u5f55\u4e3adotnet\n- 4. \u4e0b\u8f7ddotnet SDK\u5305\uff0c\u4fdd\u5b58\u4e3adotnet.tar.gz\u3002\u8fd9\u91cc\u8981\u6ce8\u610f\u4e0b\u8f7d\u6b63\u786e\u7248\u672c\u7684SDK\uff0c\u53ef\u524d\u5f80\u5fae\u8f6f\u5b98\u65b9\u7f51\u7ad9\u83b7\u53d6\u4e0b\u8f7d\u94fe\u63a5\uff1ahttps://dotnet.microsoft.com/download\n- 5. \u89e3\u538bdotnet SDK\u5230\u5f53\u524d\u76ee\u5f55\uff0c\u5373/dotnet\u76ee\u5f55\n- 6. \u5220\u9664dotnet SDK\u5305\n- 7. \u628adotnet\u76ee\u5f55\u548cdotnet tools\u76ee\u5f55\u6dfb\u52a0\u5230\u73af\u5883\u53d8\u91cfPATH\uff0c\u8fd9\u6837\u5c31\u53ef\u4ee5\u4f7f\u7528dotnet\u547d\u4ee4\u4e86\n- 8. \u8bbe\u7f6eDOTNET_ROOT\u53d8\u91cf\n- 9. \u66f4\u65b0\u6e90\n- 10. \u5b89\u88c5\u4e00\u4e9b\u5fc5\u9700\u7684\uff0c\u5e38\u7528\u7684\u5de5\u5177\u5305\uff0c\u5176\u4e2dicu-devtools\u662f\u8fd0\u884cdotnet\u9700\u8981\u7684\n- 11. \u4fee\u6539jenkins\u7528\u6237\u5230root\u9644\u52a0\u7ec4\n- 12. \u8bbe\u7f6e\u5f53\u524d\u7528\u6237\u4e3ajenkins\n")),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"\ud83d\udc49 \u6784\u5efa ",(0,a.kt)("inlineCode",{parentName:"li"},"Docker")," \u955c\u50cf ",(0,a.kt)("inlineCode",{parentName:"li"},"name=jenkins:dotnet"))),(0,a.kt)("p",null,(0,a.kt)("inlineCode",{parentName:"p"},"cd")," \u5230\u6839\u76ee\u5f55\u4e0b\uff08\u5fc5\u987b\u542b ",(0,a.kt)("inlineCode",{parentName:"p"},"Dockerfile"),"\uff09 \u53ea\u9700\u6784\u5efa\u547d\u4ee4\uff1a"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-bash"}," docker build -t jenkins:dotnet .\n")),(0,a.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,a.kt)("div",{parentName:"div",className:"admonition-heading"},(0,a.kt)("h5",{parentName:"div"},(0,a.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,a.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,a.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u6ce8\u610f")),(0,a.kt)("div",{parentName:"div",className:"admonition-content"},(0,a.kt)("p",{parentName:"div"},"\u7ed3\u5c3e ",(0,a.kt)("inlineCode",{parentName:"p"},".")," \u4e0d\u80fd\u7701\u7565"))),(0,a.kt)("h3",{id:"35122-\u8fd0\u884c-jenkinsdotnet-\u955c\u50cf"},"35.1.2.2 \u8fd0\u884c ",(0,a.kt)("inlineCode",{parentName:"h3"},"Jenkins:dotnet")," \u955c\u50cf"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-bash"},'docker run -d -p 8080:8080 -p 50000:50000 --name mjenkins \\\n --privileged=true \\\n --restart always \\\n -u root \\\n -e TZ="Asia/Shanghai" \\\n -v /mudata/jenkins:/var/jenkins_home \\\n -v /usr/bin/docker:/usr/bin/docker \\\n -v /var/run/docker.sock:/var/run/docker.sock \\\n -v /mudata/webroot/:/mudata/webroot \\\n jenkins:dotnet\n')),(0,a.kt)("p",null,"\u63a5\u4e0b\u6765\u5c31\u662f\u6bd4\u8f83\u4fd7\u5957\u7684\u5b89\u88c5 ",(0,a.kt)("inlineCode",{parentName:"p"},"Jenkins")," \u6b65\u9aa4\uff0c\u7f51\u4e0a\u8d44\u6599\u5f88\u591a\uff0c\u4e0d\u5c55\u5f00\u4e86\u3002"),(0,a.kt)("h2",{id:"3513-jenkins-\u7684\u81ea\u52a8\u5316\u90e8\u7f72"},"35.1.3 ",(0,a.kt)("inlineCode",{parentName:"h2"},"Jenkins")," \u7684\u81ea\u52a8\u5316\u90e8\u7f72"),(0,a.kt)("h3",{id:"35131-\u7f16\u5199-shell-\u811a\u672c"},"35.1.3.1 \u7f16\u5199 Shell \u811a\u672c"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-bash"},"# Jenkins \u6784\u5efa \u6d4b\u8bd5\u670d\n\necho '============\u67e5\u770b\u6253\u5305\u73af\u5883================'\npwd\nls\necho $PATH\n\nimage_version=`date +%Y%m%d%H%M`;\necho $image_version;\n\ndotnet --info\ndotnet --version\n\n# \u83b7\u53d6\u77ed\u7248\u672c\u53f7\nGITHASH=`git rev-parse --short HEAD`\n\necho '============================begin restore======================================='\ndotnet restore\necho '============================end restore======================================='\n\n#\u8981\u6784\u5efa\u7684\u89e3\u51b3\u65b9\u6848\u540d\u79f0\nsolutionName=MUSaas.SCM.BasicData\n#docker run\u7684\u5bb9\u5668\u540d\u79f0\ncontainerName=jenkinsscmbasic\n#\u6307\u5b9arun\u7684\u7aef\u53e3\nport=9994\n#.sln\u6587\u4ef6\u5168\u8def\u5f84\n#solutionDir=20-Solution/${solutionName}.sln\n#.csproj\u6587\u4ef6\u5168\u8def\u5f84\ncsprojDir=${solutionName}/${solutionName}.csproj\n\n#\u9879\u76ee\u53d1\u5e03\u7684\u76ee\u5f55\nwebDir=/mudata/webroot/jenkins/publish/webapp\n\n#\u5f52\u6863\u76ee\u5f55\narchivesDir=/mudata/webroot/jenkins/publish/archives\n\n#\u6e05\u7a7a\u6587\u4ef6\u5939\nrm -rf ${webDir}/${JOB_NAME}/*\n\n#\u53d1\u5e03\u7f51\u7ad9\u5230webDir\ndotnet publish ${JENKINS_HOME}/workspace/${JOB_NAME}/${csprojDir} -c Release -o ${webDir}/${JOB_NAME} /p:Version=1.0.${BUILD_NUMBER}\n#\u590d\u5236\u914d\u7f6e\u6587\u4ef6\n#cp -rf /vdb1/jenkins/DotNetCoreWebPublishToDockerCommonConfigs/* ${webDir}/${JOB_NAME}/\n\n#\u5224\u65b7\u662f\u5426\u5b58\u5728\nCID=$(docker ps | grep \"${containerName}\" | awk '{print $1}')\necho $CID\nif [ \"$CID\" != \"\" ];then\n docker stop ${containerName}\n docker rm ${containerName}\n docker rmi ${containerName}\n#docker stop $CID\n#docker rm $CID\nfi\n\n\n#\u901a\u8fc7Dockerfile\u91cd\u65b0\u6784\u5efa\u955c\u50cf\ndocker build -t ${containerName} ${webDir}/${JOB_NAME}/.\n#docker run\u5bb9\u5668\u5e76\u7ed1\u5b9a\u5230\u7aef\u53e3\n#docker run -d -p ${port}:80 --name ${containerName} ${containerName}\ndocker run --name ${containerName} --restart=always -d -p ${port}:${port} -v /etc/localtime:/etc/localtime:ro ${containerName}\necho \"success!\"\n\n")),(0,a.kt)("blockquote",null,(0,a.kt)("p",{parentName:"blockquote"},"\u5c31\u8fd9\u6837\u81ea\u52a8\u5316\u90e8\u7f72\u5c31\u597d\u4e86\u3002 \u6d4b\u8bd5\u670d\u7684 ",(0,a.kt)("inlineCode",{parentName:"p"},"Jenkins")," \u5c06\u6e90\u7801\u62c9\u4e0b\u6765\uff0c",(0,a.kt)("inlineCode",{parentName:"p"},"Publish\uff0cDocker Build\uff0cDocker Run"),"\u3002")),(0,a.kt)("blockquote",null,(0,a.kt)("p",{parentName:"blockquote"},"\u8fd9\u91cc\u60f3\u8981\u53d1\u5e03\u7684\u65f6\u5019\uff0c\u6bcf\u6b21\u90fd\u9700\u8981\u624b\u52a8\u53bb\u70b9\u51fb\u201c\u6784\u5efa\u201d\u624d\u4f1a\u6267\u884c\u3002\u4e5f\u53ef\u4ee5\u505a\u6210\u5f53\u5206\u652f\u5408\u5e76\u6210\u529f\u540e\u81ea\u52a8\u8fd0\u884c\u3002\u53cd\u6b63 ",(0,a.kt)("inlineCode",{parentName:"p"},"Jenkins")," \u88c5\u597d\u4e4b\u540e\uff0c\u4f60\u60f3\u8981\u4ec0\u4e48\u90fd\u80fd\u73a9\u8d77\u6765\u3002\u6bd4\u5982\u6307\u5b9a\u5206\u652f\u63d0\u4ea4\u540e\u81ea\u52a8\u201c\u6784\u5efa\u201d\u3001\u6bd4\u5982\u6784\u5efa\u6210\u529f\u540e\u5408\u5e76\u5230 Master \u7b49\u7b49")),(0,a.kt)("h2",{id:"3514-jenkins-\u7684\u81ea\u52a8\u5316\u8fdc\u7a0b\u90e8\u7f72"},"35.1.4 ",(0,a.kt)("inlineCode",{parentName:"h2"},"Jenkins")," \u7684\u81ea\u52a8\u5316\u8fdc\u7a0b\u90e8\u7f72"),(0,a.kt)("h3",{id:"35141-\u5b89\u88c5\u63d2\u4ef6"},"35.1.4.1 \u5b89\u88c5\u63d2\u4ef6"),(0,a.kt)("blockquote",null,(0,a.kt)("p",{parentName:"blockquote"},(0,a.kt)("inlineCode",{parentName:"p"},"Publish Over SSH"))),(0,a.kt)("h3",{id:"35142-\u914d\u7f6e"},"35.1.4.2 \u914d\u7f6e"),(0,a.kt)("blockquote",null,(0,a.kt)("p",{parentName:"blockquote"},"\u7cfb\u7edf\u7ba1\u7406 => ",(0,a.kt)("inlineCode",{parentName:"p"},"Publish over SSH"))),(0,a.kt)("h3",{id:"35143-\u5199\u811a\u672c"},"35.1.4.3 \u5199\u811a\u672c"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-bash"},"# Jenkins \u6784\u5efa \u6b63\u5f0f\u670d\n\necho '============\u67e5\u770b\u6253\u5305\u73af\u5883================'\npwd\nls\necho $PATH\n\nimage_version=`date +%Y%m%d%H%M`;\necho $image_version;\n\ndotnet --info\ndotnet --version\n\n# \u83b7\u53d6\u77ed\u7248\u672c\u53f7\nGITHASH=`git rev-parse --short HEAD`\n\necho '============================begin restore======================================='\ndotnet restore\necho '============================end restore======================================='\n\n#\u8981\u6784\u5efa\u7684\u89e3\u51b3\u65b9\u6848\u540d\u79f0\nsolutionName=MUSaas.SCM.BulkOrder\n#docker run\u7684\u5bb9\u5668\u540d\u79f0\ncontainerName=jenkinsscmbulk\n#\u6307\u5b9arun\u7684\u7aef\u53e3\nport=9986\n#.csproj\u6587\u4ef6\u5168\u8def\u5f84\ncsprojDir=/${solutionName}/${solutionName}.csproj\n\n#\u9879\u76ee\u53d1\u5e03\u7684\u76ee\u5f55\nwebDir=/mudata/webroot/jenkins/publish/webapp\n\n#\u5f52\u6863\u76ee\u5f55\narchivesDir=/mudata/webroot/jenkins/publish/archives\n\n#\u6e05\u7a7a\u6587\u4ef6\u5939\nrm -rf ${webDir}/${JOB_NAME}/*\n\n#\u53d1\u5e03\u7f51\u7ad9\u5230webDir\ndotnet publish ${JENKINS_HOME}/workspace/${JOB_NAME}/${csprojDir} -c Release -o ${webDir}/${JOB_NAME} /p:Version=1.0.${BUILD_NUMBER}\n#\u590d\u5236\u914d\u7f6e\u6587\u4ef6\n#cp -rf /vdb1/jenkins/DotNetCoreWebPublishToDockerCommonConfigs/* ${webDir}/${JOB_NAME}/\n\n\n#\u6784\u5efa\u8fdc\u7a0b\u5305\n\nrm -rf ${JENKINS_HOME}/workspace/${JOB_NAME}/publish\nmkdir ${JENKINS_HOME}/workspace/${JOB_NAME}/publish\n\ntar -czvf ${JENKINS_HOME}/workspace/${JOB_NAME}/publish/${JOB_NAME}.${BUILD_NUMBER}.tar.gz -C ${webDir}/${JOB_NAME} .\n\necho \"success!\"\n")),(0,a.kt)("blockquote",null,(0,a.kt)("p",{parentName:"blockquote"},"\u5927\u6982\u903b\u8f91\u5c31\u662f\u53d1\u5e03\u540e\uff0c\u6253\u4e2a\u5305\u3002\u7136\u540e\u4e22\u7ed9\u8fdc\u7a0b\uff0c\u8fdc\u7a0b\u518d\u6267\u884c ",(0,a.kt)("inlineCode",{parentName:"p"},"shell"))),(0,a.kt)("blockquote",null,(0,a.kt)("p",{parentName:"blockquote"},"\u6ce8\u610f\u8fd9\u91cc\u4e00\u5b9a\u8981\u53d1\u5e03\u5230\u81ea\u5df1\u7684 ",(0,a.kt)("inlineCode",{parentName:"p"},"workspace")," \u4e0b\uff0c\u9632\u6b62\u4e0b\u4e00\u6b65\u6b7b\u6d3b\u627e\u4e0d\u5230\u4f4d\u7f6e\u3002\u5982\u679c\u627e\u4e0d\u5230\u4f4d\u7f6e\uff0c\u53ea\u80fd\u6162\u6162\u7528 ",(0,a.kt)("inlineCode",{parentName:"p"},"ls")," \u547d\u4ee4\uff0c\u4e00\u7ea7\u4e00\u7ea7\u53bb\u6d4b\uff0c\u5f88\u9ebb\u70e6")),(0,a.kt)("h3",{id:"35144-\u6784\u5efa\u540e\u64cd\u4f5c\uff08\u5173\u952e\uff09"},"35.1.4.4 \u6784\u5efa\u540e\u64cd\u4f5c\uff08\u5173\u952e\uff09"),(0,a.kt)("p",null,"\u9009\u62e9 ",(0,a.kt)("inlineCode",{parentName:"p"},"Send Build artifacts over SSH")),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-bash"},"Source files: publish/\nRemove prefix(\u4e0d\u586b)\nRemote directory:/mudata/webroot/publish/\nExec command:bash /mudata/shell/publish.sh ${JOB_NAME} jenkinsscmbase ${JOB_NAME}.${BUILD_NUMBER} 9994\n")),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},"\u9009\u62e9\u81ea\u5df1\u7684 SSH \u670d\u52a1\u5668"),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"Source files"),"\uff1a\u4e00\u5b9a\u662f ",(0,a.kt)("inlineCode",{parentName:"li"},"workspace")," \u4e0b\u7684\u5730\u5740"),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"Remote directory"),"\uff1a\u8fdc\u7a0b\u5730\u5740\uff0c\u4ece\u6839\u76ee\u5f55\u5f00\u59cb"),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"Exec command"),"\uff1a\u8981\u6267\u884c\u7684 shell\u3002\u8fd9\u91cc\u6240\u6709\u7684 ",(0,a.kt)("inlineCode",{parentName:"li"},"Jenkins")," \u73af\u5883\u53d8\u91cf\u90fd\u53ef\u4ee5\u7528")),(0,a.kt)("h3",{id:"35145-\u8fdc\u7a0b\u6267\u884c"},"35.1.4.5 \u8fdc\u7a0b\u6267\u884c"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-bash",metastring:'title="publish.sh"',title:'"publish.sh"'},'# Jenkins Prod\u670d \u8c03\u7528\u811a\u672c\nsolutionName=$1\ncontainerName=$2\nfilename=$3\nport=$4\n#.publis\necho ${solutionName}\necho ${containerName}\necho ${filename}\nbaseDir=/mudata/webroot/publish\n\nwebDir=${baseDir}/publish/${filename}\n\nrm -rf ${webDir}\nmkdir ${webDir}\n\ntar -zxvf ${baseDir}/publish/${filename}.tar.gz -C ${webDir}/\nrm -f ${webDir}/appsettings.json && mv ${webDir}/appsettings.Prod.json ${webDir}/appsettings.json\n\n#\u5224\u65b7\u662f\u5426\u5b58\u5728\nCID=$(docker ps | grep "${containerName}" | awk \'{print $1}\')\necho $CID\nif [ "$CID" != "" ];then\n docker stop ${containerName}\n docker rm ${containerName}\n docker rmi ${containerName}\n#docker stop $CID\n#docker rm $CID\nfi\n\ncd ${webDir}/ && docker build -t ${containerName} .\ndocker run --name ${containerName} --restart=always -d -p ${port}:${port} --link myredis:myredis -v /etc/localtime:/etc/localtime:ro ${containerName}\n')),(0,a.kt)("blockquote",null,(0,a.kt)("p",{parentName:"blockquote"},"\u8fd9\u91cc\u7684\u903b\u8f91\u5c31\u662f\u89e3\u538b\uff0c\u7136\u540e ",(0,a.kt)("inlineCode",{parentName:"p"},"Docker")," \u76f8\u5173\u3002\u6bcf\u6b21\u6784\u5efa\u90fd\u662f\u5e26\u7740\u7248\u672c\u53f7\u6765\u7684\u3002")),(0,a.kt)("h2",{id:"3515-\u53cd\u9988\u4e0e\u5efa\u8bae"},"35.1.5 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,a.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,a.kt)("div",{parentName:"div",className:"admonition-heading"},(0,a.kt)("h5",{parentName:"div"},(0,a.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,a.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,a.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,a.kt)("div",{parentName:"div",className:"admonition-content"},(0,a.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,a.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}k.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/51fb75ab.66ac00df.js b/handbook/build/assets/js/51fb75ab.66ac00df.js new file mode 100644 index 00000000000..cfff7417a96 --- /dev/null +++ b/handbook/build/assets/js/51fb75ab.66ac00df.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[613],{546:function(e,t,r){r.d(t,{Z:function(){return d}});var l=r(7462),a=r(3366),n=r(7294),o=r(6010),c=r(6742),s=r(941),m=r(4996),i="footerLogoLink_qW4Z",f=["to","href","label","prependBaseUrlToHref"];function u(e){var t=e.to,r=e.href,o=e.label,s=e.prependBaseUrlToHref,i=(0,a.Z)(e,f),u=(0,m.Z)(t),_=(0,m.Z)(r,{forcePrependBaseUrl:!0});return n.createElement(c.Z,(0,l.Z)({className:"footer__link-item"},r?{target:"_blank",rel:"noopener noreferrer",href:s?_:r}:{to:u},i),o)}var _=function(e){var t=e.url,r=e.alt;return n.createElement("img",{className:"footer__logo",alt:r,src:t,style:{background:"#fff",padding:"5px 10px"}})};var d=function(){var e=(0,s.LU)().footer,t=e||{},r=t.copyright,l=t.links,a=void 0===l?[]:l,c=t.logo,f=void 0===c?{}:c,d=(0,m.Z)(f.src);return e?n.createElement("footer",{className:(0,o.Z)("footer",{"footer--dark":"dark"===e.style})},n.createElement("div",{className:"container"},a&&a.length>0&&n.createElement("div",{className:"row footer__links"},a.map((function(e,t){return n.createElement("div",{key:t,className:"col footer__col"},null!=e.title?n.createElement("h4",{className:"footer__title"},e.title):null,null!=e.items&&Array.isArray(e.items)&&e.items.length>0?n.createElement("ul",{className:"footer__items"},e.items.map((function(e,t){return e.html?n.createElement("li",{key:t,className:"footer__item",dangerouslySetInnerHTML:{__html:e.html}}):n.createElement("li",{key:e.href||e.to,className:"footer__item"},n.createElement(u,e))}))):null)}))),(f||r)&&n.createElement("div",{className:"footer__bottom text--center"},f&&f.src&&n.createElement("div",{className:"margin-bottom--sm"},f.href?n.createElement("a",{href:f.href,target:"_blank",rel:"noopener noreferrer",className:i},n.createElement(_,{alt:f.alt,url:d})):n.createElement(_,{alt:f.alt,url:d})),r?n.createElement("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:r}}):null))):null}}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/52821183.651248f8.js b/handbook/build/assets/js/52821183.d391b7e1.js similarity index 57% rename from handbook/build/assets/js/52821183.651248f8.js rename to handbook/build/assets/js/52821183.d391b7e1.js index cab034b1069..7b817d02c23 100644 --- a/handbook/build/assets/js/52821183.651248f8.js +++ b/handbook/build/assets/js/52821183.d391b7e1.js @@ -1 +1 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[8445],{3905:function(e,t,n){n.d(t,{Zo:function(){return s},kt:function(){return d}});var r=n(7294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var p=r.createContext({}),l=function(e){var t=r.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},s=function(e){var t=l(e.components);return r.createElement(p.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},f=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,a=e.originalType,p=e.parentName,s=c(e,["components","mdxType","originalType","parentName"]),f=l(n),d=o,m=f["".concat(p,".").concat(d)]||f[d]||u[d]||a;return n?r.createElement(m,i(i({ref:t},s),{},{components:n})):r.createElement(m,i({ref:t},s))}));function d(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=n.length,i=new Array(a);i[0]=f;var c={};for(var p in t)hasOwnProperty.call(t,p)&&(c[p]=t[p]);c.originalType=e,c.mdxType="string"==typeof e?e:o,i[1]=c;for(var l=2;l=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var p=r.createContext({}),l=function(e){var t=r.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},s=function(e){var t=l(e.components);return r.createElement(p.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},f=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,a=e.originalType,p=e.parentName,s=c(e,["components","mdxType","originalType","parentName"]),f=l(n),d=o,m=f["".concat(p,".").concat(d)]||f[d]||u[d]||a;return n?r.createElement(m,i(i({ref:t},s),{},{components:n})):r.createElement(m,i({ref:t},s))}));function d(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=n.length,i=new Array(a);i[0]=f;var c={};for(var p in t)hasOwnProperty.call(t,p)&&(c[p]=t[p]);c.originalType=e,c.mdxType="string"==typeof e?e:o,i[1]=c;for(var l=2;l=0||(r[a]=e[a]);return r}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(t=0;t=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var c=t.createContext({}),d=function(e){var n=t.useContext(c),a=n;return e&&(a="function"==typeof e?e(n):o(o({},n),e)),a},s=function(e){var n=d(e.components);return t.createElement(c.Provider,{value:n},e.children)},p={inlineCode:"code",wrapper:function(e){var n=e.children;return t.createElement(t.Fragment,{},n)}},u=t.forwardRef((function(e,n){var a=e.components,r=e.mdxType,i=e.originalType,c=e.parentName,s=l(e,["components","mdxType","originalType","parentName"]),u=d(a),m=r,y=u["".concat(c,".").concat(m)]||u[m]||p[m]||i;return a?t.createElement(y,o(o({ref:n},s),{},{components:a})):t.createElement(y,o({ref:n},s))}));function m(e,n){var a=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var i=a.length,o=new Array(i);o[0]=u;var l={};for(var c in n)hasOwnProperty.call(n,c)&&(l[c]=n[c]);l.originalType=e,l.mdxType="string"==typeof e?e:r,o[1]=l;for(var d=2;dClay \u5bf9\u8c61",id:"292-clay-\u5bf9\u8c61",children:[]},{value:"29.3 \u5982\u4f55\u4f7f\u7528",id:"293-\u5982\u4f55\u4f7f\u7528",children:[{value:"29.3.1 \u521b\u5efa\u4e00\u4e2a\u5bf9\u8c61",id:"2931-\u521b\u5efa\u4e00\u4e2a\u5bf9\u8c61",children:[]},{value:"29.3.2 \u8bfb\u53d6/\u83b7\u53d6\u5c5e\u6027",id:"2932-\u8bfb\u53d6\u83b7\u53d6\u5c5e\u6027",children:[]},{value:"29.3.3 \u65b0\u589e\u5c5e\u6027",id:"2933-\u65b0\u589e\u5c5e\u6027",children:[]},{value:"29.3.4 \u66f4\u65b0\u5c5e\u6027\u503c",id:"2934-\u66f4\u65b0\u5c5e\u6027\u503c",children:[]},{value:"29.3.5 \u5220\u9664\u5c5e\u6027",id:"2935-\u5220\u9664\u5c5e\u6027",children:[]},{value:"29.3.6 \u5224\u65ad\u5c5e\u6027\u662f\u5426\u5b58\u5728",id:"2936-\u5224\u65ad\u5c5e\u6027\u662f\u5426\u5b58\u5728",children:[]},{value:"29.3.7 \u904d\u5386\u5bf9\u8c61",id:"2937-\u904d\u5386\u5bf9\u8c61",children:[]},{value:"29.3.8 \u8f6c\u6362\u6210\u5177\u4f53\u5bf9\u8c61",id:"2938-\u8f6c\u6362\u6210\u5177\u4f53\u5bf9\u8c61",children:[]},{value:"29.3.9 \u56fa\u5316\u7c98\u571f",id:"2939-\u56fa\u5316\u7c98\u571f",children:[]},{value:"29.3.10 \u8f93\u51fa JSON",id:"29310-\u8f93\u51fa-json",children:[]},{value:"29.3.11 \u8f93\u51fa XML \u5bf9\u8c61",id:"29311-\u8f93\u51fa-xml-\u5bf9\u8c61",children:[]},{value:"29.3.12 \u5173\u952e\u5b57\u5904\u7406",id:"29312-\u5173\u952e\u5b57\u5904\u7406",children:[]},{value:"29.3.13 \u8f6c\u6362\u6210\u5b57\u5178\u7c7b\u578b",id:"29313-\u8f6c\u6362\u6210\u5b57\u5178\u7c7b\u578b",children:[]}]},{value:"29.4 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"294-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],p={toc:s};function u(e){var n=e.components,a=(0,r.Z)(e,o);return(0,i.kt)("wrapper",(0,t.Z)({},p,a,{components:n,mdxType:"MDXLayout"}),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7248\u672c\u8bf4\u660e")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u4ee5\u4e0b\u5185\u5bb9\u4ec5\u9650 ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion 2.1.12 +")," \u7248\u672c\u4f7f\u7528\u3002"))),(0,i.kt)("h2",{id:"291-\u5173\u4e8e\u7c98\u571f\u5bf9\u8c61"},"29.1 \u5173\u4e8e\u7c98\u571f\u5bf9\u8c61"),(0,i.kt)("p",null,"\u7c98\u571f\u5bf9\u8c61\u662f ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u81ea\u521b\u7684\u4e00\u79cd\u6982\u5ff5\uff0c\u662f\u4e00\u79cd\u53ef\u4ee5\u6a21\u62df\u5f31\u8bed\u8a00\u7279\u6027\u7684\u5bf9\u8c61\uff0c\u7c7b\u4f3c ",(0,i.kt)("inlineCode",{parentName:"p"},"Javascript")," \u4e00\u6837\u64cd\u4f5c\u5bf9\u8c61\u3002\u53ea\u9700\u901a\u8fc7 ",(0,i.kt)("inlineCode",{parentName:"p"},"Clay")," \u7c7b\u521d\u59cb\u5316\u5373\u53ef\u3002"),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"\u4e3a\u4ec0\u4e48\u8d77\u540d\u4e3a \u201c\u7c98\u571f\u201d \u5462\uff1f\u56e0\u4e3a\u8fd9\u4e2a\u5bf9\u8c61\u53ef\u4ee5\u81ea\u7531\u7684\u6dfb\u52a0\u5c5e\u6027\uff0c\u79fb\u9664\u5c5e\u6027\uff0c\u53c8\u53ef\u4ee5\u56fa\u5316\u6210\u4efb\u4f55\u5bf9\u8c61\uff0c\u5177\u6709\u53ef\u62d3\u5c55\u3001\u53ef\u5851\u9020\u7684\u7279\u70b9\u3002")),(0,i.kt)("h3",{id:"2911-\u4f7f\u7528\u573a\u666f"},"29.1.1 \u4f7f\u7528\u573a\u666f"),(0,i.kt)("p",null,"\u7c98\u571f\u5bf9\u8c61\u5e38\u7528\u4e8e\u9700\u8981\u52a8\u6001\u6784\u5efa\u5bf9\u8c61\u7684\u5730\u65b9\uff0c\u5982 ",(0,i.kt)("inlineCode",{parentName:"p"},"CMS")," \u7cfb\u7edf\u7684 ",(0,i.kt)("inlineCode",{parentName:"p"},"ViewModel"),"\uff0c\u6216\u8005\u8fd0\u884c\u65f6\u521b\u5efa\u4e00\u4e2a\u65b0\u7684\u5bf9\u8c61\uff0c\u6216\u8005\u8bf7\u6c42\u7b2c\u4e09\u65b9 ",(0,i.kt)("inlineCode",{parentName:"p"},"API")," \u60c5\u51b5\u3002"),(0,i.kt)("h3",{id:"2912-\u5173\u4e8e\u6027\u80fd"},"29.1.2 \u5173\u4e8e\u6027\u80fd"),(0,i.kt)("p",null,"\u7c98\u571f\u6027\u80fd\u5b9e\u9645\u4e0a\u5e76\u4e0d\u9ad8\u6548\uff0c\u4f46\u662f\u6027\u80fd\u4e5f\u5e76\u4e0d\u4f4e\u4e0b\uff0c\u53ea\u4e0d\u8fc7\u7565\u8f93\u4e8e\u5f3a\u7c7b\u578b\u8c03\u7528\u3002\u4ec0\u4e48\u65f6\u5019\u4f7f\u7528\u53ef\u4ee5\u770b\u4ee5\u4e0a\u7684\u3010\u4f7f\u7528\u573a\u666f\u3011\u3002"),(0,i.kt)("h2",{id:"292-clay-\u5bf9\u8c61"},"29.2 ",(0,i.kt)("inlineCode",{parentName:"h2"},"Clay")," \u5bf9\u8c61"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Clay")," \u5bf9\u8c61\u662f\u7ee7\u627f\u81ea ",(0,i.kt)("inlineCode",{parentName:"p"},"DynamicObject")," \u7684\u4e00\u4e2a\u7279\u6b8a\u5bf9\u8c61\uff0c\u63d0\u4f9b\u4e86\u50cf\u5f31\u8bed\u8a00\u4e00\u6837\u64cd\u4f5c\u5bf9\u8c61\u7684\u65b9\u6cd5\u53ca\u7d22\u5f15\u3002"),(0,i.kt)("h2",{id:"293-\u5982\u4f55\u4f7f\u7528"},"29.3 \u5982\u4f55\u4f7f\u7528"),(0,i.kt)("h3",{id:"2931-\u521b\u5efa\u4e00\u4e2a\u5bf9\u8c61"},"29.3.1 \u521b\u5efa\u4e00\u4e2a\u5bf9\u8c61"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// \u521b\u5efa\u4e00\u4e2a\u7a7a\u7684\u7c98\u571f\u5bf9\u8c61\ndynamic clay = new Clay();\n\n// \u4ece\u73b0\u6709\u7684\u5bf9\u8c61\u521b\u5efa\ndynamic clay2 = Clay.Object(new {});\n\n// \u4ece json \u5b57\u7b26\u4e32\u521b\u5efa\uff0c\u53ef\u7528\u4e8e\u7b2c\u4e09\u65b9 API \u5bf9\u63a5\uff0c\u975e\u5e38\u6709\u7528\ndynamic clay3 = Clay.Parse(@"{""foo"":""json"", ""bar"":100, ""nest"":{ ""foobar"":true } }");\n')),(0,i.kt)("h3",{id:"2932-\u8bfb\u53d6\u83b7\u53d6\u5c5e\u6027"},"29.3.2 \u8bfb\u53d6/\u83b7\u53d6\u5c5e\u6027"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'dynamic clay = Clay.Object(new\n{\n Foo = "json",\n Bar = 100,\n Nest = new\n {\n Foobar = true\n }\n});\n\nvar r1 = clay.Foo; // "json" - string\u7c7b\u578b\nvar r2 = clay.Bar; // 100 - double\u7c7b\u578b\nvar r3 = clay.Nest.Foobar; // true - bool\u7c7b\u578b\nvar r4 = clay["Nest"]["Foobar"]; // \u8fd8\u53ef\u4ee5\u548c Javascript \u4e00\u6837\u901a\u8fc7\u7d22\u5f15\u5668\u83b7\u53d6\n')),(0,i.kt)("h3",{id:"2933-\u65b0\u589e\u5c5e\u6027"},"29.3.3 \u65b0\u589e\u5c5e\u6027"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'dynamic clay = Clay.Object(new\n{\n Foo = "json",\n Bar = 100,\n Nest = new\n {\n Foobar = true\n }\n});\n\n// \u65b0\u589e\nclay.Arr = new string[] { "NOR", "XOR" }; // \u6dfb\u52a0\u4e00\u4e2a\u6570\u7ec4\nclay.Obj1 = new City { }; // \u65b0\u589e\u4e00\u4e2a\u5b9e\u4f8b\u5bf9\u8c61\nclay.Obj2 = new { Foo = "abc", Bar = 100 }; // \u65b0\u589e\u4e00\u4e2a\u533f\u540d\u7c7b\n')),(0,i.kt)("h3",{id:"2934-\u66f4\u65b0\u5c5e\u6027\u503c"},"29.3.4 \u66f4\u65b0\u5c5e\u6027\u503c"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'dynamic clay = Clay.Object(new\n{\n Foo = "json",\n Bar = 100,\n Nest = new\n {\n Foobar = true\n }\n});\n\n// \u66f4\u65b0\nclay.Foo = "Furion";\nclay["Nest"].Foobar = false;\nclay.Nest["Foobar"] = true;\n')),(0,i.kt)("h3",{id:"2935-\u5220\u9664\u5c5e\u6027"},"29.3.5 \u5220\u9664\u5c5e\u6027"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'dynamic clay = Clay.Object(new\n{\n Foo = "json",\n Bar = 100,\n Nest = new\n {\n Foobar = true\n },\n Arr = new string[] { "NOR", "XOR" }\n});\n\n// \u5220\u9664\u64cd\u4f5c\nclay.Delete("Foo"); // \u901a\u8fc7 Delete \u65b9\u6cd5\u5220\u9664\nclay.Arr.Delete(0); // \u652f\u6301\u6570\u7ec4 Delete \u7d22\u5f15\u5220\u9664\nclay("Bar"); // \u652f\u6301\u76f4\u63a5\u901a\u8fc7\u5bf9\u8c61\u4f5c\u4e3a\u65b9\u6cd5\u5220\u9664\nclay.Arr(1); // \u652f\u6301\u6570\u7ec4\u4f5c\u4e3a\u65b9\u6cd5\u5220\u9664\n')),(0,i.kt)("h3",{id:"2936-\u5224\u65ad\u5c5e\u6027\u662f\u5426\u5b58\u5728"},"29.3.6 \u5224\u65ad\u5c5e\u6027\u662f\u5426\u5b58\u5728"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'dynamic clay = Clay.Object(new\n{\n Foo = "json",\n Bar = 100,\n Nest = new\n {\n Foobar = true\n },\n Arr = new string[] { "NOR", "XOR" }\n});\n\n// \u5224\u65ad\u5c5e\u6027\u662f\u5426\u5b58\u5728\nvar a = clay.IsDefined("Foo"); // true\nvar b = clay.IsDefined("Foooo"); // false\nvar c = clay.Foo(); // true\nvar d = clay.Foooo(); // false;\n')),(0,i.kt)("h3",{id:"2937-\u904d\u5386\u5bf9\u8c61"},"29.3.7 \u904d\u5386\u5bf9\u8c61"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'dynamic clay = Clay.Object(new\n{\n Foo = "json",\n Bar = 100,\n Nest = new\n {\n Foobar = true\n },\n Arr = new string[] { "NOR", "XOR" }\n});\n\n// \u904d\u5386\u6570\u7ec4\nforeach (string item in clay.Arr)\n{\n Console.WriteLine(item); // NOR, XOR\n}\n\n// \u904d\u5386\u6574\u4e2a\u5bf9\u8c61\u5c5e\u6027\u53ca\u503c\uff0c\u7c7b\u4f3c JavaScript \u7684 for (var p in obj)\nforeach (KeyValuePair item in clay)\n{\n Console.WriteLine(item.Key + ":" + item.Value); // Foo:json, Bar: 100, Nest: { "Foobar":true}, Arr:["NOR","XOR"]\n}\n')),(0,i.kt)("h3",{id:"2938-\u8f6c\u6362\u6210\u5177\u4f53\u5bf9\u8c61"},"29.3.8 \u8f6c\u6362\u6210\u5177\u4f53\u5bf9\u8c61"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'dynamic clay = new Clay();\nclay.Arr = new string[] { "Furion", "Fur" };\n\n// \u6570\u7ec4\u8f6c\u6362\u793a\u4f8b\nvar a1 = clay.Arr.Deserialize(); // \u901a\u8fc7 Deserialize \u65b9\u6cd5\nvar a2 = (string[])clay.Arr; // \u5f3a\u5236\u8f6c\u6362\nstring[] a3 = clay.Arr; // \u58f0\u660e\u65b9\u5f0f\n\n// \u5bf9\u8c61\u8f6c\u6362\u793a\u4f8b\nclay.City = new City { Id = 1, Name = "\u4e2d\u5c71\u5e02" };\nvar c1 = clay.City.Deserialize(); // \u901a\u8fc7 Deserialize \u65b9\u6cd5\nvar c2 = (City)clay.City; // \u5f3a\u5236\u8f6c\u6362\nCity c3 = clay.City; // \u58f0\u660e\u65b9\u5f0f\n')),(0,i.kt)("h3",{id:"2939-\u56fa\u5316\u7c98\u571f"},"29.3.9 \u56fa\u5316\u7c98\u571f"),(0,i.kt)("p",null,"\u56fa\u5316\u7c98\u571f\u5728\u5f88\u591a\u65f6\u5019\u548c\u5e8f\u5217\u5316\u5f88\u50cf\uff0c\u4f46\u662f\u5982\u679c\u76f4\u63a5\u8c03\u7528 ",(0,i.kt)("inlineCode",{parentName:"p"},"Deserialize")," \u6216 ",(0,i.kt)("inlineCode",{parentName:"p"},"Deserialize")," \u65e0\u6cd5\u8fd4\u56de\u5b9e\u9645\u7c7b\u578b\uff0c\u6240\u4ee5\u5c31\u6709\u4e86\u56fa\u5316\u7c7b\u578b\u7684\u529f\u80fd\uff0c\u5982\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"// \u8fd4\u56de object\nvar obj = clay.Solidify();\n\n// \u8fd4\u56de dynamic\nvar obj1 = clay.Solidify();\n\n// \u8fd4\u56de\u5176\u4ed6\u4efb\u610f\u7c7b\u578b\nvar obj2 = clay.Solidify();\n")),(0,i.kt)("h3",{id:"29310-\u8f93\u51fa-json"},"29.3.10 \u8f93\u51fa ",(0,i.kt)("inlineCode",{parentName:"h3"},"JSON")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'dynamic clay = Clay.Object(new\n{\n Foo = "json",\n Bar = 100,\n Nest = new\n {\n Foobar = true\n },\n Arr = new string[] { "NOR", "XOR" }\n});\n\n// \u8f93\u51fa JSON\nvar json = clay.ToString(); // "{\\"Foo\\":\\"json\\",\\"Bar\\":100,\\"Nest\\":{\\"Foobar\\":true},\\"Arr\\":[\\"NOR\\",\\"XOR\\"]}"\n')),(0,i.kt)("h3",{id:"29311-\u8f93\u51fa-xml-\u5bf9\u8c61"},"29.3.11 \u8f93\u51fa ",(0,i.kt)("inlineCode",{parentName:"h3"},"XML")," \u5bf9\u8c61"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'dynamic clay = Clay.Object(new\n{\n Foo = "json",\n Bar = 100,\n Nest = new\n {\n Foobar = true\n },\n Arr = new string[] { "NOR", "XOR" }\n});\n\n// \u8f93\u51fa XElement\nvar xml = clay.XmlElement;\n')),(0,i.kt)("h3",{id:"29312-\u5173\u952e\u5b57\u5904\u7406"},"29.3.12 \u5173\u952e\u5b57\u5904\u7406"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'dynamic clay = new Clay();\nclay.@int = 1;\nclay.@event = "\u4e8b\u4ef6";\n')),(0,i.kt)("h3",{id:"29313-\u8f6c\u6362\u6210\u5b57\u5178\u7c7b\u578b"},"29.3.13 \u8f6c\u6362\u6210\u5b57\u5178\u7c7b\u578b"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'dynamic clay = Clay.Object(new { name = "\u5f20\u4e09" });\nclay.name = "\u767e\u5c0f\u50e7";\nDictionary parms = clay.ToDictionary();\n')),(0,i.kt)("h2",{id:"294-\u53cd\u9988\u4e0e\u5efa\u8bae"},"29.4 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,i.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/5672fbad.c0ece353.js b/handbook/build/assets/js/5672fbad.c0ece353.js new file mode 100644 index 00000000000..21ddeb72530 --- /dev/null +++ b/handbook/build/assets/js/5672fbad.c0ece353.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[3009],{3905:function(e,n,a){a.d(n,{Zo:function(){return s},kt:function(){return m}});var t=a(7294);function r(e,n,a){return n in e?Object.defineProperty(e,n,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[n]=a,e}function i(e,n){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n&&(t=t.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),a.push.apply(a,t)}return a}function o(e){for(var n=1;n=0||(r[a]=e[a]);return r}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(t=0;t=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var c=t.createContext({}),d=function(e){var n=t.useContext(c),a=n;return e&&(a="function"==typeof e?e(n):o(o({},n),e)),a},s=function(e){var n=d(e.components);return t.createElement(c.Provider,{value:n},e.children)},p={inlineCode:"code",wrapper:function(e){var n=e.children;return t.createElement(t.Fragment,{},n)}},u=t.forwardRef((function(e,n){var a=e.components,r=e.mdxType,i=e.originalType,c=e.parentName,s=l(e,["components","mdxType","originalType","parentName"]),u=d(a),m=r,y=u["".concat(c,".").concat(m)]||u[m]||p[m]||i;return a?t.createElement(y,o(o({ref:n},s),{},{components:a})):t.createElement(y,o({ref:n},s))}));function m(e,n){var a=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var i=a.length,o=new Array(i);o[0]=u;var l={};for(var c in n)hasOwnProperty.call(n,c)&&(l[c]=n[c]);l.originalType=e,l.mdxType="string"==typeof e?e:r,o[1]=l;for(var d=2;dClay \u5bf9\u8c61",id:"292-clay-\u5bf9\u8c61",children:[]},{value:"29.3 \u5982\u4f55\u4f7f\u7528",id:"293-\u5982\u4f55\u4f7f\u7528",children:[{value:"29.3.1 \u521b\u5efa\u4e00\u4e2a\u5bf9\u8c61",id:"2931-\u521b\u5efa\u4e00\u4e2a\u5bf9\u8c61",children:[]},{value:"29.3.2 \u8bfb\u53d6/\u83b7\u53d6\u5c5e\u6027",id:"2932-\u8bfb\u53d6\u83b7\u53d6\u5c5e\u6027",children:[]},{value:"29.3.3 \u65b0\u589e\u5c5e\u6027",id:"2933-\u65b0\u589e\u5c5e\u6027",children:[]},{value:"29.3.4 \u66f4\u65b0\u5c5e\u6027\u503c",id:"2934-\u66f4\u65b0\u5c5e\u6027\u503c",children:[]},{value:"29.3.5 \u5220\u9664\u5c5e\u6027",id:"2935-\u5220\u9664\u5c5e\u6027",children:[]},{value:"29.3.6 \u5224\u65ad\u5c5e\u6027\u662f\u5426\u5b58\u5728",id:"2936-\u5224\u65ad\u5c5e\u6027\u662f\u5426\u5b58\u5728",children:[]},{value:"29.3.7 \u904d\u5386\u5bf9\u8c61",id:"2937-\u904d\u5386\u5bf9\u8c61",children:[]},{value:"29.3.8 \u8f6c\u6362\u6210\u5177\u4f53\u5bf9\u8c61",id:"2938-\u8f6c\u6362\u6210\u5177\u4f53\u5bf9\u8c61",children:[]},{value:"29.3.9 \u56fa\u5316\u7c98\u571f",id:"2939-\u56fa\u5316\u7c98\u571f",children:[]},{value:"29.3.10 \u8f93\u51fa JSON",id:"29310-\u8f93\u51fa-json",children:[]},{value:"29.3.11 \u8f93\u51fa XML \u5bf9\u8c61",id:"29311-\u8f93\u51fa-xml-\u5bf9\u8c61",children:[]},{value:"29.3.12 \u5173\u952e\u5b57\u5904\u7406",id:"29312-\u5173\u952e\u5b57\u5904\u7406",children:[]},{value:"29.3.13 \u8f6c\u6362\u6210\u5b57\u5178\u7c7b\u578b",id:"29313-\u8f6c\u6362\u6210\u5b57\u5178\u7c7b\u578b",children:[]}]},{value:"29.4 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"294-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],p={toc:s};function u(e){var n=e.components,a=(0,r.Z)(e,o);return(0,i.kt)("wrapper",(0,t.Z)({},p,a,{components:n,mdxType:"MDXLayout"}),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7248\u672c\u8bf4\u660e")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u4ee5\u4e0b\u5185\u5bb9\u4ec5\u9650 ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion 2.1.12 +")," \u7248\u672c\u4f7f\u7528\u3002"))),(0,i.kt)("h2",{id:"291-\u5173\u4e8e\u7c98\u571f\u5bf9\u8c61"},"29.1 \u5173\u4e8e\u7c98\u571f\u5bf9\u8c61"),(0,i.kt)("p",null,"\u7c98\u571f\u5bf9\u8c61\u662f ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u81ea\u521b\u7684\u4e00\u79cd\u6982\u5ff5\uff0c\u662f\u4e00\u79cd\u53ef\u4ee5\u6a21\u62df\u5f31\u8bed\u8a00\u7279\u6027\u7684\u5bf9\u8c61\uff0c\u7c7b\u4f3c ",(0,i.kt)("inlineCode",{parentName:"p"},"Javascript")," \u4e00\u6837\u64cd\u4f5c\u5bf9\u8c61\u3002\u53ea\u9700\u901a\u8fc7 ",(0,i.kt)("inlineCode",{parentName:"p"},"Clay")," \u7c7b\u521d\u59cb\u5316\u5373\u53ef\u3002"),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"\u4e3a\u4ec0\u4e48\u8d77\u540d\u4e3a \u201c\u7c98\u571f\u201d \u5462\uff1f\u56e0\u4e3a\u8fd9\u4e2a\u5bf9\u8c61\u53ef\u4ee5\u81ea\u7531\u7684\u6dfb\u52a0\u5c5e\u6027\uff0c\u79fb\u9664\u5c5e\u6027\uff0c\u53c8\u53ef\u4ee5\u56fa\u5316\u6210\u4efb\u4f55\u5bf9\u8c61\uff0c\u5177\u6709\u53ef\u62d3\u5c55\u3001\u53ef\u5851\u9020\u7684\u7279\u70b9\u3002")),(0,i.kt)("h3",{id:"2911-\u4f7f\u7528\u573a\u666f"},"29.1.1 \u4f7f\u7528\u573a\u666f"),(0,i.kt)("p",null,"\u7c98\u571f\u5bf9\u8c61\u5e38\u7528\u4e8e\u9700\u8981\u52a8\u6001\u6784\u5efa\u5bf9\u8c61\u7684\u5730\u65b9\uff0c\u5982 ",(0,i.kt)("inlineCode",{parentName:"p"},"CMS")," \u7cfb\u7edf\u7684 ",(0,i.kt)("inlineCode",{parentName:"p"},"ViewModel"),"\uff0c\u6216\u8005\u8fd0\u884c\u65f6\u521b\u5efa\u4e00\u4e2a\u65b0\u7684\u5bf9\u8c61\uff0c\u6216\u8005\u8bf7\u6c42\u7b2c\u4e09\u65b9 ",(0,i.kt)("inlineCode",{parentName:"p"},"API")," \u60c5\u51b5\u3002"),(0,i.kt)("h3",{id:"2912-\u5173\u4e8e\u6027\u80fd"},"29.1.2 \u5173\u4e8e\u6027\u80fd"),(0,i.kt)("p",null,"\u7c98\u571f\u6027\u80fd\u5b9e\u9645\u4e0a\u5e76\u4e0d\u9ad8\u6548\uff0c\u4f46\u662f\u6027\u80fd\u4e5f\u5e76\u4e0d\u4f4e\u4e0b\uff0c\u53ea\u4e0d\u8fc7\u7565\u8f93\u4e8e\u5f3a\u7c7b\u578b\u8c03\u7528\u3002\u4ec0\u4e48\u65f6\u5019\u4f7f\u7528\u53ef\u4ee5\u770b\u4ee5\u4e0a\u7684\u3010\u4f7f\u7528\u573a\u666f\u3011\u3002"),(0,i.kt)("h2",{id:"292-clay-\u5bf9\u8c61"},"29.2 ",(0,i.kt)("inlineCode",{parentName:"h2"},"Clay")," \u5bf9\u8c61"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Clay")," \u5bf9\u8c61\u662f\u7ee7\u627f\u81ea ",(0,i.kt)("inlineCode",{parentName:"p"},"DynamicObject")," \u7684\u4e00\u4e2a\u7279\u6b8a\u5bf9\u8c61\uff0c\u63d0\u4f9b\u4e86\u50cf\u5f31\u8bed\u8a00\u4e00\u6837\u64cd\u4f5c\u5bf9\u8c61\u7684\u65b9\u6cd5\u53ca\u7d22\u5f15\u3002"),(0,i.kt)("h2",{id:"293-\u5982\u4f55\u4f7f\u7528"},"29.3 \u5982\u4f55\u4f7f\u7528"),(0,i.kt)("h3",{id:"2931-\u521b\u5efa\u4e00\u4e2a\u5bf9\u8c61"},"29.3.1 \u521b\u5efa\u4e00\u4e2a\u5bf9\u8c61"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// \u521b\u5efa\u4e00\u4e2a\u7a7a\u7684\u7c98\u571f\u5bf9\u8c61\ndynamic clay = new Clay();\n\n// \u4ece\u73b0\u6709\u7684\u5bf9\u8c61\u521b\u5efa\ndynamic clay2 = Clay.Object(new {});\n\n// \u4ece json \u5b57\u7b26\u4e32\u521b\u5efa\uff0c\u53ef\u7528\u4e8e\u7b2c\u4e09\u65b9 API \u5bf9\u63a5\uff0c\u975e\u5e38\u6709\u7528\ndynamic clay3 = Clay.Parse(@"{""foo"":""json"", ""bar"":100, ""nest"":{ ""foobar"":true } }");\n')),(0,i.kt)("h3",{id:"2932-\u8bfb\u53d6\u83b7\u53d6\u5c5e\u6027"},"29.3.2 \u8bfb\u53d6/\u83b7\u53d6\u5c5e\u6027"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'dynamic clay = Clay.Object(new\n{\n Foo = "json",\n Bar = 100,\n Nest = new\n {\n Foobar = true\n }\n});\n\nvar r1 = clay.Foo; // "json" - string\u7c7b\u578b\nvar r2 = clay.Bar; // 100 - double\u7c7b\u578b\nvar r3 = clay.Nest.Foobar; // true - bool\u7c7b\u578b\nvar r4 = clay["Nest"]["Foobar"]; // \u8fd8\u53ef\u4ee5\u548c Javascript \u4e00\u6837\u901a\u8fc7\u7d22\u5f15\u5668\u83b7\u53d6\n')),(0,i.kt)("h3",{id:"2933-\u65b0\u589e\u5c5e\u6027"},"29.3.3 \u65b0\u589e\u5c5e\u6027"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'dynamic clay = Clay.Object(new\n{\n Foo = "json",\n Bar = 100,\n Nest = new\n {\n Foobar = true\n }\n});\n\n// \u65b0\u589e\nclay.Arr = new string[] { "NOR", "XOR" }; // \u6dfb\u52a0\u4e00\u4e2a\u6570\u7ec4\nclay.Obj1 = new City { }; // \u65b0\u589e\u4e00\u4e2a\u5b9e\u4f8b\u5bf9\u8c61\nclay.Obj2 = new { Foo = "abc", Bar = 100 }; // \u65b0\u589e\u4e00\u4e2a\u533f\u540d\u7c7b\n')),(0,i.kt)("h3",{id:"2934-\u66f4\u65b0\u5c5e\u6027\u503c"},"29.3.4 \u66f4\u65b0\u5c5e\u6027\u503c"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'dynamic clay = Clay.Object(new\n{\n Foo = "json",\n Bar = 100,\n Nest = new\n {\n Foobar = true\n }\n});\n\n// \u66f4\u65b0\nclay.Foo = "Furion";\nclay["Nest"].Foobar = false;\nclay.Nest["Foobar"] = true;\n')),(0,i.kt)("h3",{id:"2935-\u5220\u9664\u5c5e\u6027"},"29.3.5 \u5220\u9664\u5c5e\u6027"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'dynamic clay = Clay.Object(new\n{\n Foo = "json",\n Bar = 100,\n Nest = new\n {\n Foobar = true\n },\n Arr = new string[] { "NOR", "XOR" }\n});\n\n// \u5220\u9664\u64cd\u4f5c\nclay.Delete("Foo"); // \u901a\u8fc7 Delete \u65b9\u6cd5\u5220\u9664\nclay.Arr.Delete(0); // \u652f\u6301\u6570\u7ec4 Delete \u7d22\u5f15\u5220\u9664\nclay("Bar"); // \u652f\u6301\u76f4\u63a5\u901a\u8fc7\u5bf9\u8c61\u4f5c\u4e3a\u65b9\u6cd5\u5220\u9664\nclay.Arr(1); // \u652f\u6301\u6570\u7ec4\u4f5c\u4e3a\u65b9\u6cd5\u5220\u9664\n')),(0,i.kt)("h3",{id:"2936-\u5224\u65ad\u5c5e\u6027\u662f\u5426\u5b58\u5728"},"29.3.6 \u5224\u65ad\u5c5e\u6027\u662f\u5426\u5b58\u5728"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'dynamic clay = Clay.Object(new\n{\n Foo = "json",\n Bar = 100,\n Nest = new\n {\n Foobar = true\n },\n Arr = new string[] { "NOR", "XOR" }\n});\n\n// \u5224\u65ad\u5c5e\u6027\u662f\u5426\u5b58\u5728\nvar a = clay.IsDefined("Foo"); // true\nvar b = clay.IsDefined("Foooo"); // false\nvar c = clay.Foo(); // true\nvar d = clay.Foooo(); // false;\n')),(0,i.kt)("h3",{id:"2937-\u904d\u5386\u5bf9\u8c61"},"29.3.7 \u904d\u5386\u5bf9\u8c61"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'dynamic clay = Clay.Object(new\n{\n Foo = "json",\n Bar = 100,\n Nest = new\n {\n Foobar = true\n },\n Arr = new string[] { "NOR", "XOR" }\n});\n\n// \u904d\u5386\u6570\u7ec4\nforeach (string item in clay.Arr)\n{\n Console.WriteLine(item); // NOR, XOR\n}\n\n// \u904d\u5386\u6574\u4e2a\u5bf9\u8c61\u5c5e\u6027\u53ca\u503c\uff0c\u7c7b\u4f3c JavaScript \u7684 for (var p in obj)\nforeach (KeyValuePair item in clay)\n{\n Console.WriteLine(item.Key + ":" + item.Value); // Foo:json, Bar: 100, Nest: { "Foobar":true}, Arr:["NOR","XOR"]\n}\n')),(0,i.kt)("h3",{id:"2938-\u8f6c\u6362\u6210\u5177\u4f53\u5bf9\u8c61"},"29.3.8 \u8f6c\u6362\u6210\u5177\u4f53\u5bf9\u8c61"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'dynamic clay = new Clay();\nclay.Arr = new string[] { "Furion", "Fur" };\n\n// \u6570\u7ec4\u8f6c\u6362\u793a\u4f8b\nvar a1 = clay.Arr.Deserialize(); // \u901a\u8fc7 Deserialize \u65b9\u6cd5\nvar a2 = (string[])clay.Arr; // \u5f3a\u5236\u8f6c\u6362\nstring[] a3 = clay.Arr; // \u58f0\u660e\u65b9\u5f0f\n\n// \u5bf9\u8c61\u8f6c\u6362\u793a\u4f8b\nclay.City = new City { Id = 1, Name = "\u4e2d\u5c71\u5e02" };\nvar c1 = clay.City.Deserialize(); // \u901a\u8fc7 Deserialize \u65b9\u6cd5\nvar c2 = (City)clay.City; // \u5f3a\u5236\u8f6c\u6362\nCity c3 = clay.City; // \u58f0\u660e\u65b9\u5f0f\n')),(0,i.kt)("h3",{id:"2939-\u56fa\u5316\u7c98\u571f"},"29.3.9 \u56fa\u5316\u7c98\u571f"),(0,i.kt)("p",null,"\u56fa\u5316\u7c98\u571f\u5728\u5f88\u591a\u65f6\u5019\u548c\u5e8f\u5217\u5316\u5f88\u50cf\uff0c\u4f46\u662f\u5982\u679c\u76f4\u63a5\u8c03\u7528 ",(0,i.kt)("inlineCode",{parentName:"p"},"Deserialize")," \u6216 ",(0,i.kt)("inlineCode",{parentName:"p"},"Deserialize")," \u65e0\u6cd5\u8fd4\u56de\u5b9e\u9645\u7c7b\u578b\uff0c\u6240\u4ee5\u5c31\u6709\u4e86\u56fa\u5316\u7c7b\u578b\u7684\u529f\u80fd\uff0c\u5982\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"// \u8fd4\u56de object\nvar obj = clay.Solidify();\n\n// \u8fd4\u56de dynamic\nvar obj1 = clay.Solidify();\n\n// \u8fd4\u56de\u5176\u4ed6\u4efb\u610f\u7c7b\u578b\nvar obj2 = clay.Solidify();\n")),(0,i.kt)("h3",{id:"29310-\u8f93\u51fa-json"},"29.3.10 \u8f93\u51fa ",(0,i.kt)("inlineCode",{parentName:"h3"},"JSON")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'dynamic clay = Clay.Object(new\n{\n Foo = "json",\n Bar = 100,\n Nest = new\n {\n Foobar = true\n },\n Arr = new string[] { "NOR", "XOR" }\n});\n\n// \u8f93\u51fa JSON\nvar json = clay.ToString(); // "{\\"Foo\\":\\"json\\",\\"Bar\\":100,\\"Nest\\":{\\"Foobar\\":true},\\"Arr\\":[\\"NOR\\",\\"XOR\\"]}"\n')),(0,i.kt)("h3",{id:"29311-\u8f93\u51fa-xml-\u5bf9\u8c61"},"29.3.11 \u8f93\u51fa ",(0,i.kt)("inlineCode",{parentName:"h3"},"XML")," \u5bf9\u8c61"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'dynamic clay = Clay.Object(new\n{\n Foo = "json",\n Bar = 100,\n Nest = new\n {\n Foobar = true\n },\n Arr = new string[] { "NOR", "XOR" }\n});\n\n// \u8f93\u51fa XElement\nvar xml = clay.XmlElement;\n')),(0,i.kt)("h3",{id:"29312-\u5173\u952e\u5b57\u5904\u7406"},"29.3.12 \u5173\u952e\u5b57\u5904\u7406"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'dynamic clay = new Clay();\nclay.@int = 1;\nclay.@event = "\u4e8b\u4ef6";\n')),(0,i.kt)("h3",{id:"29313-\u8f6c\u6362\u6210\u5b57\u5178\u7c7b\u578b"},"29.3.13 \u8f6c\u6362\u6210\u5b57\u5178\u7c7b\u578b"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'dynamic clay = Clay.Object(new { name = "\u5f20\u4e09" });\nclay.name = "\u767e\u5c0f\u50e7";\nDictionary parms = clay.ToDictionary();\n')),(0,i.kt)("h2",{id:"294-\u53cd\u9988\u4e0e\u5efa\u8bae"},"29.4 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,i.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/56c1a0f4.60fa33f0.js b/handbook/build/assets/js/56c1a0f4.60fa33f0.js new file mode 100644 index 00000000000..b991d41e192 --- /dev/null +++ b/handbook/build/assets/js/56c1a0f4.60fa33f0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[2614],{6756:function(s){s.exports=JSON.parse('{"allTagsPath":"/furion/blog/tags","slug":"/furion/blog/tags/furos","name":"furos","count":6,"permalink":"/furion/blog/tags/furos"}')}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/56c1a0f4.e8aa9e31.js b/handbook/build/assets/js/56c1a0f4.e8aa9e31.js deleted file mode 100644 index f2f818c370c..00000000000 --- a/handbook/build/assets/js/56c1a0f4.e8aa9e31.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[2614],{6756:function(s){s.exports=JSON.parse('{"allTagsPath":"/furion/blog/tags","slug":"furos","name":"furos","count":6,"permalink":"/furion/blog/tags/furos"}')}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/57da61d5.73de3e42.js b/handbook/build/assets/js/57da61d5.73de3e42.js deleted file mode 100644 index facbb6e45b2..00000000000 --- a/handbook/build/assets/js/57da61d5.73de3e42.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[7043],{3905:function(e,t,n){n.d(t,{Zo:function(){return s},kt:function(){return u}});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var p=r.createContext({}),m=function(e){var t=r.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},s=function(e){var t=m(e.components);return r.createElement(p.Provider,{value:t},e.children)},c={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,i=e.originalType,p=e.parentName,s=l(e,["components","mdxType","originalType","parentName"]),d=m(n),u=a,N=d["".concat(p,".").concat(u)]||d[u]||c[u]||i;return n?r.createElement(N,o(o({ref:t},s),{},{components:n})):r.createElement(N,o({ref:t},s))}));function u(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,o=new Array(i);o[0]=d;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l.mdxType="string"==typeof e?e:a,o[1]=l;for(var m=2;mFurion \u529f\u80fd",id:"232-\u96c6\u6210-furion-\u529f\u80fd",children:[]},{value:"2.3.3 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"233-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],c={toc:s};function d(e){var t=e.components,n=(0,a.Z)(e,o);return(0,i.kt)("wrapper",(0,r.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u63a8\u8350\u4f7f\u7528\u811a\u624b\u67b6")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u5b98\u65b9\u63d0\u4f9b\u4e86\u975e\u5e38\u7075\u6d3b\u65b9\u4fbf\u7684\u811a\u624b\u67b6\uff0c\u53ef\u4ee5\u5feb\u901f\u7684\u521b\u5efa\u591a\u5c42\u67b6\u6784\u9879\u76ee\u3002"),(0,i.kt)("p",{parentName:"div"},"\u63a8\u8350\u4f7f\u7528 \u300a",(0,i.kt)("a",{parentName:"p",href:"/furion/docs/template"},"2.2 \u5b98\u65b9\u811a\u624b\u67b6"),"\u300b\u4ee3\u66ff\u672c\u7ae0\u8282\u529f\u80fd\u3002"))),(0,i.kt)("h2",{id:"231-\u63a8\u8350\u5206\u5c42\u8bbe\u8ba1"},"2.3.1 \u63a8\u8350\u5206\u5c42\u8bbe\u8ba1"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u63a8\u8350\u91c7\u7528\u591a\u5c42\u9879\u76ee\u8bbe\u8ba1\u67b6\u6784\uff0c\u6bcf\u4e00\u4e2a\u9879\u76ee\u5c42\u7684\u4f9d\u8d56\u5206\u522b\u662f\uff1a"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"YourName.Application"),"\uff1a\u6dfb\u52a0 ",(0,i.kt)("inlineCode",{parentName:"li"},"YourName.Core")," \u5f15\u7528"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("strong",{parentName:"li"},(0,i.kt)("inlineCode",{parentName:"strong"},"YourName.Core"),"\uff1a\u6dfb\u52a0 ",(0,i.kt)("inlineCode",{parentName:"strong"},"Furion")," \u5f15\u7528")," \ud83c\udf97"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"YourName.Database.Migrations"),"\uff1a\u6dfb\u52a0 ",(0,i.kt)("inlineCode",{parentName:"li"},"YourName.EntityFramework.Core")," \u5f15\u7528"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"YourName.EntityFramework.Core"),"\uff1a\u6dfb\u52a0 ",(0,i.kt)("inlineCode",{parentName:"li"},"YourName.Core")," \u5f15\u7528"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"YourName.Web.Core"),"\uff1a\u6dfb\u52a0 ",(0,i.kt)("inlineCode",{parentName:"li"},"YourName.Application"),"\uff0c",(0,i.kt)("inlineCode",{parentName:"li"},"YourName.Database.Migrations")," \u5f15\u7528"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("strong",{parentName:"li"},(0,i.kt)("inlineCode",{parentName:"strong"},"YourName.Web.Entry"),"\uff1a\u6dfb\u52a0 ",(0,i.kt)("inlineCode",{parentName:"strong"},"YourName.Web.Core")," \u5f15\u7528 \u548c ",(0,i.kt)("inlineCode",{parentName:"strong"},"Microsoft.EntityFrameworkCore.Tools")," \u5305"))),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u8bf4\u660e")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u5982\u679c\u91c7\u7528 ",(0,i.kt)("inlineCode",{parentName:"p"},"EFCore")," \u4ee5\u5916\u7684 ",(0,i.kt)("inlineCode",{parentName:"p"},"ORM")," \u6846\u67b6\uff0c\u5982 ",(0,i.kt)("inlineCode",{parentName:"p"},"SqlSugar"),"\uff0c\u90a3\u4e48\u65e0\u9700\u521b\u5efa ",(0,i.kt)("inlineCode",{parentName:"p"},"YourName.Database.Migrations")," \u548c ",(0,i.kt)("inlineCode",{parentName:"p"},"YourName.EntityFramework.Core")," \u5c42\u3002"),(0,i.kt)("p",{parentName:"div"},"\u53e6\u5916 ",(0,i.kt)("inlineCode",{parentName:"p"},"YourName.Web.Entry")," \u65e0\u9700\u5f15\u7528 ",(0,i.kt)("inlineCode",{parentName:"p"},"Microsoft.EntityFrameworkCore.Tools")," \u5305\u3002"))),(0,i.kt)("h2",{id:"232-\u96c6\u6210-furion-\u529f\u80fd"},"2.3.2 \u96c6\u6210 ",(0,i.kt)("inlineCode",{parentName:"h2"},"Furion")," \u529f\u80fd"),(0,i.kt)("p",null,"\u9879\u76ee\u642d\u5efa\u597d\u4e4b\u540e\uff0c\u96c6\u6210 ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u53ea\u9700\u8981\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Program.cs")," \u4e2d \u6dfb\u52a0 ",(0,i.kt)("inlineCode",{parentName:"p"},"Inject()")," \u65b9\u6cd5\u5373\u53ef\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{18}","{18}":!0},"using Microsoft.AspNetCore.Hosting;\nusing Microsoft.Extensions.Hosting;\n\nnamespace YourName.Web.Entry\n{\n public class Program\n {\n public static void Main(string[] args)\n {\n CreateHostBuilder(args).Build().Run();\n }\n\n public static IHostBuilder CreateHostBuilder(string[] args)\n {\n return Host.CreateDefaultBuilder(args)\n .ConfigureWebHostDefaults(webBuilder =>\n {\n webBuilder.Inject()\n .UseStartup();\n });\n }\n }\n}\n")),(0,i.kt)("h2",{id:"233-\u53cd\u9988\u4e0e\u5efa\u8bae"},"2.3.3 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,i.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/57da61d5.bbb2829b.js b/handbook/build/assets/js/57da61d5.bbb2829b.js new file mode 100644 index 00000000000..07d70176193 --- /dev/null +++ b/handbook/build/assets/js/57da61d5.bbb2829b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[7043],{3905:function(e,t,n){n.d(t,{Zo:function(){return m},kt:function(){return u}});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var p=r.createContext({}),s=function(e){var t=r.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},m=function(e){var t=s(e.components);return r.createElement(p.Provider,{value:t},e.children)},c={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,i=e.originalType,p=e.parentName,m=l(e,["components","mdxType","originalType","parentName"]),d=s(n),u=a,N=d["".concat(p,".").concat(u)]||d[u]||c[u]||i;return n?r.createElement(N,o(o({ref:t},m),{},{components:n})):r.createElement(N,o({ref:t},m))}));function u(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,o=new Array(i);o[0]=d;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l.mdxType="string"==typeof e?e:a,o[1]=l;for(var s=2;sFurion \u529f\u80fd",id:"232-\u96c6\u6210-furion-\u529f\u80fd",children:[]},{value:"2.3.3 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"233-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],c={toc:m};function d(e){var t=e.components,n=(0,a.Z)(e,o);return(0,i.kt)("wrapper",(0,r.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u63a8\u8350\u4f7f\u7528\u811a\u624b\u67b6")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u5b98\u65b9\u63d0\u4f9b\u4e86\u975e\u5e38\u7075\u6d3b\u65b9\u4fbf\u7684\u811a\u624b\u67b6\uff0c\u53ef\u4ee5\u5feb\u901f\u7684\u521b\u5efa\u591a\u5c42\u67b6\u6784\u9879\u76ee\u3002"),(0,i.kt)("p",{parentName:"div"},"\u63a8\u8350\u4f7f\u7528 \u300a",(0,i.kt)("a",{parentName:"p",href:"/furion/docs/template"},"2.2 \u5b98\u65b9\u811a\u624b\u67b6"),"\u300b\u4ee3\u66ff\u672c\u7ae0\u8282\u529f\u80fd\u3002"))),(0,i.kt)("h2",{id:"231-\u63a8\u8350\u5206\u5c42\u8bbe\u8ba1"},"2.3.1 \u63a8\u8350\u5206\u5c42\u8bbe\u8ba1"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u63a8\u8350\u91c7\u7528\u591a\u5c42\u9879\u76ee\u8bbe\u8ba1\u67b6\u6784\uff0c\u6bcf\u4e00\u4e2a\u9879\u76ee\u5c42\u7684\u4f9d\u8d56\u5206\u522b\u662f\uff1a"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"YourName.Application"),"\uff1a\u6dfb\u52a0 ",(0,i.kt)("inlineCode",{parentName:"li"},"YourName.Core")," \u5f15\u7528"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("strong",{parentName:"li"},(0,i.kt)("inlineCode",{parentName:"strong"},"YourName.Core"),"\uff1a\u6dfb\u52a0 ",(0,i.kt)("inlineCode",{parentName:"strong"},"Furion")," \u5f15\u7528")," \ud83c\udf97"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"YourName.Database.Migrations"),"\uff1a\u6dfb\u52a0 ",(0,i.kt)("inlineCode",{parentName:"li"},"YourName.EntityFramework.Core")," \u5f15\u7528"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"YourName.EntityFramework.Core"),"\uff1a\u6dfb\u52a0 ",(0,i.kt)("inlineCode",{parentName:"li"},"YourName.Core")," \u5f15\u7528"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"YourName.Web.Core"),"\uff1a\u6dfb\u52a0 ",(0,i.kt)("inlineCode",{parentName:"li"},"YourName.Application"),"\uff0c",(0,i.kt)("inlineCode",{parentName:"li"},"YourName.Database.Migrations")," \u5f15\u7528"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("strong",{parentName:"li"},(0,i.kt)("inlineCode",{parentName:"strong"},"YourName.Web.Entry"),"\uff1a\u6dfb\u52a0 ",(0,i.kt)("inlineCode",{parentName:"strong"},"YourName.Web.Core")," \u5f15\u7528 \u548c ",(0,i.kt)("inlineCode",{parentName:"strong"},"Microsoft.EntityFrameworkCore.Tools")," \u5305"))),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u8bf4\u660e")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u5982\u679c\u91c7\u7528 ",(0,i.kt)("inlineCode",{parentName:"p"},"EFCore")," \u4ee5\u5916\u7684 ",(0,i.kt)("inlineCode",{parentName:"p"},"ORM")," \u6846\u67b6\uff0c\u5982 ",(0,i.kt)("inlineCode",{parentName:"p"},"SqlSugar"),"\uff0c\u90a3\u4e48\u65e0\u9700\u521b\u5efa ",(0,i.kt)("inlineCode",{parentName:"p"},"YourName.Database.Migrations")," \u548c ",(0,i.kt)("inlineCode",{parentName:"p"},"YourName.EntityFramework.Core")," \u5c42\u3002"),(0,i.kt)("p",{parentName:"div"},"\u53e6\u5916 ",(0,i.kt)("inlineCode",{parentName:"p"},"YourName.Web.Entry")," \u65e0\u9700\u5f15\u7528 ",(0,i.kt)("inlineCode",{parentName:"p"},"Microsoft.EntityFrameworkCore.Tools")," \u5305\u3002"))),(0,i.kt)("h2",{id:"232-\u96c6\u6210-furion-\u529f\u80fd"},"2.3.2 \u96c6\u6210 ",(0,i.kt)("inlineCode",{parentName:"h2"},"Furion")," \u529f\u80fd"),(0,i.kt)("p",null,"\u9879\u76ee\u642d\u5efa\u597d\u4e4b\u540e\uff0c\u96c6\u6210 ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u53ea\u9700\u8981\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Program.cs")," \u4e2d \u6dfb\u52a0 ",(0,i.kt)("inlineCode",{parentName:"p"},"Inject()")," \u65b9\u6cd5\u5373\u53ef\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{18}","{18}":!0},"using Microsoft.AspNetCore.Hosting;\nusing Microsoft.Extensions.Hosting;\n\nnamespace YourName.Web.Entry\n{\n public class Program\n {\n public static void Main(string[] args)\n {\n CreateHostBuilder(args).Build().Run();\n }\n\n public static IHostBuilder CreateHostBuilder(string[] args)\n {\n return Host.CreateDefaultBuilder(args)\n .ConfigureWebHostDefaults(webBuilder =>\n {\n webBuilder.Inject()\n .UseStartup();\n });\n }\n }\n}\n")),(0,i.kt)("h2",{id:"233-\u53cd\u9988\u4e0e\u5efa\u8bae"},"2.3.3 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,i.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/58624d73.9b4071ab.js b/handbook/build/assets/js/58624d73.9b4071ab.js deleted file mode 100644 index 463fee13a4c..00000000000 --- a/handbook/build/assets/js/58624d73.9b4071ab.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[7667],{3905:function(e,t,n){n.d(t,{Zo:function(){return d},kt:function(){return u}});var a=n(7294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var p=a.createContext({}),s=function(e){var t=a.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},d=function(e){var t=s(e.components);return a.createElement(p.Provider,{value:t},e.children)},c={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var n=e.components,i=e.mdxType,r=e.originalType,p=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),m=s(n),u=i,k=m["".concat(p,".").concat(u)]||m[u]||c[u]||r;return n?a.createElement(k,o(o({ref:t},d),{},{components:n})):a.createElement(k,o({ref:t},d))}));function u(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var r=n.length,o=new Array(r);o[0]=m;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l.mdxType="string"==typeof e?e:i,o[1]=l;for(var s=2;sSql \u64cd\u4f5c\u4ed3\u50a8",id:"9414-sql-\u64cd\u4f5c\u4ed3\u50a8",children:[]},{value:"9.4.1.5 \u591a\u6570\u636e\u5e93 Sql \u64cd\u4f5c\u4ed3\u50a8",id:"9415-\u591a\u6570\u636e\u5e93-sql-\u64cd\u4f5c\u4ed3\u50a8",children:[]},{value:"9.4.1.6 \u53ea\u8bfb\u5b9e\u4f53\u4ed3\u50a8\uff08\u652f\u6301\u591a\u5e93\uff09",id:"9416-\u53ea\u8bfb\u5b9e\u4f53\u4ed3\u50a8\uff08\u652f\u6301\u591a\u5e93\uff09",children:[]},{value:"9.4.1.7 \u53ea\u5199\u5b9e\u4f53\u4ed3\u50a8\uff08\u652f\u6301\u591a\u5e93\uff09",id:"9417-\u53ea\u5199\u5b9e\u4f53\u4ed3\u50a8\uff08\u652f\u6301\u591a\u5e93\uff09",children:[]},{value:"9.4.1.8 \u53ea\u5141\u8bb8\u65b0\u589e\u5b9e\u4f53\u4ed3\u50a8\uff08\u652f\u6301\u591a\u5e93\uff09",id:"9418-\u53ea\u5141\u8bb8\u65b0\u589e\u5b9e\u4f53\u4ed3\u50a8\uff08\u652f\u6301\u591a\u5e93\uff09",children:[]},{value:"9.4.1.9 \u53ea\u5141\u8bb8\u66f4\u65b0\u5b9e\u4f53\u4ed3\u50a8\uff08\u652f\u6301\u591a\u5e93\uff09",id:"9419-\u53ea\u5141\u8bb8\u66f4\u65b0\u5b9e\u4f53\u4ed3\u50a8\uff08\u652f\u6301\u591a\u5e93\uff09",children:[]},{value:"9.4.1.10 \u53ea\u5141\u8bb8\u5220\u9664\u5b9e\u4f53\u4ed3\u50a8\uff08\u652f\u6301\u591a\u5e93\uff09",id:"94110-\u53ea\u5141\u8bb8\u5220\u9664\u5b9e\u4f53\u4ed3\u50a8\uff08\u652f\u6301\u591a\u5e93\uff09",children:[]},{value:"9.4.1.11 \u53ea\u5141\u8bb8\u62d3\u5c55\u64cd\u4f5c\u5b9e\u4f53\u4ed3\u50a8\uff08\u652f\u6301\u591a\u5e93\uff09",id:"94111-\u53ea\u5141\u8bb8\u62d3\u5c55\u64cd\u4f5c\u5b9e\u4f53\u4ed3\u50a8\uff08\u652f\u6301\u591a\u5e93\uff09",children:[]},{value:"9.4.1.12 \u53ea\u5141\u8bb8 Sql \u67e5\u8be2\u4ed3\u50a8\uff08\u652f\u6301\u591a\u5e93\uff09",id:"94112-\u53ea\u5141\u8bb8-sql-\u67e5\u8be2\u4ed3\u50a8\uff08\u652f\u6301\u591a\u5e93\uff09",children:[]},{value:"9.4.1.13 \u53ea\u5141\u8bb8 Sql \u975e\u67e5\u8be2\u4ed3\u50a8\uff08\u652f\u6301\u591a\u5e93\uff09",id:"94113-\u53ea\u5141\u8bb8-sql-\u975e\u67e5\u8be2\u4ed3\u50a8\uff08\u652f\u6301\u591a\u5e93\uff09",children:[]},{value:"9.4.1.14 \u8bfb\u5199\u5206\u79bb\u4ed3\u50a8",id:"94114-\u8bfb\u5199\u5206\u79bb\u4ed3\u50a8",children:[]},{value:"9.4.1.15 \u5b9a\u4f4d\u5668\u4ed3\u50a8",id:"94115-\u5b9a\u4f4d\u5668\u4ed3\u50a8",children:[]}]},{value:"9.4.2 \u4ed3\u50a8\u4f7f\u7528",id:"942-\u4ed3\u50a8\u4f7f\u7528",children:[{value:"9.4.2.1 \u6784\u9020\u51fd\u6570\u6ce8\u5165",id:"9421-\u6784\u9020\u51fd\u6570\u6ce8\u5165",children:[]},{value:"9.4.2.2 \u65b9\u6cd5\u53c2\u6570\u6ce8\u5165",id:"9422-\u65b9\u6cd5\u53c2\u6570\u6ce8\u5165",children:[]},{value:"9.4.2.3 Db.GetRepository \u83b7\u53d6",id:"9423-dbgetrepository-\u83b7\u53d6",children:[]}]},{value:"9.4.3 \u4ed3\u50a8\u9ad8\u7ea7\u7528\u6cd5",id:"943-\u4ed3\u50a8\u9ad8\u7ea7\u7528\u6cd5",children:[{value:"9.4.3.1 \u52a8\u6001\u5207\u6362\u5b9e\u4f53\u4ed3\u50a8",id:"9431-\u52a8\u6001\u5207\u6362\u5b9e\u4f53\u4ed3\u50a8",children:[]},{value:"9.4.3.2 \u52a8\u6001\u5207\u6362\u4ed3\u50a8\u7c7b\u578b",id:"9432-\u52a8\u6001\u5207\u6362\u4ed3\u50a8\u7c7b\u578b",children:[]},{value:"9.4.3.3 \u83b7\u53d6 Sql \u64cd\u4f5c\u4ed3\u50a8",id:"9433-\u83b7\u53d6-sql-\u64cd\u4f5c\u4ed3\u50a8",children:[]}]},{value:"9.4.4 \u591a\u6570\u636e\u5e93\u64cd\u4f5c",id:"944-\u591a\u6570\u636e\u5e93\u64cd\u4f5c",children:[{value:"9.4.4.1 \u52a8\u6001\u5207\u6362\u591a\u4e2a\u6570\u636e\u5e93",id:"9441-\u52a8\u6001\u5207\u6362\u591a\u4e2a\u6570\u636e\u5e93",children:[]}]},{value:"9.4.5 \u5728\u540e\u53f0\u4efb\u52a1\u4e2d\u4f7f\u7528",id:"945-\u5728\u540e\u53f0\u4efb\u52a1\u4e2d\u4f7f\u7528",children:[]},{value:"9.4.6 \u81ea\u5b9a\u4e49\u4ed3\u50a8",id:"946-\u81ea\u5b9a\u4e49\u4ed3\u50a8",children:[]},{value:"9.4.7 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"947-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],c={toc:d};function m(e){var t=e.components,n=(0,i.Z)(e,o);return(0,r.kt)("wrapper",(0,a.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"941-\u4ec0\u4e48\u662f\u4ed3\u50a8"},"9.4.1 \u4ec0\u4e48\u662f\u4ed3\u50a8"),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"\u5728\u9886\u57df\u5c42\u548c\u6570\u636e\u6620\u5c04\u5c42\u7684\u4e2d\u4ecb,\u4f7f\u7528\u7c7b\u4f3c\u96c6\u5408\u7684\u63a5\u53e3\u6765\u5b58\u53d6\u9886\u57df\u5bf9\u8c61\uff0c\u5b9e\u9645\u4e0a\uff0c\u4ed3\u50a8\u88ab\u7528\u4e8e\u9886\u57df\u5bf9\u8c61\u5728\u6570\u636e\u5e93\u4e0a\u7684\u64cd\u4f5c\uff08\u5b9e\u4f53 Entity \u548c\u503c\u5bf9\u8c61 Value types\uff09\u3002\u4e00\u822c\u6765\u8bf4,\u6211\u4eec\u9488\u5bf9\u4e0d\u540c\u7684\u5b9e\u4f53(\u6216\u805a\u5408\u6839 Aggregate Root)\u4f1a\u521b\u5efa\u76f8\u5bf9\u5e94\u7684\u4ed3\u50a8\u3002")),(0,r.kt)("p",null,"\u7b80\u5355\u6765\u8bf4\uff0c\u4ed3\u50a8\u5c31\u662f\u6570\u636e\u5b58\u53d6\u64cd\u4f5c\u7684\u8f7d\u4f53\uff0c\u4f46\u4e0d\u9650\u5b9a\u4e8e\u6570\u636e\u5e93\u3002"),(0,r.kt)("h2",{id:"941-\u5185\u7f6e\u4ed3\u50a8"},"9.4.1 \u5185\u7f6e\u4ed3\u50a8"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u5185\u7f6e\u4e86\u4e00\u4e2a\u6570\u636e\u5e93\u64cd\u4f5c\u7684\u4ed3\u50a8\uff0c\u65b9\u4fbf\u5927\u5bb6\u62d3\u5c55\u548c\u96c6\u6210\uff1a"),(0,r.kt)("div",{className:"admonition admonition-info alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u5173\u4e8e\u4f9d\u8d56\u6ce8\u5165\u8bf4\u660e")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u76ee\u524d\u80fd\u591f\u88ab\u4f9d\u8d56\u6ce8\u5165\u89e3\u6790\u670d\u52a1\u7684\u4ed3\u50a8\u6709\uff1a"),(0,r.kt)("ul",{parentName:"div"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"IRepository")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"IRepository")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"IRepository")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"ISqlRepository")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"ISqlRepository")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"IMSRepository")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"IMSRepository")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"IMSRepository")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"IDbRepository"))),(0,r.kt)("p",{parentName:"div"},"\u8fd8\u6709\u4e24\u4e2a\u79c1\u6709\u4ed3\u50a8\uff0c\u4e5f\u662f\u6240\u6709\u4ed3\u50a8\u7684\u57fa\u7c7b\uff08\u7528\u4e8e\u9ad8\u7ea7\u81ea\u5b9a\u4e49\u5f00\u53d1\uff09"),(0,r.kt)("ul",{parentName:"div"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"IPrivateRepository"),"\uff1a\u6240\u6709\u5b9e\u4f53\u4ed3\u50a8\u7684\u57fa\u7c7b"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"IPrivateSqlRepository"),"\uff1a\u6240\u6709\u6570\u636e\u5e93\u64cd\u4f5c\u7684\u57fa\u7c7b")),(0,r.kt)("p",{parentName:"div"},"\u9664\u6b64\u4e4b\u540e\u7684\u6240\u6709\u4ed3\u50a8\u53ea\u80fd\u901a\u8fc7 ",(0,r.kt)("inlineCode",{parentName:"p"},"rep.Constraint()")," \u8fdb\u884c\u7ea6\u675f\u521b\u5efa\uff0c\u5982\uff0c\u53ea\u8bfb\u4ed3\u50a8\uff1a"),(0,r.kt)("pre",{parentName:"div"},(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"var readRepository = rep.Constraint>();\n")))),(0,r.kt)("h3",{id:"9411-\u975e\u6cdb\u578b\u8d85\u7ea7\u4ed3\u50a8"},"9.4.1.1 \u975e\u6cdb\u578b\u8d85\u7ea7\u4ed3\u50a8"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"IRepository"),"\uff1a\u9ed8\u8ba4\u975e\u6cdb\u578b\u4ed3\u50a8\u63a5\u53e3\uff0c\u652f\u6301\u5207\u6362\u5230\u4efb\u4f55\u4ed3\u50a8"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"EFCoreRepository"),"\uff1a\u9ed8\u8ba4\u975e\u6cdb\u578b\u4ed3\u50a8\u5b9e\u73b0")),(0,r.kt)("h3",{id:"9412-\u6cdb\u578b\u5b9e\u4f53\u4ed3\u50a8"},"9.4.1.2 \u6cdb\u578b\u5b9e\u4f53\u4ed3\u50a8"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"IRepository"),"\uff1a\u9ed8\u8ba4\u6570\u636e\u5e93\u5b9e\u4f53\u4ed3\u50a8\u63a5\u53e3"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"EFCoreRepository"),"\uff1a\u9ed8\u8ba4\u6570\u636e\u5e93\u5b9e\u4f53\u4ed3\u50a8\u5b9e\u73b0")),(0,r.kt)("h3",{id:"9413-\u6cdb\u578b\u591a\u6570\u636e\u5e93\u5b9e\u4f53\u4ed3\u50a8"},"9.4.1.3 \u6cdb\u578b\u591a\u6570\u636e\u5e93\u5b9e\u4f53\u4ed3\u50a8"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"IRepository"),"\uff1a\u4efb\u610f\u6570\u636e\u5e93\u7684\u5b9e\u4f53\u4ed3\u50a8\u63a5\u53e3"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"EFCoreRepository"),"\uff1a\u4efb\u610f\u6570\u636e\u5e93\u7684\u5b9e\u4f53\u4ed3\u50a8\u5b9e\u73b0")),(0,r.kt)("h3",{id:"9414-sql-\u64cd\u4f5c\u4ed3\u50a8"},"9.4.1.4 ",(0,r.kt)("inlineCode",{parentName:"h3"},"Sql")," \u64cd\u4f5c\u4ed3\u50a8"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"ISqlRepository"),"\uff1a\u9ed8\u8ba4\u6570\u636e\u5e93 ",(0,r.kt)("inlineCode",{parentName:"li"},"Sql")," \u64cd\u4f5c\u4ed3\u50a8\u63a5\u53e3"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"SqlRepository"),"\uff1a\u9ed8\u8ba4\u6570\u636e\u5e93 ",(0,r.kt)("inlineCode",{parentName:"li"},"Sql")," \u64cd\u4f5c\u4ed3\u50a8\u5b9e\u73b0")),(0,r.kt)("h3",{id:"9415-\u591a\u6570\u636e\u5e93-sql-\u64cd\u4f5c\u4ed3\u50a8"},"9.4.1.5 \u591a\u6570\u636e\u5e93 ",(0,r.kt)("inlineCode",{parentName:"h3"},"Sql")," \u64cd\u4f5c\u4ed3\u50a8"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"ISqlRepository"),"\uff1a\u4efb\u610f\u6570\u636e\u5e93\u7684 ",(0,r.kt)("inlineCode",{parentName:"li"},"Sql")," \u64cd\u4f5c\u4ed3\u50a8\u63a5\u53e3"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"SqlRepository"),"\uff1a\u4efb\u610f\u6570\u636e\u5e93\u7684 ",(0,r.kt)("inlineCode",{parentName:"li"},"Sql")," \u64cd\u4f5c\u4ed3\u50a8\u5b9e\u73b0")),(0,r.kt)("h3",{id:"9416-\u53ea\u8bfb\u5b9e\u4f53\u4ed3\u50a8\uff08\u652f\u6301\u591a\u5e93\uff09"},"9.4.1.6 \u53ea\u8bfb\u5b9e\u4f53\u4ed3\u50a8\uff08\u652f\u6301\u591a\u5e93\uff09"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"IReadableRepository"),"\uff1a\u9ed8\u8ba4\u6570\u636e\u5e93\u53ea\u8bfb\u5b9e\u4f53\u4ed3\u50a8\u63a5\u53e3"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"IReadableRepository"),"\uff1a\u591a\u6570\u636e\u5e93\u53ea\u8bfb\u5b9e\u4f53\u4ed3\u50a8\u5b9e\u73b0")),(0,r.kt)("h3",{id:"9417-\u53ea\u5199\u5b9e\u4f53\u4ed3\u50a8\uff08\u652f\u6301\u591a\u5e93\uff09"},"9.4.1.7 \u53ea\u5199\u5b9e\u4f53\u4ed3\u50a8\uff08\u652f\u6301\u591a\u5e93\uff09"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"IWritableRepository"),"\uff1a\u9ed8\u8ba4\u6570\u636e\u5e93\u53ea\u5199\u5b9e\u4f53\u4ed3\u50a8\u63a5\u53e3"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"IWritableRepository"),"\uff1a\u591a\u6570\u636e\u5e93\u53ea\u5199\u5b9e\u4f53\u4ed3\u50a8\u5b9e\u73b0")),(0,r.kt)("h3",{id:"9418-\u53ea\u5141\u8bb8\u65b0\u589e\u5b9e\u4f53\u4ed3\u50a8\uff08\u652f\u6301\u591a\u5e93\uff09"},"9.4.1.8 \u53ea\u5141\u8bb8\u65b0\u589e\u5b9e\u4f53\u4ed3\u50a8\uff08\u652f\u6301\u591a\u5e93\uff09"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"IInsertableRepository"),"\uff1a\u9ed8\u8ba4\u6570\u636e\u5e93\u53ea\u5141\u8bb8\u65b0\u589e\u7684\u5b9e\u4f53\u4ed3\u50a8\u63a5\u53e3"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"IInsertableRepository"),"\uff1a\u591a\u6570\u636e\u5e93\u53ea\u5141\u8bb8\u65b0\u589e\u7684\u5b9e\u4f53\u4ed3\u50a8\u5b9e\u73b0")),(0,r.kt)("h3",{id:"9419-\u53ea\u5141\u8bb8\u66f4\u65b0\u5b9e\u4f53\u4ed3\u50a8\uff08\u652f\u6301\u591a\u5e93\uff09"},"9.4.1.9 \u53ea\u5141\u8bb8\u66f4\u65b0\u5b9e\u4f53\u4ed3\u50a8\uff08\u652f\u6301\u591a\u5e93\uff09"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"IUpdateableRepository"),"\uff1a\u9ed8\u8ba4\u6570\u636e\u5e93\u53ea\u5141\u8bb8\u66f4\u65b0\u7684\u5b9e\u4f53\u4ed3\u50a8\u63a5\u53e3"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"IUpdateableRepository"),"\uff1a\u591a\u6570\u636e\u5e93\u53ea\u5141\u8bb8\u66f4\u65b0\u7684\u5b9e\u4f53\u4ed3\u50a8\u5b9e\u73b0")),(0,r.kt)("h3",{id:"94110-\u53ea\u5141\u8bb8\u5220\u9664\u5b9e\u4f53\u4ed3\u50a8\uff08\u652f\u6301\u591a\u5e93\uff09"},"9.4.1.10 \u53ea\u5141\u8bb8\u5220\u9664\u5b9e\u4f53\u4ed3\u50a8\uff08\u652f\u6301\u591a\u5e93\uff09"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"IDeletableRepository"),"\uff1a\u9ed8\u8ba4\u6570\u636e\u5e93\u53ea\u5141\u8bb8\u5220\u9664\u7684\u5b9e\u4f53\u4ed3\u50a8\u63a5\u53e3"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"IDeletableRepository"),"\uff1a\u591a\u6570\u636e\u5e93\u53ea\u5141\u8bb8\u5220\u9664\u7684\u5b9e\u4f53\u4ed3\u50a8\u5b9e\u73b0")),(0,r.kt)("h3",{id:"94111-\u53ea\u5141\u8bb8\u62d3\u5c55\u64cd\u4f5c\u5b9e\u4f53\u4ed3\u50a8\uff08\u652f\u6301\u591a\u5e93\uff09"},"9.4.1.11 \u53ea\u5141\u8bb8\u62d3\u5c55\u64cd\u4f5c\u5b9e\u4f53\u4ed3\u50a8\uff08\u652f\u6301\u591a\u5e93\uff09"),(0,r.kt)("div",{className:"admonition admonition-warning alert alert--danger"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"}))),"\u529f\u80fd\u79fb\u9664\u58f0\u660e")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u8be5\u529f\u80fd\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion 2.5.1 +")," \u7248\u672c\u4e2d\u5df2\u79fb\u9664\u3002\u6b64\u64cd\u4f5c\u8ba9\u5f88\u591a\u4e0d\u4e86\u89e3 ",(0,r.kt)("inlineCode",{parentName:"p"},"EFCore")," \u7684\u5f00\u53d1\u8005\u4ea7\u751f\u4e86\u5f88\u5927\u7684\u8bef\u89e3\uff0c\u4e0d\u77e5\u4f55\u65f6\u65b0\u589e\u6216\u4f55\u65f6\u66f4\u65b0\uff0c\u6545\u79fb\u9664\u6b64\u529f\u80fd\u3002"))),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"IOperableRepository"),"\uff1a\u9ed8\u8ba4\u6570\u636e\u5e93\u53ea\u5141\u8bb8\u62d3\u5c55\u64cd\u4f5c\u5b9e\u4f53\u4ed3\u50a8\u63a5\u53e3"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"IOperableRepository"),"\uff1a\u591a\u6570\u636e\u5e93\u53ea\u5141\u8bb8\u62d3\u5c55\u64cd\u4f5c\u5b9e\u4f53\u4ed3\u50a8\u5b9e\u73b0")),(0,r.kt)("h3",{id:"94112-\u53ea\u5141\u8bb8-sql-\u67e5\u8be2\u4ed3\u50a8\uff08\u652f\u6301\u591a\u5e93\uff09"},"9.4.1.12 \u53ea\u5141\u8bb8 ",(0,r.kt)("inlineCode",{parentName:"h3"},"Sql")," \u67e5\u8be2\u4ed3\u50a8\uff08\u652f\u6301\u591a\u5e93\uff09"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"ISqlReaderRepository"),"\uff1a\u9ed8\u8ba4\u6570\u636e\u5e93\u53ea\u5141\u8bb8 ",(0,r.kt)("inlineCode",{parentName:"li"},"Sql")," \u67e5\u8be2\u4ed3\u50a8\u63a5\u53e3"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"ISqlReaderRepository"),"\uff1a\u591a\u6570\u636e\u5e93\u53ea\u5141\u8bb8 ",(0,r.kt)("inlineCode",{parentName:"li"},"Sql")," \u67e5\u8be2\u4ed3\u50a8\u5b9e\u73b0")),(0,r.kt)("h3",{id:"94113-\u53ea\u5141\u8bb8-sql-\u975e\u67e5\u8be2\u4ed3\u50a8\uff08\u652f\u6301\u591a\u5e93\uff09"},"9.4.1.13 \u53ea\u5141\u8bb8 ",(0,r.kt)("inlineCode",{parentName:"h3"},"Sql")," \u975e\u67e5\u8be2\u4ed3\u50a8\uff08\u652f\u6301\u591a\u5e93\uff09"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"ISqlExecutableRepository"),"\uff1a\u9ed8\u8ba4\u6570\u636e\u5e93\u53ea\u5141\u8bb8 ",(0,r.kt)("inlineCode",{parentName:"li"},"Sql")," \u975e\u67e5\u8be2\u4ed3\u50a8\u63a5\u53e3"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"ISqlExecutableRepository"),"\uff1a\u591a\u6570\u636e\u5e93\u53ea\u5141\u8bb8 ",(0,r.kt)("inlineCode",{parentName:"li"},"Sql")," \u975e\u67e5\u8be2\u4ed3\u50a8\u5b9e\u73b0")),(0,r.kt)("h3",{id:"94114-\u8bfb\u5199\u5206\u79bb\u4ed3\u50a8"},"9.4.1.14 \u8bfb\u5199\u5206\u79bb\u4ed3\u50a8"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"IMSRepository"),"\uff1a\u6700\u591a\u652f\u6301 ",(0,r.kt)("strong",{parentName:"li"},"\u4e00\u4e3b 7 \u4ece")," \u4ed3\u50a8")),(0,r.kt)("h3",{id:"94115-\u5b9a\u4f4d\u5668\u4ed3\u50a8"},"9.4.1.15 \u5b9a\u4f4d\u5668\u4ed3\u50a8"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"IDbRepository"),"\uff1a\u521d\u59cb\u5316\u7279\u5b9a\u6570\u636e\u5e93\u4ed3\u50a8")),(0,r.kt)("h2",{id:"942-\u4ed3\u50a8\u4f7f\u7528"},"9.4.2 \u4ed3\u50a8\u4f7f\u7528"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u63d0\u4f9b\u4e86\u975e\u5e38\u591a\u7684\u65b9\u5f0f\u521b\u5efa\u4ed3\u50a8\uff0c\u76ee\u7684\u662f\u4e3a\u4e86\u8ba9\u5927\u5bb6\u53ef\u4ee5\u5728\u4e0d\u540c\u7684\u573a\u666f\u4e2d\u4f7f\u7528\u3002"),(0,r.kt)("h3",{id:"9421-\u6784\u9020\u51fd\u6570\u6ce8\u5165"},"9.4.2.1 \u6784\u9020\u51fd\u6570\u6ce8\u5165"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{2}","{2}":!0},"private readonly IRepository _personRepository;\npublic FurionService(IRepository personRepository)\n{\n _personRepository = personRepository;\n}\n")),(0,r.kt)("h3",{id:"9422-\u65b9\u6cd5\u53c2\u6570\u6ce8\u5165"},"9.4.2.2 \u65b9\u6cd5\u53c2\u6570\u6ce8\u5165"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1}","{1}":!0},"public async Task> GetAll([FromServices] IRepository repository, string keyword)\n{\n var persons = await repository.AsQueryable().ToListAsync();\n return persons.Adapt>();\n}\n")),(0,r.kt)("h3",{id:"9423-dbgetrepository-\u83b7\u53d6"},"9.4.2.3 ",(0,r.kt)("inlineCode",{parentName:"h3"},"Db.GetRepository")," \u83b7\u53d6"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"// \u975e\u6cdb\u578b\u4ed3\u50a8\nvar repository = Db.GetRepository();\n\n// \u6cdb\u578b\u4ed3\u50a8\nvar repository = Db.GetRepository();\n\n// Sql \u4ed3\u50a8\nvar sqlRepository = Db.GetSqlRepository();\n")),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u8bf4\u660e")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u4e0d\u7ba1\u91c7\u7528\u54ea\u79cd\u65b9\u5f0f\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u90fd\u4fdd\u8bc1\u4e86\u4ed3\u50a8\u4e00\u6b21\u8bf7\u6c42\u552f\u4e00\u6027\u3002\u540c\u65f6 ",(0,r.kt)("inlineCode",{parentName:"p"},"Db.GetRepository()")," \u65b9\u5f0f\u652f\u6301\u4efb\u4f55\u9759\u6001\u7c7b\u4e2d\u4f7f\u7528\u3002"))),(0,r.kt)("h2",{id:"943-\u4ed3\u50a8\u9ad8\u7ea7\u7528\u6cd5"},"9.4.3 \u4ed3\u50a8\u9ad8\u7ea7\u7528\u6cd5"),(0,r.kt)("h3",{id:"9431-\u52a8\u6001\u5207\u6362\u5b9e\u4f53\u4ed3\u50a8"},"9.4.3.1 \u52a8\u6001\u5207\u6362\u5b9e\u4f53\u4ed3\u50a8"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"var userRepository = personRepository.Change();\n")),(0,r.kt)("h3",{id:"9432-\u52a8\u6001\u5207\u6362\u4ed3\u50a8\u7c7b\u578b"},"9.4.3.2 \u52a8\u6001\u5207\u6362\u4ed3\u50a8\u7c7b\u578b"),(0,r.kt)("p",null,"\u6bd4\u5982\uff0c\u8bfb\u5199\u5206\u79bb/\u4e3b\u4ece\u5e93\u4ed3\u50a8\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"// \u53ea\u8bfb\u4ed3\u50a8\nvar readRepository = personRepository.Constraint>();\n\n// \u53ea\u5199\u4ed3\u50a8\nvar writeRepository = personRepository.Constraint>();\n")),(0,r.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u5c0f\u77e5\u8bc6")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},(0,r.kt)("inlineCode",{parentName:"p"},".Constraint")," \u652f\u6301\u5207\u6362\u4efb\u4f55\u4ed3\u50a8\u7c7b\u578b\u3002"))),(0,r.kt)("h3",{id:"9433-\u83b7\u53d6-sql-\u64cd\u4f5c\u4ed3\u50a8"},"9.4.3.3 \u83b7\u53d6 ",(0,r.kt)("inlineCode",{parentName:"h3"},"Sql")," \u64cd\u4f5c\u4ed3\u50a8"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"var sqlRepository = repository.Sql();\n")),(0,r.kt)("h2",{id:"944-\u591a\u6570\u636e\u5e93\u64cd\u4f5c"},"9.4.4 \u591a\u6570\u636e\u5e93\u64cd\u4f5c"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u901a\u8fc7 ",(0,r.kt)("inlineCode",{parentName:"p"},"DbContextLocator")," \u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u5b9a\u4f4d\u5668\u5b9e\u73b0\u591a\u79cd\u6570\u636e\u5e93\u64cd\u4f5c\uff0c\u53ef\u4ee5\u968f\u610f\u5207\u6362\u6570\u636e\u5e93"),(0,r.kt)("h3",{id:"9441-\u52a8\u6001\u5207\u6362\u591a\u4e2a\u6570\u636e\u5e93"},"9.4.4.1 \u52a8\u6001\u5207\u6362\u591a\u4e2a\u6570\u636e\u5e93"),(0,r.kt)("h4",{id:"\u52a8\u6001\u5207\u6362\u6570\u636e\u5e93"},"\u52a8\u6001\u5207\u6362\u6570\u636e\u5e93"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"// \u5207\u6362\u5230 MSSQL \u64cd\u4f5c Person\u8868\nvar mssqlRepository = repository.Change();\n\n// \u5207\u6362\u5230 MySql \u64cd\u4f5c Person\u8868\nvar mysqlRepository = repository.Change();\n\n// \u5207\u6362\u5230 Sqlite \u64cd\u4f5c Person\u8868\nvar sqliteRepository = repository.Change();\n\n// \u5176\u4ed6\u66f4\u591a\u6570\u636e\u5e93\u4e00\u6837\u7684\u64cd\u4f5c\n")),(0,r.kt)("h4",{id:"\u53e6\u5916\u4efb\u4f55\u4ed3\u50a8\u6216\u5b9e\u4f53\u914d\u7f6e\u90fd\u652f\u6301\u591a\u4e2a\u6570\u636e\u5e93\u540c\u65f6\u64cd\u4f5c"},"\u53e6\u5916\u4efb\u4f55\u4ed3\u50a8\u6216\u5b9e\u4f53\u914d\u7f6e\u90fd\u652f\u6301\u591a\u4e2a\u6570\u636e\u5e93\u540c\u65f6\u64cd\u4f5c"),(0,r.kt)("p",null,"\u4ed3\u50a8\u65b9\u5f0f"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"IRepository mssqlRepository\n\nISqlRepository mssqlRepository;\n")),(0,r.kt)("p",null,"\u52a8\u6001 ",(0,r.kt)("inlineCode",{parentName:"p"},"sql")," \u65b9\u5f0f"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'"select * from person".Change().SqlQuery();\n')),(0,r.kt)("p",null,"\u5b9e\u4f53\u914d\u7f6e\u65b9\u5f0f"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"public class User:Entity\n{\n}\n")),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Sql")," \u4ee3\u7406\u65b9\u5f0f"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'[SqlFunction("funcName", DbContextLocator = typeof(MySqlDbContextLocator))]\nint GetAge(int id);\n')),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Linq")," \u4e2d\u65b9\u5f0f"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'[QueryableFunction("funcName","dbo", DbContextLocator = typeof(MySqlDbContextLocator))]\nstring GetName()=> throw Oops.Oh("\u4e0d\u652f\u6301\u8be5\u6570\u636e\u5e93\u64cd\u4f5c");\n')),(0,r.kt)("h2",{id:"945-\u5728\u540e\u53f0\u4efb\u52a1\u4e2d\u4f7f\u7528"},"9.4.5 \u5728\u540e\u53f0\u4efb\u52a1\u4e2d\u4f7f\u7528"),(0,r.kt)("p",null,"\u7531\u4e8e ",(0,r.kt)("inlineCode",{parentName:"p"},"DbContext")," \u9ed8\u8ba4\u6ce8\u518c\u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"Scoped")," \u751f\u5b58\u5468\u671f\uff0c\u6240\u4ee5\u5728\u540e\u53f0\u4efb\u52a1\u4e2d\u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"IServiceScopeFactory")," \u83b7\u53d6\u6240\u6709\u670d\u52a1\uff0c\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'public class JobService : BackgroundService\n{\n // \u65e5\u5fd7\u5bf9\u8c61\n private readonly ILogger _logger;\n\n // \u670d\u52a1\u5de5\u5382\n private readonly IServiceScopeFactory _scopeFactory;\n public JobService(ILogger logger\n , IServiceScopeFactory scopeFactory)\n {\n _logger = logger;\n _scopeFactory = scopeFactory;\n }\n\n protected override Task ExecuteAsync(CancellationToken stoppingToken)\n {\n _logger.LogInformation("\u5199\u65e5\u5fd7~~");\n\n using (var scope = _scopeFactory.CreateScope())\n {\n var services = scope.ServiceProvider;\n\n // \u83b7\u53d6\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\n var dbContext = Db.GetDbContext(services);\n\n // \u83b7\u53d6\u4ed3\u50a8\n var respository = Db.GetRepository(services);\n\n // \u89e3\u6790\u5176\u4ed6\u670d\u52a1\n var otherService = services.GetService();\n }\n\n return Task.CompletedTask;\n }\n}\n')),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u6570\u636e\u5e93\u64cd\u4f5c\u6ce8\u610f")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u5982\u679c\u4f5c\u7528\u57df\u4e2d\u5bf9",(0,r.kt)("strong",{parentName:"p"},"\u6570\u636e\u5e93\u6709\u4efb\u4f55\u53d8\u66f4\u64cd\u4f5c"),"\uff0c\u9700\u624b\u52a8\u8c03\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"SaveChanges")," \u6216\u5e26 ",(0,r.kt)("inlineCode",{parentName:"p"},"Now")," \u7ed3\u5c3e\u7684\u65b9\u6cd5\u3002\u4e5f\u53ef\u4ee5\u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"Scoped.CreateUow(handler)")," \u4ee3\u66ff\u3002"))),(0,r.kt)("h2",{id:"946-\u81ea\u5b9a\u4e49\u4ed3\u50a8"},"9.4.6 \u81ea\u5b9a\u4e49\u4ed3\u50a8"),(0,r.kt)("p",null,"\u6709\u4e9b\u65f6\u5019\u6211\u4eec\u9700\u8981\u81ea\u5b9a\u4e49\u4ed3\u50a8\uff0c\u62d3\u5c55\u73b0\u6709\u7684\u4ed3\u50a8\u529f\u80fd\uff0c\u53ef\u53c2\u8003\u4ee5\u4e0b\u4ee3\u7801\uff08\u542b\u5b9a\u4f4d\u5668\u4ed3\u50a8\u548c\u9ed8\u8ba4\u4ed3\u50a8\u5b9e\u73b0\uff09"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'/// \n/// \u81ea\u5b9a\u4e49\u4ed3\u50a8\u63a5\u53e3\n/// \n/// \n/// \npublic interface IMyRepository : IPrivateRepository\n where TEntity : class, IPrivateEntity, new()\n where TDbContextLocator : class, IDbContextLocator\n{\n /// \n /// \u81ea\u5b9a\u4e49\u65b9\u6cd5\n /// \n void MyMethod();\n}\n\n/// \n/// \u81ea\u5b9a\u4e49\u4ed3\u50a8\u5b9e\u73b0\u7c7b\n/// \n/// \n/// \npublic class MyRepository : PrivateRepository, IMyRepository, IScoped\n where TEntity : class, IPrivateEntity, new()\n where TDbContextLocator : class, IDbContextLocator\n{\n /// \n /// \u5b9e\u73b0\u57fa\u7c7b\u6784\u9020\u51fd\u6570\n /// \n /// \n public MyRepository(IServiceProvider serviceProvider)\n : base(typeof(TDbContextLocator), serviceProvider)\n {\n }\n\n /// \n /// \u81ea\u5b9a\u4e49\u65b9\u6cd5\n /// \n public void MyMethod()\n {\n throw new System.NotImplementedException();\n }\n}\n\n/// \n/// \u9ed8\u8ba4\u6570\u636e\u5e93\u81ea\u5b9a\u4e49\u4ed3\u50a8\u63a5\u53e3\n/// \n/// \npublic interface IMyRepository : IMyRepository\n where TEntity : class, IPrivateEntity, new()\n{\n}\n\n/// \n/// \u9ed8\u8ba4\u6570\u636e\u5e93\u81ea\u5b9a\u4e49\u4ed3\u50a8\u5b9e\u73b0\n/// \n/// \npublic class MyRepository : MyRepository, IMyRepository, IScoped\n where TEntity : class, IPrivateEntity, new()\n{\n public MyRepository(IServiceProvider serviceProvider) : base(serviceProvider)\n {\n }\n}\n')),(0,r.kt)("h2",{id:"947-\u53cd\u9988\u4e0e\u5efa\u8bae"},"9.4.7 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,r.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/58624d73.a6c6a94a.js b/handbook/build/assets/js/58624d73.a6c6a94a.js new file mode 100644 index 00000000000..53c8e05dd80 --- /dev/null +++ b/handbook/build/assets/js/58624d73.a6c6a94a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[7667],{3905:function(e,t,n){n.d(t,{Zo:function(){return d},kt:function(){return u}});var a=n(7294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var p=a.createContext({}),s=function(e){var t=a.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},d=function(e){var t=s(e.components);return a.createElement(p.Provider,{value:t},e.children)},c={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var n=e.components,i=e.mdxType,r=e.originalType,p=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),m=s(n),u=i,k=m["".concat(p,".").concat(u)]||m[u]||c[u]||r;return n?a.createElement(k,o(o({ref:t},d),{},{components:n})):a.createElement(k,o({ref:t},d))}));function u(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var r=n.length,o=new Array(r);o[0]=m;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l.mdxType="string"==typeof e?e:i,o[1]=l;for(var s=2;sSql \u64cd\u4f5c\u4ed3\u50a8",id:"9414-sql-\u64cd\u4f5c\u4ed3\u50a8",children:[]},{value:"9.4.1.5 \u591a\u6570\u636e\u5e93 Sql \u64cd\u4f5c\u4ed3\u50a8",id:"9415-\u591a\u6570\u636e\u5e93-sql-\u64cd\u4f5c\u4ed3\u50a8",children:[]},{value:"9.4.1.6 \u53ea\u8bfb\u5b9e\u4f53\u4ed3\u50a8\uff08\u652f\u6301\u591a\u5e93\uff09",id:"9416-\u53ea\u8bfb\u5b9e\u4f53\u4ed3\u50a8\uff08\u652f\u6301\u591a\u5e93\uff09",children:[]},{value:"9.4.1.7 \u53ea\u5199\u5b9e\u4f53\u4ed3\u50a8\uff08\u652f\u6301\u591a\u5e93\uff09",id:"9417-\u53ea\u5199\u5b9e\u4f53\u4ed3\u50a8\uff08\u652f\u6301\u591a\u5e93\uff09",children:[]},{value:"9.4.1.8 \u53ea\u5141\u8bb8\u65b0\u589e\u5b9e\u4f53\u4ed3\u50a8\uff08\u652f\u6301\u591a\u5e93\uff09",id:"9418-\u53ea\u5141\u8bb8\u65b0\u589e\u5b9e\u4f53\u4ed3\u50a8\uff08\u652f\u6301\u591a\u5e93\uff09",children:[]},{value:"9.4.1.9 \u53ea\u5141\u8bb8\u66f4\u65b0\u5b9e\u4f53\u4ed3\u50a8\uff08\u652f\u6301\u591a\u5e93\uff09",id:"9419-\u53ea\u5141\u8bb8\u66f4\u65b0\u5b9e\u4f53\u4ed3\u50a8\uff08\u652f\u6301\u591a\u5e93\uff09",children:[]},{value:"9.4.1.10 \u53ea\u5141\u8bb8\u5220\u9664\u5b9e\u4f53\u4ed3\u50a8\uff08\u652f\u6301\u591a\u5e93\uff09",id:"94110-\u53ea\u5141\u8bb8\u5220\u9664\u5b9e\u4f53\u4ed3\u50a8\uff08\u652f\u6301\u591a\u5e93\uff09",children:[]},{value:"9.4.1.11 \u53ea\u5141\u8bb8\u62d3\u5c55\u64cd\u4f5c\u5b9e\u4f53\u4ed3\u50a8\uff08\u652f\u6301\u591a\u5e93\uff09",id:"94111-\u53ea\u5141\u8bb8\u62d3\u5c55\u64cd\u4f5c\u5b9e\u4f53\u4ed3\u50a8\uff08\u652f\u6301\u591a\u5e93\uff09",children:[]},{value:"9.4.1.12 \u53ea\u5141\u8bb8 Sql \u67e5\u8be2\u4ed3\u50a8\uff08\u652f\u6301\u591a\u5e93\uff09",id:"94112-\u53ea\u5141\u8bb8-sql-\u67e5\u8be2\u4ed3\u50a8\uff08\u652f\u6301\u591a\u5e93\uff09",children:[]},{value:"9.4.1.13 \u53ea\u5141\u8bb8 Sql \u975e\u67e5\u8be2\u4ed3\u50a8\uff08\u652f\u6301\u591a\u5e93\uff09",id:"94113-\u53ea\u5141\u8bb8-sql-\u975e\u67e5\u8be2\u4ed3\u50a8\uff08\u652f\u6301\u591a\u5e93\uff09",children:[]},{value:"9.4.1.14 \u8bfb\u5199\u5206\u79bb\u4ed3\u50a8",id:"94114-\u8bfb\u5199\u5206\u79bb\u4ed3\u50a8",children:[]},{value:"9.4.1.15 \u5b9a\u4f4d\u5668\u4ed3\u50a8",id:"94115-\u5b9a\u4f4d\u5668\u4ed3\u50a8",children:[]}]},{value:"9.4.2 \u4ed3\u50a8\u4f7f\u7528",id:"942-\u4ed3\u50a8\u4f7f\u7528",children:[{value:"9.4.2.1 \u6784\u9020\u51fd\u6570\u6ce8\u5165",id:"9421-\u6784\u9020\u51fd\u6570\u6ce8\u5165",children:[]},{value:"9.4.2.2 \u65b9\u6cd5\u53c2\u6570\u6ce8\u5165",id:"9422-\u65b9\u6cd5\u53c2\u6570\u6ce8\u5165",children:[]},{value:"9.4.2.3 Db.GetRepository \u83b7\u53d6",id:"9423-dbgetrepository-\u83b7\u53d6",children:[]}]},{value:"9.4.3 \u4ed3\u50a8\u9ad8\u7ea7\u7528\u6cd5",id:"943-\u4ed3\u50a8\u9ad8\u7ea7\u7528\u6cd5",children:[{value:"9.4.3.1 \u52a8\u6001\u5207\u6362\u5b9e\u4f53\u4ed3\u50a8",id:"9431-\u52a8\u6001\u5207\u6362\u5b9e\u4f53\u4ed3\u50a8",children:[]},{value:"9.4.3.2 \u52a8\u6001\u5207\u6362\u4ed3\u50a8\u7c7b\u578b",id:"9432-\u52a8\u6001\u5207\u6362\u4ed3\u50a8\u7c7b\u578b",children:[]},{value:"9.4.3.3 \u83b7\u53d6 Sql \u64cd\u4f5c\u4ed3\u50a8",id:"9433-\u83b7\u53d6-sql-\u64cd\u4f5c\u4ed3\u50a8",children:[]}]},{value:"9.4.4 \u591a\u6570\u636e\u5e93\u64cd\u4f5c",id:"944-\u591a\u6570\u636e\u5e93\u64cd\u4f5c",children:[{value:"9.4.4.1 \u52a8\u6001\u5207\u6362\u591a\u4e2a\u6570\u636e\u5e93",id:"9441-\u52a8\u6001\u5207\u6362\u591a\u4e2a\u6570\u636e\u5e93",children:[]}]},{value:"9.4.5 \u5728\u540e\u53f0\u4efb\u52a1\u4e2d\u4f7f\u7528",id:"945-\u5728\u540e\u53f0\u4efb\u52a1\u4e2d\u4f7f\u7528",children:[]},{value:"9.4.6 \u81ea\u5b9a\u4e49\u4ed3\u50a8",id:"946-\u81ea\u5b9a\u4e49\u4ed3\u50a8",children:[]},{value:"9.4.7 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"947-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],c={toc:d};function m(e){var t=e.components,n=(0,i.Z)(e,o);return(0,r.kt)("wrapper",(0,a.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"941-\u4ec0\u4e48\u662f\u4ed3\u50a8"},"9.4.1 \u4ec0\u4e48\u662f\u4ed3\u50a8"),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"\u5728\u9886\u57df\u5c42\u548c\u6570\u636e\u6620\u5c04\u5c42\u7684\u4e2d\u4ecb,\u4f7f\u7528\u7c7b\u4f3c\u96c6\u5408\u7684\u63a5\u53e3\u6765\u5b58\u53d6\u9886\u57df\u5bf9\u8c61\uff0c\u5b9e\u9645\u4e0a\uff0c\u4ed3\u50a8\u88ab\u7528\u4e8e\u9886\u57df\u5bf9\u8c61\u5728\u6570\u636e\u5e93\u4e0a\u7684\u64cd\u4f5c\uff08\u5b9e\u4f53 Entity \u548c\u503c\u5bf9\u8c61 Value types\uff09\u3002\u4e00\u822c\u6765\u8bf4,\u6211\u4eec\u9488\u5bf9\u4e0d\u540c\u7684\u5b9e\u4f53(\u6216\u805a\u5408\u6839 Aggregate Root)\u4f1a\u521b\u5efa\u76f8\u5bf9\u5e94\u7684\u4ed3\u50a8\u3002")),(0,r.kt)("p",null,"\u7b80\u5355\u6765\u8bf4\uff0c\u4ed3\u50a8\u5c31\u662f\u6570\u636e\u5b58\u53d6\u64cd\u4f5c\u7684\u8f7d\u4f53\uff0c\u4f46\u4e0d\u9650\u5b9a\u4e8e\u6570\u636e\u5e93\u3002"),(0,r.kt)("h2",{id:"941-\u5185\u7f6e\u4ed3\u50a8"},"9.4.1 \u5185\u7f6e\u4ed3\u50a8"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u5185\u7f6e\u4e86\u4e00\u4e2a\u6570\u636e\u5e93\u64cd\u4f5c\u7684\u4ed3\u50a8\uff0c\u65b9\u4fbf\u5927\u5bb6\u62d3\u5c55\u548c\u96c6\u6210\uff1a"),(0,r.kt)("div",{className:"admonition admonition-info alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u5173\u4e8e\u4f9d\u8d56\u6ce8\u5165\u8bf4\u660e")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u76ee\u524d\u80fd\u591f\u88ab\u4f9d\u8d56\u6ce8\u5165\u89e3\u6790\u670d\u52a1\u7684\u4ed3\u50a8\u6709\uff1a"),(0,r.kt)("ul",{parentName:"div"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"IRepository")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"IRepository")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"IRepository")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"ISqlRepository")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"ISqlRepository")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"IMSRepository")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"IMSRepository")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"IMSRepository")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"IDbRepository"))),(0,r.kt)("p",{parentName:"div"},"\u8fd8\u6709\u4e24\u4e2a\u79c1\u6709\u4ed3\u50a8\uff0c\u4e5f\u662f\u6240\u6709\u4ed3\u50a8\u7684\u57fa\u7c7b\uff08\u7528\u4e8e\u9ad8\u7ea7\u81ea\u5b9a\u4e49\u5f00\u53d1\uff09"),(0,r.kt)("ul",{parentName:"div"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"IPrivateRepository"),"\uff1a\u6240\u6709\u5b9e\u4f53\u4ed3\u50a8\u7684\u57fa\u7c7b"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"IPrivateSqlRepository"),"\uff1a\u6240\u6709\u6570\u636e\u5e93\u64cd\u4f5c\u7684\u57fa\u7c7b")),(0,r.kt)("p",{parentName:"div"},"\u9664\u6b64\u4e4b\u540e\u7684\u6240\u6709\u4ed3\u50a8\u53ea\u80fd\u901a\u8fc7 ",(0,r.kt)("inlineCode",{parentName:"p"},"rep.Constraint()")," \u8fdb\u884c\u7ea6\u675f\u521b\u5efa\uff0c\u5982\uff0c\u53ea\u8bfb\u4ed3\u50a8\uff1a"),(0,r.kt)("pre",{parentName:"div"},(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"var readRepository = rep.Constraint>();\n")))),(0,r.kt)("h3",{id:"9411-\u975e\u6cdb\u578b\u8d85\u7ea7\u4ed3\u50a8"},"9.4.1.1 \u975e\u6cdb\u578b\u8d85\u7ea7\u4ed3\u50a8"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"IRepository"),"\uff1a\u9ed8\u8ba4\u975e\u6cdb\u578b\u4ed3\u50a8\u63a5\u53e3\uff0c\u652f\u6301\u5207\u6362\u5230\u4efb\u4f55\u4ed3\u50a8"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"EFCoreRepository"),"\uff1a\u9ed8\u8ba4\u975e\u6cdb\u578b\u4ed3\u50a8\u5b9e\u73b0")),(0,r.kt)("h3",{id:"9412-\u6cdb\u578b\u5b9e\u4f53\u4ed3\u50a8"},"9.4.1.2 \u6cdb\u578b\u5b9e\u4f53\u4ed3\u50a8"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"IRepository"),"\uff1a\u9ed8\u8ba4\u6570\u636e\u5e93\u5b9e\u4f53\u4ed3\u50a8\u63a5\u53e3"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"EFCoreRepository"),"\uff1a\u9ed8\u8ba4\u6570\u636e\u5e93\u5b9e\u4f53\u4ed3\u50a8\u5b9e\u73b0")),(0,r.kt)("h3",{id:"9413-\u6cdb\u578b\u591a\u6570\u636e\u5e93\u5b9e\u4f53\u4ed3\u50a8"},"9.4.1.3 \u6cdb\u578b\u591a\u6570\u636e\u5e93\u5b9e\u4f53\u4ed3\u50a8"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"IRepository"),"\uff1a\u4efb\u610f\u6570\u636e\u5e93\u7684\u5b9e\u4f53\u4ed3\u50a8\u63a5\u53e3"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"EFCoreRepository"),"\uff1a\u4efb\u610f\u6570\u636e\u5e93\u7684\u5b9e\u4f53\u4ed3\u50a8\u5b9e\u73b0")),(0,r.kt)("h3",{id:"9414-sql-\u64cd\u4f5c\u4ed3\u50a8"},"9.4.1.4 ",(0,r.kt)("inlineCode",{parentName:"h3"},"Sql")," \u64cd\u4f5c\u4ed3\u50a8"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"ISqlRepository"),"\uff1a\u9ed8\u8ba4\u6570\u636e\u5e93 ",(0,r.kt)("inlineCode",{parentName:"li"},"Sql")," \u64cd\u4f5c\u4ed3\u50a8\u63a5\u53e3"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"SqlRepository"),"\uff1a\u9ed8\u8ba4\u6570\u636e\u5e93 ",(0,r.kt)("inlineCode",{parentName:"li"},"Sql")," \u64cd\u4f5c\u4ed3\u50a8\u5b9e\u73b0")),(0,r.kt)("h3",{id:"9415-\u591a\u6570\u636e\u5e93-sql-\u64cd\u4f5c\u4ed3\u50a8"},"9.4.1.5 \u591a\u6570\u636e\u5e93 ",(0,r.kt)("inlineCode",{parentName:"h3"},"Sql")," \u64cd\u4f5c\u4ed3\u50a8"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"ISqlRepository"),"\uff1a\u4efb\u610f\u6570\u636e\u5e93\u7684 ",(0,r.kt)("inlineCode",{parentName:"li"},"Sql")," \u64cd\u4f5c\u4ed3\u50a8\u63a5\u53e3"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"SqlRepository"),"\uff1a\u4efb\u610f\u6570\u636e\u5e93\u7684 ",(0,r.kt)("inlineCode",{parentName:"li"},"Sql")," \u64cd\u4f5c\u4ed3\u50a8\u5b9e\u73b0")),(0,r.kt)("h3",{id:"9416-\u53ea\u8bfb\u5b9e\u4f53\u4ed3\u50a8\uff08\u652f\u6301\u591a\u5e93\uff09"},"9.4.1.6 \u53ea\u8bfb\u5b9e\u4f53\u4ed3\u50a8\uff08\u652f\u6301\u591a\u5e93\uff09"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"IReadableRepository"),"\uff1a\u9ed8\u8ba4\u6570\u636e\u5e93\u53ea\u8bfb\u5b9e\u4f53\u4ed3\u50a8\u63a5\u53e3"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"IReadableRepository"),"\uff1a\u591a\u6570\u636e\u5e93\u53ea\u8bfb\u5b9e\u4f53\u4ed3\u50a8\u5b9e\u73b0")),(0,r.kt)("h3",{id:"9417-\u53ea\u5199\u5b9e\u4f53\u4ed3\u50a8\uff08\u652f\u6301\u591a\u5e93\uff09"},"9.4.1.7 \u53ea\u5199\u5b9e\u4f53\u4ed3\u50a8\uff08\u652f\u6301\u591a\u5e93\uff09"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"IWritableRepository"),"\uff1a\u9ed8\u8ba4\u6570\u636e\u5e93\u53ea\u5199\u5b9e\u4f53\u4ed3\u50a8\u63a5\u53e3"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"IWritableRepository"),"\uff1a\u591a\u6570\u636e\u5e93\u53ea\u5199\u5b9e\u4f53\u4ed3\u50a8\u5b9e\u73b0")),(0,r.kt)("h3",{id:"9418-\u53ea\u5141\u8bb8\u65b0\u589e\u5b9e\u4f53\u4ed3\u50a8\uff08\u652f\u6301\u591a\u5e93\uff09"},"9.4.1.8 \u53ea\u5141\u8bb8\u65b0\u589e\u5b9e\u4f53\u4ed3\u50a8\uff08\u652f\u6301\u591a\u5e93\uff09"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"IInsertableRepository"),"\uff1a\u9ed8\u8ba4\u6570\u636e\u5e93\u53ea\u5141\u8bb8\u65b0\u589e\u7684\u5b9e\u4f53\u4ed3\u50a8\u63a5\u53e3"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"IInsertableRepository"),"\uff1a\u591a\u6570\u636e\u5e93\u53ea\u5141\u8bb8\u65b0\u589e\u7684\u5b9e\u4f53\u4ed3\u50a8\u5b9e\u73b0")),(0,r.kt)("h3",{id:"9419-\u53ea\u5141\u8bb8\u66f4\u65b0\u5b9e\u4f53\u4ed3\u50a8\uff08\u652f\u6301\u591a\u5e93\uff09"},"9.4.1.9 \u53ea\u5141\u8bb8\u66f4\u65b0\u5b9e\u4f53\u4ed3\u50a8\uff08\u652f\u6301\u591a\u5e93\uff09"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"IUpdateableRepository"),"\uff1a\u9ed8\u8ba4\u6570\u636e\u5e93\u53ea\u5141\u8bb8\u66f4\u65b0\u7684\u5b9e\u4f53\u4ed3\u50a8\u63a5\u53e3"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"IUpdateableRepository"),"\uff1a\u591a\u6570\u636e\u5e93\u53ea\u5141\u8bb8\u66f4\u65b0\u7684\u5b9e\u4f53\u4ed3\u50a8\u5b9e\u73b0")),(0,r.kt)("h3",{id:"94110-\u53ea\u5141\u8bb8\u5220\u9664\u5b9e\u4f53\u4ed3\u50a8\uff08\u652f\u6301\u591a\u5e93\uff09"},"9.4.1.10 \u53ea\u5141\u8bb8\u5220\u9664\u5b9e\u4f53\u4ed3\u50a8\uff08\u652f\u6301\u591a\u5e93\uff09"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"IDeletableRepository"),"\uff1a\u9ed8\u8ba4\u6570\u636e\u5e93\u53ea\u5141\u8bb8\u5220\u9664\u7684\u5b9e\u4f53\u4ed3\u50a8\u63a5\u53e3"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"IDeletableRepository"),"\uff1a\u591a\u6570\u636e\u5e93\u53ea\u5141\u8bb8\u5220\u9664\u7684\u5b9e\u4f53\u4ed3\u50a8\u5b9e\u73b0")),(0,r.kt)("h3",{id:"94111-\u53ea\u5141\u8bb8\u62d3\u5c55\u64cd\u4f5c\u5b9e\u4f53\u4ed3\u50a8\uff08\u652f\u6301\u591a\u5e93\uff09"},"9.4.1.11 \u53ea\u5141\u8bb8\u62d3\u5c55\u64cd\u4f5c\u5b9e\u4f53\u4ed3\u50a8\uff08\u652f\u6301\u591a\u5e93\uff09"),(0,r.kt)("div",{className:"admonition admonition-warning alert alert--danger"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"}))),"\u529f\u80fd\u79fb\u9664\u58f0\u660e")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u8be5\u529f\u80fd\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion 2.5.1 +")," \u7248\u672c\u4e2d\u5df2\u79fb\u9664\u3002\u6b64\u64cd\u4f5c\u8ba9\u5f88\u591a\u4e0d\u4e86\u89e3 ",(0,r.kt)("inlineCode",{parentName:"p"},"EFCore")," \u7684\u5f00\u53d1\u8005\u4ea7\u751f\u4e86\u5f88\u5927\u7684\u8bef\u89e3\uff0c\u4e0d\u77e5\u4f55\u65f6\u65b0\u589e\u6216\u4f55\u65f6\u66f4\u65b0\uff0c\u6545\u79fb\u9664\u6b64\u529f\u80fd\u3002"))),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"IOperableRepository"),"\uff1a\u9ed8\u8ba4\u6570\u636e\u5e93\u53ea\u5141\u8bb8\u62d3\u5c55\u64cd\u4f5c\u5b9e\u4f53\u4ed3\u50a8\u63a5\u53e3"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"IOperableRepository"),"\uff1a\u591a\u6570\u636e\u5e93\u53ea\u5141\u8bb8\u62d3\u5c55\u64cd\u4f5c\u5b9e\u4f53\u4ed3\u50a8\u5b9e\u73b0")),(0,r.kt)("h3",{id:"94112-\u53ea\u5141\u8bb8-sql-\u67e5\u8be2\u4ed3\u50a8\uff08\u652f\u6301\u591a\u5e93\uff09"},"9.4.1.12 \u53ea\u5141\u8bb8 ",(0,r.kt)("inlineCode",{parentName:"h3"},"Sql")," \u67e5\u8be2\u4ed3\u50a8\uff08\u652f\u6301\u591a\u5e93\uff09"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"ISqlReaderRepository"),"\uff1a\u9ed8\u8ba4\u6570\u636e\u5e93\u53ea\u5141\u8bb8 ",(0,r.kt)("inlineCode",{parentName:"li"},"Sql")," \u67e5\u8be2\u4ed3\u50a8\u63a5\u53e3"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"ISqlReaderRepository"),"\uff1a\u591a\u6570\u636e\u5e93\u53ea\u5141\u8bb8 ",(0,r.kt)("inlineCode",{parentName:"li"},"Sql")," \u67e5\u8be2\u4ed3\u50a8\u5b9e\u73b0")),(0,r.kt)("h3",{id:"94113-\u53ea\u5141\u8bb8-sql-\u975e\u67e5\u8be2\u4ed3\u50a8\uff08\u652f\u6301\u591a\u5e93\uff09"},"9.4.1.13 \u53ea\u5141\u8bb8 ",(0,r.kt)("inlineCode",{parentName:"h3"},"Sql")," \u975e\u67e5\u8be2\u4ed3\u50a8\uff08\u652f\u6301\u591a\u5e93\uff09"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"ISqlExecutableRepository"),"\uff1a\u9ed8\u8ba4\u6570\u636e\u5e93\u53ea\u5141\u8bb8 ",(0,r.kt)("inlineCode",{parentName:"li"},"Sql")," \u975e\u67e5\u8be2\u4ed3\u50a8\u63a5\u53e3"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"ISqlExecutableRepository"),"\uff1a\u591a\u6570\u636e\u5e93\u53ea\u5141\u8bb8 ",(0,r.kt)("inlineCode",{parentName:"li"},"Sql")," \u975e\u67e5\u8be2\u4ed3\u50a8\u5b9e\u73b0")),(0,r.kt)("h3",{id:"94114-\u8bfb\u5199\u5206\u79bb\u4ed3\u50a8"},"9.4.1.14 \u8bfb\u5199\u5206\u79bb\u4ed3\u50a8"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"IMSRepository"),"\uff1a\u6700\u591a\u652f\u6301 ",(0,r.kt)("strong",{parentName:"li"},"\u4e00\u4e3b 7 \u4ece")," \u4ed3\u50a8")),(0,r.kt)("h3",{id:"94115-\u5b9a\u4f4d\u5668\u4ed3\u50a8"},"9.4.1.15 \u5b9a\u4f4d\u5668\u4ed3\u50a8"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"IDbRepository"),"\uff1a\u521d\u59cb\u5316\u7279\u5b9a\u6570\u636e\u5e93\u4ed3\u50a8")),(0,r.kt)("h2",{id:"942-\u4ed3\u50a8\u4f7f\u7528"},"9.4.2 \u4ed3\u50a8\u4f7f\u7528"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u63d0\u4f9b\u4e86\u975e\u5e38\u591a\u7684\u65b9\u5f0f\u521b\u5efa\u4ed3\u50a8\uff0c\u76ee\u7684\u662f\u4e3a\u4e86\u8ba9\u5927\u5bb6\u53ef\u4ee5\u5728\u4e0d\u540c\u7684\u573a\u666f\u4e2d\u4f7f\u7528\u3002"),(0,r.kt)("h3",{id:"9421-\u6784\u9020\u51fd\u6570\u6ce8\u5165"},"9.4.2.1 \u6784\u9020\u51fd\u6570\u6ce8\u5165"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{2}","{2}":!0},"private readonly IRepository _personRepository;\npublic FurionService(IRepository personRepository)\n{\n _personRepository = personRepository;\n}\n")),(0,r.kt)("h3",{id:"9422-\u65b9\u6cd5\u53c2\u6570\u6ce8\u5165"},"9.4.2.2 \u65b9\u6cd5\u53c2\u6570\u6ce8\u5165"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1}","{1}":!0},"public async Task> GetAll([FromServices] IRepository repository, string keyword)\n{\n var persons = await repository.AsQueryable().ToListAsync();\n return persons.Adapt>();\n}\n")),(0,r.kt)("h3",{id:"9423-dbgetrepository-\u83b7\u53d6"},"9.4.2.3 ",(0,r.kt)("inlineCode",{parentName:"h3"},"Db.GetRepository")," \u83b7\u53d6"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"// \u975e\u6cdb\u578b\u4ed3\u50a8\nvar repository = Db.GetRepository();\n\n// \u6cdb\u578b\u4ed3\u50a8\nvar repository = Db.GetRepository();\n\n// Sql \u4ed3\u50a8\nvar sqlRepository = Db.GetSqlRepository();\n")),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u8bf4\u660e")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u4e0d\u7ba1\u91c7\u7528\u54ea\u79cd\u65b9\u5f0f\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u90fd\u4fdd\u8bc1\u4e86\u4ed3\u50a8\u4e00\u6b21\u8bf7\u6c42\u552f\u4e00\u6027\u3002\u540c\u65f6 ",(0,r.kt)("inlineCode",{parentName:"p"},"Db.GetRepository()")," \u65b9\u5f0f\u652f\u6301\u4efb\u4f55\u9759\u6001\u7c7b\u4e2d\u4f7f\u7528\u3002"))),(0,r.kt)("h2",{id:"943-\u4ed3\u50a8\u9ad8\u7ea7\u7528\u6cd5"},"9.4.3 \u4ed3\u50a8\u9ad8\u7ea7\u7528\u6cd5"),(0,r.kt)("h3",{id:"9431-\u52a8\u6001\u5207\u6362\u5b9e\u4f53\u4ed3\u50a8"},"9.4.3.1 \u52a8\u6001\u5207\u6362\u5b9e\u4f53\u4ed3\u50a8"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"var userRepository = personRepository.Change();\n")),(0,r.kt)("h3",{id:"9432-\u52a8\u6001\u5207\u6362\u4ed3\u50a8\u7c7b\u578b"},"9.4.3.2 \u52a8\u6001\u5207\u6362\u4ed3\u50a8\u7c7b\u578b"),(0,r.kt)("p",null,"\u6bd4\u5982\uff0c\u8bfb\u5199\u5206\u79bb/\u4e3b\u4ece\u5e93\u4ed3\u50a8\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"// \u53ea\u8bfb\u4ed3\u50a8\nvar readRepository = personRepository.Constraint>();\n\n// \u53ea\u5199\u4ed3\u50a8\nvar writeRepository = personRepository.Constraint>();\n")),(0,r.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u5c0f\u77e5\u8bc6")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},(0,r.kt)("inlineCode",{parentName:"p"},".Constraint")," \u652f\u6301\u5207\u6362\u4efb\u4f55\u4ed3\u50a8\u7c7b\u578b\u3002"))),(0,r.kt)("h3",{id:"9433-\u83b7\u53d6-sql-\u64cd\u4f5c\u4ed3\u50a8"},"9.4.3.3 \u83b7\u53d6 ",(0,r.kt)("inlineCode",{parentName:"h3"},"Sql")," \u64cd\u4f5c\u4ed3\u50a8"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"var sqlRepository = repository.Sql();\n")),(0,r.kt)("h2",{id:"944-\u591a\u6570\u636e\u5e93\u64cd\u4f5c"},"9.4.4 \u591a\u6570\u636e\u5e93\u64cd\u4f5c"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u901a\u8fc7 ",(0,r.kt)("inlineCode",{parentName:"p"},"DbContextLocator")," \u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u5b9a\u4f4d\u5668\u5b9e\u73b0\u591a\u79cd\u6570\u636e\u5e93\u64cd\u4f5c\uff0c\u53ef\u4ee5\u968f\u610f\u5207\u6362\u6570\u636e\u5e93"),(0,r.kt)("h3",{id:"9441-\u52a8\u6001\u5207\u6362\u591a\u4e2a\u6570\u636e\u5e93"},"9.4.4.1 \u52a8\u6001\u5207\u6362\u591a\u4e2a\u6570\u636e\u5e93"),(0,r.kt)("h4",{id:"\u52a8\u6001\u5207\u6362\u6570\u636e\u5e93"},"\u52a8\u6001\u5207\u6362\u6570\u636e\u5e93"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"// \u5207\u6362\u5230 MSSQL \u64cd\u4f5c Person\u8868\nvar mssqlRepository = repository.Change();\n\n// \u5207\u6362\u5230 MySql \u64cd\u4f5c Person\u8868\nvar mysqlRepository = repository.Change();\n\n// \u5207\u6362\u5230 Sqlite \u64cd\u4f5c Person\u8868\nvar sqliteRepository = repository.Change();\n\n// \u5176\u4ed6\u66f4\u591a\u6570\u636e\u5e93\u4e00\u6837\u7684\u64cd\u4f5c\n")),(0,r.kt)("h4",{id:"\u53e6\u5916\u4efb\u4f55\u4ed3\u50a8\u6216\u5b9e\u4f53\u914d\u7f6e\u90fd\u652f\u6301\u591a\u4e2a\u6570\u636e\u5e93\u540c\u65f6\u64cd\u4f5c"},"\u53e6\u5916\u4efb\u4f55\u4ed3\u50a8\u6216\u5b9e\u4f53\u914d\u7f6e\u90fd\u652f\u6301\u591a\u4e2a\u6570\u636e\u5e93\u540c\u65f6\u64cd\u4f5c"),(0,r.kt)("p",null,"\u4ed3\u50a8\u65b9\u5f0f"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"IRepository mssqlRepository\n\nISqlRepository mssqlRepository;\n")),(0,r.kt)("p",null,"\u52a8\u6001 ",(0,r.kt)("inlineCode",{parentName:"p"},"sql")," \u65b9\u5f0f"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'"select * from person".Change().SqlQuery();\n')),(0,r.kt)("p",null,"\u5b9e\u4f53\u914d\u7f6e\u65b9\u5f0f"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"public class User:Entity\n{\n}\n")),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Sql")," \u4ee3\u7406\u65b9\u5f0f"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'[SqlFunction("funcName", DbContextLocator = typeof(MySqlDbContextLocator))]\nint GetAge(int id);\n')),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Linq")," \u4e2d\u65b9\u5f0f"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'[QueryableFunction("funcName","dbo", DbContextLocator = typeof(MySqlDbContextLocator))]\nstring GetName()=> throw Oops.Oh("\u4e0d\u652f\u6301\u8be5\u6570\u636e\u5e93\u64cd\u4f5c");\n')),(0,r.kt)("h2",{id:"945-\u5728\u540e\u53f0\u4efb\u52a1\u4e2d\u4f7f\u7528"},"9.4.5 \u5728\u540e\u53f0\u4efb\u52a1\u4e2d\u4f7f\u7528"),(0,r.kt)("p",null,"\u7531\u4e8e ",(0,r.kt)("inlineCode",{parentName:"p"},"DbContext")," \u9ed8\u8ba4\u6ce8\u518c\u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"Scoped")," \u751f\u5b58\u5468\u671f\uff0c\u6240\u4ee5\u5728\u540e\u53f0\u4efb\u52a1\u4e2d\u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"IServiceScopeFactory")," \u83b7\u53d6\u6240\u6709\u670d\u52a1\uff0c\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'public class JobService : BackgroundService\n{\n // \u65e5\u5fd7\u5bf9\u8c61\n private readonly ILogger _logger;\n\n // \u670d\u52a1\u5de5\u5382\n private readonly IServiceScopeFactory _scopeFactory;\n public JobService(ILogger logger\n , IServiceScopeFactory scopeFactory)\n {\n _logger = logger;\n _scopeFactory = scopeFactory;\n }\n\n protected override Task ExecuteAsync(CancellationToken stoppingToken)\n {\n _logger.LogInformation("\u5199\u65e5\u5fd7~~");\n\n using (var scope = _scopeFactory.CreateScope())\n {\n var services = scope.ServiceProvider;\n\n // \u83b7\u53d6\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\n var dbContext = Db.GetDbContext(services);\n\n // \u83b7\u53d6\u4ed3\u50a8\n var respository = Db.GetRepository(services);\n\n // \u89e3\u6790\u5176\u4ed6\u670d\u52a1\n var otherService = services.GetService();\n }\n\n return Task.CompletedTask;\n }\n}\n')),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u6570\u636e\u5e93\u64cd\u4f5c\u6ce8\u610f")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u5982\u679c\u4f5c\u7528\u57df\u4e2d\u5bf9",(0,r.kt)("strong",{parentName:"p"},"\u6570\u636e\u5e93\u6709\u4efb\u4f55\u53d8\u66f4\u64cd\u4f5c"),"\uff0c\u9700\u624b\u52a8\u8c03\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"SaveChanges")," \u6216\u5e26 ",(0,r.kt)("inlineCode",{parentName:"p"},"Now")," \u7ed3\u5c3e\u7684\u65b9\u6cd5\u3002\u4e5f\u53ef\u4ee5\u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"Scoped.CreateUow(handler)")," \u4ee3\u66ff\u3002"))),(0,r.kt)("h2",{id:"946-\u81ea\u5b9a\u4e49\u4ed3\u50a8"},"9.4.6 \u81ea\u5b9a\u4e49\u4ed3\u50a8"),(0,r.kt)("p",null,"\u6709\u4e9b\u65f6\u5019\u6211\u4eec\u9700\u8981\u81ea\u5b9a\u4e49\u4ed3\u50a8\uff0c\u62d3\u5c55\u73b0\u6709\u7684\u4ed3\u50a8\u529f\u80fd\uff0c\u53ef\u53c2\u8003\u4ee5\u4e0b\u4ee3\u7801\uff08\u542b\u5b9a\u4f4d\u5668\u4ed3\u50a8\u548c\u9ed8\u8ba4\u4ed3\u50a8\u5b9e\u73b0\uff09"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'/// \n/// \u81ea\u5b9a\u4e49\u4ed3\u50a8\u63a5\u53e3\n/// \n/// \n/// \npublic interface IMyRepository : IPrivateRepository\n where TEntity : class, IPrivateEntity, new()\n where TDbContextLocator : class, IDbContextLocator\n{\n /// \n /// \u81ea\u5b9a\u4e49\u65b9\u6cd5\n /// \n void MyMethod();\n}\n\n/// \n/// \u81ea\u5b9a\u4e49\u4ed3\u50a8\u5b9e\u73b0\u7c7b\n/// \n/// \n/// \npublic class MyRepository : PrivateRepository, IMyRepository, IScoped\n where TEntity : class, IPrivateEntity, new()\n where TDbContextLocator : class, IDbContextLocator\n{\n /// \n /// \u5b9e\u73b0\u57fa\u7c7b\u6784\u9020\u51fd\u6570\n /// \n /// \n public MyRepository(IServiceProvider serviceProvider)\n : base(typeof(TDbContextLocator), serviceProvider)\n {\n }\n\n /// \n /// \u81ea\u5b9a\u4e49\u65b9\u6cd5\n /// \n public void MyMethod()\n {\n throw new System.NotImplementedException();\n }\n}\n\n/// \n/// \u9ed8\u8ba4\u6570\u636e\u5e93\u81ea\u5b9a\u4e49\u4ed3\u50a8\u63a5\u53e3\n/// \n/// \npublic interface IMyRepository : IMyRepository\n where TEntity : class, IPrivateEntity, new()\n{\n}\n\n/// \n/// \u9ed8\u8ba4\u6570\u636e\u5e93\u81ea\u5b9a\u4e49\u4ed3\u50a8\u5b9e\u73b0\n/// \n/// \npublic class MyRepository : MyRepository, IMyRepository, IScoped\n where TEntity : class, IPrivateEntity, new()\n{\n public MyRepository(IServiceProvider serviceProvider) : base(serviceProvider)\n {\n }\n}\n')),(0,r.kt)("h2",{id:"947-\u53cd\u9988\u4e0e\u5efa\u8bae"},"9.4.7 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,r.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/5edfa151.83d37021.js b/handbook/build/assets/js/5edfa151.83d37021.js deleted file mode 100644 index 35dff9be003..00000000000 --- a/handbook/build/assets/js/5edfa151.83d37021.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[5809],{3905:function(e,t,n){n.d(t,{Zo:function(){return p},kt:function(){return m}});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var c=a.createContext({}),s=function(e){var t=a.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},p=function(e){var t=s(e.components);return a.createElement(c.Provider,{value:t},e.children)},d={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},u=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,c=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),u=s(n),m=r,k=u["".concat(c,".").concat(m)]||u[m]||d[m]||i;return n?a.createElement(k,o(o({ref:t},p),{},{components:n})):a.createElement(k,o({ref:t},p))}));function m(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,o=new Array(i);o[0]=u;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l.mdxType="string"==typeof e?e:r,o[1]=l;for(var s=2;sZack.EFCore.Batch \u4f7f\u7528",id:"992-zackefcorebatch-\u4f7f\u7528",children:[{value:"9.9.2.1 \u5b89\u88c5\u5bf9\u5e94\u7684\u6570\u636e\u5e93 Nuget \u5305",id:"9921-\u5b89\u88c5\u5bf9\u5e94\u7684\u6570\u636e\u5e93-nuget-\u5305",children:[]},{value:"9.9.2.2 \u6ce8\u518c\u5e76\u914d\u7f6e\u670d\u52a1",id:"9922-\u6ce8\u518c\u5e76\u914d\u7f6e\u670d\u52a1",children:[]},{value:"9.9.2.3 \u57fa\u672c\u4f7f\u7528",id:"9923-\u57fa\u672c\u4f7f\u7528",children:[]}]},{value:"9.9.3 EFCore.BulkExtensions \u4f7f\u7528",id:"993-efcorebulkextensions-\u4f7f\u7528",children:[{value:"9.9.3.1 \u5e38\u89c1\u6279\u91cf\u64cd\u4f5c",id:"9931-\u5e38\u89c1\u6279\u91cf\u64cd\u4f5c",children:[]},{value:"9.9.3.2 \u67e5\u8be2\u540e\u6279\u91cf\u64cd\u4f5c",id:"9932-\u67e5\u8be2\u540e\u6279\u91cf\u64cd\u4f5c",children:[]},{value:"9.9.3.3 \u6279\u91cf\u64cd\u4f5c\u6027\u80fd",id:"9933-\u6279\u91cf\u64cd\u4f5c\u6027\u80fd",children:[]}]},{value:"9.9.4 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"994-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],d={toc:p};function u(e){var t=e.components,n=(0,r.Z)(e,o);return(0,i.kt)("wrapper",(0,a.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"991-\u5173\u4e8e\u6279\u91cf\u64cd\u4f5c"},"9.9.1 \u5173\u4e8e\u6279\u91cf\u64cd\u4f5c"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\uff0c\u9ed8\u8ba4\u53ea\u63d0\u4f9b\u5c0f\u6570\u636e\uff08100 \u6761 \u4ee5\u5185\uff09\u6279\u91cf\u6570\u636e\u64cd\u4f5c\uff0c\u5982\u679c\u9700\u8981\u66f4\u5927\u7684\u6570\u636e\u6279\u91cf\u5904\u7406\uff0c\u63a8\u8350\u4f7f\u7528\u7b2c\u4e09\u65b9\u5305 ",(0,i.kt)("a",{parentName:"p",href:"https://github.com/yangzhongke/Zack.EFCore.Batch"},"Zack.EFCore.Batch"),"\uff0c\u652f\u6301\u548c ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u65e0\u7f1d\u8854\u63a5\u3002"),(0,i.kt)("h2",{id:"992-zackefcorebatch-\u4f7f\u7528"},"9.9.2 ",(0,i.kt)("inlineCode",{parentName:"h2"},"Zack.EFCore.Batch")," \u4f7f\u7528"),(0,i.kt)("h3",{id:"9921-\u5b89\u88c5\u5bf9\u5e94\u7684\u6570\u636e\u5e93-nuget-\u5305"},"9.9.2.1 \u5b89\u88c5\u5bf9\u5e94\u7684\u6570\u636e\u5e93 ",(0,i.kt)("inlineCode",{parentName:"h3"},"Nuget")," \u5305"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"MSSQL"),"\uff1a",(0,i.kt)("inlineCode",{parentName:"li"},"Zack.EFCore.Batch.MSSQL")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"MySql"),"\uff1a",(0,i.kt)("inlineCode",{parentName:"li"},"Zack.EFCore.Batch.MySQL.Pomelo")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"Npgsql"),"\uff1a",(0,i.kt)("inlineCode",{parentName:"li"},"Zack.EFCore.Batch.Npgsql")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"Oracle"),"\uff1a",(0,i.kt)("inlineCode",{parentName:"li"},"Zack.EFCore.Batch.Oracle")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"Sqlite"),"\uff1a",(0,i.kt)("inlineCode",{parentName:"li"},"Zack.EFCore.Batch.Sqlite"))),(0,i.kt)("h3",{id:"9922-\u6ce8\u518c\u5e76\u914d\u7f6e\u670d\u52a1"},"9.9.2.2 \u6ce8\u518c\u5e76\u914d\u7f6e\u670d\u52a1"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{3,5}","{3,5}":!0},"services.AddDatabaseAccessor(options =>\n{\n options.AddDbPool(providerName: default, optionBuilder: opt =>\n {\n opt.UseBatchEF_Sqlite(); // SQlite \u6570\u636e\u5e93\u5305\n });\n});\n")),(0,i.kt)("h3",{id:"9923-\u57fa\u672c\u4f7f\u7528"},"9.9.2.3 \u57fa\u672c\u4f7f\u7528"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// \u6279\u91cf\u66f4\u65b0\nawait repository.Context.BatchUpdate()\n .Set(b => b.Price, b => b.Price + 3)\n .Set(b => b.Title, b => s)\n .Set(b => b.AuthorName,b=>b.Title.Substring(3,2)+b.AuthorName.ToUpper())\n .Set(b => b.PubTime, b => DateTime.Now)\n .Where(b => b.Id > n || b.AuthorName.StartsWith("Zack"))\n .ExecuteAsync();\n\n// \u6279\u91cf\u5220\u9664\nawait repository.Context.DeleteRangeAsync(b => b.Price > n || b.AuthorName == "zack yang");\n')),(0,i.kt)("h2",{id:"993-efcorebulkextensions-\u4f7f\u7528"},"9.9.3 ",(0,i.kt)("inlineCode",{parentName:"h2"},"EFCore.BulkExtensions")," \u4f7f\u7528"),(0,i.kt)("p",null,"\u901a\u8fc7 ",(0,i.kt)("inlineCode",{parentName:"p"},"Nuget")," \u5b89\u88c5 ",(0,i.kt)("inlineCode",{parentName:"p"},"EFCore.BulkExtensions")," \u5305\u5373\u53ef\u3002"),(0,i.kt)("h3",{id:"9931-\u5e38\u89c1\u6279\u91cf\u64cd\u4f5c"},"9.9.3.1 \u5e38\u89c1\u6279\u91cf\u64cd\u4f5c"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"// \u6279\u91cf\u63d2\u5165\nrepository.Context.BulkInsert(entitiesList);\nrepository.Context.BulkInsertAsync(entitiesList);\n\n// \u6279\u91cf\u66f4\u65b0\nrepository.Context.BulkUpdate(entitiesList);\nrepository.Context.BulkUpdateAsync(entitiesList);\n\n// \u6279\u91cf\u5220\u9664\nrepository.Context.BulkDelete(entitiesList);\nrepository.Context.BulkDeleteAsync(entitiesList);\n\n// \u6279\u91cf\u63d2\u5165\u6216\u66f4\u65b0\nrepository.Context.BulkInsertOrUpdate(entitiesList);\nrepository.Context.BulkInsertOrUpdateAsync(entitiesList);\n\n// \u6279\u91cf\u63d2\u5165\u6216\u66f4\u65b0\u6216\u5220\u9664\nrepository.Context.BulkInsertOrUpdateOrDelete(entitiesList);\nrepository.Context.BulkInsertOrUpdateOrDeleteAsync(entitiesList);\n\n// \u6279\u91cf\u8bfb\u53d6\u591a\u4e2a\u5b9e\u4f53\nrepository.Context.BulkRead(entitiesList);\nrepository.Context.BulkReadAsync(entitiesList);\n\n// \u6279\u91cf\u6e05\u7a7a\u8868\uff08\u614e\u7528\uff01\uff01\uff01\uff01\uff01\uff09\nrepository.Context.Truncate();\nrepository.Context.TruncateAsync();\n")),(0,i.kt)("h3",{id:"9932-\u67e5\u8be2\u540e\u6279\u91cf\u64cd\u4f5c"},"9.9.3.2 \u67e5\u8be2\u540e\u6279\u91cf\u64cd\u4f5c"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// \u6839\u636e\u6761\u4ef6\u6279\u91cf\u5220\u9664\nrepository.Where(a => a.ItemId > 500).BatchDelete();\nawait repository.Where(a => a.ItemId > 500).BatchDeleteAsync();\n\n// \u6839\u636e\u6761\u4ef6\u6279\u91cf\u66f4\u65b0\nrepository.Where(a => a.ItemId <= 500).BatchUpdate(a => new Item { Quantity = a.Quantity + 100 });\nrepository.Where(a => a.ItemId <= 500).BatchUpdate(new Item { Description = "Updated" });\nawait repository.Where(a => a.ItemId <= 500).BatchUpdateAsync(new Item { Description = "Updated" });\n\n// \u6279\u91cf\u66f4\u65b0\u6307\u5b9a\u5217\nvar updateColumns = new List { nameof(Item.Quantity) };\nvar q = repository.Where(a => a.ItemId <= 500);\nint affected = q.BatchUpdate(new Item { Description = "Updated" }, updateColumns);\n')),(0,i.kt)("h3",{id:"9933-\u6279\u91cf\u64cd\u4f5c\u6027\u80fd"},"9.9.3.3 \u6279\u91cf\u64cd\u4f5c\u6027\u80fd"),(0,i.kt)("table",null,(0,i.kt)("thead",{parentName:"table"},(0,i.kt)("tr",{parentName:"thead"},(0,i.kt)("th",{parentName:"tr",align:null},"Operations\\Rows"),(0,i.kt)("th",{parentName:"tr",align:"right"},"100,000 EF"),(0,i.kt)("th",{parentName:"tr",align:"right"},"100,000 EFBulk"),(0,i.kt)("th",{parentName:"tr",align:"right"},"1,000,000 EFBulk"))),(0,i.kt)("tbody",{parentName:"table"},(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},"Insert"),(0,i.kt)("td",{parentName:"tr",align:"right"},"38.98 s"),(0,i.kt)("td",{parentName:"tr",align:"right"},"2.10 s"),(0,i.kt)("td",{parentName:"tr",align:"right"},"17.99 s")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},"Update"),(0,i.kt)("td",{parentName:"tr",align:"right"},"109.25 s"),(0,i.kt)("td",{parentName:"tr",align:"right"},"3.96 s"),(0,i.kt)("td",{parentName:"tr",align:"right"},"31.45 s")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},"Delete"),(0,i.kt)("td",{parentName:"tr",align:"right"},"7.26 s"),(0,i.kt)("td",{parentName:"tr",align:"right"},"2.04 s"),(0,i.kt)("td",{parentName:"tr",align:"right"},"12.18 s")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},"-----------------"),(0,i.kt)("td",{parentName:"tr",align:"right"},"------------"),(0,i.kt)("td",{parentName:"tr",align:"right"},"----------------"),(0,i.kt)("td",{parentName:"tr",align:"right"},"------------------")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},"Together")),(0,i.kt)("td",{parentName:"tr",align:"right"},"70.70 s"),(0,i.kt)("td",{parentName:"tr",align:"right"},"5.88 s"),(0,i.kt)("td",{parentName:"tr",align:"right"},"56.84 s")))),(0,i.kt)("h2",{id:"994-\u53cd\u9988\u4e0e\u5efa\u8bae"},"9.9.4 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,i.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))),(0,i.kt)("hr",null),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e86\u89e3\u66f4\u591a")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u60f3\u4e86\u89e3\u66f4\u591a ",(0,i.kt)("inlineCode",{parentName:"p"},"EFCore.BulkExtensions")," \u77e5\u8bc6\u53ef\u67e5\u9605 ",(0,i.kt)("a",{parentName:"p",href:"https://github.com/borisdj/EFCore.BulkExtensions"},"EFCore.BulkExtensions \u5f00\u6e90\u4ed3\u5e93"),"\u3002"))))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/5edfa151.fce98e4b.js b/handbook/build/assets/js/5edfa151.fce98e4b.js new file mode 100644 index 00000000000..2d84abdc797 --- /dev/null +++ b/handbook/build/assets/js/5edfa151.fce98e4b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[5809],{3905:function(e,t,n){n.d(t,{Zo:function(){return p},kt:function(){return m}});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var c=a.createContext({}),s=function(e){var t=a.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},p=function(e){var t=s(e.components);return a.createElement(c.Provider,{value:t},e.children)},d={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},u=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,c=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),u=s(n),m=r,k=u["".concat(c,".").concat(m)]||u[m]||d[m]||i;return n?a.createElement(k,o(o({ref:t},p),{},{components:n})):a.createElement(k,o({ref:t},p))}));function m(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,o=new Array(i);o[0]=u;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l.mdxType="string"==typeof e?e:r,o[1]=l;for(var s=2;sZack.EFCore.Batch \u4f7f\u7528",id:"992-zackefcorebatch-\u4f7f\u7528",children:[{value:"9.9.2.1 \u5b89\u88c5\u5bf9\u5e94\u7684\u6570\u636e\u5e93 Nuget \u5305",id:"9921-\u5b89\u88c5\u5bf9\u5e94\u7684\u6570\u636e\u5e93-nuget-\u5305",children:[]},{value:"9.9.2.2 \u6ce8\u518c\u5e76\u914d\u7f6e\u670d\u52a1",id:"9922-\u6ce8\u518c\u5e76\u914d\u7f6e\u670d\u52a1",children:[]},{value:"9.9.2.3 \u57fa\u672c\u4f7f\u7528",id:"9923-\u57fa\u672c\u4f7f\u7528",children:[]}]},{value:"9.9.3 EFCore.BulkExtensions \u4f7f\u7528",id:"993-efcorebulkextensions-\u4f7f\u7528",children:[{value:"9.9.3.1 \u5e38\u89c1\u6279\u91cf\u64cd\u4f5c",id:"9931-\u5e38\u89c1\u6279\u91cf\u64cd\u4f5c",children:[]},{value:"9.9.3.2 \u67e5\u8be2\u540e\u6279\u91cf\u64cd\u4f5c",id:"9932-\u67e5\u8be2\u540e\u6279\u91cf\u64cd\u4f5c",children:[]},{value:"9.9.3.3 \u6279\u91cf\u64cd\u4f5c\u6027\u80fd",id:"9933-\u6279\u91cf\u64cd\u4f5c\u6027\u80fd",children:[]}]},{value:"9.9.4 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"994-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],d={toc:p};function u(e){var t=e.components,n=(0,r.Z)(e,o);return(0,i.kt)("wrapper",(0,a.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"991-\u5173\u4e8e\u6279\u91cf\u64cd\u4f5c"},"9.9.1 \u5173\u4e8e\u6279\u91cf\u64cd\u4f5c"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\uff0c\u9ed8\u8ba4\u53ea\u63d0\u4f9b\u5c0f\u6570\u636e\uff08100 \u6761 \u4ee5\u5185\uff09\u6279\u91cf\u6570\u636e\u64cd\u4f5c\uff0c\u5982\u679c\u9700\u8981\u66f4\u5927\u7684\u6570\u636e\u6279\u91cf\u5904\u7406\uff0c\u63a8\u8350\u4f7f\u7528\u7b2c\u4e09\u65b9\u5305 ",(0,i.kt)("a",{parentName:"p",href:"https://github.com/yangzhongke/Zack.EFCore.Batch"},"Zack.EFCore.Batch"),"\uff0c\u652f\u6301\u548c ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u65e0\u7f1d\u8854\u63a5\u3002"),(0,i.kt)("h2",{id:"992-zackefcorebatch-\u4f7f\u7528"},"9.9.2 ",(0,i.kt)("inlineCode",{parentName:"h2"},"Zack.EFCore.Batch")," \u4f7f\u7528"),(0,i.kt)("h3",{id:"9921-\u5b89\u88c5\u5bf9\u5e94\u7684\u6570\u636e\u5e93-nuget-\u5305"},"9.9.2.1 \u5b89\u88c5\u5bf9\u5e94\u7684\u6570\u636e\u5e93 ",(0,i.kt)("inlineCode",{parentName:"h3"},"Nuget")," \u5305"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"MSSQL"),"\uff1a",(0,i.kt)("inlineCode",{parentName:"li"},"Zack.EFCore.Batch.MSSQL")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"MySql"),"\uff1a",(0,i.kt)("inlineCode",{parentName:"li"},"Zack.EFCore.Batch.MySQL.Pomelo")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"Npgsql"),"\uff1a",(0,i.kt)("inlineCode",{parentName:"li"},"Zack.EFCore.Batch.Npgsql")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"Oracle"),"\uff1a",(0,i.kt)("inlineCode",{parentName:"li"},"Zack.EFCore.Batch.Oracle")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"Sqlite"),"\uff1a",(0,i.kt)("inlineCode",{parentName:"li"},"Zack.EFCore.Batch.Sqlite"))),(0,i.kt)("h3",{id:"9922-\u6ce8\u518c\u5e76\u914d\u7f6e\u670d\u52a1"},"9.9.2.2 \u6ce8\u518c\u5e76\u914d\u7f6e\u670d\u52a1"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{3,5}","{3,5}":!0},"services.AddDatabaseAccessor(options =>\n{\n options.AddDbPool(providerName: default, optionBuilder: opt =>\n {\n opt.UseBatchEF_Sqlite(); // SQlite \u6570\u636e\u5e93\u5305\n });\n});\n")),(0,i.kt)("h3",{id:"9923-\u57fa\u672c\u4f7f\u7528"},"9.9.2.3 \u57fa\u672c\u4f7f\u7528"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// \u6279\u91cf\u66f4\u65b0\nawait repository.Context.BatchUpdate()\n .Set(b => b.Price, b => b.Price + 3)\n .Set(b => b.Title, b => s)\n .Set(b => b.AuthorName,b=>b.Title.Substring(3,2)+b.AuthorName.ToUpper())\n .Set(b => b.PubTime, b => DateTime.Now)\n .Where(b => b.Id > n || b.AuthorName.StartsWith("Zack"))\n .ExecuteAsync();\n\n// \u6279\u91cf\u5220\u9664\nawait repository.Context.DeleteRangeAsync(b => b.Price > n || b.AuthorName == "zack yang");\n')),(0,i.kt)("h2",{id:"993-efcorebulkextensions-\u4f7f\u7528"},"9.9.3 ",(0,i.kt)("inlineCode",{parentName:"h2"},"EFCore.BulkExtensions")," \u4f7f\u7528"),(0,i.kt)("p",null,"\u901a\u8fc7 ",(0,i.kt)("inlineCode",{parentName:"p"},"Nuget")," \u5b89\u88c5 ",(0,i.kt)("inlineCode",{parentName:"p"},"EFCore.BulkExtensions")," \u5305\u5373\u53ef\u3002"),(0,i.kt)("h3",{id:"9931-\u5e38\u89c1\u6279\u91cf\u64cd\u4f5c"},"9.9.3.1 \u5e38\u89c1\u6279\u91cf\u64cd\u4f5c"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"// \u6279\u91cf\u63d2\u5165\nrepository.Context.BulkInsert(entitiesList);\nrepository.Context.BulkInsertAsync(entitiesList);\n\n// \u6279\u91cf\u66f4\u65b0\nrepository.Context.BulkUpdate(entitiesList);\nrepository.Context.BulkUpdateAsync(entitiesList);\n\n// \u6279\u91cf\u5220\u9664\nrepository.Context.BulkDelete(entitiesList);\nrepository.Context.BulkDeleteAsync(entitiesList);\n\n// \u6279\u91cf\u63d2\u5165\u6216\u66f4\u65b0\nrepository.Context.BulkInsertOrUpdate(entitiesList);\nrepository.Context.BulkInsertOrUpdateAsync(entitiesList);\n\n// \u6279\u91cf\u63d2\u5165\u6216\u66f4\u65b0\u6216\u5220\u9664\nrepository.Context.BulkInsertOrUpdateOrDelete(entitiesList);\nrepository.Context.BulkInsertOrUpdateOrDeleteAsync(entitiesList);\n\n// \u6279\u91cf\u8bfb\u53d6\u591a\u4e2a\u5b9e\u4f53\nrepository.Context.BulkRead(entitiesList);\nrepository.Context.BulkReadAsync(entitiesList);\n\n// \u6279\u91cf\u6e05\u7a7a\u8868\uff08\u614e\u7528\uff01\uff01\uff01\uff01\uff01\uff09\nrepository.Context.Truncate();\nrepository.Context.TruncateAsync();\n")),(0,i.kt)("h3",{id:"9932-\u67e5\u8be2\u540e\u6279\u91cf\u64cd\u4f5c"},"9.9.3.2 \u67e5\u8be2\u540e\u6279\u91cf\u64cd\u4f5c"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// \u6839\u636e\u6761\u4ef6\u6279\u91cf\u5220\u9664\nrepository.Where(a => a.ItemId > 500).BatchDelete();\nawait repository.Where(a => a.ItemId > 500).BatchDeleteAsync();\n\n// \u6839\u636e\u6761\u4ef6\u6279\u91cf\u66f4\u65b0\nrepository.Where(a => a.ItemId <= 500).BatchUpdate(a => new Item { Quantity = a.Quantity + 100 });\nrepository.Where(a => a.ItemId <= 500).BatchUpdate(new Item { Description = "Updated" });\nawait repository.Where(a => a.ItemId <= 500).BatchUpdateAsync(new Item { Description = "Updated" });\n\n// \u6279\u91cf\u66f4\u65b0\u6307\u5b9a\u5217\nvar updateColumns = new List { nameof(Item.Quantity) };\nvar q = repository.Where(a => a.ItemId <= 500);\nint affected = q.BatchUpdate(new Item { Description = "Updated" }, updateColumns);\n')),(0,i.kt)("h3",{id:"9933-\u6279\u91cf\u64cd\u4f5c\u6027\u80fd"},"9.9.3.3 \u6279\u91cf\u64cd\u4f5c\u6027\u80fd"),(0,i.kt)("table",null,(0,i.kt)("thead",{parentName:"table"},(0,i.kt)("tr",{parentName:"thead"},(0,i.kt)("th",{parentName:"tr",align:null},"Operations\\Rows"),(0,i.kt)("th",{parentName:"tr",align:"right"},"100,000 EF"),(0,i.kt)("th",{parentName:"tr",align:"right"},"100,000 EFBulk"),(0,i.kt)("th",{parentName:"tr",align:"right"},"1,000,000 EFBulk"))),(0,i.kt)("tbody",{parentName:"table"},(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},"Insert"),(0,i.kt)("td",{parentName:"tr",align:"right"},"38.98 s"),(0,i.kt)("td",{parentName:"tr",align:"right"},"2.10 s"),(0,i.kt)("td",{parentName:"tr",align:"right"},"17.99 s")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},"Update"),(0,i.kt)("td",{parentName:"tr",align:"right"},"109.25 s"),(0,i.kt)("td",{parentName:"tr",align:"right"},"3.96 s"),(0,i.kt)("td",{parentName:"tr",align:"right"},"31.45 s")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},"Delete"),(0,i.kt)("td",{parentName:"tr",align:"right"},"7.26 s"),(0,i.kt)("td",{parentName:"tr",align:"right"},"2.04 s"),(0,i.kt)("td",{parentName:"tr",align:"right"},"12.18 s")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},"-----------------"),(0,i.kt)("td",{parentName:"tr",align:"right"},"------------"),(0,i.kt)("td",{parentName:"tr",align:"right"},"----------------"),(0,i.kt)("td",{parentName:"tr",align:"right"},"------------------")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("strong",{parentName:"td"},"Together")),(0,i.kt)("td",{parentName:"tr",align:"right"},"70.70 s"),(0,i.kt)("td",{parentName:"tr",align:"right"},"5.88 s"),(0,i.kt)("td",{parentName:"tr",align:"right"},"56.84 s")))),(0,i.kt)("h2",{id:"994-\u53cd\u9988\u4e0e\u5efa\u8bae"},"9.9.4 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,i.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))),(0,i.kt)("hr",null),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e86\u89e3\u66f4\u591a")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u60f3\u4e86\u89e3\u66f4\u591a ",(0,i.kt)("inlineCode",{parentName:"p"},"EFCore.BulkExtensions")," \u77e5\u8bc6\u53ef\u67e5\u9605 ",(0,i.kt)("a",{parentName:"p",href:"https://github.com/borisdj/EFCore.BulkExtensions"},"EFCore.BulkExtensions \u5f00\u6e90\u4ed3\u5e93"),"\u3002"))))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/5f6c9278.44f3119c.js b/handbook/build/assets/js/5f6c9278.44f3119c.js new file mode 100644 index 00000000000..5b4b51c4709 --- /dev/null +++ b/handbook/build/assets/js/5f6c9278.44f3119c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[732],{3905:function(e,n,t){t.d(n,{Zo:function(){return m},kt:function(){return c}});var r=t(7294);function a(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function l(e){for(var n=1;n=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var p=r.createContext({}),u=function(e){var n=r.useContext(p),t=n;return e&&(t="function"==typeof e?e(n):l(l({},n),e)),t},m=function(e){var n=u(e.components);return r.createElement(p.Provider,{value:n},e.children)},s={inlineCode:"code",wrapper:function(e){var n=e.children;return r.createElement(r.Fragment,{},n)}},d=r.forwardRef((function(e,n){var t=e.components,a=e.mdxType,i=e.originalType,p=e.parentName,m=o(e,["components","mdxType","originalType","parentName"]),d=u(t),c=a,k=d["".concat(p,".").concat(c)]||d[c]||s[c]||i;return t?r.createElement(k,l(l({ref:n},m),{},{components:t})):r.createElement(k,l({ref:n},m))}));function c(e,n){var t=arguments,a=n&&n.mdxType;if("string"==typeof e||a){var i=t.length,l=new Array(i);l[0]=d;var o={};for(var p in n)hasOwnProperty.call(n,p)&&(o[p]=n[p]);o.originalType=e,o.mdxType="string"==typeof e?e:a,l[1]=o;for(var u=2;uIViewEngine \u63a5\u53e3",id:"175-iviewengine-\u63a5\u53e3",children:[]},{value:"17.6 \u5b57\u7b26\u4e32\u6a21\u677f\u66ff\u6362\u5f15\u64ce",id:"176-\u5b57\u7b26\u4e32\u6a21\u677f\u66ff\u6362\u5f15\u64ce",children:[]},{value:"17.7 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"177-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],s={toc:m};function d(e){var n=e.components,t=(0,a.Z)(e,l);return(0,i.kt)("wrapper",(0,r.Z)({},s,t,{components:n,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"171-\u5173\u4e8e\u89c6\u56fe\u5f15\u64ce"},"17.1 \u5173\u4e8e\u89c6\u56fe\u5f15\u64ce"),(0,i.kt)("p",null,"\u89c6\u56fe\u5f15\u64ce\u8d1f\u8d23\u6839\u636e\u89c6\u56fe\u6a21\u677f\u521b\u5efa HTML\u3002\u89c6\u56fe\u901a\u5e38\u662f HTML \u548c\u7f16\u7a0b\u8bed\u8a00\u7684\u67d0\u79cd\u6df7\u5408\u3002\u652f\u6301\u53d8\u91cf\u5b9a\u4e49\u3001\u65b9\u6cd5\u8c03\u7528\u53ca\u903b\u8f91\u7f16\u5199\u3002"),(0,i.kt)("p",null,"\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\uff0c\u5e95\u5c42\u96c6\u6210\u4e86\u5fae\u8f6f\u63d0\u4f9b\u7684 ",(0,i.kt)("inlineCode",{parentName:"p"},"Razor")," \u89c6\u56fe\u5f15\u64ce\u7ec4\u4ef6\u5e76\u63d0\u4f9b\u66f4\u52a0\u7075\u6d3b\u65b9\u4fbf\u7684\u8bed\u6cd5\u7cd6\u3002"),(0,i.kt)("h2",{id:"172-\u89c6\u56fe\u5f15\u64ce\u4f5c\u7528"},"17.2 \u89c6\u56fe\u5f15\u64ce\u4f5c\u7528"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("strong",{parentName:"li"},"\u652f\u6301 ",(0,i.kt)("inlineCode",{parentName:"strong"},"ASP.NET Core")," \u5b8c\u6574\u7684 ",(0,i.kt)("inlineCode",{parentName:"strong"},"Razor")," \u8bed\u6cd5")),(0,i.kt)("li",{parentName:"ul"},"\u6839\u636e\u4e0d\u540c\u7684\u6570\u636e\u7f16\u8bd1\u6a21\u677f\u4ea7\u751f\u4e0d\u540c\u7684\u8f93\u51fa"),(0,i.kt)("li",{parentName:"ul"},"\u5b9e\u73b0\u5f3a\u5927\u7684\u63d2\u4ef6\u5316\u673a\u5236"),(0,i.kt)("li",{parentName:"ul"},"\u5b9e\u73b0\u5168\u7ad9\u9875\u9762\u9759\u6001\u5316"),(0,i.kt)("li",{parentName:"ul"},"\u53ef\u4ee5\u7528\u4f5c\u90ae\u4ef6\u6a21\u677f\u3001\u77ed\u4fe1\u6a21\u677f\u3001\u4f18\u60e0\u5238\u4fe1\u606f\u6a21\u677f\u7b49")),(0,i.kt)("h2",{id:"173-\u57fa\u7840\u4f7f\u7528"},"17.3 \u57fa\u7840\u4f7f\u7528"),(0,i.kt)("h3",{id:"1731-\u6ce8\u518c\u670d\u52a1"},"17.3.1 \u6ce8\u518c\u670d\u52a1"),(0,i.kt)("p",null,"\u4f7f\u7528\u4e4b\u524d\u9700\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Startup.cs")," \u4e2d\u6ce8\u518c ",(0,i.kt)("inlineCode",{parentName:"p"},"\u89c6\u56fe\u5f15\u64ce\u670d\u52a1"),"\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{3}","{3}":!0},"public void ConfigureServices(IServiceCollection services)\n{\n services.AddViewEngine();\n}\n")),(0,i.kt)("h3",{id:"1732-\u4f7f\u7528\u65b9\u5f0f"},"17.3.2 \u4f7f\u7528\u65b9\u5f0f"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"\u6784\u9020\u51fd\u6570\u6ce8\u5165 ",(0,i.kt)("inlineCode",{parentName:"li"},"IViewEngine"))),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{2,9,12}","{2,9,12}":!0},'using Furion.DynamicApiController;\nusing Furion.ViewEngine;\n\nnamespace Furion.Application\n{\n public class ViewEngineService : IDynamicApiController\n {\n private readonly IViewEngine _viewEngine;\n public ViewEngineService(IViewEngine viewEngine)\n {\n _viewEngine = viewEngine;\n var result = _viewEngine.RunCompile("Hello @Model.Name", new { Name = "Furion" });\n }\n }\n}\n')),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"\u5b57\u7b26\u4e32\u65b9\u5f0f")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'var result = "Hello @Model.Name".RunCompile(new { Name = "Furion" });\n')),(0,i.kt)("h3",{id:"1733-\u5f31\u7c7b\u578b\u6a21\u677f"},"17.3.3 \u5f31\u7c7b\u578b\u6a21\u677f"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'var result = _viewEngine.RunCompile("Hello @Model.Name", new { Name = "Furion" });\n')),(0,i.kt)("p",null,"\u7ed3\u679c\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-html"},"Hello Furion\n")),(0,i.kt)("p",null,"\u652f\u6301\u5f02\u6b65 ",(0,i.kt)("inlineCode",{parentName:"p"},"RunCompileAsync")),(0,i.kt)("h3",{id:"1734-\u5f3a\u7c7b\u578b\u6a21\u677f"},"17.3.4 \u5f3a\u7c7b\u578b\u6a21\u677f"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'var result = _viewEngine.RunCompile(@"\nHello @Model.Name\n@foreach(var item in Model.Items)\n{\n

@item

\n}\n", new TestModel\n{\n Name = "Furion",\n Items = new[] { 3, 1, 2 }\n});\n')),(0,i.kt)("p",null,"\u7ed3\u679c\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-html"},"Hello Furion\n

3

\n

1

\n

2

\n")),(0,i.kt)("p",null,"\u652f\u6301\u5f02\u6b65 ",(0,i.kt)("inlineCode",{parentName:"p"},"RunCompileAsync")),(0,i.kt)("h3",{id:"1735-\u9ad8\u6027\u80fd\u6a21\u677f\u7f13\u5b58-\ud83e\udd47"},"17.3.5 \u9ad8\u6027\u80fd\u6a21\u677f\u7f13\u5b58 \ud83e\udd47"),(0,i.kt)("p",null,"\u7531\u4e8e\u6a21\u677f\u7f16\u8bd1\u9700\u8981\u6d88\u8017\u5927\u91cf\u7684\u6027\u80fd\uff0c\u6240\u4ee5\u5efa\u8bae\u4f7f\u7528\u5e26 ",(0,i.kt)("inlineCode",{parentName:"p"},"FromCached")," \u7ed3\u5c3e\u7684 ",(0,i.kt)("inlineCode",{parentName:"p"},"RunCompileFromCached")," \u66ff\u4ee3\u3002\u8c03\u7528\u8be5\u65b9\u6cd5\u540e\u4f1a\u81ea\u52a8\u5c06\u6a21\u677f\u7f16\u8bd1\u6210 ",(0,i.kt)("inlineCode",{parentName:"p"},".dll")," \u4ee5\u4fbf\u4e0b\u6b21\u4f7f\u7528\u3002\u51cf\u5c11\u7b2c\u4e8c\u6b21\u4e4b\u540e\u4f7f\u7528\u6a21\u677f\u7684\u6027\u80fd\u635f\u8017\u3002"),(0,i.kt)("p",null,"\u5982\uff0c\u5f3a\u7c7b\u578b\u6a21\u677f\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'var result = _viewEngine.RunCompileFromCached(@"\nHello @Model.Name\n@foreach(var item in Model.Items)\n{\n

@item

\n}\n", new TestModel\n{\n Name = "Furion",\n Items = new[] { 3, 1, 2 }\n});\n')),(0,i.kt)("p",null,"\u7ed3\u679c\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-html"},"Hello Furion\n

3

\n

1

\n

2

\n")),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"\u8c03\u7528 ",(0,i.kt)("inlineCode",{parentName:"strong"},"RunCompileFromCached")," \u65b9\u6cd5\u4e4b\u540e\u5c06\u4f1a\u4f7f\u7528 ",(0,i.kt)("inlineCode",{parentName:"strong"},"MD5")," \u52a0\u5bc6\u6a21\u677f\u5e76\u751f\u6210 ",(0,i.kt)("inlineCode",{parentName:"strong"},"MD5"),"\u5b57\u7b26\u4e32\u7684 ",(0,i.kt)("inlineCode",{parentName:"strong"},".dll")," \u5b58\u653e\u5728\u7f51\u7ad9\u6839\u76ee\u5f55\u4e0b\u7684 ",(0,i.kt)("inlineCode",{parentName:"strong"},"templates")," \u76ee\u5f55\u4e2d\u3002\u53ea\u8981\u6a21\u677f\u5185\u5bb9\u4e0d\u53d8\uff0c\u6570\u636e\u53d1\u751f\u6539\u53d8\u4e5f\u4e0d\u4f1a\u91cd\u65b0\u7f16\u8bd1\u6a21\u677f\u3002\u8fd9\u6837\u5927\u5927\u7684\u63d0\u9ad8\u4e86\u9996\u6b21\u4e4b\u540e\u7684\u6027\u80fd\u3002")),(0,i.kt)("p",null,"\u5982\uff0c\u4f20\u5165\u65b0\u7684\u6570\u636e\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{10}","{10}":!0},'var result = _viewEngine.RunCompileFromCached(@"\nHello @Model.Name\n@foreach(var item in Model.Items)\n{\n

@item

\n}\n", new TestModel\n{\n Name = "Furion",\n Items = new[] { 5,6,7,8 }\n});\n')),(0,i.kt)("p",null,"\u7ed3\u679c\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-html"},"Hello Furion\n

5

\n

6

\n

7

\n

8

\n")),(0,i.kt)("p",null,"\u6a21\u677f\u4e0d\u518d\u91cd\u65b0\u7f16\u8bd1\uff0c\u53ea\u662f\u91cd\u65b0\u66ff\u6362\u6570\u636e\u3002"),(0,i.kt)("h2",{id:"174-\u9ad8\u7ea7\u7528\u6cd5"},"17.4 \u9ad8\u7ea7\u7528\u6cd5"),(0,i.kt)("p",null,"\u9ad8\u7ea7\u7528\u6cd5\u652f\u6301\u5c06\u7279\u5b9a\u7a0b\u5e8f\u96c6\u3001\u7279\u5b9a\u547d\u540d\u7a7a\u95f4\u3001\u7279\u5b9a\u7c7b\u578b\u5f15\u5165\u5230\u6a21\u677f\u4e2d\u4f7f\u7528\u3002"),(0,i.kt)("h3",{id:"1741-\u6dfb\u52a0\u7a0b\u5e8f\u96c6"},"17.4.1 \u6dfb\u52a0\u7a0b\u5e8f\u96c6"),(0,i.kt)("p",null,"\u6bd4\u5982\u8fd9\u91cc\u6dfb\u52a0 ",(0,i.kt)("inlineCode",{parentName:"p"},"System.IO")," \u7a0b\u5e8f\u96c6\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'var result = _viewEngine.RunCompileFromCached(@"
@System.IO.Path.Combine(""Furion"", ""ViewEngine"")
", builderAction: builder =>\n {\n builder.AddAssemblyReferenceByName("System.IO");\n });\n')),(0,i.kt)("p",null,"\u7ed3\u679c\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-html"},"
Furion\\\\ViewEngine
\n")),(0,i.kt)("p",null,"\u53e6\u5916\uff0c",(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u63d0\u4f9b\u591a\u79cd\u65b9\u5f0f\u52a0\u8f7d\u7a0b\u5e8f\u96c6\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'builder.AddAssemblyReferenceByName("System.Security"); // \u901a\u8fc7\u540d\u79f0\nbuilder.AddAssemblyReference(typeof(System.IO.File)); // \u901a\u8fc7\u7c7b\u578b\nbuilder.AddAssemblyReference(Assembly.Load("source")); // \u901a\u8fc7\u5143\u6570\u636e\u5f15\u7528\n')),(0,i.kt)("h3",{id:"1742-\u6dfb\u52a0\u547d\u540d\u7a7a\u95f4"},"17.4.2 \u6dfb\u52a0\u547d\u540d\u7a7a\u95f4"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'var result = _viewEngine.RunCompileFromCached(@"
@Path.Combine(""Furion"", ""ViewEngine"")
", builderAction: builder =>\n {\n builder.AddUsing("System.IO");\n builder.AddAssemblyReferenceByName("System.IO");\n });\n')),(0,i.kt)("p",null,"\u7ed3\u679c\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-html"},"
Furion\\\\ViewEngine
\n")),(0,i.kt)("p",null,"\u4e5f\u652f\u6301\u52a0\u5165\u591a\u4e2a ",(0,i.kt)("inlineCode",{parentName:"p"},"using"),"\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},'builder.AddUsing("System.IO");\nbuilder.AddUsing("Furion");\n')),(0,i.kt)("h3",{id:"1743-\u5b9a\u4e49\u6a21\u677f\u65b9\u6cd5"},"17.4.3 \u5b9a\u4e49\u6a21\u677f\u65b9\u6cd5"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'var result = _viewEngine.RunCompileFromCached(@"\n\n @{ RecursionTest(3); }\n\n\n@{\n void RecursionTest(int level)\n {\n if (level <= 0)\n {\n return;\n }\n\n
LEVEL: @level
\n @{ RecursionTest(level - 1); }\n }\n}\n");\n')),(0,i.kt)("p",null,"\u7ed3\u679c\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-html"},"\n
LEVEL: 3
\n
LEVEL: 2
\n
LEVEL: 1
\n\n")),(0,i.kt)("h3",{id:"1744-\u8c03\u7528\u7c7b\u65b9\u6cd5"},"17.4.4 \u8c03\u7528\u7c7b\u65b9\u6cd5"),(0,i.kt)("p",null,"\u5b9a\u4e49 ",(0,i.kt)("inlineCode",{parentName:"p"},"CustomModel")," \u7c7b\u5e76\u7ee7\u627f ",(0,i.kt)("inlineCode",{parentName:"p"},"ViewEngineModel")," \u57fa\u7c7b"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1}","{1}":!0},'public class CustomModel : ViewEngineModel\n{\n public int A { get; set; }\n public string B { get; set; }\n public string Decorator(object value)\n {\n return "-=" + value + "=-";\n }\n}\n')),(0,i.kt)("p",null,"\u5728\u6a21\u677f\u4e2d\u8c03\u7528 ",(0,i.kt)("inlineCode",{parentName:"p"},"Decorator(value)")," \u65b9\u6cd5\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'var content = @"Hello @A, @B, @Decorator(123)";\n\nvar template = _viewEngine.Compile(content);\n\nvar result = template.Run(instance =>\n{\n instance.A = 10;\n instance.B = "Alex";\n});\n')),(0,i.kt)("p",null,"\u7ed3\u679c\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-html"},"Hello 10, Alex, -=123=-\n")),(0,i.kt)("h2",{id:"175-iviewengine-\u63a5\u53e3"},"17.5 ",(0,i.kt)("inlineCode",{parentName:"h2"},"IViewEngine")," \u63a5\u53e3"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"IViewEngine")," \u63d0\u4f9b\u4e86\u7b80\u5355\u65b9\u4fbf\u7684 ",(0,i.kt)("inlineCode",{parentName:"p"},"RunCompile")," \u65b9\u6cd5\uff0c\u4e5f\u63d0\u4f9b\u4e86\u6700\u539f\u59cb\u5316\u7684 ",(0,i.kt)("inlineCode",{parentName:"p"},"Compile")," \u548c ",(0,i.kt)("inlineCode",{parentName:"p"},"Run")," \u65b9\u6cd5\u3002"),(0,i.kt)("p",null,"\u901a\u8fc7\u539f\u59cb\u7684 ",(0,i.kt)("inlineCode",{parentName:"p"},"Compile")," \u548c ",(0,i.kt)("inlineCode",{parentName:"p"},"Run")," \u65b9\u6cd5\u53ef\u4ee5\u5b9e\u73b0\u5f88\u591a\u590d\u6742\u7684\u903b\u8f91\u548c\u81ea\u5b9a\u4e49\u6307\u4ee4\u96c6\u3002"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'/// \n/// \u7f16\u8bd1\u6a21\u677f\n/// \n/// \n/// \n/// \nIViewEngineTemplate Compile(string content, Action builderAction = null);\n/// \n/// \u7f16\u8bd1\u6a21\u677f\n/// \n/// \n/// \n/// \nTask CompileAsync(string content, Action builderAction = null);\n/// \n/// \u7f16\u8bd1\u6a21\u677f\n/// \n/// \n/// \n/// \n/// \nIViewEngineTemplate Compile(string content, Action builderAction = null)\n where T : IViewEngineModel;\n/// \n/// \u7f16\u8bd1\u6a21\u677f\n/// \n/// \n/// \n/// \n/// \nTask> CompileAsync(string content, Action builderAction = null)\n where T : IViewEngineModel;\n')),(0,i.kt)("h2",{id:"176-\u5b57\u7b26\u4e32\u6a21\u677f\u66ff\u6362\u5f15\u64ce"},"17.6 \u5b57\u7b26\u4e32\u6a21\u677f\u66ff\u6362\u5f15\u64ce"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u9664\u4e86\u5185\u7f6e\u89c6\u56fe\u5f15\u64ce\u4e4b\u5916\uff0c\u8fd8\u652f\u6301\u4ee5\u4e0b\u51e0\u79cd\u6a21\u677f\u66ff\u6362\uff0c\u5982\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// \u63d0\u4f9b\u6570\u636e\u6a21\u677f\u65b9\u5f0f\nvar str = "\u6211\u53eb{name}".Render(new Dictionary{ {"name", "Furion"} });\nvar str = "\u6211\u53eb{Name}".Render(new { Name = "Furion" });\nvar str = "\u6211\u53eb{Detail.Name}".Render(new { Detail = new { Name = "Furoin" } });\n\n// \u4ece\u914d\u7f6e\u8bfb\u53d6\u65b9\u5f0f\nvar str = "\u6211\u53eb#(Furion:Address)".Render();\n')),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-json"},'{\n "Furion": {\n "Address": "https://www.furion.pro"\n }\n}\n')),(0,i.kt)("h2",{id:"177-\u53cd\u9988\u4e0e\u5efa\u8bae"},"17.7 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,i.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/5f6c9278.a16533fd.js b/handbook/build/assets/js/5f6c9278.a16533fd.js deleted file mode 100644 index 75358ebcfe4..00000000000 --- a/handbook/build/assets/js/5f6c9278.a16533fd.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[732],{3905:function(e,n,t){t.d(n,{Zo:function(){return m},kt:function(){return c}});var r=t(7294);function a(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function l(e){for(var n=1;n=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var p=r.createContext({}),u=function(e){var n=r.useContext(p),t=n;return e&&(t="function"==typeof e?e(n):l(l({},n),e)),t},m=function(e){var n=u(e.components);return r.createElement(p.Provider,{value:n},e.children)},d={inlineCode:"code",wrapper:function(e){var n=e.children;return r.createElement(r.Fragment,{},n)}},s=r.forwardRef((function(e,n){var t=e.components,a=e.mdxType,i=e.originalType,p=e.parentName,m=o(e,["components","mdxType","originalType","parentName"]),s=u(t),c=a,k=s["".concat(p,".").concat(c)]||s[c]||d[c]||i;return t?r.createElement(k,l(l({ref:n},m),{},{components:t})):r.createElement(k,l({ref:n},m))}));function c(e,n){var t=arguments,a=n&&n.mdxType;if("string"==typeof e||a){var i=t.length,l=new Array(i);l[0]=s;var o={};for(var p in n)hasOwnProperty.call(n,p)&&(o[p]=n[p]);o.originalType=e,o.mdxType="string"==typeof e?e:a,l[1]=o;for(var u=2;uIViewEngine \u63a5\u53e3",id:"175-iviewengine-\u63a5\u53e3",children:[]},{value:"17.6 \u5b57\u7b26\u4e32\u6a21\u677f\u66ff\u6362\u5f15\u64ce",id:"176-\u5b57\u7b26\u4e32\u6a21\u677f\u66ff\u6362\u5f15\u64ce",children:[]},{value:"17.7 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"177-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],d={toc:m};function s(e){var n=e.components,t=(0,a.Z)(e,l);return(0,i.kt)("wrapper",(0,r.Z)({},d,t,{components:n,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"171-\u5173\u4e8e\u89c6\u56fe\u5f15\u64ce"},"17.1 \u5173\u4e8e\u89c6\u56fe\u5f15\u64ce"),(0,i.kt)("p",null,"\u89c6\u56fe\u5f15\u64ce\u8d1f\u8d23\u6839\u636e\u89c6\u56fe\u6a21\u677f\u521b\u5efa HTML\u3002\u89c6\u56fe\u901a\u5e38\u662f HTML \u548c\u7f16\u7a0b\u8bed\u8a00\u7684\u67d0\u79cd\u6df7\u5408\u3002\u652f\u6301\u53d8\u91cf\u5b9a\u4e49\u3001\u65b9\u6cd5\u8c03\u7528\u53ca\u903b\u8f91\u7f16\u5199\u3002"),(0,i.kt)("p",null,"\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\uff0c\u5e95\u5c42\u96c6\u6210\u4e86\u5fae\u8f6f\u63d0\u4f9b\u7684 ",(0,i.kt)("inlineCode",{parentName:"p"},"Razor")," \u89c6\u56fe\u5f15\u64ce\u7ec4\u4ef6\u5e76\u63d0\u4f9b\u66f4\u52a0\u7075\u6d3b\u65b9\u4fbf\u7684\u8bed\u6cd5\u7cd6\u3002"),(0,i.kt)("h2",{id:"172-\u89c6\u56fe\u5f15\u64ce\u4f5c\u7528"},"17.2 \u89c6\u56fe\u5f15\u64ce\u4f5c\u7528"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("strong",{parentName:"li"},"\u652f\u6301 ",(0,i.kt)("inlineCode",{parentName:"strong"},"ASP.NET Core")," \u5b8c\u6574\u7684 ",(0,i.kt)("inlineCode",{parentName:"strong"},"Razor")," \u8bed\u6cd5")),(0,i.kt)("li",{parentName:"ul"},"\u6839\u636e\u4e0d\u540c\u7684\u6570\u636e\u7f16\u8bd1\u6a21\u677f\u4ea7\u751f\u4e0d\u540c\u7684\u8f93\u51fa"),(0,i.kt)("li",{parentName:"ul"},"\u5b9e\u73b0\u5f3a\u5927\u7684\u63d2\u4ef6\u5316\u673a\u5236"),(0,i.kt)("li",{parentName:"ul"},"\u5b9e\u73b0\u5168\u7ad9\u9875\u9762\u9759\u6001\u5316"),(0,i.kt)("li",{parentName:"ul"},"\u53ef\u4ee5\u7528\u4f5c\u90ae\u4ef6\u6a21\u677f\u3001\u77ed\u4fe1\u6a21\u677f\u3001\u4f18\u60e0\u5238\u4fe1\u606f\u6a21\u677f\u7b49")),(0,i.kt)("h2",{id:"173-\u57fa\u7840\u4f7f\u7528"},"17.3 \u57fa\u7840\u4f7f\u7528"),(0,i.kt)("h3",{id:"1731-\u6ce8\u518c\u670d\u52a1"},"17.3.1 \u6ce8\u518c\u670d\u52a1"),(0,i.kt)("p",null,"\u4f7f\u7528\u4e4b\u524d\u9700\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Startup.cs")," \u4e2d\u6ce8\u518c ",(0,i.kt)("inlineCode",{parentName:"p"},"\u89c6\u56fe\u5f15\u64ce\u670d\u52a1"),"\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{3}","{3}":!0},"public void ConfigureServices(IServiceCollection services)\n{\n services.AddViewEngine();\n}\n")),(0,i.kt)("h3",{id:"1732-\u4f7f\u7528\u65b9\u5f0f"},"17.3.2 \u4f7f\u7528\u65b9\u5f0f"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"\u6784\u9020\u51fd\u6570\u6ce8\u5165 ",(0,i.kt)("inlineCode",{parentName:"li"},"IViewEngine"))),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{2,9,12}","{2,9,12}":!0},'using Furion.DynamicApiController;\nusing Furion.ViewEngine;\n\nnamespace Furion.Application\n{\n public class ViewEngineService : IDynamicApiController\n {\n private readonly IViewEngine _viewEngine;\n public ViewEngineService(IViewEngine viewEngine)\n {\n _viewEngine = viewEngine;\n var result = _viewEngine.RunCompile("Hello @Model.Name", new { Name = "Furion" });\n }\n }\n}\n')),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"\u5b57\u7b26\u4e32\u65b9\u5f0f")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'var result = "Hello @Model.Name".RunCompile(new { Name = "Furion" });\n')),(0,i.kt)("h3",{id:"1733-\u5f31\u7c7b\u578b\u6a21\u677f"},"17.3.3 \u5f31\u7c7b\u578b\u6a21\u677f"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'var result = _viewEngine.RunCompile("Hello @Model.Name", new { Name = "Furion" });\n')),(0,i.kt)("p",null,"\u7ed3\u679c\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-html"},"Hello Furion\n")),(0,i.kt)("p",null,"\u652f\u6301\u5f02\u6b65 ",(0,i.kt)("inlineCode",{parentName:"p"},"RunCompileAsync")),(0,i.kt)("h3",{id:"1734-\u5f3a\u7c7b\u578b\u6a21\u677f"},"17.3.4 \u5f3a\u7c7b\u578b\u6a21\u677f"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'var result = _viewEngine.RunCompile(@"\nHello @Model.Name\n@foreach(var item in Model.Items)\n{\n

@item

\n}\n", new TestModel\n{\n Name = "Furion",\n Items = new[] { 3, 1, 2 }\n});\n')),(0,i.kt)("p",null,"\u7ed3\u679c\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-html"},"Hello Furion\n

3

\n

1

\n

2

\n")),(0,i.kt)("p",null,"\u652f\u6301\u5f02\u6b65 ",(0,i.kt)("inlineCode",{parentName:"p"},"RunCompileAsync")),(0,i.kt)("h3",{id:"1735-\u9ad8\u6027\u80fd\u6a21\u677f\u7f13\u5b58-\ud83e\udd47"},"17.3.5 \u9ad8\u6027\u80fd\u6a21\u677f\u7f13\u5b58 \ud83e\udd47"),(0,i.kt)("p",null,"\u7531\u4e8e\u6a21\u677f\u7f16\u8bd1\u9700\u8981\u6d88\u8017\u5927\u91cf\u7684\u6027\u80fd\uff0c\u6240\u4ee5\u5efa\u8bae\u4f7f\u7528\u5e26 ",(0,i.kt)("inlineCode",{parentName:"p"},"FromCached")," \u7ed3\u5c3e\u7684 ",(0,i.kt)("inlineCode",{parentName:"p"},"RunCompileFromCached")," \u66ff\u4ee3\u3002\u8c03\u7528\u8be5\u65b9\u6cd5\u540e\u4f1a\u81ea\u52a8\u5c06\u6a21\u677f\u7f16\u8bd1\u6210 ",(0,i.kt)("inlineCode",{parentName:"p"},".dll")," \u4ee5\u4fbf\u4e0b\u6b21\u4f7f\u7528\u3002\u51cf\u5c11\u7b2c\u4e8c\u6b21\u4e4b\u540e\u4f7f\u7528\u6a21\u677f\u7684\u6027\u80fd\u635f\u8017\u3002"),(0,i.kt)("p",null,"\u5982\uff0c\u5f3a\u7c7b\u578b\u6a21\u677f\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'var result = _viewEngine.RunCompileFromCached(@"\nHello @Model.Name\n@foreach(var item in Model.Items)\n{\n

@item

\n}\n", new TestModel\n{\n Name = "Furion",\n Items = new[] { 3, 1, 2 }\n});\n')),(0,i.kt)("p",null,"\u7ed3\u679c\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-html"},"Hello Furion\n

3

\n

1

\n

2

\n")),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"\u8c03\u7528 ",(0,i.kt)("inlineCode",{parentName:"strong"},"RunCompileFromCached")," \u65b9\u6cd5\u4e4b\u540e\u5c06\u4f1a\u4f7f\u7528 ",(0,i.kt)("inlineCode",{parentName:"strong"},"MD5")," \u52a0\u5bc6\u6a21\u677f\u5e76\u751f\u6210 ",(0,i.kt)("inlineCode",{parentName:"strong"},"MD5"),"\u5b57\u7b26\u4e32\u7684 ",(0,i.kt)("inlineCode",{parentName:"strong"},".dll")," \u5b58\u653e\u5728\u7f51\u7ad9\u6839\u76ee\u5f55\u4e0b\u7684 ",(0,i.kt)("inlineCode",{parentName:"strong"},"templates")," \u76ee\u5f55\u4e2d\u3002\u53ea\u8981\u6a21\u677f\u5185\u5bb9\u4e0d\u53d8\uff0c\u6570\u636e\u53d1\u751f\u6539\u53d8\u4e5f\u4e0d\u4f1a\u91cd\u65b0\u7f16\u8bd1\u6a21\u677f\u3002\u8fd9\u6837\u5927\u5927\u7684\u63d0\u9ad8\u4e86\u9996\u6b21\u4e4b\u540e\u7684\u6027\u80fd\u3002")),(0,i.kt)("p",null,"\u5982\uff0c\u4f20\u5165\u65b0\u7684\u6570\u636e\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{10}","{10}":!0},'var result = _viewEngine.RunCompileFromCached(@"\nHello @Model.Name\n@foreach(var item in Model.Items)\n{\n

@item

\n}\n", new TestModel\n{\n Name = "Furion",\n Items = new[] { 5,6,7,8 }\n});\n')),(0,i.kt)("p",null,"\u7ed3\u679c\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-html"},"Hello Furion\n

5

\n

6

\n

7

\n

8

\n")),(0,i.kt)("p",null,"\u6a21\u677f\u4e0d\u518d\u91cd\u65b0\u7f16\u8bd1\uff0c\u53ea\u662f\u91cd\u65b0\u66ff\u6362\u6570\u636e\u3002"),(0,i.kt)("h2",{id:"174-\u9ad8\u7ea7\u7528\u6cd5"},"17.4 \u9ad8\u7ea7\u7528\u6cd5"),(0,i.kt)("p",null,"\u9ad8\u7ea7\u7528\u6cd5\u652f\u6301\u5c06\u7279\u5b9a\u7a0b\u5e8f\u96c6\u3001\u7279\u5b9a\u547d\u540d\u7a7a\u95f4\u3001\u7279\u5b9a\u7c7b\u578b\u5f15\u5165\u5230\u6a21\u677f\u4e2d\u4f7f\u7528\u3002"),(0,i.kt)("h3",{id:"1741-\u6dfb\u52a0\u7a0b\u5e8f\u96c6"},"17.4.1 \u6dfb\u52a0\u7a0b\u5e8f\u96c6"),(0,i.kt)("p",null,"\u6bd4\u5982\u8fd9\u91cc\u6dfb\u52a0 ",(0,i.kt)("inlineCode",{parentName:"p"},"System.IO")," \u7a0b\u5e8f\u96c6\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'var result = _viewEngine.RunCompileFromCached(@"
@System.IO.Path.Combine(""Furion"", ""ViewEngine"")
", builderAction: builder =>\n {\n builder.AddAssemblyReferenceByName("System.IO");\n });\n')),(0,i.kt)("p",null,"\u7ed3\u679c\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-html"},"
Furion\\\\ViewEngine
\n")),(0,i.kt)("p",null,"\u53e6\u5916\uff0c",(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u63d0\u4f9b\u591a\u79cd\u65b9\u5f0f\u52a0\u8f7d\u7a0b\u5e8f\u96c6\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'builder.AddAssemblyReferenceByName("System.Security"); // \u901a\u8fc7\u540d\u79f0\nbuilder.AddAssemblyReference(typeof(System.IO.File)); // \u901a\u8fc7\u7c7b\u578b\nbuilder.AddAssemblyReference(Assembly.Load("source")); // \u901a\u8fc7\u5143\u6570\u636e\u5f15\u7528\n')),(0,i.kt)("h3",{id:"1742-\u6dfb\u52a0\u547d\u540d\u7a7a\u95f4"},"17.4.2 \u6dfb\u52a0\u547d\u540d\u7a7a\u95f4"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'var result = _viewEngine.RunCompileFromCached(@"
@Path.Combine(""Furion"", ""ViewEngine"")
", builderAction: builder =>\n {\n builder.AddUsing("System.IO");\n builder.AddAssemblyReferenceByName("System.IO");\n });\n')),(0,i.kt)("p",null,"\u7ed3\u679c\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-html"},"
Furion\\\\ViewEngine
\n")),(0,i.kt)("p",null,"\u4e5f\u652f\u6301\u52a0\u5165\u591a\u4e2a ",(0,i.kt)("inlineCode",{parentName:"p"},"using"),"\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},'builder.AddUsing("System.IO");\nbuilder.AddUsing("Furion");\n')),(0,i.kt)("h3",{id:"1743-\u5b9a\u4e49\u6a21\u677f\u65b9\u6cd5"},"17.4.3 \u5b9a\u4e49\u6a21\u677f\u65b9\u6cd5"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'var result = _viewEngine.RunCompileFromCached(@"\n\n @{ RecursionTest(3); }\n\n\n@{\n void RecursionTest(int level)\n {\n if (level <= 0)\n {\n return;\n }\n\n
LEVEL: @level
\n @{ RecursionTest(level - 1); }\n }\n}\n");\n')),(0,i.kt)("p",null,"\u7ed3\u679c\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-html"},"\n
LEVEL: 3
\n
LEVEL: 2
\n
LEVEL: 1
\n\n")),(0,i.kt)("h3",{id:"1744-\u8c03\u7528\u7c7b\u65b9\u6cd5"},"17.4.4 \u8c03\u7528\u7c7b\u65b9\u6cd5"),(0,i.kt)("p",null,"\u5b9a\u4e49 ",(0,i.kt)("inlineCode",{parentName:"p"},"CustomModel")," \u7c7b\u5e76\u7ee7\u627f ",(0,i.kt)("inlineCode",{parentName:"p"},"ViewEngineModel")," \u57fa\u7c7b"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1}","{1}":!0},'public class CustomModel : ViewEngineModel\n{\n public int A { get; set; }\n public string B { get; set; }\n public string Decorator(object value)\n {\n return "-=" + value + "=-";\n }\n}\n')),(0,i.kt)("p",null,"\u5728\u6a21\u677f\u4e2d\u8c03\u7528 ",(0,i.kt)("inlineCode",{parentName:"p"},"Decorator(value)")," \u65b9\u6cd5\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'var content = @"Hello @A, @B, @Decorator(123)";\n\nvar template = _viewEngine.Compile(content);\n\nvar result = template.Run(instance =>\n{\n instance.A = 10;\n instance.B = "Alex";\n});\n')),(0,i.kt)("p",null,"\u7ed3\u679c\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-html"},"Hello 10, Alex, -=123=-\n")),(0,i.kt)("h2",{id:"175-iviewengine-\u63a5\u53e3"},"17.5 ",(0,i.kt)("inlineCode",{parentName:"h2"},"IViewEngine")," \u63a5\u53e3"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"IViewEngine")," \u63d0\u4f9b\u4e86\u7b80\u5355\u65b9\u4fbf\u7684 ",(0,i.kt)("inlineCode",{parentName:"p"},"RunCompile")," \u65b9\u6cd5\uff0c\u4e5f\u63d0\u4f9b\u4e86\u6700\u539f\u59cb\u5316\u7684 ",(0,i.kt)("inlineCode",{parentName:"p"},"Compile")," \u548c ",(0,i.kt)("inlineCode",{parentName:"p"},"Run")," \u65b9\u6cd5\u3002"),(0,i.kt)("p",null,"\u901a\u8fc7\u539f\u59cb\u7684 ",(0,i.kt)("inlineCode",{parentName:"p"},"Compile")," \u548c ",(0,i.kt)("inlineCode",{parentName:"p"},"Run")," \u65b9\u6cd5\u53ef\u4ee5\u5b9e\u73b0\u5f88\u591a\u590d\u6742\u7684\u903b\u8f91\u548c\u81ea\u5b9a\u4e49\u6307\u4ee4\u96c6\u3002"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'/// \n/// \u7f16\u8bd1\u6a21\u677f\n/// \n/// \n/// \n/// \nIViewEngineTemplate Compile(string content, Action builderAction = null);\n/// \n/// \u7f16\u8bd1\u6a21\u677f\n/// \n/// \n/// \n/// \nTask CompileAsync(string content, Action builderAction = null);\n/// \n/// \u7f16\u8bd1\u6a21\u677f\n/// \n/// \n/// \n/// \n/// \nIViewEngineTemplate Compile(string content, Action builderAction = null)\n where T : IViewEngineModel;\n/// \n/// \u7f16\u8bd1\u6a21\u677f\n/// \n/// \n/// \n/// \n/// \nTask> CompileAsync(string content, Action builderAction = null)\n where T : IViewEngineModel;\n')),(0,i.kt)("h2",{id:"176-\u5b57\u7b26\u4e32\u6a21\u677f\u66ff\u6362\u5f15\u64ce"},"17.6 \u5b57\u7b26\u4e32\u6a21\u677f\u66ff\u6362\u5f15\u64ce"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u9664\u4e86\u5185\u7f6e\u89c6\u56fe\u5f15\u64ce\u4e4b\u5916\uff0c\u8fd8\u652f\u6301\u4ee5\u4e0b\u51e0\u79cd\u6a21\u677f\u66ff\u6362\uff0c\u5982\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// \u63d0\u4f9b\u6570\u636e\u6a21\u677f\u65b9\u5f0f\nvar str = "\u6211\u53eb{name}".Render(new Dictionary{ {"name", "Furion"} });\nvar str = "\u6211\u53eb{Name}".Render(new { Name = "Furion" });\nvar str = "\u6211\u53eb{Detail.Name}".Render(new { Detail = new { Name = "Furoin" } });\n\n// \u4ece\u914d\u7f6e\u8bfb\u53d6\u65b9\u5f0f\nvar str = "\u6211\u53eb#(Furion:Address)".Render();\n')),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-json"},'{\n "Furion": {\n "Address": "https://www.furion.pro"\n }\n}\n')),(0,i.kt)("h2",{id:"177-\u53cd\u9988\u4e0e\u5efa\u8bae"},"17.7 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,i.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/6159.43931247.js b/handbook/build/assets/js/6159.43931247.js new file mode 100644 index 00000000000..2a08b0644b1 --- /dev/null +++ b/handbook/build/assets/js/6159.43931247.js @@ -0,0 +1,2 @@ +/*! For license information please see 6159.43931247.js.LICENSE.txt */ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[6159],{6742:function(e,n,t){t.d(n,{Z:function(){return v}});var r=t(3366),o=t(7294),u=t(3727),i=t(2263),a=t(3919),c=t(412),s=(0,o.createContext)({collectLink:function(){}}),l=t(4996),f=t(8780),d=["isNavLink","to","href","activeClassName","isActive","data-noBrokenLinkCheck","autoAddBaseUrl"];var v=function(e){var n,t,v=e.isNavLink,p=e.to,g=e.href,h=e.activeClassName,m=e.isActive,y=e["data-noBrokenLinkCheck"],b=e.autoAddBaseUrl,w=void 0===b||b,P=(0,r.Z)(e,d),_=(0,i.Z)().siteConfig,E=_.trailingSlash,D=_.baseUrl,O=(0,l.C)().withBaseUrl,S=(0,o.useContext)(s),A=p||g,C=(0,a.Z)(A),j=null==A?void 0:A.replace("pathname://",""),k=void 0!==j?(t=j,w&&function(e){return e.startsWith("/")}(t)?O(t):t):void 0;k&&C&&(k=(0,f.applyTrailingSlash)(k,{trailingSlash:E,baseUrl:D}));var x,V=(0,o.useRef)(!1),L=v?u.OL:u.rU,R=c.Z.canUseIntersectionObserver;(0,o.useEffect)((function(){return!R&&C&&null!=k&&window.docusaurus.prefetch(k),function(){R&&x&&x.disconnect()}}),[k,R,C]);var T=null!==(n=null==k?void 0:k.startsWith("#"))&&void 0!==n&&n,I=!k||!C||T;return k&&C&&!T&&!y&&S.collectLink(k),I?o.createElement("a",Object.assign({href:k},A&&!C&&{target:"_blank",rel:"noopener noreferrer"},P)):o.createElement(L,Object.assign({},P,{onMouseEnter:function(){V.current||null==k||(window.docusaurus.preload(k),V.current=!0)},innerRef:function(e){var n,t;R&&e&&C&&(n=e,t=function(){null!=k&&window.docusaurus.prefetch(k)},(x=new window.IntersectionObserver((function(e){e.forEach((function(e){n===e.target&&(e.isIntersecting||e.intersectionRatio>0)&&(x.unobserve(n),x.disconnect(),t())}))}))).observe(n))},to:k||""},v&&{isActive:m,activeClassName:h}))}},4973:function(e,n,t){t.d(n,{Z:function(){return f},I:function(){return l}});var r=t(7294),o=/{\w+}/g,u="{}";function i(e,n){var t=[],i=e.replace(o,(function(e){var o=e.substr(1,e.length-2),i=null==n?void 0:n[o];if(void 0!==i){var a=r.isValidElement(i)?i:String(i);return t.push(a),u}return e}));return 0===t.length?e:t.every((function(e){return"string"==typeof e}))?i.split(u).reduce((function(e,n,r){var o;return e.concat(n).concat(null!==(o=t[r])&&void 0!==o?o:"")}),""):i.split(u).reduce((function(e,n,o){return[].concat(e,[r.createElement(r.Fragment,{key:o},n,t[o])])}),[])}function a(e){var n=e.children,t=e.values;if("string"!=typeof n)throw console.warn("Illegal children",n),new Error("The Docusaurus component only accept simple string values");return i(n,t)}var c=t(7529);function s(e){var n,t=e.id,r=e.message;return null!==(n=c[null!=t?t:r])&&void 0!==n?n:r}function l(e,n){var t,r=e.message;return i(null!==(t=s({message:r,id:e.id}))&&void 0!==t?t:r,n)}function f(e){var n,t=e.children,o=e.id,u=e.values;if("string"!=typeof t)throw console.warn("Illegal children",t),new Error("The Docusaurus component only accept simple string values");var i=null!==(n=s({message:t,id:o}))&&void 0!==n?n:t;return r.createElement(a,{values:u},i)}},8143:function(e,n,t){t.r(n),t.d(n,{BrowserRouter:function(){return r.VK},HashRouter:function(){return r.UT},Link:function(){return r.rU},MemoryRouter:function(){return r.VA},NavLink:function(){return r.OL},Prompt:function(){return r.NL},Redirect:function(){return r.l_},Route:function(){return r.AW},Router:function(){return r.F0},StaticRouter:function(){return r.gx},Switch:function(){return r.rs},generatePath:function(){return r.Gn},matchPath:function(){return r.LX},useHistory:function(){return r.k6},useLocation:function(){return r.TH},useParams:function(){return r.UO},useRouteMatch:function(){return r.$B},withRouter:function(){return r.EN}});var r=t(3727)},8084:function(e,n,t){t.r(n),t.d(n,{default:function(){return o},useAllPluginInstancesData:function(){return u},usePluginData:function(){return i}});var r=t(2263);function o(){var e=(0,r.Z)().globalData;if(!e)throw new Error("Docusaurus global data not found.");return e}function u(e){var n=o()[e];if(!n)throw new Error('Docusaurus plugin global data not found for "'+e+'" plugin.');return n}function i(e,n){void 0===n&&(n="default");var t=u(e)[n];if(!t)throw new Error('Docusaurus plugin global data not found for "'+e+'" plugin with id "'+n+'".');return t}},2389:function(e,n,t){t.d(n,{Z:function(){return u}});var r=t(7294),o=t(9913);function u(){return(0,r.useContext)(o._)}},8408:function(e,n,t){Object.defineProperty(n,"__esModule",{value:!0}),n.getDocVersionSuggestions=n.getActiveDocContext=n.getActiveVersion=n.getLatestVersion=n.getActivePlugin=void 0;var r=t(8143);n.getActivePlugin=function(e,n,t){void 0===t&&(t={});var o=Object.entries(e).find((function(e){e[0];var t=e[1];return!!r.matchPath(n,{path:t.path,exact:!1,strict:!1})})),u=o?{pluginId:o[0],pluginData:o[1]}:void 0;if(!u&&t.failfast)throw new Error("Can't find active docs plugin for \""+n+'" pathname, while it was expected to be found. Maybe you tried to use a docs feature that can only be used on a docs-related page? Existing docs plugin paths are: '+Object.values(e).map((function(e){return e.path})).join(", "));return u};n.getLatestVersion=function(e){return e.versions.find((function(e){return e.isLast}))};n.getActiveVersion=function(e,t){var o=n.getLatestVersion(e);return[].concat(e.versions.filter((function(e){return e!==o})),[o]).find((function(e){return!!r.matchPath(t,{path:e.path,exact:!1,strict:!1})}))};n.getActiveDocContext=function(e,t){var o,u,i=n.getActiveVersion(e,t),a=null==i?void 0:i.docs.find((function(e){return!!r.matchPath(t,{path:e.path,exact:!0,strict:!1})}));return{activeVersion:i,activeDoc:a,alternateDocVersions:a?(o=a.id,u={},e.versions.forEach((function(e){e.docs.forEach((function(n){n.id===o&&(u[e.name]=n)}))})),u):{}}};n.getDocVersionSuggestions=function(e,t){var r=n.getLatestVersion(e),o=n.getActiveDocContext(e,t);return{latestDocSuggestion:null==o?void 0:o.alternateDocVersions[r.name],latestVersionSuggestion:r}}},6730:function(e,n,t){Object.defineProperty(n,"__esModule",{value:!0}),n.useDocVersionSuggestions=n.useActiveDocContext=n.useActiveVersion=n.useLatestVersion=n.useVersions=n.useActivePluginAndVersion=n.useActivePlugin=n.useDocsData=n.useAllDocsData=void 0;var r=t(655),o=t(8143),u=r.__importStar(t(8084)),i=t(8408),a={};n.useAllDocsData=function(){var e;return null!==(e=u.default()["docusaurus-plugin-content-docs"])&&void 0!==e?e:a};n.useDocsData=function(e){return u.usePluginData("docusaurus-plugin-content-docs",e)};n.useActivePlugin=function(e){void 0===e&&(e={});var t=n.useAllDocsData(),r=o.useLocation().pathname;return i.getActivePlugin(t,r,e)};n.useActivePluginAndVersion=function(e){void 0===e&&(e={});var t=n.useActivePlugin(e),r=o.useLocation().pathname;if(t)return{activePlugin:t,activeVersion:i.getActiveVersion(t.pluginData,r)}};n.useVersions=function(e){return n.useDocsData(e).versions};n.useLatestVersion=function(e){var t=n.useDocsData(e);return i.getLatestVersion(t)};n.useActiveVersion=function(e){var t=n.useDocsData(e),r=o.useLocation().pathname;return i.getActiveVersion(t,r)};n.useActiveDocContext=function(e){var t=n.useDocsData(e),r=o.useLocation().pathname;return i.getActiveDocContext(t,r)};n.useDocVersionSuggestions=function(e){var t=n.useDocsData(e),r=o.useLocation().pathname;return i.getDocVersionSuggestions(t,r)}},1217:function(e,n,t){t.d(n,{Z:function(){return a}});var r=t(7294),o=t(9105),u=t(941),i=t(4996);function a(e){var n=e.title,t=e.description,a=e.keywords,c=e.image,s=e.children,l=(0,u.pe)(n),f=(0,i.C)().withBaseUrl,d=c?f(c,{absolute:!0}):void 0;return r.createElement(o.Z,null,n&&r.createElement("title",null,l),n&&r.createElement("meta",{property:"og:title",content:l}),t&&r.createElement("meta",{name:"description",content:t}),t&&r.createElement("meta",{property:"og:description",content:t}),a&&r.createElement("meta",{name:"keywords",content:Array.isArray(a)?a.join(","):a}),d&&r.createElement("meta",{property:"og:image",content:d}),d&&r.createElement("meta",{name:"twitter:image",content:d}),s)}},907:function(e,n,t){t.d(n,{Iw:function(){return r.useActiveDocContext},gA:function(){return r.useActivePlugin},WS:function(){return r.useActivePluginAndVersion},zu:function(){return r.useActiveVersion},_r:function(){return r.useAllDocsData},Jo:function(){return r.useDocVersionSuggestions},zh:function(){return r.useDocsData},yW:function(){return r.useLatestVersion},gB:function(){return r.useVersions}});var r=t(6730)},3783:function(e,n,t){var r=t(7294),o=t(412),u="desktop",i="mobile",a="ssr";function c(){return o.Z.canUseDOM?window.innerWidth>996?u:i:a}n.Z=function(){var e=(0,r.useState)((function(){return c()})),n=e[0],t=e[1];return(0,r.useEffect)((function(){function e(){t(c())}return window.addEventListener("resize",e),function(){window.removeEventListener("resize",e),clearTimeout(undefined)}}),[]),n}},941:function(e,n,t){t.d(n,{pl:function(){return ye},zF:function(){return U},HX:function(){return g},PO:function(){return K},L5:function(){return ae},Cv:function(){return ne},Cn:function(){return Y},kM:function(){return de},WA:function(){return s},os:function(){return h},Mg:function(){return b},_f:function(){return l},PZ:function(){return Ee},bc:function(){return p},MA:function(){return _e},l5:function(){return d},nT:function(){return be},uR:function(){return L},J:function(){return le},Oh:function(){return fe},Rb:function(){return De},be:function(){return we},SL:function(){return C},g8:function(){return ee},c2:function(){return S},D9:function(){return A},LU:function(){return o},pe:function(){return w}});var r=t(2263);function o(){return(0,r.Z)().siteConfig.themeConfig}var u="localStorage";function i(e){if(void 0===e&&(e=u),"undefined"==typeof window)throw new Error("Browser storage is not available on Node.js/Docusaurus SSR process.");if("none"===e)return null;try{return window[e]}catch(t){return n=t,a||(console.warn("Docusaurus browser storage is not available.\nPossible reasons: running Docusaurus in an iframe, in an incognito browser session, or using too strict browser privacy settings.",n),a=!0),null}var n}var a=!1;var c={get:function(){return null},set:function(){},del:function(){}};var s=function(e,n){if("undefined"==typeof window)return function(e){function n(){throw new Error('Illegal storage API usage for storage key "'+e+'".\nDocusaurus storage APIs are not supposed to be called on the server-rendering process.\nPlease only call storage APIs in effects and event handlers.')}return{get:n,set:n,del:n}}(e);var t=i(null==n?void 0:n.persistence);return null===t?c:{get:function(){return t.getItem(e)},set:function(n){return t.setItem(e,n)},del:function(){return t.removeItem(e)}}};function l(e){void 0===e&&(e=u);var n=i(e);if(!n)return[];for(var t=[],r=0;rt.pluralForms.length&&console.error("For locale="+t.locale+", a maximum of "+t.pluralForms.length+" plural forms are expected ("+t.pluralForms+"), but the message contains "+r.length+" plural forms: "+e+" ");var o=t.select(n),u=t.pluralForms.indexOf(o);return r[Math.min(u,r.length-1)]}(t,n,e)}}}function A(e){var n=(0,P.useRef)();return(0,P.useEffect)((function(){n.current=e})),n.current}function C(e){var n=(0,f.TH)(),t=A(n),r=(0,P.useRef)(!0);(0,P.useEffect)((function(){r.current?r.current=!1:e({location:n,previousLocation:t})}),[n])}var j=t(3366),k=t(412),x=["collapsed"],V=["lazy"];function L(e){var n=e.initialState,t=(0,P.useState)(null!=n&&n),r=t[0],o=t[1],u=(0,P.useCallback)((function(){o((function(e){return!e}))}),[]);return{collapsed:r,setCollapsed:o,toggleCollapsed:u}}var R={display:"none",overflow:"hidden",height:"0px"},T={display:"block",overflow:"visible",height:"auto"};function I(e,n){var t=n?R:T;e.style.display=t.display,e.style.overflow=t.overflow,e.style.height=t.height}function M(e){var n=e.collapsibleRef,t=e.collapsed,r=e.animation,o=(0,P.useRef)(!1);(0,P.useEffect)((function(){var e,u=n.current;function i(){var e,n,t=u.scrollHeight;return{transition:"height "+(null!==(e=null==r?void 0:r.duration)&&void 0!==e?e:function(e){var n=e/36;return Math.round(10*(4+15*Math.pow(n,.25)+n/5))}(t))+"ms "+(null!==(n=null==r?void 0:r.easing)&&void 0!==n?n:"ease-in-out"),height:t+"px"}}function a(){var e=i();u.style.transition=e.transition,u.style.height=e.height}if(!o.current)return I(u,t),void(o.current=!0);return u.style.willChange="height",e=requestAnimationFrame((function(){t?(a(),requestAnimationFrame((function(){u.style.height=R.height,u.style.overflow=R.overflow}))):(u.style.display="block",requestAnimationFrame((function(){a()})))})),function(){return cancelAnimationFrame(e)}}),[n,t,r])}function Z(e){if(!k.Z.canUseDOM)return e?R:T}function N(e){var n=e.as,t=void 0===n?"div":n,r=e.collapsed,o=e.children,u=e.animation,i=e.onCollapseTransitionEnd,a=e.className,c=e.disableSSRStyle,s=(0,P.useRef)(null);return M({collapsibleRef:s,collapsed:r,animation:u}),P.createElement(t,{ref:s,style:c?void 0:Z(r),onTransitionEnd:function(e){if("height"===e.propertyName){var n=s.current,t=n.style.height;r||parseInt(t,10)!==n.scrollHeight||(I(n,!1),null==i||i(!1)),t===R.height&&(I(n,!0),null==i||i(!0))}},className:a},o)}function F(e){var n=e.collapsed,t=(0,j.Z)(e,x),r=(0,P.useState)(!n),o=r[0],u=r[1];(0,P.useLayoutEffect)((function(){n||u(!0)}),[n]);var i=(0,P.useState)(n),a=i[0],c=i[1];return(0,P.useLayoutEffect)((function(){o&&c(n)}),[o,n]),o?P.createElement(N,Object.assign({},t,{collapsed:a})):null}function U(e){var n=e.lazy,t=(0,j.Z)(e,V),r=n?F:N;return P.createElement(r,Object.assign({},t))}var B=t(2389),z=t(6010),W="details_2Ziz",H="isBrowser_2j9b",q="collapsibleContent_3OHp",G=["summary","children"];function J(e){return!!e&&("SUMMARY"===e.tagName||J(e.parentElement))}function X(e,n){return!!e&&(e===n||X(e.parentElement,n))}var K=function(e){var n,t=e.summary,r=e.children,o=(0,j.Z)(e,G),u=(0,B.Z)(),i=(0,P.useRef)(null),a=L({initialState:!o.open}),c=a.collapsed,s=a.setCollapsed,l=(0,P.useState)(o.open),f=l[0],d=l[1];return P.createElement("details",Object.assign({},o,{ref:i,open:f,"data-collapsed":c,className:(0,z.Z)(W,(n={},n[H]=u,n),o.className),onMouseDown:function(e){J(e.target)&&e.detail>1&&e.preventDefault()},onClick:function(e){e.stopPropagation();var n=e.target;J(n)&&X(n,i.current)&&(e.preventDefault(),c?(s(!1),d(!0)):s(!0))}}),t,P.createElement(U,{lazy:!1,collapsed:c,disableSSRStyle:!0,onCollapseTransitionEnd:function(e){s(e),d(!e)}},P.createElement("div",{className:q},r)))};var Q=(0,P.createContext)(null);function Y(e){var n=e.children;return P.createElement(Q.Provider,{value:(0,P.useState)(null)},n)}function $(){var e=(0,P.useContext)(Q);if(null===e)throw new Error("MobileSecondaryMenuProvider was not used correctly, context value is null");return e}function ee(){var e=$()[0];if(e){var n=e.component;return function(t){return P.createElement(n,Object.assign({},e.props,t))}}return function(){}}function ne(e){var n,t=e.component,r=e.props,o=$()[1],u=(n=r,(0,P.useMemo)((function(){return n}),[].concat(Object.keys(n),Object.values(n))));return(0,P.useEffect)((function(){o({component:t,props:u})}),[o,t,u]),(0,P.useEffect)((function(){return function(){return o(null)}}),[o]),null}var te=function(e){return"docs-preferred-version-"+e},re={save:function(e,n,t){s(te(e),{persistence:n}).set(t)},read:function(e,n){return s(te(e),{persistence:n}).get()},clear:function(e,n){s(te(e),{persistence:n}).del()}};function oe(e){var n=e.pluginIds,t=e.versionPersistence,r=e.allDocsData;var o={};return n.forEach((function(e){o[e]=function(e){var n=re.read(e,t);return r[e].versions.some((function(e){return e.name===n}))?{preferredVersionName:n}:(re.clear(e,t),{preferredVersionName:null})}(e)})),o}function ue(){var e=(0,m._r)(),n=o().docs.versionPersistence,t=(0,P.useMemo)((function(){return Object.keys(e)}),[e]),r=(0,P.useState)((function(){return function(e){var n={};return e.forEach((function(e){n[e]={preferredVersionName:null}})),n}(t)})),u=r[0],i=r[1];return(0,P.useEffect)((function(){i(oe({allDocsData:e,versionPersistence:n,pluginIds:t}))}),[e,n,t]),[u,(0,P.useMemo)((function(){return{savePreferredVersion:function(e,t){re.save(e,n,t),i((function(n){var r;return Object.assign({},n,((r={})[e]={preferredVersionName:t},r))}))}}}),[i])]}var ie=(0,P.createContext)(null);function ae(e){var n=e.children;return y?P.createElement(ce,null,n):P.createElement(P.Fragment,null,n)}function ce(e){var n=e.children,t=ue();return P.createElement(ie.Provider,{value:t},n)}function se(){var e=(0,P.useContext)(ie);if(!e)throw new Error('Can\'t find docs preferred context, maybe you forgot to use the "DocsPreferredVersionContextProvider"?');return e}function le(e){void 0===e&&(e="default");var n=(0,m.zh)(e),t=se(),r=t[0],o=t[1],u=r[e].preferredVersionName;return{preferredVersion:u?n.versions.find((function(e){return e.name===u})):null,savePreferredVersionName:(0,P.useCallback)((function(n){o.savePreferredVersion(e,n)}),[o])}}function fe(){var e=(0,m._r)(),n=se()[0];var t=Object.keys(e),r={};return t.forEach((function(t){r[t]=function(t){var r=e[t],o=n[t].preferredVersionName;return o?r.versions.find((function(e){return e.name===o})):null}(t)})),r}var de={page:{blogListPage:"blog-list-page",blogPostPage:"blog-post-page",blogTagsListPage:"blog-tags-list-page",blogTagPostListPage:"blog-tags-post-list-page",docsDocPage:"docs-doc-page",docsTagsListPage:"docs-tags-list-page",docsTagDocListPage:"docs-tags-doc-list-page",mdxPage:"mdx-page"},wrapper:{main:"main-wrapper",blogPages:"blog-wrapper",docsPages:"docs-wrapper",mdxPages:"mdx-wrapper"},common:{editThisPage:"theme-edit-this-page",lastUpdated:"theme-last-updated"},layout:{},docs:{docVersionBanner:"theme-doc-version-banner",docVersionBadge:"theme-doc-version-badge",docMarkdown:"theme-doc-markdown",docTocMobile:"theme-doc-toc-mobile",docTocDesktop:"theme-doc-toc-desktop",docFooter:"theme-doc-footer",docFooterTagsRow:"theme-doc-footer-tags-row",docFooterEditMetaRow:"theme-doc-footer-edit-meta-row",docSidebarMenu:"theme-doc-sidebar-menu",docSidebarItemCategory:"theme-doc-sidebar-item-category",docSidebarItemLink:"theme-doc-sidebar-item-link"},blog:{}},ve=s("docusaurus.announcement.dismiss"),pe=s("docusaurus.announcement.id"),ge=function(){return"true"===ve.get()},he=function(e){return ve.set(String(e))},me=(0,P.createContext)(null),ye=function(e){var n=e.children,t=function(){var e=o().announcementBar,n=(0,B.Z)(),t=(0,P.useState)((function(){return!!n&&ge()})),r=t[0],u=t[1];(0,P.useEffect)((function(){u(ge())}),[]);var i=(0,P.useCallback)((function(){he(!0),u(!0)}),[]);return(0,P.useEffect)((function(){if(e){var n=e.id,t=pe.get();"annoucement-bar"===t&&(t="announcement-bar");var r=n!==t;pe.set(n),r&&he(!1),!r&&ge()||u(!1)}}),[]),(0,P.useMemo)((function(){return{isClosed:r,close:i}}),[r])}();return P.createElement(me.Provider,{value:t},n)},be=function(){var e=(0,P.useContext)(me);if(!e)throw new Error("useAnnouncementBar(): AnnouncementBar not found in React context: make sure to use the AnnouncementBarProvider on top of the tree");return e};function we(){var e=(0,r.Z)().siteConfig.baseUrl;return(0,f.TH)().pathname.replace(e,"/")}var Pe=t(4973),_e=function(){return(0,Pe.I)({id:"theme.tags.tagsPageTitle",message:"Tags",description:"The title of the tag list page"})};function Ee(e){var n={};return Object.values(e).forEach((function(e){var t,r=function(e){return e[0].toUpperCase()}(e.name);n[r]=null!==(t=n[r])&&void 0!==t?t:[],n[r].push(e)})),Object.entries(n).sort((function(e,n){var t=e[0],r=n[0];return t.localeCompare(r)})).map((function(e){return{letter:e[0],tags:e[1].sort((function(e,n){return e.name.localeCompare(n.name)}))}}))}function De(e){!function(e){var n=(0,f.k6)().block,t=(0,P.useRef)(e);(0,P.useEffect)((function(){t.current=e}),[e]),(0,P.useEffect)((function(){return n((function(e,n){return t.current(e,n)}))}),[n,t])}((function(n,t){if("POP"===t)return e(n,t)}))}},8802:function(e,n){Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e,n){var t=n.trailingSlash,r=n.baseUrl;if(e.startsWith("#"))return e;if(void 0===t)return e;var o,u=e.split(/[#?]/)[0],i="/"===u||u===r?u:(o=u,t?function(e){return e.endsWith("/")?e:e+"/"}(o):function(e){return e.endsWith("/")?e.slice(0,-1):e}(o));return e.replace(u,i)}},8780:function(e,n,t){var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(n,"__esModule",{value:!0}),n.uniq=n.applyTrailingSlash=void 0;var o=t(8802);Object.defineProperty(n,"applyTrailingSlash",{enumerable:!0,get:function(){return r(o).default}});var u=t(9964);Object.defineProperty(n,"uniq",{enumerable:!0,get:function(){return r(u).default}})},9964:function(e,n){Object.defineProperty(n,"__esModule",{value:!0}),n.default=function(e){return Array.from(new Set(e))}},6010:function(e,n,t){function r(e){var n,t,o="";if("string"==typeof e||"number"==typeof e)o+=e;else if("object"==typeof e)if(Array.isArray(e))for(n=0;n=0;a--)(o=e[a])&&(i=(u<3?o(i):u>3?o(n,t,i):o(n,t))||i);return u>3&&i&&Object.defineProperty(n,t,i),i}function c(e,n){return function(t,r){n(t,r,e)}}function s(e,n){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,n)}function l(e,n,t,r){return new(t||(t=Promise))((function(o,u){function i(e){try{c(r.next(e))}catch(n){u(n)}}function a(e){try{c(r.throw(e))}catch(n){u(n)}}function c(e){var n;e.done?o(e.value):(n=e.value,n instanceof t?n:new t((function(e){e(n)}))).then(i,a)}c((r=r.apply(e,n||[])).next())}))}function f(e,n){var t,r,o,u,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return u={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(u[Symbol.iterator]=function(){return this}),u;function a(u){return function(a){return function(u){if(t)throw new TypeError("Generator is already executing.");for(;i;)try{if(t=1,r&&(o=2&u[0]?r.return:u[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,u[1])).done)return o;switch(r=0,o&&(u=[2&u[0],o.value]),u[0]){case 0:case 1:o=u;break;case 4:return i.label++,{value:u[1],done:!1};case 5:i.label++,r=u[1],u=[0];continue;case 7:u=i.ops.pop(),i.trys.pop();continue;default:if(!(o=i.trys,(o=o.length>0&&o[o.length-1])||6!==u[0]&&2!==u[0])){i=0;continue}if(3===u[0]&&(!o||u[1]>o[0]&&u[1]=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(n?"Object is not iterable.":"Symbol.iterator is not defined.")}function g(e,n){var t="function"==typeof Symbol&&e[Symbol.iterator];if(!t)return e;var r,o,u=t.call(e),i=[];try{for(;(void 0===n||n-- >0)&&!(r=u.next()).done;)i.push(r.value)}catch(a){o={error:a}}finally{try{r&&!r.done&&(t=u.return)&&t.call(u)}finally{if(o)throw o.error}}return i}function h(){for(var e=[],n=0;n1||a(e,n)}))})}function a(e,n){try{(t=o[e](n)).value instanceof b?Promise.resolve(t.value.v).then(c,s):l(u[0][2],t)}catch(r){l(u[0][3],r)}var t}function c(e){a("next",e)}function s(e){a("throw",e)}function l(e,n){e(n),u.shift(),u.length&&a(u[0][0],u[0][1])}}function P(e){var n,t;return n={},r("next"),r("throw",(function(e){throw e})),r("return"),n[Symbol.iterator]=function(){return this},n;function r(r,o){n[r]=e[r]?function(n){return(t=!t)?{value:b(e[r](n)),done:"return"===r}:o?o(n):n}:o}}function _(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var n,t=e[Symbol.asyncIterator];return t?t.call(e):(e=p(e),n={},r("next"),r("throw"),r("return"),n[Symbol.asyncIterator]=function(){return this},n);function r(t){n[t]=e[t]&&function(n){return new Promise((function(r,o){(function(e,n,t,r){Promise.resolve(r).then((function(n){e({value:n,done:t})}),n)})(r,o,(n=e[t](n)).done,n.value)}))}}}function E(e,n){return Object.defineProperty?Object.defineProperty(e,"raw",{value:n}):e.raw=n,e}var D=Object.create?function(e,n){Object.defineProperty(e,"default",{enumerable:!0,value:n})}:function(e,n){e.default=n};function O(e){if(e&&e.__esModule)return e;var n={};if(null!=e)for(var t in e)"default"!==t&&Object.prototype.hasOwnProperty.call(e,t)&&d(n,e,t);return D(n,e),n}function S(e){return e&&e.__esModule?e:{default:e}}function A(e,n,t,r){if("a"===t&&!r)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof n?e!==n||!r:!n.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===t?r:"a"===t?r.call(e):r?r.value:n.get(e)}function C(e,n,t,r,o){if("m"===r)throw new TypeError("Private method is not writable");if("a"===r&&!o)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof n?e!==n||!o:!n.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===r?o.call(e,t):o?o.value=t:n.set(e,t),t}}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/4034.eec6eb1e.js.LICENSE.txt b/handbook/build/assets/js/6159.43931247.js.LICENSE.txt similarity index 100% rename from handbook/build/assets/js/4034.eec6eb1e.js.LICENSE.txt rename to handbook/build/assets/js/6159.43931247.js.LICENSE.txt diff --git a/handbook/build/assets/js/6199.839f3787.js b/handbook/build/assets/js/6199.839f3787.js deleted file mode 100644 index a3cae43c903..00000000000 --- a/handbook/build/assets/js/6199.839f3787.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[6199],{830:function(e,t,n){n.d(t,{W:function(){return r}});var a=n(7294);function r(){return a.createElement("svg",{width:"20",height:"20",className:"DocSearch-Search-Icon",viewBox:"0 0 20 20"},a.createElement("path",{d:"M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"}))}},8617:function(e,t,n){n.d(t,{Z:function(){return o}});var a=n(7294),r="iconExternalLink_3J9K",o=function(e){var t=e.width,n=void 0===t?13.5:t,o=e.height,l=void 0===o?13.5:o;return a.createElement("svg",{width:n,height:l,"aria-hidden":"true",viewBox:"0 0 24 24",className:r},a.createElement("path",{fill:"currentColor",d:"M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"}))}},6199:function(e,t,n){n.d(t,{Z:function(){return me}});var a=n(7294),r=n(6010),o=n(5977),l=n(4973),c=n(3018),i="skipToContent_1oUP";function s(e){e.setAttribute("tabindex","-1"),e.focus(),e.removeAttribute("tabindex")}var u=function(){var e=(0,a.useRef)(null),t=(0,o.k6)().action;return(0,c.SL)((function(n){var a=n.location;e.current&&!a.hash&&"PUSH"===t&&s(e.current)})),a.createElement("div",{ref:e},a.createElement("a",{href:"#",className:i,onClick:function(e){e.preventDefault();var t=document.querySelector("main:first-of-type")||document.querySelector(".main-wrapper");t&&s(t)}},a.createElement(l.Z,{id:"theme.common.skipToMainContent",description:"The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation"},"Skip to main content")))},m="announcementBar_3WsW",d="announcementBarClose_38nx",f="announcementBarContent_3EUC",v="announcementBarCloseable_3myR";var h=function(){var e,t=(0,c.nT)(),n=t.isClosed,o=t.close,i=(0,c.LU)().announcementBar;if(!i)return null;var s=i.content,u=i.backgroundColor,h=i.textColor,b=i.isCloseable;return!s||b&&n?null:a.createElement("div",{className:m,style:{backgroundColor:u,color:h},role:"banner"},a.createElement("div",{className:(0,r.Z)(f,(e={},e[v]=b,e)),dangerouslySetInnerHTML:{__html:s}}),b?a.createElement("button",{type:"button",className:(0,r.Z)(d,"clean-btn"),onClick:o,"aria-label":(0,l.I)({id:"theme.AnnouncementBar.closeButtonAriaLabel",message:"Close",description:"The ARIA label for close button of announcement bar"})},a.createElement("span",{"aria-hidden":"true"},"\xd7")):null)},b=n(7462),g=n(1036),p=n(2263),E={toggle:"toggle_71bT"},k=function(e){var t=e.icon,n=e.style;return a.createElement("span",{className:(0,r.Z)(E.toggle,E.dark),style:n},t)},Z=function(e){var t=e.icon,n=e.style;return a.createElement("span",{className:(0,r.Z)(E.toggle,E.light),style:n},t)},w=(0,a.memo)((function(e){var t=e.className,n=e.icons,o=e.checked,l=e.disabled,c=e.onChange,i=(0,a.useState)(o),s=i[0],u=i[1],m=(0,a.useState)(!1),d=m[0],f=m[1],v=(0,a.useRef)(null);return a.createElement("div",{className:(0,r.Z)("react-toggle",t,{"react-toggle--checked":s,"react-toggle--focus":d,"react-toggle--disabled":l})},a.createElement("div",{className:"react-toggle-track",role:"button",tabIndex:-1,onClick:function(){var e;return null==(e=v.current)?void 0:e.click()}},a.createElement("div",{className:"react-toggle-track-check"},n.checked),a.createElement("div",{className:"react-toggle-track-x"},n.unchecked),a.createElement("div",{className:"react-toggle-thumb"})),a.createElement("input",{ref:v,checked:s,type:"checkbox",className:"react-toggle-screenreader-only","aria-label":"Switch between dark and light mode",onChange:c,onClick:function(){return u(!s)},onFocus:function(){return f(!0)},onBlur:function(){return f(!1)}}))}));function C(e){var t=(0,c.LU)().colorMode.switchConfig,n=t.darkIcon,r=t.darkIconStyle,o=t.lightIcon,l=t.lightIconStyle,i=(0,p.Z)().isClient;return a.createElement(w,(0,b.Z)({disabled:!i,icons:{checked:a.createElement(k,{icon:n,style:r}),unchecked:a.createElement(Z,{icon:o,style:l})}},e))}var y=n(5350),_=n(7898),N=function(e){var t=(0,o.TH)(),n=(0,a.useState)(e),r=n[0],l=n[1],i=(0,a.useRef)(!1),s=(0,a.useState)(0),u=s[0],m=s[1],d=(0,a.useCallback)((function(e){null!==e&&m(e.getBoundingClientRect().height)}),[]);return(0,_.Z)((function(t,n){var a=t.scrollY,r=null==n?void 0:n.scrollY;if(e)if(a=r?l(!1):a+c0&&a.createElement("button",{"aria-label":"Navigation bar toggle",className:"navbar__toggle clean-btn",type:"button",tabIndex:0,onClick:f.toggle,onKeyDown:f.toggle},a.createElement(P,null)),a.createElement(D.Z,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title"}),y.map((function(e,t){return a.createElement(L.Z,(0,b.Z)({},e,{key:t}))}))),a.createElement("div",{className:"navbar__items navbar__items--right"},_.map((function(e,t){return a.createElement(L.Z,(0,b.Z)({},e,{key:t}))})),!v.disabled&&a.createElement(C,{className:x,checked:v.isDarkTheme,onChange:v.toggle}),!Z&&a.createElement(g.Z,null))),a.createElement("div",{role:"presentation",className:"navbar-sidebar__backdrop",onClick:f.toggle}),f.shouldRender&&a.createElement(V,{sidebarShown:f.shown,toggleSidebar:f.toggle}))},H=n(546),j=n(412),z=(0,c.WA)("theme"),q="light",F="dark",K=function(e){return e===F?F:q},G=function(e){(0,c.WA)("theme").set(K(e))},Y=function(){var e=(0,c.LU)().colorMode,t=e.defaultMode,n=e.disableSwitch,r=e.respectPrefersColorScheme,o=(0,a.useState)(function(e){return j.Z.canUseDOM?K(document.documentElement.getAttribute("data-theme")):K(e)}(t)),l=o[0],i=o[1],s=(0,a.useCallback)((function(){i(q),G(q)}),[]),u=(0,a.useCallback)((function(){i(F),G(F)}),[]);return(0,a.useEffect)((function(){document.documentElement.setAttribute("data-theme",K(l))}),[l]),(0,a.useEffect)((function(){if(!n)try{var e=z.get();null!==e&&i(K(e))}catch(t){console.error(t)}}),[i]),(0,a.useEffect)((function(){n&&!r||window.matchMedia("(prefers-color-scheme: dark)").addListener((function(e){var t=e.matches;i(t?F:q)}))}),[]),{isDarkTheme:l===F,setLightTheme:s,setDarkTheme:u}},Q=n(2924);var X=function(e){var t=Y(),n=t.isDarkTheme,r=t.setLightTheme,o=t.setDarkTheme;return a.createElement(Q.Z.Provider,{value:{isDarkTheme:n,setLightTheme:r,setDarkTheme:o}},e.children)},J="docusaurus.tab.",$=function(){var e=(0,a.useState)({}),t=e[0],n=e[1],r=(0,a.useCallback)((function(e,t){(0,c.WA)("docusaurus.tab."+e).set(t)}),[]);return(0,a.useEffect)((function(){try{var e={};(0,c._f)().forEach((function(t){if(t.startsWith(J)){var n=t.substring(J.length);e[n]=(0,c.WA)(t).get()}})),n(e)}catch(t){console.error(t)}}),[]),{tabGroupChoices:t,setTabGroupChoices:function(e,t){n((function(n){var a;return Object.assign({},n,((a={})[e]=t,a))})),r(e,t)}}},ee=n(9443);var te=function(e){var t=$(),n=t.tabGroupChoices,r=t.setTabGroupChoices;return a.createElement(ee.Z.Provider,{value:{tabGroupChoices:n,setTabGroupChoices:r}},e.children)};function ne(e){var t=e.children;return a.createElement(X,null,a.createElement(c.pl,null,a.createElement(te,null,a.createElement(c.L5,null,a.createElement(c.Cn,null,t)))))}var ae=n(9105),re=n(4996);function oe(e){var t=e.locale,n=e.version,r=e.tag,o=t;return a.createElement(ae.Z,null,o&&a.createElement("meta",{name:"docsearch:language",content:o}),n&&a.createElement("meta",{name:"docsearch:version",content:n}),r&&a.createElement("meta",{name:"docsearch:docusaurus_tag",content:r}))}var le=n(1217);function ce(){var e=(0,p.Z)().i18n,t=e.defaultLocale,n=e.locales,r=(0,c.l5)();return a.createElement(ae.Z,null,n.map((function(e){return a.createElement("link",{key:e,rel:"alternate",href:r.createUrl({locale:e,fullyQualified:!0}),hrefLang:e})})),a.createElement("link",{rel:"alternate",href:r.createUrl({locale:t,fullyQualified:!0}),hrefLang:"x-default"}))}function ie(e){var t=e.permalink,n=(0,p.Z)().siteConfig.url,r=function(){var e=(0,p.Z)().siteConfig.url,t=(0,o.TH)().pathname;return e+(0,re.Z)(t)}(),l=t?""+n+t:r;return a.createElement(ae.Z,null,a.createElement("meta",{property:"og:url",content:l}),a.createElement("link",{rel:"canonical",href:l}))}function se(e){var t=(0,p.Z)(),n=t.siteConfig,r=n.favicon,o=n.themeConfig,l=o.metadatas,i=o.image,s=t.i18n,u=s.currentLocale,m=s.localeConfigs,d=e.title,f=e.description,v=e.image,h=e.keywords,g=e.searchMetadatas,E=(0,re.Z)(r),k=(0,c.pe)(d),Z=u,w=m[u].direction;return a.createElement(a.Fragment,null,a.createElement(ae.Z,null,a.createElement("html",{lang:Z,dir:w}),r&&a.createElement("link",{rel:"shortcut icon",href:E}),a.createElement("title",null,k),a.createElement("meta",{property:"og:title",content:k}),v||i&&a.createElement("meta",{name:"twitter:card",content:"summary_large_image"})),a.createElement(le.Z,{description:f,keywords:h,image:v}),a.createElement(ie,null),a.createElement(ce,null),a.createElement(oe,(0,b.Z)({tag:c.HX,locale:u},g)),a.createElement(ae.Z,null,l.map((function(e,t){return a.createElement("meta",(0,b.Z)({key:"metadata_"+t},e))}))))}var ue=function(){(0,a.useEffect)((function(){var e="navigation-with-keyboard";function t(t){"keydown"===t.type&&"Tab"===t.key&&document.body.classList.add(e),"mousedown"===t.type&&document.body.classList.remove(e)}return document.addEventListener("keydown",t),document.addEventListener("mousedown",t),function(){document.body.classList.remove(e),document.removeEventListener("keydown",t),document.removeEventListener("mousedown",t)}}),[])};var me=function(e){var t=e.children,n=e.noFooter,o=e.wrapperClassName,l=e.pageClassName;return ue(),a.createElement(ne,null,a.createElement(se,e),a.createElement(u,null),a.createElement(h,null),a.createElement(W,null),a.createElement("div",{className:(0,r.Z)(c.kM.wrapper.main,o,l)},t),!n&&a.createElement(H.Z,null))}},8030:function(e,t,n){n.d(t,{Z:function(){return h}});var a=n(7462),r=n(3366),o=n(7294),l=n(6742),c=n(6010),i=n(2263),s=n(5350),u={themedImage:"themedImage_1VuW","themedImage--light":"themedImage--light_3UqQ","themedImage--dark":"themedImage--dark_hz6m"},m=["sources","className","alt"],d=function(e){var t=(0,i.Z)().isClient,n=(0,s.Z)().isDarkTheme,l=e.sources,d=e.className,f=e.alt,v=void 0===f?"":f,h=(0,r.Z)(e,m),b=t?n?["dark"]:["light"]:["light","dark"];return o.createElement(o.Fragment,null,b.map((function(e){return o.createElement("img",(0,a.Z)({key:e,src:l[e],alt:v,className:(0,c.Z)(u.themedImage,u["themedImage--"+e],d)},h))})))},f=n(4996),v=["imageClassName","titleClassName"],h=function(e){var t=(0,i.Z)(),n=t.siteConfig,c=n.title,s=n.themeConfig.navbar,u=s.title,m=s.logo,h=void 0===m?{src:""}:m,b=t.isClient,g=e.imageClassName,p=e.titleClassName,E=(0,r.Z)(e,v),k=(0,f.Z)(h.href||"/"),Z={light:(0,f.Z)(h.src),dark:(0,f.Z)(h.srcDark||h.src)};return o.createElement(l.Z,(0,a.Z)({to:k},E,h.target&&{target:h.target}),h.src&&o.createElement(d,{key:b,className:g,sources:Z,alt:h.alt||u||c}),null!=u&&o.createElement("b",{className:p},u))}},5525:function(e,t,n){n.d(t,{O:function(){return h}});var a=n(7462),r=n(3366),o=n(7294),l=n(6010),c=n(6742),i=n(4996),s=n(8617),u=n(3919),m=["activeBasePath","activeBaseRegex","to","href","label","activeClassName","prependBaseUrlToHref"],d=["className","isDropdownItem"],f=["className","isDropdownItem"],v=["mobile","position"];function h(e){var t=e.activeBasePath,n=e.activeBaseRegex,l=e.to,d=e.href,f=e.label,v=e.activeClassName,h=void 0===v?"navbar__link--active":v,b=e.prependBaseUrlToHref,g=(0,r.Z)(e,m),p=(0,i.Z)(l),E=(0,i.Z)(t),k=(0,i.Z)(d,{forcePrependBaseUrl:!0}),Z=f&&d&&!(0,u.Z)(d),w="dropdown__link--active"===h;return o.createElement(c.Z,(0,a.Z)({},d?{href:b?k:d}:Object.assign({isNavLink:!0,activeClassName:h,to:p},t||n?{isActive:function(e,t){return n?new RegExp(n).test(t.pathname):t.pathname.startsWith(E)}}:null),g),Z?o.createElement("span",null,f,o.createElement(s.Z,w&&{width:12,height:12})):f)}function b(e){var t=e.className,n=e.isDropdownItem,c=void 0!==n&&n,i=(0,r.Z)(e,d),s=o.createElement(h,(0,a.Z)({className:(0,l.Z)(c?"dropdown__link":"navbar__item navbar__link",t)},i));return c?o.createElement("li",null,s):s}function g(e){var t=e.className,n=(e.isDropdownItem,(0,r.Z)(e,f));return o.createElement("li",{className:"menu__list-item"},o.createElement(h,(0,a.Z)({className:(0,l.Z)("menu__link",t)},n)))}t.Z=function(e){var t=e.mobile,n=void 0!==t&&t,a=(e.position,(0,r.Z)(e,v)),l=n?g:b;return o.createElement(l,a)}},6400:function(e,t,n){n.d(t,{Z:function(){return d}});var a=n(7462),r=n(3366),o=n(7294),l=n(5525),c=n(907),i=n(6010),s=n(3018),u=n(8780),m=["docId","activeSidebarClassName","label","docsPluginId"];function d(e){var t,n=e.docId,d=e.activeSidebarClassName,f=e.label,v=e.docsPluginId,h=(0,r.Z)(e,m),b=(0,c.Iw)(v),g=b.activeVersion,p=b.activeDoc,E=(0,s.J)(v).preferredVersion,k=(0,c.yW)(v),Z=function(e,t){var n=e.flatMap((function(e){return e.docs})),a=n.find((function(e){return e.id===t}));if(!a){var r=n.map((function(e){return e.id})).join("\n- ");throw new Error("DocNavbarItem: couldn't find any doc with id \""+t+'" in version'+(e.length?"s":"")+" "+e.map((function(e){return e.name})).join(", ")+'".\nAvailable doc ids are:\n- '+r)}return a}((0,u.uniq)([g,E,k].filter(Boolean)),n);return o.createElement(l.Z,(0,a.Z)({exact:!0},h,{className:(0,i.Z)(h.className,(t={},t[d]=p&&p.sidebar===Z.sidebar,t)),label:null!=f?f:Z.id,to:Z.path}))}},9308:function(e,t,n){n.d(t,{Z:function(){return d}});var a=n(7462),r=n(3366),o=n(7294),l=n(5525),c=n(3154),i=n(907),s=n(3018),u=["mobile","docsPluginId","dropdownActiveClassDisabled","dropdownItemsBefore","dropdownItemsAfter"],m=function(e){return e.docs.find((function(t){return t.id===e.mainDocId}))};function d(e){var t,n,d=e.mobile,f=e.docsPluginId,v=e.dropdownActiveClassDisabled,h=e.dropdownItemsBefore,b=e.dropdownItemsAfter,g=(0,r.Z)(e,u),p=(0,i.Iw)(f),E=(0,i.gB)(f),k=(0,i.yW)(f),Z=(0,s.J)(f),w=Z.preferredVersion,C=Z.savePreferredVersionName;var y,_=(y=E.map((function(e){var t=(null==p?void 0:p.alternateDocVersions[e.name])||m(e);return{isNavLink:!0,label:e.label,to:t.path,isActive:function(){return e===(null==p?void 0:p.activeVersion)},onClick:function(){C(e.name)}}})),[].concat(h,y,b)),N=null!=(t=null!=(n=p.activeVersion)?n:w)?t:k,S=d&&_?"Versions":N.label,I=d&&_?void 0:m(N).path;return _.length<=1?o.createElement(l.Z,(0,a.Z)({},g,{mobile:d,label:S,to:I,isActive:v?function(){return!1}:void 0})):o.createElement(c.Z,(0,a.Z)({},g,{mobile:d,label:S,to:I,items:_,isActive:v?function(){return!1}:void 0}))}},7250:function(e,t,n){n.d(t,{Z:function(){return u}});var a=n(7462),r=n(3366),o=n(7294),l=n(5525),c=n(907),i=n(3018),s=["label","to","docsPluginId"];function u(e){var t,n=e.label,u=e.to,m=e.docsPluginId,d=(0,r.Z)(e,s),f=(0,c.zu)(m),v=(0,i.J)(m).preferredVersion,h=(0,c.yW)(m),b=null!=(t=null!=f?f:v)?t:h,g=null!=n?n:b.label,p=null!=u?u:function(e){return e.docs.find((function(t){return t.id===e.mainDocId}))}(b).path;return o.createElement(l.Z,(0,a.Z)({},d,{label:g,to:p}))}},3154:function(e,t,n){var a=n(7462),r=n(3366),o=n(7294),l=n(6010),c=n(3018),i=n(5525),s=n(4201),u=["items","position","className"],m=["items","className","position"],d=["mobile"];function f(e,t){return e.some((function(e){return function(e,t){return!!(0,c.Mg)(e.to,t)||!(!e.activeBaseRegex||!new RegExp(e.activeBaseRegex).test(t))||!(!e.activeBasePath||!t.startsWith(e.activeBasePath))}(e,t)}))}function v(e){var t,n=e.items,c=e.position,m=e.className,d=(0,r.Z)(e,u),f=(0,o.useRef)(null),v=(0,o.useRef)(null),h=(0,o.useState)(!1),b=h[0],g=h[1];return(0,o.useEffect)((function(){var e=function(e){f.current&&!f.current.contains(e.target)&&g(!1)};return document.addEventListener("mousedown",e),document.addEventListener("touchstart",e),function(){document.removeEventListener("mousedown",e),document.removeEventListener("touchstart",e)}}),[f]),o.createElement("div",{ref:f,className:(0,l.Z)("navbar__item","dropdown","dropdown--hoverable",{"dropdown--right":"right"===c,"dropdown--show":b})},o.createElement(i.O,(0,a.Z)({className:(0,l.Z)("navbar__item navbar__link",m)},d,{onClick:d.to?void 0:function(e){return e.preventDefault()},onKeyDown:function(e){"Enter"===e.key&&(e.preventDefault(),g(!b))}}),null!=(t=d.children)?t:d.label),o.createElement("ul",{ref:v,className:"dropdown__menu"},n.map((function(e,t){return o.createElement(s.Z,(0,a.Z)({isDropdownItem:!0,onKeyDown:function(e){if(t===n.length-1&&"Tab"===e.key){e.preventDefault(),g(!1);var a=f.current.nextElementSibling;a&&a.focus()}},activeClassName:"dropdown__link--active"},e,{key:t}))}))))}function h(e){var t,n=e.items,u=e.className,d=(e.position,(0,r.Z)(e,m)),v=(0,c.be)(),h=f(n,v),b=(0,c.uR)({initialState:function(){return!h}}),g=b.collapsed,p=b.toggleCollapsed,E=b.setCollapsed;return(0,o.useEffect)((function(){h&&E(!h)}),[v,h]),o.createElement("li",{className:(0,l.Z)("menu__list-item",{"menu__list-item--collapsed":g})},o.createElement(i.O,(0,a.Z)({role:"button",className:(0,l.Z)("menu__link menu__link--sublist",u)},d,{onClick:function(e){e.preventDefault(),p()}}),null!=(t=d.children)?t:d.label),o.createElement(c.zF,{lazy:!0,as:"ul",className:"menu__list",collapsed:g},n.map((function(e,t){return o.createElement(s.Z,(0,a.Z)({mobile:!0,isDropdownItem:!0,onClick:d.onClick,activeClassName:"menu__link--active"},e,{key:t}))}))))}t.Z=function(e){var t=e.mobile,n=void 0!==t&&t,a=(0,r.Z)(e,d),l=n?h:v;return o.createElement(l,a)}},4201:function(e,t,n){n.d(t,{Z:function(){return p}});var a=n(3366),r=n(7294),o=n(5525),l=n(3154),c=n(7462),i=["width","height"],s=function(e){var t=e.width,n=void 0===t?20:t,o=e.height,l=void 0===o?20:o,s=(0,a.Z)(e,i);return r.createElement("svg",(0,c.Z)({viewBox:"0 0 20 20",width:n,height:l,"aria-hidden":"true"},s),r.createElement("path",{fill:"currentColor",d:"M19.753 10.909c-.624-1.707-2.366-2.726-4.661-2.726-.09 0-.176.002-.262.006l-.016-2.063 3.525-.607c.115-.019.133-.119.109-.231-.023-.111-.167-.883-.188-.976-.027-.131-.102-.127-.207-.109-.104.018-3.25.461-3.25.461l-.013-2.078c-.001-.125-.069-.158-.194-.156l-1.025.016c-.105.002-.164.049-.162.148l.033 2.307s-3.061.527-3.144.543c-.084.014-.17.053-.151.143.019.09.19 1.094.208 1.172.018.08.072.129.188.107l2.924-.504.035 2.018c-1.077.281-1.801.824-2.256 1.303-.768.807-1.207 1.887-1.207 2.963 0 1.586.971 2.529 2.328 2.695 3.162.387 5.119-3.06 5.769-4.715 1.097 1.506.256 4.354-2.094 5.98-.043.029-.098.129-.033.207l.619.756c.08.096.206.059.256.023 2.51-1.73 3.661-4.515 2.869-6.683zm-7.386 3.188c-.966-.121-.944-.914-.944-1.453 0-.773.327-1.58.876-2.156a3.21 3.21 0 011.229-.799l.082 4.277a2.773 2.773 0 01-1.243.131zm2.427-.553l.046-4.109c.084-.004.166-.01.252-.01.773 0 1.494.145 1.885.361.391.217-1.023 2.713-2.183 3.758zm-8.95-7.668a.196.196 0 00-.196-.145h-1.95a.194.194 0 00-.194.144L.008 16.916c-.017.051-.011.076.062.076h1.733c.075 0 .099-.023.114-.072l1.008-3.318h3.496l1.008 3.318c.016.049.039.072.113.072h1.734c.072 0 .078-.025.062-.076-.014-.05-3.083-9.741-3.494-11.04zm-2.618 6.318l1.447-5.25 1.447 5.25H3.226z"}))},u=n(2263),m=n(3018),d=["mobile","dropdownItemsBefore","dropdownItemsAfter"];function f(e){var t=e.mobile,n=e.dropdownItemsBefore,o=e.dropdownItemsAfter,i=(0,a.Z)(e,d),f=(0,u.Z)().i18n,v=f.currentLocale,h=f.locales,b=f.localeConfigs,g=(0,m.l5)();function p(e){return b[e].label}var E=h.map((function(e){var t="pathname://"+g.createUrl({locale:e,fullyQualified:!1});return{isNavLink:!0,label:p(e),to:t,target:"_self",autoAddBaseUrl:!1,className:e===v?"dropdown__link--active":"",style:{textTransform:"capitalize"}}})),k=[].concat(n,E,o),Z=t?"Languages":p(v);return r.createElement(l.Z,(0,c.Z)({},i,{href:"#",mobile:t,label:r.createElement("span",null,r.createElement(s,{style:{verticalAlign:"text-bottom",marginRight:5}}),r.createElement("span",null,Z)),items:k}))}var v=n(1036);function h(e){return e.mobile?null:r.createElement(v.Z,null)}var b=["type"],g={default:function(){return o.Z},localeDropdown:function(){return f},search:function(){return h},dropdown:function(){return l.Z},docsVersion:function(){return n(7250).Z},docsVersionDropdown:function(){return n(9308).Z},doc:function(){return n(6400).Z}};function p(e){var t=e.type,n=(0,a.Z)(e,b),o=function(e){var t=g[e];if(!t)throw new Error('No NavbarItem component found for type "'+e+'".');return t()}(function(e,t){return e&&"default"!==e?e:t?"dropdown":"default"}(t,void 0!==n.items));return r.createElement(o,n)}},2924:function(e,t,n){var a=n(7294).createContext(void 0);t.Z=a},9443:function(e,t,n){var a=(0,n(7294).createContext)(void 0);t.Z=a},7898:function(e,t,n){var a=n(7294),r=n(412),o=function(){return r.Z.canUseDOM?{scrollX:window.pageXOffset,scrollY:window.pageYOffset}:null};t.Z=function(e,t){void 0===t&&(t=[]);var n=(0,a.useRef)(o()),r=function(){var t=o();e&&e(t,n.current),n.current=t};(0,a.useEffect)((function(){var e={passive:!0};return r(),window.addEventListener("scroll",r,e),function(){return window.removeEventListener("scroll",r,e)}}),t)}},5350:function(e,t,n){var a=n(7294),r=n(2924);t.Z=function(){var e=(0,a.useContext)(r.Z);if(null==e)throw new Error('"useThemeContext" is used outside of "Layout" component. Please see https://docusaurus.io/docs/api/themes/configuration#usethemecontext.');return e}},1036:function(e,t,n){n.d(t,{Z:function(){return L}});var a=n(7462),r=n(3366),o=n(7294),l=n(3935),c=n(2263),i=n(5977),s=n(4996),u=n(6742),m=n(9105),d=n(6397);function f(){return o.createElement("svg",{width:"15",height:"15",className:"DocSearch-Control-Key-Icon"},o.createElement("path",{d:"M4.505 4.496h2M5.505 5.496v5M8.216 4.496l.055 5.993M10 7.5c.333.333.5.667.5 1v2M12.326 4.5v5.996M8.384 4.496c1.674 0 2.116 0 2.116 1.5s-.442 1.5-2.116 1.5M3.205 9.303c-.09.448-.277 1.21-1.241 1.203C1 10.5.5 9.513.5 8V7c0-1.57.5-2.5 1.464-2.494.964.006 1.134.598 1.24 1.342M12.553 10.5h1.953",strokeWidth:"1.2",stroke:"currentColor",fill:"none",strokeLinecap:"square"}))}var v=n(830);function h(){return(h=Object.assign||function(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var g="Ctrl";var p=o.forwardRef((function(e,t){var n=e.translations,a=void 0===n?{}:n,r=b(e,["translations"]),l=a.buttonText,c=void 0===l?"Search":l,i=a.buttonAriaLabel,s=void 0===i?"Search":i,u=(0,o.useMemo)((function(){return"undefined"!=typeof navigator?/(Mac|iPhone|iPod|iPad)/i.test(navigator.platform)?"\u2318":g:null}),[]);return o.createElement("button",h({type:"button",className:"DocSearch DocSearch-Button","aria-label":s},r,{ref:t}),o.createElement("span",{className:"DocSearch-Button-Container"},o.createElement(v.W,null),o.createElement("span",{className:"DocSearch-Button-Placeholder"},c)),o.createElement("span",{className:"DocSearch-Button-Keys"},null!==u&&o.createElement(o.Fragment,null,o.createElement("span",{className:"DocSearch-Button-Key"},u===g?o.createElement(f,null):u),o.createElement("span",{className:"DocSearch-Button-Key"},"K"))))})),E=n(907),k=n(3018);function Z(){var e=function(){var e=(0,c.Z)().i18n,t=(0,E._r)(),n=(0,E.WS)(),a=(0,k.Oh)(),r=[k.HX].concat(Object.keys(t).map((function(e){var r,o,l=(null==n||null==(r=n.activePlugin)?void 0:r.pluginId)===e?n.activeVersion:void 0,c=a[e],i=t[e].versions.find((function(e){return e.isLast})),s=null!=(o=null!=l?l:c)?o:i;return(0,k.os)(e,s.name)})));return{locale:e.currentLocale,tags:r}}();return["language:"+e.locale,e.tags.map((function(e){return"docusaurus_tag:"+e}))]}var w=n(4973),C="searchBox_1Doo",y=["contextualSearch"],_=null;function N(e){var t=e.hit,n=e.children;return o.createElement(u.Z,{to:t.url},n)}function S(e){var t=e.state,n=e.onClose,a=(0,d.Z)().generateSearchPageLink;return o.createElement(u.Z,{to:a(t.query),onClick:n},"See all ",t.context.nbHits," results")}function I(e){var t,u,d=e.contextualSearch,f=(0,r.Z)(e,y),v=(0,c.Z)().siteMetadata,h=Z(),b=null!=(t=null==(u=f.searchParameters)?void 0:u.facetFilters)?t:[],g=d?[].concat(h,b):b,E=Object.assign({},f.searchParameters,{facetFilters:g}),k=(0,s.C)().withBaseUrl,I=(0,i.k6)(),L=(0,o.useRef)(null),D=(0,o.useRef)(null),B=(0,o.useState)(!1),T=B[0],P=B[1],x=(0,o.useState)(null),M=x[0],A=x[1],R=(0,o.useCallback)((function(){return _?Promise.resolve():Promise.all([n.e(4300).then(n.bind(n,4300)),Promise.all([n.e(532),n.e(6945)]).then(n.bind(n,6945)),Promise.all([n.e(532),n.e(5256)]).then(n.bind(n,5256))]).then((function(e){var t=e[0].DocSearchModal;_=t}))}),[]),O=(0,o.useCallback)((function(){R().then((function(){L.current=document.createElement("div"),document.body.insertBefore(L.current,document.body.firstChild),P(!0)}))}),[R,P]),U=(0,o.useCallback)((function(){P(!1),L.current.remove()}),[P]),V=(0,o.useCallback)((function(e){R().then((function(){P(!0),A(e.key)}))}),[R,P,A]),W=(0,o.useRef)({navigate:function(e){var t=e.itemUrl;I.push(t)}}).current,H=(0,o.useRef)((function(e){return e.map((function(e){var t=document.createElement("a");return t.href=e.url,Object.assign({},e,{url:k(""+t.pathname+t.hash)})}))})).current,j=(0,o.useMemo)((function(){return function(e){return o.createElement(S,(0,a.Z)({},e,{onClose:U}))}}),[U]),z=(0,o.useCallback)((function(e){return e.addAlgoliaAgent("docusaurus",v.docusaurusVersion),e}),[v.docusaurusVersion]);!function(e){var t=e.isOpen,n=e.onOpen,a=e.onClose,r=e.onInput,l=e.searchButtonRef;o.useEffect((function(){function e(e){(27===e.keyCode&&t||"k"===e.key&&(e.metaKey||e.ctrlKey)||!function(e){var t=e.target,n=t.tagName;return t.isContentEditable||"INPUT"===n||"SELECT"===n||"TEXTAREA"===n}(e)&&"/"===e.key&&!t)&&(e.preventDefault(),t?a():document.body.classList.contains("DocSearch--active")||document.body.classList.contains("DocSearch--active")||n()),l&&l.current===document.activeElement&&r&&/[a-zA-Z0-9]/.test(String.fromCharCode(e.keyCode))&&r(e)}return window.addEventListener("keydown",e),function(){window.removeEventListener("keydown",e)}}),[t,n,a,r,l])}({isOpen:T,onOpen:O,onClose:U,onInput:V,searchButtonRef:D});var q=(0,w.I)({id:"theme.SearchBar.label",message:"Search",description:"The ARIA label and placeholder for search button"});return o.createElement(o.Fragment,null,o.createElement(m.Z,null,o.createElement("link",{rel:"preconnect",href:"https://"+f.appId+"-dsn.algolia.net",crossOrigin:"anonymous"})),o.createElement("div",{className:C},o.createElement(p,{onTouchStart:R,onFocus:R,onMouseOver:R,onClick:O,ref:D,translations:{buttonText:q,buttonAriaLabel:q}})),T&&(0,l.createPortal)(o.createElement(_,(0,a.Z)({onClose:U,initialScrollY:window.scrollY,initialQuery:M,navigator:W,transformItems:H,hitComponent:N,resultsFooterComponent:j,transformSearchClient:z},f,{searchParameters:E})),L.current))}var L=function(){var e=(0,c.Z)().siteConfig;return o.createElement(I,e.themeConfig.algolia)}},6397:function(e,t,n){var a=n(5977),r=n(412),o=n(2263);t.Z=function(){var e=(0,a.k6)(),t=(0,a.TH)(),n=(0,o.Z)().siteConfig,l=(n=void 0===n?{}:n).baseUrl;return{searchValue:r.Z.canUseDOM&&new URLSearchParams(t.search).get("q")||"",updateSearchPath:function(n){var a=new URLSearchParams(t.search);n?a.set("q",n):a.delete("q"),e.replace({search:a.toString()})},generateSearchPageLink:function(e){return l+"search?q="+encodeURIComponent(e)}}}}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/62d444b9.92bebb76.js b/handbook/build/assets/js/62d444b9.92bebb76.js new file mode 100644 index 00000000000..83ad723f090 --- /dev/null +++ b/handbook/build/assets/js/62d444b9.92bebb76.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[9285],{3905:function(e,t,r){r.d(t,{Zo:function(){return s},kt:function(){return f}});var n=r(7294);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var p=n.createContext({}),l=function(e){var t=n.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},s=function(e){var t=l(e.components);return n.createElement(p.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,p=e.parentName,s=c(e,["components","mdxType","originalType","parentName"]),m=l(r),f=o,d=m["".concat(p,".").concat(f)]||m[f]||u[f]||a;return r?n.createElement(d,i(i({ref:t},s),{},{components:r})):n.createElement(d,i({ref:t},s))}));function f(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=r.length,i=new Array(a);i[0]=m;var c={};for(var p in t)hasOwnProperty.call(t,p)&&(c[p]=t[p]);c.originalType=e,c.mdxType="string"==typeof e?e:o,i[1]=c;for(var l=2;l=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var p=n.createContext({}),l=function(e){var t=n.useContext(p),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},u=function(e){var t=l(e.components);return n.createElement(p.Provider,{value:t},e.children)},s={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},m=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,p=e.parentName,u=c(e,["components","mdxType","originalType","parentName"]),m=l(r),f=o,d=m["".concat(p,".").concat(f)]||m[f]||s[f]||a;return r?n.createElement(d,i(i({ref:t},u),{},{components:r})):n.createElement(d,i({ref:t},u))}));function f(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=r.length,i=new Array(a);i[0]=m;var c={};for(var p in t)hasOwnProperty.call(t,p)&&(c[p]=t[p]);c.originalType=e,c.mdxType="string"==typeof e?e:o,i[1]=c;for(var l=2;l=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var o=i.createContext({}),p=function(e){var n=i.useContext(o),t=n;return e&&(t="function"==typeof e?e(n):l(l({},n),e)),t},c=function(e){var n=p(e.components);return i.createElement(o.Provider,{value:n},e.children)},u={inlineCode:"code",wrapper:function(e){var n=e.children;return i.createElement(i.Fragment,{},n)}},d=i.forwardRef((function(e,n){var t=e.components,a=e.mdxType,r=e.originalType,o=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),d=p(t),m=a,k=d["".concat(o,".").concat(m)]||d[m]||u[m]||r;return t?i.createElement(k,l(l({ref:n},c),{},{components:t})):i.createElement(k,l({ref:n},c))}));function m(e,n){var t=arguments,a=n&&n.mdxType;if("string"==typeof e||a){var r=t.length,l=new Array(r);l[0]=d;var s={};for(var o in n)hasOwnProperty.call(n,o)&&(s[o]=n[o]);s.originalType=e,s.mdxType="string"==typeof e?e:a,l[1]=s;for(var p=2;pxUnit \u5355\u5143\u6d4b\u8bd5\u9879\u76ee",id:"3621-\u521b\u5efa-xunit-\u5355\u5143\u6d4b\u8bd5\u9879\u76ee",children:[]},{value:"36.2.2 \u7b2c\u4e00\u4e2a\u6d4b\u8bd5\u65b9\u6cd5",id:"3622-\u7b2c\u4e00\u4e2a\u6d4b\u8bd5\u65b9\u6cd5",children:[]},{value:"36.2.3 \u8fd0\u884c\u6d4b\u8bd5",id:"3623-\u8fd0\u884c\u6d4b\u8bd5",children:[]},{value:"36.2.4 \u591a\u4e2a\u6d4b\u8bd5\u65b9\u6cd5\u6d4b\u8bd5",id:"3624-\u591a\u4e2a\u6d4b\u8bd5\u65b9\u6cd5\u6d4b\u8bd5",children:[]},{value:"36.2.5 \u91cd\u590d/\u56de\u5f52\u6d4b\u8bd5",id:"3625-\u91cd\u590d\u56de\u5f52\u6d4b\u8bd5",children:[]}]},{value:"36.3 \u96c6\u6210 Furion \u5f3a\u5927\u529f\u80fd",id:"363-\u96c6\u6210-furion-\u5f3a\u5927\u529f\u80fd",children:[{value:"36.3.1 \u5b89\u88c5 Furion \u5305",id:"3631-\u5b89\u88c5-furion-\u5305",children:[]},{value:"36.3.2 \u6dfb\u52a0 Startup.cs \u7c7b",id:"3632-\u6dfb\u52a0-startupcs-\u7c7b",children:[]},{value:"36.3.3 \u4f7f\u7528 Furion \u5b8c\u6574\u529f\u80fd",id:"3633-\u4f7f\u7528-furion-\u5b8c\u6574\u529f\u80fd",children:[]}]},{value:"36.4 \u5e26\u53c2\u6570\u7684\u6d4b\u8bd5\u65b9\u6cd5",id:"364-\u5e26\u53c2\u6570\u7684\u6d4b\u8bd5\u65b9\u6cd5",children:[]},{value:"36.5 \u5982\u4f55\u8fdb\u884c\u4f9d\u8d56\u6ce8\u5165",id:"365-\u5982\u4f55\u8fdb\u884c\u4f9d\u8d56\u6ce8\u5165",children:[{value:"36.5.1 \u7f16\u5199\u4e00\u4e2a ICalcService \u63a5\u53e3\u53ca\u5b9e\u73b0\u7c7b",id:"3651-\u7f16\u5199\u4e00\u4e2a-icalcservice-\u63a5\u53e3\u53ca\u5b9e\u73b0\u7c7b",children:[]},{value:"36.5.2 \u5728\u6d4b\u8bd5\u7c7b\u4e2d\u8c03\u7528",id:"3652-\u5728\u6d4b\u8bd5\u7c7b\u4e2d\u8c03\u7528",children:[]},{value:"36.5.3 \u8f93\u51fa\u65e5\u5fd7",id:"3653-\u8f93\u51fa\u65e5\u5fd7",children:[]},{value:"36.5.4 \u5173\u4e8e\u4f9d\u8d56\u6ce8\u5165\u4f5c\u7528\u57df\u91ca\u653e\u95ee\u9898",id:"3654-\u5173\u4e8e\u4f9d\u8d56\u6ce8\u5165\u4f5c\u7528\u57df\u91ca\u653e\u95ee\u9898",children:[]},{value:"36.5.5 \u6d4b\u8bd5\u91ca\u653e\u8d44\u6e90",id:"3655-\u6d4b\u8bd5\u91ca\u653e\u8d44\u6e90",children:[]}]},{value:"36.6 Web \u96c6\u6210\u6d4b\u8bd5",id:"366-web-\u96c6\u6210\u6d4b\u8bd5",children:[]},{value:"36.7 Assert \u65ad\u8a00",id:"367-assert-\u65ad\u8a00",children:[]},{value:"36.8 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"368-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],d={toc:u};function m(e){var n=e.components,t=(0,a.Z)(e,s);return(0,r.kt)("wrapper",(0,i.Z)({},d,t,{components:n,mdxType:"MDXLayout"}),(0,r.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u89c6\u9891\u6559\u7a0b")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u3010",(0,r.kt)("a",{parentName:"p",href:"https://www.bilibili.com/video/BV1Qy4y1j7aZ/"},"\u5355\u5143\u6d4b\u8bd5\u89c6\u9891\u6559\u7a0b"),"\u3011"))),(0,r.kt)("h2",{id:"3611-\u5173\u4e8e\u5355\u5143\u6d4b\u8bd5"},"36.1.1 \u5173\u4e8e\u5355\u5143\u6d4b\u8bd5"),(0,r.kt)("p",null,"\u5f15\u7528\u81ea\u767e\u5ea6\u767e\u79d1\uff1a"),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"\u5355\u5143\u6d4b\u8bd5\uff08unit testing\uff09\uff0c\u662f\u6307\u5bf9\u8f6f\u4ef6\u4e2d\u7684\u6700\u5c0f\u53ef\u6d4b\u8bd5\u5355\u5143\u8fdb\u884c\u68c0\u67e5\u548c\u9a8c\u8bc1\u3002\u5bf9\u4e8e\u5355\u5143\u6d4b\u8bd5\u4e2d\u5355\u5143\u7684\u542b\u4e49\uff0c\u4e00\u822c\u6765\u8bf4\uff0c\u8981\u6839\u636e\u5b9e\u9645\u60c5\u51b5\u53bb\u5224\u5b9a\u5176\u5177\u4f53\u542b\u4e49\uff0c\u5982 C \u8bed\u8a00\u4e2d\u5355\u5143\u6307\u4e00\u4e2a\u51fd\u6570\uff0cJava \u91cc\u5355\u5143\u6307\u4e00\u4e2a\u7c7b\uff0c\u56fe\u5f62\u5316\u7684\u8f6f\u4ef6\u4e2d\u53ef\u4ee5\u6307\u4e00\u4e2a\u7a97\u53e3\u6216\u4e00\u4e2a\u83dc\u5355\u7b49\u3002\u603b\u7684\u6765\u8bf4\uff0c\u5355\u5143\u5c31\u662f\u4eba\u4e3a\u89c4\u5b9a\u7684\u6700\u5c0f\u7684\u88ab\u6d4b\u529f\u80fd\u6a21\u5757\u3002\u5355\u5143\u6d4b\u8bd5\u662f\u5728\u8f6f\u4ef6\u5f00\u53d1\u8fc7\u7a0b\u4e2d\u8981\u8fdb\u884c\u7684\u6700\u4f4e\u7ea7\u522b\u7684\u6d4b\u8bd5\u6d3b\u52a8\uff0c\u8f6f\u4ef6\u7684\u72ec\u7acb\u5355\u5143\u5c06\u5728\u4e0e\u7a0b\u5e8f\u7684\u5176\u4ed6\u90e8\u5206\u76f8\u9694\u79bb\u7684\u60c5\u51b5\u4e0b\u8fdb\u884c\u6d4b\u8bd5\u3002")),(0,r.kt)("h2",{id:"3612-\u5355\u5143\u6d4b\u8bd5\u597d\u5904"},"36.1.2 \u5355\u5143\u6d4b\u8bd5\u597d\u5904"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"\u6d88\u706d\u4f4e\u7ea7\u9519\u8bef"))),(0,r.kt)("p",null,"\u57fa\u672c\u7684\u5355\u5143\u6d4b\u8bd5\uff0c\u53ef\u4ee5\u5728\u7cfb\u7edf\u6d4b\u8bd5\u4e4b\u524d\uff0c\u628a\u5927\u90e8\u5206\u6bd4\u8f83\u4f4e\u7ea7\u7684\u9519\u8bef\u90fd\u6d88\u706d\u6389\uff0c\u51cf\u5c11\u7cfb\u7edf\u6d4b\u8bd5\u8fc7\u7a0b\u4e2d\u7684\u95ee\u9898\uff0c\u8fd9\u6837\u4e5f\u5c31\u51cf\u5c11\u4e86\u7cfb\u7edf\u6d4b\u8bd5\u4e2d\u5b9a\u4f4d\u548c\u89e3\u51b3\u95ee\u9898\u7684\u65f6\u95f4\u6210\u672c\u4e86\u3002"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"\u627e\u51fa\u6f5c\u5728\u7684 bug"))),(0,r.kt)("p",null,"\u67d0\u4e9b\u7c7b\u578b\u7684 bug\uff0c\u9760\u7cfb\u7edf\u6d4b\u8bd5\u662f\u5f88\u96be\u627e\u5230\u7684\u3002\u4f8b\u5982\u4e00\u4e9b\u4ee3\u7801\u5206\u652f\uff0c\u5e73\u65f6 99%\u7684\u573a\u666f\u57fa\u672c\u4e0a\u90fd\u8d70\u4e0d\u5230\uff0c\u4f46\u4e00\u65e6\u8d70\u5230\u4e86\uff0c\u5982\u679c\u6ca1\u6709\u63d0\u524d\u6d4b\u8bd5\u597d\uff0c\u90a3\u4e48\u53ef\u80fd\u5c31\u662f\u4e00\u4e2a\u707e\u96be\u3002"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"\u4e0a\u7ebf\u524d\u7684\u4fdd\u8bc1"))),(0,r.kt)("p",null,"\u52a0\u4e86\u65b0\u4ee3\u7801\uff0c\u4e0a\u7ebf\u524d\u8dd1\u4e00\u628a\u5355\u5143\u6d4b\u8bd5\uff0c\u90fd\u901a\u8fc7\uff0c\u8bf4\u660e\u4ee3\u7801\u53ef\u80fd\u6ca1\u6709\u5f71\u54cd\u5230\u4e4b\u524d\u7684\u903b\u8f91\uff0c\u8fd9\u6837\u4e0a\u7ebf\u4e5f\u6bd4\u8f83\u653e\u5fc3\u3002\u5982\u679c\u4e4b\u524d\u7684\u5355\u5143\u6d4b\u8bd5\u8dd1\u4e0d\u8fc7\uff0c\u90a3\u4e48\u5f88\u6709\u53ef\u80fd\u65b0\u7684\u4ee3\u7801\u6709\u6f5c\u5728\u7684\u95ee\u9898\uff0c\u8d76\u7d27\u4fee\u590d\u53bb\u5427\u3002"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"\u91cd\u6784\u4ee3\u7801\u7684\u673a\u4f1a"))),(0,r.kt)("p",null,"\u5199\u5355\u5143\u6d4b\u8bd5\u7684\u8fc7\u7a0b\u4e2d\uff0c\u4f60\u53ef\u80fd\u4f1a\u987a\u624b\u628a\u4e00\u4e9b code \u91cd\u6784\u4e86\uff0c\u4e3a\u4ec0\u4e48\uff1f\u4e3e\u4f8b\uff0c\u4e00\u4e9b\u957f\u5f97\u975e\u5e38\u50cf\u7684\u4ee3\u7801\uff0c\u5982\u679c\u6bcf\u6b21\u90fd\u8981\u5199\u4e00\u5806\u6d4b\u8bd5\u4ee3\u7801\u53bb\u6d4b\u540c\u6837\u7684 code\uff0c\u4f60\u4f1a\u4e0d\u4f1a\u6293\u72c2\uff1f\u4e0d\u6d4b\u5427\uff0c\u8986\u76d6\u7387\u53c8\u4e0a\u4e0d\u53bb\uff0c\u4e8e\u662f\u6211\u5c31\u4f1a\u60f3\u65b9\u8bbe\u6cd5\u628a\u5f85\u6d4b\u8bd5\u7684 code \u6539\u5f97\u5c3d\u91cf\u7684\u7cbe\u7b80\uff0c\u91cd\u590d\u4ee3\u7801\u51cf\u5c11\uff0c\u8fd9\u6837\u8986\u76d6\u7387\u4e0a\u53bb\u4e86\uff0c\u6d4b\u8bd5\u4e5f\u597d\u6d4b\u4e86\uff0c\u4ee3\u7801\u4e5f\u7b80\u6d01\u4e86\u3002\u5982\u679c\u6ca1\u6709\u5355\u5143\u6d4b\u8bd5\u548c\u8986\u76d6\u7387\u7684\u8981\u6c42\u7684\u8bdd\uff0c\u5766\u767d\u8bf4\u53ef\u80fd\u4e00\u6765\u81ea\u5df1\u4e0d\u4f1a\u53d1\u73b0\u8fd9\u4e9b\u91cd\u590d\u7684 code\uff0c\u53e6\u4e00\u65b9\u9762\u5373\u4f7f\u53d1\u73b0\u4e86\uff0c\u53ef\u80fd\u4e5f\u6ca1\u6709\u592a\u5927\u7684\u52a8\u529b\u53bb\u6539\u8fdb\u3002"),(0,r.kt)("p",null,"\u53e6\u5916\uff0c\u7531\u4e8e\u5355\u5143\u6d4b\u8bd5\u4e2d\uff0c\u4f60\u9700\u8981\u5c1d\u8bd5\u53bb\u8986\u76d6\u4e00\u4e9b\u5f02\u5e38\u5206\u652f\uff0c\u8fd9\u662f\u7cfb\u7edf\u6d4b\u8bd5\u5e38\u5e38\u8d70\u4e0d\u5230\u7684\u5730\u65b9\uff0c\u4e8e\u662f\u5c31\u4f1a\u5f15\u8d77\u4f60\u7684\u4e00\u4e9b\u601d\u8003\uff0c\u4f8b\u5982\u8fd9\u4e2a\u5f02\u5e38\u5206\u652f\u662f\u5426\u771f\u7684\u9700\u8981\uff1f\u662f\u5426\u771f\u7684\u4f1a\u53d1\u751f\uff1f\u5bf9\u4e8e\u4e00\u4e9b\u5b9e\u9645\u4e0a\u7edd\u5bf9\u4e0d\u4f1a\u51fa\u9519\u7684\u51fd\u6570\uff0c\u90a3\u4e48\u6211\u89c9\u5f97\u53ef\u80fd\u5f02\u5e38\u5206\u652f\u662f\u6ca1\u5fc5\u8981\u5b58\u5728\u7684\u3002"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"\u91cd\u65b0 review \u4ee3\u7801\u7684\u673a\u4f1a"))),(0,r.kt)("p",null,"\u5199 UT \u7684\u8fc7\u7a0b\u4e2d\uff0c\u6211\u603b\u662f\u4f1a\u597d\u597d\u770b\u54ea\u4e9b\u4ee3\u7801\u6267\u884c\u5230\u4e86\uff0c\u54ea\u4e9b\u4ee3\u7801\u6ca1\u6709\u6267\u884c\u5230\uff0c\u8fd9\u5176\u5b9e\u4e5f\u662f\u4e00\u4e2a review \u81ea\u5df1\u4ee3\u7801\u7684\u673a\u4f1a\uff0c\u6709\u4e9b\u65f6\u5019\uff0c\u5e76\u4e0d\u662f UT \u672c\u8eab\u5e2e\u6211\u627e\u5230 bug\uff0c\u800c\u662f\u56de\u5934 review \u81ea\u5df1\u4ee3\u7801\u7684\u65f6\u5019\u53d1\u73b0\u7684\u3002"),(0,r.kt)("h2",{id:"3613-\u5355\u5143\u6d4b\u8bd5\u7c7b\u578b"},"36.1.3 \u5355\u5143\u6d4b\u8bd5\u7c7b\u578b"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u57fa\u4e8e API \u63a5\u53e3\u6d4b\u8bd5\uff08\u767d\u76d2 + \u6d45\u5ea6\u9ed1\u76d2\u6d4b\u8bd5\uff09"),(0,r.kt)("li",{parentName:"ul"},"\u57fa\u4e8e\u9879\u76ee\u4ee3\u7801\u6d4b\u8bd5\uff08\u6df1\u5ea6\u9ed1\u76d2\u6d4b\u8bd5\uff09")),(0,r.kt)("h2",{id:"3614-\u4e3b\u6d41\u7684\u5355\u5143\u6d4b\u8bd5\u5e93"},"36.1.4 \u4e3b\u6d41\u7684\u5355\u5143\u6d4b\u8bd5\u5e93"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"xUnit"),"\uff08",(0,r.kt)("strong",{parentName:"li"},"\u6700\u6d41\u884c\u7684\u5e93\uff0c\u63a8\u8350"),"\uff09"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"NUnit")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"MSTest"))),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"\u5728\u672c\u7ae0\u8282\uff0c",(0,r.kt)("inlineCode",{parentName:"strong"},"Furion")," \u6846\u67b6\u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"strong"},"xUnit")," \u5e93\u8fdb\u884c\u5355\u5143\u6d4b\u8bd5\u3002")),(0,r.kt)("h2",{id:"362-\u7b2c\u4e00\u4e2a\u4f8b\u5b50"},"36.2 \u7b2c\u4e00\u4e2a\u4f8b\u5b50"),(0,r.kt)("h3",{id:"3621-\u521b\u5efa-xunit-\u5355\u5143\u6d4b\u8bd5\u9879\u76ee"},"36.2.1 \u521b\u5efa ",(0,r.kt)("inlineCode",{parentName:"h3"},"xUnit")," \u5355\u5143\u6d4b\u8bd5\u9879\u76ee"),(0,r.kt)("img",{src:(0,l.Z)("img/ut1.png")}),(0,r.kt)("h3",{id:"3622-\u7b2c\u4e00\u4e2a\u6d4b\u8bd5\u65b9\u6cd5"},"36.2.2 \u7b2c\u4e00\u4e2a\u6d4b\u8bd5\u65b9\u6cd5"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,7,10}","{1,7,10}":!0},"using Xunit;\n\nnamespace TestProject1\n{\n public class UnitTest1\n {\n [Fact]\n public void Test1()\n {\n Assert.Equal(2, 1 + 1);\n }\n }\n}\n")),(0,r.kt)("p",null,"\u5355\u5143\u6d4b\u8bd5\u5b9e\u9645\u4e0a\u662f\u901a\u8fc7\u666e\u901a\u7684\u7c7b\u7684\u65b9\u6cd5\u8fdb\u884c\u6a21\u5757\u529f\u80fd\u6d4b\u8bd5\uff0c\u5177\u4f53\u6d4b\u8bd5\u5219\u662f\u6807\u8bb0\u4e86 ",(0,r.kt)("inlineCode",{parentName:"p"},"[Fact]")," \u7279\u6027\u7684\u65b9\u6cd5\uff0c\u5728\u65b9\u6cd5\u4e2d\u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"Assert")," \u7c7b\u63d0\u4f9b\u7684\u9759\u6001\u65b9\u6cd5\u8fdb\u884c ",(0,r.kt)("inlineCode",{parentName:"p"},"\u65ad\u8a00"),"\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"\u65ad\u8a00")," \u6210\u529f\uff0c\u5219\u6d4b\u8bd5\u901a\u8fc7\uff0c\u5426\u5219\u6d4b\u8bd5\u4e0d\u901a\u8fc7\u3002"),(0,r.kt)("h3",{id:"3623-\u8fd0\u884c\u6d4b\u8bd5"},"36.2.3 \u8fd0\u884c\u6d4b\u8bd5"),(0,r.kt)("p",null,"\u5728\u5355\u5143\u6d4b\u8bd5\u9879\u76ee\u4e2d ",(0,r.kt)("inlineCode",{parentName:"p"},"\u53f3\u952e")," \u9009\u62e9 ",(0,r.kt)("inlineCode",{parentName:"p"},"\u8fd0\u884c\u6d4b\u8bd5")," \u5e76\u6253\u5f00 ",(0,r.kt)("inlineCode",{parentName:"p"},"\u6d4b\u8bd5\u8d44\u6e90\u7ba1\u7406\u5668")," \u5373\u53ef\u67e5\u770b\u6d4b\u8bd5\u7ed3\u679c\u3002"),(0,r.kt)("img",{src:(0,l.Z)("img/ut2.png")}),(0,r.kt)("img",{src:(0,l.Z)("img/ut3.png")}),(0,r.kt)("h3",{id:"3624-\u591a\u4e2a\u6d4b\u8bd5\u65b9\u6cd5\u6d4b\u8bd5"},"36.2.4 \u591a\u4e2a\u6d4b\u8bd5\u65b9\u6cd5\u6d4b\u8bd5"),(0,r.kt)("img",{src:(0,l.Z)("img/ut4.png")}),(0,r.kt)("h3",{id:"3625-\u91cd\u590d\u56de\u5f52\u6d4b\u8bd5"},"36.2.5 \u91cd\u590d/\u56de\u5f52\u6d4b\u8bd5"),(0,r.kt)("p",null,"\u540e\u7eed\u6dfb\u52a0\u66f4\u591a\u6d4b\u8bd5\u65b9\u6cd5\u53ea\u9700\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"\u6d4b\u8bd5\u8d44\u6e90\u7ba1\u7406\u5668")," \u70b9\u51fb ",(0,r.kt)("inlineCode",{parentName:"p"},"\u5728\u89c6\u56fe\u4e2d\u8fd0\u884c\u6240\u6709\u6d4b\u8bd5")," \u64ad\u653e\u6309\u94ae\u5373\u53ef\uff0c\u5982\u4e0b\u56fe"),(0,r.kt)("img",{src:(0,l.Z)("img/ut5.png")}),(0,r.kt)("h2",{id:"363-\u96c6\u6210-furion-\u5f3a\u5927\u529f\u80fd"},"36.3 \u96c6\u6210 ",(0,r.kt)("inlineCode",{parentName:"h2"},"Furion")," \u5f3a\u5927\u529f\u80fd"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u662f\u8de8\u5e73\u53f0\u3001\u8de8\u9879\u76ee\u7684\u5f00\u53d1\u6846\u67b6\uff0c\u652f\u6301\u4efb\u610f\u9879\u76ee\u7c7b\u578b\uff0c\u5305\u62ec\u5355\u5143\u6d4b\u8bd5\u9879\u76ee\u3002"),(0,r.kt)("h3",{id:"3631-\u5b89\u88c5-furion-\u5305"},"36.3.1 \u5b89\u88c5 ",(0,r.kt)("inlineCode",{parentName:"h3"},"Furion")," \u5305"),(0,r.kt)("p",null,"\u6253\u5f00 ",(0,r.kt)("inlineCode",{parentName:"p"},"Nuget")," \u7a0b\u5e8f\u5305\u63a7\u5236\u53f0\uff0c\u5b89\u88c5 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u5305"),(0,r.kt)("img",{src:(0,l.Z)("img/ut6.png")}),(0,r.kt)("h3",{id:"3632-\u6dfb\u52a0-startupcs-\u7c7b"},"36.3.2 \u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"h3"},"Startup.cs")," \u7c7b"),(0,r.kt)("p",null,"\u5728\u5355\u5143\u6d4b\u8bd5\u9879\u76ee\u6839\u76ee\u5f55\u4e0b\u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"p"},"Startup.cs")," \u7c7b\uff0c\u5e76\u5199\u4e0b\u4ee5\u4e0b\u4ee3\u7801\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{8,16,18,21-26}","{8,16,18,21-26}":!0},'using Furion;\nusing Microsoft.Extensions.DependencyInjection;\nusing Xunit;\nusing Xunit.Abstractions;\nusing Xunit.Sdk;\n\n// \u914d\u7f6e\u542f\u52a8\u7c7b\u7c7b\u578b\uff0c\u7b2c\u4e00\u4e2a\u53c2\u6570\u662f Startup \u7c7b\u5b8c\u6574\u9650\u5b9a\u540d\uff0c\u7b2c\u4e8c\u4e2a\u53c2\u6570\u662f\u5f53\u524d\u9879\u76ee\u7a0b\u5e8f\u96c6\u540d\u79f0\n[assembly: TestFramework("TestProject1.Startup", "TestProject1")]\n\nnamespace TestProject1\n{\n /// \n /// \u5355\u5143\u6d4b\u8bd5\u542f\u52a8\u7c7b\n /// \n /// \u5728\u8fd9\u91cc\u53ef\u4ee5\u4f7f\u7528 Furion \u51e0\u4e4e\u6240\u6709\u529f\u80fd\n public sealed class Startup : XunitTestFramework\n {\n public Startup(IMessageSink messageSink) : base(messageSink)\n {\n // \u521d\u59cb\u5316 IServiceCollection \u5bf9\u8c61\n var services = Inject.Create();\n\n // \u5728\u8fd9\u91cc\u53ef\u4ee5\u548c .NET Core \u4e00\u6837\u6ce8\u518c\u670d\u52a1\u4e86\uff01\uff01\uff01\uff01\uff01\uff01\uff01\uff01\uff01\uff01\uff01\uff01\uff01\uff01\n\n // \u6784\u5efa ServiceProvider \u5bf9\u8c61\n services.Build();\n }\n }\n}\n')),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u6ce8\u610f")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u4ee5\u4e0b\u4ee3\u7801\u662f\u5fc5\u987b\u7684\uff01\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"TestFramework")," \u7b2c\u4e00\u4e2a\u53c2\u6570\u662f ",(0,r.kt)("inlineCode",{parentName:"p"},"\u7c7b\u5b8c\u5168\u9650\u5b9a\u540d\uff08\u542b\u547d\u540d\u7a7a\u95f4\uff09"),"\uff0c\u7b2c\u4e8c\u4e2a\u53c2\u6570\u662f ",(0,r.kt)("inlineCode",{parentName:"p"},"\u5355\u5143\u6d4b\u8bd5\u7a0b\u5e8f\u96c6\u540d\u79f0")),(0,r.kt)("pre",{parentName:"div"},(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'[assembly: TestFramework("TestProject1.Startup", "TestProject1")]\n')))),(0,r.kt)("h3",{id:"3633-\u4f7f\u7528-furion-\u5b8c\u6574\u529f\u80fd"},"36.3.3 \u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"h3"},"Furion")," \u5b8c\u6574\u529f\u80fd"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u662f\u8de8\u5e73\u53f0\u3001\u8de8\u9879\u76ee\u7684\u5f00\u53d1\u6846\u67b6\uff0c\u4e0b\u9762\u5728\u5355\u5143\u6d4b\u8bd5\u4e2d\u6f14\u793a ",(0,r.kt)("inlineCode",{parentName:"p"},"\u8fdc\u7a0b\u8bf7\u6c42")," \u5e76\u8bf7\u6c42 ",(0,r.kt)("inlineCode",{parentName:"p"},"https://www.baidu.com")," \u6570\u636e\uff0c\u5e76\u6d4b\u8bd5\u662f\u5426\u8bf7\u6c42\u6210\u529f\u3002"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u5728 ",(0,r.kt)("inlineCode",{parentName:"li"},"Startup.cs")," \u4e2d\u6ce8\u518c ",(0,r.kt)("inlineCode",{parentName:"li"},"\u8fdc\u7a0b\u8bf7\u6c42\u670d\u52a1"))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{7}","{7}":!0},"public Startup(IMessageSink messageSink) : base(messageSink)\n{\n // \u521d\u59cb\u5316 IServiceCollection \u5bf9\u8c61\n var services = Inject.Create();\n\n // \u5728\u8fd9\u91cc\u53ef\u4ee5\u548c .NET Core \u4e00\u6837\u6ce8\u518c\u670d\u52a1\u4e86\uff01\uff01\uff01\uff01\uff01\uff01\uff01\uff01\uff01\uff01\uff01\uff01\uff01\uff01\n services.AddRemoteRequest();\n\n // \u6784\u5efa ServiceProvider \u5bf9\u8c61\n services.Build();\n}\n")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u7f16\u5199\u6d4b\u8bd5\u65b9\u6cd5")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'[Fact]\npublic async Task \u6d4b\u8bd5\u8bf7\u6c42\u767e\u5ea6()\n{\n var rep = await "https://www.baidu.com".GetAsync();\n Assert.True(rep.IsSuccessStatusCode);\n}\n')),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u67e5\u770b\u6d4b\u8bd5\u7ed3\u679c")),(0,r.kt)("img",{src:(0,l.Z)("img/ut7.png")}),(0,r.kt)("p",null,"\u5f88\u795e\u5947\u5427\uff01",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u652f\u6301\u4efb\u4f55\u9879\u76ee\u7c7b\u578b\uff0c\u4efb\u4f55\u5e73\u53f0\u4f7f\u7528\u3002"),(0,r.kt)("h2",{id:"364-\u5e26\u53c2\u6570\u7684\u6d4b\u8bd5\u65b9\u6cd5"},"36.4 \u5e26\u53c2\u6570\u7684\u6d4b\u8bd5\u65b9\u6cd5"),(0,r.kt)("p",null,"\u4e0a\u9762\u4f8b\u5b50\u4e2d\uff0c\u6d4b\u8bd5\u65b9\u6cd5\u90fd\u662f\u6ca1\u6709\u53c2\u6570\u7684\uff0c\u6709\u65f6\u5019\u9700\u8981\u540c\u4e00\u4e2a\u65b9\u6cd5\u8f93\u5165\u591a\u4e2a\u4e0d\u540c\u7684\u503c\u8fdb\u884c\u6d4b\u8bd5\uff0c\u8fd9\u65f6\u5019\u5c31\u9700\u8981\u7528\u5230 ",(0,r.kt)("inlineCode",{parentName:"p"},"[Theory]")," \u548c ",(0,r.kt)("inlineCode",{parentName:"p"},"[InlineData]")," \u7279\u6027\u4e86\u3002"),(0,r.kt)("p",null,"\u5982\uff0c\u4e0b\u9762\u6d4b\u8bd5\u4e24\u4e2a\u6570\u7684\u548c\u662f ",(0,r.kt)("inlineCode",{parentName:"p"},"\u5947\u6570"),"\uff0c\u6d4b\u8bd5\u4ee3\u7801\u5982\u4e0b\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1-4}","{1-4}":!0},"[Theory]\n[InlineData(1, 2)]\n[InlineData(3, 4)]\n[InlineData(5, 7)]\npublic void \u5e26\u53c2\u6570\u6d4b\u8bd5(int i, int j)\n{\n Assert.NotEqual(0, (i + j) % 2);\n}\n")),(0,r.kt)("p",null,"\u6d4b\u8bd5\u7ed3\u679c\uff1a"),(0,r.kt)("img",{src:(0,l.Z)("img/ut8.png")}),(0,r.kt)("h2",{id:"365-\u5982\u4f55\u8fdb\u884c\u4f9d\u8d56\u6ce8\u5165"},"36.5 \u5982\u4f55\u8fdb\u884c\u4f9d\u8d56\u6ce8\u5165"),(0,r.kt)("p",null,"\u6709\u4e9b\u65f6\u5019\uff0c\u6211\u4eec\u9700\u8981\u6d4b\u8bd5\u67d0\u63a5\u53e3\uff0c\u6216\u8005\u8fdb\u884c\u4f9d\u8d56\u6ce8\u5165\u65b9\u5f0f\u89e3\u6790\u670d\u52a1\u5e76\u8c03\u7528\uff0c\u8fd9\u65f6\u5019\u5c31\u9700\u8981\u7528\u5230 ",(0,r.kt)("inlineCode",{parentName:"p"},"App.GetService<>()")," \u9759\u6001\u7c7b\u65b9\u5f0f\u4e86\uff0c\u5982\uff1a"),(0,r.kt)("h3",{id:"3651-\u7f16\u5199\u4e00\u4e2a-icalcservice-\u63a5\u53e3\u53ca\u5b9e\u73b0\u7c7b"},"36.5.1 \u7f16\u5199\u4e00\u4e2a ",(0,r.kt)("inlineCode",{parentName:"h3"},"ICalcService")," \u63a5\u53e3\u53ca\u5b9e\u73b0\u7c7b"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{3,8}","{3,8}":!0},"namespace TestProject1.Services\n{\n public interface ICalcService\n {\n int Plus(int i, int j);\n }\n\n public class CalcService : ICalcService, ITransient\n {\n public int Plus(int i, int j)\n {\n return i + j;\n }\n }\n}\n")),(0,r.kt)("h3",{id:"3652-\u5728\u6d4b\u8bd5\u7c7b\u4e2d\u8c03\u7528"},"36.5.2 \u5728\u6d4b\u8bd5\u7c7b\u4e2d\u8c03\u7528"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{9,16,22}","{9,16,22}":!0},"using Furion;\nusing TestProject1.Services;\nusing Xunit;\n\nnamespace TestProject1\n{\n public class UnitTest1\n {\n private readonly ICalcService _calcService;\n\n /// \n /// \u8fd9\u91cc\u4e0d\u80fd\u901a\u8fc7\u6784\u9020\u51fd\u6570\u6ce8\u5165\uff0c\u800c\u662f\u91c7\u7528 App.GetService<> \u65b9\u5f0f\n /// \n public UnitTest1()\n {\n _calcService = App.GetService();\n }\n\n [Fact]\n public void \u6d4b\u8bd5\u4e24\u4e2a\u6570\u7684\u548c()\n {\n Assert.Equal(3, _calcService.Plus(1, 2));\n }\n }\n}\n")),(0,r.kt)("img",{src:(0,l.Z)("img/ut9.png")}),(0,r.kt)("h3",{id:"3653-\u8f93\u51fa\u65e5\u5fd7"},"36.5.3 \u8f93\u51fa\u65e5\u5fd7"),(0,r.kt)("p",null,"\u5982\u679c\u5728\u5355\u5143\u6d4b\u8bd5\u4e2d\u60f3\u8f93\u51fa\u65e5\u5fd7\uff0c\u53ea\u9700\u8981\u5728\u6784\u9020\u51fd\u6570\u6ce8\u5165 ",(0,r.kt)("inlineCode",{parentName:"p"},"ITestOutputHelper")," \u5373\u53ef\uff0c\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{2,10,12,18}","{2,10,12,18}":!0},'using Xunit;\nusing Xunit.Abstractions;\n\nnamespace TestProject1\n{\n public class UnitTest1\n {\n private readonly ITestOutputHelper Output;\n\n public SampleTests(ITestOutputHelper tempOutput)\n {\n Output = tempOutput;\n }\n\n [Fact]\n public void Test_String_Equal()\n {\n Output.WriteLine("\u54c8\u54c8\u54c8\u54c8\uff0c\u6211\u662f Furion");\n Assert.NotEqual("Furion", "Fur");\n }\n }\n}\n')),(0,r.kt)("img",{src:(0,l.Z)("img/un3.png")}),(0,r.kt)("h3",{id:"3654-\u5173\u4e8e\u4f9d\u8d56\u6ce8\u5165\u4f5c\u7528\u57df\u91ca\u653e\u95ee\u9898"},"36.5.4 \u5173\u4e8e\u4f9d\u8d56\u6ce8\u5165\u4f5c\u7528\u57df\u91ca\u653e\u95ee\u9898"),(0,r.kt)("p",null,"\u6709\u65f6\u5019\u6211\u4eec\u9700\u8981\u5bf9 ",(0,r.kt)("inlineCode",{parentName:"p"},"\u975e\u6258\u7ba1\u8d44\u6e90")," \u6216\u9700\u8981\u624b\u52a8\u91ca\u653e\u7684\u5bf9\u8c61\u8fdb\u884c\u670d\u52a1\u89e3\u6790\u5e76\u6d4b\u8bd5\uff0c\u8fd9\u65f6\u5019\u9700\u8981\u6784\u5efa\u4f5c\u7528\u57df\u8fdb\u884c\u6d4b\u8bd5\uff0c\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"// \u652f\u6301\u5f02\u6b65\u65b9\u6cd5\u6d4b\u8bd5\n[Fact]\npublic void \u6d4b\u8bd5\u6570\u636e\u5e93()\n{\n Scoped.Create((f,s) => {\n var otherService = s.ServiceProvider.GetService();\n var repository = Db.GetRepository(s.ServiceProvider);\n\n var isTrue = repository.Any(u => u.Id > 10);\n Assert.True(isTrue);\n });\n}\n")),(0,r.kt)("h3",{id:"3655-\u6d4b\u8bd5\u91ca\u653e\u8d44\u6e90"},"36.5.5 \u6d4b\u8bd5\u91ca\u653e\u8d44\u6e90"),(0,r.kt)("p",null,"\u6709\u65f6\u5019\uff0c\u6211\u4eec\u9700\u8981\u6d4b\u8bd5\u6210\u529f\u540e\u91ca\u653e\u4e00\u4e9b\u4e0d\u80fd\u53ca\u65f6\u91ca\u653e\u7684\u5bf9\u8c61\uff0c\u8fd9\u65f6\uff0c\u53ea\u9700\u8981\u5b9e\u73b0 ",(0,r.kt)("inlineCode",{parentName:"p"},"IDisposable")," \u63a5\u53e3\u5373\u53ef\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{6,14-17}","{6,14-17}":!0},'using System;\nusing Xunit;\n\nnamespace TestProject1\n{\n public class UnitTest1 : IDisposable\n {\n [Fact]\n public void Test_String_Equal()\n {\n Assert.NotEqual("Furion", "Fur");\n }\n\n public void Dispose()\n {\n // \u91ca\u653e\u4f60\u7684\u5bf9\u8c61\n }\n }\n}\n')),(0,r.kt)("h2",{id:"366-web-\u96c6\u6210\u6d4b\u8bd5"},"36.6 ",(0,r.kt)("inlineCode",{parentName:"h2"},"Web")," \u96c6\u6210\u6d4b\u8bd5"),(0,r.kt)("p",null,"\u6709\u65f6\u5019\uff0c\u6211\u4eec\u9700\u8981\u5728\u6ca1\u6709 ",(0,r.kt)("inlineCode",{parentName:"p"},"IIS")," \u670d\u52a1\u5668\u6216\u4efb\u4f55\u5916\u90e8\u4e8b\u7269\u7684\u60c5\u51b5\u4e0b\u6d4b\u8bd5\u5b8c\u6574\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"Web")," \u5e94\u7528\u7a0b\u5e8f\uff0c\u8fd9\u65f6\u5019\uff0c\u6211\u4eec\u53ea\u9700\u8981\u6267\u884c\u4ee5\u4e0b\u6b65\u9aa4\u5373\u53ef\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"\u5355\u5143\u6d4b\u8bd5\u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"strong"},"Web")," \u542f\u52a8\u5c42\u5f15\u7528")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"\u5355\u5143\u6d4b\u8bd5\u5c42\u5b89\u88c5 ",(0,r.kt)("inlineCode",{parentName:"strong"},"Microsoft.AspNetCore.TestHost")," \u5305")),(0,r.kt)("li",{parentName:"ul"},"\u7f16\u5199\u6d4b\u8bd5\u4ee3\u7801")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{15-18,20-21}","{15-18,20-21}":!0},'using Microsoft.AspNetCore;\nusing Microsoft.AspNetCore.Hosting;\nusing Microsoft.AspNetCore.TestHost;\nusing Microsoft.Extensions.Hosting;\nusing WebApplication1;\nusing Xunit;\n\nnamespace TestProject1\n{\n public class UnitTest1\n {\n [Fact]\n public async Task Test_Web()\n {\n // \u521b\u5efa\u4e00\u4e2a\u6d4b\u8bd5\u670d\u52a1\n using var testServer = new TestServer(WebHost.CreateDefaultBuilder()\n .Inject()\n .UseStartup()); // \u8fd9\u91cc\u7684 Startup \u5c31\u662f\u4f60 Web \u5c42\u7684 Startup\n\n // \u521b\u5efa\u4e00\u4e2a HttpClient \u5ba2\u6237\u7aef\n using var httpClient = testServer.CreateClient();\n\n // \u6d4b\u8bd5 Api\n var result = await httpClient.GetStringAsync("/api/user/1");\n Assert.AreEqual("Furion", result.Name);\n }\n }\n}\n')),(0,r.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u5c0f\u77e5\u8bc6")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u8fd9\u79cd\u65b9\u5f0f\u7684\u597d\u5904\u5c31\u662f\u65e0\u9700\u5728\u542f\u52a8\u4e2d\u8c03\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"Inject.Create()")," \u521d\u59cb\u5316\uff0c\u6bcf\u4e00\u4e2a\u6d4b\u8bd5\u65b9\u6cd5\u90fd\u6709\u72ec\u7acb\u7684\u751f\u547d\u5468\u671f\uff0c\u4e0d\u4f1a\u6c61\u67d3\u5168\u5c40\u3002"))),(0,r.kt)("h2",{id:"367-assert-\u65ad\u8a00"},"36.7 ",(0,r.kt)("inlineCode",{parentName:"h2"},"Assert")," \u65ad\u8a00"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Assert")," \u662f\u5355\u5143\u6d4b\u8bd5\u5224\u5b9a\u6210\u529f\u7684\u4f9d\u636e\uff0c\u901a\u5e38\u7b2c\u4e00\u4e2a\u53c2\u6570\u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"\u671f\u671b\u503c"),"\uff0c\u7b2c\u4e8c\u4e2a\u53c2\u6570\u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"\u5b9e\u9645\u503c"),"\uff0c\u5bf9\u6bd4\u8fd9\u4e24\u4e2a\u503c\u662f\u5426\u4e00\u81f4\u5373\u53ef\u5224\u65ad\u6210\u529f\u4e0e\u5426\u3002\u8be6\u7ec6\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"Assert")," \u9759\u6001\u65b9\u6cd5\u53ef\u67e5\u9605\u5b98\u65b9\u5e93 ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/xunit/assert.xunit"},"Assert \u65b9\u6cd5")),(0,r.kt)("h2",{id:"368-\u53cd\u9988\u4e0e\u5efa\u8bae"},"36.8 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,r.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))),(0,r.kt)("hr",null),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e86\u89e3\u66f4\u591a")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u60f3\u4e86\u89e3\u66f4\u591a ",(0,r.kt)("inlineCode",{parentName:"p"},"\u5355\u5143\u6d4b\u8bd5")," \u77e5\u8bc6\u53ef\u67e5\u9605 ",(0,r.kt)("a",{parentName:"p",href:"https://docs.microsoft.com/zh-cn/dotnet/core/testing/"},"\u5728 .NET \u4e2d\u6d4b\u8bd5")," \u7ae0\u8282\u3002"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/633e39ed.7f5159c2.js b/handbook/build/assets/js/633e39ed.7f5159c2.js new file mode 100644 index 00000000000..8d6e8407dd3 --- /dev/null +++ b/handbook/build/assets/js/633e39ed.7f5159c2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[519],{3905:function(e,n,t){t.d(n,{Zo:function(){return c},kt:function(){return m}});var i=t(7294);function a(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function r(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);n&&(i=i.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,i)}return t}function l(e){for(var n=1;n=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var o=i.createContext({}),p=function(e){var n=i.useContext(o),t=n;return e&&(t="function"==typeof e?e(n):l(l({},n),e)),t},c=function(e){var n=p(e.components);return i.createElement(o.Provider,{value:n},e.children)},u={inlineCode:"code",wrapper:function(e){var n=e.children;return i.createElement(i.Fragment,{},n)}},d=i.forwardRef((function(e,n){var t=e.components,a=e.mdxType,r=e.originalType,o=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),d=p(t),m=a,k=d["".concat(o,".").concat(m)]||d[m]||u[m]||r;return t?i.createElement(k,l(l({ref:n},c),{},{components:t})):i.createElement(k,l({ref:n},c))}));function m(e,n){var t=arguments,a=n&&n.mdxType;if("string"==typeof e||a){var r=t.length,l=new Array(r);l[0]=d;var s={};for(var o in n)hasOwnProperty.call(n,o)&&(s[o]=n[o]);s.originalType=e,s.mdxType="string"==typeof e?e:a,l[1]=s;for(var p=2;pxUnit \u5355\u5143\u6d4b\u8bd5\u9879\u76ee",id:"3621-\u521b\u5efa-xunit-\u5355\u5143\u6d4b\u8bd5\u9879\u76ee",children:[]},{value:"36.2.2 \u7b2c\u4e00\u4e2a\u6d4b\u8bd5\u65b9\u6cd5",id:"3622-\u7b2c\u4e00\u4e2a\u6d4b\u8bd5\u65b9\u6cd5",children:[]},{value:"36.2.3 \u8fd0\u884c\u6d4b\u8bd5",id:"3623-\u8fd0\u884c\u6d4b\u8bd5",children:[]},{value:"36.2.4 \u591a\u4e2a\u6d4b\u8bd5\u65b9\u6cd5\u6d4b\u8bd5",id:"3624-\u591a\u4e2a\u6d4b\u8bd5\u65b9\u6cd5\u6d4b\u8bd5",children:[]},{value:"36.2.5 \u91cd\u590d/\u56de\u5f52\u6d4b\u8bd5",id:"3625-\u91cd\u590d\u56de\u5f52\u6d4b\u8bd5",children:[]}]},{value:"36.3 \u96c6\u6210 Furion \u5f3a\u5927\u529f\u80fd",id:"363-\u96c6\u6210-furion-\u5f3a\u5927\u529f\u80fd",children:[{value:"36.3.1 \u5b89\u88c5 Furion \u5305",id:"3631-\u5b89\u88c5-furion-\u5305",children:[]},{value:"36.3.2 \u6dfb\u52a0 Startup.cs \u7c7b",id:"3632-\u6dfb\u52a0-startupcs-\u7c7b",children:[]},{value:"36.3.3 \u4f7f\u7528 Furion \u5b8c\u6574\u529f\u80fd",id:"3633-\u4f7f\u7528-furion-\u5b8c\u6574\u529f\u80fd",children:[]}]},{value:"36.4 \u5e26\u53c2\u6570\u7684\u6d4b\u8bd5\u65b9\u6cd5",id:"364-\u5e26\u53c2\u6570\u7684\u6d4b\u8bd5\u65b9\u6cd5",children:[]},{value:"36.5 \u5982\u4f55\u8fdb\u884c\u4f9d\u8d56\u6ce8\u5165",id:"365-\u5982\u4f55\u8fdb\u884c\u4f9d\u8d56\u6ce8\u5165",children:[{value:"36.5.1 \u7f16\u5199\u4e00\u4e2a ICalcService \u63a5\u53e3\u53ca\u5b9e\u73b0\u7c7b",id:"3651-\u7f16\u5199\u4e00\u4e2a-icalcservice-\u63a5\u53e3\u53ca\u5b9e\u73b0\u7c7b",children:[]},{value:"36.5.2 \u5728\u6d4b\u8bd5\u7c7b\u4e2d\u8c03\u7528",id:"3652-\u5728\u6d4b\u8bd5\u7c7b\u4e2d\u8c03\u7528",children:[]},{value:"36.5.3 \u8f93\u51fa\u65e5\u5fd7",id:"3653-\u8f93\u51fa\u65e5\u5fd7",children:[]},{value:"36.5.4 \u5173\u4e8e\u4f9d\u8d56\u6ce8\u5165\u4f5c\u7528\u57df\u91ca\u653e\u95ee\u9898",id:"3654-\u5173\u4e8e\u4f9d\u8d56\u6ce8\u5165\u4f5c\u7528\u57df\u91ca\u653e\u95ee\u9898",children:[]},{value:"36.5.5 \u6d4b\u8bd5\u91ca\u653e\u8d44\u6e90",id:"3655-\u6d4b\u8bd5\u91ca\u653e\u8d44\u6e90",children:[]}]},{value:"36.6 Web \u96c6\u6210\u6d4b\u8bd5",id:"366-web-\u96c6\u6210\u6d4b\u8bd5",children:[]},{value:"36.7 Assert \u65ad\u8a00",id:"367-assert-\u65ad\u8a00",children:[]},{value:"36.8 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"368-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],d={toc:u};function m(e){var n=e.components,t=(0,a.Z)(e,s);return(0,r.kt)("wrapper",(0,i.Z)({},d,t,{components:n,mdxType:"MDXLayout"}),(0,r.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u89c6\u9891\u6559\u7a0b")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u3010",(0,r.kt)("a",{parentName:"p",href:"https://www.bilibili.com/video/BV1Qy4y1j7aZ/"},"\u5355\u5143\u6d4b\u8bd5\u89c6\u9891\u6559\u7a0b"),"\u3011"))),(0,r.kt)("h2",{id:"3611-\u5173\u4e8e\u5355\u5143\u6d4b\u8bd5"},"36.1.1 \u5173\u4e8e\u5355\u5143\u6d4b\u8bd5"),(0,r.kt)("p",null,"\u5f15\u7528\u81ea\u767e\u5ea6\u767e\u79d1\uff1a"),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"\u5355\u5143\u6d4b\u8bd5\uff08unit testing\uff09\uff0c\u662f\u6307\u5bf9\u8f6f\u4ef6\u4e2d\u7684\u6700\u5c0f\u53ef\u6d4b\u8bd5\u5355\u5143\u8fdb\u884c\u68c0\u67e5\u548c\u9a8c\u8bc1\u3002\u5bf9\u4e8e\u5355\u5143\u6d4b\u8bd5\u4e2d\u5355\u5143\u7684\u542b\u4e49\uff0c\u4e00\u822c\u6765\u8bf4\uff0c\u8981\u6839\u636e\u5b9e\u9645\u60c5\u51b5\u53bb\u5224\u5b9a\u5176\u5177\u4f53\u542b\u4e49\uff0c\u5982 C \u8bed\u8a00\u4e2d\u5355\u5143\u6307\u4e00\u4e2a\u51fd\u6570\uff0cJava \u91cc\u5355\u5143\u6307\u4e00\u4e2a\u7c7b\uff0c\u56fe\u5f62\u5316\u7684\u8f6f\u4ef6\u4e2d\u53ef\u4ee5\u6307\u4e00\u4e2a\u7a97\u53e3\u6216\u4e00\u4e2a\u83dc\u5355\u7b49\u3002\u603b\u7684\u6765\u8bf4\uff0c\u5355\u5143\u5c31\u662f\u4eba\u4e3a\u89c4\u5b9a\u7684\u6700\u5c0f\u7684\u88ab\u6d4b\u529f\u80fd\u6a21\u5757\u3002\u5355\u5143\u6d4b\u8bd5\u662f\u5728\u8f6f\u4ef6\u5f00\u53d1\u8fc7\u7a0b\u4e2d\u8981\u8fdb\u884c\u7684\u6700\u4f4e\u7ea7\u522b\u7684\u6d4b\u8bd5\u6d3b\u52a8\uff0c\u8f6f\u4ef6\u7684\u72ec\u7acb\u5355\u5143\u5c06\u5728\u4e0e\u7a0b\u5e8f\u7684\u5176\u4ed6\u90e8\u5206\u76f8\u9694\u79bb\u7684\u60c5\u51b5\u4e0b\u8fdb\u884c\u6d4b\u8bd5\u3002")),(0,r.kt)("h2",{id:"3612-\u5355\u5143\u6d4b\u8bd5\u597d\u5904"},"36.1.2 \u5355\u5143\u6d4b\u8bd5\u597d\u5904"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"\u6d88\u706d\u4f4e\u7ea7\u9519\u8bef"))),(0,r.kt)("p",null,"\u57fa\u672c\u7684\u5355\u5143\u6d4b\u8bd5\uff0c\u53ef\u4ee5\u5728\u7cfb\u7edf\u6d4b\u8bd5\u4e4b\u524d\uff0c\u628a\u5927\u90e8\u5206\u6bd4\u8f83\u4f4e\u7ea7\u7684\u9519\u8bef\u90fd\u6d88\u706d\u6389\uff0c\u51cf\u5c11\u7cfb\u7edf\u6d4b\u8bd5\u8fc7\u7a0b\u4e2d\u7684\u95ee\u9898\uff0c\u8fd9\u6837\u4e5f\u5c31\u51cf\u5c11\u4e86\u7cfb\u7edf\u6d4b\u8bd5\u4e2d\u5b9a\u4f4d\u548c\u89e3\u51b3\u95ee\u9898\u7684\u65f6\u95f4\u6210\u672c\u4e86\u3002"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"\u627e\u51fa\u6f5c\u5728\u7684 bug"))),(0,r.kt)("p",null,"\u67d0\u4e9b\u7c7b\u578b\u7684 bug\uff0c\u9760\u7cfb\u7edf\u6d4b\u8bd5\u662f\u5f88\u96be\u627e\u5230\u7684\u3002\u4f8b\u5982\u4e00\u4e9b\u4ee3\u7801\u5206\u652f\uff0c\u5e73\u65f6 99%\u7684\u573a\u666f\u57fa\u672c\u4e0a\u90fd\u8d70\u4e0d\u5230\uff0c\u4f46\u4e00\u65e6\u8d70\u5230\u4e86\uff0c\u5982\u679c\u6ca1\u6709\u63d0\u524d\u6d4b\u8bd5\u597d\uff0c\u90a3\u4e48\u53ef\u80fd\u5c31\u662f\u4e00\u4e2a\u707e\u96be\u3002"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"\u4e0a\u7ebf\u524d\u7684\u4fdd\u8bc1"))),(0,r.kt)("p",null,"\u52a0\u4e86\u65b0\u4ee3\u7801\uff0c\u4e0a\u7ebf\u524d\u8dd1\u4e00\u628a\u5355\u5143\u6d4b\u8bd5\uff0c\u90fd\u901a\u8fc7\uff0c\u8bf4\u660e\u4ee3\u7801\u53ef\u80fd\u6ca1\u6709\u5f71\u54cd\u5230\u4e4b\u524d\u7684\u903b\u8f91\uff0c\u8fd9\u6837\u4e0a\u7ebf\u4e5f\u6bd4\u8f83\u653e\u5fc3\u3002\u5982\u679c\u4e4b\u524d\u7684\u5355\u5143\u6d4b\u8bd5\u8dd1\u4e0d\u8fc7\uff0c\u90a3\u4e48\u5f88\u6709\u53ef\u80fd\u65b0\u7684\u4ee3\u7801\u6709\u6f5c\u5728\u7684\u95ee\u9898\uff0c\u8d76\u7d27\u4fee\u590d\u53bb\u5427\u3002"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"\u91cd\u6784\u4ee3\u7801\u7684\u673a\u4f1a"))),(0,r.kt)("p",null,"\u5199\u5355\u5143\u6d4b\u8bd5\u7684\u8fc7\u7a0b\u4e2d\uff0c\u4f60\u53ef\u80fd\u4f1a\u987a\u624b\u628a\u4e00\u4e9b code \u91cd\u6784\u4e86\uff0c\u4e3a\u4ec0\u4e48\uff1f\u4e3e\u4f8b\uff0c\u4e00\u4e9b\u957f\u5f97\u975e\u5e38\u50cf\u7684\u4ee3\u7801\uff0c\u5982\u679c\u6bcf\u6b21\u90fd\u8981\u5199\u4e00\u5806\u6d4b\u8bd5\u4ee3\u7801\u53bb\u6d4b\u540c\u6837\u7684 code\uff0c\u4f60\u4f1a\u4e0d\u4f1a\u6293\u72c2\uff1f\u4e0d\u6d4b\u5427\uff0c\u8986\u76d6\u7387\u53c8\u4e0a\u4e0d\u53bb\uff0c\u4e8e\u662f\u6211\u5c31\u4f1a\u60f3\u65b9\u8bbe\u6cd5\u628a\u5f85\u6d4b\u8bd5\u7684 code \u6539\u5f97\u5c3d\u91cf\u7684\u7cbe\u7b80\uff0c\u91cd\u590d\u4ee3\u7801\u51cf\u5c11\uff0c\u8fd9\u6837\u8986\u76d6\u7387\u4e0a\u53bb\u4e86\uff0c\u6d4b\u8bd5\u4e5f\u597d\u6d4b\u4e86\uff0c\u4ee3\u7801\u4e5f\u7b80\u6d01\u4e86\u3002\u5982\u679c\u6ca1\u6709\u5355\u5143\u6d4b\u8bd5\u548c\u8986\u76d6\u7387\u7684\u8981\u6c42\u7684\u8bdd\uff0c\u5766\u767d\u8bf4\u53ef\u80fd\u4e00\u6765\u81ea\u5df1\u4e0d\u4f1a\u53d1\u73b0\u8fd9\u4e9b\u91cd\u590d\u7684 code\uff0c\u53e6\u4e00\u65b9\u9762\u5373\u4f7f\u53d1\u73b0\u4e86\uff0c\u53ef\u80fd\u4e5f\u6ca1\u6709\u592a\u5927\u7684\u52a8\u529b\u53bb\u6539\u8fdb\u3002"),(0,r.kt)("p",null,"\u53e6\u5916\uff0c\u7531\u4e8e\u5355\u5143\u6d4b\u8bd5\u4e2d\uff0c\u4f60\u9700\u8981\u5c1d\u8bd5\u53bb\u8986\u76d6\u4e00\u4e9b\u5f02\u5e38\u5206\u652f\uff0c\u8fd9\u662f\u7cfb\u7edf\u6d4b\u8bd5\u5e38\u5e38\u8d70\u4e0d\u5230\u7684\u5730\u65b9\uff0c\u4e8e\u662f\u5c31\u4f1a\u5f15\u8d77\u4f60\u7684\u4e00\u4e9b\u601d\u8003\uff0c\u4f8b\u5982\u8fd9\u4e2a\u5f02\u5e38\u5206\u652f\u662f\u5426\u771f\u7684\u9700\u8981\uff1f\u662f\u5426\u771f\u7684\u4f1a\u53d1\u751f\uff1f\u5bf9\u4e8e\u4e00\u4e9b\u5b9e\u9645\u4e0a\u7edd\u5bf9\u4e0d\u4f1a\u51fa\u9519\u7684\u51fd\u6570\uff0c\u90a3\u4e48\u6211\u89c9\u5f97\u53ef\u80fd\u5f02\u5e38\u5206\u652f\u662f\u6ca1\u5fc5\u8981\u5b58\u5728\u7684\u3002"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"\u91cd\u65b0 review \u4ee3\u7801\u7684\u673a\u4f1a"))),(0,r.kt)("p",null,"\u5199 UT \u7684\u8fc7\u7a0b\u4e2d\uff0c\u6211\u603b\u662f\u4f1a\u597d\u597d\u770b\u54ea\u4e9b\u4ee3\u7801\u6267\u884c\u5230\u4e86\uff0c\u54ea\u4e9b\u4ee3\u7801\u6ca1\u6709\u6267\u884c\u5230\uff0c\u8fd9\u5176\u5b9e\u4e5f\u662f\u4e00\u4e2a review \u81ea\u5df1\u4ee3\u7801\u7684\u673a\u4f1a\uff0c\u6709\u4e9b\u65f6\u5019\uff0c\u5e76\u4e0d\u662f UT \u672c\u8eab\u5e2e\u6211\u627e\u5230 bug\uff0c\u800c\u662f\u56de\u5934 review \u81ea\u5df1\u4ee3\u7801\u7684\u65f6\u5019\u53d1\u73b0\u7684\u3002"),(0,r.kt)("h2",{id:"3613-\u5355\u5143\u6d4b\u8bd5\u7c7b\u578b"},"36.1.3 \u5355\u5143\u6d4b\u8bd5\u7c7b\u578b"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u57fa\u4e8e API \u63a5\u53e3\u6d4b\u8bd5\uff08\u767d\u76d2 + \u6d45\u5ea6\u9ed1\u76d2\u6d4b\u8bd5\uff09"),(0,r.kt)("li",{parentName:"ul"},"\u57fa\u4e8e\u9879\u76ee\u4ee3\u7801\u6d4b\u8bd5\uff08\u6df1\u5ea6\u9ed1\u76d2\u6d4b\u8bd5\uff09")),(0,r.kt)("h2",{id:"3614-\u4e3b\u6d41\u7684\u5355\u5143\u6d4b\u8bd5\u5e93"},"36.1.4 \u4e3b\u6d41\u7684\u5355\u5143\u6d4b\u8bd5\u5e93"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"xUnit"),"\uff08",(0,r.kt)("strong",{parentName:"li"},"\u6700\u6d41\u884c\u7684\u5e93\uff0c\u63a8\u8350"),"\uff09"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"NUnit")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"MSTest"))),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"\u5728\u672c\u7ae0\u8282\uff0c",(0,r.kt)("inlineCode",{parentName:"strong"},"Furion")," \u6846\u67b6\u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"strong"},"xUnit")," \u5e93\u8fdb\u884c\u5355\u5143\u6d4b\u8bd5\u3002")),(0,r.kt)("h2",{id:"362-\u7b2c\u4e00\u4e2a\u4f8b\u5b50"},"36.2 \u7b2c\u4e00\u4e2a\u4f8b\u5b50"),(0,r.kt)("h3",{id:"3621-\u521b\u5efa-xunit-\u5355\u5143\u6d4b\u8bd5\u9879\u76ee"},"36.2.1 \u521b\u5efa ",(0,r.kt)("inlineCode",{parentName:"h3"},"xUnit")," \u5355\u5143\u6d4b\u8bd5\u9879\u76ee"),(0,r.kt)("img",{src:(0,l.Z)("img/ut1.png")}),(0,r.kt)("h3",{id:"3622-\u7b2c\u4e00\u4e2a\u6d4b\u8bd5\u65b9\u6cd5"},"36.2.2 \u7b2c\u4e00\u4e2a\u6d4b\u8bd5\u65b9\u6cd5"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,7,10}","{1,7,10}":!0},"using Xunit;\n\nnamespace TestProject1\n{\n public class UnitTest1\n {\n [Fact]\n public void Test1()\n {\n Assert.Equal(2, 1 + 1);\n }\n }\n}\n")),(0,r.kt)("p",null,"\u5355\u5143\u6d4b\u8bd5\u5b9e\u9645\u4e0a\u662f\u901a\u8fc7\u666e\u901a\u7684\u7c7b\u7684\u65b9\u6cd5\u8fdb\u884c\u6a21\u5757\u529f\u80fd\u6d4b\u8bd5\uff0c\u5177\u4f53\u6d4b\u8bd5\u5219\u662f\u6807\u8bb0\u4e86 ",(0,r.kt)("inlineCode",{parentName:"p"},"[Fact]")," \u7279\u6027\u7684\u65b9\u6cd5\uff0c\u5728\u65b9\u6cd5\u4e2d\u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"Assert")," \u7c7b\u63d0\u4f9b\u7684\u9759\u6001\u65b9\u6cd5\u8fdb\u884c ",(0,r.kt)("inlineCode",{parentName:"p"},"\u65ad\u8a00"),"\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"\u65ad\u8a00")," \u6210\u529f\uff0c\u5219\u6d4b\u8bd5\u901a\u8fc7\uff0c\u5426\u5219\u6d4b\u8bd5\u4e0d\u901a\u8fc7\u3002"),(0,r.kt)("h3",{id:"3623-\u8fd0\u884c\u6d4b\u8bd5"},"36.2.3 \u8fd0\u884c\u6d4b\u8bd5"),(0,r.kt)("p",null,"\u5728\u5355\u5143\u6d4b\u8bd5\u9879\u76ee\u4e2d ",(0,r.kt)("inlineCode",{parentName:"p"},"\u53f3\u952e")," \u9009\u62e9 ",(0,r.kt)("inlineCode",{parentName:"p"},"\u8fd0\u884c\u6d4b\u8bd5")," \u5e76\u6253\u5f00 ",(0,r.kt)("inlineCode",{parentName:"p"},"\u6d4b\u8bd5\u8d44\u6e90\u7ba1\u7406\u5668")," \u5373\u53ef\u67e5\u770b\u6d4b\u8bd5\u7ed3\u679c\u3002"),(0,r.kt)("img",{src:(0,l.Z)("img/ut2.png")}),(0,r.kt)("img",{src:(0,l.Z)("img/ut3.png")}),(0,r.kt)("h3",{id:"3624-\u591a\u4e2a\u6d4b\u8bd5\u65b9\u6cd5\u6d4b\u8bd5"},"36.2.4 \u591a\u4e2a\u6d4b\u8bd5\u65b9\u6cd5\u6d4b\u8bd5"),(0,r.kt)("img",{src:(0,l.Z)("img/ut4.png")}),(0,r.kt)("h3",{id:"3625-\u91cd\u590d\u56de\u5f52\u6d4b\u8bd5"},"36.2.5 \u91cd\u590d/\u56de\u5f52\u6d4b\u8bd5"),(0,r.kt)("p",null,"\u540e\u7eed\u6dfb\u52a0\u66f4\u591a\u6d4b\u8bd5\u65b9\u6cd5\u53ea\u9700\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"\u6d4b\u8bd5\u8d44\u6e90\u7ba1\u7406\u5668")," \u70b9\u51fb ",(0,r.kt)("inlineCode",{parentName:"p"},"\u5728\u89c6\u56fe\u4e2d\u8fd0\u884c\u6240\u6709\u6d4b\u8bd5")," \u64ad\u653e\u6309\u94ae\u5373\u53ef\uff0c\u5982\u4e0b\u56fe"),(0,r.kt)("img",{src:(0,l.Z)("img/ut5.png")}),(0,r.kt)("h2",{id:"363-\u96c6\u6210-furion-\u5f3a\u5927\u529f\u80fd"},"36.3 \u96c6\u6210 ",(0,r.kt)("inlineCode",{parentName:"h2"},"Furion")," \u5f3a\u5927\u529f\u80fd"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u662f\u8de8\u5e73\u53f0\u3001\u8de8\u9879\u76ee\u7684\u5f00\u53d1\u6846\u67b6\uff0c\u652f\u6301\u4efb\u610f\u9879\u76ee\u7c7b\u578b\uff0c\u5305\u62ec\u5355\u5143\u6d4b\u8bd5\u9879\u76ee\u3002"),(0,r.kt)("h3",{id:"3631-\u5b89\u88c5-furion-\u5305"},"36.3.1 \u5b89\u88c5 ",(0,r.kt)("inlineCode",{parentName:"h3"},"Furion")," \u5305"),(0,r.kt)("p",null,"\u6253\u5f00 ",(0,r.kt)("inlineCode",{parentName:"p"},"Nuget")," \u7a0b\u5e8f\u5305\u63a7\u5236\u53f0\uff0c\u5b89\u88c5 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u5305"),(0,r.kt)("img",{src:(0,l.Z)("img/ut6.png")}),(0,r.kt)("h3",{id:"3632-\u6dfb\u52a0-startupcs-\u7c7b"},"36.3.2 \u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"h3"},"Startup.cs")," \u7c7b"),(0,r.kt)("p",null,"\u5728\u5355\u5143\u6d4b\u8bd5\u9879\u76ee\u6839\u76ee\u5f55\u4e0b\u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"p"},"Startup.cs")," \u7c7b\uff0c\u5e76\u5199\u4e0b\u4ee5\u4e0b\u4ee3\u7801\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{8,16,18,21-26}","{8,16,18,21-26}":!0},'using Furion;\nusing Microsoft.Extensions.DependencyInjection;\nusing Xunit;\nusing Xunit.Abstractions;\nusing Xunit.Sdk;\n\n// \u914d\u7f6e\u542f\u52a8\u7c7b\u7c7b\u578b\uff0c\u7b2c\u4e00\u4e2a\u53c2\u6570\u662f Startup \u7c7b\u5b8c\u6574\u9650\u5b9a\u540d\uff0c\u7b2c\u4e8c\u4e2a\u53c2\u6570\u662f\u5f53\u524d\u9879\u76ee\u7a0b\u5e8f\u96c6\u540d\u79f0\n[assembly: TestFramework("TestProject1.Startup", "TestProject1")]\n\nnamespace TestProject1\n{\n /// \n /// \u5355\u5143\u6d4b\u8bd5\u542f\u52a8\u7c7b\n /// \n /// \u5728\u8fd9\u91cc\u53ef\u4ee5\u4f7f\u7528 Furion \u51e0\u4e4e\u6240\u6709\u529f\u80fd\n public sealed class Startup : XunitTestFramework\n {\n public Startup(IMessageSink messageSink) : base(messageSink)\n {\n // \u521d\u59cb\u5316 IServiceCollection \u5bf9\u8c61\n var services = Inject.Create();\n\n // \u5728\u8fd9\u91cc\u53ef\u4ee5\u548c .NET Core \u4e00\u6837\u6ce8\u518c\u670d\u52a1\u4e86\uff01\uff01\uff01\uff01\uff01\uff01\uff01\uff01\uff01\uff01\uff01\uff01\uff01\uff01\n\n // \u6784\u5efa ServiceProvider \u5bf9\u8c61\n services.Build();\n }\n }\n}\n')),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u6ce8\u610f")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u4ee5\u4e0b\u4ee3\u7801\u662f\u5fc5\u987b\u7684\uff01\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"TestFramework")," \u7b2c\u4e00\u4e2a\u53c2\u6570\u662f ",(0,r.kt)("inlineCode",{parentName:"p"},"\u7c7b\u5b8c\u5168\u9650\u5b9a\u540d\uff08\u542b\u547d\u540d\u7a7a\u95f4\uff09"),"\uff0c\u7b2c\u4e8c\u4e2a\u53c2\u6570\u662f ",(0,r.kt)("inlineCode",{parentName:"p"},"\u5355\u5143\u6d4b\u8bd5\u7a0b\u5e8f\u96c6\u540d\u79f0")),(0,r.kt)("pre",{parentName:"div"},(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'[assembly: TestFramework("TestProject1.Startup", "TestProject1")]\n')))),(0,r.kt)("h3",{id:"3633-\u4f7f\u7528-furion-\u5b8c\u6574\u529f\u80fd"},"36.3.3 \u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"h3"},"Furion")," \u5b8c\u6574\u529f\u80fd"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u662f\u8de8\u5e73\u53f0\u3001\u8de8\u9879\u76ee\u7684\u5f00\u53d1\u6846\u67b6\uff0c\u4e0b\u9762\u5728\u5355\u5143\u6d4b\u8bd5\u4e2d\u6f14\u793a ",(0,r.kt)("inlineCode",{parentName:"p"},"\u8fdc\u7a0b\u8bf7\u6c42")," \u5e76\u8bf7\u6c42 ",(0,r.kt)("inlineCode",{parentName:"p"},"https://www.baidu.com")," \u6570\u636e\uff0c\u5e76\u6d4b\u8bd5\u662f\u5426\u8bf7\u6c42\u6210\u529f\u3002"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u5728 ",(0,r.kt)("inlineCode",{parentName:"li"},"Startup.cs")," \u4e2d\u6ce8\u518c ",(0,r.kt)("inlineCode",{parentName:"li"},"\u8fdc\u7a0b\u8bf7\u6c42\u670d\u52a1"))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{7}","{7}":!0},"public Startup(IMessageSink messageSink) : base(messageSink)\n{\n // \u521d\u59cb\u5316 IServiceCollection \u5bf9\u8c61\n var services = Inject.Create();\n\n // \u5728\u8fd9\u91cc\u53ef\u4ee5\u548c .NET Core \u4e00\u6837\u6ce8\u518c\u670d\u52a1\u4e86\uff01\uff01\uff01\uff01\uff01\uff01\uff01\uff01\uff01\uff01\uff01\uff01\uff01\uff01\n services.AddRemoteRequest();\n\n // \u6784\u5efa ServiceProvider \u5bf9\u8c61\n services.Build();\n}\n")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u7f16\u5199\u6d4b\u8bd5\u65b9\u6cd5")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'[Fact]\npublic async Task \u6d4b\u8bd5\u8bf7\u6c42\u767e\u5ea6()\n{\n var rep = await "https://www.baidu.com".GetAsync();\n Assert.True(rep.IsSuccessStatusCode);\n}\n')),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u67e5\u770b\u6d4b\u8bd5\u7ed3\u679c")),(0,r.kt)("img",{src:(0,l.Z)("img/ut7.png")}),(0,r.kt)("p",null,"\u5f88\u795e\u5947\u5427\uff01",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u652f\u6301\u4efb\u4f55\u9879\u76ee\u7c7b\u578b\uff0c\u4efb\u4f55\u5e73\u53f0\u4f7f\u7528\u3002"),(0,r.kt)("h2",{id:"364-\u5e26\u53c2\u6570\u7684\u6d4b\u8bd5\u65b9\u6cd5"},"36.4 \u5e26\u53c2\u6570\u7684\u6d4b\u8bd5\u65b9\u6cd5"),(0,r.kt)("p",null,"\u4e0a\u9762\u4f8b\u5b50\u4e2d\uff0c\u6d4b\u8bd5\u65b9\u6cd5\u90fd\u662f\u6ca1\u6709\u53c2\u6570\u7684\uff0c\u6709\u65f6\u5019\u9700\u8981\u540c\u4e00\u4e2a\u65b9\u6cd5\u8f93\u5165\u591a\u4e2a\u4e0d\u540c\u7684\u503c\u8fdb\u884c\u6d4b\u8bd5\uff0c\u8fd9\u65f6\u5019\u5c31\u9700\u8981\u7528\u5230 ",(0,r.kt)("inlineCode",{parentName:"p"},"[Theory]")," \u548c ",(0,r.kt)("inlineCode",{parentName:"p"},"[InlineData]")," \u7279\u6027\u4e86\u3002"),(0,r.kt)("p",null,"\u5982\uff0c\u4e0b\u9762\u6d4b\u8bd5\u4e24\u4e2a\u6570\u7684\u548c\u662f ",(0,r.kt)("inlineCode",{parentName:"p"},"\u5947\u6570"),"\uff0c\u6d4b\u8bd5\u4ee3\u7801\u5982\u4e0b\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1-4}","{1-4}":!0},"[Theory]\n[InlineData(1, 2)]\n[InlineData(3, 4)]\n[InlineData(5, 7)]\npublic void \u5e26\u53c2\u6570\u6d4b\u8bd5(int i, int j)\n{\n Assert.NotEqual(0, (i + j) % 2);\n}\n")),(0,r.kt)("p",null,"\u6d4b\u8bd5\u7ed3\u679c\uff1a"),(0,r.kt)("img",{src:(0,l.Z)("img/ut8.png")}),(0,r.kt)("h2",{id:"365-\u5982\u4f55\u8fdb\u884c\u4f9d\u8d56\u6ce8\u5165"},"36.5 \u5982\u4f55\u8fdb\u884c\u4f9d\u8d56\u6ce8\u5165"),(0,r.kt)("p",null,"\u6709\u4e9b\u65f6\u5019\uff0c\u6211\u4eec\u9700\u8981\u6d4b\u8bd5\u67d0\u63a5\u53e3\uff0c\u6216\u8005\u8fdb\u884c\u4f9d\u8d56\u6ce8\u5165\u65b9\u5f0f\u89e3\u6790\u670d\u52a1\u5e76\u8c03\u7528\uff0c\u8fd9\u65f6\u5019\u5c31\u9700\u8981\u7528\u5230 ",(0,r.kt)("inlineCode",{parentName:"p"},"App.GetService<>()")," \u9759\u6001\u7c7b\u65b9\u5f0f\u4e86\uff0c\u5982\uff1a"),(0,r.kt)("h3",{id:"3651-\u7f16\u5199\u4e00\u4e2a-icalcservice-\u63a5\u53e3\u53ca\u5b9e\u73b0\u7c7b"},"36.5.1 \u7f16\u5199\u4e00\u4e2a ",(0,r.kt)("inlineCode",{parentName:"h3"},"ICalcService")," \u63a5\u53e3\u53ca\u5b9e\u73b0\u7c7b"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{3,8}","{3,8}":!0},"namespace TestProject1.Services\n{\n public interface ICalcService\n {\n int Plus(int i, int j);\n }\n\n public class CalcService : ICalcService, ITransient\n {\n public int Plus(int i, int j)\n {\n return i + j;\n }\n }\n}\n")),(0,r.kt)("h3",{id:"3652-\u5728\u6d4b\u8bd5\u7c7b\u4e2d\u8c03\u7528"},"36.5.2 \u5728\u6d4b\u8bd5\u7c7b\u4e2d\u8c03\u7528"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{9,16,22}","{9,16,22}":!0},"using Furion;\nusing TestProject1.Services;\nusing Xunit;\n\nnamespace TestProject1\n{\n public class UnitTest1\n {\n private readonly ICalcService _calcService;\n\n /// \n /// \u8fd9\u91cc\u4e0d\u80fd\u901a\u8fc7\u6784\u9020\u51fd\u6570\u6ce8\u5165\uff0c\u800c\u662f\u91c7\u7528 App.GetService<> \u65b9\u5f0f\n /// \n public UnitTest1()\n {\n _calcService = App.GetService();\n }\n\n [Fact]\n public void \u6d4b\u8bd5\u4e24\u4e2a\u6570\u7684\u548c()\n {\n Assert.Equal(3, _calcService.Plus(1, 2));\n }\n }\n}\n")),(0,r.kt)("img",{src:(0,l.Z)("img/ut9.png")}),(0,r.kt)("h3",{id:"3653-\u8f93\u51fa\u65e5\u5fd7"},"36.5.3 \u8f93\u51fa\u65e5\u5fd7"),(0,r.kt)("p",null,"\u5982\u679c\u5728\u5355\u5143\u6d4b\u8bd5\u4e2d\u60f3\u8f93\u51fa\u65e5\u5fd7\uff0c\u53ea\u9700\u8981\u5728\u6784\u9020\u51fd\u6570\u6ce8\u5165 ",(0,r.kt)("inlineCode",{parentName:"p"},"ITestOutputHelper")," \u5373\u53ef\uff0c\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{2,10,12,18}","{2,10,12,18}":!0},'using Xunit;\nusing Xunit.Abstractions;\n\nnamespace TestProject1\n{\n public class UnitTest1\n {\n private readonly ITestOutputHelper Output;\n\n public UnitTest1(ITestOutputHelper tempOutput)\n {\n Output = tempOutput;\n }\n\n [Fact]\n public void Test_String_Equal()\n {\n Output.WriteLine("\u54c8\u54c8\u54c8\u54c8\uff0c\u6211\u662f Furion");\n Assert.NotEqual("Furion", "Fur");\n }\n }\n}\n')),(0,r.kt)("img",{src:(0,l.Z)("img/un3.png")}),(0,r.kt)("h3",{id:"3654-\u5173\u4e8e\u4f9d\u8d56\u6ce8\u5165\u4f5c\u7528\u57df\u91ca\u653e\u95ee\u9898"},"36.5.4 \u5173\u4e8e\u4f9d\u8d56\u6ce8\u5165\u4f5c\u7528\u57df\u91ca\u653e\u95ee\u9898"),(0,r.kt)("p",null,"\u6709\u65f6\u5019\u6211\u4eec\u9700\u8981\u5bf9 ",(0,r.kt)("inlineCode",{parentName:"p"},"\u975e\u6258\u7ba1\u8d44\u6e90")," \u6216\u9700\u8981\u624b\u52a8\u91ca\u653e\u7684\u5bf9\u8c61\u8fdb\u884c\u670d\u52a1\u89e3\u6790\u5e76\u6d4b\u8bd5\uff0c\u8fd9\u65f6\u5019\u9700\u8981\u6784\u5efa\u4f5c\u7528\u57df\u8fdb\u884c\u6d4b\u8bd5\uff0c\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"// \u652f\u6301\u5f02\u6b65\u65b9\u6cd5\u6d4b\u8bd5\n[Fact]\npublic void \u6d4b\u8bd5\u6570\u636e\u5e93()\n{\n Scoped.Create((f,s) => {\n var otherService = s.ServiceProvider.GetService();\n var repository = Db.GetRepository(s.ServiceProvider);\n\n var isTrue = repository.Any(u => u.Id > 10);\n Assert.True(isTrue);\n });\n}\n")),(0,r.kt)("h3",{id:"3655-\u6d4b\u8bd5\u91ca\u653e\u8d44\u6e90"},"36.5.5 \u6d4b\u8bd5\u91ca\u653e\u8d44\u6e90"),(0,r.kt)("p",null,"\u6709\u65f6\u5019\uff0c\u6211\u4eec\u9700\u8981\u6d4b\u8bd5\u6210\u529f\u540e\u91ca\u653e\u4e00\u4e9b\u4e0d\u80fd\u53ca\u65f6\u91ca\u653e\u7684\u5bf9\u8c61\uff0c\u8fd9\u65f6\uff0c\u53ea\u9700\u8981\u5b9e\u73b0 ",(0,r.kt)("inlineCode",{parentName:"p"},"IDisposable")," \u63a5\u53e3\u5373\u53ef\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{6,14-17}","{6,14-17}":!0},'using System;\nusing Xunit;\n\nnamespace TestProject1\n{\n public class UnitTest1 : IDisposable\n {\n [Fact]\n public void Test_String_Equal()\n {\n Assert.NotEqual("Furion", "Fur");\n }\n\n public void Dispose()\n {\n // \u91ca\u653e\u4f60\u7684\u5bf9\u8c61\n }\n }\n}\n')),(0,r.kt)("h2",{id:"366-web-\u96c6\u6210\u6d4b\u8bd5"},"36.6 ",(0,r.kt)("inlineCode",{parentName:"h2"},"Web")," \u96c6\u6210\u6d4b\u8bd5"),(0,r.kt)("p",null,"\u6709\u65f6\u5019\uff0c\u6211\u4eec\u9700\u8981\u5728\u6ca1\u6709 ",(0,r.kt)("inlineCode",{parentName:"p"},"IIS")," \u670d\u52a1\u5668\u6216\u4efb\u4f55\u5916\u90e8\u4e8b\u7269\u7684\u60c5\u51b5\u4e0b\u6d4b\u8bd5\u5b8c\u6574\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"Web")," \u5e94\u7528\u7a0b\u5e8f\uff0c\u8fd9\u65f6\u5019\uff0c\u6211\u4eec\u53ea\u9700\u8981\u6267\u884c\u4ee5\u4e0b\u6b65\u9aa4\u5373\u53ef\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"\u5355\u5143\u6d4b\u8bd5\u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"strong"},"Web")," \u542f\u52a8\u5c42\u5f15\u7528")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"\u5355\u5143\u6d4b\u8bd5\u5c42\u5b89\u88c5 ",(0,r.kt)("inlineCode",{parentName:"strong"},"Microsoft.AspNetCore.TestHost")," \u5305")),(0,r.kt)("li",{parentName:"ul"},"\u7f16\u5199\u6d4b\u8bd5\u4ee3\u7801")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{15-18,20-21}","{15-18,20-21}":!0},'using Microsoft.AspNetCore;\nusing Microsoft.AspNetCore.Hosting;\nusing Microsoft.AspNetCore.TestHost;\nusing Microsoft.Extensions.Hosting;\nusing WebApplication1;\nusing Xunit;\n\nnamespace TestProject1\n{\n public class UnitTest1\n {\n [Fact]\n public async Task Test_Web()\n {\n // \u521b\u5efa\u4e00\u4e2a\u6d4b\u8bd5\u670d\u52a1\n using var testServer = new TestServer(WebHost.CreateDefaultBuilder()\n .Inject()\n .UseStartup()); // \u8fd9\u91cc\u7684 Startup \u5c31\u662f\u4f60 Web \u5c42\u7684 Startup\n\n // \u521b\u5efa\u4e00\u4e2a HttpClient \u5ba2\u6237\u7aef\n using var httpClient = testServer.CreateClient();\n\n // \u6d4b\u8bd5 Api\n var result = await httpClient.GetStringAsync("/api/user/1");\n Assert.AreEqual("Furion", result.Name);\n }\n }\n}\n')),(0,r.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u5c0f\u77e5\u8bc6")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u8fd9\u79cd\u65b9\u5f0f\u7684\u597d\u5904\u5c31\u662f\u65e0\u9700\u5728\u542f\u52a8\u4e2d\u8c03\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"Inject.Create()")," \u521d\u59cb\u5316\uff0c\u6bcf\u4e00\u4e2a\u6d4b\u8bd5\u65b9\u6cd5\u90fd\u6709\u72ec\u7acb\u7684\u751f\u547d\u5468\u671f\uff0c\u4e0d\u4f1a\u6c61\u67d3\u5168\u5c40\u3002"))),(0,r.kt)("h2",{id:"367-assert-\u65ad\u8a00"},"36.7 ",(0,r.kt)("inlineCode",{parentName:"h2"},"Assert")," \u65ad\u8a00"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Assert")," \u662f\u5355\u5143\u6d4b\u8bd5\u5224\u5b9a\u6210\u529f\u7684\u4f9d\u636e\uff0c\u901a\u5e38\u7b2c\u4e00\u4e2a\u53c2\u6570\u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"\u671f\u671b\u503c"),"\uff0c\u7b2c\u4e8c\u4e2a\u53c2\u6570\u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"\u5b9e\u9645\u503c"),"\uff0c\u5bf9\u6bd4\u8fd9\u4e24\u4e2a\u503c\u662f\u5426\u4e00\u81f4\u5373\u53ef\u5224\u65ad\u6210\u529f\u4e0e\u5426\u3002\u8be6\u7ec6\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"Assert")," \u9759\u6001\u65b9\u6cd5\u53ef\u67e5\u9605\u5b98\u65b9\u5e93 ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/xunit/assert.xunit"},"Assert \u65b9\u6cd5")),(0,r.kt)("h2",{id:"368-\u53cd\u9988\u4e0e\u5efa\u8bae"},"36.8 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,r.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))),(0,r.kt)("hr",null),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e86\u89e3\u66f4\u591a")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u60f3\u4e86\u89e3\u66f4\u591a ",(0,r.kt)("inlineCode",{parentName:"p"},"\u5355\u5143\u6d4b\u8bd5")," \u77e5\u8bc6\u53ef\u67e5\u9605 ",(0,r.kt)("a",{parentName:"p",href:"https://docs.microsoft.com/zh-cn/dotnet/core/testing/"},"\u5728 .NET \u4e2d\u6d4b\u8bd5")," \u7ae0\u8282\u3002"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/64e66f0d.81efab5e.js b/handbook/build/assets/js/64e66f0d.81efab5e.js new file mode 100644 index 00000000000..394ed3abde2 --- /dev/null +++ b/handbook/build/assets/js/64e66f0d.81efab5e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[8475],{3905:function(e,n,t){t.d(n,{Zo:function(){return d},kt:function(){return u}});var a=t(7294);function i(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function r(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function l(e){for(var n=1;n=0||(i[t]=e[t]);return i}(e,n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(i[t]=e[t])}return i}var o=a.createContext({}),m=function(e){var n=a.useContext(o),t=n;return e&&(t="function"==typeof e?e(n):l(l({},n),e)),t},d=function(e){var n=m(e.components);return a.createElement(o.Provider,{value:n},e.children)},s={inlineCode:"code",wrapper:function(e){var n=e.children;return a.createElement(a.Fragment,{},n)}},c=a.forwardRef((function(e,n){var t=e.components,i=e.mdxType,r=e.originalType,o=e.parentName,d=p(e,["components","mdxType","originalType","parentName"]),c=m(t),u=i,k=c["".concat(o,".").concat(u)]||c[u]||s[u]||r;return t?a.createElement(k,l(l({ref:n},d),{},{components:t})):a.createElement(k,l({ref:n},d))}));function u(e,n){var t=arguments,i=n&&n.mdxType;if("string"==typeof e||i){var r=t.length,l=new Array(r);l[0]=c;var p={};for(var o in n)hasOwnProperty.call(n,o)&&(p[o]=n[o]);p.originalType=e,p.mdxType="string"==typeof e?e:i,l[1]=p;for(var m=2;m=0&&r<=m&&i<=p&&a>=0)||(n.scrollIntoView({block:"center",behavior:"smooth"}),n.classList.add(o),setTimeout((function(){return n.classList.remove(o)}),2e3))}),150))},w=function(e){var n,t=null;switch(e.key){case"ArrowRight":var a=f.indexOf(e.target)+1;t=f[a]||f[0];break;case"ArrowLeft":var i=f.indexOf(e.target)-1;t=f[i]||f[f.length-1]}null==(n=t)||n.focus()};return a.createElement("div",{className:"tabs-container"},a.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,l.Z)("tabs",{"tabs--block":i},c)},k.map((function(e){var n=e.value,t=e.label;return a.createElement("li",{role:"tab",tabIndex:A===n?0:-1,"aria-selected":A===n,className:(0,l.Z)("tabs__item",p,{"tabs__item--active":A===n}),key:n,ref:function(e){return f.push(e)},onKeyDown:w,onFocus:F,onClick:F},null!=t?t:n)}))),t?(0,a.cloneElement)(u.filter((function(e){return e.props.value===A}))[0],{className:"margin-vert--md"}):a.createElement("div",{className:"margin-vert--md"},u.map((function(e,n){return(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==A})}))))}},9443:function(e,n,t){var a=(0,t(7294).createContext)(void 0);n.Z=a},8211:function(e,n,t){t.r(n),t.d(n,{frontMatter:function(){return d},contentTitle:function(){return s},metadata:function(){return c},toc:function(){return u},default:function(){return N}});var a=t(7462),i=t(3366),r=(t(7294),t(3905)),l=t(4996),p=t(5064),o=t(8215),m=["components"],d={id:"dynamic-api-controller",title:"5. \u52a8\u6001 WebAPI",sidebar_label:"5. \u52a8\u6001 WebAPI"},s=void 0,c={unversionedId:"dynamic-api-controller",id:"dynamic-api-controller",isDocsHomePage:!1,title:"5. \u52a8\u6001 WebAPI",description:"\u52a8\u6001WebAPI \u5b9e\u9645\u4e0a\u5c31\u662f\u5c06\u666e\u901a\u7684\u7c7b\u53d8\u4e3a Controller\uff0c\u4e5f\u5c31\u662f \u52a8\u6001WebAPI \u5c31\u662f\u63a7\u5236\u5668\uff0c\u652f\u6301\u63a7\u5236\u5668\u4e00\u5207\u529f\u80fd\u3002",source:"@site/docs/dynamic-api-controller.mdx",sourceDirName:".",slug:"/dynamic-api-controller",permalink:"/furion/docs/dynamic-api-controller",editUrl:"https://gitee.com/dotnetchina/Furion/tree/master/handbook/docs/dynamic-api-controller.mdx",tags:[],version:"current",lastUpdatedBy:"Postive\u4e36seche",lastUpdatedAt:1628152733,formattedLastUpdatedAt:"8/5/2021",frontMatter:{id:"dynamic-api-controller",title:"5. \u52a8\u6001 WebAPI",sidebar_label:"5. \u52a8\u6001 WebAPI"},sidebar:"docs",previous:{title:"4.2 \u9009\u9879",permalink:"/furion/docs/options"},next:{title:"6. \u89c4\u8303\u5316\u63a5\u53e3\u6587\u6863 (Swagger)",permalink:"/furion/docs/specification-document"}},u=[{value:"5.1 \u4ec0\u4e48\u662f\u63a7\u5236\u5668",id:"51-\u4ec0\u4e48\u662f\u63a7\u5236\u5668",children:[]},{value:"5.2 Mvc \u63a7\u5236\u5668 \u7ea6\u5b9a\u548c\u7f3a\u70b9",id:"52-mvc-\u63a7\u5236\u5668-\u7ea6\u5b9a\u548c\u7f3a\u70b9",children:[{value:"5.2.1 WebAPI \u7ea6\u5b9a",id:"521-webapi-\u7ea6\u5b9a",children:[]},{value:"5.2.2 .NET Core WebAPI \u7f3a\u70b9",id:"522-net-core-webapi-\u7f3a\u70b9",children:[]}]},{value:"5.3 \u52a8\u6001 WebAPI \u63a7\u5236\u5668",id:"53-\u52a8\u6001-webapi-\u63a7\u5236\u5668",children:[]},{value:"5.4 \u6ce8\u518c\u52a8\u6001 WebAPI \u670d\u52a1",id:"54-\u6ce8\u518c\u52a8\u6001-webapi-\u670d\u52a1",children:[]},{value:"5.5 \u7b2c\u4e00\u4e2a\u4f8b\u5b50",id:"55-\u7b2c\u4e00\u4e2a\u4f8b\u5b50",children:[]},{value:"5.6 \u52a8\u6001 WebAPI \u539f\u7406\u89e3\u6790",id:"56-\u52a8\u6001-webapi-\u539f\u7406\u89e3\u6790",children:[{value:"5.6.1 \u63a7\u5236\u5668\u7279\u6027\u63d0\u4f9b\u5668",id:"561-\u63a7\u5236\u5668\u7279\u6027\u63d0\u4f9b\u5668",children:[]},{value:"5.6.2 \u5e94\u7528\u6a21\u578b\u8f6c\u6362\u5668",id:"562-\u5e94\u7528\u6a21\u578b\u8f6c\u6362\u5668",children:[]}]},{value:"5.7 \u52a8\u6001 WebAPI \u914d\u7f6e\u7ea6\u5b9a",id:"57-\u52a8\u6001-webapi-\u914d\u7f6e\u7ea6\u5b9a",children:[{value:"5.7.1 \u63a7\u5236\u5668\u9ed8\u8ba4\u7ea6\u5b9a",id:"571-\u63a7\u5236\u5668\u9ed8\u8ba4\u7ea6\u5b9a",children:[]},{value:"5.7.2 \u52a8\u4f5c\u65b9\u6cd5\u9ed8\u8ba4\u7ea6\u5b9a",id:"572-\u52a8\u4f5c\u65b9\u6cd5\u9ed8\u8ba4\u7ea6\u5b9a",children:[]},{value:"5.7.3 \u8bf7\u6c42\u8c13\u8bcd\u9ed8\u8ba4\u7ea6\u5b9a",id:"573-\u8bf7\u6c42\u8c13\u8bcd\u9ed8\u8ba4\u7ea6\u5b9a",children:[]},{value:"5.7.4 \u8def\u7531\u5730\u5740\u9ed8\u8ba4\u7ea6\u5b9a",id:"574-\u8def\u7531\u5730\u5740\u9ed8\u8ba4\u7ea6\u5b9a",children:[]},{value:"5.7.5 \u5176\u4ed6\u7ea6\u5b9a",id:"575-\u5176\u4ed6\u7ea6\u5b9a",children:[]}]},{value:"5.8 \u66f4\u591a\u4f8b\u5b50",id:"58-\u66f4\u591a\u4f8b\u5b50",children:[{value:"5.8.1 \u591a\u79cd\u8bf7\u6c42\u8c13\u8bcd\u65b9\u6cd5",id:"581-\u591a\u79cd\u8bf7\u6c42\u8c13\u8bcd\u65b9\u6cd5",children:[]},{value:"5.8.2 \u591a\u4e2a\u81ea\u5b9a\u4e49\u52a8\u4f5c\u65b9\u6cd5",id:"582-\u591a\u4e2a\u81ea\u5b9a\u4e49\u52a8\u4f5c\u65b9\u6cd5",children:[]},{value:"5.8.3 \u5e26\u53c2\u6570\u52a8\u4f5c\u65b9\u6cd5",id:"583-\u5e26\u53c2\u6570\u52a8\u4f5c\u65b9\u6cd5",children:[]},{value:"5.8.4 GET/HEAD \u7c7b\u7c7b\u578b\u53c2\u6570",id:"584-gethead-\u7c7b\u7c7b\u578b\u53c2\u6570",children:[]},{value:"5.8.5 \u81ea\u5b9a\u4e49\u53c2\u6570\u4f4d\u7f6e",id:"585-\u81ea\u5b9a\u4e49\u53c2\u6570\u4f4d\u7f6e",children:[]},{value:"5.8.6 \u81ea\u5b9a\u4e49\u8bf7\u6c42\u8c13\u8bcd",id:"586-\u81ea\u5b9a\u4e49\u8bf7\u6c42\u8c13\u8bcd",children:[]},{value:"5.8.7 \u652f\u6301\u591a\u4e2a\u8c13\u8bcd",id:"587-\u652f\u6301\u591a\u4e2a\u8c13\u8bcd",children:[]},{value:"5.8.8 \u652f\u6301\u81ea\u5b9a\u4e49\u8def\u7531",id:"588-\u652f\u6301\u81ea\u5b9a\u4e49\u8def\u7531",children:[]},{value:"5.8.9 \u591a\u8def\u7531\u968f\u610f\u7ec4\u5408",id:"589-\u591a\u8def\u7531\u968f\u610f\u7ec4\u5408",children:[]},{value:"5.8.10 \u652f\u6301\u7248\u672c\u63a7\u5236",id:"5810-\u652f\u6301\u7248\u672c\u63a7\u5236",children:[]},{value:"5.8.11 \u4e0d\u516c\u5f00\u63a7\u5236\u5668\u6216\u52a8\u4f5c\u65b9\u6cd5",id:"5811-\u4e0d\u516c\u5f00\u63a7\u5236\u5668\u6216\u52a8\u4f5c\u65b9\u6cd5",children:[]},{value:"5.8.12 \u4fdd\u6301\u63a7\u5236\u5668\u548c\u65b9\u6cd5\u547d\u540d",id:"5812-\u4fdd\u6301\u63a7\u5236\u5668\u548c\u65b9\u6cd5\u547d\u540d",children:[]},{value:"5.8.13 \u65b9\u6cd5\u53c2\u6570 [FromQuery] \u5316/\u53c2\u6570\u975e\u5fc5\u586b/\u53c2\u6570\u53ef\u9009",id:"5813-\u65b9\u6cd5\u53c2\u6570-fromquery-\u5316\u53c2\u6570\u975e\u5fc5\u586b\u53c2\u6570\u53ef\u9009",children:[]},{value:"5.8.14 \u53c2\u6570\u7ed1\u5b9a\u914d\u7f6e",id:"5814-\u53c2\u6570\u7ed1\u5b9a\u914d\u7f6e",children:[]},{value:"5.8.15 \u81ea\u5b9a\u4e49\u6839\u636e\u65b9\u6cd5\u540d\u751f\u6210 [HttpMethod] \u89c4\u5219",id:"5815-\u81ea\u5b9a\u4e49\u6839\u636e\u65b9\u6cd5\u540d\u751f\u6210-httpmethod-\u89c4\u5219",children:[]},{value:"5.8.16 \u8def\u7531\u53c2\u6570\u975e\u5fc5\u586b/\u9009\u586b",id:"5816-\u8def\u7531\u53c2\u6570\u975e\u5fc5\u586b\u9009\u586b",children:[]},{value:"5.8.17 [FormRoute] \u8def\u7531\u7ea6\u675f",id:"5817-formroute-\u8def\u7531\u7ea6\u675f",children:[]}]},{value:"5.9 [ApiDescriptionSettings]",id:"59-apidescriptionsettings",children:[{value:"5.9.1 \u5185\u7f6e\u914d\u7f6e",id:"591-\u5185\u7f6e\u914d\u7f6e",children:[]},{value:"5.9.2 Name \u914d\u7f6e",id:"592-name-\u914d\u7f6e",children:[]},{value:"5.9.3 KeepName \u914d\u7f6e",id:"593-keepname-\u914d\u7f6e",children:[]},{value:"5.9.4 SplitCamelCase \u914d\u7f6e",id:"594-splitcamelcase-\u914d\u7f6e",children:[]},{value:"5.9.5 KeepVerb \u914d\u7f6e",id:"595-keepverb-\u914d\u7f6e",children:[]},{value:"5.9.6 Enabled \u914d\u7f6e",id:"596-enabled-\u914d\u7f6e",children:[]},{value:"5.9.7 Module \u914d\u7f6e",id:"597-module-\u914d\u7f6e",children:[]},{value:"5.9.8 Version \u914d\u7f6e",id:"598-version-\u914d\u7f6e",children:[]},{value:"5.9.9 Groups \u914d\u7f6e",id:"599-groups-\u914d\u7f6e",children:[]},{value:"5.9.10 Tag \u914d\u7f6e",id:"5910-tag-\u914d\u7f6e",children:[]}]},{value:"5.10 DynamicApiControllerSettings \u914d\u7f6e",id:"510-dynamicapicontrollersettings-\u914d\u7f6e",children:[{value:"5.10.1 \u652f\u6301 Mvc \u63a7\u5236\u5668 \u52a8\u6001\u914d\u7f6e",id:"5101-\u652f\u6301-mvc-\u63a7\u5236\u5668-\u52a8\u6001\u914d\u7f6e",children:[]}]},{value:"5.11 \u5173\u4e8e AOP \u62e6\u622a",id:"511-\u5173\u4e8e-aop-\u62e6\u622a",children:[]},{value:"5.12 \u8bbe\u7f6e api \u8d85\u65f6\u8bf7\u6c42\u65f6\u95f4",id:"512-\u8bbe\u7f6e-api-\u8d85\u65f6\u8bf7\u6c42\u65f6\u95f4",children:[]},{value:"5.13 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"513-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],k={toc:u};function N(e){var n=e.components,t=(0,i.Z)(e,m);return(0,r.kt)("wrapper",(0,a.Z)({},k,t,{components:n,mdxType:"MDXLayout"}),(0,r.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u5c0f\u77e5\u8bc6")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},(0,r.kt)("inlineCode",{parentName:"p"},"\u52a8\u6001WebAPI")," \u5b9e\u9645\u4e0a\u5c31\u662f\u5c06\u666e\u901a\u7684\u7c7b\u53d8\u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"Controller"),"\uff0c\u4e5f\u5c31\u662f ",(0,r.kt)("inlineCode",{parentName:"p"},"\u52a8\u6001WebAPI")," \u5c31\u662f\u63a7\u5236\u5668\uff0c\u652f\u6301\u63a7\u5236\u5668\u4e00\u5207\u529f\u80fd\u3002"))),(0,r.kt)("h2",{id:"51-\u4ec0\u4e48\u662f\u63a7\u5236\u5668"},"5.1 \u4ec0\u4e48\u662f\u63a7\u5236\u5668"),(0,r.kt)("p",null,"\u7b80\u5355\u6765\u8bf4\uff0c\u63a7\u5236\u5668\u662f\u4e00\u4e2a\u627f\u4e0a\u542f\u4e0b\u7684\u4f5c\u7528\uff0c\u6839\u636e\u7528\u6237\u8f93\u5165\uff0c\u6267\u884c\u54cd\u5e94\u884c\u4e3a\uff08\u52a8\u4f5c\u65b9\u6cd5\uff09\uff0c\u540c\u65f6\u5728\u884c\u4e3a\u4e2d\u8c03\u7528\u6a21\u578b\u7684\u4e1a\u52a1\u903b\u8f91\uff0c\u8fd4\u56de\u7ed9\u7528\u6237\u7ed3\u679c\uff08\u89c6\u56fe\uff09\u3002"),(0,r.kt)("img",{src:(0,l.Z)("img/kzq.png")}),(0,r.kt)("p",null),(0,r.kt)("p",null,"\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"ASP.NET Core")," \u4e2d\uff0c\u63a7\u5236\u5668\u6709\u4e24\u79cd\u8868\u73b0\u5f62\u5f0f\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Mvc"),"\uff08\u5e26\u89c6\u56fe\uff09"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"WebAPI"),"\uff08RESTful API\uff09")),(0,r.kt)(p.Z,{defaultValue:"mvc",values:[{label:"Mvc \u63a7\u5236\u5668",value:"mvc"},{label:"WebAPI \u63a7\u5236\u5668",value:"webapi"}],mdxType:"Tabs"},(0,r.kt)(o.Z,{value:"mvc",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,5,7}","{1,5,7}":!0},"using Microsoft.AspNetCore.Mvc;\n\nnamespace Furion.Web.Entry.Controllers\n{\n public class MvcController : Controller\n {\n public IActionResult Index()\n {\n return View();\n }\n }\n}\n"))),(0,r.kt)(o.Z,{value:"webapi",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,5,6,8,9}","{1,5,6,8,9}":!0},'using Microsoft.AspNetCore.Mvc;\n\nnamespace Furion.Web.Entry.Controllers\n{\n [Route("api/[controller]")]\n public class WebApiController : ControllerBase\n {\n [HttpGet]\n public IActionResult Get()\n {\n return Content(nameof(Furion));\n }\n }\n}\n')))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Mvc")," \u63a7\u5236\u5668\u548c ",(0,r.kt)("inlineCode",{parentName:"p"},"WebAPI")," \u63a7\u5236\u5668\u6700\u5927\u7684\u533a\u522b\u662f ",(0,r.kt)("inlineCode",{parentName:"p"},"WebAPI")," \u63a7\u5236\u5668\u4e0d\u5e26 ",(0,r.kt)("strong",{parentName:"p"},"\u89c6\u56fe")," \u548c\u901a\u8fc7 ",(0,r.kt)("strong",{parentName:"p"},"\u8bf7\u6c42\u8c13\u8bcd\u548c\u8def\u7531\u5730\u5740\u54cd\u5e94\u884c\u4e3a"),"\u3002"),(0,r.kt)("h2",{id:"52-mvc-\u63a7\u5236\u5668-\u7ea6\u5b9a\u548c\u7f3a\u70b9"},"5.2 ",(0,r.kt)("inlineCode",{parentName:"h2"},"Mvc \u63a7\u5236\u5668")," \u7ea6\u5b9a\u548c\u7f3a\u70b9"),(0,r.kt)("p",null,"\u5728\u5b66\u4e60\u52a8\u6001 ",(0,r.kt)("inlineCode",{parentName:"p"},"WebAPI")," \u63a7\u5236\u5668\u4e4b\u524d\uff0c\u9996\u5148\u4e86\u89e3 ",(0,r.kt)("inlineCode",{parentName:"p"},"ASP.NET Core")," \u4e2d ",(0,r.kt)("inlineCode",{parentName:"p"},"WebAPI")," \u7684\u4e00\u4e9b\u7ea6\u5b9a\u548c\u6ce8\u610f\u4e8b\u9879\u3002"),(0,r.kt)("h3",{id:"521-webapi-\u7ea6\u5b9a"},"5.2.1 ",(0,r.kt)("inlineCode",{parentName:"h3"},"WebAPI")," \u7ea6\u5b9a"),(0,r.kt)("p",null,"\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"ASP.NET Core")," \u5e94\u7528\u4e2d\uff0c\u4e00\u4e2a ",(0,r.kt)("inlineCode",{parentName:"p"},"WebAPI")," \u63a7\u5236\u5668\u9700\u9075\u5faa\u4ee5\u4e0b\u7ea6\u5b9a\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u63a7\u5236\u5668\u7c7b",(0,r.kt)("strong",{parentName:"li"},"\u5fc5\u987b\u7ee7\u627f ",(0,r.kt)("inlineCode",{parentName:"strong"},"ControllerBase")," \u6216\u95f4\u63a5\u7ee7\u627f")),(0,r.kt)("li",{parentName:"ul"},"\u52a8\u4f5c\u65b9\u6cd5",(0,r.kt)("strong",{parentName:"li"},"\u5fc5\u987b\u8d34\u6709 ",(0,r.kt)("inlineCode",{parentName:"strong"},"[HttpMethod]")," \u7279\u6027\uff0c\u5982\uff1a",(0,r.kt)("inlineCode",{parentName:"strong"},"[HttpGet]"))),(0,r.kt)("li",{parentName:"ul"},"\u63a7\u5236\u5668\u6216\u52a8\u4f5c\u65b9\u6cd5",(0,r.kt)("strong",{parentName:"li"},"\u81f3\u5c11\u6709\u4e00\u4e2a\u914d\u7f6e ",(0,r.kt)("inlineCode",{parentName:"strong"},"[Route]")," \u7279\u6027")),(0,r.kt)("li",{parentName:"ul"},"\u751f\u6210 ",(0,r.kt)("inlineCode",{parentName:"li"},"WebAPI")," \u8def\u7531\u5730\u5740\u65f6\u4f1a\u81ea\u52a8\u53bb\u6389\u63a7\u5236\u5668\u540d\u79f0 ",(0,r.kt)("inlineCode",{parentName:"li"},"Controller")," \u540e\u7f00\uff0c\u540c\u65f6\u4e5f\u4f1a\u53bb\u6389\u52a8\u4f5c\u65b9\u6cd5\u5339\u914d\u7684 ",(0,r.kt)("inlineCode",{parentName:"li"},"HttpVerb")," \u8c13\u8bcd\uff0c\u5982 ",(0,r.kt)("inlineCode",{parentName:"li"},"GET\uff0cPOST\uff0cDELETE\uff0cPUT")," \u7b49"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"\u4e0d\u652f\u6301\u8fd4\u56de\u975e ",(0,r.kt)("inlineCode",{parentName:"strong"},"IEnumerable")," \u6cdb\u578b\u5bf9\u8c61")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"\u4e0d\u652f\u6301\u7c7b\u7c7b\u578b\u53c2\u6570\u5728 ",(0,r.kt)("inlineCode",{parentName:"strong"},"GET\uff0cHEAD")," \u8bf7\u6c42\u4e0b\u751f\u6210 ",(0,r.kt)("inlineCode",{parentName:"strong"},"Query")," \u53c2\u6570"))),(0,r.kt)("p",null,"\u9664\u4e86\u4e0a\u8ff0\u7ea6\u5b9a\u5916\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"WebAPI")," \u8def\u7531\u5730\u5740",(0,r.kt)("strong",{parentName:"p"},"\u57fa\u672c\u9760\u624b\u5de5\u5b8c\u6210"),"\uff0c\u4e0d\u5229\u4e8e\u4e66\u5199\uff0c\u4e0d\u5229\u4e8e\u7ef4\u62a4\uff0c\u518d\u8005\uff0c\u5728\u79fb\u52a8\u5e94\u7528\u5bf9\u63a5\u4e2d\u96be\u4ee5\u8fdb\u884c\u591a\u7248\u672c\u63a7\u5236\u3002"),(0,r.kt)("h3",{id:"522-net-core-webapi-\u7f3a\u70b9"},"5.2.2 ",(0,r.kt)("inlineCode",{parentName:"h3"},".NET Core WebAPI")," \u7f3a\u70b9"),(0,r.kt)("p",null,"\u901a\u8fc7\u4e0a\u4e00\u7ae0\u8282\u53ef\u4ee5\u770b\u51fa\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"ASP.NET Core")," \u5e94\u7528\u5b9e\u73b0 ",(0,r.kt)("inlineCode",{parentName:"p"},"WebAPI")," \u9700\u8981\u9075\u5faa\u79cd\u79cd\u7ea6\u5b9a\uff0c\u800c\u4e14\u5bb9\u6613\u51fa\u9519\u3002"),(0,r.kt)("p",null,"\u9664\u4e86\u8fd9\u4e9b\u7ea6\u5b9a\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},".NET Core WebAPI")," \u6709\u4ee5\u4e0b\u7f3a\u70b9\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u8def\u7531\u5730\u5740\u57fa\u672c\u9760\u624b\u5de5\u5b8c\u6210"),(0,r.kt)("li",{parentName:"ul"},"\u5728\u73b0\u5728\u79fb\u52a8\u4e3a\u738b\u7684\u65f6\u4ee3\uff0c\u4e0d\u5229\u4e8e\u8fdb\u884c\u591a\u7248\u672c\u63a7\u5236"),(0,r.kt)("li",{parentName:"ul"},"\u5bf9\u63a5 ",(0,r.kt)("inlineCode",{parentName:"li"},"Swagger")," \u6587\u6863\u5206\u7ec4\u6bd4\u8f83\u590d\u6742"),(0,r.kt)("li",{parentName:"ul"},"\u5b9e\u73b0 ",(0,r.kt)("inlineCode",{parentName:"li"},"Policy")," \u7b56\u7565\u6388\u6743\u4e5f\u6bd4\u8f83\u590d\u6742"),(0,r.kt)("li",{parentName:"ul"},"\u4e0d\u652f\u6301\u63a7\u5236\u5668\u70ed\u63d2\u62d4\u63d2\u4ef6\u5316"),(0,r.kt)("li",{parentName:"ul"},"\u96be\u4ee5\u5b9e\u73b0\u590d\u6742\u81ea\u5b9a\u4e49\u7684 ",(0,r.kt)("inlineCode",{parentName:"li"},"RESTful API")," \u98ce\u683c")),(0,r.kt)("h2",{id:"53-\u52a8\u6001-webapi-\u63a7\u5236\u5668"},"5.3 \u52a8\u6001 ",(0,r.kt)("inlineCode",{parentName:"h2"},"WebAPI")," \u63a7\u5236\u5668"),(0,r.kt)("p",null,"\u9488\u5bf9\u4ee5\u4e0a ",(0,r.kt)("inlineCode",{parentName:"p"},"ASP.NET Core")," \u63d0\u4f9b\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"WebAPI")," \u5fc5\u987b\u9075\u5faa\u7684\u7ea6\u5b9a\u548c\u4e0d\u53ef\u907f\u514d\u7684\u7f3a\u70b9\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u521b\u9020\u51fa\u4e00\u79cd\u66f4\u52a0\u7075\u6d3b\u521b\u5efa ",(0,r.kt)("inlineCode",{parentName:"p"},"WebAPI")," \u63a7\u5236\u5668\u7684\u65b9\u5f0f\u3002"),(0,r.kt)("p",null,"\u8fd9\u4e2a\u65b9\u5f0f\u5728\u7ee7\u627f\u4e86 ",(0,r.kt)("inlineCode",{parentName:"p"},"ASP.NET Core WebAPI")," \u6240\u6709\u4f18\u70b9\uff0c\u540c\u65f6\u8fdb\u884c\u4e86\u5927\u91cf\u62d3\u5c55\u548c\u4f18\u5316\u3002\u4f18\u5316\u540e\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"WebAPI")," \u5177\u6709\u4ee5\u4e0b\u4f18\u70b9\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u5177\u5907\u539f\u6709\u7684 ",(0,r.kt)("inlineCode",{parentName:"li"},"ControllerBase")," \u6240\u6709\u529f\u80fd"),(0,r.kt)("li",{parentName:"ul"},"\u652f\u6301",(0,r.kt)("strong",{parentName:"li"},"\u4efb\u610f\u516c\u5f00 \u975e\u9759\u6001 \u975e\u62bd\u8c61 \u975e\u6cdb\u578b\u7c7b"),"\u8f6c\u63a7\u5236\u5668"),(0,r.kt)("li",{parentName:"ul"},"\u63d0\u4f9b\u66f4\u52a0\u7075\u6d3b\u65b9\u4fbf\u7684 ",(0,r.kt)("inlineCode",{parentName:"li"},"IDynamicApiController")," \u7a7a\u63a5\u53e3\u6216 ",(0,r.kt)("inlineCode",{parentName:"li"},"[DynamicApiController]")," \u7279\u6027\u66ff\u4ee3 ",(0,r.kt)("inlineCode",{parentName:"li"},"ControllerBase")," \u62bd\u8c61\u7c7b"),(0,r.kt)("li",{parentName:"ul"},"\u65e0\u9700\u624b\u52a8\u914d\u7f6e ",(0,r.kt)("inlineCode",{parentName:"li"},"[HttpMethod]")," \u7279\u6027\uff0c\u540c\u65f6\u652f\u6301\u4e00\u4e2a\u52a8\u4f5c\u65b9\u6cd5\u591a\u4e2a ",(0,r.kt)("inlineCode",{parentName:"li"},"HttpVerb")),(0,r.kt)("li",{parentName:"ul"},"\u65e0\u9700\u624b\u52a8\u914d\u7f6e ",(0,r.kt)("inlineCode",{parentName:"li"},"[Route]")," \u7279\u6027\uff0c\u652f\u6301\u66f4\u52a0\u7075\u6d3b\u7684\u914d\u7f6e\u53ca\u81ea\u52a8\u8def\u7531\u751f\u6210"),(0,r.kt)("li",{parentName:"ul"},"\u652f\u6301\u8fd4\u56de\u6cdb\u578b\u63a5\u53e3\uff0c\u6cdb\u578b\u7c7b"),(0,r.kt)("li",{parentName:"ul"},"\u548c ",(0,r.kt)("inlineCode",{parentName:"li"},"Swagger")," \u6df1\u5ea6\u7ed3\u5408\uff0c\u63d0\u4f9b\u6781\u5176\u65b9\u4fbf\u7684\u521b\u5efa ",(0,r.kt)("inlineCode",{parentName:"li"},"Swagger")," \u5206\u7ec4\u914d\u7f6e"),(0,r.kt)("li",{parentName:"ul"},"\u652f\u6301 ",(0,r.kt)("inlineCode",{parentName:"li"},"Basic Auth\uff0cJwt\uff0cApiKey")," \u7b49\u591a\u79cd\u6743\u9650\u7075\u6d3b\u914d\u7f6e"),(0,r.kt)("li",{parentName:"ul"},"\u652f\u6301\u63a7\u5236\u5668\u3001\u52a8\u4f5c\u65b9\u6cd5",(0,r.kt)("strong",{parentName:"li"},"\u7248\u672c\u63a7\u5236"),"\u529f\u80fd"),(0,r.kt)("li",{parentName:"ul"},"\u652f\u6301 ",(0,r.kt)("inlineCode",{parentName:"li"},"GET\u3001HEAD")," \u8bf7\u6c42\u81ea\u52a8\u8f6c\u6362 ",(0,r.kt)("inlineCode",{parentName:"li"},"\u7c7b\u7c7b\u578b\u53c2\u6570")),(0,r.kt)("li",{parentName:"ul"},"\u652f\u6301\u751f\u6210 ",(0,r.kt)("inlineCode",{parentName:"li"},"OAS3")," \u63a5\u53e3\u89c4\u8303")),(0,r.kt)("h2",{id:"54-\u6ce8\u518c\u52a8\u6001-webapi-\u670d\u52a1"},"5.4 \u6ce8\u518c\u52a8\u6001 ",(0,r.kt)("inlineCode",{parentName:"h2"},"WebAPI")," \u670d\u52a1"),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u5907\u6ce8")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},(0,r.kt)("inlineCode",{parentName:"p"},".AddDynamicApiControllers()")," \u9ed8\u8ba4\u5df2\u7ecf\u96c6\u6210\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"AddInject()")," \u4e2d\u4e86\uff0c\u65e0\u9700\u518d\u6b21\u6ce8\u518c\u3002\u4e5f\u5c31\u662f\u4e0b\u5217\u4ee3\u7801\u53ef\u4e0d\u914d\u7f6e\u3002"))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:'{11} title="Furion.Web.Core\\FurWebCoreStartup.cs"',"{11}":!0,title:'"Furion.Web.Core\\FurWebCoreStartup.cs"'},"using Microsoft.Extensions.DependencyInjection;\n\nnamespace Furion.Web.Core\n{\n [AppStartup(800)]\n public sealed class FurWebCoreStartup : AppStartup\n {\n public void ConfigureServices(IServiceCollection services)\n {\n services.AddControllers()\n .AddDynamicApiControllers();\n }\n }\n}\n")),(0,r.kt)("div",{className:"admonition admonition-caution alert alert--warning"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 16 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"}))),"\u7279\u522b\u6ce8\u610f")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},(0,r.kt)("inlineCode",{parentName:"p"},".AddDynamicApiControllers()")," \u5fc5\u987b\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"services.AddControllers()")," \u4e4b\u540e\u6ce8\u518c\u3002"))),(0,r.kt)("h2",{id:"55-\u7b2c\u4e00\u4e2a\u4f8b\u5b50"},"5.5 \u7b2c\u4e00\u4e2a\u4f8b\u5b50"),(0,r.kt)("p",null,"\u521b\u5efa\u4e00\u4e2a ",(0,r.kt)("inlineCode",{parentName:"p"},"FurionAppService")," \u7c7b\u7ee7\u627f ",(0,r.kt)("inlineCode",{parentName:"p"},"IDynamicApiController")," \u63a5\u53e3 \u6216 \u8d34 ",(0,r.kt)("inlineCode",{parentName:"p"},"[DynamicApiController]")," \u7279\u6027\uff0c\u5e76\u5728\u8fd9\u4e2a\u7c7b\u4e2d\u7f16\u5199\u4e00\u4e2a ",(0,r.kt)("inlineCode",{parentName:"p"},"Get")," \u65b9\u6cd5\u3002"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},(0,r.kt)("inlineCode",{parentName:"strong"},"IDynamicApiController")," \u65b9\u5f0f"))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,5,7}","{1,5,7}":!0},'using Furion.DynamicApiController;\n\nnamespace Furion.Application\n{\n public class FurionAppService : IDynamicApiController\n {\n public string Get()\n {\n return $"Hello {nameof(Furion)}";\n }\n }\n}\n')),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},(0,r.kt)("inlineCode",{parentName:"strong"},"[DynamicApiController]")," \u65b9\u5f0f"))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,5,8}","{1,5,8}":!0},'using Furion.DynamicApiController;\n\nnamespace Furion.Application\n{\n [DynamicApiController]\n public class FurionAppService\n {\n public string Get()\n {\n return $"Hello {nameof(Furion)}";\n }\n }\n}\n')),(0,r.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff0c\u4e00\u4e2a ",(0,r.kt)("inlineCode",{parentName:"p"},"WebAPI")," \u63a5\u53e3\u5c31\u8fd9\u4e48\u751f\u6210\u4e86\u3002"),(0,r.kt)("img",{src:(0,l.Z)("img/dyglz.gif")}),(0,r.kt)("h2",{id:"56-\u52a8\u6001-webapi-\u539f\u7406\u89e3\u6790"},"5.6 \u52a8\u6001 ",(0,r.kt)("inlineCode",{parentName:"h2"},"WebAPI")," \u539f\u7406\u89e3\u6790"),(0,r.kt)("h3",{id:"561-\u63a7\u5236\u5668\u7279\u6027\u63d0\u4f9b\u5668"},"5.6.1 \u63a7\u5236\u5668\u7279\u6027\u63d0\u4f9b\u5668"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4f1a\u5728\u5e94\u7528\u542f\u52a8\u65f6\u6ce8\u518c ",(0,r.kt)("inlineCode",{parentName:"p"},"DynamicApiControllerFeatureProvider")," \u63a7\u5236\u5668\u7279\u6027\u63d0\u4f9b\u5668\uff0c\u8be5\u63d0\u4f9b\u5668\u7ee7\u627f\u81ea ",(0,r.kt)("inlineCode",{parentName:"p"},"ControllerFeatureProvider")," \u7c7b\u3002"),(0,r.kt)("p",null,"\u63a5\u7740\u91cd\u5199 ",(0,r.kt)("inlineCode",{parentName:"p"},"bool IsController(TypeInfo typeInfo)")," \u65b9\u6cd5\uff0c\u7528\u6765\u6807\u8bc6\u63a7\u5236\u5668\u7c7b\u578b\u3002\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\uff0c",(0,r.kt)("strong",{parentName:"p"},"\u7ee7\u627f\u81ea ",(0,r.kt)("inlineCode",{parentName:"strong"},"ControllerBase")," \u7c7b\u6216 ",(0,r.kt)("inlineCode",{parentName:"strong"},"IDynamicApiController")," \u63a5\u53e3\u6216 ",(0,r.kt)("inlineCode",{parentName:"strong"},"[DynamicApiController]")," \u7279\u6027\u90fd\u4f1a\u88ab\u6807\u8bb0\u4e3a\u63a7\u5236\u5668\u7c7b\u578b\u3002")),(0,r.kt)("h3",{id:"562-\u5e94\u7528\u6a21\u578b\u8f6c\u6362\u5668"},"5.6.2 \u5e94\u7528\u6a21\u578b\u8f6c\u6362\u5668"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u540c\u65f6\u5728\u5e94\u7528\u542f\u52a8\u65f6\u6ce8\u518c ",(0,r.kt)("inlineCode",{parentName:"p"},"DynamicApiControllerApplicationModelConvention")," \u5e94\u7528\u6a21\u578b\u8f6c\u6362\u5668\uff0c\u8be5\u8f6c\u6362\u5668\u7ee7\u627f\u81ea ",(0,r.kt)("inlineCode",{parentName:"p"},"IApplicationModelConvention")," \u63a5\u53e3\u3002"),(0,r.kt)("p",null,"\u63a5\u7740\u5b9e\u73b0 ",(0,r.kt)("inlineCode",{parentName:"p"},"void Apply(ApplicationModel application)")," \u63a5\u53e3\u65b9\u6cd5\u3002\u5728\u8be5\u65b9\u6cd5\u4e2d\u914d\u7f6e\u63a7\u5236\u5668\u540d\u79f0\u3001\u8def\u7531\u3001\u5bfc\u51fa\u53ef\u89c1\u6027\u53ca\u52a8\u4f5c\u65b9\u6cd5\u540d\u79f0\u3001\u8def\u7531\u3001\u5bfc\u51fa\u53ef\u89c1\u6027\u7b49\u3002"),(0,r.kt)("p",null,"\u5b9e\u9645\u4e0a\u8be5\u65b9\u6cd5\u505a\u7684\u5c31\u662f\u6309\u7167 ",(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("a",{parentName:"strong",href:"#521-webapi-%E7%BA%A6%E5%AE%9A"},"WebAPI \u7ea6\u5b9a"))," \u63d0\u524d\u5e2e\u6211\u4eec\u914d\u7f6e\u597d\u8def\u7531\u3001\u8bf7\u6c42\u8c13\u8bcd\u7b49\u4fe1\u606f\u3002\u907f\u514d\u4e86\u624b\u52a8\u914d\u7f6e\u7684\u540c\u65f6\u8fd8\u589e\u52a0\u4e86\u8bb8\u591a\u65b0\u7279\u6027\uff0c\u5982",(0,r.kt)("strong",{parentName:"p"},"\u7248\u672c\u63a7\u5236\u3002")),(0,r.kt)("h2",{id:"57-\u52a8\u6001-webapi-\u914d\u7f6e\u7ea6\u5b9a"},"5.7 \u52a8\u6001 ",(0,r.kt)("inlineCode",{parentName:"h2"},"WebAPI")," \u914d\u7f6e\u7ea6\u5b9a"),(0,r.kt)("h3",{id:"571-\u63a7\u5236\u5668\u9ed8\u8ba4\u7ea6\u5b9a"},"5.7.1 \u63a7\u5236\u5668\u9ed8\u8ba4\u7ea6\u5b9a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u751f\u6210\u63a7\u5236\u5668\u540d\u79f0\u9ed8\u8ba4\u53bb\u9664\u4ee5 ",(0,r.kt)("inlineCode",{parentName:"li"},"AppServices\uff0cAppService\uff0cApiController\uff0cController\uff0cServices\uff0cService")," \u4f5c\u4e3a\u524d\u540e\u7f00\u7684\u5b57\u7b26\u4e32\u3002\u89c1\u7b2c\u4e00\u4e2a\u4f8b\u5b50\u4e2d\u7684 ",(0,r.kt)("inlineCode",{parentName:"li"},"FurionAppService -> Furion")," ",(0,r.kt)("strong",{parentName:"li"},"\u652f\u6301\u81ea\u5b9a\u4e49\u914d\u7f6e")),(0,r.kt)("li",{parentName:"ul"},"\u63a7\u5236\u5668\u540d\u79f0\u5e26 ",(0,r.kt)("inlineCode",{parentName:"li"},"V[0-9_]")," \u7ed3\u5c3e\u7684\uff0c\u4f1a\u81ea\u52a8\u751f\u6210\u63a7\u5236\u5668\u7248\u672c\u53f7\uff0c\u5982 ",(0,r.kt)("inlineCode",{parentName:"li"},"FurionAppServiceV2 -> Furion@2"),"\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"FurionAppServiceV1_1_0 -> Furion@1.1.0"),"\u3002",(0,r.kt)("strong",{parentName:"li"},"\u652f\u6301\u7248\u672c\u5206\u9694\u7b26\u914d\u7f6e")),(0,r.kt)("li",{parentName:"ul"},"\u63a7\u5236\u540d\u79f0\u4ee5 ",(0,r.kt)("inlineCode",{parentName:"li"},"\u9a86\u9a7c\u547d\u540d\uff08CamelCase\uff09")," \u4f1a\u81ea\u52a8\u5207\u5272\u6210\u591a\u4e2a\u5355\u8bcd ",(0,r.kt)("inlineCode",{parentName:"li"},"-")," \u8fde\u63a5\u3002",(0,r.kt)("strong",{parentName:"li"},"\u652f\u6301\u81ea\u5b9a\u4e49\u914d\u7f6e"))),(0,r.kt)("h3",{id:"572-\u52a8\u4f5c\u65b9\u6cd5\u9ed8\u8ba4\u7ea6\u5b9a"},"5.7.2 \u52a8\u4f5c\u65b9\u6cd5\u9ed8\u8ba4\u7ea6\u5b9a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u751f\u6210\u7684\u52a8\u4f5c\u65b9\u6cd5\u540d\u79f0\u9ed8\u8ba4\u53bb\u9664\u4ee5 ",(0,r.kt)("inlineCode",{parentName:"li"},"Post/Add/Create/Insert/Submit\uff0cGetAll/GetList/Get/Find/Fetch/Query/Search\uff0cPut/Update\uff0cDelete/Remove/Clear\uff0cPatch")," \u5f00\u5934\u7684\u5b57\u7b26\u4e32\u3002",(0,r.kt)("strong",{parentName:"li"},"\u652f\u6301\u81ea\u5b9a\u4e49\u914d\u7f6e")),(0,r.kt)("li",{parentName:"ul"},"\u751f\u6210\u7684\u52a8\u4f5c\u65b9\u6cd5\u540d\u79f0\u9ed8\u8ba4\u53bb\u9664\u4ee5 ",(0,r.kt)("inlineCode",{parentName:"li"},"Async")," \u4f5c\u4e3a\u524d\u540e\u7f00\u7684\u5b57\u7b26\u4e32\u3002",(0,r.kt)("strong",{parentName:"li"},"\u652f\u6301\u81ea\u5b9a\u4e49\u914d\u7f6e")),(0,r.kt)("li",{parentName:"ul"},"\u52a8\u4f5c\u65b9\u6cd5\u540d\u79f0\u5e26 ",(0,r.kt)("inlineCode",{parentName:"li"},"V[0-9_]")," \u7ed3\u5c3e\u7684\uff0c\u4f1a\u81ea\u52a8\u751f\u6210\u52a8\u4f5c\u65b9\u6cd5\u7248\u672c\u53f7\uff0c\u5982 ",(0,r.kt)("inlineCode",{parentName:"li"},"ChangePasswordV2 -> ChangePassword@2"),"\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"ChangePasswordV1_1_0 -> ChangePassword@1.1.0"),"\u3002",(0,r.kt)("strong",{parentName:"li"},"\u652f\u6301\u7248\u672c\u5206\u9694\u7b26\u914d\u7f6e")),(0,r.kt)("li",{parentName:"ul"},"\u52a8\u4f5c\u65b9\u6cd5\u540d\u79f0\u4ee5 ",(0,r.kt)("inlineCode",{parentName:"li"},"\u9a86\u9a7c(\u9a7c\u5cf0)/\u5e15\u65af\u5361\u547d\u540d\uff08CamelCase/Pascal\uff09")," \u4f1a\u81ea\u52a8\u5207\u5272\u6210\u591a\u4e2a\u5355\u8bcd ",(0,r.kt)("inlineCode",{parentName:"li"},"-")," \u8fde\u63a5\u3002",(0,r.kt)("strong",{parentName:"li"},"\u652f\u6301\u81ea\u5b9a\u4e49\u914d\u7f6e")),(0,r.kt)("li",{parentName:"ul"},"\u52a8\u4f5c\u65b9\u6cd5\u53c2\u6570\u5c06\u81ea\u52a8\u8f6c\u4e3a\u5c0f\u5199\u3002",(0,r.kt)("strong",{parentName:"li"},"\u652f\u6301\u81ea\u5b9a\u4e49\u914d\u7f6e"))),(0,r.kt)("h3",{id:"573-\u8bf7\u6c42\u8c13\u8bcd\u9ed8\u8ba4\u7ea6\u5b9a"},"5.7.3 \u8bf7\u6c42\u8c13\u8bcd\u9ed8\u8ba4\u7ea6\u5b9a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u52a8\u4f5c\u65b9\u6cd5\u540d",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"\u4ee5 ",(0,r.kt)("inlineCode",{parentName:"li"},"Post/Add/Create/Insert/Submit")," \u5f00\u5934\uff0c\u5219\u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"li"},"[HttpPost]")," \u7279\u6027\u3002"),(0,r.kt)("li",{parentName:"ul"},"\u4ee5 ",(0,r.kt)("inlineCode",{parentName:"li"},"GetAll/GetList/Get/Find/Fetch/Query")," \u5f00\u5934\uff0c\u5219\u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"li"},"[HttpGet]")," \u7279\u6027\u3002"),(0,r.kt)("li",{parentName:"ul"},"\u4ee5 ",(0,r.kt)("inlineCode",{parentName:"li"},"Put/Update")," \u5f00\u5934\uff0c\u5219\u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"li"},"[HttpPut]")," \u7279\u6027\u3002"),(0,r.kt)("li",{parentName:"ul"},"\u4ee5 ",(0,r.kt)("inlineCode",{parentName:"li"},"Delete/Remove/Clear")," \u5f00\u5934\uff0c\u5219\u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"li"},"[HttpDelete]")," \u7279\u6027\u3002"),(0,r.kt)("li",{parentName:"ul"},"\u4ee5 ",(0,r.kt)("inlineCode",{parentName:"li"},"Patch")," \u5f00\u5934\uff0c\u5219\u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"li"},"[HttpPatch]")," \u7279\u6027"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"\u652f\u6301\u81ea\u5b9a\u4e49\u914d\u7f6e")))),(0,r.kt)("li",{parentName:"ul"},"\u5982\u679c\u4e0d\u5728\u4e0a\u9762\u7ea6\u5b9a\u4e2d\uff0c\u5219\u9ed8\u8ba4\u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"li"},"[HttpPost]")," \u7279\u6027\u3002",(0,r.kt)("strong",{parentName:"li"},"\u652f\u6301\u81ea\u5b9a\u4e49\u914d\u7f6e"))),(0,r.kt)("h3",{id:"574-\u8def\u7531\u5730\u5740\u9ed8\u8ba4\u7ea6\u5b9a"},"5.7.4 \u8def\u7531\u5730\u5740\u9ed8\u8ba4\u7ea6\u5b9a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u9ed8\u8ba4\u4ee5 ",(0,r.kt)("inlineCode",{parentName:"li"},"api")," \u5f00\u5934\u3002",(0,r.kt)("strong",{parentName:"li"},"\u652f\u6301\u81ea\u5b9a\u4e49\u914d\u7f6e")),(0,r.kt)("li",{parentName:"ul"},"\u9ed8\u8ba4\u8f6c\u6362\u4e3a\u5c0f\u5199\u8def\u7531\u5730\u5740\u3002",(0,r.kt)("strong",{parentName:"li"},"\u652f\u6301\u81ea\u5b9a\u4e49\u914d\u7f6e")),(0,r.kt)("li",{parentName:"ul"},"\u751f\u6210\u63a7\u5236\u5668\u8def\u7531\u6a21\u677f\u683c\u5f0f\u4e3a\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"api/\u524d\u7f6e\u53c2\u6570\u5217\u8868/\u6a21\u5757\u540d\u6216\u9ed8\u8ba4\u533a\u57df\u540d/[controller@\u7248\u672c\u53f7]/\u540e\u7f6e\u53c2\u6570\u5217\u8868")),(0,r.kt)("li",{parentName:"ul"},"\u751f\u6210\u52a8\u4f5c\u65b9\u6cd5\u8def\u7531\u6a21\u677f\u683c\u5f0f\u4e3a\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"\u524d\u7f6e\u53c2\u6570\u5217\u8868/\u6a21\u5757\u540d/[action@\u7248\u672c\u53f7]/\u540e\u7f6e\u53c2\u6570\u5217\u8868"))),(0,r.kt)("h3",{id:"575-\u5176\u4ed6\u7ea6\u5b9a"},"5.7.5 \u5176\u4ed6\u7ea6\u5b9a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u9ed8\u8ba4\u4e0d\u5904\u7406 ",(0,r.kt)("inlineCode",{parentName:"li"},"ControllerBase")," \u63a7\u5236\u5668\u7c7b\u578b\u3002",(0,r.kt)("strong",{parentName:"li"},"\u652f\u6301\u81ea\u5b9a\u4e49\u914d\u7f6e")),(0,r.kt)("li",{parentName:"ul"},"\u9ed8\u8ba4\u4e0d\u5904\u7406 ",(0,r.kt)("inlineCode",{parentName:"li"},"GET\uff0cHEAD")," \u8bf7\u6c42\u7684\u5f15\u7528\u7c7b\u578b\u53c2\u6570\u3002",(0,r.kt)("strong",{parentName:"li"},"\u652f\u6301\u81ea\u5b9a\u4e49\u914d\u7f6e"))),(0,r.kt)("h2",{id:"58-\u66f4\u591a\u4f8b\u5b50"},"5.8 \u66f4\u591a\u4f8b\u5b50"),(0,r.kt)("h3",{id:"581-\u591a\u79cd\u8bf7\u6c42\u8c13\u8bcd\u65b9\u6cd5"},"5.8.1 \u591a\u79cd\u8bf7\u6c42\u8c13\u8bcd\u65b9\u6cd5"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{7,12,17,22,27}","{7,12,17,22,27}":!0},'using Furion.DynamicApiController;\n\nnamespace Furion.Application\n{\n public class FurionAppService : IDynamicApiController\n {\n public string Get()\n {\n return $"GET \u8bf7\u6c42";\n }\n\n public string Post()\n {\n return $"POST \u8bf7\u6c42";\n }\n\n public string Delete()\n {\n return $"DELETE \u8bf7\u6c42";\n }\n\n public string Put()\n {\n return $"PUT \u8bf7\u6c42";\n }\n\n public string Patch()\n {\n return $"PATCH \u8bf7\u6c42";\n }\n }\n}\n')),(0,r.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,r.kt)("img",{src:(0,l.Z)("img/dgqqwc.png")}),(0,r.kt)("h3",{id:"582-\u591a\u4e2a\u81ea\u5b9a\u4e49\u52a8\u4f5c\u65b9\u6cd5"},"5.8.2 \u591a\u4e2a\u81ea\u5b9a\u4e49\u52a8\u4f5c\u65b9\u6cd5"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{7,12,17}","{7,12,17}":!0},'using Furion.DynamicApiController;\n\nnamespace Furion.Application\n{\n public class FurionAppService : IDynamicApiController\n {\n public string GetVersion()\n {\n return $"v1.0.0";\n }\n\n public string ChangeProfile()\n {\n return "\u4fee\u6539\u6210\u529f";\n }\n\n public string DeleteUser()\n {\n return "\u5220\u9664\u6210\u529f";\n }\n }\n}\n')),(0,r.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,r.kt)("img",{src:(0,l.Z)("img/dzmc.png")}),(0,r.kt)("h3",{id:"583-\u5e26\u53c2\u6570\u52a8\u4f5c\u65b9\u6cd5"},"5.8.3 \u5e26\u53c2\u6570\u52a8\u4f5c\u65b9\u6cd5"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{7,12,17}","{7,12,17}":!0},'using Furion.DynamicApiController;\n\nnamespace Furion.Application\n{\n public class FurionAppService : IDynamicApiController\n {\n public string GetUser(int id)\n {\n return $"{id}";\n }\n\n public string GetUser(int id, string name)\n {\n return $"{id} {name}";\n }\n\n public TestDto Add(TestDto testDto)\n {\n return testDto;\n }\n }\n}\n')),(0,r.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,r.kt)("img",{src:(0,l.Z)("img/dcsff.gif")}),(0,r.kt)("h3",{id:"584-gethead-\u7c7b\u7c7b\u578b\u53c2\u6570"},"5.8.4 ",(0,r.kt)("inlineCode",{parentName:"h3"},"GET/HEAD")," \u7c7b\u7c7b\u578b\u53c2\u6570"),(0,r.kt)("p",null,"\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"ASP.NET Core")," \u4f1a\u5c06 ",(0,r.kt)("inlineCode",{parentName:"p"},"GET/HEAD")," \u8bf7\u6c42\u4e2d\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"\u7c7b\u7c7b\u578b\u53c2\u6570")," \u8bbe\u7f6e\u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"[FromBody]")," \u7ed1\u5b9a\uff0c\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{7}","{7}":!0},"using Furion.DynamicApiController;\n\nnamespace Furion.Application\n{\n public class FurionAppService : IDynamicApiController\n {\n public TestDto GetTest(TestDto testDto)\n {\n return testDto;\n }\n }\n}\n")),(0,r.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,r.kt)("img",{src:(0,l.Z)("img/getyycs.png")}),(0,r.kt)("p",null,"\u4f46\u662f\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"GET\u3001HEAD")," \u8bf7\u6c42\u4e0d\u652f\u6301 ",(0,r.kt)("inlineCode",{parentName:"p"},"From Body")," \u7ed1\u5b9a\u3002\u6240\u4ee5\u6211\u4eec\u9700\u8981\u8f6c\u6362\u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"Query")," \u67e5\u8be2\u53c2\u6570\u3002"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u652f\u6301\u4ee5\u4e0b\u4e24\u79cd\u65b9\u5f0f\u914d\u7f6e\uff1a"),(0,r.kt)(p.Z,{defaultValue:"fromquery",values:[{label:"[FromQuery] \u7279\u6027",value:"fromquery"},{label:"\u914d\u7f6e DynamicApiControllerSettings",value:"DynamicApiControllerSettings"}],mdxType:"Tabs"},(0,r.kt)(o.Z,{value:"fromquery",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{2,8}","{2,8}":!0},"using Furion.DynamicApiController;\nusing Microsoft.AspNetCore.Mvc;\n\nnamespace Furion.Application\n{\n public class FurionAppService : IDynamicApiController\n {\n public TestDto GetTest([FromQuery] TestDto testDto)\n {\n return testDto;\n }\n }\n}\n"))),(0,r.kt)(o.Z,{value:"DynamicApiControllerSettings",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json",metastring:'{2-4} title="Furion.Web.Entry/appsettings.json"',"{2-4}":!0,title:'"Furion.Web.Entry/appsettings.json"'},'{\n "DynamicApiControllerSettings": {\n "ModelToQuery": true\n }\n}\n')))),(0,r.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,r.kt)("img",{src:(0,l.Z)("img/modeltoquery.png")}),(0,r.kt)("h3",{id:"585-\u81ea\u5b9a\u4e49\u53c2\u6570\u4f4d\u7f6e"},"5.8.5 \u81ea\u5b9a\u4e49\u53c2\u6570\u4f4d\u7f6e"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u4e86\u975e\u5e38\u65b9\u4fbf\u7684\u81ea\u5b9a\u4e49\u53c2\u6570\u4f4d\u7f6e\u7684\u7279\u6027 ",(0,r.kt)("inlineCode",{parentName:"p"},"[ApiSeat]"),"\uff0c\u901a\u8fc7 ",(0,r.kt)("inlineCode",{parentName:"p"},"[ApiSeat]")," \u53ef\u914d\u7f6e\u53c2\u6570\u4f4d\u7f6e\uff0c\u652f\u6301\u4ee5\u4e0b\u56db\u79cd\u4f4d\u7f6e\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"ApiSeats.ControllerStart"),"\uff1a\u63a7\u5236\u5668\u4e4b\u524d"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"ApiSeats.ControllerEnd"),"\uff1a\u63a7\u5236\u5668\u4e4b\u540e"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"ApiSeats.ActionStart"),"\uff1a\u52a8\u4f5c\u65b9\u6cd5\u4e4b\u524d"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"ApiSeats.ActionEnd"),"\uff1a\u52a8\u4f5c\u65b9\u6cd5\u4e4b\u540e\u3002",(0,r.kt)("strong",{parentName:"li"},"\u9ed8\u8ba4\u503c"))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{8-9,15-20}","{8-9,15-20}":!0},'using Furion.DynamicApiController;\nusing System;\n\nnamespace Furion.Application\n{\n public class FurionAppService : IDynamicApiController\n {\n // \u53c2\u6570\u9ed8\u8ba4\u4e3a ApiSeats.ActionEnd\n public string RouteSeat(int id, string name)\n {\n return "\u914d\u7f6e\u8def\u7531\u53c2\u6570\u4f4d\u7f6e";\n }\n\n public string RouteSeat(\n [ApiSeat(ApiSeats.ControllerStart)] int id, // \u63a7\u5236\u5668\u540d\u79f0\u4e4b\u524d\n [ApiSeat(ApiSeats.ControllerEnd)] string name, // \u63a7\u5236\u5668\u540d\u79f0\u4e4b\u540e\n [ApiSeat(ApiSeats.ControllerEnd)] int age, // \u63a7\u5236\u5668\u540d\u79f0\u4e4b\u540e\n [ApiSeat(ApiSeats.ActionStart)] decimal weight, // \u52a8\u4f5c\u65b9\u6cd5\u540d\u79f0\u4e4b\u524d\n [ApiSeat(ApiSeats.ActionStart)] float height, // \u52a8\u4f5c\u65b9\u6cd5\u540d\u79f0\u4e4b\u524d\n [ApiSeat(ApiSeats.ActionEnd)] DateTime birthday) // \u52a8\u4f5c\u65b9\u6cd5\u540d\u79f0\u4e4b\u540e\uff08\u9ed8\u8ba4\u503c\uff09\n {\n return "\u914d\u7f6e\u8def\u7531\u53c2\u6570\u4f4d\u7f6e";\n }\n }\n}\n')),(0,r.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,r.kt)("img",{src:(0,l.Z)("img/cswz.png")}),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u6e29\u99a8\u63d0\u793a")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u591a\u4e2a ",(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("inlineCode",{parentName:"strong"},"\u540c\u4f4d\u7f6e"))," \u914d\u7f6e\u7684\u53c2\u6570\u5c06\u6309\u7167 ",(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("inlineCode",{parentName:"strong"},"\u5b9a\u4e49\u53c2\u6570\u987a\u5e8f"))," \u8fdb\u884c\u6392\u5e8f\u3002"))),(0,r.kt)("div",{className:"admonition admonition-caution alert alert--warning"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 16 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"}))),"\u7279\u522b\u6ce8\u610f")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},(0,r.kt)("inlineCode",{parentName:"p"},"[ApiSeat]")," \u53ea\u80fd\u5e94\u7528\u4e8e\u8d34\u4e86 ",(0,r.kt)("inlineCode",{parentName:"p"},"[FromRoute]")," \u7279\u6027\u7684\u53c2\u6570\u6216 ",(0,r.kt)("inlineCode",{parentName:"p"},"\u57fa\u5143\u7c7b\u578b\u3001\u503c\u7c7b\u578b\u3001\u53ef\u7a7a\u57fa\u5143\u7c7b\u578b\u548c\u53ef\u7a7a\u503c\u7c7b\u578b"),"\u3002"))),(0,r.kt)("h3",{id:"586-\u81ea\u5b9a\u4e49\u8bf7\u6c42\u8c13\u8bcd"},"5.8.6 \u81ea\u5b9a\u4e49\u8bf7\u6c42\u8c13\u8bcd"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{2,8}","{2,8}":!0},'using Furion.DynamicApiController;\nusing Microsoft.AspNetCore.Mvc;\n\nnamespace Furion.Application\n{\n public class FurionAppService : IDynamicApiController\n {\n [HttpPost]\n public string GetVersion()\n {\n return "1.0.0";\n }\n }\n}\n')),(0,r.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,r.kt)("img",{src:(0,l.Z)("img/zdywc.png")}),(0,r.kt)("h3",{id:"587-\u652f\u6301\u591a\u4e2a\u8c13\u8bcd"},"5.8.7 \u652f\u6301\u591a\u4e2a\u8c13\u8bcd"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{2,8}","{2,8}":!0},'using Furion.DynamicApiController;\nusing Microsoft.AspNetCore.Mvc;\n\nnamespace Furion.Application\n{\n public class FurionAppService : IDynamicApiController\n {\n [HttpPost, HttpGet, AcceptVerbs("PUT", "DELETE")]\n public string GetVersion()\n {\n return "1.0.0";\n }\n }\n}\n')),(0,r.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,r.kt)("img",{src:(0,l.Z)("img/dgwc.png")}),(0,r.kt)("div",{className:"admonition admonition-caution alert alert--warning"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 16 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"}))),"\u7279\u522b\u6ce8\u610f")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u5982\u679c\u52a8\u4f5c\u65b9\u6cd5\u4e2d\u542b\u6709 ",(0,r.kt)("inlineCode",{parentName:"p"},"\u7c7b\u7c7b\u578b\u53c2\u6570"),"\uff0c\u4e14\u542b\u6709 ",(0,r.kt)("inlineCode",{parentName:"p"},"POST/PUT/DELETE")," \u4efb\u610f\u8bf7\u6c42\u8c13\u8bcd\uff0c\u90a3\u4e48\u8be5\u53c2\u6570\u4f1a\u81ea\u52a8\u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"p"},"[FromBody]")," \u53c2\u6570\uff0c\u5373\u4f7f\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"GET/HEAD")," \u8bf7\u6c42\u4e2d\u4e0d\u652f\u6301\u3002"))),(0,r.kt)("h3",{id:"588-\u652f\u6301\u81ea\u5b9a\u4e49\u8def\u7531"},"5.8.8 \u652f\u6301\u81ea\u5b9a\u4e49\u8def\u7531"),(0,r.kt)("p",null,"\u652f\u6301\u63a7\u5236\u5668\u548c\u52a8\u4f5c\u65b9\u6cd5\u81ea\u5b9a\u4e49\u8def\u7531\uff1a"),(0,r.kt)(p.Z,{defaultValue:"kzqrl",values:[{label:"\u81ea\u5b9a\u4e49\u63a7\u5236\u5668\u8def\u7531",value:"kzqrl"},{label:"\u81ea\u5b9a\u4e49\u52a8\u4f5c\u65b9\u6cd5\u8def\u7531",value:"dzffrl"},{label:"\u540c\u65f6\u81ea\u5b9a\u4e49\u8def\u7531",value:"allrl"},{label:"\u8c13\u8bcd\u81ea\u5b9a\u4e49\u8def\u7531",value:"vcrl"}],mdxType:"Tabs"},(0,r.kt)(o.Z,{value:"kzqrl",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{2,6}","{2,6}":!0},'using Furion.DynamicApiController;\nusing Microsoft.AspNetCore.Mvc;\n\nnamespace Furion.Application\n{\n [Route("customapi/mobile/[controller]")]\n public class FurionAppService : IDynamicApiController\n {\n public string GetVersion()\n {\n return "1.0.0";\n }\n }\n}\n')),(0,r.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,r.kt)("img",{src:(0,l.Z)("img/kzqrl.png")})),(0,r.kt)(o.Z,{value:"dzffrl",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{2,8}","{2,8}":!0},'using Furion.DynamicApiController;\nusing Microsoft.AspNetCore.Mvc;\n\nnamespace Furion.Application\n{\n public class FurionAppService : IDynamicApiController\n {\n [Route("customapi/[action]")]\n public string GetVersion()\n {\n return "1.0.0";\n }\n }\n}\n')),(0,r.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,r.kt)("img",{src:(0,l.Z)("img/dzffrl.png")})),(0,r.kt)(o.Z,{value:"allrl",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{2,6,9}","{2,6,9}":!0},'using Furion.DynamicApiController;\nusing Microsoft.AspNetCore.Mvc;\n\nnamespace Furion.Application\n{\n [Route("customapi/mobile/[controller]")]\n public class FurionAppService : IDynamicApiController\n {\n [Route("get/[action]")]\n public string GetVersion()\n {\n return "1.0.0";\n }\n }\n}\n')),(0,r.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,r.kt)("img",{src:(0,l.Z)("img/allrl.png")})),(0,r.kt)(o.Z,{value:"vcrl",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{9}","{9}":!0},'using Furion.DynamicApiController;\nusing Microsoft.AspNetCore.Mvc;\n\nnamespace Furion.Application\n{\n [Route("api/[controller]")]\n public class FurionAppService : IDynamicApiController\n {\n [HttpGet("get/[action]")]\n public string GetVersion()\n {\n return "1.0.0";\n }\n }\n}\n')),(0,r.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,r.kt)("img",{src:(0,l.Z)("img/wcrl.png")}))),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u5c0f\u63d0\u793a")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u52a8\u4f5c\u65b9\u6cd5\u81ea\u5b9a\u4e49\u8def\u7531\u5982\u679c\u4ee5 ",(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("inlineCode",{parentName:"strong"},"/"))," \u5f00\u5934\uff0c\u5219\u4e0d\u4f1a\u5408\u5e76\u63a7\u5236\u5668\u8def\u7531\u3002"))),(0,r.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u63a8\u8350\u914d\u7f6e")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u81ea\u5b9a\u4e49\u8def\u7531\u5982\u679c\u9700\u8981\u7528\u5230 ",(0,r.kt)("strong",{parentName:"p"},"\u63a7\u5236\u5668/\u52a8\u4f5c\u65b9\u6cd5\u540d\u79f0"),"\uff0c\u63a8\u8350\u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"[controller]")," \u6216 ",(0,r.kt)("inlineCode",{parentName:"p"},"[action]")," \u5360\u4f4d\u7b26\uff0c\u56e0\u4e3a\u8be5\u5360\u4f4d\u7b26\u5df2\u7ecf\u81ea\u52a8\u5904\u7406\u4e86 ",(0,r.kt)("strong",{parentName:"p"},"\u524d\u540e\u7f00\u3001\u7248\u672c\u53f7\u3001\u6a21\u5757\u540d\u79f0"),"\u7b49\u3002"))),(0,r.kt)("h3",{id:"589-\u591a\u8def\u7531\u968f\u610f\u7ec4\u5408"},"5.8.9 \u591a\u8def\u7531\u968f\u610f\u7ec4\u5408"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u4e86\u975e\u5e38\u7075\u6d3b\u7684\u5404\u79cd\u8def\u7531\u7ec4\u5408\u65b9\u5f0f\uff0c\u652f\u6301\u4e00\u5bf9\u591a\uff0c\u591a\u5bf9\u591a\u8def\u7531\u7ec4\u5408\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{6-8,11-14}","{6-8,11-14}":!0},'using Furion.DynamicApiController;\nusing Microsoft.AspNetCore.Mvc;\n\nnamespace Furion.Application\n{\n [Route("api/[controller]")]\n [Route("api/[controller]/second")]\n [Route("api/[controller]/three")]\n public class FurionAppService : IDynamicApiController\n {\n [HttpGet]\n [HttpGet("get/[action]")]\n [HttpPost]\n [HttpPost("post/cus-version")]\n public string GetVersion()\n {\n return "1.0.0";\n }\n }\n}\n')),(0,r.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,r.kt)("img",{src:(0,l.Z)("img/dlrzh.gif")}),(0,r.kt)("div",{className:"admonition admonition-caution alert alert--warning"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 16 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"}))),"\u7279\u522b\u6ce8\u610f")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u52a8\u4f5c\u65b9\u6cd5\u4e0d\u80fd\u540c\u65f6\u8d34 ",(0,r.kt)("inlineCode",{parentName:"p"},"[Route]")," \u548c ",(0,r.kt)("inlineCode",{parentName:"p"},"[HttpMethod]")," \u7279\u6027\uff0c\u53ea\u80fd\u4e8c\u53d6\u4e00\u3002"))),(0,r.kt)("h3",{id:"5810-\u652f\u6301\u7248\u672c\u63a7\u5236"},"5.8.10 \u652f\u6301\u7248\u672c\u63a7\u5236"),(0,r.kt)(p.Z,{defaultValue:"kzqbb",values:[{label:"\u63a7\u5236\u5668\u7248\u672c",value:"kzqbb"},{label:"\u52a8\u4f5c\u65b9\u6cd5\u7248\u672c",value:"dzffbb"}],mdxType:"Tabs"},(0,r.kt)(o.Z,{value:"kzqbb",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{5,13,21}","{5,13,21}":!0},"using Furion.DynamicApiController;\n\nnamespace Furion.Application\n{\n public class FurionAppServiceV1 : IDynamicApiController\n {\n public string Get()\n {\n return nameof(Furion);\n }\n }\n\n public class FurionAppServiceV1_2 : IDynamicApiController\n {\n public string Get()\n {\n return nameof(Furion);\n }\n }\n\n public class FurionAppServiceV1_2_1 : IDynamicApiController\n {\n public string Get()\n {\n return nameof(Furion);\n }\n }\n}\n")),(0,r.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,r.kt)("img",{src:(0,l.Z)("img/kzqbb.png")})),(0,r.kt)(o.Z,{value:"dzffbb",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{7,12,16}","{7,12,16}":!0},"using Furion.DynamicApiController;\n\nnamespace Furion.Application\n{\n public class FurionAppService : IDynamicApiController\n {\n public string Get()\n {\n return nameof(Furion);\n }\n\n public string GetV1()\n {\n return nameof(Furion);\n }\n public string GetV2_1()\n {\n return nameof(Furion);\n }\n }\n}\n")),(0,r.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,r.kt)("img",{src:(0,l.Z)("img/dzffbb.png")}))),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u7248\u672c\u751f\u6210\u539f\u7406")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("inlineCode",{parentName:"strong"},"V[0-9_]"))," \u7ed3\u5c3e\u7684\u547d\u540d\u81ea\u52a8\u89e3\u6790\u6210\u7248\u672c\u53f7\uff0c\u5982 ",(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("inlineCode",{parentName:"strong"},"FurionAppServiceV2 -> Furion@2")),"\u3002"))),(0,r.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u7248\u672c\u590d\u5199")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u9664\u4e86\u901a\u8fc7\u7279\u5b9a\u540e\u7f00\u65b9\u5f0f\u4ee5\u5916\uff0c\u7248\u672c\u8fd8\u76f4\u63a5\u901a\u8fc7 ",(0,r.kt)("inlineCode",{parentName:"p"},"[ApiDescriptionSettings]")," \u8fdb\u884c\u590d\u5199\u3002\u5982\uff1a"),(0,r.kt)("pre",{parentName:"div"},(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,2}","{1,2}":!0},'[ApiDescriptionSettings(Version = "4.0")]\npublic string GetV1()\n{\n return nameof(Furion);\n}\n')),(0,r.kt)("p",{parentName:"div"},"\u8fd9\u65f6\uff0c\u751f\u6210\u7248\u672c\u5c06\u91c7\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"4.0")," \u66ff\u4ee3 ",(0,r.kt)("inlineCode",{parentName:"p"},"1")))),(0,r.kt)("h3",{id:"5811-\u4e0d\u516c\u5f00\u63a7\u5236\u5668\u6216\u52a8\u4f5c\u65b9\u6cd5"},"5.8.11 \u4e0d\u516c\u5f00\u63a7\u5236\u5668\u6216\u52a8\u4f5c\u65b9\u6cd5"),(0,r.kt)("p",null,"\u6709\u4e9b\u65f6\u5019\uff0c\u6211\u4eec\u65e0\u9700\u5bfc\u51fa\u67d0\u4e2a\u52a8\u4f5c\u65b9\u6cd5\u6216\u63a7\u5236\u5668\uff08",(0,r.kt)("strong",{parentName:"p"},"\u4e0d\u663e\u793a\u5230 Swagger"),"\uff09\uff0c\u53ea\u9700\u8981\u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"p"},"[ApiDescriptionSettings(false)]")," \u6216 ",(0,r.kt)("inlineCode",{parentName:"p"},"[ApiExplorerSettings(IgnoreApi = true)]"),"\u5373\u53ef\u3002"),(0,r.kt)("p",null,"\u53e6\u5916\u52a8\u4f5c\u65b9\u6cd5\u8fd8\u652f\u6301 ",(0,r.kt)("inlineCode",{parentName:"p"},"[NonAction]")," \u6807\u8bb0\u4e0d\u662f\u4e00\u4e2a\u6709\u6548\u7684\u63a7\u5236\u5668\u6216 Action\u3002"),(0,r.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u63a8\u8350\u4f7f\u7528")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u63a8\u8350\u63a7\u5236\u5668\u6216\u52a8\u4f5c\u65b9\u6cd5\u8bbe\u7f6e\u4e0d\u5bfc\u51fa\u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"[ApiDescriptionSettings(false)]")," \u7279\u6027\u3002\u8be5\u7279\u6027\u9ed8\u8ba4\u7ee7\u627f\u81ea ",(0,r.kt)("inlineCode",{parentName:"p"},"ApiExplorerSettingsAttribute")," \u7c7b\u3002"))),(0,r.kt)("h3",{id:"5812-\u4fdd\u6301\u63a7\u5236\u5668\u548c\u65b9\u6cd5\u547d\u540d"},"5.8.12 \u4fdd\u6301\u63a7\u5236\u5668\u548c\u65b9\u6cd5\u547d\u540d"),(0,r.kt)("p",null,"\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c\u52a8\u6001 API \u4f1a\u5c06\u63a7\u5236\u5668\u548c\u65b9\u6cd5\u540d\u8f93\u51fa\u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"RESTFul")," \u98ce\u683c\u7684\u8def\u7531\uff0c\u5982\u9700\u4fdd\u7559\u539f\u6709\u8bbe\u8ba1\uff0c\u53ea\u9700\u914d\u7f6e\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json"},'{\n "DynamicApiControllerSettings": {\n "KeepName": true,\n "KeepVerb": true,\n "LowercaseRoute": false\n }\n}\n')),(0,r.kt)("h3",{id:"5813-\u65b9\u6cd5\u53c2\u6570-fromquery-\u5316\u53c2\u6570\u975e\u5fc5\u586b\u53c2\u6570\u53ef\u9009"},"5.8.13 \u65b9\u6cd5\u53c2\u6570 ",(0,r.kt)("inlineCode",{parentName:"h3"},"[FromQuery]")," \u5316/\u53c2\u6570\u975e\u5fc5\u586b/\u53c2\u6570\u53ef\u9009"),(0,r.kt)("p",null,"\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c\u6240\u6709\u7684\u57fa\u5143\u7c7b\u578b\u53c2\u6570\u90fd\u4f1a\u8d34\u4e0a ",(0,r.kt)("inlineCode",{parentName:"p"},"[FromRoute]")," \u7279\u6027\uff0c\u5982\u679c\u9700\u8981\u5c06\u53c2\u6570\u8c03\u6574\u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"[FromQuery]")," \u4fee\u9970\uff0c\u53ea\u9700\u8981\u5728\u65b9\u6cd5\u4e0a\u9762\u8d34 ",(0,r.kt)("inlineCode",{parentName:"p"},"[QueryParameters]")," \u7279\u6027\u5373\u53ef\uff0c\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'[QueryParameters]\npublic string Get(int id, string name)\n{\n return nameof($"{id} {name}");\n}\n')),(0,r.kt)("p",null,"\u751f\u6210\u7684\u8def\u7531\u4e3a\uff1a",(0,r.kt)("inlineCode",{parentName:"p"},"https://xxx.com?id=1&name=Furion")),(0,r.kt)("p",null,"\u5982\u679c\u4e0d\u559c\u6b22\u6bcf\u4e2a\u90fd\u914d\u7f6e\uff0c\u4e5f\u53ef\u4ee5\u5168\u5c40\u914d\u7f6e\uff08",(0,r.kt)("strong",{parentName:"p"},"\u53ea\u4f1a\u5f71\u54cd\u57fa\u5143\u7c7b\u578b\u7684\u53c2\u6570"),"\uff09\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json"},'{\n "DynamicApiControllerSettings": {\n "UrlParameterization": true\n }\n}\n')),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u6ce8\u610f")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u8d34\u4e86 ",(0,r.kt)("inlineCode",{parentName:"p"},"[QueryParameters]")," \u4e4b\u540e\uff0c\u4f1a\u5bf9\u6240\u6709\u53c2\u6570\u5f71\u54cd\uff0c\u5305\u62ec\u7c7b\u7c7b\u578b\u53c2\u6570\uff0c\u5982\u679c\u4e0d\u9700\u8981\u5904\u7406\u67d0\u4e2a\u53c2\u6570\uff0c\u53ea\u9700\u8981\u8d34 ",(0,r.kt)("inlineCode",{parentName:"p"},"[FromXXX]")," \u7279\u6027\u5373\u53ef\u3002"))),(0,r.kt)("h3",{id:"5814-\u53c2\u6570\u7ed1\u5b9a\u914d\u7f6e"},"5.8.14 \u53c2\u6570\u7ed1\u5b9a\u914d\u7f6e"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u4e86\u591a\u79cd\u53c2\u6570\u7279\u6027\u914d\u7f6e\u53c2\u6570\u7ed1\u5b9a\u89c4\u5219\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"[FromRoute]"),"\uff1a\u901a\u8fc7\u8def\u7531\u53c2\u6570\u7ed1\u5b9a\u503c"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"[FromQuery]"),"\uff1a\u901a\u8fc7 ",(0,r.kt)("inlineCode",{parentName:"li"},"Url")," \u5730\u5740\u53c2\u6570\u7ed1\u5b9a\u503c"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"[FromBody]"),"\uff1a\u901a\u8fc7 ",(0,r.kt)("inlineCode",{parentName:"li"},"Request Body")," \u53c2\u6570\u7ed1\u5b9a\u503c"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"[FromForm]"),"\uff1a\u901a\u8fc7\u8868\u5355\u63d0\u4ea4\u7ed1\u5b9a\u503c"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"[FromHeader]"),"\uff1a\u901a\u8fc7 ",(0,r.kt)("inlineCode",{parentName:"li"},"Request Header")," \u53c2\u6570\u7ed1\u5b9a\u503c")),(0,r.kt)("h3",{id:"5815-\u81ea\u5b9a\u4e49\u6839\u636e\u65b9\u6cd5\u540d\u751f\u6210-httpmethod-\u89c4\u5219"},"5.8.15 \u81ea\u5b9a\u4e49\u6839\u636e\u65b9\u6cd5\u540d\u751f\u6210 ",(0,r.kt)("inlineCode",{parentName:"h3"},"[HttpMethod]")," \u89c4\u5219"),(0,r.kt)("p",null,"\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\uff0c\u5728\u6ca1\u6709\u914d\u7f6e ",(0,r.kt)("inlineCode",{parentName:"p"},"[HttpMethod]")," \u7279\u6027\u7684\u60c5\u51b5\u4e0b\uff0c\u4f1a\u81ea\u52a8\u6839\u636e\u65b9\u6cd5\u540d\u7b2c\u4e00\u4e2a\u53c2\u6570\u8fdb\u884c\u5206\u6790\uff0c\u5e76\u751f\u6210\u5bf9\u5e94\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"[HttpMethod]")," \u7279\u6027\uff0c\u89c4\u5219\u5982\u4e0b\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u52a8\u4f5c\u65b9\u6cd5\u540d",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"\u4ee5 ",(0,r.kt)("inlineCode",{parentName:"li"},"Post/Add/Create/Insert/Submit")," \u5f00\u5934\uff0c\u5219\u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"li"},"[HttpPost]")," \u7279\u6027\u3002"),(0,r.kt)("li",{parentName:"ul"},"\u4ee5 ",(0,r.kt)("inlineCode",{parentName:"li"},"GetAll/GetList/Get/Find/Fetch/Query")," \u5f00\u5934\uff0c\u5219\u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"li"},"[HttpGet]")," \u7279\u6027\u3002"),(0,r.kt)("li",{parentName:"ul"},"\u4ee5 ",(0,r.kt)("inlineCode",{parentName:"li"},"Put/Update")," \u5f00\u5934\uff0c\u5219\u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"li"},"[HttpPut]")," \u7279\u6027\u3002"),(0,r.kt)("li",{parentName:"ul"},"\u4ee5 ",(0,r.kt)("inlineCode",{parentName:"li"},"Delete/Remove/Clear")," \u5f00\u5934\uff0c\u5219\u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"li"},"[HttpDelete]")," \u7279\u6027\u3002"),(0,r.kt)("li",{parentName:"ul"},"\u4ee5 ",(0,r.kt)("inlineCode",{parentName:"li"},"Patch")," \u5f00\u5934\uff0c\u5219\u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"li"},"[HttpPatch]")," \u7279\u6027"),(0,r.kt)("li",{parentName:"ul"},"\u4ee5 ",(0,r.kt)("inlineCode",{parentName:"li"},"Head")," \u5f00\u5934\uff0c\u5219\u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"li"},"[HttpHead]")," \u7279\u6027"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"\u652f\u6301\u81ea\u5b9a\u4e49\u914d\u7f6e")))),(0,r.kt)("li",{parentName:"ul"},"\u5982\u679c\u4e0d\u5728\u4e0a\u9762\u7ea6\u5b9a\u4e2d\uff0c\u5219\u9ed8\u8ba4\u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"li"},"[HttpPost]")," \u7279\u6027\u3002",(0,r.kt)("strong",{parentName:"li"},"\u652f\u6301\u81ea\u5b9a\u4e49\u914d\u7f6e"))),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"\u4f46\u662f\uff0c\u6709\u4e9b\u65f6\u5019\u8fd9\u4e0d\u662f\u6211\u4eec\u60f3\u8981\u7684\u89c4\u5219"),"\uff0c\u8fd9\u65f6\u6211\u4eec\u53ea\u9700\u8981\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"appsettings.json")," \u4e2d\u914d\u7f6e\u5373\u53ef\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json",metastring:"{2,3}","{2,3}":!0},'{\n "DynamicApiControllerSettings": {\n "VerbToHttpMethods": [\n ["getall", "HEAD"], // => getall \u4f1a\u88ab\u590d\u5199\u4e3a `[HttpHead]`\n ["other", "PUT"] // => \u65b0\u589e\u4e00\u6761\u65b0\u89c4\u5219\uff0c\u6bd4\u5982\uff0c\u4e00 `[other]` \u5f00\u5934\u4f1a\u8f6c\u6362\u4e3a `[HttpPut]` \u8bf7\u6c42\n ]\n }\n}\n')),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u6ce8\u610f")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u4e8c\u7ef4\u6570\u7ec4\u4e2d\u7684\u6bcf\u4e00\u4e2a\u5143\u7d20\u7684\u7b2c\u4e00\u4e2a\u5143\u7d20",(0,r.kt)("strong",{parentName:"p"},"\u5fc5\u987b\u662f\u5168\u5c0f\u5199"),"\uff0c\u7b2c\u4e8c\u4e2a\u5143\u7d20",(0,r.kt)("strong",{parentName:"p"},"\u5fc5\u987b\u662f\u5168\u5927\u5199\u5927\u5199"),"\uff0c\u7b2c\u4e8c\u4e2a\u5143\u7d20\u53d6\u503c\u6709\uff1a",(0,r.kt)("inlineCode",{parentName:"p"},"HEAD, GET, PUT, POST, PATCH, DELETE")))),(0,r.kt)("h3",{id:"5816-\u8def\u7531\u53c2\u6570\u975e\u5fc5\u586b\u9009\u586b"},"5.8.16 \u8def\u7531\u53c2\u6570\u975e\u5fc5\u586b/\u9009\u586b"),(0,r.kt)("p",null,"\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion v2.8.6")," \u7248\u672c\u4e2d\u5b9e\u73b0\u4e86 ",(0,r.kt)("inlineCode",{parentName:"p"},"[FromRoute]")," \u53c2\u6570\u975e\u5fc5\u586b\u529f\u80fd\uff0c\u652f\u6301\u4ee5\u4e0b\u51e0\u79cd\u65b9\u5f0f\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{2,6,11,16}","{2,6,11,16}":!0},"// \u65b9\u5f0f\u4e00\uff0c\u901a\u8fc7\u53ef\u7a7a ?\npublic object Method1(int id, Datetime? dateTime)\n{\n}\n\n// \u65b9\u5f0f\u4e8c\uff0c\u901a\u8fc7\u9ed8\u8ba4\u503c\npublic object Method1(int id, int age = 10)\n{\n}\n\n// \u65b9\u5f0f\u4e09\uff0c\u9ed8\u8ba4\u503c + \u53ef\u7a7a ?\npublic object Method1(int id, int? age = 10)\n{\n}\n\n// \u65b9\u5f0f\u56db\uff0c[FromQuery] \u4fee\u9970\npublic object Method1(int id, [FromQuery]string keyword)\n{\n}\n")),(0,r.kt)("h3",{id:"5817-formroute-\u8def\u7531\u7ea6\u675f"},"5.8.17 ",(0,r.kt)("inlineCode",{parentName:"h3"},"[FormRoute]")," \u8def\u7531\u7ea6\u675f"),(0,r.kt)("p",null,"\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion v2.8.6")," \u7248\u672c\u4e2d\uff0c\u6dfb\u52a0\u4e86 ",(0,r.kt)("inlineCode",{parentName:"p"},"[RouteConstraint]")," \u7279\u6027\uff0c\u53ef\u914d\u7f6e\u8def\u7531\u7ea6\u675f\uff0c\u5982\uff1a",(0,r.kt)("inlineCode",{parentName:"p"},'[RouteConstraint(":min(10)")]')),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{2}","{2}":!0},'// \u6700\u5c0f\u503c 10\npublic object Method1([RouteConstraint(":min(10)")] int id)\n{\n}\n')),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"[RouteConstraint]")," \u652f\u6301\u8def\u7531\u7ea6\u675f\u7b26\u53f7\u5982\u4e0b\uff1a"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"\u7b26\u53f7"),(0,r.kt)("th",{parentName:"tr",align:null},"\u63cf\u8ff0"),(0,r.kt)("th",{parentName:"tr",align:null},"\u4f8b\u5b50"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"alpha")),(0,r.kt)("td",{parentName:"tr",align:null},"\u5339\u914d\u5927\u5199\u6216\u5c0f\u5199\u62c9\u4e01\u5b57\u6bcd\u5b57\u7b26\uff08a-z\u3001A-Z\uff09"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},":alpha"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"bool")),(0,r.kt)("td",{parentName:"tr",align:null},"bool \u7c7b\u578b"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},":bool"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"datetime")),(0,r.kt)("td",{parentName:"tr",align:null},"DateTime \u7c7b\u578b"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},":datetime"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"decimal")),(0,r.kt)("td",{parentName:"tr",align:null},"decimal \u7c7b\u578b"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},":decimal"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"double")),(0,r.kt)("td",{parentName:"tr",align:null},"double \u7c7b\u578b"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},":double"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"float")),(0,r.kt)("td",{parentName:"tr",align:null},"float \u7c7b\u578b"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},":float"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"guid")),(0,r.kt)("td",{parentName:"tr",align:null},"guid \u7c7b\u578b"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},":guid"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"int")),(0,r.kt)("td",{parentName:"tr",align:null},"int \u7c7b\u578b"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},":int"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"long")),(0,r.kt)("td",{parentName:"tr",align:null},"long \u7c7b\u578b"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},":long"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"length")),(0,r.kt)("td",{parentName:"tr",align:null},"\u5339\u914d\u957f\u5ea6\uff08\u5b57\u7b26\u4e32\uff09"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},":length(6)")," \u6216 ",(0,r.kt)("inlineCode",{parentName:"td"},":length(1,20)"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"max")),(0,r.kt)("td",{parentName:"tr",align:null},"\u6700\u5927\u503c"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},":max(10)"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"maxlength")),(0,r.kt)("td",{parentName:"tr",align:null},"\u6700\u5927\u957f\u5ea6\uff08\u5b57\u7b26\u4e32\uff09"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},":maxlength(10)"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"min")),(0,r.kt)("td",{parentName:"tr",align:null},"\u6700\u5c0f\u503c"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},":min(10)"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"minlength")),(0,r.kt)("td",{parentName:"tr",align:null},"\u6700\u5c0f\u957f\u5ea6\uff08\u5b57\u7b26\u4e32\uff09"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},":minlength(10)"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"range")),(0,r.kt)("td",{parentName:"tr",align:null},"\u53d6\u503c\u8303\u56f4"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},":range(10,50)"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"regex")),(0,r.kt)("td",{parentName:"tr",align:null},"\u6b63\u5219\u8868\u8fbe\u5f0f"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},":regex(^\\d{3}-\\d{3}-\\d{4}$)"))))),(0,r.kt)("h2",{id:"59-apidescriptionsettings"},"5.9 ",(0,r.kt)("inlineCode",{parentName:"h2"},"[ApiDescriptionSettings]")),(0,r.kt)("p",null,"\u9664\u4e86\u4e0a\u8ff0 ",(0,r.kt)("inlineCode",{parentName:"p"},"ASP.NET Core")," \u63d0\u4f9b\u7684\u914d\u7f6e\u5916\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u8fd8\u63d0\u4f9b\u4e86\u975e\u5e38\u5f3a\u5927\u4e14\u7075\u6d3b\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"[ApiDescriptionSettings]")," \u7279\u6027\u3002"),(0,r.kt)("h3",{id:"591-\u5185\u7f6e\u914d\u7f6e"},"5.9.1 \u5185\u7f6e\u914d\u7f6e"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Name"),"\uff1a\u81ea\u5b9a\u4e49\u63a7\u5236\u5668/\u52a8\u4f5c\u65b9\u6cd5\u540d\u79f0\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"string"),"\uff0c\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"null")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"KeepName"),"\uff1a\u662f\u5426\u4fdd\u6301\u539f\u6709\u540d\u79f0\u4e0d\u5904\u7406\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"bool"),"\uff0c\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"false")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"SplitCamelCase"),"\uff1a\u5207\u5272\u9a86\u9a7c(\u9a7c\u5cf0)/\u5e15\u65af\u5361\u547d\u540d\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"bool"),"\uff0c\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"true")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"KeepVerb"),"\uff1a\u662f\u5426\u4fdd\u7559\u52a8\u4f5c\u65b9\u6cd5\u8bf7\u6c42\u8c13\u8bcd\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"bool"),"\uff0c\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"false")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Enabled"),"\uff1a\u662f\u5426\u5bfc\u51fa\u63a5\u53e3\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"bool"),"\uff0c\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"true")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Module"),"\uff1a\u6a21\u5757\u540d\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"string"),"\uff0c\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"null")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Version"),"\uff1a\u7248\u672c\u53f7\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"string"),"\uff0c\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"null")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Groups"),"\uff1a\u63a5\u53e3\u5206\u7ec4\uff0c\u53ef\u7ed3\u5408 ",(0,r.kt)("inlineCode",{parentName:"li"},"Swagger")," \u4e00\u8d77\u4f7f\u7528\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"string[]"),"\uff0c\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"null")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Tags"),"\uff1a\u63a5\u53e3\u6807\u7b7e\uff0c\u53ef\u7ed3\u5408 ",(0,r.kt)("inlineCode",{parentName:"li"},"Swagger")," \u4e00\u8d77\u4f7f\u7528\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"string[]"),"\uff0c\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"null")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Order"),"\uff1a\u914d\u7f6e\u63a7\u5236\u5668/\u52a8\u4f5c\u65b9\u6cd5\u6392\u5e8f"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"LowercaseRoute"),"\uff1a\u662f\u5426\u91c7\u7528\u5c0f\u5199\u8def\u7531\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"bool")," \u7c7b\u578b\uff0c\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"true")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Area"),"\uff1a\u914d\u7f6e\u533a\u57df\u540d\u79f0\uff0c\u9ed8\u8ba4\u7a7a\uff0c",(0,r.kt)("strong",{parentName:"li"},"\u53ea\u4f5c\u7528\u4e8e\u7c7b\u4e2d\u8d34"))),(0,r.kt)("h3",{id:"592-name-\u914d\u7f6e"},"5.9.2 ",(0,r.kt)("inlineCode",{parentName:"h3"},"Name")," \u914d\u7f6e"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Name")," \u53c2\u6570\u53ef\u4ee5\u8986\u76d6\u52a8\u6001 ",(0,r.kt)("inlineCode",{parentName:"p"},"WebAPI")," \u81ea\u52a8\u751f\u6210\u7684\u63a7\u5236\u5668\u6216\u52a8\u4f5c\u65b9\u6cd5\u540d\u79f0\u3002\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{5,8}","{5,8}":!0},'using Furion.DynamicApiController;\n\nnamespace Furion.Application\n{\n [ApiDescriptionSettings(Name = "MyFur")]\n public class FurionAppService : IDynamicApiController\n {\n [ApiDescriptionSettings(Name = "MyGet")]\n public string Get()\n {\n return nameof(Furion);\n }\n }\n}\n')),(0,r.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,r.kt)("img",{src:(0,l.Z)("img/namepz.png")}),(0,r.kt)("h3",{id:"593-keepname-\u914d\u7f6e"},"5.9.3 ",(0,r.kt)("inlineCode",{parentName:"h3"},"KeepName")," \u914d\u7f6e"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"KeepName")," \u53c2\u6570\u53ef\u4ee5\u4fdd\u7559\u539f\u6709\u7684\u63a7\u5236\u5668\u6216\u52a8\u4f5c\u65b9\u6cd5\u540d\u79f0\u3002\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{5,8}","{5,8}":!0},"using Furion.DynamicApiController;\n\nnamespace Furion.Application\n{\n [ApiDescriptionSettings(KeepName = true)]\n public class FurionAppService : IDynamicApiController\n {\n [ApiDescriptionSettings(KeepName = true)]\n public string Get()\n {\n return nameof(Furion);\n }\n }\n}\n")),(0,r.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,r.kt)("img",{src:(0,l.Z)("img/keepnamepz.png")}),(0,r.kt)("h3",{id:"594-splitcamelcase-\u914d\u7f6e"},"5.9.4 ",(0,r.kt)("inlineCode",{parentName:"h3"},"SplitCamelCase")," \u914d\u7f6e"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"SplitCamelCase")," \u53c2\u6570\u9ed8\u8ba4\u5c06\u9a86\u9a7c(\u9a7c\u5cf0)\u547d\u540d\u5207\u5272\u6210\u591a\u4e2a\u5355\u8bcd\u5e76\u901a\u8fc7\u6307\u5b9a ",(0,r.kt)("inlineCode",{parentName:"p"},"\u5360\u4f4d\u7b26")," \u8fde\u63a5\u8d77\u6765\u3002\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"p"},"\u5360\u4f4d\u7b26")," \u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"-"),"\u3002\u9ed8\u8ba4\u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"true"),"\u3002\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{5,8}","{5,8}":!0},"using Furion.DynamicApiController;\n\nnamespace Furion.Application\n{\n [ApiDescriptionSettings(SplitCamelCase = false)]\n public class MyFurionAppService : IDynamicApiController\n {\n [ApiDescriptionSettings(SplitCamelCase = true)]\n public string ChangeUserName()\n {\n return nameof(Furion);\n }\n }\n}\n")),(0,r.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,r.kt)("img",{src:(0,l.Z)("img/splitnamepz.png")}),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u6ce8\u610f")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},(0,r.kt)("inlineCode",{parentName:"p"},"KeepName")," \u4f18\u5148\u7ea7\u9ad8\u4e8e ",(0,r.kt)("inlineCode",{parentName:"p"},"SplitCamelCase"),"\uff0c\u4e5f\u5c31\u662f ",(0,r.kt)("inlineCode",{parentName:"p"},"KeepName")," \u8bbe\u7f6e\u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"true"),"\uff0c\u5219\u4e0d\u4f1a\u5904\u7406 ",(0,r.kt)("inlineCode",{parentName:"p"},"SplitCamelCase")," \u53c2\u6570\u3002"))),(0,r.kt)("h3",{id:"595-keepverb-\u914d\u7f6e"},"5.9.5 ",(0,r.kt)("inlineCode",{parentName:"h3"},"KeepVerb")," \u914d\u7f6e"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"KeepVerb")," \u53c2\u6570\u4f5c\u7528\u4e8e\u52a8\u4f5c\u65b9\u6cd5\uff0c\u6807\u8bc6\u662f\u5426\u4fdd\u7559\u52a8\u4f5c\u8c13\u8bcd\u3002\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{7}","{7}":!0},"using Furion.DynamicApiController;\n\nnamespace Furion.Application\n{\n public class FurionAppService : IDynamicApiController\n {\n [ApiDescriptionSettings(KeepVerb = true)]\n public string GetVersion()\n {\n return nameof(Furion);\n }\n }\n}\n")),(0,r.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,r.kt)("img",{src:(0,l.Z)("img/keepverbpz.png")}),(0,r.kt)("h3",{id:"596-enabled-\u914d\u7f6e"},"5.9.6 ",(0,r.kt)("inlineCode",{parentName:"h3"},"Enabled")," \u914d\u7f6e"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Enabled")," \u53c2\u6570\u914d\u7f6e\u63a5\u53e3\u662f\u5426\u5bfc\u51fa\u3002\u901a\u5e38\u7528\u4e8e\u52a8\u4f5c\u65b9\u6cd5\uff0c\u5982\u679c\u7528\u4e8e\u63a7\u5236\u5668\u5b9e\u9645\u4f5c\u7528\u4e0d\u5927\u3002"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{12}","{12}":!0},"using Furion.DynamicApiController;\n\nnamespace Furion.Application\n{\n public class FurionAppService : IDynamicApiController\n {\n public string GetVersion()\n {\n return nameof(Furion);\n }\n\n [ApiDescriptionSettings(false)]\n public string NoExport()\n {\n return nameof(Furion);\n }\n }\n}\n")),(0,r.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,r.kt)("img",{src:(0,l.Z)("img/enablepz.png")}),(0,r.kt)("h3",{id:"597-module-\u914d\u7f6e"},"5.9.7 ",(0,r.kt)("inlineCode",{parentName:"h3"},"Module")," \u914d\u7f6e"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Module")," \u53c2\u6570\u53ef\u4ee5\u914d\u7f6e\u8def\u7531\u5206\u79bb\uff0c\u7c7b\u4f3c\u4e8e ",(0,r.kt)("inlineCode",{parentName:"p"},"Mvc \u533a\u57df")," \u7684\u4f5c\u7528\u3002"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{5,8}","{5,8}":!0},'using Furion.DynamicApiController;\n\nnamespace Furion.Application\n{\n [ApiDescriptionSettings(Module = "mobile")]\n public class FurionAppService : IDynamicApiController\n {\n [ApiDescriptionSettings(Module = "user")]\n public string GetVersion()\n {\n return nameof(Furion);\n }\n }\n}\n')),(0,r.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,r.kt)("img",{src:(0,l.Z)("img/modulepz.png")}),(0,r.kt)("h3",{id:"598-version-\u914d\u7f6e"},"5.9.8 ",(0,r.kt)("inlineCode",{parentName:"h3"},"Version")," \u914d\u7f6e"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Version")," \u53c2\u6570\u53ef\u4ee5\u914d\u7f6e\u63a5\u53e3\u7248\u672c\uff0c\u540c\u65f6\u53c8\u53ef\u4ee5\u590d\u5199\u7279\u6b8a\u7248\u672c\u547d\u540d\u914d\u7f6e\u3002\u9ed8\u8ba4\u7248\u672c\u5206\u9694\u7b26\u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"@"),"\u3002\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{5,9-10}","{5,9-10}":!0},'using Furion.DynamicApiController;\n\nnamespace Furion.Application\n{\n [ApiDescriptionSettings(Version = "1.0")]\n public class FurionAppService : IDynamicApiController\n {\n // V2.0.0 \u88ab\u590d\u5199\u6210 V2.1.1\n [ApiDescriptionSettings(Version = "2.1.1")]\n public string GetVersionV2_0_0()\n {\n return nameof(Furion);\n }\n }\n}\n')),(0,r.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,r.kt)("img",{src:(0,l.Z)("img/versionpz.png")}),(0,r.kt)("h3",{id:"599-groups-\u914d\u7f6e"},"5.9.9 ",(0,r.kt)("inlineCode",{parentName:"h3"},"Groups")," \u914d\u7f6e"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Groups")," \u914d\u7f6e\u4e3b\u8981\u7528\u4e8e\u914d\u7f6e ",(0,r.kt)("inlineCode",{parentName:"p"},"Swagger")," \u5206\u7ec4\u4fe1\u606f\u3002"),(0,r.kt)("p",null,"\u901a\u8fc7\u914d\u7f6e ",(0,r.kt)("inlineCode",{parentName:"p"},"Groups")," \u53c2\u6570\u53ef\u4ee5\u5c06",(0,r.kt)("inlineCode",{parentName:"p"},"\u63a7\u5236\u5668\u548c\u52a8\u4f5c\u65b9\u6cd5")," \u8fdb\u884c\u5f52\u7c7b\u548c\u591a\u4e2a\u5206\u7ec4\u76f4\u63a5\u5171\u4eab\u3002\u53ef\u901a\u8fc7 ",(0,r.kt)("inlineCode",{parentName:"p"},"[ApiDescriptionSettings(params Groups)]")," \u6784\u9020\u51fd\u6570\u4f20\u5165\u6216\u6307\u5b9a ",(0,r.kt)("inlineCode",{parentName:"p"},"Groups")," \u53c2\u6570\u914d\u7f6e\u63a5\u53e3\u662f\u5426\u5bfc\u51fa\u3002\u901a\u5e38\u7528\u4e8e\u52a8\u4f5c\u65b9\u6cd5\uff0c\u5982\u679c\u7528\u4e8e\u63a7\u5236\u5668\u5b9e\u9645\u4f5c\u7528\u4e0d\u5927\u3002"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{5,13}","{5,13}":!0},'using Furion.DynamicApiController;\n\nnamespace Furion.Application\n{\n [ApiDescriptionSettings("Default", "Common")]\n public class FurionAppService : IDynamicApiController\n {\n public string Get()\n {\n return nameof(Furion);\n }\n\n [ApiDescriptionSettings("Custom")]\n public int Get(int id)\n {\n return id;\n }\n }\n}\n')),(0,r.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,r.kt)("img",{src:(0,l.Z)("img/dfz.gif")}),(0,r.kt)("h3",{id:"5910-tag-\u914d\u7f6e"},"5.9.10 ",(0,r.kt)("inlineCode",{parentName:"h3"},"Tag")," \u914d\u7f6e"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Tag")," \u914d\u7f6e\u4e3b\u8981\u7528\u4e8e\u914d\u7f6e ",(0,r.kt)("inlineCode",{parentName:"p"},"Swagger")," \u6807\u7b7e\u5206\u7ec4\u4fe1\u606f\u53ca\u5408\u5e76\u6807\u7b7e\u3002\u4e5f\u5c31\u662f ",(0,r.kt)("inlineCode",{parentName:"p"},"\u7ec4\u4e2d\u7ec4"),":"),(0,r.kt)(p.Z,{defaultValue:"tag1",values:[{label:"\u6807\u7b7e\u547d\u540d",value:"tag1"},{label:"\u5408\u5e76\u6807\u7b7e",value:"tag2"}],mdxType:"Tabs"},(0,r.kt)(o.Z,{value:"tag1",mdxType:"TabItem"},(0,r.kt)("h4",{id:"\u672a\u8d34\u6807\u7b7e\u4e4b\u524d"},"\u672a\u8d34\u6807\u7b7e\u4e4b\u524d"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"using Furion.DynamicApiController;\n\nnamespace Furion.Application\n{\n public class FurionAppService : IDynamicApiController\n {\n public string Get()\n {\n return nameof(Furion);\n }\n\n public int Get(int id)\n {\n return id;\n }\n }\n\n public class TestAppService : IDynamicApiController\n {\n public string Get()\n {\n return nameof(Furion);\n }\n\n public int Get(int id)\n {\n return id;\n }\n }\n}\n")),(0,r.kt)("h4",{id:"\u8d34\u6807\u7b7e\u4e4b\u540e"},"\u8d34\u6807\u7b7e\u4e4b\u540e"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{5,19}","{5,19}":!0},'using Furion.DynamicApiController;\n\nnamespace Furion.Application\n{\n [ApiDescriptionSettings(Tag = "\u5206\u7ec4\u4e00")]\n public class FurionAppService : IDynamicApiController\n {\n public string Get()\n {\n return nameof(Furion);\n }\n\n public int Get(int id)\n {\n return id;\n }\n }\n\n [ApiDescriptionSettings(Tag = "\u5206\u7ec4\u4e8c")]\n public class TestAppService : IDynamicApiController\n {\n public string Get()\n {\n return nameof(Furion);\n }\n\n public int Get(int id)\n {\n return id;\n }\n }\n}\n')),(0,r.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,r.kt)("img",{src:(0,l.Z)("img/tag1.png")})),(0,r.kt)(o.Z,{value:"tag2",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{5,19}","{5,19}":!0},'using Furion.DynamicApiController;\n\nnamespace Furion.Application\n{\n [ApiDescriptionSettings(Tag = "\u5408\u5e76\u6240\u6709\u6807\u7b7e")]\n public class FurionAppService : IDynamicApiController\n {\n public string Get()\n {\n return nameof(Furion);\n }\n\n public int Get(int id)\n {\n return id;\n }\n }\n\n [ApiDescriptionSettings(Tag = "\u5408\u5e76\u6240\u6709\u6807\u7b7e")]\n public class TestAppService : IDynamicApiController\n {\n public string Get()\n {\n return nameof(Furion);\n }\n\n public int Get(int id)\n {\n return id;\n }\n }\n}\n')),(0,r.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,r.kt)("img",{src:(0,l.Z)("img/tag2.png")}))),(0,r.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u5c0f\u77e5\u8bc6")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u5982\u679c ",(0,r.kt)("inlineCode",{parentName:"p"},"Tag")," \u540d\u5b57\u4e00\u6837\uff0c\u5219\u4f1a\u81ea\u52a8\u5408\u5e76\uff0c\u5426\u5219\u53ea\u662f\u547d\u540d\u3002"))),(0,r.kt)("h2",{id:"510-dynamicapicontrollersettings-\u914d\u7f6e"},"5.10 ",(0,r.kt)("inlineCode",{parentName:"h2"},"DynamicApiControllerSettings")," \u914d\u7f6e"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u8fd8\u63d0\u4f9b\u52a8\u6001 ",(0,r.kt)("inlineCode",{parentName:"p"},"WebAPI")," \u63a5\u53e3\u4e00\u4e9b\u5168\u5c40\u914d\u7f6e\u9009\u9879\uff0c\u5982\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"DefaultRoutePrefix"),"\uff1a\u9ed8\u8ba4\u8def\u7531\u524d\u7f00\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"string"),"\uff0c\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"api")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"DefaultHttpMethod"),"\uff1a\u9ed8\u8ba4\u8bf7\u6c42\u8c13\u8bcd\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"string"),"\uff0c\u9ed8\u8ba4\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"POST")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"DefaultModule"),"\uff1a\u9ed8\u8ba4\u6a21\u5757\u540d\u79f0\uff08\u533a\u57df\uff09\uff0c\u53ef\u7528\u4f5c\u63a5\u53e3\u7248\u672c\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"string"),"\uff0c\u9ed8\u8ba4\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"v1")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"LowercaseRoute"),"\uff1a\u5c0f\u5199\u8def\u7531\u683c\u5f0f\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"bool"),"\uff0c\u9ed8\u8ba4\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"true")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"KeepVerb"),"\uff1a\u662f\u5426\u4fdd\u7559\u52a8\u4f5c\u8c13\u8bcd\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"bool"),"\uff0c\u9ed8\u8ba4\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"false")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"KeepName"),"\uff1a\u662f\u5426\u4fdd\u7559\u9ed8\u8ba4\u540d\u79f0\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"bool"),"\uff0c\u9ed8\u8ba4\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"fasle")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"CamelCaseSeparator"),"\uff1a\u9a86\u9a7c(\u9a7c\u5cf0)/\u5e15\u65af\u5361\u547d\u540d\u5206\u9694\u7b26\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"string"),"\uff0c\u9ed8\u8ba4\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"-")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"VersionSeparator"),"\uff1a\u7248\u672c\u5206\u9694\u7b26\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"string"),"\uff0c\u9ed8\u8ba4\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"@")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"ModelToQuery"),"\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"GET/HEAD")," \u8bf7\u6c42\u5c06 ",(0,r.kt)("inlineCode",{parentName:"li"},"\u7c7b\u7c7b\u578b\u53c2\u6570\u8f6c\u67e5\u8be2\u53c2\u6570"),"\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"bool"),"\uff0c\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"false")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"SupportedMvcController"),"\uff1a\u662f\u5426\u652f\u6301 ",(0,r.kt)("inlineCode",{parentName:"li"},"Mvc Controller")," \u52a8\u6001\u914d\u7f6e\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"bool"),"\uff0c\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"false")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"UrlParameterization"),"\uff1a\u8def\u7531\u53c2\u6570\u91c7\u7528 ",(0,r.kt)("inlineCode",{parentName:"li"},"[FromQuery]")," \u5316\uff0c\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"false"),"\uff08",(0,r.kt)("inlineCode",{parentName:"li"},"[FromRoute]")," \u65b9\u5f0f\uff09"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"DefaultArea"),"\uff1a\u914d\u7f6e\u9ed8\u8ba4\u533a\u57df\uff0c\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"null")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"AbandonControllerAffixes"),"\uff1a\u9ed8\u8ba4\u53bb\u9664\u63a7\u5236\u5668\u540d\u79f0\u524d\u540e\u7f00\u5217\u8868\u540d\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"string[]"),"\uff0c\u9ed8\u8ba4\uff1a",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"AppServices")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"AppService")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"ApiController")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Controller")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Services")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Service")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"AbandonActionAffixes"),"\uff1a\u9ed8\u8ba4\u53bb\u9664\u52a8\u4f5c\u65b9\u6cd5\u540d\u79f0\u524d\u540e\u7f00\u5217\u8868\u540d\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"string[]"),"\uff0c\u9ed8\u8ba4\uff1a",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Async")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"VerbToHttpMethods"),"\uff1a\u590d\u5199\u9ed8\u8ba4\u65b9\u6cd5\u540d\u8f6c ",(0,r.kt)("inlineCode",{parentName:"li"},"[HttpMethod]")," \u89c4\u5219\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"string[][]")," \u4e8c\u7ef4\u6570\u7ec4\u7c7b\u578b\uff0c\u5185\u7f6e\u5339\u914d\u89c4\u5219\u4e3a\uff1a",(0,r.kt)("pre",{parentName:"li"},(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'["post"] = "POST",\n["add"] = "POST",\n["create"] = "POST",\n["insert"] = "POST",\n["submit"] = "POST",\n["get"] = "GET",\n["find"] = "GET",\n["fetch"] = "GET",\n["query"] = "GET",\n["getlist"] = "GET",\n["getall"] = "GET",\n["put"] = "PUT",\n["update"] = "PUT",\n["delete"] = "DELETE",\n["remove"] = "DELETE",\n["clear"] = "DELETE",\n["patch"] = "PATCH"\n')),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"\u590d\u5199\u793a\u4f8b")),(0,r.kt)("pre",{parentName:"li"},(0,r.kt)("code",{parentName:"pre",className:"language-json"},'"DynamicApiControllerSettings": {\n "VerbToHttpMethods": [\n [ "getall", "HEAD" ], // => getall \u4f1a\u88ab\u590d\u5199\u4e3a `[HttpHead]`\n [ "other", "PUT" ] // => \u65b0\u589e\u4e00\u6761\u65b0\u89c4\u5219\uff0c\u6bd4\u5982\uff0c\u4e00 `[other]` \u5f00\u5934\u4f1a\u8f6c\u6362\u4e3a `[HttpPut]` \u8bf7\u6c42\n ]\n }\n')))))),(0,r.kt)("h3",{id:"5101-\u652f\u6301-mvc-\u63a7\u5236\u5668-\u52a8\u6001\u914d\u7f6e"},"5.10.1 \u652f\u6301 ",(0,r.kt)("inlineCode",{parentName:"h3"},"Mvc \u63a7\u5236\u5668")," \u52a8\u6001\u914d\u7f6e"),(0,r.kt)("p",null,"\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u52a8\u6001 ",(0,r.kt)("inlineCode",{parentName:"p"},"WebAPI")," \u63a5\u53e3\u4e0d\u5bf9 ",(0,r.kt)("inlineCode",{parentName:"p"},"ControllerBase")," \u7c7b\u578b\u8fdb\u884c\u4efb\u4f55\u5904\u7406\u3002\u5f53\u7136\uff0c\u6211\u4eec\u4e5f\u53ef\u4ee5\u624b\u52a8\u542f\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"ControllerBase")," \u652f\u6301\u3002"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json",metastring:'{2-4} title="Furion.Web.Entry/appsettings.json"',"{2-4}":!0,title:'"Furion.Web.Entry/appsettings.json"'},'{\n "DynamicApiControllerSettings": {\n "SupportedMvcController": true\n }\n}\n')),(0,r.kt)("p",null,"\u8bbe\u7f6e ",(0,r.kt)("inlineCode",{parentName:"p"},"SupportedMvcController: true")," \u540e\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"Mvc ControllerBase")," \u7c7b\u578b\u4e5f\u80fd\u548c\u52a8\u6001 ",(0,r.kt)("inlineCode",{parentName:"p"},"WebAPI")," \u4e00\u6837\u7684\u7075\u6d3b\u4e86\u3002\u4ee3\u7801\u5982\u4e0b\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{5}","{5}":!0},"using Microsoft.AspNetCore.Mvc;\n\nnamespace Furion.Web.Entry.Controllers\n{\n public class MvcController : ControllerBase\n {\n public string Get()\n {\n return nameof(Furion);\n }\n }\n}\n\n")),(0,r.kt)("div",{className:"admonition admonition-warning alert alert--danger"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"}))),"\u6ce8\u610f\u4e8b\u9879")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u542f\u7528\u8be5\u914d\u7f6e\u540e\uff0c\u5982\u679c ",(0,r.kt)("inlineCode",{parentName:"p"},"Mvc \u63a7\u5236\u5668")," \u6ca1\u6709\u4efb\u4f55 ",(0,r.kt)("inlineCode",{parentName:"p"},"[Route]")," \u7279\u6027\uff0c\u4f46\u662f\u8d34\u4e86 ",(0,r.kt)("inlineCode",{parentName:"p"},"[ApiController]")," \u7279\u6027\u5c06\u4f1a\u62a5\u9519\u3002\u539f\u56e0\u662f ",(0,r.kt)("inlineCode",{parentName:"p"},"[ApiController]")," \u7279\u6027\u5185\u90e8\u505a\u4e86\u8def\u7531\u7279\u6027\u68c0\u6d4b\u3002\u6240\u4ee5\u5efa\u8bae\u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"[ApiDataValidation]")," \u4ee3\u66ff\u3002"),(0,r.kt)("p",{parentName:"div"},"\u67e5\u770b ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/dotnet/aspnetcore/blob/c565386a3ed135560bc2e9017aa54a950b4e35dd/src/Mvc/Mvc.Core/src/ApplicationModels/ApiBehaviorApplicationModelProvider.cs#L90"},"ASP.NET Core - ApiBehaviorApplicationModelProvider \u6e90\u7801")))),(0,r.kt)("h2",{id:"511-\u5173\u4e8e-aop-\u62e6\u622a"},"5.11 \u5173\u4e8e AOP \u62e6\u622a"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"\u52a8\u6001WebAPI")," \u652f\u6301 ",(0,r.kt)("inlineCode",{parentName:"p"},"Controller")," \u7684\u6240\u6709\u8fc7\u6ee4\u5668/\u7b5b\u9009\u5668\u62e6\u622a\uff0c\u4e5f\u5c31\u662f\u53ef\u4ee5\u901a\u8fc7 ",(0,r.kt)("inlineCode",{parentName:"p"},"ActionFilter"),"\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"ResultFilter")," \u8fdb\u884c\u62e6\u622a\u64cd\u4f5c\u3002\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,3}","{1,3}":!0},"public class SampleAsyncActionFilter : IAsyncActionFilter\n{\n public async Task OnActionExecutionAsync(ActionExecutingContext context,ActionExecutionDelegate next)\n {\n // \u62e6\u622a\u4e4b\u524d\n\n var resultContext = await next();\n\n // \u62e6\u622a\u4e4b\u540e\n\n // \u5f02\u5e38\u62e6\u622a\n if(resultContext.Exception != null)\n {\n\n }\n }\n}\n")),(0,r.kt)("p",null,"\u8be6\u7ec6\u7528\u6cd5\u53ef\u53c2\u89c1 ",(0,r.kt)("a",{parentName:"p",href:"https://docs.microsoft.com/zh-cn/aspnet/core/mvc/controllers/filters?view=aspnetcore-5.0"},"ASP.NET Core 5.0 - \u7b5b\u9009\u5668")),(0,r.kt)("h2",{id:"512-\u8bbe\u7f6e-api-\u8d85\u65f6\u8bf7\u6c42\u65f6\u95f4"},"5.12 \u8bbe\u7f6e ",(0,r.kt)("inlineCode",{parentName:"h2"},"api")," \u8d85\u65f6\u8bf7\u6c42\u65f6\u95f4"),(0,r.kt)("p",null,"\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Program.cs")," \u4e2d\u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"p"},".UseKestrel")," \u914d\u7f6e\u5373\u53ef\uff0c\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{8-12}","{8-12}":!0},"public static IHostBuilder CreateHostBuilder(string[] args)\n{\n return Host.CreateDefaultBuilder(args)\n .ConfigureWebHostDefaults(webBuilder =>\n {\n webBuilder.Inject()\n .UseStartup()\n .UseKestrel(option =>\n {\n option.Limits.KeepAliveTimeout = TimeSpan.FromMinutes(20);\n option.Limits.RequestHeadersTimeout = TimeSpan.FromMinutes(20);\n });\n });\n}\n")),(0,r.kt)("h2",{id:"513-\u53cd\u9988\u4e0e\u5efa\u8bae"},"5.13 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,r.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}N.isMDXComponent=!0},6010:function(e,n,t){function a(e){var n,t,i="";if("string"==typeof e||"number"==typeof e)i+=e;else if("object"==typeof e)if(Array.isArray(e))for(n=0;n=0||(i[t]=e[t]);return i}(e,n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(i[t]=e[t])}return i}var o=a.createContext({}),m=function(e){var n=a.useContext(o),t=n;return e&&(t="function"==typeof e?e(n):l(l({},n),e)),t},d=function(e){var n=m(e.components);return a.createElement(o.Provider,{value:n},e.children)},s={inlineCode:"code",wrapper:function(e){var n=e.children;return a.createElement(a.Fragment,{},n)}},c=a.forwardRef((function(e,n){var t=e.components,i=e.mdxType,r=e.originalType,o=e.parentName,d=p(e,["components","mdxType","originalType","parentName"]),c=m(t),u=i,k=c["".concat(o,".").concat(u)]||c[u]||s[u]||r;return t?a.createElement(k,l(l({ref:n},d),{},{components:t})):a.createElement(k,l({ref:n},d))}));function u(e,n){var t=arguments,i=n&&n.mdxType;if("string"==typeof e||i){var r=t.length,l=new Array(r);l[0]=c;var p={};for(var o in n)hasOwnProperty.call(n,o)&&(p[o]=n[o]);p.originalType=e,p.mdxType="string"==typeof e?e:i,l[1]=p;for(var m=2;m=0&&r<=m&&i<=p&&a>=0)||(n.scrollIntoView({block:"center",behavior:"smooth"}),n.classList.add(o),setTimeout((function(){return n.classList.remove(o)}),2e3))}),150))},F=function(e){var n,t;switch(e.keyCode){case d:var a=b.indexOf(e.target)+1;t=b[a]||b[0];break;case m:var i=b.indexOf(e.target)-1;t=b[i]||b[b.length-1]}null==(n=t)||n.focus()};return a.createElement("div",{className:"tabs-container"},a.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,l.Z)("tabs",{"tabs--block":t},u)},s.map((function(e){var n=e.value,t=e.label;return a.createElement("li",{role:"tab",tabIndex:v===n?0:-1,"aria-selected":v===n,className:(0,l.Z)("tabs__item",p,{"tabs__item--active":v===n}),key:n,ref:function(e){return b.push(e)},onKeyDown:F,onFocus:f,onClick:f},t)}))),n?(0,a.cloneElement)(A.filter((function(e){return e.props.value===v}))[0],{className:"margin-vert--md"}):a.createElement("div",{className:"margin-vert--md"},A.map((function(e,n){return(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==v})}))))}},9443:function(e,n,t){var a=(0,t(7294).createContext)(void 0);n.Z=a},6943:function(e,n,t){t.r(n),t.d(n,{frontMatter:function(){return d},contentTitle:function(){return s},metadata:function(){return c},toc:function(){return u},default:function(){return N}});var a=t(7462),i=t(3366),r=(t(7294),t(3905)),l=t(4996),p=t(5064),o=t(8215),m=["components"],d={id:"dynamic-api-controller",title:"5. \u52a8\u6001 WebAPI",sidebar_label:"5. \u52a8\u6001 WebAPI"},s=void 0,c={unversionedId:"dynamic-api-controller",id:"dynamic-api-controller",isDocsHomePage:!1,title:"5. \u52a8\u6001 WebAPI",description:"\u52a8\u6001WebAPI \u5b9e\u9645\u4e0a\u5c31\u662f\u5c06\u666e\u901a\u7684\u7c7b\u53d8\u4e3a Controller\uff0c\u4e5f\u5c31\u662f \u52a8\u6001WebAPI \u5c31\u662f\u63a7\u5236\u5668\uff0c\u652f\u6301\u63a7\u5236\u5668\u4e00\u5207\u529f\u80fd\u3002",source:"@site/docs/dynamic-api-controller.mdx",sourceDirName:".",slug:"/dynamic-api-controller",permalink:"/furion/docs/dynamic-api-controller",editUrl:"https://gitee.com/dotnetchina/Furion/tree/master/handbook/docs/dynamic-api-controller.mdx",version:"current",lastUpdatedBy:"Postive\u4e36seche",lastUpdatedAt:1628152733,formattedLastUpdatedAt:"8/5/2021",frontMatter:{id:"dynamic-api-controller",title:"5. \u52a8\u6001 WebAPI",sidebar_label:"5. \u52a8\u6001 WebAPI"},sidebar:"docs",previous:{title:"4.2 \u9009\u9879",permalink:"/furion/docs/options"},next:{title:"6. \u89c4\u8303\u5316\u63a5\u53e3\u6587\u6863 (Swagger)",permalink:"/furion/docs/specification-document"}},u=[{value:"5.1 \u4ec0\u4e48\u662f\u63a7\u5236\u5668",id:"51-\u4ec0\u4e48\u662f\u63a7\u5236\u5668",children:[]},{value:"5.2 Mvc \u63a7\u5236\u5668 \u7ea6\u5b9a\u548c\u7f3a\u70b9",id:"52-mvc-\u63a7\u5236\u5668-\u7ea6\u5b9a\u548c\u7f3a\u70b9",children:[{value:"5.2.1 WebAPI \u7ea6\u5b9a",id:"521-webapi-\u7ea6\u5b9a",children:[]},{value:"5.2.2 .NET Core WebAPI \u7f3a\u70b9",id:"522-net-core-webapi-\u7f3a\u70b9",children:[]}]},{value:"5.3 \u52a8\u6001 WebAPI \u63a7\u5236\u5668",id:"53-\u52a8\u6001-webapi-\u63a7\u5236\u5668",children:[]},{value:"5.4 \u6ce8\u518c\u52a8\u6001 WebAPI \u670d\u52a1",id:"54-\u6ce8\u518c\u52a8\u6001-webapi-\u670d\u52a1",children:[]},{value:"5.5 \u7b2c\u4e00\u4e2a\u4f8b\u5b50",id:"55-\u7b2c\u4e00\u4e2a\u4f8b\u5b50",children:[]},{value:"5.6 \u52a8\u6001 WebAPI \u539f\u7406\u89e3\u6790",id:"56-\u52a8\u6001-webapi-\u539f\u7406\u89e3\u6790",children:[{value:"5.6.1 \u63a7\u5236\u5668\u7279\u6027\u63d0\u4f9b\u5668",id:"561-\u63a7\u5236\u5668\u7279\u6027\u63d0\u4f9b\u5668",children:[]},{value:"5.6.2 \u5e94\u7528\u6a21\u578b\u8f6c\u6362\u5668",id:"562-\u5e94\u7528\u6a21\u578b\u8f6c\u6362\u5668",children:[]}]},{value:"5.7 \u52a8\u6001 WebAPI \u914d\u7f6e\u7ea6\u5b9a",id:"57-\u52a8\u6001-webapi-\u914d\u7f6e\u7ea6\u5b9a",children:[{value:"5.7.1 \u63a7\u5236\u5668\u9ed8\u8ba4\u7ea6\u5b9a",id:"571-\u63a7\u5236\u5668\u9ed8\u8ba4\u7ea6\u5b9a",children:[]},{value:"5.7.2 \u52a8\u4f5c\u65b9\u6cd5\u9ed8\u8ba4\u7ea6\u5b9a",id:"572-\u52a8\u4f5c\u65b9\u6cd5\u9ed8\u8ba4\u7ea6\u5b9a",children:[]},{value:"5.7.3 \u8bf7\u6c42\u8c13\u8bcd\u9ed8\u8ba4\u7ea6\u5b9a",id:"573-\u8bf7\u6c42\u8c13\u8bcd\u9ed8\u8ba4\u7ea6\u5b9a",children:[]},{value:"5.7.4 \u8def\u7531\u5730\u5740\u9ed8\u8ba4\u7ea6\u5b9a",id:"574-\u8def\u7531\u5730\u5740\u9ed8\u8ba4\u7ea6\u5b9a",children:[]},{value:"5.7.5 \u5176\u4ed6\u7ea6\u5b9a",id:"575-\u5176\u4ed6\u7ea6\u5b9a",children:[]}]},{value:"5.8 \u66f4\u591a\u4f8b\u5b50",id:"58-\u66f4\u591a\u4f8b\u5b50",children:[{value:"5.8.1 \u591a\u79cd\u8bf7\u6c42\u8c13\u8bcd\u65b9\u6cd5",id:"581-\u591a\u79cd\u8bf7\u6c42\u8c13\u8bcd\u65b9\u6cd5",children:[]},{value:"5.8.2 \u591a\u4e2a\u81ea\u5b9a\u4e49\u52a8\u4f5c\u65b9\u6cd5",id:"582-\u591a\u4e2a\u81ea\u5b9a\u4e49\u52a8\u4f5c\u65b9\u6cd5",children:[]},{value:"5.8.3 \u5e26\u53c2\u6570\u52a8\u4f5c\u65b9\u6cd5",id:"583-\u5e26\u53c2\u6570\u52a8\u4f5c\u65b9\u6cd5",children:[]},{value:"5.8.4 GET/HEAD \u7c7b\u7c7b\u578b\u53c2\u6570",id:"584-gethead-\u7c7b\u7c7b\u578b\u53c2\u6570",children:[]},{value:"5.8.5 \u81ea\u5b9a\u4e49\u53c2\u6570\u4f4d\u7f6e",id:"585-\u81ea\u5b9a\u4e49\u53c2\u6570\u4f4d\u7f6e",children:[]},{value:"5.8.6 \u81ea\u5b9a\u4e49\u8bf7\u6c42\u8c13\u8bcd",id:"586-\u81ea\u5b9a\u4e49\u8bf7\u6c42\u8c13\u8bcd",children:[]},{value:"5.8.7 \u652f\u6301\u591a\u4e2a\u8c13\u8bcd",id:"587-\u652f\u6301\u591a\u4e2a\u8c13\u8bcd",children:[]},{value:"5.8.8 \u652f\u6301\u81ea\u5b9a\u4e49\u8def\u7531",id:"588-\u652f\u6301\u81ea\u5b9a\u4e49\u8def\u7531",children:[]},{value:"5.8.9 \u591a\u8def\u7531\u968f\u610f\u7ec4\u5408",id:"589-\u591a\u8def\u7531\u968f\u610f\u7ec4\u5408",children:[]},{value:"5.8.10 \u652f\u6301\u7248\u672c\u63a7\u5236",id:"5810-\u652f\u6301\u7248\u672c\u63a7\u5236",children:[]},{value:"5.8.11 \u4e0d\u516c\u5f00\u63a7\u5236\u5668\u6216\u52a8\u4f5c\u65b9\u6cd5",id:"5811-\u4e0d\u516c\u5f00\u63a7\u5236\u5668\u6216\u52a8\u4f5c\u65b9\u6cd5",children:[]},{value:"5.8.12 \u4fdd\u6301\u63a7\u5236\u5668\u548c\u65b9\u6cd5\u547d\u540d",id:"5812-\u4fdd\u6301\u63a7\u5236\u5668\u548c\u65b9\u6cd5\u547d\u540d",children:[]},{value:"5.8.13 \u65b9\u6cd5\u53c2\u6570 [FromQuery] \u5316/\u53c2\u6570\u975e\u5fc5\u586b/\u53c2\u6570\u53ef\u9009",id:"5813-\u65b9\u6cd5\u53c2\u6570-fromquery-\u5316\u53c2\u6570\u975e\u5fc5\u586b\u53c2\u6570\u53ef\u9009",children:[]},{value:"5.8.14 \u53c2\u6570\u7ed1\u5b9a\u914d\u7f6e",id:"5814-\u53c2\u6570\u7ed1\u5b9a\u914d\u7f6e",children:[]},{value:"5.8.15 \u81ea\u5b9a\u4e49\u6839\u636e\u65b9\u6cd5\u540d\u751f\u6210 [HttpMethod] \u89c4\u5219",id:"5815-\u81ea\u5b9a\u4e49\u6839\u636e\u65b9\u6cd5\u540d\u751f\u6210-httpmethod-\u89c4\u5219",children:[]},{value:"5.8.16 \u8def\u7531\u53c2\u6570\u975e\u5fc5\u586b/\u9009\u586b",id:"5816-\u8def\u7531\u53c2\u6570\u975e\u5fc5\u586b\u9009\u586b",children:[]},{value:"5.8.17 [FormRoute] \u8def\u7531\u7ea6\u675f",id:"5817-formroute-\u8def\u7531\u7ea6\u675f",children:[]}]},{value:"5.9 [ApiDescriptionSettings]",id:"59-apidescriptionsettings",children:[{value:"5.9.1 \u5185\u7f6e\u914d\u7f6e",id:"591-\u5185\u7f6e\u914d\u7f6e",children:[]},{value:"5.9.2 Name \u914d\u7f6e",id:"592-name-\u914d\u7f6e",children:[]},{value:"5.9.3 KeepName \u914d\u7f6e",id:"593-keepname-\u914d\u7f6e",children:[]},{value:"5.9.4 SplitCamelCase \u914d\u7f6e",id:"594-splitcamelcase-\u914d\u7f6e",children:[]},{value:"5.9.5 KeepVerb \u914d\u7f6e",id:"595-keepverb-\u914d\u7f6e",children:[]},{value:"5.9.6 Enabled \u914d\u7f6e",id:"596-enabled-\u914d\u7f6e",children:[]},{value:"5.9.7 Module \u914d\u7f6e",id:"597-module-\u914d\u7f6e",children:[]},{value:"5.9.8 Version \u914d\u7f6e",id:"598-version-\u914d\u7f6e",children:[]},{value:"5.9.9 Groups \u914d\u7f6e",id:"599-groups-\u914d\u7f6e",children:[]},{value:"5.9.10 Tag \u914d\u7f6e",id:"5910-tag-\u914d\u7f6e",children:[]}]},{value:"5.10 DynamicApiControllerSettings \u914d\u7f6e",id:"510-dynamicapicontrollersettings-\u914d\u7f6e",children:[{value:"5.10.1 \u652f\u6301 Mvc \u63a7\u5236\u5668 \u52a8\u6001\u914d\u7f6e",id:"5101-\u652f\u6301-mvc-\u63a7\u5236\u5668-\u52a8\u6001\u914d\u7f6e",children:[]}]},{value:"5.11 \u5173\u4e8e AOP \u62e6\u622a",id:"511-\u5173\u4e8e-aop-\u62e6\u622a",children:[]},{value:"5.12 \u8bbe\u7f6e api \u8d85\u65f6\u8bf7\u6c42\u65f6\u95f4",id:"512-\u8bbe\u7f6e-api-\u8d85\u65f6\u8bf7\u6c42\u65f6\u95f4",children:[]},{value:"5.13 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"513-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],k={toc:u};function N(e){var n=e.components,t=(0,i.Z)(e,m);return(0,r.kt)("wrapper",(0,a.Z)({},k,t,{components:n,mdxType:"MDXLayout"}),(0,r.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u5c0f\u77e5\u8bc6")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},(0,r.kt)("inlineCode",{parentName:"p"},"\u52a8\u6001WebAPI")," \u5b9e\u9645\u4e0a\u5c31\u662f\u5c06\u666e\u901a\u7684\u7c7b\u53d8\u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"Controller"),"\uff0c\u4e5f\u5c31\u662f ",(0,r.kt)("inlineCode",{parentName:"p"},"\u52a8\u6001WebAPI")," \u5c31\u662f\u63a7\u5236\u5668\uff0c\u652f\u6301\u63a7\u5236\u5668\u4e00\u5207\u529f\u80fd\u3002"))),(0,r.kt)("h2",{id:"51-\u4ec0\u4e48\u662f\u63a7\u5236\u5668"},"5.1 \u4ec0\u4e48\u662f\u63a7\u5236\u5668"),(0,r.kt)("p",null,"\u7b80\u5355\u6765\u8bf4\uff0c\u63a7\u5236\u5668\u662f\u4e00\u4e2a\u627f\u4e0a\u542f\u4e0b\u7684\u4f5c\u7528\uff0c\u6839\u636e\u7528\u6237\u8f93\u5165\uff0c\u6267\u884c\u54cd\u5e94\u884c\u4e3a\uff08\u52a8\u4f5c\u65b9\u6cd5\uff09\uff0c\u540c\u65f6\u5728\u884c\u4e3a\u4e2d\u8c03\u7528\u6a21\u578b\u7684\u4e1a\u52a1\u903b\u8f91\uff0c\u8fd4\u56de\u7ed9\u7528\u6237\u7ed3\u679c\uff08\u89c6\u56fe\uff09\u3002"),(0,r.kt)("img",{src:(0,l.Z)("img/kzq.png")}),(0,r.kt)("p",null),(0,r.kt)("p",null,"\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"ASP.NET Core")," \u4e2d\uff0c\u63a7\u5236\u5668\u6709\u4e24\u79cd\u8868\u73b0\u5f62\u5f0f\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Mvc"),"\uff08\u5e26\u89c6\u56fe\uff09"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"WebAPI"),"\uff08RESTful API\uff09")),(0,r.kt)(p.Z,{defaultValue:"mvc",values:[{label:"Mvc \u63a7\u5236\u5668",value:"mvc"},{label:"WebAPI \u63a7\u5236\u5668",value:"webapi"}],mdxType:"Tabs"},(0,r.kt)(o.Z,{value:"mvc",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,5,7}","{1,5,7}":!0},"using Microsoft.AspNetCore.Mvc;\n\nnamespace Furion.Web.Entry.Controllers\n{\n public class MvcController : Controller\n {\n public IActionResult Index()\n {\n return View();\n }\n }\n}\n"))),(0,r.kt)(o.Z,{value:"webapi",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,5,6,8,9}","{1,5,6,8,9}":!0},'using Microsoft.AspNetCore.Mvc;\n\nnamespace Furion.Web.Entry.Controllers\n{\n [Route("api/[controller]")]\n public class WebApiController : ControllerBase\n {\n [HttpGet]\n public IActionResult Get()\n {\n return Content(nameof(Furion));\n }\n }\n}\n')))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Mvc")," \u63a7\u5236\u5668\u548c ",(0,r.kt)("inlineCode",{parentName:"p"},"WebAPI")," \u63a7\u5236\u5668\u6700\u5927\u7684\u533a\u522b\u662f ",(0,r.kt)("inlineCode",{parentName:"p"},"WebAPI")," \u63a7\u5236\u5668\u4e0d\u5e26 ",(0,r.kt)("strong",{parentName:"p"},"\u89c6\u56fe")," \u548c\u901a\u8fc7 ",(0,r.kt)("strong",{parentName:"p"},"\u8bf7\u6c42\u8c13\u8bcd\u548c\u8def\u7531\u5730\u5740\u54cd\u5e94\u884c\u4e3a"),"\u3002"),(0,r.kt)("h2",{id:"52-mvc-\u63a7\u5236\u5668-\u7ea6\u5b9a\u548c\u7f3a\u70b9"},"5.2 ",(0,r.kt)("inlineCode",{parentName:"h2"},"Mvc \u63a7\u5236\u5668")," \u7ea6\u5b9a\u548c\u7f3a\u70b9"),(0,r.kt)("p",null,"\u5728\u5b66\u4e60\u52a8\u6001 ",(0,r.kt)("inlineCode",{parentName:"p"},"WebAPI")," \u63a7\u5236\u5668\u4e4b\u524d\uff0c\u9996\u5148\u4e86\u89e3 ",(0,r.kt)("inlineCode",{parentName:"p"},"ASP.NET Core")," \u4e2d ",(0,r.kt)("inlineCode",{parentName:"p"},"WebAPI")," \u7684\u4e00\u4e9b\u7ea6\u5b9a\u548c\u6ce8\u610f\u4e8b\u9879\u3002"),(0,r.kt)("h3",{id:"521-webapi-\u7ea6\u5b9a"},"5.2.1 ",(0,r.kt)("inlineCode",{parentName:"h3"},"WebAPI")," \u7ea6\u5b9a"),(0,r.kt)("p",null,"\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"ASP.NET Core")," \u5e94\u7528\u4e2d\uff0c\u4e00\u4e2a ",(0,r.kt)("inlineCode",{parentName:"p"},"WebAPI")," \u63a7\u5236\u5668\u9700\u9075\u5faa\u4ee5\u4e0b\u7ea6\u5b9a\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u63a7\u5236\u5668\u7c7b",(0,r.kt)("strong",{parentName:"li"},"\u5fc5\u987b\u7ee7\u627f ",(0,r.kt)("inlineCode",{parentName:"strong"},"ControllerBase")," \u6216\u95f4\u63a5\u7ee7\u627f")),(0,r.kt)("li",{parentName:"ul"},"\u52a8\u4f5c\u65b9\u6cd5",(0,r.kt)("strong",{parentName:"li"},"\u5fc5\u987b\u8d34\u6709 ",(0,r.kt)("inlineCode",{parentName:"strong"},"[HttpMethod]")," \u7279\u6027\uff0c\u5982\uff1a",(0,r.kt)("inlineCode",{parentName:"strong"},"[HttpGet]"))),(0,r.kt)("li",{parentName:"ul"},"\u63a7\u5236\u5668\u6216\u52a8\u4f5c\u65b9\u6cd5",(0,r.kt)("strong",{parentName:"li"},"\u81f3\u5c11\u6709\u4e00\u4e2a\u914d\u7f6e ",(0,r.kt)("inlineCode",{parentName:"strong"},"[Route]")," \u7279\u6027")),(0,r.kt)("li",{parentName:"ul"},"\u751f\u6210 ",(0,r.kt)("inlineCode",{parentName:"li"},"WebAPI")," \u8def\u7531\u5730\u5740\u65f6\u4f1a\u81ea\u52a8\u53bb\u6389\u63a7\u5236\u5668\u540d\u79f0 ",(0,r.kt)("inlineCode",{parentName:"li"},"Controller")," \u540e\u7f00\uff0c\u540c\u65f6\u4e5f\u4f1a\u53bb\u6389\u52a8\u4f5c\u65b9\u6cd5\u5339\u914d\u7684 ",(0,r.kt)("inlineCode",{parentName:"li"},"HttpVerb")," \u8c13\u8bcd\uff0c\u5982 ",(0,r.kt)("inlineCode",{parentName:"li"},"GET\uff0cPOST\uff0cDELETE\uff0cPUT")," \u7b49"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"\u4e0d\u652f\u6301\u8fd4\u56de\u975e ",(0,r.kt)("inlineCode",{parentName:"strong"},"IEnumerable")," \u6cdb\u578b\u5bf9\u8c61")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"\u4e0d\u652f\u6301\u7c7b\u7c7b\u578b\u53c2\u6570\u5728 ",(0,r.kt)("inlineCode",{parentName:"strong"},"GET\uff0cHEAD")," \u8bf7\u6c42\u4e0b\u751f\u6210 ",(0,r.kt)("inlineCode",{parentName:"strong"},"Query")," \u53c2\u6570"))),(0,r.kt)("p",null,"\u9664\u4e86\u4e0a\u8ff0\u7ea6\u5b9a\u5916\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"WebAPI")," \u8def\u7531\u5730\u5740",(0,r.kt)("strong",{parentName:"p"},"\u57fa\u672c\u9760\u624b\u5de5\u5b8c\u6210"),"\uff0c\u4e0d\u5229\u4e8e\u4e66\u5199\uff0c\u4e0d\u5229\u4e8e\u7ef4\u62a4\uff0c\u518d\u8005\uff0c\u5728\u79fb\u52a8\u5e94\u7528\u5bf9\u63a5\u4e2d\u96be\u4ee5\u8fdb\u884c\u591a\u7248\u672c\u63a7\u5236\u3002"),(0,r.kt)("h3",{id:"522-net-core-webapi-\u7f3a\u70b9"},"5.2.2 ",(0,r.kt)("inlineCode",{parentName:"h3"},".NET Core WebAPI")," \u7f3a\u70b9"),(0,r.kt)("p",null,"\u901a\u8fc7\u4e0a\u4e00\u7ae0\u8282\u53ef\u4ee5\u770b\u51fa\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"ASP.NET Core")," \u5e94\u7528\u5b9e\u73b0 ",(0,r.kt)("inlineCode",{parentName:"p"},"WebAPI")," \u9700\u8981\u9075\u5faa\u79cd\u79cd\u7ea6\u5b9a\uff0c\u800c\u4e14\u5bb9\u6613\u51fa\u9519\u3002"),(0,r.kt)("p",null,"\u9664\u4e86\u8fd9\u4e9b\u7ea6\u5b9a\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},".NET Core WebAPI")," \u6709\u4ee5\u4e0b\u7f3a\u70b9\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u8def\u7531\u5730\u5740\u57fa\u672c\u9760\u624b\u5de5\u5b8c\u6210"),(0,r.kt)("li",{parentName:"ul"},"\u5728\u73b0\u5728\u79fb\u52a8\u4e3a\u738b\u7684\u65f6\u4ee3\uff0c\u4e0d\u5229\u4e8e\u8fdb\u884c\u591a\u7248\u672c\u63a7\u5236"),(0,r.kt)("li",{parentName:"ul"},"\u5bf9\u63a5 ",(0,r.kt)("inlineCode",{parentName:"li"},"Swagger")," \u6587\u6863\u5206\u7ec4\u6bd4\u8f83\u590d\u6742"),(0,r.kt)("li",{parentName:"ul"},"\u5b9e\u73b0 ",(0,r.kt)("inlineCode",{parentName:"li"},"Policy")," \u7b56\u7565\u6388\u6743\u4e5f\u6bd4\u8f83\u590d\u6742"),(0,r.kt)("li",{parentName:"ul"},"\u4e0d\u652f\u6301\u63a7\u5236\u5668\u70ed\u63d2\u62d4\u63d2\u4ef6\u5316"),(0,r.kt)("li",{parentName:"ul"},"\u96be\u4ee5\u5b9e\u73b0\u590d\u6742\u81ea\u5b9a\u4e49\u7684 ",(0,r.kt)("inlineCode",{parentName:"li"},"RESTful API")," \u98ce\u683c")),(0,r.kt)("h2",{id:"53-\u52a8\u6001-webapi-\u63a7\u5236\u5668"},"5.3 \u52a8\u6001 ",(0,r.kt)("inlineCode",{parentName:"h2"},"WebAPI")," \u63a7\u5236\u5668"),(0,r.kt)("p",null,"\u9488\u5bf9\u4ee5\u4e0a ",(0,r.kt)("inlineCode",{parentName:"p"},"ASP.NET Core")," \u63d0\u4f9b\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"WebAPI")," \u5fc5\u987b\u9075\u5faa\u7684\u7ea6\u5b9a\u548c\u4e0d\u53ef\u907f\u514d\u7684\u7f3a\u70b9\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u521b\u9020\u51fa\u4e00\u79cd\u66f4\u52a0\u7075\u6d3b\u521b\u5efa ",(0,r.kt)("inlineCode",{parentName:"p"},"WebAPI")," \u63a7\u5236\u5668\u7684\u65b9\u5f0f\u3002"),(0,r.kt)("p",null,"\u8fd9\u4e2a\u65b9\u5f0f\u5728\u7ee7\u627f\u4e86 ",(0,r.kt)("inlineCode",{parentName:"p"},"ASP.NET Core WebAPI")," \u6240\u6709\u4f18\u70b9\uff0c\u540c\u65f6\u8fdb\u884c\u4e86\u5927\u91cf\u62d3\u5c55\u548c\u4f18\u5316\u3002\u4f18\u5316\u540e\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"WebAPI")," \u5177\u6709\u4ee5\u4e0b\u4f18\u70b9\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u5177\u5907\u539f\u6709\u7684 ",(0,r.kt)("inlineCode",{parentName:"li"},"ControllerBase")," \u6240\u6709\u529f\u80fd"),(0,r.kt)("li",{parentName:"ul"},"\u652f\u6301",(0,r.kt)("strong",{parentName:"li"},"\u4efb\u610f\u516c\u5f00 \u975e\u9759\u6001 \u975e\u62bd\u8c61 \u975e\u6cdb\u578b\u7c7b"),"\u8f6c\u63a7\u5236\u5668"),(0,r.kt)("li",{parentName:"ul"},"\u63d0\u4f9b\u66f4\u52a0\u7075\u6d3b\u65b9\u4fbf\u7684 ",(0,r.kt)("inlineCode",{parentName:"li"},"IDynamicApiController")," \u7a7a\u63a5\u53e3\u6216 ",(0,r.kt)("inlineCode",{parentName:"li"},"[DynamicApiController]")," \u7279\u6027\u66ff\u4ee3 ",(0,r.kt)("inlineCode",{parentName:"li"},"ControllerBase")," \u62bd\u8c61\u7c7b"),(0,r.kt)("li",{parentName:"ul"},"\u65e0\u9700\u624b\u52a8\u914d\u7f6e ",(0,r.kt)("inlineCode",{parentName:"li"},"[HttpMethod]")," \u7279\u6027\uff0c\u540c\u65f6\u652f\u6301\u4e00\u4e2a\u52a8\u4f5c\u65b9\u6cd5\u591a\u4e2a ",(0,r.kt)("inlineCode",{parentName:"li"},"HttpVerb")),(0,r.kt)("li",{parentName:"ul"},"\u65e0\u9700\u624b\u52a8\u914d\u7f6e ",(0,r.kt)("inlineCode",{parentName:"li"},"[Route]")," \u7279\u6027\uff0c\u652f\u6301\u66f4\u52a0\u7075\u6d3b\u7684\u914d\u7f6e\u53ca\u81ea\u52a8\u8def\u7531\u751f\u6210"),(0,r.kt)("li",{parentName:"ul"},"\u652f\u6301\u8fd4\u56de\u6cdb\u578b\u63a5\u53e3\uff0c\u6cdb\u578b\u7c7b"),(0,r.kt)("li",{parentName:"ul"},"\u548c ",(0,r.kt)("inlineCode",{parentName:"li"},"Swagger")," \u6df1\u5ea6\u7ed3\u5408\uff0c\u63d0\u4f9b\u6781\u5176\u65b9\u4fbf\u7684\u521b\u5efa ",(0,r.kt)("inlineCode",{parentName:"li"},"Swagger")," \u5206\u7ec4\u914d\u7f6e"),(0,r.kt)("li",{parentName:"ul"},"\u652f\u6301 ",(0,r.kt)("inlineCode",{parentName:"li"},"Basic Auth\uff0cJwt\uff0cApiKey")," \u7b49\u591a\u79cd\u6743\u9650\u7075\u6d3b\u914d\u7f6e"),(0,r.kt)("li",{parentName:"ul"},"\u652f\u6301\u63a7\u5236\u5668\u3001\u52a8\u4f5c\u65b9\u6cd5",(0,r.kt)("strong",{parentName:"li"},"\u7248\u672c\u63a7\u5236"),"\u529f\u80fd"),(0,r.kt)("li",{parentName:"ul"},"\u652f\u6301 ",(0,r.kt)("inlineCode",{parentName:"li"},"GET\u3001HEAD")," \u8bf7\u6c42\u81ea\u52a8\u8f6c\u6362 ",(0,r.kt)("inlineCode",{parentName:"li"},"\u7c7b\u7c7b\u578b\u53c2\u6570")),(0,r.kt)("li",{parentName:"ul"},"\u652f\u6301\u751f\u6210 ",(0,r.kt)("inlineCode",{parentName:"li"},"OAS3")," \u63a5\u53e3\u89c4\u8303")),(0,r.kt)("h2",{id:"54-\u6ce8\u518c\u52a8\u6001-webapi-\u670d\u52a1"},"5.4 \u6ce8\u518c\u52a8\u6001 ",(0,r.kt)("inlineCode",{parentName:"h2"},"WebAPI")," \u670d\u52a1"),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u5907\u6ce8")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},(0,r.kt)("inlineCode",{parentName:"p"},".AddDynamicApiControllers()")," \u9ed8\u8ba4\u5df2\u7ecf\u96c6\u6210\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"AddInject()")," \u4e2d\u4e86\uff0c\u65e0\u9700\u518d\u6b21\u6ce8\u518c\u3002\u4e5f\u5c31\u662f\u4e0b\u5217\u4ee3\u7801\u53ef\u4e0d\u914d\u7f6e\u3002"))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:'{11} title="Furion.Web.Core\\FurWebCoreStartup.cs"',"{11}":!0,title:'"Furion.Web.Core\\FurWebCoreStartup.cs"'},"using Microsoft.Extensions.DependencyInjection;\n\nnamespace Furion.Web.Core\n{\n [AppStartup(800)]\n public sealed class FurWebCoreStartup : AppStartup\n {\n public void ConfigureServices(IServiceCollection services)\n {\n services.AddControllers()\n .AddDynamicApiControllers();\n }\n }\n}\n")),(0,r.kt)("div",{className:"admonition admonition-caution alert alert--warning"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 16 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"}))),"\u7279\u522b\u6ce8\u610f")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},(0,r.kt)("inlineCode",{parentName:"p"},".AddDynamicApiControllers()")," \u5fc5\u987b\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"services.AddControllers()")," \u4e4b\u540e\u6ce8\u518c\u3002"))),(0,r.kt)("h2",{id:"55-\u7b2c\u4e00\u4e2a\u4f8b\u5b50"},"5.5 \u7b2c\u4e00\u4e2a\u4f8b\u5b50"),(0,r.kt)("p",null,"\u521b\u5efa\u4e00\u4e2a ",(0,r.kt)("inlineCode",{parentName:"p"},"FurionAppService")," \u7c7b\u7ee7\u627f ",(0,r.kt)("inlineCode",{parentName:"p"},"IDynamicApiController")," \u63a5\u53e3 \u6216 \u8d34 ",(0,r.kt)("inlineCode",{parentName:"p"},"[DynamicApiController]")," \u7279\u6027\uff0c\u5e76\u5728\u8fd9\u4e2a\u7c7b\u4e2d\u7f16\u5199\u4e00\u4e2a ",(0,r.kt)("inlineCode",{parentName:"p"},"Get")," \u65b9\u6cd5\u3002"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},(0,r.kt)("inlineCode",{parentName:"strong"},"IDynamicApiController")," \u65b9\u5f0f"))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,5,7}","{1,5,7}":!0},'using Furion.DynamicApiController;\n\nnamespace Furion.Application\n{\n public class FurionAppService : IDynamicApiController\n {\n public string Get()\n {\n return $"Hello {nameof(Furion)}";\n }\n }\n}\n')),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},(0,r.kt)("inlineCode",{parentName:"strong"},"[DynamicApiController]")," \u65b9\u5f0f"))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,5,8}","{1,5,8}":!0},'using Furion.DynamicApiController;\n\nnamespace Furion.Application\n{\n [DynamicApiController]\n public class FurionAppService\n {\n public string Get()\n {\n return $"Hello {nameof(Furion)}";\n }\n }\n}\n')),(0,r.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff0c\u4e00\u4e2a ",(0,r.kt)("inlineCode",{parentName:"p"},"WebAPI")," \u63a5\u53e3\u5c31\u8fd9\u4e48\u751f\u6210\u4e86\u3002"),(0,r.kt)("img",{src:(0,l.Z)("img/dyglz.gif")}),(0,r.kt)("h2",{id:"56-\u52a8\u6001-webapi-\u539f\u7406\u89e3\u6790"},"5.6 \u52a8\u6001 ",(0,r.kt)("inlineCode",{parentName:"h2"},"WebAPI")," \u539f\u7406\u89e3\u6790"),(0,r.kt)("h3",{id:"561-\u63a7\u5236\u5668\u7279\u6027\u63d0\u4f9b\u5668"},"5.6.1 \u63a7\u5236\u5668\u7279\u6027\u63d0\u4f9b\u5668"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4f1a\u5728\u5e94\u7528\u542f\u52a8\u65f6\u6ce8\u518c ",(0,r.kt)("inlineCode",{parentName:"p"},"DynamicApiControllerFeatureProvider")," \u63a7\u5236\u5668\u7279\u6027\u63d0\u4f9b\u5668\uff0c\u8be5\u63d0\u4f9b\u5668\u7ee7\u627f\u81ea ",(0,r.kt)("inlineCode",{parentName:"p"},"ControllerFeatureProvider")," \u7c7b\u3002"),(0,r.kt)("p",null,"\u63a5\u7740\u91cd\u5199 ",(0,r.kt)("inlineCode",{parentName:"p"},"bool IsController(TypeInfo typeInfo)")," \u65b9\u6cd5\uff0c\u7528\u6765\u6807\u8bc6\u63a7\u5236\u5668\u7c7b\u578b\u3002\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\uff0c",(0,r.kt)("strong",{parentName:"p"},"\u7ee7\u627f\u81ea ",(0,r.kt)("inlineCode",{parentName:"strong"},"ControllerBase")," \u7c7b\u6216 ",(0,r.kt)("inlineCode",{parentName:"strong"},"IDynamicApiController")," \u63a5\u53e3\u6216 ",(0,r.kt)("inlineCode",{parentName:"strong"},"[DynamicApiController]")," \u7279\u6027\u90fd\u4f1a\u88ab\u6807\u8bb0\u4e3a\u63a7\u5236\u5668\u7c7b\u578b\u3002")),(0,r.kt)("h3",{id:"562-\u5e94\u7528\u6a21\u578b\u8f6c\u6362\u5668"},"5.6.2 \u5e94\u7528\u6a21\u578b\u8f6c\u6362\u5668"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u540c\u65f6\u5728\u5e94\u7528\u542f\u52a8\u65f6\u6ce8\u518c ",(0,r.kt)("inlineCode",{parentName:"p"},"DynamicApiControllerApplicationModelConvention")," \u5e94\u7528\u6a21\u578b\u8f6c\u6362\u5668\uff0c\u8be5\u8f6c\u6362\u5668\u7ee7\u627f\u81ea ",(0,r.kt)("inlineCode",{parentName:"p"},"IApplicationModelConvention")," \u63a5\u53e3\u3002"),(0,r.kt)("p",null,"\u63a5\u7740\u5b9e\u73b0 ",(0,r.kt)("inlineCode",{parentName:"p"},"void Apply(ApplicationModel application)")," \u63a5\u53e3\u65b9\u6cd5\u3002\u5728\u8be5\u65b9\u6cd5\u4e2d\u914d\u7f6e\u63a7\u5236\u5668\u540d\u79f0\u3001\u8def\u7531\u3001\u5bfc\u51fa\u53ef\u89c1\u6027\u53ca\u52a8\u4f5c\u65b9\u6cd5\u540d\u79f0\u3001\u8def\u7531\u3001\u5bfc\u51fa\u53ef\u89c1\u6027\u7b49\u3002"),(0,r.kt)("p",null,"\u5b9e\u9645\u4e0a\u8be5\u65b9\u6cd5\u505a\u7684\u5c31\u662f\u6309\u7167 ",(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("a",{parentName:"strong",href:"#521-webapi-%E7%BA%A6%E5%AE%9A"},"WebAPI \u7ea6\u5b9a"))," \u63d0\u524d\u5e2e\u6211\u4eec\u914d\u7f6e\u597d\u8def\u7531\u3001\u8bf7\u6c42\u8c13\u8bcd\u7b49\u4fe1\u606f\u3002\u907f\u514d\u4e86\u624b\u52a8\u914d\u7f6e\u7684\u540c\u65f6\u8fd8\u589e\u52a0\u4e86\u8bb8\u591a\u65b0\u7279\u6027\uff0c\u5982",(0,r.kt)("strong",{parentName:"p"},"\u7248\u672c\u63a7\u5236\u3002")),(0,r.kt)("h2",{id:"57-\u52a8\u6001-webapi-\u914d\u7f6e\u7ea6\u5b9a"},"5.7 \u52a8\u6001 ",(0,r.kt)("inlineCode",{parentName:"h2"},"WebAPI")," \u914d\u7f6e\u7ea6\u5b9a"),(0,r.kt)("h3",{id:"571-\u63a7\u5236\u5668\u9ed8\u8ba4\u7ea6\u5b9a"},"5.7.1 \u63a7\u5236\u5668\u9ed8\u8ba4\u7ea6\u5b9a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u751f\u6210\u63a7\u5236\u5668\u540d\u79f0\u9ed8\u8ba4\u53bb\u9664\u4ee5 ",(0,r.kt)("inlineCode",{parentName:"li"},"AppServices\uff0cAppService\uff0cApiController\uff0cController\uff0cServices\uff0cService")," \u4f5c\u4e3a\u524d\u540e\u7f00\u7684\u5b57\u7b26\u4e32\u3002\u89c1\u7b2c\u4e00\u4e2a\u4f8b\u5b50\u4e2d\u7684 ",(0,r.kt)("inlineCode",{parentName:"li"},"FurionAppService -> Furion")," ",(0,r.kt)("strong",{parentName:"li"},"\u652f\u6301\u81ea\u5b9a\u4e49\u914d\u7f6e")),(0,r.kt)("li",{parentName:"ul"},"\u63a7\u5236\u5668\u540d\u79f0\u5e26 ",(0,r.kt)("inlineCode",{parentName:"li"},"V[0-9_]")," \u7ed3\u5c3e\u7684\uff0c\u4f1a\u81ea\u52a8\u751f\u6210\u63a7\u5236\u5668\u7248\u672c\u53f7\uff0c\u5982 ",(0,r.kt)("inlineCode",{parentName:"li"},"FurionAppServiceV2 -> Furion@2"),"\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"FurionAppServiceV1_1_0 -> Furion@1.1.0"),"\u3002",(0,r.kt)("strong",{parentName:"li"},"\u652f\u6301\u7248\u672c\u5206\u9694\u7b26\u914d\u7f6e")),(0,r.kt)("li",{parentName:"ul"},"\u63a7\u5236\u540d\u79f0\u4ee5 ",(0,r.kt)("inlineCode",{parentName:"li"},"\u9a86\u9a7c\u547d\u540d\uff08CamelCase\uff09")," \u4f1a\u81ea\u52a8\u5207\u5272\u6210\u591a\u4e2a\u5355\u8bcd ",(0,r.kt)("inlineCode",{parentName:"li"},"-")," \u8fde\u63a5\u3002",(0,r.kt)("strong",{parentName:"li"},"\u652f\u6301\u81ea\u5b9a\u4e49\u914d\u7f6e"))),(0,r.kt)("h3",{id:"572-\u52a8\u4f5c\u65b9\u6cd5\u9ed8\u8ba4\u7ea6\u5b9a"},"5.7.2 \u52a8\u4f5c\u65b9\u6cd5\u9ed8\u8ba4\u7ea6\u5b9a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u751f\u6210\u7684\u52a8\u4f5c\u65b9\u6cd5\u540d\u79f0\u9ed8\u8ba4\u53bb\u9664\u4ee5 ",(0,r.kt)("inlineCode",{parentName:"li"},"Post/Add/Create/Insert/Submit\uff0cGetAll/GetList/Get/Find/Fetch/Query/Search\uff0cPut/Update\uff0cDelete/Remove/Clear\uff0cPatch")," \u5f00\u5934\u7684\u5b57\u7b26\u4e32\u3002",(0,r.kt)("strong",{parentName:"li"},"\u652f\u6301\u81ea\u5b9a\u4e49\u914d\u7f6e")),(0,r.kt)("li",{parentName:"ul"},"\u751f\u6210\u7684\u52a8\u4f5c\u65b9\u6cd5\u540d\u79f0\u9ed8\u8ba4\u53bb\u9664\u4ee5 ",(0,r.kt)("inlineCode",{parentName:"li"},"Async")," \u4f5c\u4e3a\u524d\u540e\u7f00\u7684\u5b57\u7b26\u4e32\u3002",(0,r.kt)("strong",{parentName:"li"},"\u652f\u6301\u81ea\u5b9a\u4e49\u914d\u7f6e")),(0,r.kt)("li",{parentName:"ul"},"\u52a8\u4f5c\u65b9\u6cd5\u540d\u79f0\u5e26 ",(0,r.kt)("inlineCode",{parentName:"li"},"V[0-9_]")," \u7ed3\u5c3e\u7684\uff0c\u4f1a\u81ea\u52a8\u751f\u6210\u52a8\u4f5c\u65b9\u6cd5\u7248\u672c\u53f7\uff0c\u5982 ",(0,r.kt)("inlineCode",{parentName:"li"},"ChangePasswordV2 -> ChangePassword@2"),"\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"ChangePasswordV1_1_0 -> ChangePassword@1.1.0"),"\u3002",(0,r.kt)("strong",{parentName:"li"},"\u652f\u6301\u7248\u672c\u5206\u9694\u7b26\u914d\u7f6e")),(0,r.kt)("li",{parentName:"ul"},"\u52a8\u4f5c\u65b9\u6cd5\u540d\u79f0\u4ee5 ",(0,r.kt)("inlineCode",{parentName:"li"},"\u9a86\u9a7c(\u9a7c\u5cf0)/\u5e15\u65af\u5361\u547d\u540d\uff08CamelCase/Pascal\uff09")," \u4f1a\u81ea\u52a8\u5207\u5272\u6210\u591a\u4e2a\u5355\u8bcd ",(0,r.kt)("inlineCode",{parentName:"li"},"-")," \u8fde\u63a5\u3002",(0,r.kt)("strong",{parentName:"li"},"\u652f\u6301\u81ea\u5b9a\u4e49\u914d\u7f6e")),(0,r.kt)("li",{parentName:"ul"},"\u52a8\u4f5c\u65b9\u6cd5\u53c2\u6570\u5c06\u81ea\u52a8\u8f6c\u4e3a\u5c0f\u5199\u3002",(0,r.kt)("strong",{parentName:"li"},"\u652f\u6301\u81ea\u5b9a\u4e49\u914d\u7f6e"))),(0,r.kt)("h3",{id:"573-\u8bf7\u6c42\u8c13\u8bcd\u9ed8\u8ba4\u7ea6\u5b9a"},"5.7.3 \u8bf7\u6c42\u8c13\u8bcd\u9ed8\u8ba4\u7ea6\u5b9a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u52a8\u4f5c\u65b9\u6cd5\u540d",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"\u4ee5 ",(0,r.kt)("inlineCode",{parentName:"li"},"Post/Add/Create/Insert/Submit")," \u5f00\u5934\uff0c\u5219\u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"li"},"[HttpPost]")," \u7279\u6027\u3002"),(0,r.kt)("li",{parentName:"ul"},"\u4ee5 ",(0,r.kt)("inlineCode",{parentName:"li"},"GetAll/GetList/Get/Find/Fetch/Query")," \u5f00\u5934\uff0c\u5219\u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"li"},"[HttpGet]")," \u7279\u6027\u3002"),(0,r.kt)("li",{parentName:"ul"},"\u4ee5 ",(0,r.kt)("inlineCode",{parentName:"li"},"Put/Update")," \u5f00\u5934\uff0c\u5219\u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"li"},"[HttpPut]")," \u7279\u6027\u3002"),(0,r.kt)("li",{parentName:"ul"},"\u4ee5 ",(0,r.kt)("inlineCode",{parentName:"li"},"Delete/Remove/Clear")," \u5f00\u5934\uff0c\u5219\u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"li"},"[HttpDelete]")," \u7279\u6027\u3002"),(0,r.kt)("li",{parentName:"ul"},"\u4ee5 ",(0,r.kt)("inlineCode",{parentName:"li"},"Patch")," \u5f00\u5934\uff0c\u5219\u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"li"},"[HttpPatch]")," \u7279\u6027"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"\u652f\u6301\u81ea\u5b9a\u4e49\u914d\u7f6e")))),(0,r.kt)("li",{parentName:"ul"},"\u5982\u679c\u4e0d\u5728\u4e0a\u9762\u7ea6\u5b9a\u4e2d\uff0c\u5219\u9ed8\u8ba4\u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"li"},"[HttpPost]")," \u7279\u6027\u3002",(0,r.kt)("strong",{parentName:"li"},"\u652f\u6301\u81ea\u5b9a\u4e49\u914d\u7f6e"))),(0,r.kt)("h3",{id:"574-\u8def\u7531\u5730\u5740\u9ed8\u8ba4\u7ea6\u5b9a"},"5.7.4 \u8def\u7531\u5730\u5740\u9ed8\u8ba4\u7ea6\u5b9a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u9ed8\u8ba4\u4ee5 ",(0,r.kt)("inlineCode",{parentName:"li"},"api")," \u5f00\u5934\u3002",(0,r.kt)("strong",{parentName:"li"},"\u652f\u6301\u81ea\u5b9a\u4e49\u914d\u7f6e")),(0,r.kt)("li",{parentName:"ul"},"\u9ed8\u8ba4\u8f6c\u6362\u4e3a\u5c0f\u5199\u8def\u7531\u5730\u5740\u3002",(0,r.kt)("strong",{parentName:"li"},"\u652f\u6301\u81ea\u5b9a\u4e49\u914d\u7f6e")),(0,r.kt)("li",{parentName:"ul"},"\u751f\u6210\u63a7\u5236\u5668\u8def\u7531\u6a21\u677f\u683c\u5f0f\u4e3a\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"api/\u524d\u7f6e\u53c2\u6570\u5217\u8868/\u6a21\u5757\u540d\u6216\u9ed8\u8ba4\u533a\u57df\u540d/[controller@\u7248\u672c\u53f7]/\u540e\u7f6e\u53c2\u6570\u5217\u8868")),(0,r.kt)("li",{parentName:"ul"},"\u751f\u6210\u52a8\u4f5c\u65b9\u6cd5\u8def\u7531\u6a21\u677f\u683c\u5f0f\u4e3a\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"\u524d\u7f6e\u53c2\u6570\u5217\u8868/\u6a21\u5757\u540d/[action@\u7248\u672c\u53f7]/\u540e\u7f6e\u53c2\u6570\u5217\u8868"))),(0,r.kt)("h3",{id:"575-\u5176\u4ed6\u7ea6\u5b9a"},"5.7.5 \u5176\u4ed6\u7ea6\u5b9a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u9ed8\u8ba4\u4e0d\u5904\u7406 ",(0,r.kt)("inlineCode",{parentName:"li"},"ControllerBase")," \u63a7\u5236\u5668\u7c7b\u578b\u3002",(0,r.kt)("strong",{parentName:"li"},"\u652f\u6301\u81ea\u5b9a\u4e49\u914d\u7f6e")),(0,r.kt)("li",{parentName:"ul"},"\u9ed8\u8ba4\u4e0d\u5904\u7406 ",(0,r.kt)("inlineCode",{parentName:"li"},"GET\uff0cHEAD")," \u8bf7\u6c42\u7684\u5f15\u7528\u7c7b\u578b\u53c2\u6570\u3002",(0,r.kt)("strong",{parentName:"li"},"\u652f\u6301\u81ea\u5b9a\u4e49\u914d\u7f6e"))),(0,r.kt)("h2",{id:"58-\u66f4\u591a\u4f8b\u5b50"},"5.8 \u66f4\u591a\u4f8b\u5b50"),(0,r.kt)("h3",{id:"581-\u591a\u79cd\u8bf7\u6c42\u8c13\u8bcd\u65b9\u6cd5"},"5.8.1 \u591a\u79cd\u8bf7\u6c42\u8c13\u8bcd\u65b9\u6cd5"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{7,12,17,22,27}","{7,12,17,22,27}":!0},'using Furion.DynamicApiController;\n\nnamespace Furion.Application\n{\n public class FurionAppService : IDynamicApiController\n {\n public string Get()\n {\n return $"GET \u8bf7\u6c42";\n }\n\n public string Post()\n {\n return $"POST \u8bf7\u6c42";\n }\n\n public string Delete()\n {\n return $"DELETE \u8bf7\u6c42";\n }\n\n public string Put()\n {\n return $"PUT \u8bf7\u6c42";\n }\n\n public string Patch()\n {\n return $"PATCH \u8bf7\u6c42";\n }\n }\n}\n')),(0,r.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,r.kt)("img",{src:(0,l.Z)("img/dgqqwc.png")}),(0,r.kt)("h3",{id:"582-\u591a\u4e2a\u81ea\u5b9a\u4e49\u52a8\u4f5c\u65b9\u6cd5"},"5.8.2 \u591a\u4e2a\u81ea\u5b9a\u4e49\u52a8\u4f5c\u65b9\u6cd5"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{7,12,17}","{7,12,17}":!0},'using Furion.DynamicApiController;\n\nnamespace Furion.Application\n{\n public class FurionAppService : IDynamicApiController\n {\n public string GetVersion()\n {\n return $"v1.0.0";\n }\n\n public string ChangeProfile()\n {\n return "\u4fee\u6539\u6210\u529f";\n }\n\n public string DeleteUser()\n {\n return "\u5220\u9664\u6210\u529f";\n }\n }\n}\n')),(0,r.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,r.kt)("img",{src:(0,l.Z)("img/dzmc.png")}),(0,r.kt)("h3",{id:"583-\u5e26\u53c2\u6570\u52a8\u4f5c\u65b9\u6cd5"},"5.8.3 \u5e26\u53c2\u6570\u52a8\u4f5c\u65b9\u6cd5"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{7,12,17}","{7,12,17}":!0},'using Furion.DynamicApiController;\n\nnamespace Furion.Application\n{\n public class FurionAppService : IDynamicApiController\n {\n public string GetUser(int id)\n {\n return $"{id}";\n }\n\n public string GetUser(int id, string name)\n {\n return $"{id} {name}";\n }\n\n public TestDto Add(TestDto testDto)\n {\n return testDto;\n }\n }\n}\n')),(0,r.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,r.kt)("img",{src:(0,l.Z)("img/dcsff.gif")}),(0,r.kt)("h3",{id:"584-gethead-\u7c7b\u7c7b\u578b\u53c2\u6570"},"5.8.4 ",(0,r.kt)("inlineCode",{parentName:"h3"},"GET/HEAD")," \u7c7b\u7c7b\u578b\u53c2\u6570"),(0,r.kt)("p",null,"\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"ASP.NET Core")," \u4f1a\u5c06 ",(0,r.kt)("inlineCode",{parentName:"p"},"GET/HEAD")," \u8bf7\u6c42\u4e2d\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"\u7c7b\u7c7b\u578b\u53c2\u6570")," \u8bbe\u7f6e\u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"[FromBody]")," \u7ed1\u5b9a\uff0c\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{7}","{7}":!0},"using Furion.DynamicApiController;\n\nnamespace Furion.Application\n{\n public class FurionAppService : IDynamicApiController\n {\n public TestDto GetTest(TestDto testDto)\n {\n return testDto;\n }\n }\n}\n")),(0,r.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,r.kt)("img",{src:(0,l.Z)("img/getyycs.png")}),(0,r.kt)("p",null,"\u4f46\u662f\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"GET\u3001HEAD")," \u8bf7\u6c42\u4e0d\u652f\u6301 ",(0,r.kt)("inlineCode",{parentName:"p"},"From Body")," \u7ed1\u5b9a\u3002\u6240\u4ee5\u6211\u4eec\u9700\u8981\u8f6c\u6362\u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"Query")," \u67e5\u8be2\u53c2\u6570\u3002"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u652f\u6301\u4ee5\u4e0b\u4e24\u79cd\u65b9\u5f0f\u914d\u7f6e\uff1a"),(0,r.kt)(p.Z,{defaultValue:"fromquery",values:[{label:"[FromQuery] \u7279\u6027",value:"fromquery"},{label:"\u914d\u7f6e DynamicApiControllerSettings",value:"DynamicApiControllerSettings"}],mdxType:"Tabs"},(0,r.kt)(o.Z,{value:"fromquery",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{2,8}","{2,8}":!0},"using Furion.DynamicApiController;\nusing Microsoft.AspNetCore.Mvc;\n\nnamespace Furion.Application\n{\n public class FurionAppService : IDynamicApiController\n {\n public TestDto GetTest([FromQuery] TestDto testDto)\n {\n return testDto;\n }\n }\n}\n"))),(0,r.kt)(o.Z,{value:"DynamicApiControllerSettings",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json",metastring:'{2-4} title="Furion.Web.Entry/appsettings.json"',"{2-4}":!0,title:'"Furion.Web.Entry/appsettings.json"'},'{\n "DynamicApiControllerSettings": {\n "ModelToQuery": true\n }\n}\n')))),(0,r.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,r.kt)("img",{src:(0,l.Z)("img/modeltoquery.png")}),(0,r.kt)("h3",{id:"585-\u81ea\u5b9a\u4e49\u53c2\u6570\u4f4d\u7f6e"},"5.8.5 \u81ea\u5b9a\u4e49\u53c2\u6570\u4f4d\u7f6e"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u4e86\u975e\u5e38\u65b9\u4fbf\u7684\u81ea\u5b9a\u4e49\u53c2\u6570\u4f4d\u7f6e\u7684\u7279\u6027 ",(0,r.kt)("inlineCode",{parentName:"p"},"[ApiSeat]"),"\uff0c\u901a\u8fc7 ",(0,r.kt)("inlineCode",{parentName:"p"},"[ApiSeat]")," \u53ef\u914d\u7f6e\u53c2\u6570\u4f4d\u7f6e\uff0c\u652f\u6301\u4ee5\u4e0b\u56db\u79cd\u4f4d\u7f6e\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"ApiSeats.ControllerStart"),"\uff1a\u63a7\u5236\u5668\u4e4b\u524d"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"ApiSeats.ControllerEnd"),"\uff1a\u63a7\u5236\u5668\u4e4b\u540e"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"ApiSeats.ActionStart"),"\uff1a\u52a8\u4f5c\u65b9\u6cd5\u4e4b\u524d"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"ApiSeats.ActionEnd"),"\uff1a\u52a8\u4f5c\u65b9\u6cd5\u4e4b\u540e\u3002",(0,r.kt)("strong",{parentName:"li"},"\u9ed8\u8ba4\u503c"))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{8-9,15-20}","{8-9,15-20}":!0},'using Furion.DynamicApiController;\nusing System;\n\nnamespace Furion.Application\n{\n public class FurionAppService : IDynamicApiController\n {\n // \u53c2\u6570\u9ed8\u8ba4\u4e3a ApiSeats.ActionEnd\n public string RouteSeat(int id, string name)\n {\n return "\u914d\u7f6e\u8def\u7531\u53c2\u6570\u4f4d\u7f6e";\n }\n\n public string RouteSeat(\n [ApiSeat(ApiSeats.ControllerStart)] int id, // \u63a7\u5236\u5668\u540d\u79f0\u4e4b\u524d\n [ApiSeat(ApiSeats.ControllerEnd)] string name, // \u63a7\u5236\u5668\u540d\u79f0\u4e4b\u540e\n [ApiSeat(ApiSeats.ControllerEnd)] int age, // \u63a7\u5236\u5668\u540d\u79f0\u4e4b\u540e\n [ApiSeat(ApiSeats.ActionStart)] decimal weight, // \u52a8\u4f5c\u65b9\u6cd5\u540d\u79f0\u4e4b\u524d\n [ApiSeat(ApiSeats.ActionStart)] float height, // \u52a8\u4f5c\u65b9\u6cd5\u540d\u79f0\u4e4b\u524d\n [ApiSeat(ApiSeats.ActionEnd)] DateTime birthday) // \u52a8\u4f5c\u65b9\u6cd5\u540d\u79f0\u4e4b\u540e\uff08\u9ed8\u8ba4\u503c\uff09\n {\n return "\u914d\u7f6e\u8def\u7531\u53c2\u6570\u4f4d\u7f6e";\n }\n }\n}\n')),(0,r.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,r.kt)("img",{src:(0,l.Z)("img/cswz.png")}),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u6e29\u99a8\u63d0\u793a")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u591a\u4e2a ",(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("inlineCode",{parentName:"strong"},"\u540c\u4f4d\u7f6e"))," \u914d\u7f6e\u7684\u53c2\u6570\u5c06\u6309\u7167 ",(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("inlineCode",{parentName:"strong"},"\u5b9a\u4e49\u53c2\u6570\u987a\u5e8f"))," \u8fdb\u884c\u6392\u5e8f\u3002"))),(0,r.kt)("div",{className:"admonition admonition-caution alert alert--warning"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 16 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"}))),"\u7279\u522b\u6ce8\u610f")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},(0,r.kt)("inlineCode",{parentName:"p"},"[ApiSeat]")," \u53ea\u80fd\u5e94\u7528\u4e8e\u8d34\u4e86 ",(0,r.kt)("inlineCode",{parentName:"p"},"[FromRoute]")," \u7279\u6027\u7684\u53c2\u6570\u6216 ",(0,r.kt)("inlineCode",{parentName:"p"},"\u57fa\u5143\u7c7b\u578b\u3001\u503c\u7c7b\u578b\u3001\u53ef\u7a7a\u57fa\u5143\u7c7b\u578b\u548c\u53ef\u7a7a\u503c\u7c7b\u578b"),"\u3002"))),(0,r.kt)("h3",{id:"586-\u81ea\u5b9a\u4e49\u8bf7\u6c42\u8c13\u8bcd"},"5.8.6 \u81ea\u5b9a\u4e49\u8bf7\u6c42\u8c13\u8bcd"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{2,8}","{2,8}":!0},'using Furion.DynamicApiController;\nusing Microsoft.AspNetCore.Mvc;\n\nnamespace Furion.Application\n{\n public class FurionAppService : IDynamicApiController\n {\n [HttpPost]\n public string GetVersion()\n {\n return "1.0.0";\n }\n }\n}\n')),(0,r.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,r.kt)("img",{src:(0,l.Z)("img/zdywc.png")}),(0,r.kt)("h3",{id:"587-\u652f\u6301\u591a\u4e2a\u8c13\u8bcd"},"5.8.7 \u652f\u6301\u591a\u4e2a\u8c13\u8bcd"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{2,8}","{2,8}":!0},'using Furion.DynamicApiController;\nusing Microsoft.AspNetCore.Mvc;\n\nnamespace Furion.Application\n{\n public class FurionAppService : IDynamicApiController\n {\n [HttpPost, HttpGet, AcceptVerbs("PUT", "DELETE")]\n public string GetVersion()\n {\n return "1.0.0";\n }\n }\n}\n')),(0,r.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,r.kt)("img",{src:(0,l.Z)("img/dgwc.png")}),(0,r.kt)("div",{className:"admonition admonition-caution alert alert--warning"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 16 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"}))),"\u7279\u522b\u6ce8\u610f")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u5982\u679c\u52a8\u4f5c\u65b9\u6cd5\u4e2d\u542b\u6709 ",(0,r.kt)("inlineCode",{parentName:"p"},"\u7c7b\u7c7b\u578b\u53c2\u6570"),"\uff0c\u4e14\u542b\u6709 ",(0,r.kt)("inlineCode",{parentName:"p"},"POST/PUT/DELETE")," \u4efb\u610f\u8bf7\u6c42\u8c13\u8bcd\uff0c\u90a3\u4e48\u8be5\u53c2\u6570\u4f1a\u81ea\u52a8\u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"p"},"[FromBody]")," \u53c2\u6570\uff0c\u5373\u4f7f\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"GET/HEAD")," \u8bf7\u6c42\u4e2d\u4e0d\u652f\u6301\u3002"))),(0,r.kt)("h3",{id:"588-\u652f\u6301\u81ea\u5b9a\u4e49\u8def\u7531"},"5.8.8 \u652f\u6301\u81ea\u5b9a\u4e49\u8def\u7531"),(0,r.kt)("p",null,"\u652f\u6301\u63a7\u5236\u5668\u548c\u52a8\u4f5c\u65b9\u6cd5\u81ea\u5b9a\u4e49\u8def\u7531\uff1a"),(0,r.kt)(p.Z,{defaultValue:"kzqrl",values:[{label:"\u81ea\u5b9a\u4e49\u63a7\u5236\u5668\u8def\u7531",value:"kzqrl"},{label:"\u81ea\u5b9a\u4e49\u52a8\u4f5c\u65b9\u6cd5\u8def\u7531",value:"dzffrl"},{label:"\u540c\u65f6\u81ea\u5b9a\u4e49\u8def\u7531",value:"allrl"},{label:"\u8c13\u8bcd\u81ea\u5b9a\u4e49\u8def\u7531",value:"vcrl"}],mdxType:"Tabs"},(0,r.kt)(o.Z,{value:"kzqrl",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{2,6}","{2,6}":!0},'using Furion.DynamicApiController;\nusing Microsoft.AspNetCore.Mvc;\n\nnamespace Furion.Application\n{\n [Route("customapi/mobile/[controller]")]\n public class FurionAppService : IDynamicApiController\n {\n public string GetVersion()\n {\n return "1.0.0";\n }\n }\n}\n')),(0,r.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,r.kt)("img",{src:(0,l.Z)("img/kzqrl.png")})),(0,r.kt)(o.Z,{value:"dzffrl",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{2,8}","{2,8}":!0},'using Furion.DynamicApiController;\nusing Microsoft.AspNetCore.Mvc;\n\nnamespace Furion.Application\n{\n public class FurionAppService : IDynamicApiController\n {\n [Route("customapi/[action]")]\n public string GetVersion()\n {\n return "1.0.0";\n }\n }\n}\n')),(0,r.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,r.kt)("img",{src:(0,l.Z)("img/dzffrl.png")})),(0,r.kt)(o.Z,{value:"allrl",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{2,6,9}","{2,6,9}":!0},'using Furion.DynamicApiController;\nusing Microsoft.AspNetCore.Mvc;\n\nnamespace Furion.Application\n{\n [Route("customapi/mobile/[controller]")]\n public class FurionAppService : IDynamicApiController\n {\n [Route("get/[action]")]\n public string GetVersion()\n {\n return "1.0.0";\n }\n }\n}\n')),(0,r.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,r.kt)("img",{src:(0,l.Z)("img/allrl.png")})),(0,r.kt)(o.Z,{value:"vcrl",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{9}","{9}":!0},'using Furion.DynamicApiController;\nusing Microsoft.AspNetCore.Mvc;\n\nnamespace Furion.Application\n{\n [Route("api/[controller]")]\n public class FurionAppService : IDynamicApiController\n {\n [HttpGet("get/[action]")]\n public string GetVersion()\n {\n return "1.0.0";\n }\n }\n}\n')),(0,r.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,r.kt)("img",{src:(0,l.Z)("img/wcrl.png")}))),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u5c0f\u63d0\u793a")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u52a8\u4f5c\u65b9\u6cd5\u81ea\u5b9a\u4e49\u8def\u7531\u5982\u679c\u4ee5 ",(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("inlineCode",{parentName:"strong"},"/"))," \u5f00\u5934\uff0c\u5219\u4e0d\u4f1a\u5408\u5e76\u63a7\u5236\u5668\u8def\u7531\u3002"))),(0,r.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u63a8\u8350\u914d\u7f6e")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u81ea\u5b9a\u4e49\u8def\u7531\u5982\u679c\u9700\u8981\u7528\u5230 ",(0,r.kt)("strong",{parentName:"p"},"\u63a7\u5236\u5668/\u52a8\u4f5c\u65b9\u6cd5\u540d\u79f0"),"\uff0c\u63a8\u8350\u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"[controller]")," \u6216 ",(0,r.kt)("inlineCode",{parentName:"p"},"[action]")," \u5360\u4f4d\u7b26\uff0c\u56e0\u4e3a\u8be5\u5360\u4f4d\u7b26\u5df2\u7ecf\u81ea\u52a8\u5904\u7406\u4e86 ",(0,r.kt)("strong",{parentName:"p"},"\u524d\u540e\u7f00\u3001\u7248\u672c\u53f7\u3001\u6a21\u5757\u540d\u79f0"),"\u7b49\u3002"))),(0,r.kt)("h3",{id:"589-\u591a\u8def\u7531\u968f\u610f\u7ec4\u5408"},"5.8.9 \u591a\u8def\u7531\u968f\u610f\u7ec4\u5408"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u4e86\u975e\u5e38\u7075\u6d3b\u7684\u5404\u79cd\u8def\u7531\u7ec4\u5408\u65b9\u5f0f\uff0c\u652f\u6301\u4e00\u5bf9\u591a\uff0c\u591a\u5bf9\u591a\u8def\u7531\u7ec4\u5408\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{6-8,11-14}","{6-8,11-14}":!0},'using Furion.DynamicApiController;\nusing Microsoft.AspNetCore.Mvc;\n\nnamespace Furion.Application\n{\n [Route("api/[controller]")]\n [Route("api/[controller]/second")]\n [Route("api/[controller]/three")]\n public class FurionAppService : IDynamicApiController\n {\n [HttpGet]\n [HttpGet("get/[action]")]\n [HttpPost]\n [HttpPost("post/cus-version")]\n public string GetVersion()\n {\n return "1.0.0";\n }\n }\n}\n')),(0,r.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,r.kt)("img",{src:(0,l.Z)("img/dlrzh.gif")}),(0,r.kt)("div",{className:"admonition admonition-caution alert alert--warning"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 16 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"}))),"\u7279\u522b\u6ce8\u610f")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u52a8\u4f5c\u65b9\u6cd5\u4e0d\u80fd\u540c\u65f6\u8d34 ",(0,r.kt)("inlineCode",{parentName:"p"},"[Route]")," \u548c ",(0,r.kt)("inlineCode",{parentName:"p"},"[HttpMethod]")," \u7279\u6027\uff0c\u53ea\u80fd\u4e8c\u53d6\u4e00\u3002"))),(0,r.kt)("h3",{id:"5810-\u652f\u6301\u7248\u672c\u63a7\u5236"},"5.8.10 \u652f\u6301\u7248\u672c\u63a7\u5236"),(0,r.kt)(p.Z,{defaultValue:"kzqbb",values:[{label:"\u63a7\u5236\u5668\u7248\u672c",value:"kzqbb"},{label:"\u52a8\u4f5c\u65b9\u6cd5\u7248\u672c",value:"dzffbb"}],mdxType:"Tabs"},(0,r.kt)(o.Z,{value:"kzqbb",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{5,13,21}","{5,13,21}":!0},"using Furion.DynamicApiController;\n\nnamespace Furion.Application\n{\n public class FurionAppServiceV1 : IDynamicApiController\n {\n public string Get()\n {\n return nameof(Furion);\n }\n }\n\n public class FurionAppServiceV1_2 : IDynamicApiController\n {\n public string Get()\n {\n return nameof(Furion);\n }\n }\n\n public class FurionAppServiceV1_2_1 : IDynamicApiController\n {\n public string Get()\n {\n return nameof(Furion);\n }\n }\n}\n")),(0,r.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,r.kt)("img",{src:(0,l.Z)("img/kzqbb.png")})),(0,r.kt)(o.Z,{value:"dzffbb",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{7,12,16}","{7,12,16}":!0},"using Furion.DynamicApiController;\n\nnamespace Furion.Application\n{\n public class FurionAppService : IDynamicApiController\n {\n public string Get()\n {\n return nameof(Furion);\n }\n\n public string GetV1()\n {\n return nameof(Furion);\n }\n public string GetV2_1()\n {\n return nameof(Furion);\n }\n }\n}\n")),(0,r.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,r.kt)("img",{src:(0,l.Z)("img/dzffbb.png")}))),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u7248\u672c\u751f\u6210\u539f\u7406")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("inlineCode",{parentName:"strong"},"V[0-9_]"))," \u7ed3\u5c3e\u7684\u547d\u540d\u81ea\u52a8\u89e3\u6790\u6210\u7248\u672c\u53f7\uff0c\u5982 ",(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("inlineCode",{parentName:"strong"},"FurionAppServiceV2 -> Furion@2")),"\u3002"))),(0,r.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u7248\u672c\u590d\u5199")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u9664\u4e86\u901a\u8fc7\u7279\u5b9a\u540e\u7f00\u65b9\u5f0f\u4ee5\u5916\uff0c\u7248\u672c\u8fd8\u76f4\u63a5\u901a\u8fc7 ",(0,r.kt)("inlineCode",{parentName:"p"},"[ApiDescriptionSettings]")," \u8fdb\u884c\u590d\u5199\u3002\u5982\uff1a"),(0,r.kt)("pre",{parentName:"div"},(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,2}","{1,2}":!0},'[ApiDescriptionSettings(Version = "4.0")]\npublic string GetV1()\n{\n return nameof(Furion);\n}\n')),(0,r.kt)("p",{parentName:"div"},"\u8fd9\u65f6\uff0c\u751f\u6210\u7248\u672c\u5c06\u91c7\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"4.0")," \u66ff\u4ee3 ",(0,r.kt)("inlineCode",{parentName:"p"},"1")))),(0,r.kt)("h3",{id:"5811-\u4e0d\u516c\u5f00\u63a7\u5236\u5668\u6216\u52a8\u4f5c\u65b9\u6cd5"},"5.8.11 \u4e0d\u516c\u5f00\u63a7\u5236\u5668\u6216\u52a8\u4f5c\u65b9\u6cd5"),(0,r.kt)("p",null,"\u6709\u4e9b\u65f6\u5019\uff0c\u6211\u4eec\u65e0\u9700\u5bfc\u51fa\u67d0\u4e2a\u52a8\u4f5c\u65b9\u6cd5\u6216\u63a7\u5236\u5668\uff08",(0,r.kt)("strong",{parentName:"p"},"\u4e0d\u663e\u793a\u5230 Swagger"),"\uff09\uff0c\u53ea\u9700\u8981\u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"p"},"[ApiDescriptionSettings(false)]")," \u6216 ",(0,r.kt)("inlineCode",{parentName:"p"},"[ApiExplorerSettings(IgnoreApi = true)]"),"\u5373\u53ef\u3002"),(0,r.kt)("p",null,"\u53e6\u5916\u52a8\u4f5c\u65b9\u6cd5\u8fd8\u652f\u6301 ",(0,r.kt)("inlineCode",{parentName:"p"},"[NonAction]")," \u6807\u8bb0\u4e0d\u662f\u4e00\u4e2a\u6709\u6548\u7684\u63a7\u5236\u5668\u6216 Action\u3002"),(0,r.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u63a8\u8350\u4f7f\u7528")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u63a8\u8350\u63a7\u5236\u5668\u6216\u52a8\u4f5c\u65b9\u6cd5\u8bbe\u7f6e\u4e0d\u5bfc\u51fa\u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"[ApiDescriptionSettings(false)]")," \u7279\u6027\u3002\u8be5\u7279\u6027\u9ed8\u8ba4\u7ee7\u627f\u81ea ",(0,r.kt)("inlineCode",{parentName:"p"},"ApiExplorerSettingsAttribute")," \u7c7b\u3002"))),(0,r.kt)("h3",{id:"5812-\u4fdd\u6301\u63a7\u5236\u5668\u548c\u65b9\u6cd5\u547d\u540d"},"5.8.12 \u4fdd\u6301\u63a7\u5236\u5668\u548c\u65b9\u6cd5\u547d\u540d"),(0,r.kt)("p",null,"\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c\u52a8\u6001 API \u4f1a\u5c06\u63a7\u5236\u5668\u548c\u65b9\u6cd5\u540d\u8f93\u51fa\u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"RESTFul")," \u98ce\u683c\u7684\u8def\u7531\uff0c\u5982\u9700\u4fdd\u7559\u539f\u6709\u8bbe\u8ba1\uff0c\u53ea\u9700\u914d\u7f6e\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json"},'{\n "DynamicApiControllerSettings": {\n "KeepName": true,\n "KeepVerb": true,\n "LowercaseRoute": false\n }\n}\n')),(0,r.kt)("h3",{id:"5813-\u65b9\u6cd5\u53c2\u6570-fromquery-\u5316\u53c2\u6570\u975e\u5fc5\u586b\u53c2\u6570\u53ef\u9009"},"5.8.13 \u65b9\u6cd5\u53c2\u6570 ",(0,r.kt)("inlineCode",{parentName:"h3"},"[FromQuery]")," \u5316/\u53c2\u6570\u975e\u5fc5\u586b/\u53c2\u6570\u53ef\u9009"),(0,r.kt)("p",null,"\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c\u6240\u6709\u7684\u57fa\u5143\u7c7b\u578b\u53c2\u6570\u90fd\u4f1a\u8d34\u4e0a ",(0,r.kt)("inlineCode",{parentName:"p"},"[FromRoute]")," \u7279\u6027\uff0c\u5982\u679c\u9700\u8981\u5c06\u53c2\u6570\u8c03\u6574\u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"[FromQuery]")," \u4fee\u9970\uff0c\u53ea\u9700\u8981\u5728\u65b9\u6cd5\u4e0a\u9762\u8d34 ",(0,r.kt)("inlineCode",{parentName:"p"},"[QueryParameters]")," \u7279\u6027\u5373\u53ef\uff0c\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'[QueryParameters]\npublic string Get(int id, string name)\n{\n return nameof($"{id} {name}");\n}\n')),(0,r.kt)("p",null,"\u751f\u6210\u7684\u8def\u7531\u4e3a\uff1a",(0,r.kt)("inlineCode",{parentName:"p"},"https://xxx.com?id=1&name=Furion")),(0,r.kt)("p",null,"\u5982\u679c\u4e0d\u559c\u6b22\u6bcf\u4e2a\u90fd\u914d\u7f6e\uff0c\u4e5f\u53ef\u4ee5\u5168\u5c40\u914d\u7f6e\uff08",(0,r.kt)("strong",{parentName:"p"},"\u53ea\u4f1a\u5f71\u54cd\u57fa\u5143\u7c7b\u578b\u7684\u53c2\u6570"),"\uff09\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json"},'{\n "DynamicApiControllerSettings": {\n "UrlParameterization": true\n }\n}\n')),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u6ce8\u610f")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u8d34\u4e86 ",(0,r.kt)("inlineCode",{parentName:"p"},"[QueryParameters]")," \u4e4b\u540e\uff0c\u4f1a\u5bf9\u6240\u6709\u53c2\u6570\u5f71\u54cd\uff0c\u5305\u62ec\u7c7b\u7c7b\u578b\u53c2\u6570\uff0c\u5982\u679c\u4e0d\u9700\u8981\u5904\u7406\u67d0\u4e2a\u53c2\u6570\uff0c\u53ea\u9700\u8981\u8d34 ",(0,r.kt)("inlineCode",{parentName:"p"},"[FromXXX]")," \u7279\u6027\u5373\u53ef\u3002"))),(0,r.kt)("h3",{id:"5814-\u53c2\u6570\u7ed1\u5b9a\u914d\u7f6e"},"5.8.14 \u53c2\u6570\u7ed1\u5b9a\u914d\u7f6e"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u4e86\u591a\u79cd\u53c2\u6570\u7279\u6027\u914d\u7f6e\u53c2\u6570\u7ed1\u5b9a\u89c4\u5219\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"[FromRoute]"),"\uff1a\u901a\u8fc7\u8def\u7531\u53c2\u6570\u7ed1\u5b9a\u503c"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"[FromQuery]"),"\uff1a\u901a\u8fc7 ",(0,r.kt)("inlineCode",{parentName:"li"},"Url")," \u5730\u5740\u53c2\u6570\u7ed1\u5b9a\u503c"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"[FromBody]"),"\uff1a\u901a\u8fc7 ",(0,r.kt)("inlineCode",{parentName:"li"},"Request Body")," \u53c2\u6570\u7ed1\u5b9a\u503c"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"[FromForm]"),"\uff1a\u901a\u8fc7\u8868\u5355\u63d0\u4ea4\u7ed1\u5b9a\u503c"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"[FromHeader]"),"\uff1a\u901a\u8fc7 ",(0,r.kt)("inlineCode",{parentName:"li"},"Request Header")," \u53c2\u6570\u7ed1\u5b9a\u503c")),(0,r.kt)("h3",{id:"5815-\u81ea\u5b9a\u4e49\u6839\u636e\u65b9\u6cd5\u540d\u751f\u6210-httpmethod-\u89c4\u5219"},"5.8.15 \u81ea\u5b9a\u4e49\u6839\u636e\u65b9\u6cd5\u540d\u751f\u6210 ",(0,r.kt)("inlineCode",{parentName:"h3"},"[HttpMethod]")," \u89c4\u5219"),(0,r.kt)("p",null,"\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\uff0c\u5728\u6ca1\u6709\u914d\u7f6e ",(0,r.kt)("inlineCode",{parentName:"p"},"[HttpMethod]")," \u7279\u6027\u7684\u60c5\u51b5\u4e0b\uff0c\u4f1a\u81ea\u52a8\u6839\u636e\u65b9\u6cd5\u540d\u7b2c\u4e00\u4e2a\u53c2\u6570\u8fdb\u884c\u5206\u6790\uff0c\u5e76\u751f\u6210\u5bf9\u5e94\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"[HttpMethod]")," \u7279\u6027\uff0c\u89c4\u5219\u5982\u4e0b\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u52a8\u4f5c\u65b9\u6cd5\u540d",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"\u4ee5 ",(0,r.kt)("inlineCode",{parentName:"li"},"Post/Add/Create/Insert/Submit")," \u5f00\u5934\uff0c\u5219\u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"li"},"[HttpPost]")," \u7279\u6027\u3002"),(0,r.kt)("li",{parentName:"ul"},"\u4ee5 ",(0,r.kt)("inlineCode",{parentName:"li"},"GetAll/GetList/Get/Find/Fetch/Query")," \u5f00\u5934\uff0c\u5219\u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"li"},"[HttpGet]")," \u7279\u6027\u3002"),(0,r.kt)("li",{parentName:"ul"},"\u4ee5 ",(0,r.kt)("inlineCode",{parentName:"li"},"Put/Update")," \u5f00\u5934\uff0c\u5219\u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"li"},"[HttpPut]")," \u7279\u6027\u3002"),(0,r.kt)("li",{parentName:"ul"},"\u4ee5 ",(0,r.kt)("inlineCode",{parentName:"li"},"Delete/Remove/Clear")," \u5f00\u5934\uff0c\u5219\u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"li"},"[HttpDelete]")," \u7279\u6027\u3002"),(0,r.kt)("li",{parentName:"ul"},"\u4ee5 ",(0,r.kt)("inlineCode",{parentName:"li"},"Patch")," \u5f00\u5934\uff0c\u5219\u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"li"},"[HttpPatch]")," \u7279\u6027"),(0,r.kt)("li",{parentName:"ul"},"\u4ee5 ",(0,r.kt)("inlineCode",{parentName:"li"},"Head")," \u5f00\u5934\uff0c\u5219\u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"li"},"[HttpHead]")," \u7279\u6027"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"\u652f\u6301\u81ea\u5b9a\u4e49\u914d\u7f6e")))),(0,r.kt)("li",{parentName:"ul"},"\u5982\u679c\u4e0d\u5728\u4e0a\u9762\u7ea6\u5b9a\u4e2d\uff0c\u5219\u9ed8\u8ba4\u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"li"},"[HttpPost]")," \u7279\u6027\u3002",(0,r.kt)("strong",{parentName:"li"},"\u652f\u6301\u81ea\u5b9a\u4e49\u914d\u7f6e"))),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"\u4f46\u662f\uff0c\u6709\u4e9b\u65f6\u5019\u8fd9\u4e0d\u662f\u6211\u4eec\u60f3\u8981\u7684\u89c4\u5219"),"\uff0c\u8fd9\u65f6\u6211\u4eec\u53ea\u9700\u8981\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"appsettings.json")," \u4e2d\u914d\u7f6e\u5373\u53ef\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json",metastring:"{2,3}","{2,3}":!0},'{\n "DynamicApiControllerSettings": {\n "VerbToHttpMethods": [\n ["getall", "HEAD"], // => getall \u4f1a\u88ab\u590d\u5199\u4e3a `[HttpHead]`\n ["other", "PUT"] // => \u65b0\u589e\u4e00\u6761\u65b0\u89c4\u5219\uff0c\u6bd4\u5982\uff0c\u4e00 `[other]` \u5f00\u5934\u4f1a\u8f6c\u6362\u4e3a `[HttpPut]` \u8bf7\u6c42\n ]\n }\n}\n')),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u6ce8\u610f")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u4e8c\u7ef4\u6570\u7ec4\u4e2d\u7684\u6bcf\u4e00\u4e2a\u5143\u7d20\u7684\u7b2c\u4e00\u4e2a\u5143\u7d20",(0,r.kt)("strong",{parentName:"p"},"\u5fc5\u987b\u662f\u5168\u5c0f\u5199"),"\uff0c\u7b2c\u4e8c\u4e2a\u5143\u7d20",(0,r.kt)("strong",{parentName:"p"},"\u5fc5\u987b\u662f\u5168\u5927\u5199\u5927\u5199"),"\uff0c\u7b2c\u4e8c\u4e2a\u5143\u7d20\u53d6\u503c\u6709\uff1a",(0,r.kt)("inlineCode",{parentName:"p"},"HEAD, GET, PUT, POST, PATCH, DELETE")))),(0,r.kt)("h3",{id:"5816-\u8def\u7531\u53c2\u6570\u975e\u5fc5\u586b\u9009\u586b"},"5.8.16 \u8def\u7531\u53c2\u6570\u975e\u5fc5\u586b/\u9009\u586b"),(0,r.kt)("p",null,"\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion v2.8.6")," \u7248\u672c\u4e2d\u5b9e\u73b0\u4e86 ",(0,r.kt)("inlineCode",{parentName:"p"},"[FromRoute]")," \u53c2\u6570\u975e\u5fc5\u586b\u529f\u80fd\uff0c\u652f\u6301\u4ee5\u4e0b\u51e0\u79cd\u65b9\u5f0f\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{2,6,11,16}","{2,6,11,16}":!0},"// \u65b9\u5f0f\u4e00\uff0c\u901a\u8fc7\u53ef\u7a7a ?\npublic object Method1(int id, Datetime? dateTime)\n{\n}\n\n// \u65b9\u5f0f\u4e8c\uff0c\u901a\u8fc7\u9ed8\u8ba4\u503c\npublic object Method1(int id, int age = 10)\n{\n}\n\n// \u65b9\u5f0f\u4e09\uff0c\u9ed8\u8ba4\u503c + \u53ef\u7a7a ?\npublic object Method1(int id, int? age = 10)\n{\n}\n\n// \u65b9\u5f0f\u56db\uff0c[FromQuery] \u4fee\u9970\npublic object Method1(int id, [FromQuery]string keyword)\n{\n}\n")),(0,r.kt)("h3",{id:"5817-formroute-\u8def\u7531\u7ea6\u675f"},"5.8.17 ",(0,r.kt)("inlineCode",{parentName:"h3"},"[FormRoute]")," \u8def\u7531\u7ea6\u675f"),(0,r.kt)("p",null,"\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion v2.8.6")," \u7248\u672c\u4e2d\uff0c\u6dfb\u52a0\u4e86 ",(0,r.kt)("inlineCode",{parentName:"p"},"[RouteConstraint]")," \u7279\u6027\uff0c\u53ef\u914d\u7f6e\u8def\u7531\u7ea6\u675f\uff0c\u5982\uff1a",(0,r.kt)("inlineCode",{parentName:"p"},'[RouteConstraint(":min(10)")]')),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{2}","{2}":!0},'// \u6700\u5c0f\u503c 10\npublic object Method1([RouteConstraint(":min(10)")] int id)\n{\n}\n')),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"[RouteConstraint]")," \u652f\u6301\u8def\u7531\u7ea6\u675f\u7b26\u53f7\u5982\u4e0b\uff1a"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"\u7b26\u53f7"),(0,r.kt)("th",{parentName:"tr",align:null},"\u63cf\u8ff0"),(0,r.kt)("th",{parentName:"tr",align:null},"\u4f8b\u5b50"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"alpha")),(0,r.kt)("td",{parentName:"tr",align:null},"\u5339\u914d\u5927\u5199\u6216\u5c0f\u5199\u62c9\u4e01\u5b57\u6bcd\u5b57\u7b26\uff08a-z\u3001A-Z\uff09"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},":alpha"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"bool")),(0,r.kt)("td",{parentName:"tr",align:null},"bool \u7c7b\u578b"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},":bool"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"datetime")),(0,r.kt)("td",{parentName:"tr",align:null},"DateTime \u7c7b\u578b"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},":datetime"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"decimal")),(0,r.kt)("td",{parentName:"tr",align:null},"decimal \u7c7b\u578b"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},":decimal"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"double")),(0,r.kt)("td",{parentName:"tr",align:null},"double \u7c7b\u578b"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},":double"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"float")),(0,r.kt)("td",{parentName:"tr",align:null},"float \u7c7b\u578b"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},":float"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"guid")),(0,r.kt)("td",{parentName:"tr",align:null},"guid \u7c7b\u578b"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},":guid"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"int")),(0,r.kt)("td",{parentName:"tr",align:null},"int \u7c7b\u578b"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},":int"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"long")),(0,r.kt)("td",{parentName:"tr",align:null},"long \u7c7b\u578b"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},":long"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"length")),(0,r.kt)("td",{parentName:"tr",align:null},"\u5339\u914d\u957f\u5ea6\uff08\u5b57\u7b26\u4e32\uff09"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},":length(6)")," \u6216 ",(0,r.kt)("inlineCode",{parentName:"td"},":length(1,20)"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"max")),(0,r.kt)("td",{parentName:"tr",align:null},"\u6700\u5927\u503c"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},":max(10)"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"maxlength")),(0,r.kt)("td",{parentName:"tr",align:null},"\u6700\u5927\u957f\u5ea6\uff08\u5b57\u7b26\u4e32\uff09"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},":maxlength(10)"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"min")),(0,r.kt)("td",{parentName:"tr",align:null},"\u6700\u5c0f\u503c"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},":min(10)"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"minlength")),(0,r.kt)("td",{parentName:"tr",align:null},"\u6700\u5c0f\u957f\u5ea6\uff08\u5b57\u7b26\u4e32\uff09"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},":minlength(10)"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"range")),(0,r.kt)("td",{parentName:"tr",align:null},"\u53d6\u503c\u8303\u56f4"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},":range(10,50)"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},"regex")),(0,r.kt)("td",{parentName:"tr",align:null},"\u6b63\u5219\u8868\u8fbe\u5f0f"),(0,r.kt)("td",{parentName:"tr",align:null},(0,r.kt)("inlineCode",{parentName:"td"},":regex(^\\d{3}-\\d{3}-\\d{4}$)"))))),(0,r.kt)("h2",{id:"59-apidescriptionsettings"},"5.9 ",(0,r.kt)("inlineCode",{parentName:"h2"},"[ApiDescriptionSettings]")),(0,r.kt)("p",null,"\u9664\u4e86\u4e0a\u8ff0 ",(0,r.kt)("inlineCode",{parentName:"p"},"ASP.NET Core")," \u63d0\u4f9b\u7684\u914d\u7f6e\u5916\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u8fd8\u63d0\u4f9b\u4e86\u975e\u5e38\u5f3a\u5927\u4e14\u7075\u6d3b\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"[ApiDescriptionSettings]")," \u7279\u6027\u3002"),(0,r.kt)("h3",{id:"591-\u5185\u7f6e\u914d\u7f6e"},"5.9.1 \u5185\u7f6e\u914d\u7f6e"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Name"),"\uff1a\u81ea\u5b9a\u4e49\u63a7\u5236\u5668/\u52a8\u4f5c\u65b9\u6cd5\u540d\u79f0\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"string"),"\uff0c\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"null")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"KeepName"),"\uff1a\u662f\u5426\u4fdd\u6301\u539f\u6709\u540d\u79f0\u4e0d\u5904\u7406\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"bool"),"\uff0c\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"false")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"SplitCamelCase"),"\uff1a\u5207\u5272\u9a86\u9a7c(\u9a7c\u5cf0)/\u5e15\u65af\u5361\u547d\u540d\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"bool"),"\uff0c\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"true")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"KeepVerb"),"\uff1a\u662f\u5426\u4fdd\u7559\u52a8\u4f5c\u65b9\u6cd5\u8bf7\u6c42\u8c13\u8bcd\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"bool"),"\uff0c\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"false")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Enabled"),"\uff1a\u662f\u5426\u5bfc\u51fa\u63a5\u53e3\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"bool"),"\uff0c\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"true")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Module"),"\uff1a\u6a21\u5757\u540d\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"string"),"\uff0c\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"null")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Version"),"\uff1a\u7248\u672c\u53f7\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"string"),"\uff0c\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"null")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Groups"),"\uff1a\u63a5\u53e3\u5206\u7ec4\uff0c\u53ef\u7ed3\u5408 ",(0,r.kt)("inlineCode",{parentName:"li"},"Swagger")," \u4e00\u8d77\u4f7f\u7528\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"string[]"),"\uff0c\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"null")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Tags"),"\uff1a\u63a5\u53e3\u6807\u7b7e\uff0c\u53ef\u7ed3\u5408 ",(0,r.kt)("inlineCode",{parentName:"li"},"Swagger")," \u4e00\u8d77\u4f7f\u7528\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"string[]"),"\uff0c\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"null")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Order"),"\uff1a\u914d\u7f6e\u63a7\u5236\u5668/\u52a8\u4f5c\u65b9\u6cd5\u6392\u5e8f"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"LowercaseRoute"),"\uff1a\u662f\u5426\u91c7\u7528\u5c0f\u5199\u8def\u7531\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"bool")," \u7c7b\u578b\uff0c\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"true")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Area"),"\uff1a\u914d\u7f6e\u533a\u57df\u540d\u79f0\uff0c\u9ed8\u8ba4\u7a7a\uff0c",(0,r.kt)("strong",{parentName:"li"},"\u53ea\u4f5c\u7528\u4e8e\u7c7b\u4e2d\u8d34"))),(0,r.kt)("h3",{id:"592-name-\u914d\u7f6e"},"5.9.2 ",(0,r.kt)("inlineCode",{parentName:"h3"},"Name")," \u914d\u7f6e"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Name")," \u53c2\u6570\u53ef\u4ee5\u8986\u76d6\u52a8\u6001 ",(0,r.kt)("inlineCode",{parentName:"p"},"WebAPI")," \u81ea\u52a8\u751f\u6210\u7684\u63a7\u5236\u5668\u6216\u52a8\u4f5c\u65b9\u6cd5\u540d\u79f0\u3002\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{5,8}","{5,8}":!0},'using Furion.DynamicApiController;\n\nnamespace Furion.Application\n{\n [ApiDescriptionSettings(Name = "MyFur")]\n public class FurionAppService : IDynamicApiController\n {\n [ApiDescriptionSettings(Name = "MyGet")]\n public string Get()\n {\n return nameof(Furion);\n }\n }\n}\n')),(0,r.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,r.kt)("img",{src:(0,l.Z)("img/namepz.png")}),(0,r.kt)("h3",{id:"593-keepname-\u914d\u7f6e"},"5.9.3 ",(0,r.kt)("inlineCode",{parentName:"h3"},"KeepName")," \u914d\u7f6e"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"KeepName")," \u53c2\u6570\u53ef\u4ee5\u4fdd\u7559\u539f\u6709\u7684\u63a7\u5236\u5668\u6216\u52a8\u4f5c\u65b9\u6cd5\u540d\u79f0\u3002\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{5,8}","{5,8}":!0},"using Furion.DynamicApiController;\n\nnamespace Furion.Application\n{\n [ApiDescriptionSettings(KeepName = true)]\n public class FurionAppService : IDynamicApiController\n {\n [ApiDescriptionSettings(KeepName = true)]\n public string Get()\n {\n return nameof(Furion);\n }\n }\n}\n")),(0,r.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,r.kt)("img",{src:(0,l.Z)("img/keepnamepz.png")}),(0,r.kt)("h3",{id:"594-splitcamelcase-\u914d\u7f6e"},"5.9.4 ",(0,r.kt)("inlineCode",{parentName:"h3"},"SplitCamelCase")," \u914d\u7f6e"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"SplitCamelCase")," \u53c2\u6570\u9ed8\u8ba4\u5c06\u9a86\u9a7c(\u9a7c\u5cf0)\u547d\u540d\u5207\u5272\u6210\u591a\u4e2a\u5355\u8bcd\u5e76\u901a\u8fc7\u6307\u5b9a ",(0,r.kt)("inlineCode",{parentName:"p"},"\u5360\u4f4d\u7b26")," \u8fde\u63a5\u8d77\u6765\u3002\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"p"},"\u5360\u4f4d\u7b26")," \u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"-"),"\u3002\u9ed8\u8ba4\u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"true"),"\u3002\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{5,8}","{5,8}":!0},"using Furion.DynamicApiController;\n\nnamespace Furion.Application\n{\n [ApiDescriptionSettings(SplitCamelCase = false)]\n public class MyFurionAppService : IDynamicApiController\n {\n [ApiDescriptionSettings(SplitCamelCase = true)]\n public string ChangeUserName()\n {\n return nameof(Furion);\n }\n }\n}\n")),(0,r.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,r.kt)("img",{src:(0,l.Z)("img/splitnamepz.png")}),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u6ce8\u610f")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},(0,r.kt)("inlineCode",{parentName:"p"},"KeepName")," \u4f18\u5148\u7ea7\u9ad8\u4e8e ",(0,r.kt)("inlineCode",{parentName:"p"},"SplitCamelCase"),"\uff0c\u4e5f\u5c31\u662f ",(0,r.kt)("inlineCode",{parentName:"p"},"KeepName")," \u8bbe\u7f6e\u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"true"),"\uff0c\u5219\u4e0d\u4f1a\u5904\u7406 ",(0,r.kt)("inlineCode",{parentName:"p"},"SplitCamelCase")," \u53c2\u6570\u3002"))),(0,r.kt)("h3",{id:"595-keepverb-\u914d\u7f6e"},"5.9.5 ",(0,r.kt)("inlineCode",{parentName:"h3"},"KeepVerb")," \u914d\u7f6e"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"KeepVerb")," \u53c2\u6570\u4f5c\u7528\u4e8e\u52a8\u4f5c\u65b9\u6cd5\uff0c\u6807\u8bc6\u662f\u5426\u4fdd\u7559\u52a8\u4f5c\u8c13\u8bcd\u3002\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{7}","{7}":!0},"using Furion.DynamicApiController;\n\nnamespace Furion.Application\n{\n public class FurionAppService : IDynamicApiController\n {\n [ApiDescriptionSettings(KeepVerb = true)]\n public string GetVersion()\n {\n return nameof(Furion);\n }\n }\n}\n")),(0,r.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,r.kt)("img",{src:(0,l.Z)("img/keepverbpz.png")}),(0,r.kt)("h3",{id:"596-enabled-\u914d\u7f6e"},"5.9.6 ",(0,r.kt)("inlineCode",{parentName:"h3"},"Enabled")," \u914d\u7f6e"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Enabled")," \u53c2\u6570\u914d\u7f6e\u63a5\u53e3\u662f\u5426\u5bfc\u51fa\u3002\u901a\u5e38\u7528\u4e8e\u52a8\u4f5c\u65b9\u6cd5\uff0c\u5982\u679c\u7528\u4e8e\u63a7\u5236\u5668\u5b9e\u9645\u4f5c\u7528\u4e0d\u5927\u3002"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{12}","{12}":!0},"using Furion.DynamicApiController;\n\nnamespace Furion.Application\n{\n public class FurionAppService : IDynamicApiController\n {\n public string GetVersion()\n {\n return nameof(Furion);\n }\n\n [ApiDescriptionSettings(false)]\n public string NoExport()\n {\n return nameof(Furion);\n }\n }\n}\n")),(0,r.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,r.kt)("img",{src:(0,l.Z)("img/enablepz.png")}),(0,r.kt)("h3",{id:"597-module-\u914d\u7f6e"},"5.9.7 ",(0,r.kt)("inlineCode",{parentName:"h3"},"Module")," \u914d\u7f6e"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Module")," \u53c2\u6570\u53ef\u4ee5\u914d\u7f6e\u8def\u7531\u5206\u79bb\uff0c\u7c7b\u4f3c\u4e8e ",(0,r.kt)("inlineCode",{parentName:"p"},"Mvc \u533a\u57df")," \u7684\u4f5c\u7528\u3002"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{5,8}","{5,8}":!0},'using Furion.DynamicApiController;\n\nnamespace Furion.Application\n{\n [ApiDescriptionSettings(Module = "mobile")]\n public class FurionAppService : IDynamicApiController\n {\n [ApiDescriptionSettings(Module = "user")]\n public string GetVersion()\n {\n return nameof(Furion);\n }\n }\n}\n')),(0,r.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,r.kt)("img",{src:(0,l.Z)("img/modulepz.png")}),(0,r.kt)("h3",{id:"598-version-\u914d\u7f6e"},"5.9.8 ",(0,r.kt)("inlineCode",{parentName:"h3"},"Version")," \u914d\u7f6e"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Version")," \u53c2\u6570\u53ef\u4ee5\u914d\u7f6e\u63a5\u53e3\u7248\u672c\uff0c\u540c\u65f6\u53c8\u53ef\u4ee5\u590d\u5199\u7279\u6b8a\u7248\u672c\u547d\u540d\u914d\u7f6e\u3002\u9ed8\u8ba4\u7248\u672c\u5206\u9694\u7b26\u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"@"),"\u3002\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{5,9-10}","{5,9-10}":!0},'using Furion.DynamicApiController;\n\nnamespace Furion.Application\n{\n [ApiDescriptionSettings(Version = "1.0")]\n public class FurionAppService : IDynamicApiController\n {\n // V2.0.0 \u88ab\u590d\u5199\u6210 V2.1.1\n [ApiDescriptionSettings(Version = "2.1.1")]\n public string GetVersionV2_0_0()\n {\n return nameof(Furion);\n }\n }\n}\n')),(0,r.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,r.kt)("img",{src:(0,l.Z)("img/versionpz.png")}),(0,r.kt)("h3",{id:"599-groups-\u914d\u7f6e"},"5.9.9 ",(0,r.kt)("inlineCode",{parentName:"h3"},"Groups")," \u914d\u7f6e"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Groups")," \u914d\u7f6e\u4e3b\u8981\u7528\u4e8e\u914d\u7f6e ",(0,r.kt)("inlineCode",{parentName:"p"},"Swagger")," \u5206\u7ec4\u4fe1\u606f\u3002"),(0,r.kt)("p",null,"\u901a\u8fc7\u914d\u7f6e ",(0,r.kt)("inlineCode",{parentName:"p"},"Groups")," \u53c2\u6570\u53ef\u4ee5\u5c06",(0,r.kt)("inlineCode",{parentName:"p"},"\u63a7\u5236\u5668\u548c\u52a8\u4f5c\u65b9\u6cd5")," \u8fdb\u884c\u5f52\u7c7b\u548c\u591a\u4e2a\u5206\u7ec4\u76f4\u63a5\u5171\u4eab\u3002\u53ef\u901a\u8fc7 ",(0,r.kt)("inlineCode",{parentName:"p"},"[ApiDescriptionSettings(params Groups)]")," \u6784\u9020\u51fd\u6570\u4f20\u5165\u6216\u6307\u5b9a ",(0,r.kt)("inlineCode",{parentName:"p"},"Groups")," \u53c2\u6570\u914d\u7f6e\u63a5\u53e3\u662f\u5426\u5bfc\u51fa\u3002\u901a\u5e38\u7528\u4e8e\u52a8\u4f5c\u65b9\u6cd5\uff0c\u5982\u679c\u7528\u4e8e\u63a7\u5236\u5668\u5b9e\u9645\u4f5c\u7528\u4e0d\u5927\u3002"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{5,13}","{5,13}":!0},'using Furion.DynamicApiController;\n\nnamespace Furion.Application\n{\n [ApiDescriptionSettings("Default", "Common")]\n public class FurionAppService : IDynamicApiController\n {\n public string Get()\n {\n return nameof(Furion);\n }\n\n [ApiDescriptionSettings("Custom")]\n public int Get(int id)\n {\n return id;\n }\n }\n}\n')),(0,r.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,r.kt)("img",{src:(0,l.Z)("img/dfz.gif")}),(0,r.kt)("h3",{id:"5910-tag-\u914d\u7f6e"},"5.9.10 ",(0,r.kt)("inlineCode",{parentName:"h3"},"Tag")," \u914d\u7f6e"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Tag")," \u914d\u7f6e\u4e3b\u8981\u7528\u4e8e\u914d\u7f6e ",(0,r.kt)("inlineCode",{parentName:"p"},"Swagger")," \u6807\u7b7e\u5206\u7ec4\u4fe1\u606f\u53ca\u5408\u5e76\u6807\u7b7e\u3002\u4e5f\u5c31\u662f ",(0,r.kt)("inlineCode",{parentName:"p"},"\u7ec4\u4e2d\u7ec4"),":"),(0,r.kt)(p.Z,{defaultValue:"tag1",values:[{label:"\u6807\u7b7e\u547d\u540d",value:"tag1"},{label:"\u5408\u5e76\u6807\u7b7e",value:"tag2"}],mdxType:"Tabs"},(0,r.kt)(o.Z,{value:"tag1",mdxType:"TabItem"},(0,r.kt)("h4",{id:"\u672a\u8d34\u6807\u7b7e\u4e4b\u524d"},"\u672a\u8d34\u6807\u7b7e\u4e4b\u524d"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"using Furion.DynamicApiController;\n\nnamespace Furion.Application\n{\n public class FurionAppService : IDynamicApiController\n {\n public string Get()\n {\n return nameof(Furion);\n }\n\n public int Get(int id)\n {\n return id;\n }\n }\n\n public class TestAppService : IDynamicApiController\n {\n public string Get()\n {\n return nameof(Furion);\n }\n\n public int Get(int id)\n {\n return id;\n }\n }\n}\n")),(0,r.kt)("h4",{id:"\u8d34\u6807\u7b7e\u4e4b\u540e"},"\u8d34\u6807\u7b7e\u4e4b\u540e"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{5,19}","{5,19}":!0},'using Furion.DynamicApiController;\n\nnamespace Furion.Application\n{\n [ApiDescriptionSettings(Tag = "\u5206\u7ec4\u4e00")]\n public class FurionAppService : IDynamicApiController\n {\n public string Get()\n {\n return nameof(Furion);\n }\n\n public int Get(int id)\n {\n return id;\n }\n }\n\n [ApiDescriptionSettings(Tag = "\u5206\u7ec4\u4e8c")]\n public class TestAppService : IDynamicApiController\n {\n public string Get()\n {\n return nameof(Furion);\n }\n\n public int Get(int id)\n {\n return id;\n }\n }\n}\n')),(0,r.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,r.kt)("img",{src:(0,l.Z)("img/tag1.png")})),(0,r.kt)(o.Z,{value:"tag2",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{5,19}","{5,19}":!0},'using Furion.DynamicApiController;\n\nnamespace Furion.Application\n{\n [ApiDescriptionSettings(Tag = "\u5408\u5e76\u6240\u6709\u6807\u7b7e")]\n public class FurionAppService : IDynamicApiController\n {\n public string Get()\n {\n return nameof(Furion);\n }\n\n public int Get(int id)\n {\n return id;\n }\n }\n\n [ApiDescriptionSettings(Tag = "\u5408\u5e76\u6240\u6709\u6807\u7b7e")]\n public class TestAppService : IDynamicApiController\n {\n public string Get()\n {\n return nameof(Furion);\n }\n\n public int Get(int id)\n {\n return id;\n }\n }\n}\n')),(0,r.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,r.kt)("img",{src:(0,l.Z)("img/tag2.png")}))),(0,r.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u5c0f\u77e5\u8bc6")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u5982\u679c ",(0,r.kt)("inlineCode",{parentName:"p"},"Tag")," \u540d\u5b57\u4e00\u6837\uff0c\u5219\u4f1a\u81ea\u52a8\u5408\u5e76\uff0c\u5426\u5219\u53ea\u662f\u547d\u540d\u3002"))),(0,r.kt)("h2",{id:"510-dynamicapicontrollersettings-\u914d\u7f6e"},"5.10 ",(0,r.kt)("inlineCode",{parentName:"h2"},"DynamicApiControllerSettings")," \u914d\u7f6e"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u8fd8\u63d0\u4f9b\u52a8\u6001 ",(0,r.kt)("inlineCode",{parentName:"p"},"WebAPI")," \u63a5\u53e3\u4e00\u4e9b\u5168\u5c40\u914d\u7f6e\u9009\u9879\uff0c\u5982\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"DefaultRoutePrefix"),"\uff1a\u9ed8\u8ba4\u8def\u7531\u524d\u7f00\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"string"),"\uff0c\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"api")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"DefaultHttpMethod"),"\uff1a\u9ed8\u8ba4\u8bf7\u6c42\u8c13\u8bcd\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"string"),"\uff0c\u9ed8\u8ba4\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"POST")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"DefaultModule"),"\uff1a\u9ed8\u8ba4\u6a21\u5757\u540d\u79f0\uff08\u533a\u57df\uff09\uff0c\u53ef\u7528\u4f5c\u63a5\u53e3\u7248\u672c\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"string"),"\uff0c\u9ed8\u8ba4\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"v1")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"LowercaseRoute"),"\uff1a\u5c0f\u5199\u8def\u7531\u683c\u5f0f\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"bool"),"\uff0c\u9ed8\u8ba4\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"true")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"KeepVerb"),"\uff1a\u662f\u5426\u4fdd\u7559\u52a8\u4f5c\u8c13\u8bcd\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"bool"),"\uff0c\u9ed8\u8ba4\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"false")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"KeepName"),"\uff1a\u662f\u5426\u4fdd\u7559\u9ed8\u8ba4\u540d\u79f0\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"bool"),"\uff0c\u9ed8\u8ba4\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"fasle")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"CamelCaseSeparator"),"\uff1a\u9a86\u9a7c(\u9a7c\u5cf0)/\u5e15\u65af\u5361\u547d\u540d\u5206\u9694\u7b26\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"string"),"\uff0c\u9ed8\u8ba4\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"-")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"VersionSeparator"),"\uff1a\u7248\u672c\u5206\u9694\u7b26\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"string"),"\uff0c\u9ed8\u8ba4\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"@")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"ModelToQuery"),"\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"GET/HEAD")," \u8bf7\u6c42\u5c06 ",(0,r.kt)("inlineCode",{parentName:"li"},"\u7c7b\u7c7b\u578b\u53c2\u6570\u8f6c\u67e5\u8be2\u53c2\u6570"),"\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"bool"),"\uff0c\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"false")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"SupportedMvcController"),"\uff1a\u662f\u5426\u652f\u6301 ",(0,r.kt)("inlineCode",{parentName:"li"},"Mvc Controller")," \u52a8\u6001\u914d\u7f6e\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"bool"),"\uff0c\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"false")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"UrlParameterization"),"\uff1a\u8def\u7531\u53c2\u6570\u91c7\u7528 ",(0,r.kt)("inlineCode",{parentName:"li"},"[FromQuery]")," \u5316\uff0c\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"false"),"\uff08",(0,r.kt)("inlineCode",{parentName:"li"},"[FromRoute]")," \u65b9\u5f0f\uff09"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"DefaultArea"),"\uff1a\u914d\u7f6e\u9ed8\u8ba4\u533a\u57df\uff0c\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"null")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"AbandonControllerAffixes"),"\uff1a\u9ed8\u8ba4\u53bb\u9664\u63a7\u5236\u5668\u540d\u79f0\u524d\u540e\u7f00\u5217\u8868\u540d\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"string[]"),"\uff0c\u9ed8\u8ba4\uff1a",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"AppServices")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"AppService")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"ApiController")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Controller")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Services")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Service")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"AbandonActionAffixes"),"\uff1a\u9ed8\u8ba4\u53bb\u9664\u52a8\u4f5c\u65b9\u6cd5\u540d\u79f0\u524d\u540e\u7f00\u5217\u8868\u540d\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"string[]"),"\uff0c\u9ed8\u8ba4\uff1a",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Async")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"VerbToHttpMethods"),"\uff1a\u590d\u5199\u9ed8\u8ba4\u65b9\u6cd5\u540d\u8f6c ",(0,r.kt)("inlineCode",{parentName:"li"},"[HttpMethod]")," \u89c4\u5219\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"string[][]")," \u4e8c\u7ef4\u6570\u7ec4\u7c7b\u578b\uff0c\u5185\u7f6e\u5339\u914d\u89c4\u5219\u4e3a\uff1a",(0,r.kt)("pre",{parentName:"li"},(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'["post"] = "POST",\n["add"] = "POST",\n["create"] = "POST",\n["insert"] = "POST",\n["submit"] = "POST",\n["get"] = "GET",\n["find"] = "GET",\n["fetch"] = "GET",\n["query"] = "GET",\n["getlist"] = "GET",\n["getall"] = "GET",\n["put"] = "PUT",\n["update"] = "PUT",\n["delete"] = "DELETE",\n["remove"] = "DELETE",\n["clear"] = "DELETE",\n["patch"] = "PATCH"\n')),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"\u590d\u5199\u793a\u4f8b")),(0,r.kt)("pre",{parentName:"li"},(0,r.kt)("code",{parentName:"pre",className:"language-json"},'"DynamicApiControllerSettings": {\n "VerbToHttpMethods": [\n [ "getall", "HEAD" ], // => getall \u4f1a\u88ab\u590d\u5199\u4e3a `[HttpHead]`\n [ "other", "PUT" ] // => \u65b0\u589e\u4e00\u6761\u65b0\u89c4\u5219\uff0c\u6bd4\u5982\uff0c\u4e00 `[other]` \u5f00\u5934\u4f1a\u8f6c\u6362\u4e3a `[HttpPut]` \u8bf7\u6c42\n ]\n }\n')))))),(0,r.kt)("h3",{id:"5101-\u652f\u6301-mvc-\u63a7\u5236\u5668-\u52a8\u6001\u914d\u7f6e"},"5.10.1 \u652f\u6301 ",(0,r.kt)("inlineCode",{parentName:"h3"},"Mvc \u63a7\u5236\u5668")," \u52a8\u6001\u914d\u7f6e"),(0,r.kt)("p",null,"\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u52a8\u6001 ",(0,r.kt)("inlineCode",{parentName:"p"},"WebAPI")," \u63a5\u53e3\u4e0d\u5bf9 ",(0,r.kt)("inlineCode",{parentName:"p"},"ControllerBase")," \u7c7b\u578b\u8fdb\u884c\u4efb\u4f55\u5904\u7406\u3002\u5f53\u7136\uff0c\u6211\u4eec\u4e5f\u53ef\u4ee5\u624b\u52a8\u542f\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"ControllerBase")," \u652f\u6301\u3002"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json",metastring:'{2-4} title="Furion.Web.Entry/appsettings.json"',"{2-4}":!0,title:'"Furion.Web.Entry/appsettings.json"'},'{\n "DynamicApiControllerSettings": {\n "SupportedMvcController": true\n }\n}\n')),(0,r.kt)("p",null,"\u8bbe\u7f6e ",(0,r.kt)("inlineCode",{parentName:"p"},"SupportedMvcController: true")," \u540e\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"Mvc ControllerBase")," \u7c7b\u578b\u4e5f\u80fd\u548c\u52a8\u6001 ",(0,r.kt)("inlineCode",{parentName:"p"},"WebAPI")," \u4e00\u6837\u7684\u7075\u6d3b\u4e86\u3002\u4ee3\u7801\u5982\u4e0b\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{5}","{5}":!0},"using Microsoft.AspNetCore.Mvc;\n\nnamespace Furion.Web.Entry.Controllers\n{\n public class MvcController : ControllerBase\n {\n public string Get()\n {\n return nameof(Furion);\n }\n }\n}\n\n")),(0,r.kt)("div",{className:"admonition admonition-warning alert alert--danger"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"}))),"\u6ce8\u610f\u4e8b\u9879")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u542f\u7528\u8be5\u914d\u7f6e\u540e\uff0c\u5982\u679c ",(0,r.kt)("inlineCode",{parentName:"p"},"Mvc \u63a7\u5236\u5668")," \u6ca1\u6709\u4efb\u4f55 ",(0,r.kt)("inlineCode",{parentName:"p"},"[Route]")," \u7279\u6027\uff0c\u4f46\u662f\u8d34\u4e86 ",(0,r.kt)("inlineCode",{parentName:"p"},"[ApiController]")," \u7279\u6027\u5c06\u4f1a\u62a5\u9519\u3002\u539f\u56e0\u662f ",(0,r.kt)("inlineCode",{parentName:"p"},"[ApiController]")," \u7279\u6027\u5185\u90e8\u505a\u4e86\u8def\u7531\u7279\u6027\u68c0\u6d4b\u3002\u6240\u4ee5\u5efa\u8bae\u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"[ApiDataValidation]")," \u4ee3\u66ff\u3002"),(0,r.kt)("p",{parentName:"div"},"\u67e5\u770b ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/dotnet/aspnetcore/blob/c565386a3ed135560bc2e9017aa54a950b4e35dd/src/Mvc/Mvc.Core/src/ApplicationModels/ApiBehaviorApplicationModelProvider.cs#L90"},"ASP.NET Core - ApiBehaviorApplicationModelProvider \u6e90\u7801")))),(0,r.kt)("h2",{id:"511-\u5173\u4e8e-aop-\u62e6\u622a"},"5.11 \u5173\u4e8e AOP \u62e6\u622a"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"\u52a8\u6001WebAPI")," \u652f\u6301 ",(0,r.kt)("inlineCode",{parentName:"p"},"Controller")," \u7684\u6240\u6709\u8fc7\u6ee4\u5668/\u7b5b\u9009\u5668\u62e6\u622a\uff0c\u4e5f\u5c31\u662f\u53ef\u4ee5\u901a\u8fc7 ",(0,r.kt)("inlineCode",{parentName:"p"},"ActionFilter"),"\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"ResultFilter")," \u8fdb\u884c\u62e6\u622a\u64cd\u4f5c\u3002\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,3}","{1,3}":!0},"public class SampleAsyncActionFilter : IAsyncActionFilter\n{\n public async Task OnActionExecutionAsync(ActionExecutingContext context,ActionExecutionDelegate next)\n {\n // \u62e6\u622a\u4e4b\u524d\n\n var resultContext = await next();\n\n // \u62e6\u622a\u4e4b\u540e\n\n // \u5f02\u5e38\u62e6\u622a\n if(resultContext.Exception != null)\n {\n\n }\n }\n}\n")),(0,r.kt)("p",null,"\u8be6\u7ec6\u7528\u6cd5\u53ef\u53c2\u89c1 ",(0,r.kt)("a",{parentName:"p",href:"https://docs.microsoft.com/zh-cn/aspnet/core/mvc/controllers/filters?view=aspnetcore-5.0"},"ASP.NET Core 5.0 - \u7b5b\u9009\u5668")),(0,r.kt)("h2",{id:"512-\u8bbe\u7f6e-api-\u8d85\u65f6\u8bf7\u6c42\u65f6\u95f4"},"5.12 \u8bbe\u7f6e ",(0,r.kt)("inlineCode",{parentName:"h2"},"api")," \u8d85\u65f6\u8bf7\u6c42\u65f6\u95f4"),(0,r.kt)("p",null,"\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Program.cs")," \u4e2d\u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"p"},".UseKestrel")," \u914d\u7f6e\u5373\u53ef\uff0c\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{8-12}","{8-12}":!0},"public static IHostBuilder CreateHostBuilder(string[] args)\n{\n return Host.CreateDefaultBuilder(args)\n .ConfigureWebHostDefaults(webBuilder =>\n {\n webBuilder.Inject()\n .UseStartup()\n .UseKestrel(option =>\n {\n option.Limits.KeepAliveTimeout = TimeSpan.FromMinutes(20);\n option.Limits.RequestHeadersTimeout = TimeSpan.FromMinutes(20);\n });\n });\n}\n")),(0,r.kt)("h2",{id:"513-\u53cd\u9988\u4e0e\u5efa\u8bae"},"5.13 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,r.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}N.isMDXComponent=!0},6010:function(e,n,t){function a(e){var n,t,i="";if("string"==typeof e||"number"==typeof e)i+=e;else if("object"==typeof e)if(Array.isArray(e))for(n=0;n=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var c=r.createContext({}),p=function(e){var n=r.useContext(c),t=n;return e&&(t="function"==typeof e?e(n):i(i({},n),e)),t},u=function(e){var n=p(e.components);return r.createElement(c.Provider,{value:n},e.children)},l={inlineCode:"code",wrapper:function(e){var n=e.children;return r.createElement(r.Fragment,{},n)}},d=r.forwardRef((function(e,n){var t=e.components,a=e.mdxType,o=e.originalType,c=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),d=p(t),m=a,y=d["".concat(c,".").concat(m)]||d[m]||l[m]||o;return t?r.createElement(y,i(i({ref:n},u),{},{components:t})):r.createElement(y,i({ref:n},u))}));function m(e,n){var t=arguments,a=n&&n.mdxType;if("string"==typeof e||a){var o=t.length,i=new Array(o);i[0]=d;var s={};for(var c in n)hasOwnProperty.call(n,c)&&(s[c]=n[c]);s.originalType=e,s.mdxType="string"==typeof e?e:a,i[1]=s;for(var p=2;p { user, user2 });\n\n// \u793a\u4f8b\u4e09\nrepository.Insert(new[] {user, user2 });\n\n// ==== \u5f02\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nawait repository.InsertAsync(user, user2);\n\n// \u793a\u4f8b\u4e8c\nawait repository.InsertAsync(new List { user, user2 });\n\n// \u793a\u4f8b\u4e09\nawait repository.InsertAsync(new[] {user, user2 });\n")),(0,o.kt)("h2",{id:"954-\u65b0\u589e\u591a\u6761\uff08\u7acb\u5373\u63d0\u4ea4\uff09"},"9.5.4 \u65b0\u589e\u591a\u6761\uff08\u7acb\u5373\u63d0\u4ea4\uff09"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},"// ==== \u540c\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nrepository.InsertNow(user, user2);\n\n// \u793a\u4f8b\u4e8c\nrepository.InsertNow(new List { user, user2 });\n\n// \u793a\u4f8b\u4e09\nrepository.InsertNow(new[] {user, user2 });\n\n// ==== \u5f02\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nawait repository.InsertNowAsync(user, user2);\n\n// \u793a\u4f8b\u4e8c\nawait repository.InsertNowAsync(new List { user, user2 });\n\n// \u793a\u4f8b\u4e09\nawait repository.InsertNowAsync(new[] {user, user2 });\n")),(0,o.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u5c0f\u77e5\u8bc6")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u6240\u6709\u5e26 ",(0,o.kt)("inlineCode",{parentName:"p"},"Now")," \u7ed3\u5c3e\u7684\u8868\u793a\u7acb\u5373\u63d0\u4ea4\u5230\u6570\u636e\u5e93\uff0c\u4e5f\u5c31\u662f\u7acb\u5373\u8c03\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"SaveChanges")," \u6216 ",(0,o.kt)("inlineCode",{parentName:"p"},"SaveChangesAsync"),"\u3002"))),(0,o.kt)("h2",{id:"955-\u5ffd\u7565\u7a7a\u503c\u65b0\u589e"},"9.5.5 \u5ffd\u7565\u7a7a\u503c\u65b0\u589e"),(0,o.kt)("p",null,"\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c",(0,o.kt)("inlineCode",{parentName:"p"},"EFCore")," \u65b0\u589e\u4f1a\u63d2\u5165\u5168\u90e8\u5217\uff08\u9664\u5b9e\u4f53\u8ddf\u8e2a\u65b9\u5f0f\u4ee5\u5916\uff09\uff0c\u6709\u4e9b\u65f6\u5019\u6211\u4eec\u5e0c\u671b ",(0,o.kt)("inlineCode",{parentName:"p"},"Null")," \u503c\u65e0\u9700\u63d2\u5165\uff0c\u8fd9\u662f\u6211\u4eec\u53ea\u9700\u8981\u5728\u66f4\u65b0\u65f6\u5019\u914d\u7f6e ",(0,o.kt)("inlineCode",{parentName:"p"},"ignoreNullValues")," \u53c2\u6570\u5373\u53ef\uff0c\u5982\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},"repository.Insert(entity, ignoreNullValues: true);\n")),(0,o.kt)("p",null,"\u4e5f\u53ef\u4ee5\u5168\u5c40\u914d\u7f6e\uff0c\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"AppDbContext")," \u7684\u6d3e\u751f\u7c7b\u7684\u6784\u9020\u51fd\u6570\u4e2d\u542f\u7528\u5373\u53ef\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{11}","{11}":!0},'using Furion.DatabaseAccessor;\nusing Microsoft.EntityFrameworkCore;\n\nnamespace Furion.EntityFramework.Core\n{\n [AppDbContext("Sqlite3ConnectionString", DbProvider.Sqlite)]\n public class DefaultDbContext : AppDbContext\n {\n public DefaultDbContext(DbContextOptions options) : base(options)\n {\n InsertOrUpdateIgnoreNullValues = true;\n }\n }\n}\n')),(0,o.kt)("h2",{id:"956-\u53cd\u9988\u4e0e\u5efa\u8bae"},"9.5.6 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,o.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,o.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/64ece2db.7b9797a8.js b/handbook/build/assets/js/64ece2db.7b9797a8.js new file mode 100644 index 00000000000..47c79d8b878 --- /dev/null +++ b/handbook/build/assets/js/64ece2db.7b9797a8.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[1327],{3905:function(e,n,t){t.d(n,{Zo:function(){return u},kt:function(){return m}});var r=t(7294);function a(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function o(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function i(e){for(var n=1;n=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var c=r.createContext({}),p=function(e){var n=r.useContext(c),t=n;return e&&(t="function"==typeof e?e(n):i(i({},n),e)),t},u=function(e){var n=p(e.components);return r.createElement(c.Provider,{value:n},e.children)},l={inlineCode:"code",wrapper:function(e){var n=e.children;return r.createElement(r.Fragment,{},n)}},d=r.forwardRef((function(e,n){var t=e.components,a=e.mdxType,o=e.originalType,c=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),d=p(t),m=a,y=d["".concat(c,".").concat(m)]||d[m]||l[m]||o;return t?r.createElement(y,i(i({ref:n},u),{},{components:t})):r.createElement(y,i({ref:n},u))}));function m(e,n){var t=arguments,a=n&&n.mdxType;if("string"==typeof e||a){var o=t.length,i=new Array(o);i[0]=d;var s={};for(var c in n)hasOwnProperty.call(n,c)&&(s[c]=n[c]);s.originalType=e,s.mdxType="string"==typeof e?e:a,i[1]=s;for(var p=2;p { user, user2 });\n\n// \u793a\u4f8b\u4e09\nrepository.Insert(new[] {user, user2 });\n\n// ==== \u5f02\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nawait repository.InsertAsync(user, user2);\n\n// \u793a\u4f8b\u4e8c\nawait repository.InsertAsync(new List { user, user2 });\n\n// \u793a\u4f8b\u4e09\nawait repository.InsertAsync(new[] {user, user2 });\n")),(0,o.kt)("h2",{id:"954-\u65b0\u589e\u591a\u6761\uff08\u7acb\u5373\u63d0\u4ea4\uff09"},"9.5.4 \u65b0\u589e\u591a\u6761\uff08\u7acb\u5373\u63d0\u4ea4\uff09"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},"// ==== \u540c\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nrepository.InsertNow(user, user2);\n\n// \u793a\u4f8b\u4e8c\nrepository.InsertNow(new List { user, user2 });\n\n// \u793a\u4f8b\u4e09\nrepository.InsertNow(new[] {user, user2 });\n\n// ==== \u5f02\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nawait repository.InsertNowAsync(user, user2);\n\n// \u793a\u4f8b\u4e8c\nawait repository.InsertNowAsync(new List { user, user2 });\n\n// \u793a\u4f8b\u4e09\nawait repository.InsertNowAsync(new[] {user, user2 });\n")),(0,o.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u5c0f\u77e5\u8bc6")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u6240\u6709\u5e26 ",(0,o.kt)("inlineCode",{parentName:"p"},"Now")," \u7ed3\u5c3e\u7684\u8868\u793a\u7acb\u5373\u63d0\u4ea4\u5230\u6570\u636e\u5e93\uff0c\u4e5f\u5c31\u662f\u7acb\u5373\u8c03\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"SaveChanges")," \u6216 ",(0,o.kt)("inlineCode",{parentName:"p"},"SaveChangesAsync"),"\u3002"))),(0,o.kt)("h2",{id:"955-\u5ffd\u7565\u7a7a\u503c\u65b0\u589e"},"9.5.5 \u5ffd\u7565\u7a7a\u503c\u65b0\u589e"),(0,o.kt)("p",null,"\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c",(0,o.kt)("inlineCode",{parentName:"p"},"EFCore")," \u65b0\u589e\u4f1a\u63d2\u5165\u5168\u90e8\u5217\uff08\u9664\u5b9e\u4f53\u8ddf\u8e2a\u65b9\u5f0f\u4ee5\u5916\uff09\uff0c\u6709\u4e9b\u65f6\u5019\u6211\u4eec\u5e0c\u671b ",(0,o.kt)("inlineCode",{parentName:"p"},"Null")," \u503c\u65e0\u9700\u63d2\u5165\uff0c\u8fd9\u662f\u6211\u4eec\u53ea\u9700\u8981\u5728\u66f4\u65b0\u65f6\u5019\u914d\u7f6e ",(0,o.kt)("inlineCode",{parentName:"p"},"ignoreNullValues")," \u53c2\u6570\u5373\u53ef\uff0c\u5982\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},"repository.Insert(entity, ignoreNullValues: true);\n")),(0,o.kt)("p",null,"\u4e5f\u53ef\u4ee5\u5168\u5c40\u914d\u7f6e\uff0c\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"AppDbContext")," \u7684\u6d3e\u751f\u7c7b\u7684\u6784\u9020\u51fd\u6570\u4e2d\u542f\u7528\u5373\u53ef\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{11}","{11}":!0},'using Furion.DatabaseAccessor;\nusing Microsoft.EntityFrameworkCore;\n\nnamespace Furion.EntityFramework.Core\n{\n [AppDbContext("Sqlite3ConnectionString", DbProvider.Sqlite)]\n public class DefaultDbContext : AppDbContext\n {\n public DefaultDbContext(DbContextOptions options) : base(options)\n {\n InsertOrUpdateIgnoreNullValues = true;\n }\n }\n}\n')),(0,o.kt)("h2",{id:"956-\u53cd\u9988\u4e0e\u5efa\u8bae"},"9.5.6 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,o.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,o.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/6546.8b18d4e3.js b/handbook/build/assets/js/6546.8b18d4e3.js new file mode 100644 index 00000000000..cbdb00162f9 --- /dev/null +++ b/handbook/build/assets/js/6546.8b18d4e3.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[6546],{3905:function(e,t,r){r.d(t,{Zo:function(){return s},kt:function(){return f}});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function l(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var c=n.createContext({}),m=function(e){var t=n.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},s=function(e){var t=m(e.components);return n.createElement(c.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,l=e.originalType,c=e.parentName,s=o(e,["components","mdxType","originalType","parentName"]),d=m(r),f=a,p=d["".concat(c,".").concat(f)]||d[f]||u[f]||l;return r?n.createElement(p,i(i({ref:t},s),{},{components:r})):n.createElement(p,i({ref:t},s))}));function f(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var l=r.length,i=new Array(l);i[0]=d;var o={};for(var c in t)hasOwnProperty.call(t,c)&&(o[c]=t[c]);o.originalType=e,o.mdxType="string"==typeof e?e:a,i[1]=o;for(var m=2;m0;return a.createElement(i.Z,c,a.createElement("div",{className:"container margin-vert--lg"},a.createElement("div",{className:"row"},m&&a.createElement("aside",{className:"col col--3"},a.createElement(g,{sidebar:t})),a.createElement("main",{className:(0,l.Z)("col",{"col--7":m,"col--9 col--offset-1":!m}),itemScope:!0,itemType:"http://schema.org/Blog"},o),r&&a.createElement("div",{className:"col col--2"},a.createElement(v.Z,{toc:r})))))}},4884:function(e,t,r){r.d(t,{Z:function(){return y}});var n=r(7294),a=r(6010),l=r(3905),i=r(4973),o=r(6742),c=r(4996),m=r(941),s=r(906),u=r(6146),d="blogPostTitle_GeHD",f="blogPostData_291c",p="blogPostDetailsFull_3kfx",g=r(7682),v="image_1yU8";var h=function(e){var t=e.author,r=t.name,a=t.title,l=t.url,i=t.imageURL;return n.createElement("div",{className:"avatar margin-bottom--sm"},i&&n.createElement(o.Z,{className:"avatar__photo-link avatar__photo",href:l},n.createElement("img",{className:v,src:i,alt:r})),r&&n.createElement("div",{className:"avatar__intro",itemProp:"author",itemScope:!0,itemType:"https://schema.org/Person"},n.createElement("div",{className:"avatar__name"},n.createElement(o.Z,{href:l,itemProp:"url"},n.createElement("span",{itemProp:"name"},r))),a&&n.createElement("small",{className:"avatar__subtitle",itemProp:"description"},a)))},b="authorCol_1R69";function E(e){var t=e.authors,r=e.assets;return 0===t.length?n.createElement(n.Fragment,null):n.createElement("div",{className:"row margin-top--md margin-bottom--sm"},t.map((function(e,t){var l;return n.createElement("div",{className:(0,a.Z)("col col--6",b),key:t},n.createElement(h,{author:Object.assign({},e,{imageURL:null!=(l=r.authorsImageUrls[t])?l:e.imageURL})}))})))}var y=function(e){var t,r,v,h,b=(v=(0,m.c2)().selectMessage,function(e){var t=Math.ceil(e);return v(t,(0,i.I)({id:"theme.blog.post.readingTime.plurals",description:'Pluralized label for "{readingTime} min read". Use as much plural forms (separated by "|") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)',message:"One min read|{readingTime} min read"},{readingTime:t}))}),y=(0,c.C)().withBaseUrl,N=e.children,_=e.frontMatter,Z=e.assets,O=e.metadata,k=e.truncated,P=e.isBlogPostPage,T=void 0!==P&&P,w=O.date,C=O.formattedDate,L=O.permalink,j=O.tags,x=O.readingTime,R=O.title,U=O.editUrl,I=O.authors,A=null!=(t=Z.image)?t:_.image;return n.createElement("article",{className:T?void 0:"margin-bottom--xl",itemProp:"blogPost",itemScope:!0,itemType:"http://schema.org/BlogPosting"},(h=T?"h1":"h2",n.createElement("header",null,n.createElement(h,{className:d,itemProp:"headline"},T?R:n.createElement(o.Z,{itemProp:"url",to:L},R)),n.createElement("div",{className:(0,a.Z)(f,"margin-vert--md")},n.createElement("time",{dateTime:w,itemProp:"datePublished"},C),void 0!==x&&n.createElement(n.Fragment,null," \xb7 ",b(x))),n.createElement(E,{authors:I,assets:Z}))),A&&n.createElement("meta",{itemProp:"image",content:y(A,{absolute:!0})}),n.createElement("div",{className:"markdown",itemProp:"articleBody"},n.createElement(l.Zo,{components:s.Z},N)),(j.length>0||k)&&n.createElement("footer",{className:(0,a.Z)("row docusaurus-mt-lg",(r={},r[p]=T,r))},j.length>0&&n.createElement("div",{className:(0,a.Z)("col",{"col--9":!T})},n.createElement(g.Z,{tags:j})),T&&U&&n.createElement("div",{className:"col margin-top--sm"},n.createElement(u.Z,{editUrl:U})),!T&&k&&n.createElement("div",{className:"col col--3 text--right"},n.createElement(o.Z,{to:O.permalink,"aria-label":"Read more about "+R},n.createElement("b",null,n.createElement(i.Z,{id:"theme.blog.post.readMore",description:"The label used in blog post item excerpts to link to full blog posts"},"Read More"))))))}},6146:function(e,t,r){r.d(t,{Z:function(){return d}});var n=r(7294),a=r(4973),l=r(7462),i=r(3366),o=r(6010),c="iconEdit_2_ui",m=["className"],s=function(e){var t=e.className,r=(0,i.Z)(e,m);return n.createElement("svg",(0,l.Z)({fill:"currentColor",height:"20",width:"20",viewBox:"0 0 40 40",className:(0,o.Z)(c,t),"aria-hidden":"true"},r),n.createElement("g",null,n.createElement("path",{d:"m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"})))},u=r(941);function d(e){var t=e.editUrl;return n.createElement("a",{href:t,target:"_blank",rel:"noreferrer noopener",className:u.kM.common.editThisPage},n.createElement(s,null),n.createElement(a.Z,{id:"theme.common.editThisPage",description:"The link label to edit the current page"},"Edit this page"))}},571:function(e,t,r){r.d(t,{r:function(){return f},Z:function(){return p}});var n=r(7294),a=r(6010),l=r(941);function i(e){var t=e.getBoundingClientRect();return t.top===t.bottom?i(e.parentNode):t}function o(e){var t,r=e.anchorTopOffset,n=Array.from(document.querySelectorAll(".anchor.anchor__h2, .anchor.anchor__h3")),a=n.find((function(e){return i(e).top>=r}));return a?function(e){return e.top>0&&e.bottom=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var i=a.createContext({}),s=function(e){var t=a.useContext(i),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},m=function(e){var t=s(e.components);return a.createElement(i.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},d=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,l=e.originalType,i=e.parentName,m=c(e,["components","mdxType","originalType","parentName"]),d=s(r),f=n,g=d["".concat(i,".").concat(f)]||d[f]||u[f]||l;return r?a.createElement(g,o(o({ref:t},m),{},{components:r})):a.createElement(g,o({ref:t},m))}));function f(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var l=r.length,o=new Array(l);o[0]=d;var c={};for(var i in t)hasOwnProperty.call(t,i)&&(c[i]=t[i]);c.originalType=e,c.mdxType="string"==typeof e?e:n,o[1]=c;for(var s=2;s0;return n.createElement(o.Z,i,n.createElement("div",{className:"container margin-vert--lg"},n.createElement("div",{className:"row"},s&&n.createElement("aside",{className:"col col--3"},n.createElement(p,{sidebar:t})),n.createElement("main",{className:(0,l.Z)("col",{"col--7":s,"col--9 col--offset-1":!s})},c),r&&n.createElement("div",{className:"col col--2"},n.createElement(h.Z,{toc:r})))))}},3146:function(e,t,r){r.d(t,{Z:function(){return p}});var a=r(7294),n=r(6010),l=r(3905),o=r(4973),c=r(6742),i=r(3018),s=r(4848),m=r(1217),u=r(6146),d="blogPostTitle_GeHD",f="blogPostData_291c",g="blogPostDetailsFull_3kfx";var p=function(e){var t,r,p,h=(r=(0,i.c2)().selectMessage,function(e){var t=Math.ceil(e);return r(t,(0,o.I)({id:"theme.blog.post.readingTime.plurals",description:'Pluralized label for "{readingTime} min read". Use as much plural forms (separated by "|") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)',message:"One min read|{readingTime} min read"},{readingTime:t}))}),v=e.children,E=e.frontMatter,b=e.metadata,_=e.truncated,y=e.isBlogPostPage,N=void 0!==y&&y,k=b.date,Z=b.formattedDate,T=b.permalink,w=b.tags,O=b.readingTime,P=b.title,x=b.editUrl,L=E.author,C=E.image,j=E.keywords,I=E.author_url||E.authorURL,M=E.author_title||E.authorTitle,U=E.author_image_url||E.authorImageURL;return a.createElement(a.Fragment,null,a.createElement(m.Z,{keywords:j,image:C}),a.createElement("article",{className:N?void 0:"margin-bottom--xl"},(p=N?"h1":"h2",a.createElement("header",null,a.createElement(p,{className:d},N?P:a.createElement(c.Z,{to:T},P)),a.createElement("div",{className:(0,n.Z)(f,"margin-vert--md")},a.createElement("time",{dateTime:k},Z),O&&a.createElement(a.Fragment,null," \xb7 ",h(O))),a.createElement("div",{className:"avatar margin-vert--md"},U&&a.createElement(c.Z,{className:"avatar__photo-link avatar__photo",href:I},a.createElement("img",{src:U,alt:L})),a.createElement("div",{className:"avatar__intro"},L&&a.createElement(a.Fragment,null,a.createElement("div",{className:"avatar__name"},a.createElement(c.Z,{href:I},L)),a.createElement("small",{className:"avatar__subtitle"},M)))))),a.createElement("div",{className:"markdown"},a.createElement(l.Zo,{components:s.Z},v)),(w.length>0||_)&&a.createElement("footer",{className:(0,n.Z)("row docusaurus-mt-lg",(t={},t[g]=N,t))},w.length>0&&a.createElement("div",{className:"col"},a.createElement("b",null,a.createElement(o.Z,{id:"theme.tags.tagsListLabel",description:"The label alongside a tag list"},"Tags:")),w.map((function(e){var t=e.label,r=e.permalink;return a.createElement(c.Z,{key:r,className:"margin-horiz--sm",to:r},t)}))),N&&x&&a.createElement("div",{className:"col margin-top--sm"},a.createElement(u.Z,{editUrl:x})),!N&&_&&a.createElement("div",{className:"col text--right"},a.createElement(c.Z,{to:b.permalink,"aria-label":"Read more about "+P},a.createElement("b",null,a.createElement(o.Z,{id:"theme.blog.post.readMore",description:"The label used in blog post item excerpts to link to full blog posts"},"Read More")))))))}},9404:function(e,t,r){r.r(t);var a=r(7294),n=r(6742),l=r(6165),o=r(3146),c=r(4973),i=r(3018);t.default=function(e){var t,r=e.metadata,s=e.items,m=e.sidebar,u=r.allTagsPath,d=r.name,f=r.count,g=(t=(0,i.c2)().selectMessage,function(e){return t(e,(0,c.I)({id:"theme.blog.post.plurals",description:'Pluralized label for "{count} posts". Use as much plural forms (separated by "|") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)',message:"One post|{count} posts"},{count:e}))}),p=(0,c.I)({id:"theme.blog.tagTitle",description:"The title of the page for a blog tag",message:'{nPosts} tagged with "{tagName}"'},{nPosts:g(f),tagName:d});return a.createElement(l.Z,{title:p,wrapperClassName:i.kM.wrapper.blogPages,pageClassName:i.kM.page.blogTagsPostPage,searchMetadatas:{tag:"blog_tags_posts"},sidebar:m},a.createElement("header",{className:"margin-bottom--xl"},a.createElement("h1",null,p),a.createElement(n.Z,{href:u},a.createElement(c.Z,{id:"theme.tags.tagsPageLink",description:"The label of the link targeting the tag list page"},"View All Tags"))),s.map((function(e){var t=e.content;return a.createElement(o.Z,{key:t.metadata.permalink,frontMatter:t.frontMatter,metadata:t.metadata,truncated:!0},a.createElement(t,null))})))}},6146:function(e,t,r){r.d(t,{Z:function(){return u}});var a=r(7294),n=r(4973),l=r(7462),o=r(3366),c=r(6010),i="iconEdit_2_ui",s=["className"],m=function(e){var t=e.className,r=(0,o.Z)(e,s);return a.createElement("svg",(0,l.Z)({fill:"currentColor",height:"20",width:"20",viewBox:"0 0 40 40",className:(0,c.Z)(i,t),"aria-hidden":"true"},r),a.createElement("g",null,a.createElement("path",{d:"m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"})))};function u(e){var t=e.editUrl;return a.createElement("a",{href:t,target:"_blank",rel:"noreferrer noopener"},a.createElement(m,null),a.createElement(n.Z,{id:"theme.common.editThisPage",description:"The link label to edit the current page"},"Edit this page"))}},571:function(e,t,r){r.d(t,{r:function(){return i},Z:function(){return s}});var a=r(7294),n=r(6010);var l=function(e,t,r){var n=(0,a.useState)(void 0),l=n[0],o=n[1];(0,a.useEffect)((function(){function a(){var a=function(){var e=Array.from(document.getElementsByClassName("anchor")),t=e.find((function(e){return e.getBoundingClientRect().top>=r}));if(t){if(t.getBoundingClientRect().top>=r){var a=e[e.indexOf(t)-1];return null!=a?a:t}return t}return e[e.length-1]}();if(a)for(var n=0,c=!1,i=document.getElementsByClassName(e);n0&&l.createElement("div",{className:"row footer__links"},n.map((function(e,t){return l.createElement("div",{key:t,className:"col footer__col"},null!=e.title?l.createElement("h4",{className:"footer__title"},e.title):null,null!=e.items&&Array.isArray(e.items)&&e.items.length>0?l.createElement("ul",{className:"footer__items"},e.items.map((function(e,t){return e.html?l.createElement("li",{key:t,className:"footer__item",dangerouslySetInnerHTML:{__html:e.html}}):l.createElement("li",{key:e.href||e.to,className:"footer__item"},l.createElement(d,e))}))):null)}))),(u||r)&&l.createElement("div",{className:"footer__bottom text--center"},u&&u.src&&l.createElement("div",{className:"margin-bottom--sm"},u.href?l.createElement("a",{href:u.href,target:"_blank",rel:"noopener noreferrer",className:m},l.createElement(f,{alt:u.alt,url:g})):l.createElement(f,{alt:u.alt,url:g})),r?l.createElement("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:r}}):null))):null}}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/6875c492.c7844c80.js b/handbook/build/assets/js/6875c492.c7844c80.js new file mode 100644 index 00000000000..869a6fba7d7 --- /dev/null +++ b/handbook/build/assets/js/6875c492.c7844c80.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[8610,613],{9404:function(e,t,a){a.r(t),a.d(t,{default:function(){return m}});var r=a(7294),l=a(6742),n=a(6165),o=a(4884),s=a(4973),c=a(941);function m(e){var t,a=e.metadata,m=e.items,i=e.sidebar,u=a.allTagsPath,f=a.name,g=a.count,p=(t=(0,c.c2)().selectMessage,function(e){return t(e,(0,s.I)({id:"theme.blog.post.plurals",description:'Pluralized label for "{count} posts". Use as much plural forms (separated by "|") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)',message:"One post|{count} posts"},{count:e}))}),d=(0,s.I)({id:"theme.blog.tagTitle",description:"The title of the page for a blog tag",message:'{nPosts} tagged with "{tagName}"'},{nPosts:p(g),tagName:f});return r.createElement(n.Z,{title:d,wrapperClassName:c.kM.wrapper.blogPages,pageClassName:c.kM.page.blogTagPostListPage,searchMetadatas:{tag:"blog_tags_posts"},sidebar:i},r.createElement("header",{className:"margin-bottom--xl"},r.createElement("h1",null,d),r.createElement(l.Z,{href:u},r.createElement(s.Z,{id:"theme.tags.tagsPageLink",description:"The label of the link targeting the tag list page"},"View All Tags"))),m.map((function(e){var t=e.content;return r.createElement(o.Z,{key:t.metadata.permalink,frontMatter:t.frontMatter,assets:t.assets,metadata:t.metadata,truncated:!0},r.createElement(t,null))})))}},546:function(e,t,a){a.d(t,{Z:function(){return p}});var r=a(7462),l=a(3366),n=a(7294),o=a(6010),s=a(6742),c=a(941),m=a(4996),i="footerLogoLink_qW4Z",u=["to","href","label","prependBaseUrlToHref"];function f(e){var t=e.to,a=e.href,o=e.label,c=e.prependBaseUrlToHref,i=(0,l.Z)(e,u),f=(0,m.Z)(t),g=(0,m.Z)(a,{forcePrependBaseUrl:!0});return n.createElement(s.Z,(0,r.Z)({className:"footer__link-item"},a?{target:"_blank",rel:"noopener noreferrer",href:c?g:a}:{to:f},i),o)}var g=function(e){var t=e.url,a=e.alt;return n.createElement("img",{className:"footer__logo",alt:a,src:t,style:{background:"#fff",padding:"5px 10px"}})};var p=function(){var e=(0,c.LU)().footer,t=e||{},a=t.copyright,r=t.links,l=void 0===r?[]:r,s=t.logo,u=void 0===s?{}:s,p=(0,m.Z)(u.src);return e?n.createElement("footer",{className:(0,o.Z)("footer",{"footer--dark":"dark"===e.style})},n.createElement("div",{className:"container"},l&&l.length>0&&n.createElement("div",{className:"row footer__links"},l.map((function(e,t){return n.createElement("div",{key:t,className:"col footer__col"},null!=e.title?n.createElement("h4",{className:"footer__title"},e.title):null,null!=e.items&&Array.isArray(e.items)&&e.items.length>0?n.createElement("ul",{className:"footer__items"},e.items.map((function(e,t){return e.html?n.createElement("li",{key:t,className:"footer__item",dangerouslySetInnerHTML:{__html:e.html}}):n.createElement("li",{key:e.href||e.to,className:"footer__item"},n.createElement(f,e))}))):null)}))),(u||a)&&n.createElement("div",{className:"footer__bottom text--center"},u&&u.src&&n.createElement("div",{className:"margin-bottom--sm"},u.href?n.createElement("a",{href:u.href,target:"_blank",rel:"noopener noreferrer",className:i},n.createElement(g,{alt:u.alt,url:p})):n.createElement(g,{alt:u.alt,url:p})),a?n.createElement("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:a}}):null))):null}}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/68ec177d.0151027b.js b/handbook/build/assets/js/68ec177d.0151027b.js new file mode 100644 index 00000000000..9463240a09e --- /dev/null +++ b/handbook/build/assets/js/68ec177d.0151027b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[223],{3905:function(e,r,n){n.d(r,{Zo:function(){return u},kt:function(){return m}});var t=n(7294);function a(e,r,n){return r in e?Object.defineProperty(e,r,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[r]=n,e}function o(e,r){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);r&&(t=t.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),n.push.apply(n,t)}return n}function i(e){for(var r=1;r=0||(a[n]=e[n]);return a}(e,r);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(t=0;t=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=t.createContext({}),p=function(e){var r=t.useContext(l),n=r;return e&&(n="function"==typeof e?e(r):i(i({},r),e)),n},u=function(e){var r=p(e.components);return t.createElement(l.Provider,{value:r},e.children)},s={inlineCode:"code",wrapper:function(e){var r=e.children;return t.createElement(t.Fragment,{},r)}},d=t.forwardRef((function(e,r){var n=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,u=c(e,["components","mdxType","originalType","parentName"]),d=p(n),m=a,g=d["".concat(l,".").concat(m)]||d[m]||s[m]||o;return n?t.createElement(g,i(i({ref:r},u),{},{components:n})):t.createElement(g,i({ref:r},u))}));function m(e,r){var n=arguments,a=r&&r.mdxType;if("string"==typeof e||a){var o=n.length,i=new Array(o);i[0]=d;var c={};for(var l in r)hasOwnProperty.call(r,l)&&(c[l]=r[l]);c.originalType=e,c.mdxType="string"==typeof e?e:a,i[1]=c;for(var p=2;pCron \u8868\u8fbe\u5f0f",id:"129-\u89e3\u6790-cron-\u8868\u8fbe\u5f0f",children:[]},{value:"12.10 BackgroundService \u95f4\u9694\u5b9a\u65f6\u4efb\u52a1",id:"1210-backgroundservice-\u95f4\u9694\u5b9a\u65f6\u4efb\u52a1",children:[]},{value:"12.11 BackgroundService Cron \u5b9a\u65f6\u4efb\u52a1",id:"1211-backgroundservice-cron-\u5b9a\u65f6\u4efb\u52a1",children:[]}],s={toc:u};function d(e){var r=e.components,n=(0,a.Z)(e,i);return(0,o.kt)("wrapper",(0,t.Z)({},s,n,{components:r,mdxType:"MDXLayout"}),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"SpareTime")," \u9759\u6001\u7c7b\u63d0\u4f9b\u4e86\u4e00\u4e9b\u65b9\u6cd5\u65b9\u4fbf\u521d\u59cb\u5316\u548c\u7ba1\u7406\u4efb\u52a1"),(0,o.kt)("h2",{id:"121-\u521d\u59cb\u5316\u4efb\u52a1"},"12.1 \u521d\u59cb\u5316\u4efb\u52a1"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},"// \u5f00\u542f\u95f4\u9694\u4efb\u52a1\nSpareTime.Do(interval, [options]);\n\n// \u5f00\u542f Cron \u8868\u8fbe\u5f0f\u4efb\u52a1\nSpareTime.Do(expression, [options]);\n\n// \u53ea\u6267\u884c\u4e00\u6b21\u4efb\u52a1\nSpareTime.DoOnce(interval, [options]);\n\n// \u5b9e\u73b0\u81ea\u5b9a\u4e49\u4efb\u52a1\nSpareTime.Do(()=>{\n return DateTime.Now.AddMinutes(10);\n},[options]);\n")),(0,o.kt)("h2",{id:"122-\u5b9e\u73b0\u540e\u53f0\u6267\u884c"},"12.2 \u5b9e\u73b0\u540e\u53f0\u6267\u884c"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},"// \u5b9e\u73b0\u540e\u53f0\u6267\u884c\nSpareTime.DoIt(()=>{});\n")),(0,o.kt)("h2",{id:"123-\u5f00\u59cb\u4e00\u4e2a\u4efb\u52a1"},"12.3 \u5f00\u59cb\u4e00\u4e2a\u4efb\u52a1"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},'SpareTime.Start("\u4efb\u52a1\u6807\u8bc6");\n')),(0,o.kt)("h2",{id:"124-\u6682\u505c\u4e00\u4e2a\u4efb\u52a1"},"12.4 \u6682\u505c\u4e00\u4e2a\u4efb\u52a1"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},'SpareTime.Stop("\u4efb\u52a1\u6807\u8bc6");\n// \u8fd8\u53ef\u4ee5\u6807\u8bb0\u4e00\u4e2a\u4efb\u52a1\u6267\u884c\u5931\u8d25\nSpareTime.Stop("\u4efb\u52a1\u6807\u8bc6", true);\n')),(0,o.kt)("h2",{id:"125-\u53d6\u6d88\u4e00\u4e2a\u4efb\u52a1"},"12.5 \u53d6\u6d88\u4e00\u4e2a\u4efb\u52a1"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},'SpareTime.Cancel("\u4efb\u52a1\u540d\u79f0");\n')),(0,o.kt)("h2",{id:"126-\u9500\u6bc1\u6240\u6709\u4efb\u52a1"},"12.6 \u9500\u6bc1\u6240\u6709\u4efb\u52a1"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},"SpareTime.Dispose();\n")),(0,o.kt)("h2",{id:"127-\u83b7\u53d6\u6240\u6709\u4efb\u52a1"},"12.7 \u83b7\u53d6\u6240\u6709\u4efb\u52a1"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},"var workers = SpareTime.GetWorkers();\n")),(0,o.kt)("h2",{id:"128-\u83b7\u53d6\u5355\u4e2a\u4efb\u52a1"},"12.8 \u83b7\u53d6\u5355\u4e2a\u4efb\u52a1"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},'var worker = SpareTime.GetWorker("workerName");\n')),(0,o.kt)("h2",{id:"129-\u89e3\u6790-cron-\u8868\u8fbe\u5f0f"},"12.9 \u89e3\u6790 ",(0,o.kt)("inlineCode",{parentName:"h2"},"Cron")," \u8868\u8fbe\u5f0f"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},'var nextTime = SpareTime.GetCronNextOccurrence("* * * * *");\n')),(0,o.kt)("h2",{id:"1210-backgroundservice-\u95f4\u9694\u5b9a\u65f6\u4efb\u52a1"},"12.10 ",(0,o.kt)("inlineCode",{parentName:"h2"},"BackgroundService")," \u95f4\u9694\u5b9a\u65f6\u4efb\u52a1"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},'// \u95f4\u9694\u6267\u884c\u4efb\u52a1\nawait SpareTime.DoAsync(1000, () =>\n{\n _logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now);\n}, stoppingToken);\n')),(0,o.kt)("h2",{id:"1211-backgroundservice-cron-\u5b9a\u65f6\u4efb\u52a1"},"12.11 ",(0,o.kt)("inlineCode",{parentName:"h2"},"BackgroundService")," ",(0,o.kt)("inlineCode",{parentName:"h2"},"Cron")," \u5b9a\u65f6\u4efb\u52a1"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},' // \u6267\u884c Cron \u8868\u8fbe\u5f0f\u4efb\u52a1\nawait SpareTime.DoAsync("*/5 * * * * *", () =>\n{\n _logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now);\n}, stoppingToken, CronFormat.IncludeSeconds);\n')))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/68ec177d.27e677e7.js b/handbook/build/assets/js/68ec177d.27e677e7.js deleted file mode 100644 index 01cc8ac23c7..00000000000 --- a/handbook/build/assets/js/68ec177d.27e677e7.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[223],{3905:function(e,r,n){n.d(r,{Zo:function(){return u},kt:function(){return m}});var t=n(7294);function a(e,r,n){return r in e?Object.defineProperty(e,r,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[r]=n,e}function o(e,r){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);r&&(t=t.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),n.push.apply(n,t)}return n}function i(e){for(var r=1;r=0||(a[n]=e[n]);return a}(e,r);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(t=0;t=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var l=t.createContext({}),p=function(e){var r=t.useContext(l),n=r;return e&&(n="function"==typeof e?e(r):i(i({},r),e)),n},u=function(e){var r=p(e.components);return t.createElement(l.Provider,{value:r},e.children)},s={inlineCode:"code",wrapper:function(e){var r=e.children;return t.createElement(t.Fragment,{},r)}},d=t.forwardRef((function(e,r){var n=e.components,a=e.mdxType,o=e.originalType,l=e.parentName,u=c(e,["components","mdxType","originalType","parentName"]),d=p(n),m=a,g=d["".concat(l,".").concat(m)]||d[m]||s[m]||o;return n?t.createElement(g,i(i({ref:r},u),{},{components:n})):t.createElement(g,i({ref:r},u))}));function m(e,r){var n=arguments,a=r&&r.mdxType;if("string"==typeof e||a){var o=n.length,i=new Array(o);i[0]=d;var c={};for(var l in r)hasOwnProperty.call(r,l)&&(c[l]=r[l]);c.originalType=e,c.mdxType="string"==typeof e?e:a,i[1]=c;for(var p=2;pCron \u8868\u8fbe\u5f0f",id:"129-\u89e3\u6790-cron-\u8868\u8fbe\u5f0f",children:[]},{value:"12.10 BackgroundService \u95f4\u9694\u5b9a\u65f6\u4efb\u52a1",id:"1210-backgroundservice-\u95f4\u9694\u5b9a\u65f6\u4efb\u52a1",children:[]},{value:"12.11 BackgroundService Cron \u5b9a\u65f6\u4efb\u52a1",id:"1211-backgroundservice-cron-\u5b9a\u65f6\u4efb\u52a1",children:[]}],s={toc:u};function d(e){var r=e.components,n=(0,a.Z)(e,i);return(0,o.kt)("wrapper",(0,t.Z)({},s,n,{components:r,mdxType:"MDXLayout"}),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"SpareTime")," \u9759\u6001\u7c7b\u63d0\u4f9b\u4e86\u4e00\u4e9b\u65b9\u6cd5\u65b9\u4fbf\u521d\u59cb\u5316\u548c\u7ba1\u7406\u4efb\u52a1"),(0,o.kt)("h2",{id:"121-\u521d\u59cb\u5316\u4efb\u52a1"},"12.1 \u521d\u59cb\u5316\u4efb\u52a1"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},"// \u5f00\u542f\u95f4\u9694\u4efb\u52a1\nSpareTime.Do(interval, [options]);\n\n// \u5f00\u542f Cron \u8868\u8fbe\u5f0f\u4efb\u52a1\nSpareTime.Do(expression, [options]);\n\n// \u53ea\u6267\u884c\u4e00\u6b21\u4efb\u52a1\nSpareTime.DoOnce(interval, [options]);\n\n// \u5b9e\u73b0\u81ea\u5b9a\u4e49\u4efb\u52a1\nSpareTime.Do(()=>{\n return DateTime.Now.AddMinutes(10);\n},[options]);\n")),(0,o.kt)("h2",{id:"122-\u5b9e\u73b0\u540e\u53f0\u6267\u884c"},"12.2 \u5b9e\u73b0\u540e\u53f0\u6267\u884c"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},"// \u5b9e\u73b0\u540e\u53f0\u6267\u884c\nSpareTime.DoIt(()=>{});\n")),(0,o.kt)("h2",{id:"123-\u5f00\u59cb\u4e00\u4e2a\u4efb\u52a1"},"12.3 \u5f00\u59cb\u4e00\u4e2a\u4efb\u52a1"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},'SpareTime.Start("\u4efb\u52a1\u6807\u8bc6");\n')),(0,o.kt)("h2",{id:"124-\u6682\u505c\u4e00\u4e2a\u4efb\u52a1"},"12.4 \u6682\u505c\u4e00\u4e2a\u4efb\u52a1"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},'SpareTime.Stop("\u4efb\u52a1\u6807\u8bc6");\n// \u8fd8\u53ef\u4ee5\u6807\u8bb0\u4e00\u4e2a\u4efb\u52a1\u6267\u884c\u5931\u8d25\nSpareTime.Stop("\u4efb\u52a1\u6807\u8bc6", true);\n')),(0,o.kt)("h2",{id:"125-\u53d6\u6d88\u4e00\u4e2a\u4efb\u52a1"},"12.5 \u53d6\u6d88\u4e00\u4e2a\u4efb\u52a1"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},'SpareTime.Cancel("\u4efb\u52a1\u540d\u79f0");\n')),(0,o.kt)("h2",{id:"126-\u9500\u6bc1\u6240\u6709\u4efb\u52a1"},"12.6 \u9500\u6bc1\u6240\u6709\u4efb\u52a1"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},"SpareTime.Dispose();\n")),(0,o.kt)("h2",{id:"127-\u83b7\u53d6\u6240\u6709\u4efb\u52a1"},"12.7 \u83b7\u53d6\u6240\u6709\u4efb\u52a1"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},"var workers = SpareTime.GetWorkers();\n")),(0,o.kt)("h2",{id:"128-\u83b7\u53d6\u5355\u4e2a\u4efb\u52a1"},"12.8 \u83b7\u53d6\u5355\u4e2a\u4efb\u52a1"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},'var worker = SpareTime.GetWorker("workerName");\n')),(0,o.kt)("h2",{id:"129-\u89e3\u6790-cron-\u8868\u8fbe\u5f0f"},"12.9 \u89e3\u6790 ",(0,o.kt)("inlineCode",{parentName:"h2"},"Cron")," \u8868\u8fbe\u5f0f"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},'var nextTime = SpareTime.GetCronNextOccurrence("* * * * *");\n')),(0,o.kt)("h2",{id:"1210-backgroundservice-\u95f4\u9694\u5b9a\u65f6\u4efb\u52a1"},"12.10 ",(0,o.kt)("inlineCode",{parentName:"h2"},"BackgroundService")," \u95f4\u9694\u5b9a\u65f6\u4efb\u52a1"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},'// \u95f4\u9694\u6267\u884c\u4efb\u52a1\nawait SpareTime.DoAsync(1000, () =>\n{\n _logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now);\n}, stoppingToken);\n')),(0,o.kt)("h2",{id:"1211-backgroundservice-cron-\u5b9a\u65f6\u4efb\u52a1"},"12.11 ",(0,o.kt)("inlineCode",{parentName:"h2"},"BackgroundService")," ",(0,o.kt)("inlineCode",{parentName:"h2"},"Cron")," \u5b9a\u65f6\u4efb\u52a1"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},' // \u6267\u884c Cron \u8868\u8fbe\u5f0f\u4efb\u52a1\nawait SpareTime.DoAsync("*/5 * * * * *", () =>\n{\n _logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now);\n}, stoppingToken, CronFormat.IncludeSeconds);\n')))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/698c3fb7.1b89fcfc.js b/handbook/build/assets/js/698c3fb7.1b89fcfc.js deleted file mode 100644 index 344edffda68..00000000000 --- a/handbook/build/assets/js/698c3fb7.1b89fcfc.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[4249],{3905:function(t,e,a){a.d(e,{Zo:function(){return s},kt:function(){return u}});var n=a(7294);function r(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function i(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,n)}return a}function l(t){for(var e=1;e=0||(r[a]=t[a]);return r}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(t,a)&&(r[a]=t[a])}return r}var o=n.createContext({}),m=function(t){var e=n.useContext(o),a=e;return t&&(a="function"==typeof t?t(e):l(l({},e),t)),a},s=function(t){var e=m(t.components);return n.createElement(o.Provider,{value:e},t.children)},d={inlineCode:"code",wrapper:function(t){var e=t.children;return n.createElement(n.Fragment,{},e)}},c=n.forwardRef((function(t,e){var a=t.components,r=t.mdxType,i=t.originalType,o=t.parentName,s=p(t,["components","mdxType","originalType","parentName"]),c=m(a),u=r,g=c["".concat(o,".").concat(u)]||c[u]||d[u]||i;return a?n.createElement(g,l(l({ref:e},s),{},{components:a})):n.createElement(g,l({ref:e},s))}));function u(t,e){var a=arguments,r=e&&e.mdxType;if("string"==typeof t||r){var i=a.length,l=new Array(i);l[0]=c;var p={};for(var o in e)hasOwnProperty.call(e,o)&&(p[o]=e[o]);p.originalType=t,p.mdxType="string"==typeof t?t:r,l[1]=p;for(var m=2;mVisual Studio \u96c6\u6210",id:"225-visual-studio-\u96c6\u6210",children:[]},{value:"2.2.6 \u642d\u5efa\u811a\u624b\u67b6",id:"226-\u642d\u5efa\u811a\u624b\u67b6",children:[]},{value:"2.2.7 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"227-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],c={toc:d};function u(t){var e=t.components,a=(0,r.Z)(t,p);return(0,i.kt)("wrapper",(0,n.Z)({},c,a,{components:e,mdxType:"MDXLayout"}),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u8bf4\u660e")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},(0,i.kt)("strong",{parentName:"p"},"\u811a\u624b\u67b6\u4e0d\u662f\u5b89\u88c5\u5728\u9879\u76ee\u4e2d\u7684\uff01")," \u800c\u662f\u901a\u8fc7 ",(0,i.kt)("inlineCode",{parentName:"p"},"CMD")," \u6216 ",(0,i.kt)("inlineCode",{parentName:"p"},"PowerShell")," \u5b89\u88c5\u5230\u64cd\u4f5c\u7cfb\u7edf\u4e2d\u7684\u3002"))),(0,i.kt)("h2",{id:"221-\u811a\u624b\u67b6"},"2.2.1 \u811a\u624b\u67b6"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u5b98\u65b9\u63d0\u4f9b\u4e86\u591a\u79cd ",(0,i.kt)("inlineCode",{parentName:"p"},"Web")," \u5e94\u7528\u7c7b\u578b\u7684\u811a\u624b\u67b6\uff0c\u65b9\u4fbf\u5927\u5bb6\u5feb\u901f\u521b\u5efa\u591a\u5c42\u67b6\u6784\u9879\u76ee\u3002\u76ee\u524d\u652f\u6301\u4ee5\u4e0b\u5e94\u7528\u811a\u624b\u67b6\uff1a"),(0,i.kt)("table",null,(0,i.kt)("thead",{parentName:"table"},(0,i.kt)("tr",{parentName:"thead"},(0,i.kt)("th",{parentName:"tr",align:"center"},"\u6a21\u677f\u7c7b\u578b"),(0,i.kt)("th",{parentName:"tr",align:null},"\u540d\u79f0"),(0,i.kt)("th",{parentName:"tr",align:null},"\u7248\u672c"),(0,i.kt)("th",{parentName:"tr",align:null},"\u5173\u952e\u8bcd"),(0,i.kt)("th",{parentName:"tr",align:null},"\u63cf\u8ff0"))),(0,i.kt)("tbody",{parentName:"table"},(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:"center"},(0,i.kt)("a",{parentName:"td",href:"https://www.nuget.org/packages/Furion.Template.Mvc/"},(0,i.kt)("img",{parentName:"a",src:"https://shields.io/badge/-Nuget-yellow?cacheSeconds=604800",alt:"nuget"}))),(0,i.kt)("td",{parentName:"tr",align:null},"Furion.Template.Mvc"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("a",{parentName:"td",href:"https://www.nuget.org/packages/Furion.Template.Mvc/"},(0,i.kt)("img",{parentName:"a",src:"https://img.shields.io/nuget/v/Furion.Template.Mvc.svg?cacheSeconds=10800",alt:"nuget"}))),(0,i.kt)("td",{parentName:"tr",align:null},"\ud83d\udc49 ",(0,i.kt)("strong",{parentName:"td"},"furionmvc")),(0,i.kt)("td",{parentName:"tr",align:null},"Mvc \u6a21\u677f")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:"center"},(0,i.kt)("a",{parentName:"td",href:"https://www.nuget.org/packages/Furion.Template.Api/"},(0,i.kt)("img",{parentName:"a",src:"https://shields.io/badge/-Nuget-yellow?cacheSeconds=604800",alt:"nuget"}))),(0,i.kt)("td",{parentName:"tr",align:null},"Furion.Template.Api"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("a",{parentName:"td",href:"https://www.nuget.org/packages/Furion.Template.Api/"},(0,i.kt)("img",{parentName:"a",src:"https://img.shields.io/nuget/v/Furion.Template.Api.svg?cacheSeconds=10800",alt:"nuget"}))),(0,i.kt)("td",{parentName:"tr",align:null},"\ud83d\udc49 ",(0,i.kt)("strong",{parentName:"td"},"furionapi")),(0,i.kt)("td",{parentName:"tr",align:null},"WebApi \u6a21\u677f")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:"center"},(0,i.kt)("a",{parentName:"td",href:"https://www.nuget.org/packages/Furion.Template.App/"},(0,i.kt)("img",{parentName:"a",src:"https://shields.io/badge/-Nuget-yellow?cacheSeconds=604800",alt:"nuget"}))),(0,i.kt)("td",{parentName:"tr",align:null},"Furion.Template.App"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("a",{parentName:"td",href:"https://www.nuget.org/packages/Furion.Template.App/"},(0,i.kt)("img",{parentName:"a",src:"https://img.shields.io/nuget/v/Furion.Template.App.svg?cacheSeconds=10800",alt:"nuget"}))),(0,i.kt)("td",{parentName:"tr",align:null},"\ud83d\udc49 ",(0,i.kt)("strong",{parentName:"td"},"furionapp")),(0,i.kt)("td",{parentName:"tr",align:null},"Mvc/WebApi \u6a21\u677f")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:"center"},(0,i.kt)("a",{parentName:"td",href:"https://www.nuget.org/packages/Furion.Template.Razor/"},(0,i.kt)("img",{parentName:"a",src:"https://shields.io/badge/-Nuget-yellow?cacheSeconds=604800",alt:"nuget"}))),(0,i.kt)("td",{parentName:"tr",align:null},"Furion.Template.Razor"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("a",{parentName:"td",href:"https://www.nuget.org/packages/Furion.Template.Razor/"},(0,i.kt)("img",{parentName:"a",src:"https://img.shields.io/nuget/v/Furion.Template.Razor.svg?cacheSeconds=10800",alt:"nuget"}))),(0,i.kt)("td",{parentName:"tr",align:null},"\ud83d\udc49 ",(0,i.kt)("strong",{parentName:"td"},"furionrazor")),(0,i.kt)("td",{parentName:"tr",align:null},"RazorPages \u6a21\u677f")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:"center"},(0,i.kt)("a",{parentName:"td",href:"https://www.nuget.org/packages/Furion.Template.RazorWithWebApi/"},(0,i.kt)("img",{parentName:"a",src:"https://shields.io/badge/-Nuget-yellow?cacheSeconds=604800",alt:"nuget"}))),(0,i.kt)("td",{parentName:"tr",align:null},"Furion.Template.RazorWithWebApi"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("a",{parentName:"td",href:"https://www.nuget.org/packages/Furion.Template.RazorWithWebApi/"},(0,i.kt)("img",{parentName:"a",src:"https://img.shields.io/nuget/v/Furion.Template.RazorWithWebApi.svg?cacheSeconds=10800",alt:"nuget"}))),(0,i.kt)("td",{parentName:"tr",align:null},"\ud83d\udc49 ",(0,i.kt)("strong",{parentName:"td"},"furionrazorapi")),(0,i.kt)("td",{parentName:"tr",align:null},"RazorPages/WebApi \u6a21\u677f")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:"center"},(0,i.kt)("a",{parentName:"td",href:"https://www.nuget.org/packages/Furion.Template.Blazor/"},(0,i.kt)("img",{parentName:"a",src:"https://shields.io/badge/-Nuget-yellow?cacheSeconds=604800",alt:"nuget"}))),(0,i.kt)("td",{parentName:"tr",align:null},"Furion.Template.Blazor"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("a",{parentName:"td",href:"https://www.nuget.org/packages/Furion.Template.Blazor/"},(0,i.kt)("img",{parentName:"a",src:"https://img.shields.io/nuget/v/Furion.Template.Blazor.svg?cacheSeconds=10800",alt:"nuget"}))),(0,i.kt)("td",{parentName:"tr",align:null},"\ud83d\udc49 ",(0,i.kt)("strong",{parentName:"td"},"furionblazor")),(0,i.kt)("td",{parentName:"tr",align:null},"Blazor \u6a21\u677f")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:"center"},(0,i.kt)("a",{parentName:"td",href:"https://www.nuget.org/packages/Furion.Template.BlazorWithWebApi/"},(0,i.kt)("img",{parentName:"a",src:"https://shields.io/badge/-Nuget-yellow?cacheSeconds=604800",alt:"nuget"}))),(0,i.kt)("td",{parentName:"tr",align:null},"Furion.Template.BlazorWithWebApi"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("a",{parentName:"td",href:"https://www.nuget.org/packages/Furion.Template.BlazorWithWebApi/"},(0,i.kt)("img",{parentName:"a",src:"https://img.shields.io/nuget/v/Furion.Template.BlazorWithWebApi.svg?cacheSeconds=10800",alt:"nuget"}))),(0,i.kt)("td",{parentName:"tr",align:null},"\ud83d\udc49 ",(0,i.kt)("strong",{parentName:"td"},"furionblazorapi")),(0,i.kt)("td",{parentName:"tr",align:null},"Blazor/WebApi \u6a21\u677f")))),(0,i.kt)("h2",{id:"222-\u5b89\u88c5\u811a\u624b\u67b6"},"2.2.2 \u5b89\u88c5\u811a\u624b\u67b6"),(0,i.kt)("p",null,"\u6253\u5f00 ",(0,i.kt)("inlineCode",{parentName:"p"},"CMD")," \u6216 ",(0,i.kt)("inlineCode",{parentName:"p"},"Powershell")," \u6267\u884c\u6a21\u677f\u5b89\u88c5\u547d\u4ee4\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"dotnet new --install Furion.Template.Mvc::2.18.7\n")),(0,i.kt)("h2",{id:"223-\u4f7f\u7528\u811a\u624b\u67b6"},"2.2.3 \u4f7f\u7528\u811a\u624b\u67b6"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"dotnet new furionmvc -n \u9879\u76ee\u540d\u79f0\n")),(0,i.kt)("p",null,"\u8fd9\u6837\u5c31\u53ef\u4ee5\u751f\u6210\u9879\u76ee\u4ee3\u7801\u4e86\uff0c",(0,i.kt)("strong",{parentName:"p"},"\u751f\u6210\u4e4b\u540e\u63a8\u8350\u5c06\u6240\u6709\u7684 ",(0,i.kt)("inlineCode",{parentName:"strong"},"nuget")," \u5305\u66f4\u65b0\u5230\u6700\u65b0\u7248\u672c\u3002")),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u63d0\u9192")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},(0,i.kt)("inlineCode",{parentName:"p"},"furionmvc")," \u5bf9\u5e94\u7684\u662f\u4e0a\u9762\u5217\u8868\u7684 ",(0,i.kt)("inlineCode",{parentName:"p"},"\u5173\u952e\u5b57"),"\uff0c\u6211\u4eec\u4e5f\u53ef\u4ee5\u901a\u8fc7 ",(0,i.kt)("inlineCode",{parentName:"p"},"dotnet new --list")," \u67e5\u770b\u3002"),(0,i.kt)("p",{parentName:"div"},"\u60f3\u4e86\u89e3\u66f4\u591a\u53ef\u4ee5\u4f7f\u7528 ",(0,i.kt)("inlineCode",{parentName:"p"},"dotnet new \u5173\u952e\u5b57 --help")," \u67e5\u770b\u66f4\u591a\u53c2\u6570\u3002"))),(0,i.kt)("h2",{id:"224-\u811a\u624b\u67b6\u66f4\u65b0"},"2.2.4 \u811a\u624b\u67b6\u66f4\u65b0"),(0,i.kt)("p",null,"\u53ea\u9700\u8981\u91cd\u65b0\u5b89\u88c5\u6700\u65b0\u7248\u66ff\u6362\u5373\u53ef\uff0c\u5982\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"dotnet new --install Furion.Template.Mvc::2.x.x\n")),(0,i.kt)("p",null,"\u4e0d\u5e26\u7248\u672c\u53f7\u603b\u662f\u5b89\u88c5\u6700\u65b0\u7684\u7248\u672c\u3002"),(0,i.kt)("h2",{id:"225-visual-studio-\u96c6\u6210"},"2.2.5 ",(0,i.kt)("inlineCode",{parentName:"h2"},"Visual Studio")," \u96c6\u6210"),(0,i.kt)("p",null,"\u901a\u8fc7\u547d\u4ee4\u5b89\u88c5\u811a\u624b\u67b6\u540e\uff0c\u5347\u7ea7 ",(0,i.kt)("inlineCode",{parentName:"p"},"Visual Studio")," \u5230\u6700\u65b0\u7248\u53ef\u4f7f\u7528\u53ef\u89c6\u5316\u65b9\u5f0f\u521b\u5efa\u54e6\u3002"),(0,i.kt)("img",{src:(0,l.Z)("img/ksh.png")}),(0,i.kt)("h2",{id:"226-\u642d\u5efa\u811a\u624b\u67b6"},"2.2.6 \u642d\u5efa\u811a\u624b\u67b6"),(0,i.kt)("p",null,"\u811a\u624b\u67b6\u53ef\u4ee5\u6781\u5927\u7684\u63d0\u9ad8\u6211\u4eec\u642d\u5efa\u65b0\u9879\u76ee\u7684\u901f\u5ea6\uff0c\u63a8\u8350\u4e24\u7bc7\u6587\u7ae0\u7ed9\u5927\u5bb6\u5b66\u4e60\uff1a"),(0,i.kt)("p",null,(0,i.kt)("a",{parentName:"p",href:"https://www.cnblogs.com/laozhang-is-phi/p/10205495.html"},"https://www.cnblogs.com/laozhang-is-phi/p/10205495.html")),(0,i.kt)("p",null,(0,i.kt)("a",{parentName:"p",href:"https://www.cnblogs.com/catcher1994/p/10061470.html"},"https://www.cnblogs.com/catcher1994/p/10061470.html")),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"\u63a8\u8350\u76f4\u63a5\u62f7\u8d1d ",(0,i.kt)("inlineCode",{parentName:"strong"},"Furion")," \u811a\u624b\u67b6\u6587\u4ef6\u5939\u8fdb\u884c\u4fee\u6539\uff0c\u53ef\u907f\u514d\u5f88\u591a\u95ee\u9898\u3002")),(0,i.kt)("p",null,(0,i.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/tree/master/templates"},"Furion \u811a\u624b\u67b6\u6e90\u7801")),(0,i.kt)("h2",{id:"227-\u53cd\u9988\u4e0e\u5efa\u8bae"},"2.2.7 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,i.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))),(0,i.kt)("hr",null),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e86\u89e3\u66f4\u591a")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u60f3\u4e86\u89e3\u66f4\u591a ",(0,i.kt)("inlineCode",{parentName:"p"},"\u6a21\u677f\u77e5\u8bc6")," \u77e5\u8bc6\u53ef\u67e5\u9605 ",(0,i.kt)("a",{parentName:"p",href:"https://docs.microsoft.com/zh-cn/dotnet/core/tools/dotnet-new"},"dotnet-new \u6a21\u677f")," \u7ae0\u8282\u3002"))))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/698c3fb7.7688c948.js b/handbook/build/assets/js/698c3fb7.7688c948.js new file mode 100644 index 00000000000..92f187e6f0a --- /dev/null +++ b/handbook/build/assets/js/698c3fb7.7688c948.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[4249],{3905:function(t,e,a){a.d(e,{Zo:function(){return s},kt:function(){return u}});var n=a(7294);function r(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function i(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,n)}return a}function l(t){for(var e=1;e=0||(r[a]=t[a]);return r}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(t,a)&&(r[a]=t[a])}return r}var o=n.createContext({}),m=function(t){var e=n.useContext(o),a=e;return t&&(a="function"==typeof t?t(e):l(l({},e),t)),a},s=function(t){var e=m(t.components);return n.createElement(o.Provider,{value:e},t.children)},d={inlineCode:"code",wrapper:function(t){var e=t.children;return n.createElement(n.Fragment,{},e)}},c=n.forwardRef((function(t,e){var a=t.components,r=t.mdxType,i=t.originalType,o=t.parentName,s=p(t,["components","mdxType","originalType","parentName"]),c=m(a),u=r,g=c["".concat(o,".").concat(u)]||c[u]||d[u]||i;return a?n.createElement(g,l(l({ref:e},s),{},{components:a})):n.createElement(g,l({ref:e},s))}));function u(t,e){var a=arguments,r=e&&e.mdxType;if("string"==typeof t||r){var i=a.length,l=new Array(i);l[0]=c;var p={};for(var o in e)hasOwnProperty.call(e,o)&&(p[o]=e[o]);p.originalType=t,p.mdxType="string"==typeof t?t:r,l[1]=p;for(var m=2;mVisual Studio \u96c6\u6210",id:"225-visual-studio-\u96c6\u6210",children:[]},{value:"2.2.6 \u642d\u5efa\u811a\u624b\u67b6",id:"226-\u642d\u5efa\u811a\u624b\u67b6",children:[]},{value:"2.2.7 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"227-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],c={toc:d};function u(t){var e=t.components,a=(0,r.Z)(t,p);return(0,i.kt)("wrapper",(0,n.Z)({},c,a,{components:e,mdxType:"MDXLayout"}),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u8bf4\u660e")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},(0,i.kt)("strong",{parentName:"p"},"\u811a\u624b\u67b6\u4e0d\u662f\u5b89\u88c5\u5728\u9879\u76ee\u4e2d\u7684\uff01")," \u800c\u662f\u901a\u8fc7 ",(0,i.kt)("inlineCode",{parentName:"p"},"CMD")," \u6216 ",(0,i.kt)("inlineCode",{parentName:"p"},"PowerShell")," \u5b89\u88c5\u5230\u64cd\u4f5c\u7cfb\u7edf\u4e2d\u7684\u3002"))),(0,i.kt)("h2",{id:"221-\u811a\u624b\u67b6"},"2.2.1 \u811a\u624b\u67b6"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u5b98\u65b9\u63d0\u4f9b\u4e86\u591a\u79cd ",(0,i.kt)("inlineCode",{parentName:"p"},"Web")," \u5e94\u7528\u7c7b\u578b\u7684\u811a\u624b\u67b6\uff0c\u65b9\u4fbf\u5927\u5bb6\u5feb\u901f\u521b\u5efa\u591a\u5c42\u67b6\u6784\u9879\u76ee\u3002\u76ee\u524d\u652f\u6301\u4ee5\u4e0b\u5e94\u7528\u811a\u624b\u67b6\uff1a"),(0,i.kt)("table",null,(0,i.kt)("thead",{parentName:"table"},(0,i.kt)("tr",{parentName:"thead"},(0,i.kt)("th",{parentName:"tr",align:"center"},"\u6a21\u677f\u7c7b\u578b"),(0,i.kt)("th",{parentName:"tr",align:null},"\u540d\u79f0"),(0,i.kt)("th",{parentName:"tr",align:null},"\u7248\u672c"),(0,i.kt)("th",{parentName:"tr",align:null},"\u5173\u952e\u8bcd"),(0,i.kt)("th",{parentName:"tr",align:null},"\u63cf\u8ff0"))),(0,i.kt)("tbody",{parentName:"table"},(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:"center"},(0,i.kt)("a",{parentName:"td",href:"https://www.nuget.org/packages/Furion.Template.Mvc/"},(0,i.kt)("img",{parentName:"a",src:"https://shields.io/badge/-Nuget-yellow?cacheSeconds=604800",alt:"nuget"}))),(0,i.kt)("td",{parentName:"tr",align:null},"Furion.Template.Mvc"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("a",{parentName:"td",href:"https://www.nuget.org/packages/Furion.Template.Mvc/"},(0,i.kt)("img",{parentName:"a",src:"https://img.shields.io/nuget/v/Furion.Template.Mvc.svg?cacheSeconds=10800",alt:"nuget"}))),(0,i.kt)("td",{parentName:"tr",align:null},"\ud83d\udc49 ",(0,i.kt)("strong",{parentName:"td"},"furionmvc")),(0,i.kt)("td",{parentName:"tr",align:null},"Mvc \u6a21\u677f")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:"center"},(0,i.kt)("a",{parentName:"td",href:"https://www.nuget.org/packages/Furion.Template.Api/"},(0,i.kt)("img",{parentName:"a",src:"https://shields.io/badge/-Nuget-yellow?cacheSeconds=604800",alt:"nuget"}))),(0,i.kt)("td",{parentName:"tr",align:null},"Furion.Template.Api"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("a",{parentName:"td",href:"https://www.nuget.org/packages/Furion.Template.Api/"},(0,i.kt)("img",{parentName:"a",src:"https://img.shields.io/nuget/v/Furion.Template.Api.svg?cacheSeconds=10800",alt:"nuget"}))),(0,i.kt)("td",{parentName:"tr",align:null},"\ud83d\udc49 ",(0,i.kt)("strong",{parentName:"td"},"furionapi")),(0,i.kt)("td",{parentName:"tr",align:null},"WebApi \u6a21\u677f")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:"center"},(0,i.kt)("a",{parentName:"td",href:"https://www.nuget.org/packages/Furion.Template.App/"},(0,i.kt)("img",{parentName:"a",src:"https://shields.io/badge/-Nuget-yellow?cacheSeconds=604800",alt:"nuget"}))),(0,i.kt)("td",{parentName:"tr",align:null},"Furion.Template.App"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("a",{parentName:"td",href:"https://www.nuget.org/packages/Furion.Template.App/"},(0,i.kt)("img",{parentName:"a",src:"https://img.shields.io/nuget/v/Furion.Template.App.svg?cacheSeconds=10800",alt:"nuget"}))),(0,i.kt)("td",{parentName:"tr",align:null},"\ud83d\udc49 ",(0,i.kt)("strong",{parentName:"td"},"furionapp")),(0,i.kt)("td",{parentName:"tr",align:null},"Mvc/WebApi \u6a21\u677f")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:"center"},(0,i.kt)("a",{parentName:"td",href:"https://www.nuget.org/packages/Furion.Template.Razor/"},(0,i.kt)("img",{parentName:"a",src:"https://shields.io/badge/-Nuget-yellow?cacheSeconds=604800",alt:"nuget"}))),(0,i.kt)("td",{parentName:"tr",align:null},"Furion.Template.Razor"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("a",{parentName:"td",href:"https://www.nuget.org/packages/Furion.Template.Razor/"},(0,i.kt)("img",{parentName:"a",src:"https://img.shields.io/nuget/v/Furion.Template.Razor.svg?cacheSeconds=10800",alt:"nuget"}))),(0,i.kt)("td",{parentName:"tr",align:null},"\ud83d\udc49 ",(0,i.kt)("strong",{parentName:"td"},"furionrazor")),(0,i.kt)("td",{parentName:"tr",align:null},"RazorPages \u6a21\u677f")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:"center"},(0,i.kt)("a",{parentName:"td",href:"https://www.nuget.org/packages/Furion.Template.RazorWithWebApi/"},(0,i.kt)("img",{parentName:"a",src:"https://shields.io/badge/-Nuget-yellow?cacheSeconds=604800",alt:"nuget"}))),(0,i.kt)("td",{parentName:"tr",align:null},"Furion.Template.RazorWithWebApi"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("a",{parentName:"td",href:"https://www.nuget.org/packages/Furion.Template.RazorWithWebApi/"},(0,i.kt)("img",{parentName:"a",src:"https://img.shields.io/nuget/v/Furion.Template.RazorWithWebApi.svg?cacheSeconds=10800",alt:"nuget"}))),(0,i.kt)("td",{parentName:"tr",align:null},"\ud83d\udc49 ",(0,i.kt)("strong",{parentName:"td"},"furionrazorapi")),(0,i.kt)("td",{parentName:"tr",align:null},"RazorPages/WebApi \u6a21\u677f")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:"center"},(0,i.kt)("a",{parentName:"td",href:"https://www.nuget.org/packages/Furion.Template.Blazor/"},(0,i.kt)("img",{parentName:"a",src:"https://shields.io/badge/-Nuget-yellow?cacheSeconds=604800",alt:"nuget"}))),(0,i.kt)("td",{parentName:"tr",align:null},"Furion.Template.Blazor"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("a",{parentName:"td",href:"https://www.nuget.org/packages/Furion.Template.Blazor/"},(0,i.kt)("img",{parentName:"a",src:"https://img.shields.io/nuget/v/Furion.Template.Blazor.svg?cacheSeconds=10800",alt:"nuget"}))),(0,i.kt)("td",{parentName:"tr",align:null},"\ud83d\udc49 ",(0,i.kt)("strong",{parentName:"td"},"furionblazor")),(0,i.kt)("td",{parentName:"tr",align:null},"Blazor \u6a21\u677f")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:"center"},(0,i.kt)("a",{parentName:"td",href:"https://www.nuget.org/packages/Furion.Template.BlazorWithWebApi/"},(0,i.kt)("img",{parentName:"a",src:"https://shields.io/badge/-Nuget-yellow?cacheSeconds=604800",alt:"nuget"}))),(0,i.kt)("td",{parentName:"tr",align:null},"Furion.Template.BlazorWithWebApi"),(0,i.kt)("td",{parentName:"tr",align:null},(0,i.kt)("a",{parentName:"td",href:"https://www.nuget.org/packages/Furion.Template.BlazorWithWebApi/"},(0,i.kt)("img",{parentName:"a",src:"https://img.shields.io/nuget/v/Furion.Template.BlazorWithWebApi.svg?cacheSeconds=10800",alt:"nuget"}))),(0,i.kt)("td",{parentName:"tr",align:null},"\ud83d\udc49 ",(0,i.kt)("strong",{parentName:"td"},"furionblazorapi")),(0,i.kt)("td",{parentName:"tr",align:null},"Blazor/WebApi \u6a21\u677f")))),(0,i.kt)("h2",{id:"222-\u5b89\u88c5\u811a\u624b\u67b6"},"2.2.2 \u5b89\u88c5\u811a\u624b\u67b6"),(0,i.kt)("p",null,"\u6253\u5f00 ",(0,i.kt)("inlineCode",{parentName:"p"},"CMD")," \u6216 ",(0,i.kt)("inlineCode",{parentName:"p"},"Powershell")," \u6267\u884c\u6a21\u677f\u5b89\u88c5\u547d\u4ee4\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"dotnet new --install Furion.Template.Mvc::2.19.0\n")),(0,i.kt)("h2",{id:"223-\u4f7f\u7528\u811a\u624b\u67b6"},"2.2.3 \u4f7f\u7528\u811a\u624b\u67b6"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"dotnet new furionmvc -n \u9879\u76ee\u540d\u79f0\n")),(0,i.kt)("p",null,"\u8fd9\u6837\u5c31\u53ef\u4ee5\u751f\u6210\u9879\u76ee\u4ee3\u7801\u4e86\uff0c",(0,i.kt)("strong",{parentName:"p"},"\u751f\u6210\u4e4b\u540e\u63a8\u8350\u5c06\u6240\u6709\u7684 ",(0,i.kt)("inlineCode",{parentName:"strong"},"nuget")," \u5305\u66f4\u65b0\u5230\u6700\u65b0\u7248\u672c\u3002")),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u63d0\u9192")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},(0,i.kt)("inlineCode",{parentName:"p"},"furionmvc")," \u5bf9\u5e94\u7684\u662f\u4e0a\u9762\u5217\u8868\u7684 ",(0,i.kt)("inlineCode",{parentName:"p"},"\u5173\u952e\u5b57"),"\uff0c\u6211\u4eec\u4e5f\u53ef\u4ee5\u901a\u8fc7 ",(0,i.kt)("inlineCode",{parentName:"p"},"dotnet new --list")," \u67e5\u770b\u3002"),(0,i.kt)("p",{parentName:"div"},"\u60f3\u4e86\u89e3\u66f4\u591a\u53ef\u4ee5\u4f7f\u7528 ",(0,i.kt)("inlineCode",{parentName:"p"},"dotnet new \u5173\u952e\u5b57 --help")," \u67e5\u770b\u66f4\u591a\u53c2\u6570\u3002"))),(0,i.kt)("h2",{id:"224-\u811a\u624b\u67b6\u66f4\u65b0"},"2.2.4 \u811a\u624b\u67b6\u66f4\u65b0"),(0,i.kt)("p",null,"\u53ea\u9700\u8981\u91cd\u65b0\u5b89\u88c5\u6700\u65b0\u7248\u66ff\u6362\u5373\u53ef\uff0c\u5982\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"dotnet new --install Furion.Template.Mvc::2.x.x\n")),(0,i.kt)("p",null,"\u4e0d\u5e26\u7248\u672c\u53f7\u603b\u662f\u5b89\u88c5\u6700\u65b0\u7684\u7248\u672c\u3002"),(0,i.kt)("h2",{id:"225-visual-studio-\u96c6\u6210"},"2.2.5 ",(0,i.kt)("inlineCode",{parentName:"h2"},"Visual Studio")," \u96c6\u6210"),(0,i.kt)("p",null,"\u901a\u8fc7\u547d\u4ee4\u5b89\u88c5\u811a\u624b\u67b6\u540e\uff0c\u5347\u7ea7 ",(0,i.kt)("inlineCode",{parentName:"p"},"Visual Studio")," \u5230\u6700\u65b0\u7248\u53ef\u4f7f\u7528\u53ef\u89c6\u5316\u65b9\u5f0f\u521b\u5efa\u54e6\u3002"),(0,i.kt)("img",{src:(0,l.Z)("img/ksh.png")}),(0,i.kt)("h2",{id:"226-\u642d\u5efa\u811a\u624b\u67b6"},"2.2.6 \u642d\u5efa\u811a\u624b\u67b6"),(0,i.kt)("p",null,"\u811a\u624b\u67b6\u53ef\u4ee5\u6781\u5927\u7684\u63d0\u9ad8\u6211\u4eec\u642d\u5efa\u65b0\u9879\u76ee\u7684\u901f\u5ea6\uff0c\u63a8\u8350\u4e24\u7bc7\u6587\u7ae0\u7ed9\u5927\u5bb6\u5b66\u4e60\uff1a"),(0,i.kt)("p",null,(0,i.kt)("a",{parentName:"p",href:"https://www.cnblogs.com/laozhang-is-phi/p/10205495.html"},"https://www.cnblogs.com/laozhang-is-phi/p/10205495.html")),(0,i.kt)("p",null,(0,i.kt)("a",{parentName:"p",href:"https://www.cnblogs.com/catcher1994/p/10061470.html"},"https://www.cnblogs.com/catcher1994/p/10061470.html")),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"\u63a8\u8350\u76f4\u63a5\u62f7\u8d1d ",(0,i.kt)("inlineCode",{parentName:"strong"},"Furion")," \u811a\u624b\u67b6\u6587\u4ef6\u5939\u8fdb\u884c\u4fee\u6539\uff0c\u53ef\u907f\u514d\u5f88\u591a\u95ee\u9898\u3002")),(0,i.kt)("p",null,(0,i.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/tree/master/templates"},"Furion \u811a\u624b\u67b6\u6e90\u7801")),(0,i.kt)("h2",{id:"227-\u53cd\u9988\u4e0e\u5efa\u8bae"},"2.2.7 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,i.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))),(0,i.kt)("hr",null),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e86\u89e3\u66f4\u591a")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u60f3\u4e86\u89e3\u66f4\u591a ",(0,i.kt)("inlineCode",{parentName:"p"},"\u6a21\u677f\u77e5\u8bc6")," \u77e5\u8bc6\u53ef\u67e5\u9605 ",(0,i.kt)("a",{parentName:"p",href:"https://docs.microsoft.com/zh-cn/dotnet/core/tools/dotnet-new"},"dotnet-new \u6a21\u677f")," \u7ae0\u8282\u3002"))))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/6b7b862c.b5edbbee.js b/handbook/build/assets/js/6b7b862c.b5edbbee.js new file mode 100644 index 00000000000..6589ea41d58 --- /dev/null +++ b/handbook/build/assets/js/6b7b862c.b5edbbee.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[6366],{3905:function(e,n,a){a.d(n,{Zo:function(){return p},kt:function(){return l}});var t=a(7294);function r(e,n,a){return n in e?Object.defineProperty(e,n,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[n]=a,e}function s(e,n){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n&&(t=t.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),a.push.apply(a,t)}return a}function o(e){for(var n=1;n=0||(r[a]=e[a]);return r}(e,n);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(t=0;t=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var d=t.createContext({}),u=function(e){var n=t.useContext(d),a=n;return e&&(a="function"==typeof e?e(n):o(o({},n),e)),a},p=function(e){var n=u(e.components);return t.createElement(d.Provider,{value:n},e.children)},c={inlineCode:"code",wrapper:function(e){var n=e.children;return t.createElement(t.Fragment,{},n)}},m=t.forwardRef((function(e,n){var a=e.components,r=e.mdxType,s=e.originalType,d=e.parentName,p=i(e,["components","mdxType","originalType","parentName"]),m=u(a),l=r,w=m["".concat(d,".").concat(l)]||m[l]||c[l]||s;return a?t.createElement(w,o(o({ref:n},p),{},{components:a})):t.createElement(w,o({ref:n},p))}));function l(e,n){var a=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var s=a.length,o=new Array(s);o[0]=m;var i={};for(var d in n)hasOwnProperty.call(n,d)&&(i[d]=n[d]);i.originalType=e,i.mdxType="string"==typeof e?e:r,o[1]=i;for(var u=2;u { user, user2 });\n\n// \u793a\u4f8b\u4e09\nrepository.Update(new[] {user, user2 });\n\n// ==== \u5f02\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nawait repository.UpdateAsync(user, user2);\n\n// \u793a\u4f8b\u4e8c\nawait repository.UpdateAsync(new List { user, user2 });\n\n// \u793a\u4f8b\u4e09\nawait repository.UpdateAsync(new[] {user, user2 });\n")),(0,s.kt)("h2",{id:"9614-\u66f4\u65b0\u591a\u6761\u8bb0\u5f55\uff08\u7acb\u5373\u63d0\u4ea4\uff09"},"9.6.14 \u66f4\u65b0\u591a\u6761\u8bb0\u5f55\uff08\u7acb\u5373\u63d0\u4ea4\uff09"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-cs"},"// ==== \u540c\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nrepository.UpdateNow(user, user2);\n\n// \u793a\u4f8b\u4e8c\nrepository.UpdateNow(new List { user, user2 });\n\n// \u793a\u4f8b\u4e09\nrepository.UpdateNow(new[] {user, user2 });\n\n// ==== \u5f02\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nawait repository.UpdateNowAsync(user, user2);\n\n// \u793a\u4f8b\u4e8c\nawait repository.UpdateNowAsync(new List { user, user2 });\n\n// \u793a\u4f8b\u4e09\nawait repository.UpdateNowAsync(new[] {user, user2 });\n")),(0,s.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,s.kt)("div",{parentName:"div",className:"admonition-heading"},(0,s.kt)("h5",{parentName:"div"},(0,s.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,s.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,s.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u5c0f\u77e5\u8bc6")),(0,s.kt)("div",{parentName:"div",className:"admonition-content"},(0,s.kt)("p",{parentName:"div"},"\u6240\u6709\u5e26 ",(0,s.kt)("inlineCode",{parentName:"p"},"Now")," \u7ed3\u5c3e\u7684\u8868\u793a\u7acb\u5373\u63d0\u4ea4\u5230\u6570\u636e\u5e93\uff0c\u4e5f\u5c31\u662f\u7acb\u5373\u8c03\u7528 ",(0,s.kt)("inlineCode",{parentName:"p"},"SaveChanges")," \u6216 ",(0,s.kt)("inlineCode",{parentName:"p"},"SaveChangesAsync"),"\u3002"))),(0,s.kt)("h2",{id:"9615-\u5ffd\u7565\u7a7a\u503c\u66f4\u65b0"},"9.6.15 \u5ffd\u7565\u7a7a\u503c\u66f4\u65b0"),(0,s.kt)("p",null,"\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c",(0,s.kt)("inlineCode",{parentName:"p"},"EFCore")," \u66f4\u65b0\u4f1a\u66f4\u65b0\u5168\u90e8\u5217\uff08\u9664\u5b9e\u4f53\u8ddf\u8e2a\u65b9\u5f0f\u4ee5\u5916\uff09\uff0c\u6709\u4e9b\u65f6\u5019\u6211\u4eec\u5e0c\u671b ",(0,s.kt)("inlineCode",{parentName:"p"},"Null")," \u503c\u65e0\u9700\u66f4\u65b0\uff0c\u8fd9\u662f\u6211\u4eec\u53ea\u9700\u8981\u5728\u66f4\u65b0\u65f6\u5019\u914d\u7f6e ",(0,s.kt)("inlineCode",{parentName:"p"},"ignoreNullValues")," \u53c2\u6570\u5373\u53ef\uff0c\u5982\uff1a"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-cs"},"repository.Update(entity, ignoreNullValues: true);\n")),(0,s.kt)("p",null,"\u4e5f\u53ef\u4ee5\u5168\u5c40\u914d\u7f6e\uff0c\u5728 ",(0,s.kt)("inlineCode",{parentName:"p"},"AppDbContext")," \u7684\u6d3e\u751f\u7c7b\u7684\u6784\u9020\u51fd\u6570\u4e2d\u542f\u7528\u5373\u53ef\uff1a"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{11}","{11}":!0},'using Furion.DatabaseAccessor;\nusing Microsoft.EntityFrameworkCore;\n\nnamespace Furion.EntityFramework.Core\n{\n [AppDbContext("Sqlite3ConnectionString", DbProvider.Sqlite)]\n public class DefaultDbContext : AppDbContext\n {\n public DefaultDbContext(DbContextOptions options) : base(options)\n {\n InsertOrUpdateIgnoreNullValues = true;\n }\n }\n}\n')),(0,s.kt)("h2",{id:"9616-\u53cd\u9988\u4e0e\u5efa\u8bae"},"9.6.16 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,s.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,s.kt)("div",{parentName:"div",className:"admonition-heading"},(0,s.kt)("h5",{parentName:"div"},(0,s.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,s.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,s.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,s.kt)("div",{parentName:"div",className:"admonition-content"},(0,s.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,s.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/6b7b862c.db3b00ec.js b/handbook/build/assets/js/6b7b862c.db3b00ec.js deleted file mode 100644 index 7c69819539f..00000000000 --- a/handbook/build/assets/js/6b7b862c.db3b00ec.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[6366],{3905:function(e,n,a){a.d(n,{Zo:function(){return p},kt:function(){return l}});var t=a(7294);function r(e,n,a){return n in e?Object.defineProperty(e,n,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[n]=a,e}function s(e,n){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n&&(t=t.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),a.push.apply(a,t)}return a}function o(e){for(var n=1;n=0||(r[a]=e[a]);return r}(e,n);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(t=0;t=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var d=t.createContext({}),u=function(e){var n=t.useContext(d),a=n;return e&&(a="function"==typeof e?e(n):o(o({},n),e)),a},p=function(e){var n=u(e.components);return t.createElement(d.Provider,{value:n},e.children)},c={inlineCode:"code",wrapper:function(e){var n=e.children;return t.createElement(t.Fragment,{},n)}},m=t.forwardRef((function(e,n){var a=e.components,r=e.mdxType,s=e.originalType,d=e.parentName,p=i(e,["components","mdxType","originalType","parentName"]),m=u(a),l=r,w=m["".concat(d,".").concat(l)]||m[l]||c[l]||s;return a?t.createElement(w,o(o({ref:n},p),{},{components:a})):t.createElement(w,o({ref:n},p))}));function l(e,n){var a=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var s=a.length,o=new Array(s);o[0]=m;var i={};for(var d in n)hasOwnProperty.call(n,d)&&(i[d]=n[d]);i.originalType=e,i.mdxType="string"==typeof e?e:r,o[1]=i;for(var u=2;u { user, user2 });\n\n// \u793a\u4f8b\u4e09\nrepository.Update(new[] {user, user2 });\n\n// ==== \u5f02\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nawait repository.UpdateAsync(user, user2);\n\n// \u793a\u4f8b\u4e8c\nawait repository.UpdateAsync(new List { user, user2 });\n\n// \u793a\u4f8b\u4e09\nawait repository.UpdateAsync(new[] {user, user2 });\n")),(0,s.kt)("h2",{id:"9614-\u66f4\u65b0\u591a\u6761\u8bb0\u5f55\uff08\u7acb\u5373\u63d0\u4ea4\uff09"},"9.6.14 \u66f4\u65b0\u591a\u6761\u8bb0\u5f55\uff08\u7acb\u5373\u63d0\u4ea4\uff09"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-cs"},"// ==== \u540c\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nrepository.UpdateNow(user, user2);\n\n// \u793a\u4f8b\u4e8c\nrepository.UpdateNow(new List { user, user2 });\n\n// \u793a\u4f8b\u4e09\nrepository.UpdateNow(new[] {user, user2 });\n\n// ==== \u5f02\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nawait repository.UpdateNowAsync(user, user2);\n\n// \u793a\u4f8b\u4e8c\nawait repository.UpdateNowAsync(new List { user, user2 });\n\n// \u793a\u4f8b\u4e09\nawait repository.UpdateNowAsync(new[] {user, user2 });\n")),(0,s.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,s.kt)("div",{parentName:"div",className:"admonition-heading"},(0,s.kt)("h5",{parentName:"div"},(0,s.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,s.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,s.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u5c0f\u77e5\u8bc6")),(0,s.kt)("div",{parentName:"div",className:"admonition-content"},(0,s.kt)("p",{parentName:"div"},"\u6240\u6709\u5e26 ",(0,s.kt)("inlineCode",{parentName:"p"},"Now")," \u7ed3\u5c3e\u7684\u8868\u793a\u7acb\u5373\u63d0\u4ea4\u5230\u6570\u636e\u5e93\uff0c\u4e5f\u5c31\u662f\u7acb\u5373\u8c03\u7528 ",(0,s.kt)("inlineCode",{parentName:"p"},"SaveChanges")," \u6216 ",(0,s.kt)("inlineCode",{parentName:"p"},"SaveChangesAsync"),"\u3002"))),(0,s.kt)("h2",{id:"9615-\u5ffd\u7565\u7a7a\u503c\u66f4\u65b0"},"9.6.15 \u5ffd\u7565\u7a7a\u503c\u66f4\u65b0"),(0,s.kt)("p",null,"\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c",(0,s.kt)("inlineCode",{parentName:"p"},"EFCore")," \u66f4\u65b0\u4f1a\u66f4\u65b0\u5168\u90e8\u5217\uff08\u9664\u5b9e\u4f53\u8ddf\u8e2a\u65b9\u5f0f\u4ee5\u5916\uff09\uff0c\u6709\u4e9b\u65f6\u5019\u6211\u4eec\u5e0c\u671b ",(0,s.kt)("inlineCode",{parentName:"p"},"Null")," \u503c\u65e0\u9700\u66f4\u65b0\uff0c\u8fd9\u662f\u6211\u4eec\u53ea\u9700\u8981\u5728\u66f4\u65b0\u65f6\u5019\u914d\u7f6e ",(0,s.kt)("inlineCode",{parentName:"p"},"ignoreNullValues")," \u53c2\u6570\u5373\u53ef\uff0c\u5982\uff1a"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-cs"},"repository.Update(entity, ignoreNullValues: true);\n")),(0,s.kt)("p",null,"\u4e5f\u53ef\u4ee5\u5168\u5c40\u914d\u7f6e\uff0c\u5728 ",(0,s.kt)("inlineCode",{parentName:"p"},"AppDbContext")," \u7684\u6d3e\u751f\u7c7b\u7684\u6784\u9020\u51fd\u6570\u4e2d\u542f\u7528\u5373\u53ef\uff1a"),(0,s.kt)("pre",null,(0,s.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{11}","{11}":!0},'using Furion.DatabaseAccessor;\nusing Microsoft.EntityFrameworkCore;\n\nnamespace Furion.EntityFramework.Core\n{\n [AppDbContext("Sqlite3ConnectionString", DbProvider.Sqlite)]\n public class DefaultDbContext : AppDbContext\n {\n public DefaultDbContext(DbContextOptions options) : base(options)\n {\n InsertOrUpdateIgnoreNullValues = true;\n }\n }\n}\n')),(0,s.kt)("h2",{id:"9616-\u53cd\u9988\u4e0e\u5efa\u8bae"},"9.6.16 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,s.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,s.kt)("div",{parentName:"div",className:"admonition-heading"},(0,s.kt)("h5",{parentName:"div"},(0,s.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,s.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,s.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,s.kt)("div",{parentName:"div",className:"admonition-content"},(0,s.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,s.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/6c99f96f.3cdad21b.js b/handbook/build/assets/js/6c99f96f.3cdad21b.js deleted file mode 100644 index d17f0245c1e..00000000000 --- a/handbook/build/assets/js/6c99f96f.3cdad21b.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[5965],{546:function(e,t,r){r.d(t,{Z:function(){return d}});var l=r(7462),a=r(3366),n=r(7294),o=r(6010),c=r(6742),s=r(3018),m=r(4996),i="footerLogoLink_qW4Z",f=["to","href","label","prependBaseUrlToHref"];function u(e){var t=e.to,r=e.href,o=e.label,s=e.prependBaseUrlToHref,i=(0,a.Z)(e,f),u=(0,m.Z)(t),_=(0,m.Z)(r,{forcePrependBaseUrl:!0});return n.createElement(c.Z,(0,l.Z)({className:"footer__link-item"},r?{target:"_blank",rel:"noopener noreferrer",href:s?_:r}:{to:u},i),o)}var _=function(e){var t=e.url,r=e.alt;return n.createElement("img",{className:"footer__logo",alt:r,src:t,style:{background:"#fff",padding:"5px 10px"}})};var d=function(){var e=(0,s.LU)().footer,t=e||{},r=t.copyright,l=t.links,a=void 0===l?[]:l,c=t.logo,f=void 0===c?{}:c,d=(0,m.Z)(f.src);return e?n.createElement("footer",{className:(0,o.Z)("footer",{"footer--dark":"dark"===e.style})},n.createElement("div",{className:"container"},a&&a.length>0&&n.createElement("div",{className:"row footer__links"},a.map((function(e,t){return n.createElement("div",{key:t,className:"col footer__col"},null!=e.title?n.createElement("h4",{className:"footer__title"},e.title):null,null!=e.items&&Array.isArray(e.items)&&e.items.length>0?n.createElement("ul",{className:"footer__items"},e.items.map((function(e,t){return e.html?n.createElement("li",{key:t,className:"footer__item",dangerouslySetInnerHTML:{__html:e.html}}):n.createElement("li",{key:e.href||e.to,className:"footer__item"},n.createElement(u,e))}))):null)}))),(f||r)&&n.createElement("div",{className:"footer__bottom text--center"},f&&f.src&&n.createElement("div",{className:"margin-bottom--sm"},f.href?n.createElement("a",{href:f.href,target:"_blank",rel:"noopener noreferrer",className:i},n.createElement(_,{alt:f.alt,url:d})):n.createElement(_,{alt:f.alt,url:d})),r?n.createElement("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:r}}):null))):null}}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/6eaa010c.85c87aca.js b/handbook/build/assets/js/6eaa010c.85c87aca.js deleted file mode 100644 index a552ea5035c..00000000000 --- a/handbook/build/assets/js/6eaa010c.85c87aca.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[9742],{3905:function(e,n,t){t.d(n,{Zo:function(){return d},kt:function(){return s}});var r=t(7294);function o(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function a(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function c(e){for(var n=1;n=0||(o[t]=e[t]);return o}(e,n);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(o[t]=e[t])}return o}var l=r.createContext({}),p=function(e){var n=r.useContext(l),t=n;return e&&(t="function"==typeof e?e(n):c(c({},n),e)),t},d=function(e){var n=p(e.components);return r.createElement(l.Provider,{value:n},e.children)},u={inlineCode:"code",wrapper:function(e){var n=e.children;return r.createElement(r.Fragment,{},n)}},k=r.forwardRef((function(e,n){var t=e.components,o=e.mdxType,a=e.originalType,l=e.parentName,d=i(e,["components","mdxType","originalType","parentName"]),k=p(t),s=o,m=k["".concat(l,".").concat(s)]||k[s]||u[s]||a;return t?r.createElement(m,c(c({ref:n},d),{},{components:t})):r.createElement(m,c({ref:n},d))}));function s(e,n){var t=arguments,o=n&&n.mdxType;if("string"==typeof e||o){var a=t.length,c=new Array(a);c[0]=k;var i={};for(var l in n)hasOwnProperty.call(n,l)&&(i[l]=n[l]);i.originalType=e,i.mdxType="string"==typeof e?e:o,c[1]=i;for(var p=2;pToken",id:"141-\u751f\u6210-token",children:[]},{value:"14.2 \u751f\u6210\u5237\u65b0 Token",id:"142-\u751f\u6210\u5237\u65b0-token",children:[]},{value:"14.3 \u6839\u636e\u8fc7\u671f Token \u4ea4\u6362\u65b0 Token",id:"143-\u6839\u636e\u8fc7\u671f-token-\u4ea4\u6362\u65b0-token",children:[]},{value:"14.4 \u6388\u6743\u5904\u7406\u7a0b\u5e8f\u81ea\u52a8\u5237\u65b0 Token",id:"144-\u6388\u6743\u5904\u7406\u7a0b\u5e8f\u81ea\u52a8\u5237\u65b0-token",children:[]},{value:"14.5 \u9a8c\u8bc1 Token \u6709\u6548\u6027",id:"145-\u9a8c\u8bc1-token-\u6709\u6548\u6027",children:[]},{value:"14.6 \u9a8c\u8bc1\u8bf7\u6c42\u4e2d Token \u6709\u6548\u6027",id:"146-\u9a8c\u8bc1\u8bf7\u6c42\u4e2d-token-\u6709\u6548\u6027",children:[]},{value:"14.7 \u8bfb\u53d6 Token \u4fe1\u606f\uff08\u4e0d\u542b\u9a8c\u8bc1\uff09",id:"147-\u8bfb\u53d6-token-\u4fe1\u606f\uff08\u4e0d\u542b\u9a8c\u8bc1\uff09",children:[]}],u={toc:d};function k(e){var n=e.components,t=(0,o.Z)(e,c);return(0,a.kt)("wrapper",(0,r.Z)({},u,t,{components:n,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"141-\u751f\u6210-token"},"14.1 \u751f\u6210 ",(0,a.kt)("inlineCode",{parentName:"h2"},"Token")),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs"},'// \u8bfb\u53d6\u914d\u7f6e\u4fe1\u606f\u751f\u6210 Token\nvar token = JWTEncryption.Encrypt(new Dictionary { { "UserId", 1 } });\n\n// \u914d\u7f6e Token \u8fc7\u671f\u65f6\u95f4\nvar token = JWTEncryption.Encrypt(new Dictionary { { "UserId", 1 } }, 20);\n\n// \u914d\u7f6e Token \u5bc6\u94a5\nvar token = JWTEncryption.Encrypt("monksoul@outlook.com", new Dictionary { { "UserId", 1 } });\n\n// \u914d\u7f6e\u7b97\u6cd5\nvar token = JWTEncryption.Encrypt("monksoul@outlook.com", new Dictionary { { "UserId", 1 } }, SecurityAlgorithms.HmacSha256);\n')),(0,a.kt)("h2",{id:"142-\u751f\u6210\u5237\u65b0-token"},"14.2 \u751f\u6210\u5237\u65b0 ",(0,a.kt)("inlineCode",{parentName:"h2"},"Token")),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs"},'var refreshToken = JWTEncryption.GenerateRefreshToken("token", 43200);\n')),(0,a.kt)("h2",{id:"143-\u6839\u636e\u8fc7\u671f-token-\u4ea4\u6362\u65b0-token"},"14.3 \u6839\u636e\u8fc7\u671f ",(0,a.kt)("inlineCode",{parentName:"h2"},"Token")," \u4ea4\u6362\u65b0 ",(0,a.kt)("inlineCode",{parentName:"h2"},"Token")),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs"},'var newToken = JWTEncryption.Exchange("\u8fc7\u671f token", "\u4e0e\u4e4b\u5339\u914d\u7684\u5237\u65b0 token", [\u65b0\u7684token\u8fc7\u671f\u65f6\u95f4], [\u5bb9\u9519\u503c]);\n')),(0,a.kt)("h2",{id:"144-\u6388\u6743\u5904\u7406\u7a0b\u5e8f\u81ea\u52a8\u5237\u65b0-token"},"14.4 \u6388\u6743\u5904\u7406\u7a0b\u5e8f\u81ea\u52a8\u5237\u65b0 ",(0,a.kt)("inlineCode",{parentName:"h2"},"Token")),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs"},"JWTEncryption.AutoRefreshToken(context, httpContext);\n")),(0,a.kt)("h2",{id:"145-\u9a8c\u8bc1-token-\u6709\u6548\u6027"},"14.5 \u9a8c\u8bc1 ",(0,a.kt)("inlineCode",{parentName:"h2"},"Token")," \u6709\u6548\u6027"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs"},'var (isVaild, tokenInfo) = JWTEncryption.Validate("token");\n')),(0,a.kt)("h2",{id:"146-\u9a8c\u8bc1\u8bf7\u6c42\u4e2d-token-\u6709\u6548\u6027"},"14.6 \u9a8c\u8bc1\u8bf7\u6c42\u4e2d ",(0,a.kt)("inlineCode",{parentName:"h2"},"Token")," \u6709\u6548\u6027"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs"},"var isValid = JWTEncryption.ValidateJwtBearerToken(httpContext, out tokenInfo);\n")),(0,a.kt)("h2",{id:"147-\u8bfb\u53d6-token-\u4fe1\u606f\uff08\u4e0d\u542b\u9a8c\u8bc1\uff09"},"14.7 \u8bfb\u53d6 ",(0,a.kt)("inlineCode",{parentName:"h2"},"Token")," \u4fe1\u606f\uff08\u4e0d\u542b\u9a8c\u8bc1\uff09"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs"},'var tokenInfo = JWTEncryption.ReadJwtToken("token");\n')))}k.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/6eaa010c.9c8144df.js b/handbook/build/assets/js/6eaa010c.9c8144df.js new file mode 100644 index 00000000000..242b0811c8b --- /dev/null +++ b/handbook/build/assets/js/6eaa010c.9c8144df.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[9742],{3905:function(e,n,t){t.d(n,{Zo:function(){return d},kt:function(){return s}});var r=t(7294);function o(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function a(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function c(e){for(var n=1;n=0||(o[t]=e[t]);return o}(e,n);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(o[t]=e[t])}return o}var l=r.createContext({}),p=function(e){var n=r.useContext(l),t=n;return e&&(t="function"==typeof e?e(n):c(c({},n),e)),t},d=function(e){var n=p(e.components);return r.createElement(l.Provider,{value:n},e.children)},u={inlineCode:"code",wrapper:function(e){var n=e.children;return r.createElement(r.Fragment,{},n)}},k=r.forwardRef((function(e,n){var t=e.components,o=e.mdxType,a=e.originalType,l=e.parentName,d=i(e,["components","mdxType","originalType","parentName"]),k=p(t),s=o,m=k["".concat(l,".").concat(s)]||k[s]||u[s]||a;return t?r.createElement(m,c(c({ref:n},d),{},{components:t})):r.createElement(m,c({ref:n},d))}));function s(e,n){var t=arguments,o=n&&n.mdxType;if("string"==typeof e||o){var a=t.length,c=new Array(a);c[0]=k;var i={};for(var l in n)hasOwnProperty.call(n,l)&&(i[l]=n[l]);i.originalType=e,i.mdxType="string"==typeof e?e:o,c[1]=i;for(var p=2;pToken",id:"141-\u751f\u6210-token",children:[]},{value:"14.2 \u751f\u6210\u5237\u65b0 Token",id:"142-\u751f\u6210\u5237\u65b0-token",children:[]},{value:"14.3 \u6839\u636e\u8fc7\u671f Token \u4ea4\u6362\u65b0 Token",id:"143-\u6839\u636e\u8fc7\u671f-token-\u4ea4\u6362\u65b0-token",children:[]},{value:"14.4 \u6388\u6743\u5904\u7406\u7a0b\u5e8f\u81ea\u52a8\u5237\u65b0 Token",id:"144-\u6388\u6743\u5904\u7406\u7a0b\u5e8f\u81ea\u52a8\u5237\u65b0-token",children:[]},{value:"14.5 \u9a8c\u8bc1 Token \u6709\u6548\u6027",id:"145-\u9a8c\u8bc1-token-\u6709\u6548\u6027",children:[]},{value:"14.6 \u9a8c\u8bc1\u8bf7\u6c42\u4e2d Token \u6709\u6548\u6027",id:"146-\u9a8c\u8bc1\u8bf7\u6c42\u4e2d-token-\u6709\u6548\u6027",children:[]},{value:"14.7 \u8bfb\u53d6 Token \u4fe1\u606f\uff08\u4e0d\u542b\u9a8c\u8bc1\uff09",id:"147-\u8bfb\u53d6-token-\u4fe1\u606f\uff08\u4e0d\u542b\u9a8c\u8bc1\uff09",children:[]}],u={toc:d};function k(e){var n=e.components,t=(0,o.Z)(e,c);return(0,a.kt)("wrapper",(0,r.Z)({},u,t,{components:n,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"141-\u751f\u6210-token"},"14.1 \u751f\u6210 ",(0,a.kt)("inlineCode",{parentName:"h2"},"Token")),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs"},'// \u8bfb\u53d6\u914d\u7f6e\u4fe1\u606f\u751f\u6210 Token\nvar token = JWTEncryption.Encrypt(new Dictionary { { "UserId", 1 } });\n\n// \u914d\u7f6e Token \u8fc7\u671f\u65f6\u95f4\nvar token = JWTEncryption.Encrypt(new Dictionary { { "UserId", 1 } }, 20);\n\n// \u914d\u7f6e Token \u5bc6\u94a5\nvar token = JWTEncryption.Encrypt("monksoul@outlook.com", new Dictionary { { "UserId", 1 } });\n\n// \u914d\u7f6e\u7b97\u6cd5\nvar token = JWTEncryption.Encrypt("monksoul@outlook.com", new Dictionary { { "UserId", 1 } }, SecurityAlgorithms.HmacSha256);\n')),(0,a.kt)("h2",{id:"142-\u751f\u6210\u5237\u65b0-token"},"14.2 \u751f\u6210\u5237\u65b0 ",(0,a.kt)("inlineCode",{parentName:"h2"},"Token")),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs"},'var refreshToken = JWTEncryption.GenerateRefreshToken("token", 43200);\n')),(0,a.kt)("h2",{id:"143-\u6839\u636e\u8fc7\u671f-token-\u4ea4\u6362\u65b0-token"},"14.3 \u6839\u636e\u8fc7\u671f ",(0,a.kt)("inlineCode",{parentName:"h2"},"Token")," \u4ea4\u6362\u65b0 ",(0,a.kt)("inlineCode",{parentName:"h2"},"Token")),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs"},'var newToken = JWTEncryption.Exchange("\u8fc7\u671f token", "\u4e0e\u4e4b\u5339\u914d\u7684\u5237\u65b0 token", [\u65b0\u7684token\u8fc7\u671f\u65f6\u95f4], [\u5bb9\u9519\u503c]);\n')),(0,a.kt)("h2",{id:"144-\u6388\u6743\u5904\u7406\u7a0b\u5e8f\u81ea\u52a8\u5237\u65b0-token"},"14.4 \u6388\u6743\u5904\u7406\u7a0b\u5e8f\u81ea\u52a8\u5237\u65b0 ",(0,a.kt)("inlineCode",{parentName:"h2"},"Token")),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs"},"JWTEncryption.AutoRefreshToken(context, httpContext);\n")),(0,a.kt)("h2",{id:"145-\u9a8c\u8bc1-token-\u6709\u6548\u6027"},"14.5 \u9a8c\u8bc1 ",(0,a.kt)("inlineCode",{parentName:"h2"},"Token")," \u6709\u6548\u6027"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs"},'var (isVaild, tokenInfo) = JWTEncryption.Validate("token");\n')),(0,a.kt)("h2",{id:"146-\u9a8c\u8bc1\u8bf7\u6c42\u4e2d-token-\u6709\u6548\u6027"},"14.6 \u9a8c\u8bc1\u8bf7\u6c42\u4e2d ",(0,a.kt)("inlineCode",{parentName:"h2"},"Token")," \u6709\u6548\u6027"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs"},"var isValid = JWTEncryption.ValidateJwtBearerToken(httpContext, out tokenInfo);\n")),(0,a.kt)("h2",{id:"147-\u8bfb\u53d6-token-\u4fe1\u606f\uff08\u4e0d\u542b\u9a8c\u8bc1\uff09"},"14.7 \u8bfb\u53d6 ",(0,a.kt)("inlineCode",{parentName:"h2"},"Token")," \u4fe1\u606f\uff08\u4e0d\u542b\u9a8c\u8bc1\uff09"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs"},'var tokenInfo = JWTEncryption.ReadJwtToken("token");\n')))}k.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/6fa9a93a.4a262bf3.js b/handbook/build/assets/js/6fa9a93a.4a262bf3.js deleted file mode 100644 index a447b14e789..00000000000 --- a/handbook/build/assets/js/6fa9a93a.4a262bf3.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[647],{3905:function(e,t,n){n.d(t,{Zo:function(){return u},kt:function(){return c}});var i=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,i)}return n}function l(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var s=i.createContext({}),p=function(e){var t=i.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},u=function(e){var t=p(e.components);return i.createElement(s.Provider,{value:t},e.children)},d={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},m=i.forwardRef((function(e,t){var n=e.components,r=e.mdxType,a=e.originalType,s=e.parentName,u=o(e,["components","mdxType","originalType","parentName"]),m=p(n),c=r,g=m["".concat(s,".").concat(c)]||m[c]||d[c]||a;return n?i.createElement(g,l(l({ref:t},u),{},{components:n})):i.createElement(g,l({ref:t},u))}));function c(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var a=n.length,l=new Array(a);l[0]=m;var o={};for(var s in t)hasOwnProperty.call(t,s)&&(o[s]=t[s]);o.originalType=e,o.mdxType="string"==typeof e?e:r,l[1]=o;for(var p=2;p=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var s=i.createContext({}),p=function(e){var t=i.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},u=function(e){var t=p(e.components);return i.createElement(s.Provider,{value:t},e.children)},d={inlineCode:"code",wrapper:function(e){var t=e.children;return i.createElement(i.Fragment,{},t)}},m=i.forwardRef((function(e,t){var n=e.components,r=e.mdxType,a=e.originalType,s=e.parentName,u=o(e,["components","mdxType","originalType","parentName"]),m=p(n),c=r,g=m["".concat(s,".").concat(c)]||m[c]||d[c]||a;return n?i.createElement(g,l(l({ref:t},u),{},{components:n})):i.createElement(g,l({ref:t},u))}));function c(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var a=n.length,l=new Array(a);l[0]=m;var o={};for(var s in t)hasOwnProperty.call(t,s)&&(o[s]=t[s]);o.originalType=e,o.mdxType="string"==typeof e?e:r,l[1]=o;for(var p=2;p=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var p=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var s=r.createContext({}),l=function(e){var n=r.useContext(s),t=n;return e&&(t="function"==typeof e?e(n):i(i({},n),e)),t},d=function(e){var n=l(e.components);return r.createElement(s.Provider,{value:n},e.children)},c={inlineCode:"code",wrapper:function(e){var n=e.children;return r.createElement(r.Fragment,{},n)}},u=r.forwardRef((function(e,n){var t=e.components,a=e.mdxType,p=e.originalType,s=e.parentName,d=o(e,["components","mdxType","originalType","parentName"]),u=l(t),m=a,k=u["".concat(s,".").concat(m)]||u[m]||c[m]||p;return t?r.createElement(k,i(i({ref:n},d),{},{components:t})):r.createElement(k,i({ref:n},d))}));function m(e,n){var t=arguments,a=n&&n.mdxType;if("string"==typeof e||a){var p=t.length,i=new Array(p);i[0]=u;var o={};for(var s in n)hasOwnProperty.call(n,s)&&(o[s]=n[s]);o.originalType=e,o.mdxType="string"==typeof e?e:a,i[1]=o;for(var l=2;lDapper \u670d\u52a1",id:"10221-\u6ce8\u518c-dapper-\u670d\u52a1",children:[]},{value:"10.2.2.2 \u5b89\u88c5\u5bf9\u5e94\u7684\u6570\u636e\u5e93\u63d0\u4f9b\u5668",id:"10222-\u5b89\u88c5\u5bf9\u5e94\u7684\u6570\u636e\u5e93\u63d0\u4f9b\u5668",children:[]}]},{value:"10.2.3 \u57fa\u672c\u4f7f\u7528",id:"1023-\u57fa\u672c\u4f7f\u7528",children:[{value:"10.2.3.1 sql \u64cd\u4f5c",id:"10231-sql-\u64cd\u4f5c",children:[]},{value:"10.2.3.2 <TEntity> \u64cd\u4f5c",id:"10232-tentity-\u64cd\u4f5c",children:[]}]},{value:"10.2.4 \u9ad8\u7ea7\u4f7f\u7528",id:"1024-\u9ad8\u7ea7\u4f7f\u7528",children:[{value:"10.2.4.1 \u67e5\u8be2\u4e00\u5bf9\u4e00",id:"10241-\u67e5\u8be2\u4e00\u5bf9\u4e00",children:[]},{value:"10.2.4.2 \u67e5\u8be2\u591a\u4e2a\u7ed3\u679c",id:"10242-\u67e5\u8be2\u591a\u4e2a\u7ed3\u679c",children:[]},{value:"10.2.4.3 \u66f4\u591a\u64cd\u4f5c",id:"10243-\u66f4\u591a\u64cd\u4f5c",children:[]}]},{value:"10.2.5 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"1025-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],c={toc:d};function u(e){var n=e.components,t=(0,a.Z)(e,i);return(0,p.kt)("wrapper",(0,r.Z)({},c,t,{components:n,mdxType:"MDXLayout"}),(0,p.kt)("h2",{id:"1021-\u5173\u4e8e-dapper"},"10.2.1 \u5173\u4e8e Dapper"),(0,p.kt)("p",null,(0,p.kt)("inlineCode",{parentName:"p"},"Dapper")," \u662f .NET/C# \u5e73\u53f0\u975e\u5e38\u4f18\u79c0\u7684 ",(0,p.kt)("inlineCode",{parentName:"p"},"\u5fae\u578b ORM")," \u6846\u67b6\uff0c\u4e3b\u8981\u662f\u4e3a ",(0,p.kt)("inlineCode",{parentName:"p"},"ADO.NET")," \u64cd\u4f5c\u5bf9\u8c61\u63d0\u4f9b\u62d3\u5c55\u80fd\u529b\uff0c\u63a8\u5d07\u539f\u751f ",(0,p.kt)("inlineCode",{parentName:"p"},"sql")," \u64cd\u4f5c\u6cd5\u3002"),(0,p.kt)("p",null,(0,p.kt)("inlineCode",{parentName:"p"},"Dapper")," \u5b98\u65b9\u4ed3\u5e93\u5730\u5740\uff1a",(0,p.kt)("a",{parentName:"p",href:"https://github.com/StackExchange/Dapper"},"https://github.com/StackExchange/Dapper")),(0,p.kt)("h2",{id:"1022-\u5982\u4f55\u96c6\u6210"},"10.2.2 \u5982\u4f55\u96c6\u6210"),(0,p.kt)("p",null,"\u5728 ",(0,p.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\uff0c\u5df2\u7ecf\u63a8\u51fa ",(0,p.kt)("inlineCode",{parentName:"p"},"Dapper")," \u62d3\u5c55\u5305 ",(0,p.kt)("a",{parentName:"p",href:"https://www.nuget.org/packages/Furion.Extras.DatabaseAccessor.Dapper"},"Furion.Extras.DatabaseAccessor.Dapper"),"\u3002"),(0,p.kt)("h3",{id:"10221-\u6ce8\u518c-dapper-\u670d\u52a1"},"10.2.2.1 \u6ce8\u518c ",(0,p.kt)("inlineCode",{parentName:"h3"},"Dapper")," \u670d\u52a1"),(0,p.kt)("p",null,"\u4f7f\u7528\u975e\u5e38\u7b80\u5355\uff0c\u53ea\u9700\u8981\u5728 ",(0,p.kt)("inlineCode",{parentName:"p"},"Startup.cs")," \u4e2d\u6dfb\u52a0 ",(0,p.kt)("inlineCode",{parentName:"p"},"services.AddDapper(connStr, SqlProvider)")," \u5373\u53ef\u3002\u5982\uff1a"),(0,p.kt)("pre",null,(0,p.kt)("code",{parentName:"pre",className:"language-cs"},'services.AddDapper("Data Source=./Furion.db", SqlProvider.Sqlite);\n')),(0,p.kt)("h3",{id:"10222-\u5b89\u88c5\u5bf9\u5e94\u7684\u6570\u636e\u5e93\u63d0\u4f9b\u5668"},"10.2.2.2 \u5b89\u88c5\u5bf9\u5e94\u7684\u6570\u636e\u5e93\u63d0\u4f9b\u5668"),(0,p.kt)("ul",null,(0,p.kt)("li",{parentName:"ul"},(0,p.kt)("inlineCode",{parentName:"li"},"SqlServer"),"\uff1a",(0,p.kt)("inlineCode",{parentName:"li"},"Microsoft.Data.SqlClient")),(0,p.kt)("li",{parentName:"ul"},(0,p.kt)("inlineCode",{parentName:"li"},"Sqlite"),"\uff1a",(0,p.kt)("inlineCode",{parentName:"li"},"Microsoft.Data.Sqlite")),(0,p.kt)("li",{parentName:"ul"},(0,p.kt)("inlineCode",{parentName:"li"},"MySql"),"\uff1a",(0,p.kt)("inlineCode",{parentName:"li"},"MySql.Data")),(0,p.kt)("li",{parentName:"ul"},(0,p.kt)("inlineCode",{parentName:"li"},"Npgsql"),"\uff1a",(0,p.kt)("inlineCode",{parentName:"li"},"Npgsql")),(0,p.kt)("li",{parentName:"ul"},(0,p.kt)("inlineCode",{parentName:"li"},"Oracle"),"\uff1a",(0,p.kt)("inlineCode",{parentName:"li"},"Oracle.ManagedDataAccess.Core")),(0,p.kt)("li",{parentName:"ul"},(0,p.kt)("inlineCode",{parentName:"li"},"Firebird"),"\uff1a",(0,p.kt)("inlineCode",{parentName:"li"},"FirebirdSql.Data.FirebirdClient"))),(0,p.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,p.kt)("div",{parentName:"div",className:"admonition-heading"},(0,p.kt)("h5",{parentName:"div"},(0,p.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,p.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,p.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u5b89\u88c5\u62d3\u5c55\u5305\u4f4d\u7f6e")),(0,p.kt)("div",{parentName:"div",className:"admonition-content"},(0,p.kt)("p",{parentName:"div"},"\u5728 ",(0,p.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\uff0c\u63a8\u8350\u5c06\u62d3\u5c55\u5305 ",(0,p.kt)("inlineCode",{parentName:"p"},"Furion.Extras.DatabaseAccessor.Dapper")," \u5b89\u88c5\u5230 ",(0,p.kt)("inlineCode",{parentName:"p"},"Furion.Core")," \u5c42\u4e2d\u3002"))),(0,p.kt)("h2",{id:"1023-\u57fa\u672c\u4f7f\u7528"},"10.2.3 \u57fa\u672c\u4f7f\u7528"),(0,p.kt)("p",null,"\u5728\u4f7f\u7528\u4e4b\u524d\uff0c\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7\u6784\u9020\u51fd\u6570\u6ce8\u5165 ",(0,p.kt)("inlineCode",{parentName:"p"},"IDapperRepository")," \u6216 ",(0,p.kt)("inlineCode",{parentName:"p"},"IDapperRepository")," \u63a5\u53e3\uff0c\u5982\uff1a"),(0,p.kt)("ul",null,(0,p.kt)("li",{parentName:"ul"},"\u975e\u6cdb\u578b\u7248\u672c")),(0,p.kt)("pre",null,(0,p.kt)("code",{parentName:"pre",className:"language-cs"},"private readonly IDapperRepository _dapperRepository;\npublic PersonService(IDapperRepository dapperRepository)\n{\n _dapperRepository = dapperRepository;\n}\n")),(0,p.kt)("ul",null,(0,p.kt)("li",{parentName:"ul"},"\u6cdb\u578b\u7248\u672c")),(0,p.kt)("pre",null,(0,p.kt)("code",{parentName:"pre",className:"language-cs"},"private readonly IDapperRepository _personRepository;\npublic PersonService(IDapperRepository personRepository)\n{\n _personRepository = personRepository;\n}\n")),(0,p.kt)("h3",{id:"10231-sql-\u64cd\u4f5c"},"10.2.3.1 ",(0,p.kt)("inlineCode",{parentName:"h3"},"sql")," \u64cd\u4f5c"),(0,p.kt)("pre",null,(0,p.kt)("code",{parentName:"pre",className:"language-cs"},'var data = _dapperRepository.Query("select * from person");\nvar data = await _dapperRepository.QueryAsync("select * from person");\n\nvar data = _dapperRepository.Query("select * from person");\n\nvar guid = Guid.NewGuid();\nvar dog = _dapperRepository.Query("select Age = @Age, Id = @Id", new { Age = (int?)null, Id = guid });\n')),(0,p.kt)("pre",null,(0,p.kt)("code",{parentName:"pre",className:"language-cs"},'var count = _dapperRepository.Execute(@"insert MyTable(colA, colB) values (@a, @b)",\n new[] { new { a=1, b=1 }, new { a=2, b=2 }, new { a=3, b=3 } }\n );\n\nvar user = _dapperRepository.Query("spGetUser", new {Id = 1},\n commandType: CommandType.StoredProcedure).SingleOrDefault();\n')),(0,p.kt)("p",null,"\u7528\u6cd5\u548c\u5b98\u65b9\u4e00\u81f4\uff0c\u6b64\u5904\u4e0d\u518d\u4e3e\u66f4\u591a\u4f8b\u5b50\u3002"),(0,p.kt)("h3",{id:"10232-tentity-\u64cd\u4f5c"},"10.2.3.2 ",(0,p.kt)("inlineCode",{parentName:"h3"},"")," \u64cd\u4f5c"),(0,p.kt)("p",null,(0,p.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u4e86 ",(0,p.kt)("inlineCode",{parentName:"p"},"IDapperRepository")," \u548c ",(0,p.kt)("inlineCode",{parentName:"p"},"IDapperRepository")," \u4e24\u4e2a\u64cd\u4f5c\u4ed3\u50a8\uff0c\u540e\u8005\u7ee7\u627f\u524d\u8005\u3002\u4f7f\u7528\u5982\u4e0b\uff1a"),(0,p.kt)("pre",null,(0,p.kt)("code",{parentName:"pre",className:"language-cs"},"var person = personRepository.Get(1);\nvar persons = personRepository.GetAll();\n\nvar effects = personRepository.Insert(person);\nvar effects = personRepository.Update(person);\nvar effects = personRepository.Delete(person);\n\nvar effects = personRepository.Insert(persons); // \u63d2\u5165\u591a\u4e2a\nvar effects = personRepository.Update(persons); // \u66f4\u65b0\u591a\u4e2a\nvar effects = personRepository.Delete(persons); // \u5220\u9664\u591a\u4e2a\n\nvar effects = await personRepository.InsertAsync(person);\n")),(0,p.kt)("h2",{id:"1024-\u9ad8\u7ea7\u4f7f\u7528"},"10.2.4 \u9ad8\u7ea7\u4f7f\u7528"),(0,p.kt)("p",null,(0,p.kt)("inlineCode",{parentName:"p"},"IDapperRepository")," \u548c ",(0,p.kt)("inlineCode",{parentName:"p"},"IDapperRepository")," \u4ed3\u50a8\u63d0\u4f9b\u4e86 ",(0,p.kt)("inlineCode",{parentName:"p"},"Context")," \u548c ",(0,p.kt)("inlineCode",{parentName:"p"},"DynamicContext")," \u5c5e\u6027\uff0c\u8be5\u5c5e\u6027\u8fd4\u56de ",(0,p.kt)("inlineCode",{parentName:"p"},"IDbConnection")," \u5bf9\u8c61\u3002"),(0,p.kt)("p",null,"\u62ff\u5230\u8be5\u5bf9\u8c61\u540e\uff0c\u6211\u4eec\u5c31\u53ef\u4ee5\u64cd\u4f5c ",(0,p.kt)("inlineCode",{parentName:"p"},"Dapper")," \u63d0\u4f9b\u7684\u6240\u6709\u64cd\u4f5c\u4e86\uff0c\u5982\uff1a"),(0,p.kt)("h3",{id:"10241-\u67e5\u8be2\u4e00\u5bf9\u4e00"},"10.2.4.1 \u67e5\u8be2\u4e00\u5bf9\u4e00"),(0,p.kt)("pre",null,(0,p.kt)("code",{parentName:"pre",className:"language-cs"},'var sql =\n@"select * from #Posts p\nleft join #Users u on u.Id = p.OwnerId\nOrder by p.Id";\n\nvar data = dapperRepository.Context.Query(sql, (post, user) => { post.Owner = user; return post;});\nvar post = data.First();\n')),(0,p.kt)("h3",{id:"10242-\u67e5\u8be2\u591a\u4e2a\u7ed3\u679c"},"10.2.4.2 \u67e5\u8be2\u591a\u4e2a\u7ed3\u679c"),(0,p.kt)("pre",null,(0,p.kt)("code",{parentName:"pre",className:"language-cs"},'var sql =\n@"\nselect * from Customers where CustomerId = @id\nselect * from Orders where CustomerId = @id\nselect * from Returns where CustomerId = @id";\n\nusing (var multi = dapperRepository.Context.QueryMultiple(sql, new {id=selectedId}))\n{\n var customer = multi.Read().Single();\n var orders = multi.Read().ToList();\n var returns = multi.Read().ToList();\n // ...\n}\n')),(0,p.kt)("h3",{id:"10243-\u66f4\u591a\u64cd\u4f5c"},"10.2.4.3 \u66f4\u591a\u64cd\u4f5c"),(0,p.kt)("pre",null,(0,p.kt)("code",{parentName:"pre",className:"language-cs"},'var shapes = new List();\nusing (var reader = dapperRepository.Context.ExecuteReader("select * from Shapes"))\n{\n var circleParser = reader.GetRowParser(typeof(Circle));\n var squareParser = reader.GetRowParser(typeof(Square));\n var triangleParser = reader.GetRowParser(typeof(Triangle));\n\n var typeColumnIndex = reader.GetOrdinal("Type");\n\n while (reader.Read())\n {\n IShape shape;\n var type = (ShapeType)reader.GetInt32(typeColumnIndex);\n switch (type)\n {\n case ShapeType.Circle:\n shape = circleParser(reader);\n break;\n case ShapeType.Square:\n shape = squareParser(reader);\n break;\n case ShapeType.Triangle:\n shape = triangleParser(reader);\n break;\n default:\n throw new NotImplementedException();\n }\n\n shapes.Add(shape);\n }\n}\n')),(0,p.kt)("h2",{id:"1025-\u53cd\u9988\u4e0e\u5efa\u8bae"},"10.2.5 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,p.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,p.kt)("div",{parentName:"div",className:"admonition-heading"},(0,p.kt)("h5",{parentName:"div"},(0,p.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,p.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,p.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,p.kt)("div",{parentName:"div",className:"admonition-content"},(0,p.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,p.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))),(0,p.kt)("hr",null),(0,p.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,p.kt)("div",{parentName:"div",className:"admonition-heading"},(0,p.kt)("h5",{parentName:"div"},(0,p.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,p.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,p.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e86\u89e3\u66f4\u591a")),(0,p.kt)("div",{parentName:"div",className:"admonition-content"},(0,p.kt)("p",{parentName:"div"},"\u60f3\u4e86\u89e3\u66f4\u591a ",(0,p.kt)("inlineCode",{parentName:"p"},"Dapper")," \u77e5\u8bc6\u53ef\u67e5\u9605 ",(0,p.kt)("a",{parentName:"p",href:"https://github.com/StackExchange/Dapper"},"Dapper \u5b98\u7f51"),"\u3002"))))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/711b45e3.a77cea3d.js b/handbook/build/assets/js/711b45e3.a77cea3d.js new file mode 100644 index 00000000000..aaff9a70859 --- /dev/null +++ b/handbook/build/assets/js/711b45e3.a77cea3d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[984],{3905:function(e,n,t){t.d(n,{Zo:function(){return d},kt:function(){return m}});var r=t(7294);function a(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function p(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function i(e){for(var n=1;n=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var p=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var s=r.createContext({}),l=function(e){var n=r.useContext(s),t=n;return e&&(t="function"==typeof e?e(n):i(i({},n),e)),t},d=function(e){var n=l(e.components);return r.createElement(s.Provider,{value:n},e.children)},c={inlineCode:"code",wrapper:function(e){var n=e.children;return r.createElement(r.Fragment,{},n)}},u=r.forwardRef((function(e,n){var t=e.components,a=e.mdxType,p=e.originalType,s=e.parentName,d=o(e,["components","mdxType","originalType","parentName"]),u=l(t),m=a,k=u["".concat(s,".").concat(m)]||u[m]||c[m]||p;return t?r.createElement(k,i(i({ref:n},d),{},{components:t})):r.createElement(k,i({ref:n},d))}));function m(e,n){var t=arguments,a=n&&n.mdxType;if("string"==typeof e||a){var p=t.length,i=new Array(p);i[0]=u;var o={};for(var s in n)hasOwnProperty.call(n,s)&&(o[s]=n[s]);o.originalType=e,o.mdxType="string"==typeof e?e:a,i[1]=o;for(var l=2;lDapper \u670d\u52a1",id:"10221-\u6ce8\u518c-dapper-\u670d\u52a1",children:[]},{value:"10.2.2.2 \u5b89\u88c5\u5bf9\u5e94\u7684\u6570\u636e\u5e93\u63d0\u4f9b\u5668",id:"10222-\u5b89\u88c5\u5bf9\u5e94\u7684\u6570\u636e\u5e93\u63d0\u4f9b\u5668",children:[]}]},{value:"10.2.3 \u57fa\u672c\u4f7f\u7528",id:"1023-\u57fa\u672c\u4f7f\u7528",children:[{value:"10.2.3.1 sql \u64cd\u4f5c",id:"10231-sql-\u64cd\u4f5c",children:[]},{value:"10.2.3.2 <TEntity> \u64cd\u4f5c",id:"10232-tentity-\u64cd\u4f5c",children:[]}]},{value:"10.2.4 \u9ad8\u7ea7\u4f7f\u7528",id:"1024-\u9ad8\u7ea7\u4f7f\u7528",children:[{value:"10.2.4.1 \u67e5\u8be2\u4e00\u5bf9\u4e00",id:"10241-\u67e5\u8be2\u4e00\u5bf9\u4e00",children:[]},{value:"10.2.4.2 \u67e5\u8be2\u591a\u4e2a\u7ed3\u679c",id:"10242-\u67e5\u8be2\u591a\u4e2a\u7ed3\u679c",children:[]},{value:"10.2.4.3 \u66f4\u591a\u64cd\u4f5c",id:"10243-\u66f4\u591a\u64cd\u4f5c",children:[]}]},{value:"10.2.5 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"1025-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],c={toc:d};function u(e){var n=e.components,t=(0,a.Z)(e,i);return(0,p.kt)("wrapper",(0,r.Z)({},c,t,{components:n,mdxType:"MDXLayout"}),(0,p.kt)("h2",{id:"1021-\u5173\u4e8e-dapper"},"10.2.1 \u5173\u4e8e Dapper"),(0,p.kt)("p",null,(0,p.kt)("inlineCode",{parentName:"p"},"Dapper")," \u662f .NET/C# \u5e73\u53f0\u975e\u5e38\u4f18\u79c0\u7684 ",(0,p.kt)("inlineCode",{parentName:"p"},"\u5fae\u578b ORM")," \u6846\u67b6\uff0c\u4e3b\u8981\u662f\u4e3a ",(0,p.kt)("inlineCode",{parentName:"p"},"ADO.NET")," \u64cd\u4f5c\u5bf9\u8c61\u63d0\u4f9b\u62d3\u5c55\u80fd\u529b\uff0c\u63a8\u5d07\u539f\u751f ",(0,p.kt)("inlineCode",{parentName:"p"},"sql")," \u64cd\u4f5c\u6cd5\u3002"),(0,p.kt)("p",null,(0,p.kt)("inlineCode",{parentName:"p"},"Dapper")," \u5b98\u65b9\u4ed3\u5e93\u5730\u5740\uff1a",(0,p.kt)("a",{parentName:"p",href:"https://github.com/StackExchange/Dapper"},"https://github.com/StackExchange/Dapper")),(0,p.kt)("h2",{id:"1022-\u5982\u4f55\u96c6\u6210"},"10.2.2 \u5982\u4f55\u96c6\u6210"),(0,p.kt)("p",null,"\u5728 ",(0,p.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\uff0c\u5df2\u7ecf\u63a8\u51fa ",(0,p.kt)("inlineCode",{parentName:"p"},"Dapper")," \u62d3\u5c55\u5305 ",(0,p.kt)("a",{parentName:"p",href:"https://www.nuget.org/packages/Furion.Extras.DatabaseAccessor.Dapper"},"Furion.Extras.DatabaseAccessor.Dapper"),"\u3002"),(0,p.kt)("h3",{id:"10221-\u6ce8\u518c-dapper-\u670d\u52a1"},"10.2.2.1 \u6ce8\u518c ",(0,p.kt)("inlineCode",{parentName:"h3"},"Dapper")," \u670d\u52a1"),(0,p.kt)("p",null,"\u4f7f\u7528\u975e\u5e38\u7b80\u5355\uff0c\u53ea\u9700\u8981\u5728 ",(0,p.kt)("inlineCode",{parentName:"p"},"Startup.cs")," \u4e2d\u6dfb\u52a0 ",(0,p.kt)("inlineCode",{parentName:"p"},"services.AddDapper(connStr, SqlProvider)")," \u5373\u53ef\u3002\u5982\uff1a"),(0,p.kt)("pre",null,(0,p.kt)("code",{parentName:"pre",className:"language-cs"},'services.AddDapper("Data Source=./Furion.db", SqlProvider.Sqlite);\n')),(0,p.kt)("h3",{id:"10222-\u5b89\u88c5\u5bf9\u5e94\u7684\u6570\u636e\u5e93\u63d0\u4f9b\u5668"},"10.2.2.2 \u5b89\u88c5\u5bf9\u5e94\u7684\u6570\u636e\u5e93\u63d0\u4f9b\u5668"),(0,p.kt)("ul",null,(0,p.kt)("li",{parentName:"ul"},(0,p.kt)("inlineCode",{parentName:"li"},"SqlServer"),"\uff1a",(0,p.kt)("inlineCode",{parentName:"li"},"Microsoft.Data.SqlClient")),(0,p.kt)("li",{parentName:"ul"},(0,p.kt)("inlineCode",{parentName:"li"},"Sqlite"),"\uff1a",(0,p.kt)("inlineCode",{parentName:"li"},"Microsoft.Data.Sqlite")),(0,p.kt)("li",{parentName:"ul"},(0,p.kt)("inlineCode",{parentName:"li"},"MySql"),"\uff1a",(0,p.kt)("inlineCode",{parentName:"li"},"MySql.Data")),(0,p.kt)("li",{parentName:"ul"},(0,p.kt)("inlineCode",{parentName:"li"},"Npgsql"),"\uff1a",(0,p.kt)("inlineCode",{parentName:"li"},"Npgsql")),(0,p.kt)("li",{parentName:"ul"},(0,p.kt)("inlineCode",{parentName:"li"},"Oracle"),"\uff1a",(0,p.kt)("inlineCode",{parentName:"li"},"Oracle.ManagedDataAccess.Core")),(0,p.kt)("li",{parentName:"ul"},(0,p.kt)("inlineCode",{parentName:"li"},"Firebird"),"\uff1a",(0,p.kt)("inlineCode",{parentName:"li"},"FirebirdSql.Data.FirebirdClient"))),(0,p.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,p.kt)("div",{parentName:"div",className:"admonition-heading"},(0,p.kt)("h5",{parentName:"div"},(0,p.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,p.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,p.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u5b89\u88c5\u62d3\u5c55\u5305\u4f4d\u7f6e")),(0,p.kt)("div",{parentName:"div",className:"admonition-content"},(0,p.kt)("p",{parentName:"div"},"\u5728 ",(0,p.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\uff0c\u63a8\u8350\u5c06\u62d3\u5c55\u5305 ",(0,p.kt)("inlineCode",{parentName:"p"},"Furion.Extras.DatabaseAccessor.Dapper")," \u5b89\u88c5\u5230 ",(0,p.kt)("inlineCode",{parentName:"p"},"Furion.Core")," \u5c42\u4e2d\u3002"))),(0,p.kt)("h2",{id:"1023-\u57fa\u672c\u4f7f\u7528"},"10.2.3 \u57fa\u672c\u4f7f\u7528"),(0,p.kt)("p",null,"\u5728\u4f7f\u7528\u4e4b\u524d\uff0c\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7\u6784\u9020\u51fd\u6570\u6ce8\u5165 ",(0,p.kt)("inlineCode",{parentName:"p"},"IDapperRepository")," \u6216 ",(0,p.kt)("inlineCode",{parentName:"p"},"IDapperRepository")," \u63a5\u53e3\uff0c\u5982\uff1a"),(0,p.kt)("ul",null,(0,p.kt)("li",{parentName:"ul"},"\u975e\u6cdb\u578b\u7248\u672c")),(0,p.kt)("pre",null,(0,p.kt)("code",{parentName:"pre",className:"language-cs"},"private readonly IDapperRepository _dapperRepository;\npublic PersonService(IDapperRepository dapperRepository)\n{\n _dapperRepository = dapperRepository;\n}\n")),(0,p.kt)("ul",null,(0,p.kt)("li",{parentName:"ul"},"\u6cdb\u578b\u7248\u672c")),(0,p.kt)("pre",null,(0,p.kt)("code",{parentName:"pre",className:"language-cs"},"private readonly IDapperRepository _personRepository;\npublic PersonService(IDapperRepository personRepository)\n{\n _personRepository = personRepository;\n}\n")),(0,p.kt)("h3",{id:"10231-sql-\u64cd\u4f5c"},"10.2.3.1 ",(0,p.kt)("inlineCode",{parentName:"h3"},"sql")," \u64cd\u4f5c"),(0,p.kt)("pre",null,(0,p.kt)("code",{parentName:"pre",className:"language-cs"},'var data = _dapperRepository.Query("select * from person");\nvar data = await _dapperRepository.QueryAsync("select * from person");\n\nvar data = _dapperRepository.Query("select * from person");\n\nvar guid = Guid.NewGuid();\nvar dog = _dapperRepository.Query("select Age = @Age, Id = @Id", new { Age = (int?)null, Id = guid });\n')),(0,p.kt)("pre",null,(0,p.kt)("code",{parentName:"pre",className:"language-cs"},'var count = _dapperRepository.Execute(@"insert MyTable(colA, colB) values (@a, @b)",\n new[] { new { a=1, b=1 }, new { a=2, b=2 }, new { a=3, b=3 } }\n );\n\nvar user = _dapperRepository.Query("spGetUser", new {Id = 1},\n commandType: CommandType.StoredProcedure).SingleOrDefault();\n')),(0,p.kt)("p",null,"\u7528\u6cd5\u548c\u5b98\u65b9\u4e00\u81f4\uff0c\u6b64\u5904\u4e0d\u518d\u4e3e\u66f4\u591a\u4f8b\u5b50\u3002"),(0,p.kt)("h3",{id:"10232-tentity-\u64cd\u4f5c"},"10.2.3.2 ",(0,p.kt)("inlineCode",{parentName:"h3"},"")," \u64cd\u4f5c"),(0,p.kt)("p",null,(0,p.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u4e86 ",(0,p.kt)("inlineCode",{parentName:"p"},"IDapperRepository")," \u548c ",(0,p.kt)("inlineCode",{parentName:"p"},"IDapperRepository")," \u4e24\u4e2a\u64cd\u4f5c\u4ed3\u50a8\uff0c\u540e\u8005\u7ee7\u627f\u524d\u8005\u3002\u4f7f\u7528\u5982\u4e0b\uff1a"),(0,p.kt)("pre",null,(0,p.kt)("code",{parentName:"pre",className:"language-cs"},"var person = personRepository.Get(1);\nvar persons = personRepository.GetAll();\n\nvar effects = personRepository.Insert(person);\nvar effects = personRepository.Update(person);\nvar effects = personRepository.Delete(person);\n\nvar effects = personRepository.Insert(persons); // \u63d2\u5165\u591a\u4e2a\nvar effects = personRepository.Update(persons); // \u66f4\u65b0\u591a\u4e2a\nvar effects = personRepository.Delete(persons); // \u5220\u9664\u591a\u4e2a\n\nvar effects = await personRepository.InsertAsync(person);\n")),(0,p.kt)("h2",{id:"1024-\u9ad8\u7ea7\u4f7f\u7528"},"10.2.4 \u9ad8\u7ea7\u4f7f\u7528"),(0,p.kt)("p",null,(0,p.kt)("inlineCode",{parentName:"p"},"IDapperRepository")," \u548c ",(0,p.kt)("inlineCode",{parentName:"p"},"IDapperRepository")," \u4ed3\u50a8\u63d0\u4f9b\u4e86 ",(0,p.kt)("inlineCode",{parentName:"p"},"Context")," \u548c ",(0,p.kt)("inlineCode",{parentName:"p"},"DynamicContext")," \u5c5e\u6027\uff0c\u8be5\u5c5e\u6027\u8fd4\u56de ",(0,p.kt)("inlineCode",{parentName:"p"},"IDbConnection")," \u5bf9\u8c61\u3002"),(0,p.kt)("p",null,"\u62ff\u5230\u8be5\u5bf9\u8c61\u540e\uff0c\u6211\u4eec\u5c31\u53ef\u4ee5\u64cd\u4f5c ",(0,p.kt)("inlineCode",{parentName:"p"},"Dapper")," \u63d0\u4f9b\u7684\u6240\u6709\u64cd\u4f5c\u4e86\uff0c\u5982\uff1a"),(0,p.kt)("h3",{id:"10241-\u67e5\u8be2\u4e00\u5bf9\u4e00"},"10.2.4.1 \u67e5\u8be2\u4e00\u5bf9\u4e00"),(0,p.kt)("pre",null,(0,p.kt)("code",{parentName:"pre",className:"language-cs"},'var sql =\n@"select * from #Posts p\nleft join #Users u on u.Id = p.OwnerId\nOrder by p.Id";\n\nvar data = dapperRepository.Context.Query(sql, (post, user) => { post.Owner = user; return post;});\nvar post = data.First();\n')),(0,p.kt)("h3",{id:"10242-\u67e5\u8be2\u591a\u4e2a\u7ed3\u679c"},"10.2.4.2 \u67e5\u8be2\u591a\u4e2a\u7ed3\u679c"),(0,p.kt)("pre",null,(0,p.kt)("code",{parentName:"pre",className:"language-cs"},'var sql =\n@"\nselect * from Customers where CustomerId = @id\nselect * from Orders where CustomerId = @id\nselect * from Returns where CustomerId = @id";\n\nusing (var multi = dapperRepository.Context.QueryMultiple(sql, new {id=selectedId}))\n{\n var customer = multi.Read().Single();\n var orders = multi.Read().ToList();\n var returns = multi.Read().ToList();\n // ...\n}\n')),(0,p.kt)("h3",{id:"10243-\u66f4\u591a\u64cd\u4f5c"},"10.2.4.3 \u66f4\u591a\u64cd\u4f5c"),(0,p.kt)("pre",null,(0,p.kt)("code",{parentName:"pre",className:"language-cs"},'var shapes = new List();\nusing (var reader = dapperRepository.Context.ExecuteReader("select * from Shapes"))\n{\n var circleParser = reader.GetRowParser(typeof(Circle));\n var squareParser = reader.GetRowParser(typeof(Square));\n var triangleParser = reader.GetRowParser(typeof(Triangle));\n\n var typeColumnIndex = reader.GetOrdinal("Type");\n\n while (reader.Read())\n {\n IShape shape;\n var type = (ShapeType)reader.GetInt32(typeColumnIndex);\n switch (type)\n {\n case ShapeType.Circle:\n shape = circleParser(reader);\n break;\n case ShapeType.Square:\n shape = squareParser(reader);\n break;\n case ShapeType.Triangle:\n shape = triangleParser(reader);\n break;\n default:\n throw new NotImplementedException();\n }\n\n shapes.Add(shape);\n }\n}\n')),(0,p.kt)("h2",{id:"1025-\u53cd\u9988\u4e0e\u5efa\u8bae"},"10.2.5 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,p.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,p.kt)("div",{parentName:"div",className:"admonition-heading"},(0,p.kt)("h5",{parentName:"div"},(0,p.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,p.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,p.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,p.kt)("div",{parentName:"div",className:"admonition-content"},(0,p.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,p.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))),(0,p.kt)("hr",null),(0,p.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,p.kt)("div",{parentName:"div",className:"admonition-heading"},(0,p.kt)("h5",{parentName:"div"},(0,p.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,p.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,p.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e86\u89e3\u66f4\u591a")),(0,p.kt)("div",{parentName:"div",className:"admonition-content"},(0,p.kt)("p",{parentName:"div"},"\u60f3\u4e86\u89e3\u66f4\u591a ",(0,p.kt)("inlineCode",{parentName:"p"},"Dapper")," \u77e5\u8bc6\u53ef\u67e5\u9605 ",(0,p.kt)("a",{parentName:"p",href:"https://github.com/StackExchange/Dapper"},"Dapper \u5b98\u7f51"),"\u3002"))))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/713be7bb.b1566dc0.js b/handbook/build/assets/js/713be7bb.b1566dc0.js new file mode 100644 index 00000000000..72ddbecb165 --- /dev/null +++ b/handbook/build/assets/js/713be7bb.b1566dc0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[6696],{3905:function(e,n,t){t.d(n,{Zo:function(){return m},kt:function(){return c}});var a=t(7294);function r(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function o(e){for(var n=1;n=0||(r[t]=e[t]);return r}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var l=a.createContext({}),u=function(e){var n=a.useContext(l),t=n;return e&&(t="function"==typeof e?e(n):o(o({},n),e)),t},m=function(e){var n=u(e.components);return a.createElement(l.Provider,{value:n},e.children)},d={inlineCode:"code",wrapper:function(e){var n=e.children;return a.createElement(a.Fragment,{},n)}},p=a.forwardRef((function(e,n){var t=e.components,r=e.mdxType,i=e.originalType,l=e.parentName,m=s(e,["components","mdxType","originalType","parentName"]),p=u(t),c=r,y=p["".concat(l,".").concat(c)]||p[c]||d[c]||i;return t?a.createElement(y,o(o({ref:n},m),{},{components:t})):a.createElement(y,o({ref:n},m))}));function c(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var i=t.length,o=new Array(i);o[0]=p;var s={};for(var l in n)hasOwnProperty.call(n,l)&&(s[l]=n[l]);s.originalType=e,s.mdxType="string"==typeof e?e:r,o[1]=s;for(var u=2;u=0&&i<=u&&r<=s&&a>=0)||(n.scrollIntoView({block:"center",behavior:"smooth"}),n.classList.add(l),setTimeout((function(){return n.classList.remove(l)}),2e3))}),150))},D=function(e){var n,t=null;switch(e.key){case"ArrowRight":var a=C.indexOf(e.target)+1;t=C[a]||C[0];break;case"ArrowLeft":var r=C.indexOf(e.target)-1;t=C[r]||C[C.length-1]}null==(n=t)||n.focus()};return a.createElement("div",{className:"tabs-container"},a.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,o.Z)("tabs",{"tabs--block":r},p)},y.map((function(e){var n=e.value,t=e.label;return a.createElement("li",{role:"tab",tabIndex:b===n?0:-1,"aria-selected":b===n,className:(0,o.Z)("tabs__item",s,{"tabs__item--active":b===n}),key:n,ref:function(e){return C.push(e)},onKeyDown:D,onFocus:w,onClick:w},null!=t?t:n)}))),t?(0,a.cloneElement)(c.filter((function(e){return e.props.value===b}))[0],{className:"margin-vert--md"}):a.createElement("div",{className:"margin-vert--md"},c.map((function(e,n){return(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==b})}))))}},9443:function(e,n,t){var a=(0,t(7294).createContext)(void 0);n.Z=a},2126:function(e,n,t){t.r(n),t.d(n,{frontMatter:function(){return u},contentTitle:function(){return m},metadata:function(){return d},toc:function(){return p},default:function(){return y}});var a=t(7462),r=t(3366),i=(t(7294),t(3905)),o=(t(4996),t(5064)),s=t(8215),l=["components"],u={id:"dbcontext-hight-query",title:"9.11 \u9ad8\u7ea7\u67e5\u8be2\u64cd\u4f5c",sidebar_label:"9.11 \u9ad8\u7ea7\u67e5\u8be2\u64cd\u4f5c"},m=void 0,d={unversionedId:"dbcontext-hight-query",id:"dbcontext-hight-query",isDocsHomePage:!1,title:"9.11 \u9ad8\u7ea7\u67e5\u8be2\u64cd\u4f5c",description:"9.11.1 \u5173\u8054\u6570\u636e\u6a21\u578b",source:"@site/docs/dbcontext-high-query.mdx",sourceDirName:".",slug:"/dbcontext-hight-query",permalink:"/furion/docs/dbcontext-hight-query",editUrl:"https://gitee.com/dotnetchina/Furion/tree/master/handbook/docs/dbcontext-high-query.mdx",tags:[],version:"current",lastUpdatedBy:"\u3002\u6728\u9c7c",lastUpdatedAt:1629786451,formattedLastUpdatedAt:"8/24/2021",frontMatter:{id:"dbcontext-hight-query",title:"9.11 \u9ad8\u7ea7\u67e5\u8be2\u64cd\u4f5c",sidebar_label:"9.11 \u9ad8\u7ea7\u67e5\u8be2\u64cd\u4f5c"},sidebar:"docs",previous:{title:"9.10 \u67e5\u8be2\u64cd\u4f5c",permalink:"/furion/docs/dbcontext-query"},next:{title:"9.12 \u89c6\u56fe\u64cd\u4f5c",permalink:"/furion/docs/dbcontext-view"}},p=[{value:"9.11.1 \u5173\u8054\u6570\u636e\u6a21\u578b",id:"9111-\u5173\u8054\u6570\u636e\u6a21\u578b",children:[]},{value:"9.11.2 \u4e00\u5bf9\u4e00\u67e5\u8be2",id:"9112-\u4e00\u5bf9\u4e00\u67e5\u8be2",children:[]},{value:"9.11.3 \u4e00\u5bf9\u591a\u67e5\u8be2",id:"9113-\u4e00\u5bf9\u591a\u67e5\u8be2",children:[]},{value:"9.11.4 \u591a\u5bf9\u591a\u67e5\u8be2",id:"9114-\u591a\u5bf9\u591a\u67e5\u8be2",children:[]},{value:"9.11.5 \u8054\u8868\u67e5\u8be2",id:"9115-\u8054\u8868\u67e5\u8be2",children:[{value:"9.11.5.1 \u5185\u8fde\u63a5 Inner Join",id:"91151-\u5185\u8fde\u63a5-inner-join",children:[]},{value:"9.11.5.2 \u5de6\u8fde\u63a5 Left Join",id:"91152-\u5de6\u8fde\u63a5-left-join",children:[]},{value:"9.11.5.3 \u53f3\u8fde\u63a5 Right Join",id:"91153-\u53f3\u8fde\u63a5-right-join",children:[]}]},{value:"9.11.6 \u5206\u7ec4\u67e5\u8be2",id:"9116-\u5206\u7ec4\u67e5\u8be2",children:[]},{value:"9.11.7 \u5408\u5e76\u7ed3\u679c\u96c6",id:"9117-\u5408\u5e76\u7ed3\u679c\u96c6",children:[]},{value:"9.11.8 \u67e5\u8be2\u6392\u5e8f",id:"9118-\u67e5\u8be2\u6392\u5e8f",children:[{value:"9.11.8.1 \u6b63\u5e8f",id:"91181-\u6b63\u5e8f",children:[]},{value:"9.11.8.2 \u5012\u5e8f",id:"91182-\u5012\u5e8f",children:[]},{value:"9.11.8.3 \u6df7\u5408\u5012\u5e8f",id:"91183-\u6df7\u5408\u5012\u5e8f",children:[]}]},{value:"9.11.9 \u9012\u5f52\u67e5\u8be2",id:"9119-\u9012\u5f52\u67e5\u8be2",children:[]},{value:"9.11.10 \u52a8\u6001 Sql \u67e5\u8be2",id:"91110-\u52a8\u6001-sql-\u67e5\u8be2",children:[{value:"9.11.10.1 \u52a8\u6001 Sql",id:"911101-\u52a8\u6001-sql",children:[]},{value:"9.11.10.2 \u52a8\u6001 Lambda",id:"911102-\u52a8\u6001-lambda",children:[]}]},{value:"9.11.11 \u65f6\u6001\u67e5\u8be2",id:"91111-\u65f6\u6001\u67e5\u8be2",children:[]},{value:"9.11.12 \u6027\u80fd\u4f18\u5316",id:"91112-\u6027\u80fd\u4f18\u5316",children:[]},{value:"9.11.13 \u5206\u8868\u67e5\u8be2\u5c0f\u4f8b\u5b50",id:"91113-\u5206\u8868\u67e5\u8be2\u5c0f\u4f8b\u5b50",children:[]},{value:"9.11.14 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"91114-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],c={toc:p};function y(e){var n=e.components,t=(0,r.Z)(e,l);return(0,i.kt)("wrapper",(0,a.Z)({},c,t,{components:n,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"9111-\u5173\u8054\u6570\u636e\u6a21\u578b"},"9.11.1 \u5173\u8054\u6570\u636e\u6a21\u578b"),(0,i.kt)(o.Z,{defaultValue:"person",values:[{label:"Person",value:"person"},{label:"PersonDetail",value:"person-detail"},{label:"Children",value:"children"},{label:"Post",value:"post"}],mdxType:"Tabs"},(0,i.kt)(s.Z,{value:"person",mdxType:"TabItem"},(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{38,43,48}","{38,43,48}":!0},"using Furion.DatabaseAccessor;\nusing System;\nusing System.Collections.Generic;\nusing System.ComponentModel.DataAnnotations;\n\nnamespace Furion.Core\n{\n public class Person : Entity\n {\n /// \n /// \u6784\u9020\u51fd\u6570\n /// \n public Person()\n {\n CreatedTime = DateTime.Now;\n }\n\n /// \n /// \u59d3\u540d\n /// \n [MaxLength(32)]\n public string Name { get; set; }\n\n /// \n /// \u5e74\u9f84\n /// \n public int Age { get; set; }\n\n /// \n /// \u4f4f\u5740\n /// \n public string Address { get; set; }\n\n /// \n /// \u4ece\u8868\n /// \n public PersonDetail PersonDetail { get; set; }\n\n /// \n /// \u4e00\u5bf9\u591a\n /// \n public ICollection Childrens { get; set; }\n\n /// \n /// \u591a\u5bf9\u591a\n /// \n public ICollection Posts { get; set; }\n }\n}\n"))),(0,i.kt)(s.Z,{value:"person-detail",mdxType:"TabItem"},(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{25}","{25}":!0},"using Furion.DatabaseAccessor;\n\nnamespace Furion.Core\n{\n public class PersonDetail : EntityBase\n {\n /// \n /// \u7535\u8bdd\u53f7\u7801\n /// \n public string PhoneNumber { get; set; }\n\n /// \n /// QQ \u53f7\u7801\n /// \n public string QQ { get; set; }\n\n /// \n /// \u5916\u952e\n /// \n public int PersonId { get; set; }\n\n /// \n /// \u4e3b\u8868\n /// \n public Person Person { get; set; }\n }\n}\n"))),(0,i.kt)(s.Z,{value:"children",mdxType:"TabItem"},(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{35}","{35}":!0},"using Furion.DatabaseAccessor;\nusing System;\n\nnamespace Furion.Core\n{\n public class Children : Entity\n {\n /// \n /// \u6784\u9020\u51fd\u6570\n /// \n public Children()\n {\n CreatedTime = DateTime.Now;\n \n }\n\n /// \n /// \u540d\u79f0\n /// \n public string Name { get; set; }\n\n /// \n /// \u6027\u522b\n /// \n public Gender Gender { get; set; }\n\n /// \n /// \u5916\u952e\n /// \n public int PersonId { get; set; }\n\n /// \n /// \u4e3b\u8868\n /// \n public Person Person { get; set; }\n }\n}\n"))),(0,i.kt)(s.Z,{value:"post",mdxType:"TabItem"},(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{26}","{26}":!0},"using Furion.DatabaseAccessor;\nusing System;\nusing System.Collections.Generic;\n\nnamespace Furion.Core\n{\n public class Post : Entity\n {\n /// \n /// \u6784\u9020\u51fd\u6570\n /// \n public Post()\n {\n CreatedTime = DateTime.Now;\n \n }\n\n /// \n /// \u540d\u79f0\n /// \n public string Name { get; set; }\n\n /// \n /// Person \u96c6\u5408\n /// \n public ICollection Persons { get; set; }\n }\n}\n")))),(0,i.kt)("h2",{id:"9112-\u4e00\u5bf9\u4e00\u67e5\u8be2"},"9.11.2 \u4e00\u5bf9\u4e00\u67e5\u8be2"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"// \u793a\u4f8b\u4e00\nvar person = repository.Include(u => u.Detail);\n\n// \u793a\u4f8b\u4e8c\nvar person = repository.Include(u => u.Detail)\n .Include(u => u.Post);\n\n// \u793a\u4f8b\u4e09\nvar person = repository.Include(u => u.Detail)\n .ThenInclude(d => d.Review)\n .Include(u => u.Post);\n\n// \u793a\u4f8b\u56db\nvar person = repository.Include(u => u.Detail.Where(d => d.Id > 10).OrderBy(d => d.Name))\n .ThenInclude(d => d.Review)\n .Include(u => u.Post);\n\n// \u793a\u4f8b\u4e94\nvar person = repository.Include(!string.IsNullOrEmpty(keyword), u => u.Detail);\n\n// \u793a\u4f8b\u516d\nvar person = repository.Include(!string.IsNullOrEmpty(keyword), u => u.Detail)\n .Include(age > 18, u => u.Detail.Where(d => d.Id > 10).OrderBy(d => d.Name))\n .ThenInclude(d => d.Review)\n .Include(u => u.Post);\n")),(0,i.kt)("h2",{id:"9113-\u4e00\u5bf9\u591a\u67e5\u8be2"},"9.11.3 \u4e00\u5bf9\u591a\u67e5\u8be2"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"// \u793a\u4f8b\u4e00\nvar person = repository.Include(u => u.Childrens);\n\n// \u53c2\u8003 \u4e00\u5bf9\u4e00 \u4f8b\u5b50\n")),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u8bf4\u660e")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},(0,i.kt)("inlineCode",{parentName:"p"},"\u4e00\u5bf9\u4e00")," \u548c ",(0,i.kt)("inlineCode",{parentName:"p"},"\u4e00\u5bf9\u591a")," \u67e5\u8be2\u65b9\u6cd5\u4e00\u6837\uff0c\u552f\u4e00\u7684\u533a\u522b\u662f\uff1a",(0,i.kt)("inlineCode",{parentName:"p"},"\u4e00\u5bf9\u591a")," \u91c7\u7528 ",(0,i.kt)("inlineCode",{parentName:"p"},"ICollection")," \u5b9a\u4e49\u5c5e\u6027\u3002"))),(0,i.kt)("h2",{id:"9114-\u591a\u5bf9\u591a\u67e5\u8be2"},"9.11.4 \u591a\u5bf9\u591a\u67e5\u8be2"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"// \u793a\u4f8b\u4e00\nvar person = repository.Include(u => u.Posts);\n\n// \u53c2\u8003 \u4e00\u5bf9\u4e00 \u4f8b\u5b50\n")),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u8bf4\u660e")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},(0,i.kt)("inlineCode",{parentName:"p"},"\u4e00\u5bf9\u4e00")," \u548c ",(0,i.kt)("inlineCode",{parentName:"p"},"\u591a\u5bf9\u591a")," \u67e5\u8be2\u65b9\u6cd5\u4e00\u6837\uff0c\u552f\u4e00\u7684\u533a\u522b\u662f\uff1a",(0,i.kt)("inlineCode",{parentName:"p"},"\u591a\u5bf9\u591a")," \u91c7\u7528 ",(0,i.kt)("inlineCode",{parentName:"p"},"ICollection")," \u5b9a\u4e49\u5c5e\u6027\u3002"))),(0,i.kt)("h2",{id:"9115-\u8054\u8868\u67e5\u8be2"},"9.11.5 \u8054\u8868\u67e5\u8be2"),(0,i.kt)("h3",{id:"91151-\u5185\u8fde\u63a5-inner-join"},"9.11.5.1 \u5185\u8fde\u63a5 ",(0,i.kt)("inlineCode",{parentName:"h3"},"Inner Join")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"var query = from p in _personRepository.AsQueryable()\n join d in _personDetailRepository.AsQueryable() on p.Id equals d.PersonId\n select new PersonDto\n {\n PhoneNumber = p.PersonDetail.PhoneNumber,\n Address = p.Address,\n Age = p.Age,\n Name = p.Name,\n Id = p.Id,\n QQ = p.PersonDetail.QQ\n };\n")),(0,i.kt)("h3",{id:"91152-\u5de6\u8fde\u63a5-left-join"},"9.11.5.2 \u5de6\u8fde\u63a5 ",(0,i.kt)("inlineCode",{parentName:"h3"},"Left Join")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{2,3}","{2,3}":!0},"var query = from p in _personRepository.AsQueryable()\n join d in _personDetailRepository.AsQueryable() on p.Id equals d.PersonId into results\n from d in results.DefaultIfEmpty()\n select new PersonDto\n {\n PhoneNumber = p.PersonDetail.PhoneNumber,\n Address = p.Address,\n Age = p.Age,\n Name = p.Name,\n Id = p.Id,\n QQ = p.PersonDetail.QQ\n };\n")),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u5c0f\u63d0\u793a")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},(0,i.kt)("strong",{parentName:"p"},(0,i.kt)("inlineCode",{parentName:"strong"},"Left Join"))," \u548c ",(0,i.kt)("strong",{parentName:"p"},(0,i.kt)("inlineCode",{parentName:"strong"},"Inner Join"))," \u4e0d\u540c\u7684\u662f\uff0c",(0,i.kt)("strong",{parentName:"p"},(0,i.kt)("inlineCode",{parentName:"strong"},"Left Join"))," \u4f1a\u5148\u5c06\u7ed3\u679c ",(0,i.kt)("strong",{parentName:"p"},(0,i.kt)("inlineCode",{parentName:"strong"},"into"))," \u5230\u65b0\u7684\u7ed3\u679c\u96c6\u7136\u540e\u518d\u67e5\u8be2\uff0c\u5e76\u8c03\u7528 ",(0,i.kt)("strong",{parentName:"p"},(0,i.kt)("inlineCode",{parentName:"strong"},"DefaultIfEmpty()"))," \u65b9\u6cd5\u3002"))),(0,i.kt)("h3",{id:"91153-\u53f3\u8fde\u63a5-right-join"},"9.11.5.3 \u53f3\u8fde\u63a5 ",(0,i.kt)("inlineCode",{parentName:"h3"},"Right Join")),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Right Join")," \u53ea\u9700\u8981\u5c06 ",(0,i.kt)("inlineCode",{parentName:"p"},"Left Join")," \u4e3b\u4ece\u8868\u4f4d\u7f6e\u66f4\u6362\u5373\u53ef\u3002"),(0,i.kt)("h2",{id:"9116-\u5206\u7ec4\u67e5\u8be2"},"9.11.6 \u5206\u7ec4\u67e5\u8be2"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"// \u793a\u4f8b\u4e00\nvar query = repository.AsQueryable().GroupBy(x => new { x.Column1, x.Column2 });\n\n// \u793a\u4f8b\u4e8c\nvar query = from student in repository.AsQueryable()\n group student by repository2.AsQueryable() into dateGroup\n select new ResultData()\n {\n Key = dateGroup.Key,\n Value = dateGroup.Count()\n };\n\n// \u793a\u4f8b\u4e09\nvar query = from a in repository.AsQueryable()\n join b in repository2.AsQueryable() on a.Id equals b.Aid\n join c in repository3.AsQueryable() on c.id equals b.Bid\n group a by new { a.Age, b.Sex } into g\n select new {\n Peo = g.Key,\n Count = g.Count()\n };\n")),(0,i.kt)("h2",{id:"9117-\u5408\u5e76\u7ed3\u679c\u96c6"},"9.11.7 \u5408\u5e76\u7ed3\u679c\u96c6"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"var query = repository.AsQueryable(u => u.Id > 10)\n .Union(\n repository2.AsQueryable(u => u.Id <= 10)\n );\n")),(0,i.kt)("h2",{id:"9118-\u67e5\u8be2\u6392\u5e8f"},"9.11.8 \u67e5\u8be2\u6392\u5e8f"),(0,i.kt)("h3",{id:"91181-\u6b63\u5e8f"},"9.11.8.1 \u6b63\u5e8f"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"// \u793a\u4f8b\u4e00\nvar query = repository.AsQueryable()\n .OrderBy(u => u.Id);\n\n// \u793a\u4f8b\u4e8c\nvar query =repository.AsQueryable()\n .OrderBy(u => u.Id)\n .ThenBy(u => u.Name);\n")),(0,i.kt)("h3",{id:"91182-\u5012\u5e8f"},"9.11.8.2 \u5012\u5e8f"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"// \u793a\u4f8b\u4e00\nvar query = repository.AsQueryable()\n .OrderByDescending(u => u.Id);\n\n// \u793a\u4f8b\u4e8c\nvar query =repository.AsQueryable()\n .OrderByDescending(u => u.Id)\n .ThenByDescending(u => u.Name);\n")),(0,i.kt)("h3",{id:"91183-\u6df7\u5408\u5012\u5e8f"},"9.11.8.3 \u6df7\u5408\u5012\u5e8f"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"// \u793a\u4f8b\u4e00\nvar query = repository.AsQueryable()\n .OrderBy(u => u.Id)\n .OrderByDescending(u => u.Name)\n .ThenBy(u => u.Age);\n")),(0,i.kt)("h2",{id:"9119-\u9012\u5f52\u67e5\u8be2"},"9.11.9 \u9012\u5f52\u67e5\u8be2"),(0,i.kt)(o.Z,{defaultValue:"city",values:[{label:"City",value:"city"},{label:"CityDto",value:"citydto"}],mdxType:"Tabs"},(0,i.kt)(s.Z,{value:"city",mdxType:"TabItem"},(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{12,36,41,49-55}","{12,36,41,49-55}":!0},'using Furion.DatabaseAccessor;\nusing Microsoft.EntityFrameworkCore;\nusing Microsoft.EntityFrameworkCore.Metadata.Builders;\nusing System;\nusing System.Collections.Generic;\n\nnamespace Furion.Core\n{\n /// \n /// \u57ce\u5e02\n /// \n public class City : Entity, IEntityTypeBuilder, IEntitySeedData\n {\n /// \n /// \u6784\u9020\u51fd\u6570\n /// \n public City()\n {\n CreatedTime = DateTime.Now;\n \n }\n\n /// \n /// \u540d\u79f0\n /// \n public string Name { get; set; }\n\n /// \n /// \u4e0a\u7ea7Id\n /// \n public int? ParentId { get; set; }\n\n /// \n /// \u4e0a\u7ea7\n /// \n public virtual City Parent { get; set; }\n\n /// \n /// \u5b50\u96c6\n /// \n public virtual ICollection Childrens { get; set; }\n\n /// \n /// \u914d\u7f6e\u5b9e\u4f53\u5173\u7cfb\n /// \n /// \n /// \n /// \n public void Configure(EntityTypeBuilder entityBuilder, DbContext dbContext, Type dbContextLocator)\n {\n entityBuilder\n .HasMany(x => x.Childrens)\n .WithOne(x => x.Parent)\n .HasForeignKey(x => x.ParentId)\n .OnDelete(DeleteBehavior.ClientSetNull); // \u5fc5\u987b\u8bbe\u7f6e\u8fd9\u4e00\u884c\n }\n\n /// \n /// \u79cd\u5b50\u6570\u636e\n /// \n /// \n /// \n /// \n public IEnumerable HasData(DbContext dbContext, Type dbContextLocator)\n {\n return new List\n {\n new City { Id=1,CreatedTime =DateTime.Parse("2020-08-20 15:30:20"),IsDeleted=false,Name="\u4e2d\u56fd" },\n new City { Id=2,CreatedTime =DateTime.Parse("2020-08-20 15:30:20"),IsDeleted=false,Name="\u5e7f\u4e1c\u7701",ParentId=1 },\n new City { Id=3,CreatedTime =DateTime.Parse("2020-08-20 15:30:20"),IsDeleted=false,Name="\u4e2d\u5c71\u5e02",ParentId=2 },\n new City { Id=4,CreatedTime =DateTime.Parse("2020-08-20 15:30:20"),IsDeleted=false,Name="\u73e0\u6d77\u5e02",ParentId=2 },\n new City { Id=5,CreatedTime =DateTime.Parse("2020-08-20 15:30:20"),IsDeleted=false,Name="\u6d59\u6c5f\u7701",ParentId=1 },\n };\n }\n }\n}\n'))),(0,i.kt)(s.Z,{value:"citydto",mdxType:"TabItem"},(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"using System.Collections.Generic;\n\nnamespace Furion.Application.Persons\n{\n public class CityDto\n {\n /// \n /// \u4e3b\u952e\n /// \n public int Id { get; set; }\n\n /// \n /// \u540d\u79f0\n /// \n public string Name { get; set; }\n\n /// \n /// \u5b50\u96c6\n /// \n public ICollection Childrens { get; set; }\n }\n}\n")))),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"var cities = await repository.AsQueryable()\n .Include(u => u.Childrens)\n .Where(u => u.Id == 1)\n .ToListAsync();\n\nvar dtos = cities.Adapt>();\n")),(0,i.kt)("h2",{id:"91110-\u52a8\u6001-sql-\u67e5\u8be2"},"9.11.10 \u52a8\u6001 ",(0,i.kt)("inlineCode",{parentName:"h2"},"Sql")," \u67e5\u8be2"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u9ed8\u8ba4\u4e0d\u652f\u6301 \u52a8\u6001 ",(0,i.kt)("inlineCode",{parentName:"p"},"Sql")," \u67e5\u8be2\u529f\u80fd\uff0c\u4e0d\u8fc7\u53ef\u4ee5\u901a\u8fc7\u7b2c\u4e09\u65b9\u5b9e\u73b0\uff1a"),(0,i.kt)("p",null,"\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u9879\u76ee\u5c42\u5b89\u88c5 ",(0,i.kt)("inlineCode",{parentName:"p"},"System.Linq.Dynamic.Core")," \u5305 ",(0,i.kt)("a",{parentName:"p",href:"https://github.com/zzzprojects/System.Linq.Dynamic.Core"},"https://github.com/zzzprojects/System.Linq.Dynamic.Core")),(0,i.kt)("h3",{id:"911101-\u52a8\u6001-sql"},"9.11.10.1 \u52a8\u6001 ",(0,i.kt)("inlineCode",{parentName:"h3"},"Sql")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// \u793a\u4f8b\u4e00\nvar query = repository.AsQueryable()\n .Where("City == @0 and Orders.Count >= @1", "China", 10)\n .OrderBy("CompanyName")\n .Select("new(CompanyName as Name, Phone)");\n\n// \u793a\u4f8b\u4e8c\nvar list = repository.AsQueryable()\n .Where("Name.Contains(@0)","Furion")\n .ToList();\n\n// \u793a\u4f8b\u4e09\uff0c\u652f\u6301 ? \u8bed\u6cd5\nvar customers = repository.AsQueryable()\n .Include(c => c.Location)\n .Where(c => c.Location?.Name == "test") // \u6ce8\u610f Location?.Name\n .ToList();\n')),(0,i.kt)("h3",{id:"911102-\u52a8\u6001-lambda"},"9.11.10.2 \u52a8\u6001 ",(0,i.kt)("inlineCode",{parentName:"h3"},"Lambda")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// \u793a\u4f8b\u4e00\nvar x = Expression.Parameter(typeof(int), "x");\nvar y = Expression.Parameter(typeof(int), "y");\nvar e = DynamicExpressionParser\n .ParseLambda(new ParameterExpression[] { x, y }, null, "(x + y) * 2");\n\n// \u793a\u4f8b\u4e8c\nvar e = DynamicExpressionParser.ParseLambda(\n typeof(Customer), typeof(bool),\n "City = @0 and Orders.Count >= @1",\n "London", 10);\n')),(0,i.kt)("h2",{id:"91111-\u65f6\u6001\u67e5\u8be2"},"9.11.11 \u65f6\u6001\u67e5\u8be2"),(0,i.kt)("div",{className:"admonition admonition-warning alert alert--danger"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"}))),"\u529f\u80fd\u79fb\u9664\u58f0\u660e")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u4ee5\u4e0b\u5185\u5bb9\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion 2.13 +")," \u7248\u672c\u4e2d\u5df2\u79fb\u9664\u3002"))),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u8fd8\u63d0\u4f9b\u4e86\u65f6\u6001\u67e5\u8be2\u529f\u80fd\uff0c\u53ef\u4ee5\u67e5\u8be2\u7279\u5b9a\u65f6\u95f4\u7684\u6570\u636e\uff0c\u5982\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'var result = rep.Entities\n .AsTemporalOf(DateTime.UtcNow.AddDays(-1))\n .Include(i=> i.Company)\n .FirstOrDefault(i => i.Name == "Furion");\n')),(0,i.kt)("p",null,"\u53e6\u5916\u63d0\u4f9b\u4e86\u591a\u4e2a\u65f6\u6001\u67e5\u8be2\u65b9\u6cd5"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"AsTemporalAll()"),(0,i.kt)("li",{parentName:"ul"},"AsTemporalAsOf(date)"),(0,i.kt)("li",{parentName:"ul"},"AsTemporalFrom(startDate, endDate)"),(0,i.kt)("li",{parentName:"ul"},"AsTemporalBetween(startDate, endDate)"),(0,i.kt)("li",{parentName:"ul"},"AsTemporalContained(startDate, endDate)")),(0,i.kt)("h2",{id:"91112-\u6027\u80fd\u4f18\u5316"},"9.11.12 \u6027\u80fd\u4f18\u5316"),(0,i.kt)("p",null,"\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c",(0,i.kt)("inlineCode",{parentName:"p"},"EF Core")," \u4f1a\u8ddf\u8e2a\u6240\u6709\u5b9e\u4f53\uff0c\u4e5f\u5c31\u662f\u4efb\u4f55\u6570\u636e\u6539\u53d8\u90fd\u4f1a\u5f15\u8d77\u6570\u636e\u68c0\u67e5\uff0c\u6240\u4ee5\u5982\u679c\u53ea\u505a\u67e5\u8be2\u64cd\u4f5c\uff0c\u5efa\u8bae\u5173\u95ed\u5b9e\u4f53\u8ddf\u8e2a\u529f\u80fd\u3002"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u4e86\u4ee5\u4e0b\u9ad8\u6027\u80fd\u5b9e\u4f53\u96c6\u5408\uff1a"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"DetachedEntities"),"\uff1a\u8131\u8f68/\u4e0d\u8ffd\u8e2a\u5b9e\u4f53"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"AsQueryable(false)"),"\uff1a\u4e0d\u8ffd\u8e2a\u5b9e\u4f53"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"Entities.AsNoTracking()"),"\uff1a\u624b\u52a8\u5173\u95ed\u5b9e\u4f53\u8ffd\u8e2a")),(0,i.kt)("p",null,"\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"EF Core")," \u4e2d\uff0c\u590d\u6742\u67e5\u8be2\u603b\u662f\u4f1a\u751f\u6210\u4e00\u4e2a ",(0,i.kt)("inlineCode",{parentName:"p"},"sql"),"\uff0c\u4e5f\u5c31\u662f ",(0,i.kt)("inlineCode",{parentName:"p"},"AsSingleQuery()"),"\uff0c\u6211\u4eec\u4e5f\u53ef\u4ee5\u8bbe\u7f6e\u4e3a ",(0,i.kt)("inlineCode",{parentName:"p"},"AsSplitQuery()")," \u5207\u5272\u6210\u591a\u4e2a\u67e5\u8be2\u3002"),(0,i.kt)("h2",{id:"91113-\u5206\u8868\u67e5\u8be2\u5c0f\u4f8b\u5b50"},"9.11.13 \u5206\u8868\u67e5\u8be2\u5c0f\u4f8b\u5b50"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'using Furion.DatabaseAccessor;\nusing Microsoft.EntityFrameworkCore;\nusing Microsoft.EntityFrameworkCore.Metadata.Builders;\nusing System;\nusing System.Collections.Generic;\n\nnamespace Furion.Core\n{\n public class Person : Entity, IEntityTypeBuilder\n {\n public string Name { get; set; }\n\n /// \n /// \u914d\u7f6e\u5b9e\u4f53\u5173\u7cfb\n /// \n /// \n /// \n /// \n public void Configure(EntityTypeBuilder entityBuilder, DbContext dbContext, Type dbContextLocator)\n {\n entityBuilder.ToSqlQuery(\n @"select * from dbo.person.2020-09-19\n union all\n select * from dbo.person.2020-09-20");\n }\n }\n}\n')),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"var posts = repository.Where(u => u.Id > 10).ToList();\n")),(0,i.kt)("h2",{id:"91114-\u53cd\u9988\u4e0e\u5efa\u8bae"},"9.11.14 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,i.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}y.isMDXComponent=!0},6010:function(e,n,t){function a(e){var n,t,r="";if("string"==typeof e||"number"==typeof e)r+=e;else if("object"==typeof e)if(Array.isArray(e))for(n=0;n=0||(r[t]=e[t]);return r}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var l=a.createContext({}),u=function(e){var n=a.useContext(l),t=n;return e&&(t="function"==typeof e?e(n):o(o({},n),e)),t},m=function(e){var n=u(e.components);return a.createElement(l.Provider,{value:n},e.children)},d={inlineCode:"code",wrapper:function(e){var n=e.children;return a.createElement(a.Fragment,{},n)}},p=a.forwardRef((function(e,n){var t=e.components,r=e.mdxType,i=e.originalType,l=e.parentName,m=s(e,["components","mdxType","originalType","parentName"]),p=u(t),c=r,y=p["".concat(l,".").concat(c)]||p[c]||d[c]||i;return t?a.createElement(y,o(o({ref:n},m),{},{components:t})):a.createElement(y,o({ref:n},m))}));function c(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var i=t.length,o=new Array(i);o[0]=p;var s={};for(var l in n)hasOwnProperty.call(n,l)&&(s[l]=n[l]);s.originalType=e,s.mdxType="string"==typeof e?e:r,o[1]=s;for(var u=2;u=0&&i<=u&&r<=s&&a>=0)||(n.scrollIntoView({block:"center",behavior:"smooth"}),n.classList.add(l),setTimeout((function(){return n.classList.remove(l)}),2e3))}),150))},w=function(e){var n,t;switch(e.keyCode){case m:var a=C.indexOf(e.target)+1;t=C[a]||C[0];break;case u:var r=C.indexOf(e.target)-1;t=C[r]||C[C.length-1]}null==(n=t)||n.focus()};return a.createElement("div",{className:"tabs-container"},a.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,o.Z)("tabs",{"tabs--block":t},c)},d.map((function(e){var n=e.value,t=e.label;return a.createElement("li",{role:"tab",tabIndex:k===n?0:-1,"aria-selected":k===n,className:(0,o.Z)("tabs__item",s,{"tabs__item--active":k===n}),key:n,ref:function(e){return C.push(e)},onKeyDown:w,onFocus:I,onClick:I},t)}))),n?(0,a.cloneElement)(b.filter((function(e){return e.props.value===k}))[0],{className:"margin-vert--md"}):a.createElement("div",{className:"margin-vert--md"},b.map((function(e,n){return(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==k})}))))}},9443:function(e,n,t){var a=(0,t(7294).createContext)(void 0);n.Z=a},2369:function(e,n,t){t.r(n),t.d(n,{frontMatter:function(){return u},contentTitle:function(){return m},metadata:function(){return d},toc:function(){return p},default:function(){return y}});var a=t(7462),r=t(3366),i=(t(7294),t(3905)),o=(t(4996),t(5064)),s=t(8215),l=["components"],u={id:"dbcontext-hight-query",title:"9.11 \u9ad8\u7ea7\u67e5\u8be2\u64cd\u4f5c",sidebar_label:"9.11 \u9ad8\u7ea7\u67e5\u8be2\u64cd\u4f5c"},m=void 0,d={unversionedId:"dbcontext-hight-query",id:"dbcontext-hight-query",isDocsHomePage:!1,title:"9.11 \u9ad8\u7ea7\u67e5\u8be2\u64cd\u4f5c",description:"9.11.1 \u5173\u8054\u6570\u636e\u6a21\u578b",source:"@site/docs/dbcontext-high-query.mdx",sourceDirName:".",slug:"/dbcontext-hight-query",permalink:"/furion/docs/dbcontext-hight-query",editUrl:"https://gitee.com/dotnetchina/Furion/tree/master/handbook/docs/dbcontext-high-query.mdx",version:"current",lastUpdatedBy:"\u3002\u6728\u9c7c",lastUpdatedAt:1629786451,formattedLastUpdatedAt:"8/24/2021",frontMatter:{id:"dbcontext-hight-query",title:"9.11 \u9ad8\u7ea7\u67e5\u8be2\u64cd\u4f5c",sidebar_label:"9.11 \u9ad8\u7ea7\u67e5\u8be2\u64cd\u4f5c"},sidebar:"docs",previous:{title:"9.10 \u67e5\u8be2\u64cd\u4f5c",permalink:"/furion/docs/dbcontext-query"},next:{title:"9.12 \u89c6\u56fe\u64cd\u4f5c",permalink:"/furion/docs/dbcontext-view"}},p=[{value:"9.11.1 \u5173\u8054\u6570\u636e\u6a21\u578b",id:"9111-\u5173\u8054\u6570\u636e\u6a21\u578b",children:[]},{value:"9.11.2 \u4e00\u5bf9\u4e00\u67e5\u8be2",id:"9112-\u4e00\u5bf9\u4e00\u67e5\u8be2",children:[]},{value:"9.11.3 \u4e00\u5bf9\u591a\u67e5\u8be2",id:"9113-\u4e00\u5bf9\u591a\u67e5\u8be2",children:[]},{value:"9.11.4 \u591a\u5bf9\u591a\u67e5\u8be2",id:"9114-\u591a\u5bf9\u591a\u67e5\u8be2",children:[]},{value:"9.11.5 \u8054\u8868\u67e5\u8be2",id:"9115-\u8054\u8868\u67e5\u8be2",children:[{value:"9.11.5.1 \u5185\u8fde\u63a5 Inner Join",id:"91151-\u5185\u8fde\u63a5-inner-join",children:[]},{value:"9.11.5.2 \u5de6\u8fde\u63a5 Left Join",id:"91152-\u5de6\u8fde\u63a5-left-join",children:[]},{value:"9.11.5.3 \u53f3\u8fde\u63a5 Right Join",id:"91153-\u53f3\u8fde\u63a5-right-join",children:[]}]},{value:"9.11.6 \u5206\u7ec4\u67e5\u8be2",id:"9116-\u5206\u7ec4\u67e5\u8be2",children:[]},{value:"9.11.7 \u5408\u5e76\u7ed3\u679c\u96c6",id:"9117-\u5408\u5e76\u7ed3\u679c\u96c6",children:[]},{value:"9.11.8 \u67e5\u8be2\u6392\u5e8f",id:"9118-\u67e5\u8be2\u6392\u5e8f",children:[{value:"9.11.8.1 \u6b63\u5e8f",id:"91181-\u6b63\u5e8f",children:[]},{value:"9.11.8.2 \u5012\u5e8f",id:"91182-\u5012\u5e8f",children:[]},{value:"9.11.8.3 \u6df7\u5408\u5012\u5e8f",id:"91183-\u6df7\u5408\u5012\u5e8f",children:[]}]},{value:"9.11.9 \u9012\u5f52\u67e5\u8be2",id:"9119-\u9012\u5f52\u67e5\u8be2",children:[]},{value:"9.11.10 \u52a8\u6001 Sql \u67e5\u8be2",id:"91110-\u52a8\u6001-sql-\u67e5\u8be2",children:[{value:"9.11.10.1 \u52a8\u6001 Sql",id:"911101-\u52a8\u6001-sql",children:[]},{value:"9.11.10.2 \u52a8\u6001 Lambda",id:"911102-\u52a8\u6001-lambda",children:[]}]},{value:"9.11.11 \u65f6\u6001\u67e5\u8be2",id:"91111-\u65f6\u6001\u67e5\u8be2",children:[]},{value:"9.11.12 \u6027\u80fd\u4f18\u5316",id:"91112-\u6027\u80fd\u4f18\u5316",children:[]},{value:"9.11.13 \u5206\u8868\u67e5\u8be2\u5c0f\u4f8b\u5b50",id:"91113-\u5206\u8868\u67e5\u8be2\u5c0f\u4f8b\u5b50",children:[]},{value:"9.11.14 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"91114-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],c={toc:p};function y(e){var n=e.components,t=(0,r.Z)(e,l);return(0,i.kt)("wrapper",(0,a.Z)({},c,t,{components:n,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"9111-\u5173\u8054\u6570\u636e\u6a21\u578b"},"9.11.1 \u5173\u8054\u6570\u636e\u6a21\u578b"),(0,i.kt)(o.Z,{defaultValue:"person",values:[{label:"Person",value:"person"},{label:"PersonDetail",value:"person-detail"},{label:"Children",value:"children"},{label:"Post",value:"post"}],mdxType:"Tabs"},(0,i.kt)(s.Z,{value:"person",mdxType:"TabItem"},(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{38,43,48}","{38,43,48}":!0},"using Furion.DatabaseAccessor;\nusing System;\nusing System.Collections.Generic;\nusing System.ComponentModel.DataAnnotations;\n\nnamespace Furion.Core\n{\n public class Person : Entity\n {\n /// \n /// \u6784\u9020\u51fd\u6570\n /// \n public Person()\n {\n CreatedTime = DateTime.Now;\n }\n\n /// \n /// \u59d3\u540d\n /// \n [MaxLength(32)]\n public string Name { get; set; }\n\n /// \n /// \u5e74\u9f84\n /// \n public int Age { get; set; }\n\n /// \n /// \u4f4f\u5740\n /// \n public string Address { get; set; }\n\n /// \n /// \u4ece\u8868\n /// \n public PersonDetail PersonDetail { get; set; }\n\n /// \n /// \u4e00\u5bf9\u591a\n /// \n public ICollection Childrens { get; set; }\n\n /// \n /// \u591a\u5bf9\u591a\n /// \n public ICollection Posts { get; set; }\n }\n}\n"))),(0,i.kt)(s.Z,{value:"person-detail",mdxType:"TabItem"},(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{25}","{25}":!0},"using Furion.DatabaseAccessor;\n\nnamespace Furion.Core\n{\n public class PersonDetail : EntityBase\n {\n /// \n /// \u7535\u8bdd\u53f7\u7801\n /// \n public string PhoneNumber { get; set; }\n\n /// \n /// QQ \u53f7\u7801\n /// \n public string QQ { get; set; }\n\n /// \n /// \u5916\u952e\n /// \n public int PersonId { get; set; }\n\n /// \n /// \u4e3b\u8868\n /// \n public Person Person { get; set; }\n }\n}\n"))),(0,i.kt)(s.Z,{value:"children",mdxType:"TabItem"},(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{35}","{35}":!0},"using Furion.DatabaseAccessor;\nusing System;\n\nnamespace Furion.Core\n{\n public class Children : Entity\n {\n /// \n /// \u6784\u9020\u51fd\u6570\n /// \n public Children()\n {\n CreatedTime = DateTime.Now;\n \n }\n\n /// \n /// \u540d\u79f0\n /// \n public string Name { get; set; }\n\n /// \n /// \u6027\u522b\n /// \n public Gender Gender { get; set; }\n\n /// \n /// \u5916\u952e\n /// \n public int PersonId { get; set; }\n\n /// \n /// \u4e3b\u8868\n /// \n public Person Person { get; set; }\n }\n}\n"))),(0,i.kt)(s.Z,{value:"post",mdxType:"TabItem"},(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{26}","{26}":!0},"using Furion.DatabaseAccessor;\nusing System;\nusing System.Collections.Generic;\n\nnamespace Furion.Core\n{\n public class Post : Entity\n {\n /// \n /// \u6784\u9020\u51fd\u6570\n /// \n public Post()\n {\n CreatedTime = DateTime.Now;\n \n }\n\n /// \n /// \u540d\u79f0\n /// \n public string Name { get; set; }\n\n /// \n /// Person \u96c6\u5408\n /// \n public ICollection Persons { get; set; }\n }\n}\n")))),(0,i.kt)("h2",{id:"9112-\u4e00\u5bf9\u4e00\u67e5\u8be2"},"9.11.2 \u4e00\u5bf9\u4e00\u67e5\u8be2"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"// \u793a\u4f8b\u4e00\nvar person = repository.Include(u => u.Detail);\n\n// \u793a\u4f8b\u4e8c\nvar person = repository.Include(u => u.Detail)\n .Include(u => u.Post);\n\n// \u793a\u4f8b\u4e09\nvar person = repository.Include(u => u.Detail)\n .ThenInclude(d => d.Review)\n .Include(u => u.Post);\n\n// \u793a\u4f8b\u56db\nvar person = repository.Include(u => u.Detail.Where(d => d.Id > 10).OrderBy(d => d.Name))\n .ThenInclude(d => d.Review)\n .Include(u => u.Post);\n\n// \u793a\u4f8b\u4e94\nvar person = repository.Include(!string.IsNullOrEmpty(keyword), u => u.Detail);\n\n// \u793a\u4f8b\u516d\nvar person = repository.Include(!string.IsNullOrEmpty(keyword), u => u.Detail)\n .Include(age > 18, u => u.Detail.Where(d => d.Id > 10).OrderBy(d => d.Name))\n .ThenInclude(d => d.Review)\n .Include(u => u.Post);\n")),(0,i.kt)("h2",{id:"9113-\u4e00\u5bf9\u591a\u67e5\u8be2"},"9.11.3 \u4e00\u5bf9\u591a\u67e5\u8be2"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"// \u793a\u4f8b\u4e00\nvar person = repository.Include(u => u.Childrens);\n\n// \u53c2\u8003 \u4e00\u5bf9\u4e00 \u4f8b\u5b50\n")),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u8bf4\u660e")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},(0,i.kt)("inlineCode",{parentName:"p"},"\u4e00\u5bf9\u4e00")," \u548c ",(0,i.kt)("inlineCode",{parentName:"p"},"\u4e00\u5bf9\u591a")," \u67e5\u8be2\u65b9\u6cd5\u4e00\u6837\uff0c\u552f\u4e00\u7684\u533a\u522b\u662f\uff1a",(0,i.kt)("inlineCode",{parentName:"p"},"\u4e00\u5bf9\u591a")," \u91c7\u7528 ",(0,i.kt)("inlineCode",{parentName:"p"},"ICollection")," \u5b9a\u4e49\u5c5e\u6027\u3002"))),(0,i.kt)("h2",{id:"9114-\u591a\u5bf9\u591a\u67e5\u8be2"},"9.11.4 \u591a\u5bf9\u591a\u67e5\u8be2"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"// \u793a\u4f8b\u4e00\nvar person = repository.Include(u => u.Posts);\n\n// \u53c2\u8003 \u4e00\u5bf9\u4e00 \u4f8b\u5b50\n")),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u8bf4\u660e")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},(0,i.kt)("inlineCode",{parentName:"p"},"\u4e00\u5bf9\u4e00")," \u548c ",(0,i.kt)("inlineCode",{parentName:"p"},"\u591a\u5bf9\u591a")," \u67e5\u8be2\u65b9\u6cd5\u4e00\u6837\uff0c\u552f\u4e00\u7684\u533a\u522b\u662f\uff1a",(0,i.kt)("inlineCode",{parentName:"p"},"\u591a\u5bf9\u591a")," \u91c7\u7528 ",(0,i.kt)("inlineCode",{parentName:"p"},"ICollection")," \u5b9a\u4e49\u5c5e\u6027\u3002"))),(0,i.kt)("h2",{id:"9115-\u8054\u8868\u67e5\u8be2"},"9.11.5 \u8054\u8868\u67e5\u8be2"),(0,i.kt)("h3",{id:"91151-\u5185\u8fde\u63a5-inner-join"},"9.11.5.1 \u5185\u8fde\u63a5 ",(0,i.kt)("inlineCode",{parentName:"h3"},"Inner Join")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"var query = from p in _personRepository.AsQueryable()\n join d in _personDetailRepository.AsQueryable() on p.Id equals d.PersonId\n select new PersonDto\n {\n PhoneNumber = p.PersonDetail.PhoneNumber,\n Address = p.Address,\n Age = p.Age,\n Name = p.Name,\n Id = p.Id,\n QQ = p.PersonDetail.QQ\n };\n")),(0,i.kt)("h3",{id:"91152-\u5de6\u8fde\u63a5-left-join"},"9.11.5.2 \u5de6\u8fde\u63a5 ",(0,i.kt)("inlineCode",{parentName:"h3"},"Left Join")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{2,3}","{2,3}":!0},"var query = from p in _personRepository.AsQueryable()\n join d in _personDetailRepository.AsQueryable() on p.Id equals d.PersonId into results\n from d in results.DefaultIfEmpty()\n select new PersonDto\n {\n PhoneNumber = p.PersonDetail.PhoneNumber,\n Address = p.Address,\n Age = p.Age,\n Name = p.Name,\n Id = p.Id,\n QQ = p.PersonDetail.QQ\n };\n")),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u5c0f\u63d0\u793a")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},(0,i.kt)("strong",{parentName:"p"},(0,i.kt)("inlineCode",{parentName:"strong"},"Left Join"))," \u548c ",(0,i.kt)("strong",{parentName:"p"},(0,i.kt)("inlineCode",{parentName:"strong"},"Inner Join"))," \u4e0d\u540c\u7684\u662f\uff0c",(0,i.kt)("strong",{parentName:"p"},(0,i.kt)("inlineCode",{parentName:"strong"},"Left Join"))," \u4f1a\u5148\u5c06\u7ed3\u679c ",(0,i.kt)("strong",{parentName:"p"},(0,i.kt)("inlineCode",{parentName:"strong"},"into"))," \u5230\u65b0\u7684\u7ed3\u679c\u96c6\u7136\u540e\u518d\u67e5\u8be2\uff0c\u5e76\u8c03\u7528 ",(0,i.kt)("strong",{parentName:"p"},(0,i.kt)("inlineCode",{parentName:"strong"},"DefaultIfEmpty()"))," \u65b9\u6cd5\u3002"))),(0,i.kt)("h3",{id:"91153-\u53f3\u8fde\u63a5-right-join"},"9.11.5.3 \u53f3\u8fde\u63a5 ",(0,i.kt)("inlineCode",{parentName:"h3"},"Right Join")),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Right Join")," \u53ea\u9700\u8981\u5c06 ",(0,i.kt)("inlineCode",{parentName:"p"},"Left Join")," \u4e3b\u4ece\u8868\u4f4d\u7f6e\u66f4\u6362\u5373\u53ef\u3002"),(0,i.kt)("h2",{id:"9116-\u5206\u7ec4\u67e5\u8be2"},"9.11.6 \u5206\u7ec4\u67e5\u8be2"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"// \u793a\u4f8b\u4e00\nvar query = repository.AsQueryable().GroupBy(x => new { x.Column1, x.Column2 });\n\n// \u793a\u4f8b\u4e8c\nvar query = from student in repository.AsQueryable()\n group student by repository2.AsQueryable() into dateGroup\n select new ResultData()\n {\n Key = dateGroup.Key,\n Value = dateGroup.Count()\n };\n\n// \u793a\u4f8b\u4e09\nvar query = from a in repository.AsQueryable()\n join b in repository2.AsQueryable() on a.Id equals b.Aid\n join c in repository3.AsQueryable() on c.id equals b.Bid\n group a by new { a.Age, b.Sex } into g\n select new {\n Peo = g.Key,\n Count = g.Count()\n };\n")),(0,i.kt)("h2",{id:"9117-\u5408\u5e76\u7ed3\u679c\u96c6"},"9.11.7 \u5408\u5e76\u7ed3\u679c\u96c6"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"var query = repository.AsQueryable(u => u.Id > 10)\n .Union(\n repository2.AsQueryable(u => u.Id <= 10)\n );\n")),(0,i.kt)("h2",{id:"9118-\u67e5\u8be2\u6392\u5e8f"},"9.11.8 \u67e5\u8be2\u6392\u5e8f"),(0,i.kt)("h3",{id:"91181-\u6b63\u5e8f"},"9.11.8.1 \u6b63\u5e8f"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"// \u793a\u4f8b\u4e00\nvar query = repository.AsQueryable()\n .OrderBy(u => u.Id);\n\n// \u793a\u4f8b\u4e8c\nvar query =repository.AsQueryable()\n .OrderBy(u => u.Id)\n .ThenBy(u => u.Name);\n")),(0,i.kt)("h3",{id:"91182-\u5012\u5e8f"},"9.11.8.2 \u5012\u5e8f"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"// \u793a\u4f8b\u4e00\nvar query = repository.AsQueryable()\n .OrderByDescending(u => u.Id);\n\n// \u793a\u4f8b\u4e8c\nvar query =repository.AsQueryable()\n .OrderByDescending(u => u.Id)\n .ThenByDescending(u => u.Name);\n")),(0,i.kt)("h3",{id:"91183-\u6df7\u5408\u5012\u5e8f"},"9.11.8.3 \u6df7\u5408\u5012\u5e8f"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"// \u793a\u4f8b\u4e00\nvar query = repository.AsQueryable()\n .OrderBy(u => u.Id)\n .OrderByDescending(u => u.Name)\n .ThenBy(u => u.Age);\n")),(0,i.kt)("h2",{id:"9119-\u9012\u5f52\u67e5\u8be2"},"9.11.9 \u9012\u5f52\u67e5\u8be2"),(0,i.kt)(o.Z,{defaultValue:"city",values:[{label:"City",value:"city"},{label:"CityDto",value:"citydto"}],mdxType:"Tabs"},(0,i.kt)(s.Z,{value:"city",mdxType:"TabItem"},(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{12,36,41,49-55}","{12,36,41,49-55}":!0},'using Furion.DatabaseAccessor;\nusing Microsoft.EntityFrameworkCore;\nusing Microsoft.EntityFrameworkCore.Metadata.Builders;\nusing System;\nusing System.Collections.Generic;\n\nnamespace Furion.Core\n{\n /// \n /// \u57ce\u5e02\n /// \n public class City : Entity, IEntityTypeBuilder, IEntitySeedData\n {\n /// \n /// \u6784\u9020\u51fd\u6570\n /// \n public City()\n {\n CreatedTime = DateTime.Now;\n \n }\n\n /// \n /// \u540d\u79f0\n /// \n public string Name { get; set; }\n\n /// \n /// \u4e0a\u7ea7Id\n /// \n public int? ParentId { get; set; }\n\n /// \n /// \u4e0a\u7ea7\n /// \n public virtual City Parent { get; set; }\n\n /// \n /// \u5b50\u96c6\n /// \n public virtual ICollection Childrens { get; set; }\n\n /// \n /// \u914d\u7f6e\u5b9e\u4f53\u5173\u7cfb\n /// \n /// \n /// \n /// \n public void Configure(EntityTypeBuilder entityBuilder, DbContext dbContext, Type dbContextLocator)\n {\n entityBuilder\n .HasMany(x => x.Childrens)\n .WithOne(x => x.Parent)\n .HasForeignKey(x => x.ParentId)\n .OnDelete(DeleteBehavior.ClientSetNull); // \u5fc5\u987b\u8bbe\u7f6e\u8fd9\u4e00\u884c\n }\n\n /// \n /// \u79cd\u5b50\u6570\u636e\n /// \n /// \n /// \n /// \n public IEnumerable HasData(DbContext dbContext, Type dbContextLocator)\n {\n return new List\n {\n new City { Id=1,CreatedTime =DateTime.Parse("2020-08-20 15:30:20"),IsDeleted=false,Name="\u4e2d\u56fd" },\n new City { Id=2,CreatedTime =DateTime.Parse("2020-08-20 15:30:20"),IsDeleted=false,Name="\u5e7f\u4e1c\u7701",ParentId=1 },\n new City { Id=3,CreatedTime =DateTime.Parse("2020-08-20 15:30:20"),IsDeleted=false,Name="\u4e2d\u5c71\u5e02",ParentId=2 },\n new City { Id=4,CreatedTime =DateTime.Parse("2020-08-20 15:30:20"),IsDeleted=false,Name="\u73e0\u6d77\u5e02",ParentId=2 },\n new City { Id=5,CreatedTime =DateTime.Parse("2020-08-20 15:30:20"),IsDeleted=false,Name="\u6d59\u6c5f\u7701",ParentId=1 },\n };\n }\n }\n}\n'))),(0,i.kt)(s.Z,{value:"citydto",mdxType:"TabItem"},(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"using System.Collections.Generic;\n\nnamespace Furion.Application.Persons\n{\n public class CityDto\n {\n /// \n /// \u4e3b\u952e\n /// \n public int Id { get; set; }\n\n /// \n /// \u540d\u79f0\n /// \n public string Name { get; set; }\n\n /// \n /// \u5b50\u96c6\n /// \n public ICollection Childrens { get; set; }\n }\n}\n")))),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"var cities = await repository.AsQueryable()\n .Include(u => u.Childrens)\n .Where(u => u.Id == 1)\n .ToListAsync();\n\nvar dtos = cities.Adapt>();\n")),(0,i.kt)("h2",{id:"91110-\u52a8\u6001-sql-\u67e5\u8be2"},"9.11.10 \u52a8\u6001 ",(0,i.kt)("inlineCode",{parentName:"h2"},"Sql")," \u67e5\u8be2"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u9ed8\u8ba4\u4e0d\u652f\u6301 \u52a8\u6001 ",(0,i.kt)("inlineCode",{parentName:"p"},"Sql")," \u67e5\u8be2\u529f\u80fd\uff0c\u4e0d\u8fc7\u53ef\u4ee5\u901a\u8fc7\u7b2c\u4e09\u65b9\u5b9e\u73b0\uff1a"),(0,i.kt)("p",null,"\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u9879\u76ee\u5c42\u5b89\u88c5 ",(0,i.kt)("inlineCode",{parentName:"p"},"System.Linq.Dynamic.Core")," \u5305 ",(0,i.kt)("a",{parentName:"p",href:"https://github.com/zzzprojects/System.Linq.Dynamic.Core"},"https://github.com/zzzprojects/System.Linq.Dynamic.Core")),(0,i.kt)("h3",{id:"911101-\u52a8\u6001-sql"},"9.11.10.1 \u52a8\u6001 ",(0,i.kt)("inlineCode",{parentName:"h3"},"Sql")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// \u793a\u4f8b\u4e00\nvar query = repository.AsQueryable()\n .Where("City == @0 and Orders.Count >= @1", "China", 10)\n .OrderBy("CompanyName")\n .Select("new(CompanyName as Name, Phone)");\n\n// \u793a\u4f8b\u4e8c\nvar list = repository.AsQueryable()\n .Where("Name.Contains(@0)","Furion")\n .ToList();\n\n// \u793a\u4f8b\u4e09\uff0c\u652f\u6301 ? \u8bed\u6cd5\nvar customers = repository.AsQueryable()\n .Include(c => c.Location)\n .Where(c => c.Location?.Name == "test") // \u6ce8\u610f Location?.Name\n .ToList();\n')),(0,i.kt)("h3",{id:"911102-\u52a8\u6001-lambda"},"9.11.10.2 \u52a8\u6001 ",(0,i.kt)("inlineCode",{parentName:"h3"},"Lambda")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// \u793a\u4f8b\u4e00\nvar x = Expression.Parameter(typeof(int), "x");\nvar y = Expression.Parameter(typeof(int), "y");\nvar e = DynamicExpressionParser\n .ParseLambda(new ParameterExpression[] { x, y }, null, "(x + y) * 2");\n\n// \u793a\u4f8b\u4e8c\nvar e = DynamicExpressionParser.ParseLambda(\n typeof(Customer), typeof(bool),\n "City = @0 and Orders.Count >= @1",\n "London", 10);\n')),(0,i.kt)("h2",{id:"91111-\u65f6\u6001\u67e5\u8be2"},"9.11.11 \u65f6\u6001\u67e5\u8be2"),(0,i.kt)("div",{className:"admonition admonition-warning alert alert--danger"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"}))),"\u529f\u80fd\u79fb\u9664\u58f0\u660e")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u4ee5\u4e0b\u5185\u5bb9\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion 2.13 +")," \u7248\u672c\u4e2d\u5df2\u79fb\u9664\u3002"))),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u8fd8\u63d0\u4f9b\u4e86\u65f6\u6001\u67e5\u8be2\u529f\u80fd\uff0c\u53ef\u4ee5\u67e5\u8be2\u7279\u5b9a\u65f6\u95f4\u7684\u6570\u636e\uff0c\u5982\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'var result = rep.Entities\n .AsTemporalOf(DateTime.UtcNow.AddDays(-1))\n .Include(i=> i.Company)\n .FirstOrDefault(i => i.Name == "Furion");\n')),(0,i.kt)("p",null,"\u53e6\u5916\u63d0\u4f9b\u4e86\u591a\u4e2a\u65f6\u6001\u67e5\u8be2\u65b9\u6cd5"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"AsTemporalAll()"),(0,i.kt)("li",{parentName:"ul"},"AsTemporalAsOf(date)"),(0,i.kt)("li",{parentName:"ul"},"AsTemporalFrom(startDate, endDate)"),(0,i.kt)("li",{parentName:"ul"},"AsTemporalBetween(startDate, endDate)"),(0,i.kt)("li",{parentName:"ul"},"AsTemporalContained(startDate, endDate)")),(0,i.kt)("h2",{id:"91112-\u6027\u80fd\u4f18\u5316"},"9.11.12 \u6027\u80fd\u4f18\u5316"),(0,i.kt)("p",null,"\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c",(0,i.kt)("inlineCode",{parentName:"p"},"EF Core")," \u4f1a\u8ddf\u8e2a\u6240\u6709\u5b9e\u4f53\uff0c\u4e5f\u5c31\u662f\u4efb\u4f55\u6570\u636e\u6539\u53d8\u90fd\u4f1a\u5f15\u8d77\u6570\u636e\u68c0\u67e5\uff0c\u6240\u4ee5\u5982\u679c\u53ea\u505a\u67e5\u8be2\u64cd\u4f5c\uff0c\u5efa\u8bae\u5173\u95ed\u5b9e\u4f53\u8ddf\u8e2a\u529f\u80fd\u3002"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u4e86\u4ee5\u4e0b\u9ad8\u6027\u80fd\u5b9e\u4f53\u96c6\u5408\uff1a"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"DetachedEntities"),"\uff1a\u8131\u8f68/\u4e0d\u8ffd\u8e2a\u5b9e\u4f53"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"AsQueryable(false)"),"\uff1a\u4e0d\u8ffd\u8e2a\u5b9e\u4f53"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"Entities.AsNoTracking()"),"\uff1a\u624b\u52a8\u5173\u95ed\u5b9e\u4f53\u8ffd\u8e2a")),(0,i.kt)("p",null,"\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"EF Core")," \u4e2d\uff0c\u590d\u6742\u67e5\u8be2\u603b\u662f\u4f1a\u751f\u6210\u4e00\u4e2a ",(0,i.kt)("inlineCode",{parentName:"p"},"sql"),"\uff0c\u4e5f\u5c31\u662f ",(0,i.kt)("inlineCode",{parentName:"p"},"AsSingleQuery()"),"\uff0c\u6211\u4eec\u4e5f\u53ef\u4ee5\u8bbe\u7f6e\u4e3a ",(0,i.kt)("inlineCode",{parentName:"p"},"AsSplitQuery()")," \u5207\u5272\u6210\u591a\u4e2a\u67e5\u8be2\u3002"),(0,i.kt)("h2",{id:"91113-\u5206\u8868\u67e5\u8be2\u5c0f\u4f8b\u5b50"},"9.11.13 \u5206\u8868\u67e5\u8be2\u5c0f\u4f8b\u5b50"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'using Furion.DatabaseAccessor;\nusing Microsoft.EntityFrameworkCore;\nusing Microsoft.EntityFrameworkCore.Metadata.Builders;\nusing System;\nusing System.Collections.Generic;\n\nnamespace Furion.Core\n{\n public class Person : Entity, IEntityTypeBuilder\n {\n public string Name { get; set; }\n\n /// \n /// \u914d\u7f6e\u5b9e\u4f53\u5173\u7cfb\n /// \n /// \n /// \n /// \n public void Configure(EntityTypeBuilder entityBuilder, DbContext dbContext, Type dbContextLocator)\n {\n entityBuilder.ToSqlQuery(\n @"select * from dbo.person.2020-09-19\n union all\n select * from dbo.person.2020-09-20");\n }\n }\n}\n')),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"var posts = repository.Where(u => u.Id > 10).ToList();\n")),(0,i.kt)("h2",{id:"91114-\u53cd\u9988\u4e0e\u5efa\u8bae"},"9.11.14 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,i.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}y.isMDXComponent=!0},6010:function(e,n,t){function a(e){var n,t,r="";if("string"==typeof e||"number"==typeof e)r+=e;else if("object"==typeof e)if(Array.isArray(e))for(n=0;n=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var p=r.createContext({}),u=function(e){var t=r.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},c=function(e){var t=u(e.components);return r.createElement(p.Provider,{value:t},e.children)},d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},s=r.forwardRef((function(e,t){var n=e.components,i=e.mdxType,o=e.originalType,p=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),s=u(n),m=i,k=s["".concat(p,".").concat(m)]||s[m]||d[m]||o;return n?r.createElement(k,a(a({ref:t},c),{},{components:n})):r.createElement(k,a({ref:t},c))}));function m(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var o=n.length,a=new Array(o);a[0]=s;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l.mdxType="string"==typeof e?e:i,a[1]=l;for(var u=2;u.NET 6 Preview 6 SDK",id:"\u5b89\u88c5-net-6-preview-6-sdk",children:[]},{value:"\u65e7\u9879\u76ee\u5347\u7ea7",id:"\u65e7\u9879\u76ee\u5347\u7ea7",children:[]},{value:"\u65b0\u9879\u76ee\u4f7f\u7528",id:"\u65b0\u9879\u76ee\u4f7f\u7528",children:[{value:"\u5347\u7ea7 Visual Studio 2019",id:"\u5347\u7ea7-visual-studio-2019",children:[]},{value:"\u7b2c\u4e00\u4e2a\u4f8b\u5b50",id:"\u7b2c\u4e00\u4e2a\u4f8b\u5b50",children:[]},{value:"\u6253\u5f00\u5e76\u542f\u52a8\u9879\u76ee",id:"\u6253\u5f00\u5e76\u542f\u52a8\u9879\u76ee",children:[]}]}],s={toc:d};function m(e){var t=e.components,n=(0,i.Z)(e,a);return(0,o.kt)("wrapper",(0,r.Z)({},s,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"2021 \u5e74 08 \u6708 11 \u65e5\uff0c\u5fae\u8f6f\u53d1\u5e03\u4e86 ",(0,o.kt)("inlineCode",{parentName:"strong"},".NET 6 Preview 7")," \u7248\u672c\uff0c",(0,o.kt)("inlineCode",{parentName:"strong"},"Furion")," \u5728\u5f53\u5929\u7b2c\u4e00\u65f6\u95f4\u9002\u914d\u4e86\u8be5\u7248\u672c\uff0c\u5e76\u53d1\u5e03 ",(0,o.kt)("inlineCode",{parentName:"strong"},"Furion v3.0.0-rc.2")," \u7248\u672c\u3002")),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/tree/3.0.0-rc.2/"},"Furion .NET 6 Preview 7 \u6e90\u7801\u5730\u5740")),(0,o.kt)("h2",{id:"\u5b89\u88c5-net-6-preview-6-sdk"},"\u5b89\u88c5 ",(0,o.kt)("inlineCode",{parentName:"h2"},".NET 6 Preview 6 SDK")),(0,o.kt)("p",null,"\u5c1d\u9c9c\u4e4b\u524d\uff0c\u9996\u5148\u5148\u5b89\u88c5 ",(0,o.kt)("inlineCode",{parentName:"p"},".NET 6 Preview 7 SDK"),"\uff0c\u4e0b\u8f7d\u5730\u5740\uff1a",(0,o.kt)("a",{parentName:"p",href:"https://dotnet.microsoft.com/download/dotnet/6.0"},"https://dotnet.microsoft.com/download/dotnet/6.0")),(0,o.kt)("p",null,"\u4e0b\u8f7d\u5bf9\u5e94\u7cfb\u7edf\u548c\u5904\u7406\u5668\u7248\u672c\u5373\u53ef\u3002"),(0,o.kt)("h2",{id:"\u65e7\u9879\u76ee\u5347\u7ea7"},"\u65e7\u9879\u76ee\u5347\u7ea7"),(0,o.kt)("p",null,"\u7f16\u8f91\u6240\u6709 ",(0,o.kt)("inlineCode",{parentName:"p"},".csproj")," \u9879\u76ee\uff0c\u4fee\u6539 ",(0,o.kt)("inlineCode",{parentName:"p"},"net5.0")," \u4e3a ",(0,o.kt)("inlineCode",{parentName:"p"},"net6.0"),"\u3002"),(0,o.kt)("p",null,"\u540c\u65f6\u5347\u7ea7\u6240\u6709 ",(0,o.kt)("inlineCode",{parentName:"p"},"Microsoft")," \u548c ",(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u5305\u4e3a\u6700\u65b0\u7248\u672c\uff0c",(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u6700\u65b0\u7248\u672c\u4e3a\uff1a",(0,o.kt)("inlineCode",{parentName:"p"},"v3.0.0-rc.1"),"\u3002"),(0,o.kt)("h2",{id:"\u65b0\u9879\u76ee\u4f7f\u7528"},"\u65b0\u9879\u76ee\u4f7f\u7528"),(0,o.kt)("h3",{id:"\u5347\u7ea7-visual-studio-2019"},"\u5347\u7ea7 ",(0,o.kt)("inlineCode",{parentName:"h3"},"Visual Studio 2019")),(0,o.kt)("p",null,"\u76ee\u524d ",(0,o.kt)("inlineCode",{parentName:"p"},".NET 6 Preview 7")," \u652f\u6301\u4f7f\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"Visual Studio 2019 Preview 16.11.0 Preview 4.0")," \u7248\u672c\uff0c",(0,o.kt)("strong",{parentName:"p"},"\u6ce8\u610f\u662f ",(0,o.kt)("inlineCode",{parentName:"strong"},"Preview")," \u6700\u65b0\u7248\u672c"),"\u3002\u4e0b\u8f7d\u5730\u5740\uff1a",(0,o.kt)("a",{parentName:"p",href:"https://visualstudio.microsoft.com/zh-hans/thank-you-downloading-visual-studio/?sku=enterprise&ch=pre&rel=16"},"https://visualstudio.microsoft.com/zh-hans/thank-you-downloading-visual-studio/?sku=enterprise&ch=pre&rel=16")),(0,o.kt)("p",null,"\u5df2\u7ecf\u5b89\u88c5\u4e86 ",(0,o.kt)("inlineCode",{parentName:"p"},"Visual Studio 2019 Preview")," \u7248\u672c\u7684\u670b\u53cb\u76f4\u63a5\u5347\u7ea7\u5230\u6700\u65b0\u7248\u5373\u53ef\u3002"),(0,o.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u7279\u522b\u8bf4\u660e")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u5982\u679c\u4f7f\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"Visual Studio Code")," \u5f00\u53d1\uff0c\u53ef\u5ffd\u7565\u6b64\u9009\u9879\u3002"))),(0,o.kt)("h3",{id:"\u7b2c\u4e00\u4e2a\u4f8b\u5b50"},"\u7b2c\u4e00\u4e2a\u4f8b\u5b50"),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"Furion v3.0.0-rc.2")," \u76ee\u524d\u63d0\u4f9b\u4e86\u6240\u6709\u7c7b\u578b\u7684\u811a\u624b\u67b6\uff0c\u7248\u672c\u53f7\u7edf\u4e00 ",(0,o.kt)("inlineCode",{parentName:"p"},"3.0.0-rc.2"),"\u3002"),(0,o.kt)("p",null,"\u5b89\u88c5\u811a\u624b\u67b6\uff0c\u6253\u5f00 ",(0,o.kt)("inlineCode",{parentName:"p"},"CMD/Powershell")," \u6267\u884c\u4ee5\u4e0b\u547d\u4ee4\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"dotnet new --install Furion.Template.Api::3.0.0-rc.2\n")),(0,o.kt)("p",null,"\u521b\u5efa\u9879\u76ee"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"dotnet new furionapi -n FurionNET6\n")),(0,o.kt)("h3",{id:"\u6253\u5f00\u5e76\u542f\u52a8\u9879\u76ee"},"\u6253\u5f00\u5e76\u542f\u52a8\u9879\u76ee"),(0,o.kt)("p",null,"\u6253\u5f00\u6d4f\u89c8\u5668\u67e5\u770b\u6548\u679c\u5373\u53ef\u3002"))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/73d3b1ea.6c9c845e.js b/handbook/build/assets/js/73d3b1ea.6c9c845e.js deleted file mode 100644 index 1e6f9e3e762..00000000000 --- a/handbook/build/assets/js/73d3b1ea.6c9c845e.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[6709],{3905:function(e,t,n){n.d(t,{Zo:function(){return c},kt:function(){return m}});var r=n(7294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var p=r.createContext({}),u=function(e){var t=r.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},c=function(e){var t=u(e.components);return r.createElement(p.Provider,{value:t},e.children)},d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},s=r.forwardRef((function(e,t){var n=e.components,i=e.mdxType,o=e.originalType,p=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),s=u(n),m=i,k=s["".concat(p,".").concat(m)]||s[m]||d[m]||o;return n?r.createElement(k,a(a({ref:t},c),{},{components:n})):r.createElement(k,a({ref:t},c))}));function m(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var o=n.length,a=new Array(o);a[0]=s;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l.mdxType="string"==typeof e?e:i,a[1]=l;for(var u=2;u.NET 6 Preview 6 SDK",id:"\u5b89\u88c5-net-6-preview-6-sdk",children:[]},{value:"\u65e7\u9879\u76ee\u5347\u7ea7",id:"\u65e7\u9879\u76ee\u5347\u7ea7",children:[]},{value:"\u65b0\u9879\u76ee\u4f7f\u7528",id:"\u65b0\u9879\u76ee\u4f7f\u7528",children:[{value:"\u5347\u7ea7 Visual Studio 2019",id:"\u5347\u7ea7-visual-studio-2019",children:[]},{value:"\u7b2c\u4e00\u4e2a\u4f8b\u5b50",id:"\u7b2c\u4e00\u4e2a\u4f8b\u5b50",children:[]},{value:"\u6253\u5f00\u5e76\u542f\u52a8\u9879\u76ee",id:"\u6253\u5f00\u5e76\u542f\u52a8\u9879\u76ee",children:[]}]}],d={toc:c};function s(e){var t=e.components,n=(0,i.Z)(e,a);return(0,o.kt)("wrapper",(0,r.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"2021 \u5e74 08 \u6708 11 \u65e5\uff0c\u5fae\u8f6f\u53d1\u5e03\u4e86 ",(0,o.kt)("inlineCode",{parentName:"strong"},".NET 6 Preview 7")," \u7248\u672c\uff0c",(0,o.kt)("inlineCode",{parentName:"strong"},"Furion")," \u5728\u5f53\u5929\u7b2c\u4e00\u65f6\u95f4\u9002\u914d\u4e86\u8be5\u7248\u672c\uff0c\u5e76\u53d1\u5e03 ",(0,o.kt)("inlineCode",{parentName:"strong"},"Furion v3.0.0-rc.2")," \u7248\u672c\u3002")),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/tree/3.0.0-rc.2/"},"Furion .NET 6 Preview 7 \u6e90\u7801\u5730\u5740")),(0,o.kt)("h2",{id:"\u5b89\u88c5-net-6-preview-6-sdk"},"\u5b89\u88c5 ",(0,o.kt)("inlineCode",{parentName:"h2"},".NET 6 Preview 6 SDK")),(0,o.kt)("p",null,"\u5c1d\u9c9c\u4e4b\u524d\uff0c\u9996\u5148\u5148\u5b89\u88c5 ",(0,o.kt)("inlineCode",{parentName:"p"},".NET 6 Preview 7 SDK"),"\uff0c\u4e0b\u8f7d\u5730\u5740\uff1a",(0,o.kt)("a",{parentName:"p",href:"https://dotnet.microsoft.com/download/dotnet/6.0"},"https://dotnet.microsoft.com/download/dotnet/6.0")),(0,o.kt)("p",null,"\u4e0b\u8f7d\u5bf9\u5e94\u7cfb\u7edf\u548c\u5904\u7406\u5668\u7248\u672c\u5373\u53ef\u3002"),(0,o.kt)("h2",{id:"\u65e7\u9879\u76ee\u5347\u7ea7"},"\u65e7\u9879\u76ee\u5347\u7ea7"),(0,o.kt)("p",null,"\u7f16\u8f91\u6240\u6709 ",(0,o.kt)("inlineCode",{parentName:"p"},".csproj")," \u9879\u76ee\uff0c\u4fee\u6539 ",(0,o.kt)("inlineCode",{parentName:"p"},"net5.0")," \u4e3a ",(0,o.kt)("inlineCode",{parentName:"p"},"net6.0"),"\u3002"),(0,o.kt)("p",null,"\u540c\u65f6\u5347\u7ea7\u6240\u6709 ",(0,o.kt)("inlineCode",{parentName:"p"},"Microsoft")," \u548c ",(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u5305\u4e3a\u6700\u65b0\u7248\u672c\uff0c",(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u6700\u65b0\u7248\u672c\u4e3a\uff1a",(0,o.kt)("inlineCode",{parentName:"p"},"v3.0.0-rc.1"),"\u3002"),(0,o.kt)("h2",{id:"\u65b0\u9879\u76ee\u4f7f\u7528"},"\u65b0\u9879\u76ee\u4f7f\u7528"),(0,o.kt)("h3",{id:"\u5347\u7ea7-visual-studio-2019"},"\u5347\u7ea7 ",(0,o.kt)("inlineCode",{parentName:"h3"},"Visual Studio 2019")),(0,o.kt)("p",null,"\u76ee\u524d ",(0,o.kt)("inlineCode",{parentName:"p"},".NET 6 Preview 7")," \u652f\u6301\u4f7f\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"Visual Studio 2019 Preview 16.11.0 Preview 4.0")," \u7248\u672c\uff0c",(0,o.kt)("strong",{parentName:"p"},"\u6ce8\u610f\u662f ",(0,o.kt)("inlineCode",{parentName:"strong"},"Preview")," \u6700\u65b0\u7248\u672c"),"\u3002\u4e0b\u8f7d\u5730\u5740\uff1a",(0,o.kt)("a",{parentName:"p",href:"https://visualstudio.microsoft.com/zh-hans/thank-you-downloading-visual-studio/?sku=enterprise&ch=pre&rel=16"},"https://visualstudio.microsoft.com/zh-hans/thank-you-downloading-visual-studio/?sku=enterprise&ch=pre&rel=16")),(0,o.kt)("p",null,"\u5df2\u7ecf\u5b89\u88c5\u4e86 ",(0,o.kt)("inlineCode",{parentName:"p"},"Visual Studio 2019 Preview")," \u7248\u672c\u7684\u670b\u53cb\u76f4\u63a5\u5347\u7ea7\u5230\u6700\u65b0\u7248\u5373\u53ef\u3002"),(0,o.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u7279\u522b\u8bf4\u660e")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u5982\u679c\u4f7f\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"Visual Studio Code")," \u5f00\u53d1\uff0c\u53ef\u5ffd\u7565\u6b64\u9009\u9879\u3002"))),(0,o.kt)("h3",{id:"\u7b2c\u4e00\u4e2a\u4f8b\u5b50"},"\u7b2c\u4e00\u4e2a\u4f8b\u5b50"),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"Furion v3.0.0-rc.2")," \u76ee\u524d\u63d0\u4f9b\u4e86\u6240\u6709\u7c7b\u578b\u7684\u811a\u624b\u67b6\uff0c\u7248\u672c\u53f7\u7edf\u4e00 ",(0,o.kt)("inlineCode",{parentName:"p"},"3.0.0-rc.2"),"\u3002"),(0,o.kt)("p",null,"\u5b89\u88c5\u811a\u624b\u67b6\uff0c\u6253\u5f00 ",(0,o.kt)("inlineCode",{parentName:"p"},"CMD/Powershell")," \u6267\u884c\u4ee5\u4e0b\u547d\u4ee4\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"dotnet new --install Furion.Template.Api::3.0.0-rc.2\n")),(0,o.kt)("p",null,"\u521b\u5efa\u9879\u76ee"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"dotnet new furionapi -n FurionNET6\n")),(0,o.kt)("h3",{id:"\u6253\u5f00\u5e76\u542f\u52a8\u9879\u76ee"},"\u6253\u5f00\u5e76\u542f\u52a8\u9879\u76ee"),(0,o.kt)("p",null,"\u6253\u5f00\u6d4f\u89c8\u5668\u67e5\u770b\u6548\u679c\u5373\u53ef\u3002"))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/757fb418.2db4d295.js b/handbook/build/assets/js/757fb418.2db4d295.js new file mode 100644 index 00000000000..863a5dd14b0 --- /dev/null +++ b/handbook/build/assets/js/757fb418.2db4d295.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[651],{3905:function(e,t,n){n.d(t,{Zo:function(){return c},kt:function(){return m}});var r=n(7294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var p=r.createContext({}),u=function(e){var t=r.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},c=function(e){var t=u(e.components);return r.createElement(p.Provider,{value:t},e.children)},s={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,i=e.mdxType,o=e.originalType,p=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),d=u(n),m=i,f=d["".concat(p,".").concat(m)]||d[m]||s[m]||o;return n?r.createElement(f,a(a({ref:t},c),{},{components:n})):r.createElement(f,a({ref:t},c))}));function m(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var o=n.length,a=new Array(o);a[0]=d;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l.mdxType="string"==typeof e?e:i,a[1]=l;for(var u=2;u.NET 6 Preview 5 SDK",id:"\u5b89\u88c5-net-6-preview-5-sdk",children:[]},{value:"\u5347\u7ea7 Visual Studio 2019",id:"\u5347\u7ea7-visual-studio-2019",children:[]},{value:"\u7b2c\u4e00\u4e2a\u4f8b\u5b50",id:"\u7b2c\u4e00\u4e2a\u4f8b\u5b50",children:[]},{value:"\u6253\u5f00\u5e76\u542f\u52a8\u9879\u76ee",id:"\u6253\u5f00\u5e76\u542f\u52a8\u9879\u76ee",children:[]}]}],d={toc:s};function m(e){var t=e.components,n=(0,i.Z)(e,a);return(0,o.kt)("wrapper",(0,r.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"2021 \u5e74 06 \u6708 18 \u65e5\uff0c\u5fae\u8f6f\u53d1\u5e03\u4e86 ",(0,o.kt)("inlineCode",{parentName:"strong"},".NET 6 Preview 5")," \u7248\u672c\uff0c",(0,o.kt)("inlineCode",{parentName:"strong"},"Furion")," \u5728\u5f53\u5929\u7b2c\u4e00\u65f6\u95f4\u9002\u914d\u4e86\u8be5\u7248\u672c\uff0c\u5e76\u53d1\u5e03 ",(0,o.kt)("inlineCode",{parentName:"strong"},"Furion v3.0.0-preview.5.21301.9")," \u7248\u672c\u3002")),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/tree/net6.0-preview5/"},"Furion .NET 6 Preview 5 \u6e90\u7801\u5730\u5740")),(0,o.kt)("h2",{id:"\u7b49\u4e0d\u53ca\u5c1d\u9c9c\u4e86"},"\u7b49\u4e0d\u53ca\u5c1d\u9c9c\u4e86"),(0,o.kt)("h3",{id:"\u5b89\u88c5-net-6-preview-5-sdk"},"\u5b89\u88c5 ",(0,o.kt)("inlineCode",{parentName:"h3"},".NET 6 Preview 5 SDK")),(0,o.kt)("p",null,"\u5c1d\u9c9c\u4e4b\u524d\uff0c\u9996\u5148\u5148\u5b89\u88c5 ",(0,o.kt)("inlineCode",{parentName:"p"},".NET 6 Preview 5 SDK"),"\uff0c\u4e0b\u8f7d\u5730\u5740\uff1a",(0,o.kt)("a",{parentName:"p",href:"https://dotnet.microsoft.com/download/dotnet/6.0"},"https://dotnet.microsoft.com/download/dotnet/6.0")),(0,o.kt)("p",null,"\u4e0b\u8f7d\u5bf9\u5e94\u7cfb\u7edf\u548c\u5904\u7406\u5668\u7248\u672c\u5373\u53ef\u3002"),(0,o.kt)("h3",{id:"\u5347\u7ea7-visual-studio-2019"},"\u5347\u7ea7 ",(0,o.kt)("inlineCode",{parentName:"h3"},"Visual Studio 2019")),(0,o.kt)("p",null,"\u76ee\u524d ",(0,o.kt)("inlineCode",{parentName:"p"},".NET 6 Preview 5")," \u652f\u6301\u4f7f\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"Visual Studio 2019 Preview 16.11.0 Preview 2.0")," \u7248\u672c\uff0c",(0,o.kt)("strong",{parentName:"p"},"\u6ce8\u610f\u662f ",(0,o.kt)("inlineCode",{parentName:"strong"},"Preview")," \u6700\u65b0\u7248\u672c"),"\u3002\u4e0b\u8f7d\u5730\u5740\uff1a",(0,o.kt)("a",{parentName:"p",href:"https://visualstudio.microsoft.com/zh-hans/thank-you-downloading-visual-studio/?sku=enterprise&ch=pre&rel=16"},"https://visualstudio.microsoft.com/zh-hans/thank-you-downloading-visual-studio/?sku=enterprise&ch=pre&rel=16")),(0,o.kt)("p",null,"\u5df2\u7ecf\u5b89\u88c5\u4e86 ",(0,o.kt)("inlineCode",{parentName:"p"},"Visual Studio 2019 Preview")," \u7248\u672c\u7684\u670b\u53cb\u76f4\u63a5\u5347\u7ea7\u5230\u6700\u65b0\u7248\u5373\u53ef\u3002"),(0,o.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u7279\u522b\u8bf4\u660e")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u5982\u679c\u4f7f\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"Visual Studio Code")," \u5f00\u53d1\uff0c\u53ef\u5ffd\u7565\u6b64\u9009\u9879\u3002"))),(0,o.kt)("h3",{id:"\u7b2c\u4e00\u4e2a\u4f8b\u5b50"},"\u7b2c\u4e00\u4e2a\u4f8b\u5b50"),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"Furion v3.0.0-preview.5.21301.9")," \u76ee\u524d\u63d0\u4f9b\u4e86\u6240\u6709\u7c7b\u578b\u7684\u811a\u624b\u67b6\uff0c\u7248\u672c\u53f7\u7edf\u4e00 ",(0,o.kt)("inlineCode",{parentName:"p"},"3.0.0-preview.5.21301.9"),"\u3002"),(0,o.kt)("p",null,"\u5b89\u88c5\u811a\u624b\u67b6\uff0c\u6253\u5f00 ",(0,o.kt)("inlineCode",{parentName:"p"},"CMD/Powershell")," \u6267\u884c\u4ee5\u4e0b\u547d\u4ee4\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"dotnet new --install Furion.Template.Api::3.0.0-preview.5.21301.9\n")),(0,o.kt)("p",null,"\u521b\u5efa\u9879\u76ee"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"dotnet new furionapi -n FurionNET6\n")),(0,o.kt)("h3",{id:"\u6253\u5f00\u5e76\u542f\u52a8\u9879\u76ee"},"\u6253\u5f00\u5e76\u542f\u52a8\u9879\u76ee"),(0,o.kt)("p",null,"\u6253\u5f00\u6d4f\u89c8\u5668\u67e5\u770b\u6548\u679c\u5373\u53ef\u3002"))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/757fb418.ccbb6913.js b/handbook/build/assets/js/757fb418.ccbb6913.js deleted file mode 100644 index 8ea120bbf0a..00000000000 --- a/handbook/build/assets/js/757fb418.ccbb6913.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[651],{3905:function(e,t,n){n.d(t,{Zo:function(){return c},kt:function(){return m}});var r=n(7294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var p=r.createContext({}),u=function(e){var t=r.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},c=function(e){var t=u(e.components);return r.createElement(p.Provider,{value:t},e.children)},d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},s=r.forwardRef((function(e,t){var n=e.components,i=e.mdxType,o=e.originalType,p=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),s=u(n),m=i,f=s["".concat(p,".").concat(m)]||s[m]||d[m]||o;return n?r.createElement(f,a(a({ref:t},c),{},{components:n})):r.createElement(f,a({ref:t},c))}));function m(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var o=n.length,a=new Array(o);a[0]=s;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l.mdxType="string"==typeof e?e:i,a[1]=l;for(var u=2;u.NET 6 Preview 5 SDK",id:"\u5b89\u88c5-net-6-preview-5-sdk",children:[]},{value:"\u5347\u7ea7 Visual Studio 2019",id:"\u5347\u7ea7-visual-studio-2019",children:[]},{value:"\u7b2c\u4e00\u4e2a\u4f8b\u5b50",id:"\u7b2c\u4e00\u4e2a\u4f8b\u5b50",children:[]},{value:"\u6253\u5f00\u5e76\u542f\u52a8\u9879\u76ee",id:"\u6253\u5f00\u5e76\u542f\u52a8\u9879\u76ee",children:[]}]}],d={toc:c};function s(e){var t=e.components,n=(0,i.Z)(e,a);return(0,o.kt)("wrapper",(0,r.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"2021 \u5e74 06 \u6708 18 \u65e5\uff0c\u5fae\u8f6f\u53d1\u5e03\u4e86 ",(0,o.kt)("inlineCode",{parentName:"strong"},".NET 6 Preview 5")," \u7248\u672c\uff0c",(0,o.kt)("inlineCode",{parentName:"strong"},"Furion")," \u5728\u5f53\u5929\u7b2c\u4e00\u65f6\u95f4\u9002\u914d\u4e86\u8be5\u7248\u672c\uff0c\u5e76\u53d1\u5e03 ",(0,o.kt)("inlineCode",{parentName:"strong"},"Furion v3.0.0-preview.5.21301.9")," \u7248\u672c\u3002")),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/tree/net6.0-preview5/"},"Furion .NET 6 Preview 5 \u6e90\u7801\u5730\u5740")),(0,o.kt)("h2",{id:"\u7b49\u4e0d\u53ca\u5c1d\u9c9c\u4e86"},"\u7b49\u4e0d\u53ca\u5c1d\u9c9c\u4e86"),(0,o.kt)("h3",{id:"\u5b89\u88c5-net-6-preview-5-sdk"},"\u5b89\u88c5 ",(0,o.kt)("inlineCode",{parentName:"h3"},".NET 6 Preview 5 SDK")),(0,o.kt)("p",null,"\u5c1d\u9c9c\u4e4b\u524d\uff0c\u9996\u5148\u5148\u5b89\u88c5 ",(0,o.kt)("inlineCode",{parentName:"p"},".NET 6 Preview 5 SDK"),"\uff0c\u4e0b\u8f7d\u5730\u5740\uff1a",(0,o.kt)("a",{parentName:"p",href:"https://dotnet.microsoft.com/download/dotnet/6.0"},"https://dotnet.microsoft.com/download/dotnet/6.0")),(0,o.kt)("p",null,"\u4e0b\u8f7d\u5bf9\u5e94\u7cfb\u7edf\u548c\u5904\u7406\u5668\u7248\u672c\u5373\u53ef\u3002"),(0,o.kt)("h3",{id:"\u5347\u7ea7-visual-studio-2019"},"\u5347\u7ea7 ",(0,o.kt)("inlineCode",{parentName:"h3"},"Visual Studio 2019")),(0,o.kt)("p",null,"\u76ee\u524d ",(0,o.kt)("inlineCode",{parentName:"p"},".NET 6 Preview 5")," \u652f\u6301\u4f7f\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"Visual Studio 2019 Preview 16.11.0 Preview 2.0")," \u7248\u672c\uff0c",(0,o.kt)("strong",{parentName:"p"},"\u6ce8\u610f\u662f ",(0,o.kt)("inlineCode",{parentName:"strong"},"Preview")," \u6700\u65b0\u7248\u672c"),"\u3002\u4e0b\u8f7d\u5730\u5740\uff1a",(0,o.kt)("a",{parentName:"p",href:"https://visualstudio.microsoft.com/zh-hans/thank-you-downloading-visual-studio/?sku=enterprise&ch=pre&rel=16"},"https://visualstudio.microsoft.com/zh-hans/thank-you-downloading-visual-studio/?sku=enterprise&ch=pre&rel=16")),(0,o.kt)("p",null,"\u5df2\u7ecf\u5b89\u88c5\u4e86 ",(0,o.kt)("inlineCode",{parentName:"p"},"Visual Studio 2019 Preview")," \u7248\u672c\u7684\u670b\u53cb\u76f4\u63a5\u5347\u7ea7\u5230\u6700\u65b0\u7248\u5373\u53ef\u3002"),(0,o.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u7279\u522b\u8bf4\u660e")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u5982\u679c\u4f7f\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"Visual Studio Code")," \u5f00\u53d1\uff0c\u53ef\u5ffd\u7565\u6b64\u9009\u9879\u3002"))),(0,o.kt)("h3",{id:"\u7b2c\u4e00\u4e2a\u4f8b\u5b50"},"\u7b2c\u4e00\u4e2a\u4f8b\u5b50"),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"Furion v3.0.0-preview.5.21301.9")," \u76ee\u524d\u63d0\u4f9b\u4e86\u6240\u6709\u7c7b\u578b\u7684\u811a\u624b\u67b6\uff0c\u7248\u672c\u53f7\u7edf\u4e00 ",(0,o.kt)("inlineCode",{parentName:"p"},"3.0.0-preview.5.21301.9"),"\u3002"),(0,o.kt)("p",null,"\u5b89\u88c5\u811a\u624b\u67b6\uff0c\u6253\u5f00 ",(0,o.kt)("inlineCode",{parentName:"p"},"CMD/Powershell")," \u6267\u884c\u4ee5\u4e0b\u547d\u4ee4\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"dotnet new --install Furion.Template.Api::3.0.0-preview.5.21301.9\n")),(0,o.kt)("p",null,"\u521b\u5efa\u9879\u76ee"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"dotnet new furionapi -n FurionNET6\n")),(0,o.kt)("h3",{id:"\u6253\u5f00\u5e76\u542f\u52a8\u9879\u76ee"},"\u6253\u5f00\u5e76\u542f\u52a8\u9879\u76ee"),(0,o.kt)("p",null,"\u6253\u5f00\u6d4f\u89c8\u5668\u67e5\u770b\u6548\u679c\u5373\u53ef\u3002"))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/76437093.16591418.js b/handbook/build/assets/js/76437093.16591418.js new file mode 100644 index 00000000000..17e37b5e9e1 --- /dev/null +++ b/handbook/build/assets/js/76437093.16591418.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[4667],{3905:function(e,t,r){r.d(t,{Zo:function(){return p},kt:function(){return m}});var n=r(7294);function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t=1;t=0||(i[r]=e[r]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}var s=n.createContext({}),c=function(e){var t=n.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},p=function(e){var t=c(e.components);return n.createElement(s.Provider,{value:t},e.children)},d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},u=n.forwardRef((function(e,t){var r=e.components,i=e.mdxType,a=e.originalType,s=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),u=c(r),m=i,f=u["".concat(s,".").concat(m)]||u[m]||d[m]||a;return r?n.createElement(f,o(o({ref:t},p),{},{components:r})):n.createElement(f,o({ref:t},p))}));function m(e,t){var r=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var a=r.length,o=new Array(a);o[0]=u;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l.mdxType="string"==typeof e?e:i,o[1]=l;for(var c=2;c(str, [options]);\n")),(0,a.kt)("h2",{id:"73-\u83b7\u53d6\u9ed8\u8ba4\u5e8f\u5217\u5316\u914d\u7f6e"},"7.3 \u83b7\u53d6\u9ed8\u8ba4\u5e8f\u5217\u5316\u914d\u7f6e"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs"},"var options = JsonSerializerUtility.GetDefaultJsonSerializerOptions();\n")),(0,a.kt)("h2",{id:"74-\u8bbe\u7f6e\u5e8f\u5217\u5316\u5c5e\u6027\u9996\u5b57\u6bcd\u5927\u5199"},"7.4 \u8bbe\u7f6e\u5e8f\u5217\u5316\u5c5e\u6027\u9996\u5b57\u6bcd\u5927\u5199"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{2}","{2}":!0},"services.AddControllersWithViews()\n .AddJsonSerializerPascalPropertyNaming();\n")),(0,a.kt)("h2",{id:"75-\u8bbe\u7f6e\u65f6\u95f4\u8f93\u51fa\u7edf\u4e00\u683c\u5f0f\u5316"},"7.5 \u8bbe\u7f6e\u65f6\u95f4\u8f93\u51fa\u7edf\u4e00\u683c\u5f0f\u5316"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{2}","{2}":!0},'services.AddControllersWithViews()\n .AddDateTimeJsonConverter("yyyy-MM-dd HH:mm:ss");\n')))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/76437093.f3111ca0.js b/handbook/build/assets/js/76437093.f3111ca0.js deleted file mode 100644 index 5c781e92691..00000000000 --- a/handbook/build/assets/js/76437093.f3111ca0.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[4667],{3905:function(e,t,r){r.d(t,{Zo:function(){return p},kt:function(){return m}});var n=r(7294);function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t=1;t=0||(i[r]=e[r]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}var s=n.createContext({}),c=function(e){var t=n.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},p=function(e){var t=c(e.components);return n.createElement(s.Provider,{value:t},e.children)},d={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},u=n.forwardRef((function(e,t){var r=e.components,i=e.mdxType,a=e.originalType,s=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),u=c(r),m=i,f=u["".concat(s,".").concat(m)]||u[m]||d[m]||a;return r?n.createElement(f,o(o({ref:t},p),{},{components:r})):n.createElement(f,o({ref:t},p))}));function m(e,t){var r=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var a=r.length,o=new Array(a);o[0]=u;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l.mdxType="string"==typeof e?e:i,o[1]=l;for(var c=2;c(str, [options]);\n")),(0,a.kt)("h2",{id:"73-\u83b7\u53d6\u9ed8\u8ba4\u5e8f\u5217\u5316\u914d\u7f6e"},"7.3 \u83b7\u53d6\u9ed8\u8ba4\u5e8f\u5217\u5316\u914d\u7f6e"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs"},"var options = JsonSerializerUtility.GetDefaultJsonSerializerOptions();\n")),(0,a.kt)("h2",{id:"74-\u8bbe\u7f6e\u5e8f\u5217\u5316\u5c5e\u6027\u9996\u5b57\u6bcd\u5927\u5199"},"7.4 \u8bbe\u7f6e\u5e8f\u5217\u5316\u5c5e\u6027\u9996\u5b57\u6bcd\u5927\u5199"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{2}","{2}":!0},"services.AddControllersWithViews()\n .AddJsonSerializerPascalPropertyNaming();\n")),(0,a.kt)("h2",{id:"75-\u8bbe\u7f6e\u65f6\u95f4\u8f93\u51fa\u7edf\u4e00\u683c\u5f0f\u5316"},"7.5 \u8bbe\u7f6e\u65f6\u95f4\u8f93\u51fa\u7edf\u4e00\u683c\u5f0f\u5316"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{2}","{2}":!0},'services.AddControllersWithViews()\n .AddDateTimeJsonConverter("yyyy-MM-dd HH:mm:ss");\n')))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/7716ea34.1d8b637a.js b/handbook/build/assets/js/7716ea34.1d8b637a.js deleted file mode 100644 index 64067820b2b..00000000000 --- a/handbook/build/assets/js/7716ea34.1d8b637a.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[3104],{8534:function(n){n.exports=JSON.parse('{"allTagsPath":"/furion/blog/tags","slug":"net-5","name":".net5","count":6,"permalink":"/furion/blog/tags/net-5"}')}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/7716ea34.3289f74b.js b/handbook/build/assets/js/7716ea34.3289f74b.js new file mode 100644 index 00000000000..9e44be50def --- /dev/null +++ b/handbook/build/assets/js/7716ea34.3289f74b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[3104],{8534:function(n){n.exports=JSON.parse('{"allTagsPath":"/furion/blog/tags","slug":"/furion/blog/tags/net-5","name":".net5","count":6,"permalink":"/furion/blog/tags/net-5"}')}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/78e5e8dd.10a5602b.js b/handbook/build/assets/js/78e5e8dd.10a5602b.js new file mode 100644 index 00000000000..d5f3689371e --- /dev/null +++ b/handbook/build/assets/js/78e5e8dd.10a5602b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[5713],{3905:function(e,n,t){t.d(n,{Zo:function(){return c},kt:function(){return m}});var a=t(7294);function i(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function r(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function p(e){for(var n=1;n=0||(i[t]=e[t]);return i}(e,n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(i[t]=e[t])}return i}var l=a.createContext({}),s=function(e){var n=a.useContext(l),t=n;return e&&(t="function"==typeof e?e(n):p(p({},n),e)),t},c=function(e){var n=s(e.components);return a.createElement(l.Provider,{value:n},e.children)},u={inlineCode:"code",wrapper:function(e){var n=e.children;return a.createElement(a.Fragment,{},n)}},d=a.forwardRef((function(e,n){var t=e.components,i=e.mdxType,r=e.originalType,l=e.parentName,c=o(e,["components","mdxType","originalType","parentName"]),d=s(t),m=i,k=d["".concat(l,".").concat(m)]||d[m]||u[m]||r;return t?a.createElement(k,p(p({ref:n},c),{},{components:t})):a.createElement(k,p({ref:n},c))}));function m(e,n){var t=arguments,i=n&&n.mdxType;if("string"==typeof e||i){var r=t.length,p=new Array(r);p[0]=d;var o={};for(var l in n)hasOwnProperty.call(n,l)&&(o[l]=n[l]);o.originalType=e,o.mdxType="string"==typeof e?e:i,p[1]=o;for(var s=2;sStartup \u7c7b",id:"31-startup-\u7c7b",children:[{value:"3.1.1 Startup \u4e24\u4e2a\u91cd\u8981\u65b9\u6cd5",id:"311-startup-\u4e24\u4e2a\u91cd\u8981\u65b9\u6cd5",children:[]}]},{value:"3.2 AppStartup",id:"32-appstartup",children:[{value:"3.2.1 \u5982\u4f55\u914d\u7f6e AppStartup",id:"321-\u5982\u4f55\u914d\u7f6e-appstartup",children:[]},{value:"3.2.2 AppStartup \u7ea6\u5b9a",id:"322-appstartup-\u7ea6\u5b9a",children:[]},{value:"3.2.3 AppStartup \u914d\u7f6e\u987a\u5e8f",id:"323-appstartup-\u914d\u7f6e\u987a\u5e8f",children:[]},{value:"3.2.4 AppStartup \u65b9\u6cd5\u8c03\u7528\u987a\u5e8f",id:"324-appstartup-\u65b9\u6cd5\u8c03\u7528\u987a\u5e8f",children:[]}]},{value:"3.3 Startup \u914d\u7f6e\u6700\u4f73\u5b9e\u8df5",id:"33-startup-\u914d\u7f6e\u6700\u4f73\u5b9e\u8df5",children:[]},{value:"3.4 \u6784\u9020\u51fd\u6570\u6ce8\u5165\u8bf4\u660e",id:"34-\u6784\u9020\u51fd\u6570\u6ce8\u5165\u8bf4\u660e",children:[]},{value:"3.5 \u5173\u4e8e appsettings.json",id:"35-\u5173\u4e8e-appsettingsjson",children:[]},{value:"3.6 \u795e\u5947\u7684 Inject()",id:"36-\u795e\u5947\u7684-inject",children:[]},{value:"3.7 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"37-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],u={toc:c};function d(e){var n=e.components,t=(0,i.Z)(e,p);return(0,r.kt)("wrapper",(0,a.Z)({},u,t,{components:n,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"31-startup-\u7c7b"},"3.1 ",(0,r.kt)("inlineCode",{parentName:"h2"},"Startup")," \u7c7b"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Startup")," \u7c7b\u662f ",(0,r.kt)("inlineCode",{parentName:"p"},"ASP.NET Core")," \u5e94\u7528\u7a0b\u5e8f\u542f\u52a8\u9ed8\u8ba4\u8c03\u7528\u7684\u7c7b\uff0c\u8be5\u7c7b\u662f\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Program.cs")," \u4e2d\u914d\u7f6e\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:'{19} title="Furion.Web.Entry\\Program.cs"',"{19}":!0,title:'"Furion.Web.Entry\\Program.cs"'},"using Microsoft.AspNetCore.Hosting;\nusing Microsoft.Extensions.Hosting;\n\nnamespace Furion.Web.Entry\n{\n public class Program\n {\n public static void Main(string[] args)\n {\n CreateHostBuilder(args).Build().Run();\n }\n\n public static IHostBuilder CreateHostBuilder(string[] args)\n {\n return Host.CreateDefaultBuilder(args)\n .ConfigureWebHostDefaults(webBuilder =>\n {\n webBuilder\n .Inject()\n .UseStartup();\n });\n }\n }\n}\n")),(0,r.kt)("h3",{id:"311-startup-\u4e24\u4e2a\u91cd\u8981\u65b9\u6cd5"},"3.1.1 ",(0,r.kt)("inlineCode",{parentName:"h3"},"Startup")," \u4e24\u4e2a\u91cd\u8981\u65b9\u6cd5"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Startup")," \u9ed8\u8ba4\u6709\u4e24\u4e2a\u91cd\u8981\u7684\u65b9\u6cd5:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"ConfigureServices"),"\uff1a\u914d\u7f6e\u5e94\u7528\u6240\u9700\u670d\u52a1\uff0c\u5728\u8be5\u65b9\u6cd5\u4e2d\u53ef\u4ee5\u6dfb\u52a0\u5e94\u7528\u6240\u9700\u8981\u7684\u529f\u80fd\u6216\u670d\u52a1"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Configure"),"\uff1a\u914d\u7f6e\u5e94\u7528\u8bf7\u6c42\u5904\u7406\u7ba1\u9053")),(0,r.kt)("p",null,"\u9ed8\u8ba4\u4ee3\u7801\u5982\u4e0b\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:'{9,13} title="Furion.Web.Entry\\Startup.cs"',"{9,13}":!0,title:'"Furion.Web.Entry\\Startup.cs"'},"using Microsoft.AspNetCore.Builder;\nusing Microsoft.AspNetCore.Hosting;\nusing Microsoft.Extensions.DependencyInjection;\n\nnamespace Furion.Web.Entry\n{\n public class Startup\n {\n public void ConfigureServices(IServiceCollection services)\n {\n }\n\n public void Configure(IApplicationBuilder app, IWebHostEnvironment env)\n {\n }\n }\n}\n")),(0,r.kt)("p",null,"\u5728\u8fd9\u91cc\uff0c\u4e0d\u6253\u7b97\u8be6\u7ec6\u8bb2 ",(0,r.kt)("inlineCode",{parentName:"p"},"Startup")," \u7c7b\u7684\u5177\u4f53\u529f\u80fd\u548c\u4f5c\u7528\u3002"),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e86\u89e3\u66f4\u591a")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u60f3\u4e86\u89e3\u66f4\u591a ",(0,r.kt)("inlineCode",{parentName:"p"},"Startup")," \u77e5\u8bc6\u53ef\u67e5\u9605 ",(0,r.kt)("a",{parentName:"p",href:"https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/startup?view=aspnetcore-3.1"},"ASP.NET Core - Startup \u7c7b")," \u7ae0\u8282\u3002"))),(0,r.kt)("h2",{id:"32-appstartup"},"3.2 ",(0,r.kt)("inlineCode",{parentName:"h2"},"AppStartup")),(0,r.kt)("p",null,"\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\uff0c\u63d0\u4f9b\u4e86\u66f4\u4e3a\u7075\u6d3b\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"Startup")," \u7c7b\u914d\u7f6e\u65b9\u5f0f\uff0c\u65e0\u9700\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Web \u542f\u7528\u5c42")," \u4e2d\u914d\u7f6e\uff0c\u53ef\u5c06\u914d\u7f6e\u653e\u5230\u4efb\u4f55\u9879\u76ee\u5c42\u3002"),(0,r.kt)("p",null,"\u53ef\u80fd\u4f1a\u6709\u8bfb\u8005\u6709\u7591\u95ee\uff0c\u4e3a\u4ec0\u4e48\u8981\u591a\u6b64\u4e00\u4e3e\u5462\uff1f\u539f\u56e0\u6709\u51e0\u70b9\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Startup")," \u7c7b\u9ed8\u8ba4\u548c ",(0,r.kt)("inlineCode",{parentName:"li"},"Web \u5e94\u7528\u5c42")," \u7ed1\u5b9a\u5728\u4e00\u8d77\uff0c\u8fd9\u6837\u5c31\u4f1a\u5bfc\u81f4\u5982\u679c\u6211\u521b\u5efa\u4e86\u65b0\u7684 ",(0,r.kt)("inlineCode",{parentName:"li"},"Web \u5e94\u7528\u5c42"),"\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"Startup")," \u53c8\u8981\u91cd\u65b0\u914d\u7f6e"),(0,r.kt)("li",{parentName:"ul"},"\u968f\u7740\u4e1a\u52a1\u7684\u589e\u957f\uff0c\u9700\u8981\u96c6\u6210\u8d8a\u6765\u8d8a\u591a\u7684\u7b2c\u4e09\u65b9\u670d\u52a1\uff0c\u8fd9\u65f6\u5019 ",(0,r.kt)("inlineCode",{parentName:"li"},"Startup")," \u7c7b\u5c31\u4f1a\u53d8\u5f97\u8d8a\u6765\u8d8a\u81c3\u80bf\uff0c\u96be\u4ee5\u7ef4\u62a4"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Startup")," \u7c7b\u65e0\u6cd5\u4e0e\u5176\u4ed6\u9879\u76ee\u7c7b\u578b\u8fdb\u884c\u5171\u7528")),(0,r.kt)("p",null,"\u6240\u4ee5\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u63d0\u4f9b\u4e86\u66f4\u52a0\u7075\u6d3b\u7684\u914d\u7f6e\u65b9\u5f0f\uff1a",(0,r.kt)("inlineCode",{parentName:"p"},"AppStartup"),"\u3002"),(0,r.kt)("div",{className:"admonition admonition-warning alert alert--danger"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"}))),"\u6ce8\u610f\u4e8b\u9879")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u5982\u679c ",(0,r.kt)("inlineCode",{parentName:"p"},"AppStartup")," \u7684\u6d3e\u751f\u7c7b\u6240\u5728\u7684\u9879\u76ee\u5c42\u6ca1\u6709\u88ab\u542f\u52a8\u5c42\u76f4\u63a5\u6216\u95f4\u63a5\u6dfb\u52a0\u5f15\u7528\uff0c\u90a3\u4e48\u8fd9\u4e2a ",(0,r.kt)("inlineCode",{parentName:"p"},"Startup.cs")," \u5c31\u4f1a\u88ab\u5ffd\u7565\uff0c\u4e5f\u5c31\u662f\u4e0d\u4f1a\u81ea\u52a8\u8f7d\u5165\u6ce8\u518c\u3002"))),(0,r.kt)("h3",{id:"321-\u5982\u4f55\u914d\u7f6e-appstartup"},"3.2.1 \u5982\u4f55\u914d\u7f6e ",(0,r.kt)("inlineCode",{parentName:"h3"},"AppStartup")),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"AppStartup")," \u662f\u4e00\u4e2a\u62bd\u8c61\u7684\u7a7a\u7c7b\uff0c\u6ca1\u6709\u4efb\u4f55\u5b9a\u4e49\u6210\u5458\u3002\u6b63\u662f\u56e0\u4e3a\u8fd9\u6837\uff0c\u624d\u63d0\u4f9b\u66f4\u52a0\u7075\u6d3b\u7684\u914d\u7f6e\u65b9\u5f0f\u3002"),(0,r.kt)("h3",{id:"322-appstartup-\u7ea6\u5b9a"},"3.2.2 ",(0,r.kt)("inlineCode",{parentName:"h3"},"AppStartup")," \u7ea6\u5b9a"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"AppStartup")," \u6d3e\u751f\u7c7b\u53ea\u6709\u4e24\u4e2a\u5c0f\u7ea6\u5b9a\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u4efb\u4f55\u516c\u5f00\u3001\u975e\u9759\u6001\u3001\u8fd4\u56de\u503c\u4e3a ",(0,r.kt)("inlineCode",{parentName:"li"},"void")," \u4e14\u65b9\u6cd5\u7b2c\u4e00\u4e2a\u53c2\u6570\u662f ",(0,r.kt)("inlineCode",{parentName:"li"},"IServiceCollection")," \u7c7b\u578b\uff0c\u90a3\u4e48\u4ed6\u5c31\u662f\u4e00\u4e2a ",(0,r.kt)("inlineCode",{parentName:"li"},"ConfigureServices")," \u65b9\u6cd5"),(0,r.kt)("li",{parentName:"ul"},"\u4efb\u4f55\u516c\u5f00\u3001\u975e\u9759\u6001\u3001\u8fd4\u56de\u503c\u4e3a ",(0,r.kt)("inlineCode",{parentName:"li"},"void")," \u4e14\u65b9\u6cd5\u7b2c\u4e00\u4e2a\u53c2\u6570\u662f ",(0,r.kt)("inlineCode",{parentName:"li"},"IApplicationBuilder")," \u7c7b\u578b\uff0c\u7b2c\u4e8c\u4e2a\u53c2\u6570\u662f ",(0,r.kt)("inlineCode",{parentName:"li"},"IWebHostEnvironment")," \u7c7b\u578b\uff0c\u90a3\u4e48\u4ed6\u5c31\u662f\u4e00\u4e2a ",(0,r.kt)("inlineCode",{parentName:"li"},"Configure")," \u65b9\u6cd5")),(0,r.kt)("p",null,"\u6240\u4ee5\uff0c\u6211\u4eec\u53ef\u4ee5\u81ea\u7531\u7684\u7f16\u5199\u65b9\u6cd5\uff0c\u53ea\u8981\u9075\u5faa\u7ea6\u5b9a\u5373\u53ef\uff0c\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{5,7,12,18,23}","{5,7,12,18,23}":!0},"using Microsoft.Extensions.DependencyInjection;\n\nnamespace Furion.EntityFramework.Core\n{\n public class MyStartup : AppStartup\n {\n public void ConfigureServices(IServiceCollection services)\n {\n services.AddDataValidation();\n }\n\n public void Configure(IApplicationBuilder app, IWebHostEnvironment env)\n {\n app.UseSwagger();\n }\n\n // \u53ef\u4ee5\u968f\u610f\u5b9a\u4e49\u540d\u5b57\u548c\u65b9\u6cd5\n public void XXXXName(IServiceCollection services)\n {\n }\n\n // \u53ef\u4ee5\u968f\u610f\u5b9a\u4e49\u540d\u5b57\u548c\u65b9\u6cd5\n public void ZZZName(IApplicationBuilder app, IWebHostEnvironment env)\n {\n }\n }\n}\n")),(0,r.kt)("h3",{id:"323-appstartup-\u914d\u7f6e\u987a\u5e8f"},"3.2.3 ",(0,r.kt)("inlineCode",{parentName:"h3"},"AppStartup")," \u914d\u7f6e\u987a\u5e8f"),(0,r.kt)("p",null,"\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"AppStartup")," \u914d\u7f6e\u987a\u5e8f\u7531\u6240\u5728\u7a0b\u5e8f\u96c6\u7684\u540d\u79f0\u8fdb\u884c\u6b63\u5e8f\u8c03\u7528\uff0c\u5982\u679c\u6211\u4eec\u9700\u8981\u914d\u7f6e\u6267\u884c\u987a\u5e8f\uff0c\u53ea\u9700\u8981\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"AppStartup")," \u6d3e\u751f\u7c7b\u4e2d\u8d34 ",(0,r.kt)("inlineCode",{parentName:"p"},"[AppStartup(order)]")," \u7279\u6027\u5373\u53ef\u3002"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"order")," \u6570\u503c\u8d8a\u5927\uff0c\u8d8a\u5728\u524d\u9762\u8c03\u7528\uff0c\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{5}","{5}":!0},"using Microsoft.Extensions.DependencyInjection;\n\nnamespace Furion.EntityFramework.Core\n{\n [AppStartup(10)]\n public class FirstStartup : AppStartup\n {\n public void ConfigureServices(IServiceCollection services)\n {\n }\n\n public void Configure(IApplicationBuilder app, IWebHostEnvironment env)\n {\n }\n }\n}\n")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{5}","{5}":!0},"using Microsoft.Extensions.DependencyInjection;\n\nnamespace Furion.EntityFramework.Core\n{\n [AppStartup(9)]\n public class SecondStartup : AppStartup\n {\n public void ConfigureServices(IServiceCollection services)\n {\n }\n\n public void Configure(IApplicationBuilder app, IWebHostEnvironment env)\n {\n }\n }\n}\n")),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"FirstStartup")," \u4f1a\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"SecondStartup")," \u4e4b\u524d\u8c03\u7528\u3002"),(0,r.kt)("h3",{id:"324-appstartup-\u65b9\u6cd5\u8c03\u7528\u987a\u5e8f"},"3.2.4 ",(0,r.kt)("inlineCode",{parentName:"h3"},"AppStartup")," \u65b9\u6cd5\u8c03\u7528\u987a\u5e8f"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"AppStartup")," \u65b9\u6cd5\u8c03\u7528\u987a\u5e8f\u548c\u65b9\u6cd5\u7684\u4e66\u5199\u5148\u540e\u6709\u5173\uff0c\u8d8a\u5728\u524d\u9762\u7684\u65b9\u6cd5\u8d8a\u5148\u8c03\u7528\u3002"),(0,r.kt)("h2",{id:"33-startup-\u914d\u7f6e\u6700\u4f73\u5b9e\u8df5"},"3.3 ",(0,r.kt)("inlineCode",{parentName:"h2"},"Startup")," \u914d\u7f6e\u6700\u4f73\u5b9e\u8df5"),(0,r.kt)("p",null,"\u5efa\u8bae ",(0,r.kt)("inlineCode",{parentName:"p"},"Web")," \u542f\u52a8\u5c42\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"Startup.cs")," \u4fdd\u6301\u4e3a\u7a7a\u65b9\u6cd5\u4f53\uff0c\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:'title="Furion.Web.Entry\\Startup.cs"',title:'"Furion.Web.Entry\\Startup.cs"'},"using Microsoft.AspNetCore.Builder;\nusing Microsoft.AspNetCore.Hosting;\nusing Microsoft.Extensions.DependencyInjection;\n\nnamespace Furion.Web.Entry\n{\n public class Startup\n {\n public void ConfigureServices(IServiceCollection services)\n {\n }\n\n public void Configure(IApplicationBuilder app, IWebHostEnvironment env)\n {\n }\n }\n}\n")),(0,r.kt)("p",null,"\u5c06\u6240\u6709 ",(0,r.kt)("inlineCode",{parentName:"p"},"Web \u5e94\u7528\u5c42")," \u914d\u7f6e\u8fc1\u79fb\u5230 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion.Web.Core.Startup.cs")," \u4e2d\uff0c\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:'title="Furion.Web.Core\\Startup.cs"',title:'"Furion.Web.Core\\Startup.cs"'},"using Microsoft.AspNetCore.Builder;\nusing Microsoft.AspNetCore.Hosting;\nusing Microsoft.Extensions.DependencyInjection;\nusing Microsoft.Extensions.Hosting;\n\nnamespace Furion.Web.Core\n{\n [AppStartup(800)]\n public sealed class FurWebCoreStartup : AppStartup\n {\n public void ConfigureServices(IServiceCollection services)\n {\n services.AddCorsAccessor();\n\n services.AddControllers().AddInject();\n }\n\n public void Configure(IApplicationBuilder app, IWebHostEnvironment env)\n {\n if (env.IsDevelopment())\n {\n app.UseDeveloperExceptionPage();\n }\n\n app.UseHttpsRedirection();\n\n app.UseRouting();\n\n app.UseCorsAccessor();\n\n app.UseAuthentication();\n app.UseAuthorization();\n\n app.UseInject();\n\n app.UseEndpoints(endpoints =>\n {\n endpoints.MapControllers();\n });\n }\n }\n}\n")),(0,r.kt)("p",null,"\u8fd9\u6837\uff0c\u540e\u7eed\u66f4\u6362 ",(0,r.kt)("inlineCode",{parentName:"p"},"Web \u5e94\u7528\u5c42")," \u4e5f\u65e0\u9700\u91cd\u65b0\u914d\u7f6e ",(0,r.kt)("inlineCode",{parentName:"p"},"Startup.cs")),(0,r.kt)("h2",{id:"34-\u6784\u9020\u51fd\u6570\u6ce8\u5165\u8bf4\u660e"},"3.4 \u6784\u9020\u51fd\u6570\u6ce8\u5165\u8bf4\u660e"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"AppStartup")," \u7684\u6d3e\u751f\u7c7b\u5e76\u672a\u63d0\u4f9b\u4f9d\u8d56\u6ce8\u5165\u7684\u529f\u80fd\uff0c\u4e5f\u5373\u662f\u65e0\u6cd5\u901a\u8fc7\u6784\u9020\u51fd\u6570\u8fdb\u884c\u6ce8\u5165\u670d\u52a1\u3002\u539f\u56e0\u662f ",(0,r.kt)("inlineCode",{parentName:"p"},"AppStartup")," \u662f\u4e2a\u7a7a\u7c7b\uff0c\u76ee\u7684\u662f\u7528\u6765\u67e5\u627e ",(0,r.kt)("inlineCode",{parentName:"p"},"Startup")," \u7684\u3002"),(0,r.kt)("p",null,"\u90a3\u5982\u4f55\u50cf ",(0,r.kt)("inlineCode",{parentName:"p"},"Startup.cs")," \u4e00\u6837\u4f7f\u7528\u670d\u52a1\u5462\uff1f"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u83b7\u53d6\u914d\u7f6e ",(0,r.kt)("inlineCode",{parentName:"li"},"IConfiguration")," \u5b9e\u4f8b\uff1a\u901a\u8fc7 ",(0,r.kt)("inlineCode",{parentName:"li"},"App.Configuration")),(0,r.kt)("li",{parentName:"ul"},"\u89e3\u6790\u670d\u52a1\uff1a\u901a\u8fc7 ",(0,r.kt)("inlineCode",{parentName:"li"},"App.GetService()")," \u6216 ",(0,r.kt)("inlineCode",{parentName:"li"},"app.ApplicationServices.GetService()"))),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u5173\u4e8e ",(0,r.kt)("inlineCode",{parentName:"h5"},"Configure")," \u65b9\u6cd5\u6ce8\u5165")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},(0,r.kt)("inlineCode",{parentName:"p"},"AppStartup")," \u9488\u5bf9 ",(0,r.kt)("inlineCode",{parentName:"p"},"Configure")," \u65b9\u6cd5\u63d0\u4f9b\u4e86\u53c2\u6570\u89e3\u6790\u6ce8\u5165\u529f\u80fd\uff0c\u4e5f\u5c31\u662f\u53ea\u8981\u5728\u65b9\u6cd5\u4e2d\u58f0\u660e\u63a5\u53e3\u53c2\u6570\u5373\u53ef\u81ea\u52a8\u6ce8\u5165\uff0c\u5982\uff1a"),(0,r.kt)("pre",{parentName:"div"},(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,2}","{1,2}":!0},"// app \u548c env \u4f1a\u81ea\u52a8\u6ce8\u5165\npublic void Configure(IApplicationBuilder app, IWebHostEnvironment env)\n{\n}\n")))),(0,r.kt)("h2",{id:"35-\u5173\u4e8e-appsettingsjson"},"3.5 \u5173\u4e8e ",(0,r.kt)("inlineCode",{parentName:"h2"},"appsettings.json")),(0,r.kt)("p",null,"\u5728\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"ASP.NET Core")," \u914d\u7f6e\u653e\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"appsettings.json")," \u4e2d\u914d\u7f6e\uff0c\u4f46\u662f\u8fd9\u6837\u7684\u65b9\u5f0f\u548c ",(0,r.kt)("inlineCode",{parentName:"p"},"Startup.cs")," \u914d\u7f6e\u4e00\u6837\u7684\u9053\u7406\uff0c\u4e00\u65e6\u6211\u4eec\u66f4\u6362\u4e86 ",(0,r.kt)("inlineCode",{parentName:"p"},"Web \u5e94\u7528\u5c42"),"\uff0c\u90a3\u4e48 ",(0,r.kt)("inlineCode",{parentName:"p"},"appsettings.json")," \u53c8\u8981\u91cd\u65b0\u914d\u7f6e\u4e00\u6b21\u3002"),(0,r.kt)("p",null,"\u6240\u4ee5\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u4e86\u66f4\u52a0\u7075\u6d3b\u7684\u65b9\u5f0f\u914d\u7f6e ",(0,r.kt)("inlineCode",{parentName:"p"},"appsettings.json"),"\uff0c",(0,r.kt)("strong",{parentName:"p"},"\u53ea\u9700\u8981\u5728\u4efb\u4f55\u9879\u76ee\u5c42\u6839\u76ee\u5f55\u4e0b\u521b\u5efa ",(0,r.kt)("inlineCode",{parentName:"strong"},".json")," \u6587\u4ef6\u5373\u53ef\u3002",(0,r.kt)("inlineCode",{parentName:"strong"},"Furion")," \u6846\u67b6\u6700\u540e\u4f1a\u81ea\u52a8\u5408\u5e76\u6240\u6709\u5206\u6563\u7684\u914d\u7f6e\u6587\u4ef6\u3002")),(0,r.kt)("p",null,"\u5982\u6211\u4eec\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion.EntityFramework.Core")," \u5c42\u521b\u5efa ",(0,r.kt)("inlineCode",{parentName:"p"},"dbsettings.json")," \u914d\u7f6e\u6570\u636e\u5e93\u8fde\u63a5\u5b57\u7b26\u4e32\uff0c\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json",metastring:'title="Furion.EntityFramework.Core\\dbsettings.json"',title:'"Furion.EntityFramework.Core\\dbsettings.json"'},'{\n "ConnectionStrings": {\n "DbConnectionString": "Server=localhost;Database=Furion;User=sa;Password=000000;MultipleActiveResultSets=True;",\n "Sqlite3ConnectionString": "Data Source=./Furion.db"\n }\n}\n')),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"\u65e0\u9700\u5728 ",(0,r.kt)("inlineCode",{parentName:"strong"},"appsettings.json")," \u4e2d\u914d\u7f6e"),"\uff0c\u4e0b\u9762\u662f ",(0,r.kt)("inlineCode",{parentName:"p"},"appsettings.json")," \u9ed8\u8ba4\u4ee3\u7801:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json"},'{\n "Logging": {\n "LogLevel": {\n "Default": "Information",\n "Microsoft": "Warning",\n "Microsoft.Hosting.Lifetime": "Information",\n "Microsoft.EntityFrameworkCore": "Information"\n }\n },\n "AllowedHosts": "*"\n}\n')),(0,r.kt)("p",null,"\u8fd9\u6837\u6211\u4eec\u628a\u914d\u7f6e\u6587\u4ef6\u5206\u6563\u5728\u4e0d\u540c\u9879\u76ee\u5c42\u4e4b\u540e\uff0c\u5c31\u53ef\u4ee5\u5b9e\u73b0\u5171\u7528\u548c\u5171\u4eab\u4e86\u3002"),(0,r.kt)("div",{className:"admonition admonition-caution alert alert--warning"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 16 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"}))),"\u7279\u522b\u6ce8\u610f")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u5176\u4ed6\u5c42\u7684\u914d\u7f6e\u6587\u4ef6\u4e0d\u80fd\u4ee5 ",(0,r.kt)("inlineCode",{parentName:"p"},"appsettings.json")," \u547d\u540d\uff0c\u4f1a\u5bfc\u81f4\u8986\u76d6\u542f\u52a8\u5c42\u7684\u914d\u7f6e\u3002"),(0,r.kt)("p",{parentName:"div"},"\u53e6\u5916\uff0c\u5728\u5176\u4ed6\u5c42\u521b\u5efa\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"*.json")," \u6587\u4ef6\u5fc5\u987b\u8bbe\u7f6e\u6587\u4ef6\u5c5e\u6027\u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"\u59cb\u7ec8\u590d\u5236\u6216\u8f83\u65b0\u590d\u5236"),"\u3002"))),(0,r.kt)("h2",{id:"36-\u795e\u5947\u7684-inject"},"3.6 \u795e\u5947\u7684 ",(0,r.kt)("inlineCode",{parentName:"h2"},"Inject()")),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Inject()")," \u65b9\u6cd5\u662f ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u7684\u6700\u5c0f\u4fb5\u5165\u5f0f\u7684\u65b9\u6cd5\uff0c\u53ef\u4ee5\u8ba9\u4efb\u4f55 ",(0,r.kt)("inlineCode",{parentName:"p"},"ASP.NET Core")," Web \u9879\u76ee\u77ac\u95f4\u652f\u6301\u6240\u6709 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u7279\u6027\u3002"),(0,r.kt)("p",null,"\u6211\u4eec\u521b\u5efa\u4e86\u65b0\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"Web \u9879\u76ee"),"\uff0c\u53ea\u9700\u8981\u4e09\u4e2a\u6b65\u9aa4\u5373\u53ef\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"li"},"Furion.Web.Core")," \u9879\u76ee\u5f15\u7528"),(0,r.kt)("li",{parentName:"ul"},"\u5728 ",(0,r.kt)("inlineCode",{parentName:"li"},"Program.cs")," \u4e2d\u8c03\u7528\u5373\u53ef"),(0,r.kt)("li",{parentName:"ul"},"\u5c06 ",(0,r.kt)("inlineCode",{parentName:"li"},"Startup.cs")," \u4ee3\u7801\u8fc1\u79fb\u5230 ",(0,r.kt)("inlineCode",{parentName:"li"},"Furion.Web.Core")," \u9879\u76ee\u7684 ",(0,r.kt)("inlineCode",{parentName:"li"},"Startup.cs")," \u4e2d")),(0,r.kt)("p",null,"\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:'{18} title="Furion.Web.Entry\\Program.cs"',"{18}":!0,title:'"Furion.Web.Entry\\Program.cs"'},"using Microsoft.AspNetCore.Hosting;\nusing Microsoft.Extensions.Hosting;\n\nnamespace Furion.Web.Entry\n{\n public class Program\n {\n public static void Main(string[] args)\n {\n CreateHostBuilder(args).Build().Run();\n }\n\n public static IHostBuilder CreateHostBuilder(string[] args)\n {\n return Host.CreateDefaultBuilder(args)\n .ConfigureWebHostDefaults(webBuilder =>\n {\n webBuilder.Inject()\n .UseStartup();\n });\n }\n }\n}\n")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:'title="Furion.Web.Entry\\Startup.cs"',title:'"Furion.Web.Entry\\Startup.cs"'},"using Microsoft.AspNetCore.Builder;\nusing Microsoft.AspNetCore.Hosting;\nusing Microsoft.Extensions.DependencyInjection;\n\nnamespace Furion.Web.Entry\n{\n public class Startup\n {\n public void ConfigureServices(IServiceCollection services)\n {\n }\n\n public void Configure(IApplicationBuilder app, IWebHostEnvironment env)\n {\n }\n }\n}\n")),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),(0,r.kt)("inlineCode",{parentName:"h5"},"Startup.cs")," \u4ee3\u7801\u8fc1\u79fb")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u53ea\u9700\u8981\u5c06 ",(0,r.kt)("inlineCode",{parentName:"p"},"ConfigureServices")," \u548c ",(0,r.kt)("inlineCode",{parentName:"p"},"Configure")," \u65b9\u6cd5\u4ee3\u7801\u8fc1\u79fb\u5230 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion.Web.Core.Startup.cs")," \u4e2d\u5373\u53ef\uff0c\u800c ",(0,r.kt)("inlineCode",{parentName:"p"},"Startup.cs")," \u4e2d\u4e24\u4e2a\u65b9\u6cd5\u7559\u7a7a\u5373\u53ef\u3002"))),(0,r.kt)("p",null,"\u975e\u5e38\u7b80\u5355\u5427\u3002\u6211\u4eec\u540e\u7eed\u521b\u5efa\u4efb\u4f55 ",(0,r.kt)("inlineCode",{parentName:"p"},"MVC"),"\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"RazorPages"),"\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"Blazor")," \u9879\u76ee\u53ea\u9700\u8981\u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion.Web.Core")," \u5f15\u7528\u548c\u8c03\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"Inject()")," \u5373\u53ef\u3002"),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e86\u89e3\u66f4\u591a")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u60f3\u4e86\u89e3\u66f4\u591a ",(0,r.kt)("inlineCode",{parentName:"p"},"Inject")," \u77e5\u8bc6\u53ef\u67e5\u9605 ",(0,r.kt)("a",{parentName:"p",href:"/docs/inject"},"2.4 \u795e\u5947\u7684 Inject")," \u7ae0\u8282\u3002"))),(0,r.kt)("h2",{id:"37-\u53cd\u9988\u4e0e\u5efa\u8bae"},"3.7 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,r.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/78e5e8dd.ea4132d2.js b/handbook/build/assets/js/78e5e8dd.ea4132d2.js deleted file mode 100644 index 97bb8c41e6a..00000000000 --- a/handbook/build/assets/js/78e5e8dd.ea4132d2.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[5713],{3905:function(e,n,t){t.d(n,{Zo:function(){return c},kt:function(){return m}});var a=t(7294);function i(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function r(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function p(e){for(var n=1;n=0||(i[t]=e[t]);return i}(e,n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(i[t]=e[t])}return i}var l=a.createContext({}),s=function(e){var n=a.useContext(l),t=n;return e&&(t="function"==typeof e?e(n):p(p({},n),e)),t},c=function(e){var n=s(e.components);return a.createElement(l.Provider,{value:n},e.children)},u={inlineCode:"code",wrapper:function(e){var n=e.children;return a.createElement(a.Fragment,{},n)}},d=a.forwardRef((function(e,n){var t=e.components,i=e.mdxType,r=e.originalType,l=e.parentName,c=o(e,["components","mdxType","originalType","parentName"]),d=s(t),m=i,k=d["".concat(l,".").concat(m)]||d[m]||u[m]||r;return t?a.createElement(k,p(p({ref:n},c),{},{components:t})):a.createElement(k,p({ref:n},c))}));function m(e,n){var t=arguments,i=n&&n.mdxType;if("string"==typeof e||i){var r=t.length,p=new Array(r);p[0]=d;var o={};for(var l in n)hasOwnProperty.call(n,l)&&(o[l]=n[l]);o.originalType=e,o.mdxType="string"==typeof e?e:i,p[1]=o;for(var s=2;sStartup \u7c7b",id:"31-startup-\u7c7b",children:[{value:"3.1.1 Startup \u4e24\u4e2a\u91cd\u8981\u65b9\u6cd5",id:"311-startup-\u4e24\u4e2a\u91cd\u8981\u65b9\u6cd5",children:[]}]},{value:"3.2 AppStartup",id:"32-appstartup",children:[{value:"3.2.1 \u5982\u4f55\u914d\u7f6e AppStartup",id:"321-\u5982\u4f55\u914d\u7f6e-appstartup",children:[]},{value:"3.2.2 AppStartup \u7ea6\u5b9a",id:"322-appstartup-\u7ea6\u5b9a",children:[]},{value:"3.2.3 AppStartup \u914d\u7f6e\u987a\u5e8f",id:"323-appstartup-\u914d\u7f6e\u987a\u5e8f",children:[]},{value:"3.2.4 AppStartup \u65b9\u6cd5\u8c03\u7528\u987a\u5e8f",id:"324-appstartup-\u65b9\u6cd5\u8c03\u7528\u987a\u5e8f",children:[]}]},{value:"3.3 Startup \u914d\u7f6e\u6700\u4f73\u5b9e\u8df5",id:"33-startup-\u914d\u7f6e\u6700\u4f73\u5b9e\u8df5",children:[]},{value:"3.4 \u6784\u9020\u51fd\u6570\u6ce8\u5165\u8bf4\u660e",id:"34-\u6784\u9020\u51fd\u6570\u6ce8\u5165\u8bf4\u660e",children:[]},{value:"3.5 \u5173\u4e8e appsettings.json",id:"35-\u5173\u4e8e-appsettingsjson",children:[]},{value:"3.6 \u795e\u5947\u7684 Inject()",id:"36-\u795e\u5947\u7684-inject",children:[]},{value:"3.7 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"37-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],u={toc:c};function d(e){var n=e.components,t=(0,i.Z)(e,p);return(0,r.kt)("wrapper",(0,a.Z)({},u,t,{components:n,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"31-startup-\u7c7b"},"3.1 ",(0,r.kt)("inlineCode",{parentName:"h2"},"Startup")," \u7c7b"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Startup")," \u7c7b\u662f ",(0,r.kt)("inlineCode",{parentName:"p"},"ASP.NET Core")," \u5e94\u7528\u7a0b\u5e8f\u542f\u52a8\u9ed8\u8ba4\u8c03\u7528\u7684\u7c7b\uff0c\u8be5\u7c7b\u662f\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Program.cs")," \u4e2d\u914d\u7f6e\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:'{19} title="Furion.Web.Entry\\Program.cs"',"{19}":!0,title:'"Furion.Web.Entry\\Program.cs"'},"using Microsoft.AspNetCore.Hosting;\nusing Microsoft.Extensions.Hosting;\n\nnamespace Furion.Web.Entry\n{\n public class Program\n {\n public static void Main(string[] args)\n {\n CreateHostBuilder(args).Build().Run();\n }\n\n public static IHostBuilder CreateHostBuilder(string[] args)\n {\n return Host.CreateDefaultBuilder(args)\n .ConfigureWebHostDefaults(webBuilder =>\n {\n webBuilder\n .Inject()\n .UseStartup();\n });\n }\n }\n}\n")),(0,r.kt)("h3",{id:"311-startup-\u4e24\u4e2a\u91cd\u8981\u65b9\u6cd5"},"3.1.1 ",(0,r.kt)("inlineCode",{parentName:"h3"},"Startup")," \u4e24\u4e2a\u91cd\u8981\u65b9\u6cd5"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Startup")," \u9ed8\u8ba4\u6709\u4e24\u4e2a\u91cd\u8981\u7684\u65b9\u6cd5:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"ConfigureServices"),"\uff1a\u914d\u7f6e\u5e94\u7528\u6240\u9700\u670d\u52a1\uff0c\u5728\u8be5\u65b9\u6cd5\u4e2d\u53ef\u4ee5\u6dfb\u52a0\u5e94\u7528\u6240\u9700\u8981\u7684\u529f\u80fd\u6216\u670d\u52a1"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Configure"),"\uff1a\u914d\u7f6e\u5e94\u7528\u8bf7\u6c42\u5904\u7406\u7ba1\u9053")),(0,r.kt)("p",null,"\u9ed8\u8ba4\u4ee3\u7801\u5982\u4e0b\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:'{9,13} title="Furion.Web.Entry\\Startup.cs"',"{9,13}":!0,title:'"Furion.Web.Entry\\Startup.cs"'},"using Microsoft.AspNetCore.Builder;\nusing Microsoft.AspNetCore.Hosting;\nusing Microsoft.Extensions.DependencyInjection;\n\nnamespace Furion.Web.Entry\n{\n public class Startup\n {\n public void ConfigureServices(IServiceCollection services)\n {\n }\n\n public void Configure(IApplicationBuilder app, IWebHostEnvironment env)\n {\n }\n }\n}\n")),(0,r.kt)("p",null,"\u5728\u8fd9\u91cc\uff0c\u4e0d\u6253\u7b97\u8be6\u7ec6\u8bb2 ",(0,r.kt)("inlineCode",{parentName:"p"},"Startup")," \u7c7b\u7684\u5177\u4f53\u529f\u80fd\u548c\u4f5c\u7528\u3002"),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e86\u89e3\u66f4\u591a")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u60f3\u4e86\u89e3\u66f4\u591a ",(0,r.kt)("inlineCode",{parentName:"p"},"Startup")," \u77e5\u8bc6\u53ef\u67e5\u9605 ",(0,r.kt)("a",{parentName:"p",href:"https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/startup?view=aspnetcore-3.1"},"ASP.NET Core - Startup \u7c7b")," \u7ae0\u8282\u3002"))),(0,r.kt)("h2",{id:"32-appstartup"},"3.2 ",(0,r.kt)("inlineCode",{parentName:"h2"},"AppStartup")),(0,r.kt)("p",null,"\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\uff0c\u63d0\u4f9b\u4e86\u66f4\u4e3a\u7075\u6d3b\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"Startup")," \u7c7b\u914d\u7f6e\u65b9\u5f0f\uff0c\u65e0\u9700\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Web \u542f\u7528\u5c42")," \u4e2d\u914d\u7f6e\uff0c\u53ef\u5c06\u914d\u7f6e\u653e\u5230\u4efb\u4f55\u9879\u76ee\u5c42\u3002"),(0,r.kt)("p",null,"\u53ef\u80fd\u4f1a\u6709\u8bfb\u8005\u6709\u7591\u95ee\uff0c\u4e3a\u4ec0\u4e48\u8981\u591a\u6b64\u4e00\u4e3e\u5462\uff1f\u539f\u56e0\u6709\u51e0\u70b9\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Startup")," \u7c7b\u9ed8\u8ba4\u548c ",(0,r.kt)("inlineCode",{parentName:"li"},"Web \u5e94\u7528\u5c42")," \u7ed1\u5b9a\u5728\u4e00\u8d77\uff0c\u8fd9\u6837\u5c31\u4f1a\u5bfc\u81f4\u5982\u679c\u6211\u521b\u5efa\u4e86\u65b0\u7684 ",(0,r.kt)("inlineCode",{parentName:"li"},"Web \u5e94\u7528\u5c42"),"\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"Startup")," \u53c8\u8981\u91cd\u65b0\u914d\u7f6e"),(0,r.kt)("li",{parentName:"ul"},"\u968f\u7740\u4e1a\u52a1\u7684\u589e\u957f\uff0c\u9700\u8981\u96c6\u6210\u8d8a\u6765\u8d8a\u591a\u7684\u7b2c\u4e09\u65b9\u670d\u52a1\uff0c\u8fd9\u65f6\u5019 ",(0,r.kt)("inlineCode",{parentName:"li"},"Startup")," \u7c7b\u5c31\u4f1a\u53d8\u5f97\u8d8a\u6765\u8d8a\u81c3\u80bf\uff0c\u96be\u4ee5\u7ef4\u62a4"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Startup")," \u7c7b\u65e0\u6cd5\u4e0e\u5176\u4ed6\u9879\u76ee\u7c7b\u578b\u8fdb\u884c\u5171\u7528")),(0,r.kt)("p",null,"\u6240\u4ee5\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u63d0\u4f9b\u4e86\u66f4\u52a0\u7075\u6d3b\u7684\u914d\u7f6e\u65b9\u5f0f\uff1a",(0,r.kt)("inlineCode",{parentName:"p"},"AppStartup"),"\u3002"),(0,r.kt)("div",{className:"admonition admonition-warning alert alert--danger"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"}))),"\u6ce8\u610f\u4e8b\u9879")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u5982\u679c ",(0,r.kt)("inlineCode",{parentName:"p"},"AppStartup")," \u7684\u6d3e\u751f\u7c7b\u6240\u5728\u7684\u9879\u76ee\u5c42\u6ca1\u6709\u88ab\u542f\u52a8\u5c42\u76f4\u63a5\u6216\u95f4\u63a5\u6dfb\u52a0\u5f15\u7528\uff0c\u90a3\u4e48\u8fd9\u4e2a ",(0,r.kt)("inlineCode",{parentName:"p"},"Startup.cs")," \u5c31\u4f1a\u88ab\u5ffd\u7565\uff0c\u4e5f\u5c31\u662f\u4e0d\u4f1a\u81ea\u52a8\u8f7d\u5165\u6ce8\u518c\u3002"))),(0,r.kt)("h3",{id:"321-\u5982\u4f55\u914d\u7f6e-appstartup"},"3.2.1 \u5982\u4f55\u914d\u7f6e ",(0,r.kt)("inlineCode",{parentName:"h3"},"AppStartup")),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"AppStartup")," \u662f\u4e00\u4e2a\u62bd\u8c61\u7684\u7a7a\u7c7b\uff0c\u6ca1\u6709\u4efb\u4f55\u5b9a\u4e49\u6210\u5458\u3002\u6b63\u662f\u56e0\u4e3a\u8fd9\u6837\uff0c\u624d\u63d0\u4f9b\u66f4\u52a0\u7075\u6d3b\u7684\u914d\u7f6e\u65b9\u5f0f\u3002"),(0,r.kt)("h3",{id:"322-appstartup-\u7ea6\u5b9a"},"3.2.2 ",(0,r.kt)("inlineCode",{parentName:"h3"},"AppStartup")," \u7ea6\u5b9a"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"AppStartup")," \u6d3e\u751f\u7c7b\u53ea\u6709\u4e24\u4e2a\u5c0f\u7ea6\u5b9a\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u4efb\u4f55\u516c\u5f00\u3001\u975e\u9759\u6001\u3001\u8fd4\u56de\u503c\u4e3a ",(0,r.kt)("inlineCode",{parentName:"li"},"void")," \u4e14\u65b9\u6cd5\u7b2c\u4e00\u4e2a\u53c2\u6570\u662f ",(0,r.kt)("inlineCode",{parentName:"li"},"IServiceCollection")," \u7c7b\u578b\uff0c\u90a3\u4e48\u4ed6\u5c31\u662f\u4e00\u4e2a ",(0,r.kt)("inlineCode",{parentName:"li"},"ConfigureServices")," \u65b9\u6cd5"),(0,r.kt)("li",{parentName:"ul"},"\u4efb\u4f55\u516c\u5f00\u3001\u975e\u9759\u6001\u3001\u8fd4\u56de\u503c\u4e3a ",(0,r.kt)("inlineCode",{parentName:"li"},"void")," \u4e14\u65b9\u6cd5\u7b2c\u4e00\u4e2a\u53c2\u6570\u662f ",(0,r.kt)("inlineCode",{parentName:"li"},"IApplicationBuilder")," \u7c7b\u578b\uff0c\u7b2c\u4e8c\u4e2a\u53c2\u6570\u662f ",(0,r.kt)("inlineCode",{parentName:"li"},"IWebHostEnvironment")," \u7c7b\u578b\uff0c\u90a3\u4e48\u4ed6\u5c31\u662f\u4e00\u4e2a ",(0,r.kt)("inlineCode",{parentName:"li"},"Configure")," \u65b9\u6cd5")),(0,r.kt)("p",null,"\u6240\u4ee5\uff0c\u6211\u4eec\u53ef\u4ee5\u81ea\u7531\u7684\u7f16\u5199\u65b9\u6cd5\uff0c\u53ea\u8981\u9075\u5faa\u7ea6\u5b9a\u5373\u53ef\uff0c\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{5,7,12,18,23}","{5,7,12,18,23}":!0},"using Microsoft.Extensions.DependencyInjection;\n\nnamespace Furion.EntityFramework.Core\n{\n public class MyStartup : AppStartup\n {\n public void ConfigureServices(IServiceCollection services)\n {\n services.AddDataValidation();\n }\n\n public void Configure(IApplicationBuilder app, IWebHostEnvironment env)\n {\n app.UseSwagger();\n }\n\n // \u53ef\u4ee5\u968f\u610f\u5b9a\u4e49\u540d\u5b57\u548c\u65b9\u6cd5\n public void XXXXName(IServiceCollection services)\n {\n }\n\n // \u53ef\u4ee5\u968f\u610f\u5b9a\u4e49\u540d\u5b57\u548c\u65b9\u6cd5\n public void ZZZName(IApplicationBuilder app, IWebHostEnvironment env)\n {\n }\n }\n}\n")),(0,r.kt)("h3",{id:"323-appstartup-\u914d\u7f6e\u987a\u5e8f"},"3.2.3 ",(0,r.kt)("inlineCode",{parentName:"h3"},"AppStartup")," \u914d\u7f6e\u987a\u5e8f"),(0,r.kt)("p",null,"\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"AppStartup")," \u914d\u7f6e\u987a\u5e8f\u7531\u6240\u5728\u7a0b\u5e8f\u96c6\u7684\u540d\u79f0\u8fdb\u884c\u6b63\u5e8f\u8c03\u7528\uff0c\u5982\u679c\u6211\u4eec\u9700\u8981\u914d\u7f6e\u6267\u884c\u987a\u5e8f\uff0c\u53ea\u9700\u8981\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"AppStartup")," \u6d3e\u751f\u7c7b\u4e2d\u8d34 ",(0,r.kt)("inlineCode",{parentName:"p"},"[AppStartup(order)]")," \u7279\u6027\u5373\u53ef\u3002"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"order")," \u6570\u503c\u8d8a\u5927\uff0c\u8d8a\u5728\u524d\u9762\u8c03\u7528\uff0c\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{5}","{5}":!0},"using Microsoft.Extensions.DependencyInjection;\n\nnamespace Furion.EntityFramework.Core\n{\n [AppStartup(10)]\n public class FirstStartup : AppStartup\n {\n public void ConfigureServices(IServiceCollection services)\n {\n }\n\n public void Configure(IApplicationBuilder app, IWebHostEnvironment env)\n {\n }\n }\n}\n")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{5}","{5}":!0},"using Microsoft.Extensions.DependencyInjection;\n\nnamespace Furion.EntityFramework.Core\n{\n [AppStartup(9)]\n public class SecondStartup : AppStartup\n {\n public void ConfigureServices(IServiceCollection services)\n {\n }\n\n public void Configure(IApplicationBuilder app, IWebHostEnvironment env)\n {\n }\n }\n}\n")),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"FirstStartup")," \u4f1a\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"SecondStartup")," \u4e4b\u524d\u8c03\u7528\u3002"),(0,r.kt)("h3",{id:"324-appstartup-\u65b9\u6cd5\u8c03\u7528\u987a\u5e8f"},"3.2.4 ",(0,r.kt)("inlineCode",{parentName:"h3"},"AppStartup")," \u65b9\u6cd5\u8c03\u7528\u987a\u5e8f"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"AppStartup")," \u65b9\u6cd5\u8c03\u7528\u987a\u5e8f\u548c\u65b9\u6cd5\u7684\u4e66\u5199\u5148\u540e\u6709\u5173\uff0c\u8d8a\u5728\u524d\u9762\u7684\u65b9\u6cd5\u8d8a\u5148\u8c03\u7528\u3002"),(0,r.kt)("h2",{id:"33-startup-\u914d\u7f6e\u6700\u4f73\u5b9e\u8df5"},"3.3 ",(0,r.kt)("inlineCode",{parentName:"h2"},"Startup")," \u914d\u7f6e\u6700\u4f73\u5b9e\u8df5"),(0,r.kt)("p",null,"\u5efa\u8bae ",(0,r.kt)("inlineCode",{parentName:"p"},"Web")," \u542f\u52a8\u5c42\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"Startup.cs")," \u4fdd\u6301\u4e3a\u7a7a\u65b9\u6cd5\u4f53\uff0c\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:'title="Furion.Web.Entry\\Startup.cs"',title:'"Furion.Web.Entry\\Startup.cs"'},"using Microsoft.AspNetCore.Builder;\nusing Microsoft.AspNetCore.Hosting;\nusing Microsoft.Extensions.DependencyInjection;\n\nnamespace Furion.Web.Entry\n{\n public class Startup\n {\n public void ConfigureServices(IServiceCollection services)\n {\n }\n\n public void Configure(IApplicationBuilder app, IWebHostEnvironment env)\n {\n }\n }\n}\n")),(0,r.kt)("p",null,"\u5c06\u6240\u6709 ",(0,r.kt)("inlineCode",{parentName:"p"},"Web \u5e94\u7528\u5c42")," \u914d\u7f6e\u8fc1\u79fb\u5230 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion.Web.Core.Startup.cs")," \u4e2d\uff0c\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:'title="Furion.Web.Core\\Startup.cs"',title:'"Furion.Web.Core\\Startup.cs"'},"using Microsoft.AspNetCore.Builder;\nusing Microsoft.AspNetCore.Hosting;\nusing Microsoft.Extensions.DependencyInjection;\nusing Microsoft.Extensions.Hosting;\n\nnamespace Furion.Web.Core\n{\n [AppStartup(800)]\n public sealed class FurWebCoreStartup : AppStartup\n {\n public void ConfigureServices(IServiceCollection services)\n {\n services.AddCorsAccessor();\n\n services.AddControllers().AddInject();\n }\n\n public void Configure(IApplicationBuilder app, IWebHostEnvironment env)\n {\n if (env.IsDevelopment())\n {\n app.UseDeveloperExceptionPage();\n }\n\n app.UseHttpsRedirection();\n\n app.UseRouting();\n\n app.UseCorsAccessor();\n\n app.UseAuthentication();\n app.UseAuthorization();\n\n app.UseInject();\n\n app.UseEndpoints(endpoints =>\n {\n endpoints.MapControllers();\n });\n }\n }\n}\n")),(0,r.kt)("p",null,"\u8fd9\u6837\uff0c\u540e\u7eed\u66f4\u6362 ",(0,r.kt)("inlineCode",{parentName:"p"},"Web \u5e94\u7528\u5c42")," \u4e5f\u65e0\u9700\u91cd\u65b0\u914d\u7f6e ",(0,r.kt)("inlineCode",{parentName:"p"},"Startup.cs")),(0,r.kt)("h2",{id:"34-\u6784\u9020\u51fd\u6570\u6ce8\u5165\u8bf4\u660e"},"3.4 \u6784\u9020\u51fd\u6570\u6ce8\u5165\u8bf4\u660e"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"AppStartup")," \u7684\u6d3e\u751f\u7c7b\u5e76\u672a\u63d0\u4f9b\u4f9d\u8d56\u6ce8\u5165\u7684\u529f\u80fd\uff0c\u4e5f\u5373\u662f\u65e0\u6cd5\u901a\u8fc7\u6784\u9020\u51fd\u6570\u8fdb\u884c\u6ce8\u5165\u670d\u52a1\u3002\u539f\u56e0\u662f ",(0,r.kt)("inlineCode",{parentName:"p"},"AppStartup")," \u662f\u4e2a\u7a7a\u7c7b\uff0c\u76ee\u7684\u662f\u7528\u6765\u67e5\u627e ",(0,r.kt)("inlineCode",{parentName:"p"},"Startup")," \u7684\u3002"),(0,r.kt)("p",null,"\u90a3\u5982\u4f55\u50cf ",(0,r.kt)("inlineCode",{parentName:"p"},"Startup.cs")," \u4e00\u6837\u4f7f\u7528\u670d\u52a1\u5462\uff1f"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u83b7\u53d6\u914d\u7f6e ",(0,r.kt)("inlineCode",{parentName:"li"},"IConfiguration")," \u5b9e\u4f8b\uff1a\u901a\u8fc7 ",(0,r.kt)("inlineCode",{parentName:"li"},"App.Configuration")),(0,r.kt)("li",{parentName:"ul"},"\u89e3\u6790\u670d\u52a1\uff1a\u901a\u8fc7 ",(0,r.kt)("inlineCode",{parentName:"li"},"App.GetService()")," \u6216 ",(0,r.kt)("inlineCode",{parentName:"li"},"app.ApplicationServices.GetService()"))),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u5173\u4e8e ",(0,r.kt)("inlineCode",{parentName:"h5"},"Configure")," \u65b9\u6cd5\u6ce8\u5165")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},(0,r.kt)("inlineCode",{parentName:"p"},"AppStartup")," \u9488\u5bf9 ",(0,r.kt)("inlineCode",{parentName:"p"},"Configure")," \u65b9\u6cd5\u63d0\u4f9b\u4e86\u53c2\u6570\u89e3\u6790\u6ce8\u5165\u529f\u80fd\uff0c\u4e5f\u5c31\u662f\u53ea\u8981\u5728\u65b9\u6cd5\u4e2d\u58f0\u660e\u63a5\u53e3\u53c2\u6570\u5373\u53ef\u81ea\u52a8\u6ce8\u5165\uff0c\u5982\uff1a"),(0,r.kt)("pre",{parentName:"div"},(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,2}","{1,2}":!0},"// app \u548c env \u4f1a\u81ea\u52a8\u6ce8\u5165\npublic void Configure(IApplicationBuilder app, IWebHostEnvironment env)\n{\n}\n")))),(0,r.kt)("h2",{id:"35-\u5173\u4e8e-appsettingsjson"},"3.5 \u5173\u4e8e ",(0,r.kt)("inlineCode",{parentName:"h2"},"appsettings.json")),(0,r.kt)("p",null,"\u5728\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"ASP.NET Core")," \u914d\u7f6e\u653e\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"appsettings.json")," \u4e2d\u914d\u7f6e\uff0c\u4f46\u662f\u8fd9\u6837\u7684\u65b9\u5f0f\u548c ",(0,r.kt)("inlineCode",{parentName:"p"},"Startup.cs")," \u914d\u7f6e\u4e00\u6837\u7684\u9053\u7406\uff0c\u4e00\u65e6\u6211\u4eec\u66f4\u6362\u4e86 ",(0,r.kt)("inlineCode",{parentName:"p"},"Web \u5e94\u7528\u5c42"),"\uff0c\u90a3\u4e48 ",(0,r.kt)("inlineCode",{parentName:"p"},"appsettings.json")," \u53c8\u8981\u91cd\u65b0\u914d\u7f6e\u4e00\u6b21\u3002"),(0,r.kt)("p",null,"\u6240\u4ee5\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u4e86\u66f4\u52a0\u7075\u6d3b\u7684\u65b9\u5f0f\u914d\u7f6e ",(0,r.kt)("inlineCode",{parentName:"p"},"appsettings.json"),"\uff0c",(0,r.kt)("strong",{parentName:"p"},"\u53ea\u9700\u8981\u5728\u4efb\u4f55\u9879\u76ee\u5c42\u6839\u76ee\u5f55\u4e0b\u521b\u5efa ",(0,r.kt)("inlineCode",{parentName:"strong"},".json")," \u6587\u4ef6\u5373\u53ef\u3002",(0,r.kt)("inlineCode",{parentName:"strong"},"Furion")," \u6846\u67b6\u6700\u540e\u4f1a\u81ea\u52a8\u5408\u5e76\u6240\u6709\u5206\u6563\u7684\u914d\u7f6e\u6587\u4ef6\u3002")),(0,r.kt)("p",null,"\u5982\u6211\u4eec\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion.EntityFramework.Core")," \u5c42\u521b\u5efa ",(0,r.kt)("inlineCode",{parentName:"p"},"dbsettings.json")," \u914d\u7f6e\u6570\u636e\u5e93\u8fde\u63a5\u5b57\u7b26\u4e32\uff0c\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json",metastring:'title="Furion.EntityFramework.Core\\dbsettings.json"',title:'"Furion.EntityFramework.Core\\dbsettings.json"'},'{\n "ConnectionStrings": {\n "DbConnectionString": "Server=localhost;Database=Furion;User=sa;Password=000000;MultipleActiveResultSets=True;",\n "Sqlite3ConnectionString": "Data Source=./Furion.db"\n }\n}\n')),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"\u65e0\u9700\u5728 ",(0,r.kt)("inlineCode",{parentName:"strong"},"appsettings.json")," \u4e2d\u914d\u7f6e"),"\uff0c\u4e0b\u9762\u662f ",(0,r.kt)("inlineCode",{parentName:"p"},"appsettings.json")," \u9ed8\u8ba4\u4ee3\u7801:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json"},'{\n "Logging": {\n "LogLevel": {\n "Default": "Information",\n "Microsoft": "Warning",\n "Microsoft.Hosting.Lifetime": "Information",\n "Microsoft.EntityFrameworkCore": "Information"\n }\n },\n "AllowedHosts": "*"\n}\n')),(0,r.kt)("p",null,"\u8fd9\u6837\u6211\u4eec\u628a\u914d\u7f6e\u6587\u4ef6\u5206\u6563\u5728\u4e0d\u540c\u9879\u76ee\u5c42\u4e4b\u540e\uff0c\u5c31\u53ef\u4ee5\u5b9e\u73b0\u5171\u7528\u548c\u5171\u4eab\u4e86\u3002"),(0,r.kt)("div",{className:"admonition admonition-caution alert alert--warning"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 16 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"}))),"\u7279\u522b\u6ce8\u610f")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u5176\u4ed6\u5c42\u7684\u914d\u7f6e\u6587\u4ef6\u4e0d\u80fd\u4ee5 ",(0,r.kt)("inlineCode",{parentName:"p"},"appsettings.json")," \u547d\u540d\uff0c\u4f1a\u5bfc\u81f4\u8986\u76d6\u542f\u52a8\u5c42\u7684\u914d\u7f6e\u3002"),(0,r.kt)("p",{parentName:"div"},"\u53e6\u5916\uff0c\u5728\u5176\u4ed6\u5c42\u521b\u5efa\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"*.json")," \u6587\u4ef6\u5fc5\u987b\u8bbe\u7f6e\u6587\u4ef6\u5c5e\u6027\u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"\u59cb\u7ec8\u590d\u5236\u6216\u8f83\u65b0\u590d\u5236"),"\u3002"))),(0,r.kt)("h2",{id:"36-\u795e\u5947\u7684-inject"},"3.6 \u795e\u5947\u7684 ",(0,r.kt)("inlineCode",{parentName:"h2"},"Inject()")),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Inject()")," \u65b9\u6cd5\u662f ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u7684\u6700\u5c0f\u4fb5\u5165\u5f0f\u7684\u65b9\u6cd5\uff0c\u53ef\u4ee5\u8ba9\u4efb\u4f55 ",(0,r.kt)("inlineCode",{parentName:"p"},"ASP.NET Core")," Web \u9879\u76ee\u77ac\u95f4\u652f\u6301\u6240\u6709 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u7279\u6027\u3002"),(0,r.kt)("p",null,"\u6211\u4eec\u521b\u5efa\u4e86\u65b0\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"Web \u9879\u76ee"),"\uff0c\u53ea\u9700\u8981\u4e09\u4e2a\u6b65\u9aa4\u5373\u53ef\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"li"},"Furion.Web.Core")," \u9879\u76ee\u5f15\u7528"),(0,r.kt)("li",{parentName:"ul"},"\u5728 ",(0,r.kt)("inlineCode",{parentName:"li"},"Program.cs")," \u4e2d\u8c03\u7528\u5373\u53ef"),(0,r.kt)("li",{parentName:"ul"},"\u5c06 ",(0,r.kt)("inlineCode",{parentName:"li"},"Startup.cs")," \u4ee3\u7801\u8fc1\u79fb\u5230 ",(0,r.kt)("inlineCode",{parentName:"li"},"Furion.Web.Core")," \u9879\u76ee\u7684 ",(0,r.kt)("inlineCode",{parentName:"li"},"Startup.cs")," \u4e2d")),(0,r.kt)("p",null,"\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:'{18} title="Furion.Web.Entry\\Program.cs"',"{18}":!0,title:'"Furion.Web.Entry\\Program.cs"'},"using Microsoft.AspNetCore.Hosting;\nusing Microsoft.Extensions.Hosting;\n\nnamespace Furion.Web.Entry\n{\n public class Program\n {\n public static void Main(string[] args)\n {\n CreateHostBuilder(args).Build().Run();\n }\n\n public static IHostBuilder CreateHostBuilder(string[] args)\n {\n return Host.CreateDefaultBuilder(args)\n .ConfigureWebHostDefaults(webBuilder =>\n {\n webBuilder.Inject()\n .UseStartup();\n });\n }\n }\n}\n")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:'title="Furion.Web.Entry\\Startup.cs"',title:'"Furion.Web.Entry\\Startup.cs"'},"using Microsoft.AspNetCore.Builder;\nusing Microsoft.AspNetCore.Hosting;\nusing Microsoft.Extensions.DependencyInjection;\n\nnamespace Furion.Web.Entry\n{\n public class Startup\n {\n public void ConfigureServices(IServiceCollection services)\n {\n }\n\n public void Configure(IApplicationBuilder app, IWebHostEnvironment env)\n {\n }\n }\n}\n")),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),(0,r.kt)("inlineCode",{parentName:"h5"},"Startup.cs")," \u4ee3\u7801\u8fc1\u79fb")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u53ea\u9700\u8981\u5c06 ",(0,r.kt)("inlineCode",{parentName:"p"},"ConfigureServices")," \u548c ",(0,r.kt)("inlineCode",{parentName:"p"},"Configure")," \u65b9\u6cd5\u4ee3\u7801\u8fc1\u79fb\u5230 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion.Web.Core.Startup.cs")," \u4e2d\u5373\u53ef\uff0c\u800c ",(0,r.kt)("inlineCode",{parentName:"p"},"Startup.cs")," \u4e2d\u4e24\u4e2a\u65b9\u6cd5\u7559\u7a7a\u5373\u53ef\u3002"))),(0,r.kt)("p",null,"\u975e\u5e38\u7b80\u5355\u5427\u3002\u6211\u4eec\u540e\u7eed\u521b\u5efa\u4efb\u4f55 ",(0,r.kt)("inlineCode",{parentName:"p"},"MVC"),"\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"RazorPages"),"\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"Blazor")," \u9879\u76ee\u53ea\u9700\u8981\u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion.Web.Core")," \u5f15\u7528\u548c\u8c03\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"Inject()")," \u5373\u53ef\u3002"),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e86\u89e3\u66f4\u591a")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u60f3\u4e86\u89e3\u66f4\u591a ",(0,r.kt)("inlineCode",{parentName:"p"},"Inject")," \u77e5\u8bc6\u53ef\u67e5\u9605 ",(0,r.kt)("a",{parentName:"p",href:"/docs/inject"},"2.4 \u795e\u5947\u7684 Inject")," \u7ae0\u8282\u3002"))),(0,r.kt)("h2",{id:"37-\u53cd\u9988\u4e0e\u5efa\u8bae"},"3.7 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,r.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/793e1c79.287a8225.js b/handbook/build/assets/js/793e1c79.287a8225.js new file mode 100644 index 00000000000..aabcf20faa7 --- /dev/null +++ b/handbook/build/assets/js/793e1c79.287a8225.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[5052],{5575:function(n){n.exports=JSON.parse('{"allTagsPath":"/furion/blog/tags","slug":"/furion/blog/tags/net-6","name":".net6","count":4,"permalink":"/furion/blog/tags/net-6"}')}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/793e1c79.3be059f6.js b/handbook/build/assets/js/793e1c79.3be059f6.js deleted file mode 100644 index d7ef1cbefd7..00000000000 --- a/handbook/build/assets/js/793e1c79.3be059f6.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[5052],{5575:function(n){n.exports=JSON.parse('{"allTagsPath":"/furion/blog/tags","slug":"net-6","name":".net6","count":4,"permalink":"/furion/blog/tags/net-6"}')}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/7c5dd5ef.05c963d1.js b/handbook/build/assets/js/7c5dd5ef.05c963d1.js new file mode 100644 index 00000000000..aba00daf014 --- /dev/null +++ b/handbook/build/assets/js/7c5dd5ef.05c963d1.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[3043],{3905:function(e,t,n){n.d(t,{Zo:function(){return s},kt:function(){return m}});var r=n(7294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var p=r.createContext({}),c=function(e){var t=r.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},s=function(e){var t=c(e.components);return r.createElement(p.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,a=e.originalType,p=e.parentName,s=l(e,["components","mdxType","originalType","parentName"]),d=c(n),m=o,f=d["".concat(p,".").concat(m)]||d[m]||u[m]||a;return n?r.createElement(f,i(i({ref:t},s),{},{components:n})):r.createElement(f,i({ref:t},s))}));function m(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=n.length,i=new Array(a);i[0]=d;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l.mdxType="string"==typeof e?e:o,i[1]=l;for(var c=2;c {\n // Do.....\n}, 3, 1000);\n\n// \u5e26\u8fd4\u56de\u503c\nvar value = Oops.Retry(() => {\n // Do.....\n}, 3, 1000);\n\n// \u53ea\u6709\u7279\u5b9a\u5f02\u5e38\u624d\u76d1\u542c\nOops.Retry(() => {\n\n}, 3, 1000, typeof(ArgumentNullException));\n")),(0,a.kt)("h2",{id:"46-\u629b\u51fa\u4e1a\u52a1\u5f02\u5e38"},"4.6 \u629b\u51fa\u4e1a\u52a1\u5f02\u5e38"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs"},'throw Oops.Bah("\u7528\u6237\u540d\u6216\u5bc6\u7801\u9519\u8bef");\nthrow Oops.Bah(1000);\n')))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/7c5dd5ef.efac75a1.js b/handbook/build/assets/js/7c5dd5ef.efac75a1.js deleted file mode 100644 index 0ec644e2f67..00000000000 --- a/handbook/build/assets/js/7c5dd5ef.efac75a1.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[3043],{3905:function(e,t,n){n.d(t,{Zo:function(){return s},kt:function(){return m}});var r=n(7294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var p=r.createContext({}),c=function(e){var t=r.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},s=function(e){var t=c(e.components);return r.createElement(p.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,a=e.originalType,p=e.parentName,s=l(e,["components","mdxType","originalType","parentName"]),d=c(n),m=o,f=d["".concat(p,".").concat(m)]||d[m]||u[m]||a;return n?r.createElement(f,i(i({ref:t},s),{},{components:n})):r.createElement(f,i({ref:t},s))}));function m(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=n.length,i=new Array(a);i[0]=d;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l.mdxType="string"==typeof e?e:o,i[1]=l;for(var c=2;c {\n // Do.....\n}, 3, 1000);\n\n// \u5e26\u8fd4\u56de\u503c\nvar value = Oops.Retry(() => {\n // Do.....\n}, 3, 1000);\n\n// \u53ea\u6709\u7279\u5b9a\u5f02\u5e38\u624d\u76d1\u542c\nOops.Retry(() => {\n\n}, 3, 1000, typeof(ArgumentNullException));\n")),(0,a.kt)("h2",{id:"46-\u629b\u51fa\u4e1a\u52a1\u5f02\u5e38"},"4.6 \u629b\u51fa\u4e1a\u52a1\u5f02\u5e38"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs"},'throw Oops.Bah("\u7528\u6237\u540d\u6216\u5bc6\u7801\u9519\u8bef");\nthrow Oops.Bah(1000);\n')))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/7c6b08dc.4b2bbb7a.js b/handbook/build/assets/js/7c6b08dc.4b2bbb7a.js deleted file mode 100644 index 7f4d17da94f..00000000000 --- a/handbook/build/assets/js/7c6b08dc.4b2bbb7a.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[4507],{3905:function(e,t,r){r.d(t,{Zo:function(){return p},kt:function(){return f}});var n=r(7294);function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function l(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function o(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var c=n.createContext({}),u=function(e){var t=n.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},p=function(e){var t=u(e.components);return n.createElement(c.Provider,{value:t},e.children)},s={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,l=e.originalType,c=e.parentName,p=i(e,["components","mdxType","originalType","parentName"]),d=u(r),f=a,m=d["".concat(c,".").concat(f)]||d[f]||s[f]||l;return r?n.createElement(m,o(o({ref:t},p),{},{components:r})):n.createElement(m,o({ref:t},p))}));function f(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var l=r.length,o=new Array(l);o[0]=d;var i={};for(var c in t)hasOwnProperty.call(t,c)&&(i[c]=t[c]);i.originalType=e,i.mdxType="string"==typeof e?e:a,o[1]=i;for(var u=2;u=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var c=n.createContext({}),u=function(e){var t=n.useContext(c),r=t;return e&&(r="function"==typeof e?e(t):o(o({},t),e)),r},s=function(e){var t=u(e.components);return n.createElement(c.Provider,{value:t},e.children)},p={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var r=e.components,a=e.mdxType,l=e.originalType,c=e.parentName,s=i(e,["components","mdxType","originalType","parentName"]),d=u(r),f=a,m=d["".concat(c,".").concat(f)]||d[f]||p[f]||l;return r?n.createElement(m,o(o({ref:t},s),{},{components:r})):n.createElement(m,o({ref:t},s))}));function f(e,t){var r=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var l=r.length,o=new Array(l);o[0]=d;var i={};for(var c in t)hasOwnProperty.call(t,c)&&(i[c]=t[c]);i.originalType=e,i.mdxType="string"==typeof e?e:a,o[1]=i;for(var u=2;u=0||(i[t]=e[t]);return i}(e,n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(i[t]=e[t])}return i}var p=a.createContext({}),c=function(e){var n=a.useContext(p),t=n;return e&&(t="function"==typeof e?e(n):o(o({},n),e)),t},d=function(e){var n=c(e.components);return a.createElement(p.Provider,{value:n},e.children)},l={inlineCode:"code",wrapper:function(e){var n=e.children;return a.createElement(a.Fragment,{},n)}},m=a.forwardRef((function(e,n){var t=e.components,i=e.mdxType,r=e.originalType,p=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),m=c(t),u=i,g=m["".concat(p,".").concat(u)]||m[u]||l[u]||r;return t?a.createElement(g,o(o({ref:n},d),{},{components:t})):a.createElement(g,o({ref:n},d))}));function u(e,n){var t=arguments,i=n&&n.mdxType;if("string"==typeof e||i){var r=t.length,o=new Array(r);o[0]=m;var s={};for(var p in n)hasOwnProperty.call(n,p)&&(s[p]=n[p]);s.originalType=e,s.mdxType="string"==typeof e?e:i,o[1]=s;for(var c=2;cWeb \u9879\u76ee",id:"21-\u521b\u5efa-web-\u9879\u76ee",children:[{value:"2.1.1 \u521b\u5efa ASP.NET Core Web \u5e94\u7528\u7a0b\u5e8f",id:"211-\u521b\u5efa-aspnet-core-web-\u5e94\u7528\u7a0b\u5e8f",children:[]}]},{value:"2.2 \u6dfb\u52a0 Furion \u4f9d\u8d56\u5305",id:"22-\u6dfb\u52a0-furion-\u4f9d\u8d56\u5305",children:[]},{value:"2.3 Furion \u57fa\u672c\u914d\u7f6e",id:"23-furion-\u57fa\u672c\u914d\u7f6e",children:[{value:"2.3.1 Program.cs \u6dfb\u52a0 Inject()",id:"231-programcs-\u6dfb\u52a0-inject",children:[]},{value:"2.3.2 \u5728 Startup.cs \u4e2d\u6dfb\u52a0\u4e24\u4e2a Inject()",id:"232-\u5728-startupcs-\u4e2d\u6dfb\u52a0\u4e24\u4e2a-inject",children:[]}]},{value:"2.4 \u542f\u52a8\u6d4f\u89c8\u5668",id:"24-\u542f\u52a8\u6d4f\u89c8\u5668",children:[]}],m={toc:l};function u(e){var n=e.components,t=(0,i.Z)(e,s);return(0,r.kt)("wrapper",(0,a.Z)({},m,t,{components:n,mdxType:"MDXLayout"}),(0,r.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u63a8\u8350\u4f7f\u7528\u811a\u624b\u67b6")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u5b98\u65b9\u63d0\u4f9b\u4e86\u975e\u5e38\u7075\u6d3b\u65b9\u4fbf\u7684\u811a\u624b\u67b6\uff0c\u53ef\u4ee5\u5feb\u901f\u7684\u521b\u5efa\u591a\u5c42\u67b6\u6784\u9879\u76ee\u3002"),(0,r.kt)("p",{parentName:"div"},"\u63a8\u8350\u4f7f\u7528 \u300a",(0,r.kt)("a",{parentName:"p",href:"/furion/docs/template"},"2.2 \u5b98\u65b9\u811a\u624b\u67b6"),"\u300b\u4ee3\u66ff\u672c\u7ae0\u8282\u529f\u80fd\u3002"))),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u5165\u95e8\u6761\u4ef6")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u5bf9 ",(0,r.kt)("inlineCode",{parentName:"p"},".NET Core/ASP.NET Core")," \u6709\u4e00\u5b9a\u57fa\u7840\u4e86\u89e3\uff0c\u8fd8\u672a\u63a5\u89e6\u7684\u53ef\u5148\u770b ",(0,r.kt)("a",{parentName:"p",href:"https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/?view=aspnetcore-5.0&tabs=windows"},"\u3010ASP.NET Core \u57fa\u7840\u3011")))),(0,r.kt)("h2",{id:"21-\u521b\u5efa-web-\u9879\u76ee"},"2.1 \u521b\u5efa ",(0,r.kt)("inlineCode",{parentName:"h2"},"Web")," \u9879\u76ee"),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u73af\u5883\u8981\u6c42")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u4e4b\u524d\u5148\u786e\u4fdd\u5b89\u88c5\u4e86\u6700\u65b0\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},".NET 5 SDK")," \u5e76\u5347\u7ea7 ",(0,r.kt)("inlineCode",{parentName:"p"},"Visual Studio 2019")," \u81f3\u6700\u65b0\u7248\u3002"))),(0,r.kt)("h3",{id:"211-\u521b\u5efa-aspnet-core-web-\u5e94\u7528\u7a0b\u5e8f"},"2.1.1 \u521b\u5efa ",(0,r.kt)("inlineCode",{parentName:"h3"},"ASP.NET Core Web \u5e94\u7528\u7a0b\u5e8f")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u6253\u5f00 ",(0,r.kt)("inlineCode",{parentName:"li"},"Visual Studio 2019")," \u5e76\u521b\u5efa ",(0,r.kt)("inlineCode",{parentName:"li"},"Web")," \u9879\u76ee")),(0,r.kt)("img",{src:(0,o.Z)("img/rm1.png")}),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u914d\u7f6e\u9879\u76ee\u540d\u79f0")),(0,r.kt)("img",{src:(0,o.Z)("img/rm2.png")}),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u9009\u62e9 ",(0,r.kt)("inlineCode",{parentName:"li"},"WebAPI")," \u9879\u76ee")),(0,r.kt)("img",{src:(0,o.Z)("img/rm3.png")}),(0,r.kt)("div",{className:"admonition admonition-warning alert alert--danger"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"}))),"\u7279\u522b\u6ce8\u610f")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u5df2\u7ecf\u5185\u7f6e\u4e86 ",(0,r.kt)("inlineCode",{parentName:"p"},"Swagger")," \u89c4\u8303\u5316\u5e93\uff0c\u6240\u4ee5\u521b\u5efa\u65f6",(0,r.kt)("strong",{parentName:"p"},"\u65e0\u9700\u52fe\u9009")," ",(0,r.kt)("inlineCode",{parentName:"p"},"Enable OpenAPI support")," \u9009\u9879\u3002\u5426\u5219\u63d0\u793a\u7248\u672c\u4e0d\u4e00\u81f4\u4ea7\u751f\u51b2\u7a81\u3002"))),(0,r.kt)("h2",{id:"22-\u6dfb\u52a0-furion-\u4f9d\u8d56\u5305"},"2.2 \u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"h2"},"Furion")," \u4f9d\u8d56\u5305"),(0,r.kt)("img",{src:(0,o.Z)("img/rm4.png")}),(0,r.kt)("h2",{id:"23-furion-\u57fa\u672c\u914d\u7f6e"},"2.3 ",(0,r.kt)("inlineCode",{parentName:"h2"},"Furion")," \u57fa\u672c\u914d\u7f6e"),(0,r.kt)("h3",{id:"231-programcs-\u6dfb\u52a0-inject"},"2.3.1 ",(0,r.kt)("inlineCode",{parentName:"h3"},"Program.cs")," \u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"h3"},"Inject()")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{18}","{18}":!0},"using Microsoft.AspNetCore.Hosting;\nusing Microsoft.Extensions.Hosting;\n\nnamespace FurionStart\n{\n public class Program\n {\n public static void Main(string[] args)\n {\n CreateHostBuilder(args).Build().Run();\n }\n\n public static IHostBuilder CreateHostBuilder(string[] args) =>\n Host.CreateDefaultBuilder(args)\n .ConfigureWebHostDefaults(webBuilder =>\n {\n webBuilder\n .Inject() // \u6dfb\u52a0\u8fd9\u4e00\u884c\n .UseStartup();\n });\n }\n}\n")),(0,r.kt)("h3",{id:"232-\u5728-startupcs-\u4e2d\u6dfb\u52a0\u4e24\u4e2a-inject"},"2.3.2 \u5728 ",(0,r.kt)("inlineCode",{parentName:"h3"},"Startup.cs")," \u4e2d\u6dfb\u52a0\u4e24\u4e2a ",(0,r.kt)("inlineCode",{parentName:"h3"},"Inject()")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{20,37}","{20,37}":!0},"using Microsoft.AspNetCore.Builder;\nusing Microsoft.AspNetCore.Hosting;\nusing Microsoft.Extensions.Configuration;\nusing Microsoft.Extensions.DependencyInjection;\nusing Microsoft.Extensions.Hosting;\n\nnamespace FurionStart\n{\n public class Startup\n {\n public Startup(IConfiguration configuration)\n {\n Configuration = configuration;\n }\n\n public IConfiguration Configuration { get; }\n\n public void ConfigureServices(IServiceCollection services)\n {\n services.AddControllers().AddInject(); // \u6dfb\u52a0 AddInject();\n }\n\n public void Configure(IApplicationBuilder app, IWebHostEnvironment env)\n {\n if (env.IsDevelopment())\n {\n app.UseDeveloperExceptionPage();\n }\n\n app.UseHttpsRedirection();\n\n app.UseRouting();\n\n app.UseAuthorization();\n\n // \u6dfb\u52a0\u8fd9\u4e00\u884c\uff0c\u5982\u679c\u662f MVC\u548cAPI\u5171\u5b58\u9879\u76ee\uff0c\u65e0\u9700\u6dfb\u52a0 string.Empty\n app.UseInject(string.Empty);\n\n app.UseEndpoints(endpoints =>\n {\n endpoints.MapControllers();\n });\n }\n }\n}\n")),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u5c0f\u63d0\u9192")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u5982\u679c ",(0,r.kt)("inlineCode",{parentName:"p"},"app.UseInject()")," \u4e0d\u8f93\u5165\u53c2\u6570\uff0c\u5219\u9ed8\u8ba4\u5730\u5740\u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"/api"),"\uff0c\u5982\u679c\u8f93\u5165 ",(0,r.kt)("inlineCode",{parentName:"p"},"string.Empty")," \u5219\u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"/")," \u76ee\u5f55\u3002\u5982\u679c\u8f93\u5165\u4efb\u610f\u5b57\u7b26\u4e32\uff0c\u5219\u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"/\u4efb\u610f\u5b57\u7b26\u4e32")," \u76ee\u5f55\u3002"))),(0,r.kt)("h2",{id:"24-\u542f\u52a8\u6d4f\u89c8\u5668"},"2.4 \u542f\u52a8\u6d4f\u89c8\u5668"),(0,r.kt)("p",null,"\u542f\u52a8\u6d4f\u89c8\u5668\u67e5\u770b\u6548\u679c\u3002"),(0,r.kt)("img",{src:(0,o.Z)("img/rm5.png")}),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u5c0f\u77e5\u8bc6")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c\u901a\u8fc7 ",(0,r.kt)("inlineCode",{parentName:"p"},"Visual Studio 2019")," \u521b\u5efa\u7684\u9879\u76ee\u4f1a\u81ea\u52a8\u914d\u7f6e\u4e86\u542f\u52a8\u9875\uff0c\u5982\u679c\u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"F5")," \u8fd0\u884c\uff0c\u53ef\u80fd\u4e0d\u4f1a\u81ea\u52a8\u6253\u5f00\u9996\u9875\uff0c\u8fd9\u65f6\u5019\u6211\u4eec\u53ea\u9700\u8981\u914d\u7f6e ",(0,r.kt)("inlineCode",{parentName:"p"},"launchSettings.json")," \u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"launchUrl")," \u5373\u53ef\uff1a"),(0,r.kt)("img",{src:(0,o.Z)("img/rm6.png")}))),(0,r.kt)("p",null,"\u8bf4\u597d\u4e00\u5206\u949f\u4e0a\u624b\uff0c\u4f60\u4eec\u7528\u4e86\u591a\u957f\u65f6\u95f4\u3002\ud83d\ude01"))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/7d1915d2.d2d662dd.js b/handbook/build/assets/js/7d1915d2.d2d662dd.js new file mode 100644 index 00000000000..9940d58e8e6 --- /dev/null +++ b/handbook/build/assets/js/7d1915d2.d2d662dd.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[9173],{3905:function(e,n,t){t.d(n,{Zo:function(){return d},kt:function(){return u}});var a=t(7294);function i(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function r(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function o(e){for(var n=1;n=0||(i[t]=e[t]);return i}(e,n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(i[t]=e[t])}return i}var p=a.createContext({}),c=function(e){var n=a.useContext(p),t=n;return e&&(t="function"==typeof e?e(n):o(o({},n),e)),t},d=function(e){var n=c(e.components);return a.createElement(p.Provider,{value:n},e.children)},l={inlineCode:"code",wrapper:function(e){var n=e.children;return a.createElement(a.Fragment,{},n)}},m=a.forwardRef((function(e,n){var t=e.components,i=e.mdxType,r=e.originalType,p=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),m=c(t),u=i,g=m["".concat(p,".").concat(u)]||m[u]||l[u]||r;return t?a.createElement(g,o(o({ref:n},d),{},{components:t})):a.createElement(g,o({ref:n},d))}));function u(e,n){var t=arguments,i=n&&n.mdxType;if("string"==typeof e||i){var r=t.length,o=new Array(r);o[0]=m;var s={};for(var p in n)hasOwnProperty.call(n,p)&&(s[p]=n[p]);s.originalType=e,s.mdxType="string"==typeof e?e:i,o[1]=s;for(var c=2;cWeb \u9879\u76ee",id:"21-\u521b\u5efa-web-\u9879\u76ee",children:[{value:"2.1.1 \u521b\u5efa ASP.NET Core Web \u5e94\u7528\u7a0b\u5e8f",id:"211-\u521b\u5efa-aspnet-core-web-\u5e94\u7528\u7a0b\u5e8f",children:[]}]},{value:"2.2 \u6dfb\u52a0 Furion \u4f9d\u8d56\u5305",id:"22-\u6dfb\u52a0-furion-\u4f9d\u8d56\u5305",children:[]},{value:"2.3 Furion \u57fa\u672c\u914d\u7f6e",id:"23-furion-\u57fa\u672c\u914d\u7f6e",children:[{value:"2.3.1 Program.cs \u6dfb\u52a0 Inject()",id:"231-programcs-\u6dfb\u52a0-inject",children:[]},{value:"2.3.2 \u5728 Startup.cs \u4e2d\u6dfb\u52a0\u4e24\u4e2a Inject()",id:"232-\u5728-startupcs-\u4e2d\u6dfb\u52a0\u4e24\u4e2a-inject",children:[]}]},{value:"2.4 \u542f\u52a8\u6d4f\u89c8\u5668",id:"24-\u542f\u52a8\u6d4f\u89c8\u5668",children:[]}],m={toc:l};function u(e){var n=e.components,t=(0,i.Z)(e,s);return(0,r.kt)("wrapper",(0,a.Z)({},m,t,{components:n,mdxType:"MDXLayout"}),(0,r.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u63a8\u8350\u4f7f\u7528\u811a\u624b\u67b6")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u5b98\u65b9\u63d0\u4f9b\u4e86\u975e\u5e38\u7075\u6d3b\u65b9\u4fbf\u7684\u811a\u624b\u67b6\uff0c\u53ef\u4ee5\u5feb\u901f\u7684\u521b\u5efa\u591a\u5c42\u67b6\u6784\u9879\u76ee\u3002"),(0,r.kt)("p",{parentName:"div"},"\u63a8\u8350\u4f7f\u7528 \u300a",(0,r.kt)("a",{parentName:"p",href:"/furion/docs/template"},"2.2 \u5b98\u65b9\u811a\u624b\u67b6"),"\u300b\u4ee3\u66ff\u672c\u7ae0\u8282\u529f\u80fd\u3002"))),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u5165\u95e8\u6761\u4ef6")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u5bf9 ",(0,r.kt)("inlineCode",{parentName:"p"},".NET Core/ASP.NET Core")," \u6709\u4e00\u5b9a\u57fa\u7840\u4e86\u89e3\uff0c\u8fd8\u672a\u63a5\u89e6\u7684\u53ef\u5148\u770b ",(0,r.kt)("a",{parentName:"p",href:"https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/?view=aspnetcore-5.0&tabs=windows"},"\u3010ASP.NET Core \u57fa\u7840\u3011")))),(0,r.kt)("h2",{id:"21-\u521b\u5efa-web-\u9879\u76ee"},"2.1 \u521b\u5efa ",(0,r.kt)("inlineCode",{parentName:"h2"},"Web")," \u9879\u76ee"),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u73af\u5883\u8981\u6c42")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u4e4b\u524d\u5148\u786e\u4fdd\u5b89\u88c5\u4e86\u6700\u65b0\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},".NET 5 SDK")," \u5e76\u5347\u7ea7 ",(0,r.kt)("inlineCode",{parentName:"p"},"Visual Studio 2019")," \u81f3\u6700\u65b0\u7248\u3002"))),(0,r.kt)("h3",{id:"211-\u521b\u5efa-aspnet-core-web-\u5e94\u7528\u7a0b\u5e8f"},"2.1.1 \u521b\u5efa ",(0,r.kt)("inlineCode",{parentName:"h3"},"ASP.NET Core Web \u5e94\u7528\u7a0b\u5e8f")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u6253\u5f00 ",(0,r.kt)("inlineCode",{parentName:"li"},"Visual Studio 2019")," \u5e76\u521b\u5efa ",(0,r.kt)("inlineCode",{parentName:"li"},"Web")," \u9879\u76ee")),(0,r.kt)("img",{src:(0,o.Z)("img/rm1.png")}),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u914d\u7f6e\u9879\u76ee\u540d\u79f0")),(0,r.kt)("img",{src:(0,o.Z)("img/rm2.png")}),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u9009\u62e9 ",(0,r.kt)("inlineCode",{parentName:"li"},"WebAPI")," \u9879\u76ee")),(0,r.kt)("img",{src:(0,o.Z)("img/rm3.png")}),(0,r.kt)("div",{className:"admonition admonition-warning alert alert--danger"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"}))),"\u7279\u522b\u6ce8\u610f")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u5df2\u7ecf\u5185\u7f6e\u4e86 ",(0,r.kt)("inlineCode",{parentName:"p"},"Swagger")," \u89c4\u8303\u5316\u5e93\uff0c\u6240\u4ee5\u521b\u5efa\u65f6",(0,r.kt)("strong",{parentName:"p"},"\u65e0\u9700\u52fe\u9009")," ",(0,r.kt)("inlineCode",{parentName:"p"},"Enable OpenAPI support")," \u9009\u9879\u3002\u5426\u5219\u63d0\u793a\u7248\u672c\u4e0d\u4e00\u81f4\u4ea7\u751f\u51b2\u7a81\u3002"))),(0,r.kt)("h2",{id:"22-\u6dfb\u52a0-furion-\u4f9d\u8d56\u5305"},"2.2 \u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"h2"},"Furion")," \u4f9d\u8d56\u5305"),(0,r.kt)("img",{src:(0,o.Z)("img/rm4.png")}),(0,r.kt)("h2",{id:"23-furion-\u57fa\u672c\u914d\u7f6e"},"2.3 ",(0,r.kt)("inlineCode",{parentName:"h2"},"Furion")," \u57fa\u672c\u914d\u7f6e"),(0,r.kt)("h3",{id:"231-programcs-\u6dfb\u52a0-inject"},"2.3.1 ",(0,r.kt)("inlineCode",{parentName:"h3"},"Program.cs")," \u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"h3"},"Inject()")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{18}","{18}":!0},"using Microsoft.AspNetCore.Hosting;\nusing Microsoft.Extensions.Hosting;\n\nnamespace FurionStart\n{\n public class Program\n {\n public static void Main(string[] args)\n {\n CreateHostBuilder(args).Build().Run();\n }\n\n public static IHostBuilder CreateHostBuilder(string[] args) =>\n Host.CreateDefaultBuilder(args)\n .ConfigureWebHostDefaults(webBuilder =>\n {\n webBuilder\n .Inject() // \u6dfb\u52a0\u8fd9\u4e00\u884c\n .UseStartup();\n });\n }\n}\n")),(0,r.kt)("h3",{id:"232-\u5728-startupcs-\u4e2d\u6dfb\u52a0\u4e24\u4e2a-inject"},"2.3.2 \u5728 ",(0,r.kt)("inlineCode",{parentName:"h3"},"Startup.cs")," \u4e2d\u6dfb\u52a0\u4e24\u4e2a ",(0,r.kt)("inlineCode",{parentName:"h3"},"Inject()")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{20,37}","{20,37}":!0},"using Microsoft.AspNetCore.Builder;\nusing Microsoft.AspNetCore.Hosting;\nusing Microsoft.Extensions.Configuration;\nusing Microsoft.Extensions.DependencyInjection;\nusing Microsoft.Extensions.Hosting;\n\nnamespace FurionStart\n{\n public class Startup\n {\n public Startup(IConfiguration configuration)\n {\n Configuration = configuration;\n }\n\n public IConfiguration Configuration { get; }\n\n public void ConfigureServices(IServiceCollection services)\n {\n services.AddControllers().AddInject(); // \u6dfb\u52a0 AddInject();\n }\n\n public void Configure(IApplicationBuilder app, IWebHostEnvironment env)\n {\n if (env.IsDevelopment())\n {\n app.UseDeveloperExceptionPage();\n }\n\n app.UseHttpsRedirection();\n\n app.UseRouting();\n\n app.UseAuthorization();\n\n // \u6dfb\u52a0\u8fd9\u4e00\u884c\uff0c\u5982\u679c\u662f MVC\u548cAPI\u5171\u5b58\u9879\u76ee\uff0c\u65e0\u9700\u6dfb\u52a0 string.Empty\n app.UseInject(string.Empty);\n\n app.UseEndpoints(endpoints =>\n {\n endpoints.MapControllers();\n });\n }\n }\n}\n")),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u5c0f\u63d0\u9192")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u5982\u679c ",(0,r.kt)("inlineCode",{parentName:"p"},"app.UseInject()")," \u4e0d\u8f93\u5165\u53c2\u6570\uff0c\u5219\u9ed8\u8ba4\u5730\u5740\u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"/api"),"\uff0c\u5982\u679c\u8f93\u5165 ",(0,r.kt)("inlineCode",{parentName:"p"},"string.Empty")," \u5219\u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"/")," \u76ee\u5f55\u3002\u5982\u679c\u8f93\u5165\u4efb\u610f\u5b57\u7b26\u4e32\uff0c\u5219\u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"/\u4efb\u610f\u5b57\u7b26\u4e32")," \u76ee\u5f55\u3002"))),(0,r.kt)("h2",{id:"24-\u542f\u52a8\u6d4f\u89c8\u5668"},"2.4 \u542f\u52a8\u6d4f\u89c8\u5668"),(0,r.kt)("p",null,"\u542f\u52a8\u6d4f\u89c8\u5668\u67e5\u770b\u6548\u679c\u3002"),(0,r.kt)("img",{src:(0,o.Z)("img/rm5.png")}),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u5c0f\u77e5\u8bc6")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c\u901a\u8fc7 ",(0,r.kt)("inlineCode",{parentName:"p"},"Visual Studio 2019")," \u521b\u5efa\u7684\u9879\u76ee\u4f1a\u81ea\u52a8\u914d\u7f6e\u4e86\u542f\u52a8\u9875\uff0c\u5982\u679c\u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"F5")," \u8fd0\u884c\uff0c\u53ef\u80fd\u4e0d\u4f1a\u81ea\u52a8\u6253\u5f00\u9996\u9875\uff0c\u8fd9\u65f6\u5019\u6211\u4eec\u53ea\u9700\u8981\u914d\u7f6e ",(0,r.kt)("inlineCode",{parentName:"p"},"launchSettings.json")," \u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"launchUrl")," \u5373\u53ef\uff1a"),(0,r.kt)("img",{src:(0,o.Z)("img/rm6.png")}))),(0,r.kt)("p",null,"\u8bf4\u597d\u4e00\u5206\u949f\u4e0a\u624b\uff0c\u4f60\u4eec\u7528\u4e86\u591a\u957f\u65f6\u95f4\u3002\ud83d\ude01"))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/7dd08b1c.d23abe14.js b/handbook/build/assets/js/7dd08b1c.d23abe14.js new file mode 100644 index 00000000000..ee1ca3163fd --- /dev/null +++ b/handbook/build/assets/js/7dd08b1c.d23abe14.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[4640],{3905:function(e,t,n){n.d(t,{Zo:function(){return c},kt:function(){return m}});var r=n(7294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var p=r.createContext({}),u=function(e){var t=r.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},c=function(e){var t=u(e.components);return r.createElement(p.Provider,{value:t},e.children)},d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},s=r.forwardRef((function(e,t){var n=e.components,i=e.mdxType,o=e.originalType,p=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),s=u(n),m=i,k=s["".concat(p,".").concat(m)]||s[m]||d[m]||o;return n?r.createElement(k,a(a({ref:t},c),{},{components:n})):r.createElement(k,a({ref:t},c))}));function m(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var o=n.length,a=new Array(o);a[0]=s;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l.mdxType="string"==typeof e?e:i,a[1]=l;for(var u=2;u.NET 6 Preview 6 SDK",id:"\u5b89\u88c5-net-6-preview-6-sdk",children:[]},{value:"\u65e7\u9879\u76ee\u5347\u7ea7",id:"\u65e7\u9879\u76ee\u5347\u7ea7",children:[]},{value:"\u65b0\u9879\u76ee\u4f7f\u7528",id:"\u65b0\u9879\u76ee\u4f7f\u7528",children:[{value:"\u5347\u7ea7 Visual Studio 2019",id:"\u5347\u7ea7-visual-studio-2019",children:[]},{value:"\u7b2c\u4e00\u4e2a\u4f8b\u5b50",id:"\u7b2c\u4e00\u4e2a\u4f8b\u5b50",children:[]},{value:"\u6253\u5f00\u5e76\u542f\u52a8\u9879\u76ee",id:"\u6253\u5f00\u5e76\u542f\u52a8\u9879\u76ee",children:[]}]}],s={toc:d};function m(e){var t=e.components,n=(0,i.Z)(e,a);return(0,o.kt)("wrapper",(0,r.Z)({},s,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"2021 \u5e74 07 \u6708 15 \u65e5\uff0c\u5fae\u8f6f\u53d1\u5e03\u4e86 ",(0,o.kt)("inlineCode",{parentName:"strong"},".NET 6 Preview 6")," \u7248\u672c\uff0c",(0,o.kt)("inlineCode",{parentName:"strong"},"Furion")," \u5728\u5f53\u5929\u7b2c\u4e00\u65f6\u95f4\u9002\u914d\u4e86\u8be5\u7248\u672c\uff0c\u5e76\u53d1\u5e03 ",(0,o.kt)("inlineCode",{parentName:"strong"},"Furion v3.0.0-rc.1")," \u7248\u672c\u3002")),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/tree/3.0.0-rc.1/"},"Furion .NET 6 Preview 6 \u6e90\u7801\u5730\u5740")),(0,o.kt)("h2",{id:"\u5b89\u88c5-net-6-preview-6-sdk"},"\u5b89\u88c5 ",(0,o.kt)("inlineCode",{parentName:"h2"},".NET 6 Preview 6 SDK")),(0,o.kt)("p",null,"\u5c1d\u9c9c\u4e4b\u524d\uff0c\u9996\u5148\u5148\u5b89\u88c5 ",(0,o.kt)("inlineCode",{parentName:"p"},".NET 6 Preview 6 SDK"),"\uff0c\u4e0b\u8f7d\u5730\u5740\uff1a",(0,o.kt)("a",{parentName:"p",href:"https://dotnet.microsoft.com/download/dotnet/6.0"},"https://dotnet.microsoft.com/download/dotnet/6.0")),(0,o.kt)("p",null,"\u4e0b\u8f7d\u5bf9\u5e94\u7cfb\u7edf\u548c\u5904\u7406\u5668\u7248\u672c\u5373\u53ef\u3002"),(0,o.kt)("h2",{id:"\u65e7\u9879\u76ee\u5347\u7ea7"},"\u65e7\u9879\u76ee\u5347\u7ea7"),(0,o.kt)("p",null,"\u7f16\u8f91\u6240\u6709 ",(0,o.kt)("inlineCode",{parentName:"p"},".csproj")," \u9879\u76ee\uff0c\u4fee\u6539 ",(0,o.kt)("inlineCode",{parentName:"p"},"net5.0")," \u4e3a ",(0,o.kt)("inlineCode",{parentName:"p"},"net6.0"),"\u3002"),(0,o.kt)("p",null,"\u540c\u65f6\u5347\u7ea7\u6240\u6709 ",(0,o.kt)("inlineCode",{parentName:"p"},"Microsoft")," \u548c ",(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u5305\u4e3a\u6700\u65b0\u7248\u672c\uff0c",(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u6700\u65b0\u7248\u672c\u4e3a\uff1a",(0,o.kt)("inlineCode",{parentName:"p"},"v3.0.0-rc.1"),"\u3002"),(0,o.kt)("h2",{id:"\u65b0\u9879\u76ee\u4f7f\u7528"},"\u65b0\u9879\u76ee\u4f7f\u7528"),(0,o.kt)("h3",{id:"\u5347\u7ea7-visual-studio-2019"},"\u5347\u7ea7 ",(0,o.kt)("inlineCode",{parentName:"h3"},"Visual Studio 2019")),(0,o.kt)("p",null,"\u76ee\u524d ",(0,o.kt)("inlineCode",{parentName:"p"},".NET 6 Preview 6")," \u652f\u6301\u4f7f\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"Visual Studio 2019 Preview 16.11.0 Preview 3.0")," \u7248\u672c\uff0c",(0,o.kt)("strong",{parentName:"p"},"\u6ce8\u610f\u662f ",(0,o.kt)("inlineCode",{parentName:"strong"},"Preview")," \u6700\u65b0\u7248\u672c"),"\u3002\u4e0b\u8f7d\u5730\u5740\uff1a",(0,o.kt)("a",{parentName:"p",href:"https://visualstudio.microsoft.com/zh-hans/thank-you-downloading-visual-studio/?sku=enterprise&ch=pre&rel=16"},"https://visualstudio.microsoft.com/zh-hans/thank-you-downloading-visual-studio/?sku=enterprise&ch=pre&rel=16")),(0,o.kt)("p",null,"\u5df2\u7ecf\u5b89\u88c5\u4e86 ",(0,o.kt)("inlineCode",{parentName:"p"},"Visual Studio 2019 Preview")," \u7248\u672c\u7684\u670b\u53cb\u76f4\u63a5\u5347\u7ea7\u5230\u6700\u65b0\u7248\u5373\u53ef\u3002"),(0,o.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u7279\u522b\u8bf4\u660e")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u5982\u679c\u4f7f\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"Visual Studio Code")," \u5f00\u53d1\uff0c\u53ef\u5ffd\u7565\u6b64\u9009\u9879\u3002"))),(0,o.kt)("h3",{id:"\u7b2c\u4e00\u4e2a\u4f8b\u5b50"},"\u7b2c\u4e00\u4e2a\u4f8b\u5b50"),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"Furion v3.0.0-rc.1")," \u76ee\u524d\u63d0\u4f9b\u4e86\u6240\u6709\u7c7b\u578b\u7684\u811a\u624b\u67b6\uff0c\u7248\u672c\u53f7\u7edf\u4e00 ",(0,o.kt)("inlineCode",{parentName:"p"},"3.0.0-rc.1"),"\u3002"),(0,o.kt)("p",null,"\u5b89\u88c5\u811a\u624b\u67b6\uff0c\u6253\u5f00 ",(0,o.kt)("inlineCode",{parentName:"p"},"CMD/Powershell")," \u6267\u884c\u4ee5\u4e0b\u547d\u4ee4\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"dotnet new --install Furion.Template.Api::3.0.0-rc.1\n")),(0,o.kt)("p",null,"\u521b\u5efa\u9879\u76ee"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"dotnet new furionapi -n FurionNET6\n")),(0,o.kt)("h3",{id:"\u6253\u5f00\u5e76\u542f\u52a8\u9879\u76ee"},"\u6253\u5f00\u5e76\u542f\u52a8\u9879\u76ee"),(0,o.kt)("p",null,"\u6253\u5f00\u6d4f\u89c8\u5668\u67e5\u770b\u6548\u679c\u5373\u53ef\u3002"))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/7dd08b1c.ded5f64d.js b/handbook/build/assets/js/7dd08b1c.ded5f64d.js deleted file mode 100644 index 101f92bd8ba..00000000000 --- a/handbook/build/assets/js/7dd08b1c.ded5f64d.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[4640],{3905:function(e,t,n){n.d(t,{Zo:function(){return c},kt:function(){return m}});var r=n(7294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var p=r.createContext({}),u=function(e){var t=r.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},c=function(e){var t=u(e.components);return r.createElement(p.Provider,{value:t},e.children)},d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},s=r.forwardRef((function(e,t){var n=e.components,i=e.mdxType,o=e.originalType,p=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),s=u(n),m=i,k=s["".concat(p,".").concat(m)]||s[m]||d[m]||o;return n?r.createElement(k,a(a({ref:t},c),{},{components:n})):r.createElement(k,a({ref:t},c))}));function m(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var o=n.length,a=new Array(o);a[0]=s;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l.mdxType="string"==typeof e?e:i,a[1]=l;for(var u=2;u.NET 6 Preview 6 SDK",id:"\u5b89\u88c5-net-6-preview-6-sdk",children:[]},{value:"\u65e7\u9879\u76ee\u5347\u7ea7",id:"\u65e7\u9879\u76ee\u5347\u7ea7",children:[]},{value:"\u65b0\u9879\u76ee\u4f7f\u7528",id:"\u65b0\u9879\u76ee\u4f7f\u7528",children:[{value:"\u5347\u7ea7 Visual Studio 2019",id:"\u5347\u7ea7-visual-studio-2019",children:[]},{value:"\u7b2c\u4e00\u4e2a\u4f8b\u5b50",id:"\u7b2c\u4e00\u4e2a\u4f8b\u5b50",children:[]},{value:"\u6253\u5f00\u5e76\u542f\u52a8\u9879\u76ee",id:"\u6253\u5f00\u5e76\u542f\u52a8\u9879\u76ee",children:[]}]}],d={toc:c};function s(e){var t=e.components,n=(0,i.Z)(e,a);return(0,o.kt)("wrapper",(0,r.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"2021 \u5e74 07 \u6708 15 \u65e5\uff0c\u5fae\u8f6f\u53d1\u5e03\u4e86 ",(0,o.kt)("inlineCode",{parentName:"strong"},".NET 6 Preview 6")," \u7248\u672c\uff0c",(0,o.kt)("inlineCode",{parentName:"strong"},"Furion")," \u5728\u5f53\u5929\u7b2c\u4e00\u65f6\u95f4\u9002\u914d\u4e86\u8be5\u7248\u672c\uff0c\u5e76\u53d1\u5e03 ",(0,o.kt)("inlineCode",{parentName:"strong"},"Furion v3.0.0-rc.1")," \u7248\u672c\u3002")),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/tree/3.0.0-rc.1/"},"Furion .NET 6 Preview 6 \u6e90\u7801\u5730\u5740")),(0,o.kt)("h2",{id:"\u5b89\u88c5-net-6-preview-6-sdk"},"\u5b89\u88c5 ",(0,o.kt)("inlineCode",{parentName:"h2"},".NET 6 Preview 6 SDK")),(0,o.kt)("p",null,"\u5c1d\u9c9c\u4e4b\u524d\uff0c\u9996\u5148\u5148\u5b89\u88c5 ",(0,o.kt)("inlineCode",{parentName:"p"},".NET 6 Preview 6 SDK"),"\uff0c\u4e0b\u8f7d\u5730\u5740\uff1a",(0,o.kt)("a",{parentName:"p",href:"https://dotnet.microsoft.com/download/dotnet/6.0"},"https://dotnet.microsoft.com/download/dotnet/6.0")),(0,o.kt)("p",null,"\u4e0b\u8f7d\u5bf9\u5e94\u7cfb\u7edf\u548c\u5904\u7406\u5668\u7248\u672c\u5373\u53ef\u3002"),(0,o.kt)("h2",{id:"\u65e7\u9879\u76ee\u5347\u7ea7"},"\u65e7\u9879\u76ee\u5347\u7ea7"),(0,o.kt)("p",null,"\u7f16\u8f91\u6240\u6709 ",(0,o.kt)("inlineCode",{parentName:"p"},".csproj")," \u9879\u76ee\uff0c\u4fee\u6539 ",(0,o.kt)("inlineCode",{parentName:"p"},"net5.0")," \u4e3a ",(0,o.kt)("inlineCode",{parentName:"p"},"net6.0"),"\u3002"),(0,o.kt)("p",null,"\u540c\u65f6\u5347\u7ea7\u6240\u6709 ",(0,o.kt)("inlineCode",{parentName:"p"},"Microsoft")," \u548c ",(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u5305\u4e3a\u6700\u65b0\u7248\u672c\uff0c",(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u6700\u65b0\u7248\u672c\u4e3a\uff1a",(0,o.kt)("inlineCode",{parentName:"p"},"v3.0.0-rc.1"),"\u3002"),(0,o.kt)("h2",{id:"\u65b0\u9879\u76ee\u4f7f\u7528"},"\u65b0\u9879\u76ee\u4f7f\u7528"),(0,o.kt)("h3",{id:"\u5347\u7ea7-visual-studio-2019"},"\u5347\u7ea7 ",(0,o.kt)("inlineCode",{parentName:"h3"},"Visual Studio 2019")),(0,o.kt)("p",null,"\u76ee\u524d ",(0,o.kt)("inlineCode",{parentName:"p"},".NET 6 Preview 6")," \u652f\u6301\u4f7f\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"Visual Studio 2019 Preview 16.11.0 Preview 3.0")," \u7248\u672c\uff0c",(0,o.kt)("strong",{parentName:"p"},"\u6ce8\u610f\u662f ",(0,o.kt)("inlineCode",{parentName:"strong"},"Preview")," \u6700\u65b0\u7248\u672c"),"\u3002\u4e0b\u8f7d\u5730\u5740\uff1a",(0,o.kt)("a",{parentName:"p",href:"https://visualstudio.microsoft.com/zh-hans/thank-you-downloading-visual-studio/?sku=enterprise&ch=pre&rel=16"},"https://visualstudio.microsoft.com/zh-hans/thank-you-downloading-visual-studio/?sku=enterprise&ch=pre&rel=16")),(0,o.kt)("p",null,"\u5df2\u7ecf\u5b89\u88c5\u4e86 ",(0,o.kt)("inlineCode",{parentName:"p"},"Visual Studio 2019 Preview")," \u7248\u672c\u7684\u670b\u53cb\u76f4\u63a5\u5347\u7ea7\u5230\u6700\u65b0\u7248\u5373\u53ef\u3002"),(0,o.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u7279\u522b\u8bf4\u660e")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u5982\u679c\u4f7f\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"Visual Studio Code")," \u5f00\u53d1\uff0c\u53ef\u5ffd\u7565\u6b64\u9009\u9879\u3002"))),(0,o.kt)("h3",{id:"\u7b2c\u4e00\u4e2a\u4f8b\u5b50"},"\u7b2c\u4e00\u4e2a\u4f8b\u5b50"),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"Furion v3.0.0-rc.1")," \u76ee\u524d\u63d0\u4f9b\u4e86\u6240\u6709\u7c7b\u578b\u7684\u811a\u624b\u67b6\uff0c\u7248\u672c\u53f7\u7edf\u4e00 ",(0,o.kt)("inlineCode",{parentName:"p"},"3.0.0-rc.1"),"\u3002"),(0,o.kt)("p",null,"\u5b89\u88c5\u811a\u624b\u67b6\uff0c\u6253\u5f00 ",(0,o.kt)("inlineCode",{parentName:"p"},"CMD/Powershell")," \u6267\u884c\u4ee5\u4e0b\u547d\u4ee4\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"dotnet new --install Furion.Template.Api::3.0.0-rc.1\n")),(0,o.kt)("p",null,"\u521b\u5efa\u9879\u76ee"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"dotnet new furionapi -n FurionNET6\n")),(0,o.kt)("h3",{id:"\u6253\u5f00\u5e76\u542f\u52a8\u9879\u76ee"},"\u6253\u5f00\u5e76\u542f\u52a8\u9879\u76ee"),(0,o.kt)("p",null,"\u6253\u5f00\u6d4f\u89c8\u5668\u67e5\u770b\u6548\u679c\u5373\u53ef\u3002"))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/800036d7.1e1df351.js b/handbook/build/assets/js/800036d7.1e1df351.js deleted file mode 100644 index ccb3ef635f9..00000000000 --- a/handbook/build/assets/js/800036d7.1e1df351.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[7350],{3905:function(e,t,n){n.d(t,{Zo:function(){return c},kt:function(){return m}});var r=n(7294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var p=r.createContext({}),u=function(e){var t=r.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},c=function(e){var t=u(e.components);return r.createElement(p.Provider,{value:t},e.children)},d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},s=r.forwardRef((function(e,t){var n=e.components,i=e.mdxType,o=e.originalType,p=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),s=u(n),m=i,k=s["".concat(p,".").concat(m)]||s[m]||d[m]||o;return n?r.createElement(k,a(a({ref:t},c),{},{components:n})):r.createElement(k,a({ref:t},c))}));function m(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var o=n.length,a=new Array(o);a[0]=s;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l.mdxType="string"==typeof e?e:i,a[1]=l;for(var u=2;u.NET 6 Preview 6 SDK",id:"\u5b89\u88c5-net-6-preview-6-sdk",children:[]},{value:"\u65e7\u9879\u76ee\u5347\u7ea7",id:"\u65e7\u9879\u76ee\u5347\u7ea7",children:[]},{value:"\u65b0\u9879\u76ee\u4f7f\u7528",id:"\u65b0\u9879\u76ee\u4f7f\u7528",children:[{value:"\u5347\u7ea7 Visual Studio 2019",id:"\u5347\u7ea7-visual-studio-2019",children:[]},{value:"\u7b2c\u4e00\u4e2a\u4f8b\u5b50",id:"\u7b2c\u4e00\u4e2a\u4f8b\u5b50",children:[]},{value:"\u6253\u5f00\u5e76\u542f\u52a8\u9879\u76ee",id:"\u6253\u5f00\u5e76\u542f\u52a8\u9879\u76ee",children:[]}]}],d={toc:c};function s(e){var t=e.components,n=(0,i.Z)(e,a);return(0,o.kt)("wrapper",(0,r.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"2021 \u5e74 07 \u6708 15 \u65e5\uff0c\u5fae\u8f6f\u53d1\u5e03\u4e86 ",(0,o.kt)("inlineCode",{parentName:"strong"},".NET 6 Preview 6")," \u7248\u672c\uff0c",(0,o.kt)("inlineCode",{parentName:"strong"},"Furion")," \u5728\u5f53\u5929\u7b2c\u4e00\u65f6\u95f4\u9002\u914d\u4e86\u8be5\u7248\u672c\uff0c\u5e76\u53d1\u5e03 ",(0,o.kt)("inlineCode",{parentName:"strong"},"Furion v3.0.0-rc.1")," \u7248\u672c\u3002")),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/tree/3.0.0-rc.1/"},"Furion .NET 6 Preview 6 \u6e90\u7801\u5730\u5740")),(0,o.kt)("h2",{id:"\u5b89\u88c5-net-6-preview-6-sdk"},"\u5b89\u88c5 ",(0,o.kt)("inlineCode",{parentName:"h2"},".NET 6 Preview 6 SDK")),(0,o.kt)("p",null,"\u5c1d\u9c9c\u4e4b\u524d\uff0c\u9996\u5148\u5148\u5b89\u88c5 ",(0,o.kt)("inlineCode",{parentName:"p"},".NET 6 Preview 6 SDK"),"\uff0c\u4e0b\u8f7d\u5730\u5740\uff1a",(0,o.kt)("a",{parentName:"p",href:"https://dotnet.microsoft.com/download/dotnet/6.0"},"https://dotnet.microsoft.com/download/dotnet/6.0")),(0,o.kt)("p",null,"\u4e0b\u8f7d\u5bf9\u5e94\u7cfb\u7edf\u548c\u5904\u7406\u5668\u7248\u672c\u5373\u53ef\u3002"),(0,o.kt)("h2",{id:"\u65e7\u9879\u76ee\u5347\u7ea7"},"\u65e7\u9879\u76ee\u5347\u7ea7"),(0,o.kt)("p",null,"\u7f16\u8f91\u6240\u6709 ",(0,o.kt)("inlineCode",{parentName:"p"},".csproj")," \u9879\u76ee\uff0c\u4fee\u6539 ",(0,o.kt)("inlineCode",{parentName:"p"},"net5.0")," \u4e3a ",(0,o.kt)("inlineCode",{parentName:"p"},"net6.0"),"\u3002"),(0,o.kt)("p",null,"\u540c\u65f6\u5347\u7ea7\u6240\u6709 ",(0,o.kt)("inlineCode",{parentName:"p"},"Microsoft")," \u548c ",(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u5305\u4e3a\u6700\u65b0\u7248\u672c\uff0c",(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u6700\u65b0\u7248\u672c\u4e3a\uff1a",(0,o.kt)("inlineCode",{parentName:"p"},"v3.0.0-rc.1"),"\u3002"),(0,o.kt)("h2",{id:"\u65b0\u9879\u76ee\u4f7f\u7528"},"\u65b0\u9879\u76ee\u4f7f\u7528"),(0,o.kt)("h3",{id:"\u5347\u7ea7-visual-studio-2019"},"\u5347\u7ea7 ",(0,o.kt)("inlineCode",{parentName:"h3"},"Visual Studio 2019")),(0,o.kt)("p",null,"\u76ee\u524d ",(0,o.kt)("inlineCode",{parentName:"p"},".NET 6 Preview 6")," \u652f\u6301\u4f7f\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"Visual Studio 2019 Preview 16.11.0 Preview 3.0")," \u7248\u672c\uff0c",(0,o.kt)("strong",{parentName:"p"},"\u6ce8\u610f\u662f ",(0,o.kt)("inlineCode",{parentName:"strong"},"Preview")," \u6700\u65b0\u7248\u672c"),"\u3002\u4e0b\u8f7d\u5730\u5740\uff1a",(0,o.kt)("a",{parentName:"p",href:"https://visualstudio.microsoft.com/zh-hans/thank-you-downloading-visual-studio/?sku=enterprise&ch=pre&rel=16"},"https://visualstudio.microsoft.com/zh-hans/thank-you-downloading-visual-studio/?sku=enterprise&ch=pre&rel=16")),(0,o.kt)("p",null,"\u5df2\u7ecf\u5b89\u88c5\u4e86 ",(0,o.kt)("inlineCode",{parentName:"p"},"Visual Studio 2019 Preview")," \u7248\u672c\u7684\u670b\u53cb\u76f4\u63a5\u5347\u7ea7\u5230\u6700\u65b0\u7248\u5373\u53ef\u3002"),(0,o.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u7279\u522b\u8bf4\u660e")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u5982\u679c\u4f7f\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"Visual Studio Code")," \u5f00\u53d1\uff0c\u53ef\u5ffd\u7565\u6b64\u9009\u9879\u3002"))),(0,o.kt)("h3",{id:"\u7b2c\u4e00\u4e2a\u4f8b\u5b50"},"\u7b2c\u4e00\u4e2a\u4f8b\u5b50"),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"Furion v3.0.0-rc.1")," \u76ee\u524d\u63d0\u4f9b\u4e86\u6240\u6709\u7c7b\u578b\u7684\u811a\u624b\u67b6\uff0c\u7248\u672c\u53f7\u7edf\u4e00 ",(0,o.kt)("inlineCode",{parentName:"p"},"3.0.0-rc.1"),"\u3002"),(0,o.kt)("p",null,"\u5b89\u88c5\u811a\u624b\u67b6\uff0c\u6253\u5f00 ",(0,o.kt)("inlineCode",{parentName:"p"},"CMD/Powershell")," \u6267\u884c\u4ee5\u4e0b\u547d\u4ee4\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"dotnet new --install Furion.Template.Api::3.0.0-rc.1\n")),(0,o.kt)("p",null,"\u521b\u5efa\u9879\u76ee"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"dotnet new furionapi -n FurionNET6\n")),(0,o.kt)("h3",{id:"\u6253\u5f00\u5e76\u542f\u52a8\u9879\u76ee"},"\u6253\u5f00\u5e76\u542f\u52a8\u9879\u76ee"),(0,o.kt)("p",null,"\u6253\u5f00\u6d4f\u89c8\u5668\u67e5\u770b\u6548\u679c\u5373\u53ef\u3002"))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/800036d7.33da01d9.js b/handbook/build/assets/js/800036d7.33da01d9.js new file mode 100644 index 00000000000..c27dba74877 --- /dev/null +++ b/handbook/build/assets/js/800036d7.33da01d9.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[7350],{3905:function(e,t,n){n.d(t,{Zo:function(){return c},kt:function(){return m}});var r=n(7294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var p=r.createContext({}),u=function(e){var t=r.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},c=function(e){var t=u(e.components);return r.createElement(p.Provider,{value:t},e.children)},d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},s=r.forwardRef((function(e,t){var n=e.components,i=e.mdxType,o=e.originalType,p=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),s=u(n),m=i,k=s["".concat(p,".").concat(m)]||s[m]||d[m]||o;return n?r.createElement(k,a(a({ref:t},c),{},{components:n})):r.createElement(k,a({ref:t},c))}));function m(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var o=n.length,a=new Array(o);a[0]=s;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l.mdxType="string"==typeof e?e:i,a[1]=l;for(var u=2;u.NET 6 Preview 6 SDK",id:"\u5b89\u88c5-net-6-preview-6-sdk",children:[]},{value:"\u65e7\u9879\u76ee\u5347\u7ea7",id:"\u65e7\u9879\u76ee\u5347\u7ea7",children:[]},{value:"\u65b0\u9879\u76ee\u4f7f\u7528",id:"\u65b0\u9879\u76ee\u4f7f\u7528",children:[{value:"\u5347\u7ea7 Visual Studio 2019",id:"\u5347\u7ea7-visual-studio-2019",children:[]},{value:"\u7b2c\u4e00\u4e2a\u4f8b\u5b50",id:"\u7b2c\u4e00\u4e2a\u4f8b\u5b50",children:[]},{value:"\u6253\u5f00\u5e76\u542f\u52a8\u9879\u76ee",id:"\u6253\u5f00\u5e76\u542f\u52a8\u9879\u76ee",children:[]}]}],s={toc:d};function m(e){var t=e.components,n=(0,i.Z)(e,a);return(0,o.kt)("wrapper",(0,r.Z)({},s,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"2021 \u5e74 07 \u6708 15 \u65e5\uff0c\u5fae\u8f6f\u53d1\u5e03\u4e86 ",(0,o.kt)("inlineCode",{parentName:"strong"},".NET 6 Preview 6")," \u7248\u672c\uff0c",(0,o.kt)("inlineCode",{parentName:"strong"},"Furion")," \u5728\u5f53\u5929\u7b2c\u4e00\u65f6\u95f4\u9002\u914d\u4e86\u8be5\u7248\u672c\uff0c\u5e76\u53d1\u5e03 ",(0,o.kt)("inlineCode",{parentName:"strong"},"Furion v3.0.0-rc.1")," \u7248\u672c\u3002")),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/tree/3.0.0-rc.1/"},"Furion .NET 6 Preview 6 \u6e90\u7801\u5730\u5740")),(0,o.kt)("h2",{id:"\u5b89\u88c5-net-6-preview-6-sdk"},"\u5b89\u88c5 ",(0,o.kt)("inlineCode",{parentName:"h2"},".NET 6 Preview 6 SDK")),(0,o.kt)("p",null,"\u5c1d\u9c9c\u4e4b\u524d\uff0c\u9996\u5148\u5148\u5b89\u88c5 ",(0,o.kt)("inlineCode",{parentName:"p"},".NET 6 Preview 6 SDK"),"\uff0c\u4e0b\u8f7d\u5730\u5740\uff1a",(0,o.kt)("a",{parentName:"p",href:"https://dotnet.microsoft.com/download/dotnet/6.0"},"https://dotnet.microsoft.com/download/dotnet/6.0")),(0,o.kt)("p",null,"\u4e0b\u8f7d\u5bf9\u5e94\u7cfb\u7edf\u548c\u5904\u7406\u5668\u7248\u672c\u5373\u53ef\u3002"),(0,o.kt)("h2",{id:"\u65e7\u9879\u76ee\u5347\u7ea7"},"\u65e7\u9879\u76ee\u5347\u7ea7"),(0,o.kt)("p",null,"\u7f16\u8f91\u6240\u6709 ",(0,o.kt)("inlineCode",{parentName:"p"},".csproj")," \u9879\u76ee\uff0c\u4fee\u6539 ",(0,o.kt)("inlineCode",{parentName:"p"},"net5.0")," \u4e3a ",(0,o.kt)("inlineCode",{parentName:"p"},"net6.0"),"\u3002"),(0,o.kt)("p",null,"\u540c\u65f6\u5347\u7ea7\u6240\u6709 ",(0,o.kt)("inlineCode",{parentName:"p"},"Microsoft")," \u548c ",(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u5305\u4e3a\u6700\u65b0\u7248\u672c\uff0c",(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u6700\u65b0\u7248\u672c\u4e3a\uff1a",(0,o.kt)("inlineCode",{parentName:"p"},"v3.0.0-rc.1"),"\u3002"),(0,o.kt)("h2",{id:"\u65b0\u9879\u76ee\u4f7f\u7528"},"\u65b0\u9879\u76ee\u4f7f\u7528"),(0,o.kt)("h3",{id:"\u5347\u7ea7-visual-studio-2019"},"\u5347\u7ea7 ",(0,o.kt)("inlineCode",{parentName:"h3"},"Visual Studio 2019")),(0,o.kt)("p",null,"\u76ee\u524d ",(0,o.kt)("inlineCode",{parentName:"p"},".NET 6 Preview 6")," \u652f\u6301\u4f7f\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"Visual Studio 2019 Preview 16.11.0 Preview 3.0")," \u7248\u672c\uff0c",(0,o.kt)("strong",{parentName:"p"},"\u6ce8\u610f\u662f ",(0,o.kt)("inlineCode",{parentName:"strong"},"Preview")," \u6700\u65b0\u7248\u672c"),"\u3002\u4e0b\u8f7d\u5730\u5740\uff1a",(0,o.kt)("a",{parentName:"p",href:"https://visualstudio.microsoft.com/zh-hans/thank-you-downloading-visual-studio/?sku=enterprise&ch=pre&rel=16"},"https://visualstudio.microsoft.com/zh-hans/thank-you-downloading-visual-studio/?sku=enterprise&ch=pre&rel=16")),(0,o.kt)("p",null,"\u5df2\u7ecf\u5b89\u88c5\u4e86 ",(0,o.kt)("inlineCode",{parentName:"p"},"Visual Studio 2019 Preview")," \u7248\u672c\u7684\u670b\u53cb\u76f4\u63a5\u5347\u7ea7\u5230\u6700\u65b0\u7248\u5373\u53ef\u3002"),(0,o.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u7279\u522b\u8bf4\u660e")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u5982\u679c\u4f7f\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"Visual Studio Code")," \u5f00\u53d1\uff0c\u53ef\u5ffd\u7565\u6b64\u9009\u9879\u3002"))),(0,o.kt)("h3",{id:"\u7b2c\u4e00\u4e2a\u4f8b\u5b50"},"\u7b2c\u4e00\u4e2a\u4f8b\u5b50"),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"Furion v3.0.0-rc.1")," \u76ee\u524d\u63d0\u4f9b\u4e86\u6240\u6709\u7c7b\u578b\u7684\u811a\u624b\u67b6\uff0c\u7248\u672c\u53f7\u7edf\u4e00 ",(0,o.kt)("inlineCode",{parentName:"p"},"3.0.0-rc.1"),"\u3002"),(0,o.kt)("p",null,"\u5b89\u88c5\u811a\u624b\u67b6\uff0c\u6253\u5f00 ",(0,o.kt)("inlineCode",{parentName:"p"},"CMD/Powershell")," \u6267\u884c\u4ee5\u4e0b\u547d\u4ee4\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"dotnet new --install Furion.Template.Api::3.0.0-rc.1\n")),(0,o.kt)("p",null,"\u521b\u5efa\u9879\u76ee"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"dotnet new furionapi -n FurionNET6\n")),(0,o.kt)("h3",{id:"\u6253\u5f00\u5e76\u542f\u52a8\u9879\u76ee"},"\u6253\u5f00\u5e76\u542f\u52a8\u9879\u76ee"),(0,o.kt)("p",null,"\u6253\u5f00\u6d4f\u89c8\u5668\u67e5\u770b\u6548\u679c\u5373\u53ef\u3002"))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/84a61a3c.85c7d740.js b/handbook/build/assets/js/84a61a3c.85c7d740.js deleted file mode 100644 index 2313d27c5e2..00000000000 --- a/handbook/build/assets/js/84a61a3c.85c7d740.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[9625],{3905:function(e,n,t){t.d(n,{Zo:function(){return u},kt:function(){return d}});var i=t(7294);function a(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function r(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);n&&(i=i.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,i)}return t}function l(e){for(var n=1;n=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var p=i.createContext({}),m=function(e){var n=i.useContext(p),t=n;return e&&(t="function"==typeof e?e(n):l(l({},n),e)),t},u=function(e){var n=m(e.components);return i.createElement(p.Provider,{value:n},e.children)},c={inlineCode:"code",wrapper:function(e){var n=e.children;return i.createElement(i.Fragment,{},n)}},s=i.forwardRef((function(e,n){var t=e.components,a=e.mdxType,r=e.originalType,p=e.parentName,u=o(e,["components","mdxType","originalType","parentName"]),s=m(t),d=a,k=s["".concat(p,".").concat(d)]||s[d]||c[d]||r;return t?i.createElement(k,l(l({ref:n},u),{},{components:t})):i.createElement(k,l({ref:n},u))}));function d(e,n){var t=arguments,a=n&&n.mdxType;if("string"==typeof e||a){var r=t.length,l=new Array(r);l[0]=s;var o={};for(var p in n)hasOwnProperty.call(n,p)&&(o[p]=n[p]);o.originalType=e,o.mdxType="string"==typeof e?e:a,l[1]=o;for(var m=2;m=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var p=i.createContext({}),m=function(e){var n=i.useContext(p),t=n;return e&&(t="function"==typeof e?e(n):l(l({},n),e)),t},u=function(e){var n=m(e.components);return i.createElement(p.Provider,{value:n},e.children)},s={inlineCode:"code",wrapper:function(e){var n=e.children;return i.createElement(i.Fragment,{},n)}},c=i.forwardRef((function(e,n){var t=e.components,a=e.mdxType,r=e.originalType,p=e.parentName,u=o(e,["components","mdxType","originalType","parentName"]),c=m(t),d=a,k=c["".concat(p,".").concat(d)]||c[d]||s[d]||r;return t?i.createElement(k,l(l({ref:n},u),{},{components:t})):i.createElement(k,l({ref:n},u))}));function d(e,n){var t=arguments,a=n&&n.mdxType;if("string"==typeof e||a){var r=t.length,l=new Array(r);l[0]=c;var o={};for(var p in n)hasOwnProperty.call(n,p)&&(o[p]=n[p]);o.originalType=e,o.mdxType="string"==typeof e?e:a,l[1]=o;for(var m=2;m=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var u=n.createContext({}),p=function(e){var t=n.useContext(u),r=t;return e&&(r="function"==typeof e?e(t):a(a({},t),e)),r},l=function(e){var t=p(e.components);return n.createElement(u.Provider,{value:t},e.children)},s={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,i=e.originalType,u=e.parentName,l=c(e,["components","mdxType","originalType","parentName"]),d=p(r),f=o,m=d["".concat(u,".").concat(f)]||d[f]||s[f]||i;return r?n.createElement(m,a(a({ref:t},l),{},{components:r})):n.createElement(m,a({ref:t},l))}));function f(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=r.length,a=new Array(i);a[0]=d;var c={};for(var u in t)hasOwnProperty.call(t,u)&&(c[u]=t[u]);c.originalType=e,c.mdxType="string"==typeof e?e:o,a[1]=c;for(var p=2;p=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var u=n.createContext({}),p=function(e){var t=n.useContext(u),r=t;return e&&(r="function"==typeof e?e(t):a(a({},t),e)),r},l=function(e){var t=p(e.components);return n.createElement(u.Provider,{value:t},e.children)},s={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,i=e.originalType,u=e.parentName,l=c(e,["components","mdxType","originalType","parentName"]),d=p(r),f=o,m=d["".concat(u,".").concat(f)]||d[f]||s[f]||i;return r?n.createElement(m,a(a({ref:t},l),{},{components:r})):n.createElement(m,a({ref:t},l))}));function f(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=r.length,a=new Array(i);a[0]=d;var c={};for(var u in t)hasOwnProperty.call(t,u)&&(c[u]=t[u]);c.originalType=e,c.mdxType="string"==typeof e?e:o,a[1]=c;for(var p=2;p=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}var l=r.createContext({}),c=function(t){var e=r.useContext(l),n=e;return t&&(n="function"==typeof t?t(e):p(p({},e),t)),n},u=function(t){var e=c(t.components);return r.createElement(l.Provider,{value:e},t.children)},d={inlineCode:"code",wrapper:function(t){var e=t.children;return r.createElement(r.Fragment,{},e)}},s=r.forwardRef((function(t,e){var n=t.components,o=t.mdxType,a=t.originalType,l=t.parentName,u=i(t,["components","mdxType","originalType","parentName"]),s=c(n),m=o,h=s["".concat(l,".").concat(m)]||s[m]||d[m]||a;return n?r.createElement(h,p(p({ref:e},u),{},{components:n})):r.createElement(h,p({ref:e},u))}));function m(t,e){var n=arguments,o=e&&e.mdxType;if("string"==typeof t||o){var a=n.length,p=new Array(a);p[0]=s;var i={};for(var l in e)hasOwnProperty.call(e,l)&&(i[l]=e[l]);i.originalType=t,i.mdxType="string"==typeof t?t:o,p[1]=i;for(var c=2;cControllerBase \u6d3e\u751f\u7c7b\u4e2d",id:"\u5728-controllerbase-\u6d3e\u751f\u7c7b\u4e2d",children:[]},{value:"\u901a\u8fc7\u6ce8\u5165 IHttpContextAccessor",id:"\u901a\u8fc7\u6ce8\u5165-ihttpcontextaccessor",children:[]},{value:"\u901a\u8fc7 App.HttpContext",id:"\u901a\u8fc7-apphttpcontext",children:[]}]},{value:"HttpContext \u62d3\u5c55\u65b9\u6cd5",id:"httpcontext-\u62d3\u5c55\u65b9\u6cd5",children:[{value:"\u83b7\u53d6\u5f53\u524d\u8bf7\u6c42\u7684\u7279\u6027",id:"\u83b7\u53d6\u5f53\u524d\u8bf7\u6c42\u7684\u7279\u6027",children:[]},{value:"\u8bbe\u7f6e Swagger \u81ea\u52a8\u6388\u6743",id:"\u8bbe\u7f6e-swagger-\u81ea\u52a8\u6388\u6743",children:[]},{value:"\u9000\u51fa Swagger \u6388\u6743",id:"\u9000\u51fa-swagger-\u6388\u6743",children:[]},{value:"\u83b7\u53d6\u672c\u5730 IP \u5730\u5740",id:"\u83b7\u53d6\u672c\u5730-ip-\u5730\u5740",children:[]},{value:"\u83b7\u53d6\u5ba2\u6237\u7aef IP \u5730\u5740",id:"\u83b7\u53d6\u5ba2\u6237\u7aef-ip-\u5730\u5740",children:[]}]}],d={toc:u};function s(t){var e=t.components,n=(0,o.Z)(t,p);return(0,a.kt)("wrapper",(0,r.Z)({},d,n,{components:e,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"httpcontext-\u91cd\u5927\u8c03\u6574"},"HttpContext \u91cd\u5927\u8c03\u6574"),(0,a.kt)("p",null,"\u5728 ",(0,a.kt)("inlineCode",{parentName:"p"},"ASP.NET")," \u7684\u65f6\u4ee3\uff0c\u6211\u4eec\u901a\u5e38\u901a\u8fc7 ",(0,a.kt)("inlineCode",{parentName:"p"},"HttpContext")," \u5168\u5c40\u9759\u6001\u7c7b\u83b7\u53d6\u8bf7\u6c42\u4e0a\u4e0b\u6587\uff0c\u4f46\u5728 ",(0,a.kt)("inlineCode",{parentName:"p"},"ASP.NET Core")," \u4e2d\uff0c",(0,a.kt)("inlineCode",{parentName:"p"},"HttpContext")," \u662f\u4e00\u4e2a\u975e\u9759\u6001\u7684\u62bd\u8c61\u7c7b\uff0c\u65e0\u6cd5\u624b\u52a8\u521b\u5efa\uff0c\u4e5f\u65e0\u6cd5\u901a\u8fc7\u9759\u6001\u83b7\u53d6\u3002"),(0,a.kt)("p",null,"\u867d\u7136\u5728 ",(0,a.kt)("inlineCode",{parentName:"p"},"ASP.NET Core")," \u4e2d\u65e0\u6cd5\u76f4\u63a5\u83b7\u53d6 ",(0,a.kt)("inlineCode",{parentName:"p"},"HttpContext")," \u5bf9\u8c61\u3002\u4f46\u662f\u5fae\u8f6f\u4e5f\u63d0\u4f9b\u4e86\u6ce8\u5165 ",(0,a.kt)("inlineCode",{parentName:"p"},"IHttpContextAccessor")," \u65b9\u5f0f\u83b7\u53d6\u3002"),(0,a.kt)("h2",{id:"httpcontext-\u591a\u79cd\u83b7\u53d6\u65b9\u5f0f"},"HttpContext \u591a\u79cd\u83b7\u53d6\u65b9\u5f0f"),(0,a.kt)("h3",{id:"\u5728-controllerbase-\u6d3e\u751f\u7c7b\u4e2d"},"\u5728 ",(0,a.kt)("inlineCode",{parentName:"h3"},"ControllerBase")," \u6d3e\u751f\u7c7b\u4e2d"),(0,a.kt)("p",null,"\u5728 ",(0,a.kt)("inlineCode",{parentName:"p"},"ControllerBase")," \u6d3e\u751f\u7c7b\u4e2d\uff0c\u6211\u4eec\u53ef\u4ee5\u76f4\u63a5\u901a\u8fc7 ",(0,a.kt)("inlineCode",{parentName:"p"},"HttpContext")," \u5c5e\u6027\u83b7\u53d6 ",(0,a.kt)("inlineCode",{parentName:"p"},"HttpContext")," \u5bf9\u8c61\u3002"),(0,a.kt)("h3",{id:"\u901a\u8fc7\u6ce8\u5165-ihttpcontextaccessor"},"\u901a\u8fc7\u6ce8\u5165 ",(0,a.kt)("inlineCode",{parentName:"h3"},"IHttpContextAccessor")),(0,a.kt)("p",null,"\u5728 ",(0,a.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\uff0c\u9ed8\u8ba4\u5df2\u7ecf\u6ce8\u518c\u4e86 ",(0,a.kt)("inlineCode",{parentName:"p"},"IHttpContextAccessor")," \u670d\u52a1\uff0c\u6240\u4ee5\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7\u6784\u9020\u51fd\u6570\u6ce8\u5165\u8be5\u5bf9\u8c61\u83b7\u53d6\u3002"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{3,5}","{3,5}":!0},"public class AppService\n{\n public AppService(IHttpContextAccessor httpContextAccessor)\n {\n var httpContext = httpContextAccessor.HttpContext;\n }\n}\n")),(0,a.kt)("h3",{id:"\u901a\u8fc7-apphttpcontext"},"\u901a\u8fc7 ",(0,a.kt)("inlineCode",{parentName:"h3"},"App.HttpContext")),(0,a.kt)("p",null,(0,a.kt)("inlineCode",{parentName:"p"},"App")," \u9759\u6001\u7c7b\u4e5f\u63d0\u4f9b\u4e86 ",(0,a.kt)("inlineCode",{parentName:"p"},"App.HttpContext")," \u83b7\u53d6 ",(0,a.kt)("inlineCode",{parentName:"p"},"HttpContext")," \u5bf9\u8c61\u3002"),(0,a.kt)("h2",{id:"httpcontext-\u62d3\u5c55\u65b9\u6cd5"},(0,a.kt)("inlineCode",{parentName:"h2"},"HttpContext")," \u62d3\u5c55\u65b9\u6cd5"),(0,a.kt)("p",null,(0,a.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e5f\u63d0\u4f9b\u4e86\u4e00\u4e9b\u5e38\u7528\u7684 ",(0,a.kt)("inlineCode",{parentName:"p"},"HttpContext")," \u62d3\u5c55\u65b9\u6cd5"),(0,a.kt)("h3",{id:"\u83b7\u53d6\u5f53\u524d\u8bf7\u6c42\u7684\u7279\u6027"},"\u83b7\u53d6\u5f53\u524d\u8bf7\u6c42\u7684\u7279\u6027"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs"},"var attribute = httpContext.GetMetadata();\n")),(0,a.kt)("h3",{id:"\u8bbe\u7f6e-swagger-\u81ea\u52a8\u6388\u6743"},"\u8bbe\u7f6e ",(0,a.kt)("inlineCode",{parentName:"h3"},"Swagger")," \u81ea\u52a8\u6388\u6743"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs"},'httpContext.SigninToSwagger("\u4f60\u7684token");\n')),(0,a.kt)("h3",{id:"\u9000\u51fa-swagger-\u6388\u6743"},"\u9000\u51fa ",(0,a.kt)("inlineCode",{parentName:"h3"},"Swagger")," \u6388\u6743"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs"},"httpContext.SignoutToSwagger();\n")),(0,a.kt)("h3",{id:"\u83b7\u53d6\u672c\u5730-ip-\u5730\u5740"},"\u83b7\u53d6\u672c\u5730 IP \u5730\u5740"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs"},"var ipv4 = httpContext.GetLocalIpAddressToIPv4();\nvar ipv6 = httpContext.GetLocalIpAddressToIPv6();\n")),(0,a.kt)("h3",{id:"\u83b7\u53d6\u5ba2\u6237\u7aef-ip-\u5730\u5740"},"\u83b7\u53d6\u5ba2\u6237\u7aef IP \u5730\u5740"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs"},"var ipv4 = httpContext.GetRemoteIpAddressToIPv4();\nvar ipv6 = httpContext.GetRemoteIpAddressToIPv6();\n")))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/861b6d56.ae874fe0.js b/handbook/build/assets/js/861b6d56.ae874fe0.js new file mode 100644 index 00000000000..a9f588e43ec --- /dev/null +++ b/handbook/build/assets/js/861b6d56.ae874fe0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[7555],{3905:function(t,e,n){n.d(e,{Zo:function(){return u},kt:function(){return m}});var r=n(7294);function o(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function a(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function p(t){for(var e=1;e=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}var l=r.createContext({}),c=function(t){var e=r.useContext(l),n=e;return t&&(n="function"==typeof t?t(e):p(p({},e),t)),n},u=function(t){var e=c(t.components);return r.createElement(l.Provider,{value:e},t.children)},d={inlineCode:"code",wrapper:function(t){var e=t.children;return r.createElement(r.Fragment,{},e)}},s=r.forwardRef((function(t,e){var n=t.components,o=t.mdxType,a=t.originalType,l=t.parentName,u=i(t,["components","mdxType","originalType","parentName"]),s=c(n),m=o,h=s["".concat(l,".").concat(m)]||s[m]||d[m]||a;return n?r.createElement(h,p(p({ref:e},u),{},{components:n})):r.createElement(h,p({ref:e},u))}));function m(t,e){var n=arguments,o=e&&e.mdxType;if("string"==typeof t||o){var a=n.length,p=new Array(a);p[0]=s;var i={};for(var l in e)hasOwnProperty.call(e,l)&&(i[l]=e[l]);i.originalType=t,i.mdxType="string"==typeof t?t:o,p[1]=i;for(var c=2;cControllerBase \u6d3e\u751f\u7c7b\u4e2d",id:"\u5728-controllerbase-\u6d3e\u751f\u7c7b\u4e2d",children:[]},{value:"\u901a\u8fc7\u6ce8\u5165 IHttpContextAccessor",id:"\u901a\u8fc7\u6ce8\u5165-ihttpcontextaccessor",children:[]},{value:"\u901a\u8fc7 App.HttpContext",id:"\u901a\u8fc7-apphttpcontext",children:[]}]},{value:"HttpContext \u62d3\u5c55\u65b9\u6cd5",id:"httpcontext-\u62d3\u5c55\u65b9\u6cd5",children:[{value:"\u83b7\u53d6\u5f53\u524d\u8bf7\u6c42\u7684\u7279\u6027",id:"\u83b7\u53d6\u5f53\u524d\u8bf7\u6c42\u7684\u7279\u6027",children:[]},{value:"\u8bbe\u7f6e Swagger \u81ea\u52a8\u6388\u6743",id:"\u8bbe\u7f6e-swagger-\u81ea\u52a8\u6388\u6743",children:[]},{value:"\u9000\u51fa Swagger \u6388\u6743",id:"\u9000\u51fa-swagger-\u6388\u6743",children:[]},{value:"\u83b7\u53d6\u672c\u5730 IP \u5730\u5740",id:"\u83b7\u53d6\u672c\u5730-ip-\u5730\u5740",children:[]},{value:"\u83b7\u53d6\u5ba2\u6237\u7aef IP \u5730\u5740",id:"\u83b7\u53d6\u5ba2\u6237\u7aef-ip-\u5730\u5740",children:[]}]}],s={toc:d};function m(t){var e=t.components,n=(0,o.Z)(t,p);return(0,a.kt)("wrapper",(0,r.Z)({},s,n,{components:e,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"httpcontext-\u91cd\u5927\u8c03\u6574"},"HttpContext \u91cd\u5927\u8c03\u6574"),(0,a.kt)("p",null,"\u5728 ",(0,a.kt)("inlineCode",{parentName:"p"},"ASP.NET")," \u7684\u65f6\u4ee3\uff0c\u6211\u4eec\u901a\u5e38\u901a\u8fc7 ",(0,a.kt)("inlineCode",{parentName:"p"},"HttpContext")," \u5168\u5c40\u9759\u6001\u7c7b\u83b7\u53d6\u8bf7\u6c42\u4e0a\u4e0b\u6587\uff0c\u4f46\u5728 ",(0,a.kt)("inlineCode",{parentName:"p"},"ASP.NET Core")," \u4e2d\uff0c",(0,a.kt)("inlineCode",{parentName:"p"},"HttpContext")," \u662f\u4e00\u4e2a\u975e\u9759\u6001\u7684\u62bd\u8c61\u7c7b\uff0c\u65e0\u6cd5\u624b\u52a8\u521b\u5efa\uff0c\u4e5f\u65e0\u6cd5\u901a\u8fc7\u9759\u6001\u83b7\u53d6\u3002"),(0,a.kt)("p",null,"\u867d\u7136\u5728 ",(0,a.kt)("inlineCode",{parentName:"p"},"ASP.NET Core")," \u4e2d\u65e0\u6cd5\u76f4\u63a5\u83b7\u53d6 ",(0,a.kt)("inlineCode",{parentName:"p"},"HttpContext")," \u5bf9\u8c61\u3002\u4f46\u662f\u5fae\u8f6f\u4e5f\u63d0\u4f9b\u4e86\u6ce8\u5165 ",(0,a.kt)("inlineCode",{parentName:"p"},"IHttpContextAccessor")," \u65b9\u5f0f\u83b7\u53d6\u3002"),(0,a.kt)("h2",{id:"httpcontext-\u591a\u79cd\u83b7\u53d6\u65b9\u5f0f"},"HttpContext \u591a\u79cd\u83b7\u53d6\u65b9\u5f0f"),(0,a.kt)("h3",{id:"\u5728-controllerbase-\u6d3e\u751f\u7c7b\u4e2d"},"\u5728 ",(0,a.kt)("inlineCode",{parentName:"h3"},"ControllerBase")," \u6d3e\u751f\u7c7b\u4e2d"),(0,a.kt)("p",null,"\u5728 ",(0,a.kt)("inlineCode",{parentName:"p"},"ControllerBase")," \u6d3e\u751f\u7c7b\u4e2d\uff0c\u6211\u4eec\u53ef\u4ee5\u76f4\u63a5\u901a\u8fc7 ",(0,a.kt)("inlineCode",{parentName:"p"},"HttpContext")," \u5c5e\u6027\u83b7\u53d6 ",(0,a.kt)("inlineCode",{parentName:"p"},"HttpContext")," \u5bf9\u8c61\u3002"),(0,a.kt)("h3",{id:"\u901a\u8fc7\u6ce8\u5165-ihttpcontextaccessor"},"\u901a\u8fc7\u6ce8\u5165 ",(0,a.kt)("inlineCode",{parentName:"h3"},"IHttpContextAccessor")),(0,a.kt)("p",null,"\u5728 ",(0,a.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\uff0c\u9ed8\u8ba4\u5df2\u7ecf\u6ce8\u518c\u4e86 ",(0,a.kt)("inlineCode",{parentName:"p"},"IHttpContextAccessor")," \u670d\u52a1\uff0c\u6240\u4ee5\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7\u6784\u9020\u51fd\u6570\u6ce8\u5165\u8be5\u5bf9\u8c61\u83b7\u53d6\u3002"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{3,5}","{3,5}":!0},"public class AppService\n{\n public AppService(IHttpContextAccessor httpContextAccessor)\n {\n var httpContext = httpContextAccessor.HttpContext;\n }\n}\n")),(0,a.kt)("h3",{id:"\u901a\u8fc7-apphttpcontext"},"\u901a\u8fc7 ",(0,a.kt)("inlineCode",{parentName:"h3"},"App.HttpContext")),(0,a.kt)("p",null,(0,a.kt)("inlineCode",{parentName:"p"},"App")," \u9759\u6001\u7c7b\u4e5f\u63d0\u4f9b\u4e86 ",(0,a.kt)("inlineCode",{parentName:"p"},"App.HttpContext")," \u83b7\u53d6 ",(0,a.kt)("inlineCode",{parentName:"p"},"HttpContext")," \u5bf9\u8c61\u3002"),(0,a.kt)("h2",{id:"httpcontext-\u62d3\u5c55\u65b9\u6cd5"},(0,a.kt)("inlineCode",{parentName:"h2"},"HttpContext")," \u62d3\u5c55\u65b9\u6cd5"),(0,a.kt)("p",null,(0,a.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e5f\u63d0\u4f9b\u4e86\u4e00\u4e9b\u5e38\u7528\u7684 ",(0,a.kt)("inlineCode",{parentName:"p"},"HttpContext")," \u62d3\u5c55\u65b9\u6cd5"),(0,a.kt)("h3",{id:"\u83b7\u53d6\u5f53\u524d\u8bf7\u6c42\u7684\u7279\u6027"},"\u83b7\u53d6\u5f53\u524d\u8bf7\u6c42\u7684\u7279\u6027"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs"},"var attribute = httpContext.GetMetadata();\n")),(0,a.kt)("h3",{id:"\u8bbe\u7f6e-swagger-\u81ea\u52a8\u6388\u6743"},"\u8bbe\u7f6e ",(0,a.kt)("inlineCode",{parentName:"h3"},"Swagger")," \u81ea\u52a8\u6388\u6743"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs"},'httpContext.SigninToSwagger("\u4f60\u7684token");\n')),(0,a.kt)("h3",{id:"\u9000\u51fa-swagger-\u6388\u6743"},"\u9000\u51fa ",(0,a.kt)("inlineCode",{parentName:"h3"},"Swagger")," \u6388\u6743"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs"},"httpContext.SignoutToSwagger();\n")),(0,a.kt)("h3",{id:"\u83b7\u53d6\u672c\u5730-ip-\u5730\u5740"},"\u83b7\u53d6\u672c\u5730 IP \u5730\u5740"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs"},"var ipv4 = httpContext.GetLocalIpAddressToIPv4();\nvar ipv6 = httpContext.GetLocalIpAddressToIPv6();\n")),(0,a.kt)("h3",{id:"\u83b7\u53d6\u5ba2\u6237\u7aef-ip-\u5730\u5740"},"\u83b7\u53d6\u5ba2\u6237\u7aef IP \u5730\u5740"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs"},"var ipv4 = httpContext.GetRemoteIpAddressToIPv4();\nvar ipv6 = httpContext.GetRemoteIpAddressToIPv6();\n")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/88486ef5.9139a943.js b/handbook/build/assets/js/88486ef5.9139a943.js deleted file mode 100644 index 2fdfeee30ed..00000000000 --- a/handbook/build/assets/js/88486ef5.9139a943.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[3201],{3905:function(e,t,n){n.d(t,{Zo:function(){return s},kt:function(){return u}});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function p(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var d=a.createContext({}),l=function(e){var t=a.useContext(d),n=t;return e&&(n="function"==typeof e?e(t):p(p({},t),e)),n},s=function(e){var t=l(e.components);return a.createElement(d.Provider,{value:t},e.children)},c={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,d=e.parentName,s=o(e,["components","mdxType","originalType","parentName"]),m=l(n),u=r,k=m["".concat(d,".").concat(u)]||m[u]||c[u]||i;return n?a.createElement(k,p(p({ref:t},s),{},{components:n})):a.createElement(k,p({ref:t},s))}));function u(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,p=new Array(i);p[0]=m;var o={};for(var d in t)hasOwnProperty.call(t,d)&&(o[d]=t[d]);o.originalType=e,o.mdxType="string"==typeof e?e:r,p[1]=o;for(var l=2;lMapster \u4f7f\u7528",id:"133-mapster-\u4f7f\u7528",children:[{value:"13.3.1 \u5feb\u901f\u5165\u95e8",id:"1331-\u5feb\u901f\u5165\u95e8",children:[]},{value:"13.3.2 \u81ea\u5b9a\u4e49\u6620\u5c04\u89c4\u5219",id:"1332-\u81ea\u5b9a\u4e49\u6620\u5c04\u89c4\u5219",children:[]},{value:"13.3.3 \u4f9d\u8d56\u6ce8\u5165\u65b9\u5f0f",id:"1333-\u4f9d\u8d56\u6ce8\u5165\u65b9\u5f0f",children:[]},{value:"13.3.4 \u548c EFCore \u914d\u5408",id:"1334-\u548c-efcore-\u914d\u5408",children:[]}]},{value:"13.4 \u5168\u5c40\u9ed8\u8ba4\u914d\u7f6e",id:"134-\u5168\u5c40\u9ed8\u8ba4\u914d\u7f6e",children:[]},{value:"13.5 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"135-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],c={toc:s};function m(e){var t=e.components,n=(0,r.Z)(e,p);return(0,i.kt)("wrapper",(0,a.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"131-\u5bf9\u8c61\u6620\u5c04"},"13.1 \u5bf9\u8c61\u6620\u5c04"),(0,i.kt)("p",null,"\u7b80\u5355\u6765\u8bf4\uff0c\u5c31\u662f\u5c06\u4e00\u4e2a\u5bf9\u8c61\u7684\u6570\u636e\u6839\u636e\u7279\u5b9a\u89c4\u5219\u6279\u91cf\u6620\u5c04\u5230\u53e6\u4e00\u4e2a\u5bf9\u8c61\u4e2d\uff0c\u51cf\u5c11\u624b\u5de5\u64cd\u4f5c\u548c\u964d\u4f4e\u4eba\u4e3a\u51fa\u9519\u7387\u3002\u5982\u5c06 ",(0,i.kt)("inlineCode",{parentName:"p"},"DTO")," \u5bf9\u8c61\u6620\u5c04\u5230 ",(0,i.kt)("inlineCode",{parentName:"p"},"Entity")," \u5b9e\u4f53\u4e2d\uff0c\u53cd\u4e4b\u4ea6\u7136\u3002"),(0,i.kt)("h2",{id:"132-\u5148\u770b\u4f8b\u5b50"},"13.2 \u5148\u770b\u4f8b\u5b50"),(0,i.kt)("p",null,"\u5728\u8fc7\u53bb\uff0c\u6211\u4eec\u9700\u8981\u5c06\u4e00\u4e2a\u5bf9\u8c61\u7684\u503c\u8f6c\u6362\u5230\u53e6\u4e00\u4e2a\u5bf9\u8c61\u4e2d\uff0c\u6211\u4eec\u9700\u8981\u8fd9\u6837\u505a\uff0c\u5982\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'var entity = repository.Find(1);\n\nvar dto = new Dto();\ndto.Id = entity.Id;\ndto.Name = entity.Name;\ndto.Age = entity.Age;\ndto.Address = entity.Address;\ndto.FullName = entity.FirstName + entity.LastName;\ndto.IdCard = entity.IdCard.Replace("1234", "****");\n')),(0,i.kt)("p",null,"\u4e0a\u9762\u7684\u4f8b\u5b50\u4f3c\u4e4e\u6ca1\u6709\u4efb\u4f55\u95ee\u9898\uff0c\u4f46\u662f\u5982\u679c\u5f88\u591a\u5730\u65b9\u9700\u8981\u8fd9\u6837\u7684\u8d4b\u503c\u64cd\u4f5c\u3001\u6216\u8005\u76f8\u540c\u7684\u8d4b\u503c\u64cd\u4f5c\u5728\u591a\u4e2a\u5730\u65b9\u4f7f\u7528\uff0c\u53c8\u6216\u8005\u4e00\u4e2a\u7c7b\u4e2d\u542b\u6709\u975e\u5e38\u591a\u7684\u5c5e\u6027\u6216\u81ea\u5b9a\u4e49\u8d4b\u503c\u64cd\u4f5c\u3002\u90a3\u4e48\u8fd9\u6837\u7684\u64cd\u4f5c\u6548\u7387\u6781\u4f4e\uff0c\u5bb9\u6613\u51fa\u9519\uff0c\u4e14\u4ee3\u7801\u975e\u5e38\u81c3\u80bf\u548c\u5197\u4f59\u3002"),(0,i.kt)("p",null,"\u6240\u4ee5\uff0c\u5b9e\u73b0\u81ea\u52a8\u6620\u5c04\u8d4b\u503c\u548c\u652f\u6301\u7279\u6b8a\u914d\u7f6e\u7684\u9700\u6c42\u5c31\u6709\u4e86\u3002\u76ee\u524d ",(0,i.kt)("inlineCode",{parentName:"p"},"C#")," \u5e73\u53f0\u6709\u4e24\u4e2a\u4f18\u79c0\u7684\u5bf9\u8c61\u6620\u5c04\u5de5\u5177\uff1a",(0,i.kt)("inlineCode",{parentName:"p"},"Mapster")," \u548c ",(0,i.kt)("inlineCode",{parentName:"p"},"AutoMapper"),"\u3002",(0,i.kt)("strong",{parentName:"p"},"\u5728 ",(0,i.kt)("inlineCode",{parentName:"strong"},"Furion")," \u6846\u67b6\u4e2d\uff0c\u63a8\u8350\u4f7f\u7528 ",(0,i.kt)("a",{parentName:"strong",href:"https://github.com/MapsterMapper/Mapster"},"Mapster"),"\uff0c",(0,i.kt)("a",{parentName:"strong",href:"https://github.com/MapsterMapper/Mapster"},"Mapster")," \u662f\u4e00\u6b3e\u6781\u6613\u4f7f\u7528\u4e14\u8d85\u9ad8\u6027\u80fd\u7684\u5bf9\u8c61\u6620\u5c04\u6846\u67b6\u3002")),(0,i.kt)("h2",{id:"133-mapster-\u4f7f\u7528"},"13.3 ",(0,i.kt)("inlineCode",{parentName:"h2"},"Mapster")," \u4f7f\u7528"),(0,i.kt)("p",null,"\u73b0\u5728\uff0c\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7 ",(0,i.kt)("inlineCode",{parentName:"p"},"Mapster")," \u63d0\u4f9b\u7684\u5bf9\u8c61\u6620\u5c04\u65b9\u6cd5\uff1a",(0,i.kt)("inlineCode",{parentName:"p"},"Adapt")," \u65b9\u6cd5\u6539\u9020\u4e0a\u9762\u7684\u4f8b\u5b50\uff1a"),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u5b89\u88c5\u62d3\u5c55\u5305")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion.Core")," \u5c42\u5b89\u88c5 ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion.Extras.ObjectMapper.Mapster")," \u62d3\u5c55\u5305\uff0c\u65e0\u9700\u624b\u52a8\u8c03\u7528\uff0c",(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u4f1a\u81ea\u52a8\u52a0\u8f7d\u5e76\u8c03\u7528\u3002"))),(0,i.kt)("h3",{id:"1331-\u5feb\u901f\u5165\u95e8"},"13.3.1 \u5feb\u901f\u5165\u95e8"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"var entity = repository.Find(1);\nvar dto = entity.Adapt();\n")),(0,i.kt)("p",null,"\u4ec5\u4ec5\u4e00\u884c\u4ee3\u7801\u5c31\u53ef\u4ee5\u5b9e\u73b0 ",(0,i.kt)("inlineCode",{parentName:"p"},"entity -> dto")," \u7684\u8f6c\u6362\uff0c\u5982\u679c\u6d89\u53ca\u5230\u8d4b\u503c\u7684\u590d\u5236\u64cd\u4f5c\uff0c\u5982 ",(0,i.kt)("inlineCode",{parentName:"p"},"dto.FullName")," \u548c ",(0,i.kt)("inlineCode",{parentName:"p"},"dto.IdCard"),"\uff0c\u6211\u4eec\u53ea\u9700\u8981\u81ea\u5b9a\u4e49\u6620\u5c04\u89c4\u5219\u7c7b\u5373\u53ef\u3002"),(0,i.kt)("h3",{id:"1332-\u81ea\u5b9a\u4e49\u6620\u5c04\u89c4\u5219"},"13.3.2 \u81ea\u5b9a\u4e49\u6620\u5c04\u89c4\u5219"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,6,10-12}","{1,6,10-12}":!0},'using Mapster;\nusing System;\n\nnamespace Furion.Application\n{\n public class Mapper : IRegister\n {\n public void Register(TypeAdapterConfig config)\n {\n config.ForType()\n .Map(dest => dest.FullName, src => src.FirstName + src.LastName)\n .Map(dest => dest.IdCard, src => src.IdCard.Replace("1234", "****"));\n }\n }\n}\n')),(0,i.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u5c0f\u77e5\u8bc6")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u8be5\u6620\u5c04\u6587\u4ef6 ",(0,i.kt)("inlineCode",{parentName:"p"},"Mapper.cs")," \u53ef\u4ee5\u653e\u5728\u4efb\u4f55\u9879\u76ee\u6216\u6587\u4ef6\u5939\u4e2d\uff0c",(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u4f1a\u5728\u7a0b\u5e8f\u542f\u52a8\u7684\u65f6\u5019\u81ea\u52a8\u626b\u63cf\u5e76\u6ce8\u5165\u914d\u7f6e\u3002"))),(0,i.kt)("h3",{id:"1333-\u4f9d\u8d56\u6ce8\u5165\u65b9\u5f0f"},"13.3.3 \u4f9d\u8d56\u6ce8\u5165\u65b9\u5f0f"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Mapster")," \u9664\u4e86\u63d0\u4f9b ",(0,i.kt)("inlineCode",{parentName:"p"},"Adapt")," \u62d3\u5c55\u65b9\u6cd5\u4ee5\u5916\uff0c\u540c\u65f6\u8fd8\u63d0\u4f9b\u4f9d\u8d56\u6ce8\u5165\u7684\u65b9\u5f0f\u3002"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"public Person(IMapper mapper)\n{\n var dto = _mapper.Map(entity);\n}\n")),(0,i.kt)("h3",{id:"1334-\u548c-efcore-\u914d\u5408"},"13.3.4 \u548c ",(0,i.kt)("inlineCode",{parentName:"h3"},"EFCore")," \u914d\u5408"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Mapster")," \u8fd8\u63d0\u4f9b\u4e86 ",(0,i.kt)("inlineCode",{parentName:"p"},"ProjectToType")," Linq \u62d3\u5c55\u65b9\u6cd5\u51cf\u5c11\u6211\u4eec\u624b\u52a8 ",(0,i.kt)("inlineCode",{parentName:"p"},"Select")," \u64cd\u4f5c\uff0c\u5982\uff1a"),(0,i.kt)("p",null,"\u6b63\u5e38\u7684\u64cd\u4f5c\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"var destinations = context.Sources\n .Select(p => new Destination {\n Id = p.Id,\n Name = p.Name,\n Surname = p.Surname,\n ....\n })\n .ToList();\n")),(0,i.kt)("p",null,"\u4f7f\u7528 ",(0,i.kt)("inlineCode",{parentName:"p"},"Mapster")," \u4e4b\u540e\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"}," var destinations = context.Sources.ProjectToType().ToList();\n")),(0,i.kt)("h2",{id:"134-\u5168\u5c40\u9ed8\u8ba4\u914d\u7f6e"},"13.4 \u5168\u5c40\u9ed8\u8ba4\u914d\u7f6e"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u63d0\u4f9b\u5168\u5c40\u9ed8\u8ba4\u6620\u5c04\u914d\u7f6e\u9009\u9879 ",(0,i.kt)("inlineCode",{parentName:"p"},"TypeAdapterConfig.GlobalSettings.Default"),"\uff0c\u53ef\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Startup")," \u4e2d\u914d\u7f6e\u5373\u53ef\uff0c\u5982\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"TypeAdapterConfig.GlobalSettings.Default\n .PreserveReference(true);\n")),(0,i.kt)("h2",{id:"135-\u53cd\u9988\u4e0e\u5efa\u8bae"},"13.5 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,i.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))),(0,i.kt)("hr",null),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e86\u89e3\u66f4\u591a")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u60f3\u4e86\u89e3\u66f4\u591a ",(0,i.kt)("inlineCode",{parentName:"p"},"Mapster")," \u77e5\u8bc6\u53ef\u67e5\u9605 ",(0,i.kt)("a",{parentName:"p",href:"https://github.com/MapsterMapper/Mapster/wiki"},"Mapster - Wiki")," \u6587\u6863\u3002"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/88486ef5.9bb4dccf.js b/handbook/build/assets/js/88486ef5.9bb4dccf.js new file mode 100644 index 00000000000..9f890dbb1b6 --- /dev/null +++ b/handbook/build/assets/js/88486ef5.9bb4dccf.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[3201],{3905:function(e,t,n){n.d(t,{Zo:function(){return l},kt:function(){return u}});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function p(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var d=a.createContext({}),s=function(e){var t=a.useContext(d),n=t;return e&&(n="function"==typeof e?e(t):p(p({},t),e)),n},l=function(e){var t=s(e.components);return a.createElement(d.Provider,{value:t},e.children)},c={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,d=e.parentName,l=o(e,["components","mdxType","originalType","parentName"]),m=s(n),u=r,k=m["".concat(d,".").concat(u)]||m[u]||c[u]||i;return n?a.createElement(k,p(p({ref:t},l),{},{components:n})):a.createElement(k,p({ref:t},l))}));function u(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,p=new Array(i);p[0]=m;var o={};for(var d in t)hasOwnProperty.call(t,d)&&(o[d]=t[d]);o.originalType=e,o.mdxType="string"==typeof e?e:r,p[1]=o;for(var s=2;sMapster \u4f7f\u7528",id:"133-mapster-\u4f7f\u7528",children:[{value:"13.3.1 \u5feb\u901f\u5165\u95e8",id:"1331-\u5feb\u901f\u5165\u95e8",children:[]},{value:"13.3.2 \u81ea\u5b9a\u4e49\u6620\u5c04\u89c4\u5219",id:"1332-\u81ea\u5b9a\u4e49\u6620\u5c04\u89c4\u5219",children:[]},{value:"13.3.3 \u4f9d\u8d56\u6ce8\u5165\u65b9\u5f0f",id:"1333-\u4f9d\u8d56\u6ce8\u5165\u65b9\u5f0f",children:[]},{value:"13.3.4 \u548c EFCore \u914d\u5408",id:"1334-\u548c-efcore-\u914d\u5408",children:[]}]},{value:"13.4 \u5168\u5c40\u9ed8\u8ba4\u914d\u7f6e",id:"134-\u5168\u5c40\u9ed8\u8ba4\u914d\u7f6e",children:[]},{value:"13.5 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"135-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],c={toc:l};function m(e){var t=e.components,n=(0,r.Z)(e,p);return(0,i.kt)("wrapper",(0,a.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"131-\u5bf9\u8c61\u6620\u5c04"},"13.1 \u5bf9\u8c61\u6620\u5c04"),(0,i.kt)("p",null,"\u7b80\u5355\u6765\u8bf4\uff0c\u5c31\u662f\u5c06\u4e00\u4e2a\u5bf9\u8c61\u7684\u6570\u636e\u6839\u636e\u7279\u5b9a\u89c4\u5219\u6279\u91cf\u6620\u5c04\u5230\u53e6\u4e00\u4e2a\u5bf9\u8c61\u4e2d\uff0c\u51cf\u5c11\u624b\u5de5\u64cd\u4f5c\u548c\u964d\u4f4e\u4eba\u4e3a\u51fa\u9519\u7387\u3002\u5982\u5c06 ",(0,i.kt)("inlineCode",{parentName:"p"},"DTO")," \u5bf9\u8c61\u6620\u5c04\u5230 ",(0,i.kt)("inlineCode",{parentName:"p"},"Entity")," \u5b9e\u4f53\u4e2d\uff0c\u53cd\u4e4b\u4ea6\u7136\u3002"),(0,i.kt)("h2",{id:"132-\u5148\u770b\u4f8b\u5b50"},"13.2 \u5148\u770b\u4f8b\u5b50"),(0,i.kt)("p",null,"\u5728\u8fc7\u53bb\uff0c\u6211\u4eec\u9700\u8981\u5c06\u4e00\u4e2a\u5bf9\u8c61\u7684\u503c\u8f6c\u6362\u5230\u53e6\u4e00\u4e2a\u5bf9\u8c61\u4e2d\uff0c\u6211\u4eec\u9700\u8981\u8fd9\u6837\u505a\uff0c\u5982\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'var entity = repository.Find(1);\n\nvar dto = new Dto();\ndto.Id = entity.Id;\ndto.Name = entity.Name;\ndto.Age = entity.Age;\ndto.Address = entity.Address;\ndto.FullName = entity.FirstName + entity.LastName;\ndto.IdCard = entity.IdCard.Replace("1234", "****");\n')),(0,i.kt)("p",null,"\u4e0a\u9762\u7684\u4f8b\u5b50\u4f3c\u4e4e\u6ca1\u6709\u4efb\u4f55\u95ee\u9898\uff0c\u4f46\u662f\u5982\u679c\u5f88\u591a\u5730\u65b9\u9700\u8981\u8fd9\u6837\u7684\u8d4b\u503c\u64cd\u4f5c\u3001\u6216\u8005\u76f8\u540c\u7684\u8d4b\u503c\u64cd\u4f5c\u5728\u591a\u4e2a\u5730\u65b9\u4f7f\u7528\uff0c\u53c8\u6216\u8005\u4e00\u4e2a\u7c7b\u4e2d\u542b\u6709\u975e\u5e38\u591a\u7684\u5c5e\u6027\u6216\u81ea\u5b9a\u4e49\u8d4b\u503c\u64cd\u4f5c\u3002\u90a3\u4e48\u8fd9\u6837\u7684\u64cd\u4f5c\u6548\u7387\u6781\u4f4e\uff0c\u5bb9\u6613\u51fa\u9519\uff0c\u4e14\u4ee3\u7801\u975e\u5e38\u81c3\u80bf\u548c\u5197\u4f59\u3002"),(0,i.kt)("p",null,"\u6240\u4ee5\uff0c\u5b9e\u73b0\u81ea\u52a8\u6620\u5c04\u8d4b\u503c\u548c\u652f\u6301\u7279\u6b8a\u914d\u7f6e\u7684\u9700\u6c42\u5c31\u6709\u4e86\u3002\u76ee\u524d ",(0,i.kt)("inlineCode",{parentName:"p"},"C#")," \u5e73\u53f0\u6709\u4e24\u4e2a\u4f18\u79c0\u7684\u5bf9\u8c61\u6620\u5c04\u5de5\u5177\uff1a",(0,i.kt)("inlineCode",{parentName:"p"},"Mapster")," \u548c ",(0,i.kt)("inlineCode",{parentName:"p"},"AutoMapper"),"\u3002",(0,i.kt)("strong",{parentName:"p"},"\u5728 ",(0,i.kt)("inlineCode",{parentName:"strong"},"Furion")," \u6846\u67b6\u4e2d\uff0c\u63a8\u8350\u4f7f\u7528 ",(0,i.kt)("a",{parentName:"strong",href:"https://github.com/MapsterMapper/Mapster"},"Mapster"),"\uff0c",(0,i.kt)("a",{parentName:"strong",href:"https://github.com/MapsterMapper/Mapster"},"Mapster")," \u662f\u4e00\u6b3e\u6781\u6613\u4f7f\u7528\u4e14\u8d85\u9ad8\u6027\u80fd\u7684\u5bf9\u8c61\u6620\u5c04\u6846\u67b6\u3002")),(0,i.kt)("h2",{id:"133-mapster-\u4f7f\u7528"},"13.3 ",(0,i.kt)("inlineCode",{parentName:"h2"},"Mapster")," \u4f7f\u7528"),(0,i.kt)("p",null,"\u73b0\u5728\uff0c\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7 ",(0,i.kt)("inlineCode",{parentName:"p"},"Mapster")," \u63d0\u4f9b\u7684\u5bf9\u8c61\u6620\u5c04\u65b9\u6cd5\uff1a",(0,i.kt)("inlineCode",{parentName:"p"},"Adapt")," \u65b9\u6cd5\u6539\u9020\u4e0a\u9762\u7684\u4f8b\u5b50\uff1a"),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u5b89\u88c5\u62d3\u5c55\u5305")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion.Core")," \u5c42\u5b89\u88c5 ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion.Extras.ObjectMapper.Mapster")," \u62d3\u5c55\u5305\uff0c\u65e0\u9700\u624b\u52a8\u8c03\u7528\uff0c",(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u4f1a\u81ea\u52a8\u52a0\u8f7d\u5e76\u8c03\u7528\u3002"))),(0,i.kt)("h3",{id:"1331-\u5feb\u901f\u5165\u95e8"},"13.3.1 \u5feb\u901f\u5165\u95e8"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"var entity = repository.Find(1);\nvar dto = entity.Adapt();\n")),(0,i.kt)("p",null,"\u4ec5\u4ec5\u4e00\u884c\u4ee3\u7801\u5c31\u53ef\u4ee5\u5b9e\u73b0 ",(0,i.kt)("inlineCode",{parentName:"p"},"entity -> dto")," \u7684\u8f6c\u6362\uff0c\u5982\u679c\u6d89\u53ca\u5230\u8d4b\u503c\u7684\u590d\u5236\u64cd\u4f5c\uff0c\u5982 ",(0,i.kt)("inlineCode",{parentName:"p"},"dto.FullName")," \u548c ",(0,i.kt)("inlineCode",{parentName:"p"},"dto.IdCard"),"\uff0c\u6211\u4eec\u53ea\u9700\u8981\u81ea\u5b9a\u4e49\u6620\u5c04\u89c4\u5219\u7c7b\u5373\u53ef\u3002"),(0,i.kt)("h3",{id:"1332-\u81ea\u5b9a\u4e49\u6620\u5c04\u89c4\u5219"},"13.3.2 \u81ea\u5b9a\u4e49\u6620\u5c04\u89c4\u5219"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,6,10-12}","{1,6,10-12}":!0},'using Mapster;\nusing System;\n\nnamespace Furion.Application\n{\n public class Mapper : IRegister\n {\n public void Register(TypeAdapterConfig config)\n {\n config.ForType()\n .Map(dest => dest.FullName, src => src.FirstName + src.LastName)\n .Map(dest => dest.IdCard, src => src.IdCard.Replace("1234", "****"));\n }\n }\n}\n')),(0,i.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u5c0f\u77e5\u8bc6")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u8be5\u6620\u5c04\u6587\u4ef6 ",(0,i.kt)("inlineCode",{parentName:"p"},"Mapper.cs")," \u53ef\u4ee5\u653e\u5728\u4efb\u4f55\u9879\u76ee\u6216\u6587\u4ef6\u5939\u4e2d\uff0c",(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u4f1a\u5728\u7a0b\u5e8f\u542f\u52a8\u7684\u65f6\u5019\u81ea\u52a8\u626b\u63cf\u5e76\u6ce8\u5165\u914d\u7f6e\u3002"))),(0,i.kt)("h3",{id:"1333-\u4f9d\u8d56\u6ce8\u5165\u65b9\u5f0f"},"13.3.3 \u4f9d\u8d56\u6ce8\u5165\u65b9\u5f0f"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Mapster")," \u9664\u4e86\u63d0\u4f9b ",(0,i.kt)("inlineCode",{parentName:"p"},"Adapt")," \u62d3\u5c55\u65b9\u6cd5\u4ee5\u5916\uff0c\u540c\u65f6\u8fd8\u63d0\u4f9b\u4f9d\u8d56\u6ce8\u5165\u7684\u65b9\u5f0f\u3002"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"public Person(IMapper mapper)\n{\n var dto = _mapper.Map(entity);\n}\n")),(0,i.kt)("h3",{id:"1334-\u548c-efcore-\u914d\u5408"},"13.3.4 \u548c ",(0,i.kt)("inlineCode",{parentName:"h3"},"EFCore")," \u914d\u5408"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Mapster")," \u8fd8\u63d0\u4f9b\u4e86 ",(0,i.kt)("inlineCode",{parentName:"p"},"ProjectToType")," Linq \u62d3\u5c55\u65b9\u6cd5\u51cf\u5c11\u6211\u4eec\u624b\u52a8 ",(0,i.kt)("inlineCode",{parentName:"p"},"Select")," \u64cd\u4f5c\uff0c\u5982\uff1a"),(0,i.kt)("p",null,"\u6b63\u5e38\u7684\u64cd\u4f5c\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"var destinations = context.Sources\n .Select(p => new Destination {\n Id = p.Id,\n Name = p.Name,\n Surname = p.Surname,\n ....\n })\n .ToList();\n")),(0,i.kt)("p",null,"\u4f7f\u7528 ",(0,i.kt)("inlineCode",{parentName:"p"},"Mapster")," \u4e4b\u540e\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"}," var destinations = context.Sources.ProjectToType().ToList();\n")),(0,i.kt)("h2",{id:"134-\u5168\u5c40\u9ed8\u8ba4\u914d\u7f6e"},"13.4 \u5168\u5c40\u9ed8\u8ba4\u914d\u7f6e"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u63d0\u4f9b\u5168\u5c40\u9ed8\u8ba4\u6620\u5c04\u914d\u7f6e\u9009\u9879 ",(0,i.kt)("inlineCode",{parentName:"p"},"TypeAdapterConfig.GlobalSettings.Default"),"\uff0c\u53ef\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Startup")," \u4e2d\u914d\u7f6e\u5373\u53ef\uff0c\u5982\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"TypeAdapterConfig.GlobalSettings.Default\n .PreserveReference(true);\n")),(0,i.kt)("h2",{id:"135-\u53cd\u9988\u4e0e\u5efa\u8bae"},"13.5 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,i.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))),(0,i.kt)("hr",null),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e86\u89e3\u66f4\u591a")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u60f3\u4e86\u89e3\u66f4\u591a ",(0,i.kt)("inlineCode",{parentName:"p"},"Mapster")," \u77e5\u8bc6\u53ef\u67e5\u9605 ",(0,i.kt)("a",{parentName:"p",href:"https://github.com/MapsterMapper/Mapster/wiki"},"Mapster - Wiki")," \u6587\u6863\u3002"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/8968961d.57158a8d.js b/handbook/build/assets/js/8968961d.57158a8d.js new file mode 100644 index 00000000000..9543afbab49 --- /dev/null +++ b/handbook/build/assets/js/8968961d.57158a8d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[2710],{3905:function(e,n,t){t.d(n,{Zo:function(){return d},kt:function(){return u}});var a=t(7294);function r(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function o(e){for(var n=1;n=0||(r[t]=e[t]);return r}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var l=a.createContext({}),c=function(e){var n=a.useContext(l),t=n;return e&&(t="function"==typeof e?e(n):o(o({},n),e)),t},d=function(e){var n=c(e.components);return a.createElement(l.Provider,{value:n},e.children)},p={inlineCode:"code",wrapper:function(e){var n=e.children;return a.createElement(a.Fragment,{},n)}},m=a.forwardRef((function(e,n){var t=e.components,r=e.mdxType,i=e.originalType,l=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),m=c(t),u=r,k=m["".concat(l,".").concat(u)]||m[u]||p[u]||i;return t?a.createElement(k,o(o({ref:n},d),{},{components:t})):a.createElement(k,o({ref:n},d))}));function u(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var i=t.length,o=new Array(i);o[0]=m;var s={};for(var l in n)hasOwnProperty.call(n,l)&&(s[l]=n[l]);s.originalType=e,s.mdxType="string"==typeof e?e:r,o[1]=s;for(var c=2;c[FakeDelete] \u6807\u8bb0",id:"9871-\u6dfb\u52a0-fakedelete-\u6807\u8bb0",children:[]},{value:"9.8.7.2 \u5047\u5220\u9664\u4f7f\u7528",id:"9872-\u5047\u5220\u9664\u4f7f\u7528",children:[]}]},{value:"9.8.8 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"988-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],p={toc:d};function m(e){var n=e.components,t=(0,r.Z)(e,o);return(0,i.kt)("wrapper",(0,a.Z)({},p,t,{components:n,mdxType:"MDXLayout"}),(0,i.kt)("div",{className:"admonition admonition-warning alert alert--danger"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"}))),"\u529f\u80fd\u79fb\u9664\u58f0\u660e")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u4ee5\u4e0b\u5185\u5bb9\u5305\u542b ",(0,i.kt)("inlineCode",{parentName:"p"},"Exists")," \u5355\u8bcd\u7684\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion 2.6.0 +")," \u7248\u672c\u4e2d\u5df2\u79fb\u9664\u3002"))),(0,i.kt)("h2",{id:"981-\u5220\u9664\u4e00\u4e2a\u5b9e\u4f53\uff08\u4e0d\u7acb\u5373\u63d0\u4ea4\uff09"},"9.8.1 \u5220\u9664\u4e00\u4e2a\u5b9e\u4f53\uff08\u4e0d\u7acb\u5373\u63d0\u4ea4\uff09"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"// ==== \u540c\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nrepository.Delete(user);\n\n// \u793a\u4f8b\u4e8c\nuser.Delete();\n\n// \u793a\u4f8b\u4e09\nrepository.ChangeEntityState(user, EntityState.Deleted);\n\n// \u793a\u4f8b\u56db\nrepository.Entities.Remove(user);\n\n// ==== \u5f02\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nawait repository.DeleteAsync(user);\n\n// \u793a\u4f8b\u4e8c\nawait user.DeleteAsync();\n")),(0,i.kt)("h2",{id:"982-\u5220\u9664\u4e00\u4e2a\u5b9e\u4f53\uff08\u7acb\u5373\u63d0\u4ea4\uff09"},"9.8.2 \u5220\u9664\u4e00\u4e2a\u5b9e\u4f53\uff08\u7acb\u5373\u63d0\u4ea4\uff09"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"// ==== \u540c\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nrepository.DeleteNow(user);\n\n// \u793a\u4f8b\u4e8c\nuser.DeleteNow();\n\n// ==== \u5f02\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nawait repository.DeleteNowAsync(user);\n\n// \u793a\u4f8b\u4e8c\nawait user.DeleteNowAsync();\n")),(0,i.kt)("h2",{id:"983-\u6839\u636e\u4e3b\u952e\u5220\u9664\u8bb0\u5f55\uff08\u4e0d\u7acb\u5373\u63d0\u4ea4\uff09"},"9.8.3 \u6839\u636e\u4e3b\u952e\u5220\u9664\u8bb0\u5f55\uff08\u4e0d\u7acb\u5373\u63d0\u4ea4\uff09"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"// ==== \u540c\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nrepository.Delete(1);\n\n// \u793a\u4f8b\u4e8c\nuser.Delete(1);\n\n// ==== \u5f02\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nawait repository.DeleteAsync(1);\n\n// \u793a\u4f8b\u4e8c\nawait user.DeleteAsync(1);\n")),(0,i.kt)("h2",{id:"984-\u6839\u636e\u4e3b\u952e\u5220\u9664\u8bb0\u5f55\uff08\u7acb\u5373\u63d0\u4ea4\uff09"},"9.8.4 \u6839\u636e\u4e3b\u952e\u5220\u9664\u8bb0\u5f55\uff08\u7acb\u5373\u63d0\u4ea4\uff09"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"// ==== \u540c\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nrepository.DeleteNow(1);\n\n// \u793a\u4f8b\u4e8c\nuser.DeleteNow(1);\n\n// ==== \u5f02\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nawait repository.DeleteNowAsync(1);\n\n// \u793a\u4f8b\u4e8c\nawait user.DeleteNowAsync(1);\n")),(0,i.kt)("h2",{id:"985-\u6570\u636e\u5b58\u5728\u624d\u6839\u636e\u4e3b\u952e\u5220\u9664\uff08\u4e0d\u7acb\u5373\u63d0\u4ea4\uff09"},"9.8.5 \u6570\u636e\u5b58\u5728\u624d\u6839\u636e\u4e3b\u952e\u5220\u9664\uff08\u4e0d\u7acb\u5373\u63d0\u4ea4\uff09"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"// ==== \u540c\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nrepository.DeleteExists(1);\n\n// \u793a\u4f8b\u4e8c\nuser.DeleteExists(1);\n\n// ==== \u5f02\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nawait repository.DeleteExistsAsync(1);\n\n// \u793a\u4f8b\u4e8c\nawait user.DeleteExistsAsync(1);\n")),(0,i.kt)("h2",{id:"986-\u6570\u636e\u5b58\u5728\u624d\u6839\u636e\u4e3b\u952e\u5220\u9664\uff08\u7acb\u5373\u63d0\u4ea4\uff09"},"9.8.6 \u6570\u636e\u5b58\u5728\u624d\u6839\u636e\u4e3b\u952e\u5220\u9664\uff08\u7acb\u5373\u63d0\u4ea4\uff09"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"// ==== \u540c\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nrepository.DeleteExistsNow(1);\n\n// \u793a\u4f8b\u4e8c\nuser.DeleteExistsNow(1);\n\n// ==== \u5f02\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nawait repository.DeleteExistsNowAsync(1);\n\n// \u793a\u4f8b\u4e8c\nawait user.DeleteExistsNowAsync(1);\n")),(0,i.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u5c0f\u77e5\u8bc6")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u6240\u6709\u5e26 ",(0,i.kt)("inlineCode",{parentName:"p"},"Now")," \u7ed3\u5c3e\u7684\u8868\u793a\u7acb\u5373\u63d0\u4ea4\u5230\u6570\u636e\u5e93\uff0c\u4e5f\u5c31\u662f\u7acb\u5373\u8c03\u7528 ",(0,i.kt)("inlineCode",{parentName:"p"},"SaveChanges")," \u6216 ",(0,i.kt)("inlineCode",{parentName:"p"},"SaveChangesAsync"),"\u3002"))),(0,i.kt)("h2",{id:"987-\u5047\u5220\u9664\u8f6f\u5220\u9664"},"9.8.7 \u5047\u5220\u9664/\u8f6f\u5220\u9664"),(0,i.kt)("div",{className:"admonition admonition-warning alert alert--danger"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"}))),"\u529f\u80fd\u79fb\u9664\u58f0\u660e")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u4ee5\u4e0b\u5185\u5bb9\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion 2.10 +")," \u7248\u672c\u4e2d\u5df2\u79fb\u9664\u3002"))),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\u53ef\u4ee5\u901a\u8fc7 ",(0,i.kt)("inlineCode",{parentName:"p"},"[FakeDelete]")," \u7279\u6027\u6807\u8bb0\u5047\u5220\u9664\u7279\u6027\uff0c\u5982\uff1a"),(0,i.kt)("h3",{id:"9871-\u6dfb\u52a0-fakedelete-\u6807\u8bb0"},"9.8.7.1 \u6dfb\u52a0 ",(0,i.kt)("inlineCode",{parentName:"h3"},"[FakeDelete]")," \u6807\u8bb0"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{3}","{3}":!0},"public class Model: IEntity\n{\n [FakeDelete(true)] // \u8bbe\u7f6e\u5047\u5220\u9664\u7684\u503c\n public bool IsDeleted { get; set; }\n}\n")),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"[FakeDelete]")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},(0,i.kt)("strong",{parentName:"p"},"`","[FakeDelete]")," \u5c5e\u6027\u62e5\u6709\u5e26\u4e00\u4e2a\u53c2\u6570\u7684\u6784\u9020\u51fd\u6570\uff0c\u8fd9\u4e2a\u53c2\u6570\u662f\u5047\u5220\u9664\u7684\u503c"))),(0,i.kt)("h3",{id:"9872-\u5047\u5220\u9664\u4f7f\u7528"},"9.8.7.2 \u5047\u5220\u9664\u4f7f\u7528"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"// ==== \u540c\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nrepository.FakeDelete(entity);\n\n// \u793a\u4f8b\u4e8c\nrepository.FakeDeleteNow(entity);\n\n// \u793a\u4f8b\u4e09\nrepository.FakeDelete(1);\n\n// \u793a\u4f8b\u56db\nrepository.FakeDeleteNow(1);\n\n// \u793a\u4f8b\u4e94\nentity.FakeDelete();\n\n// \u793a\u4f8b\u516d\nrepository.UpdateInclude(user, u => u.IsDeleted);\n\n// ==== \u5f02\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nawait repository.FakeDeleteAsync(entity);\n\n// \u793a\u4f8b\u4e8c\nawait repository.FakeDeleteNowAsync(entity);\n\n// \u793a\u4f8b\u4e09\nawait repository.FakeDeleteAsync(1);\n\n// \u793a\u4f8b\u56db\nawait repository.FakeDeleteNowAsync(1);\n\n// \u793a\u4f8b\u4e94\nawait entity.FakeDeleteAsync();\n\n// \u793a\u4f8b\u516d\nawait repository.UpdateIncludeAsync(user, u => u.IsDeleted);\n")),(0,i.kt)("h2",{id:"988-\u53cd\u9988\u4e0e\u5efa\u8bae"},"9.8.8 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,i.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/8968961d.93c878a9.js b/handbook/build/assets/js/8968961d.93c878a9.js deleted file mode 100644 index ffc0861ae78..00000000000 --- a/handbook/build/assets/js/8968961d.93c878a9.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[2710],{3905:function(e,n,t){t.d(n,{Zo:function(){return d},kt:function(){return u}});var a=t(7294);function r(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function o(e){for(var n=1;n=0||(r[t]=e[t]);return r}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var l=a.createContext({}),c=function(e){var n=a.useContext(l),t=n;return e&&(t="function"==typeof e?e(n):o(o({},n),e)),t},d=function(e){var n=c(e.components);return a.createElement(l.Provider,{value:n},e.children)},p={inlineCode:"code",wrapper:function(e){var n=e.children;return a.createElement(a.Fragment,{},n)}},m=a.forwardRef((function(e,n){var t=e.components,r=e.mdxType,i=e.originalType,l=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),m=c(t),u=r,k=m["".concat(l,".").concat(u)]||m[u]||p[u]||i;return t?a.createElement(k,o(o({ref:n},d),{},{components:t})):a.createElement(k,o({ref:n},d))}));function u(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var i=t.length,o=new Array(i);o[0]=m;var s={};for(var l in n)hasOwnProperty.call(n,l)&&(s[l]=n[l]);s.originalType=e,s.mdxType="string"==typeof e?e:r,o[1]=s;for(var c=2;c[FakeDelete] \u6807\u8bb0",id:"9871-\u6dfb\u52a0-fakedelete-\u6807\u8bb0",children:[]},{value:"9.8.7.2 \u5047\u5220\u9664\u4f7f\u7528",id:"9872-\u5047\u5220\u9664\u4f7f\u7528",children:[]}]},{value:"9.8.8 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"988-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],p={toc:d};function m(e){var n=e.components,t=(0,r.Z)(e,o);return(0,i.kt)("wrapper",(0,a.Z)({},p,t,{components:n,mdxType:"MDXLayout"}),(0,i.kt)("div",{className:"admonition admonition-warning alert alert--danger"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"}))),"\u529f\u80fd\u79fb\u9664\u58f0\u660e")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u4ee5\u4e0b\u5185\u5bb9\u5305\u542b ",(0,i.kt)("inlineCode",{parentName:"p"},"Exists")," \u5355\u8bcd\u7684\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion 2.6.0 +")," \u7248\u672c\u4e2d\u5df2\u79fb\u9664\u3002"))),(0,i.kt)("h2",{id:"981-\u5220\u9664\u4e00\u4e2a\u5b9e\u4f53\uff08\u4e0d\u7acb\u5373\u63d0\u4ea4\uff09"},"9.8.1 \u5220\u9664\u4e00\u4e2a\u5b9e\u4f53\uff08\u4e0d\u7acb\u5373\u63d0\u4ea4\uff09"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"// ==== \u540c\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nrepository.Delete(user);\n\n// \u793a\u4f8b\u4e8c\nuser.Delete();\n\n// \u793a\u4f8b\u4e09\nrepository.ChangeEntityState(user, EntityState.Deleted);\n\n// \u793a\u4f8b\u56db\nrepository.Entities.Remove(user);\n\n// ==== \u5f02\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nawait repository.DeleteAsync(user);\n\n// \u793a\u4f8b\u4e8c\nawait user.DeleteAsync();\n")),(0,i.kt)("h2",{id:"982-\u5220\u9664\u4e00\u4e2a\u5b9e\u4f53\uff08\u7acb\u5373\u63d0\u4ea4\uff09"},"9.8.2 \u5220\u9664\u4e00\u4e2a\u5b9e\u4f53\uff08\u7acb\u5373\u63d0\u4ea4\uff09"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"// ==== \u540c\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nrepository.DeleteNow(user);\n\n// \u793a\u4f8b\u4e8c\nuser.DeleteNow();\n\n// ==== \u5f02\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nawait repository.DeleteNowAsync(user);\n\n// \u793a\u4f8b\u4e8c\nawait user.DeleteNowAsync();\n")),(0,i.kt)("h2",{id:"983-\u6839\u636e\u4e3b\u952e\u5220\u9664\u8bb0\u5f55\uff08\u4e0d\u7acb\u5373\u63d0\u4ea4\uff09"},"9.8.3 \u6839\u636e\u4e3b\u952e\u5220\u9664\u8bb0\u5f55\uff08\u4e0d\u7acb\u5373\u63d0\u4ea4\uff09"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"// ==== \u540c\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nrepository.Delete(1);\n\n// \u793a\u4f8b\u4e8c\nuser.Delete(1);\n\n// ==== \u5f02\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nawait repository.DeleteAsync(1);\n\n// \u793a\u4f8b\u4e8c\nawait user.DeleteAsync(1);\n")),(0,i.kt)("h2",{id:"984-\u6839\u636e\u4e3b\u952e\u5220\u9664\u8bb0\u5f55\uff08\u7acb\u5373\u63d0\u4ea4\uff09"},"9.8.4 \u6839\u636e\u4e3b\u952e\u5220\u9664\u8bb0\u5f55\uff08\u7acb\u5373\u63d0\u4ea4\uff09"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"// ==== \u540c\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nrepository.DeleteNow(1);\n\n// \u793a\u4f8b\u4e8c\nuser.DeleteNow(1);\n\n// ==== \u5f02\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nawait repository.DeleteNowAsync(1);\n\n// \u793a\u4f8b\u4e8c\nawait user.DeleteNowAsync(1);\n")),(0,i.kt)("h2",{id:"985-\u6570\u636e\u5b58\u5728\u624d\u6839\u636e\u4e3b\u952e\u5220\u9664\uff08\u4e0d\u7acb\u5373\u63d0\u4ea4\uff09"},"9.8.5 \u6570\u636e\u5b58\u5728\u624d\u6839\u636e\u4e3b\u952e\u5220\u9664\uff08\u4e0d\u7acb\u5373\u63d0\u4ea4\uff09"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"// ==== \u540c\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nrepository.DeleteExists(1);\n\n// \u793a\u4f8b\u4e8c\nuser.DeleteExists(1);\n\n// ==== \u5f02\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nawait repository.DeleteExistsAsync(1);\n\n// \u793a\u4f8b\u4e8c\nawait user.DeleteExistsAsync(1);\n")),(0,i.kt)("h2",{id:"986-\u6570\u636e\u5b58\u5728\u624d\u6839\u636e\u4e3b\u952e\u5220\u9664\uff08\u7acb\u5373\u63d0\u4ea4\uff09"},"9.8.6 \u6570\u636e\u5b58\u5728\u624d\u6839\u636e\u4e3b\u952e\u5220\u9664\uff08\u7acb\u5373\u63d0\u4ea4\uff09"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"// ==== \u540c\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nrepository.DeleteExistsNow(1);\n\n// \u793a\u4f8b\u4e8c\nuser.DeleteExistsNow(1);\n\n// ==== \u5f02\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nawait repository.DeleteExistsNowAsync(1);\n\n// \u793a\u4f8b\u4e8c\nawait user.DeleteExistsNowAsync(1);\n")),(0,i.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u5c0f\u77e5\u8bc6")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u6240\u6709\u5e26 ",(0,i.kt)("inlineCode",{parentName:"p"},"Now")," \u7ed3\u5c3e\u7684\u8868\u793a\u7acb\u5373\u63d0\u4ea4\u5230\u6570\u636e\u5e93\uff0c\u4e5f\u5c31\u662f\u7acb\u5373\u8c03\u7528 ",(0,i.kt)("inlineCode",{parentName:"p"},"SaveChanges")," \u6216 ",(0,i.kt)("inlineCode",{parentName:"p"},"SaveChangesAsync"),"\u3002"))),(0,i.kt)("h2",{id:"987-\u5047\u5220\u9664\u8f6f\u5220\u9664"},"9.8.7 \u5047\u5220\u9664/\u8f6f\u5220\u9664"),(0,i.kt)("div",{className:"admonition admonition-warning alert alert--danger"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"}))),"\u529f\u80fd\u79fb\u9664\u58f0\u660e")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u4ee5\u4e0b\u5185\u5bb9\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion 2.10 +")," \u7248\u672c\u4e2d\u5df2\u79fb\u9664\u3002"))),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\u53ef\u4ee5\u901a\u8fc7 ",(0,i.kt)("inlineCode",{parentName:"p"},"[FakeDelete]")," \u7279\u6027\u6807\u8bb0\u5047\u5220\u9664\u7279\u6027\uff0c\u5982\uff1a"),(0,i.kt)("h3",{id:"9871-\u6dfb\u52a0-fakedelete-\u6807\u8bb0"},"9.8.7.1 \u6dfb\u52a0 ",(0,i.kt)("inlineCode",{parentName:"h3"},"[FakeDelete]")," \u6807\u8bb0"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{3}","{3}":!0},"public class Model: IEntity\n{\n [FakeDelete(true)] // \u8bbe\u7f6e\u5047\u5220\u9664\u7684\u503c\n public bool IsDeleted { get; set; }\n}\n")),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"[FakeDelete]")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},(0,i.kt)("strong",{parentName:"p"},"`","[FakeDelete]")," \u5c5e\u6027\u62e5\u6709\u5e26\u4e00\u4e2a\u53c2\u6570\u7684\u6784\u9020\u51fd\u6570\uff0c\u8fd9\u4e2a\u53c2\u6570\u662f\u5047\u5220\u9664\u7684\u503c"))),(0,i.kt)("h3",{id:"9872-\u5047\u5220\u9664\u4f7f\u7528"},"9.8.7.2 \u5047\u5220\u9664\u4f7f\u7528"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"// ==== \u540c\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nrepository.FakeDelete(entity);\n\n// \u793a\u4f8b\u4e8c\nrepository.FakeDeleteNow(entity);\n\n// \u793a\u4f8b\u4e09\nrepository.FakeDelete(1);\n\n// \u793a\u4f8b\u56db\nrepository.FakeDeleteNow(1);\n\n// \u793a\u4f8b\u4e94\nentity.FakeDelete();\n\n// \u793a\u4f8b\u516d\nrepository.UpdateInclude(user, u => u.IsDeleted);\n\n// ==== \u5f02\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nawait repository.FakeDeleteAsync(entity);\n\n// \u793a\u4f8b\u4e8c\nawait repository.FakeDeleteNowAsync(entity);\n\n// \u793a\u4f8b\u4e09\nawait repository.FakeDeleteAsync(1);\n\n// \u793a\u4f8b\u56db\nawait repository.FakeDeleteNowAsync(1);\n\n// \u793a\u4f8b\u4e94\nawait entity.FakeDeleteAsync();\n\n// \u793a\u4f8b\u516d\nawait repository.UpdateIncludeAsync(user, u => u.IsDeleted);\n")),(0,i.kt)("h2",{id:"988-\u53cd\u9988\u4e0e\u5efa\u8bae"},"9.8.8 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,i.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/8a0794d9.a082a9c9.js b/handbook/build/assets/js/8a0794d9.a082a9c9.js new file mode 100644 index 00000000000..92663c15f30 --- /dev/null +++ b/handbook/build/assets/js/8a0794d9.a082a9c9.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[2362],{3905:function(t,e,a){a.d(e,{Zo:function(){return u},kt:function(){return c}});var n=a(7294);function r(t,e,a){return e in t?Object.defineProperty(t,e,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[e]=a,t}function i(t,e){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),a.push.apply(a,n)}return a}function l(t){for(var e=1;e=0||(r[a]=t[a]);return r}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(t,a)&&(r[a]=t[a])}return r}var o=n.createContext({}),s=function(t){var e=n.useContext(o),a=e;return t&&(a="function"==typeof t?t(e):l(l({},e),t)),a},u=function(t){var e=s(t.components);return n.createElement(o.Provider,{value:e},t.children)},g={inlineCode:"code",wrapper:function(t){var e=t.children;return n.createElement(n.Fragment,{},e)}},m=n.forwardRef((function(t,e){var a=t.components,r=t.mdxType,i=t.originalType,o=t.parentName,u=p(t,["components","mdxType","originalType","parentName"]),m=s(a),c=r,k=m["".concat(o,".").concat(c)]||m[c]||g[c]||i;return a?n.createElement(k,l(l({ref:e},u),{},{components:a})):n.createElement(k,l({ref:e},u))}));function c(t,e){var a=arguments,r=e&&e.mdxType;if("string"==typeof t||r){var i=a.length,l=new Array(i);l[0]=m;var p={};for(var o in e)hasOwnProperty.call(e,o)&&(p[o]=e[o]);p.originalType=t,p.mdxType="string"==typeof t?t:r,l[1]=p;for(var s=2;s=0||(r[a]=t[a]);return r}(t,e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(t,a)&&(r[a]=t[a])}return r}var o=n.createContext({}),s=function(t){var e=n.useContext(o),a=e;return t&&(a="function"==typeof t?t(e):l(l({},e),t)),a},u=function(t){var e=s(t.components);return n.createElement(o.Provider,{value:e},t.children)},g={inlineCode:"code",wrapper:function(t){var e=t.children;return n.createElement(n.Fragment,{},e)}},m=n.forwardRef((function(t,e){var a=t.components,r=t.mdxType,i=t.originalType,o=t.parentName,u=p(t,["components","mdxType","originalType","parentName"]),m=s(a),c=r,k=m["".concat(o,".").concat(c)]||m[c]||g[c]||i;return a?n.createElement(k,l(l({ref:e},u),{},{components:a})):n.createElement(k,l({ref:e},u))}));function c(t,e){var a=arguments,r=e&&e.mdxType;if("string"==typeof t||r){var i=a.length,l=new Array(i);l[0]=m;var p={};for(var o in e)hasOwnProperty.call(e,o)&&(p[o]=e[o]);p.originalType=t,p.mdxType="string"==typeof t?t:r,l[1]=p;for(var s=2;s=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var l=r.createContext({}),c=function(e){var n=r.useContext(l),t=n;return e&&(t="function"==typeof e?e(n):o(o({},n),e)),t},s=function(e){var n=c(e.components);return r.createElement(l.Provider,{value:n},e.children)},d={inlineCode:"code",wrapper:function(e){var n=e.children;return r.createElement(r.Fragment,{},n)}},u=r.forwardRef((function(e,n){var t=e.components,a=e.mdxType,i=e.originalType,l=e.parentName,s=p(e,["components","mdxType","originalType","parentName"]),u=c(t),m=a,v=u["".concat(l,".").concat(m)]||u[m]||d[m]||i;return t?r.createElement(v,o(o({ref:n},s),{},{components:t})):r.createElement(v,o({ref:n},s))}));function m(e,n){var t=arguments,a=n&&n.mdxType;if("string"==typeof e||a){var i=t.length,o=new Array(i);o[0]=u;var p={};for(var l in n)hasOwnProperty.call(n,l)&&(p[l]=n[l]);p.originalType=e,p.mdxType="string"==typeof e?e:a,o[1]=p;for(var c=2;cHttpContext",id:"16-\u83b7\u53d6-httpcontext",children:[]},{value:"1.7 \u83b7\u53d6\u767b\u5f55\u7684 User \u5bf9\u8c61",id:"17-\u83b7\u53d6\u767b\u5f55\u7684-user-\u5bf9\u8c61",children:[]},{value:"1.8 \u83b7\u53d6\u670d\u52a1\u63d0\u4f9b\u5668",id:"18-\u83b7\u53d6\u670d\u52a1\u63d0\u4f9b\u5668",children:[]},{value:"1.9 \u89e3\u6790\u670d\u52a1",id:"19-\u89e3\u6790\u670d\u52a1",children:[]},{value:"1.10 \u83b7\u53d6\u9009\u9879\u914d\u7f6e",id:"110-\u83b7\u53d6\u9009\u9879\u914d\u7f6e",children:[]},{value:"1.11 \u6253\u5370\u6570\u636e\u5230 MiniProfiler",id:"111-\u6253\u5370\u6570\u636e\u5230-miniprofiler",children:[]},{value:"1.12 \u83b7\u53d6\u5e94\u7528\u540d\u79f0",id:"112-\u83b7\u53d6\u5e94\u7528\u540d\u79f0",children:[]},{value:"1.13 \u83b7\u53d6\u542f\u52a8\u9879\u76ee\u6839\u76ee\u5f55",id:"113-\u83b7\u53d6\u542f\u52a8\u9879\u76ee\u6839\u76ee\u5f55",children:[]},{value:"1.14 \u83b7\u53d6\u7f51\u7ad9\u6839\u76ee\u5f55 wwwroot \u76ee\u5f55",id:"114-\u83b7\u53d6\u7f51\u7ad9\u6839\u76ee\u5f55-wwwroot-\u76ee\u5f55",children:[]},{value:"1.15 \u83b7\u53d6\u542f\u52a8\u9879\u76ee\u6240\u5728\u7a0b\u5e8f\u96c6",id:"115-\u83b7\u53d6\u542f\u52a8\u9879\u76ee\u6240\u5728\u7a0b\u5e8f\u96c6",children:[]},{value:"1.16 \u83b7\u53d6\u542f\u52a8\u9879\u76ee bin \u76ee\u5f55",id:"116-\u83b7\u53d6\u542f\u52a8\u9879\u76ee-bin-\u76ee\u5f55",children:[]},{value:"1.17 \u83b7\u53d6\u73af\u5883\u53d8\u91cf\u540d",id:"117-\u83b7\u53d6\u73af\u5883\u53d8\u91cf\u540d",children:[]},{value:"1.18 \u5224\u65ad\u7cfb\u7edf\u73af\u5883",id:"118-\u5224\u65ad\u7cfb\u7edf\u73af\u5883",children:[]},{value:"1.19 \u83b7\u53d6\u670d\u52a1\u5668\u4fe1\u606f",id:"119-\u83b7\u53d6\u670d\u52a1\u5668\u4fe1\u606f",children:[]},{value:"1.20 \u83b7\u53d6\u6846\u67b6\u5e95\u5c42\u6240\u6709\u672a\u6258\u7ba1\u5bf9\u8c61",id:"120-\u83b7\u53d6\u6846\u67b6\u5e95\u5c42\u6240\u6709\u672a\u6258\u7ba1\u5bf9\u8c61",children:[]},{value:"1.21 \u624b\u52a8\u91ca\u653e\u975e\u6258\u7ba1\u5bf9\u8c61",id:"121-\u624b\u52a8\u91ca\u653e\u975e\u6258\u7ba1\u5bf9\u8c61",children:[]}],d={toc:s};function u(e){var n=e.components,t=(0,a.Z)(e,o);return(0,i.kt)("wrapper",(0,r.Z)({},d,t,{components:n,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"11-\u83b7\u53d6\u5168\u5c40\u914d\u7f6e"},"1.1 \u83b7\u53d6\u5168\u5c40\u914d\u7f6e"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"var settings = App.Settings;\n")),(0,i.kt)("h2",{id:"12-\u83b7\u53d6\u914d\u7f6e\u5bf9\u8c61"},"1.2 \u83b7\u53d6\u914d\u7f6e\u5bf9\u8c61"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// \u83b7\u53d6 IConfiguration \u5bf9\u8c61\nvar configuration = App.Configuration;\nvar value = configuration["xxx:xxx"];\n\n// \u83b7\u53d6\u6307\u5b9a\u8282\u70b9\u503c\u5e76\u8f6c\u6210 T \u7c7b\u578b\nvar data = App.GetConfig("key:key2");\n\n// \u91cd\u8f7d/\u5237\u65b0\u914d\u7f6e\nApp.Configuration.Reload();\n')),(0,i.kt)("h2",{id:"13-\u83b7\u53d6\u73af\u5883\u5bf9\u8c61"},"1.3 \u83b7\u53d6\u73af\u5883\u5bf9\u8c61"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"var webHostEnvironment = App.HostEnvironment;\n")),(0,i.kt)("h2",{id:"14-\u83b7\u53d6\u9879\u76ee\u6240\u6709\u7a0b\u5e8f\u96c6"},"1.4 \u83b7\u53d6\u9879\u76ee\u6240\u6709\u7a0b\u5e8f\u96c6"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"var assemblies = App.Assemblies;\n")),(0,i.kt)("h2",{id:"15-\u83b7\u53d6\u9879\u76ee\u6240\u6709\u6709\u6548\u7c7b\u578b"},"1.5 \u83b7\u53d6\u9879\u76ee\u6240\u6709\u6709\u6548\u7c7b\u578b"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"var types = App.EffectiveTypes;\n")),(0,i.kt)("h2",{id:"16-\u83b7\u53d6-httpcontext"},"1.6 \u83b7\u53d6 ",(0,i.kt)("inlineCode",{parentName:"h2"},"HttpContext")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"var httpContext = App.HttpContext;\n")),(0,i.kt)("h2",{id:"17-\u83b7\u53d6\u767b\u5f55\u7684-user-\u5bf9\u8c61"},"1.7 \u83b7\u53d6\u767b\u5f55\u7684 ",(0,i.kt)("inlineCode",{parentName:"h2"},"User")," \u5bf9\u8c61"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'var contextUser = App.User;\n\n// \u83b7\u53d6 `Jwt` \u5b58\u50a8\u7684\u4fe1\u606f\nvar userId = App.User?.FindFirstValue("\u952e");\n')),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"\u6ce8\u610f\u5f15\u5165 ",(0,i.kt)("inlineCode",{parentName:"strong"},"System.Security.Claims")," \u547d\u540d\u7a7a\u95f4")),(0,i.kt)("h2",{id:"18-\u83b7\u53d6\u670d\u52a1\u63d0\u4f9b\u5668"},"1.8 \u83b7\u53d6\u670d\u52a1\u63d0\u4f9b\u5668"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"var serviceProvider = App.ServiceProvider;\n\n// \u83b7\u53d6\u6839\u670d\u52a1\uff0c\u901a\u5e38\u7528\u6765\u89e3\u6790\u5355\u4f8b\u548c\u77ac\u65f6\u7684\uff0c\u53ef\u4f18\u5316\u6027\u80fd\nvar rootService = App.RootServices;\n")),(0,i.kt)("h2",{id:"19-\u89e3\u6790\u670d\u52a1"},"1.9 \u89e3\u6790\u670d\u52a1"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"var service = App.GetService([IServiceProvider]);\nvar service2 = App.GetService(typeof(TService), [IServiceProvider]);\n\nvar service3 = App.GetRequiredService([IServiceProvider]);\nvar service4 = App.GetRequiredService(typeof(TService), [IServiceProvider]);\n")),(0,i.kt)("h2",{id:"110-\u83b7\u53d6\u9009\u9879\u914d\u7f6e"},"1.10 \u83b7\u53d6\u9009\u9879\u914d\u7f6e"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"var options = App.GetOptions([IServiceProvider]);\nvar options2 = App.GetOptionsMonitor([IServiceProvider]);\nvar options3 = App.GetOptionsSnapshot([IServiceProvider]);\n")),(0,i.kt)("h2",{id:"111-\u6253\u5370\u6570\u636e\u5230-miniprofiler"},"1.11 \u6253\u5370\u6570\u636e\u5230 ",(0,i.kt)("inlineCode",{parentName:"h2"},"MiniProfiler")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'App.PrintToMiniProfiler("\u5206\u7c7b", "\u72b6\u6001", "\u8981\u6253\u5370\u7684\u6d88\u606f");\n')),(0,i.kt)("h2",{id:"112-\u83b7\u53d6\u5e94\u7528\u540d\u79f0"},"1.12 \u83b7\u53d6\u5e94\u7528\u540d\u79f0"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"var applicationName = App.HostEnvironment.ApplicationName;\n")),(0,i.kt)("h2",{id:"113-\u83b7\u53d6\u542f\u52a8\u9879\u76ee\u6839\u76ee\u5f55"},"1.13 \u83b7\u53d6\u542f\u52a8\u9879\u76ee\u6839\u76ee\u5f55"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"var webRootPath = App.HostEnvironment.ContentRootPath;\n")),(0,i.kt)("h2",{id:"114-\u83b7\u53d6\u7f51\u7ad9\u6839\u76ee\u5f55-wwwroot-\u76ee\u5f55"},"1.14 \u83b7\u53d6\u7f51\u7ad9\u6839\u76ee\u5f55 ",(0,i.kt)("inlineCode",{parentName:"h2"},"wwwroot")," \u76ee\u5f55"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"var wwwroot = App.WebHostEnvironment.WebRootPath;\n")),(0,i.kt)("h2",{id:"115-\u83b7\u53d6\u542f\u52a8\u9879\u76ee\u6240\u5728\u7a0b\u5e8f\u96c6"},"1.15 \u83b7\u53d6\u542f\u52a8\u9879\u76ee\u6240\u5728\u7a0b\u5e8f\u96c6"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"var webAssembly = Assembly.GetEntryAssembly();\n")),(0,i.kt)("h2",{id:"116-\u83b7\u53d6\u542f\u52a8\u9879\u76ee-bin-\u76ee\u5f55"},"1.16 \u83b7\u53d6\u542f\u52a8\u9879\u76ee ",(0,i.kt)("inlineCode",{parentName:"h2"},"bin")," \u76ee\u5f55"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"var binPath = AppContext.BaseDirectory;\n")),(0,i.kt)("h2",{id:"117-\u83b7\u53d6\u73af\u5883\u53d8\u91cf\u540d"},"1.17 \u83b7\u53d6\u73af\u5883\u53d8\u91cf\u540d"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"var environmentName = App.HostEnvironment.EnvironmentName;\n")),(0,i.kt)("h2",{id:"118-\u5224\u65ad\u7cfb\u7edf\u73af\u5883"},"1.18 \u5224\u65ad\u7cfb\u7edf\u73af\u5883"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// \u5224\u65ad\u662f\u5426\u5f00\u53d1\u73af\u5883\nvar isDevelopment = App.HostEnvironment.IsDevelopment();\n\n// \u5224\u65ad\u662f\u5426\u751f\u4ea7\u73af\u5883\nvar isProduction = App.HostEnvironment.IsProduction();\n\n// \u5224\u65ad\u662f\u5426 Stage \u73af\u5883\nvar isStaging = App.HostEnvironment.IsStaging();\n\n// \u5224\u65ad\u662f\u5426\u662f\u7279\u5b9a\u73af\u5883\uff0c\u6bd4\u5982\u81ea\u5b9a\u4e49\u6d4b\u8bd5\u73af\u5883\nvar isTest = App.HostEnvironment.IsEnvironment("TestEnvironment");\n')),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"\u6ce8\u610f\uff0c\u9700\u5f15\u7528 ",(0,i.kt)("inlineCode",{parentName:"strong"},"Microsoft.Extensions.Hosting")," \u547d\u540d\u7a7a\u95f4")),(0,i.kt)("h2",{id:"119-\u83b7\u53d6\u670d\u52a1\u5668\u4fe1\u606f"},"1.19 \u83b7\u53d6\u670d\u52a1\u5668\u4fe1\u606f"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"// \u83b7\u53d6\u7cfb\u7edf\u67b6\u6784\nvar osArchitecture = RuntimeInformation.OSArchitecture; // => X64\n\n// \u83b7\u53d6\u7cfb\u7edf\u540d\u79f0\nvar osDescription = RuntimeInformation.OSDescription; // => Windows 10 \u4f01\u4e1a\u7248\n\n// \u83b7\u53d6\u8fdb\u7a0b\u67b6\u6784\nvar processArchitecture = RuntimeInformation.ProcessArchitecture; // => X64\n\n// \u662f\u5426\u662f64\u4f4d\u64cd\u4f5c\u7cfb\u7edf\nvar is64BitOperatingSystem = Environment.Is64BitOperatingSystem; // => True\n")),(0,i.kt)("h2",{id:"120-\u83b7\u53d6\u6846\u67b6\u5e95\u5c42\u6240\u6709\u672a\u6258\u7ba1\u5bf9\u8c61"},"1.20 \u83b7\u53d6\u6846\u67b6\u5e95\u5c42\u6240\u6709\u672a\u6258\u7ba1\u5bf9\u8c61"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"var objs = App.UnmanagedObjects;\n")),(0,i.kt)("h2",{id:"121-\u624b\u52a8\u91ca\u653e\u975e\u6258\u7ba1\u5bf9\u8c61"},"1.21 \u624b\u52a8\u91ca\u653e\u975e\u6258\u7ba1\u5bf9\u8c61"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"App.DisposeUnmanagedObjects(); // \u901a\u5e38\u5728\u975e `Web` \u73af\u5883\u4e2d\u624b\u52a8\u5904\u7406\u91ca\u653e\u65f6\u673a\n")))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/8b7511b6.f4814618.js b/handbook/build/assets/js/8b7511b6.f4814618.js new file mode 100644 index 00000000000..2fcf654286a --- /dev/null +++ b/handbook/build/assets/js/8b7511b6.f4814618.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[1507],{3905:function(e,n,t){t.d(n,{Zo:function(){return s},kt:function(){return v}});var r=t(7294);function a(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function o(e){for(var n=1;n=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var l=r.createContext({}),c=function(e){var n=r.useContext(l),t=n;return e&&(t="function"==typeof e?e(n):o(o({},n),e)),t},s=function(e){var n=c(e.components);return r.createElement(l.Provider,{value:n},e.children)},d={inlineCode:"code",wrapper:function(e){var n=e.children;return r.createElement(r.Fragment,{},n)}},u=r.forwardRef((function(e,n){var t=e.components,a=e.mdxType,i=e.originalType,l=e.parentName,s=p(e,["components","mdxType","originalType","parentName"]),u=c(t),v=a,m=u["".concat(l,".").concat(v)]||u[v]||d[v]||i;return t?r.createElement(m,o(o({ref:n},s),{},{components:t})):r.createElement(m,o({ref:n},s))}));function v(e,n){var t=arguments,a=n&&n.mdxType;if("string"==typeof e||a){var i=t.length,o=new Array(i);o[0]=u;var p={};for(var l in n)hasOwnProperty.call(n,l)&&(p[l]=n[l]);p.originalType=e,p.mdxType="string"==typeof e?e:a,o[1]=p;for(var c=2;cHttpContext",id:"16-\u83b7\u53d6-httpcontext",children:[]},{value:"1.7 \u83b7\u53d6\u767b\u5f55\u7684 User \u5bf9\u8c61",id:"17-\u83b7\u53d6\u767b\u5f55\u7684-user-\u5bf9\u8c61",children:[]},{value:"1.8 \u83b7\u53d6\u670d\u52a1\u63d0\u4f9b\u5668",id:"18-\u83b7\u53d6\u670d\u52a1\u63d0\u4f9b\u5668",children:[]},{value:"1.9 \u89e3\u6790\u670d\u52a1",id:"19-\u89e3\u6790\u670d\u52a1",children:[]},{value:"1.10 \u83b7\u53d6\u9009\u9879\u914d\u7f6e",id:"110-\u83b7\u53d6\u9009\u9879\u914d\u7f6e",children:[]},{value:"1.11 \u6253\u5370\u6570\u636e\u5230 MiniProfiler",id:"111-\u6253\u5370\u6570\u636e\u5230-miniprofiler",children:[]},{value:"1.12 \u83b7\u53d6\u5e94\u7528\u540d\u79f0",id:"112-\u83b7\u53d6\u5e94\u7528\u540d\u79f0",children:[]},{value:"1.13 \u83b7\u53d6\u542f\u52a8\u9879\u76ee\u6839\u76ee\u5f55",id:"113-\u83b7\u53d6\u542f\u52a8\u9879\u76ee\u6839\u76ee\u5f55",children:[]},{value:"1.14 \u83b7\u53d6\u7f51\u7ad9\u6839\u76ee\u5f55 wwwroot \u76ee\u5f55",id:"114-\u83b7\u53d6\u7f51\u7ad9\u6839\u76ee\u5f55-wwwroot-\u76ee\u5f55",children:[]},{value:"1.15 \u83b7\u53d6\u542f\u52a8\u9879\u76ee\u6240\u5728\u7a0b\u5e8f\u96c6",id:"115-\u83b7\u53d6\u542f\u52a8\u9879\u76ee\u6240\u5728\u7a0b\u5e8f\u96c6",children:[]},{value:"1.16 \u83b7\u53d6\u542f\u52a8\u9879\u76ee bin \u76ee\u5f55",id:"116-\u83b7\u53d6\u542f\u52a8\u9879\u76ee-bin-\u76ee\u5f55",children:[]},{value:"1.17 \u83b7\u53d6\u73af\u5883\u53d8\u91cf\u540d",id:"117-\u83b7\u53d6\u73af\u5883\u53d8\u91cf\u540d",children:[]},{value:"1.18 \u5224\u65ad\u7cfb\u7edf\u73af\u5883",id:"118-\u5224\u65ad\u7cfb\u7edf\u73af\u5883",children:[]},{value:"1.19 \u83b7\u53d6\u670d\u52a1\u5668\u4fe1\u606f",id:"119-\u83b7\u53d6\u670d\u52a1\u5668\u4fe1\u606f",children:[]},{value:"1.20 \u83b7\u53d6\u6846\u67b6\u5e95\u5c42\u6240\u6709\u672a\u6258\u7ba1\u5bf9\u8c61",id:"120-\u83b7\u53d6\u6846\u67b6\u5e95\u5c42\u6240\u6709\u672a\u6258\u7ba1\u5bf9\u8c61",children:[]},{value:"1.21 \u624b\u52a8\u91ca\u653e\u975e\u6258\u7ba1\u5bf9\u8c61",id:"121-\u624b\u52a8\u91ca\u653e\u975e\u6258\u7ba1\u5bf9\u8c61",children:[]}],d={toc:s};function u(e){var n=e.components,t=(0,a.Z)(e,o);return(0,i.kt)("wrapper",(0,r.Z)({},d,t,{components:n,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"11-\u83b7\u53d6\u5168\u5c40\u914d\u7f6e"},"1.1 \u83b7\u53d6\u5168\u5c40\u914d\u7f6e"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"var settings = App.Settings;\n")),(0,i.kt)("h2",{id:"12-\u83b7\u53d6\u914d\u7f6e\u5bf9\u8c61"},"1.2 \u83b7\u53d6\u914d\u7f6e\u5bf9\u8c61"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// \u83b7\u53d6 IConfiguration \u5bf9\u8c61\nvar configuration = App.Configuration;\nvar value = configuration["xxx:xxx"];\n\n// \u83b7\u53d6\u6307\u5b9a\u8282\u70b9\u503c\u5e76\u8f6c\u6210 T \u7c7b\u578b\nvar data = App.GetConfig("key:key2");\n\n// \u91cd\u8f7d/\u5237\u65b0\u914d\u7f6e\uff08v2.17+ \u7248\u672c\u5df2\u79fb\u9664\uff09\nApp.Configuration.Reload();\n')),(0,i.kt)("h2",{id:"13-\u83b7\u53d6\u73af\u5883\u5bf9\u8c61"},"1.3 \u83b7\u53d6\u73af\u5883\u5bf9\u8c61"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"var webHostEnvironment = App.HostEnvironment;\n")),(0,i.kt)("h2",{id:"14-\u83b7\u53d6\u9879\u76ee\u6240\u6709\u7a0b\u5e8f\u96c6"},"1.4 \u83b7\u53d6\u9879\u76ee\u6240\u6709\u7a0b\u5e8f\u96c6"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"var assemblies = App.Assemblies;\n")),(0,i.kt)("h2",{id:"15-\u83b7\u53d6\u9879\u76ee\u6240\u6709\u6709\u6548\u7c7b\u578b"},"1.5 \u83b7\u53d6\u9879\u76ee\u6240\u6709\u6709\u6548\u7c7b\u578b"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"var types = App.EffectiveTypes;\n")),(0,i.kt)("h2",{id:"16-\u83b7\u53d6-httpcontext"},"1.6 \u83b7\u53d6 ",(0,i.kt)("inlineCode",{parentName:"h2"},"HttpContext")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"var httpContext = App.HttpContext;\n")),(0,i.kt)("h2",{id:"17-\u83b7\u53d6\u767b\u5f55\u7684-user-\u5bf9\u8c61"},"1.7 \u83b7\u53d6\u767b\u5f55\u7684 ",(0,i.kt)("inlineCode",{parentName:"h2"},"User")," \u5bf9\u8c61"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'var contextUser = App.User;\n\n// \u83b7\u53d6 `Jwt` \u5b58\u50a8\u7684\u4fe1\u606f\nvar userId = App.User?.FindFirstValue("\u952e");\n')),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"\u6ce8\u610f\u5f15\u5165 ",(0,i.kt)("inlineCode",{parentName:"strong"},"System.Security.Claims")," \u547d\u540d\u7a7a\u95f4")),(0,i.kt)("h2",{id:"18-\u83b7\u53d6\u670d\u52a1\u63d0\u4f9b\u5668"},"1.8 \u83b7\u53d6\u670d\u52a1\u63d0\u4f9b\u5668"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"var serviceProvider = App.ServiceProvider;\n\n// \u83b7\u53d6\u6839\u670d\u52a1\uff0c\u901a\u5e38\u7528\u6765\u89e3\u6790\u5355\u4f8b\u548c\u77ac\u65f6\u7684\uff0c\u53ef\u4f18\u5316\u6027\u80fd\nvar rootService = App.RootServices;\n")),(0,i.kt)("h2",{id:"19-\u89e3\u6790\u670d\u52a1"},"1.9 \u89e3\u6790\u670d\u52a1"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"var service = App.GetService([IServiceProvider]);\nvar service2 = App.GetService(typeof(TService), [IServiceProvider]);\n\nvar service3 = App.GetRequiredService([IServiceProvider]);\nvar service4 = App.GetRequiredService(typeof(TService), [IServiceProvider]);\n")),(0,i.kt)("h2",{id:"110-\u83b7\u53d6\u9009\u9879\u914d\u7f6e"},"1.10 \u83b7\u53d6\u9009\u9879\u914d\u7f6e"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"var options = App.GetOptions([IServiceProvider]);\nvar options2 = App.GetOptionsMonitor([IServiceProvider]);\nvar options3 = App.GetOptionsSnapshot([IServiceProvider]);\n")),(0,i.kt)("h2",{id:"111-\u6253\u5370\u6570\u636e\u5230-miniprofiler"},"1.11 \u6253\u5370\u6570\u636e\u5230 ",(0,i.kt)("inlineCode",{parentName:"h2"},"MiniProfiler")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'App.PrintToMiniProfiler("\u5206\u7c7b", "\u72b6\u6001", "\u8981\u6253\u5370\u7684\u6d88\u606f");\n')),(0,i.kt)("h2",{id:"112-\u83b7\u53d6\u5e94\u7528\u540d\u79f0"},"1.12 \u83b7\u53d6\u5e94\u7528\u540d\u79f0"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"var applicationName = App.HostEnvironment.ApplicationName;\n")),(0,i.kt)("h2",{id:"113-\u83b7\u53d6\u542f\u52a8\u9879\u76ee\u6839\u76ee\u5f55"},"1.13 \u83b7\u53d6\u542f\u52a8\u9879\u76ee\u6839\u76ee\u5f55"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"var webRootPath = App.HostEnvironment.ContentRootPath;\n")),(0,i.kt)("h2",{id:"114-\u83b7\u53d6\u7f51\u7ad9\u6839\u76ee\u5f55-wwwroot-\u76ee\u5f55"},"1.14 \u83b7\u53d6\u7f51\u7ad9\u6839\u76ee\u5f55 ",(0,i.kt)("inlineCode",{parentName:"h2"},"wwwroot")," \u76ee\u5f55"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"var wwwroot = App.WebHostEnvironment.WebRootPath;\n")),(0,i.kt)("h2",{id:"115-\u83b7\u53d6\u542f\u52a8\u9879\u76ee\u6240\u5728\u7a0b\u5e8f\u96c6"},"1.15 \u83b7\u53d6\u542f\u52a8\u9879\u76ee\u6240\u5728\u7a0b\u5e8f\u96c6"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"var webAssembly = Assembly.GetEntryAssembly();\n")),(0,i.kt)("h2",{id:"116-\u83b7\u53d6\u542f\u52a8\u9879\u76ee-bin-\u76ee\u5f55"},"1.16 \u83b7\u53d6\u542f\u52a8\u9879\u76ee ",(0,i.kt)("inlineCode",{parentName:"h2"},"bin")," \u76ee\u5f55"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"var binPath = AppContext.BaseDirectory;\n")),(0,i.kt)("h2",{id:"117-\u83b7\u53d6\u73af\u5883\u53d8\u91cf\u540d"},"1.17 \u83b7\u53d6\u73af\u5883\u53d8\u91cf\u540d"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"var environmentName = App.HostEnvironment.EnvironmentName;\n")),(0,i.kt)("h2",{id:"118-\u5224\u65ad\u7cfb\u7edf\u73af\u5883"},"1.18 \u5224\u65ad\u7cfb\u7edf\u73af\u5883"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// \u5224\u65ad\u662f\u5426\u5f00\u53d1\u73af\u5883\nvar isDevelopment = App.HostEnvironment.IsDevelopment();\n\n// \u5224\u65ad\u662f\u5426\u751f\u4ea7\u73af\u5883\nvar isProduction = App.HostEnvironment.IsProduction();\n\n// \u5224\u65ad\u662f\u5426 Stage \u73af\u5883\nvar isStaging = App.HostEnvironment.IsStaging();\n\n// \u5224\u65ad\u662f\u5426\u662f\u7279\u5b9a\u73af\u5883\uff0c\u6bd4\u5982\u81ea\u5b9a\u4e49\u6d4b\u8bd5\u73af\u5883\nvar isTest = App.HostEnvironment.IsEnvironment("TestEnvironment");\n')),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"\u6ce8\u610f\uff0c\u9700\u5f15\u7528 ",(0,i.kt)("inlineCode",{parentName:"strong"},"Microsoft.Extensions.Hosting")," \u547d\u540d\u7a7a\u95f4")),(0,i.kt)("h2",{id:"119-\u83b7\u53d6\u670d\u52a1\u5668\u4fe1\u606f"},"1.19 \u83b7\u53d6\u670d\u52a1\u5668\u4fe1\u606f"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"// \u83b7\u53d6\u7cfb\u7edf\u67b6\u6784\nvar osArchitecture = RuntimeInformation.OSArchitecture; // => X64\n\n// \u83b7\u53d6\u7cfb\u7edf\u540d\u79f0\nvar osDescription = RuntimeInformation.OSDescription; // => Windows 10 \u4f01\u4e1a\u7248\n\n// \u83b7\u53d6\u8fdb\u7a0b\u67b6\u6784\nvar processArchitecture = RuntimeInformation.ProcessArchitecture; // => X64\n\n// \u662f\u5426\u662f64\u4f4d\u64cd\u4f5c\u7cfb\u7edf\nvar is64BitOperatingSystem = Environment.Is64BitOperatingSystem; // => True\n")),(0,i.kt)("h2",{id:"120-\u83b7\u53d6\u6846\u67b6\u5e95\u5c42\u6240\u6709\u672a\u6258\u7ba1\u5bf9\u8c61"},"1.20 \u83b7\u53d6\u6846\u67b6\u5e95\u5c42\u6240\u6709\u672a\u6258\u7ba1\u5bf9\u8c61"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"var objs = App.UnmanagedObjects;\n")),(0,i.kt)("h2",{id:"121-\u624b\u52a8\u91ca\u653e\u975e\u6258\u7ba1\u5bf9\u8c61"},"1.21 \u624b\u52a8\u91ca\u653e\u975e\u6258\u7ba1\u5bf9\u8c61"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"App.DisposeUnmanagedObjects(); // \u901a\u5e38\u5728\u975e `Web` \u73af\u5883\u4e2d\u624b\u52a8\u5904\u7406\u91ca\u653e\u65f6\u673a\n")))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/8d45ae1b.17ae1114.js b/handbook/build/assets/js/8d45ae1b.17ae1114.js deleted file mode 100644 index 4c92772071a..00000000000 --- a/handbook/build/assets/js/8d45ae1b.17ae1114.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[4723],{4390:function(n){n.exports=JSON.parse('{"allTagsPath":"/furion/blog/tags","slug":"net","name":".net","count":6,"permalink":"/furion/blog/tags/net"}')}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/8d45ae1b.99b6d790.js b/handbook/build/assets/js/8d45ae1b.99b6d790.js new file mode 100644 index 00000000000..41703514354 --- /dev/null +++ b/handbook/build/assets/js/8d45ae1b.99b6d790.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[4723],{6971:function(n){n.exports=JSON.parse('{"allTagsPath":"/furion/blog/tags","slug":"/furion/blog/tags/net","name":".net","count":6,"permalink":"/furion/blog/tags/net"}')}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/8dcbe064.e2c8fad1.js b/handbook/build/assets/js/8dcbe064.e2c8fad1.js new file mode 100644 index 00000000000..657802dd513 --- /dev/null +++ b/handbook/build/assets/js/8dcbe064.e2c8fad1.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[7896],{3905:function(e,t,n){n.d(t,{Zo:function(){return u},kt:function(){return f}});var r=n(7294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var l=r.createContext({}),c=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},u=function(e){var t=c(e.components);return r.createElement(l.Provider,{value:t},e.children)},p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,i=e.mdxType,a=e.originalType,l=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),d=c(n),f=i,m=d["".concat(l,".").concat(f)]||d[f]||p[f]||a;return n?r.createElement(m,o(o({ref:t},u),{},{components:n})):r.createElement(m,o({ref:t},u))}));function f(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var a=n.length,o=new Array(a);o[0]=d;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s.mdxType="string"==typeof e?e:i,o[1]=s;for(var c=2;c=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var l=r.createContext({}),c=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},u=function(e){var t=c(e.components);return r.createElement(l.Provider,{value:t},e.children)},p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,i=e.mdxType,a=e.originalType,l=e.parentName,u=s(e,["components","mdxType","originalType","parentName"]),d=c(n),f=i,m=d["".concat(l,".").concat(f)]||d[f]||p[f]||a;return n?r.createElement(m,o(o({ref:t},u),{},{components:n})):r.createElement(m,o({ref:t},u))}));function f(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var a=n.length,o=new Array(a);o[0]=d;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s.mdxType="string"==typeof e?e:i,o[1]=s;for(var c=2;c=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}var p=r.createContext({}),c=function(t){var e=r.useContext(p),n=e;return t&&(n="function"==typeof t?t(e):i(i({},e),t)),n},u=function(t){var e=c(t.components);return r.createElement(p.Provider,{value:e},t.children)},f={inlineCode:"code",wrapper:function(t){var e=t.children;return r.createElement(r.Fragment,{},e)}},s=r.forwardRef((function(t,e){var n=t.components,o=t.mdxType,a=t.originalType,p=t.parentName,u=l(t,["components","mdxType","originalType","parentName"]),s=c(n),m=o,d=s["".concat(p,".").concat(m)]||s[m]||f[m]||a;return n?r.createElement(d,i(i({ref:e},u),{},{components:n})):r.createElement(d,i({ref:e},u))}));function m(t,e){var n=arguments,o=e&&e.mdxType;if("string"==typeof t||o){var a=n.length,i=new Array(a);i[0]=s;var l={};for(var p in e)hasOwnProperty.call(e,p)&&(l[p]=e[p]);l.originalType=t,l.mdxType="string"==typeof t?t:o,i[1]=l;for(var c=2;c=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}var p=r.createContext({}),c=function(t){var e=r.useContext(p),n=e;return t&&(n="function"==typeof t?t(e):i(i({},e),t)),n},u=function(t){var e=c(t.components);return r.createElement(p.Provider,{value:e},t.children)},f={inlineCode:"code",wrapper:function(t){var e=t.children;return r.createElement(r.Fragment,{},e)}},m=r.forwardRef((function(t,e){var n=t.components,o=t.mdxType,a=t.originalType,p=t.parentName,u=l(t,["components","mdxType","originalType","parentName"]),m=c(n),s=o,d=m["".concat(p,".").concat(s)]||m[s]||f[s]||a;return n?r.createElement(d,i(i({ref:e},u),{},{components:n})):r.createElement(d,i({ref:e},u))}));function s(t,e){var n=arguments,o=e&&e.mdxType;if("string"==typeof t||o){var a=n.length,i=new Array(a);i[0]=m;var l={};for(var p in e)hasOwnProperty.call(e,p)&&(l[p]=e[p]);l.originalType=t,l.mdxType="string"==typeof t?t:o,i[1]=l;for(var c=2;c0&&e[n-1]===t?e:e.concat(t)},g=function(e,t){var n=e.plain,r=Object.create(null),o=e.styles.reduce((function(e,n){var r=n.languages,o=n.style;return r&&!r.includes(t)||n.types.forEach((function(t){var n=d({},e[t],o);e[t]=n})),e}),r);return o.root=n,o.plain=d({},n,{backgroundColor:null}),o};function f(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&-1===t.indexOf(r)&&(n[r]=e[r]);return n}var v=function(e){function t(){for(var t=this,n=[],r=arguments.length;r--;)n[r]=arguments[r];e.apply(this,n),p(this,"getThemeDict",(function(e){if(void 0!==t.themeDict&&e.theme===t.prevTheme&&e.language===t.prevLanguage)return t.themeDict;t.prevTheme=e.theme,t.prevLanguage=e.language;var n=e.theme?g(e.theme,e.language):void 0;return t.themeDict=n})),p(this,"getLineProps",(function(e){var n=e.key,r=e.className,o=e.style,l=d({},f(e,["key","className","style","line"]),{className:"token-line",style:void 0,key:void 0}),a=t.getThemeDict(t.props);return void 0!==a&&(l.style=a.plain),void 0!==o&&(l.style=void 0!==l.style?d({},l.style,o):o),void 0!==n&&(l.key=n),r&&(l.className+=" "+r),l})),p(this,"getStyleForToken",(function(e){var n=e.types,r=e.empty,o=n.length,l=t.getThemeDict(t.props);if(void 0!==l){if(1===o&&"plain"===n[0])return r?{display:"inline-block"}:void 0;if(1===o&&!r)return l[n[0]];var a=r?{display:"inline-block"}:{},i=n.map((function(e){return l[e]}));return Object.assign.apply(Object,[a].concat(i))}})),p(this,"getTokenProps",(function(e){var n=e.key,r=e.className,o=e.style,l=e.token,a=d({},f(e,["key","className","style","token"]),{className:"token "+l.types.join(" "),children:l.content,style:t.getStyleForToken(l),key:void 0});return void 0!==o&&(a.style=void 0!==a.style?d({},a.style,o):o),void 0!==n&&(a.key=n),r&&(a.className+=" "+r),a})),p(this,"tokenize",(function(e,t,n,r){var o={code:t,grammar:n,language:r,tokens:[]};e.hooks.run("before-tokenize",o);var l=o.tokens=e.tokenize(o.code,o.grammar,o.language);return e.hooks.run("after-tokenize",o),l}))}return e&&(t.__proto__=e),t.prototype=Object.create(e&&e.prototype),t.prototype.constructor=t,t.prototype.render=function(){var e=this.props,t=e.Prism,n=e.language,r=e.code,o=e.children,l=this.getThemeDict(this.props),a=t.languages[n];return o({tokens:function(e){for(var t=[[]],n=[e],r=[0],o=[e.length],l=0,a=0,i=[],s=[i];a>-1;){for(;(l=r[a]++)0?u:["plain"],c=p):(u=m(u,p.type),p.alias&&(u=m(u,p.alias)),c=p.content),"string"==typeof c){var d=c.split(y),g=d.length;i.push({types:u,content:d[0]});for(var f=1;f0}))}var D=null==n?void 0:n.replace(/language-/,"");!D&&i.defaultLanguage&&(D=i.defaultLanguage);var w=j.replace(/\n$/,"");if(0===b.length&&void 0!==D){for(var I,R="",z=function(e){switch(e){case"js":case"javascript":case"ts":case"typescript":return A(["js","jsBlock"]);case"jsx":case"tsx":return A(["js","jsBlock","jsx"]);case"html":return A(["js","jsBlock","html"]);case"python":case"py":return A(["python"]);default:return A()}}(D),F=j.replace(/\n$/,"").split("\n"),V=0;V0&&(l=o.getRangeAt(0)),t.append(n),n.select(),n.selectionStart=0,n.selectionEnd=e.length;let a=!1;try{a=document.execCommand("copy")}catch{}n.remove(),l&&(o.removeAllRanges(),o.addRange(l)),r&&r.focus()}(w),d(!0),setTimeout((function(){return d(!1)}),2e3)};return l.createElement(v,(0,r.Z)({},u,{key:String(h),theme:E,code:w,language:D}),(function(e){var t=e.className,n=e.style,o=e.tokens,a=e.getLineProps,i=e.getTokenProps;return l.createElement("div",{className:x},g&&l.createElement("div",{style:n,className:O},g),l.createElement("div",{className:(0,s.Z)(C,D)},l.createElement("pre",{tabIndex:0,className:(0,s.Z)(t,L,"thin-scrollbar"),style:n},l.createElement("code",{className:P},o.map((function(e,t){1===e.length&&""===e[0].content&&(e[0].content="\n");var n=a({line:e,key:t});return b.includes(t+1)&&(n.className+=" docusaurus-highlight-code-line"),l.createElement("span",(0,r.Z)({key:t},n),e.map((function(e,t){return l.createElement("span",(0,r.Z)({key:t},i({token:e,key:t})))})))})))),l.createElement("button",{ref:f,type:"button","aria-label":(0,Z.I)({id:"theme.CodeBlock.copyButtonAriaLabel",message:"Copy code to clipboard",description:"The ARIA label for copy code blocks button"}),className:(0,s.Z)(B,"clean-btn"),onClick:W},p?l.createElement(Z.Z,{id:"theme.CodeBlock.copied",description:"The copied button label on code blocks"},"Copied"):l.createElement(Z.Z,{id:"theme.CodeBlock.copy",description:"The copy button label on code blocks"},"Copy"))))}))}var R=n(6159),z="details_1VDD";function F(e){var t=Object.assign({},e);return l.createElement(T.PO,(0,r.Z)({},t,{className:(0,s.Z)("alert alert--info",z,t.className)}))}var V=["mdxType","originalType"];var $={head:function(e){var t=l.Children.map(e.children,(function(e){return function(e){var t,n;if(null!=e&&null!=(t=e.props)&&t.mdxType&&null!=e&&null!=(n=e.props)&&n.originalType){var r=e.props,a=(r.mdxType,r.originalType,(0,o.Z)(r,V));return l.createElement(e.props.originalType,a)}return e}(e)}));return l.createElement(a.Z,e,t)},code:function(e){var t=e.children;return(0,l.isValidElement)(t)?t:t.includes("\n")?l.createElement(I,e):l.createElement("code",e)},a:function(e){return l.createElement(i.Z,e)},pre:function(e){var t,n=e.children;return(0,l.isValidElement)(n)&&(0,l.isValidElement)(null==n||null==(t=n.props)?void 0:t.children)?n.props.children:l.createElement(I,(0,l.isValidElement)(n)?null==n?void 0:n.props:Object.assign({},e))},details:function(e){var t=l.Children.toArray(e.children),n=t.find((function(e){var t;return"summary"===(null==e||null==(t=e.props)?void 0:t.mdxType)})),o=l.createElement(l.Fragment,null,t.filter((function(e){return e!==n})));return l.createElement(F,(0,r.Z)({},e,{summary:n}),o)},h1:(0,R.Z)("h1"),h2:(0,R.Z)("h2"),h3:(0,R.Z)("h3"),h4:(0,R.Z)("h4"),h5:(0,R.Z)("h5"),h6:(0,R.Z)("h6")}},7594:function(e,t){function n(e){let t,n=[];for(let r of e.split(",").map((e=>e.trim())))if(/^-?\d+$/.test(r))n.push(parseInt(r,10));else if(t=r.match(/^(-?\d+)(-|\.\.\.?|\u2025|\u2026|\u22EF)(-?\d+)$/)){let[e,r,o,l]=t;if(r&&l){r=parseInt(r),l=parseInt(l);const e=r=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var p=r.createContext({}),l=function(e){var t=r.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},d=function(e){var t=l(e.components);return r.createElement(p.Provider,{value:t},e.children)},s={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,p=e.parentName,d=c(e,["components","mdxType","originalType","parentName"]),m=l(n),u=a,v=m["".concat(p,".").concat(u)]||m[u]||s[u]||o;return n?r.createElement(v,i(i({ref:t},d),{},{components:n})):r.createElement(v,i({ref:t},d))}));function u(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,i=new Array(o);i[0]=m;var c={};for(var p in t)hasOwnProperty.call(t,p)&&(c[p]=t[p]);c.originalType=e,c.mdxType="string"==typeof e?e:a,i[1]=c;for(var l=2;l {\n var services = scope.ServiceProvider;\n});\n")),(0,o.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u6570\u636e\u5e93\u64cd\u4f5c\u6ce8\u610f")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u5982\u679c\u4f5c\u7528\u57df\u4e2d\u5bf9",(0,o.kt)("strong",{parentName:"p"},"\u6570\u636e\u5e93\u6709\u4efb\u4f55\u53d8\u66f4\u64cd\u4f5c"),"\uff0c\u9700\u624b\u52a8\u8c03\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"SaveChanges")," \u6216\u5e26 ",(0,o.kt)("inlineCode",{parentName:"p"},"Now")," \u7ed3\u5c3e\u7684\u65b9\u6cd5\u3002\u4e5f\u53ef\u4ee5\u4f7f\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"Scoped.CreateUow(handler)")," \u4ee3\u66ff\u3002"))),(0,o.kt)("h2",{id:"112-\u521b\u5efa\u4e00\u4e2a\u5e26\u5de5\u4f5c\u5355\u5143\u7684\u4f5c\u7528\u57df"},"11.2 \u521b\u5efa\u4e00\u4e2a\u5e26\u5de5\u4f5c\u5355\u5143\u7684\u4f5c\u7528\u57df"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},"Scoped.CreateUow((factory, scope) => {\n var services = scope.ServiceProvider;\n});\n")),(0,o.kt)("p",null,"\u6b64\u65b9\u6cd5\u5c06\u5728\u6267\u884c\u5b8c\u6bd5\u4e4b\u540e\u81ea\u52a8\u8c03\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"SaveChanges()")),(0,o.kt)("h2",{id:"113-\u521b\u5efa\u4e00\u4e2a\u4f9d\u8d56\u6ce8\u5165\u4f5c\u7528\u57df\u8303\u56f4\uff08\u5e26\u8fd4\u56de\u503c\uff09"},"11.3 \u521b\u5efa\u4e00\u4e2a\u4f9d\u8d56\u6ce8\u5165\u4f5c\u7528\u57df\u8303\u56f4\uff08\u5e26\u8fd4\u56de\u503c\uff09"),(0,o.kt)("div",{className:"admonition admonition-warning alert alert--danger"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"}))),"\u79fb\u9664\u58f0\u660e")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"Furion v2.18+")," \u7248\u672c\u79fb\u9664\u5e26\u8fd4\u56de\u503c\u7684\u4f5c\u7528\u57df\uff08\u8be5\u65b9\u6cd5\u5c5e\u4e8e\u591a\u4f59\u64cd\u4f5c\uff09"))),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1}","{1}":!0},'var obj = Scoped.CreateRef((factory, scope) => {\n var services = scope.ServiceProvider;\n return "\u8fd4\u56de\u503c";\n});\n')),(0,o.kt)("h2",{id:"114-\u521b\u5efa\u4e00\u4e2a\u5e26\u5de5\u4f5c\u5355\u5143\u7684\u4f5c\u7528\u57df\uff08\u5e26\u8fd4\u56de\u503c\uff09"},"11.4 \u521b\u5efa\u4e00\u4e2a\u5e26\u5de5\u4f5c\u5355\u5143\u7684\u4f5c\u7528\u57df\uff08\u5e26\u8fd4\u56de\u503c\uff09"),(0,o.kt)("div",{className:"admonition admonition-warning alert alert--danger"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"}))),"\u79fb\u9664\u58f0\u660e")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"Furion v2.18+")," \u7248\u672c\u79fb\u9664\u5e26\u8fd4\u56de\u503c\u7684\u4f5c\u7528\u57df\uff08\u8be5\u65b9\u6cd5\u5c5e\u4e8e\u591a\u4f59\u64cd\u4f5c\uff09"))),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},'var obj = Scoped.CreateUowRef((factory, scope) => {\n var services = scope.ServiceProvider;\n return "\u8fd4\u56de\u503c";\n});\n')))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/914e87db.b4cbade9.js b/handbook/build/assets/js/914e87db.b4cbade9.js deleted file mode 100644 index 5a642f465e0..00000000000 --- a/handbook/build/assets/js/914e87db.b4cbade9.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[988],{3905:function(e,t,n){n.d(t,{Zo:function(){return d},kt:function(){return u}});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var p=r.createContext({}),l=function(e){var t=r.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},d=function(e){var t=l(e.components);return r.createElement(p.Provider,{value:t},e.children)},s={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},m=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,p=e.parentName,d=c(e,["components","mdxType","originalType","parentName"]),m=l(n),u=a,v=m["".concat(p,".").concat(u)]||m[u]||s[u]||o;return n?r.createElement(v,i(i({ref:t},d),{},{components:n})):r.createElement(v,i({ref:t},d))}));function u(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,i=new Array(o);i[0]=m;var c={};for(var p in t)hasOwnProperty.call(t,p)&&(c[p]=t[p]);c.originalType=e,c.mdxType="string"==typeof e?e:a,i[1]=c;for(var l=2;l {\n var services = scope.ServiceProvider;\n});\n")),(0,o.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u6570\u636e\u5e93\u64cd\u4f5c\u6ce8\u610f")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u5982\u679c\u4f5c\u7528\u57df\u4e2d\u5bf9",(0,o.kt)("strong",{parentName:"p"},"\u6570\u636e\u5e93\u6709\u4efb\u4f55\u53d8\u66f4\u64cd\u4f5c"),"\uff0c\u9700\u624b\u52a8\u8c03\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"SaveChanges")," \u6216\u5e26 ",(0,o.kt)("inlineCode",{parentName:"p"},"Now")," \u7ed3\u5c3e\u7684\u65b9\u6cd5\u3002\u4e5f\u53ef\u4ee5\u4f7f\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"Scoped.CreateUow(handler)")," \u4ee3\u66ff\u3002"))),(0,o.kt)("h2",{id:"112-\u521b\u5efa\u4e00\u4e2a\u5e26\u5de5\u4f5c\u5355\u5143\u7684\u4f5c\u7528\u57df"},"11.2 \u521b\u5efa\u4e00\u4e2a\u5e26\u5de5\u4f5c\u5355\u5143\u7684\u4f5c\u7528\u57df"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},"Scoped.CreateUow((factory, scope) => {\n var services = scope.ServiceProvider;\n});\n")),(0,o.kt)("p",null,"\u6b64\u65b9\u6cd5\u5c06\u5728\u6267\u884c\u5b8c\u6bd5\u4e4b\u540e\u81ea\u52a8\u8c03\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"SaveChanges()")),(0,o.kt)("h2",{id:"113-\u521b\u5efa\u4e00\u4e2a\u4f9d\u8d56\u6ce8\u5165\u4f5c\u7528\u57df\u8303\u56f4\uff08\u5e26\u8fd4\u56de\u503c\uff09"},"11.3 \u521b\u5efa\u4e00\u4e2a\u4f9d\u8d56\u6ce8\u5165\u4f5c\u7528\u57df\u8303\u56f4\uff08\u5e26\u8fd4\u56de\u503c\uff09"),(0,o.kt)("div",{className:"admonition admonition-warning alert alert--danger"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"}))),"\u79fb\u9664\u58f0\u660e")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"Furion v2.18+")," \u7248\u672c\u79fb\u9664\u5e26\u8fd4\u56de\u503c\u7684\u4f5c\u7528\u57df\uff08\u8be5\u65b9\u6cd5\u5c5e\u4e8e\u591a\u4f59\u64cd\u4f5c\uff09"))),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1}","{1}":!0},'var obj = Scoped.CreateRef((factory, scope) => {\n var services = scope.ServiceProvider;\n return "\u8fd4\u56de\u503c";\n});\n')),(0,o.kt)("h2",{id:"114-\u521b\u5efa\u4e00\u4e2a\u5e26\u5de5\u4f5c\u5355\u5143\u7684\u4f5c\u7528\u57df\uff08\u5e26\u8fd4\u56de\u503c\uff09"},"11.4 \u521b\u5efa\u4e00\u4e2a\u5e26\u5de5\u4f5c\u5355\u5143\u7684\u4f5c\u7528\u57df\uff08\u5e26\u8fd4\u56de\u503c\uff09"),(0,o.kt)("div",{className:"admonition admonition-warning alert alert--danger"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"}))),"\u79fb\u9664\u58f0\u660e")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"Furion v2.18+")," \u7248\u672c\u79fb\u9664\u5e26\u8fd4\u56de\u503c\u7684\u4f5c\u7528\u57df\uff08\u8be5\u65b9\u6cd5\u5c5e\u4e8e\u591a\u4f59\u64cd\u4f5c\uff09"))),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},'var obj = Scoped.CreateUowRef((factory, scope) => {\n var services = scope.ServiceProvider;\n return "\u8fd4\u56de\u503c";\n});\n')))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/9343.64683253.js b/handbook/build/assets/js/9343.a3d59083.js similarity index 80% rename from handbook/build/assets/js/9343.64683253.js rename to handbook/build/assets/js/9343.a3d59083.js index ce40f73fcd8..cdd12aeb845 100644 --- a/handbook/build/assets/js/9343.64683253.js +++ b/handbook/build/assets/js/9343.a3d59083.js @@ -1,2 +1,2 @@ -/*! For license information please see 9343.64683253.js.LICENSE.txt */ -(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[9343],{8131:function(e,t,r){"use strict";var n=r(9374),i=r(7775),a=r(3076);function s(e,t,r){return new n(e,t,r)}s.version=r(4336),s.AlgoliaSearchHelper=n,s.SearchParameters=i,s.SearchResults=a,e.exports=s},696:function(e){function t(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function r(e){return"function"==typeof e}function n(e){return"object"==typeof e&&null!==e}function i(e){return void 0===e}e.exports=t,t.EventEmitter=t,t.prototype._events=void 0,t.prototype._maxListeners=void 0,t.defaultMaxListeners=10,t.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||isNaN(e))throw TypeError("n must be a positive number");return this._maxListeners=e,this},t.prototype.emit=function(e){var t,a,s,c,u,o;if(this._events||(this._events={}),"error"===e&&(!this._events.error||n(this._events.error)&&!this._events.error.length)){if((t=arguments[1])instanceof Error)throw t;var h=new Error('Uncaught, unspecified "error" event. ('+t+")");throw h.context=t,h}if(i(a=this._events[e]))return!1;if(r(a))switch(arguments.length){case 1:a.call(this);break;case 2:a.call(this,arguments[1]);break;case 3:a.call(this,arguments[1],arguments[2]);break;default:c=Array.prototype.slice.call(arguments,1),a.apply(this,c)}else if(n(a))for(c=Array.prototype.slice.call(arguments,1),s=(o=a.slice()).length,u=0;u0&&this._events[e].length>s&&(this._events[e].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[e].length),"function"==typeof console.trace&&console.trace()),this},t.prototype.on=t.prototype.addListener,t.prototype.once=function(e,t){if(!r(t))throw TypeError("listener must be a function");var n=!1;function i(){this.removeListener(e,i),n||(n=!0,t.apply(this,arguments))}return i.listener=t,this.on(e,i),this},t.prototype.removeListener=function(e,t){var i,a,s,c;if(!r(t))throw TypeError("listener must be a function");if(!this._events||!this._events[e])return this;if(s=(i=this._events[e]).length,a=-1,i===t||r(i.listener)&&i.listener===t)delete this._events[e],this._events.removeListener&&this.emit("removeListener",e,t);else if(n(i)){for(c=s;c-- >0;)if(i[c]===t||i[c].listener&&i[c].listener===t){a=c;break}if(a<0)return this;1===i.length?(i.length=0,delete this._events[e]):i.splice(a,1),this._events.removeListener&&this.emit("removeListener",e,t)}return this},t.prototype.removeAllListeners=function(e){var t,n;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[e]&&delete this._events[e],this;if(0===arguments.length){for(t in this._events)"removeListener"!==t&&this.removeAllListeners(t);return this.removeAllListeners("removeListener"),this._events={},this}if(r(n=this._events[e]))this.removeListener(e,n);else if(n)for(;n.length;)this.removeListener(e,n[n.length-1]);return delete this._events[e],this},t.prototype.listeners=function(e){return this._events&&this._events[e]?r(this._events[e])?[this._events[e]]:this._events[e].slice():[]},t.prototype.listenerCount=function(e){if(this._events){var t=this._events[e];if(r(t))return 1;if(t)return t.length}return 0},t.listenerCount=function(e,t){return e.listenerCount(t)}},8078:function(e,t,r){"use strict";var n=r(696);function i(e,t){this.main=e,this.fn=t,this.lastResults=null}r(4853)(i,n.EventEmitter),i.prototype.detach=function(){this.removeAllListeners(),this.main.detachDerivedHelper(this)},i.prototype.getModifiedState=function(e){return this.fn(e)},e.exports=i},2437:function(e,t,r){"use strict";var n=r(2344),i=r(9803),a=r(116),s={addRefinement:function(e,t,r){if(s.isRefined(e,t,r))return e;var i=""+r,a=e[t]?e[t].concat(i):[i],c={};return c[t]=a,n({},c,e)},removeRefinement:function(e,t,r){if(void 0===r)return s.clearRefinement(e,(function(e,r){return t===r}));var n=""+r;return s.clearRefinement(e,(function(e,r){return t===r&&n===e}))},toggleRefinement:function(e,t,r){if(void 0===r)throw new Error("toggleRefinement should be used with a value");return s.isRefined(e,t,r)?s.removeRefinement(e,t,r):s.addRefinement(e,t,r)},clearRefinement:function(e,t,r){if(void 0===t)return a(e)?{}:e;if("string"==typeof t)return i(e,[t]);if("function"==typeof t){var n=!1,s=Object.keys(e).reduce((function(i,a){var s=e[a]||[],c=s.filter((function(e){return!t(e,a,r)}));return c.length!==s.length&&(n=!0),i[a]=c,i}),{});return n?s:e}},isRefined:function(e,t,r){var n=!!e[t]&&e[t].length>0;if(void 0===r||!n)return n;var i=""+r;return-1!==e[t].indexOf(i)}};e.exports=s},7775:function(e,t,r){"use strict";var n=r(185),i=r(2344),a=r(2686),s=r(7888),c=r(8023),u=r(9803),o=r(116),h=r(6801),f=r(2437);function l(e,t){return Array.isArray(e)&&Array.isArray(t)?e.length===t.length&&e.every((function(e,r){return l(t[r],e)})):e===t}function m(e){var t=e?m._parseNumbers(e):{};void 0===t.userToken||h(t.userToken)||console.warn("[algoliasearch-helper] The `userToken` parameter is invalid. This can lead to wrong analytics.\n - Format: [a-zA-Z0-9_-]{1,64}"),this.facets=t.facets||[],this.disjunctiveFacets=t.disjunctiveFacets||[],this.hierarchicalFacets=t.hierarchicalFacets||[],this.facetsRefinements=t.facetsRefinements||{},this.facetsExcludes=t.facetsExcludes||{},this.disjunctiveFacetsRefinements=t.disjunctiveFacetsRefinements||{},this.numericRefinements=t.numericRefinements||{},this.tagRefinements=t.tagRefinements||[],this.hierarchicalFacetsRefinements=t.hierarchicalFacetsRefinements||{};var r=this;Object.keys(t).forEach((function(e){var n=-1!==m.PARAMETERS.indexOf(e),i=void 0!==t[e];!n&&i&&(r[e]=t[e])}))}m.PARAMETERS=Object.keys(new m),m._parseNumbers=function(e){if(e instanceof m)return e;var t={};if(["aroundPrecision","aroundRadius","getRankingInfo","minWordSizefor2Typos","minWordSizefor1Typo","page","maxValuesPerFacet","distinct","minimumAroundRadius","hitsPerPage","minProximity"].forEach((function(r){var n=e[r];if("string"==typeof n){var i=parseFloat(n);t[r]=isNaN(i)?n:i}})),Array.isArray(e.insideBoundingBox)&&(t.insideBoundingBox=e.insideBoundingBox.map((function(e){return Array.isArray(e)?e.map((function(e){return parseFloat(e)})):e}))),e.numericRefinements){var r={};Object.keys(e.numericRefinements).forEach((function(t){var n=e.numericRefinements[t]||{};r[t]={},Object.keys(n).forEach((function(e){var i=n[e].map((function(e){return Array.isArray(e)?e.map((function(e){return"string"==typeof e?parseFloat(e):e})):"string"==typeof e?parseFloat(e):e}));r[t][e]=i}))})),t.numericRefinements=r}return n({},e,t)},m.make=function(e){var t=new m(e);return(e.hierarchicalFacets||[]).forEach((function(e){if(e.rootPath){var r=t.getHierarchicalRefinement(e.name);r.length>0&&0!==r[0].indexOf(e.rootPath)&&(t=t.clearRefinements(e.name)),0===(r=t.getHierarchicalRefinement(e.name)).length&&(t=t.toggleHierarchicalFacetRefinement(e.name,e.rootPath))}})),t},m.validate=function(e,t){var r=t||{};return e.tagFilters&&r.tagRefinements&&r.tagRefinements.length>0?new Error("[Tags] Cannot switch from the managed tag API to the advanced API. It is probably an error, if it is really what you want, you should first clear the tags with clearTags method."):e.tagRefinements.length>0&&r.tagFilters?new Error("[Tags] Cannot switch from the advanced tag API to the managed API. It is probably an error, if it is not, you should first clear the tags with clearTags method."):e.numericFilters&&r.numericRefinements&&o(r.numericRefinements)?new Error("[Numeric filters] Can't switch from the advanced to the managed API. It is probably an error, if this is really what you want, you have to first clear the numeric filters."):o(e.numericRefinements)&&r.numericFilters?new Error("[Numeric filters] Can't switch from the managed API to the advanced. It is probably an error, if this is really what you want, you have to first clear the numeric filters."):null},m.prototype={constructor:m,clearRefinements:function(e){var t={numericRefinements:this._clearNumericRefinements(e),facetsRefinements:f.clearRefinement(this.facetsRefinements,e,"conjunctiveFacet"),facetsExcludes:f.clearRefinement(this.facetsExcludes,e,"exclude"),disjunctiveFacetsRefinements:f.clearRefinement(this.disjunctiveFacetsRefinements,e,"disjunctiveFacet"),hierarchicalFacetsRefinements:f.clearRefinement(this.hierarchicalFacetsRefinements,e,"hierarchicalFacet")};return t.numericRefinements===this.numericRefinements&&t.facetsRefinements===this.facetsRefinements&&t.facetsExcludes===this.facetsExcludes&&t.disjunctiveFacetsRefinements===this.disjunctiveFacetsRefinements&&t.hierarchicalFacetsRefinements===this.hierarchicalFacetsRefinements?this:this.setQueryParameters(t)},clearTags:function(){return void 0===this.tagFilters&&0===this.tagRefinements.length?this:this.setQueryParameters({tagFilters:void 0,tagRefinements:[]})},setIndex:function(e){return e===this.index?this:this.setQueryParameters({index:e})},setQuery:function(e){return e===this.query?this:this.setQueryParameters({query:e})},setPage:function(e){return e===this.page?this:this.setQueryParameters({page:e})},setFacets:function(e){return this.setQueryParameters({facets:e})},setDisjunctiveFacets:function(e){return this.setQueryParameters({disjunctiveFacets:e})},setHitsPerPage:function(e){return this.hitsPerPage===e?this:this.setQueryParameters({hitsPerPage:e})},setTypoTolerance:function(e){return this.typoTolerance===e?this:this.setQueryParameters({typoTolerance:e})},addNumericRefinement:function(e,t,r){var i=c(r);if(this.isNumericRefined(e,t,i))return this;var a=n({},this.numericRefinements);return a[e]=n({},a[e]),a[e][t]?(a[e][t]=a[e][t].slice(),a[e][t].push(i)):a[e][t]=[i],this.setQueryParameters({numericRefinements:a})},getConjunctiveRefinements:function(e){return this.isConjunctiveFacet(e)&&this.facetsRefinements[e]||[]},getDisjunctiveRefinements:function(e){return this.isDisjunctiveFacet(e)&&this.disjunctiveFacetsRefinements[e]||[]},getHierarchicalRefinement:function(e){return this.hierarchicalFacetsRefinements[e]||[]},getExcludeRefinements:function(e){return this.isConjunctiveFacet(e)&&this.facetsExcludes[e]||[]},removeNumericRefinement:function(e,t,r){return void 0!==r?this.isNumericRefined(e,t,r)?this.setQueryParameters({numericRefinements:this._clearNumericRefinements((function(n,i){return i===e&&n.op===t&&l(n.val,c(r))}))}):this:void 0!==t?this.isNumericRefined(e,t)?this.setQueryParameters({numericRefinements:this._clearNumericRefinements((function(r,n){return n===e&&r.op===t}))}):this:this.isNumericRefined(e)?this.setQueryParameters({numericRefinements:this._clearNumericRefinements((function(t,r){return r===e}))}):this},getNumericRefinements:function(e){return this.numericRefinements[e]||{}},getNumericRefinement:function(e,t){return this.numericRefinements[e]&&this.numericRefinements[e][t]},_clearNumericRefinements:function(e){if(void 0===e)return o(this.numericRefinements)?{}:this.numericRefinements;if("string"==typeof e)return u(this.numericRefinements,[e]);if("function"==typeof e){var t=!1,r=this.numericRefinements,n=Object.keys(r).reduce((function(n,i){var a=r[i],s={};return a=a||{},Object.keys(a).forEach((function(r){var n=a[r]||[],c=[];n.forEach((function(t){e({val:t,op:r},i,"numeric")||c.push(t)})),c.length!==n.length&&(t=!0),s[r]=c})),n[i]=s,n}),{});return t?n:this.numericRefinements}},addFacet:function(e){return this.isConjunctiveFacet(e)?this:this.setQueryParameters({facets:this.facets.concat([e])})},addDisjunctiveFacet:function(e){return this.isDisjunctiveFacet(e)?this:this.setQueryParameters({disjunctiveFacets:this.disjunctiveFacets.concat([e])})},addHierarchicalFacet:function(e){if(this.isHierarchicalFacet(e.name))throw new Error("Cannot declare two hierarchical facets with the same name: `"+e.name+"`");return this.setQueryParameters({hierarchicalFacets:this.hierarchicalFacets.concat([e])})},addFacetRefinement:function(e,t){if(!this.isConjunctiveFacet(e))throw new Error(e+" is not defined in the facets attribute of the helper configuration");return f.isRefined(this.facetsRefinements,e,t)?this:this.setQueryParameters({facetsRefinements:f.addRefinement(this.facetsRefinements,e,t)})},addExcludeRefinement:function(e,t){if(!this.isConjunctiveFacet(e))throw new Error(e+" is not defined in the facets attribute of the helper configuration");return f.isRefined(this.facetsExcludes,e,t)?this:this.setQueryParameters({facetsExcludes:f.addRefinement(this.facetsExcludes,e,t)})},addDisjunctiveFacetRefinement:function(e,t){if(!this.isDisjunctiveFacet(e))throw new Error(e+" is not defined in the disjunctiveFacets attribute of the helper configuration");return f.isRefined(this.disjunctiveFacetsRefinements,e,t)?this:this.setQueryParameters({disjunctiveFacetsRefinements:f.addRefinement(this.disjunctiveFacetsRefinements,e,t)})},addTagRefinement:function(e){if(this.isTagRefined(e))return this;var t={tagRefinements:this.tagRefinements.concat(e)};return this.setQueryParameters(t)},removeFacet:function(e){return this.isConjunctiveFacet(e)?this.clearRefinements(e).setQueryParameters({facets:this.facets.filter((function(t){return t!==e}))}):this},removeDisjunctiveFacet:function(e){return this.isDisjunctiveFacet(e)?this.clearRefinements(e).setQueryParameters({disjunctiveFacets:this.disjunctiveFacets.filter((function(t){return t!==e}))}):this},removeHierarchicalFacet:function(e){return this.isHierarchicalFacet(e)?this.clearRefinements(e).setQueryParameters({hierarchicalFacets:this.hierarchicalFacets.filter((function(t){return t.name!==e}))}):this},removeFacetRefinement:function(e,t){if(!this.isConjunctiveFacet(e))throw new Error(e+" is not defined in the facets attribute of the helper configuration");return f.isRefined(this.facetsRefinements,e,t)?this.setQueryParameters({facetsRefinements:f.removeRefinement(this.facetsRefinements,e,t)}):this},removeExcludeRefinement:function(e,t){if(!this.isConjunctiveFacet(e))throw new Error(e+" is not defined in the facets attribute of the helper configuration");return f.isRefined(this.facetsExcludes,e,t)?this.setQueryParameters({facetsExcludes:f.removeRefinement(this.facetsExcludes,e,t)}):this},removeDisjunctiveFacetRefinement:function(e,t){if(!this.isDisjunctiveFacet(e))throw new Error(e+" is not defined in the disjunctiveFacets attribute of the helper configuration");return f.isRefined(this.disjunctiveFacetsRefinements,e,t)?this.setQueryParameters({disjunctiveFacetsRefinements:f.removeRefinement(this.disjunctiveFacetsRefinements,e,t)}):this},removeTagRefinement:function(e){if(!this.isTagRefined(e))return this;var t={tagRefinements:this.tagRefinements.filter((function(t){return t!==e}))};return this.setQueryParameters(t)},toggleRefinement:function(e,t){return this.toggleFacetRefinement(e,t)},toggleFacetRefinement:function(e,t){if(this.isHierarchicalFacet(e))return this.toggleHierarchicalFacetRefinement(e,t);if(this.isConjunctiveFacet(e))return this.toggleConjunctiveFacetRefinement(e,t);if(this.isDisjunctiveFacet(e))return this.toggleDisjunctiveFacetRefinement(e,t);throw new Error("Cannot refine the undeclared facet "+e+"; it should be added to the helper options facets, disjunctiveFacets or hierarchicalFacets")},toggleConjunctiveFacetRefinement:function(e,t){if(!this.isConjunctiveFacet(e))throw new Error(e+" is not defined in the facets attribute of the helper configuration");return this.setQueryParameters({facetsRefinements:f.toggleRefinement(this.facetsRefinements,e,t)})},toggleExcludeFacetRefinement:function(e,t){if(!this.isConjunctiveFacet(e))throw new Error(e+" is not defined in the facets attribute of the helper configuration");return this.setQueryParameters({facetsExcludes:f.toggleRefinement(this.facetsExcludes,e,t)})},toggleDisjunctiveFacetRefinement:function(e,t){if(!this.isDisjunctiveFacet(e))throw new Error(e+" is not defined in the disjunctiveFacets attribute of the helper configuration");return this.setQueryParameters({disjunctiveFacetsRefinements:f.toggleRefinement(this.disjunctiveFacetsRefinements,e,t)})},toggleHierarchicalFacetRefinement:function(e,t){if(!this.isHierarchicalFacet(e))throw new Error(e+" is not defined in the hierarchicalFacets attribute of the helper configuration");var r=this._getHierarchicalFacetSeparator(this.getHierarchicalFacetByName(e)),n={};return void 0!==this.hierarchicalFacetsRefinements[e]&&this.hierarchicalFacetsRefinements[e].length>0&&(this.hierarchicalFacetsRefinements[e][0]===t||0===this.hierarchicalFacetsRefinements[e][0].indexOf(t+r))?-1===t.indexOf(r)?n[e]=[]:n[e]=[t.slice(0,t.lastIndexOf(r))]:n[e]=[t],this.setQueryParameters({hierarchicalFacetsRefinements:i({},n,this.hierarchicalFacetsRefinements)})},addHierarchicalFacetRefinement:function(e,t){if(this.isHierarchicalFacetRefined(e))throw new Error(e+" is already refined.");if(!this.isHierarchicalFacet(e))throw new Error(e+" is not defined in the hierarchicalFacets attribute of the helper configuration.");var r={};return r[e]=[t],this.setQueryParameters({hierarchicalFacetsRefinements:i({},r,this.hierarchicalFacetsRefinements)})},removeHierarchicalFacetRefinement:function(e){if(!this.isHierarchicalFacetRefined(e))return this;var t={};return t[e]=[],this.setQueryParameters({hierarchicalFacetsRefinements:i({},t,this.hierarchicalFacetsRefinements)})},toggleTagRefinement:function(e){return this.isTagRefined(e)?this.removeTagRefinement(e):this.addTagRefinement(e)},isDisjunctiveFacet:function(e){return this.disjunctiveFacets.indexOf(e)>-1},isHierarchicalFacet:function(e){return void 0!==this.getHierarchicalFacetByName(e)},isConjunctiveFacet:function(e){return this.facets.indexOf(e)>-1},isFacetRefined:function(e,t){return!!this.isConjunctiveFacet(e)&&f.isRefined(this.facetsRefinements,e,t)},isExcludeRefined:function(e,t){return!!this.isConjunctiveFacet(e)&&f.isRefined(this.facetsExcludes,e,t)},isDisjunctiveFacetRefined:function(e,t){return!!this.isDisjunctiveFacet(e)&&f.isRefined(this.disjunctiveFacetsRefinements,e,t)},isHierarchicalFacetRefined:function(e,t){if(!this.isHierarchicalFacet(e))return!1;var r=this.getHierarchicalRefinement(e);return t?-1!==r.indexOf(t):r.length>0},isNumericRefined:function(e,t,r){if(void 0===r&&void 0===t)return!!this.numericRefinements[e];var n=this.numericRefinements[e]&&void 0!==this.numericRefinements[e][t];if(void 0===r||!n)return n;var i,a,u=c(r),o=void 0!==(i=this.numericRefinements[e][t],a=u,s(i,(function(e){return l(e,a)})));return n&&o},isTagRefined:function(e){return-1!==this.tagRefinements.indexOf(e)},getRefinedDisjunctiveFacets:function(){var e=this,t=a(Object.keys(this.numericRefinements).filter((function(t){return Object.keys(e.numericRefinements[t]).length>0})),this.disjunctiveFacets);return Object.keys(this.disjunctiveFacetsRefinements).filter((function(t){return e.disjunctiveFacetsRefinements[t].length>0})).concat(t).concat(this.getRefinedHierarchicalFacets())},getRefinedHierarchicalFacets:function(){var e=this;return a(this.hierarchicalFacets.map((function(e){return e.name})),Object.keys(this.hierarchicalFacetsRefinements).filter((function(t){return e.hierarchicalFacetsRefinements[t].length>0})))},getUnrefinedDisjunctiveFacets:function(){var e=this.getRefinedDisjunctiveFacets();return this.disjunctiveFacets.filter((function(t){return-1===e.indexOf(t)}))},managedParameters:["index","facets","disjunctiveFacets","facetsRefinements","facetsExcludes","disjunctiveFacetsRefinements","numericRefinements","tagRefinements","hierarchicalFacets","hierarchicalFacetsRefinements"],getQueryParams:function(){var e=this.managedParameters,t={},r=this;return Object.keys(this).forEach((function(n){var i=r[n];-1===e.indexOf(n)&&void 0!==i&&(t[n]=i)})),t},setQueryParameter:function(e,t){if(this[e]===t)return this;var r={};return r[e]=t,this.setQueryParameters(r)},setQueryParameters:function(e){if(!e)return this;var t=m.validate(this,e);if(t)throw t;var r=this,n=m._parseNumbers(e),i=Object.keys(this).reduce((function(e,t){return e[t]=r[t],e}),{}),a=Object.keys(n).reduce((function(e,t){var r=void 0!==e[t],i=void 0!==n[t];return r&&!i?u(e,[t]):(i&&(e[t]=n[t]),e)}),i);return new this.constructor(a)},resetPage:function(){return void 0===this.page?this:this.setPage(0)},_getHierarchicalFacetSortBy:function(e){return e.sortBy||["isRefined:desc","name:asc"]},_getHierarchicalFacetSeparator:function(e){return e.separator||" > "},_getHierarchicalRootPath:function(e){return e.rootPath||null},_getHierarchicalShowParentLevel:function(e){return"boolean"!=typeof e.showParentLevel||e.showParentLevel},getHierarchicalFacetByName:function(e){return s(this.hierarchicalFacets,(function(t){return t.name===e}))},getHierarchicalFacetBreadcrumb:function(e){if(!this.isHierarchicalFacet(e))return[];var t=this.getHierarchicalRefinement(e)[0];if(!t)return[];var r=this._getHierarchicalFacetSeparator(this.getHierarchicalFacetByName(e));return t.split(r).map((function(e){return e.trim()}))},toString:function(){return JSON.stringify(this,null,2)}},e.exports=m},210:function(e,t,r){"use strict";e.exports=function(e){return function(t,r){var s=e.hierarchicalFacets[r],c=e.hierarchicalFacetsRefinements[s.name]&&e.hierarchicalFacetsRefinements[s.name][0]||"",u=e._getHierarchicalFacetSeparator(s),o=e._getHierarchicalRootPath(s),h=e._getHierarchicalShowParentLevel(s),f=a(e._getHierarchicalFacetSortBy(s)),l=t.every((function(e){return e.exhaustive})),m=function(e,t,r,a,s){return function(c,u,o){var h=c;if(o>0){var f=0;for(h=c;f-1})));if(o){var h=o.attributes.indexOf(t),f=u(e.hierarchicalFacets,(function(e){return e.name===o.name}));a.hierarchicalFacets[f][h]={attribute:t,data:s,exhaustive:r.exhaustiveFacetsCount}}else{var v,g=-1!==e.disjunctiveFacets.indexOf(t),y=-1!==e.facets.indexOf(t);g&&(v=d[t],a.disjunctiveFacets[v]={name:t,data:s,exhaustive:r.exhaustiveFacetsCount},l(a.disjunctiveFacets[v],r.facets_stats,t)),y&&(v=m[t],a.facets[v]={name:t,data:s,exhaustive:r.exhaustiveFacetsCount},l(a.facets[v],r.facets_stats,t))}})),this.hierarchicalFacets=s(this.hierarchicalFacets),o.forEach((function(s){var c=t[v],o=c&&c.facets?c.facets:{},h=e.getHierarchicalFacetByName(s);Object.keys(o).forEach((function(t){var s,f=o[t];if(h){s=u(e.hierarchicalFacets,(function(e){return e.name===h.name}));var m=u(a.hierarchicalFacets[s],(function(e){return e.attribute===t}));if(-1===m)return;a.hierarchicalFacets[s][m].data=n({},a.hierarchicalFacets[s][m].data,f)}else{s=d[t];var v=r.facets&&r.facets[t]||{};a.disjunctiveFacets[s]={name:t,data:i({},f,v),exhaustive:c.exhaustiveFacetsCount},l(a.disjunctiveFacets[s],c.facets_stats,t),e.disjunctiveFacetsRefinements[t]&&e.disjunctiveFacetsRefinements[t].forEach((function(r){!a.disjunctiveFacets[s].data[r]&&e.disjunctiveFacetsRefinements[t].indexOf(r)>-1&&(a.disjunctiveFacets[s].data[r]=0)}))}})),v++})),e.getRefinedHierarchicalFacets().forEach((function(r){var n=e.getHierarchicalFacetByName(r),s=e._getHierarchicalFacetSeparator(n),c=e.getHierarchicalRefinement(r);if(!(0===c.length||c[0].split(s).length<2)){var o=t[v],h=o&&o.facets?o.facets:{};Object.keys(h).forEach((function(t){var r=h[t],o=u(e.hierarchicalFacets,(function(e){return e.name===n.name})),f=u(a.hierarchicalFacets[o],(function(e){return e.attribute===t}));if(-1!==f){var l={};if(c.length>0){var m=c[0].split(s)[0];l[m]=a.hierarchicalFacets[o][f].data[m]}a.hierarchicalFacets[o][f].data=i(l,r,a.hierarchicalFacets[o][f].data)}})),v++}})),Object.keys(e.facetsExcludes).forEach((function(t){var n=e.facetsExcludes[t],i=m[t];a.facets[i]={name:t,data:r.facets[t],exhaustive:r.exhaustiveFacetsCount},n.forEach((function(e){a.facets[i]=a.facets[i]||{name:t},a.facets[i].data=a.facets[i].data||{},a.facets[i].data[e]=0}))})),this.hierarchicalFacets=this.hierarchicalFacets.map(h(e)),this.facets=s(this.facets),this.disjunctiveFacets=s(this.disjunctiveFacets),this._state=e}function d(e,t,r,n){if(n=n||0,Array.isArray(t))return e(t,r[n]);if(!t.data||0===t.data.length)return t;var a=t.data.map((function(t){return d(e,t,r,n+1)})),s=e(a,r[n]);return i({data:s},t)}function v(e,t){var r=c(e,(function(e){return e.name===t}));return r&&r.stats}function p(e,t,r,n,i){var a=c(i,(function(e){return e.name===r})),s=a&&a.data&&a.data[n]?a.data[n]:0,u=a&&a.exhaustive||!1;return{type:t,attributeName:r,name:n,count:s,exhaustive:u}}m.prototype.getFacetByName=function(e){function t(t){return t.name===e}return c(this.facets,t)||c(this.disjunctiveFacets,t)||c(this.hierarchicalFacets,t)},m.DEFAULT_SORT=["isRefined:desc","count:desc","name:asc"],m.prototype.getFacetValues=function(e,t){var r=function(e,t){function r(e){return e.name===t}if(e._state.isConjunctiveFacet(t)){var n=c(e.facets,r);return n?Object.keys(n.data).map((function(r){return{name:r,count:n.data[r],isRefined:e._state.isFacetRefined(t,r),isExcluded:e._state.isExcludeRefined(t,r)}})):[]}if(e._state.isDisjunctiveFacet(t)){var i=c(e.disjunctiveFacets,r);return i?Object.keys(i.data).map((function(r){return{name:r,count:i.data[r],isRefined:e._state.isDisjunctiveFacetRefined(t,r)}})):[]}if(e._state.isHierarchicalFacet(t))return c(e.hierarchicalFacets,r)}(this,e);if(r){var n,s=i({},t,{sortBy:m.DEFAULT_SORT,facetOrdering:!(t&&t.sortBy)}),u=this;if(Array.isArray(r))n=[e];else n=u._state.getHierarchicalFacetByName(r.name).attributes;return d((function(e,t){if(s.facetOrdering){var r=function(e,t){return e.renderingContent&&e.renderingContent.facetOrdering&&e.renderingContent.facetOrdering.values&&e.renderingContent.facetOrdering.values[t]}(u,t);if(Boolean(r))return function(e,t){var r=[],n=[],i=(t.order||[]).reduce((function(e,t,r){return e[t]=r,e}),{});e.forEach((function(e){var t=e.path||e.name;void 0!==i[t]?r[i[t]]=e:n.push(e)}));var s,c=t.sortRemainingBy;return"hidden"===c?r:(s="alpha"===c?[["path","name"],["asc","asc"]]:[["count"],["desc"]],r.concat(a(n,s[0],s[1])))}(e,r)}if(Array.isArray(s.sortBy)){var n=o(s.sortBy,m.DEFAULT_SORT);return a(e,n[0],n[1])}if("function"==typeof s.sortBy)return function(e,t){return t.sort(e)}(s.sortBy,e);throw new Error("options.sortBy is optional but if defined it must be either an array of string (predicates) or a sorting function")}),r,n)}},m.prototype.getFacetStats=function(e){return this._state.isConjunctiveFacet(e)?v(this.facets,e):this._state.isDisjunctiveFacet(e)?v(this.disjunctiveFacets,e):void 0},m.prototype.getRefinements=function(){var e=this._state,t=this,r=[];return Object.keys(e.facetsRefinements).forEach((function(n){e.facetsRefinements[n].forEach((function(i){r.push(p(e,"facet",n,i,t.facets))}))})),Object.keys(e.facetsExcludes).forEach((function(n){e.facetsExcludes[n].forEach((function(i){r.push(p(e,"exclude",n,i,t.facets))}))})),Object.keys(e.disjunctiveFacetsRefinements).forEach((function(n){e.disjunctiveFacetsRefinements[n].forEach((function(i){r.push(p(e,"disjunctive",n,i,t.disjunctiveFacets))}))})),Object.keys(e.hierarchicalFacetsRefinements).forEach((function(n){e.hierarchicalFacetsRefinements[n].forEach((function(i){r.push(function(e,t,r,n){var i=e.getHierarchicalFacetByName(t),a=e._getHierarchicalFacetSeparator(i),s=r.split(a),u=c(n,(function(e){return e.name===t})),o=s.reduce((function(e,t){var r=e&&c(e.data,(function(e){return e.name===t}));return void 0!==r?r:e}),u),h=o&&o.count||0,f=o&&o.exhaustive||!1,l=o&&o.path||"";return{type:"hierarchical",attributeName:t,name:l,count:h,exhaustive:f}}(e,n,i,t.hierarchicalFacets))}))})),Object.keys(e.numericRefinements).forEach((function(t){var n=e.numericRefinements[t];Object.keys(n).forEach((function(e){n[e].forEach((function(n){r.push({type:"numeric",attributeName:t,name:n,numericValue:n,operator:e})}))}))})),e.tagRefinements.forEach((function(e){r.push({type:"tag",attributeName:"_tags",name:e})})),r},e.exports=m},9374:function(e,t,r){"use strict";var n=r(7775),i=r(3076),a=r(8078),s=r(6394),c=r(696),u=r(4853),o=r(116),h=r(9803),f=r(185),l=r(4336);function m(e,t,r){"function"==typeof e.addAlgoliaAgent&&e.addAlgoliaAgent("JS Helper ("+l+")"),this.setClient(e);var i=r||{};i.index=t,this.state=n.make(i),this.lastResults=null,this._queryId=0,this._lastQueryIdReceived=-1,this.derivedHelpers=[],this._currentNbQueries=0}function d(e){if(e<0)throw new Error("Page requested below 0.");return this._change({state:this.state.setPage(e),isPageReset:!1}),this}function v(){return this.state.page}u(m,c.EventEmitter),m.prototype.search=function(){return this._search({onlyWithDerivedHelpers:!1}),this},m.prototype.searchOnlyWithDerivedHelpers=function(){return this._search({onlyWithDerivedHelpers:!0}),this},m.prototype.getQuery=function(){var e=this.state;return s._getHitsSearchParams(e)},m.prototype.searchOnce=function(e,t){var r=e?this.state.setQueryParameters(e):this.state,n=s._getQueries(r.index,r),a=this;if(this._currentNbQueries++,this.emit("searchOnce",{state:r}),!t)return this.client.search(n).then((function(e){return a._currentNbQueries--,0===a._currentNbQueries&&a.emit("searchQueueEmpty"),{content:new i(r,e.results),state:r,_originalResponse:e}}),(function(e){throw a._currentNbQueries--,0===a._currentNbQueries&&a.emit("searchQueueEmpty"),e}));this.client.search(n).then((function(e){a._currentNbQueries--,0===a._currentNbQueries&&a.emit("searchQueueEmpty"),t(null,new i(r,e.results),r)})).catch((function(e){a._currentNbQueries--,0===a._currentNbQueries&&a.emit("searchQueueEmpty"),t(e,null,r)}))},m.prototype.findAnswers=function(e){var t=this.state,r=this.derivedHelpers[0];if(!r)return Promise.resolve([]);var n=r.getModifiedState(t),i=f({attributesForPrediction:e.attributesForPrediction,nbHits:e.nbHits},{params:h(s._getHitsSearchParams(n),["attributesToSnippet","hitsPerPage","restrictSearchableAttributes","snippetEllipsisText"])}),a="search for answers was called, but this client does not have a function client.initIndex(index).findAnswers";if("function"!=typeof this.client.initIndex)throw new Error(a);var c=this.client.initIndex(n.index);if("function"!=typeof c.findAnswers)throw new Error(a);return c.findAnswers(n.query,e.queryLanguages,i)},m.prototype.searchForFacetValues=function(e,t,r,n){var i="function"==typeof this.client.searchForFacetValues;if(!i&&"function"!=typeof this.client.initIndex)throw new Error("search for facet values (searchable) was called, but this client does not have a function client.searchForFacetValues or client.initIndex(index).searchForFacetValues");var a=this.state.setQueryParameters(n||{}),c=a.isDisjunctiveFacet(e),u=s.getSearchForFacetQuery(e,t,r,a);this._currentNbQueries++;var o=this;return this.emit("searchForFacetValues",{state:a,facet:e,query:t}),(i?this.client.searchForFacetValues([{indexName:a.index,params:u}]):this.client.initIndex(a.index).searchForFacetValues(u)).then((function(t){return o._currentNbQueries--,0===o._currentNbQueries&&o.emit("searchQueueEmpty"),(t=Array.isArray(t)?t[0]:t).facetHits.forEach((function(t){t.isRefined=c?a.isDisjunctiveFacetRefined(e,t.value):a.isFacetRefined(e,t.value)})),t}),(function(e){throw o._currentNbQueries--,0===o._currentNbQueries&&o.emit("searchQueueEmpty"),e}))},m.prototype.setQuery=function(e){return this._change({state:this.state.resetPage().setQuery(e),isPageReset:!0}),this},m.prototype.clearRefinements=function(e){return this._change({state:this.state.resetPage().clearRefinements(e),isPageReset:!0}),this},m.prototype.clearTags=function(){return this._change({state:this.state.resetPage().clearTags(),isPageReset:!0}),this},m.prototype.addDisjunctiveFacetRefinement=function(e,t){return this._change({state:this.state.resetPage().addDisjunctiveFacetRefinement(e,t),isPageReset:!0}),this},m.prototype.addDisjunctiveRefine=function(){return this.addDisjunctiveFacetRefinement.apply(this,arguments)},m.prototype.addHierarchicalFacetRefinement=function(e,t){return this._change({state:this.state.resetPage().addHierarchicalFacetRefinement(e,t),isPageReset:!0}),this},m.prototype.addNumericRefinement=function(e,t,r){return this._change({state:this.state.resetPage().addNumericRefinement(e,t,r),isPageReset:!0}),this},m.prototype.addFacetRefinement=function(e,t){return this._change({state:this.state.resetPage().addFacetRefinement(e,t),isPageReset:!0}),this},m.prototype.addRefine=function(){return this.addFacetRefinement.apply(this,arguments)},m.prototype.addFacetExclusion=function(e,t){return this._change({state:this.state.resetPage().addExcludeRefinement(e,t),isPageReset:!0}),this},m.prototype.addExclude=function(){return this.addFacetExclusion.apply(this,arguments)},m.prototype.addTag=function(e){return this._change({state:this.state.resetPage().addTagRefinement(e),isPageReset:!0}),this},m.prototype.removeNumericRefinement=function(e,t,r){return this._change({state:this.state.resetPage().removeNumericRefinement(e,t,r),isPageReset:!0}),this},m.prototype.removeDisjunctiveFacetRefinement=function(e,t){return this._change({state:this.state.resetPage().removeDisjunctiveFacetRefinement(e,t),isPageReset:!0}),this},m.prototype.removeDisjunctiveRefine=function(){return this.removeDisjunctiveFacetRefinement.apply(this,arguments)},m.prototype.removeHierarchicalFacetRefinement=function(e){return this._change({state:this.state.resetPage().removeHierarchicalFacetRefinement(e),isPageReset:!0}),this},m.prototype.removeFacetRefinement=function(e,t){return this._change({state:this.state.resetPage().removeFacetRefinement(e,t),isPageReset:!0}),this},m.prototype.removeRefine=function(){return this.removeFacetRefinement.apply(this,arguments)},m.prototype.removeFacetExclusion=function(e,t){return this._change({state:this.state.resetPage().removeExcludeRefinement(e,t),isPageReset:!0}),this},m.prototype.removeExclude=function(){return this.removeFacetExclusion.apply(this,arguments)},m.prototype.removeTag=function(e){return this._change({state:this.state.resetPage().removeTagRefinement(e),isPageReset:!0}),this},m.prototype.toggleFacetExclusion=function(e,t){return this._change({state:this.state.resetPage().toggleExcludeFacetRefinement(e,t),isPageReset:!0}),this},m.prototype.toggleExclude=function(){return this.toggleFacetExclusion.apply(this,arguments)},m.prototype.toggleRefinement=function(e,t){return this.toggleFacetRefinement(e,t)},m.prototype.toggleFacetRefinement=function(e,t){return this._change({state:this.state.resetPage().toggleFacetRefinement(e,t),isPageReset:!0}),this},m.prototype.toggleRefine=function(){return this.toggleFacetRefinement.apply(this,arguments)},m.prototype.toggleTag=function(e){return this._change({state:this.state.resetPage().toggleTagRefinement(e),isPageReset:!0}),this},m.prototype.nextPage=function(){var e=this.state.page||0;return this.setPage(e+1)},m.prototype.previousPage=function(){var e=this.state.page||0;return this.setPage(e-1)},m.prototype.setCurrentPage=d,m.prototype.setPage=d,m.prototype.setIndex=function(e){return this._change({state:this.state.resetPage().setIndex(e),isPageReset:!0}),this},m.prototype.setQueryParameter=function(e,t){return this._change({state:this.state.resetPage().setQueryParameter(e,t),isPageReset:!0}),this},m.prototype.setState=function(e){return this._change({state:n.make(e),isPageReset:!1}),this},m.prototype.overrideStateWithoutTriggeringChangeEvent=function(e){return this.state=new n(e),this},m.prototype.hasRefinements=function(e){return!!o(this.state.getNumericRefinements(e))||(this.state.isConjunctiveFacet(e)?this.state.isFacetRefined(e):this.state.isDisjunctiveFacet(e)?this.state.isDisjunctiveFacetRefined(e):!!this.state.isHierarchicalFacet(e)&&this.state.isHierarchicalFacetRefined(e))},m.prototype.isExcluded=function(e,t){return this.state.isExcludeRefined(e,t)},m.prototype.isDisjunctiveRefined=function(e,t){return this.state.isDisjunctiveFacetRefined(e,t)},m.prototype.hasTag=function(e){return this.state.isTagRefined(e)},m.prototype.isTagRefined=function(){return this.hasTagRefinements.apply(this,arguments)},m.prototype.getIndex=function(){return this.state.index},m.prototype.getCurrentPage=v,m.prototype.getPage=v,m.prototype.getTags=function(){return this.state.tagRefinements},m.prototype.getRefinements=function(e){var t=[];if(this.state.isConjunctiveFacet(e))this.state.getConjunctiveRefinements(e).forEach((function(e){t.push({value:e,type:"conjunctive"})})),this.state.getExcludeRefinements(e).forEach((function(e){t.push({value:e,type:"exclude"})}));else if(this.state.isDisjunctiveFacet(e)){this.state.getDisjunctiveRefinements(e).forEach((function(e){t.push({value:e,type:"disjunctive"})}))}var r=this.state.getNumericRefinements(e);return Object.keys(r).forEach((function(e){var n=r[e];t.push({value:n,operator:e,type:"numeric"})})),t},m.prototype.getNumericRefinement=function(e,t){return this.state.getNumericRefinement(e,t)},m.prototype.getHierarchicalFacetBreadcrumb=function(e){return this.state.getHierarchicalFacetBreadcrumb(e)},m.prototype._search=function(e){var t=this.state,r=[],n=[];e.onlyWithDerivedHelpers||(n=s._getQueries(t.index,t),r.push({state:t,queriesCount:n.length,helper:this}),this.emit("search",{state:t,results:this.lastResults}));var i=this.derivedHelpers.map((function(e){var n=e.getModifiedState(t),i=s._getQueries(n.index,n);return r.push({state:n,queriesCount:i.length,helper:e}),e.emit("search",{state:n,results:e.lastResults}),i})),a=Array.prototype.concat.apply(n,i),c=this._queryId++;this._currentNbQueries++;try{this.client.search(a).then(this._dispatchAlgoliaResponse.bind(this,r,c)).catch(this._dispatchAlgoliaError.bind(this,c))}catch(u){this.emit("error",{error:u})}},m.prototype._dispatchAlgoliaResponse=function(e,t,r){if(!(t0},m.prototype._change=function(e){var t=e.state,r=e.isPageReset;t!==this.state&&(this.state=t,this.emit("change",{state:this.state,results:this.lastResults,isPageReset:r}))},m.prototype.clearCache=function(){return this.client.clearCache&&this.client.clearCache(),this},m.prototype.setClient=function(e){return this.client===e||("function"==typeof e.addAlgoliaAgent&&e.addAlgoliaAgent("JS Helper ("+l+")"),this.client=e),this},m.prototype.getClient=function(){return this.client},m.prototype.derive=function(e){var t=new a(this,e);return this.derivedHelpers.push(t),t},m.prototype.detachDerivedHelper=function(e){var t=this.derivedHelpers.indexOf(e);if(-1===t)throw new Error("Derived helper already detached");this.derivedHelpers.splice(t,1)},m.prototype.hasPendingRequests=function(){return this._currentNbQueries>0},e.exports=m},4587:function(e){"use strict";e.exports=function(e){return Array.isArray(e)?e.filter(Boolean):[]}},2344:function(e){"use strict";e.exports=function(){var e=Array.prototype.slice.call(arguments);return e.reduceRight((function(e,t){return Object.keys(Object(t)).forEach((function(r){void 0!==t[r]&&(void 0!==e[r]&&delete e[r],e[r]=t[r])})),e}),{})}},7888:function(e){"use strict";e.exports=function(e,t){if(Array.isArray(e))for(var r=0;r1||!a?(e[0].push(i[0]),e[1].push(i[1]),e):(e[0].push(a[0]),e[1].push(a[1]),e)}),[[],[]])}},4853:function(e){"use strict";e.exports=function(e,t){e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}},2686:function(e){"use strict";e.exports=function(e,t){return e.filter((function(r,n){return t.indexOf(r)>-1&&e.indexOf(r)===n}))}},185:function(e){"use strict";function t(e){return"function"==typeof e||Array.isArray(e)||"[object Object]"===Object.prototype.toString.call(e)}function r(e,n){if(e===n)return e;for(var i in n)if(Object.prototype.hasOwnProperty.call(n,i)){var a=n[i],s=e[i];void 0!==s&&void 0===a||(t(s)&&t(a)?e[i]=r(s,a):e[i]="object"==typeof(c=a)&&null!==c?r(Array.isArray(c)?[]:{},c):c)}var c;return e}e.exports=function(e){t(e)||(e={});for(var n=1,i=arguments.length;n0}},9803:function(e){"use strict";e.exports=function(e,t){if(null===e)return{};var r,n,i={},a=Object.keys(e);for(n=0;n=0||(i[r]=e[r]);return i}},2148:function(e){"use strict";function t(e,t){if(e!==t){var r=void 0!==e,n=null===e,i=void 0!==t,a=null===t;if(!a&&e>t||n&&i||!r)return 1;if(!n&&e=n.length?a:"desc"===n[i]?-a:a}return e.index-r.index})),i.map((function(e){return e.value}))}},8023:function(e){"use strict";e.exports=function e(t){if("number"==typeof t)return t;if("string"==typeof t)return parseFloat(t);if(Array.isArray(t))return t.map(e);throw new Error("The value should be a number, a parsable string or an array of those.")}},6394:function(e,t,r){"use strict";var n=r(185),i={_getQueries:function(e,t){var r=[];return r.push({indexName:e,params:i._getHitsSearchParams(t)}),t.getRefinedDisjunctiveFacets().forEach((function(n){r.push({indexName:e,params:i._getDisjunctiveFacetSearchParams(t,n)})})),t.getRefinedHierarchicalFacets().forEach((function(n){var a=t.getHierarchicalFacetByName(n),s=t.getHierarchicalRefinement(n),c=t._getHierarchicalFacetSeparator(a);s.length>0&&s[0].split(c).length>1&&r.push({indexName:e,params:i._getDisjunctiveFacetSearchParams(t,n,!0)})})),r},_getHitsSearchParams:function(e){var t=e.facets.concat(e.disjunctiveFacets).concat(i._getHitsHierarchicalFacetsAttributes(e)),r=i._getFacetFilters(e),a=i._getNumericFilters(e),s={facets:t,tagFilters:i._getTagFilters(e)};return r.length>0&&(s.facetFilters=r),a.length>0&&(s.numericFilters=a),n({},e.getQueryParams(),s)},_getDisjunctiveFacetSearchParams:function(e,t,r){var a=i._getFacetFilters(e,t,r),s=i._getNumericFilters(e,t),c={hitsPerPage:1,page:0,attributesToRetrieve:[],attributesToHighlight:[],attributesToSnippet:[],tagFilters:i._getTagFilters(e),analytics:!1,clickAnalytics:!1},u=e.getHierarchicalFacetByName(t);return c.facets=u?i._getDisjunctiveHierarchicalFacetAttribute(e,u,r):t,s.length>0&&(c.numericFilters=s),a.length>0&&(c.facetFilters=a),n({},e.getQueryParams(),c)},_getNumericFilters:function(e,t){if(e.numericFilters)return e.numericFilters;var r=[];return Object.keys(e.numericRefinements).forEach((function(n){var i=e.numericRefinements[n]||{};Object.keys(i).forEach((function(e){var a=i[e]||[];t!==n&&a.forEach((function(t){if(Array.isArray(t)){var i=t.map((function(t){return n+e+t}));r.push(i)}else r.push(n+e+t)}))}))})),r},_getTagFilters:function(e){return e.tagFilters?e.tagFilters:e.tagRefinements.join(",")},_getFacetFilters:function(e,t,r){var n=[],i=e.facetsRefinements||{};Object.keys(i).forEach((function(e){(i[e]||[]).forEach((function(t){n.push(e+":"+t)}))}));var a=e.facetsExcludes||{};Object.keys(a).forEach((function(e){(a[e]||[]).forEach((function(t){n.push(e+":-"+t)}))}));var s=e.disjunctiveFacetsRefinements||{};Object.keys(s).forEach((function(e){var r=s[e]||[];if(e!==t&&r&&0!==r.length){var i=[];r.forEach((function(t){i.push(e+":"+t)})),n.push(i)}}));var c=e.hierarchicalFacetsRefinements||{};return Object.keys(c).forEach((function(i){var a=(c[i]||[])[0];if(void 0!==a){var s,u,o=e.getHierarchicalFacetByName(i),h=e._getHierarchicalFacetSeparator(o),f=e._getHierarchicalRootPath(o);if(t===i){if(-1===a.indexOf(h)||!f&&!0===r||f&&f.split(h).length===a.split(h).length)return;f?(u=f.split(h).length-1,a=f):(u=a.split(h).length-2,a=a.slice(0,a.lastIndexOf(h))),s=o.attributes[u]}else u=a.split(h).length-1,s=o.attributes[u];s&&n.push([s+":"+a])}})),n},_getHitsHierarchicalFacetsAttributes:function(e){return e.hierarchicalFacets.reduce((function(t,r){var n=e.getHierarchicalRefinement(r.name)[0];if(!n)return t.push(r.attributes[0]),t;var i=e._getHierarchicalFacetSeparator(r),a=n.split(i).length,s=r.attributes.slice(0,a+1);return t.concat(s)}),[])},_getDisjunctiveHierarchicalFacetAttribute:function(e,t,r){var n=e._getHierarchicalFacetSeparator(t);if(!0===r){var i=e._getHierarchicalRootPath(t),a=0;return i&&(a=i.split(n).length),[t.attributes[a]]}var s=(e.getHierarchicalRefinement(t.name)[0]||"").split(n).length-1;return t.attributes.slice(0,s+1)},getSearchForFacetQuery:function(e,t,r,a){var s=a.isDisjunctiveFacet(e)?a.clearRefinements(e):a,c={facetQuery:t,facetName:e};return"number"==typeof r&&(c.maxFacetHits=r),n({},i._getHitsSearchParams(s),c)}};e.exports=i},6801:function(e){"use strict";e.exports=function(e){return null!==e&&/^[a-zA-Z0-9_-]{1,64}$/.test(e)}},4336:function(e){"use strict";e.exports="3.5.5"},290:function(e){e.exports=function(){"use strict";function e(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function t(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function r(r){for(var n=1;n=0||(i[r]=e[r]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}function i(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e)){var r=[],n=!0,i=!1,a=void 0;try{for(var s,c=e[Symbol.iterator]();!(n=(s=c.next()).done)&&(r.push(s.value),!t||r.length!==t);n=!0);}catch(e){i=!0,a=e}finally{try{n||null==c.return||c.return()}finally{if(i)throw a}}return r}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function a(e){return function(e){if(Array.isArray(e)){for(var t=0,r=new Array(e.length);t2&&void 0!==arguments[2]?arguments[2]:{miss:function(){return Promise.resolve()}};return Promise.resolve().then((function(){var r=JSON.stringify(e),n=a()[r];return Promise.all([n||t(),void 0!==n])})).then((function(e){var t=i(e,2),n=t[0],a=t[1];return Promise.all([n,a||r.miss(n)])})).then((function(e){return i(e,1)[0]}))},set:function(e,t){return Promise.resolve().then((function(){var i=a();return i[JSON.stringify(e)]=t,n().setItem(r,JSON.stringify(i)),t}))},delete:function(e){return Promise.resolve().then((function(){var t=a();delete t[JSON.stringify(e)],n().setItem(r,JSON.stringify(t))}))},clear:function(){return Promise.resolve().then((function(){n().removeItem(r)}))}}}function c(e){var t=a(e.caches),r=t.shift();return void 0===r?{get:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{miss:function(){return Promise.resolve()}};return t().then((function(e){return Promise.all([e,r.miss(e)])})).then((function(e){return i(e,1)[0]}))},set:function(e,t){return Promise.resolve(t)},delete:function(e){return Promise.resolve()},clear:function(){return Promise.resolve()}}:{get:function(e,n){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{miss:function(){return Promise.resolve()}};return r.get(e,n,i).catch((function(){return c({caches:t}).get(e,n,i)}))},set:function(e,n){return r.set(e,n).catch((function(){return c({caches:t}).set(e,n)}))},delete:function(e){return r.delete(e).catch((function(){return c({caches:t}).delete(e)}))},clear:function(){return r.clear().catch((function(){return c({caches:t}).clear()}))}}}function u(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{serializable:!0},t={};return{get:function(r,n){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{miss:function(){return Promise.resolve()}},a=JSON.stringify(r);if(a in t)return Promise.resolve(e.serializable?JSON.parse(t[a]):t[a]);var s=n(),c=i&&i.miss||function(){return Promise.resolve()};return s.then((function(e){return c(e)})).then((function(){return s}))},set:function(r,n){return t[JSON.stringify(r)]=e.serializable?JSON.stringify(n):n,Promise.resolve(n)},delete:function(e){return delete t[JSON.stringify(e)],Promise.resolve()},clear:function(){return t={},Promise.resolve()}}}function o(e){for(var t=e.length-1;t>0;t--){var r=Math.floor(Math.random()*(t+1)),n=e[t];e[t]=e[r],e[r]=n}return e}function h(e,t){return t?(Object.keys(t).forEach((function(r){e[r]=t[r](e)})),e):e}function f(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n0?n:void 0,timeout:r.timeout||t,headers:r.headers||{},queryParameters:r.queryParameters||{},cacheable:r.cacheable}}var d={Read:1,Write:2,Any:3},v=1,p=2,g=3;function y(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:v;return r(r({},e),{},{status:t,lastUpdate:Date.now()})}function R(e){return"string"==typeof e?{protocol:"https",url:e,accept:d.Any}:{protocol:e.protocol||"https",url:e.url,accept:e.accept||d.Any}}var F="GET",b="POST";function P(e,t){return Promise.all(t.map((function(t){return e.get(t,(function(){return Promise.resolve(y(t))}))}))).then((function(e){var r=e.filter((function(e){return function(e){return e.status===v||Date.now()-e.lastUpdate>12e4}(e)})),n=e.filter((function(e){return function(e){return e.status===g&&Date.now()-e.lastUpdate<=12e4}(e)})),i=[].concat(a(r),a(n));return{getTimeout:function(e,t){return(0===n.length&&0===e?1:n.length+3+e)*t},statelessHosts:i.length>0?i.map((function(e){return R(e)})):t}}))}function j(e,t,n,i){var s=[],c=function(e,t){if(e.method!==F&&(void 0!==e.data||void 0!==t.data)){var n=Array.isArray(e.data)?e.data:r(r({},e.data),t.data);return JSON.stringify(n)}}(n,i),u=function(e,t){var n=r(r({},e.headers),t.headers),i={};return Object.keys(n).forEach((function(e){var t=n[e];i[e.toLowerCase()]=t})),i}(e,i),o=n.method,h=n.method!==F?{}:r(r({},n.data),i.data),f=r(r(r({"x-algolia-agent":e.userAgent.value},e.queryParameters),h),i.queryParameters),l=0,m=function t(r,a){var h=r.pop();if(void 0===h)throw{name:"RetryError",message:"Unreachable hosts - your application id may be incorrect. If the error persists, contact support@algolia.com.",transporterStackTrace:O(s)};var m={data:c,headers:u,method:o,url:E(h,n.path,f),connectTimeout:a(l,e.timeouts.connect),responseTimeout:a(l,i.timeout)},d=function(e){var t={request:m,response:e,host:h,triesLeft:r.length};return s.push(t),t},v={onSuccess:function(e){return function(e){try{return JSON.parse(e.content)}catch(t){throw function(e,t){return{name:"DeserializationError",message:e,response:t}}(t.message,e)}}(e)},onRetry:function(n){var i=d(n);return n.isTimedOut&&l++,Promise.all([e.logger.info("Retryable failure",w(i)),e.hostsCache.set(h,y(h,n.isTimedOut?g:p))]).then((function(){return t(r,a)}))},onFail:function(e){throw d(e),function(e,t){var r=e.content,n=e.status,i=r;try{i=JSON.parse(r).message}catch(e){}return function(e,t,r){return{name:"ApiError",message:e,status:t,transporterStackTrace:r}}(i,n,t)}(e,O(s))}};return e.requester.send(m).then((function(e){return function(e,t){return function(e){var t=e.status;return e.isTimedOut||function(e){var t=e.isTimedOut,r=e.status;return!t&&0==~~r}(e)||2!=~~(t/100)&&4!=~~(t/100)}(e)?t.onRetry(e):2==~~(e.status/100)?t.onSuccess(e):t.onFail(e)}(e,v)}))};return P(e.hostsCache,t).then((function(e){return m(a(e.statelessHosts).reverse(),e.getTimeout)}))}function _(e){var t={value:"Algolia for JavaScript (".concat(e,")"),add:function(e){var r="; ".concat(e.segment).concat(void 0!==e.version?" (".concat(e.version,")"):"");return-1===t.value.indexOf(r)&&(t.value="".concat(t.value).concat(r)),t}};return t}function E(e,t,r){var n=x(r),i="".concat(e.protocol,"://").concat(e.url,"/").concat("/"===t.charAt(0)?t.substr(1):t);return n.length&&(i+="?".concat(n)),i}function x(e){return Object.keys(e).map((function(t){return f("%s=%s",t,(r=e[t],"[object Object]"===Object.prototype.toString.call(r)||"[object Array]"===Object.prototype.toString.call(r)?JSON.stringify(e[t]):e[t]));var r})).join("&")}function O(e){return e.map((function(e){return w(e)}))}function w(e){var t=e.request.headers["x-algolia-api-key"]?{"x-algolia-api-key":"*****"}:{};return r(r({},e),{},{request:r(r({},e.request),{},{headers:r(r({},e.request.headers),t)})})}var N=function(e){var t=e.appId,n=function(e,t,r){var n={"x-algolia-api-key":r,"x-algolia-application-id":t};return{headers:function(){return e===l.WithinHeaders?n:{}},queryParameters:function(){return e===l.WithinQueryParameters?n:{}}}}(void 0!==e.authMode?e.authMode:l.WithinHeaders,t,e.apiKey),a=function(e){var t=e.hostsCache,r=e.logger,n=e.requester,a=e.requestsCache,s=e.responsesCache,c=e.timeouts,u=e.userAgent,o=e.hosts,h=e.queryParameters,f={hostsCache:t,logger:r,requester:n,requestsCache:a,responsesCache:s,timeouts:c,userAgent:u,headers:e.headers,queryParameters:h,hosts:o.map((function(e){return R(e)})),read:function(e,t){var r=m(t,f.timeouts.read),n=function(){return j(f,f.hosts.filter((function(e){return 0!=(e.accept&d.Read)})),e,r)};if(!0!==(void 0!==r.cacheable?r.cacheable:e.cacheable))return n();var a={request:e,mappedRequestOptions:r,transporter:{queryParameters:f.queryParameters,headers:f.headers}};return f.responsesCache.get(a,(function(){return f.requestsCache.get(a,(function(){return f.requestsCache.set(a,n()).then((function(e){return Promise.all([f.requestsCache.delete(a),e])}),(function(e){return Promise.all([f.requestsCache.delete(a),Promise.reject(e)])})).then((function(e){var t=i(e,2);return t[0],t[1]}))}))}),{miss:function(e){return f.responsesCache.set(a,e)}})},write:function(e,t){return j(f,f.hosts.filter((function(e){return 0!=(e.accept&d.Write)})),e,m(t,f.timeouts.write))}};return f}(r(r({hosts:[{url:"".concat(t,"-dsn.algolia.net"),accept:d.Read},{url:"".concat(t,".algolia.net"),accept:d.Write}].concat(o([{url:"".concat(t,"-1.algolianet.com")},{url:"".concat(t,"-2.algolianet.com")},{url:"".concat(t,"-3.algolianet.com")}]))},e),{},{headers:r(r(r({},n.headers()),{"content-type":"application/x-www-form-urlencoded"}),e.headers),queryParameters:r(r({},n.queryParameters()),e.queryParameters)}));return h({transporter:a,appId:t,addAlgoliaAgent:function(e,t){a.userAgent.add({segment:e,version:t})},clearCache:function(){return Promise.all([a.requestsCache.clear(),a.responsesCache.clear()]).then((function(){}))}},e.methods)},A=function(e){return function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return h({transporter:e.transporter,appId:e.appId,indexName:t},r.methods)}},H=function(e){return function(t,n){var i=t.map((function(e){return r(r({},e),{},{params:x(e.params||{})})}));return e.transporter.read({method:b,path:"1/indexes/*/queries",data:{requests:i},cacheable:!0},n)}},S=function(e){return function(t,i){return Promise.all(t.map((function(t){var a=t.params,s=a.facetName,c=a.facetQuery,u=n(a,["facetName","facetQuery"]);return A(e)(t.indexName,{methods:{searchForFacetValues:C}}).searchForFacetValues(s,c,r(r({},i),u))})))}},T=function(e){return function(t,r,n){return e.transporter.read({method:b,path:f("1/answers/%s/prediction",e.indexName),data:{query:t,queryLanguages:r},cacheable:!0},n)}},Q=function(e){return function(t,r){return e.transporter.read({method:b,path:f("1/indexes/%s/query",e.indexName),data:{query:t},cacheable:!0},r)}},C=function(e){return function(t,r,n){return e.transporter.read({method:b,path:f("1/indexes/%s/facets/%s/query",e.indexName,t),data:{facetQuery:r},cacheable:!0},n)}},k=1,D=2,I=3;function q(e,t,n){var i,a={appId:e,apiKey:t,timeouts:{connect:1,read:2,write:30},requester:{send:function(e){return new Promise((function(t){var r=new XMLHttpRequest;r.open(e.method,e.url,!0),Object.keys(e.headers).forEach((function(t){return r.setRequestHeader(t,e.headers[t])}));var n,i=function(e,n){return setTimeout((function(){r.abort(),t({status:0,content:n,isTimedOut:!0})}),1e3*e)},a=i(e.connectTimeout,"Connection timeout");r.onreadystatechange=function(){r.readyState>r.OPENED&&void 0===n&&(clearTimeout(a),n=i(e.responseTimeout,"Socket timeout"))},r.onerror=function(){0===r.status&&(clearTimeout(a),clearTimeout(n),t({content:r.responseText||"Network request failed",status:r.status,isTimedOut:!1}))},r.onload=function(){clearTimeout(a),clearTimeout(n),t({content:r.responseText,status:r.status,isTimedOut:!1})},r.send(e.data)}))}},logger:(i=I,{debug:function(e,t){return k>=i&&console.debug(e,t),Promise.resolve()},info:function(e,t){return D>=i&&console.info(e,t),Promise.resolve()},error:function(e,t){return console.error(e,t),Promise.resolve()}}),responsesCache:u(),requestsCache:u({serializable:!1}),hostsCache:c({caches:[s({key:"".concat("4.10.3","-").concat(e)}),u()]}),userAgent:_("4.10.3").add({segment:"Browser",version:"lite"}),authMode:l.WithinQueryParameters};return N(r(r(r({},a),n),{},{methods:{search:H,searchForFacetValues:S,multipleQueries:H,multipleSearchForFacetValues:S,initIndex:function(e){return function(t){return A(e)(t,{methods:{search:Q,searchForFacetValues:C,findAnswers:T}})}}}}))}return q.version="4.10.3",q}()},9343:function(e,t,r){"use strict";r.r(t),r.d(t,{default:function(){return T}});var n=r(7294),i=r(290),a=r.n(i),s=r(8131),c=r.n(s),u=r(6010),o=r(9105),h=r(6742),f=r(412),l=r(3018),m=r(2263),d=r(907),v=r(6397),p=r(6199),g=r(4973),y="searchQueryInput_35WP",R="searchVersionInput_3Dkp",F="searchResultsColumn_3okB",b="algoliaLogo_hvIi",P="algoliaLogoPathFill_wnAy",j="searchResultItem_3EK0",_="searchResultItemHeading_3ioS",E="searchResultItemPath_1-7G",x="searchResultItemSummary_17EU",O="searchQueryColumn_22lI",w="searchVersionColumn_1eqi",N="searchLogoColumn_21YU",A="loadingSpinner_EGxz",H="loader_1VUO";var S=function(e){var t=e.docsSearchVersionsHelpers,r=Object.entries(t.allDocsData).filter((function(e){return e[1].versions.length>1}));return n.createElement("div",{className:(0,u.Z)("col","col--3","padding-left--none",w)},r.map((function(e){var i=e[0],a=e[1],s=r.length>1?i+": ":"";return n.createElement("select",{key:i,onChange:function(e){return t.setSearchVersion(i,e.target.value)},defaultValue:t.searchVersions[i],className:R},a.versions.map((function(e,t){return n.createElement("option",{key:t,label:""+s+e.label,value:e.name})})))})))};var T=function(){var e,t,r,i,s,R,w=(0,m.Z)(),T=w.siteConfig.themeConfig.algolia,Q=T.appId,C=T.apiKey,k=T.indexName,D=w.i18n.currentLocale,I=(e=(0,l.c2)().selectMessage,function(t){return e(t,(0,g.I)({id:"theme.SearchPage.documentsFound.plurals",description:'Pluralized label for "{count} documents found". Use as much plural forms (separated by "|") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)',message:"One document found|{count} documents found"},{count:t}))}),q=(t=(0,d._r)(),r=(0,n.useState)((function(){return Object.entries(t).reduce((function(e,t){var r,n=t[0],i=t[1];return Object.assign({},e,((r={})[n]=i.versions[0].name,r))}),{})})),i=r[0],s=r[1],R=Object.values(t).some((function(e){return e.versions.length>1})),{allDocsData:t,versioningEnabled:R,searchVersions:i,setSearchVersion:function(e,t){return s((function(r){var n;return Object.assign({},r,((n={})[e]=t,n))}))}}),L=(0,v.Z)(),V=L.searchValue,B=L.updateSearchPath,z=(0,n.useState)(V),M=z[0],J=z[1],U={items:[],query:null,totalResults:null,totalPages:null,lastPage:null,hasMore:null,loading:null},W=(0,n.useReducer)((function(e,t){var r=t.type,n=t.value;switch(r){case"reset":return U;case"loading":return Object.assign({},e,{loading:!0});case"update":return M!==n.query?e:Object.assign({},n,{items:0===n.lastPage?n.items:e.items.concat(n.items)});case"advance":var i=e.totalPages>e.lastPage+1;return Object.assign({},e,{lastPage:i?e.lastPage+1:e.lastPage,hasMore:i});default:return e}}),U),Z=W[0],K=W[1],G=a()(Q,C),X=c()(G,k,{hitsPerPage:15,advancedSyntax:!0,disjunctiveFacets:["language","docusaurus_tag"]});X.on("result",(function(e){var t=e.results,r=t.query,n=t.hits,i=t.page,a=t.nbHits,s=t.nbPages;if(""!==r&&n instanceof Array){var c=function(e){return e.replace(/algolia-docsearch-suggestion--highlight/g,"search-result-match")},u=n.map((function(e){var t=e.url,r=e._highlightResult.hierarchy,n=e._snippetResult,i=void 0===n?{}:n,a=new URL(t),s=a.pathname,u=a.hash,o=Object.keys(r).map((function(e){return c(r[e].value)}));return{title:o.pop(),url:s+u,summary:i.content?c(i.content.value)+"...":"",breadcrumbs:o}}));K({type:"update",value:{items:u,query:r,totalResults:a,totalPages:s,lastPage:i,hasMore:s>i+1,loading:!1}})}else K({type:"reset"})}));var Y=(0,n.useState)(null),$=Y[0],ee=Y[1],te=(0,n.useRef)(0),re=(0,n.useRef)(f.Z.canUseDOM&&new IntersectionObserver((function(e){var t=e[0],r=t.isIntersecting,n=t.boundingClientRect.y;r&&te.current>n&&K({type:"advance"}),te.current=n}),{threshold:1})),ne=function(){return M?(0,g.I)({id:"theme.SearchPage.existingResultsTitle",message:'Search results for "{query}"',description:"The search page title for non-empty query"},{query:M}):(0,g.I)({id:"theme.SearchPage.emptyResultsTitle",message:"Search the documentation",description:"The search page title for empty query"})},ie=function(e){void 0===e&&(e=0),X.addDisjunctiveFacetRefinement("docusaurus_tag","default"),X.addDisjunctiveFacetRefinement("language",D),Object.entries(q.searchVersions).forEach((function(e){var t=e[0],r=e[1];X.addDisjunctiveFacetRefinement("docusaurus_tag","docs-"+t+"-"+r)})),X.setQuery(M).setPage(e).search()};return(0,n.useEffect)((function(){if($)return re.current.observe($),function(){re.current.unobserve($)}}),[$]),(0,n.useEffect)((function(){B(M),K({type:"reset"}),M&&(K({type:"loading"}),setTimeout((function(){ie()}),300))}),[M,q.searchVersions]),(0,n.useEffect)((function(){Z.lastPage&&0!==Z.lastPage&&ie(Z.lastPage)}),[Z.lastPage]),(0,n.useEffect)((function(){V&&V!==M&&J(V)}),[V]),n.createElement(p.Z,{wrapperClassName:"search-page-wrapper"},n.createElement(o.Z,null,n.createElement("title",null,(0,l.pe)(ne())),n.createElement("meta",{property:"robots",content:"noindex, follow"})),n.createElement("div",{className:"container margin-vert--lg"},n.createElement("h1",null,ne()),n.createElement("form",{className:"row",onSubmit:function(e){return e.preventDefault()}},n.createElement("div",{className:(0,u.Z)("col",O,{"col--9":q.versioningEnabled,"col--12":!q.versioningEnabled})},n.createElement("input",{type:"search",name:"q",className:y,placeholder:(0,g.I)({id:"theme.SearchPage.inputPlaceholder",message:"Type your search here",description:"The placeholder for search page input"}),"aria-label":(0,g.I)({id:"theme.SearchPage.inputLabel",message:"Search",description:"The ARIA label for search page input"}),onChange:function(e){return J(e.target.value)},value:M,autoComplete:"off",autoFocus:!0})),q.versioningEnabled&&n.createElement(S,{docsSearchVersionsHelpers:q})),n.createElement("div",{className:"row"},n.createElement("div",{className:(0,u.Z)("col","col--8",F)},!!Z.totalResults&&I(Z.totalResults)),n.createElement("div",{className:(0,u.Z)("col","col--4","text--right",N)},n.createElement("a",{target:"_blank",rel:"noopener noreferrer",href:"https://www.algolia.com/","aria-label":(0,g.I)({id:"theme.SearchPage.algoliaLabel",message:"Search by Algolia",description:"The ARIA label for Algolia mention"})},n.createElement("svg",{viewBox:"0 0 168 24",className:b},n.createElement("g",{fill:"none"},n.createElement("path",{className:P,d:"M120.925 18.804c-4.386.02-4.386-3.54-4.386-4.106l-.007-13.336 2.675-.424v13.254c0 .322 0 2.358 1.718 2.364v2.248zm-10.846-2.18c.821 0 1.43-.047 1.855-.129v-2.719a6.334 6.334 0 0 0-1.574-.199 5.7 5.7 0 0 0-.897.069 2.699 2.699 0 0 0-.814.24c-.24.116-.439.28-.582.491-.15.212-.219.335-.219.656 0 .628.219.991.616 1.23s.938.362 1.615.362zm-.233-9.7c.883 0 1.629.109 2.231.328.602.218 1.088.525 1.444.915.363.396.609.922.76 1.483.157.56.232 1.175.232 1.85v6.874a32.5 32.5 0 0 1-1.868.314c-.834.123-1.772.185-2.813.185-.69 0-1.327-.069-1.895-.198a4.001 4.001 0 0 1-1.471-.636 3.085 3.085 0 0 1-.951-1.134c-.226-.465-.343-1.12-.343-1.803 0-.656.13-1.073.384-1.525a3.24 3.24 0 0 1 1.047-1.106c.445-.287.95-.492 1.532-.615a8.8 8.8 0 0 1 1.82-.185 8.404 8.404 0 0 1 1.972.24v-.438c0-.307-.035-.6-.11-.874a1.88 1.88 0 0 0-.384-.73 1.784 1.784 0 0 0-.724-.493 3.164 3.164 0 0 0-1.143-.205c-.616 0-1.177.075-1.69.164a7.735 7.735 0 0 0-1.26.307l-.321-2.192c.335-.117.834-.233 1.478-.349a10.98 10.98 0 0 1 2.073-.178zm52.842 9.626c.822 0 1.43-.048 1.854-.13V13.7a6.347 6.347 0 0 0-1.574-.199c-.294 0-.595.021-.896.069a2.7 2.7 0 0 0-.814.24 1.46 1.46 0 0 0-.582.491c-.15.212-.218.335-.218.656 0 .628.218.991.615 1.23.404.245.938.362 1.615.362zm-.226-9.694c.883 0 1.629.108 2.231.327.602.219 1.088.526 1.444.915.355.39.609.923.759 1.483a6.8 6.8 0 0 1 .233 1.852v6.873c-.41.088-1.034.19-1.868.314-.834.123-1.772.184-2.813.184-.69 0-1.327-.068-1.895-.198a4.001 4.001 0 0 1-1.471-.635 3.085 3.085 0 0 1-.951-1.134c-.226-.465-.343-1.12-.343-1.804 0-.656.13-1.073.384-1.524.26-.45.608-.82 1.047-1.107.445-.286.95-.491 1.532-.614a8.803 8.803 0 0 1 2.751-.13c.329.034.671.096 1.04.185v-.437a3.3 3.3 0 0 0-.109-.875 1.873 1.873 0 0 0-.384-.731 1.784 1.784 0 0 0-.724-.492 3.165 3.165 0 0 0-1.143-.205c-.616 0-1.177.075-1.69.164a7.75 7.75 0 0 0-1.26.307l-.321-2.193c.335-.116.834-.232 1.478-.348a11.633 11.633 0 0 1 2.073-.177zm-8.034-1.271a1.626 1.626 0 0 1-1.628-1.62c0-.895.725-1.62 1.628-1.62.904 0 1.63.725 1.63 1.62 0 .895-.733 1.62-1.63 1.62zm1.348 13.22h-2.689V7.27l2.69-.423v11.956zm-4.714 0c-4.386.02-4.386-3.54-4.386-4.107l-.008-13.336 2.676-.424v13.254c0 .322 0 2.358 1.718 2.364v2.248zm-8.698-5.903c0-1.156-.253-2.119-.746-2.788-.493-.677-1.183-1.01-2.067-1.01-.882 0-1.574.333-2.065 1.01-.493.676-.733 1.632-.733 2.788 0 1.168.246 1.953.74 2.63.492.683 1.183 1.018 2.066 1.018.882 0 1.574-.342 2.067-1.019.492-.683.738-1.46.738-2.63zm2.737-.007c0 .902-.13 1.584-.397 2.33a5.52 5.52 0 0 1-1.128 1.906 4.986 4.986 0 0 1-1.752 1.223c-.685.286-1.739.45-2.265.45-.528-.006-1.574-.157-2.252-.45a5.096 5.096 0 0 1-1.744-1.223c-.487-.527-.863-1.162-1.137-1.906a6.345 6.345 0 0 1-.41-2.33c0-.902.123-1.77.397-2.508a5.554 5.554 0 0 1 1.15-1.892 5.133 5.133 0 0 1 1.75-1.216c.679-.287 1.425-.423 2.232-.423.808 0 1.553.142 2.237.423a4.88 4.88 0 0 1 1.753 1.216 5.644 5.644 0 0 1 1.135 1.892c.287.738.431 1.606.431 2.508zm-20.138 0c0 1.12.246 2.363.738 2.882.493.52 1.13.78 1.91.78.424 0 .828-.062 1.204-.178.377-.116.677-.253.917-.417V9.33a10.476 10.476 0 0 0-1.766-.226c-.971-.028-1.71.37-2.23 1.004-.513.636-.773 1.75-.773 2.788zm7.438 5.274c0 1.824-.466 3.156-1.404 4.004-.936.846-2.367 1.27-4.296 1.27-.705 0-2.17-.137-3.34-.396l.431-2.118c.98.205 2.272.26 2.95.26 1.074 0 1.84-.219 2.299-.656.459-.437.684-1.086.684-1.948v-.437a8.07 8.07 0 0 1-1.047.397c-.43.13-.93.198-1.492.198-.739 0-1.41-.116-2.018-.349a4.206 4.206 0 0 1-1.567-1.025c-.431-.45-.774-1.017-1.013-1.694-.24-.677-.363-1.885-.363-2.773 0-.834.13-1.88.384-2.577.26-.696.629-1.298 1.129-1.796.493-.498 1.095-.881 1.8-1.162a6.605 6.605 0 0 1 2.428-.457c.87 0 1.67.109 2.45.24.78.129 1.444.265 1.985.415V18.17zM6.972 6.677v1.627c-.712-.446-1.52-.67-2.425-.67-.585 0-1.045.13-1.38.391a1.24 1.24 0 0 0-.502 1.03c0 .425.164.765.494 1.02.33.256.835.532 1.516.83.447.192.795.356 1.045.495.25.138.537.332.862.582.324.25.563.548.718.894.154.345.23.741.23 1.188 0 .947-.334 1.691-1.004 2.234-.67.542-1.537.814-2.601.814-1.18 0-2.16-.229-2.936-.686v-1.708c.84.628 1.814.942 2.92.942.585 0 1.048-.136 1.388-.407.34-.271.51-.646.51-1.125 0-.287-.1-.55-.302-.79-.203-.24-.42-.42-.655-.542-.234-.123-.585-.29-1.053-.503a61.27 61.27 0 0 1-.582-.271 13.67 13.67 0 0 1-.55-.287 4.275 4.275 0 0 1-.567-.351 6.92 6.92 0 0 1-.455-.4c-.18-.17-.31-.34-.39-.51-.08-.17-.155-.37-.224-.598a2.553 2.553 0 0 1-.104-.742c0-.915.333-1.638.998-2.17.664-.532 1.523-.798 2.576-.798.968 0 1.793.17 2.473.51zm7.468 5.696v-.287c-.022-.607-.187-1.088-.495-1.444-.309-.357-.75-.535-1.324-.535-.532 0-.99.194-1.373.583-.382.388-.622.949-.717 1.683h3.909zm1.005 2.792v1.404c-.596.34-1.383.51-2.362.51-1.255 0-2.255-.377-3-1.132-.744-.755-1.116-1.744-1.116-2.968 0-1.297.34-2.316 1.021-3.055.68-.74 1.548-1.11 2.6-1.11 1.033 0 1.852.323 2.458.966.606.644.91 1.572.91 2.784 0 .33-.033.676-.096 1.038h-5.314c.107.702.405 1.239.894 1.611.49.372 1.106.558 1.85.558.862 0 1.58-.202 2.155-.606zm6.605-1.77h-1.212c-.596 0-1.045.116-1.349.35-.303.234-.454.532-.454.894 0 .372.117.664.35.877.235.213.575.32 1.022.32.51 0 .912-.142 1.204-.424.293-.281.44-.651.44-1.108v-.91zm-4.068-2.554V9.325c.627-.361 1.457-.542 2.489-.542 2.116 0 3.175 1.026 3.175 3.08V17h-1.548v-.957c-.415.68-1.143 1.02-2.186 1.02-.766 0-1.38-.22-1.843-.661-.462-.442-.694-1.003-.694-1.684 0-.776.293-1.38.878-1.81.585-.431 1.404-.647 2.457-.647h1.34V11.8c0-.554-.133-.971-.399-1.253-.266-.282-.707-.423-1.324-.423a4.07 4.07 0 0 0-2.345.718zm9.333-1.93v1.42c.394-1 1.101-1.5 2.123-1.5.148 0 .313.016.494.048v1.531a1.885 1.885 0 0 0-.75-.143c-.542 0-.989.24-1.34.718-.351.479-.527 1.048-.527 1.707V17h-1.563V8.91h1.563zm5.01 4.084c.022.82.272 1.492.75 2.019.479.526 1.15.79 2.01.79.639 0 1.235-.176 1.788-.527v1.404c-.521.319-1.186.479-1.995.479-1.265 0-2.276-.4-3.031-1.197-.755-.798-1.133-1.792-1.133-2.984 0-1.16.38-2.151 1.14-2.975.761-.825 1.79-1.237 3.088-1.237.702 0 1.346.149 1.93.447v1.436a3.242 3.242 0 0 0-1.77-.495c-.84 0-1.513.266-2.019.798-.505.532-.758 1.213-.758 2.042zM40.24 5.72v4.579c.458-1 1.293-1.5 2.505-1.5.787 0 1.42.245 1.899.734.479.49.718 1.17.718 2.042V17h-1.564v-5.106c0-.553-.14-.98-.422-1.284-.282-.303-.652-.455-1.11-.455-.531 0-1.002.202-1.411.606-.41.405-.615 1.022-.615 1.851V17h-1.563V5.72h1.563zm14.966 10.02c.596 0 1.096-.253 1.5-.758.404-.506.606-1.157.606-1.955 0-.915-.202-1.62-.606-2.114-.404-.495-.92-.742-1.548-.742-.553 0-1.05.224-1.491.67-.442.447-.662 1.133-.662 2.058 0 .958.212 1.67.638 2.138.425.469.946.703 1.563.703zM53.004 5.72v4.42c.574-.894 1.388-1.341 2.44-1.341 1.022 0 1.857.383 2.506 1.149.649.766.973 1.781.973 3.047 0 1.138-.309 2.109-.925 2.912-.617.803-1.463 1.205-2.537 1.205-1.075 0-1.894-.447-2.457-1.34V17h-1.58V5.72h1.58zm9.908 11.104l-3.223-7.913h1.739l1.005 2.632 1.26 3.415c.096-.32.48-1.458 1.15-3.415l.909-2.632h1.66l-2.92 7.866c-.777 2.074-1.963 3.11-3.559 3.11a2.92 2.92 0 0 1-.734-.079v-1.34c.17.042.351.064.543.064 1.032 0 1.755-.57 2.17-1.708z"}),n.createElement("path",{fill:"#5468FF",d:"M78.988.938h16.594a2.968 2.968 0 0 1 2.966 2.966V20.5a2.967 2.967 0 0 1-2.966 2.964H78.988a2.967 2.967 0 0 1-2.966-2.964V3.897A2.961 2.961 0 0 1 78.988.938z"}),n.createElement("path",{fill:"white",d:"M89.632 5.967v-.772a.978.978 0 0 0-.978-.977h-2.28a.978.978 0 0 0-.978.977v.793c0 .088.082.15.171.13a7.127 7.127 0 0 1 1.984-.28c.65 0 1.295.088 1.917.259.082.02.164-.04.164-.13m-6.248 1.01l-.39-.389a.977.977 0 0 0-1.382 0l-.465.465a.973.973 0 0 0 0 1.38l.383.383c.062.061.15.047.205-.014.226-.307.472-.601.746-.874.281-.28.568-.526.883-.751.068-.042.075-.137.02-.2m4.16 2.453v3.341c0 .096.104.165.192.117l2.97-1.537c.068-.034.089-.117.055-.184a3.695 3.695 0 0 0-3.08-1.866c-.068 0-.136.054-.136.13m0 8.048a4.489 4.489 0 0 1-4.49-4.482 4.488 4.488 0 0 1 4.49-4.482 4.488 4.488 0 0 1 4.489 4.482 4.484 4.484 0 0 1-4.49 4.482m0-10.85a6.363 6.363 0 1 0 0 12.729 6.37 6.37 0 0 0 6.372-6.368 6.358 6.358 0 0 0-6.371-6.36"})))))),Z.items.length>0?n.createElement("main",null,Z.items.map((function(e,t){var r=e.title,i=e.url,a=e.summary,s=e.breadcrumbs;return n.createElement("article",{key:t,className:j},n.createElement("h2",{className:_},n.createElement(h.Z,{to:i,dangerouslySetInnerHTML:{__html:r}})),s.length>0&&n.createElement("nav",{"aria-label":"breadcrumbs"},n.createElement("ul",{className:(0,u.Z)("breadcrumbs",E)},s.map((function(e,t){return n.createElement("li",{key:t,className:"breadcrumbs__item",dangerouslySetInnerHTML:{__html:e}})})))),a&&n.createElement("p",{className:x,dangerouslySetInnerHTML:{__html:a}}))}))):[M&&!Z.loading&&n.createElement("p",{key:"no-results"},n.createElement(g.Z,{id:"theme.SearchPage.noResultsText",description:"The paragraph for empty search result"},"No results were found")),!!Z.loading&&n.createElement("div",{key:"spinner",className:A})],Z.hasMore&&n.createElement("div",{className:H,ref:ee},n.createElement(g.Z,{id:"theme.SearchPage.fetchingNewResults",description:"The paragraph for fetching new search results"},"Fetching new results..."))))}}}]); \ No newline at end of file +/*! For license information please see 9343.a3d59083.js.LICENSE.txt */ +(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[9343],{8131:function(e,t,r){"use strict";var n=r(9374),i=r(7775),a=r(3076);function s(e,t,r){return new n(e,t,r)}s.version=r(4336),s.AlgoliaSearchHelper=n,s.SearchParameters=i,s.SearchResults=a,e.exports=s},696:function(e){function t(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function r(e){return"function"==typeof e}function n(e){return"object"==typeof e&&null!==e}function i(e){return void 0===e}e.exports=t,t.EventEmitter=t,t.prototype._events=void 0,t.prototype._maxListeners=void 0,t.defaultMaxListeners=10,t.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||isNaN(e))throw TypeError("n must be a positive number");return this._maxListeners=e,this},t.prototype.emit=function(e){var t,a,s,c,u,o;if(this._events||(this._events={}),"error"===e&&(!this._events.error||n(this._events.error)&&!this._events.error.length)){if((t=arguments[1])instanceof Error)throw t;var h=new Error('Uncaught, unspecified "error" event. ('+t+")");throw h.context=t,h}if(i(a=this._events[e]))return!1;if(r(a))switch(arguments.length){case 1:a.call(this);break;case 2:a.call(this,arguments[1]);break;case 3:a.call(this,arguments[1],arguments[2]);break;default:c=Array.prototype.slice.call(arguments,1),a.apply(this,c)}else if(n(a))for(c=Array.prototype.slice.call(arguments,1),s=(o=a.slice()).length,u=0;u0&&this._events[e].length>s&&(this._events[e].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[e].length),"function"==typeof console.trace&&console.trace()),this},t.prototype.on=t.prototype.addListener,t.prototype.once=function(e,t){if(!r(t))throw TypeError("listener must be a function");var n=!1;function i(){this.removeListener(e,i),n||(n=!0,t.apply(this,arguments))}return i.listener=t,this.on(e,i),this},t.prototype.removeListener=function(e,t){var i,a,s,c;if(!r(t))throw TypeError("listener must be a function");if(!this._events||!this._events[e])return this;if(s=(i=this._events[e]).length,a=-1,i===t||r(i.listener)&&i.listener===t)delete this._events[e],this._events.removeListener&&this.emit("removeListener",e,t);else if(n(i)){for(c=s;c-- >0;)if(i[c]===t||i[c].listener&&i[c].listener===t){a=c;break}if(a<0)return this;1===i.length?(i.length=0,delete this._events[e]):i.splice(a,1),this._events.removeListener&&this.emit("removeListener",e,t)}return this},t.prototype.removeAllListeners=function(e){var t,n;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[e]&&delete this._events[e],this;if(0===arguments.length){for(t in this._events)"removeListener"!==t&&this.removeAllListeners(t);return this.removeAllListeners("removeListener"),this._events={},this}if(r(n=this._events[e]))this.removeListener(e,n);else if(n)for(;n.length;)this.removeListener(e,n[n.length-1]);return delete this._events[e],this},t.prototype.listeners=function(e){return this._events&&this._events[e]?r(this._events[e])?[this._events[e]]:this._events[e].slice():[]},t.prototype.listenerCount=function(e){if(this._events){var t=this._events[e];if(r(t))return 1;if(t)return t.length}return 0},t.listenerCount=function(e,t){return e.listenerCount(t)}},8078:function(e,t,r){"use strict";var n=r(696);function i(e,t){this.main=e,this.fn=t,this.lastResults=null}r(4853)(i,n.EventEmitter),i.prototype.detach=function(){this.removeAllListeners(),this.main.detachDerivedHelper(this)},i.prototype.getModifiedState=function(e){return this.fn(e)},e.exports=i},2437:function(e,t,r){"use strict";var n=r(2344),i=r(9803),a=r(116),s={addRefinement:function(e,t,r){if(s.isRefined(e,t,r))return e;var i=""+r,a=e[t]?e[t].concat(i):[i],c={};return c[t]=a,n({},c,e)},removeRefinement:function(e,t,r){if(void 0===r)return s.clearRefinement(e,(function(e,r){return t===r}));var n=""+r;return s.clearRefinement(e,(function(e,r){return t===r&&n===e}))},toggleRefinement:function(e,t,r){if(void 0===r)throw new Error("toggleRefinement should be used with a value");return s.isRefined(e,t,r)?s.removeRefinement(e,t,r):s.addRefinement(e,t,r)},clearRefinement:function(e,t,r){if(void 0===t)return a(e)?{}:e;if("string"==typeof t)return i(e,[t]);if("function"==typeof t){var n=!1,s=Object.keys(e).reduce((function(i,a){var s=e[a]||[],c=s.filter((function(e){return!t(e,a,r)}));return c.length!==s.length&&(n=!0),i[a]=c,i}),{});return n?s:e}},isRefined:function(e,t,r){var n=!!e[t]&&e[t].length>0;if(void 0===r||!n)return n;var i=""+r;return-1!==e[t].indexOf(i)}};e.exports=s},7775:function(e,t,r){"use strict";var n=r(185),i=r(2344),a=r(2686),s=r(7888),c=r(8023),u=r(9803),o=r(116),h=r(6801),f=r(2437);function l(e,t){return Array.isArray(e)&&Array.isArray(t)?e.length===t.length&&e.every((function(e,r){return l(t[r],e)})):e===t}function m(e){var t=e?m._parseNumbers(e):{};void 0===t.userToken||h(t.userToken)||console.warn("[algoliasearch-helper] The `userToken` parameter is invalid. This can lead to wrong analytics.\n - Format: [a-zA-Z0-9_-]{1,64}"),this.facets=t.facets||[],this.disjunctiveFacets=t.disjunctiveFacets||[],this.hierarchicalFacets=t.hierarchicalFacets||[],this.facetsRefinements=t.facetsRefinements||{},this.facetsExcludes=t.facetsExcludes||{},this.disjunctiveFacetsRefinements=t.disjunctiveFacetsRefinements||{},this.numericRefinements=t.numericRefinements||{},this.tagRefinements=t.tagRefinements||[],this.hierarchicalFacetsRefinements=t.hierarchicalFacetsRefinements||{};var r=this;Object.keys(t).forEach((function(e){var n=-1!==m.PARAMETERS.indexOf(e),i=void 0!==t[e];!n&&i&&(r[e]=t[e])}))}m.PARAMETERS=Object.keys(new m),m._parseNumbers=function(e){if(e instanceof m)return e;var t={};if(["aroundPrecision","aroundRadius","getRankingInfo","minWordSizefor2Typos","minWordSizefor1Typo","page","maxValuesPerFacet","distinct","minimumAroundRadius","hitsPerPage","minProximity"].forEach((function(r){var n=e[r];if("string"==typeof n){var i=parseFloat(n);t[r]=isNaN(i)?n:i}})),Array.isArray(e.insideBoundingBox)&&(t.insideBoundingBox=e.insideBoundingBox.map((function(e){return Array.isArray(e)?e.map((function(e){return parseFloat(e)})):e}))),e.numericRefinements){var r={};Object.keys(e.numericRefinements).forEach((function(t){var n=e.numericRefinements[t]||{};r[t]={},Object.keys(n).forEach((function(e){var i=n[e].map((function(e){return Array.isArray(e)?e.map((function(e){return"string"==typeof e?parseFloat(e):e})):"string"==typeof e?parseFloat(e):e}));r[t][e]=i}))})),t.numericRefinements=r}return n({},e,t)},m.make=function(e){var t=new m(e);return(e.hierarchicalFacets||[]).forEach((function(e){if(e.rootPath){var r=t.getHierarchicalRefinement(e.name);r.length>0&&0!==r[0].indexOf(e.rootPath)&&(t=t.clearRefinements(e.name)),0===(r=t.getHierarchicalRefinement(e.name)).length&&(t=t.toggleHierarchicalFacetRefinement(e.name,e.rootPath))}})),t},m.validate=function(e,t){var r=t||{};return e.tagFilters&&r.tagRefinements&&r.tagRefinements.length>0?new Error("[Tags] Cannot switch from the managed tag API to the advanced API. It is probably an error, if it is really what you want, you should first clear the tags with clearTags method."):e.tagRefinements.length>0&&r.tagFilters?new Error("[Tags] Cannot switch from the advanced tag API to the managed API. It is probably an error, if it is not, you should first clear the tags with clearTags method."):e.numericFilters&&r.numericRefinements&&o(r.numericRefinements)?new Error("[Numeric filters] Can't switch from the advanced to the managed API. It is probably an error, if this is really what you want, you have to first clear the numeric filters."):o(e.numericRefinements)&&r.numericFilters?new Error("[Numeric filters] Can't switch from the managed API to the advanced. It is probably an error, if this is really what you want, you have to first clear the numeric filters."):null},m.prototype={constructor:m,clearRefinements:function(e){var t={numericRefinements:this._clearNumericRefinements(e),facetsRefinements:f.clearRefinement(this.facetsRefinements,e,"conjunctiveFacet"),facetsExcludes:f.clearRefinement(this.facetsExcludes,e,"exclude"),disjunctiveFacetsRefinements:f.clearRefinement(this.disjunctiveFacetsRefinements,e,"disjunctiveFacet"),hierarchicalFacetsRefinements:f.clearRefinement(this.hierarchicalFacetsRefinements,e,"hierarchicalFacet")};return t.numericRefinements===this.numericRefinements&&t.facetsRefinements===this.facetsRefinements&&t.facetsExcludes===this.facetsExcludes&&t.disjunctiveFacetsRefinements===this.disjunctiveFacetsRefinements&&t.hierarchicalFacetsRefinements===this.hierarchicalFacetsRefinements?this:this.setQueryParameters(t)},clearTags:function(){return void 0===this.tagFilters&&0===this.tagRefinements.length?this:this.setQueryParameters({tagFilters:void 0,tagRefinements:[]})},setIndex:function(e){return e===this.index?this:this.setQueryParameters({index:e})},setQuery:function(e){return e===this.query?this:this.setQueryParameters({query:e})},setPage:function(e){return e===this.page?this:this.setQueryParameters({page:e})},setFacets:function(e){return this.setQueryParameters({facets:e})},setDisjunctiveFacets:function(e){return this.setQueryParameters({disjunctiveFacets:e})},setHitsPerPage:function(e){return this.hitsPerPage===e?this:this.setQueryParameters({hitsPerPage:e})},setTypoTolerance:function(e){return this.typoTolerance===e?this:this.setQueryParameters({typoTolerance:e})},addNumericRefinement:function(e,t,r){var i=c(r);if(this.isNumericRefined(e,t,i))return this;var a=n({},this.numericRefinements);return a[e]=n({},a[e]),a[e][t]?(a[e][t]=a[e][t].slice(),a[e][t].push(i)):a[e][t]=[i],this.setQueryParameters({numericRefinements:a})},getConjunctiveRefinements:function(e){return this.isConjunctiveFacet(e)&&this.facetsRefinements[e]||[]},getDisjunctiveRefinements:function(e){return this.isDisjunctiveFacet(e)&&this.disjunctiveFacetsRefinements[e]||[]},getHierarchicalRefinement:function(e){return this.hierarchicalFacetsRefinements[e]||[]},getExcludeRefinements:function(e){return this.isConjunctiveFacet(e)&&this.facetsExcludes[e]||[]},removeNumericRefinement:function(e,t,r){return void 0!==r?this.isNumericRefined(e,t,r)?this.setQueryParameters({numericRefinements:this._clearNumericRefinements((function(n,i){return i===e&&n.op===t&&l(n.val,c(r))}))}):this:void 0!==t?this.isNumericRefined(e,t)?this.setQueryParameters({numericRefinements:this._clearNumericRefinements((function(r,n){return n===e&&r.op===t}))}):this:this.isNumericRefined(e)?this.setQueryParameters({numericRefinements:this._clearNumericRefinements((function(t,r){return r===e}))}):this},getNumericRefinements:function(e){return this.numericRefinements[e]||{}},getNumericRefinement:function(e,t){return this.numericRefinements[e]&&this.numericRefinements[e][t]},_clearNumericRefinements:function(e){if(void 0===e)return o(this.numericRefinements)?{}:this.numericRefinements;if("string"==typeof e)return u(this.numericRefinements,[e]);if("function"==typeof e){var t=!1,r=this.numericRefinements,n=Object.keys(r).reduce((function(n,i){var a=r[i],s={};return a=a||{},Object.keys(a).forEach((function(r){var n=a[r]||[],c=[];n.forEach((function(t){e({val:t,op:r},i,"numeric")||c.push(t)})),c.length!==n.length&&(t=!0),s[r]=c})),n[i]=s,n}),{});return t?n:this.numericRefinements}},addFacet:function(e){return this.isConjunctiveFacet(e)?this:this.setQueryParameters({facets:this.facets.concat([e])})},addDisjunctiveFacet:function(e){return this.isDisjunctiveFacet(e)?this:this.setQueryParameters({disjunctiveFacets:this.disjunctiveFacets.concat([e])})},addHierarchicalFacet:function(e){if(this.isHierarchicalFacet(e.name))throw new Error("Cannot declare two hierarchical facets with the same name: `"+e.name+"`");return this.setQueryParameters({hierarchicalFacets:this.hierarchicalFacets.concat([e])})},addFacetRefinement:function(e,t){if(!this.isConjunctiveFacet(e))throw new Error(e+" is not defined in the facets attribute of the helper configuration");return f.isRefined(this.facetsRefinements,e,t)?this:this.setQueryParameters({facetsRefinements:f.addRefinement(this.facetsRefinements,e,t)})},addExcludeRefinement:function(e,t){if(!this.isConjunctiveFacet(e))throw new Error(e+" is not defined in the facets attribute of the helper configuration");return f.isRefined(this.facetsExcludes,e,t)?this:this.setQueryParameters({facetsExcludes:f.addRefinement(this.facetsExcludes,e,t)})},addDisjunctiveFacetRefinement:function(e,t){if(!this.isDisjunctiveFacet(e))throw new Error(e+" is not defined in the disjunctiveFacets attribute of the helper configuration");return f.isRefined(this.disjunctiveFacetsRefinements,e,t)?this:this.setQueryParameters({disjunctiveFacetsRefinements:f.addRefinement(this.disjunctiveFacetsRefinements,e,t)})},addTagRefinement:function(e){if(this.isTagRefined(e))return this;var t={tagRefinements:this.tagRefinements.concat(e)};return this.setQueryParameters(t)},removeFacet:function(e){return this.isConjunctiveFacet(e)?this.clearRefinements(e).setQueryParameters({facets:this.facets.filter((function(t){return t!==e}))}):this},removeDisjunctiveFacet:function(e){return this.isDisjunctiveFacet(e)?this.clearRefinements(e).setQueryParameters({disjunctiveFacets:this.disjunctiveFacets.filter((function(t){return t!==e}))}):this},removeHierarchicalFacet:function(e){return this.isHierarchicalFacet(e)?this.clearRefinements(e).setQueryParameters({hierarchicalFacets:this.hierarchicalFacets.filter((function(t){return t.name!==e}))}):this},removeFacetRefinement:function(e,t){if(!this.isConjunctiveFacet(e))throw new Error(e+" is not defined in the facets attribute of the helper configuration");return f.isRefined(this.facetsRefinements,e,t)?this.setQueryParameters({facetsRefinements:f.removeRefinement(this.facetsRefinements,e,t)}):this},removeExcludeRefinement:function(e,t){if(!this.isConjunctiveFacet(e))throw new Error(e+" is not defined in the facets attribute of the helper configuration");return f.isRefined(this.facetsExcludes,e,t)?this.setQueryParameters({facetsExcludes:f.removeRefinement(this.facetsExcludes,e,t)}):this},removeDisjunctiveFacetRefinement:function(e,t){if(!this.isDisjunctiveFacet(e))throw new Error(e+" is not defined in the disjunctiveFacets attribute of the helper configuration");return f.isRefined(this.disjunctiveFacetsRefinements,e,t)?this.setQueryParameters({disjunctiveFacetsRefinements:f.removeRefinement(this.disjunctiveFacetsRefinements,e,t)}):this},removeTagRefinement:function(e){if(!this.isTagRefined(e))return this;var t={tagRefinements:this.tagRefinements.filter((function(t){return t!==e}))};return this.setQueryParameters(t)},toggleRefinement:function(e,t){return this.toggleFacetRefinement(e,t)},toggleFacetRefinement:function(e,t){if(this.isHierarchicalFacet(e))return this.toggleHierarchicalFacetRefinement(e,t);if(this.isConjunctiveFacet(e))return this.toggleConjunctiveFacetRefinement(e,t);if(this.isDisjunctiveFacet(e))return this.toggleDisjunctiveFacetRefinement(e,t);throw new Error("Cannot refine the undeclared facet "+e+"; it should be added to the helper options facets, disjunctiveFacets or hierarchicalFacets")},toggleConjunctiveFacetRefinement:function(e,t){if(!this.isConjunctiveFacet(e))throw new Error(e+" is not defined in the facets attribute of the helper configuration");return this.setQueryParameters({facetsRefinements:f.toggleRefinement(this.facetsRefinements,e,t)})},toggleExcludeFacetRefinement:function(e,t){if(!this.isConjunctiveFacet(e))throw new Error(e+" is not defined in the facets attribute of the helper configuration");return this.setQueryParameters({facetsExcludes:f.toggleRefinement(this.facetsExcludes,e,t)})},toggleDisjunctiveFacetRefinement:function(e,t){if(!this.isDisjunctiveFacet(e))throw new Error(e+" is not defined in the disjunctiveFacets attribute of the helper configuration");return this.setQueryParameters({disjunctiveFacetsRefinements:f.toggleRefinement(this.disjunctiveFacetsRefinements,e,t)})},toggleHierarchicalFacetRefinement:function(e,t){if(!this.isHierarchicalFacet(e))throw new Error(e+" is not defined in the hierarchicalFacets attribute of the helper configuration");var r=this._getHierarchicalFacetSeparator(this.getHierarchicalFacetByName(e)),n={};return void 0!==this.hierarchicalFacetsRefinements[e]&&this.hierarchicalFacetsRefinements[e].length>0&&(this.hierarchicalFacetsRefinements[e][0]===t||0===this.hierarchicalFacetsRefinements[e][0].indexOf(t+r))?-1===t.indexOf(r)?n[e]=[]:n[e]=[t.slice(0,t.lastIndexOf(r))]:n[e]=[t],this.setQueryParameters({hierarchicalFacetsRefinements:i({},n,this.hierarchicalFacetsRefinements)})},addHierarchicalFacetRefinement:function(e,t){if(this.isHierarchicalFacetRefined(e))throw new Error(e+" is already refined.");if(!this.isHierarchicalFacet(e))throw new Error(e+" is not defined in the hierarchicalFacets attribute of the helper configuration.");var r={};return r[e]=[t],this.setQueryParameters({hierarchicalFacetsRefinements:i({},r,this.hierarchicalFacetsRefinements)})},removeHierarchicalFacetRefinement:function(e){if(!this.isHierarchicalFacetRefined(e))return this;var t={};return t[e]=[],this.setQueryParameters({hierarchicalFacetsRefinements:i({},t,this.hierarchicalFacetsRefinements)})},toggleTagRefinement:function(e){return this.isTagRefined(e)?this.removeTagRefinement(e):this.addTagRefinement(e)},isDisjunctiveFacet:function(e){return this.disjunctiveFacets.indexOf(e)>-1},isHierarchicalFacet:function(e){return void 0!==this.getHierarchicalFacetByName(e)},isConjunctiveFacet:function(e){return this.facets.indexOf(e)>-1},isFacetRefined:function(e,t){return!!this.isConjunctiveFacet(e)&&f.isRefined(this.facetsRefinements,e,t)},isExcludeRefined:function(e,t){return!!this.isConjunctiveFacet(e)&&f.isRefined(this.facetsExcludes,e,t)},isDisjunctiveFacetRefined:function(e,t){return!!this.isDisjunctiveFacet(e)&&f.isRefined(this.disjunctiveFacetsRefinements,e,t)},isHierarchicalFacetRefined:function(e,t){if(!this.isHierarchicalFacet(e))return!1;var r=this.getHierarchicalRefinement(e);return t?-1!==r.indexOf(t):r.length>0},isNumericRefined:function(e,t,r){if(void 0===r&&void 0===t)return!!this.numericRefinements[e];var n=this.numericRefinements[e]&&void 0!==this.numericRefinements[e][t];if(void 0===r||!n)return n;var i,a,u=c(r),o=void 0!==(i=this.numericRefinements[e][t],a=u,s(i,(function(e){return l(e,a)})));return n&&o},isTagRefined:function(e){return-1!==this.tagRefinements.indexOf(e)},getRefinedDisjunctiveFacets:function(){var e=this,t=a(Object.keys(this.numericRefinements).filter((function(t){return Object.keys(e.numericRefinements[t]).length>0})),this.disjunctiveFacets);return Object.keys(this.disjunctiveFacetsRefinements).filter((function(t){return e.disjunctiveFacetsRefinements[t].length>0})).concat(t).concat(this.getRefinedHierarchicalFacets())},getRefinedHierarchicalFacets:function(){var e=this;return a(this.hierarchicalFacets.map((function(e){return e.name})),Object.keys(this.hierarchicalFacetsRefinements).filter((function(t){return e.hierarchicalFacetsRefinements[t].length>0})))},getUnrefinedDisjunctiveFacets:function(){var e=this.getRefinedDisjunctiveFacets();return this.disjunctiveFacets.filter((function(t){return-1===e.indexOf(t)}))},managedParameters:["index","facets","disjunctiveFacets","facetsRefinements","facetsExcludes","disjunctiveFacetsRefinements","numericRefinements","tagRefinements","hierarchicalFacets","hierarchicalFacetsRefinements"],getQueryParams:function(){var e=this.managedParameters,t={},r=this;return Object.keys(this).forEach((function(n){var i=r[n];-1===e.indexOf(n)&&void 0!==i&&(t[n]=i)})),t},setQueryParameter:function(e,t){if(this[e]===t)return this;var r={};return r[e]=t,this.setQueryParameters(r)},setQueryParameters:function(e){if(!e)return this;var t=m.validate(this,e);if(t)throw t;var r=this,n=m._parseNumbers(e),i=Object.keys(this).reduce((function(e,t){return e[t]=r[t],e}),{}),a=Object.keys(n).reduce((function(e,t){var r=void 0!==e[t],i=void 0!==n[t];return r&&!i?u(e,[t]):(i&&(e[t]=n[t]),e)}),i);return new this.constructor(a)},resetPage:function(){return void 0===this.page?this:this.setPage(0)},_getHierarchicalFacetSortBy:function(e){return e.sortBy||["isRefined:desc","name:asc"]},_getHierarchicalFacetSeparator:function(e){return e.separator||" > "},_getHierarchicalRootPath:function(e){return e.rootPath||null},_getHierarchicalShowParentLevel:function(e){return"boolean"!=typeof e.showParentLevel||e.showParentLevel},getHierarchicalFacetByName:function(e){return s(this.hierarchicalFacets,(function(t){return t.name===e}))},getHierarchicalFacetBreadcrumb:function(e){if(!this.isHierarchicalFacet(e))return[];var t=this.getHierarchicalRefinement(e)[0];if(!t)return[];var r=this._getHierarchicalFacetSeparator(this.getHierarchicalFacetByName(e));return t.split(r).map((function(e){return e.trim()}))},toString:function(){return JSON.stringify(this,null,2)}},e.exports=m},210:function(e,t,r){"use strict";e.exports=function(e){return function(t,r){var s=e.hierarchicalFacets[r],c=e.hierarchicalFacetsRefinements[s.name]&&e.hierarchicalFacetsRefinements[s.name][0]||"",u=e._getHierarchicalFacetSeparator(s),o=e._getHierarchicalRootPath(s),h=e._getHierarchicalShowParentLevel(s),f=a(e._getHierarchicalFacetSortBy(s)),l=t.every((function(e){return e.exhaustive})),m=function(e,t,r,a,s){return function(c,u,o){var h=c;if(o>0){var f=0;for(h=c;f-1})));if(o){var h=o.attributes.indexOf(t),f=u(e.hierarchicalFacets,(function(e){return e.name===o.name}));a.hierarchicalFacets[f][h]={attribute:t,data:s,exhaustive:r.exhaustiveFacetsCount}}else{var v,g=-1!==e.disjunctiveFacets.indexOf(t),y=-1!==e.facets.indexOf(t);g&&(v=d[t],a.disjunctiveFacets[v]={name:t,data:s,exhaustive:r.exhaustiveFacetsCount},l(a.disjunctiveFacets[v],r.facets_stats,t)),y&&(v=m[t],a.facets[v]={name:t,data:s,exhaustive:r.exhaustiveFacetsCount},l(a.facets[v],r.facets_stats,t))}})),this.hierarchicalFacets=s(this.hierarchicalFacets),o.forEach((function(s){var c=t[v],o=c&&c.facets?c.facets:{},h=e.getHierarchicalFacetByName(s);Object.keys(o).forEach((function(t){var s,f=o[t];if(h){s=u(e.hierarchicalFacets,(function(e){return e.name===h.name}));var m=u(a.hierarchicalFacets[s],(function(e){return e.attribute===t}));if(-1===m)return;a.hierarchicalFacets[s][m].data=n({},a.hierarchicalFacets[s][m].data,f)}else{s=d[t];var v=r.facets&&r.facets[t]||{};a.disjunctiveFacets[s]={name:t,data:i({},f,v),exhaustive:c.exhaustiveFacetsCount},l(a.disjunctiveFacets[s],c.facets_stats,t),e.disjunctiveFacetsRefinements[t]&&e.disjunctiveFacetsRefinements[t].forEach((function(r){!a.disjunctiveFacets[s].data[r]&&e.disjunctiveFacetsRefinements[t].indexOf(r)>-1&&(a.disjunctiveFacets[s].data[r]=0)}))}})),v++})),e.getRefinedHierarchicalFacets().forEach((function(r){var n=e.getHierarchicalFacetByName(r),s=e._getHierarchicalFacetSeparator(n),c=e.getHierarchicalRefinement(r);if(!(0===c.length||c[0].split(s).length<2)){var o=t[v],h=o&&o.facets?o.facets:{};Object.keys(h).forEach((function(t){var r=h[t],o=u(e.hierarchicalFacets,(function(e){return e.name===n.name})),f=u(a.hierarchicalFacets[o],(function(e){return e.attribute===t}));if(-1!==f){var l={};if(c.length>0){var m=c[0].split(s)[0];l[m]=a.hierarchicalFacets[o][f].data[m]}a.hierarchicalFacets[o][f].data=i(l,r,a.hierarchicalFacets[o][f].data)}})),v++}})),Object.keys(e.facetsExcludes).forEach((function(t){var n=e.facetsExcludes[t],i=m[t];a.facets[i]={name:t,data:r.facets[t],exhaustive:r.exhaustiveFacetsCount},n.forEach((function(e){a.facets[i]=a.facets[i]||{name:t},a.facets[i].data=a.facets[i].data||{},a.facets[i].data[e]=0}))})),this.hierarchicalFacets=this.hierarchicalFacets.map(h(e)),this.facets=s(this.facets),this.disjunctiveFacets=s(this.disjunctiveFacets),this._state=e}function d(e,t,r,n){if(n=n||0,Array.isArray(t))return e(t,r[n]);if(!t.data||0===t.data.length)return t;var a=t.data.map((function(t){return d(e,t,r,n+1)})),s=e(a,r[n]);return i({data:s},t)}function v(e,t){var r=c(e,(function(e){return e.name===t}));return r&&r.stats}function p(e,t,r,n,i){var a=c(i,(function(e){return e.name===r})),s=a&&a.data&&a.data[n]?a.data[n]:0,u=a&&a.exhaustive||!1;return{type:t,attributeName:r,name:n,count:s,exhaustive:u}}m.prototype.getFacetByName=function(e){function t(t){return t.name===e}return c(this.facets,t)||c(this.disjunctiveFacets,t)||c(this.hierarchicalFacets,t)},m.DEFAULT_SORT=["isRefined:desc","count:desc","name:asc"],m.prototype.getFacetValues=function(e,t){var r=function(e,t){function r(e){return e.name===t}if(e._state.isConjunctiveFacet(t)){var n=c(e.facets,r);return n?Object.keys(n.data).map((function(r){return{name:r,count:n.data[r],isRefined:e._state.isFacetRefined(t,r),isExcluded:e._state.isExcludeRefined(t,r)}})):[]}if(e._state.isDisjunctiveFacet(t)){var i=c(e.disjunctiveFacets,r);return i?Object.keys(i.data).map((function(r){return{name:r,count:i.data[r],isRefined:e._state.isDisjunctiveFacetRefined(t,r)}})):[]}if(e._state.isHierarchicalFacet(t))return c(e.hierarchicalFacets,r)}(this,e);if(r){var n,s=i({},t,{sortBy:m.DEFAULT_SORT,facetOrdering:!(t&&t.sortBy)}),u=this;if(Array.isArray(r))n=[e];else n=u._state.getHierarchicalFacetByName(r.name).attributes;return d((function(e,t){if(s.facetOrdering){var r=function(e,t){return e.renderingContent&&e.renderingContent.facetOrdering&&e.renderingContent.facetOrdering.values&&e.renderingContent.facetOrdering.values[t]}(u,t);if(Boolean(r))return function(e,t){var r=[],n=[],i=(t.order||[]).reduce((function(e,t,r){return e[t]=r,e}),{});e.forEach((function(e){var t=e.path||e.name;void 0!==i[t]?r[i[t]]=e:n.push(e)}));var s,c=t.sortRemainingBy;return"hidden"===c?r:(s="alpha"===c?[["path","name"],["asc","asc"]]:[["count"],["desc"]],r.concat(a(n,s[0],s[1])))}(e,r)}if(Array.isArray(s.sortBy)){var n=o(s.sortBy,m.DEFAULT_SORT);return a(e,n[0],n[1])}if("function"==typeof s.sortBy)return function(e,t){return t.sort(e)}(s.sortBy,e);throw new Error("options.sortBy is optional but if defined it must be either an array of string (predicates) or a sorting function")}),r,n)}},m.prototype.getFacetStats=function(e){return this._state.isConjunctiveFacet(e)?v(this.facets,e):this._state.isDisjunctiveFacet(e)?v(this.disjunctiveFacets,e):void 0},m.prototype.getRefinements=function(){var e=this._state,t=this,r=[];return Object.keys(e.facetsRefinements).forEach((function(n){e.facetsRefinements[n].forEach((function(i){r.push(p(e,"facet",n,i,t.facets))}))})),Object.keys(e.facetsExcludes).forEach((function(n){e.facetsExcludes[n].forEach((function(i){r.push(p(e,"exclude",n,i,t.facets))}))})),Object.keys(e.disjunctiveFacetsRefinements).forEach((function(n){e.disjunctiveFacetsRefinements[n].forEach((function(i){r.push(p(e,"disjunctive",n,i,t.disjunctiveFacets))}))})),Object.keys(e.hierarchicalFacetsRefinements).forEach((function(n){e.hierarchicalFacetsRefinements[n].forEach((function(i){r.push(function(e,t,r,n){var i=e.getHierarchicalFacetByName(t),a=e._getHierarchicalFacetSeparator(i),s=r.split(a),u=c(n,(function(e){return e.name===t})),o=s.reduce((function(e,t){var r=e&&c(e.data,(function(e){return e.name===t}));return void 0!==r?r:e}),u),h=o&&o.count||0,f=o&&o.exhaustive||!1,l=o&&o.path||"";return{type:"hierarchical",attributeName:t,name:l,count:h,exhaustive:f}}(e,n,i,t.hierarchicalFacets))}))})),Object.keys(e.numericRefinements).forEach((function(t){var n=e.numericRefinements[t];Object.keys(n).forEach((function(e){n[e].forEach((function(n){r.push({type:"numeric",attributeName:t,name:n,numericValue:n,operator:e})}))}))})),e.tagRefinements.forEach((function(e){r.push({type:"tag",attributeName:"_tags",name:e})})),r},e.exports=m},9374:function(e,t,r){"use strict";var n=r(7775),i=r(3076),a=r(8078),s=r(6394),c=r(696),u=r(4853),o=r(116),h=r(9803),f=r(185),l=r(4336);function m(e,t,r){"function"==typeof e.addAlgoliaAgent&&e.addAlgoliaAgent("JS Helper ("+l+")"),this.setClient(e);var i=r||{};i.index=t,this.state=n.make(i),this.lastResults=null,this._queryId=0,this._lastQueryIdReceived=-1,this.derivedHelpers=[],this._currentNbQueries=0}function d(e){if(e<0)throw new Error("Page requested below 0.");return this._change({state:this.state.setPage(e),isPageReset:!1}),this}function v(){return this.state.page}u(m,c.EventEmitter),m.prototype.search=function(){return this._search({onlyWithDerivedHelpers:!1}),this},m.prototype.searchOnlyWithDerivedHelpers=function(){return this._search({onlyWithDerivedHelpers:!0}),this},m.prototype.getQuery=function(){var e=this.state;return s._getHitsSearchParams(e)},m.prototype.searchOnce=function(e,t){var r=e?this.state.setQueryParameters(e):this.state,n=s._getQueries(r.index,r),a=this;if(this._currentNbQueries++,this.emit("searchOnce",{state:r}),!t)return this.client.search(n).then((function(e){return a._currentNbQueries--,0===a._currentNbQueries&&a.emit("searchQueueEmpty"),{content:new i(r,e.results),state:r,_originalResponse:e}}),(function(e){throw a._currentNbQueries--,0===a._currentNbQueries&&a.emit("searchQueueEmpty"),e}));this.client.search(n).then((function(e){a._currentNbQueries--,0===a._currentNbQueries&&a.emit("searchQueueEmpty"),t(null,new i(r,e.results),r)})).catch((function(e){a._currentNbQueries--,0===a._currentNbQueries&&a.emit("searchQueueEmpty"),t(e,null,r)}))},m.prototype.findAnswers=function(e){var t=this.state,r=this.derivedHelpers[0];if(!r)return Promise.resolve([]);var n=r.getModifiedState(t),i=f({attributesForPrediction:e.attributesForPrediction,nbHits:e.nbHits},{params:h(s._getHitsSearchParams(n),["attributesToSnippet","hitsPerPage","restrictSearchableAttributes","snippetEllipsisText"])}),a="search for answers was called, but this client does not have a function client.initIndex(index).findAnswers";if("function"!=typeof this.client.initIndex)throw new Error(a);var c=this.client.initIndex(n.index);if("function"!=typeof c.findAnswers)throw new Error(a);return c.findAnswers(n.query,e.queryLanguages,i)},m.prototype.searchForFacetValues=function(e,t,r,n){var i="function"==typeof this.client.searchForFacetValues;if(!i&&"function"!=typeof this.client.initIndex)throw new Error("search for facet values (searchable) was called, but this client does not have a function client.searchForFacetValues or client.initIndex(index).searchForFacetValues");var a=this.state.setQueryParameters(n||{}),c=a.isDisjunctiveFacet(e),u=s.getSearchForFacetQuery(e,t,r,a);this._currentNbQueries++;var o=this;return this.emit("searchForFacetValues",{state:a,facet:e,query:t}),(i?this.client.searchForFacetValues([{indexName:a.index,params:u}]):this.client.initIndex(a.index).searchForFacetValues(u)).then((function(t){return o._currentNbQueries--,0===o._currentNbQueries&&o.emit("searchQueueEmpty"),(t=Array.isArray(t)?t[0]:t).facetHits.forEach((function(t){t.isRefined=c?a.isDisjunctiveFacetRefined(e,t.value):a.isFacetRefined(e,t.value)})),t}),(function(e){throw o._currentNbQueries--,0===o._currentNbQueries&&o.emit("searchQueueEmpty"),e}))},m.prototype.setQuery=function(e){return this._change({state:this.state.resetPage().setQuery(e),isPageReset:!0}),this},m.prototype.clearRefinements=function(e){return this._change({state:this.state.resetPage().clearRefinements(e),isPageReset:!0}),this},m.prototype.clearTags=function(){return this._change({state:this.state.resetPage().clearTags(),isPageReset:!0}),this},m.prototype.addDisjunctiveFacetRefinement=function(e,t){return this._change({state:this.state.resetPage().addDisjunctiveFacetRefinement(e,t),isPageReset:!0}),this},m.prototype.addDisjunctiveRefine=function(){return this.addDisjunctiveFacetRefinement.apply(this,arguments)},m.prototype.addHierarchicalFacetRefinement=function(e,t){return this._change({state:this.state.resetPage().addHierarchicalFacetRefinement(e,t),isPageReset:!0}),this},m.prototype.addNumericRefinement=function(e,t,r){return this._change({state:this.state.resetPage().addNumericRefinement(e,t,r),isPageReset:!0}),this},m.prototype.addFacetRefinement=function(e,t){return this._change({state:this.state.resetPage().addFacetRefinement(e,t),isPageReset:!0}),this},m.prototype.addRefine=function(){return this.addFacetRefinement.apply(this,arguments)},m.prototype.addFacetExclusion=function(e,t){return this._change({state:this.state.resetPage().addExcludeRefinement(e,t),isPageReset:!0}),this},m.prototype.addExclude=function(){return this.addFacetExclusion.apply(this,arguments)},m.prototype.addTag=function(e){return this._change({state:this.state.resetPage().addTagRefinement(e),isPageReset:!0}),this},m.prototype.removeNumericRefinement=function(e,t,r){return this._change({state:this.state.resetPage().removeNumericRefinement(e,t,r),isPageReset:!0}),this},m.prototype.removeDisjunctiveFacetRefinement=function(e,t){return this._change({state:this.state.resetPage().removeDisjunctiveFacetRefinement(e,t),isPageReset:!0}),this},m.prototype.removeDisjunctiveRefine=function(){return this.removeDisjunctiveFacetRefinement.apply(this,arguments)},m.prototype.removeHierarchicalFacetRefinement=function(e){return this._change({state:this.state.resetPage().removeHierarchicalFacetRefinement(e),isPageReset:!0}),this},m.prototype.removeFacetRefinement=function(e,t){return this._change({state:this.state.resetPage().removeFacetRefinement(e,t),isPageReset:!0}),this},m.prototype.removeRefine=function(){return this.removeFacetRefinement.apply(this,arguments)},m.prototype.removeFacetExclusion=function(e,t){return this._change({state:this.state.resetPage().removeExcludeRefinement(e,t),isPageReset:!0}),this},m.prototype.removeExclude=function(){return this.removeFacetExclusion.apply(this,arguments)},m.prototype.removeTag=function(e){return this._change({state:this.state.resetPage().removeTagRefinement(e),isPageReset:!0}),this},m.prototype.toggleFacetExclusion=function(e,t){return this._change({state:this.state.resetPage().toggleExcludeFacetRefinement(e,t),isPageReset:!0}),this},m.prototype.toggleExclude=function(){return this.toggleFacetExclusion.apply(this,arguments)},m.prototype.toggleRefinement=function(e,t){return this.toggleFacetRefinement(e,t)},m.prototype.toggleFacetRefinement=function(e,t){return this._change({state:this.state.resetPage().toggleFacetRefinement(e,t),isPageReset:!0}),this},m.prototype.toggleRefine=function(){return this.toggleFacetRefinement.apply(this,arguments)},m.prototype.toggleTag=function(e){return this._change({state:this.state.resetPage().toggleTagRefinement(e),isPageReset:!0}),this},m.prototype.nextPage=function(){var e=this.state.page||0;return this.setPage(e+1)},m.prototype.previousPage=function(){var e=this.state.page||0;return this.setPage(e-1)},m.prototype.setCurrentPage=d,m.prototype.setPage=d,m.prototype.setIndex=function(e){return this._change({state:this.state.resetPage().setIndex(e),isPageReset:!0}),this},m.prototype.setQueryParameter=function(e,t){return this._change({state:this.state.resetPage().setQueryParameter(e,t),isPageReset:!0}),this},m.prototype.setState=function(e){return this._change({state:n.make(e),isPageReset:!1}),this},m.prototype.overrideStateWithoutTriggeringChangeEvent=function(e){return this.state=new n(e),this},m.prototype.hasRefinements=function(e){return!!o(this.state.getNumericRefinements(e))||(this.state.isConjunctiveFacet(e)?this.state.isFacetRefined(e):this.state.isDisjunctiveFacet(e)?this.state.isDisjunctiveFacetRefined(e):!!this.state.isHierarchicalFacet(e)&&this.state.isHierarchicalFacetRefined(e))},m.prototype.isExcluded=function(e,t){return this.state.isExcludeRefined(e,t)},m.prototype.isDisjunctiveRefined=function(e,t){return this.state.isDisjunctiveFacetRefined(e,t)},m.prototype.hasTag=function(e){return this.state.isTagRefined(e)},m.prototype.isTagRefined=function(){return this.hasTagRefinements.apply(this,arguments)},m.prototype.getIndex=function(){return this.state.index},m.prototype.getCurrentPage=v,m.prototype.getPage=v,m.prototype.getTags=function(){return this.state.tagRefinements},m.prototype.getRefinements=function(e){var t=[];if(this.state.isConjunctiveFacet(e))this.state.getConjunctiveRefinements(e).forEach((function(e){t.push({value:e,type:"conjunctive"})})),this.state.getExcludeRefinements(e).forEach((function(e){t.push({value:e,type:"exclude"})}));else if(this.state.isDisjunctiveFacet(e)){this.state.getDisjunctiveRefinements(e).forEach((function(e){t.push({value:e,type:"disjunctive"})}))}var r=this.state.getNumericRefinements(e);return Object.keys(r).forEach((function(e){var n=r[e];t.push({value:n,operator:e,type:"numeric"})})),t},m.prototype.getNumericRefinement=function(e,t){return this.state.getNumericRefinement(e,t)},m.prototype.getHierarchicalFacetBreadcrumb=function(e){return this.state.getHierarchicalFacetBreadcrumb(e)},m.prototype._search=function(e){var t=this.state,r=[],n=[];e.onlyWithDerivedHelpers||(n=s._getQueries(t.index,t),r.push({state:t,queriesCount:n.length,helper:this}),this.emit("search",{state:t,results:this.lastResults}));var i=this.derivedHelpers.map((function(e){var n=e.getModifiedState(t),i=s._getQueries(n.index,n);return r.push({state:n,queriesCount:i.length,helper:e}),e.emit("search",{state:n,results:e.lastResults}),i})),a=Array.prototype.concat.apply(n,i),c=this._queryId++;this._currentNbQueries++;try{this.client.search(a).then(this._dispatchAlgoliaResponse.bind(this,r,c)).catch(this._dispatchAlgoliaError.bind(this,c))}catch(u){this.emit("error",{error:u})}},m.prototype._dispatchAlgoliaResponse=function(e,t,r){if(!(t0},m.prototype._change=function(e){var t=e.state,r=e.isPageReset;t!==this.state&&(this.state=t,this.emit("change",{state:this.state,results:this.lastResults,isPageReset:r}))},m.prototype.clearCache=function(){return this.client.clearCache&&this.client.clearCache(),this},m.prototype.setClient=function(e){return this.client===e||("function"==typeof e.addAlgoliaAgent&&e.addAlgoliaAgent("JS Helper ("+l+")"),this.client=e),this},m.prototype.getClient=function(){return this.client},m.prototype.derive=function(e){var t=new a(this,e);return this.derivedHelpers.push(t),t},m.prototype.detachDerivedHelper=function(e){var t=this.derivedHelpers.indexOf(e);if(-1===t)throw new Error("Derived helper already detached");this.derivedHelpers.splice(t,1)},m.prototype.hasPendingRequests=function(){return this._currentNbQueries>0},e.exports=m},4587:function(e){"use strict";e.exports=function(e){return Array.isArray(e)?e.filter(Boolean):[]}},2344:function(e){"use strict";e.exports=function(){var e=Array.prototype.slice.call(arguments);return e.reduceRight((function(e,t){return Object.keys(Object(t)).forEach((function(r){void 0!==t[r]&&(void 0!==e[r]&&delete e[r],e[r]=t[r])})),e}),{})}},7888:function(e){"use strict";e.exports=function(e,t){if(Array.isArray(e))for(var r=0;r1||!a?(e[0].push(i[0]),e[1].push(i[1]),e):(e[0].push(a[0]),e[1].push(a[1]),e)}),[[],[]])}},4853:function(e){"use strict";e.exports=function(e,t){e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}},2686:function(e){"use strict";e.exports=function(e,t){return e.filter((function(r,n){return t.indexOf(r)>-1&&e.indexOf(r)===n}))}},185:function(e){"use strict";function t(e){return"function"==typeof e||Array.isArray(e)||"[object Object]"===Object.prototype.toString.call(e)}function r(e,n){if(e===n)return e;for(var i in n)if(Object.prototype.hasOwnProperty.call(n,i)){var a=n[i],s=e[i];void 0!==s&&void 0===a||(t(s)&&t(a)?e[i]=r(s,a):e[i]="object"==typeof(c=a)&&null!==c?r(Array.isArray(c)?[]:{},c):c)}var c;return e}e.exports=function(e){t(e)||(e={});for(var n=1,i=arguments.length;n0}},9803:function(e){"use strict";e.exports=function(e,t){if(null===e)return{};var r,n,i={},a=Object.keys(e);for(n=0;n=0||(i[r]=e[r]);return i}},2148:function(e){"use strict";function t(e,t){if(e!==t){var r=void 0!==e,n=null===e,i=void 0!==t,a=null===t;if(!a&&e>t||n&&i||!r)return 1;if(!n&&e=n.length?a:"desc"===n[i]?-a:a}return e.index-r.index})),i.map((function(e){return e.value}))}},8023:function(e){"use strict";e.exports=function e(t){if("number"==typeof t)return t;if("string"==typeof t)return parseFloat(t);if(Array.isArray(t))return t.map(e);throw new Error("The value should be a number, a parsable string or an array of those.")}},6394:function(e,t,r){"use strict";var n=r(185),i={_getQueries:function(e,t){var r=[];return r.push({indexName:e,params:i._getHitsSearchParams(t)}),t.getRefinedDisjunctiveFacets().forEach((function(n){r.push({indexName:e,params:i._getDisjunctiveFacetSearchParams(t,n)})})),t.getRefinedHierarchicalFacets().forEach((function(n){var a=t.getHierarchicalFacetByName(n),s=t.getHierarchicalRefinement(n),c=t._getHierarchicalFacetSeparator(a);s.length>0&&s[0].split(c).length>1&&r.push({indexName:e,params:i._getDisjunctiveFacetSearchParams(t,n,!0)})})),r},_getHitsSearchParams:function(e){var t=e.facets.concat(e.disjunctiveFacets).concat(i._getHitsHierarchicalFacetsAttributes(e)),r=i._getFacetFilters(e),a=i._getNumericFilters(e),s={facets:t,tagFilters:i._getTagFilters(e)};return r.length>0&&(s.facetFilters=r),a.length>0&&(s.numericFilters=a),n({},e.getQueryParams(),s)},_getDisjunctiveFacetSearchParams:function(e,t,r){var a=i._getFacetFilters(e,t,r),s=i._getNumericFilters(e,t),c={hitsPerPage:1,page:0,attributesToRetrieve:[],attributesToHighlight:[],attributesToSnippet:[],tagFilters:i._getTagFilters(e),analytics:!1,clickAnalytics:!1},u=e.getHierarchicalFacetByName(t);return c.facets=u?i._getDisjunctiveHierarchicalFacetAttribute(e,u,r):t,s.length>0&&(c.numericFilters=s),a.length>0&&(c.facetFilters=a),n({},e.getQueryParams(),c)},_getNumericFilters:function(e,t){if(e.numericFilters)return e.numericFilters;var r=[];return Object.keys(e.numericRefinements).forEach((function(n){var i=e.numericRefinements[n]||{};Object.keys(i).forEach((function(e){var a=i[e]||[];t!==n&&a.forEach((function(t){if(Array.isArray(t)){var i=t.map((function(t){return n+e+t}));r.push(i)}else r.push(n+e+t)}))}))})),r},_getTagFilters:function(e){return e.tagFilters?e.tagFilters:e.tagRefinements.join(",")},_getFacetFilters:function(e,t,r){var n=[],i=e.facetsRefinements||{};Object.keys(i).forEach((function(e){(i[e]||[]).forEach((function(t){n.push(e+":"+t)}))}));var a=e.facetsExcludes||{};Object.keys(a).forEach((function(e){(a[e]||[]).forEach((function(t){n.push(e+":-"+t)}))}));var s=e.disjunctiveFacetsRefinements||{};Object.keys(s).forEach((function(e){var r=s[e]||[];if(e!==t&&r&&0!==r.length){var i=[];r.forEach((function(t){i.push(e+":"+t)})),n.push(i)}}));var c=e.hierarchicalFacetsRefinements||{};return Object.keys(c).forEach((function(i){var a=(c[i]||[])[0];if(void 0!==a){var s,u,o=e.getHierarchicalFacetByName(i),h=e._getHierarchicalFacetSeparator(o),f=e._getHierarchicalRootPath(o);if(t===i){if(-1===a.indexOf(h)||!f&&!0===r||f&&f.split(h).length===a.split(h).length)return;f?(u=f.split(h).length-1,a=f):(u=a.split(h).length-2,a=a.slice(0,a.lastIndexOf(h))),s=o.attributes[u]}else u=a.split(h).length-1,s=o.attributes[u];s&&n.push([s+":"+a])}})),n},_getHitsHierarchicalFacetsAttributes:function(e){return e.hierarchicalFacets.reduce((function(t,r){var n=e.getHierarchicalRefinement(r.name)[0];if(!n)return t.push(r.attributes[0]),t;var i=e._getHierarchicalFacetSeparator(r),a=n.split(i).length,s=r.attributes.slice(0,a+1);return t.concat(s)}),[])},_getDisjunctiveHierarchicalFacetAttribute:function(e,t,r){var n=e._getHierarchicalFacetSeparator(t);if(!0===r){var i=e._getHierarchicalRootPath(t),a=0;return i&&(a=i.split(n).length),[t.attributes[a]]}var s=(e.getHierarchicalRefinement(t.name)[0]||"").split(n).length-1;return t.attributes.slice(0,s+1)},getSearchForFacetQuery:function(e,t,r,a){var s=a.isDisjunctiveFacet(e)?a.clearRefinements(e):a,c={facetQuery:t,facetName:e};return"number"==typeof r&&(c.maxFacetHits=r),n({},i._getHitsSearchParams(s),c)}};e.exports=i},6801:function(e){"use strict";e.exports=function(e){return null!==e&&/^[a-zA-Z0-9_-]{1,64}$/.test(e)}},4336:function(e){"use strict";e.exports="3.5.5"},290:function(e){e.exports=function(){"use strict";function e(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function t(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function r(r){for(var n=1;n=0||(i[r]=e[r]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}function i(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if(Symbol.iterator in Object(e)||"[object Arguments]"===Object.prototype.toString.call(e)){var r=[],n=!0,i=!1,a=void 0;try{for(var s,c=e[Symbol.iterator]();!(n=(s=c.next()).done)&&(r.push(s.value),!t||r.length!==t);n=!0);}catch(e){i=!0,a=e}finally{try{n||null==c.return||c.return()}finally{if(i)throw a}}return r}}(e,t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}function a(e){return function(e){if(Array.isArray(e)){for(var t=0,r=new Array(e.length);t2&&void 0!==arguments[2]?arguments[2]:{miss:function(){return Promise.resolve()}};return Promise.resolve().then((function(){var r=JSON.stringify(e),n=a()[r];return Promise.all([n||t(),void 0!==n])})).then((function(e){var t=i(e,2),n=t[0],a=t[1];return Promise.all([n,a||r.miss(n)])})).then((function(e){return i(e,1)[0]}))},set:function(e,t){return Promise.resolve().then((function(){var i=a();return i[JSON.stringify(e)]=t,n().setItem(r,JSON.stringify(i)),t}))},delete:function(e){return Promise.resolve().then((function(){var t=a();delete t[JSON.stringify(e)],n().setItem(r,JSON.stringify(t))}))},clear:function(){return Promise.resolve().then((function(){n().removeItem(r)}))}}}function c(e){var t=a(e.caches),r=t.shift();return void 0===r?{get:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{miss:function(){return Promise.resolve()}};return t().then((function(e){return Promise.all([e,r.miss(e)])})).then((function(e){return i(e,1)[0]}))},set:function(e,t){return Promise.resolve(t)},delete:function(e){return Promise.resolve()},clear:function(){return Promise.resolve()}}:{get:function(e,n){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{miss:function(){return Promise.resolve()}};return r.get(e,n,i).catch((function(){return c({caches:t}).get(e,n,i)}))},set:function(e,n){return r.set(e,n).catch((function(){return c({caches:t}).set(e,n)}))},delete:function(e){return r.delete(e).catch((function(){return c({caches:t}).delete(e)}))},clear:function(){return r.clear().catch((function(){return c({caches:t}).clear()}))}}}function u(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{serializable:!0},t={};return{get:function(r,n){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{miss:function(){return Promise.resolve()}},a=JSON.stringify(r);if(a in t)return Promise.resolve(e.serializable?JSON.parse(t[a]):t[a]);var s=n(),c=i&&i.miss||function(){return Promise.resolve()};return s.then((function(e){return c(e)})).then((function(){return s}))},set:function(r,n){return t[JSON.stringify(r)]=e.serializable?JSON.stringify(n):n,Promise.resolve(n)},delete:function(e){return delete t[JSON.stringify(e)],Promise.resolve()},clear:function(){return t={},Promise.resolve()}}}function o(e){for(var t=e.length-1;t>0;t--){var r=Math.floor(Math.random()*(t+1)),n=e[t];e[t]=e[r],e[r]=n}return e}function h(e,t){return t?(Object.keys(t).forEach((function(r){e[r]=t[r](e)})),e):e}function f(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n0?n:void 0,timeout:r.timeout||t,headers:r.headers||{},queryParameters:r.queryParameters||{},cacheable:r.cacheable}}var d={Read:1,Write:2,Any:3},v=1,p=2,g=3;function y(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:v;return r(r({},e),{},{status:t,lastUpdate:Date.now()})}function R(e){return"string"==typeof e?{protocol:"https",url:e,accept:d.Any}:{protocol:e.protocol||"https",url:e.url,accept:e.accept||d.Any}}var F="GET",b="POST";function P(e,t){return Promise.all(t.map((function(t){return e.get(t,(function(){return Promise.resolve(y(t))}))}))).then((function(e){var r=e.filter((function(e){return function(e){return e.status===v||Date.now()-e.lastUpdate>12e4}(e)})),n=e.filter((function(e){return function(e){return e.status===g&&Date.now()-e.lastUpdate<=12e4}(e)})),i=[].concat(a(r),a(n));return{getTimeout:function(e,t){return(0===n.length&&0===e?1:n.length+3+e)*t},statelessHosts:i.length>0?i.map((function(e){return R(e)})):t}}))}function j(e,t,n,i){var s=[],c=function(e,t){if(e.method!==F&&(void 0!==e.data||void 0!==t.data)){var n=Array.isArray(e.data)?e.data:r(r({},e.data),t.data);return JSON.stringify(n)}}(n,i),u=function(e,t){var n=r(r({},e.headers),t.headers),i={};return Object.keys(n).forEach((function(e){var t=n[e];i[e.toLowerCase()]=t})),i}(e,i),o=n.method,h=n.method!==F?{}:r(r({},n.data),i.data),f=r(r(r({"x-algolia-agent":e.userAgent.value},e.queryParameters),h),i.queryParameters),l=0,m=function t(r,a){var h=r.pop();if(void 0===h)throw{name:"RetryError",message:"Unreachable hosts - your application id may be incorrect. If the error persists, contact support@algolia.com.",transporterStackTrace:O(s)};var m={data:c,headers:u,method:o,url:E(h,n.path,f),connectTimeout:a(l,e.timeouts.connect),responseTimeout:a(l,i.timeout)},d=function(e){var t={request:m,response:e,host:h,triesLeft:r.length};return s.push(t),t},v={onSuccess:function(e){return function(e){try{return JSON.parse(e.content)}catch(t){throw function(e,t){return{name:"DeserializationError",message:e,response:t}}(t.message,e)}}(e)},onRetry:function(n){var i=d(n);return n.isTimedOut&&l++,Promise.all([e.logger.info("Retryable failure",w(i)),e.hostsCache.set(h,y(h,n.isTimedOut?g:p))]).then((function(){return t(r,a)}))},onFail:function(e){throw d(e),function(e,t){var r=e.content,n=e.status,i=r;try{i=JSON.parse(r).message}catch(e){}return function(e,t,r){return{name:"ApiError",message:e,status:t,transporterStackTrace:r}}(i,n,t)}(e,O(s))}};return e.requester.send(m).then((function(e){return function(e,t){return function(e){var t=e.status;return e.isTimedOut||function(e){var t=e.isTimedOut,r=e.status;return!t&&0==~~r}(e)||2!=~~(t/100)&&4!=~~(t/100)}(e)?t.onRetry(e):2==~~(e.status/100)?t.onSuccess(e):t.onFail(e)}(e,v)}))};return P(e.hostsCache,t).then((function(e){return m(a(e.statelessHosts).reverse(),e.getTimeout)}))}function _(e){var t={value:"Algolia for JavaScript (".concat(e,")"),add:function(e){var r="; ".concat(e.segment).concat(void 0!==e.version?" (".concat(e.version,")"):"");return-1===t.value.indexOf(r)&&(t.value="".concat(t.value).concat(r)),t}};return t}function E(e,t,r){var n=x(r),i="".concat(e.protocol,"://").concat(e.url,"/").concat("/"===t.charAt(0)?t.substr(1):t);return n.length&&(i+="?".concat(n)),i}function x(e){return Object.keys(e).map((function(t){return f("%s=%s",t,(r=e[t],"[object Object]"===Object.prototype.toString.call(r)||"[object Array]"===Object.prototype.toString.call(r)?JSON.stringify(e[t]):e[t]));var r})).join("&")}function O(e){return e.map((function(e){return w(e)}))}function w(e){var t=e.request.headers["x-algolia-api-key"]?{"x-algolia-api-key":"*****"}:{};return r(r({},e),{},{request:r(r({},e.request),{},{headers:r(r({},e.request.headers),t)})})}var N=function(e){var t=e.appId,n=function(e,t,r){var n={"x-algolia-api-key":r,"x-algolia-application-id":t};return{headers:function(){return e===l.WithinHeaders?n:{}},queryParameters:function(){return e===l.WithinQueryParameters?n:{}}}}(void 0!==e.authMode?e.authMode:l.WithinHeaders,t,e.apiKey),a=function(e){var t=e.hostsCache,r=e.logger,n=e.requester,a=e.requestsCache,s=e.responsesCache,c=e.timeouts,u=e.userAgent,o=e.hosts,h=e.queryParameters,f={hostsCache:t,logger:r,requester:n,requestsCache:a,responsesCache:s,timeouts:c,userAgent:u,headers:e.headers,queryParameters:h,hosts:o.map((function(e){return R(e)})),read:function(e,t){var r=m(t,f.timeouts.read),n=function(){return j(f,f.hosts.filter((function(e){return 0!=(e.accept&d.Read)})),e,r)};if(!0!==(void 0!==r.cacheable?r.cacheable:e.cacheable))return n();var a={request:e,mappedRequestOptions:r,transporter:{queryParameters:f.queryParameters,headers:f.headers}};return f.responsesCache.get(a,(function(){return f.requestsCache.get(a,(function(){return f.requestsCache.set(a,n()).then((function(e){return Promise.all([f.requestsCache.delete(a),e])}),(function(e){return Promise.all([f.requestsCache.delete(a),Promise.reject(e)])})).then((function(e){var t=i(e,2);return t[0],t[1]}))}))}),{miss:function(e){return f.responsesCache.set(a,e)}})},write:function(e,t){return j(f,f.hosts.filter((function(e){return 0!=(e.accept&d.Write)})),e,m(t,f.timeouts.write))}};return f}(r(r({hosts:[{url:"".concat(t,"-dsn.algolia.net"),accept:d.Read},{url:"".concat(t,".algolia.net"),accept:d.Write}].concat(o([{url:"".concat(t,"-1.algolianet.com")},{url:"".concat(t,"-2.algolianet.com")},{url:"".concat(t,"-3.algolianet.com")}]))},e),{},{headers:r(r(r({},n.headers()),{"content-type":"application/x-www-form-urlencoded"}),e.headers),queryParameters:r(r({},n.queryParameters()),e.queryParameters)}));return h({transporter:a,appId:t,addAlgoliaAgent:function(e,t){a.userAgent.add({segment:e,version:t})},clearCache:function(){return Promise.all([a.requestsCache.clear(),a.responsesCache.clear()]).then((function(){}))}},e.methods)},A=function(e){return function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return h({transporter:e.transporter,appId:e.appId,indexName:t},r.methods)}},H=function(e){return function(t,n){var i=t.map((function(e){return r(r({},e),{},{params:x(e.params||{})})}));return e.transporter.read({method:b,path:"1/indexes/*/queries",data:{requests:i},cacheable:!0},n)}},S=function(e){return function(t,i){return Promise.all(t.map((function(t){var a=t.params,s=a.facetName,c=a.facetQuery,u=n(a,["facetName","facetQuery"]);return A(e)(t.indexName,{methods:{searchForFacetValues:C}}).searchForFacetValues(s,c,r(r({},i),u))})))}},T=function(e){return function(t,r,n){return e.transporter.read({method:b,path:f("1/answers/%s/prediction",e.indexName),data:{query:t,queryLanguages:r},cacheable:!0},n)}},Q=function(e){return function(t,r){return e.transporter.read({method:b,path:f("1/indexes/%s/query",e.indexName),data:{query:t},cacheable:!0},r)}},C=function(e){return function(t,r,n){return e.transporter.read({method:b,path:f("1/indexes/%s/facets/%s/query",e.indexName,t),data:{facetQuery:r},cacheable:!0},n)}},k=1,D=2,I=3;function q(e,t,n){var i,a={appId:e,apiKey:t,timeouts:{connect:1,read:2,write:30},requester:{send:function(e){return new Promise((function(t){var r=new XMLHttpRequest;r.open(e.method,e.url,!0),Object.keys(e.headers).forEach((function(t){return r.setRequestHeader(t,e.headers[t])}));var n,i=function(e,n){return setTimeout((function(){r.abort(),t({status:0,content:n,isTimedOut:!0})}),1e3*e)},a=i(e.connectTimeout,"Connection timeout");r.onreadystatechange=function(){r.readyState>r.OPENED&&void 0===n&&(clearTimeout(a),n=i(e.responseTimeout,"Socket timeout"))},r.onerror=function(){0===r.status&&(clearTimeout(a),clearTimeout(n),t({content:r.responseText||"Network request failed",status:r.status,isTimedOut:!1}))},r.onload=function(){clearTimeout(a),clearTimeout(n),t({content:r.responseText,status:r.status,isTimedOut:!1})},r.send(e.data)}))}},logger:(i=I,{debug:function(e,t){return k>=i&&console.debug(e,t),Promise.resolve()},info:function(e,t){return D>=i&&console.info(e,t),Promise.resolve()},error:function(e,t){return console.error(e,t),Promise.resolve()}}),responsesCache:u(),requestsCache:u({serializable:!1}),hostsCache:c({caches:[s({key:"".concat("4.10.3","-").concat(e)}),u()]}),userAgent:_("4.10.3").add({segment:"Browser",version:"lite"}),authMode:l.WithinQueryParameters};return N(r(r(r({},a),n),{},{methods:{search:H,searchForFacetValues:S,multipleQueries:H,multipleSearchForFacetValues:S,initIndex:function(e){return function(t){return A(e)(t,{methods:{search:Q,searchForFacetValues:C,findAnswers:T}})}}}}))}return q.version="4.10.3",q}()},9343:function(e,t,r){"use strict";r.r(t),r.d(t,{default:function(){return T}});var n=r(7294),i=r(290),a=r.n(i),s=r(8131),c=r.n(s),u=r(6010),o=r(9105),h=r(6742),f=r(412),l=r(941),m=r(2263),d=r(907),v=r(6397),p=r(4328),g=r(4973),y="searchQueryInput_35WP",R="searchVersionInput_3Dkp",F="searchResultsColumn_3okB",b="algoliaLogo_hvIi",P="algoliaLogoPathFill_wnAy",j="searchResultItem_3EK0",_="searchResultItemHeading_3ioS",E="searchResultItemPath_1-7G",x="searchResultItemSummary_17EU",O="searchQueryColumn_22lI",w="searchVersionColumn_1eqi",N="searchLogoColumn_21YU",A="loadingSpinner_EGxz",H="loader_1VUO";var S=function(e){var t=e.docsSearchVersionsHelpers,r=Object.entries(t.allDocsData).filter((function(e){return e[1].versions.length>1}));return n.createElement("div",{className:(0,u.Z)("col","col--3","padding-left--none",w)},r.map((function(e){var i=e[0],a=e[1],s=r.length>1?i+": ":"";return n.createElement("select",{key:i,onChange:function(e){return t.setSearchVersion(i,e.target.value)},defaultValue:t.searchVersions[i],className:R},a.versions.map((function(e,t){return n.createElement("option",{key:t,label:""+s+e.label,value:e.name})})))})))};var T=function(){var e,t,r,i,s,R,w=(0,m.Z)(),T=w.siteConfig.themeConfig.algolia,Q=T.appId,C=T.apiKey,k=T.indexName,D=w.i18n.currentLocale,I=(e=(0,l.c2)().selectMessage,function(t){return e(t,(0,g.I)({id:"theme.SearchPage.documentsFound.plurals",description:'Pluralized label for "{count} documents found". Use as much plural forms (separated by "|") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)',message:"One document found|{count} documents found"},{count:t}))}),q=(t=(0,d._r)(),r=(0,n.useState)((function(){return Object.entries(t).reduce((function(e,t){var r,n=t[0],i=t[1];return Object.assign({},e,((r={})[n]=i.versions[0].name,r))}),{})})),i=r[0],s=r[1],R=Object.values(t).some((function(e){return e.versions.length>1})),{allDocsData:t,versioningEnabled:R,searchVersions:i,setSearchVersion:function(e,t){return s((function(r){var n;return Object.assign({},r,((n={})[e]=t,n))}))}}),L=(0,v.Z)(),V=L.searchValue,B=L.updateSearchPath,z=(0,n.useState)(V),M=z[0],J=z[1],U={items:[],query:null,totalResults:null,totalPages:null,lastPage:null,hasMore:null,loading:null},W=(0,n.useReducer)((function(e,t){var r=t.type,n=t.value;switch(r){case"reset":return U;case"loading":return Object.assign({},e,{loading:!0});case"update":return M!==n.query?e:Object.assign({},n,{items:0===n.lastPage?n.items:e.items.concat(n.items)});case"advance":var i=e.totalPages>e.lastPage+1;return Object.assign({},e,{lastPage:i?e.lastPage+1:e.lastPage,hasMore:i});default:return e}}),U),Z=W[0],K=W[1],G=a()(Q,C),X=c()(G,k,{hitsPerPage:15,advancedSyntax:!0,disjunctiveFacets:["language","docusaurus_tag"]});X.on("result",(function(e){var t=e.results,r=t.query,n=t.hits,i=t.page,a=t.nbHits,s=t.nbPages;if(""!==r&&n instanceof Array){var c=function(e){return e.replace(/algolia-docsearch-suggestion--highlight/g,"search-result-match")},u=n.map((function(e){var t=e.url,r=e._highlightResult.hierarchy,n=e._snippetResult,i=void 0===n?{}:n,a=new URL(t),s=a.pathname,u=a.hash,o=Object.keys(r).map((function(e){return c(r[e].value)}));return{title:o.pop(),url:s+u,summary:i.content?c(i.content.value)+"...":"",breadcrumbs:o}}));K({type:"update",value:{items:u,query:r,totalResults:a,totalPages:s,lastPage:i,hasMore:s>i+1,loading:!1}})}else K({type:"reset"})}));var Y=(0,n.useState)(null),$=Y[0],ee=Y[1],te=(0,n.useRef)(0),re=(0,n.useRef)(f.Z.canUseDOM&&new IntersectionObserver((function(e){var t=e[0],r=t.isIntersecting,n=t.boundingClientRect.y;r&&te.current>n&&K({type:"advance"}),te.current=n}),{threshold:1})),ne=function(){return M?(0,g.I)({id:"theme.SearchPage.existingResultsTitle",message:'Search results for "{query}"',description:"The search page title for non-empty query"},{query:M}):(0,g.I)({id:"theme.SearchPage.emptyResultsTitle",message:"Search the documentation",description:"The search page title for empty query"})},ie=function(e){void 0===e&&(e=0),X.addDisjunctiveFacetRefinement("docusaurus_tag","default"),X.addDisjunctiveFacetRefinement("language",D),Object.entries(q.searchVersions).forEach((function(e){var t=e[0],r=e[1];X.addDisjunctiveFacetRefinement("docusaurus_tag","docs-"+t+"-"+r)})),X.setQuery(M).setPage(e).search()};return(0,n.useEffect)((function(){if($)return re.current.observe($),function(){re.current.unobserve($)}}),[$]),(0,n.useEffect)((function(){B(M),K({type:"reset"}),M&&(K({type:"loading"}),setTimeout((function(){ie()}),300))}),[M,q.searchVersions]),(0,n.useEffect)((function(){Z.lastPage&&0!==Z.lastPage&&ie(Z.lastPage)}),[Z.lastPage]),(0,n.useEffect)((function(){V&&V!==M&&J(V)}),[V]),n.createElement(p.Z,{wrapperClassName:"search-page-wrapper"},n.createElement(o.Z,null,n.createElement("title",null,(0,l.pe)(ne())),n.createElement("meta",{property:"robots",content:"noindex, follow"})),n.createElement("div",{className:"container margin-vert--lg"},n.createElement("h1",null,ne()),n.createElement("form",{className:"row",onSubmit:function(e){return e.preventDefault()}},n.createElement("div",{className:(0,u.Z)("col",O,{"col--9":q.versioningEnabled,"col--12":!q.versioningEnabled})},n.createElement("input",{type:"search",name:"q",className:y,placeholder:(0,g.I)({id:"theme.SearchPage.inputPlaceholder",message:"Type your search here",description:"The placeholder for search page input"}),"aria-label":(0,g.I)({id:"theme.SearchPage.inputLabel",message:"Search",description:"The ARIA label for search page input"}),onChange:function(e){return J(e.target.value)},value:M,autoComplete:"off",autoFocus:!0})),q.versioningEnabled&&n.createElement(S,{docsSearchVersionsHelpers:q})),n.createElement("div",{className:"row"},n.createElement("div",{className:(0,u.Z)("col","col--8",F)},!!Z.totalResults&&I(Z.totalResults)),n.createElement("div",{className:(0,u.Z)("col","col--4","text--right",N)},n.createElement("a",{target:"_blank",rel:"noopener noreferrer",href:"https://www.algolia.com/","aria-label":(0,g.I)({id:"theme.SearchPage.algoliaLabel",message:"Search by Algolia",description:"The ARIA label for Algolia mention"})},n.createElement("svg",{viewBox:"0 0 168 24",className:b},n.createElement("g",{fill:"none"},n.createElement("path",{className:P,d:"M120.925 18.804c-4.386.02-4.386-3.54-4.386-4.106l-.007-13.336 2.675-.424v13.254c0 .322 0 2.358 1.718 2.364v2.248zm-10.846-2.18c.821 0 1.43-.047 1.855-.129v-2.719a6.334 6.334 0 0 0-1.574-.199 5.7 5.7 0 0 0-.897.069 2.699 2.699 0 0 0-.814.24c-.24.116-.439.28-.582.491-.15.212-.219.335-.219.656 0 .628.219.991.616 1.23s.938.362 1.615.362zm-.233-9.7c.883 0 1.629.109 2.231.328.602.218 1.088.525 1.444.915.363.396.609.922.76 1.483.157.56.232 1.175.232 1.85v6.874a32.5 32.5 0 0 1-1.868.314c-.834.123-1.772.185-2.813.185-.69 0-1.327-.069-1.895-.198a4.001 4.001 0 0 1-1.471-.636 3.085 3.085 0 0 1-.951-1.134c-.226-.465-.343-1.12-.343-1.803 0-.656.13-1.073.384-1.525a3.24 3.24 0 0 1 1.047-1.106c.445-.287.95-.492 1.532-.615a8.8 8.8 0 0 1 1.82-.185 8.404 8.404 0 0 1 1.972.24v-.438c0-.307-.035-.6-.11-.874a1.88 1.88 0 0 0-.384-.73 1.784 1.784 0 0 0-.724-.493 3.164 3.164 0 0 0-1.143-.205c-.616 0-1.177.075-1.69.164a7.735 7.735 0 0 0-1.26.307l-.321-2.192c.335-.117.834-.233 1.478-.349a10.98 10.98 0 0 1 2.073-.178zm52.842 9.626c.822 0 1.43-.048 1.854-.13V13.7a6.347 6.347 0 0 0-1.574-.199c-.294 0-.595.021-.896.069a2.7 2.7 0 0 0-.814.24 1.46 1.46 0 0 0-.582.491c-.15.212-.218.335-.218.656 0 .628.218.991.615 1.23.404.245.938.362 1.615.362zm-.226-9.694c.883 0 1.629.108 2.231.327.602.219 1.088.526 1.444.915.355.39.609.923.759 1.483a6.8 6.8 0 0 1 .233 1.852v6.873c-.41.088-1.034.19-1.868.314-.834.123-1.772.184-2.813.184-.69 0-1.327-.068-1.895-.198a4.001 4.001 0 0 1-1.471-.635 3.085 3.085 0 0 1-.951-1.134c-.226-.465-.343-1.12-.343-1.804 0-.656.13-1.073.384-1.524.26-.45.608-.82 1.047-1.107.445-.286.95-.491 1.532-.614a8.803 8.803 0 0 1 2.751-.13c.329.034.671.096 1.04.185v-.437a3.3 3.3 0 0 0-.109-.875 1.873 1.873 0 0 0-.384-.731 1.784 1.784 0 0 0-.724-.492 3.165 3.165 0 0 0-1.143-.205c-.616 0-1.177.075-1.69.164a7.75 7.75 0 0 0-1.26.307l-.321-2.193c.335-.116.834-.232 1.478-.348a11.633 11.633 0 0 1 2.073-.177zm-8.034-1.271a1.626 1.626 0 0 1-1.628-1.62c0-.895.725-1.62 1.628-1.62.904 0 1.63.725 1.63 1.62 0 .895-.733 1.62-1.63 1.62zm1.348 13.22h-2.689V7.27l2.69-.423v11.956zm-4.714 0c-4.386.02-4.386-3.54-4.386-4.107l-.008-13.336 2.676-.424v13.254c0 .322 0 2.358 1.718 2.364v2.248zm-8.698-5.903c0-1.156-.253-2.119-.746-2.788-.493-.677-1.183-1.01-2.067-1.01-.882 0-1.574.333-2.065 1.01-.493.676-.733 1.632-.733 2.788 0 1.168.246 1.953.74 2.63.492.683 1.183 1.018 2.066 1.018.882 0 1.574-.342 2.067-1.019.492-.683.738-1.46.738-2.63zm2.737-.007c0 .902-.13 1.584-.397 2.33a5.52 5.52 0 0 1-1.128 1.906 4.986 4.986 0 0 1-1.752 1.223c-.685.286-1.739.45-2.265.45-.528-.006-1.574-.157-2.252-.45a5.096 5.096 0 0 1-1.744-1.223c-.487-.527-.863-1.162-1.137-1.906a6.345 6.345 0 0 1-.41-2.33c0-.902.123-1.77.397-2.508a5.554 5.554 0 0 1 1.15-1.892 5.133 5.133 0 0 1 1.75-1.216c.679-.287 1.425-.423 2.232-.423.808 0 1.553.142 2.237.423a4.88 4.88 0 0 1 1.753 1.216 5.644 5.644 0 0 1 1.135 1.892c.287.738.431 1.606.431 2.508zm-20.138 0c0 1.12.246 2.363.738 2.882.493.52 1.13.78 1.91.78.424 0 .828-.062 1.204-.178.377-.116.677-.253.917-.417V9.33a10.476 10.476 0 0 0-1.766-.226c-.971-.028-1.71.37-2.23 1.004-.513.636-.773 1.75-.773 2.788zm7.438 5.274c0 1.824-.466 3.156-1.404 4.004-.936.846-2.367 1.27-4.296 1.27-.705 0-2.17-.137-3.34-.396l.431-2.118c.98.205 2.272.26 2.95.26 1.074 0 1.84-.219 2.299-.656.459-.437.684-1.086.684-1.948v-.437a8.07 8.07 0 0 1-1.047.397c-.43.13-.93.198-1.492.198-.739 0-1.41-.116-2.018-.349a4.206 4.206 0 0 1-1.567-1.025c-.431-.45-.774-1.017-1.013-1.694-.24-.677-.363-1.885-.363-2.773 0-.834.13-1.88.384-2.577.26-.696.629-1.298 1.129-1.796.493-.498 1.095-.881 1.8-1.162a6.605 6.605 0 0 1 2.428-.457c.87 0 1.67.109 2.45.24.78.129 1.444.265 1.985.415V18.17zM6.972 6.677v1.627c-.712-.446-1.52-.67-2.425-.67-.585 0-1.045.13-1.38.391a1.24 1.24 0 0 0-.502 1.03c0 .425.164.765.494 1.02.33.256.835.532 1.516.83.447.192.795.356 1.045.495.25.138.537.332.862.582.324.25.563.548.718.894.154.345.23.741.23 1.188 0 .947-.334 1.691-1.004 2.234-.67.542-1.537.814-2.601.814-1.18 0-2.16-.229-2.936-.686v-1.708c.84.628 1.814.942 2.92.942.585 0 1.048-.136 1.388-.407.34-.271.51-.646.51-1.125 0-.287-.1-.55-.302-.79-.203-.24-.42-.42-.655-.542-.234-.123-.585-.29-1.053-.503a61.27 61.27 0 0 1-.582-.271 13.67 13.67 0 0 1-.55-.287 4.275 4.275 0 0 1-.567-.351 6.92 6.92 0 0 1-.455-.4c-.18-.17-.31-.34-.39-.51-.08-.17-.155-.37-.224-.598a2.553 2.553 0 0 1-.104-.742c0-.915.333-1.638.998-2.17.664-.532 1.523-.798 2.576-.798.968 0 1.793.17 2.473.51zm7.468 5.696v-.287c-.022-.607-.187-1.088-.495-1.444-.309-.357-.75-.535-1.324-.535-.532 0-.99.194-1.373.583-.382.388-.622.949-.717 1.683h3.909zm1.005 2.792v1.404c-.596.34-1.383.51-2.362.51-1.255 0-2.255-.377-3-1.132-.744-.755-1.116-1.744-1.116-2.968 0-1.297.34-2.316 1.021-3.055.68-.74 1.548-1.11 2.6-1.11 1.033 0 1.852.323 2.458.966.606.644.91 1.572.91 2.784 0 .33-.033.676-.096 1.038h-5.314c.107.702.405 1.239.894 1.611.49.372 1.106.558 1.85.558.862 0 1.58-.202 2.155-.606zm6.605-1.77h-1.212c-.596 0-1.045.116-1.349.35-.303.234-.454.532-.454.894 0 .372.117.664.35.877.235.213.575.32 1.022.32.51 0 .912-.142 1.204-.424.293-.281.44-.651.44-1.108v-.91zm-4.068-2.554V9.325c.627-.361 1.457-.542 2.489-.542 2.116 0 3.175 1.026 3.175 3.08V17h-1.548v-.957c-.415.68-1.143 1.02-2.186 1.02-.766 0-1.38-.22-1.843-.661-.462-.442-.694-1.003-.694-1.684 0-.776.293-1.38.878-1.81.585-.431 1.404-.647 2.457-.647h1.34V11.8c0-.554-.133-.971-.399-1.253-.266-.282-.707-.423-1.324-.423a4.07 4.07 0 0 0-2.345.718zm9.333-1.93v1.42c.394-1 1.101-1.5 2.123-1.5.148 0 .313.016.494.048v1.531a1.885 1.885 0 0 0-.75-.143c-.542 0-.989.24-1.34.718-.351.479-.527 1.048-.527 1.707V17h-1.563V8.91h1.563zm5.01 4.084c.022.82.272 1.492.75 2.019.479.526 1.15.79 2.01.79.639 0 1.235-.176 1.788-.527v1.404c-.521.319-1.186.479-1.995.479-1.265 0-2.276-.4-3.031-1.197-.755-.798-1.133-1.792-1.133-2.984 0-1.16.38-2.151 1.14-2.975.761-.825 1.79-1.237 3.088-1.237.702 0 1.346.149 1.93.447v1.436a3.242 3.242 0 0 0-1.77-.495c-.84 0-1.513.266-2.019.798-.505.532-.758 1.213-.758 2.042zM40.24 5.72v4.579c.458-1 1.293-1.5 2.505-1.5.787 0 1.42.245 1.899.734.479.49.718 1.17.718 2.042V17h-1.564v-5.106c0-.553-.14-.98-.422-1.284-.282-.303-.652-.455-1.11-.455-.531 0-1.002.202-1.411.606-.41.405-.615 1.022-.615 1.851V17h-1.563V5.72h1.563zm14.966 10.02c.596 0 1.096-.253 1.5-.758.404-.506.606-1.157.606-1.955 0-.915-.202-1.62-.606-2.114-.404-.495-.92-.742-1.548-.742-.553 0-1.05.224-1.491.67-.442.447-.662 1.133-.662 2.058 0 .958.212 1.67.638 2.138.425.469.946.703 1.563.703zM53.004 5.72v4.42c.574-.894 1.388-1.341 2.44-1.341 1.022 0 1.857.383 2.506 1.149.649.766.973 1.781.973 3.047 0 1.138-.309 2.109-.925 2.912-.617.803-1.463 1.205-2.537 1.205-1.075 0-1.894-.447-2.457-1.34V17h-1.58V5.72h1.58zm9.908 11.104l-3.223-7.913h1.739l1.005 2.632 1.26 3.415c.096-.32.48-1.458 1.15-3.415l.909-2.632h1.66l-2.92 7.866c-.777 2.074-1.963 3.11-3.559 3.11a2.92 2.92 0 0 1-.734-.079v-1.34c.17.042.351.064.543.064 1.032 0 1.755-.57 2.17-1.708z"}),n.createElement("path",{fill:"#5468FF",d:"M78.988.938h16.594a2.968 2.968 0 0 1 2.966 2.966V20.5a2.967 2.967 0 0 1-2.966 2.964H78.988a2.967 2.967 0 0 1-2.966-2.964V3.897A2.961 2.961 0 0 1 78.988.938z"}),n.createElement("path",{fill:"white",d:"M89.632 5.967v-.772a.978.978 0 0 0-.978-.977h-2.28a.978.978 0 0 0-.978.977v.793c0 .088.082.15.171.13a7.127 7.127 0 0 1 1.984-.28c.65 0 1.295.088 1.917.259.082.02.164-.04.164-.13m-6.248 1.01l-.39-.389a.977.977 0 0 0-1.382 0l-.465.465a.973.973 0 0 0 0 1.38l.383.383c.062.061.15.047.205-.014.226-.307.472-.601.746-.874.281-.28.568-.526.883-.751.068-.042.075-.137.02-.2m4.16 2.453v3.341c0 .096.104.165.192.117l2.97-1.537c.068-.034.089-.117.055-.184a3.695 3.695 0 0 0-3.08-1.866c-.068 0-.136.054-.136.13m0 8.048a4.489 4.489 0 0 1-4.49-4.482 4.488 4.488 0 0 1 4.49-4.482 4.488 4.488 0 0 1 4.489 4.482 4.484 4.484 0 0 1-4.49 4.482m0-10.85a6.363 6.363 0 1 0 0 12.729 6.37 6.37 0 0 0 6.372-6.368 6.358 6.358 0 0 0-6.371-6.36"})))))),Z.items.length>0?n.createElement("main",null,Z.items.map((function(e,t){var r=e.title,i=e.url,a=e.summary,s=e.breadcrumbs;return n.createElement("article",{key:t,className:j},n.createElement("h2",{className:_},n.createElement(h.Z,{to:i,dangerouslySetInnerHTML:{__html:r}})),s.length>0&&n.createElement("nav",{"aria-label":"breadcrumbs"},n.createElement("ul",{className:(0,u.Z)("breadcrumbs",E)},s.map((function(e,t){return n.createElement("li",{key:t,className:"breadcrumbs__item",dangerouslySetInnerHTML:{__html:e}})})))),a&&n.createElement("p",{className:x,dangerouslySetInnerHTML:{__html:a}}))}))):[M&&!Z.loading&&n.createElement("p",{key:"no-results"},n.createElement(g.Z,{id:"theme.SearchPage.noResultsText",description:"The paragraph for empty search result"},"No results were found")),!!Z.loading&&n.createElement("div",{key:"spinner",className:A})],Z.hasMore&&n.createElement("div",{className:H,ref:ee},n.createElement(g.Z,{id:"theme.SearchPage.fetchingNewResults",description:"The paragraph for fetching new search results"},"Fetching new results..."))))}}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/9343.64683253.js.LICENSE.txt b/handbook/build/assets/js/9343.a3d59083.js.LICENSE.txt similarity index 100% rename from handbook/build/assets/js/9343.64683253.js.LICENSE.txt rename to handbook/build/assets/js/9343.a3d59083.js.LICENSE.txt diff --git a/handbook/build/assets/js/934e2055.046d4285.js b/handbook/build/assets/js/934e2055.046d4285.js new file mode 100644 index 00000000000..17c4a928603 --- /dev/null +++ b/handbook/build/assets/js/934e2055.046d4285.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[4918],{3905:function(e,n,t){t.d(n,{Zo:function(){return c},kt:function(){return u}});var a=t(7294);function i(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function r(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function l(e){for(var n=1;n=0||(i[t]=e[t]);return i}(e,n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(i[t]=e[t])}return i}var p=a.createContext({}),d=function(e){var n=a.useContext(p),t=n;return e&&(t="function"==typeof e?e(n):l(l({},n),e)),t},c=function(e){var n=d(e.components);return a.createElement(p.Provider,{value:n},e.children)},m={inlineCode:"code",wrapper:function(e){var n=e.children;return a.createElement(a.Fragment,{},n)}},s=a.forwardRef((function(e,n){var t=e.components,i=e.mdxType,r=e.originalType,p=e.parentName,c=o(e,["components","mdxType","originalType","parentName"]),s=d(t),u=i,k=s["".concat(p,".").concat(u)]||s[u]||m[u]||r;return t?a.createElement(k,l(l({ref:n},c),{},{components:t})):a.createElement(k,l({ref:n},c))}));function u(e,n){var t=arguments,i=n&&n.mdxType;if("string"==typeof e||i){var r=t.length,l=new Array(r);l[0]=s;var o={};for(var p in n)hasOwnProperty.call(n,p)&&(o[p]=n[p]);o.originalType=e,o.mdxType="string"==typeof e?e:i,l[1]=o;for(var d=2;dIPC",id:"331-\u4ec0\u4e48\u662f-ipc",children:[]},{value:"33.2 \u5b9e\u73b0 IPC \u901a\u4fe1\u65b9\u5f0f",id:"332-\u5b9e\u73b0-ipc-\u901a\u4fe1\u65b9\u5f0f",children:[]},{value:"33.3 IPC \u901a\u4fe1\u6a21\u5f0f",id:"333-ipc-\u901a\u4fe1\u6a21\u5f0f",children:[]},{value:"33.4 \u8fdb\u7a0b\u5185\u901a\u4fe1\uff08\u7ebf\u7a0b\u95f4\uff09",id:"334-\u8fdb\u7a0b\u5185\u901a\u4fe1\uff08\u7ebf\u7a0b\u95f4\uff09",children:[{value:"33.4.1 \u4e86\u89e3 Channel",id:"3341-\u4e86\u89e3-channel",children:[]},{value:"33.4.2 \u5e38\u89c4\u4f7f\u7528",id:"3342-\u5e38\u89c4\u4f7f\u7528",children:[]},{value:"33.4.3 \u5b9e\u73b0\u591a\u8ba2\u9605",id:"3343-\u5b9e\u73b0\u591a\u8ba2\u9605",children:[]},{value:"33.4.4 \u66f4\u591a Channel \u77e5\u8bc6",id:"3344-\u66f4\u591a-channel-\u77e5\u8bc6",children:[]},{value:"33.4.5 CallContext \u65b9\u5f0f",id:"3345-callcontext-\u65b9\u5f0f",children:[]}]},{value:"34.5 \u8fdb\u7a0b\u5916\u901a\u4fe1\uff08\u5171\u4eab\u5185\u5b58\uff09",id:"345-\u8fdb\u7a0b\u5916\u901a\u4fe1\uff08\u5171\u4eab\u5185\u5b58\uff09",children:[]},{value:"33.6 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"336-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],m={toc:c};function s(e){var n=e.components,t=(0,i.Z)(e,l);return(0,r.kt)("wrapper",(0,a.Z)({},m,t,{components:n,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"331-\u4ec0\u4e48\u662f-ipc"},"33.1 \u4ec0\u4e48\u662f ",(0,r.kt)("inlineCode",{parentName:"h2"},"IPC")),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"\u5f15\u7528\u767e\u5ea6\u767e\u79d1"),(0,r.kt)("p",{parentName:"blockquote"},"IPC\uff08Inter-Process Communication\uff0c\u8fdb\u7a0b\u95f4\u901a\u4fe1\uff09\u3002\u8fdb\u7a0b\u95f4\u901a\u4fe1\u662f\u6307\u4e24\u4e2a\u8fdb\u7a0b\u7684\u6570\u636e\u4e4b\u95f4\u4ea7\u751f\u4ea4\u4e92\u3002")),(0,r.kt)("p",null,"\u901a\u4fd7\u70b9\u8bf4\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"IPC")," \u53ef\u4ee5\u5b9e\u73b0\u4e0d\u540c\u5e94\u7528\u7a0b\u5e8f\u95f4\u901a\u4fe1\uff08\u4ea4\u4e92\u6570\u636e\uff09\u3002"),(0,r.kt)("h2",{id:"332-\u5b9e\u73b0-ipc-\u901a\u4fe1\u65b9\u5f0f"},"33.2 \u5b9e\u73b0 ",(0,r.kt)("inlineCode",{parentName:"h2"},"IPC")," \u901a\u4fe1\u65b9\u5f0f"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u534a\u53cc\u5de5 Unix \u7ba1\u9053"),(0,r.kt)("li",{parentName:"ul"},"FIFOs(\u547d\u540d\u7ba1\u9053)"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"\u6d88\u606f\u961f\u5217"),"\uff08\u5e38\u7528\u6a21\u5f0f\uff09"),(0,r.kt)("li",{parentName:"ul"},"\u4fe1\u53f7\u91cf"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"\u5171\u4eab\u5185\u5b58"),"\uff08\u5e38\u7528\u6a21\u5f0f\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"Furion")," \u6846\u67b6\u9ed8\u8ba4\u5b9e\u73b0\u65b9\u5f0f\uff09"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"\u7f51\u7edc Socket"),"\uff08\u5e38\u7528\u6a21\u5f0f\uff09")),(0,r.kt)("h2",{id:"333-ipc-\u901a\u4fe1\u6a21\u5f0f"},"33.3 ",(0,r.kt)("inlineCode",{parentName:"h2"},"IPC")," \u901a\u4fe1\u6a21\u5f0f"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"IPC")," \u672c\u8eab\u6307\u7684\u662f ",(0,r.kt)("inlineCode",{parentName:"p"},"\u8fdb\u7a0b\u95f4")," \u901a\u4fe1\uff0c\u4f46 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u5c06\u5185\u7f6e ",(0,r.kt)("inlineCode",{parentName:"p"},"\u8fdb\u7a0b\u95f4/\u5185")," \u4e24\u79cd\u8fdb\u7a0b\u901a\u4fe1\u6a21\u5f0f\u3002"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"\u8fdb\u7a0b\u5185\u901a\u4fe1"),"\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"Furion")," \u91c7\u7528 ",(0,r.kt)("inlineCode",{parentName:"li"},"Channel")," \u7ba1\u9053\u63d0\u4f9b\u8fdb\u7a0b\u5185\u901a\u4fe1"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"\u8fdb\u7a0b\u5916\u901a\u4fe1"),"\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"Furion")," \u91c7\u7528 ",(0,r.kt)("inlineCode",{parentName:"li"},"MemoryMapperFile")," \u5171\u4eab\u5185\u5b58\u65b9\u5f0f\u5b9e\u73b0\u8fdb\u7a0b\u5916\u901a\u4fe1\uff08\u540e\u7eed\u7248\u672c\u5b8c\u5584\uff09")),(0,r.kt)("h2",{id:"334-\u8fdb\u7a0b\u5185\u901a\u4fe1\uff08\u7ebf\u7a0b\u95f4\uff09"},"33.4 \u8fdb\u7a0b\u5185\u901a\u4fe1\uff08\u7ebf\u7a0b\u95f4\uff09"),(0,r.kt)("p",null,"\u8fdb\u7a0b\u5185\u901a\u4fe1\u4fd7\u79f0\u7ebf\u7a0b\u95f4\u901a\u4fe1\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u91c7\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"C#")," \u63d0\u4f9b\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"Channel\uff08\u7ba1\u9053\uff09")," + ",(0,r.kt)("inlineCode",{parentName:"p"},"Lazy")," + ",(0,r.kt)("inlineCode",{parentName:"p"},"Task.Factory")," \u5b9e\u73b0\u957f\u65f6\u95f4\u9ad8\u6027\u80fd\u7684\u7ebf\u7a0b\u95f4\u901a\u4fe1\u673a\u5236\u3002",(0,r.kt)("inlineCode",{parentName:"p"},"Channel")," \u7ba1\u9053\u4e5f\u662f\u76ee\u524d ",(0,r.kt)("inlineCode",{parentName:"p"},".NET/C#")," \u5b9e\u73b0 ",(0,r.kt)("inlineCode",{parentName:"p"},"\u751f\u4ea7\u8005-\u8ba2\u9605\u8005")," \u6a21\u5f0f\u6700\u7b80\u6613\u4e14\u6700\u4e3a\u5f3a\u5927\u7684\u5b9e\u73b0\u3002"),(0,r.kt)("h3",{id:"3341-\u4e86\u89e3-channel"},"33.4.1 \u4e86\u89e3 ",(0,r.kt)("inlineCode",{parentName:"h3"},"Channel")),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Channel")," \u662f\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},".NET Core 2.1+")," \u7248\u672c\u4e4b\u540e\u52a0\u5165\u3002",(0,r.kt)("inlineCode",{parentName:"p"},"Channel")," \u5e95\u5c42\u5b9e\u73b0\u662f\u4e00\u4e2a\u9ad8\u6548\u7684\u3001\u7ebf\u7a0b\u5b89\u5168\u7684\u961f\u5217\uff0c\u53ef\u4ee5\u5728\u7ebf\u7a0b\u4e4b\u95f4\u4f20\u9012\u6570\u636e\u3002"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Channel")," \u7684\u4e3b\u8981\u5e94\u7528\u573a\u666f\u662f ",(0,r.kt)("inlineCode",{parentName:"p"},"\u53d1\u5e03/\u8ba2\u9605\u3001\u89c2\u5bdf\u8005\u6a21\u5f0f")," \u4e2d\u4f7f\u7528\uff0c\u5982\uff1a",(0,r.kt)("inlineCode",{parentName:"p"},"\u4e8b\u4ef6\u603b\u7ebf")," \u5c31\u662f\u6700\u597d\u7684\u5b9e\u73b0\u65b9\u5f0f\u3002\u901a\u8fc7 ",(0,r.kt)("inlineCode",{parentName:"p"},"Channel")," \u5b9e\u73b0 ",(0,r.kt)("inlineCode",{parentName:"p"},"\u751f\u4ea7-\u6d88\u8d39")," \u673a\u5236\u53ef\u4ee5\u51cf\u5c11\u9879\u76ee\u95f4\u7684\u8026\u5408\uff0c\u63d0\u9ad8\u5e94\u7528\u541e\u5410\u91cf\u3002"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u4e86 ",(0,r.kt)("inlineCode",{parentName:"p"},"ChannelContext")," \u5bc6\u5c01\u7c7b\uff0c\u63d0\u4f9b ",(0,r.kt)("inlineCode",{parentName:"p"},"UnBoundedChannel")," \u548c ",(0,r.kt)("inlineCode",{parentName:"p"},"BoundedChannel")," \u4e24\u79cd\u7ba1\u9053\u901a\u4fe1\u6a21\u5f0f\u3002"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"UnBoundedChannel"),"\uff1a\u5177\u6709\u65e0\u9650\u5bb9\u91cf\u7684 ",(0,r.kt)("inlineCode",{parentName:"li"},"Channel"),", \u751f\u4ea7\u8005\u53ef\u4ee5\u5168\u901f\u8fdb\u884c\u751f\u4ea7\u6570\u636e\uff0c\u4f46\u5982\u679c\u6d88\u8d39\u8005\u7684\u6d88\u8d39\u901f\u5ea6\u4f4e\u4e8e\u751f\u4ea7\u8005\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"Channel")," \u7684\u8d44\u6e90\u4f7f\u7528\u4f1a\u65e0\u9650\u589e\u52a0\uff0c\u4f1a\u6709\u670d\u52a1\u5668\u8d44\u6e90\u8017\u5c3d\u7684\u53ef\u80fd\u3002"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"BoundedChannel"),"\uff1a\u5177\u6709\u6709\u9650\u5bb9\u91cf\u7684 ",(0,r.kt)("inlineCode",{parentName:"li"},"Channel"),"\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"Furion")," \u6846\u67b6\u9ed8\u8ba4\u4e3a ",(0,r.kt)("inlineCode",{parentName:"li"},"1000"),"\uff0c\u5230\u8fbe\u4e0a\u9650\u540e\uff0c\u751f\u4ea7\u8005\u8fdb\u5165\u7b49\u5f85\u5199\u5165\u76f4\u5230\u6709\u7a7a\u95f2\uff0c\u597d\u5904\u662f\u53ef\u4ee5\u63a7\u5236\u751f\u4ea7\u7684\u901f\u5ea6\uff0c\u63a7\u5236\u7cfb\u7edf\u8d44\u6e90\u7684\u4f7f\u7528\u3002",(0,r.kt)("strong",{parentName:"li"},"\uff08\u63a8\u8350\uff09"))),(0,r.kt)("h3",{id:"3342-\u5e38\u89c4\u4f7f\u7528"},"33.4.2 \u5e38\u89c4\u4f7f\u7528"),(0,r.kt)("h4",{id:"\u521b\u5efa-channelhandlertmessage-\u7ba1\u9053\u5904\u7406\u7a0b\u5e8f"},"\u521b\u5efa ",(0,r.kt)("inlineCode",{parentName:"h4"},"ChannelHandler")," \u7ba1\u9053\u5904\u7406\u7a0b\u5e8f"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,10,17}","{1,10,17}":!0},'using Furion.IPCChannel;\nusing System;\nusing System.Threading.Tasks;\n\nnamespace Furion.Core\n{\n /// \n /// \u521b\u5efa\u7ba1\u9053\u5904\u7406\u7a0b\u5e8f\uff08\u5904\u7406 String \u7c7b\u578b\u6d88\u606f\uff09\n /// \n public class MyChannelHandler : ChannelHandler\n {\n /// \n /// \u63a5\u53d7\u5230\u7ba1\u9053\u6d88\u606f\u540e\u5904\u7406\u7a0b\u5e8f\n /// \n /// \n /// \n public override Task InvokeAsync(string message)\n {\n Console.WriteLine(message);\n\n return Task.CompletedTask;\n }\n }\n}\n')),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"note")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},(0,r.kt)("inlineCode",{parentName:"p"}," ChannelHandler")," \u6cdb\u578b\u7c7b\u578b\u51b3\u5b9a\u4e86\u4f60\u8981\u63a5\u53d7\u90a3\u79cd\u7c7b\u578b\u7684\u6d88\u606f\uff0c\u4e0d\u540c\u7c7b\u578b\u6d88\u606f\u5c06\u4f1a\u81ea\u52a8\u8fc7\u6ee4\u7b5b\u9009\u3002"))),(0,r.kt)("h4",{id:"\u4f7f\u7528-channelcontexttmessage-thandler-\u53d1\u9001\u6d88\u606f"},"\u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"h4"},"ChannelContext")," \u53d1\u9001\u6d88\u606f"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{5-6}","{5-6}":!0},'public async Task SendAsync()\n{\n for (int i = 0; i < 100; i++)\n {\n // \u4f7f\u7528\u6709\u9650\u5bb9\u91cf\u751f\u4ea7\u6570\u636e\n await ChannelContext.BoundedChannel.Writer.WriteAsync($"Loop {i} times.");\n }\n}\n')),(0,r.kt)("p",null,"\u4ee5\u4e0a\u4ee3\u7801\u4e5f\u53ef\u4ee5\u901a\u8fc7 ",(0,r.kt)("inlineCode",{parentName:"p"},"ChannelContext.BoundedChannel.Writer.TryWrite()")," \u540c\u6b65\u5199\u5165\u3002"),(0,r.kt)("h3",{id:"3343-\u5b9e\u73b0\u591a\u8ba2\u9605"},"33.4.3 \u5b9e\u73b0\u591a\u8ba2\u9605"),(0,r.kt)("p",null,"\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u521d\u59cb\u5316\u4e86\u4e00\u4e2a\u957f\u65f6\u95f4\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"Task")," \u4efb\u52a1\u8fdb\u884c\u6570\u636e\u68c0\u67e5\u53ca\u8ba2\u9605\uff0c\u5982\u9700\u5b9e\u73b0\u591a\u8ba2\u9605\u6a21\u5f0f\uff0c\u53ef\u521b\u5efa\u65b0\u7684\u8ba2\u9605\u4efb\u52a1\u5373\u53ef\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"var reader = ChannelContext.BoundedChannel.Reader;\n\n// \u521b\u5efa\u957f\u65f6\u95f4\u7ebf\u7a0b\u7ba1\u9053\u8bfb\u53d6\u5668\n_ = Task.Factory.StartNew(async () =>\n {\n while (await reader.WaitToReadAsync())\n {\n if (!reader.TryRead(out var message)) continue;\n // \u9ed8\u8ba4\u91cd\u8bd5 3 \u6b21\uff08\u6bcf\u6b21\u95f4\u9694 1s\uff09\n await Retry.Invoke(async () => await Activator.CreateInstance().InvokeAsync(message), 3, 1000, finalThrow: false);\n }\n }, TaskCreationOptions.LongRunning);\n")),(0,r.kt)("h3",{id:"3344-\u66f4\u591a-channel-\u77e5\u8bc6"},"33.4.4 \u66f4\u591a ",(0,r.kt)("inlineCode",{parentName:"h3"},"Channel")," \u77e5\u8bc6"),(0,r.kt)("p",null,"\u53ef\u67e5\u9605 ",(0,r.kt)("a",{parentName:"p",href:"https://www.cnblogs.com/tiger-wang/p/14068973.html"},"Dotnet Core \u4e0b\u7684 Channel, \u4f60\u7528\u4e86\u5417\uff1f")," \u535a\u5ba2\u6559\u7a0b\uff08\ud83d\ude03 \u5199\u7684\u4e0d\u9519\uff09"),(0,r.kt)("h3",{id:"3345-callcontext-\u65b9\u5f0f"},"33.4.5 ",(0,r.kt)("inlineCode",{parentName:"h3"},"CallContext")," \u65b9\u5f0f"),(0,r.kt)("p",null,"\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion v2.18+")," \u7248\u672c\u63d0\u4f9b\u4e86 ",(0,r.kt)("inlineCode",{parentName:"p"},"CallContext")," \u9759\u6001\u7c7b\uff0c\u5185\u90e8\u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"AsyncLocal")," \u5b9e\u73b0\uff0c\u4e5f\u53ef\u4ee5\u5b9e\u73b0\u7ebf\u7a0b\u95f4\u901a\u4fe1\uff0c\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'CallContext.SetLocalValue("name", "Furion");\nCallContext.GetLocalValue("name");\n\nCallContext.SetLocalValue("count", 1);\nCallContext.GetLocalValue("count");\n')),(0,r.kt)("h2",{id:"345-\u8fdb\u7a0b\u5916\u901a\u4fe1\uff08\u5171\u4eab\u5185\u5b58\uff09"},"34.5 \u8fdb\u7a0b\u5916\u901a\u4fe1\uff08\u5171\u4eab\u5185\u5b58\uff09"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u76ee\u524d\u6682\u672a\u63d0\u4f9b\u7684\u8fdb\u7a0b\u5916\u901a\u4fe1\u529f\u80fd\uff0c\u5c06\u5728\u540e\u7eed\u7248\u672c\u5b9e\u73b0\uff08\u4e3b\u8981\u662f\u6a21\u5757\u8bbe\u8ba1\u8fd8\u672a\u60f3\u597d\uff0c\u6280\u672f\u5df2\u5b9e\u73b0\uff09\u3002"),(0,r.kt)("p",null,"\u4e3b\u8981\u662f\u901a\u8fc7 ",(0,r.kt)("inlineCode",{parentName:"p"},"MemoryMapperFile")," \u5b9e\u73b0\u5171\u4eab\u5185\u5b58\u8fbe\u5230\u8fdb\u7a0b\u5916\u901a\u4fe1\u529f\u80fd\uff0c",(0,r.kt)("a",{parentName:"p",href:"https://docs.microsoft.com/zh-cn/dotnet/api/system.io.memorymappedfiles.memorymappedfile?view=net-5.0"},"\u4e86\u89e3\u66f4\u591a MemoryMapperFile")),(0,r.kt)("h2",{id:"336-\u53cd\u9988\u4e0e\u5efa\u8bae"},"33.6 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,r.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/934e2055.d597fff6.js b/handbook/build/assets/js/934e2055.d597fff6.js deleted file mode 100644 index ddad2658f9b..00000000000 --- a/handbook/build/assets/js/934e2055.d597fff6.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[4918],{3905:function(e,n,t){t.d(n,{Zo:function(){return c},kt:function(){return u}});var a=t(7294);function i(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function r(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function l(e){for(var n=1;n=0||(i[t]=e[t]);return i}(e,n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(i[t]=e[t])}return i}var p=a.createContext({}),d=function(e){var n=a.useContext(p),t=n;return e&&(t="function"==typeof e?e(n):l(l({},n),e)),t},c=function(e){var n=d(e.components);return a.createElement(p.Provider,{value:n},e.children)},m={inlineCode:"code",wrapper:function(e){var n=e.children;return a.createElement(a.Fragment,{},n)}},s=a.forwardRef((function(e,n){var t=e.components,i=e.mdxType,r=e.originalType,p=e.parentName,c=o(e,["components","mdxType","originalType","parentName"]),s=d(t),u=i,k=s["".concat(p,".").concat(u)]||s[u]||m[u]||r;return t?a.createElement(k,l(l({ref:n},c),{},{components:t})):a.createElement(k,l({ref:n},c))}));function u(e,n){var t=arguments,i=n&&n.mdxType;if("string"==typeof e||i){var r=t.length,l=new Array(r);l[0]=s;var o={};for(var p in n)hasOwnProperty.call(n,p)&&(o[p]=n[p]);o.originalType=e,o.mdxType="string"==typeof e?e:i,l[1]=o;for(var d=2;dIPC",id:"331-\u4ec0\u4e48\u662f-ipc",children:[]},{value:"33.2 \u5b9e\u73b0 IPC \u901a\u4fe1\u65b9\u5f0f",id:"332-\u5b9e\u73b0-ipc-\u901a\u4fe1\u65b9\u5f0f",children:[]},{value:"33.3 IPC \u901a\u4fe1\u6a21\u5f0f",id:"333-ipc-\u901a\u4fe1\u6a21\u5f0f",children:[]},{value:"33.4 \u8fdb\u7a0b\u5185\u901a\u4fe1\uff08\u7ebf\u7a0b\u95f4\uff09",id:"334-\u8fdb\u7a0b\u5185\u901a\u4fe1\uff08\u7ebf\u7a0b\u95f4\uff09",children:[{value:"33.4.1 \u4e86\u89e3 Channel",id:"3341-\u4e86\u89e3-channel",children:[]},{value:"33.4.2 \u5e38\u89c4\u4f7f\u7528",id:"3342-\u5e38\u89c4\u4f7f\u7528",children:[]},{value:"33.4.3 \u5b9e\u73b0\u591a\u8ba2\u9605",id:"3343-\u5b9e\u73b0\u591a\u8ba2\u9605",children:[]},{value:"33.4.4 \u66f4\u591a Channel \u77e5\u8bc6",id:"3344-\u66f4\u591a-channel-\u77e5\u8bc6",children:[]},{value:"33.4.5 CallContext \u65b9\u5f0f",id:"3345-callcontext-\u65b9\u5f0f",children:[]}]},{value:"34.5 \u8fdb\u7a0b\u5916\u901a\u4fe1\uff08\u5171\u4eab\u5185\u5b58\uff09",id:"345-\u8fdb\u7a0b\u5916\u901a\u4fe1\uff08\u5171\u4eab\u5185\u5b58\uff09",children:[]},{value:"33.6 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"336-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],m={toc:c};function s(e){var n=e.components,t=(0,i.Z)(e,l);return(0,r.kt)("wrapper",(0,a.Z)({},m,t,{components:n,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"331-\u4ec0\u4e48\u662f-ipc"},"33.1 \u4ec0\u4e48\u662f ",(0,r.kt)("inlineCode",{parentName:"h2"},"IPC")),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"\u5f15\u7528\u767e\u5ea6\u767e\u79d1"),(0,r.kt)("p",{parentName:"blockquote"},"IPC\uff08Inter-Process Communication\uff0c\u8fdb\u7a0b\u95f4\u901a\u4fe1\uff09\u3002\u8fdb\u7a0b\u95f4\u901a\u4fe1\u662f\u6307\u4e24\u4e2a\u8fdb\u7a0b\u7684\u6570\u636e\u4e4b\u95f4\u4ea7\u751f\u4ea4\u4e92\u3002")),(0,r.kt)("p",null,"\u901a\u4fd7\u70b9\u8bf4\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"IPC")," \u53ef\u4ee5\u5b9e\u73b0\u4e0d\u540c\u5e94\u7528\u7a0b\u5e8f\u95f4\u901a\u4fe1\uff08\u4ea4\u4e92\u6570\u636e\uff09\u3002"),(0,r.kt)("h2",{id:"332-\u5b9e\u73b0-ipc-\u901a\u4fe1\u65b9\u5f0f"},"33.2 \u5b9e\u73b0 ",(0,r.kt)("inlineCode",{parentName:"h2"},"IPC")," \u901a\u4fe1\u65b9\u5f0f"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u534a\u53cc\u5de5 Unix \u7ba1\u9053"),(0,r.kt)("li",{parentName:"ul"},"FIFOs(\u547d\u540d\u7ba1\u9053)"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"\u6d88\u606f\u961f\u5217"),"\uff08\u5e38\u7528\u6a21\u5f0f\uff09"),(0,r.kt)("li",{parentName:"ul"},"\u4fe1\u53f7\u91cf"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"\u5171\u4eab\u5185\u5b58"),"\uff08\u5e38\u7528\u6a21\u5f0f\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"Furion")," \u6846\u67b6\u9ed8\u8ba4\u5b9e\u73b0\u65b9\u5f0f\uff09"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"\u7f51\u7edc Socket"),"\uff08\u5e38\u7528\u6a21\u5f0f\uff09")),(0,r.kt)("h2",{id:"333-ipc-\u901a\u4fe1\u6a21\u5f0f"},"33.3 ",(0,r.kt)("inlineCode",{parentName:"h2"},"IPC")," \u901a\u4fe1\u6a21\u5f0f"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"IPC")," \u672c\u8eab\u6307\u7684\u662f ",(0,r.kt)("inlineCode",{parentName:"p"},"\u8fdb\u7a0b\u95f4")," \u901a\u4fe1\uff0c\u4f46 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u5c06\u5185\u7f6e ",(0,r.kt)("inlineCode",{parentName:"p"},"\u8fdb\u7a0b\u95f4/\u5185")," \u4e24\u79cd\u8fdb\u7a0b\u901a\u4fe1\u6a21\u5f0f\u3002"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"\u8fdb\u7a0b\u5185\u901a\u4fe1"),"\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"Furion")," \u91c7\u7528 ",(0,r.kt)("inlineCode",{parentName:"li"},"Channel")," \u7ba1\u9053\u63d0\u4f9b\u8fdb\u7a0b\u5185\u901a\u4fe1"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"\u8fdb\u7a0b\u5916\u901a\u4fe1"),"\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"Furion")," \u91c7\u7528 ",(0,r.kt)("inlineCode",{parentName:"li"},"MemoryMapperFile")," \u5171\u4eab\u5185\u5b58\u65b9\u5f0f\u5b9e\u73b0\u8fdb\u7a0b\u5916\u901a\u4fe1\uff08\u540e\u7eed\u7248\u672c\u5b8c\u5584\uff09")),(0,r.kt)("h2",{id:"334-\u8fdb\u7a0b\u5185\u901a\u4fe1\uff08\u7ebf\u7a0b\u95f4\uff09"},"33.4 \u8fdb\u7a0b\u5185\u901a\u4fe1\uff08\u7ebf\u7a0b\u95f4\uff09"),(0,r.kt)("p",null,"\u8fdb\u7a0b\u5185\u901a\u4fe1\u4fd7\u79f0\u7ebf\u7a0b\u95f4\u901a\u4fe1\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u91c7\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"C#")," \u63d0\u4f9b\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"Channel\uff08\u7ba1\u9053\uff09")," + ",(0,r.kt)("inlineCode",{parentName:"p"},"Lazy")," + ",(0,r.kt)("inlineCode",{parentName:"p"},"Task.Factory")," \u5b9e\u73b0\u957f\u65f6\u95f4\u9ad8\u6027\u80fd\u7684\u7ebf\u7a0b\u95f4\u901a\u4fe1\u673a\u5236\u3002",(0,r.kt)("inlineCode",{parentName:"p"},"Channel")," \u7ba1\u9053\u4e5f\u662f\u76ee\u524d ",(0,r.kt)("inlineCode",{parentName:"p"},".NET/C#")," \u5b9e\u73b0 ",(0,r.kt)("inlineCode",{parentName:"p"},"\u751f\u4ea7\u8005-\u8ba2\u9605\u8005")," \u6a21\u5f0f\u6700\u7b80\u6613\u4e14\u6700\u4e3a\u5f3a\u5927\u7684\u5b9e\u73b0\u3002"),(0,r.kt)("h3",{id:"3341-\u4e86\u89e3-channel"},"33.4.1 \u4e86\u89e3 ",(0,r.kt)("inlineCode",{parentName:"h3"},"Channel")),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Channel")," \u662f\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},".NET Core 2.1+")," \u7248\u672c\u4e4b\u540e\u52a0\u5165\u3002",(0,r.kt)("inlineCode",{parentName:"p"},"Channel")," \u5e95\u5c42\u5b9e\u73b0\u662f\u4e00\u4e2a\u9ad8\u6548\u7684\u3001\u7ebf\u7a0b\u5b89\u5168\u7684\u961f\u5217\uff0c\u53ef\u4ee5\u5728\u7ebf\u7a0b\u4e4b\u95f4\u4f20\u9012\u6570\u636e\u3002"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Channel")," \u7684\u4e3b\u8981\u5e94\u7528\u573a\u666f\u662f ",(0,r.kt)("inlineCode",{parentName:"p"},"\u53d1\u5e03/\u8ba2\u9605\u3001\u89c2\u5bdf\u8005\u6a21\u5f0f")," \u4e2d\u4f7f\u7528\uff0c\u5982\uff1a",(0,r.kt)("inlineCode",{parentName:"p"},"\u4e8b\u4ef6\u603b\u7ebf")," \u5c31\u662f\u6700\u597d\u7684\u5b9e\u73b0\u65b9\u5f0f\u3002\u901a\u8fc7 ",(0,r.kt)("inlineCode",{parentName:"p"},"Channel")," \u5b9e\u73b0 ",(0,r.kt)("inlineCode",{parentName:"p"},"\u751f\u4ea7-\u6d88\u8d39")," \u673a\u5236\u53ef\u4ee5\u51cf\u5c11\u9879\u76ee\u95f4\u7684\u8026\u5408\uff0c\u63d0\u9ad8\u5e94\u7528\u541e\u5410\u91cf\u3002"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u4e86 ",(0,r.kt)("inlineCode",{parentName:"p"},"ChannelContext")," \u5bc6\u5c01\u7c7b\uff0c\u63d0\u4f9b ",(0,r.kt)("inlineCode",{parentName:"p"},"UnBoundedChannel")," \u548c ",(0,r.kt)("inlineCode",{parentName:"p"},"BoundedChannel")," \u4e24\u79cd\u7ba1\u9053\u901a\u4fe1\u6a21\u5f0f\u3002"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"UnBoundedChannel"),"\uff1a\u5177\u6709\u65e0\u9650\u5bb9\u91cf\u7684 ",(0,r.kt)("inlineCode",{parentName:"li"},"Channel"),", \u751f\u4ea7\u8005\u53ef\u4ee5\u5168\u901f\u8fdb\u884c\u751f\u4ea7\u6570\u636e\uff0c\u4f46\u5982\u679c\u6d88\u8d39\u8005\u7684\u6d88\u8d39\u901f\u5ea6\u4f4e\u4e8e\u751f\u4ea7\u8005\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"Channel")," \u7684\u8d44\u6e90\u4f7f\u7528\u4f1a\u65e0\u9650\u589e\u52a0\uff0c\u4f1a\u6709\u670d\u52a1\u5668\u8d44\u6e90\u8017\u5c3d\u7684\u53ef\u80fd\u3002"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"BoundedChannel"),"\uff1a\u5177\u6709\u6709\u9650\u5bb9\u91cf\u7684 ",(0,r.kt)("inlineCode",{parentName:"li"},"Channel"),"\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"Furion")," \u6846\u67b6\u9ed8\u8ba4\u4e3a ",(0,r.kt)("inlineCode",{parentName:"li"},"1000"),"\uff0c\u5230\u8fbe\u4e0a\u9650\u540e\uff0c\u751f\u4ea7\u8005\u8fdb\u5165\u7b49\u5f85\u5199\u5165\u76f4\u5230\u6709\u7a7a\u95f2\uff0c\u597d\u5904\u662f\u53ef\u4ee5\u63a7\u5236\u751f\u4ea7\u7684\u901f\u5ea6\uff0c\u63a7\u5236\u7cfb\u7edf\u8d44\u6e90\u7684\u4f7f\u7528\u3002",(0,r.kt)("strong",{parentName:"li"},"\uff08\u63a8\u8350\uff09"))),(0,r.kt)("h3",{id:"3342-\u5e38\u89c4\u4f7f\u7528"},"33.4.2 \u5e38\u89c4\u4f7f\u7528"),(0,r.kt)("h4",{id:"\u521b\u5efa-channelhandlertmessage-\u7ba1\u9053\u5904\u7406\u7a0b\u5e8f"},"\u521b\u5efa ",(0,r.kt)("inlineCode",{parentName:"h4"},"ChannelHandler")," \u7ba1\u9053\u5904\u7406\u7a0b\u5e8f"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,10,17}","{1,10,17}":!0},'using Furion.IPCChannel;\nusing System;\nusing System.Threading.Tasks;\n\nnamespace Furion.Core\n{\n /// \n /// \u521b\u5efa\u7ba1\u9053\u5904\u7406\u7a0b\u5e8f\uff08\u5904\u7406 String \u7c7b\u578b\u6d88\u606f\uff09\n /// \n public class MyChannelHandler : ChannelHandler\n {\n /// \n /// \u63a5\u53d7\u5230\u7ba1\u9053\u6d88\u606f\u540e\u5904\u7406\u7a0b\u5e8f\n /// \n /// \n /// \n public override Task InvokeAsync(string message)\n {\n Console.WriteLine(message);\n\n return Task.CompletedTask;\n }\n }\n}\n')),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"note")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},(0,r.kt)("inlineCode",{parentName:"p"}," ChannelHandler")," \u6cdb\u578b\u7c7b\u578b\u51b3\u5b9a\u4e86\u4f60\u8981\u63a5\u53d7\u90a3\u79cd\u7c7b\u578b\u7684\u6d88\u606f\uff0c\u4e0d\u540c\u7c7b\u578b\u6d88\u606f\u5c06\u4f1a\u81ea\u52a8\u8fc7\u6ee4\u7b5b\u9009\u3002"))),(0,r.kt)("h4",{id:"\u4f7f\u7528-channelcontexttmessage-thandler-\u53d1\u9001\u6d88\u606f"},"\u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"h4"},"ChannelContext")," \u53d1\u9001\u6d88\u606f"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{5-6}","{5-6}":!0},'public async Task SendAsync()\n{\n for (int i = 0; i < 100; i++)\n {\n // \u4f7f\u7528\u6709\u9650\u5bb9\u91cf\u751f\u4ea7\u6570\u636e\n await ChannelContext.BoundedChannel.Writer.WriteAsync($"Loop {i} times.");\n }\n}\n')),(0,r.kt)("p",null,"\u4ee5\u4e0a\u4ee3\u7801\u4e5f\u53ef\u4ee5\u901a\u8fc7 ",(0,r.kt)("inlineCode",{parentName:"p"},"ChannelContext.BoundedChannel.Writer.TryWrite()")," \u540c\u6b65\u5199\u5165\u3002"),(0,r.kt)("h3",{id:"3343-\u5b9e\u73b0\u591a\u8ba2\u9605"},"33.4.3 \u5b9e\u73b0\u591a\u8ba2\u9605"),(0,r.kt)("p",null,"\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u521d\u59cb\u5316\u4e86\u4e00\u4e2a\u957f\u65f6\u95f4\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"Task")," \u4efb\u52a1\u8fdb\u884c\u6570\u636e\u68c0\u67e5\u53ca\u8ba2\u9605\uff0c\u5982\u9700\u5b9e\u73b0\u591a\u8ba2\u9605\u6a21\u5f0f\uff0c\u53ef\u521b\u5efa\u65b0\u7684\u8ba2\u9605\u4efb\u52a1\u5373\u53ef\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"var reader = ChannelContext.BoundedChannel.Reader;\n\n// \u521b\u5efa\u957f\u65f6\u95f4\u7ebf\u7a0b\u7ba1\u9053\u8bfb\u53d6\u5668\n_ = Task.Factory.StartNew(async () =>\n {\n while (await reader.WaitToReadAsync())\n {\n if (!reader.TryRead(out var message)) continue;\n // \u9ed8\u8ba4\u91cd\u8bd5 3 \u6b21\uff08\u6bcf\u6b21\u95f4\u9694 1s\uff09\n await Retry.Invoke(async () => await Activator.CreateInstance().InvokeAsync(message), 3, 1000, finalThrow: false);\n }\n }, TaskCreationOptions.LongRunning);\n")),(0,r.kt)("h3",{id:"3344-\u66f4\u591a-channel-\u77e5\u8bc6"},"33.4.4 \u66f4\u591a ",(0,r.kt)("inlineCode",{parentName:"h3"},"Channel")," \u77e5\u8bc6"),(0,r.kt)("p",null,"\u53ef\u67e5\u9605 ",(0,r.kt)("a",{parentName:"p",href:"https://www.cnblogs.com/tiger-wang/p/14068973.html"},"Dotnet Core \u4e0b\u7684 Channel, \u4f60\u7528\u4e86\u5417\uff1f")," \u535a\u5ba2\u6559\u7a0b\uff08\ud83d\ude03 \u5199\u7684\u4e0d\u9519\uff09"),(0,r.kt)("h3",{id:"3345-callcontext-\u65b9\u5f0f"},"33.4.5 ",(0,r.kt)("inlineCode",{parentName:"h3"},"CallContext")," \u65b9\u5f0f"),(0,r.kt)("p",null,"\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion v2.18+")," \u7248\u672c\u63d0\u4f9b\u4e86 ",(0,r.kt)("inlineCode",{parentName:"p"},"CallContext")," \u9759\u6001\u7c7b\uff0c\u5185\u90e8\u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"AsyncLocal")," \u5b9e\u73b0\uff0c\u4e5f\u53ef\u4ee5\u5b9e\u73b0\u7ebf\u7a0b\u95f4\u901a\u4fe1\uff0c\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'CallContext.SetLocalValue("name", "Furion");\nCallContext.GetLocalValue("name");\n\nCallContext.SetLocalValue("count", 1);\nCallContext.GetLocalValue("count");\n')),(0,r.kt)("h2",{id:"345-\u8fdb\u7a0b\u5916\u901a\u4fe1\uff08\u5171\u4eab\u5185\u5b58\uff09"},"34.5 \u8fdb\u7a0b\u5916\u901a\u4fe1\uff08\u5171\u4eab\u5185\u5b58\uff09"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u76ee\u524d\u6682\u672a\u63d0\u4f9b\u7684\u8fdb\u7a0b\u5916\u901a\u4fe1\u529f\u80fd\uff0c\u5c06\u5728\u540e\u7eed\u7248\u672c\u5b9e\u73b0\uff08\u4e3b\u8981\u662f\u6a21\u5757\u8bbe\u8ba1\u8fd8\u672a\u60f3\u597d\uff0c\u6280\u672f\u5df2\u5b9e\u73b0\uff09\u3002"),(0,r.kt)("p",null,"\u4e3b\u8981\u662f\u901a\u8fc7 ",(0,r.kt)("inlineCode",{parentName:"p"},"MemoryMapperFile")," \u5b9e\u73b0\u5171\u4eab\u5185\u5b58\u8fbe\u5230\u8fdb\u7a0b\u5916\u901a\u4fe1\u529f\u80fd\uff0c",(0,r.kt)("a",{parentName:"p",href:"https://docs.microsoft.com/zh-cn/dotnet/api/system.io.memorymappedfiles.memorymappedfile?view=net-5.0"},"\u4e86\u89e3\u66f4\u591a MemoryMapperFile")),(0,r.kt)("h2",{id:"336-\u53cd\u9988\u4e0e\u5efa\u8bae"},"33.6 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,r.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/935f2afb.140eac2c.js b/handbook/build/assets/js/935f2afb.140eac2c.js deleted file mode 100644 index cdd41f1db8b..00000000000 --- a/handbook/build/assets/js/935f2afb.140eac2c.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[53],{1109:function(e){e.exports=JSON.parse('{"pluginId":"default","version":"current","label":"Next","banner":"none","isLast":true,"docsSidebars":{"docs":[{"type":"category","label":"1. \u5e8f\u8a00","items":[{"type":"link","label":"1.1 \u4ecb\u7ecd","href":"/furion/docs/"},{"type":"link","label":"1.2 \u5173\u4e8e\u4f5c\u8005","href":"/furion/docs/author"},{"type":"link","label":"1.3 \u793a\u4f8b\u67b6\u6784\u8bf4\u660e","href":"/furion/docs/source"},{"type":"link","label":"1.4 \u6846\u67b6\u6848\u4f8b","href":"/furion/docs/case"},{"type":"link","label":"1.5 \u652f\u6301 Furion","href":"/furion/docs/donate"},{"type":"link","label":"1.6 \u66f4\u65b0\u65e5\u5fd7","href":"/furion/docs/upgrade"},{"type":"link","label":"1.7 \u53d1\u5c55\u5927\u4e8b\u8bb0","href":"/furion/docs/course"}],"collapsible":true,"collapsed":true},{"type":"category","label":"2. \u5165\u95e8\u6307\u5357","items":[{"type":"link","label":"2.1 \u4e00\u5206\u949f\u4e0a\u624b","href":"/furion/docs/get-start"},{"type":"link","label":"2.2 \u5b98\u65b9\u811a\u624b\u67b6","href":"/furion/docs/template"},{"type":"link","label":"2.3 \u624b\u52a8\u642d\u5efa\u5206\u5c42","href":"/furion/docs/reference"},{"type":"link","label":"2.4 \u795e\u5947\u7684 Inject","href":"/furion/docs/inject"}],"collapsible":true,"collapsed":true},{"type":"link","label":"3. \u5e94\u7528\u542f\u52a8 Startup","href":"/furion/docs/appstartup"},{"type":"category","label":"4. \u914d\u7f6e\u4e0e\u9009\u9879","items":[{"type":"link","label":"4.1 \u914d\u7f6e","href":"/furion/docs/configuration"},{"type":"link","label":"4.2 \u9009\u9879","href":"/furion/docs/options"}],"collapsible":true,"collapsed":true},{"type":"link","label":"5. \u52a8\u6001 WebAPI","href":"/furion/docs/dynamic-api-controller"},{"type":"link","label":"6. \u89c4\u8303\u5316\u63a5\u53e3\u6587\u6863 (Swagger)","href":"/furion/docs/specification-document"},{"type":"link","label":"7. \u53cb\u597d\u5f02\u5e38\u5904\u7406","href":"/furion/docs/friendly-exception"},{"type":"link","label":"8. \u6570\u636e\u6821\u9a8c","href":"/furion/docs/data-validation"},{"type":"category","label":"9. \u6570\u636e\u5e93\u64cd\u4f5c\u6307\u5357\uff08EFCore\uff09","items":[{"type":"link","label":"9.0 \u5165\u95e8\u7b80\u8981 \u2728","href":"/furion/docs/dbcontext-start"},{"type":"link","label":"9.1 \u6570\u636e\u5e93\u4e0a\u4e0b\u6587","href":"/furion/docs/dbcontext"},{"type":"link","label":"9.2 \u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u5b9a\u4f4d\u5668","href":"/furion/docs/dbcontext-locator"},{"type":"link","label":"9.3 \u6570\u636e\u5e93\u5b9e\u4f53","href":"/furion/docs/entity"},{"type":"link","label":"9.4 \u4ed3\u50a8\u6a21\u5f0f (Repository)","href":"/furion/docs/dbcontext-repository"},{"type":"link","label":"9.5 \u65b0\u589e\u64cd\u4f5c","href":"/furion/docs/dbcontext-add"},{"type":"link","label":"9.6 \u66f4\u65b0\u64cd\u4f5c","href":"/furion/docs/dbcontext-update"},{"type":"link","label":"9.7 \u65b0\u589e\u6216\u66f4\u65b0\u64cd\u4f5c","href":"/furion/docs/dbcontext-add-or-update"},{"type":"link","label":"9.8 \u5220\u9664\u64cd\u4f5c","href":"/furion/docs/dbcontext-delete"},{"type":"link","label":"9.9 \u6279\u91cf\u64cd\u4f5c","href":"/furion/docs/dbcontext-batch"},{"type":"link","label":"9.10 \u67e5\u8be2\u64cd\u4f5c","href":"/furion/docs/dbcontext-query"},{"type":"link","label":"9.11 \u9ad8\u7ea7\u67e5\u8be2\u64cd\u4f5c","href":"/furion/docs/dbcontext-hight-query"},{"type":"link","label":"9.12 \u89c6\u56fe\u64cd\u4f5c","href":"/furion/docs/dbcontext-view"},{"type":"link","label":"9.13 \u5b58\u50a8\u8fc7\u7a0b\u64cd\u4f5c","href":"/furion/docs/dbcontext-proc"},{"type":"link","label":"9.14 \u51fd\u6570\u64cd\u4f5c","href":"/furion/docs/dbcontext-function"},{"type":"link","label":"9.15 Sql \u64cd\u4f5c","href":"/furion/docs/dbcontext-sql"},{"type":"link","label":"9.16 Sql \u6a21\u677f","href":"/furion/docs/dbcontext-sql-template"},{"type":"link","label":"9.17 Sql \u9ad8\u7ea7\u4ee3\u7406","href":"/furion/docs/dbcontext-sql-proxy"},{"type":"link","label":"9.18 \u591a\u79cd\u6570\u636e\u5e93\u64cd\u4f5c \u2728","href":"/furion/docs/dbcontext-multi-database"},{"type":"link","label":"9.19 \u6570\u636e\u5e93\u751f\u6210\u6a21\u578b (Db First)","href":"/furion/docs/dbcontext-db-first"},{"type":"link","label":"9.20 \u6a21\u578b\u751f\u6210\u6570\u636e\u5e93 (Code First)","href":"/furion/docs/dbcontext-code-first"},{"type":"link","label":"9.21 \u5b9e\u4f53\u79cd\u5b50\u6570\u636e","href":"/furion/docs/dbcontext-seed-data"},{"type":"link","label":"9.22 \u5ba1\u8ba1\u65e5\u5fd7 (Audit)","href":"/furion/docs/dbcontext-audit"},{"type":"link","label":"9.23 \u5b9e\u4f53/\u5168\u5c40\u67e5\u8be2\u7b5b\u9009\u5668","href":"/furion/docs/dbcontext-filter"},{"type":"link","label":"9.24 \u6570\u636e\u5e93\u64cd\u4f5c\u62e6\u622a\u5668","href":"/furion/docs/dbcontext-Interceptor"},{"type":"link","label":"9.25. \u5b9e\u4f53\u6570\u636e\u76d1\u542c\u5668","href":"/furion/docs/dbcontext-entitytrigger"},{"type":"link","label":"9.26 \u4e8b\u52a1\u548c\u5de5\u4f5c\u5355\u5143 (UnitOfWork)","href":"/furion/docs/tran"},{"type":"link","label":"9.27 \u8bfb\u5199\u5206\u79bb/\u4e3b\u4ece\u590d\u5236","href":"/furion/docs/dbcontext-read-write"},{"type":"link","label":"9.28 \u5206\u8868\u5206\u5e93","href":"/furion/docs/split-db"},{"type":"link","label":"9.29 EFCore \u6700\u4f73\u5b9e\u8df5","href":"/furion/docs/efcore-recommend"}],"collapsible":true,"collapsed":true},{"type":"category","label":"10. SqlSugar \u6216\u5176\u4ed6 ORM","items":[{"type":"link","label":"10.1. SqlSugar \u96c6\u6210","href":"/furion/docs/sqlsugar"},{"type":"link","label":"10.2. Dapper \u96c6\u6210","href":"/furion/docs/dapper"},{"type":"link","label":"10.3. MongoDB \u64cd\u4f5c","href":"/furion/docs/mongodb"}],"collapsible":true,"collapsed":true},{"type":"link","label":"11. SaaS \u591a\u79df\u6237","href":"/furion/docs/saas"},{"type":"link","label":"12. \u4f9d\u8d56\u6ce8\u5165/\u63a7\u5236\u53cd\u8f6c","href":"/furion/docs/dependency-injection"},{"type":"link","label":"13. \u5bf9\u8c61\u6570\u636e\u6620\u5c04 Mapper","href":"/furion/docs/object-mapper"},{"type":"link","label":"14. \u5206\u5e03\u5f0f\u7f13\u5b58","href":"/furion/docs/cache"},{"type":"link","label":"15. \u5b89\u5168\u9274\u6743","href":"/furion/docs/auth-control"},{"type":"link","label":"16. CORS \u8de8\u57df","href":"/furion/docs/cors"},{"type":"link","label":"17. \u89c6\u56fe\u5f15\u64ce","href":"/furion/docs/view-engine"},{"type":"link","label":"18. \u65e5\u5fd7\u8bb0\u5f55","href":"/furion/docs/logging"},{"type":"link","label":"19. \u8fdc\u7a0b\u8bf7\u6c42 (HttpClient)","href":"/furion/docs/http"},{"type":"link","label":"20. \u6570\u636e\u52a0\u89e3\u5bc6","href":"/furion/docs/encryption"},{"type":"link","label":"21. \u5168\u7403\u5316\u548c\u672c\u5730\u5316\uff08\u591a\u8bed\u8a00\uff09","href":"/furion/docs/local-language"},{"type":"link","label":"22. \u4e8b\u4ef6\u603b\u7ebf","href":"/furion/docs/event-bus"},{"type":"link","label":"23. JSON \u5e8f\u5217\u5316","href":"/furion/docs/json-serialization"},{"type":"link","label":"24. \u5373\u65f6\u901a\u8baf","href":"/furion/docs/signalr"},{"type":"link","label":"25. \u8f85\u52a9\u89d2\u8272\u670d\u52a1 (Worker Service)","href":"/furion/docs/process-service"},{"type":"link","label":"26. \u5b9a\u65f6\u4efb\u52a1/\u540e\u53f0\u4efb\u52a1","href":"/furion/docs/job"},{"type":"link","label":"27. \u5206\u5e03\u5f0f ID \u751f\u6210","href":"/furion/docs/idgenerator"},{"type":"link","label":"28. \u6a21\u5757\u5316\u5f00\u53d1","href":"/furion/docs/module-dev"},{"type":"link","label":"29. \u7c98\u571f\u5bf9\u8c61","href":"/furion/docs/clayobj"},{"type":"link","label":"30. \u8131\u654f\u5904\u7406","href":"/furion/docs/sensitive-detection"},{"type":"link","label":"31. \u865a\u62df\u6587\u4ef6\u7cfb\u7edf","href":"/furion/docs/file-provider"},{"type":"link","label":"32. \u4f1a\u8bdd\u548c\u72b6\u6001\u7ba1\u7406","href":"/furion/docs/sesssion-state"},{"type":"link","label":"33. IPC \u8fdb\u7a0b\u901a\u4fe1","href":"/furion/docs/ipc"},{"type":"category","label":"34. \u6258\u7ba1\u90e8\u7f72","items":[{"type":"link","label":"34.1 \u5728 IIS \u90e8\u7f72","href":"/furion/docs/deploy-iis"},{"type":"link","label":"34.2 \u5728 Docker \u90e8\u7f72","href":"/furion/docs/deploy-docker"},{"type":"link","label":"34.3 \u5728 Nginx \u90e8\u7f72","href":"/furion/docs/deploy-nginx"},{"type":"link","label":"34.4 \u4e8c\u7ea7\u865a\u62df\u76ee\u5f55\u90e8\u7f72","href":"/furion/docs/virtual-deploy"}],"collapsible":true,"collapsed":true},{"type":"category","label":"35. \u6301\u7eed\u90e8\u7f72\u96c6\u6210","items":[{"type":"link","label":"35.1 Docker \u73af\u5883\u6301\u7eed\u90e8\u7f72","href":"/furion/docs/deploy-docker-auto"},{"type":"link","label":"35.2 \u6301\u7eed\u90e8\u7f72\u96c6\u6210","href":"/furion/docs/devops"}],"collapsible":true,"collapsed":true},{"type":"category","label":"36. \u6d4b\u8bd5\u6307\u5357","items":[{"type":"link","label":"36.1 \u5355\u5143\u6d4b\u8bd5","href":"/furion/docs/unittest"},{"type":"link","label":"36.2 \u8d1f\u8f7d\u538b\u6d4b","href":"/furion/docs/performance"},{"type":"link","label":"36.3 \u57fa\u51c6\u6d4b\u8bd5","href":"/furion/docs/benchmark"},{"type":"link","label":"36.4 \u5e76\u53d1\u6d4b\u8bd5","href":"/furion/docs/bingfa"}],"collapsible":true,"collapsed":true},{"type":"link","label":"37. \u7f16\u5199\u5305\u7ba1\u7406\u5de5\u5177 (Tools)","href":"/furion/docs/dotnet-tools"},{"type":"link","label":"38. \u8d21\u732e\u6307\u5357","href":"/furion/docs/contribute"}],"settings":[{"type":"link","label":"1. \u5e94\u7528\u914d\u7f6e","href":"/furion/docs/settings/appsettings"},{"type":"link","label":"2. \u8de8\u57df\u914d\u7f6e","href":"/furion/docs/settings/corsaccessorsettings"},{"type":"link","label":"3. \u9a8c\u8bc1\u6d88\u606f\u914d\u7f6e","href":"/furion/docs/settings/validationTypemessagesettings"},{"type":"link","label":"4. \u4f9d\u8d56\u6ce8\u5165\u914d\u7f6e","href":"/furion/docs/settings/dependencyinjectionsettings"},{"type":"link","label":"5. \u52a8\u6001API\u914d\u7f6e","href":"/furion/docs/settings/dynamicapicontrollersettings"},{"type":"link","label":"6. \u53cb\u597d\u5f02\u5e38\u914d\u7f6e","href":"/furion/docs/settings/friendlyexceptionsettings"},{"type":"link","label":"7. \u89c4\u8303\u5316\u6587\u6863\u914d\u7f6e","href":"/furion/docs/settings/specificationdocumentsettings"},{"type":"link","label":"8. \u591a\u8bed\u8a00\u914d\u7f6e","href":"/furion/docs/settings/localizationsettings"},{"type":"link","label":"9. JWT \u914d\u7f6e","href":"/furion/docs/settings/jwtsettings"},{"type":"link","label":"10. \u89c4\u8303\u5316\u914d\u7f6e","href":"/furion/docs/settings/unifyresultsettings"}],"global":[{"type":"link","label":"1. App \u9759\u6001\u7c7b","href":"/furion/docs/global/app"},{"type":"link","label":"2. Db \u9759\u6001\u7c7b","href":"/furion/docs/global/db"},{"type":"link","label":"3. DataValidator \u9759\u6001\u7c7b","href":"/furion/docs/global/datavalidator"},{"type":"link","label":"4. Oops \u9759\u6001\u7c7b","href":"/furion/docs/global/oops"},{"type":"link","label":"5. LinqExpression \u9759\u6001\u7c7b","href":"/furion/docs/global/linqexpression"},{"type":"link","label":"6. Http \u9759\u6001\u7c7b","href":"/furion/docs/global/shttp"},{"type":"link","label":"7. JsonSerializerUtility \u9759\u6001\u7c7b","href":"/furion/docs/global/jsonserializer"},{"type":"link","label":"8. L \u9759\u6001\u7c7b","href":"/furion/docs/global/l"},{"type":"link","label":"9. MessageCenter \u9759\u6001\u7c7b","href":"/furion/docs/global/messagecenter"},{"type":"link","label":"10. JSON \u9759\u6001\u7c7b","href":"/furion/docs/global/json"},{"type":"link","label":"11. Scoped \u9759\u6001\u7c7b","href":"/furion/docs/global/scoped"},{"type":"link","label":"12. SpareTime \u9759\u6001\u7c7b","href":"/furion/docs/global/sparetime"},{"type":"link","label":"13. FS \u9759\u6001\u7c7b","href":"/furion/docs/global/fs"},{"type":"link","label":"14. JWTEncryption \u9759\u6001\u7c7b","href":"/furion/docs/global/jwt"}]}}')}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/935f2afb.be472586.js b/handbook/build/assets/js/935f2afb.be472586.js new file mode 100644 index 00000000000..7ed0d4bb9f7 --- /dev/null +++ b/handbook/build/assets/js/935f2afb.be472586.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[53],{1109:function(e){e.exports=JSON.parse('{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"docs":[{"type":"category","label":"1. \u5e8f\u8a00","items":[{"type":"link","label":"1.1 \u4ecb\u7ecd","href":"/furion/docs/"},{"type":"link","label":"1.2 \u5173\u4e8e\u4f5c\u8005","href":"/furion/docs/author"},{"type":"link","label":"1.3 \u793a\u4f8b\u67b6\u6784\u8bf4\u660e","href":"/furion/docs/source"},{"type":"link","label":"1.4 \u6846\u67b6\u6848\u4f8b","href":"/furion/docs/case"},{"type":"link","label":"1.5 \u652f\u6301 Furion","href":"/furion/docs/donate"},{"type":"link","label":"1.6 \u66f4\u65b0\u65e5\u5fd7","href":"/furion/docs/upgrade"},{"type":"link","label":"1.7 \u53d1\u5c55\u5927\u4e8b\u8bb0","href":"/furion/docs/course"}],"collapsible":true,"collapsed":true},{"type":"category","label":"2. \u5165\u95e8\u6307\u5357","items":[{"type":"link","label":"2.1 \u4e00\u5206\u949f\u4e0a\u624b","href":"/furion/docs/get-start"},{"type":"link","label":"2.2 \u5b98\u65b9\u811a\u624b\u67b6","href":"/furion/docs/template"},{"type":"link","label":"2.3 \u624b\u52a8\u642d\u5efa\u5206\u5c42","href":"/furion/docs/reference"},{"type":"link","label":"2.4 \u795e\u5947\u7684 Inject","href":"/furion/docs/inject"}],"collapsible":true,"collapsed":true},{"type":"link","label":"3. \u5e94\u7528\u542f\u52a8 Startup","href":"/furion/docs/appstartup"},{"type":"category","label":"4. \u914d\u7f6e\u4e0e\u9009\u9879","items":[{"type":"link","label":"4.1 \u914d\u7f6e","href":"/furion/docs/configuration"},{"type":"link","label":"4.2 \u9009\u9879","href":"/furion/docs/options"}],"collapsible":true,"collapsed":true},{"type":"link","label":"5. \u52a8\u6001 WebAPI","href":"/furion/docs/dynamic-api-controller"},{"type":"link","label":"6. \u89c4\u8303\u5316\u63a5\u53e3\u6587\u6863 (Swagger)","href":"/furion/docs/specification-document"},{"type":"link","label":"7. \u53cb\u597d\u5f02\u5e38\u5904\u7406","href":"/furion/docs/friendly-exception"},{"type":"link","label":"8. \u6570\u636e\u6821\u9a8c","href":"/furion/docs/data-validation"},{"type":"category","label":"9. \u6570\u636e\u5e93\u64cd\u4f5c\u6307\u5357\uff08EFCore\uff09","items":[{"type":"link","label":"9.0 \u5165\u95e8\u7b80\u8981 \u2728","href":"/furion/docs/dbcontext-start"},{"type":"link","label":"9.1 \u6570\u636e\u5e93\u4e0a\u4e0b\u6587","href":"/furion/docs/dbcontext"},{"type":"link","label":"9.2 \u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u5b9a\u4f4d\u5668","href":"/furion/docs/dbcontext-locator"},{"type":"link","label":"9.3 \u6570\u636e\u5e93\u5b9e\u4f53","href":"/furion/docs/entity"},{"type":"link","label":"9.4 \u4ed3\u50a8\u6a21\u5f0f (Repository)","href":"/furion/docs/dbcontext-repository"},{"type":"link","label":"9.5 \u65b0\u589e\u64cd\u4f5c","href":"/furion/docs/dbcontext-add"},{"type":"link","label":"9.6 \u66f4\u65b0\u64cd\u4f5c","href":"/furion/docs/dbcontext-update"},{"type":"link","label":"9.7 \u65b0\u589e\u6216\u66f4\u65b0\u64cd\u4f5c","href":"/furion/docs/dbcontext-add-or-update"},{"type":"link","label":"9.8 \u5220\u9664\u64cd\u4f5c","href":"/furion/docs/dbcontext-delete"},{"type":"link","label":"9.9 \u6279\u91cf\u64cd\u4f5c","href":"/furion/docs/dbcontext-batch"},{"type":"link","label":"9.10 \u67e5\u8be2\u64cd\u4f5c","href":"/furion/docs/dbcontext-query"},{"type":"link","label":"9.11 \u9ad8\u7ea7\u67e5\u8be2\u64cd\u4f5c","href":"/furion/docs/dbcontext-hight-query"},{"type":"link","label":"9.12 \u89c6\u56fe\u64cd\u4f5c","href":"/furion/docs/dbcontext-view"},{"type":"link","label":"9.13 \u5b58\u50a8\u8fc7\u7a0b\u64cd\u4f5c","href":"/furion/docs/dbcontext-proc"},{"type":"link","label":"9.14 \u51fd\u6570\u64cd\u4f5c","href":"/furion/docs/dbcontext-function"},{"type":"link","label":"9.15 Sql \u64cd\u4f5c","href":"/furion/docs/dbcontext-sql"},{"type":"link","label":"9.16 Sql \u6a21\u677f","href":"/furion/docs/dbcontext-sql-template"},{"type":"link","label":"9.17 Sql \u9ad8\u7ea7\u4ee3\u7406","href":"/furion/docs/dbcontext-sql-proxy"},{"type":"link","label":"9.18 \u591a\u79cd\u6570\u636e\u5e93\u64cd\u4f5c \u2728","href":"/furion/docs/dbcontext-multi-database"},{"type":"link","label":"9.19 \u6570\u636e\u5e93\u751f\u6210\u6a21\u578b (Db First)","href":"/furion/docs/dbcontext-db-first"},{"type":"link","label":"9.20 \u6a21\u578b\u751f\u6210\u6570\u636e\u5e93 (Code First)","href":"/furion/docs/dbcontext-code-first"},{"type":"link","label":"9.21 \u5b9e\u4f53\u79cd\u5b50\u6570\u636e","href":"/furion/docs/dbcontext-seed-data"},{"type":"link","label":"9.22 \u5ba1\u8ba1\u65e5\u5fd7 (Audit)","href":"/furion/docs/dbcontext-audit"},{"type":"link","label":"9.23 \u5b9e\u4f53/\u5168\u5c40\u67e5\u8be2\u7b5b\u9009\u5668","href":"/furion/docs/dbcontext-filter"},{"type":"link","label":"9.24 \u6570\u636e\u5e93\u64cd\u4f5c\u62e6\u622a\u5668","href":"/furion/docs/dbcontext-Interceptor"},{"type":"link","label":"9.25. \u5b9e\u4f53\u6570\u636e\u76d1\u542c\u5668","href":"/furion/docs/dbcontext-entitytrigger"},{"type":"link","label":"9.26 \u4e8b\u52a1\u548c\u5de5\u4f5c\u5355\u5143 (UnitOfWork)","href":"/furion/docs/tran"},{"type":"link","label":"9.27 \u8bfb\u5199\u5206\u79bb/\u4e3b\u4ece\u590d\u5236","href":"/furion/docs/dbcontext-read-write"},{"type":"link","label":"9.28 \u5206\u8868\u5206\u5e93","href":"/furion/docs/split-db"},{"type":"link","label":"9.29 EFCore \u6700\u4f73\u5b9e\u8df5","href":"/furion/docs/efcore-recommend"}],"collapsible":true,"collapsed":true},{"type":"category","label":"10. SqlSugar \u6216\u5176\u4ed6 ORM","items":[{"type":"link","label":"10.1. SqlSugar \u96c6\u6210","href":"/furion/docs/sqlsugar"},{"type":"link","label":"10.2. Dapper \u96c6\u6210","href":"/furion/docs/dapper"},{"type":"link","label":"10.3. MongoDB \u64cd\u4f5c","href":"/furion/docs/mongodb"}],"collapsible":true,"collapsed":true},{"type":"link","label":"11. SaaS \u591a\u79df\u6237","href":"/furion/docs/saas"},{"type":"link","label":"12. \u4f9d\u8d56\u6ce8\u5165/\u63a7\u5236\u53cd\u8f6c","href":"/furion/docs/dependency-injection"},{"type":"link","label":"13. \u5bf9\u8c61\u6570\u636e\u6620\u5c04 Mapper","href":"/furion/docs/object-mapper"},{"type":"link","label":"14. \u5206\u5e03\u5f0f\u7f13\u5b58","href":"/furion/docs/cache"},{"type":"link","label":"15. \u5b89\u5168\u9274\u6743","href":"/furion/docs/auth-control"},{"type":"link","label":"16. CORS \u8de8\u57df","href":"/furion/docs/cors"},{"type":"link","label":"17. \u89c6\u56fe\u5f15\u64ce","href":"/furion/docs/view-engine"},{"type":"link","label":"18. \u65e5\u5fd7\u8bb0\u5f55","href":"/furion/docs/logging"},{"type":"link","label":"19. \u8fdc\u7a0b\u8bf7\u6c42 (HttpClient)","href":"/furion/docs/http"},{"type":"link","label":"20. \u6570\u636e\u52a0\u89e3\u5bc6","href":"/furion/docs/encryption"},{"type":"link","label":"21. \u5168\u7403\u5316\u548c\u672c\u5730\u5316\uff08\u591a\u8bed\u8a00\uff09","href":"/furion/docs/local-language"},{"type":"link","label":"22. \u4e8b\u4ef6\u603b\u7ebf","href":"/furion/docs/event-bus"},{"type":"link","label":"23. JSON \u5e8f\u5217\u5316","href":"/furion/docs/json-serialization"},{"type":"link","label":"24. \u5373\u65f6\u901a\u8baf","href":"/furion/docs/signalr"},{"type":"link","label":"25. \u8f85\u52a9\u89d2\u8272\u670d\u52a1 (Worker Service)","href":"/furion/docs/process-service"},{"type":"link","label":"26. \u5b9a\u65f6\u4efb\u52a1/\u540e\u53f0\u4efb\u52a1","href":"/furion/docs/job"},{"type":"link","label":"27. \u5206\u5e03\u5f0f ID \u751f\u6210","href":"/furion/docs/idgenerator"},{"type":"link","label":"28. \u6a21\u5757\u5316\u5f00\u53d1","href":"/furion/docs/module-dev"},{"type":"link","label":"29. \u7c98\u571f\u5bf9\u8c61","href":"/furion/docs/clayobj"},{"type":"link","label":"30. \u8131\u654f\u5904\u7406","href":"/furion/docs/sensitive-detection"},{"type":"link","label":"31. \u865a\u62df\u6587\u4ef6\u7cfb\u7edf","href":"/furion/docs/file-provider"},{"type":"link","label":"32. \u4f1a\u8bdd\u548c\u72b6\u6001\u7ba1\u7406","href":"/furion/docs/sesssion-state"},{"type":"link","label":"33. IPC \u8fdb\u7a0b\u901a\u4fe1","href":"/furion/docs/ipc"},{"type":"category","label":"34. \u6258\u7ba1\u90e8\u7f72","items":[{"type":"link","label":"34.1 \u5728 IIS \u90e8\u7f72","href":"/furion/docs/deploy-iis"},{"type":"link","label":"34.2 \u5728 Docker \u90e8\u7f72","href":"/furion/docs/deploy-docker"},{"type":"link","label":"34.3 \u5728 Nginx \u90e8\u7f72","href":"/furion/docs/deploy-nginx"},{"type":"link","label":"34.4 \u4e8c\u7ea7\u865a\u62df\u76ee\u5f55\u90e8\u7f72","href":"/furion/docs/virtual-deploy"}],"collapsible":true,"collapsed":true},{"type":"category","label":"35. \u6301\u7eed\u90e8\u7f72\u96c6\u6210","items":[{"type":"link","label":"35.1 Docker \u73af\u5883\u6301\u7eed\u90e8\u7f72","href":"/furion/docs/deploy-docker-auto"},{"type":"link","label":"35.2 \u6301\u7eed\u90e8\u7f72\u96c6\u6210","href":"/furion/docs/devops"}],"collapsible":true,"collapsed":true},{"type":"category","label":"36. \u6d4b\u8bd5\u6307\u5357","items":[{"type":"link","label":"36.1 \u5355\u5143\u6d4b\u8bd5","href":"/furion/docs/unittest"},{"type":"link","label":"36.2 \u8d1f\u8f7d\u538b\u6d4b","href":"/furion/docs/performance"},{"type":"link","label":"36.3 \u57fa\u51c6\u6d4b\u8bd5","href":"/furion/docs/benchmark"},{"type":"link","label":"36.4 \u5e76\u53d1\u6d4b\u8bd5","href":"/furion/docs/bingfa"}],"collapsible":true,"collapsed":true},{"type":"link","label":"37. \u7f16\u5199\u5305\u7ba1\u7406\u5de5\u5177 (Tools)","href":"/furion/docs/dotnet-tools"},{"type":"link","label":"38. \u8d21\u732e\u6307\u5357","href":"/furion/docs/contribute"}],"settings":[{"type":"link","label":"1. \u5e94\u7528\u914d\u7f6e","href":"/furion/docs/settings/appsettings"},{"type":"link","label":"2. \u8de8\u57df\u914d\u7f6e","href":"/furion/docs/settings/corsaccessorsettings"},{"type":"link","label":"3. \u9a8c\u8bc1\u6d88\u606f\u914d\u7f6e","href":"/furion/docs/settings/validationTypemessagesettings"},{"type":"link","label":"4. \u4f9d\u8d56\u6ce8\u5165\u914d\u7f6e","href":"/furion/docs/settings/dependencyinjectionsettings"},{"type":"link","label":"5. \u52a8\u6001API\u914d\u7f6e","href":"/furion/docs/settings/dynamicapicontrollersettings"},{"type":"link","label":"6. \u53cb\u597d\u5f02\u5e38\u914d\u7f6e","href":"/furion/docs/settings/friendlyexceptionsettings"},{"type":"link","label":"7. \u89c4\u8303\u5316\u6587\u6863\u914d\u7f6e","href":"/furion/docs/settings/specificationdocumentsettings"},{"type":"link","label":"8. \u591a\u8bed\u8a00\u914d\u7f6e","href":"/furion/docs/settings/localizationsettings"},{"type":"link","label":"9. JWT \u914d\u7f6e","href":"/furion/docs/settings/jwtsettings"},{"type":"link","label":"10. \u89c4\u8303\u5316\u914d\u7f6e","href":"/furion/docs/settings/unifyresultsettings"}],"global":[{"type":"link","label":"1. App \u9759\u6001\u7c7b","href":"/furion/docs/global/app"},{"type":"link","label":"2. Db \u9759\u6001\u7c7b","href":"/furion/docs/global/db"},{"type":"link","label":"3. DataValidator \u9759\u6001\u7c7b","href":"/furion/docs/global/datavalidator"},{"type":"link","label":"4. Oops \u9759\u6001\u7c7b","href":"/furion/docs/global/oops"},{"type":"link","label":"5. LinqExpression \u9759\u6001\u7c7b","href":"/furion/docs/global/linqexpression"},{"type":"link","label":"6. Http \u9759\u6001\u7c7b","href":"/furion/docs/global/shttp"},{"type":"link","label":"7. JsonSerializerUtility \u9759\u6001\u7c7b","href":"/furion/docs/global/jsonserializer"},{"type":"link","label":"8. L \u9759\u6001\u7c7b","href":"/furion/docs/global/l"},{"type":"link","label":"9. MessageCenter \u9759\u6001\u7c7b","href":"/furion/docs/global/messagecenter"},{"type":"link","label":"10. JSON \u9759\u6001\u7c7b","href":"/furion/docs/global/json"},{"type":"link","label":"11. Scoped \u9759\u6001\u7c7b","href":"/furion/docs/global/scoped"},{"type":"link","label":"12. SpareTime \u9759\u6001\u7c7b","href":"/furion/docs/global/sparetime"},{"type":"link","label":"13. FS \u9759\u6001\u7c7b","href":"/furion/docs/global/fs"},{"type":"link","label":"14. JWTEncryption \u9759\u6001\u7c7b","href":"/furion/docs/global/jwt"}]}}')}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/9b04aa07.27b17b48.js b/handbook/build/assets/js/9b04aa07.27b17b48.js deleted file mode 100644 index 22c9431001d..00000000000 --- a/handbook/build/assets/js/9b04aa07.27b17b48.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[6521],{3905:function(e,n,t){t.d(n,{Zo:function(){return p},kt:function(){return m}});var a=t(7294);function r(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function o(e){for(var n=1;n=0||(r[t]=e[t]);return r}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var s=a.createContext({}),d=function(e){var n=a.useContext(s),t=n;return e&&(t="function"==typeof e?e(n):o(o({},n),e)),t},p=function(e){var n=d(e.components);return a.createElement(s.Provider,{value:n},e.children)},c={inlineCode:"code",wrapper:function(e){var n=e.children;return a.createElement(a.Fragment,{},n)}},u=a.forwardRef((function(e,n){var t=e.components,r=e.mdxType,i=e.originalType,s=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),u=d(t),m=r,v=u["".concat(s,".").concat(m)]||u[m]||c[m]||i;return t?a.createElement(v,o(o({ref:n},p),{},{components:t})):a.createElement(v,o({ref:n},p))}));function m(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var i=t.length,o=new Array(i);o[0]=u;var l={};for(var s in n)hasOwnProperty.call(n,s)&&(l[s]=n[s]);l.originalType=e,l.mdxType="string"==typeof e?e:r,o[1]=l;for(var d=2;dSaveChanges \u4e8b\u4ef6",id:"9222-\u5173\u4e8e-savechanges-\u4e8b\u4ef6",children:[]},{value:"9.22.3 \u5982\u4f55\u5b9e\u73b0",id:"9223-\u5982\u4f55\u5b9e\u73b0",children:[{value:"9.22.3.1 \u6570\u636e\u5e93\u5ba1\u8ba1\u65e5\u5fd7",id:"92231-\u6570\u636e\u5e93\u5ba1\u8ba1\u65e5\u5fd7",children:[]},{value:"9.22.3.2 \u6267\u884c sql \u5ba1\u8ba1\u65e5\u5fd7",id:"92232-\u6267\u884c-sql-\u5ba1\u8ba1\u65e5\u5fd7",children:[]},{value:"9.22.3.3 \u8bf7\u6c42\u5ba1\u8ba1\u65e5\u5fd7",id:"92233-\u8bf7\u6c42\u5ba1\u8ba1\u65e5\u5fd7",children:[]}]},{value:"9.22.4 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"9224-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],c={toc:p};function u(e){var n=e.components,t=(0,r.Z)(e,o);return(0,i.kt)("wrapper",(0,a.Z)({},c,t,{components:n,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"9221-\u5ba1\u8ba1\u65e5\u5fd7"},"9.22.1 \u5ba1\u8ba1\u65e5\u5fd7"),(0,i.kt)("p",null,"\u5728\u4e00\u4e2a\u4f01\u4e1a\u5e94\u7528\u7cfb\u7edf\u4e2d\uff0c\u7528\u6237\u5bf9\u7cfb\u7edf\u6240\u6709\u7684\u64cd\u4f5c\u5305\u62ec\u8bf7\u6c42\u3001\u6570\u636e\u5e93\u64cd\u4f5c\u7b49\u7b49\u90fd\u5e94\u8be5\u8bb0\u5f55\u8d77\u6765\uff0c\u90a3\u4e48\u8fd9\u4e9b\u65e5\u5fd7\u6211\u4eec\u79f0\u4e3a\u64cd\u4f5c\u65e5\u5fd7\uff0c\u4e5f\u53ef\u4ee5\u8bf4\u5ba1\u8ba1\u65e5\u5fd7\u3002"),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"\u901a\u5e38\u6765\u8bf4\uff0c\u6211\u4eec\u5ba1\u8ba1\u65e5\u5fd7\u66f4\u591a\u6307\u7684\u662f\u6570\u636e\u5e93\u7684\u64cd\u4f5c\u8bb0\u5f55"),"\u3002"),(0,i.kt)("p",null,"\u5ba1\u8ba1\u65e5\u5fd7\u4e00\u822c\u4f1a\u8bb0\u5f55\u4ee5\u4e0b\u4e09\u4e2a\u64cd\u4f5c\uff1a"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"\u65b0\u589e\u64cd\u4f5c"),"\uff1a\u8bb0\u5f55\u67d0\u67d0\u4eba\u5728\u67d0\u67d0\u65f6\u95f4\u5bf9\u54ea\u4e2a\u8868\u65b0\u589e\u4e86\u4ec0\u4e48\u6570\u636e"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"\u66f4\u65b0\u64cd\u4f5c"),"\uff1a\u8bb0\u5f55\u67d0\u67d0\u4eba\u5728\u67d0\u67d0\u65f6\u95f4\u5bf9\u54ea\u4e2a\u8868\u7684\u54ea\u4e9b\u6570\u636e\u505a\u4e86\u66f4\u6539\uff0c\u8bb0\u5f55\u66f4\u6539\u524d\u7684\u503c\u548c\u66f4\u6539\u540e\u7684\u503c"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"\u5220\u9664\u64cd\u4f5c"),"\uff1a\u8bb0\u5f55\u67d0\u67d0\u4eba\u5728\u67d0\u67d0\u65f6\u95f4\u5bf9\u54ea\u4e2a\u8868\u5220\u9664\u4e86\u4ec0\u4e48\u6570\u636e")),(0,i.kt)("h2",{id:"9222-\u5173\u4e8e-savechanges-\u4e8b\u4ef6"},"9.22.2 \u5173\u4e8e ",(0,i.kt)("inlineCode",{parentName:"h2"},"SaveChanges")," \u4e8b\u4ef6"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\u4e3a\u6240\u6709 ",(0,i.kt)("inlineCode",{parentName:"p"},"AppDbContext")," \u5b50\u7c7b\u90fd\u63d0\u4f9b\u4e86\u4e09\u4e2a\u53ef\u91cd\u5199\u7684\u65b9\u6cd5\uff0c\u8fd9\u4e09\u4e2a\u65b9\u6cd5\u5206\u522b\u7531\u4e09\u4e2a\u4e8b\u4ef6\u89e6\u53d1\uff1a"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"\u63d0\u4ea4\u66f4\u6539\u4e4b\u524d SavingChanges \u4e8b\u4ef6"),"\uff1a\u89e6\u53d1 ",(0,i.kt)("inlineCode",{parentName:"li"},"void SavingChangesEvent(DbContextEventData eventData, InterceptionResult result)")," \u65b9\u6cd5"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"\u63d0\u4ea4\u66f4\u6539\u4e4b\u540e SavedChanges \u4e8b\u4ef6"),"\uff1a\u89e6\u53d1 ",(0,i.kt)("inlineCode",{parentName:"li"},"void SavedChangesEvent(SaveChangesCompletedEventData eventData, int result)")," \u65b9\u6cd5"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"\u63d0\u4ea4\u66f4\u6539\u5931\u8d25 SaveChangesFailed \u4e8b\u4ef6"),"\uff1a\u89e6\u53d1 ",(0,i.kt)("inlineCode",{parentName:"li"},"void SaveChangesFailedEvent(DbContextErrorEventData eventData)")," \u65b9\u6cd5")),(0,i.kt)("p",null,"\u901a\u8fc7\u8fd9\u4e09\u4e2a\u4e8b\u4ef6\u6211\u4eec\u5c31\u53ef\u4ee5\u6355\u83b7\u6240\u6709\u66f4\u6539\u7684\u5b9e\u4f53\u7136\u540e\u4fdd\u5b58\u5230\u6570\u636e\u5e93\u5ba1\u8ba1\u65e5\u5fd7\u4e2d\u3002"),(0,i.kt)("h2",{id:"9223-\u5982\u4f55\u5b9e\u73b0"},"9.22.3 \u5982\u4f55\u5b9e\u73b0"),(0,i.kt)("h3",{id:"92231-\u6570\u636e\u5e93\u5ba1\u8ba1\u65e5\u5fd7"},"9.22.3.1 \u6570\u636e\u5e93\u5ba1\u8ba1\u65e5\u5fd7"),(0,i.kt)("p",null,"\u6211\u4eec\u53ea\u9700\u8981\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"AppDbContext")," \u5b50\u7c7b\u4e2d\u91cd\u5199 ",(0,i.kt)("inlineCode",{parentName:"p"},"SavingChanges")," \u4e8b\u4ef6\u5bf9\u5e94\u65b9\u6cd5\u5373\u53ef\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{23}","{23}":!0},'using Furion.DatabaseAccessor;\nusing Microsoft.AspNetCore.Http;\nusing Microsoft.EntityFrameworkCore;\nusing Microsoft.EntityFrameworkCore.Infrastructure;\nusing System;\nusing System.Linq;\nusing System.Security.AccessControl;\n\nnamespace Furion.EntityFramework.Core\n{\n [AppDbContext("Sqlite3ConnectionString")]\n public class FurionDbContext : AppDbContext\n {\n public FurionDbContext(DbContextOptions options) : base(options)\n {\n }\n\n /// \n /// \u91cd\u5199\u4fdd\u5b58\u4e4b\u524d\u4e8b\u4ef6\n /// \n /// \n /// \n protected override void SavingChangesEvent(DbContextEventData eventData, InterceptionResult result)\n {\n // \u83b7\u53d6\u5f53\u524d\u4e8b\u4ef6\u5bf9\u5e94\u4e0a\u4e0b\u6587\n var dbContext = eventData.Context;\n\n // \u5f3a\u5236\u91cd\u65b0\u68c0\u67e5\u4e00\u8fb9\u5b9e\u4f53\u66f4\u6539\u4fe1\u606f\n // dbContext.ChangeTracker.DetectChanges();\n\n // \u83b7\u53d6\u6240\u6709\u66f4\u6539\uff0c\u5220\u9664\uff0c\u65b0\u589e\u7684\u5b9e\u4f53\uff0c\u4f46\u6392\u9664\u5ba1\u8ba1\u5b9e\u4f53\uff08\u907f\u514d\u6b7b\u5faa\u73af\uff09\n var entities = dbContext.ChangeTracker.Entries()\n .Where(u => u.Entity.GetType() != typeof(Audit) && (u.State == EntityState.Modified || u.State == EntityState.Deleted || u.State == EntityState.Added))\n .ToList();\n\n // \u901a\u8fc7\u8bf7\u6c42\u4e2d\u83b7\u53d6\u5f53\u524d\u64cd\u4f5c\u4eba\n var userId = App.GetService().HttpContext.Items["UserId"];\n\n // \u83b7\u53d6\u6240\u6709\u5df2\u66f4\u6539\u7684\u5b9e\u4f53\n foreach (var entity in entities)\n {\n // \u83b7\u53d6\u5b9e\u4f53\u7c7b\u578b\n var entityType = entity.Entity.GetType();\n\n // \u83b7\u53d6\u6240\u6709\u5b9e\u4f53\u6709\u6548\u5c5e\u6027\uff0c\u6392\u9664 [NotMapper] \u5c5e\u6027\n var props = entity.OriginalValues.Properties;\n\n // \u83b7\u53d6\u5b9e\u4f53\u5f53\u524d\uff08\u73b0\u5728\uff09\u7684\u503c\n var currentValues = entity.CurrentValues;\n\n // \u83b7\u53d6\u6570\u636e\u5e93\u4e2d\u5b9e\u4f53\u7684\u503c\n var databaseValues = entity.GetDatabaseValues();\n\n // \u904d\u5386\u6240\u6709\u5c5e\u6027\n foreach (var prop in props)\n {\n // \u83b7\u53d6\u5c5e\u6027\u540d\n var propName = prop.Name;\n\n // \u83b7\u53d6\u73b0\u5728\u7684\u5b9e\u4f53\u503c\n var newValue = currentValues[propName];\n\n object oldValue = null;\n // \u5982\u679c\u662f\u65b0\u589e\u6570\u636e\uff0c\u5219 databaseValues \u4e3a\u7a7a\uff0c\u6240\u4ee5\u9700\u8981\u5224\u65ad\u4e00\u4e0b\n if (databaseValues != null)\n {\n oldValue = databaseValues[propName];\n }\n\n // \u63d2\u5165\u5ba1\u8ba1\u65e5\u5fd7\u8868\uff0cAudit \u662f\u4f60\u81ea\u5b9a\u4e49\u7684\u5b9e\u4f53\n dbContext.Set().Add(new Audit\n {\n Table = entityType.Name, // \u8868\u540d\n Column = propName, // \u66f4\u65b0\u7684\u5217\n NewValue = newValue, // \u65b0\u503c\n OldValue = oldValue, // \u65e7\u503c\n CreatedTime = DateTime.Now, // \u64cd\u4f5c\u65f6\u95f4\n UserId = userId, // \u64cd\u4f5c\u4eba\n Operate = entity.State.ToString(); // \u64cd\u4f5c\u65b9\u5f0f\uff1a\u65b0\u589e\u3001\u66f4\u65b0\u3001\u5220\u9664\n });\n }\n }\n }\n }\n}\n')),(0,i.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u5c0f\u77e5\u8bc6")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u5982\u679c\u5bf9\u6027\u80fd\u6709\u6240\u8981\u6c42\uff0c\u90a3\u4e48\u5efa\u8bae\u5ba1\u8ba1\u65e5\u5fd7\u901a\u8fc7 ",(0,i.kt)("inlineCode",{parentName:"p"},"\u65e5\u5fd7\u7ec4\u4ef6")," \u5199\u5165\u6570\u636e\u5e93\uff0c\u5982\u901a\u8fc7 ",(0,i.kt)("inlineCode",{parentName:"p"},"Nlog\u3001Log4Net")," \u8fd9\u4e9b\u7b49\uff1a"),(0,i.kt)("pre",{parentName:"div"},(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"// \u63d2\u5165\u5ba1\u8ba1\u65e5\u5fd7\u8868\ndbContext.Set().Add(new Audit\n{\n Table = entityType.Name, // \u8868\u540d\n Column = propName, // \u66f4\u65b0\u7684\u5217\n newValue = newValue, // \u65b0\u503c\n OldValue = oldValue, // \u65e7\u503c\n CreatedTime = DateTime.Now, // \u64cd\u4f5c\u65f6\u95f4\n UserId = userId, // \u64cd\u4f5c\u4eba\n Operate = entity.State.ToString(); // \u64cd\u4f5c\u65b9\u5f0f\uff1a\u65b0\u589e\u3001\u66f4\u65b0\u3001\u5220\u9664\n});\n")),(0,i.kt)("p",{parentName:"div"},"\u66ff\u6362\u4e3a\uff1a"),(0,i.kt)("pre",{parentName:"div"},(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"logger.Information(JsonConvert.SerializeObject(new Audit\n{\n Table = entityType.Name, // \u8868\u540d\n Column = propName, // \u66f4\u65b0\u7684\u5217\n newValue = newValue, // \u65b0\u503c\n OldValue = oldValue, // \u65e7\u503c\n CreatedTime = DateTime.Now, // \u64cd\u4f5c\u65f6\u95f4\n UserId = userId, // \u64cd\u4f5c\u4eba\n Operate = entity.State.ToString(); // \u64cd\u4f5c\u65b9\u5f0f\uff1a\u65b0\u589e\u3001\u66f4\u65b0\u3001\u5220\u9664\n}));\n")))),(0,i.kt)("p",null,"\u901a\u8fc7\u4e0a\u9762\u7684\u4f8b\u5b50\uff0c\u6211\u4eec\u5c31\u53ef\u4ee5\u5bf9\u6570\u636e\u5e93\u6240\u6709\u7684\u65b0\u589e\u3001\u66f4\u65b0\u3001\u5220\u9664\u8fdb\u884c\u76d1\u63a7\u4e86\u3002"),(0,i.kt)("h3",{id:"92232-\u6267\u884c-sql-\u5ba1\u8ba1\u65e5\u5fd7"},"9.22.3.2 \u6267\u884c ",(0,i.kt)("inlineCode",{parentName:"h3"},"sql")," \u5ba1\u8ba1\u65e5\u5fd7"),(0,i.kt)("p",null,"\u4e3b\u8981\u901a\u8fc7 ",(0,i.kt)("inlineCode",{parentName:"p"},"DbCommandInterceptor")," \u62e6\u622a\u5b9e\u73b0\uff0c\u5177\u4f53\u4f7f\u7528\u53ef\u67e5\u770b ",(0,i.kt)("a",{parentName:"p",href:"./dbcontext-Interceptor#92422-dbcommandinterceptor"},"\u6570\u636e\u5e93\u62e6\u622a\u5668 - DbCommandInterceptor"),"\uff0c\u5982\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{11}","{11}":!0},"using Microsoft.EntityFrameworkCore.Diagnostics;\nusing System.Data.Common;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace Furion.Web.Core\n{\n /// \n /// \u6267\u884c sql \u5ba1\u8ba1\n /// \n public sealed class SqlCommandAuditInterceptor : DbCommandInterceptor\n {\n public override InterceptionResult NonQueryExecuting(DbCommand command, CommandEventData eventData, InterceptionResult result)\n {\n // \u83b7\u53d6\u6267\u884c\u7684 sql \u8bed\u53e5\n var sql = command.CommandText;\n\n // \u83b7\u53d6\u6267\u884c\u7684 sql \u7c7b\u578b\uff0c\u662f sql \u8bed\u53e5\uff0c\u8fd8\u662f\u5b58\u50a8\u8fc7\u7a0b\uff0c\u8fd8\u662f\u5176\u4ed6\n var type = command.CommandType;\n\n // \u83b7\u53d6 sql \u4f20\u9012\u7684\u547d\u4ee4\u53c2\u6570\n var parameters = command.Parameters;\n\n // \u5199\u65e5\u5fd7~~~~\n\n return base.NonQueryExecuting(command, eventData, result);\n }\n\n public override ValueTask> NonQueryExecutingAsync(DbCommand command, CommandEventData eventData, InterceptionResult result, CancellationToken cancellationToken = default)\n {\n // \u83b7\u53d6\u6267\u884c\u7684 sql \u8bed\u53e5\n var sql = command.CommandText;\n\n // \u83b7\u53d6\u6267\u884c\u7684 sql \u7c7b\u578b\uff0c\u662f sql \u8bed\u53e5\uff0c\u8fd8\u662f\u5b58\u50a8\u8fc7\u7a0b\uff0c\u8fd8\u662f\u5176\u4ed6\n var type = command.CommandType;\n\n // \u83b7\u53d6 sql \u4f20\u9012\u7684\u547d\u4ee4\u53c2\u6570\n var parameters = command.Parameters;\n\n // \u5199\u65e5\u5fd7~~~~\n\n return base.NonQueryExecutingAsync(command, eventData, result, cancellationToken);\n }\n\n // \u5176\u4ed6 override\n }\n}\n")),(0,i.kt)("h3",{id:"92233-\u8bf7\u6c42\u5ba1\u8ba1\u65e5\u5fd7"},"9.22.3.3 \u8bf7\u6c42\u5ba1\u8ba1\u65e5\u5fd7"),(0,i.kt)("p",null,"\u9664\u4e86\u4e0a\u9762\u7684\u6570\u636e\u5e93\u589e\u5220\u6539\u5ba1\u8ba1\u65e5\u5fd7\u4ee5\u5916\uff0c\u6211\u4eec\u8fd8\u53ef\u4ee5\u5b9e\u73b0\u8bf7\u6c42\u5ba1\u8ba1\u65e5\u5fd7\uff0c\u4e5f\u5c31\u662f\u8bb0\u5f55\u8bf7\u6c42\u5730\u5740\uff0c\u6765\u6e90\u5730\u5740\uff0c\u64cd\u4f5c\u4eba\uff0c\u4f20\u9012\u53c2\u6570\u7b49\u3002\u8fd9\u4e2a\u4e3b\u8981\u662f\u901a\u8fc7 ",(0,i.kt)("inlineCode",{parentName:"p"},"IAsyncActionFilter")," \u7b5b\u9009\u5668\u5b9e\u73b0\uff0c\u5982\uff1a"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},"\u5b9a\u4e49 ",(0,i.kt)("inlineCode",{parentName:"li"},"RequestAuditFilter")," \u5e76\u5b9e\u73b0 ",(0,i.kt)("inlineCode",{parentName:"li"},"IAsyncActionFilter"))),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{9,45}","{9,45}":!0},'using Microsoft.AspNetCore.Http;\nusing Microsoft.AspNetCore.Mvc.Filters;\nusing System;\nusing System.Security.Claims;\nusing System.Threading.Tasks;\n\nnamespace Furion.Web.Core\n{\n public class RequestAuditFilter : IAsyncActionFilter\n {\n public async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)\n {\n //============== \u8fd9\u91cc\u662f\u6267\u884c\u65b9\u6cd5\u4e4b\u524d\u83b7\u53d6\u6570\u636e ====================\n\n // \u83b7\u53d6\u63a7\u5236\u5668\u3001\u8def\u7531\u4fe1\u606f\n var actionDescriptor = context.ActionDescriptor as ControllerActionDescriptor;\n\n // \u83b7\u53d6\u8bf7\u6c42\u7684\u65b9\u6cd5\n var method = actionDescriptor.MethodInfo;\n\n // \u83b7\u53d6 HttpContext \u548c HttpRequest \u5bf9\u8c61\n var httpContext = context.HttpContext;\n var httpRequest = httpContext.Request;\n\n // \u83b7\u53d6\u5ba2\u6237\u7aef Ipv4 \u5730\u5740\n var remoteIPv4 = httpContext.GetRemoteIpAddressToIPv4();\n\n // \u83b7\u53d6\u8bf7\u6c42\u7684 Url \u5730\u5740\n var requestUrl = httpRequest.GetRequestUrlAddress();\n\n // \u83b7\u53d6\u6765\u6e90 Url \u5730\u5740\n var refererUrl = httpRequest.GetRefererUrlAddress();\n\n // \u83b7\u53d6\u8bf7\u6c42\u53c2\u6570\uff08\u5199\u5165\u65e5\u5fd7\uff0c\u9700\u5e8f\u5217\u5316\u6210\u5b57\u7b26\u4e32\u540e\u5b58\u50a8\uff09\n var parameters = context.ActionArguments;\n\n // \u83b7\u53d6\u64cd\u4f5c\u4eba\uff08\u5fc5\u987b\u6388\u6743\u8bbf\u95ee\u624d\u6709\u503c\uff09"userId" \u4e3a\u4f60\u5b58\u50a8\u7684 claims type\uff0cjwt \u6388\u6743\u5bf9\u5e94\u7684\u662f payload \u4e2d\u5b58\u50a8\u7684\u952e\u540d\n var userId = httpContext.User?.FindFirstValue("userId");\n\n // \u8bf7\u6c42\u65f6\u95f4\n var requestedTime = DateTimeOffset.Now;\n\n\n //============== \u8fd9\u91cc\u662f\u6267\u884c\u65b9\u6cd5\u4e4b\u540e\u83b7\u53d6\u6570\u636e ====================\n var actionContext = await next();\n\n // \u83b7\u53d6\u8fd4\u56de\u7684\u7ed3\u679c\n var returnResult = actionContext.Result;\n\n // \u5224\u65ad\u662f\u5426\u8bf7\u6c42\u6210\u529f\uff0c\u6ca1\u6709\u5f02\u5e38\u5c31\u662f\u8bf7\u6c42\u6210\u529f\n var isRequestSucceed = actionContext.Exception == null;\n\n // \u8fd9\u91cc\u5199\u5165\u65e5\u5fd7~~~~~~~~~~~~~~~~~~~~\n }\n }\n}\n')),(0,i.kt)("ol",{start:2},(0,i.kt)("li",{parentName:"ol"},"\u6ce8\u518c ",(0,i.kt)("inlineCode",{parentName:"li"},"RequestAuditFilter")," \u7b5b\u9009\u5668")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"services.AddMvcFilter();\n")),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u5173\u4e8e\u7b5b\u9009\u5668\u6ce8\u518c\u987a\u5e8f")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u901a\u5e38\u5148\u6ce8\u518c\u7684\u4f1a\u5148\u6267\u884c\uff0c\u4e5f\u53ef\u4ee5\u901a\u8fc7\u5b9e\u73b0 ",(0,i.kt)("inlineCode",{parentName:"p"},"IOrderedFilter")," \u63a5\u53e3\u914d\u7f6e ",(0,i.kt)("inlineCode",{parentName:"p"},"Order")," \u5c5e\u6027\uff0c\u6570\u503c\u8d8a\u5c0f\uff0c\u8d8a\u5148\u6267\u884c\u3002"))),(0,i.kt)("h2",{id:"9224-\u53cd\u9988\u4e0e\u5efa\u8bae"},"9.22.4 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,i.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/9b04aa07.9dd1da75.js b/handbook/build/assets/js/9b04aa07.9dd1da75.js new file mode 100644 index 00000000000..9e01426dd2b --- /dev/null +++ b/handbook/build/assets/js/9b04aa07.9dd1da75.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[6521],{3905:function(e,n,t){t.d(n,{Zo:function(){return p},kt:function(){return m}});var a=t(7294);function r(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function o(e){for(var n=1;n=0||(r[t]=e[t]);return r}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var s=a.createContext({}),d=function(e){var n=a.useContext(s),t=n;return e&&(t="function"==typeof e?e(n):o(o({},n),e)),t},p=function(e){var n=d(e.components);return a.createElement(s.Provider,{value:n},e.children)},c={inlineCode:"code",wrapper:function(e){var n=e.children;return a.createElement(a.Fragment,{},n)}},u=a.forwardRef((function(e,n){var t=e.components,r=e.mdxType,i=e.originalType,s=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),u=d(t),m=r,v=u["".concat(s,".").concat(m)]||u[m]||c[m]||i;return t?a.createElement(v,o(o({ref:n},p),{},{components:t})):a.createElement(v,o({ref:n},p))}));function m(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var i=t.length,o=new Array(i);o[0]=u;var l={};for(var s in n)hasOwnProperty.call(n,s)&&(l[s]=n[s]);l.originalType=e,l.mdxType="string"==typeof e?e:r,o[1]=l;for(var d=2;dSaveChanges \u4e8b\u4ef6",id:"9222-\u5173\u4e8e-savechanges-\u4e8b\u4ef6",children:[]},{value:"9.22.3 \u5982\u4f55\u5b9e\u73b0",id:"9223-\u5982\u4f55\u5b9e\u73b0",children:[{value:"9.22.3.1 \u6570\u636e\u5e93\u5ba1\u8ba1\u65e5\u5fd7",id:"92231-\u6570\u636e\u5e93\u5ba1\u8ba1\u65e5\u5fd7",children:[]},{value:"9.22.3.2 \u6267\u884c sql \u5ba1\u8ba1\u65e5\u5fd7",id:"92232-\u6267\u884c-sql-\u5ba1\u8ba1\u65e5\u5fd7",children:[]},{value:"9.22.3.3 \u8bf7\u6c42\u5ba1\u8ba1\u65e5\u5fd7",id:"92233-\u8bf7\u6c42\u5ba1\u8ba1\u65e5\u5fd7",children:[]}]},{value:"9.22.4 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"9224-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],c={toc:p};function u(e){var n=e.components,t=(0,r.Z)(e,o);return(0,i.kt)("wrapper",(0,a.Z)({},c,t,{components:n,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"9221-\u5ba1\u8ba1\u65e5\u5fd7"},"9.22.1 \u5ba1\u8ba1\u65e5\u5fd7"),(0,i.kt)("p",null,"\u5728\u4e00\u4e2a\u4f01\u4e1a\u5e94\u7528\u7cfb\u7edf\u4e2d\uff0c\u7528\u6237\u5bf9\u7cfb\u7edf\u6240\u6709\u7684\u64cd\u4f5c\u5305\u62ec\u8bf7\u6c42\u3001\u6570\u636e\u5e93\u64cd\u4f5c\u7b49\u7b49\u90fd\u5e94\u8be5\u8bb0\u5f55\u8d77\u6765\uff0c\u90a3\u4e48\u8fd9\u4e9b\u65e5\u5fd7\u6211\u4eec\u79f0\u4e3a\u64cd\u4f5c\u65e5\u5fd7\uff0c\u4e5f\u53ef\u4ee5\u8bf4\u5ba1\u8ba1\u65e5\u5fd7\u3002"),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"\u901a\u5e38\u6765\u8bf4\uff0c\u6211\u4eec\u5ba1\u8ba1\u65e5\u5fd7\u66f4\u591a\u6307\u7684\u662f\u6570\u636e\u5e93\u7684\u64cd\u4f5c\u8bb0\u5f55"),"\u3002"),(0,i.kt)("p",null,"\u5ba1\u8ba1\u65e5\u5fd7\u4e00\u822c\u4f1a\u8bb0\u5f55\u4ee5\u4e0b\u4e09\u4e2a\u64cd\u4f5c\uff1a"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"\u65b0\u589e\u64cd\u4f5c"),"\uff1a\u8bb0\u5f55\u67d0\u67d0\u4eba\u5728\u67d0\u67d0\u65f6\u95f4\u5bf9\u54ea\u4e2a\u8868\u65b0\u589e\u4e86\u4ec0\u4e48\u6570\u636e"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"\u66f4\u65b0\u64cd\u4f5c"),"\uff1a\u8bb0\u5f55\u67d0\u67d0\u4eba\u5728\u67d0\u67d0\u65f6\u95f4\u5bf9\u54ea\u4e2a\u8868\u7684\u54ea\u4e9b\u6570\u636e\u505a\u4e86\u66f4\u6539\uff0c\u8bb0\u5f55\u66f4\u6539\u524d\u7684\u503c\u548c\u66f4\u6539\u540e\u7684\u503c"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"\u5220\u9664\u64cd\u4f5c"),"\uff1a\u8bb0\u5f55\u67d0\u67d0\u4eba\u5728\u67d0\u67d0\u65f6\u95f4\u5bf9\u54ea\u4e2a\u8868\u5220\u9664\u4e86\u4ec0\u4e48\u6570\u636e")),(0,i.kt)("h2",{id:"9222-\u5173\u4e8e-savechanges-\u4e8b\u4ef6"},"9.22.2 \u5173\u4e8e ",(0,i.kt)("inlineCode",{parentName:"h2"},"SaveChanges")," \u4e8b\u4ef6"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\u4e3a\u6240\u6709 ",(0,i.kt)("inlineCode",{parentName:"p"},"AppDbContext")," \u5b50\u7c7b\u90fd\u63d0\u4f9b\u4e86\u4e09\u4e2a\u53ef\u91cd\u5199\u7684\u65b9\u6cd5\uff0c\u8fd9\u4e09\u4e2a\u65b9\u6cd5\u5206\u522b\u7531\u4e09\u4e2a\u4e8b\u4ef6\u89e6\u53d1\uff1a"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"\u63d0\u4ea4\u66f4\u6539\u4e4b\u524d SavingChanges \u4e8b\u4ef6"),"\uff1a\u89e6\u53d1 ",(0,i.kt)("inlineCode",{parentName:"li"},"void SavingChangesEvent(DbContextEventData eventData, InterceptionResult result)")," \u65b9\u6cd5"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"\u63d0\u4ea4\u66f4\u6539\u4e4b\u540e SavedChanges \u4e8b\u4ef6"),"\uff1a\u89e6\u53d1 ",(0,i.kt)("inlineCode",{parentName:"li"},"void SavedChangesEvent(SaveChangesCompletedEventData eventData, int result)")," \u65b9\u6cd5"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"\u63d0\u4ea4\u66f4\u6539\u5931\u8d25 SaveChangesFailed \u4e8b\u4ef6"),"\uff1a\u89e6\u53d1 ",(0,i.kt)("inlineCode",{parentName:"li"},"void SaveChangesFailedEvent(DbContextErrorEventData eventData)")," \u65b9\u6cd5")),(0,i.kt)("p",null,"\u901a\u8fc7\u8fd9\u4e09\u4e2a\u4e8b\u4ef6\u6211\u4eec\u5c31\u53ef\u4ee5\u6355\u83b7\u6240\u6709\u66f4\u6539\u7684\u5b9e\u4f53\u7136\u540e\u4fdd\u5b58\u5230\u6570\u636e\u5e93\u5ba1\u8ba1\u65e5\u5fd7\u4e2d\u3002"),(0,i.kt)("h2",{id:"9223-\u5982\u4f55\u5b9e\u73b0"},"9.22.3 \u5982\u4f55\u5b9e\u73b0"),(0,i.kt)("h3",{id:"92231-\u6570\u636e\u5e93\u5ba1\u8ba1\u65e5\u5fd7"},"9.22.3.1 \u6570\u636e\u5e93\u5ba1\u8ba1\u65e5\u5fd7"),(0,i.kt)("p",null,"\u6211\u4eec\u53ea\u9700\u8981\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"AppDbContext")," \u5b50\u7c7b\u4e2d\u91cd\u5199 ",(0,i.kt)("inlineCode",{parentName:"p"},"SavingChanges")," \u4e8b\u4ef6\u5bf9\u5e94\u65b9\u6cd5\u5373\u53ef\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{23}","{23}":!0},'using Furion.DatabaseAccessor;\nusing Microsoft.AspNetCore.Http;\nusing Microsoft.EntityFrameworkCore;\nusing Microsoft.EntityFrameworkCore.Infrastructure;\nusing System;\nusing System.Linq;\nusing System.Security.AccessControl;\n\nnamespace Furion.EntityFramework.Core\n{\n [AppDbContext("Sqlite3ConnectionString")]\n public class FurionDbContext : AppDbContext\n {\n public FurionDbContext(DbContextOptions options) : base(options)\n {\n }\n\n /// \n /// \u91cd\u5199\u4fdd\u5b58\u4e4b\u524d\u4e8b\u4ef6\n /// \n /// \n /// \n protected override void SavingChangesEvent(DbContextEventData eventData, InterceptionResult result)\n {\n // \u83b7\u53d6\u5f53\u524d\u4e8b\u4ef6\u5bf9\u5e94\u4e0a\u4e0b\u6587\n var dbContext = eventData.Context;\n\n // \u5f3a\u5236\u91cd\u65b0\u68c0\u67e5\u4e00\u8fb9\u5b9e\u4f53\u66f4\u6539\u4fe1\u606f\n // dbContext.ChangeTracker.DetectChanges();\n\n // \u83b7\u53d6\u6240\u6709\u66f4\u6539\uff0c\u5220\u9664\uff0c\u65b0\u589e\u7684\u5b9e\u4f53\uff0c\u4f46\u6392\u9664\u5ba1\u8ba1\u5b9e\u4f53\uff08\u907f\u514d\u6b7b\u5faa\u73af\uff09\n var entities = dbContext.ChangeTracker.Entries()\n .Where(u => u.Entity.GetType() != typeof(Audit) && (u.State == EntityState.Modified || u.State == EntityState.Deleted || u.State == EntityState.Added))\n .ToList();\n\n // \u901a\u8fc7\u8bf7\u6c42\u4e2d\u83b7\u53d6\u5f53\u524d\u64cd\u4f5c\u4eba\n var userId = App.GetService().HttpContext.Items["UserId"];\n\n // \u83b7\u53d6\u6240\u6709\u5df2\u66f4\u6539\u7684\u5b9e\u4f53\n foreach (var entity in entities)\n {\n // \u83b7\u53d6\u5b9e\u4f53\u7c7b\u578b\n var entityType = entity.Entity.GetType();\n\n // \u83b7\u53d6\u6240\u6709\u5b9e\u4f53\u6709\u6548\u5c5e\u6027\uff0c\u6392\u9664 [NotMapper] \u5c5e\u6027\n var props = entity.OriginalValues.Properties;\n\n // \u83b7\u53d6\u5b9e\u4f53\u5f53\u524d\uff08\u73b0\u5728\uff09\u7684\u503c\n var currentValues = entity.CurrentValues;\n\n // \u83b7\u53d6\u6570\u636e\u5e93\u4e2d\u5b9e\u4f53\u7684\u503c\n var databaseValues = entity.GetDatabaseValues();\n\n // \u904d\u5386\u6240\u6709\u5c5e\u6027\n foreach (var prop in props)\n {\n // \u83b7\u53d6\u5c5e\u6027\u540d\n var propName = prop.Name;\n\n // \u83b7\u53d6\u73b0\u5728\u7684\u5b9e\u4f53\u503c\n var newValue = currentValues[propName];\n\n object oldValue = null;\n // \u5982\u679c\u662f\u65b0\u589e\u6570\u636e\uff0c\u5219 databaseValues \u4e3a\u7a7a\uff0c\u6240\u4ee5\u9700\u8981\u5224\u65ad\u4e00\u4e0b\n if (databaseValues != null)\n {\n oldValue = databaseValues[propName];\n }\n\n // \u63d2\u5165\u5ba1\u8ba1\u65e5\u5fd7\u8868\uff0cAudit \u662f\u4f60\u81ea\u5b9a\u4e49\u7684\u5b9e\u4f53\n dbContext.Set().Add(new Audit\n {\n Table = entityType.Name, // \u8868\u540d\n Column = propName, // \u66f4\u65b0\u7684\u5217\n NewValue = newValue, // \u65b0\u503c\n OldValue = oldValue, // \u65e7\u503c\n CreatedTime = DateTime.Now, // \u64cd\u4f5c\u65f6\u95f4\n UserId = userId, // \u64cd\u4f5c\u4eba\n Operate = entity.State.ToString(); // \u64cd\u4f5c\u65b9\u5f0f\uff1a\u65b0\u589e\u3001\u66f4\u65b0\u3001\u5220\u9664\n });\n }\n }\n }\n }\n}\n')),(0,i.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u5c0f\u77e5\u8bc6")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u5982\u679c\u5bf9\u6027\u80fd\u6709\u6240\u8981\u6c42\uff0c\u90a3\u4e48\u5efa\u8bae\u5ba1\u8ba1\u65e5\u5fd7\u901a\u8fc7 ",(0,i.kt)("inlineCode",{parentName:"p"},"\u65e5\u5fd7\u7ec4\u4ef6")," \u5199\u5165\u6570\u636e\u5e93\uff0c\u5982\u901a\u8fc7 ",(0,i.kt)("inlineCode",{parentName:"p"},"Nlog\u3001Log4Net")," \u8fd9\u4e9b\u7b49\uff1a"),(0,i.kt)("pre",{parentName:"div"},(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"// \u63d2\u5165\u5ba1\u8ba1\u65e5\u5fd7\u8868\ndbContext.Set().Add(new Audit\n{\n Table = entityType.Name, // \u8868\u540d\n Column = propName, // \u66f4\u65b0\u7684\u5217\n newValue = newValue, // \u65b0\u503c\n OldValue = oldValue, // \u65e7\u503c\n CreatedTime = DateTime.Now, // \u64cd\u4f5c\u65f6\u95f4\n UserId = userId, // \u64cd\u4f5c\u4eba\n Operate = entity.State.ToString(); // \u64cd\u4f5c\u65b9\u5f0f\uff1a\u65b0\u589e\u3001\u66f4\u65b0\u3001\u5220\u9664\n});\n")),(0,i.kt)("p",{parentName:"div"},"\u66ff\u6362\u4e3a\uff1a"),(0,i.kt)("pre",{parentName:"div"},(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"logger.Information(JsonConvert.SerializeObject(new Audit\n{\n Table = entityType.Name, // \u8868\u540d\n Column = propName, // \u66f4\u65b0\u7684\u5217\n newValue = newValue, // \u65b0\u503c\n OldValue = oldValue, // \u65e7\u503c\n CreatedTime = DateTime.Now, // \u64cd\u4f5c\u65f6\u95f4\n UserId = userId, // \u64cd\u4f5c\u4eba\n Operate = entity.State.ToString(); // \u64cd\u4f5c\u65b9\u5f0f\uff1a\u65b0\u589e\u3001\u66f4\u65b0\u3001\u5220\u9664\n}));\n")))),(0,i.kt)("p",null,"\u901a\u8fc7\u4e0a\u9762\u7684\u4f8b\u5b50\uff0c\u6211\u4eec\u5c31\u53ef\u4ee5\u5bf9\u6570\u636e\u5e93\u6240\u6709\u7684\u65b0\u589e\u3001\u66f4\u65b0\u3001\u5220\u9664\u8fdb\u884c\u76d1\u63a7\u4e86\u3002"),(0,i.kt)("h3",{id:"92232-\u6267\u884c-sql-\u5ba1\u8ba1\u65e5\u5fd7"},"9.22.3.2 \u6267\u884c ",(0,i.kt)("inlineCode",{parentName:"h3"},"sql")," \u5ba1\u8ba1\u65e5\u5fd7"),(0,i.kt)("p",null,"\u4e3b\u8981\u901a\u8fc7 ",(0,i.kt)("inlineCode",{parentName:"p"},"DbCommandInterceptor")," \u62e6\u622a\u5b9e\u73b0\uff0c\u5177\u4f53\u4f7f\u7528\u53ef\u67e5\u770b ",(0,i.kt)("a",{parentName:"p",href:"./dbcontext-Interceptor#92422-dbcommandinterceptor"},"\u6570\u636e\u5e93\u62e6\u622a\u5668 - DbCommandInterceptor"),"\uff0c\u5982\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{11}","{11}":!0},"using Microsoft.EntityFrameworkCore.Diagnostics;\nusing System.Data.Common;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace Furion.Web.Core\n{\n /// \n /// \u6267\u884c sql \u5ba1\u8ba1\n /// \n public sealed class SqlCommandAuditInterceptor : DbCommandInterceptor\n {\n public override InterceptionResult NonQueryExecuting(DbCommand command, CommandEventData eventData, InterceptionResult result)\n {\n // \u83b7\u53d6\u6267\u884c\u7684 sql \u8bed\u53e5\n var sql = command.CommandText;\n\n // \u83b7\u53d6\u6267\u884c\u7684 sql \u7c7b\u578b\uff0c\u662f sql \u8bed\u53e5\uff0c\u8fd8\u662f\u5b58\u50a8\u8fc7\u7a0b\uff0c\u8fd8\u662f\u5176\u4ed6\n var type = command.CommandType;\n\n // \u83b7\u53d6 sql \u4f20\u9012\u7684\u547d\u4ee4\u53c2\u6570\n var parameters = command.Parameters;\n\n // \u5199\u65e5\u5fd7~~~~\n\n return base.NonQueryExecuting(command, eventData, result);\n }\n\n public override ValueTask> NonQueryExecutingAsync(DbCommand command, CommandEventData eventData, InterceptionResult result, CancellationToken cancellationToken = default)\n {\n // \u83b7\u53d6\u6267\u884c\u7684 sql \u8bed\u53e5\n var sql = command.CommandText;\n\n // \u83b7\u53d6\u6267\u884c\u7684 sql \u7c7b\u578b\uff0c\u662f sql \u8bed\u53e5\uff0c\u8fd8\u662f\u5b58\u50a8\u8fc7\u7a0b\uff0c\u8fd8\u662f\u5176\u4ed6\n var type = command.CommandType;\n\n // \u83b7\u53d6 sql \u4f20\u9012\u7684\u547d\u4ee4\u53c2\u6570\n var parameters = command.Parameters;\n\n // \u5199\u65e5\u5fd7~~~~\n\n return base.NonQueryExecutingAsync(command, eventData, result, cancellationToken);\n }\n\n // \u5176\u4ed6 override\n }\n}\n")),(0,i.kt)("h3",{id:"92233-\u8bf7\u6c42\u5ba1\u8ba1\u65e5\u5fd7"},"9.22.3.3 \u8bf7\u6c42\u5ba1\u8ba1\u65e5\u5fd7"),(0,i.kt)("p",null,"\u9664\u4e86\u4e0a\u9762\u7684\u6570\u636e\u5e93\u589e\u5220\u6539\u5ba1\u8ba1\u65e5\u5fd7\u4ee5\u5916\uff0c\u6211\u4eec\u8fd8\u53ef\u4ee5\u5b9e\u73b0\u8bf7\u6c42\u5ba1\u8ba1\u65e5\u5fd7\uff0c\u4e5f\u5c31\u662f\u8bb0\u5f55\u8bf7\u6c42\u5730\u5740\uff0c\u6765\u6e90\u5730\u5740\uff0c\u64cd\u4f5c\u4eba\uff0c\u4f20\u9012\u53c2\u6570\u7b49\u3002\u8fd9\u4e2a\u4e3b\u8981\u662f\u901a\u8fc7 ",(0,i.kt)("inlineCode",{parentName:"p"},"IAsyncActionFilter")," \u7b5b\u9009\u5668\u5b9e\u73b0\uff0c\u5982\uff1a"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},"\u5b9a\u4e49 ",(0,i.kt)("inlineCode",{parentName:"li"},"RequestAuditFilter")," \u5e76\u5b9e\u73b0 ",(0,i.kt)("inlineCode",{parentName:"li"},"IAsyncActionFilter"))),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{9,45}","{9,45}":!0},'using Microsoft.AspNetCore.Http;\nusing Microsoft.AspNetCore.Mvc.Filters;\nusing System;\nusing System.Security.Claims;\nusing System.Threading.Tasks;\n\nnamespace Furion.Web.Core\n{\n public class RequestAuditFilter : IAsyncActionFilter\n {\n public async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)\n {\n //============== \u8fd9\u91cc\u662f\u6267\u884c\u65b9\u6cd5\u4e4b\u524d\u83b7\u53d6\u6570\u636e ====================\n\n // \u83b7\u53d6\u63a7\u5236\u5668\u3001\u8def\u7531\u4fe1\u606f\n var actionDescriptor = context.ActionDescriptor as ControllerActionDescriptor;\n\n // \u83b7\u53d6\u8bf7\u6c42\u7684\u65b9\u6cd5\n var method = actionDescriptor.MethodInfo;\n\n // \u83b7\u53d6 HttpContext \u548c HttpRequest \u5bf9\u8c61\n var httpContext = context.HttpContext;\n var httpRequest = httpContext.Request;\n\n // \u83b7\u53d6\u5ba2\u6237\u7aef Ipv4 \u5730\u5740\n var remoteIPv4 = httpContext.GetRemoteIpAddressToIPv4();\n\n // \u83b7\u53d6\u8bf7\u6c42\u7684 Url \u5730\u5740\n var requestUrl = httpRequest.GetRequestUrlAddress();\n\n // \u83b7\u53d6\u6765\u6e90 Url \u5730\u5740\n var refererUrl = httpRequest.GetRefererUrlAddress();\n\n // \u83b7\u53d6\u8bf7\u6c42\u53c2\u6570\uff08\u5199\u5165\u65e5\u5fd7\uff0c\u9700\u5e8f\u5217\u5316\u6210\u5b57\u7b26\u4e32\u540e\u5b58\u50a8\uff09\n var parameters = context.ActionArguments;\n\n // \u83b7\u53d6\u64cd\u4f5c\u4eba\uff08\u5fc5\u987b\u6388\u6743\u8bbf\u95ee\u624d\u6709\u503c\uff09"userId" \u4e3a\u4f60\u5b58\u50a8\u7684 claims type\uff0cjwt \u6388\u6743\u5bf9\u5e94\u7684\u662f payload \u4e2d\u5b58\u50a8\u7684\u952e\u540d\n var userId = httpContext.User?.FindFirstValue("userId");\n\n // \u8bf7\u6c42\u65f6\u95f4\n var requestedTime = DateTimeOffset.Now;\n\n\n //============== \u8fd9\u91cc\u662f\u6267\u884c\u65b9\u6cd5\u4e4b\u540e\u83b7\u53d6\u6570\u636e ====================\n var actionContext = await next();\n\n // \u83b7\u53d6\u8fd4\u56de\u7684\u7ed3\u679c\n var returnResult = actionContext.Result;\n\n // \u5224\u65ad\u662f\u5426\u8bf7\u6c42\u6210\u529f\uff0c\u6ca1\u6709\u5f02\u5e38\u5c31\u662f\u8bf7\u6c42\u6210\u529f\n var isRequestSucceed = actionContext.Exception == null;\n\n // \u8fd9\u91cc\u5199\u5165\u65e5\u5fd7~~~~~~~~~~~~~~~~~~~~\n }\n }\n}\n')),(0,i.kt)("ol",{start:2},(0,i.kt)("li",{parentName:"ol"},"\u6ce8\u518c ",(0,i.kt)("inlineCode",{parentName:"li"},"RequestAuditFilter")," \u7b5b\u9009\u5668")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"services.AddMvcFilter();\n")),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u5173\u4e8e\u7b5b\u9009\u5668\u6ce8\u518c\u987a\u5e8f")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u901a\u5e38\u5148\u6ce8\u518c\u7684\u4f1a\u5148\u6267\u884c\uff0c\u4e5f\u53ef\u4ee5\u901a\u8fc7\u5b9e\u73b0 ",(0,i.kt)("inlineCode",{parentName:"p"},"IOrderedFilter")," \u63a5\u53e3\u914d\u7f6e ",(0,i.kt)("inlineCode",{parentName:"p"},"Order")," \u5c5e\u6027\uff0c\u6570\u503c\u8d8a\u5c0f\uff0c\u8d8a\u5148\u6267\u884c\u3002"))),(0,i.kt)("h2",{id:"9224-\u53cd\u9988\u4e0e\u5efa\u8bae"},"9.22.4 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,i.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/9bd20b97.4f8181ac.js b/handbook/build/assets/js/9bd20b97.4f8181ac.js deleted file mode 100644 index 209c9e96d98..00000000000 --- a/handbook/build/assets/js/9bd20b97.4f8181ac.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[7094],{3905:function(e,t,n){n.d(t,{Zo:function(){return c},kt:function(){return d}});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var p=r.createContext({}),u=function(e){var t=r.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},c=function(e){var t=u(e.components);return r.createElement(p.Provider,{value:t},e.children)},m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},s=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,i=e.originalType,p=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),s=u(n),d=a,f=s["".concat(p,".").concat(d)]||s[d]||m[d]||i;return n?r.createElement(f,o(o({ref:t},c),{},{components:n})):r.createElement(f,o({ref:t},c))}));function d(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,o=new Array(i);o[0]=s;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l.mdxType="string"==typeof e?e:a,o[1]=l;for(var u=2;u=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var p=r.createContext({}),u=function(e){var t=r.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},c=function(e){var t=u(e.components);return r.createElement(p.Provider,{value:t},e.children)},m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},s=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,i=e.originalType,p=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),s=u(n),d=a,f=s["".concat(p,".").concat(d)]||s[d]||m[d]||i;return n?r.createElement(f,o(o({ref:t},c),{},{components:n})):r.createElement(f,o({ref:t},c))}));function d(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,o=new Array(i);o[0]=s;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l.mdxType="string"==typeof e?e:a,o[1]=l;for(var u=2;u=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var u=r.createContext({}),c=function(e){var t=r.useContext(u),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},d=function(e){var t=c(e.components);return r.createElement(u.Provider,{value:t},e.children)},p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},s=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,u=e.parentName,d=i(e,["components","mdxType","originalType","parentName"]),s=c(a),f=n,m=s["".concat(u,".").concat(f)]||s[f]||p[f]||o;return a?r.createElement(m,l(l({ref:t},d),{},{components:a})):r.createElement(m,l({ref:t},d))}));function f(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,l=new Array(o);l[0]=s;var i={};for(var u in t)hasOwnProperty.call(t,u)&&(i[u]=t[u]);i.originalType=e,i.mdxType="string"==typeof e?e:n,l[1]=i;for(var c=2;c=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var u=r.createContext({}),c=function(e){var t=r.useContext(u),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},d=function(e){var t=c(e.components);return r.createElement(u.Provider,{value:t},e.children)},p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},s=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,o=e.originalType,u=e.parentName,d=i(e,["components","mdxType","originalType","parentName"]),s=c(a),f=n,m=s["".concat(u,".").concat(f)]||s[f]||p[f]||o;return a?r.createElement(m,l(l({ref:t},d),{},{components:a})):r.createElement(m,l({ref:t},d))}));function f(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=a.length,l=new Array(o);l[0]=s;var i={};for(var u in t)hasOwnProperty.call(t,u)&&(i[u]=t[u]);i.originalType=e,i.mdxType="string"==typeof e?e:n,l[1]=i;for(var c=2;c=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var o=a.createContext({}),d=function(e){var t=a.useContext(o),n=t;return e&&(n="function"==typeof e?e(t):r(r({},t),e)),n},m=function(e){var t=d(e.components);return a.createElement(o.Provider,{value:t},e.children)},s={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},c=a.forwardRef((function(e,t){var n=e.components,i=e.mdxType,l=e.originalType,o=e.parentName,m=p(e,["components","mdxType","originalType","parentName"]),c=d(n),u=i,k=c["".concat(o,".").concat(u)]||c[u]||s[u]||l;return n?a.createElement(k,r(r({ref:t},m),{},{components:n})):a.createElement(k,r({ref:t},m))}));function u(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var l=n.length,r=new Array(l);r[0]=c;var p={};for(var o in t)hasOwnProperty.call(t,o)&&(p[o]=t[o]);p.originalType=e,p.mdxType="string"==typeof e?e:i,r[1]=p;for(var d=2;d();\n')),(0,l.kt)("p",null,"\u5982\u9700\u8de8\u5e93\u67e5\u8be2\uff0c\u9700\u7528\u5230\u6570\u636e\u5e93\u6280\u672f\uff0c\u5982 ",(0,l.kt)("inlineCode",{parentName:"p"},"SqlServer")," \u94fe\u63a5\u670d\u52a1\u5668\u6216\u540c\u4e49\u8bcd\u3002"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("strong",{parentName:"li"},"\u52a8\u6001\u5207\u6362\u6570\u636e\u5e93\u8868"))),(0,l.kt)("p",null,"\u7b2c\u4e00\u6b65\u3001\u914d\u7f6e\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u7279\u6027",(0,l.kt)("inlineCode",{parentName:"p"},"[AppDbContext( Mode=DbContextMode.Dynamic)]")),(0,l.kt)("p",null,"\u7b2c\u4e8c\u6b65\u3001\u9700\u8981\u52a8\u6001\u4fee\u6539\u8868\u540d\u7684\u5b9e\u4f53\u7ee7\u627f ",(0,l.kt)("inlineCode",{parentName:"p"},"IEntityMutableTable")," \u63a5\u53e3\uff0c\u5e76\u5b9e\u73b0 ",(0,l.kt)("inlineCode",{parentName:"p"},"GetTableName()")," \u8fd4\u56de\u8868\u540d\u65b9\u6cd5"),(0,l.kt)("p",null,"\u6700\u540e\u901a\u8fc7 ",(0,l.kt)("inlineCode",{parentName:"p"},"BuildChange")," \u5207\u6362\u5373\u53ef\u3002"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-cs"},"var (rep, scoped) = repository.BuildChange();\n")),(0,l.kt)("p",null,"\u8c03\u7528 ",(0,l.kt)("inlineCode",{parentName:"p"},"BuildChange")," \u65b9\u6cd5\u4e4b\u540e\u4f1a\u81ea\u52a8\u8c03\u7528 ",(0,l.kt)("inlineCode",{parentName:"p"},"GetTableName()")," \u65b9\u6cd5\u3002"),(0,l.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,l.kt)("div",{parentName:"div",className:"admonition-heading"},(0,l.kt)("h5",{parentName:"div"},(0,l.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,l.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,l.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e86\u89e3\u66f4\u591a")),(0,l.kt)("div",{parentName:"div",className:"admonition-content"},(0,l.kt)("p",{parentName:"div"},"\u60f3\u4e86\u89e3\u66f4\u591a ",(0,l.kt)("inlineCode",{parentName:"p"},"DynamicModelCacheKeyFactory")," \u77e5\u8bc6\u53ef\u67e5\u9605 ",(0,l.kt)("a",{parentName:"p",href:"https://docs.microsoft.com/zh-cn/ef/core/modeling/dynamic-model"},"EF Core - \u591a\u4e2a\u6a21\u578b\u4e4b\u95f4\u4ea4\u66ff")," \u7ae0\u8282\u3002"))),(0,l.kt)("h2",{id:"9287-\u53cd\u9988\u4e0e\u5efa\u8bae"},"9.28.7 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,l.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,l.kt)("div",{parentName:"div",className:"admonition-heading"},(0,l.kt)("h5",{parentName:"div"},(0,l.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,l.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,l.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,l.kt)("div",{parentName:"div",className:"admonition-content"},(0,l.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,l.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/9ce2543b.3c49bc2b.js b/handbook/build/assets/js/9ce2543b.3c49bc2b.js new file mode 100644 index 00000000000..0ad0b69860c --- /dev/null +++ b/handbook/build/assets/js/9ce2543b.3c49bc2b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[6467],{3905:function(e,t,n){n.d(t,{Zo:function(){return m},kt:function(){return u}});var a=n(7294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function r(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var o=a.createContext({}),d=function(e){var t=a.useContext(o),n=t;return e&&(n="function"==typeof e?e(t):r(r({},t),e)),n},m=function(e){var t=d(e.components);return a.createElement(o.Provider,{value:t},e.children)},s={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},c=a.forwardRef((function(e,t){var n=e.components,i=e.mdxType,l=e.originalType,o=e.parentName,m=p(e,["components","mdxType","originalType","parentName"]),c=d(n),u=i,k=c["".concat(o,".").concat(u)]||c[u]||s[u]||l;return n?a.createElement(k,r(r({ref:t},m),{},{components:n})):a.createElement(k,r({ref:t},m))}));function u(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var l=n.length,r=new Array(l);r[0]=c;var p={};for(var o in t)hasOwnProperty.call(t,o)&&(p[o]=t[o]);p.originalType=e,p.mdxType="string"==typeof e?e:i,r[1]=p;for(var d=2;d();\n')),(0,l.kt)("p",null,"\u5982\u9700\u8de8\u5e93\u67e5\u8be2\uff0c\u9700\u7528\u5230\u6570\u636e\u5e93\u6280\u672f\uff0c\u5982 ",(0,l.kt)("inlineCode",{parentName:"p"},"SqlServer")," \u94fe\u63a5\u670d\u52a1\u5668\u6216\u540c\u4e49\u8bcd\u3002"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("strong",{parentName:"li"},"\u52a8\u6001\u5207\u6362\u6570\u636e\u5e93\u8868"))),(0,l.kt)("p",null,"\u7b2c\u4e00\u6b65\u3001\u914d\u7f6e\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u7279\u6027",(0,l.kt)("inlineCode",{parentName:"p"},"[AppDbContext( Mode=DbContextMode.Dynamic)]")),(0,l.kt)("p",null,"\u7b2c\u4e8c\u6b65\u3001\u9700\u8981\u52a8\u6001\u4fee\u6539\u8868\u540d\u7684\u5b9e\u4f53\u7ee7\u627f ",(0,l.kt)("inlineCode",{parentName:"p"},"IEntityMutableTable")," \u63a5\u53e3\uff0c\u5e76\u5b9e\u73b0 ",(0,l.kt)("inlineCode",{parentName:"p"},"GetTableName()")," \u8fd4\u56de\u8868\u540d\u65b9\u6cd5"),(0,l.kt)("p",null,"\u6700\u540e\u901a\u8fc7 ",(0,l.kt)("inlineCode",{parentName:"p"},"BuildChange")," \u5207\u6362\u5373\u53ef\u3002"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-cs"},"var (rep, scoped) = repository.BuildChange();\n")),(0,l.kt)("p",null,"\u8c03\u7528 ",(0,l.kt)("inlineCode",{parentName:"p"},"BuildChange")," \u65b9\u6cd5\u4e4b\u540e\u4f1a\u81ea\u52a8\u8c03\u7528 ",(0,l.kt)("inlineCode",{parentName:"p"},"GetTableName()")," \u65b9\u6cd5\u3002"),(0,l.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,l.kt)("div",{parentName:"div",className:"admonition-heading"},(0,l.kt)("h5",{parentName:"div"},(0,l.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,l.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,l.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e86\u89e3\u66f4\u591a")),(0,l.kt)("div",{parentName:"div",className:"admonition-content"},(0,l.kt)("p",{parentName:"div"},"\u60f3\u4e86\u89e3\u66f4\u591a ",(0,l.kt)("inlineCode",{parentName:"p"},"DynamicModelCacheKeyFactory")," \u77e5\u8bc6\u53ef\u67e5\u9605 ",(0,l.kt)("a",{parentName:"p",href:"https://docs.microsoft.com/zh-cn/ef/core/modeling/dynamic-model"},"EF Core - \u591a\u4e2a\u6a21\u578b\u4e4b\u95f4\u4ea4\u66ff")," \u7ae0\u8282\u3002"))),(0,l.kt)("h2",{id:"9287-\u53cd\u9988\u4e0e\u5efa\u8bae"},"9.28.7 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,l.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,l.kt)("div",{parentName:"div",className:"admonition-heading"},(0,l.kt)("h5",{parentName:"div"},(0,l.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,l.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,l.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,l.kt)("div",{parentName:"div",className:"admonition-content"},(0,l.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,l.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/9e4087bc.8908fa7a.js b/handbook/build/assets/js/9e4087bc.8908fa7a.js new file mode 100644 index 00000000000..de0b7cf6ab8 --- /dev/null +++ b/handbook/build/assets/js/9e4087bc.8908fa7a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[3608,613],{3012:function(e,t,r){r.r(t),r.d(t,{default:function(){return i}});var a=r(7294),l=r(4328),n=r(6742),o=r(4973);function c(e){var t=e.year,r=e.posts;return a.createElement(a.Fragment,null,a.createElement("h3",null,t),a.createElement("ul",null,r.map((function(e){return a.createElement("li",{key:e.metadata.date},a.createElement(n.Z,{to:e.metadata.permalink},e.metadata.formattedDate," - ",e.metadata.title))}))))}function m(e){var t=e.years;return a.createElement("section",{className:"margin-vert--lg"},a.createElement("div",{className:"container"},a.createElement("div",{className:"row"},t.map((function(e,t){return a.createElement("div",{key:t,className:"col col--4 margin-vert--lg"},a.createElement(c,e))})))))}function i(e){var t,r,n=e.archive,c=(0,o.I)({id:"theme.blog.archive.title",message:"Archive",description:"The page & hero title of the blog archive page"}),i=(0,o.I)({id:"theme.blog.archive.description",message:"Archive",description:"The page & hero description of the blog archive page"}),s=(t=n.blogPosts,r=t.reduceRight((function(e,t){var r=t.metadata.date.split("-")[0],a=e.get(r)||[];return e.set(r,[t].concat(a))}),new Map),Array.from(r,(function(e){return{year:e[0],posts:e[1]}})));return a.createElement(l.Z,{title:c,description:i},a.createElement("header",{className:"hero hero--primary"},a.createElement("div",{className:"container"},a.createElement("h1",{className:"hero__title"},c),a.createElement("p",{className:"hero__subtitle"},i))),a.createElement("main",null,s.length>0&&a.createElement(m,{years:s})))}},546:function(e,t,r){r.d(t,{Z:function(){return d}});var a=r(7462),l=r(3366),n=r(7294),o=r(6010),c=r(6742),m=r(941),i=r(4996),s="footerLogoLink_qW4Z",u=["to","href","label","prependBaseUrlToHref"];function f(e){var t=e.to,r=e.href,o=e.label,m=e.prependBaseUrlToHref,s=(0,l.Z)(e,u),f=(0,i.Z)(t),h=(0,i.Z)(r,{forcePrependBaseUrl:!0});return n.createElement(c.Z,(0,a.Z)({className:"footer__link-item"},r?{target:"_blank",rel:"noopener noreferrer",href:m?h:r}:{to:f},s),o)}var h=function(e){var t=e.url,r=e.alt;return n.createElement("img",{className:"footer__logo",alt:r,src:t,style:{background:"#fff",padding:"5px 10px"}})};var d=function(){var e=(0,m.LU)().footer,t=e||{},r=t.copyright,a=t.links,l=void 0===a?[]:a,c=t.logo,u=void 0===c?{}:c,d=(0,i.Z)(u.src);return e?n.createElement("footer",{className:(0,o.Z)("footer",{"footer--dark":"dark"===e.style})},n.createElement("div",{className:"container"},l&&l.length>0&&n.createElement("div",{className:"row footer__links"},l.map((function(e,t){return n.createElement("div",{key:t,className:"col footer__col"},null!=e.title?n.createElement("h4",{className:"footer__title"},e.title):null,null!=e.items&&Array.isArray(e.items)&&e.items.length>0?n.createElement("ul",{className:"footer__items"},e.items.map((function(e,t){return e.html?n.createElement("li",{key:t,className:"footer__item",dangerouslySetInnerHTML:{__html:e.html}}):n.createElement("li",{key:e.href||e.to,className:"footer__item"},n.createElement(f,e))}))):null)}))),(u||r)&&n.createElement("div",{className:"footer__bottom text--center"},u&&u.src&&n.createElement("div",{className:"margin-bottom--sm"},u.href?n.createElement("a",{href:u.href,target:"_blank",rel:"noopener noreferrer",className:s},n.createElement(h,{alt:u.alt,url:d})):n.createElement(h,{alt:u.alt,url:d})),r?n.createElement("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:r}}):null))):null}}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/9e7ef9fa.5eaf2198.js b/handbook/build/assets/js/9e7ef9fa.5eaf2198.js new file mode 100644 index 00000000000..35f81f8e717 --- /dev/null +++ b/handbook/build/assets/js/9e7ef9fa.5eaf2198.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[1866],{3905:function(e,n,t){t.d(n,{Zo:function(){return d},kt:function(){return u}});var i=t(7294);function a(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function r(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);n&&(i=i.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,i)}return t}function o(e){for(var n=1;n=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var s=i.createContext({}),p=function(e){var n=i.useContext(s),t=n;return e&&(t="function"==typeof e?e(n):o(o({},n),e)),t},d=function(e){var n=p(e.components);return i.createElement(s.Provider,{value:n},e.children)},m={inlineCode:"code",wrapper:function(e){var n=e.children;return i.createElement(i.Fragment,{},n)}},c=i.forwardRef((function(e,n){var t=e.components,a=e.mdxType,r=e.originalType,s=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),c=p(t),u=a,k=c["".concat(s,".").concat(u)]||c[u]||m[u]||r;return t?i.createElement(k,o(o({ref:n},d),{},{components:t})):i.createElement(k,o({ref:n},d))}));function u(e,n){var t=arguments,a=n&&n.mdxType;if("string"==typeof e||a){var r=t.length,o=new Array(r);o[0]=c;var l={};for(var s in n)hasOwnProperty.call(n,s)&&(l[s]=n[s]);l.originalType=e,l.mdxType="string"==typeof e?e:a,o[1]=l;for(var p=2;p\u7a0b\u5e8f\u5305\u7ba1\u7406\u63a7\u5236\u53f0",id:"91921-\u6253\u5f00-\u7a0b\u5e8f\u5305\u7ba1\u7406\u63a7\u5236\u53f0",children:[]},{value:"9.19.2.2 \u5207\u6362\u9ed8\u8ba4\u9879\u76ee",id:"91922-\u5207\u6362\u9ed8\u8ba4\u9879\u76ee",children:[]},{value:"9.19.2.3 \u8f93\u5165 cli.ps1 \u547d\u4ee4",id:"91923-\u8f93\u5165-clips1-\u547d\u4ee4",children:[]}]},{value:"9.19.3 \u754c\u9762\u64cd\u4f5c\u6a21\u5f0f",id:"9193-\u754c\u9762\u64cd\u4f5c\u6a21\u5f0f",children:[{value:"9.19.3.1 \u542f\u52a8\u754c\u9762\u64cd\u4f5c",id:"91931-\u542f\u52a8\u754c\u9762\u64cd\u4f5c",children:[]},{value:"9.19.3.2 \u52a0\u8f7d\u6570\u636e\u5e93\u8868",id:"91932-\u52a0\u8f7d\u6570\u636e\u5e93\u8868",children:[]},{value:"9.19.3.3 \u9009\u62e9\u8868\u6216\u89c6\u56fe\u751f\u6210",id:"91933-\u9009\u62e9\u8868\u6216\u89c6\u56fe\u751f\u6210",children:[]},{value:"9.19.3.4 \u9009\u62e9\u4fdd\u5b58\u76ee\u5f55",id:"91934-\u9009\u62e9\u4fdd\u5b58\u76ee\u5f55",children:[]},{value:"9.19.3.5 \u751f\u6210\u6700\u7ec8\u5b9e\u4f53\u4ee3\u7801",id:"91935-\u751f\u6210\u6700\u7ec8\u5b9e\u4f53\u4ee3\u7801",children:[]}]},{value:"9.19.4 \u547d\u4ee4\u53c2\u6570\u914d\u7f6e",id:"9194-\u547d\u4ee4\u53c2\u6570\u914d\u7f6e",children:[]},{value:"9.19.5 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"9195-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],c={toc:m};function u(e){var n=e.components,t=(0,a.Z)(e,l);return(0,r.kt)("wrapper",(0,i.Z)({},c,t,{components:n,mdxType:"MDXLayout"}),(0,r.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u5173\u4e8e\u811a\u672c")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u5728\u9605\u8bfb\u4e0b\u9762\u6587\u6863\u4e4b\u524d\uff0c\u5fc5\u987b\u628a",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6e90\u7801\u6587\u4ef6\u5939\u4e0b\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"tools/cli.ps1")," \u6587\u4ef6\u62f7\u8d1d\u5230\u672c\u5730\u4e2d\u3002\u800c\u4e14 ",(0,r.kt)("inlineCode",{parentName:"p"},"Fur.Web.Entry")," \u5c42\u9700\u8981\u5b89\u88c5 ",(0,r.kt)("inlineCode",{parentName:"p"},"Microsoft.EntityFrameworkCore.Tools")," \u5305\u3002"))),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7cfb\u7edf\u63d0\u793a\u7981\u6b62\u8fd0\u884c\u811a\u672c\u89e3\u51b3")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u5982\u679c\u51fa\u73b0 ",(0,r.kt)("inlineCode",{parentName:"p"},"cli.ps1")," \u65e0\u6cd5\u8fd0\u884c\u7684\u60c5\u51b5\uff0c\u5982\u63d0\u793a\uff1a",(0,r.kt)("inlineCode",{parentName:"p"},"\u201c\u56e0\u4e3a\u5728\u6b64\u7cfb\u7edf\u4e0a\u7981\u6b62\u8fd0\u884c\u811a\u672c\u201d"),"\uff0c\u53ea\u9700\u8981\u6253\u5f00\u7cfb\u7edf\u7ba1\u7406\u5458 ",(0,r.kt)("inlineCode",{parentName:"p"},"CMD/Powershell")," \u6267\u884c\uff1a",(0,r.kt)("inlineCode",{parentName:"p"},"set-ExecutionPolicy RemoteSigned")," \u547d\u4ee4\u5e76\u6839\u636e\u64cd\u4f5c\u63d0\u793a\u8f93\u5165 ",(0,r.kt)("inlineCode",{parentName:"p"},"A")," \u5373\u53ef\u3002"),(0,r.kt)("p",{parentName:"div"},"\u4e4b\u540e\u91cd\u542f ",(0,r.kt)("inlineCode",{parentName:"p"},"Visual Studio")," \u5de5\u5177\u3002"))),(0,r.kt)("h2",{id:"9191-\u6570\u636e\u5e93\u5f00\u53d1\u65b9\u5f0f"},"9.19.1 \u6570\u636e\u5e93\u5f00\u53d1\u65b9\u5f0f"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u63d0\u4f9b\u4e24\u79cd\u4e3b\u8981\u65b9\u6cd5\u6765 ",(0,r.kt)("strong",{parentName:"p"},"\u4fdd\u6301\u5b9e\u4f53\u6a21\u578b\u548c\u6570\u636e\u5e93\u67b6\u6784\u540c\u6b65"),"\u3002"),(0,r.kt)("p",null,"\u81f3\u4e8e\u6211\u4eec\u5e94\u8be5\u9009\u7528\u54ea\u4e2a\u65b9\u6cd5\uff0c\u8bf7\u786e\u5b9a\u4f60\u662f\u5e0c\u671b\u4ee5\u5b9e\u4f53\u6a21\u578b\u4e3a\u51c6\u8fd8\u662f\u4ee5\u6570\u636e\u5e93\u4e3a\u51c6\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"\u5982\u679c\u5e0c\u671b ",(0,r.kt)("strong",{parentName:"p"},"\u4ee5\u5b9e\u4f53\u6a21\u578b\u4e3a\u51c6"),"\uff0c\u8bf7\u4f7f\u7528\u6b63\u5411\u5de5\u7a0b\uff08Code First\uff09\u3002 \u5bf9\u5b9e\u4f53\u6a21\u578b\u8fdb\u884c\u66f4\u6539\u65f6\uff0c\u6b64\u65b9\u6cd5\u4f1a\u4ee5\u589e\u91cf\u65b9\u5f0f\u5c06\u76f8\u5e94\u67b6\u6784\u66f4\u6539\u5e94\u7528\u5230\u6570\u636e\u5e93\uff0c\u4ee5\u4f7f\u6570\u636e\u5e93\u4fdd\u6301\u4e0e\u5b9e\u4f53\u6a21\u578b\u517c\u5bb9\u3002")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"\u5982\u679c\u5e0c\u671b ",(0,r.kt)("strong",{parentName:"p"},"\u4ee5\u6570\u636e\u5e93\u67b6\u6784\u4e3a\u51c6"),"\uff0c\u8bf7\u4f7f\u7528\u53cd\u5411\u5de5\u7a0b\uff08Database First\uff09\u3002 \u4f7f\u7528\u6b64\u65b9\u6cd5\uff0c\u53ef\u901a\u8fc7\u5c06\u6570\u636e\u5e93\u67b6\u6784\u53cd\u5411\u5de5\u7a0b\u5230\u5b9e\u4f53\u6a21\u578b\u6765\u751f\u6210\u76f8\u5e94\u7684\u5b9e\u4f53\u7c7b\u578b\u3002"))),(0,r.kt)("p",null,"\u672c\u7ae0\u8282\u662f ",(0,r.kt)("strong",{parentName:"p"},"\u53cd\u5411\u5de5\u7a0b\uff08Database First\uff09")," \u7684\u76f8\u5173\u5185\u5bb9\u3002"),(0,r.kt)("h2",{id:"9192-\u64cd\u4f5c\u6307\u5357"},"9.19.2 \u64cd\u4f5c\u6307\u5357"),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u64cd\u4f5c\u4e4b\u524d\u6ce8\u610f\u4e8b\u9879")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u76ee\u524d ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion Tools")," \u751f\u6210\u5de5\u5177",(0,r.kt)("strong",{parentName:"p"},"\u9ed8\u8ba4\u4e0d\u652f\u6301\u4efb\u4f55\u6570\u636e\u5e93"),"\u751f\u6210\uff0c\u6240\u4ee5\u5982\u9700\u751f\u6210\u7279\u5b9a\u6570\u636e\u5e93\u7684\u4ee3\u7801\uff0c\u53ea\u9700\u8981\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion.EntityFrameworkCore.Core")," \u5b89\u88c5\u5bf9\u5e94\u7684\u6570\u636e\u5e93\u5305\u5373\u53ef\uff1a"),(0,r.kt)("p",{parentName:"div"},"\u5404\u4e2a\u6570\u636e\u5e93\u7684\u5305\u53ef\u67e5\u9605\uff1a",(0,r.kt)("a",{parentName:"p",href:"dbcontext-multi-database"},"\u591a\u6570\u636e\u5e93\u64cd\u4f5c-\u6570\u636e\u5e93\u63d0\u4f9b\u5668\u5bf9\u5e94\u5305")),(0,r.kt)("p",{parentName:"div"},"\u53e6\u5916\uff0c\u53ea\u6709 ",(0,r.kt)("inlineCode",{parentName:"p"},"SqlServer")," \u6570\u636e\u5e93\u652f\u6301\u53ef\u89c6\u5316 ",(0,r.kt)("inlineCode",{parentName:"p"},"GUI")," \u64cd\u4f5c\uff0c\u5176\u4ed6\u7684\u53ea\u80fd\u547d\u4ee4\u884c\u64cd\u4f5c\u3002"))),(0,r.kt)("h3",{id:"91921-\u6253\u5f00-\u7a0b\u5e8f\u5305\u7ba1\u7406\u63a7\u5236\u53f0"},"9.19.2.1 \u6253\u5f00 ",(0,r.kt)("inlineCode",{parentName:"h3"},"\u7a0b\u5e8f\u5305\u7ba1\u7406\u63a7\u5236\u53f0")),(0,r.kt)("p",null,"\u6ce8\u610f\uff1a\u5f00\u59cb\u4e4b\u524d\u5148\u628a ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion.Web.Entry")," \u8bbe\u4e3a\u542f\u52a8\u9879\u76ee\u3002"),(0,r.kt)("img",{src:(0,o.Z)("img/dbfirst1.png")}),(0,r.kt)("h3",{id:"91922-\u5207\u6362\u9ed8\u8ba4\u9879\u76ee"},"9.19.2.2 \u5207\u6362\u9ed8\u8ba4\u9879\u76ee"),(0,r.kt)("p",null,"\u5c06 ",(0,r.kt)("inlineCode",{parentName:"p"},"\u7a0b\u5e8f\u5305\u7ba1\u7406\u63a7\u5236\u53f0")," \u9ed8\u8ba4\u9879\u76ee\u8bbe\u7f6e\u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion.Core"),"\uff0c\u5982\u679c\u60a8\u662f\u5176\u4ed6\u540d\u5b57\uff0c\u5219\u5207\u6362\u5bf9\u5e94\u5373\u53ef\u3002"),(0,r.kt)("img",{src:(0,o.Z)("img/dbfirst2.png")}),(0,r.kt)("h3",{id:"91923-\u8f93\u5165-clips1-\u547d\u4ee4"},"9.19.2.3 \u8f93\u5165 ",(0,r.kt)("inlineCode",{parentName:"h3"},"cli.ps1")," \u547d\u4ee4"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-shell"},"PM> Show-Command ../tools/cli.ps1\n")),(0,r.kt)("img",{src:(0,o.Z)("img/df10.png")}),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u5176\u4ed6\u65b9\u5f0f")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u9664\u4e86\u91c7\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"Show-Command")," \u65b9\u5f0f\u4ee5\u5916\uff0c\u8fd8\u53ef\u4ee5\u76f4\u63a5\u6267\u884c\u547d\u4ee4\uff1a"),(0,r.kt)("pre",{parentName:"div"},(0,r.kt)("code",{parentName:"pre",className:"language-shell"},' &"../tools/cli.ps1" -DbProvider "EFCore\u6570\u636e\u5e93\u7a0b\u5e8f\u96c6\u540d" -CoreProject "\u4f60\u7684Core\u5c42" -EntryProject "\u4f60\u7684\u542f\u52a8\u5c42" -ConnectionName "\u8fde\u63a5\u5b57\u7b26\u4e32\u7684 [key]"\n')))),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u5c0f\u63d0\u793a")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u5982\u679c\u4f7f\u7528\u7684\u662f ",(0,r.kt)("inlineCode",{parentName:"p"},"SqlServer")," \u6570\u636e\u5e93\uff0c\u5219\u9ed8\u8ba4\u4e0d\u9700\u8981\u6307\u5b9a ",(0,r.kt)("inlineCode",{parentName:"p"},"-DbProvider")," \u53c2\u6570\u3002"))),(0,r.kt)("p",null,"\u5982\u679c\u4e0d\u6e05\u695a\u5f53\u524d\u8fd0\u884c\u73af\u5883\u7684\u8def\u5f84\uff0c\u53ef\u4ee5\u8f93\u5165 ",(0,r.kt)("inlineCode",{parentName:"p"},"pwd")," \u67e5\u770b\u3002"),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u5173\u4e8e\u6570\u636e\u5e93\u547d\u540d")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u5982\u679c\u9700\u8981\u4fdd\u6301\u548c\u6570\u636e\u5e93\u4e00\u6a21\u4e00\u6837\u7684\u547d\u540d\uff0c\u5219\u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"-UseDatabaseNames")," \u53c2\u6570\u6307\u5b9a\uff0c\u5982\uff1a"),(0,r.kt)("pre",{parentName:"div"},(0,r.kt)("code",{parentName:"pre",className:"language-cs"},' &"../tools/cli.ps1" -UseDatabaseNames\n')))),(0,r.kt)("img",{src:(0,o.Z)("img/dbfirst3.png")}),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7b49\u5f85\u8f93\u5165")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u6267\u884c\u4e0a\u9762\u547d\u4ee4\u540e\uff0c\u6b64\u65f6 ",(0,r.kt)("inlineCode",{parentName:"p"},"Cli")," \u6709\u4e00\u4e2a\u7b49\u5f85\u8f93\u5165\u63d0\u793a\uff1a"),(0,r.kt)("pre",{parentName:"div"},(0,r.kt)("code",{parentName:"pre",className:"language-shell"},"Furion Tools v1.0.0 \u8bf7\u952e\u5165\u64cd\u4f5c\u7c7b\u578b\uff1a[G] \u754c\u9762\u64cd\u4f5c\uff0c[\u4efb\u610f\u5b57\u7b26] \u547d\u4ee4\u884c\u64cd\u4f5c\nFurion Tools v1.0.0 \u60a8\u7684\u8f93\u5165\u662f:\n")),(0,r.kt)("p",{parentName:"div"},(0,r.kt)("strong",{parentName:"p"},"\u8f93\u5165\u5927\u5199 ",(0,r.kt)("inlineCode",{parentName:"strong"},"G")," \u8fdb\u5165\u754c\u9762\u64cd\u4f5c\u6a21\u5f0f\uff0c\u5176\u4ed6\u4efb\u610f\u5b57\u7b26\u8fdb\u5165\u547d\u4ee4\u884c\u64cd\u4f5c\u6a21\u5f0f\u3002")))),(0,r.kt)("div",{className:"admonition admonition-caution alert alert--warning"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 16 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"}))),"\u6ce8\u610f\u4e8b\u9879")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u76ee\u524d\u53ea\u6709 ",(0,r.kt)("inlineCode",{parentName:"p"},"Sql Server")," \u6570\u636e\u5e93\u624d\u652f\u6301 ",(0,r.kt)("inlineCode",{parentName:"p"},"GUI \u754c\u9762\u64cd\u4f5c\u6a21\u5f0f"),"\uff0c\u5176\u4ed6\u6570\u636e\u5e93\u8bf7\u4f7f\u7528\u547d\u4ee4\u884c\u6a21\u5f0f\u3002"))),(0,r.kt)("h2",{id:"9193-\u754c\u9762\u64cd\u4f5c\u6a21\u5f0f"},"9.19.3 \u754c\u9762\u64cd\u4f5c\u6a21\u5f0f"),(0,r.kt)("h3",{id:"91931-\u542f\u52a8\u754c\u9762\u64cd\u4f5c"},"9.19.3.1 \u542f\u52a8\u754c\u9762\u64cd\u4f5c"),(0,r.kt)("p",null,"\u5f53\u6211\u4eec\u8f93\u5165 ",(0,r.kt)("inlineCode",{parentName:"p"},"G")," \u65f6\uff0c\u5c06\u6253\u5f00 ",(0,r.kt)("inlineCode",{parentName:"p"},"GUI")," \u754c\u9762\u64cd\u4f5c\u6a21\u5f0f\uff0c\u5982\uff1a"),(0,r.kt)("img",{src:(0,o.Z)("img/dbfirst4.png")}),(0,r.kt)("p",null,"\u8fd9\u65f6\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"Furion Tools")," \u4f1a\u81ea\u52a8\u67e5\u627e\u6240\u6709\u6570\u636e\u5e93\u914d\u7f6e\u8fde\u63a5\u5b57\u7b26\u4e32\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},".json")," \u6587\u4ef6\uff1a"),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u6ce8\u610f\u4e8b\u9879")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u6570\u636e\u5e93\u8fde\u63a5\u5b57\u7b26\u4e32\u914d\u7f6e\u9879\u9700\u5199\u5230 ",(0,r.kt)("inlineCode",{parentName:"p"},"json")," \u914d\u7f6e\u6587\u4ef6\u4e2d\uff0c\u4e14\u6839\u8282\u70b9\u9700\u8981\u5199\u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"ConnectionStrings")," \u3002"))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json",metastring:"{12-13}","{12-13}":!0},'{\n "Logging": {\n "LogLevel": {\n "Default": "Information",\n "Microsoft": "Warning",\n "Microsoft.Hosting.Lifetime": "Information",\n "Microsoft.EntityFrameworkCore": "Information"\n }\n },\n "AllowedHosts": "*",\n "ConnectionStrings": {\n "DbConnectionString": "Server=localhost;Database=Furion;User=sa;Password=000000;MultipleActiveResultSets=True;",\n "Sqlite3ConnectionString": "Data Source=./Furion.db"\n }\n}\n')),(0,r.kt)("h3",{id:"91932-\u52a0\u8f7d\u6570\u636e\u5e93\u8868"},"9.19.3.2 \u52a0\u8f7d\u6570\u636e\u5e93\u8868"),(0,r.kt)("p",null,"\u9009\u62e9\u8fde\u63a5\u5b57\u7b26\u4e32\u4e4b\u540e\uff0c\u70b9\u51fb ",(0,r.kt)("inlineCode",{parentName:"p"},"\u52a0\u8f7d\u6570\u636e\u5e93\u8868\u548c\u89c6\u56fe")," \u6309\u94ae\u52a0\u8f7d\u3002"),(0,r.kt)("img",{src:(0,o.Z)("img/dbfirst5.png")}),(0,r.kt)("h3",{id:"91933-\u9009\u62e9\u8868\u6216\u89c6\u56fe\u751f\u6210"},"9.19.3.3 \u9009\u62e9\u8868\u6216\u89c6\u56fe\u751f\u6210"),(0,r.kt)("p",null,"\u52a0\u8f7d\u8868\u5b8c\u6210\u540e\uff0c\u53ef\u4ee5\u9009\u62e9\u60a8\u8981\u751f\u6210\u7684\u8868\u6216\u89c6\u56fe\uff0c",(0,r.kt)("strong",{parentName:"p"},"\u652f\u6301\u591a\u9009")),(0,r.kt)("img",{src:(0,o.Z)("img/dbfirst6.png")}),(0,r.kt)("p",null,"\u70b9\u51fb\u5e95\u90e8\u6309\u94ae ",(0,r.kt)("inlineCode",{parentName:"p"},"\u7acb\u5373\u751f\u6210")),(0,r.kt)("h3",{id:"91934-\u9009\u62e9\u4fdd\u5b58\u76ee\u5f55"},"9.19.3.4 \u9009\u62e9\u4fdd\u5b58\u76ee\u5f55"),(0,r.kt)("p",null,"\u70b9\u51fb ",(0,r.kt)("inlineCode",{parentName:"p"},"\u7acb\u5373\u751f\u6210")," \u6309\u94ae\u540e\uff0c\u4f1a\u5f39\u51fa\u5b9e\u4f53\u4fdd\u5b58\u9009\u62e9\u76ee\u5f55\u8d44\u6e90\u7ba1\u7406\u5668\uff0c\u9ed8\u8ba4\u5b9e\u4f53\u53ea\u80fd\u4fdd\u5b58\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion.Core")," \u5c42\uff1a"),(0,r.kt)("img",{src:(0,o.Z)("img/dbfirst7.png")}),(0,r.kt)("p",null,"\u70b9\u51fb\u786e\u5b9a\u540e\u5c31\u53ef\u5b8c\u6210\u6240\u6709\u751f\u6210\u64cd\u4f5c\u3002"),(0,r.kt)("h3",{id:"91935-\u751f\u6210\u6700\u7ec8\u5b9e\u4f53\u4ee3\u7801"},"9.19.3.5 \u751f\u6210\u6700\u7ec8\u5b9e\u4f53\u4ee3\u7801"),(0,r.kt)("img",{src:(0,o.Z)("img/dbfirst8.png")}),(0,r.kt)("p",null,"\u6700\u7ec8\u811a\u672c\u5982\u4e0b\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-shell"},'PM> &"../tools/cli.ps1"\n// -----------------------------------------------------------------------------\n// ______ _______ _\n// | ____| |__ __| | |\n// | |__ _ _ _ __ | | ___ ___ | |___\n// | __| | | | \'__| | |/ _ \\ / _ \\| / __|\n// | | | |_| | | | | (_) | (_) | \\__ \\\n// |_| \\__,_|_| |_|\\___/ \\___/|_|___/\n//\n// -----------------------------------------------------------------------------\nFurion Tools v1.0.0 \u542f\u52a8\u4e2d......\nFurion Tools v1.0.0 \u542f\u52a8\u6210\u529f\uff01\nFurion Tools v1.0.0 \u8bf7\u952e\u5165\u64cd\u4f5c\u7c7b\u578b\uff1a[G] \u754c\u9762\u64cd\u4f5c\uff0c[\u4efb\u610f\u5b57\u7b26] \u547d\u4ee4\u884c\u64cd\u4f5c\nFurion Tools v1.0.0 \u60a8\u7684\u8f93\u5165\u662f: G\nFurion Tools v1.0.0 \u6b63\u5728\u52a0\u8f7d\u6570\u636e\u5e93\u8868\u548c\u89c6\u56fe......\nFurion Tools v1.0.0 \u52a0\u8f7d\u6210\u529f\uff01\nFurion Tools v1.0.0 \u6b63\u5728\u7f16\u8bd1\u89e3\u51b3\u65b9\u6848\u4ee3\u7801......\nBuild started...\nBuild succeeded.\nFor foreign key FK_PersonDetail_Person_PersonId on table dbo.PersonDetail, unable to model the end of the foreign key on principal table dbo.Person. This is usually because the principal table was not included in the selection set.\nFurion Tools v1.0.0 \u7f16\u8bd1\u6210\u529f\uff01\nFurion Tools v1.0.0 \u5f00\u59cb\u751f\u6210\u5b9e\u4f53\u6587\u4ef6......\nFurion Tools v1.0.0 \u6b63\u5728\u751f\u6210 City.cs \u5b9e\u4f53\u4ee3\u7801......\nFurion Tools v1.0.0 \u6210\u529f\u751f\u6210 City.cs \u5b9e\u4f53\u4ee3\u7801\n// -----------------------------------------------------------------------------\n// \u4ee5\u4e0b\u4ee3\u7801\u7531 Furion Tools v1.0.0 \u751f\u6210\n// -----------------------------------------------------------------------------\n\nusing Furion.DatabaseAccessor;\nusing Microsoft.EntityFrameworkCore.Metadata.Builders;\nusing System;\nusing System.Collections.Generic;\n\n#nullable disable\n\nnamespace Furion.Core\n{\n public partial class City : IEntity, IEntityTypeBuilder\n {\n\n public City()\n {\n InverseParent = new HashSet();\n }\n\n public int Id { get; set; }\n public string Name { get; set; }\n public int? ParentId { get; set; }\n public DateTime CreatedTime { get; set; }\n public DateTime? UpdatedTime { get; set; }\n public bool IsDeleted { get; set; }\n\n public virtual City Parent { get; set; }\n public virtual ICollection InverseParent { get; set; }\n\n public void Configure(EntityTypeBuilder entityBuilder, DbContext dbContext, Type dbContextLocator)\n {\n entityBuilder.HasIndex(e => e.ParentId, "IX_City_ParentId");\n\n entityBuilder.HasOne(d => d.Parent)\n .WithMany(p => p.InverseParent)\n .HasForeignKey(d => d.ParentId);\n\n }\n\n }\n}\n\nFurion Tools v1.0.0 \u6b63\u5728\u751f\u6210 PersonDetail.cs \u5b9e\u4f53\u4ee3\u7801......\nFurion Tools v1.0.0 \u6210\u529f\u751f\u6210 PersonDetail.cs \u5b9e\u4f53\u4ee3\u7801\n// -----------------------------------------------------------------------------\n// \u4ee5\u4e0b\u4ee3\u7801\u7531 Furion Tools v1.0.0 \u751f\u6210\n// -----------------------------------------------------------------------------\n\nusing Furion.DatabaseAccessor;\nusing Microsoft.EntityFrameworkCore.Metadata.Builders;\nusing System;\nusing System.Collections.Generic;\n\n#nullable disable\n\nnamespace Furion.Core\n{\n public partial class PersonDetail : IEntity, IEntityTypeBuilder\n {\n\n public int Id { get; set; }\n public string PhoneNumber { get; set; }\n public string Qq { get; set; }\n public int PersonId { get; set; }\n\n public void Configure(EntityTypeBuilder entityBuilder, DbContext dbContext, Type dbContextLocator)\n {\n entityBuilder.HasIndex(e => e.PersonId, "IX_PersonDetail_PersonId")\n .IsUnique();\n\n entityBuilder.Property(e => e.Qq).HasColumnName("QQ");\n\n }\n\n }\n}\n\nFurion Tools v1.0.0 \u6b63\u5728\u751f\u6210 Post.cs \u5b9e\u4f53\u4ee3\u7801......\nFurion Tools v1.0.0 \u6210\u529f\u751f\u6210 Post.cs \u5b9e\u4f53\u4ee3\u7801\n// -----------------------------------------------------------------------------\n// \u4ee5\u4e0b\u4ee3\u7801\u7531 Furion Tools v1.0.0 \u751f\u6210\n// -----------------------------------------------------------------------------\n\nusing Furion.DatabaseAccessor;\nusing Microsoft.EntityFrameworkCore.Metadata.Builders;\nusing System;\nusing System.Collections.Generic;\n\n#nullable disable\n\nnamespace Furion.Core\n{\n public partial class Post : IEntity\n {\n\n public int Id { get; set; }\n public string Name { get; set; }\n public DateTime CreatedTime { get; set; }\n public DateTime? UpdatedTime { get; set; }\n public bool IsDeleted { get; set; }\n\n }\n}\n\nFurion Tools v1.0.0 \u6b63\u5728\u751f\u6210 VPerson.cs \u5b9e\u4f53\u4ee3\u7801......\nFurion Tools v1.0.0 \u6210\u529f\u751f\u6210 VPerson.cs \u5b9e\u4f53\u4ee3\u7801\n// -----------------------------------------------------------------------------\n// \u4ee5\u4e0b\u4ee3\u7801\u7531 Furion Tools v1.0.0 \u751f\u6210\n// -----------------------------------------------------------------------------\n\nusing Furion.DatabaseAccessor;\nusing Microsoft.EntityFrameworkCore.Metadata.Builders;\nusing System;\nusing System.Collections.Generic;\n\n#nullable disable\n\nnamespace Furion.Core\n{\n public partial class VPerson : IEntity, IEntityTypeBuilder\n {\n\n public int Id { get; set; }\n public string Name { get; set; }\n public int Age { get; set; }\n public string Address { get; set; }\n\n public void Configure(EntityTypeBuilder entityBuilder, DbContext dbContext, Type dbContextLocator)\n {\n entityBuilder.HasNoKey();\n\n entityBuilder.ToView("V_Person");\n\n entityBuilder.Property(e => e.Id).ValueGeneratedOnAdd();\n\n entityBuilder.Property(e => e.Name).HasMaxLength(32);\n\n }\n\n }\n}\n\nFurion Tools v1.0.0 \u5168\u90e8\u5b9e\u4f53\u751f\u6210\u6210\u529f\uff01\nPM>\n')),(0,r.kt)("h2",{id:"9194-\u547d\u4ee4\u53c2\u6570\u914d\u7f6e"},"9.19.4 \u547d\u4ee4\u53c2\u6570\u914d\u7f6e"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion Tools Cli")," \u652f\u6301\u591a\u4e2a\u53c2\u6570\u914d\u7f6e\uff0c\u4f7f\u7528\u65b9\u6cd5\u53ea\u9700\u8981\u5728\u547d\u4ee4\u540e\u9762\u6dfb\u52a0\u5373\u53ef\uff0c\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-shell"},' &"../tools/cli.ps1" -Context \u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u540d -ConnectionName \u8fde\u63a5\u5b57\u7b26\u4e32Key\n')),(0,r.kt)("p",null,"\u652f\u6301\u53c2\u6570\u5982\u4e0b\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"-Tables"),"\uff1a\u914d\u7f6e\u8981\u751f\u6210\u7684\u6570\u636e\u5e93\u8868\uff0c\u6570\u7ec4\u7c7b\u578b\uff0c\u5982\u679c\u4e3a\u7a7a\uff0c\u5219\u751f\u6210\u6570\u636e\u5e93\u6240\u6709\u8868\u548c\u89c6\u56fe\u3002\u5982\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"-Tables Person,PersonDetails")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"-Context"),"\uff1a\u914d\u7f6e\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\uff0c\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"FurionDbContext"),"\uff0c\u5982\u679c\u6709\u591a\u4e2a\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\uff0c\u5219\u6b64\u53c2\u6570\u5fc5\u987b\u914d\u7f6e"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"-ConnectionName"),"\uff1a\u914d\u7f6e\u6570\u636e\u5e93\u8fde\u63a5\u5b57\u7b26\u4e32\uff0c\u5bf9\u5e94 ",(0,r.kt)("inlineCode",{parentName:"li"},"appsetting.json")," \u4e2d\u7684 ",(0,r.kt)("inlineCode",{parentName:"li"},"ConnectionStrings")," \u5b9a\u4e49\u7684 ",(0,r.kt)("inlineCode",{parentName:"li"},"Key")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"-OutputDir"),"\uff1a\u751f\u6210\u5b9e\u4f53\u4ee3\u7801\u8f93\u51fa\u76ee\u5f55\uff0c\u9ed8\u8ba4\u4e3a\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"./Furion.Core/Entities/")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"-DbProvider"),"\uff1a\u6570\u636e\u5e93\u63d0\u4f9b\u5668\uff0c\u9ed8\u8ba4\u662f ",(0,r.kt)("inlineCode",{parentName:"li"},"Microsoft.EntityFrameworkCore.SqlServer"),"\uff0c\u5176\u4ed6\u6570\u636e\u5e93\u8bf7\u6307\u5b9a\u5bf9\u5e94\u7a0b\u5e8f\u96c6",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"SqlServer"),"\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"Microsoft.EntityFrameworkCore.SqlServer")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Sqlite"),"\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"Microsoft.EntityFrameworkCore.Sqlite")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Cosmos"),"\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"Microsoft.EntityFrameworkCore.Cosmos")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"InMemoryDatabase"),"\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"Microsoft.EntityFrameworkCore.InMemory")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"MySql"),"\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"Pomelo.EntityFrameworkCore.MySql")," \u6216 ",(0,r.kt)("inlineCode",{parentName:"li"},"MySql.EntityFrameworkCore")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"PostgreSQL"),"\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"Npgsql.EntityFrameworkCore.PostgreSQL")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Oracle"),"\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"Oracle.EntityFrameworkCore")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Dm"),"\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"Microsoft.EntityFrameworkCore.Dm")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"-EntryProject"),"\uff1aWeb \u542f\u7528\u9879\u76ee\u5c42\u540d\uff0c\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"Furion.Web.Entry")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"-CoreProject"),"\uff1a\u5b9e\u4f53\u9879\u76ee\u5c42\u540d\uff0c\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"Furion.Core")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"-DbContextLocators"),"\uff1a\u591a\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u5b9a\u4f4d\u5668\uff0c\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"MasterDbContextLocator"),"\uff0c\u652f\u6301\u591a\u4e2a\uff0c\u5982\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"MasterDbContextLocator,MySqlDbContextLocator")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"-Product"),"\uff1a\u89e3\u51b3\u65b9\u6848\u9ed8\u8ba4\u524d\u7f00\uff0c\u5982 ",(0,r.kt)("inlineCode",{parentName:"li"},"Furion")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"-UseDatabaseNames"),"\uff1a\u662f\u5426\u4fdd\u6301\u751f\u6210\u548c\u6570\u636e\u5e93\u3001\u8868\u4e00\u81f4\u7684\u540d\u79f0"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"-Namespace"),"\uff1a\u6307\u5b9a\u5b9e\u4f53\u547d\u540d\u7a7a\u95f4")),(0,r.kt)("h2",{id:"9195-\u53cd\u9988\u4e0e\u5efa\u8bae"},"9.19.5 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,r.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/9e7ef9fa.b7060690.js b/handbook/build/assets/js/9e7ef9fa.b7060690.js deleted file mode 100644 index c2f859e3b77..00000000000 --- a/handbook/build/assets/js/9e7ef9fa.b7060690.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[1866],{3905:function(e,n,t){t.d(n,{Zo:function(){return d},kt:function(){return u}});var i=t(7294);function a(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function r(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);n&&(i=i.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,i)}return t}function o(e){for(var n=1;n=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var s=i.createContext({}),p=function(e){var n=i.useContext(s),t=n;return e&&(t="function"==typeof e?e(n):o(o({},n),e)),t},d=function(e){var n=p(e.components);return i.createElement(s.Provider,{value:n},e.children)},m={inlineCode:"code",wrapper:function(e){var n=e.children;return i.createElement(i.Fragment,{},n)}},c=i.forwardRef((function(e,n){var t=e.components,a=e.mdxType,r=e.originalType,s=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),c=p(t),u=a,k=c["".concat(s,".").concat(u)]||c[u]||m[u]||r;return t?i.createElement(k,o(o({ref:n},d),{},{components:t})):i.createElement(k,o({ref:n},d))}));function u(e,n){var t=arguments,a=n&&n.mdxType;if("string"==typeof e||a){var r=t.length,o=new Array(r);o[0]=c;var l={};for(var s in n)hasOwnProperty.call(n,s)&&(l[s]=n[s]);l.originalType=e,l.mdxType="string"==typeof e?e:a,o[1]=l;for(var p=2;p\u7a0b\u5e8f\u5305\u7ba1\u7406\u63a7\u5236\u53f0",id:"91921-\u6253\u5f00-\u7a0b\u5e8f\u5305\u7ba1\u7406\u63a7\u5236\u53f0",children:[]},{value:"9.19.2.2 \u5207\u6362\u9ed8\u8ba4\u9879\u76ee",id:"91922-\u5207\u6362\u9ed8\u8ba4\u9879\u76ee",children:[]},{value:"9.19.2.3 \u8f93\u5165 cli.ps1 \u547d\u4ee4",id:"91923-\u8f93\u5165-clips1-\u547d\u4ee4",children:[]}]},{value:"9.19.3 \u754c\u9762\u64cd\u4f5c\u6a21\u5f0f",id:"9193-\u754c\u9762\u64cd\u4f5c\u6a21\u5f0f",children:[{value:"9.19.3.1 \u542f\u52a8\u754c\u9762\u64cd\u4f5c",id:"91931-\u542f\u52a8\u754c\u9762\u64cd\u4f5c",children:[]},{value:"9.19.3.2 \u52a0\u8f7d\u6570\u636e\u5e93\u8868",id:"91932-\u52a0\u8f7d\u6570\u636e\u5e93\u8868",children:[]},{value:"9.19.3.3 \u9009\u62e9\u8868\u6216\u89c6\u56fe\u751f\u6210",id:"91933-\u9009\u62e9\u8868\u6216\u89c6\u56fe\u751f\u6210",children:[]},{value:"9.19.3.4 \u9009\u62e9\u4fdd\u5b58\u76ee\u5f55",id:"91934-\u9009\u62e9\u4fdd\u5b58\u76ee\u5f55",children:[]},{value:"9.19.3.5 \u751f\u6210\u6700\u7ec8\u5b9e\u4f53\u4ee3\u7801",id:"91935-\u751f\u6210\u6700\u7ec8\u5b9e\u4f53\u4ee3\u7801",children:[]}]},{value:"9.19.4 \u547d\u4ee4\u53c2\u6570\u914d\u7f6e",id:"9194-\u547d\u4ee4\u53c2\u6570\u914d\u7f6e",children:[]},{value:"9.19.5 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"9195-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],c={toc:m};function u(e){var n=e.components,t=(0,a.Z)(e,l);return(0,r.kt)("wrapper",(0,i.Z)({},c,t,{components:n,mdxType:"MDXLayout"}),(0,r.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u5173\u4e8e\u811a\u672c")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u5728\u9605\u8bfb\u4e0b\u9762\u6587\u6863\u4e4b\u524d\uff0c\u5fc5\u987b\u628a",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6e90\u7801\u6587\u4ef6\u5939\u4e0b\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"tools/cli.ps1")," \u6587\u4ef6\u62f7\u8d1d\u5230\u672c\u5730\u4e2d\u3002\u800c\u4e14 ",(0,r.kt)("inlineCode",{parentName:"p"},"Fur.Web.Entry")," \u5c42\u9700\u8981\u5b89\u88c5 ",(0,r.kt)("inlineCode",{parentName:"p"},"Microsoft.EntityFrameworkCore.Tools")," \u5305\u3002"))),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7cfb\u7edf\u63d0\u793a\u7981\u6b62\u8fd0\u884c\u811a\u672c\u89e3\u51b3")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u5982\u679c\u51fa\u73b0 ",(0,r.kt)("inlineCode",{parentName:"p"},"cli.ps1")," \u65e0\u6cd5\u8fd0\u884c\u7684\u60c5\u51b5\uff0c\u5982\u63d0\u793a\uff1a",(0,r.kt)("inlineCode",{parentName:"p"},"\u201c\u56e0\u4e3a\u5728\u6b64\u7cfb\u7edf\u4e0a\u7981\u6b62\u8fd0\u884c\u811a\u672c\u201d"),"\uff0c\u53ea\u9700\u8981\u6253\u5f00\u7cfb\u7edf\u7ba1\u7406\u5458 ",(0,r.kt)("inlineCode",{parentName:"p"},"CMD/Powershell")," \u6267\u884c\uff1a",(0,r.kt)("inlineCode",{parentName:"p"},"set-ExecutionPolicy RemoteSigned")," \u547d\u4ee4\u5e76\u6839\u636e\u64cd\u4f5c\u63d0\u793a\u8f93\u5165 ",(0,r.kt)("inlineCode",{parentName:"p"},"A")," \u5373\u53ef\u3002"),(0,r.kt)("p",{parentName:"div"},"\u4e4b\u540e\u91cd\u542f ",(0,r.kt)("inlineCode",{parentName:"p"},"Visual Studio")," \u5de5\u5177\u3002"))),(0,r.kt)("h2",{id:"9191-\u6570\u636e\u5e93\u5f00\u53d1\u65b9\u5f0f"},"9.19.1 \u6570\u636e\u5e93\u5f00\u53d1\u65b9\u5f0f"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u63d0\u4f9b\u4e24\u79cd\u4e3b\u8981\u65b9\u6cd5\u6765 ",(0,r.kt)("strong",{parentName:"p"},"\u4fdd\u6301\u5b9e\u4f53\u6a21\u578b\u548c\u6570\u636e\u5e93\u67b6\u6784\u540c\u6b65"),"\u3002"),(0,r.kt)("p",null,"\u81f3\u4e8e\u6211\u4eec\u5e94\u8be5\u9009\u7528\u54ea\u4e2a\u65b9\u6cd5\uff0c\u8bf7\u786e\u5b9a\u4f60\u662f\u5e0c\u671b\u4ee5\u5b9e\u4f53\u6a21\u578b\u4e3a\u51c6\u8fd8\u662f\u4ee5\u6570\u636e\u5e93\u4e3a\u51c6\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"\u5982\u679c\u5e0c\u671b ",(0,r.kt)("strong",{parentName:"p"},"\u4ee5\u5b9e\u4f53\u6a21\u578b\u4e3a\u51c6"),"\uff0c\u8bf7\u4f7f\u7528\u6b63\u5411\u5de5\u7a0b\uff08Code First\uff09\u3002 \u5bf9\u5b9e\u4f53\u6a21\u578b\u8fdb\u884c\u66f4\u6539\u65f6\uff0c\u6b64\u65b9\u6cd5\u4f1a\u4ee5\u589e\u91cf\u65b9\u5f0f\u5c06\u76f8\u5e94\u67b6\u6784\u66f4\u6539\u5e94\u7528\u5230\u6570\u636e\u5e93\uff0c\u4ee5\u4f7f\u6570\u636e\u5e93\u4fdd\u6301\u4e0e\u5b9e\u4f53\u6a21\u578b\u517c\u5bb9\u3002")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"\u5982\u679c\u5e0c\u671b ",(0,r.kt)("strong",{parentName:"p"},"\u4ee5\u6570\u636e\u5e93\u67b6\u6784\u4e3a\u51c6"),"\uff0c\u8bf7\u4f7f\u7528\u53cd\u5411\u5de5\u7a0b\uff08Database First\uff09\u3002 \u4f7f\u7528\u6b64\u65b9\u6cd5\uff0c\u53ef\u901a\u8fc7\u5c06\u6570\u636e\u5e93\u67b6\u6784\u53cd\u5411\u5de5\u7a0b\u5230\u5b9e\u4f53\u6a21\u578b\u6765\u751f\u6210\u76f8\u5e94\u7684\u5b9e\u4f53\u7c7b\u578b\u3002"))),(0,r.kt)("p",null,"\u672c\u7ae0\u8282\u662f ",(0,r.kt)("strong",{parentName:"p"},"\u53cd\u5411\u5de5\u7a0b\uff08Database First\uff09")," \u7684\u76f8\u5173\u5185\u5bb9\u3002"),(0,r.kt)("h2",{id:"9192-\u64cd\u4f5c\u6307\u5357"},"9.19.2 \u64cd\u4f5c\u6307\u5357"),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u64cd\u4f5c\u4e4b\u524d\u6ce8\u610f\u4e8b\u9879")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u76ee\u524d ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion Tools")," \u751f\u6210\u5de5\u5177",(0,r.kt)("strong",{parentName:"p"},"\u9ed8\u8ba4\u4e0d\u652f\u6301\u4efb\u4f55\u6570\u636e\u5e93"),"\u751f\u6210\uff0c\u6240\u4ee5\u5982\u9700\u751f\u6210\u7279\u5b9a\u6570\u636e\u5e93\u7684\u4ee3\u7801\uff0c\u53ea\u9700\u8981\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion.EntityFrameworkCore.Core")," \u5b89\u88c5\u5bf9\u5e94\u7684\u6570\u636e\u5e93\u5305\u5373\u53ef\uff1a"),(0,r.kt)("p",{parentName:"div"},"\u5404\u4e2a\u6570\u636e\u5e93\u7684\u5305\u53ef\u67e5\u9605\uff1a",(0,r.kt)("a",{parentName:"p",href:"dbcontext-multi-database"},"\u591a\u6570\u636e\u5e93\u64cd\u4f5c-\u6570\u636e\u5e93\u63d0\u4f9b\u5668\u5bf9\u5e94\u5305")),(0,r.kt)("p",{parentName:"div"},"\u53e6\u5916\uff0c\u53ea\u6709 ",(0,r.kt)("inlineCode",{parentName:"p"},"SqlServer")," \u6570\u636e\u5e93\u652f\u6301\u53ef\u89c6\u5316 ",(0,r.kt)("inlineCode",{parentName:"p"},"GUI")," \u64cd\u4f5c\uff0c\u5176\u4ed6\u7684\u53ea\u80fd\u547d\u4ee4\u884c\u64cd\u4f5c\u3002"))),(0,r.kt)("h3",{id:"91921-\u6253\u5f00-\u7a0b\u5e8f\u5305\u7ba1\u7406\u63a7\u5236\u53f0"},"9.19.2.1 \u6253\u5f00 ",(0,r.kt)("inlineCode",{parentName:"h3"},"\u7a0b\u5e8f\u5305\u7ba1\u7406\u63a7\u5236\u53f0")),(0,r.kt)("p",null,"\u6ce8\u610f\uff1a\u5f00\u59cb\u4e4b\u524d\u5148\u628a ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion.Web.Entry")," \u8bbe\u4e3a\u542f\u52a8\u9879\u76ee\u3002"),(0,r.kt)("img",{src:(0,o.Z)("img/dbfirst1.png")}),(0,r.kt)("h3",{id:"91922-\u5207\u6362\u9ed8\u8ba4\u9879\u76ee"},"9.19.2.2 \u5207\u6362\u9ed8\u8ba4\u9879\u76ee"),(0,r.kt)("p",null,"\u5c06 ",(0,r.kt)("inlineCode",{parentName:"p"},"\u7a0b\u5e8f\u5305\u7ba1\u7406\u63a7\u5236\u53f0")," \u9ed8\u8ba4\u9879\u76ee\u8bbe\u7f6e\u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion.Core"),"\uff0c\u5982\u679c\u60a8\u662f\u5176\u4ed6\u540d\u5b57\uff0c\u5219\u5207\u6362\u5bf9\u5e94\u5373\u53ef\u3002"),(0,r.kt)("img",{src:(0,o.Z)("img/dbfirst2.png")}),(0,r.kt)("h3",{id:"91923-\u8f93\u5165-clips1-\u547d\u4ee4"},"9.19.2.3 \u8f93\u5165 ",(0,r.kt)("inlineCode",{parentName:"h3"},"cli.ps1")," \u547d\u4ee4"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-shell"},"PM> Show-Command ../tools/cli.ps1\n")),(0,r.kt)("img",{src:(0,o.Z)("img/df10.png")}),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u5176\u4ed6\u65b9\u5f0f")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u9664\u4e86\u91c7\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"Show-Command")," \u65b9\u5f0f\u4ee5\u5916\uff0c\u8fd8\u53ef\u4ee5\u76f4\u63a5\u6267\u884c\u547d\u4ee4\uff1a"),(0,r.kt)("pre",{parentName:"div"},(0,r.kt)("code",{parentName:"pre",className:"language-shell"},' &"../tools/cli.ps1" -DbProvider "EFCore\u6570\u636e\u5e93\u7a0b\u5e8f\u96c6\u540d" -CoreProject "\u4f60\u7684Core\u5c42" -EntryProject "\u4f60\u7684\u542f\u52a8\u5c42" -ConnectionName "\u8fde\u63a5\u5b57\u7b26\u4e32\u7684 [key]"\n')))),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u5c0f\u63d0\u793a")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u5982\u679c\u4f7f\u7528\u7684\u662f ",(0,r.kt)("inlineCode",{parentName:"p"},"SqlServer")," \u6570\u636e\u5e93\uff0c\u5219\u9ed8\u8ba4\u4e0d\u9700\u8981\u6307\u5b9a ",(0,r.kt)("inlineCode",{parentName:"p"},"-DbProvider")," \u53c2\u6570\u3002"))),(0,r.kt)("p",null,"\u5982\u679c\u4e0d\u6e05\u695a\u5f53\u524d\u8fd0\u884c\u73af\u5883\u7684\u8def\u5f84\uff0c\u53ef\u4ee5\u8f93\u5165 ",(0,r.kt)("inlineCode",{parentName:"p"},"pwd")," \u67e5\u770b\u3002"),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u5173\u4e8e\u6570\u636e\u5e93\u547d\u540d")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u5982\u679c\u9700\u8981\u4fdd\u6301\u548c\u6570\u636e\u5e93\u4e00\u6a21\u4e00\u6837\u7684\u547d\u540d\uff0c\u5219\u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"-UseDatabaseNames")," \u53c2\u6570\u6307\u5b9a\uff0c\u5982\uff1a"),(0,r.kt)("pre",{parentName:"div"},(0,r.kt)("code",{parentName:"pre",className:"language-cs"},' &"../tools/cli.ps1" -UseDatabaseNames\n')))),(0,r.kt)("img",{src:(0,o.Z)("img/dbfirst3.png")}),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7b49\u5f85\u8f93\u5165")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u6267\u884c\u4e0a\u9762\u547d\u4ee4\u540e\uff0c\u6b64\u65f6 ",(0,r.kt)("inlineCode",{parentName:"p"},"Cli")," \u6709\u4e00\u4e2a\u7b49\u5f85\u8f93\u5165\u63d0\u793a\uff1a"),(0,r.kt)("pre",{parentName:"div"},(0,r.kt)("code",{parentName:"pre",className:"language-shell"},"Furion Tools v1.0.0 \u8bf7\u952e\u5165\u64cd\u4f5c\u7c7b\u578b\uff1a[G] \u754c\u9762\u64cd\u4f5c\uff0c[\u4efb\u610f\u5b57\u7b26] \u547d\u4ee4\u884c\u64cd\u4f5c\nFurion Tools v1.0.0 \u60a8\u7684\u8f93\u5165\u662f:\n")),(0,r.kt)("p",{parentName:"div"},(0,r.kt)("strong",{parentName:"p"},"\u8f93\u5165\u5927\u5199 ",(0,r.kt)("inlineCode",{parentName:"strong"},"G")," \u8fdb\u5165\u754c\u9762\u64cd\u4f5c\u6a21\u5f0f\uff0c\u5176\u4ed6\u4efb\u610f\u5b57\u7b26\u8fdb\u5165\u547d\u4ee4\u884c\u64cd\u4f5c\u6a21\u5f0f\u3002")))),(0,r.kt)("div",{className:"admonition admonition-caution alert alert--warning"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 16 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"}))),"\u6ce8\u610f\u4e8b\u9879")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u76ee\u524d\u53ea\u6709 ",(0,r.kt)("inlineCode",{parentName:"p"},"Sql Server")," \u6570\u636e\u5e93\u624d\u652f\u6301 ",(0,r.kt)("inlineCode",{parentName:"p"},"GUI \u754c\u9762\u64cd\u4f5c\u6a21\u5f0f"),"\uff0c\u5176\u4ed6\u6570\u636e\u5e93\u8bf7\u4f7f\u7528\u547d\u4ee4\u884c\u6a21\u5f0f\u3002"))),(0,r.kt)("h2",{id:"9193-\u754c\u9762\u64cd\u4f5c\u6a21\u5f0f"},"9.19.3 \u754c\u9762\u64cd\u4f5c\u6a21\u5f0f"),(0,r.kt)("h3",{id:"91931-\u542f\u52a8\u754c\u9762\u64cd\u4f5c"},"9.19.3.1 \u542f\u52a8\u754c\u9762\u64cd\u4f5c"),(0,r.kt)("p",null,"\u5f53\u6211\u4eec\u8f93\u5165 ",(0,r.kt)("inlineCode",{parentName:"p"},"G")," \u65f6\uff0c\u5c06\u6253\u5f00 ",(0,r.kt)("inlineCode",{parentName:"p"},"GUI")," \u754c\u9762\u64cd\u4f5c\u6a21\u5f0f\uff0c\u5982\uff1a"),(0,r.kt)("img",{src:(0,o.Z)("img/dbfirst4.png")}),(0,r.kt)("p",null,"\u8fd9\u65f6\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"Furion Tools")," \u4f1a\u81ea\u52a8\u67e5\u627e\u6240\u6709\u6570\u636e\u5e93\u914d\u7f6e\u8fde\u63a5\u5b57\u7b26\u4e32\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},".json")," \u6587\u4ef6\uff1a"),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u6ce8\u610f\u4e8b\u9879")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u6570\u636e\u5e93\u8fde\u63a5\u5b57\u7b26\u4e32\u914d\u7f6e\u9879\u9700\u5199\u5230 ",(0,r.kt)("inlineCode",{parentName:"p"},"json")," \u914d\u7f6e\u6587\u4ef6\u4e2d\uff0c\u4e14\u6839\u8282\u70b9\u9700\u8981\u5199\u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"ConnectionStrings")," \u3002"))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json",metastring:"{12-13}","{12-13}":!0},'{\n "Logging": {\n "LogLevel": {\n "Default": "Information",\n "Microsoft": "Warning",\n "Microsoft.Hosting.Lifetime": "Information",\n "Microsoft.EntityFrameworkCore": "Information"\n }\n },\n "AllowedHosts": "*",\n "ConnectionStrings": {\n "DbConnectionString": "Server=localhost;Database=Furion;User=sa;Password=000000;MultipleActiveResultSets=True;",\n "Sqlite3ConnectionString": "Data Source=./Furion.db"\n }\n}\n')),(0,r.kt)("h3",{id:"91932-\u52a0\u8f7d\u6570\u636e\u5e93\u8868"},"9.19.3.2 \u52a0\u8f7d\u6570\u636e\u5e93\u8868"),(0,r.kt)("p",null,"\u9009\u62e9\u8fde\u63a5\u5b57\u7b26\u4e32\u4e4b\u540e\uff0c\u70b9\u51fb ",(0,r.kt)("inlineCode",{parentName:"p"},"\u52a0\u8f7d\u6570\u636e\u5e93\u8868\u548c\u89c6\u56fe")," \u6309\u94ae\u52a0\u8f7d\u3002"),(0,r.kt)("img",{src:(0,o.Z)("img/dbfirst5.png")}),(0,r.kt)("h3",{id:"91933-\u9009\u62e9\u8868\u6216\u89c6\u56fe\u751f\u6210"},"9.19.3.3 \u9009\u62e9\u8868\u6216\u89c6\u56fe\u751f\u6210"),(0,r.kt)("p",null,"\u52a0\u8f7d\u8868\u5b8c\u6210\u540e\uff0c\u53ef\u4ee5\u9009\u62e9\u60a8\u8981\u751f\u6210\u7684\u8868\u6216\u89c6\u56fe\uff0c",(0,r.kt)("strong",{parentName:"p"},"\u652f\u6301\u591a\u9009")),(0,r.kt)("img",{src:(0,o.Z)("img/dbfirst6.png")}),(0,r.kt)("p",null,"\u70b9\u51fb\u5e95\u90e8\u6309\u94ae ",(0,r.kt)("inlineCode",{parentName:"p"},"\u7acb\u5373\u751f\u6210")),(0,r.kt)("h3",{id:"91934-\u9009\u62e9\u4fdd\u5b58\u76ee\u5f55"},"9.19.3.4 \u9009\u62e9\u4fdd\u5b58\u76ee\u5f55"),(0,r.kt)("p",null,"\u70b9\u51fb ",(0,r.kt)("inlineCode",{parentName:"p"},"\u7acb\u5373\u751f\u6210")," \u6309\u94ae\u540e\uff0c\u4f1a\u5f39\u51fa\u5b9e\u4f53\u4fdd\u5b58\u9009\u62e9\u76ee\u5f55\u8d44\u6e90\u7ba1\u7406\u5668\uff0c\u9ed8\u8ba4\u5b9e\u4f53\u53ea\u80fd\u4fdd\u5b58\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion.Core")," \u5c42\uff1a"),(0,r.kt)("img",{src:(0,o.Z)("img/dbfirst7.png")}),(0,r.kt)("p",null,"\u70b9\u51fb\u786e\u5b9a\u540e\u5c31\u53ef\u5b8c\u6210\u6240\u6709\u751f\u6210\u64cd\u4f5c\u3002"),(0,r.kt)("h3",{id:"91935-\u751f\u6210\u6700\u7ec8\u5b9e\u4f53\u4ee3\u7801"},"9.19.3.5 \u751f\u6210\u6700\u7ec8\u5b9e\u4f53\u4ee3\u7801"),(0,r.kt)("img",{src:(0,o.Z)("img/dbfirst8.png")}),(0,r.kt)("p",null,"\u6700\u7ec8\u811a\u672c\u5982\u4e0b\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-shell"},'PM> &"../tools/cli.ps1"\n// -----------------------------------------------------------------------------\n// ______ _______ _\n// | ____| |__ __| | |\n// | |__ _ _ _ __ | | ___ ___ | |___\n// | __| | | | \'__| | |/ _ \\ / _ \\| / __|\n// | | | |_| | | | | (_) | (_) | \\__ \\\n// |_| \\__,_|_| |_|\\___/ \\___/|_|___/\n//\n// -----------------------------------------------------------------------------\nFurion Tools v1.0.0 \u542f\u52a8\u4e2d......\nFurion Tools v1.0.0 \u542f\u52a8\u6210\u529f\uff01\nFurion Tools v1.0.0 \u8bf7\u952e\u5165\u64cd\u4f5c\u7c7b\u578b\uff1a[G] \u754c\u9762\u64cd\u4f5c\uff0c[\u4efb\u610f\u5b57\u7b26] \u547d\u4ee4\u884c\u64cd\u4f5c\nFurion Tools v1.0.0 \u60a8\u7684\u8f93\u5165\u662f: G\nFurion Tools v1.0.0 \u6b63\u5728\u52a0\u8f7d\u6570\u636e\u5e93\u8868\u548c\u89c6\u56fe......\nFurion Tools v1.0.0 \u52a0\u8f7d\u6210\u529f\uff01\nFurion Tools v1.0.0 \u6b63\u5728\u7f16\u8bd1\u89e3\u51b3\u65b9\u6848\u4ee3\u7801......\nBuild started...\nBuild succeeded.\nFor foreign key FK_PersonDetail_Person_PersonId on table dbo.PersonDetail, unable to model the end of the foreign key on principal table dbo.Person. This is usually because the principal table was not included in the selection set.\nFurion Tools v1.0.0 \u7f16\u8bd1\u6210\u529f\uff01\nFurion Tools v1.0.0 \u5f00\u59cb\u751f\u6210\u5b9e\u4f53\u6587\u4ef6......\nFurion Tools v1.0.0 \u6b63\u5728\u751f\u6210 City.cs \u5b9e\u4f53\u4ee3\u7801......\nFurion Tools v1.0.0 \u6210\u529f\u751f\u6210 City.cs \u5b9e\u4f53\u4ee3\u7801\n// -----------------------------------------------------------------------------\n// \u4ee5\u4e0b\u4ee3\u7801\u7531 Furion Tools v1.0.0 \u751f\u6210\n// -----------------------------------------------------------------------------\n\nusing Furion.DatabaseAccessor;\nusing Microsoft.EntityFrameworkCore.Metadata.Builders;\nusing System;\nusing System.Collections.Generic;\n\n#nullable disable\n\nnamespace Furion.Core\n{\n public partial class City : IEntity, IEntityTypeBuilder\n {\n\n public City()\n {\n InverseParent = new HashSet();\n }\n\n public int Id { get; set; }\n public string Name { get; set; }\n public int? ParentId { get; set; }\n public DateTime CreatedTime { get; set; }\n public DateTime? UpdatedTime { get; set; }\n public bool IsDeleted { get; set; }\n\n public virtual City Parent { get; set; }\n public virtual ICollection InverseParent { get; set; }\n\n public void Configure(EntityTypeBuilder entityBuilder, DbContext dbContext, Type dbContextLocator)\n {\n entityBuilder.HasIndex(e => e.ParentId, "IX_City_ParentId");\n\n entityBuilder.HasOne(d => d.Parent)\n .WithMany(p => p.InverseParent)\n .HasForeignKey(d => d.ParentId);\n\n }\n\n }\n}\n\nFurion Tools v1.0.0 \u6b63\u5728\u751f\u6210 PersonDetail.cs \u5b9e\u4f53\u4ee3\u7801......\nFurion Tools v1.0.0 \u6210\u529f\u751f\u6210 PersonDetail.cs \u5b9e\u4f53\u4ee3\u7801\n// -----------------------------------------------------------------------------\n// \u4ee5\u4e0b\u4ee3\u7801\u7531 Furion Tools v1.0.0 \u751f\u6210\n// -----------------------------------------------------------------------------\n\nusing Furion.DatabaseAccessor;\nusing Microsoft.EntityFrameworkCore.Metadata.Builders;\nusing System;\nusing System.Collections.Generic;\n\n#nullable disable\n\nnamespace Furion.Core\n{\n public partial class PersonDetail : IEntity, IEntityTypeBuilder\n {\n\n public int Id { get; set; }\n public string PhoneNumber { get; set; }\n public string Qq { get; set; }\n public int PersonId { get; set; }\n\n public void Configure(EntityTypeBuilder entityBuilder, DbContext dbContext, Type dbContextLocator)\n {\n entityBuilder.HasIndex(e => e.PersonId, "IX_PersonDetail_PersonId")\n .IsUnique();\n\n entityBuilder.Property(e => e.Qq).HasColumnName("QQ");\n\n }\n\n }\n}\n\nFurion Tools v1.0.0 \u6b63\u5728\u751f\u6210 Post.cs \u5b9e\u4f53\u4ee3\u7801......\nFurion Tools v1.0.0 \u6210\u529f\u751f\u6210 Post.cs \u5b9e\u4f53\u4ee3\u7801\n// -----------------------------------------------------------------------------\n// \u4ee5\u4e0b\u4ee3\u7801\u7531 Furion Tools v1.0.0 \u751f\u6210\n// -----------------------------------------------------------------------------\n\nusing Furion.DatabaseAccessor;\nusing Microsoft.EntityFrameworkCore.Metadata.Builders;\nusing System;\nusing System.Collections.Generic;\n\n#nullable disable\n\nnamespace Furion.Core\n{\n public partial class Post : IEntity\n {\n\n public int Id { get; set; }\n public string Name { get; set; }\n public DateTime CreatedTime { get; set; }\n public DateTime? UpdatedTime { get; set; }\n public bool IsDeleted { get; set; }\n\n }\n}\n\nFurion Tools v1.0.0 \u6b63\u5728\u751f\u6210 VPerson.cs \u5b9e\u4f53\u4ee3\u7801......\nFurion Tools v1.0.0 \u6210\u529f\u751f\u6210 VPerson.cs \u5b9e\u4f53\u4ee3\u7801\n// -----------------------------------------------------------------------------\n// \u4ee5\u4e0b\u4ee3\u7801\u7531 Furion Tools v1.0.0 \u751f\u6210\n// -----------------------------------------------------------------------------\n\nusing Furion.DatabaseAccessor;\nusing Microsoft.EntityFrameworkCore.Metadata.Builders;\nusing System;\nusing System.Collections.Generic;\n\n#nullable disable\n\nnamespace Furion.Core\n{\n public partial class VPerson : IEntity, IEntityTypeBuilder\n {\n\n public int Id { get; set; }\n public string Name { get; set; }\n public int Age { get; set; }\n public string Address { get; set; }\n\n public void Configure(EntityTypeBuilder entityBuilder, DbContext dbContext, Type dbContextLocator)\n {\n entityBuilder.HasNoKey();\n\n entityBuilder.ToView("V_Person");\n\n entityBuilder.Property(e => e.Id).ValueGeneratedOnAdd();\n\n entityBuilder.Property(e => e.Name).HasMaxLength(32);\n\n }\n\n }\n}\n\nFurion Tools v1.0.0 \u5168\u90e8\u5b9e\u4f53\u751f\u6210\u6210\u529f\uff01\nPM>\n')),(0,r.kt)("h2",{id:"9194-\u547d\u4ee4\u53c2\u6570\u914d\u7f6e"},"9.19.4 \u547d\u4ee4\u53c2\u6570\u914d\u7f6e"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion Tools Cli")," \u652f\u6301\u591a\u4e2a\u53c2\u6570\u914d\u7f6e\uff0c\u4f7f\u7528\u65b9\u6cd5\u53ea\u9700\u8981\u5728\u547d\u4ee4\u540e\u9762\u6dfb\u52a0\u5373\u53ef\uff0c\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-shell"},' &"../tools/cli.ps1" -Context \u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u540d -ConnectionName \u8fde\u63a5\u5b57\u7b26\u4e32Key\n')),(0,r.kt)("p",null,"\u652f\u6301\u53c2\u6570\u5982\u4e0b\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"-Tables"),"\uff1a\u914d\u7f6e\u8981\u751f\u6210\u7684\u6570\u636e\u5e93\u8868\uff0c\u6570\u7ec4\u7c7b\u578b\uff0c\u5982\u679c\u4e3a\u7a7a\uff0c\u5219\u751f\u6210\u6570\u636e\u5e93\u6240\u6709\u8868\u548c\u89c6\u56fe\u3002\u5982\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"-Tables Person,PersonDetails")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"-Context"),"\uff1a\u914d\u7f6e\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\uff0c\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"FurionDbContext"),"\uff0c\u5982\u679c\u6709\u591a\u4e2a\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\uff0c\u5219\u6b64\u53c2\u6570\u5fc5\u987b\u914d\u7f6e"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"-ConnectionName"),"\uff1a\u914d\u7f6e\u6570\u636e\u5e93\u8fde\u63a5\u5b57\u7b26\u4e32\uff0c\u5bf9\u5e94 ",(0,r.kt)("inlineCode",{parentName:"li"},"appsetting.json")," \u4e2d\u7684 ",(0,r.kt)("inlineCode",{parentName:"li"},"ConnectionStrings")," \u5b9a\u4e49\u7684 ",(0,r.kt)("inlineCode",{parentName:"li"},"Key")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"-OutputDir"),"\uff1a\u751f\u6210\u5b9e\u4f53\u4ee3\u7801\u8f93\u51fa\u76ee\u5f55\uff0c\u9ed8\u8ba4\u4e3a\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"./Furion.Core/Entities/")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"-DbProvider"),"\uff1a\u6570\u636e\u5e93\u63d0\u4f9b\u5668\uff0c\u9ed8\u8ba4\u662f ",(0,r.kt)("inlineCode",{parentName:"li"},"Microsoft.EntityFrameworkCore.SqlServer"),"\uff0c\u5176\u4ed6\u6570\u636e\u5e93\u8bf7\u6307\u5b9a\u5bf9\u5e94\u7a0b\u5e8f\u96c6",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"SqlServer"),"\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"Microsoft.EntityFrameworkCore.SqlServer")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Sqlite"),"\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"Microsoft.EntityFrameworkCore.Sqlite")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Cosmos"),"\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"Microsoft.EntityFrameworkCore.Cosmos")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"InMemoryDatabase"),"\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"Microsoft.EntityFrameworkCore.InMemory")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"MySql"),"\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"Pomelo.EntityFrameworkCore.MySql")," \u6216 ",(0,r.kt)("inlineCode",{parentName:"li"},"MySql.EntityFrameworkCore")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"PostgreSQL"),"\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"Npgsql.EntityFrameworkCore.PostgreSQL")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Oracle"),"\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"Oracle.EntityFrameworkCore")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Dm"),"\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"Microsoft.EntityFrameworkCore.Dm")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"-EntryProject"),"\uff1aWeb \u542f\u7528\u9879\u76ee\u5c42\u540d\uff0c\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"Furion.Web.Entry")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"-CoreProject"),"\uff1a\u5b9e\u4f53\u9879\u76ee\u5c42\u540d\uff0c\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"Furion.Core")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"-DbContextLocators"),"\uff1a\u591a\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u5b9a\u4f4d\u5668\uff0c\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"MasterDbContextLocator"),"\uff0c\u652f\u6301\u591a\u4e2a\uff0c\u5982\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"MasterDbContextLocator,MySqlDbContextLocator")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"-Product"),"\uff1a\u89e3\u51b3\u65b9\u6848\u9ed8\u8ba4\u524d\u7f00\uff0c\u5982 ",(0,r.kt)("inlineCode",{parentName:"li"},"Furion")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"-UseDatabaseNames"),"\uff1a\u662f\u5426\u4fdd\u6301\u751f\u6210\u548c\u6570\u636e\u5e93\u3001\u8868\u4e00\u81f4\u7684\u540d\u79f0"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"-Namespace"),"\uff1a\u6307\u5b9a\u5b9e\u4f53\u547d\u540d\u7a7a\u95f4")),(0,r.kt)("h2",{id:"9195-\u53cd\u9988\u4e0e\u5efa\u8bae"},"9.19.5 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,r.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/a0a8cac6.32653b58.js b/handbook/build/assets/js/a0a8cac6.32653b58.js new file mode 100644 index 00000000000..e4d37020a03 --- /dev/null +++ b/handbook/build/assets/js/a0a8cac6.32653b58.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[7365],{3905:function(e,n,t){t.d(n,{Zo:function(){return s},kt:function(){return m}});var a=t(7294);function r(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function o(e){for(var n=1;n=0||(r[t]=e[t]);return r}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var p=a.createContext({}),d=function(e){var n=a.useContext(p),t=n;return e&&(t="function"==typeof e?e(n):o(o({},n),e)),t},s=function(e){var n=d(e.components);return a.createElement(p.Provider,{value:n},e.children)},g={inlineCode:"code",wrapper:function(e){var n=e.children;return a.createElement(a.Fragment,{},n)}},c=a.forwardRef((function(e,n){var t=e.components,r=e.mdxType,i=e.originalType,p=e.parentName,s=l(e,["components","mdxType","originalType","parentName"]),c=d(t),m=r,u=c["".concat(p,".").concat(m)]||c[m]||g[m]||i;return t?a.createElement(u,o(o({ref:n},s),{},{components:t})):a.createElement(u,o({ref:n},s))}));function m(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var i=t.length,o=new Array(i);o[0]=c;var l={};for(var p in n)hasOwnProperty.call(n,p)&&(l[p]=n[p]);l.originalType=e,l.mdxType="string"==typeof e?e:r,o[1]=l;for(var d=2;dILogger<T> \u6cdb\u578b\u65b9\u5f0f",id:"1841-iloggert-\u6cdb\u578b\u65b9\u5f0f",children:[]},{value:"18.4.2 ILoggerFactory \u5de5\u5382\u65b9\u5f0f",id:"1842-iloggerfactory-\u5de5\u5382\u65b9\u5f0f",children:[]},{value:"18.4.3 \u61d2\u4eba\u6a21\u5f0f \ud83d\ude01",id:"1843-\u61d2\u4eba\u6a21\u5f0f-",children:[]}]},{value:"18.5 \u5199\u5165\u5176\u4ed6\u4ecb\u8d28",id:"185-\u5199\u5165\u5176\u4ed6\u4ecb\u8d28",children:[{value:"18.5.1 Serilog \u62d3\u5c55\u5305\u4f7f\u7528",id:"1851-serilog-\u62d3\u5c55\u5305\u4f7f\u7528",children:[]},{value:"18.5.2 \u8bb0\u5f55\u8bf7\u6c42\u65e5\u5fd7",id:"1852-\u8bb0\u5f55\u8bf7\u6c42\u65e5\u5fd7",children:[]}]},{value:"18.6 \u65e5\u5fd7\u793a\u4f8b",id:"186-\u65e5\u5fd7\u793a\u4f8b",children:[]},{value:"18.7 \u6253\u5370\u65e5\u5fd7\u5230 Swagger \u4e2d",id:"187-\u6253\u5370\u65e5\u5fd7\u5230-swagger-\u4e2d",children:[]},{value:"18.8 \u5728\u540e\u53f0\u4efb\u52a1\u4e2d\u4f7f\u7528",id:"188-\u5728\u540e\u53f0\u4efb\u52a1\u4e2d\u4f7f\u7528",children:[]},{value:"18.9 \u5173\u4e8e\u65e5\u5fd7\u6587\u4ef6\u91cd\u590d\u751f\u6210\u95ee\u9898",id:"189-\u5173\u4e8e\u65e5\u5fd7\u6587\u4ef6\u91cd\u590d\u751f\u6210\u95ee\u9898",children:[]},{value:"18.10 \u591a\u7ebf\u7a0b\u5171\u4eab\u4f5c\u7528\u57df",id:"1810-\u591a\u7ebf\u7a0b\u5171\u4eab\u4f5c\u7528\u57df",children:[]},{value:"18.11 \u9759\u6001 Default \u65b9\u5f0f\u6784\u5efa",id:"1811-\u9759\u6001-default-\u65b9\u5f0f\u6784\u5efa",children:[]},{value:"18.12 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"1812-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],g={toc:s};function c(e){var n=e.components,t=(0,r.Z)(e,o);return(0,i.kt)("wrapper",(0,a.Z)({},g,t,{components:n,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"181-\u5173\u4e8e\u65e5\u5fd7"},"18.1 \u5173\u4e8e\u65e5\u5fd7"),(0,i.kt)("p",null,"\u901a\u5e38\u65e5\u5fd7\u6307\u7684\u662f",(0,i.kt)("strong",{parentName:"p"},"\u7cfb\u7edf\u65e5\u5fd7"),"\u548c",(0,i.kt)("strong",{parentName:"p"},"\u7a0b\u5e8f\u65e5\u5fd7"),"\u3002"),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"\u7cfb\u7edf\u65e5\u5fd7")," \u662f\u8bb0\u5f55\u7cfb\u7edf\u4e2d\u786c\u4ef6\u3001\u8f6f\u4ef6\u548c\u7cfb\u7edf\u95ee\u9898\u7684\u4fe1\u606f\uff0c\u540c\u65f6\u8fd8\u53ef\u4ee5\u76d1\u89c6\u7cfb\u7edf\u4e2d\u53d1\u751f\u7684\u4e8b\u4ef6\u3002\u7528\u6237\u53ef\u4ee5\u901a\u8fc7\u5b83\u6765\u68c0\u67e5\u9519\u8bef\u53d1\u751f\u7684\u539f\u56e0\uff0c\u6216\u8005\u5bfb\u627e\u53d7\u5230\u653b\u51fb\u65f6\u653b\u51fb\u8005\u7559\u4e0b\u7684\u75d5\u8ff9\u3002\u7cfb\u7edf\u65e5\u5fd7\u5305\u62ec\u7cfb\u7edf\u65e5\u5fd7\u3001\u5e94\u7528\u7a0b\u5e8f\u65e5\u5fd7\u548c\u5b89\u5168\u65e5\u5fd7\u3002"),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"\u7a0b\u5e8f\u65e5\u5fd7")," \u662f\u7a0b\u5e8f\u8fd0\u884c\u4e2d\u4ea7\u751f\u7684\u65e5\u5fd7\uff0c\u901a\u5e38\u7531\u6846\u67b6\u8fd0\u884c\u65f6\u6216\u5f00\u53d1\u8005\u63d0\u4f9b\u7684\u65e5\u5fd7\u3002\u5305\u62ec\u8bf7\u6c42\u65e5\u5fd7\uff0c\u5f02\u5e38\u65e5\u5fd7\u3001\u5ba1\u8ba1\u65e5\u5fd7\u3001\u884c\u4e3a\u65e5\u5fd7\u7b49\u3002"),(0,i.kt)("h2",{id:"182-\u65e5\u5fd7\u4f5c\u7528"},"18.2 \u65e5\u5fd7\u4f5c\u7528"),(0,i.kt)("p",null,"\u5728\u9879\u76ee\u5f00\u53d1\u4e2d\uff0c\u90fd\u4e0d\u53ef\u907f\u514d\u7684\u4f7f\u7528\u5230\u65e5\u5fd7\u3002\u6ca1\u6709\u65e5\u5fd7\u867d\u7136\u4e0d\u4f1a\u5f71\u54cd\u9879\u76ee\u7684\u6b63\u786e\u8fd0\u884c\uff0c\u4f46\u662f\u6ca1\u6709\u65e5\u5fd7\u7684\u9879\u76ee\u53ef\u4ee5\u8bf4\u662f\u4e0d\u5b8c\u6574\u7684\u3002\u65e5\u5fd7\u5728\u8c03\u8bd5\uff0c\u9519\u8bef\u6216\u8005\u5f02\u5e38\u5b9a\u4f4d\uff0c\u6570\u636e\u5206\u6790\u4e2d\u7684\u4f5c\u7528\u662f\u4e0d\u8a00\u800c\u55bb\u7684\u3002"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"\u8c03\u8bd5")),(0,i.kt)("p",null,"\u5728\u9879\u76ee\u8c03\u8bd5\u65f6\uff0c\u67e5\u770b\u6808\u4fe1\u606f\u53ef\u4ee5\u65b9\u4fbf\u5730\u77e5\u9053\u5f53\u524d\u7a0b\u5e8f\u7684\u8fd0\u884c\u72b6\u6001\uff0c\u8f93\u51fa\u7684\u65e5\u5fd7\u4fbf\u4e8e\u8bb0\u5f55\u7a0b\u5e8f\u5728\u4e4b\u524d\u7684\u8fd0\u884c\u7ed3\u679c\u3002"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"\u9519\u8bef\u5b9a\u4f4d")),(0,i.kt)("p",null,"\u4e0d\u8981\u4ee5\u4e3a\u9879\u76ee\u80fd\u6b63\u786e\u8dd1\u8d77\u6765\u5c31\u53ef\u4ee5\u9ad8\u6795\u65e0\u5fe7\uff0c\u9879\u76ee\u5728\u8fd0\u884c\u4e00\u6bb5\u65f6\u5019\u540e\uff0c\u53ef\u80fd\u7531\u4e8e\u6570\u636e\u95ee\u9898\uff0c\u7f51\u7edc\u95ee\u9898\uff0c\u5185\u5b58\u95ee\u9898\u7b49\u51fa\u73b0\u5f02\u5e38\u3002\u8fd9\u65f6\u65e5\u5fd7\u53ef\u4ee5\u5e2e\u52a9\u5f00\u53d1\u6216\u8005\u8fd0\u7ef4\u4eba\u5458\u5feb\u901f\u5b9a\u4f4d\u9519\u8bef\u4f4d\u7f6e\uff0c\u63d0\u51fa\u89e3\u51b3\u65b9\u6848\u3002"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"\u6570\u636e\u5206\u6790")),(0,i.kt)("p",null,"\u5927\u6570\u636e\u7684\u5174\u8d77\uff0c\u4f7f\u5f97\u5927\u91cf\u7684\u65e5\u5fd7\u5206\u6790\u6210\u4e3a\u53ef\u80fd\uff0cELK \u4e5f\u8ba9\u65e5\u5fd7\u5206\u6790\u95e8\u69db\u964d\u4f4e\u4e86\u5f88\u591a\u3002\u65e5\u5fd7\u4e2d\u8574\u542b\u4e86\u5927\u91cf\u7684\u7528\u6237\u6570\u636e\uff0c\u5305\u62ec\u70b9\u51fb\u884c\u4e3a\uff0c\u5174\u8da3\u504f\u597d\u7b49\uff0c\u7528\u6237\u753b\u50cf\u5bf9\u4e8e\u516c\u53f8\u4e0b\u4e00\u6b65\u7684\u6218\u7565\u65b9\u5411\u6709\u4e00\u5b9a\u6307\u5f15\u4f5c\u7528\u3002"),(0,i.kt)("h2",{id:"183-\u65e5\u5fd7\u7ea7\u522b"},"18.3 \u65e5\u5fd7\u7ea7\u522b"),(0,i.kt)("p",null,"\u65e5\u5fd7\u7ea7\u522b\u53ef\u4ee5\u6709\u6548\u7684\u5bf9\u65e5\u5fd7\u4fe1\u606f\u8fdb\u884c\u5f52\u7c7b\uff0c\u65b9\u4fbf\u51c6\u786e\u7684\u67e5\u770b\u7279\u5b9a\u65e5\u5fd7\u5185\u5bb9\u3002\u901a\u5e38\u65e5\u5fd7\u7c7b\u522b\u6709\u4ee5\u4e0b\u7ea7\u522b\uff1a"),(0,i.kt)("table",null,(0,i.kt)("thead",{parentName:"table"},(0,i.kt)("tr",{parentName:"thead"},(0,i.kt)("th",{parentName:"tr",align:"center"},"\u7ea7\u522b"),(0,i.kt)("th",{parentName:"tr",align:null},"\u503c"),(0,i.kt)("th",{parentName:"tr",align:"center"},"\u65b9\u6cd5"),(0,i.kt)("th",{parentName:"tr",align:null},"\u63cf\u8ff0"))),(0,i.kt)("tbody",{parentName:"table"},(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:"center"},"Trace\uff08\u8ddf\u8e2a\uff09"),(0,i.kt)("td",{parentName:"tr",align:null},"0"),(0,i.kt)("td",{parentName:"tr",align:"center"},"LogTrace"),(0,i.kt)("td",{parentName:"tr",align:null},"\u5305\u542b\u6700\u8be6\u7ec6\u7684\u6d88\u606f\u3002 \u8fd9\u4e9b\u6d88\u606f\u53ef\u80fd\u5305\u542b\u654f\u611f\u7684\u5e94\u7528\u6570\u636e\u3002 \u8fd9\u4e9b\u6d88\u606f\u9ed8\u8ba4\u60c5\u51b5\u4e0b\u5904\u4e8e\u7981\u7528\u72b6\u6001\uff0c\u5e76\u4e14\u4e0d\u5e94\u5728\u751f\u4ea7\u4e2d\u542f\u7528\u3002")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:"center"},"Debug\uff08\u8c03\u8bd5\uff09"),(0,i.kt)("td",{parentName:"tr",align:null},"1"),(0,i.kt)("td",{parentName:"tr",align:"center"},"LogDebug"),(0,i.kt)("td",{parentName:"tr",align:null},"\u7528\u4e8e\u8c03\u8bd5\u548c\u5f00\u53d1\u3002 \u7531\u4e8e\u91cf\u5927\uff0c\u8bf7\u5728\u751f\u4ea7\u4e2d\u5c0f\u5fc3\u4f7f\u7528\u3002")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:"center"},"Information\uff08\u4fe1\u606f\uff09"),(0,i.kt)("td",{parentName:"tr",align:null},"2"),(0,i.kt)("td",{parentName:"tr",align:"center"},"LogInformation"),(0,i.kt)("td",{parentName:"tr",align:null},"\u8ddf\u8e2a\u5e94\u7528\u7684\u5e38\u89c4\u6d41\u3002 \u53ef\u80fd\u5177\u6709\u957f\u671f\u503c\u3002")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:"center"},"Warning\uff08\u8b66\u544a\uff09"),(0,i.kt)("td",{parentName:"tr",align:null},"3"),(0,i.kt)("td",{parentName:"tr",align:"center"},"LogWarning"),(0,i.kt)("td",{parentName:"tr",align:null},"\u5bf9\u4e8e\u5f02\u5e38\u4e8b\u4ef6\u6216\u610f\u5916\u4e8b\u4ef6\u3002 \u901a\u5e38\u5305\u62ec\u4e0d\u4f1a\u5bfc\u81f4\u5e94\u7528\u5931\u8d25\u7684\u9519\u8bef\u6216\u60c5\u51b5\u3002")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:"center"},"Error\uff08\u9519\u8bef\uff09"),(0,i.kt)("td",{parentName:"tr",align:null},"4"),(0,i.kt)("td",{parentName:"tr",align:"center"},"LogError"),(0,i.kt)("td",{parentName:"tr",align:null},"\u8868\u793a\u65e0\u6cd5\u5904\u7406\u7684\u9519\u8bef\u548c\u5f02\u5e38\u3002 \u8fd9\u4e9b\u6d88\u606f\u8868\u793a\u5f53\u524d\u64cd\u4f5c\u6216\u8bf7\u6c42\u5931\u8d25\uff0c\u800c\u4e0d\u662f\u6574\u4e2a\u5e94\u7528\u5931\u8d25\u3002")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:"center"},"Critical\uff08\u4e25\u91cd\uff09"),(0,i.kt)("td",{parentName:"tr",align:null},"5"),(0,i.kt)("td",{parentName:"tr",align:"center"},"LogCritical"),(0,i.kt)("td",{parentName:"tr",align:null},"\u9700\u8981\u7acb\u5373\u5173\u6ce8\u7684\u5931\u8d25\u3002 \u4f8b\u5982\u6570\u636e\u4e22\u5931\u3001\u78c1\u76d8\u7a7a\u95f4\u4e0d\u8db3\u3002")))),(0,i.kt)("h2",{id:"184-\u5982\u4f55\u4f7f\u7528"},"18.4 \u5982\u4f55\u4f7f\u7528"),(0,i.kt)("p",null,"\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},".NET 5")," \u6846\u67b6\u4e2d\uff0c\u5fae\u8f6f\u5df2\u7ecf\u4e3a\u6211\u4eec\u5185\u7f6e\u4e86 ",(0,i.kt)("inlineCode",{parentName:"p"},"\u65e5\u5fd7\u7ec4\u4ef6"),"\uff0c\u6b63\u5e38\u60c5\u51b5\u4e0b\uff0c\u65e0\u9700\u6211\u4eec\u5f15\u7528\u7b2c\u4e09\u65b9\u5305\u8fdb\u884c\u65e5\u5fd7\u8bb0\u5f55\u3002",(0,i.kt)("inlineCode",{parentName:"p"},".NET 5")," \u6846\u67b6\u4e3a\u6211\u4eec\u63d0\u4f9b\u4e86\u4e24\u79cd\u65e5\u5fd7\u5bf9\u8c61\u521b\u5efa\u65b9\u5f0f\u3002"),(0,i.kt)("h3",{id:"1841-iloggert-\u6cdb\u578b\u65b9\u5f0f"},"18.4.1 ",(0,i.kt)("inlineCode",{parentName:"h3"},"ILogger")," \u6cdb\u578b\u65b9\u5f0f"),(0,i.kt)("p",null,"\u4f7f\u7528\u975e\u5e38\u7b80\u5355\uff0c\u53ef\u4ee5\u901a\u8fc7 ",(0,i.kt)("inlineCode",{parentName:"p"},"ILogger")," \u5bf9\u8c61\u8fdb\u884c\u6ce8\u5165\uff0c\u5982\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{5}","{5}":!0},'public class PrivacyModel : PageModel\n{\n private readonly ILogger _logger;\n\n public PrivacyModel(ILogger logger)\n {\n _logger = logger;\n }\n\n public void OnGet()\n {\n _logger.LogInformation("GET Pages.PrivacyModel called.");\n }\n}\n')),(0,i.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u5c0f\u77e5\u8bc6")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u901a\u8fc7\u6cdb\u578b ",(0,i.kt)("inlineCode",{parentName:"p"},"ILogger")," \u65b9\u5f0f\u5199\u5165\u65e5\u5fd7\uff0c\u90a3\u4e48\u9ed8\u8ba4\u5c06 ",(0,i.kt)("inlineCode",{parentName:"p"},"T")," \u7c7b\u578b\u5b8c\u6574\u7c7b\u578b\u540d\u79f0\u4f5c\u4e3a ",(0,i.kt)("inlineCode",{parentName:"p"},"\u65e5\u5fd7\u7c7b\u522b"),"\u3002"))),(0,i.kt)("h3",{id:"1842-iloggerfactory-\u5de5\u5382\u65b9\u5f0f"},"18.4.2 ",(0,i.kt)("inlineCode",{parentName:"h3"},"ILoggerFactory")," \u5de5\u5382\u65b9\u5f0f"),(0,i.kt)("p",null,"\u4f7f\u7528\u5de5\u5382\u65b9\u5f0f\uff0c\u9700\u624b\u52a8\u4f20\u5165 ",(0,i.kt)("inlineCode",{parentName:"p"},"\u65e5\u5fd7\u7c7b\u522b"),"\uff0c\u5982\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{5,7}","{5,7}":!0},'public class ContactModel : PageModel\n{\n private readonly ILogger _logger;\n\n public ContactModel(ILoggerFactory logger)\n {\n _logger = logger.CreateLogger("MyCategory");\n }\n\n public void OnGet()\n {\n _logger.LogInformation("GET Pages.ContactModel called.");\n }\n}\n')),(0,i.kt)("h3",{id:"1843-\u61d2\u4eba\u6a21\u5f0f-"},"18.4.3 ",(0,i.kt)("inlineCode",{parentName:"h3"},"\u61d2\u4eba\u6a21\u5f0f")," \ud83d\ude01"),(0,i.kt)("p",null,"\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\uff0c\u63d0\u4f9b\u4e86\u66f4\u61d2\u7684\u65b9\u5f0f\u5199\u5165\u65e5\u5fd7\uff0c\u4e5f\u5c31\u662f\u901a\u8fc7\u5b57\u7b26\u4e32\u62d3\u5c55\u7684\u65b9\u5f0f\u5199\u5165\uff0c\u5982\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'"\u7b80\u5355\u65e5\u5fd7".LogInformation();\n\n"\u767e\u5c0f\u50e7 \u65b0\u589e\u4e86\u4e00\u6761\u8bb0\u5f55".LogInformation();\n\n"\u7a0b\u5e8f\u51fa\u73b0\u5f02\u5e38\u5566".LogError();\n\n"\u8fd9\u662f\u81ea\u5b9a\u4e49\u7c7b\u522b\u65e5\u5fd7".SetCategory("\u7c7b\u522b").LogInformation();\n')),(0,i.kt)("p",null,"\u901a\u8fc7\u5b57\u7b26\u4e32\u62d3\u5c55\u65b9\u5f0f\u53ef\u4ee5\u5728\u4efb\u4f55\u65f6\u5019\u65b9\u4fbf\u8bb0\u5f55\u65e5\u5fd7\uff0c\u4e13\u95e8\u4e3a\u61d2\u4eba\u63d0\u4f9b\u7684\u3002"),(0,i.kt)("h2",{id:"185-\u5199\u5165\u5176\u4ed6\u4ecb\u8d28"},"18.5 \u5199\u5165\u5176\u4ed6\u4ecb\u8d28"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},".NET 5")," \u6846\u67b6\u4e2d\u5e76\u672a\u63d0\u4f9b\u5199\u5165",(0,i.kt)("inlineCode",{parentName:"p"},"\u6587\u4ef6\u3001\u6570\u636e\u5e93")," \u6216\u5176\u4ed6\u4ecb\u8d28\u7684\u63d0\u4f9b\u5668\uff0c\u9ed8\u8ba4\u53ea\u63d0\u4f9b\u4e86 ",(0,i.kt)("inlineCode",{parentName:"p"},"Debug\u3001Console")," \u4e24\u79cd\u65b9\u5f0f\u3002\u8fd9\u4e2a\u65f6\u5019\u6211\u4eec\u5c31\u9700\u8981\u5f15\u7528\u7b2c\u4e09\u65b9\u65e5\u5fd7\u7ec4\u4ef6\uff0c\u65b9\u4fbf\u6211\u4eec\u5199\u5165\u5230\u591a\u4e2a\u4ecb\u8d28\u4e2d\u3002"),(0,i.kt)("p",null,"\u5728\u8fd9\u91cc\uff0c",(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u5b98\u65b9\u63a8\u8350\u4f7f\u7528 ",(0,i.kt)("inlineCode",{parentName:"p"},"Serilog")," \u65e5\u5fd7\u7ec4\u4ef6\uff0c\u4e3a\u6b64\uff0c",(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u63d0\u4f9b\u4e86 ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion.Extras.Logging.Serilog")," \u62d3\u5c55\u5305\uff0c\u65b9\u4fbf\u5feb\u901f\u548c ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u7ed3\u5408\u3002"),(0,i.kt)("h3",{id:"1851-serilog-\u62d3\u5c55\u5305\u4f7f\u7528"},"18.5.1 ",(0,i.kt)("inlineCode",{parentName:"h3"},"Serilog")," \u62d3\u5c55\u5305\u4f7f\u7528"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"\u5b89\u88c5 ",(0,i.kt)("inlineCode",{parentName:"li"},"Furion.Extras.Logging.Serilog")," \u62d3\u5c55\u5305")),(0,i.kt)("p",null,"\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion.Core")," \u5c42\u5b89\u88c5 ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion.Extras.Logging.Serilog")," \u62d3\u5c55\u5305"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"\u5728 ",(0,i.kt)("inlineCode",{parentName:"li"},"Program.cs")," \u4e2d\u8c03\u7528 ",(0,i.kt)("inlineCode",{parentName:"li"},"UseSerilogDefault()"))),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{21}","{21}":!0},"using Microsoft.AspNetCore.Hosting;\nusing Microsoft.Extensions.Hosting;\n\nnamespace Furion.Web.Entry\n{\n public class Program\n {\n public static void Main(string[] args)\n {\n CreateHostBuilder(args).Build().Run();\n }\n\n public static IHostBuilder CreateHostBuilder(string[] args)\n {\n return Host.CreateDefaultBuilder(args)\n .ConfigureWebHostDefaults(webBuilder =>\n {\n webBuilder.Inject()\n .UseStartup();\n })\n .UseSerilogDefault();\n }\n }\n}\n")),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u6ce8\u610f")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},(0,i.kt)("inlineCode",{parentName:"p"},".UseSerilogDefault()")," \u9ed8\u8ba4\u96c6\u6210\u4e86 ",(0,i.kt)("inlineCode",{parentName:"p"},"\u63a7\u5236\u53f0")," \u548c ",(0,i.kt)("inlineCode",{parentName:"p"},"\u6587\u4ef6")," \u65b9\u5f0f\u3002\u5982\u9700\u81ea\u5b9a\u4e49\u5199\u5165\uff0c\u5219\u4f20\u5165\u9700\u8981\u5199\u5165\u7684\u4ecb\u8d28\u5373\u53ef\uff1a"),(0,i.kt)("pre",{parentName:"div"},(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'.UseSerilogDefault(config =>\n{\n config.WriteTo.Console(outputTemplate: "[{Timestamp:HH:mm:ss} {Level:u3}] {Message:lj} {Properties:j}{NewLine}{Exception}")\n .WriteTo.File("log.log", rollingInterval: RollingInterval.Day, rollOnFileSizeLimit: true);\n});\n')))),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u62d3\u5c55\uff1a\u53ef\u6309\u65e5\u5fd7\u7ea7\u522b \u5355\u72ec\u8f93\u51fa")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("pre",{parentName:"div"},(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'.UseSerilogDefault(config =>//\u9ed8\u8ba4\u96c6\u6210\u4e86 \u63a7\u5236\u53f0 \u548c \u6587\u4ef6 \u65b9\u5f0f\u3002\u5982\u9700\u81ea\u5b9a\u4e49\u5199\u5165\uff0c\u5219\u4f20\u5165\u9700\u8981\u5199\u5165\u7684\u4ecb\u8d28\u5373\u53ef\uff1a\n {\n string date = DateTime.Now.ToString("yyyy-MM-dd");//\u6309\u65f6\u95f4\u521b\u5efa\u6587\u4ef6\u5939\n string outputTemplate = "{NewLine}\u3010{Level:u3}\u3011{Timestamp:yyyy-MM-dd HH:mm:ss.fff}" +\n "{NewLine}#Msg#{Message:lj}" +\n "{NewLine}#Pro #{Properties:j}" +\n "{NewLine}#Exc#{Exception}" +\n new string(\'-\', 50);//\u8f93\u51fa\u6a21\u677f\n\n ///1.\u8f93\u51fa\u6240\u6709restrictedToMinimumLevel\uff1aLogEventLevel\u7c7b\u578b\n config\n //.MinimumLevel.Debug() // \u6240\u6709Sink\u7684\u6700\u5c0f\u8bb0\u5f55\u7ea7\u522b\n //.MinimumLevel.Override("Microsoft", LogEventLevel.Fatal)\n //.Enrich.FromLogContext()\n .WriteTo.Console(outputTemplate: outputTemplate)\n .WriteTo.File($"_log/{date}/application.log",\n outputTemplate: outputTemplate,\n restrictedToMinimumLevel: LogEventLevel.Information,\n rollingInterval: RollingInterval.Day,//\u65e5\u5fd7\u6309\u65e5\u4fdd\u5b58\uff0c\u8fd9\u6837\u4f1a\u5728\u6587\u4ef6\u540d\u79f0\u540e\u81ea\u52a8\u52a0\u4e0a\u65e5\u671f\u540e\u7f00\n //rollOnFileSizeLimit: true, // \u9650\u5236\u5355\u4e2a\u6587\u4ef6\u7684\u6700\u5927\u957f\u5ea6\n //retainedFileCountLimit: 10, // \u6700\u5927\u4fdd\u5b58\u6587\u4ef6\u6570,\u7b49\u4e8enull\u65f6\u6c38\u8fdc\u4fdd\u7559\u6587\u4ef6\u3002\n //fileSizeLimitBytes: 10 * 1024, // \u6700\u5927\u5355\u4e2a\u6587\u4ef6\u5927\u5c0f\n encoding: Encoding.UTF8 // \u6587\u4ef6\u5b57\u7b26\u7f16\u7801\n )\n\n #region 2.\u6309LogEventLevel.\u8f93\u51fa\u72ec\u7acb\u53d1\u5e03/\u5355\u6587\u4ef6\n\n ///2.1\u4ec5\u8f93\u51fa LogEventLevel.Debug \u7c7b\u578b\n .WriteTo.Logger(lg => lg.Filter.ByIncludingOnly(evt => evt.Level == LogEventLevel.Debug)//\u7b5b\u9009\u8fc7\u6ee4\n .WriteTo.File($"_log/{date}/{LogEventLevel.Debug}.log",\n outputTemplate: outputTemplate,\n rollingInterval: RollingInterval.Day,//\u65e5\u5fd7\u6309\u65e5\u4fdd\u5b58\uff0c\u8fd9\u6837\u4f1a\u5728\u6587\u4ef6\u540d\u79f0\u540e\u81ea\u52a8\u52a0\u4e0a\u65e5\u671f\u540e\u7f00\n encoding: Encoding.UTF8 // \u6587\u4ef6\u5b57\u7b26\u7f16\u7801\n )\n )\n\n ///2.2\u4ec5\u8f93\u51fa LogEventLevel.Error \u7c7b\u578b\n .WriteTo.Logger(lg => lg.Filter.ByIncludingOnly(evt => evt.Level == LogEventLevel.Error)//\u7b5b\u9009\u8fc7\u6ee4\n .WriteTo.File($"_log/{date}/{LogEventLevel.Error}.log",\n outputTemplate: outputTemplate,\n rollingInterval: RollingInterval.Day,//\u65e5\u5fd7\u6309\u65e5\u4fdd\u5b58\uff0c\u8fd9\u6837\u4f1a\u5728\u6587\u4ef6\u540d\u79f0\u540e\u81ea\u52a8\u52a0\u4e0a\u65e5\u671f\u540e\u7f00\n encoding: Encoding.UTF8 // \u6587\u4ef6\u5b57\u7b26\u7f16\u7801\n )\n )\n\n #endregion \u6309LogEventLevel \u72ec\u7acb\u53d1\u5e03/\u5355\u6587\u4ef6\n\n ;\n });\n')))),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"\u66ff\u6362 ",(0,i.kt)("inlineCode",{parentName:"li"},"appsetting.json")," \u9ed8\u8ba4\u65e5\u5fd7\u5185\u5bb9")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-json"},'"Logging": {\n "LogLevel": {\n "Default": "Information",\n "Microsoft": "Warning",\n "Microsoft.Hosting.Lifetime": "Information",\n "Microsoft.EntityFrameworkCore": "Information"\n }\n }\n')),(0,i.kt)("p",null,"\u66ff\u6362\u4e3a\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-json"},'"Serilog": {\n "MinimumLevel": {\n "Default": "Information",\n "Override": {\n "System": "Warning",\n "Microsoft": "Warning",\n "Microsoft.Hosting.Lifetime": "Information",\n "Microsoft.EntityFrameworkCore": "Information"\n }\n }\n }\n')),(0,i.kt)("h3",{id:"1852-\u8bb0\u5f55\u8bf7\u6c42\u65e5\u5fd7"},"18.5.2 \u8bb0\u5f55\u8bf7\u6c42\u65e5\u5fd7"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Serilog")," \u65e5\u5fd7\u7ec4\u4ef6\u4e5f\u63d0\u4f9b\u4e86\u975e\u5e38\u65b9\u4fbf\u5feb\u6377\u7684\u8bf7\u6c42\u65e5\u5fd7\u4e2d\u95f4\u4ef6\uff0c\u53ea\u9700\u8981\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Startup.cs")," \u4e2d\u542f\u7528\u5373\u53ef\u3002\u5982\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"public void Configure(IApplicationBuilder app, IWebHostEnvironment env)\n {\n app.UseStaticFiles();\n app.UseSerilogRequestLogging(); // \u5fc5\u987b\u5728 UseStaticFiles \u548c UseRouting \u4e4b\u95f4\n app.UseRouting();\n }\n")),(0,i.kt)("h2",{id:"186-\u65e5\u5fd7\u793a\u4f8b"},"18.6 \u65e5\u5fd7\u793a\u4f8b"),(0,i.kt)("p",null,"\u4e0b\u9762\u4fbf\u662f\u65e5\u5fd7\u8f93\u51fa\u65e5\u5fd7\u7684\u6a21\u677f\uff0c\u652f\u6301\u5404\u79cd\u81ea\u5b9a\u4e49\u65b9\u5f0f"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},'2020-12-21 15:54:43.775 +08:00 [INF] Application started. Press Ctrl+C to shut down.\n2020-12-21 15:54:43.897 +08:00 [INF] Hosting environment: Development\n2020-12-21 15:54:43.899 +08:00 [INF] Content root path: D:\\MONK\\Furion\\samples\\Furion.Web.Entry\n2020-12-21 15:55:00.651 +08:00 [WRN] Sensitive data logging is enabled. Log entries and exception messages may include sensitive application data; this mode should only be enabled during development.\n2020-12-21 15:55:00.817 +08:00 [INF] Entity Framework Core 5.0.1 initialized \'DefaultDbContext\' using provider \'Microsoft.EntityFrameworkCore.Sqlite\' with options: SensitiveDataLoggingEnabled DetailedErrorsEnabled MaxPoolSize=100 MigrationsAssembly=Furion.Database.Migrations\n2020-12-21 15:55:01.711 +08:00 [WRN] Compiling a query which loads related collections for more than one collection navigation either via \'Include\' or through projection but no \'QuerySplittingBehavior\' has been configured. By default Entity Framework will use \'QuerySplittingBehavior.SingleQuery\' which can potentially result in slow query performance. See https://go.microsoft.com/fwlink/?linkid=2134277 for more information. To identify the query that\'s triggering this warning call \'ConfigureWarnings(w => w.Throw(RelationalEventId.MultipleCollectionIncludeWarning))\'\n2020-12-21 15:55:01.919 +08:00 [INF] Executed DbCommand (31ms) [Parameters=[], CommandType=\'"Text"\', CommandTimeout=\'30\']\nSELECT "p"."Id", "p"."Name", "p"."Age", "p"."Address", "p0"."PhoneNumber", "p0"."QQ", "p"."CreatedTime", "p0"."Id", "c"."Id", "c"."Name", "c"."Gender", "t"."Id", "t"."Name", "t"."PersonsId", "t"."PostsId"\nFROM "Person" AS "p"\nLEFT JOIN "PersonDetail" AS "p0" ON "p"."Id" = "p0"."PersonId"\nLEFT JOIN "Children" AS "c" ON "p"."Id" = "c"."PersonId"\nLEFT JOIN (\n SELECT "p2"."Id", "p2"."Name", "p1"."PersonsId", "p1"."PostsId"\n FROM "PersonPost" AS "p1"\n INNER JOIN "Post" AS "p2" ON "p1"."PostsId" = "p2"."Id"\n) AS "t" ON "p"."Id" = "t"."PersonsId"\nORDER BY "p"."Id", "p0"."Id", "c"."Id", "t"."PersonsId", "t"."PostsId", "t"."Id"\n2020-12-21 15:55:25.354 +08:00 [INF] Executed DbCommand (3ms) [Parameters=[], CommandType=\'"Text"\', CommandTimeout=\'30\']\nSELECT "p"."Id", "p"."Name", "p"."Age", "p"."Address", "p0"."PhoneNumber", "p0"."QQ", "p"."CreatedTime", "p0"."Id", "c"."Id", "c"."Name", "c"."Gender", "t"."Id", "t"."Name", "t"."PersonsId", "t"."PostsId"\nFROM "Person" AS "p"\nLEFT JOIN "PersonDetail" AS "p0" ON "p"."Id" = "p0"."PersonId"\nLEFT JOIN "Children" AS "c" ON "p"."Id" = "c"."PersonId"\nLEFT JOIN (\n SELECT "p2"."Id", "p2"."Name", "p1"."PersonsId", "p1"."PostsId"\n FROM "PersonPost" AS "p1"\n INNER JOIN "Post" AS "p2" ON "p1"."PostsId" = "p2"."Id"\n) AS "t" ON "p"."Id" = "t"."PersonsId"\nORDER BY "p"."Id", "p0"."Id", "c"."Id", "t"."PersonsId", "t"."PostsId", "t"."Id"\n2020-12-21 15:58:27.328 +08:00 [INF] Application started. Press Ctrl+C to shut down.\n2020-12-21 15:58:27.442 +08:00 [INF] Hosting environment: Development\n2020-12-21 15:58:27.444 +08:00 [INF] Content root path: D:\\MONK\\Furion\\samples\\Furion.Web.Entry\n2020-12-21 15:58:27.909 +08:00 [INF] HTTP GET / responded 200 in 457.0657 ms\n2020-12-21 15:58:33.336 +08:00 [INF] HTTP GET /api/index.html responded 200 in 95.9277 ms\n2020-12-21 15:58:34.187 +08:00 [INF] HTTP GET /swagger/Default/swagger.json responded 200 in 674.9800 ms\n')),(0,i.kt)("h2",{id:"187-\u6253\u5370\u65e5\u5fd7\u5230-swagger-\u4e2d"},"18.7 \u6253\u5370\u65e5\u5fd7\u5230 ",(0,i.kt)("inlineCode",{parentName:"h2"},"Swagger")," \u4e2d"),(0,i.kt)("p",null,"\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\u9ed8\u8ba4\u96c6\u6210\u4e86 ",(0,i.kt)("inlineCode",{parentName:"p"},"MiniProfiler")," \u7ec4\u4ef6\u5e76\u4e0e ",(0,i.kt)("inlineCode",{parentName:"p"},"Swagger")," \u8fdb\u884c\u4e86\u7ed3\u5408\uff0c\u5982\u9700\u6253\u5370\u65e5\u5fd7\u6216\u8c03\u8bd5\u4ee3\u7801\uff0c\u53ea\u9700\u8c03\u7528\u4ee5\u4e0b\u65b9\u6cd5\u5373\u53ef\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'App.PrintToMiniProfiler("\u5206\u7c7b", "\u72b6\u6001", "\u8981\u6253\u5370\u7684\u6d88\u606f");\n')),(0,i.kt)("h2",{id:"188-\u5728\u540e\u53f0\u4efb\u52a1\u4e2d\u4f7f\u7528"},"18.8 \u5728\u540e\u53f0\u4efb\u52a1\u4e2d\u4f7f\u7528"),(0,i.kt)("p",null,"\u7531\u4e8e ",(0,i.kt)("inlineCode",{parentName:"p"},"DbContext")," \u9ed8\u8ba4\u6ce8\u518c\u4e3a ",(0,i.kt)("inlineCode",{parentName:"p"},"Scoped")," \u751f\u5b58\u5468\u671f\uff0c\u6240\u4ee5\u5728\u540e\u53f0\u4efb\u52a1\u4e2d\u4f7f\u7528 ",(0,i.kt)("inlineCode",{parentName:"p"},"IServiceScopeFactory")," \u83b7\u53d6\u6240\u6709\u670d\u52a1\uff0c\u5982\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'public class JobService : BackgroundService\n{\n // \u65e5\u5fd7\u5bf9\u8c61\n private readonly ILogger _logger;\n\n // \u670d\u52a1\u5de5\u5382\n private readonly IServiceScopeFactory _scopeFactory;\n public JobService(ILogger logger\n , IServiceScopeFactory scopeFactory)\n {\n _logger = logger;\n _scopeFactory = scopeFactory;\n }\n\n protected override Task ExecuteAsync(CancellationToken stoppingToken)\n {\n _logger.LogInformation("\u5199\u65e5\u5fd7~~");\n\n using (var scope = _scopeFactory.CreateScope())\n {\n var services = scope.ServiceProvider;\n\n // \u83b7\u53d6\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\n var dbContext = Db.GetDbContext(services);\n\n // \u83b7\u53d6\u4ed3\u50a8\n var respository = Db.GetRepository(services);\n\n // \u89e3\u6790\u5176\u4ed6\u670d\u52a1\n var otherService = services.GetService();\n }\n\n return Task.CompletedTask;\n }\n}\n')),(0,i.kt)("h2",{id:"189-\u5173\u4e8e\u65e5\u5fd7\u6587\u4ef6\u91cd\u590d\u751f\u6210\u95ee\u9898"},"18.9 \u5173\u4e8e\u65e5\u5fd7\u6587\u4ef6\u91cd\u590d\u751f\u6210\u95ee\u9898"),(0,i.kt)("p",null,"\u65e5\u5fd7\u91cd\u590d\u751f\u6210\u7684\u539f\u56e0\u662f\u521b\u5efa\u4e86\u591a\u4e2a ",(0,i.kt)("inlineCode",{parentName:"p"},"ILogger")," \u5bf9\u8c61\u5bfc\u81f4\u7684\uff0c\u901a\u5e38\u6709\u4e24\u79cd\u89e3\u51b3\u65b9\u6cd5\uff1a"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},"\u8bbe\u7f6e ",(0,i.kt)("inlineCode",{parentName:"li"},"\u5b57\u7b26\u4e32")," \u62d3\u5c55\u65e5\u5fd7\u4f5c\u7528\u57df")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'"\u65e5\u5fd7\u5185\u5bb9".SetLoggerScoped(serviceProvider).LogInformation();\n')),(0,i.kt)("ol",{start:2},(0,i.kt)("li",{parentName:"ol"},"\u4fee\u6539 ",(0,i.kt)("inlineCode",{parentName:"li"},"Program.cs")," \u6ce8\u518c\u65b9\u5f0f")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{19}","{19}":!0},"using Microsoft.AspNetCore.Hosting;\nusing Microsoft.Extensions.Hosting;\n\nnamespace FurStart\n{\n public class Program\n {\n public static void Main(string[] args)\n {\n CreateHostBuilder(args).Build().Run();\n }\n\n public static IHostBuilder CreateHostBuilder(string[] args) =>\n Host.CreateDefaultBuilder(args)\n .ConfigureWebHostDefaults(webBuilder =>\n {\n webBuilder\n .UseStartup()\n .UseSerilogDefault(); // \u5199\u5230\u8fd9\u91cc\n })\n // .UseSerilogDefault(); // \u6ce8\u91ca\n }\n}\n")),(0,i.kt)("h2",{id:"1810-\u591a\u7ebf\u7a0b\u5171\u4eab\u4f5c\u7528\u57df"},"18.10 \u591a\u7ebf\u7a0b\u5171\u4eab\u4f5c\u7528\u57df"),(0,i.kt)("p",null,"\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c\u6240\u6709\u7684 ",(0,i.kt)("inlineCode",{parentName:"p"},"\u5b57\u7b26\u4e32")," \u548c ",(0,i.kt)("inlineCode",{parentName:"p"},"\u5b9e\u4f53")," \u62d3\u5c55\u90fd\u6709\u81ea\u5df1\u72ec\u7acb\u7ef4\u62a4\u7684 ",(0,i.kt)("inlineCode",{parentName:"p"},"ServiceProvider")," \u4f5c\u7528\u57df\u3002"),(0,i.kt)("p",null,"\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Web")," \u8bf7\u6c42\u4e2d\uff0c\u9ed8\u8ba4\u662f ",(0,i.kt)("inlineCode",{parentName:"p"},"HttpContext.RequestServices"),"\uff0c\u4f46\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"\u975e Web"),"\uff0c\u5982\u591a\u7ebf\u7a0b\u64cd\u4f5c\uff0c\u540e\u53f0\u4efb\u52a1\uff0c\u4e8b\u4ef6\u603b\u7ebf\u7b49\u573a\u666f\u4e0b\u4f1a\u81ea\u52a8\u521b\u5efa\u65b0\u7684\u4f5c\u7528\u57df\uff0c\u5b9e\u9645\u4e0a\u8fd9\u662f\u975e\u5e38\u4e0d\u5fc5\u8981\u7684\u5185\u5b58\u5f00\u9500\u3002"),(0,i.kt)("p",null,"\u8fd9\u65f6\uff0c\u6211\u4eec\u53ea\u9700\u8981\u901a\u8fc7 ",(0,i.kt)("inlineCode",{parentName:"p"},".SetXXXScoped(service)")," \u5171\u4eab\u5f53\u524d\u670d\u52a1\u63d0\u4f9b\u5668\u4f5c\u7528\u57df\u5373\u53ef\uff0c\u5982\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'Scoped.Create(async (fac, scope) => {\n "\u5199\u65e5\u5fd7".SetLoggerScoped(scope.ServiceProvider).LogInformation();\n});\n')),(0,i.kt)("h2",{id:"1811-\u9759\u6001-default-\u65b9\u5f0f\u6784\u5efa"},"18.11 \u9759\u6001 ",(0,i.kt)("inlineCode",{parentName:"h2"},"Default")," \u65b9\u5f0f\u6784\u5efa"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'StringLoggingPart.Default.SetMessage("\u8fd9\u662f\u4e00\u4e2a\u65e5\u5fd7").LogInformation();\n')),(0,i.kt)("h2",{id:"1812-\u53cd\u9988\u4e0e\u5efa\u8bae"},"18.12 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,i.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))),(0,i.kt)("hr",null),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e86\u89e3\u66f4\u591a")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u60f3\u4e86\u89e3\u66f4\u591a ",(0,i.kt)("inlineCode",{parentName:"p"},"\u65e5\u5fd7")," \u77e5\u8bc6\u53ef\u67e5\u9605 ",(0,i.kt)("a",{parentName:"p",href:"https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/logging/?view=aspnetcore-5.0"},"ASP.NET Core - \u65e5\u5fd7")," \u7ae0\u8282 \u548c ",(0,i.kt)("a",{parentName:"p",href:"https://serilog.net/"},"Serilog")," \u6587\u6863\u3002"))))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/a0a8cac6.a2b52f2e.js b/handbook/build/assets/js/a0a8cac6.a2b52f2e.js deleted file mode 100644 index 9875ee0dcf3..00000000000 --- a/handbook/build/assets/js/a0a8cac6.a2b52f2e.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[7365],{3905:function(e,n,t){t.d(n,{Zo:function(){return s},kt:function(){return m}});var a=t(7294);function r(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function o(e){for(var n=1;n=0||(r[t]=e[t]);return r}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var p=a.createContext({}),d=function(e){var n=a.useContext(p),t=n;return e&&(t="function"==typeof e?e(n):o(o({},n),e)),t},s=function(e){var n=d(e.components);return a.createElement(p.Provider,{value:n},e.children)},g={inlineCode:"code",wrapper:function(e){var n=e.children;return a.createElement(a.Fragment,{},n)}},c=a.forwardRef((function(e,n){var t=e.components,r=e.mdxType,i=e.originalType,p=e.parentName,s=l(e,["components","mdxType","originalType","parentName"]),c=d(t),m=r,u=c["".concat(p,".").concat(m)]||c[m]||g[m]||i;return t?a.createElement(u,o(o({ref:n},s),{},{components:t})):a.createElement(u,o({ref:n},s))}));function m(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var i=t.length,o=new Array(i);o[0]=c;var l={};for(var p in n)hasOwnProperty.call(n,p)&&(l[p]=n[p]);l.originalType=e,l.mdxType="string"==typeof e?e:r,o[1]=l;for(var d=2;dILogger<T> \u6cdb\u578b\u65b9\u5f0f",id:"1841-iloggert-\u6cdb\u578b\u65b9\u5f0f",children:[]},{value:"18.4.2 ILoggerFactory \u5de5\u5382\u65b9\u5f0f",id:"1842-iloggerfactory-\u5de5\u5382\u65b9\u5f0f",children:[]},{value:"18.4.3 \u61d2\u4eba\u6a21\u5f0f \ud83d\ude01",id:"1843-\u61d2\u4eba\u6a21\u5f0f-",children:[]}]},{value:"18.5 \u5199\u5165\u5176\u4ed6\u4ecb\u8d28",id:"185-\u5199\u5165\u5176\u4ed6\u4ecb\u8d28",children:[{value:"18.5.1 Serilog \u62d3\u5c55\u5305\u4f7f\u7528",id:"1851-serilog-\u62d3\u5c55\u5305\u4f7f\u7528",children:[]},{value:"18.5.2 \u8bb0\u5f55\u8bf7\u6c42\u65e5\u5fd7",id:"1852-\u8bb0\u5f55\u8bf7\u6c42\u65e5\u5fd7",children:[]}]},{value:"18.6 \u65e5\u5fd7\u793a\u4f8b",id:"186-\u65e5\u5fd7\u793a\u4f8b",children:[]},{value:"18.7 \u6253\u5370\u65e5\u5fd7\u5230 Swagger \u4e2d",id:"187-\u6253\u5370\u65e5\u5fd7\u5230-swagger-\u4e2d",children:[]},{value:"18.8 \u5728\u540e\u53f0\u4efb\u52a1\u4e2d\u4f7f\u7528",id:"188-\u5728\u540e\u53f0\u4efb\u52a1\u4e2d\u4f7f\u7528",children:[]},{value:"18.9 \u5173\u4e8e\u65e5\u5fd7\u6587\u4ef6\u91cd\u590d\u751f\u6210\u95ee\u9898",id:"189-\u5173\u4e8e\u65e5\u5fd7\u6587\u4ef6\u91cd\u590d\u751f\u6210\u95ee\u9898",children:[]},{value:"18.10 \u591a\u7ebf\u7a0b\u5171\u4eab\u4f5c\u7528\u57df",id:"1810-\u591a\u7ebf\u7a0b\u5171\u4eab\u4f5c\u7528\u57df",children:[]},{value:"18.11 \u9759\u6001 Default \u65b9\u5f0f\u6784\u5efa",id:"1811-\u9759\u6001-default-\u65b9\u5f0f\u6784\u5efa",children:[]},{value:"18.12 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"1812-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],g={toc:s};function c(e){var n=e.components,t=(0,r.Z)(e,o);return(0,i.kt)("wrapper",(0,a.Z)({},g,t,{components:n,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"181-\u5173\u4e8e\u65e5\u5fd7"},"18.1 \u5173\u4e8e\u65e5\u5fd7"),(0,i.kt)("p",null,"\u901a\u5e38\u65e5\u5fd7\u6307\u7684\u662f",(0,i.kt)("strong",{parentName:"p"},"\u7cfb\u7edf\u65e5\u5fd7"),"\u548c",(0,i.kt)("strong",{parentName:"p"},"\u7a0b\u5e8f\u65e5\u5fd7"),"\u3002"),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"\u7cfb\u7edf\u65e5\u5fd7")," \u662f\u8bb0\u5f55\u7cfb\u7edf\u4e2d\u786c\u4ef6\u3001\u8f6f\u4ef6\u548c\u7cfb\u7edf\u95ee\u9898\u7684\u4fe1\u606f\uff0c\u540c\u65f6\u8fd8\u53ef\u4ee5\u76d1\u89c6\u7cfb\u7edf\u4e2d\u53d1\u751f\u7684\u4e8b\u4ef6\u3002\u7528\u6237\u53ef\u4ee5\u901a\u8fc7\u5b83\u6765\u68c0\u67e5\u9519\u8bef\u53d1\u751f\u7684\u539f\u56e0\uff0c\u6216\u8005\u5bfb\u627e\u53d7\u5230\u653b\u51fb\u65f6\u653b\u51fb\u8005\u7559\u4e0b\u7684\u75d5\u8ff9\u3002\u7cfb\u7edf\u65e5\u5fd7\u5305\u62ec\u7cfb\u7edf\u65e5\u5fd7\u3001\u5e94\u7528\u7a0b\u5e8f\u65e5\u5fd7\u548c\u5b89\u5168\u65e5\u5fd7\u3002"),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"\u7a0b\u5e8f\u65e5\u5fd7")," \u662f\u7a0b\u5e8f\u8fd0\u884c\u4e2d\u4ea7\u751f\u7684\u65e5\u5fd7\uff0c\u901a\u5e38\u7531\u6846\u67b6\u8fd0\u884c\u65f6\u6216\u5f00\u53d1\u8005\u63d0\u4f9b\u7684\u65e5\u5fd7\u3002\u5305\u62ec\u8bf7\u6c42\u65e5\u5fd7\uff0c\u5f02\u5e38\u65e5\u5fd7\u3001\u5ba1\u8ba1\u65e5\u5fd7\u3001\u884c\u4e3a\u65e5\u5fd7\u7b49\u3002"),(0,i.kt)("h2",{id:"182-\u65e5\u5fd7\u4f5c\u7528"},"18.2 \u65e5\u5fd7\u4f5c\u7528"),(0,i.kt)("p",null,"\u5728\u9879\u76ee\u5f00\u53d1\u4e2d\uff0c\u90fd\u4e0d\u53ef\u907f\u514d\u7684\u4f7f\u7528\u5230\u65e5\u5fd7\u3002\u6ca1\u6709\u65e5\u5fd7\u867d\u7136\u4e0d\u4f1a\u5f71\u54cd\u9879\u76ee\u7684\u6b63\u786e\u8fd0\u884c\uff0c\u4f46\u662f\u6ca1\u6709\u65e5\u5fd7\u7684\u9879\u76ee\u53ef\u4ee5\u8bf4\u662f\u4e0d\u5b8c\u6574\u7684\u3002\u65e5\u5fd7\u5728\u8c03\u8bd5\uff0c\u9519\u8bef\u6216\u8005\u5f02\u5e38\u5b9a\u4f4d\uff0c\u6570\u636e\u5206\u6790\u4e2d\u7684\u4f5c\u7528\u662f\u4e0d\u8a00\u800c\u55bb\u7684\u3002"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"\u8c03\u8bd5")),(0,i.kt)("p",null,"\u5728\u9879\u76ee\u8c03\u8bd5\u65f6\uff0c\u67e5\u770b\u6808\u4fe1\u606f\u53ef\u4ee5\u65b9\u4fbf\u5730\u77e5\u9053\u5f53\u524d\u7a0b\u5e8f\u7684\u8fd0\u884c\u72b6\u6001\uff0c\u8f93\u51fa\u7684\u65e5\u5fd7\u4fbf\u4e8e\u8bb0\u5f55\u7a0b\u5e8f\u5728\u4e4b\u524d\u7684\u8fd0\u884c\u7ed3\u679c\u3002"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"\u9519\u8bef\u5b9a\u4f4d")),(0,i.kt)("p",null,"\u4e0d\u8981\u4ee5\u4e3a\u9879\u76ee\u80fd\u6b63\u786e\u8dd1\u8d77\u6765\u5c31\u53ef\u4ee5\u9ad8\u6795\u65e0\u5fe7\uff0c\u9879\u76ee\u5728\u8fd0\u884c\u4e00\u6bb5\u65f6\u5019\u540e\uff0c\u53ef\u80fd\u7531\u4e8e\u6570\u636e\u95ee\u9898\uff0c\u7f51\u7edc\u95ee\u9898\uff0c\u5185\u5b58\u95ee\u9898\u7b49\u51fa\u73b0\u5f02\u5e38\u3002\u8fd9\u65f6\u65e5\u5fd7\u53ef\u4ee5\u5e2e\u52a9\u5f00\u53d1\u6216\u8005\u8fd0\u7ef4\u4eba\u5458\u5feb\u901f\u5b9a\u4f4d\u9519\u8bef\u4f4d\u7f6e\uff0c\u63d0\u51fa\u89e3\u51b3\u65b9\u6848\u3002"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"\u6570\u636e\u5206\u6790")),(0,i.kt)("p",null,"\u5927\u6570\u636e\u7684\u5174\u8d77\uff0c\u4f7f\u5f97\u5927\u91cf\u7684\u65e5\u5fd7\u5206\u6790\u6210\u4e3a\u53ef\u80fd\uff0cELK \u4e5f\u8ba9\u65e5\u5fd7\u5206\u6790\u95e8\u69db\u964d\u4f4e\u4e86\u5f88\u591a\u3002\u65e5\u5fd7\u4e2d\u8574\u542b\u4e86\u5927\u91cf\u7684\u7528\u6237\u6570\u636e\uff0c\u5305\u62ec\u70b9\u51fb\u884c\u4e3a\uff0c\u5174\u8da3\u504f\u597d\u7b49\uff0c\u7528\u6237\u753b\u50cf\u5bf9\u4e8e\u516c\u53f8\u4e0b\u4e00\u6b65\u7684\u6218\u7565\u65b9\u5411\u6709\u4e00\u5b9a\u6307\u5f15\u4f5c\u7528\u3002"),(0,i.kt)("h2",{id:"183-\u65e5\u5fd7\u7ea7\u522b"},"18.3 \u65e5\u5fd7\u7ea7\u522b"),(0,i.kt)("p",null,"\u65e5\u5fd7\u7ea7\u522b\u53ef\u4ee5\u6709\u6548\u7684\u5bf9\u65e5\u5fd7\u4fe1\u606f\u8fdb\u884c\u5f52\u7c7b\uff0c\u65b9\u4fbf\u51c6\u786e\u7684\u67e5\u770b\u7279\u5b9a\u65e5\u5fd7\u5185\u5bb9\u3002\u901a\u5e38\u65e5\u5fd7\u7c7b\u522b\u6709\u4ee5\u4e0b\u7ea7\u522b\uff1a"),(0,i.kt)("table",null,(0,i.kt)("thead",{parentName:"table"},(0,i.kt)("tr",{parentName:"thead"},(0,i.kt)("th",{parentName:"tr",align:"center"},"\u7ea7\u522b"),(0,i.kt)("th",{parentName:"tr",align:null},"\u503c"),(0,i.kt)("th",{parentName:"tr",align:"center"},"\u65b9\u6cd5"),(0,i.kt)("th",{parentName:"tr",align:null},"\u63cf\u8ff0"))),(0,i.kt)("tbody",{parentName:"table"},(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:"center"},"Trace\uff08\u8ddf\u8e2a\uff09"),(0,i.kt)("td",{parentName:"tr",align:null},"0"),(0,i.kt)("td",{parentName:"tr",align:"center"},"LogTrace"),(0,i.kt)("td",{parentName:"tr",align:null},"\u5305\u542b\u6700\u8be6\u7ec6\u7684\u6d88\u606f\u3002 \u8fd9\u4e9b\u6d88\u606f\u53ef\u80fd\u5305\u542b\u654f\u611f\u7684\u5e94\u7528\u6570\u636e\u3002 \u8fd9\u4e9b\u6d88\u606f\u9ed8\u8ba4\u60c5\u51b5\u4e0b\u5904\u4e8e\u7981\u7528\u72b6\u6001\uff0c\u5e76\u4e14\u4e0d\u5e94\u5728\u751f\u4ea7\u4e2d\u542f\u7528\u3002")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:"center"},"Debug\uff08\u8c03\u8bd5\uff09"),(0,i.kt)("td",{parentName:"tr",align:null},"1"),(0,i.kt)("td",{parentName:"tr",align:"center"},"LogDebug"),(0,i.kt)("td",{parentName:"tr",align:null},"\u7528\u4e8e\u8c03\u8bd5\u548c\u5f00\u53d1\u3002 \u7531\u4e8e\u91cf\u5927\uff0c\u8bf7\u5728\u751f\u4ea7\u4e2d\u5c0f\u5fc3\u4f7f\u7528\u3002")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:"center"},"Information\uff08\u4fe1\u606f\uff09"),(0,i.kt)("td",{parentName:"tr",align:null},"2"),(0,i.kt)("td",{parentName:"tr",align:"center"},"LogInformation"),(0,i.kt)("td",{parentName:"tr",align:null},"\u8ddf\u8e2a\u5e94\u7528\u7684\u5e38\u89c4\u6d41\u3002 \u53ef\u80fd\u5177\u6709\u957f\u671f\u503c\u3002")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:"center"},"Warning\uff08\u8b66\u544a\uff09"),(0,i.kt)("td",{parentName:"tr",align:null},"3"),(0,i.kt)("td",{parentName:"tr",align:"center"},"LogWarning"),(0,i.kt)("td",{parentName:"tr",align:null},"\u5bf9\u4e8e\u5f02\u5e38\u4e8b\u4ef6\u6216\u610f\u5916\u4e8b\u4ef6\u3002 \u901a\u5e38\u5305\u62ec\u4e0d\u4f1a\u5bfc\u81f4\u5e94\u7528\u5931\u8d25\u7684\u9519\u8bef\u6216\u60c5\u51b5\u3002")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:"center"},"Error\uff08\u9519\u8bef\uff09"),(0,i.kt)("td",{parentName:"tr",align:null},"4"),(0,i.kt)("td",{parentName:"tr",align:"center"},"LogError"),(0,i.kt)("td",{parentName:"tr",align:null},"\u8868\u793a\u65e0\u6cd5\u5904\u7406\u7684\u9519\u8bef\u548c\u5f02\u5e38\u3002 \u8fd9\u4e9b\u6d88\u606f\u8868\u793a\u5f53\u524d\u64cd\u4f5c\u6216\u8bf7\u6c42\u5931\u8d25\uff0c\u800c\u4e0d\u662f\u6574\u4e2a\u5e94\u7528\u5931\u8d25\u3002")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:"center"},"Critical\uff08\u4e25\u91cd\uff09"),(0,i.kt)("td",{parentName:"tr",align:null},"5"),(0,i.kt)("td",{parentName:"tr",align:"center"},"LogCritical"),(0,i.kt)("td",{parentName:"tr",align:null},"\u9700\u8981\u7acb\u5373\u5173\u6ce8\u7684\u5931\u8d25\u3002 \u4f8b\u5982\u6570\u636e\u4e22\u5931\u3001\u78c1\u76d8\u7a7a\u95f4\u4e0d\u8db3\u3002")))),(0,i.kt)("h2",{id:"184-\u5982\u4f55\u4f7f\u7528"},"18.4 \u5982\u4f55\u4f7f\u7528"),(0,i.kt)("p",null,"\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},".NET 5")," \u6846\u67b6\u4e2d\uff0c\u5fae\u8f6f\u5df2\u7ecf\u4e3a\u6211\u4eec\u5185\u7f6e\u4e86 ",(0,i.kt)("inlineCode",{parentName:"p"},"\u65e5\u5fd7\u7ec4\u4ef6"),"\uff0c\u6b63\u5e38\u60c5\u51b5\u4e0b\uff0c\u65e0\u9700\u6211\u4eec\u5f15\u7528\u7b2c\u4e09\u65b9\u5305\u8fdb\u884c\u65e5\u5fd7\u8bb0\u5f55\u3002",(0,i.kt)("inlineCode",{parentName:"p"},".NET 5")," \u6846\u67b6\u4e3a\u6211\u4eec\u63d0\u4f9b\u4e86\u4e24\u79cd\u65e5\u5fd7\u5bf9\u8c61\u521b\u5efa\u65b9\u5f0f\u3002"),(0,i.kt)("h3",{id:"1841-iloggert-\u6cdb\u578b\u65b9\u5f0f"},"18.4.1 ",(0,i.kt)("inlineCode",{parentName:"h3"},"ILogger")," \u6cdb\u578b\u65b9\u5f0f"),(0,i.kt)("p",null,"\u4f7f\u7528\u975e\u5e38\u7b80\u5355\uff0c\u53ef\u4ee5\u901a\u8fc7 ",(0,i.kt)("inlineCode",{parentName:"p"},"ILogger")," \u5bf9\u8c61\u8fdb\u884c\u6ce8\u5165\uff0c\u5982\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{5}","{5}":!0},'public class PrivacyModel : PageModel\n{\n private readonly ILogger _logger;\n\n public PrivacyModel(ILogger logger)\n {\n _logger = logger;\n }\n\n public void OnGet()\n {\n _logger.LogInformation("GET Pages.PrivacyModel called.");\n }\n}\n')),(0,i.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u5c0f\u77e5\u8bc6")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u901a\u8fc7\u6cdb\u578b ",(0,i.kt)("inlineCode",{parentName:"p"},"ILogger")," \u65b9\u5f0f\u5199\u5165\u65e5\u5fd7\uff0c\u90a3\u4e48\u9ed8\u8ba4\u5c06 ",(0,i.kt)("inlineCode",{parentName:"p"},"T")," \u7c7b\u578b\u5b8c\u6574\u7c7b\u578b\u540d\u79f0\u4f5c\u4e3a ",(0,i.kt)("inlineCode",{parentName:"p"},"\u65e5\u5fd7\u7c7b\u522b"),"\u3002"))),(0,i.kt)("h3",{id:"1842-iloggerfactory-\u5de5\u5382\u65b9\u5f0f"},"18.4.2 ",(0,i.kt)("inlineCode",{parentName:"h3"},"ILoggerFactory")," \u5de5\u5382\u65b9\u5f0f"),(0,i.kt)("p",null,"\u4f7f\u7528\u5de5\u5382\u65b9\u5f0f\uff0c\u9700\u624b\u52a8\u4f20\u5165 ",(0,i.kt)("inlineCode",{parentName:"p"},"\u65e5\u5fd7\u7c7b\u522b"),"\uff0c\u5982\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{5,7}","{5,7}":!0},'public class ContactModel : PageModel\n{\n private readonly ILogger _logger;\n\n public ContactModel(ILoggerFactory logger)\n {\n _logger = logger.CreateLogger("MyCategory");\n }\n\n public void OnGet()\n {\n _logger.LogInformation("GET Pages.ContactModel called.");\n }\n}\n')),(0,i.kt)("h3",{id:"1843-\u61d2\u4eba\u6a21\u5f0f-"},"18.4.3 ",(0,i.kt)("inlineCode",{parentName:"h3"},"\u61d2\u4eba\u6a21\u5f0f")," \ud83d\ude01"),(0,i.kt)("p",null,"\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\uff0c\u63d0\u4f9b\u4e86\u66f4\u61d2\u7684\u65b9\u5f0f\u5199\u5165\u65e5\u5fd7\uff0c\u4e5f\u5c31\u662f\u901a\u8fc7\u5b57\u7b26\u4e32\u62d3\u5c55\u7684\u65b9\u5f0f\u5199\u5165\uff0c\u5982\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'"\u7b80\u5355\u65e5\u5fd7".LogInformation();\n\n"\u767e\u5c0f\u50e7 \u65b0\u589e\u4e86\u4e00\u6761\u8bb0\u5f55".LogInformation();\n\n"\u7a0b\u5e8f\u51fa\u73b0\u5f02\u5e38\u5566".LogError();\n\n"\u8fd9\u662f\u81ea\u5b9a\u4e49\u7c7b\u522b\u65e5\u5fd7".SetCategory("\u7c7b\u522b").LogInformation();\n')),(0,i.kt)("p",null,"\u901a\u8fc7\u5b57\u7b26\u4e32\u62d3\u5c55\u65b9\u5f0f\u53ef\u4ee5\u5728\u4efb\u4f55\u65f6\u5019\u65b9\u4fbf\u8bb0\u5f55\u65e5\u5fd7\uff0c\u4e13\u95e8\u4e3a\u61d2\u4eba\u63d0\u4f9b\u7684\u3002"),(0,i.kt)("h2",{id:"185-\u5199\u5165\u5176\u4ed6\u4ecb\u8d28"},"18.5 \u5199\u5165\u5176\u4ed6\u4ecb\u8d28"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},".NET 5")," \u6846\u67b6\u4e2d\u5e76\u672a\u63d0\u4f9b\u5199\u5165",(0,i.kt)("inlineCode",{parentName:"p"},"\u6587\u4ef6\u3001\u6570\u636e\u5e93")," \u6216\u5176\u4ed6\u4ecb\u8d28\u7684\u63d0\u4f9b\u5668\uff0c\u9ed8\u8ba4\u53ea\u63d0\u4f9b\u4e86 ",(0,i.kt)("inlineCode",{parentName:"p"},"Debug\u3001Console")," \u4e24\u79cd\u65b9\u5f0f\u3002\u8fd9\u4e2a\u65f6\u5019\u6211\u4eec\u5c31\u9700\u8981\u5f15\u7528\u7b2c\u4e09\u65b9\u65e5\u5fd7\u7ec4\u4ef6\uff0c\u65b9\u4fbf\u6211\u4eec\u5199\u5165\u5230\u591a\u4e2a\u4ecb\u8d28\u4e2d\u3002"),(0,i.kt)("p",null,"\u5728\u8fd9\u91cc\uff0c",(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u5b98\u65b9\u63a8\u8350\u4f7f\u7528 ",(0,i.kt)("inlineCode",{parentName:"p"},"Serilog")," \u65e5\u5fd7\u7ec4\u4ef6\uff0c\u4e3a\u6b64\uff0c",(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u63d0\u4f9b\u4e86 ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion.Extras.Logging.Serilog")," \u62d3\u5c55\u5305\uff0c\u65b9\u4fbf\u5feb\u901f\u548c ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u7ed3\u5408\u3002"),(0,i.kt)("h3",{id:"1851-serilog-\u62d3\u5c55\u5305\u4f7f\u7528"},"18.5.1 ",(0,i.kt)("inlineCode",{parentName:"h3"},"Serilog")," \u62d3\u5c55\u5305\u4f7f\u7528"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"\u5b89\u88c5 ",(0,i.kt)("inlineCode",{parentName:"li"},"Furion.Extras.Logging.Serilog")," \u62d3\u5c55\u5305")),(0,i.kt)("p",null,"\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion.Core")," \u5c42\u5b89\u88c5 ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion.Extras.Logging.Serilog")," \u62d3\u5c55\u5305"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"\u5728 ",(0,i.kt)("inlineCode",{parentName:"li"},"Program.cs")," \u4e2d\u8c03\u7528 ",(0,i.kt)("inlineCode",{parentName:"li"},"UseSerilogDefault()"))),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{21}","{21}":!0},"using Microsoft.AspNetCore.Hosting;\nusing Microsoft.Extensions.Hosting;\n\nnamespace Furion.Web.Entry\n{\n public class Program\n {\n public static void Main(string[] args)\n {\n CreateHostBuilder(args).Build().Run();\n }\n\n public static IHostBuilder CreateHostBuilder(string[] args)\n {\n return Host.CreateDefaultBuilder(args)\n .ConfigureWebHostDefaults(webBuilder =>\n {\n webBuilder.Inject()\n .UseStartup();\n })\n .UseSerilogDefault();\n }\n }\n}\n")),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u6ce8\u610f")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},(0,i.kt)("inlineCode",{parentName:"p"},".UseSerilogDefault()")," \u9ed8\u8ba4\u96c6\u6210\u4e86 ",(0,i.kt)("inlineCode",{parentName:"p"},"\u63a7\u5236\u53f0")," \u548c ",(0,i.kt)("inlineCode",{parentName:"p"},"\u6587\u4ef6")," \u65b9\u5f0f\u3002\u5982\u9700\u81ea\u5b9a\u4e49\u5199\u5165\uff0c\u5219\u4f20\u5165\u9700\u8981\u5199\u5165\u7684\u4ecb\u8d28\u5373\u53ef\uff1a"),(0,i.kt)("pre",{parentName:"div"},(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'.UseSerilogDefault(config =>\n{\n config.WriteTo.Console(outputTemplate: "[{Timestamp:HH:mm:ss} {Level:u3}] {Message:lj} {Properties:j}{NewLine}{Exception}")\n .WriteTo.File("log.log", rollingInterval: RollingInterval.Day, rollOnFileSizeLimit: true);\n});\n')))),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u62d3\u5c55\uff1a\u53ef\u6309\u65e5\u5fd7\u7ea7\u522b \u5355\u72ec\u8f93\u51fa")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("pre",{parentName:"div"},(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'.UseSerilogDefault(config =>//\u9ed8\u8ba4\u96c6\u6210\u4e86 \u63a7\u5236\u53f0 \u548c \u6587\u4ef6 \u65b9\u5f0f\u3002\u5982\u9700\u81ea\u5b9a\u4e49\u5199\u5165\uff0c\u5219\u4f20\u5165\u9700\u8981\u5199\u5165\u7684\u4ecb\u8d28\u5373\u53ef\uff1a\n {\n string date = DateTime.Now.ToString("yyyy-MM-dd");//\u6309\u65f6\u95f4\u521b\u5efa\u6587\u4ef6\u5939\n string outputTemplate = "{NewLine}\u3010{Level:u3}\u3011{Timestamp:yyyy-MM-dd HH:mm:ss.fff}" +\n "{NewLine}#Msg#{Message:lj}" +\n "{NewLine}#Pro #{Properties:j}" +\n "{NewLine}#Exc#{Exception}" +\n new string(\'-\', 50);//\u8f93\u51fa\u6a21\u677f\n\n ///1.\u8f93\u51fa\u6240\u6709restrictedToMinimumLevel\uff1aLogEventLevel\u7c7b\u578b\n config\n //.MinimumLevel.Debug() // \u6240\u6709Sink\u7684\u6700\u5c0f\u8bb0\u5f55\u7ea7\u522b\n //.MinimumLevel.Override("Microsoft", LogEventLevel.Fatal)\n //.Enrich.FromLogContext()\n .WriteTo.Console(outputTemplate: outputTemplate)\n .WriteTo.File($"_log/{date}/application.log",\n outputTemplate: outputTemplate,\n restrictedToMinimumLevel: LogEventLevel.Information,\n rollingInterval: RollingInterval.Day,//\u65e5\u5fd7\u6309\u65e5\u4fdd\u5b58\uff0c\u8fd9\u6837\u4f1a\u5728\u6587\u4ef6\u540d\u79f0\u540e\u81ea\u52a8\u52a0\u4e0a\u65e5\u671f\u540e\u7f00\n //rollOnFileSizeLimit: true, // \u9650\u5236\u5355\u4e2a\u6587\u4ef6\u7684\u6700\u5927\u957f\u5ea6\n //retainedFileCountLimit: 10, // \u6700\u5927\u4fdd\u5b58\u6587\u4ef6\u6570,\u7b49\u4e8enull\u65f6\u6c38\u8fdc\u4fdd\u7559\u6587\u4ef6\u3002\n //fileSizeLimitBytes: 10 * 1024, // \u6700\u5927\u5355\u4e2a\u6587\u4ef6\u5927\u5c0f\n encoding: Encoding.UTF8 // \u6587\u4ef6\u5b57\u7b26\u7f16\u7801\n )\n\n #region 2.\u6309LogEventLevel.\u8f93\u51fa\u72ec\u7acb\u53d1\u5e03/\u5355\u6587\u4ef6\n\n ///2.1\u4ec5\u8f93\u51fa LogEventLevel.Debug \u7c7b\u578b\n .WriteTo.Logger(lg => lg.Filter.ByIncludingOnly(evt => evt.Level == LogEventLevel.Debug)//\u7b5b\u9009\u8fc7\u6ee4\n .WriteTo.File($"_log/{date}/{LogEventLevel.Debug}.log",\n outputTemplate: outputTemplate,\n rollingInterval: RollingInterval.Day,//\u65e5\u5fd7\u6309\u65e5\u4fdd\u5b58\uff0c\u8fd9\u6837\u4f1a\u5728\u6587\u4ef6\u540d\u79f0\u540e\u81ea\u52a8\u52a0\u4e0a\u65e5\u671f\u540e\u7f00\n encoding: Encoding.UTF8 // \u6587\u4ef6\u5b57\u7b26\u7f16\u7801\n )\n )\n\n ///2.2\u4ec5\u8f93\u51fa LogEventLevel.Error \u7c7b\u578b\n .WriteTo.Logger(lg => lg.Filter.ByIncludingOnly(evt => evt.Level == LogEventLevel.Error)//\u7b5b\u9009\u8fc7\u6ee4\n .WriteTo.File($"_log/{date}/{LogEventLevel.Error}.log",\n outputTemplate: outputTemplate,\n rollingInterval: RollingInterval.Day,//\u65e5\u5fd7\u6309\u65e5\u4fdd\u5b58\uff0c\u8fd9\u6837\u4f1a\u5728\u6587\u4ef6\u540d\u79f0\u540e\u81ea\u52a8\u52a0\u4e0a\u65e5\u671f\u540e\u7f00\n encoding: Encoding.UTF8 // \u6587\u4ef6\u5b57\u7b26\u7f16\u7801\n )\n )\n\n #endregion \u6309LogEventLevel \u72ec\u7acb\u53d1\u5e03/\u5355\u6587\u4ef6\n\n ;\n });\n')))),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"\u66ff\u6362 ",(0,i.kt)("inlineCode",{parentName:"li"},"appsetting.json")," \u9ed8\u8ba4\u65e5\u5fd7\u5185\u5bb9")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-json"},'"Logging": {\n "LogLevel": {\n "Default": "Information",\n "Microsoft": "Warning",\n "Microsoft.Hosting.Lifetime": "Information",\n "Microsoft.EntityFrameworkCore": "Information"\n }\n }\n')),(0,i.kt)("p",null,"\u66ff\u6362\u4e3a\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-json"},'"Serilog": {\n "MinimumLevel": {\n "Default": "Information",\n "Override": {\n "System": "Warning",\n "Microsoft": "Warning",\n "Microsoft.Hosting.Lifetime": "Information",\n "Microsoft.EntityFrameworkCore": "Information"\n }\n }\n }\n')),(0,i.kt)("h3",{id:"1852-\u8bb0\u5f55\u8bf7\u6c42\u65e5\u5fd7"},"18.5.2 \u8bb0\u5f55\u8bf7\u6c42\u65e5\u5fd7"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Serilog")," \u65e5\u5fd7\u7ec4\u4ef6\u4e5f\u63d0\u4f9b\u4e86\u975e\u5e38\u65b9\u4fbf\u5feb\u6377\u7684\u8bf7\u6c42\u65e5\u5fd7\u4e2d\u95f4\u4ef6\uff0c\u53ea\u9700\u8981\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Startup.cs")," \u4e2d\u542f\u7528\u5373\u53ef\u3002\u5982\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"public void Configure(IApplicationBuilder app, IWebHostEnvironment env)\n {\n app.UseStaticFiles();\n app.UseSerilogRequestLogging(); // \u5fc5\u987b\u5728 UseStaticFiles \u548c UseRouting \u4e4b\u95f4\n app.UseRouting();\n }\n")),(0,i.kt)("h2",{id:"186-\u65e5\u5fd7\u793a\u4f8b"},"18.6 \u65e5\u5fd7\u793a\u4f8b"),(0,i.kt)("p",null,"\u4e0b\u9762\u4fbf\u662f\u65e5\u5fd7\u8f93\u51fa\u65e5\u5fd7\u7684\u6a21\u677f\uff0c\u652f\u6301\u5404\u79cd\u81ea\u5b9a\u4e49\u65b9\u5f0f"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre"},'2020-12-21 15:54:43.775 +08:00 [INF] Application started. Press Ctrl+C to shut down.\n2020-12-21 15:54:43.897 +08:00 [INF] Hosting environment: Development\n2020-12-21 15:54:43.899 +08:00 [INF] Content root path: D:\\MONK\\Furion\\samples\\Furion.Web.Entry\n2020-12-21 15:55:00.651 +08:00 [WRN] Sensitive data logging is enabled. Log entries and exception messages may include sensitive application data; this mode should only be enabled during development.\n2020-12-21 15:55:00.817 +08:00 [INF] Entity Framework Core 5.0.1 initialized \'DefaultDbContext\' using provider \'Microsoft.EntityFrameworkCore.Sqlite\' with options: SensitiveDataLoggingEnabled DetailedErrorsEnabled MaxPoolSize=100 MigrationsAssembly=Furion.Database.Migrations\n2020-12-21 15:55:01.711 +08:00 [WRN] Compiling a query which loads related collections for more than one collection navigation either via \'Include\' or through projection but no \'QuerySplittingBehavior\' has been configured. By default Entity Framework will use \'QuerySplittingBehavior.SingleQuery\' which can potentially result in slow query performance. See https://go.microsoft.com/fwlink/?linkid=2134277 for more information. To identify the query that\'s triggering this warning call \'ConfigureWarnings(w => w.Throw(RelationalEventId.MultipleCollectionIncludeWarning))\'\n2020-12-21 15:55:01.919 +08:00 [INF] Executed DbCommand (31ms) [Parameters=[], CommandType=\'"Text"\', CommandTimeout=\'30\']\nSELECT "p"."Id", "p"."Name", "p"."Age", "p"."Address", "p0"."PhoneNumber", "p0"."QQ", "p"."CreatedTime", "p0"."Id", "c"."Id", "c"."Name", "c"."Gender", "t"."Id", "t"."Name", "t"."PersonsId", "t"."PostsId"\nFROM "Person" AS "p"\nLEFT JOIN "PersonDetail" AS "p0" ON "p"."Id" = "p0"."PersonId"\nLEFT JOIN "Children" AS "c" ON "p"."Id" = "c"."PersonId"\nLEFT JOIN (\n SELECT "p2"."Id", "p2"."Name", "p1"."PersonsId", "p1"."PostsId"\n FROM "PersonPost" AS "p1"\n INNER JOIN "Post" AS "p2" ON "p1"."PostsId" = "p2"."Id"\n) AS "t" ON "p"."Id" = "t"."PersonsId"\nORDER BY "p"."Id", "p0"."Id", "c"."Id", "t"."PersonsId", "t"."PostsId", "t"."Id"\n2020-12-21 15:55:25.354 +08:00 [INF] Executed DbCommand (3ms) [Parameters=[], CommandType=\'"Text"\', CommandTimeout=\'30\']\nSELECT "p"."Id", "p"."Name", "p"."Age", "p"."Address", "p0"."PhoneNumber", "p0"."QQ", "p"."CreatedTime", "p0"."Id", "c"."Id", "c"."Name", "c"."Gender", "t"."Id", "t"."Name", "t"."PersonsId", "t"."PostsId"\nFROM "Person" AS "p"\nLEFT JOIN "PersonDetail" AS "p0" ON "p"."Id" = "p0"."PersonId"\nLEFT JOIN "Children" AS "c" ON "p"."Id" = "c"."PersonId"\nLEFT JOIN (\n SELECT "p2"."Id", "p2"."Name", "p1"."PersonsId", "p1"."PostsId"\n FROM "PersonPost" AS "p1"\n INNER JOIN "Post" AS "p2" ON "p1"."PostsId" = "p2"."Id"\n) AS "t" ON "p"."Id" = "t"."PersonsId"\nORDER BY "p"."Id", "p0"."Id", "c"."Id", "t"."PersonsId", "t"."PostsId", "t"."Id"\n2020-12-21 15:58:27.328 +08:00 [INF] Application started. Press Ctrl+C to shut down.\n2020-12-21 15:58:27.442 +08:00 [INF] Hosting environment: Development\n2020-12-21 15:58:27.444 +08:00 [INF] Content root path: D:\\MONK\\Furion\\samples\\Furion.Web.Entry\n2020-12-21 15:58:27.909 +08:00 [INF] HTTP GET / responded 200 in 457.0657 ms\n2020-12-21 15:58:33.336 +08:00 [INF] HTTP GET /api/index.html responded 200 in 95.9277 ms\n2020-12-21 15:58:34.187 +08:00 [INF] HTTP GET /swagger/Default/swagger.json responded 200 in 674.9800 ms\n')),(0,i.kt)("h2",{id:"187-\u6253\u5370\u65e5\u5fd7\u5230-swagger-\u4e2d"},"18.7 \u6253\u5370\u65e5\u5fd7\u5230 ",(0,i.kt)("inlineCode",{parentName:"h2"},"Swagger")," \u4e2d"),(0,i.kt)("p",null,"\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\u9ed8\u8ba4\u96c6\u6210\u4e86 ",(0,i.kt)("inlineCode",{parentName:"p"},"MiniProfiler")," \u7ec4\u4ef6\u5e76\u4e0e ",(0,i.kt)("inlineCode",{parentName:"p"},"Swagger")," \u8fdb\u884c\u4e86\u7ed3\u5408\uff0c\u5982\u9700\u6253\u5370\u65e5\u5fd7\u6216\u8c03\u8bd5\u4ee3\u7801\uff0c\u53ea\u9700\u8c03\u7528\u4ee5\u4e0b\u65b9\u6cd5\u5373\u53ef\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'App.PrintToMiniProfiler("\u5206\u7c7b", "\u72b6\u6001", "\u8981\u6253\u5370\u7684\u6d88\u606f");\n')),(0,i.kt)("h2",{id:"188-\u5728\u540e\u53f0\u4efb\u52a1\u4e2d\u4f7f\u7528"},"18.8 \u5728\u540e\u53f0\u4efb\u52a1\u4e2d\u4f7f\u7528"),(0,i.kt)("p",null,"\u7531\u4e8e ",(0,i.kt)("inlineCode",{parentName:"p"},"DbContext")," \u9ed8\u8ba4\u6ce8\u518c\u4e3a ",(0,i.kt)("inlineCode",{parentName:"p"},"Scoped")," \u751f\u5b58\u5468\u671f\uff0c\u6240\u4ee5\u5728\u540e\u53f0\u4efb\u52a1\u4e2d\u4f7f\u7528 ",(0,i.kt)("inlineCode",{parentName:"p"},"IServiceScopeFactory")," \u83b7\u53d6\u6240\u6709\u670d\u52a1\uff0c\u5982\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'public class JobService : BackgroundService\n{\n // \u65e5\u5fd7\u5bf9\u8c61\n private readonly ILogger _logger;\n\n // \u670d\u52a1\u5de5\u5382\n private readonly IServiceScopeFactory _scopeFactory;\n public JobService(ILogger logger\n , IServiceScopeFactory scopeFactory)\n {\n _logger = logger;\n _scopeFactory = scopeFactory;\n }\n\n protected override Task ExecuteAsync(CancellationToken stoppingToken)\n {\n _logger.LogInformation("\u5199\u65e5\u5fd7~~");\n\n using (var scope = _scopeFactory.CreateScope())\n {\n var services = scope.ServiceProvider;\n\n // \u83b7\u53d6\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\n var dbContext = Db.GetDbContext(services);\n\n // \u83b7\u53d6\u4ed3\u50a8\n var respository = Db.GetRepository(services);\n\n // \u89e3\u6790\u5176\u4ed6\u670d\u52a1\n var otherService = services.GetService();\n }\n\n return Task.CompletedTask;\n }\n}\n')),(0,i.kt)("h2",{id:"189-\u5173\u4e8e\u65e5\u5fd7\u6587\u4ef6\u91cd\u590d\u751f\u6210\u95ee\u9898"},"18.9 \u5173\u4e8e\u65e5\u5fd7\u6587\u4ef6\u91cd\u590d\u751f\u6210\u95ee\u9898"),(0,i.kt)("p",null,"\u65e5\u5fd7\u91cd\u590d\u751f\u6210\u7684\u539f\u56e0\u662f\u521b\u5efa\u4e86\u591a\u4e2a ",(0,i.kt)("inlineCode",{parentName:"p"},"ILogger")," \u5bf9\u8c61\u5bfc\u81f4\u7684\uff0c\u901a\u5e38\u6709\u4e24\u79cd\u89e3\u51b3\u65b9\u6cd5\uff1a"),(0,i.kt)("ol",null,(0,i.kt)("li",{parentName:"ol"},"\u8bbe\u7f6e ",(0,i.kt)("inlineCode",{parentName:"li"},"\u5b57\u7b26\u4e32")," \u62d3\u5c55\u65e5\u5fd7\u4f5c\u7528\u57df")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'"\u65e5\u5fd7\u5185\u5bb9".SetLoggerScoped(serviceProvider).LogInformation();\n')),(0,i.kt)("ol",{start:2},(0,i.kt)("li",{parentName:"ol"},"\u4fee\u6539 ",(0,i.kt)("inlineCode",{parentName:"li"},"Program.cs")," \u6ce8\u518c\u65b9\u5f0f")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{19}","{19}":!0},"using Microsoft.AspNetCore.Hosting;\nusing Microsoft.Extensions.Hosting;\n\nnamespace FurStart\n{\n public class Program\n {\n public static void Main(string[] args)\n {\n CreateHostBuilder(args).Build().Run();\n }\n\n public static IHostBuilder CreateHostBuilder(string[] args) =>\n Host.CreateDefaultBuilder(args)\n .ConfigureWebHostDefaults(webBuilder =>\n {\n webBuilder\n .UseStartup()\n .UseSerilogDefault(); // \u5199\u5230\u8fd9\u91cc\n })\n // .UseSerilogDefault(); // \u6ce8\u91ca\n }\n}\n")),(0,i.kt)("h2",{id:"1810-\u591a\u7ebf\u7a0b\u5171\u4eab\u4f5c\u7528\u57df"},"18.10 \u591a\u7ebf\u7a0b\u5171\u4eab\u4f5c\u7528\u57df"),(0,i.kt)("p",null,"\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c\u6240\u6709\u7684 ",(0,i.kt)("inlineCode",{parentName:"p"},"\u5b57\u7b26\u4e32")," \u548c ",(0,i.kt)("inlineCode",{parentName:"p"},"\u5b9e\u4f53")," \u62d3\u5c55\u90fd\u6709\u81ea\u5df1\u72ec\u7acb\u7ef4\u62a4\u7684 ",(0,i.kt)("inlineCode",{parentName:"p"},"ServiceProvider")," \u4f5c\u7528\u57df\u3002"),(0,i.kt)("p",null,"\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Web")," \u8bf7\u6c42\u4e2d\uff0c\u9ed8\u8ba4\u662f ",(0,i.kt)("inlineCode",{parentName:"p"},"HttpContext.RequestServices"),"\uff0c\u4f46\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"\u975e Web"),"\uff0c\u5982\u591a\u7ebf\u7a0b\u64cd\u4f5c\uff0c\u540e\u53f0\u4efb\u52a1\uff0c\u4e8b\u4ef6\u603b\u7ebf\u7b49\u573a\u666f\u4e0b\u4f1a\u81ea\u52a8\u521b\u5efa\u65b0\u7684\u4f5c\u7528\u57df\uff0c\u5b9e\u9645\u4e0a\u8fd9\u662f\u975e\u5e38\u4e0d\u5fc5\u8981\u7684\u5185\u5b58\u5f00\u9500\u3002"),(0,i.kt)("p",null,"\u8fd9\u65f6\uff0c\u6211\u4eec\u53ea\u9700\u8981\u901a\u8fc7 ",(0,i.kt)("inlineCode",{parentName:"p"},".SetXXXScoped(service)")," \u5171\u4eab\u5f53\u524d\u670d\u52a1\u63d0\u4f9b\u5668\u4f5c\u7528\u57df\u5373\u53ef\uff0c\u5982\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'Scoped.Create(async (fac, scope) => {\n "\u5199\u65e5\u5fd7".SetLoggerScoped(scope.ServiceProvider).LogInformation();\n});\n')),(0,i.kt)("h2",{id:"1811-\u9759\u6001-default-\u65b9\u5f0f\u6784\u5efa"},"18.11 \u9759\u6001 ",(0,i.kt)("inlineCode",{parentName:"h2"},"Default")," \u65b9\u5f0f\u6784\u5efa"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'StringLoggingPart.Default.SetMessage("\u8fd9\u662f\u4e00\u4e2a\u65e5\u5fd7").LogInformation();\n')),(0,i.kt)("h2",{id:"1812-\u53cd\u9988\u4e0e\u5efa\u8bae"},"18.12 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,i.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))),(0,i.kt)("hr",null),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e86\u89e3\u66f4\u591a")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u60f3\u4e86\u89e3\u66f4\u591a ",(0,i.kt)("inlineCode",{parentName:"p"},"\u65e5\u5fd7")," \u77e5\u8bc6\u53ef\u67e5\u9605 ",(0,i.kt)("a",{parentName:"p",href:"https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/logging/?view=aspnetcore-5.0"},"ASP.NET Core - \u65e5\u5fd7")," \u7ae0\u8282 \u548c ",(0,i.kt)("a",{parentName:"p",href:"https://serilog.net/"},"Serilog")," \u6587\u6863\u3002"))))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/a19656d0.3118c2bf.js b/handbook/build/assets/js/a19656d0.3118c2bf.js deleted file mode 100644 index 252b41028af..00000000000 --- a/handbook/build/assets/js/a19656d0.3118c2bf.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[1736],{3905:function(e,t,n){n.d(t,{Zo:function(){return p},kt:function(){return d}});var r=n(7294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var c=r.createContext({}),s=function(e){var t=r.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},p=function(e){var t=s(e.components);return r.createElement(c.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},f=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,a=e.originalType,c=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),f=s(n),d=o,m=f["".concat(c,".").concat(d)]||f[d]||u[d]||a;return n?r.createElement(m,i(i({ref:t},p),{},{components:n})):r.createElement(m,i({ref:t},p))}));function d(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=n.length,i=new Array(a);i[0]=f;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l.mdxType="string"==typeof e?e:o,i[1]=l;for(var s=2;s UploadFileAsync(List files)\n{\n // \u4fdd\u5b58\u5230\u7f51\u7ad9\u6839\u76ee\u5f55\u4e0b\u7684 uploads \u76ee\u5f55\n var savePath = Path.Combine(App.HostEnvironment.ContentRootPath, "uploads");\n if(!Directory.Exists(savePath)) Directory.CreateDirectory(savePath);\n\n long size = files.Sum(f => f.Length);\n\n foreach (var formFile in files)\n {\n if (formFile.Length > 0)\n {\n // \u907f\u514d\u6587\u4ef6\u540d\u91cd\u590d\uff0c\u91c7\u7528 GUID \u751f\u6210\n var filePath = Path.Combine(savePath, Guid.NewGuid().ToString("N") + Path.GetExtension(formFile.FileName)); // \u53ef\u4ee5\u66ff\u4ee3\u4e3a\u4f60\u9700\u8981\u5b58\u50a8\u7684\u771f\u5b9e\u8def\u5f84\n\n using (var stream = System.IO.File.Create(filePath))\n {\n await formFile.CopyToAsync(stream);\n }\n }\n }\n\n // \u5728\u52a8\u6001 API \u76f4\u63a5\u8fd4\u56de\u5bf9\u8c61\u5373\u53ef\uff0c\u65e0\u9700 OK \u548c IActionResult\n return Ok(new { count = files.Count, size });\n}\n')))}f.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/a19656d0.43a58cf4.js b/handbook/build/assets/js/a19656d0.43a58cf4.js new file mode 100644 index 00000000000..04d9daaba54 --- /dev/null +++ b/handbook/build/assets/js/a19656d0.43a58cf4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[1736],{3905:function(e,t,n){n.d(t,{Zo:function(){return p},kt:function(){return f}});var r=n(7294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var c=r.createContext({}),s=function(e){var t=r.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},p=function(e){var t=s(e.components);return r.createElement(c.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,a=e.originalType,c=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),d=s(n),f=o,m=d["".concat(c,".").concat(f)]||d[f]||u[f]||a;return n?r.createElement(m,i(i({ref:t},p),{},{components:n})):r.createElement(m,i({ref:t},p))}));function f(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=n.length,i=new Array(a);i[0]=d;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l.mdxType="string"==typeof e?e:o,i[1]=l;for(var s=2;s UploadFileAsync(List files)\n{\n // \u4fdd\u5b58\u5230\u7f51\u7ad9\u6839\u76ee\u5f55\u4e0b\u7684 uploads \u76ee\u5f55\n var savePath = Path.Combine(App.HostEnvironment.ContentRootPath, "uploads");\n if(!Directory.Exists(savePath)) Directory.CreateDirectory(savePath);\n\n long size = files.Sum(f => f.Length);\n\n foreach (var formFile in files)\n {\n if (formFile.Length > 0)\n {\n // \u907f\u514d\u6587\u4ef6\u540d\u91cd\u590d\uff0c\u91c7\u7528 GUID \u751f\u6210\n var filePath = Path.Combine(savePath, Guid.NewGuid().ToString("N") + Path.GetExtension(formFile.FileName)); // \u53ef\u4ee5\u66ff\u4ee3\u4e3a\u4f60\u9700\u8981\u5b58\u50a8\u7684\u771f\u5b9e\u8def\u5f84\n\n using (var stream = System.IO.File.Create(filePath))\n {\n await formFile.CopyToAsync(stream);\n }\n }\n }\n\n // \u5728\u52a8\u6001 API \u76f4\u63a5\u8fd4\u56de\u5bf9\u8c61\u5373\u53ef\uff0c\u65e0\u9700 OK \u548c IActionResult\n return Ok(new { count = files.Count, size });\n}\n')))}f.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/a2d62645.6fbb3ec4.js b/handbook/build/assets/js/a2d62645.6fbb3ec4.js new file mode 100644 index 00000000000..fe4581fb69b --- /dev/null +++ b/handbook/build/assets/js/a2d62645.6fbb3ec4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[2232],{3905:function(e,t,n){n.d(t,{Zo:function(){return s},kt:function(){return m}});var r=n(7294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var d=r.createContext({}),l=function(e){var t=r.useContext(d),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},s=function(e){var t=l(e.components);return r.createElement(d.Provider,{value:t},e.children)},p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},u=r.forwardRef((function(e,t){var n=e.components,i=e.mdxType,a=e.originalType,d=e.parentName,s=c(e,["components","mdxType","originalType","parentName"]),u=l(n),m=i,g=u["".concat(d,".").concat(m)]||u[m]||p[m]||a;return n?r.createElement(g,o(o({ref:t},s),{},{components:n})):r.createElement(g,o({ref:t},s))}));function m(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var a=n.length,o=new Array(a);o[0]=u;var c={};for(var d in t)hasOwnProperty.call(t,d)&&(c[d]=t[d]);c.originalType=e,c.mdxType="string"==typeof e?e:i,o[1]=c;for(var l=2;l\u975e\u6258\u7ba1",id:"34134-\u8bbe\u7f6e\u4e3a-\u975e\u6258\u7ba1",children:[]},{value:"34.1.3.5 \u91cd\u542f\u7f51\u7ad9",id:"34135-\u91cd\u542f\u7f51\u7ad9",children:[]}]},{value:"34.1.4 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"3414-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],u={toc:p};function m(e){var t=e.components,n=(0,i.Z)(e,c);return(0,a.kt)("wrapper",(0,r.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,a.kt)("div",{parentName:"div",className:"admonition-heading"},(0,a.kt)("h5",{parentName:"div"},(0,a.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,a.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,a.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u7cbe\u7b80\u53d1\u5e03\u6587\u4ef6")),(0,a.kt)("div",{parentName:"div",className:"admonition-content"},(0,a.kt)("p",{parentName:"div"},"\u5982\u679c\u9700\u8981\u7cbe\u7b80\u53d1\u5e03\u540e\u7684\u6587\u4ef6\uff0c\u4e5f\u5c31\u662f\u5220\u9664\u4e0d\u5fc5\u8981\u7684\u6587\u4ef6\u5939\uff0c\u53ef\u4ee5\u7f16\u8f91 Web \u9879\u76ee\u7684 ",(0,a.kt)("inlineCode",{parentName:"p"},".csproj")," \u5e76\u6dfb\u52a0 ",(0,a.kt)("inlineCode",{parentName:"p"},"en-US"),"\uff0c\u5982\uff1a"),(0,a.kt)("pre",{parentName:"div"},(0,a.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{3}","{3}":!0},"\n net5.0\n en-US\n\n")))),(0,a.kt)("h2",{id:"3411-\u53d1\u5e03\u7f51\u7ad9"},"34.1.1 \u53d1\u5e03\u7f51\u7ad9"),(0,a.kt)("h3",{id:"34111-\u9009\u62e9\u542f\u52a8\u9879\u53d1\u5e03"},"34.1.1.1 \u9009\u62e9\u542f\u52a8\u9879\u53d1\u5e03"),(0,a.kt)("img",{src:(0,o.Z)("img/dp1.png")}),(0,a.kt)("h3",{id:"34112-\u9009\u62e9\u53d1\u5e03\u5230\u6587\u4ef6\u5939"},"34.1.1.2 \u9009\u62e9\u53d1\u5e03\u5230\u6587\u4ef6\u5939"),(0,a.kt)("img",{src:(0,o.Z)("img/dy2.png")}),(0,a.kt)("h3",{id:"34113-\u914d\u7f6e\u53d1\u5e03\u540e\u8def\u5f84"},"34.1.1.3 \u914d\u7f6e\u53d1\u5e03\u540e\u8def\u5f84"),(0,a.kt)("img",{src:(0,o.Z)("img/dp3.png")}),(0,a.kt)("h3",{id:"34114-\u70b9\u51fb\u53d1\u5e03"},"34.1.1.4 \u70b9\u51fb\u53d1\u5e03"),(0,a.kt)("img",{src:(0,o.Z)("img/dp4.png")}),(0,a.kt)("h2",{id:"3412-\u670d\u52a1\u5668\u73af\u5883\u914d\u7f6e"},"34.1.2 \u670d\u52a1\u5668\u73af\u5883\u914d\u7f6e"),(0,a.kt)("h3",{id:"34121-\u7b2c\u4e00\u6b65"},"34.1.2.1 \u7b2c\u4e00\u6b65"),(0,a.kt)("p",null,"\u5b89\u88c5.NET Core \u8fd0\u884c\u65f6\u6346\u7ed1\u5305\uff1a",(0,a.kt)("a",{parentName:"p",href:"https://dotnet.microsoft.com/permalink/dotnetcore-current-windows-runtime-bundle-installer"},"\u70b9\u51fb\u4e0b\u8f7d")),(0,a.kt)("h3",{id:"34122-\u7b2c\u4e8c\u6b65\uff08\u547d\u4ee4\uff09"},"34.1.2.2 \u7b2c\u4e8c\u6b65\uff08\u547d\u4ee4\uff09"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-bash"},"net stop was /y\n")),(0,a.kt)("h3",{id:"34123-\u7b2c\u4e09\u6b65\uff08\u547d\u4ee4\uff09"},"34.1.2.3 \u7b2c\u4e09\u6b65\uff08\u547d\u4ee4\uff09"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-bash"},"net start w3svc\n")),(0,a.kt)("h3",{id:"34124-\u7b2c\u56db\u6b65\uff08\u547d\u4ee4\uff09"},"34.1.2.4 \u7b2c\u56db\u6b65\uff08\u547d\u4ee4\uff09"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-bash"},"set ASPNETCORE_ENVIRONMENT=Production\n")),(0,a.kt)("h2",{id:"3413-\u90e8\u7f72\u5230-iis"},"34.1.3 \u90e8\u7f72\u5230 IIS"),(0,a.kt)("h3",{id:"34131-\u6dfb\u52a0\u65b0\u7f51\u7ad9"},"34.1.3.1 \u6dfb\u52a0\u65b0\u7f51\u7ad9"),(0,a.kt)("img",{src:(0,o.Z)("img/ds1.png")}),(0,a.kt)("h3",{id:"34132-\u914d\u7f6e\u7f51\u7ad9\u4fe1\u606f"},"34.1.3.2 \u914d\u7f6e\u7f51\u7ad9\u4fe1\u606f"),(0,a.kt)("img",{src:(0,o.Z)("img/ds2.png")}),(0,a.kt)("h3",{id:"34133-\u914d\u7f6e\u5e94\u7528\u7a0b\u5e8f\u6c60"},"34.1.3.3 \u914d\u7f6e\u5e94\u7528\u7a0b\u5e8f\u6c60"),(0,a.kt)("img",{src:(0,o.Z)("img/ds3.png")}),(0,a.kt)("h3",{id:"34134-\u8bbe\u7f6e\u4e3a-\u975e\u6258\u7ba1"},"34.1.3.4 \u8bbe\u7f6e\u4e3a ",(0,a.kt)("inlineCode",{parentName:"h3"},"\u975e\u6258\u7ba1")),(0,a.kt)("img",{src:(0,o.Z)("img/ds4.png")}),(0,a.kt)("h3",{id:"34135-\u91cd\u542f\u7f51\u7ad9"},"34.1.3.5 \u91cd\u542f\u7f51\u7ad9"),(0,a.kt)("p",null,"\u53ea\u9700\u91cd\u542f\u7f51\u7ad9\u6216\u5e94\u7528\u7a0b\u5e8f\u6c60\u5373\u53ef\u3002"),(0,a.kt)("h2",{id:"3414-\u53cd\u9988\u4e0e\u5efa\u8bae"},"34.1.4 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,a.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,a.kt)("div",{parentName:"div",className:"admonition-heading"},(0,a.kt)("h5",{parentName:"div"},(0,a.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,a.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,a.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,a.kt)("div",{parentName:"div",className:"admonition-content"},(0,a.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,a.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/a2d62645.77e2cfed.js b/handbook/build/assets/js/a2d62645.77e2cfed.js deleted file mode 100644 index 4956f1c933c..00000000000 --- a/handbook/build/assets/js/a2d62645.77e2cfed.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[2232],{3905:function(e,t,n){n.d(t,{Zo:function(){return s},kt:function(){return m}});var r=n(7294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var d=r.createContext({}),l=function(e){var t=r.useContext(d),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},s=function(e){var t=l(e.components);return r.createElement(d.Provider,{value:t},e.children)},p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},u=r.forwardRef((function(e,t){var n=e.components,i=e.mdxType,a=e.originalType,d=e.parentName,s=c(e,["components","mdxType","originalType","parentName"]),u=l(n),m=i,h=u["".concat(d,".").concat(m)]||u[m]||p[m]||a;return n?r.createElement(h,o(o({ref:t},s),{},{components:n})):r.createElement(h,o({ref:t},s))}));function m(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var a=n.length,o=new Array(a);o[0]=u;var c={};for(var d in t)hasOwnProperty.call(t,d)&&(c[d]=t[d]);c.originalType=e,c.mdxType="string"==typeof e?e:i,o[1]=c;for(var l=2;l\u975e\u6258\u7ba1",id:"34134-\u8bbe\u7f6e\u4e3a-\u975e\u6258\u7ba1",children:[]},{value:"34.1.3.5 \u91cd\u542f\u7f51\u7ad9",id:"34135-\u91cd\u542f\u7f51\u7ad9",children:[]}]},{value:"34.1.4 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"3414-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],u={toc:p};function m(e){var t=e.components,n=(0,i.Z)(e,c);return(0,a.kt)("wrapper",(0,r.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,a.kt)("div",{parentName:"div",className:"admonition-heading"},(0,a.kt)("h5",{parentName:"div"},(0,a.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,a.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,a.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u7cbe\u7b80\u53d1\u5e03\u6587\u4ef6")),(0,a.kt)("div",{parentName:"div",className:"admonition-content"},(0,a.kt)("p",{parentName:"div"},"\u5982\u679c\u9700\u8981\u7cbe\u7b80\u53d1\u5e03\u540e\u7684\u6587\u4ef6\uff0c\u4e5f\u5c31\u662f\u5220\u9664\u4e0d\u5fc5\u8981\u7684\u6587\u4ef6\u5939\uff0c\u53ef\u4ee5\u7f16\u8f91 Web \u9879\u76ee\u7684 ",(0,a.kt)("inlineCode",{parentName:"p"},".csproj")," \u5e76\u6dfb\u52a0 ",(0,a.kt)("inlineCode",{parentName:"p"},"en-US"),"\uff0c\u5982\uff1a"),(0,a.kt)("pre",{parentName:"div"},(0,a.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{3}","{3}":!0},"\n net5.0\n en-US\n\n")))),(0,a.kt)("h2",{id:"3411-\u53d1\u5e03\u7f51\u7ad9"},"34.1.1 \u53d1\u5e03\u7f51\u7ad9"),(0,a.kt)("h3",{id:"34111-\u9009\u62e9\u542f\u52a8\u9879\u53d1\u5e03"},"34.1.1.1 \u9009\u62e9\u542f\u52a8\u9879\u53d1\u5e03"),(0,a.kt)("img",{src:(0,o.Z)("img/dp1.png")}),(0,a.kt)("h3",{id:"34112-\u9009\u62e9\u53d1\u5e03\u5230\u6587\u4ef6\u5939"},"34.1.1.2 \u9009\u62e9\u53d1\u5e03\u5230\u6587\u4ef6\u5939"),(0,a.kt)("img",{src:(0,o.Z)("img/dy2.png")}),(0,a.kt)("h3",{id:"34113-\u914d\u7f6e\u53d1\u5e03\u540e\u8def\u5f84"},"34.1.1.3 \u914d\u7f6e\u53d1\u5e03\u540e\u8def\u5f84"),(0,a.kt)("img",{src:(0,o.Z)("img/dp3.png")}),(0,a.kt)("h3",{id:"34114-\u70b9\u51fb\u53d1\u5e03"},"34.1.1.4 \u70b9\u51fb\u53d1\u5e03"),(0,a.kt)("img",{src:(0,o.Z)("img/dp4.png")}),(0,a.kt)("h2",{id:"3412-\u670d\u52a1\u5668\u73af\u5883\u914d\u7f6e"},"34.1.2 \u670d\u52a1\u5668\u73af\u5883\u914d\u7f6e"),(0,a.kt)("h3",{id:"34121-\u7b2c\u4e00\u6b65"},"34.1.2.1 \u7b2c\u4e00\u6b65"),(0,a.kt)("p",null,"\u5b89\u88c5.NET Core \u8fd0\u884c\u65f6\u6346\u7ed1\u5305\uff1a",(0,a.kt)("a",{parentName:"p",href:"https://dotnet.microsoft.com/permalink/dotnetcore-current-windows-runtime-bundle-installer"},"\u70b9\u51fb\u4e0b\u8f7d")),(0,a.kt)("h3",{id:"34122-\u7b2c\u4e8c\u6b65\uff08\u547d\u4ee4\uff09"},"34.1.2.2 \u7b2c\u4e8c\u6b65\uff08\u547d\u4ee4\uff09"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-bash"},"net stop was /y\n")),(0,a.kt)("h3",{id:"34123-\u7b2c\u4e09\u6b65\uff08\u547d\u4ee4\uff09"},"34.1.2.3 \u7b2c\u4e09\u6b65\uff08\u547d\u4ee4\uff09"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-bash"},"net start w3svc\n")),(0,a.kt)("h3",{id:"34124-\u7b2c\u56db\u6b65\uff08\u547d\u4ee4\uff09"},"34.1.2.4 \u7b2c\u56db\u6b65\uff08\u547d\u4ee4\uff09"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-bash"},"set ASPNETCORE_ENVIRONMENT=Production\n")),(0,a.kt)("h2",{id:"3413-\u90e8\u7f72\u5230-iis"},"34.1.3 \u90e8\u7f72\u5230 IIS"),(0,a.kt)("h3",{id:"34131-\u6dfb\u52a0\u65b0\u7f51\u7ad9"},"34.1.3.1 \u6dfb\u52a0\u65b0\u7f51\u7ad9"),(0,a.kt)("img",{src:(0,o.Z)("img/ds1.png")}),(0,a.kt)("h3",{id:"34132-\u914d\u7f6e\u7f51\u7ad9\u4fe1\u606f"},"34.1.3.2 \u914d\u7f6e\u7f51\u7ad9\u4fe1\u606f"),(0,a.kt)("img",{src:(0,o.Z)("img/ds2.png")}),(0,a.kt)("h3",{id:"34133-\u914d\u7f6e\u5e94\u7528\u7a0b\u5e8f\u6c60"},"34.1.3.3 \u914d\u7f6e\u5e94\u7528\u7a0b\u5e8f\u6c60"),(0,a.kt)("img",{src:(0,o.Z)("img/ds3.png")}),(0,a.kt)("h3",{id:"34134-\u8bbe\u7f6e\u4e3a-\u975e\u6258\u7ba1"},"34.1.3.4 \u8bbe\u7f6e\u4e3a ",(0,a.kt)("inlineCode",{parentName:"h3"},"\u975e\u6258\u7ba1")),(0,a.kt)("img",{src:(0,o.Z)("img/ds4.png")}),(0,a.kt)("h3",{id:"34135-\u91cd\u542f\u7f51\u7ad9"},"34.1.3.5 \u91cd\u542f\u7f51\u7ad9"),(0,a.kt)("p",null,"\u53ea\u9700\u91cd\u542f\u7f51\u7ad9\u6216\u5e94\u7528\u7a0b\u5e8f\u6c60\u5373\u53ef\u3002"),(0,a.kt)("h2",{id:"3414-\u53cd\u9988\u4e0e\u5efa\u8bae"},"34.1.4 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,a.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,a.kt)("div",{parentName:"div",className:"admonition-heading"},(0,a.kt)("h5",{parentName:"div"},(0,a.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,a.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,a.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,a.kt)("div",{parentName:"div",className:"admonition-content"},(0,a.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,a.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/a4688235.100d5465.js b/handbook/build/assets/js/a4688235.100d5465.js new file mode 100644 index 00000000000..5d9bd4162de --- /dev/null +++ b/handbook/build/assets/js/a4688235.100d5465.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[969],{3905:function(e,n,t){t.d(n,{Zo:function(){return s},kt:function(){return u}});var a=t(7294);function i(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function o(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function r(e){for(var n=1;n=0||(i[t]=e[t]);return i}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(i[t]=e[t])}return i}var l=a.createContext({}),d=function(e){var n=a.useContext(l),t=n;return e&&(t="function"==typeof e?e(n):r(r({},n),e)),t},s=function(e){var n=d(e.components);return a.createElement(l.Provider,{value:n},e.children)},m={inlineCode:"code",wrapper:function(e){var n=e.children;return a.createElement(a.Fragment,{},n)}},c=a.forwardRef((function(e,n){var t=e.components,i=e.mdxType,o=e.originalType,l=e.parentName,s=p(e,["components","mdxType","originalType","parentName"]),c=d(t),u=i,k=c["".concat(l,".").concat(u)]||c[u]||m[u]||o;return t?a.createElement(k,r(r({ref:n},s),{},{components:t})):a.createElement(k,r({ref:n},s))}));function u(e,n){var t=arguments,i=n&&n.mdxType;if("string"==typeof e||i){var o=t.length,r=new Array(o);r[0]=c;var p={};for(var l in n)hasOwnProperty.call(n,l)&&(p[l]=n[l]);p.originalType=e,p.mdxType="string"==typeof e?e:i,r[1]=p;for(var d=2;dAppDbContext",id:"912-appdbcontext",children:[]},{value:"9.1.3 AppDbContext \u548c DbContext \u533a\u522b",id:"913-appdbcontext-\u548c-dbcontext-\u533a\u522b",children:[]},{value:"9.1.4 \u5982\u4f55\u5b9a\u4e49\u6570\u636e\u5e93\u4e0a\u4e0b\u6587",id:"914-\u5982\u4f55\u5b9a\u4e49\u6570\u636e\u5e93\u4e0a\u4e0b\u6587",children:[{value:"9.1.4.1 \u521b\u5efa\u9ed8\u8ba4\u6570\u636e\u5e93\u4e0a\u4e0b\u6587",id:"9141-\u521b\u5efa\u9ed8\u8ba4\u6570\u636e\u5e93\u4e0a\u4e0b\u6587",children:[]},{value:"9.1.4.2 \u521b\u5efa\u5176\u4ed6\u6570\u636e\u5e93\u4e0a\u4e0b\u6587",id:"9142-\u521b\u5efa\u5176\u4ed6\u6570\u636e\u5e93\u4e0a\u4e0b\u6587",children:[]}]},{value:"9.1.5 \u914d\u7f6e\u8fde\u63a5\u5b57\u7b26\u4e32",id:"915-\u914d\u7f6e\u8fde\u63a5\u5b57\u7b26\u4e32",children:[{value:"9.1.5.1 \u5728\u6ce8\u518c\u6570\u636e\u5e93\u670d\u52a1\u65f6\u914d\u7f6e",id:"9151-\u5728\u6ce8\u518c\u6570\u636e\u5e93\u670d\u52a1\u65f6\u914d\u7f6e",children:[]},{value:"9.1.5.2 [AppDbContext] \u65b9\u5f0f\u914d\u7f6e",id:"9152-appdbcontext-\u65b9\u5f0f\u914d\u7f6e",children:[]},{value:"9.1.5.3 OnConfiguring \u65b9\u5f0f\u914d\u7f6e",id:"9153-onconfiguring-\u65b9\u5f0f\u914d\u7f6e",children:[]},{value:"9.1.5.4 \u5404\u7c7b\u6570\u636e\u5e93\u8fde\u63a5\u5b57\u7b26\u4e32\u914d\u7f6e\u793a\u4f8b",id:"9154-\u5404\u7c7b\u6570\u636e\u5e93\u8fde\u63a5\u5b57\u7b26\u4e32\u914d\u7f6e\u793a\u4f8b",children:[]}]},{value:"9.1.6 \u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u5b9a\u4e49\u4f4d\u7f6e",id:"916-\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u5b9a\u4e49\u4f4d\u7f6e",children:[]},{value:"9.1.7 \u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u6ce8\u518c",id:"917-\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u6ce8\u518c",children:[]},{value:"9.1.8 \u81ea\u5b9a\u4e49\u9ad8\u7ea7\u6ce8\u518c",id:"918-\u81ea\u5b9a\u4e49\u9ad8\u7ea7\u6ce8\u518c",children:[]},{value:"9.1.9 \u52a8\u6001\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u5bf9\u8c61",id:"919-\u52a8\u6001\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u5bf9\u8c61",children:[]},{value:"9.1.10 \u5728\u540e\u53f0\u4efb\u52a1\u4e2d\u4f7f\u7528",id:"9110-\u5728\u540e\u53f0\u4efb\u52a1\u4e2d\u4f7f\u7528",children:[]},{value:"9.1.11 AppDbContext \u5168\u5c40\u914d\u7f6e\u5c5e\u6027",id:"9111-appdbcontext-\u5168\u5c40\u914d\u7f6e\u5c5e\u6027",children:[]},{value:"9.1.12 \u914d\u7f6e\u5b9e\u4f53 \u61d2\u52a0\u8f7d",id:"9112-\u914d\u7f6e\u5b9e\u4f53-\u61d2\u52a0\u8f7d",children:[]},{value:"9.1.13 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"9113-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],m={toc:s};function c(e){var n=e.components,t=(0,i.Z)(e,r);return(0,o.kt)("wrapper",(0,a.Z)({},m,t,{components:n,mdxType:"MDXLayout"}),(0,o.kt)("div",{className:"admonition admonition-warning alert alert--danger"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"}))),"\u8fde\u63a5\u5b57\u7b26\u4e32\u914d\u7f6e\u6ce8\u610f\u4e8b\u9879")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u5982\u679c\u8fde\u63a5\u5b57\u7b26\u4e32\u662f\u914d\u7f6e\u5728\u81ea\u5b9a\u4e49\u7684 ",(0,o.kt)("inlineCode",{parentName:"p"},".json")," \u6587\u4ef6\u4e2d\uff0c\u90a3\u4e48\u5fc5\u987b\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"Visual Studio")," \u4e2d\u914d\u7f6e ",(0,o.kt)("inlineCode",{parentName:"p"},".json")," \u53f3\u952e\u5c5e\u6027\uff0c\u8bbe\u7f6e ",(0,o.kt)("inlineCode",{parentName:"p"},"\u590d\u5236")," \u8f93\u51fa\u76ee\u5f55\u4e3a ",(0,o.kt)("inlineCode",{parentName:"p"},"\u5982\u679c\u8f83\u65b0\u5219\u590d\u5236"),"\uff0c\u751f\u6210\u64cd\u4f5c\u4e3a\uff1a",(0,o.kt)("inlineCode",{parentName:"p"},"\u5185\u5bb9"),"\u3002"),(0,o.kt)("p",{parentName:"div"},"\u5426\u5219\u5c31\u4f1a\u63d0\u793a\u627e\u4e0d\u5230\u914d\u7f6e\u6216\u8fde\u63a5\u5b57\u7b26\u4e32\u7684\u9519\u8bef\u3002"))),(0,o.kt)("h2",{id:"911-\u6570\u636e\u5e93\u4e0a\u4e0b\u6587"},"9.1.1 \u6570\u636e\u5e93\u4e0a\u4e0b\u6587"),(0,o.kt)("p",null,"\u7b80\u5355\u6765\u8bf4\uff0c\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u662f\u8d1f\u8d23\u548c\u6570\u636e\u5e93\u4ea4\u4e92\u7684\u5bf9\u8c61\uff0c\u63d0\u4f9b\u7a0b\u5e8f\u5bf9\u6570\u636e\u5e93\u5b58\u53d6\u63d0\u4f9b\u4e86\u5927\u91cf\u7684\u65b9\u6cd5\u3002"),(0,o.kt)("p",null,"\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\uff0c\u9ed8\u8ba4\u96c6\u6210\u4e86\u5fae\u8f6f\u4eb2\u513f\u5b50\uff1a",(0,o.kt)("inlineCode",{parentName:"p"},"EntityFramework Core")," \uff0c\u4e5f\u5c31\u662f\u901a\u5e38\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u6307\u7684\u662f ",(0,o.kt)("inlineCode",{parentName:"p"},"DbContext")," \u7c7b\u6216\u5b83\u7684\u5b9e\u73b0\u7c7b\u3002"),(0,o.kt)("h2",{id:"912-appdbcontext"},"9.1.2 ",(0,o.kt)("inlineCode",{parentName:"h2"},"AppDbContext")),(0,o.kt)("p",null,"\u5728\u6211\u4eec\u5b9e\u9645\u9879\u76ee\u5f00\u53d1\u8fc7\u7a0b\u4e2d\uff0c\u4f7f\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"EFCore")," \u63d0\u4f9b\u7684 ",(0,o.kt)("inlineCode",{parentName:"p"},"DbContext")," \u64cd\u4f5c\u5bf9\u8c61\u64cd\u4f5c\u6570\u636e\u5e93\u6709\u4e9b\u7e41\u7410\u548c\u590d\u6742\uff0c\u4e14\u9ed8\u8ba4\u4e0d\u5177\u5907\u8bfb\u5199\u5206\u79bb\u3001\u591a\u5e93\u7b49\u64cd\u4f5c\u529f\u80fd\u3002"),(0,o.kt)("p",null,"\u6240\u4ee5\uff0c",(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u4e86 ",(0,o.kt)("inlineCode",{parentName:"p"},"AppDbContext")," \u6570\u636e\u5e93\u4e0a\u4e0b\u6587\uff0c\u8be5\u4e0a\u4e0b\u6587\u7ee7\u627f\u81ea ",(0,o.kt)("inlineCode",{parentName:"p"},"DbContext"),"\u3002"),(0,o.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u7279\u522b\u8bf4\u660e")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u540e\u7eed\u7ae0\u8282\uff0c\u7686\u91c7\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"EFCore")," \u4ee3\u66ff ",(0,o.kt)("inlineCode",{parentName:"p"},"EntityFramework Core"),"\u3002"))),(0,o.kt)("h2",{id:"913-appdbcontext-\u548c-dbcontext-\u533a\u522b"},"9.1.3 ",(0,o.kt)("inlineCode",{parentName:"h2"},"AppDbContext")," \u548c ",(0,o.kt)("inlineCode",{parentName:"h2"},"DbContext")," \u533a\u522b"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"AppDbContext")," \u7ee7\u627f\u81ea ",(0,o.kt)("inlineCode",{parentName:"li"},"DbContext"),"\uff0c\u5177\u5907 ",(0,o.kt)("inlineCode",{parentName:"li"},"DbContext")," \u6240\u6709\u529f\u80fd\u3002"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"AppDbContext")," \u652f\u6301\u591a\u6570\u636e\u5e93\u64cd\u4f5c\u6cdb\u578b\u7248\u672c\uff0c\u5982\uff1a",(0,o.kt)("inlineCode",{parentName:"li"},"AppDbContext")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"AppDbContext")," \u81ea\u52a8\u914d\u7f6e\u5b9e\u4f53\u4fe1\u606f\uff0c\u65e0\u9700\u5728 ",(0,o.kt)("inlineCode",{parentName:"li"},"OnModelCreating")," \u4e2d\u914d\u7f6e"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"AppDbContext")," \u652f\u6301\u5185\u7f6e\u591a\u79df\u6237\u652f\u6301"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"AppDbContext")," \u652f\u6301\u5168\u5c40\u6a21\u578b\u914d\u7f6e\u62e6\u622a\u5668"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"AppDbContext")," \u652f\u6301\u6570\u636e\u63d0\u4ea4\u66f4\u6539\u591a\u4e2a\u4e8b\u4ef6"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"AppDbContext")," \u63d0\u4f9b\u66f4\u52a0\u5f3a\u5927\u7684\u6a21\u578b\u64cd\u4f5c\u80fd\u529b\uff0c\u5982 ",(0,o.kt)("inlineCode",{parentName:"li"},"Sql")," \u64cd\u4f5c\uff0c\u8bfb\u5199\u5206\u79bb\u7b49"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"AppDbContext")," \u80fd\u591f\u5f97\u5230 ",(0,o.kt)("inlineCode",{parentName:"li"},"Furion")," \u6846\u67b6\u66f4\u591a\u7684\u529f\u80fd\u652f\u6301")),(0,o.kt)("h2",{id:"914-\u5982\u4f55\u5b9a\u4e49\u6570\u636e\u5e93\u4e0a\u4e0b\u6587"},"9.1.4 \u5982\u4f55\u5b9a\u4e49\u6570\u636e\u5e93\u4e0a\u4e0b\u6587"),(0,o.kt)("p",null,"\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\u4e86\uff0c\u63d0\u4f9b\u4e86\u4e24\u79cd ",(0,o.kt)("inlineCode",{parentName:"p"},"AppDbContext")," \u5b9a\u4e49\u65b9\u5f0f\uff1a"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"AppDbContext")," \u64cd\u4f5c\u9ed8\u8ba4\u6570\u636e\u5e93"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"AppDbContext")," \u64cd\u4f5c N \u4e2a\u6570\u636e\u5e93")),(0,o.kt)("p",null,"\u5176\u4e2d ",(0,o.kt)("inlineCode",{parentName:"p"},"AppDbContext")," \u9ed8\u8ba4\u7ee7\u627f\u81ea ",(0,o.kt)("inlineCode",{parentName:"p"},"AppDbContext"),"\u3002"),(0,o.kt)("p",null,"\u4e0b\u9762\u662f\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u521b\u5efa\u7684\u591a\u4e2a\u4f8b\u5b50\uff1a"),(0,o.kt)("h3",{id:"9141-\u521b\u5efa\u9ed8\u8ba4\u6570\u636e\u5e93\u4e0a\u4e0b\u6587"},"9.1.4.1 \u521b\u5efa\u9ed8\u8ba4\u6570\u636e\u5e93\u4e0a\u4e0b\u6587"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,6,12}","{1,6,12}":!0},'using Furion.DatabaseAccessor;\nusing Microsoft.EntityFrameworkCore;\n\nnamespace Furion.EntityFramework.Core\n{\n [AppDbContext("\u8fde\u63a5\u5b57\u7b26\u4e32\u6216appsetting.json \u952e")]\n public class FurionDbContext : AppDbContext // \u7ee7\u627f AppDbContext<> \u7c7b\n {\n /// \n /// \u7ee7\u627f\u7236\u7c7b\u6784\u9020\u51fd\u6570\n /// \n /// \n public FurionDbContext(DbContextOptions options) : base(options)\n {\n }\n }\n}\n')),(0,o.kt)("h3",{id:"9142-\u521b\u5efa\u5176\u4ed6\u6570\u636e\u5e93\u4e0a\u4e0b\u6587"},"9.1.4.2 \u521b\u5efa\u5176\u4ed6\u6570\u636e\u5e93\u4e0a\u4e0b\u6587"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,6,12}","{1,6,12}":!0},'using Furion.DatabaseAccessor;\nusing Microsoft.EntityFrameworkCore;\n\nnamespace Furion.EntityFramework.Core\n{\n [AppDbContext("\u8fde\u63a5\u5b57\u7b26\u4e32\u6216appsetting.json \u952e")]\n public class FurOtherDbContext : AppDbContext // \u7ee7\u627f AppDbContext<> \u7c7b\n {\n /// \n /// \u7ee7\u627f\u7236\u7c7b\u6784\u9020\u51fd\u6570\n /// \n /// \n public FurOtherDbContext(DbContextOptions options) : base(options)\n {\n }\n }\n}\n')),(0,o.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u6ce8\u610f")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u6240\u6709\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u90fd\u5e94\u8be5\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"Furion.EntityFramework.Core")," \u9879\u76ee\u4e2d\u521b\u5efa\u3002\u53e6\u5916\u5982\u679c\u7cfb\u7edf\u7528\u5230\u4e86\u591a\u4e2a\u6570\u636e\u5e93\uff0c\u90a3\u4e48\u4ece\u7b2c\u4e8c\u4e2a\u5f00\u59cb\u5fc5\u987b\u6307\u5b9a\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u5b9a\u4f4d\u5668\u3002\u5173\u4e8e ",(0,o.kt)("inlineCode",{parentName:"p"},"TDbContextLocator")," \u5c06\u5728\u4e0b\u4e00\u7ae0\u8282 \u300a",(0,o.kt)("a",{parentName:"p",href:"dbcontext-locator"},"9.2 \u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u5b9a\u4f4d\u5668"),"\u300b\u9610\u8ff0\u3002"))),(0,o.kt)("h2",{id:"915-\u914d\u7f6e\u8fde\u63a5\u5b57\u7b26\u4e32"},"9.1.5 \u914d\u7f6e\u8fde\u63a5\u5b57\u7b26\u4e32"),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u591a\u79cd\u6570\u636e\u5e93\u8fde\u63a5\u5b57\u7b26\u4e32\u914d\u7f6e\u65b9\u5f0f\uff1a"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"\u5728\u6ce8\u518c\u6570\u636e\u5e93\u670d\u52a1\u65f6\u914d\u7f6e\uff1a",(0,o.kt)("inlineCode",{parentName:"li"},'AddDbPool("\u8fde\u63a5\u5b57\u7b26\u4e32")')," \u65b9\u5f0f"),(0,o.kt)("li",{parentName:"ul"},"\u4f7f\u7528 ",(0,o.kt)("inlineCode",{parentName:"li"},'[AppDbContext("\u8fde\u63a5\u5b57\u7b26\u4e32/Key")]')," \u7279\u6027\u65b9\u5f0f\uff08\u53ea\u5728 ",(0,o.kt)("inlineCode",{parentName:"li"},"AppDbContext \u5b9e\u73b0\u7c7b\u6709\u6548"),"\uff09",(0,o.kt)("strong",{parentName:"li"},"\u63a8\u8350")),(0,o.kt)("li",{parentName:"ul"},"\u901a\u8fc7\u91cd\u5199 ",(0,o.kt)("inlineCode",{parentName:"li"},"OnConfiguring(DbContextOptionsBuilder optionsBuilder)")," \u914d\u7f6e")),(0,o.kt)("h3",{id:"9151-\u5728\u6ce8\u518c\u6570\u636e\u5e93\u670d\u52a1\u65f6\u914d\u7f6e"},"9.1.5.1 \u5728\u6ce8\u518c\u6570\u636e\u5e93\u670d\u52a1\u65f6\u914d\u7f6e"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:'{12-19} title="Furion.EntityFramework.Core\\Startup.cs"',"{12-19}":!0,title:'"Furion.EntityFramework.Core\\Startup.cs"'},'using Furion.DependencyInjection;\nusing Microsoft.Extensions.DependencyInjection;\n\nnamespace Furion.EntityFramework.Core\n{\n [AppStartup(600)]\n public sealed class FurEntityFrameworkCoreStartup : AppStartup\n {\n public void ConfigureServices(IServiceCollection services)\n {\n // \u914d\u7f6e\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\uff0c\u652f\u6301N\u4e2a\u6570\u636e\u5e93\n services.AddDatabaseAccessor(options =>\n {\n // \u914d\u7f6e\u9ed8\u8ba4\u6570\u636e\u5e93\n options.AddDbPool(DbProvider.SqlServer, connectionMetadata:"\u8fde\u63a5\u5b57\u7b26\u4e32");\n\n // \u914d\u7f6e\u591a\u4e2a\u6570\u636e\u5e93\uff0c\u591a\u4e2a\u6570\u636e\u5e93\u5fc5\u987b\u6307\u5b9a\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u5b9a\u4f4d\u5668\n options.AddDbPool(DbProvider.Sqlite, connectionMetadata:"\u8fde\u63a5\u5b57\u7b26\u4e32");\n });\n }\n }\n}\n')),(0,o.kt)("div",{className:"admonition admonition-caution alert alert--warning"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 16 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"}))),"\u65b0\u7248 MySQL \u6ce8\u610f")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},(0,o.kt)("inlineCode",{parentName:"p"},"MySQL")," \u5728\u65b0\u7248\u672c\u5305\u4e2d\u6ce8\u518c\u6709\u6240\u4fee\u6539\uff0c\u6240\u4ee5\u6ce8\u518c\u65b9\u5f0f\u4e3a\uff1a"),(0,o.kt)("pre",{parentName:"div"},(0,o.kt)("code",{parentName:"pre",className:"language-cs"},'services.AddDatabaseAccessor(options =>\n{\n options.AddDbPool($"{DbProvider.MySql}@8.0.22");\n});\n')))),(0,o.kt)("h3",{id:"9152-appdbcontext-\u65b9\u5f0f\u914d\u7f6e"},"9.1.5.2 ",(0,o.kt)("inlineCode",{parentName:"h3"},"[AppDbContext]")," \u65b9\u5f0f\u914d\u7f6e"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,6}","{1,6}":!0},'using Furion.DatabaseAccessor;\nusing Microsoft.EntityFrameworkCore;\n\nnamespace Furion.EntityFramework.Core\n{\n [AppDbContext("DbConnectionString")] // \u652f\u6301 `appsetting.json` \u540d\u6216 \u8fde\u63a5\u5b57\u7b26\u4e32\n public class FurionDbContext : AppDbContext\n {\n /// \n /// \u7ee7\u627f\u7236\u7c7b\u6784\u9020\u51fd\u6570\n /// \n /// \n public FurionDbContext(DbContextOptions options) : base(options)\n {\n }\n }\n}\n')),(0,o.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u5c0f\u63d0\u793a")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u63a8\u8350\u4f7f\u7528\u6b64\u65b9\u5f0f\u914d\u7f6e\u6570\u636e\u5e93\u8fde\u63a5\u5b57\u7b26\u4e32\u3002"))),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},(0,o.kt)("inlineCode",{parentName:"strong"},"[AppDbContext]"))," \u5185\u7f6e\u5c5e\u6027\uff1a"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"ConnectionMetadata"),"\uff1a\u652f\u6301\u6570\u636e\u5e93\u8fde\u63a5\u5b57\u7b26\u4e32\uff0c\u914d\u7f6e\u6587\u4ef6\u7684 ",(0,o.kt)("inlineCode",{parentName:"li"},"ConnectionStrings")," \u4e2d\u7684 ",(0,o.kt)("inlineCode",{parentName:"li"},"Key")," \u6216\u914d\u7f6e\u6587\u4ef6\u7684\u5b8c\u6574\u7684\u914d\u7f6e\u8def\u5f84\uff0c\u5982\u679c\u662f\u5185\u5b58\u6570\u636e\u5e93\uff0c\u5219\u4e3a\u6570\u636e\u5e93\u540d\u79f0\u3002"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"TablePrefix"),"\uff1a\u5f53\u524d\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u8868\u7edf\u4e00\u524d\u7f00"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"TableSuffix"),"\uff1a\u5f53\u524d\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u8868\u7edf\u4e00\u540e\u7f00"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"ProviderName"),"\uff1a\u914d\u7f6e\u6570\u636e\u5e93\u63d0\u4f9b\u5668\u7c7b\u578b\uff0c\u4f20\u5165 ",(0,o.kt)("inlineCode",{parentName:"li"},"DbProvider.Xxx")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"Mode"),"\uff1a\u914d\u7f6e\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u6a21\u5f0f\uff0c",(0,o.kt)("inlineCode",{parentName:"li"},"DbContextMode")," \u679a\u4e3e\u7c7b\u578b\uff0c\u53d6\u503c\uff1a",(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"Cached"),"\uff1a\u7f13\u5b58\u6a21\u578b\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\uff0c\u9ed8\u8ba4\u503c"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"Dynamic"),"\uff1a\u52a8\u6001\u6a21\u578b\u6570\u636e\u5e93\u4e0a\u4e0b\u6587"))),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"SlaveDbContextLocators"),"\uff1a\u4e3b\u4ece\u5e93\u914d\u7f6e\uff0c\u8bbe\u7f6e\u591a\u4e2a\u4ece\u5e93\u5b9a\u4f4d\u5668\uff0c",(0,o.kt)("inlineCode",{parentName:"li"},"Type[]")," \u7c7b\u578b")),(0,o.kt)("h3",{id:"9153-onconfiguring-\u65b9\u5f0f\u914d\u7f6e"},"9.1.5.3 ",(0,o.kt)("inlineCode",{parentName:"h3"},"OnConfiguring")," \u65b9\u5f0f\u914d\u7f6e"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{16-20}","{16-20}":!0},'using Furion.DatabaseAccessor;\nusing Microsoft.EntityFrameworkCore;\n\nnamespace Furion.EntityFramework.Core\n{\n public class FurionDbContext : AppDbContext\n {\n /// \n /// \u7ee7\u627f\u7236\u7c7b\u6784\u9020\u51fd\u6570\n /// \n /// \n public FurionDbContext(DbContextOptions options) : base(options)\n {\n }\n\n protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)\n {\n base.OnConfiguring(optionsBuilder);\n\n optionsBuilder.UseSqlServer("\u6570\u636e\u5e93\u8fde\u63a5\u5b57\u7b26\u4e32");\n }\n }\n}\n')),(0,o.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u6ce8\u610f")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u8fd9\u4e09\u79cd\u65b9\u5f0f\u53ef\u4ee5\u540c\u65f6\u4f7f\u7528\uff0c\u4f46\u662f\u6709\u4f18\u5148\u7ea7\uff1a",(0,o.kt)("inlineCode",{parentName:"p"},"[AppDbContext]")," -> ",(0,o.kt)("inlineCode",{parentName:"p"},"\u5728\u6ce8\u518c\u6570\u636e\u5e93\u670d\u52a1\u65f6\u914d\u7f6e")," -> ",(0,o.kt)("inlineCode",{parentName:"p"},"OnConfiguring"),"\uff08\u4f4e\u5230\u9ad8\uff09"),(0,o.kt)("p",{parentName:"div"},"\u4e5f\u5c31\u662f ",(0,o.kt)("inlineCode",{parentName:"p"},"OnConfiguring")," \u914d\u7f6e\u4f1a\u8986\u76d6 ",(0,o.kt)("inlineCode",{parentName:"p"},"\u5728\u6ce8\u518c\u6570\u636e\u5e93\u670d\u52a1\u65f6\u914d\u7f6e")," \u914d\u7f6e\uff0c",(0,o.kt)("inlineCode",{parentName:"p"},"\u5728\u6ce8\u518c\u6570\u636e\u5e93\u670d\u52a1\u65f6\u914d\u7f6e")," \u914d\u7f6e\u4f1a\u8986\u76d6 ",(0,o.kt)("inlineCode",{parentName:"p"},"[AppDbContext]")," \u914d\u7f6e\u6240\u914d\u7f6e\u7684\u8fde\u63a5\u5b57\u7b26\u4e32\u3002"))),(0,o.kt)("h3",{id:"9154-\u5404\u7c7b\u6570\u636e\u5e93\u8fde\u63a5\u5b57\u7b26\u4e32\u914d\u7f6e\u793a\u4f8b"},"9.1.5.4 \u5404\u7c7b\u6570\u636e\u5e93\u8fde\u63a5\u5b57\u7b26\u4e32\u914d\u7f6e\u793a\u4f8b"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"Sqlite"),"\uff1a",(0,o.kt)("inlineCode",{parentName:"li"},"Data Source=./Furion.db")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"MySql"),"\uff1a",(0,o.kt)("inlineCode",{parentName:"li"},"Data Source=localhost;Database=Furion;User ID=root;Password=000000;pooling=true;port=3306;sslmode=none;CharSet=utf8;")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"SqlServer"),"\uff1a",(0,o.kt)("inlineCode",{parentName:"li"},"Server=localhost;Database=Furion;User=sa;Password=000000;MultipleActiveResultSets=True;")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"Oracle"),"\uff1a",(0,o.kt)("inlineCode",{parentName:"li"},"User Id=orcl;Password=orcl;Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=orcl)))")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"PostgreSQL"),"\uff1a",(0,o.kt)("inlineCode",{parentName:"li"},"PORT=5432;DATABASE=postgres;HOST=127.0.0.1;PASSWORD=postgres;USER ID=postgres;"))),(0,o.kt)("h2",{id:"916-\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u5b9a\u4e49\u4f4d\u7f6e"},"9.1.6 \u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u5b9a\u4e49\u4f4d\u7f6e"),(0,o.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u6ce8\u610f")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\uff0c\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u9700\u5b9a\u4e49\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"Furion.EntityFramework.Core")," \u4e2d\uff0c\u4e14\u6bcf\u4e00\u4e2a\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u90fd\u5fc5\u987b\u62e5\u6709\u552f\u4e00\u7684 ",(0,o.kt)("inlineCode",{parentName:"p"},"DbContextLocator")," \u5b9a\u4f4d\u5668"))),(0,o.kt)("h2",{id:"917-\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u6ce8\u518c"},"9.1.7 \u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u6ce8\u518c"),(0,o.kt)("p",null,"\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u914d\u7f6e\u597d\u6570\u636e\u5e93\u8fde\u63a5\u5b57\u7b26\u4e32\u540e\uff0c\u9700\u8981\u6ce8\u518c\u8be5\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\uff0c\u5e76\u6307\u5b9a\u6570\u636e\u5e93\u7c7b\u578b\uff0c\u5982\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:'{11-13} title="Furion\\framework\\Furion.EntityFramework.Core\\FurEntityFrameworkCoreStartup.cs"',"{11-13}":!0,title:'"Furion\\framework\\Furion.EntityFramework.Core\\FurEntityFrameworkCoreStartup.cs"'},"using Furion.DatabaseAccessor;\nusing Microsoft.Extensions.DependencyInjection;\n\nnamespace Furion.EntityFramework.Core\n{\n [AppStartup(600)]\n public sealed class FurEntityFrameworkCoreStartup : AppStartup\n {\n public void ConfigureServices(IServiceCollection services)\n {\n services.AddDatabaseAccessor(options =>\n {\n options.AddDbPool(DbProvider.Sqlite);\n });\n }\n }\n}\n")),(0,o.kt)("p",null,"\u5982\u679c\u6709\u591a\u4e2a\u6570\u636e\u5e93\u64cd\u4f5c\uff0c",(0,o.kt)("strong",{parentName:"p"},"\u90a3\u4e48\u4ece\u7b2c\u4e8c\u4e2a\u8d77\uff0c\u5c31\u9700\u8981\u7ed1\u5b9a\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u5b9a\u4f4d\u5668"),"\uff0c\u5982\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},"options.AddDbPool(DbProvider.Sqlite); // \u7b2c\u4e00\u4e2a\u6570\u636e\u5e93\n\noptions.AddDbPool(DbProvider.SqlServer); // \u7b2c\u4e8c\u4e2a\u6570\u636e\u5e93\n\noptions.AddDbPool(DbProvider.SqlServer); // \u7b2c\u4e09\u4e2a\u6570\u636e\u5e93\n")),(0,o.kt)("h2",{id:"918-\u81ea\u5b9a\u4e49\u9ad8\u7ea7\u6ce8\u518c"},"9.1.8 \u81ea\u5b9a\u4e49\u9ad8\u7ea7\u6ce8\u518c"),(0,o.kt)("p",null,"\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\uff0c\u4e3a\u4e86\u80fd\u591f\u5b9e\u73b0\u6570\u636e\u5e93\u7684\u7b80\u5355\u4f7f\u7528\u8fdb\u884c\u4e86\u6ce8\u518c\u5c01\u88c5\uff0c\u4f46\u6709\u4e9b\u65f6\u5019\uff0c\u6211\u4eec\u53ef\u80fd\u9700\u8981\u6dfb\u52a0\u66f4\u591a\u914d\u7f6e\uff0c\u8fd9\u65f6\u5c31\u9700\u8981\u4f7f\u7528\u539f\u751f\u81ea\u5b9a\u4e49\u914d\u7f6e\u65b9\u5f0f\uff0c\u5982\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},'// \u6ce8\u518c\u4f60\u7684\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u548c\u5b9a\u4f4d\u5668\u7ed1\u5b9a\nservices.AddDatabaseAccessor(options =>\n{\n // \u6ce8\u518c\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u548c\u5b9a\u4f4d\u5668\n options.RegisterDbContext();\n\n // \u83b7\u53d6\u8fde\u63a5\u5b57\u7b26\u4e32\n var connStr = DbProvider.GetConnectionString(/*\u8fd9\u91cc\u53ef\u5199\u53ef\u4e0d\u5199*/);\n\n // \u4f7f\u7528\u539f\u751f\u6ce8\u518c\n options.AddDbContextPool(builder =>\n {\n // \u6ce8\u518c\u7279\u5b9a\u6570\u636e\u5e93\n builder.UseSqlite(connStr, dbContextOptions =>\n {\n // \u914d\u7f6e\u8fc1\u79fb\u7a0b\u5e8f\u96c6\n dbContextOptions.MigrationsAssembly("\u8fc1\u79fb\u7a0b\u5e8f\u96c6");\n }).EnableDetailedErrors() // \u542f\u52a8\u8be6\u7ec6\u9519\u8bef\n .EnableSensitiveDataLogging() // \u66ff\u6362\u53c2\u6570\u4e3a\u5177\u4f53\u53c2\u6570\u503c\n .AddInterceptors(DbProvider.GetDefaultInterceptors()); // \u6dfb\u52a0\u9ed8\u8ba4\u8fc7\u6ee4\u5668\n }, 100); // \u914d\u7f6e\u6570\u636e\u5e93\u8fde\u63a5\u6c60\n});\n\n')),(0,o.kt)("h2",{id:"919-\u52a8\u6001\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u5bf9\u8c61"},"9.1.9 \u52a8\u6001\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u5bf9\u8c61"),(0,o.kt)("p",null,"\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\uff0c\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u662f\u5b9a\u4e49\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"Furion.EntityFramework.Core")," \u9879\u76ee\u5c42\uff0c\u5e76\u4e14\u8be5\u5c42\u4e0d\u88ab ",(0,o.kt)("inlineCode",{parentName:"p"},"Furion.Application")," \u548c ",(0,o.kt)("inlineCode",{parentName:"p"},"Furion.Core")," \u7b49\u5c42\u5f15\u7528\u3002"),(0,o.kt)("p",null,"\u6240\u4ee5\u5c31\u4e0d\u80fd\u76f4\u63a5\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"Furion.Application")," \u9879\u76ee\u5c42\u76f4\u63a5\u4f7f\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"Furion.EntityFramework.Core")," \u5b9a\u4e49\u7684\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u3002"),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u4e3a\u4e86\u89e3\u51b3\u8fd9\u4e2a\u95ee\u9898\uff0c\u63d0\u4f9b\u4e86\u4e24\u79cd\u65b9\u5f0f\u5904\u7406\uff1a"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"repository.Context")," \uff1a\u5f53\u524d\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u5bf9\u8c61\uff0c\u8fd4\u56de\u662f ",(0,o.kt)("inlineCode",{parentName:"li"},"DbContext")," \u62bd\u8c61\u7c7b\u578b"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"repository.DynamicContext"),"\uff1a\u5f53\u524d\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u5bf9\u8c61\uff0c\u8fd4\u56de\u7684\u662f ",(0,o.kt)("inlineCode",{parentName:"li"},"dynamic")," \u7c7b\u578b")),(0,o.kt)("p",null,"\u5982\u679c\u4f60\u53ea\u662f\u60f3\u4f7f\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"DbContext")," \u7684\u529f\u80fd\uff0c\u76f4\u63a5\u4f7f\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"repository.Context")," \u5373\u53ef\uff0c\u5982\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},"repository.Context.SaveChanges();\n")),(0,o.kt)("p",null,"\u5982\u679c\u4f60\u60f3\u80fd\u591f\u83b7\u53d6\u5177\u4f53\u7684\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u7c7b\u578b\uff0c\u5982 ",(0,o.kt)("inlineCode",{parentName:"p"},"MyDbContext"),"\uff0c\u90a3\u4e48\u4f7f\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"repository.DynamicContext")," \u5c31\u53ef\u4ee5\u83b7\u53d6\u5230\u5177\u4f53\u7684 ",(0,o.kt)("inlineCode",{parentName:"p"},"MyDbContext")," \u7c7b\u578b\u3002\u5982\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},"var persons = repository.DynamicContext.Persons.Find(1);\nvar users = repository.DynamicContext.Users;\n")),(0,o.kt)("p",null,"\u8fd9\u6837\u5c31\u53ef\u4ee5\u76f4\u63a5\u64cd\u4f5c ",(0,o.kt)("inlineCode",{parentName:"p"},"MyDbContext")," \u5b9a\u4e49\u7684\u5c5e\u6027\u548c\u65b9\u6cd5\u4e86\u3002"),(0,o.kt)("h2",{id:"9110-\u5728\u540e\u53f0\u4efb\u52a1\u4e2d\u4f7f\u7528"},"9.1.10 \u5728\u540e\u53f0\u4efb\u52a1\u4e2d\u4f7f\u7528"),(0,o.kt)("p",null,"\u7531\u4e8e ",(0,o.kt)("inlineCode",{parentName:"p"},"DbContext")," \u9ed8\u8ba4\u6ce8\u518c\u4e3a ",(0,o.kt)("inlineCode",{parentName:"p"},"Scoped")," \u751f\u5b58\u5468\u671f\uff0c\u6240\u4ee5\u5728\u540e\u53f0\u4efb\u52a1\u4e2d\u4f7f\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"IServiceScopeFactory")," \u83b7\u53d6\u6240\u6709\u670d\u52a1\uff0c\u5982\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},'public class JobService : BackgroundService\n{\n // \u65e5\u5fd7\u5bf9\u8c61\n private readonly ILogger _logger;\n\n // \u670d\u52a1\u5de5\u5382\n private readonly IServiceScopeFactory _scopeFactory;\n public JobService(ILogger logger\n , IServiceScopeFactory scopeFactory)\n {\n _logger = logger;\n _scopeFactory = scopeFactory;\n }\n\n protected override Task ExecuteAsync(CancellationToken stoppingToken)\n {\n _logger.LogInformation("\u5199\u65e5\u5fd7~~");\n\n using (var scope = _scopeFactory.CreateScope())\n {\n var services = scope.ServiceProvider;\n\n // \u83b7\u53d6\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\n var dbContext = Db.GetDbContext(services);\n\n // \u83b7\u53d6\u4ed3\u50a8\n var repository = Db.GetRepository(services);\n\n // \u89e3\u6790\u5176\u4ed6\u670d\u52a1\n var otherService = services.GetService();\n }\n\n return Task.CompletedTask;\n }\n}\n')),(0,o.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u6570\u636e\u5e93\u64cd\u4f5c\u6ce8\u610f")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u5982\u679c\u4f5c\u7528\u57df\u4e2d\u5bf9",(0,o.kt)("strong",{parentName:"p"},"\u6570\u636e\u5e93\u6709\u4efb\u4f55\u53d8\u66f4\u64cd\u4f5c"),"\uff0c\u9700\u624b\u52a8\u8c03\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"SaveChanges")," \u6216\u5e26 ",(0,o.kt)("inlineCode",{parentName:"p"},"Now")," \u7ed3\u5c3e\u7684\u65b9\u6cd5\u3002\u4e5f\u53ef\u4ee5\u4f7f\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"Scoped.CreateUow(handler)")," \u4ee3\u66ff\u3002"))),(0,o.kt)("h2",{id:"9111-appdbcontext-\u5168\u5c40\u914d\u7f6e\u5c5e\u6027"},"9.1.11 ",(0,o.kt)("inlineCode",{parentName:"h2"},"AppDbContext")," \u5168\u5c40\u914d\u7f6e\u5c5e\u6027"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"InsertOrUpdateIgnoreNullValues"),"\uff1a\u65b0\u589e\u6216\u66f4\u65b0\u5ffd\u7565\u7a7a\u503c\uff0c\u9ed8\u8ba4 ",(0,o.kt)("inlineCode",{parentName:"li"},"false"),"\uff0c",(0,o.kt)("strong",{parentName:"li"},"\u5728\u6784\u9020\u51fd\u6570\u4e2d\u914d\u7f6e")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"EnabledEntityStateTracked"),"\uff1a\u542f\u7528\u5b9e\u4f53\u8ddf\u8e2a\uff0c\u9ed8\u8ba4 ",(0,o.kt)("inlineCode",{parentName:"li"},"true"),"\uff0c",(0,o.kt)("strong",{parentName:"li"},"\u5728\u6784\u9020\u51fd\u6570\u4e2d\u914d\u7f6e")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"EnabledEntityChangedListener"),"\uff1a\u542f\u7528\u5b9e\u4f53\u6570\u636e\u66f4\u6539\u76d1\u542c\uff0c\u9ed8\u8ba4 ",(0,o.kt)("inlineCode",{parentName:"li"},"false"),"\uff0c",(0,o.kt)("strong",{parentName:"li"},"\u5728\u6784\u9020\u51fd\u6570\u4e2d\u914d\u7f6e")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"Tenant"),"\uff1a\u9ed8\u8ba4\u5185\u7f6e\u591a\u79df\u6237"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"FailedAutoRollback"),"\uff1a\u662f\u5426\u542f\u7528\u4fdd\u5b58\u5931\u8d25\u540e\u4e8b\u52a1\u81ea\u52a8\u56de\u6eda\uff0c\u9ed8\u8ba4 ",(0,o.kt)("inlineCode",{parentName:"li"},"true"),"\uff0c\u53ef\u4ee5\u5728\u4efb\u4f55\u5730\u65b9\u914d\u7f6e")),(0,o.kt)("h2",{id:"9112-\u914d\u7f6e\u5b9e\u4f53-\u61d2\u52a0\u8f7d"},"9.1.12 \u914d\u7f6e\u5b9e\u4f53 ",(0,o.kt)("inlineCode",{parentName:"h2"},"\u61d2\u52a0\u8f7d")),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"\u7b2c\u4e00\u6b65\uff1a\u5b89\u88c5 ",(0,o.kt)("inlineCode",{parentName:"li"},"EFCore")," \u62d3\u5c55\u5305")),(0,o.kt)("p",null,"\u5728\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u5b9a\u4e49\u6240\u5728\u7684\u5c42\u5b89\u88c5 ",(0,o.kt)("inlineCode",{parentName:"p"},"Microsoft.EntityFrameworkCore.Proxies")," \u62d3\u5c55\u5305"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"\u7b2c\u4e8c\u6b65\uff1a\u91c7\u7528 ",(0,o.kt)("inlineCode",{parentName:"li"},"AddDb")," \u65b9\u5f0f\u6ce8\u518c")),(0,o.kt)("p",null,"\u786e\u4fdd\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u91c7\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"AddDb")," \u6ce8\u518c\u800c\u975e ",(0,o.kt)("inlineCode",{parentName:"p"},"AddDbPool"),"\u3002"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"\u7b2c\u4e09\u6b65\uff1a\u91cd\u5199 ",(0,o.kt)("inlineCode",{parentName:"li"},"OnConfiguring")," \u65b9\u6cd5")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{13,15}","{13,15}":!0},'using Furion.DatabaseAccessor;\nusing Microsoft.EntityFrameworkCore;\n\nnamespace Furion.EntityFramework.Core\n{\n [AppDbContext("Sqlite3ConnectionString", DbProvider.Sqlite)]\n public class DefaultDbContext : AppDbContext\n {\n public DefaultDbContext(DbContextOptions options) : base(options)\n {\n }\n\n protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)\n {\n optionsBuilder.UseLazyLoadingProxies()\n .UseSqlite(DbProvider.GetConnectionString());\n\n base.OnConfiguring(optionsBuilder);\n }\n }\n}\n')),(0,o.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u5c0f\u77e5\u8bc6")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u66f4\u591a ",(0,o.kt)("inlineCode",{parentName:"p"},"EFCore")," \u61d2\u52a0\u8f7d\u53ef\u67e5\u770b ",(0,o.kt)("strong",{parentName:"p"},(0,o.kt)("a",{parentName:"strong",href:"https://docs.microsoft.com/zh-cn/ef/core/querying/related-data/lazy"},"\u3010EFCore - \u5ef6\u8fdf\u52a0\u8f7d\u3011"))," \u6587\u6863\u3002"))),(0,o.kt)("h2",{id:"9113-\u53cd\u9988\u4e0e\u5efa\u8bae"},"9.1.13 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,o.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,o.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))),(0,o.kt)("hr",null),(0,o.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e86\u89e3\u66f4\u591a")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u60f3\u4e86\u89e3\u66f4\u591a ",(0,o.kt)("inlineCode",{parentName:"p"},"\u6570\u636e\u5e93\u4e0a\u4e0b\u6587")," \u77e5\u8bc6\u53ef\u67e5\u9605 ",(0,o.kt)("a",{parentName:"p",href:"https://docs.microsoft.com/zh-cn/ef/core/miscellaneous/configuring-dbcontext"},"EF Core - \u914d\u7f6e DbContext")," \u7ae0\u8282\u3002"))))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/a4688235.d914d561.js b/handbook/build/assets/js/a4688235.d914d561.js deleted file mode 100644 index 3d58c0121c5..00000000000 --- a/handbook/build/assets/js/a4688235.d914d561.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[969],{3905:function(e,n,t){t.d(n,{Zo:function(){return s},kt:function(){return u}});var a=t(7294);function i(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function o(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function r(e){for(var n=1;n=0||(i[t]=e[t]);return i}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(i[t]=e[t])}return i}var l=a.createContext({}),d=function(e){var n=a.useContext(l),t=n;return e&&(t="function"==typeof e?e(n):r(r({},n),e)),t},s=function(e){var n=d(e.components);return a.createElement(l.Provider,{value:n},e.children)},m={inlineCode:"code",wrapper:function(e){var n=e.children;return a.createElement(a.Fragment,{},n)}},c=a.forwardRef((function(e,n){var t=e.components,i=e.mdxType,o=e.originalType,l=e.parentName,s=p(e,["components","mdxType","originalType","parentName"]),c=d(t),u=i,k=c["".concat(l,".").concat(u)]||c[u]||m[u]||o;return t?a.createElement(k,r(r({ref:n},s),{},{components:t})):a.createElement(k,r({ref:n},s))}));function u(e,n){var t=arguments,i=n&&n.mdxType;if("string"==typeof e||i){var o=t.length,r=new Array(o);r[0]=c;var p={};for(var l in n)hasOwnProperty.call(n,l)&&(p[l]=n[l]);p.originalType=e,p.mdxType="string"==typeof e?e:i,r[1]=p;for(var d=2;dAppDbContext",id:"912-appdbcontext",children:[]},{value:"9.1.3 AppDbContext \u548c DbContext \u533a\u522b",id:"913-appdbcontext-\u548c-dbcontext-\u533a\u522b",children:[]},{value:"9.1.4 \u5982\u4f55\u5b9a\u4e49\u6570\u636e\u5e93\u4e0a\u4e0b\u6587",id:"914-\u5982\u4f55\u5b9a\u4e49\u6570\u636e\u5e93\u4e0a\u4e0b\u6587",children:[{value:"9.1.4.1 \u521b\u5efa\u9ed8\u8ba4\u6570\u636e\u5e93\u4e0a\u4e0b\u6587",id:"9141-\u521b\u5efa\u9ed8\u8ba4\u6570\u636e\u5e93\u4e0a\u4e0b\u6587",children:[]},{value:"9.1.4.2 \u521b\u5efa\u5176\u4ed6\u6570\u636e\u5e93\u4e0a\u4e0b\u6587",id:"9142-\u521b\u5efa\u5176\u4ed6\u6570\u636e\u5e93\u4e0a\u4e0b\u6587",children:[]}]},{value:"9.1.5 \u914d\u7f6e\u8fde\u63a5\u5b57\u7b26\u4e32",id:"915-\u914d\u7f6e\u8fde\u63a5\u5b57\u7b26\u4e32",children:[{value:"9.1.5.1 \u5728\u6ce8\u518c\u6570\u636e\u5e93\u670d\u52a1\u65f6\u914d\u7f6e",id:"9151-\u5728\u6ce8\u518c\u6570\u636e\u5e93\u670d\u52a1\u65f6\u914d\u7f6e",children:[]},{value:"9.1.5.2 [AppDbContext] \u65b9\u5f0f\u914d\u7f6e",id:"9152-appdbcontext-\u65b9\u5f0f\u914d\u7f6e",children:[]},{value:"9.1.5.3 OnConfiguring \u65b9\u5f0f\u914d\u7f6e",id:"9153-onconfiguring-\u65b9\u5f0f\u914d\u7f6e",children:[]},{value:"9.1.5.4 \u5404\u7c7b\u6570\u636e\u5e93\u8fde\u63a5\u5b57\u7b26\u4e32\u914d\u7f6e\u793a\u4f8b",id:"9154-\u5404\u7c7b\u6570\u636e\u5e93\u8fde\u63a5\u5b57\u7b26\u4e32\u914d\u7f6e\u793a\u4f8b",children:[]}]},{value:"9.1.6 \u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u5b9a\u4e49\u4f4d\u7f6e",id:"916-\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u5b9a\u4e49\u4f4d\u7f6e",children:[]},{value:"9.1.7 \u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u6ce8\u518c",id:"917-\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u6ce8\u518c",children:[]},{value:"9.1.8 \u81ea\u5b9a\u4e49\u9ad8\u7ea7\u6ce8\u518c",id:"918-\u81ea\u5b9a\u4e49\u9ad8\u7ea7\u6ce8\u518c",children:[]},{value:"9.1.9 \u52a8\u6001\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u5bf9\u8c61",id:"919-\u52a8\u6001\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u5bf9\u8c61",children:[]},{value:"9.1.10 \u5728\u540e\u53f0\u4efb\u52a1\u4e2d\u4f7f\u7528",id:"9110-\u5728\u540e\u53f0\u4efb\u52a1\u4e2d\u4f7f\u7528",children:[]},{value:"9.1.11 AppDbContext \u5168\u5c40\u914d\u7f6e\u5c5e\u6027",id:"9111-appdbcontext-\u5168\u5c40\u914d\u7f6e\u5c5e\u6027",children:[]},{value:"9.1.12 \u914d\u7f6e\u5b9e\u4f53 \u61d2\u52a0\u8f7d",id:"9112-\u914d\u7f6e\u5b9e\u4f53-\u61d2\u52a0\u8f7d",children:[]},{value:"9.1.13 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"9113-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],m={toc:s};function c(e){var n=e.components,t=(0,i.Z)(e,r);return(0,o.kt)("wrapper",(0,a.Z)({},m,t,{components:n,mdxType:"MDXLayout"}),(0,o.kt)("div",{className:"admonition admonition-warning alert alert--danger"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"}))),"\u8fde\u63a5\u5b57\u7b26\u4e32\u914d\u7f6e\u6ce8\u610f\u4e8b\u9879")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u5982\u679c\u8fde\u63a5\u5b57\u7b26\u4e32\u662f\u914d\u7f6e\u5728\u81ea\u5b9a\u4e49\u7684 ",(0,o.kt)("inlineCode",{parentName:"p"},".json")," \u6587\u4ef6\u4e2d\uff0c\u90a3\u4e48\u5fc5\u987b\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"Visual Studio")," \u4e2d\u914d\u7f6e ",(0,o.kt)("inlineCode",{parentName:"p"},".json")," \u53f3\u952e\u5c5e\u6027\uff0c\u8bbe\u7f6e ",(0,o.kt)("inlineCode",{parentName:"p"},"\u590d\u5236")," \u8f93\u51fa\u76ee\u5f55\u4e3a ",(0,o.kt)("inlineCode",{parentName:"p"},"\u5982\u679c\u8f83\u65b0\u5219\u590d\u5236"),"\uff0c\u751f\u6210\u64cd\u4f5c\u4e3a\uff1a",(0,o.kt)("inlineCode",{parentName:"p"},"\u5185\u5bb9"),"\u3002"),(0,o.kt)("p",{parentName:"div"},"\u5426\u5219\u5c31\u4f1a\u63d0\u793a\u627e\u4e0d\u5230\u914d\u7f6e\u6216\u8fde\u63a5\u5b57\u7b26\u4e32\u7684\u9519\u8bef\u3002"))),(0,o.kt)("h2",{id:"911-\u6570\u636e\u5e93\u4e0a\u4e0b\u6587"},"9.1.1 \u6570\u636e\u5e93\u4e0a\u4e0b\u6587"),(0,o.kt)("p",null,"\u7b80\u5355\u6765\u8bf4\uff0c\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u662f\u8d1f\u8d23\u548c\u6570\u636e\u5e93\u4ea4\u4e92\u7684\u5bf9\u8c61\uff0c\u63d0\u4f9b\u7a0b\u5e8f\u5bf9\u6570\u636e\u5e93\u5b58\u53d6\u63d0\u4f9b\u4e86\u5927\u91cf\u7684\u65b9\u6cd5\u3002"),(0,o.kt)("p",null,"\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\uff0c\u9ed8\u8ba4\u96c6\u6210\u4e86\u5fae\u8f6f\u4eb2\u513f\u5b50\uff1a",(0,o.kt)("inlineCode",{parentName:"p"},"EntityFramework Core")," \uff0c\u4e5f\u5c31\u662f\u901a\u5e38\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u6307\u7684\u662f ",(0,o.kt)("inlineCode",{parentName:"p"},"DbContext")," \u7c7b\u6216\u5b83\u7684\u5b9e\u73b0\u7c7b\u3002"),(0,o.kt)("h2",{id:"912-appdbcontext"},"9.1.2 ",(0,o.kt)("inlineCode",{parentName:"h2"},"AppDbContext")),(0,o.kt)("p",null,"\u5728\u6211\u4eec\u5b9e\u9645\u9879\u76ee\u5f00\u53d1\u8fc7\u7a0b\u4e2d\uff0c\u4f7f\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"EFCore")," \u63d0\u4f9b\u7684 ",(0,o.kt)("inlineCode",{parentName:"p"},"DbContext")," \u64cd\u4f5c\u5bf9\u8c61\u64cd\u4f5c\u6570\u636e\u5e93\u6709\u4e9b\u7e41\u7410\u548c\u590d\u6742\uff0c\u4e14\u9ed8\u8ba4\u4e0d\u5177\u5907\u8bfb\u5199\u5206\u79bb\u3001\u591a\u5e93\u7b49\u64cd\u4f5c\u529f\u80fd\u3002"),(0,o.kt)("p",null,"\u6240\u4ee5\uff0c",(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u4e86 ",(0,o.kt)("inlineCode",{parentName:"p"},"AppDbContext")," \u6570\u636e\u5e93\u4e0a\u4e0b\u6587\uff0c\u8be5\u4e0a\u4e0b\u6587\u7ee7\u627f\u81ea ",(0,o.kt)("inlineCode",{parentName:"p"},"DbContext"),"\u3002"),(0,o.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u7279\u522b\u8bf4\u660e")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u540e\u7eed\u7ae0\u8282\uff0c\u7686\u91c7\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"EFCore")," \u4ee3\u66ff ",(0,o.kt)("inlineCode",{parentName:"p"},"EntityFramework Core"),"\u3002"))),(0,o.kt)("h2",{id:"913-appdbcontext-\u548c-dbcontext-\u533a\u522b"},"9.1.3 ",(0,o.kt)("inlineCode",{parentName:"h2"},"AppDbContext")," \u548c ",(0,o.kt)("inlineCode",{parentName:"h2"},"DbContext")," \u533a\u522b"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"AppDbContext")," \u7ee7\u627f\u81ea ",(0,o.kt)("inlineCode",{parentName:"li"},"DbContext"),"\uff0c\u5177\u5907 ",(0,o.kt)("inlineCode",{parentName:"li"},"DbContext")," \u6240\u6709\u529f\u80fd\u3002"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"AppDbContext")," \u652f\u6301\u591a\u6570\u636e\u5e93\u64cd\u4f5c\u6cdb\u578b\u7248\u672c\uff0c\u5982\uff1a",(0,o.kt)("inlineCode",{parentName:"li"},"AppDbContext")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"AppDbContext")," \u81ea\u52a8\u914d\u7f6e\u5b9e\u4f53\u4fe1\u606f\uff0c\u65e0\u9700\u5728 ",(0,o.kt)("inlineCode",{parentName:"li"},"OnModelCreating")," \u4e2d\u914d\u7f6e"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"AppDbContext")," \u652f\u6301\u5185\u7f6e\u591a\u79df\u6237\u652f\u6301"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"AppDbContext")," \u652f\u6301\u5168\u5c40\u6a21\u578b\u914d\u7f6e\u62e6\u622a\u5668"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"AppDbContext")," \u652f\u6301\u6570\u636e\u63d0\u4ea4\u66f4\u6539\u591a\u4e2a\u4e8b\u4ef6"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"AppDbContext")," \u63d0\u4f9b\u66f4\u52a0\u5f3a\u5927\u7684\u6a21\u578b\u64cd\u4f5c\u80fd\u529b\uff0c\u5982 ",(0,o.kt)("inlineCode",{parentName:"li"},"Sql")," \u64cd\u4f5c\uff0c\u8bfb\u5199\u5206\u79bb\u7b49"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"AppDbContext")," \u80fd\u591f\u5f97\u5230 ",(0,o.kt)("inlineCode",{parentName:"li"},"Furion")," \u6846\u67b6\u66f4\u591a\u7684\u529f\u80fd\u652f\u6301")),(0,o.kt)("h2",{id:"914-\u5982\u4f55\u5b9a\u4e49\u6570\u636e\u5e93\u4e0a\u4e0b\u6587"},"9.1.4 \u5982\u4f55\u5b9a\u4e49\u6570\u636e\u5e93\u4e0a\u4e0b\u6587"),(0,o.kt)("p",null,"\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\u4e86\uff0c\u63d0\u4f9b\u4e86\u4e24\u79cd ",(0,o.kt)("inlineCode",{parentName:"p"},"AppDbContext")," \u5b9a\u4e49\u65b9\u5f0f\uff1a"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"AppDbContext")," \u64cd\u4f5c\u9ed8\u8ba4\u6570\u636e\u5e93"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"AppDbContext")," \u64cd\u4f5c N \u4e2a\u6570\u636e\u5e93")),(0,o.kt)("p",null,"\u5176\u4e2d ",(0,o.kt)("inlineCode",{parentName:"p"},"AppDbContext")," \u9ed8\u8ba4\u7ee7\u627f\u81ea ",(0,o.kt)("inlineCode",{parentName:"p"},"AppDbContext"),"\u3002"),(0,o.kt)("p",null,"\u4e0b\u9762\u662f\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u521b\u5efa\u7684\u591a\u4e2a\u4f8b\u5b50\uff1a"),(0,o.kt)("h3",{id:"9141-\u521b\u5efa\u9ed8\u8ba4\u6570\u636e\u5e93\u4e0a\u4e0b\u6587"},"9.1.4.1 \u521b\u5efa\u9ed8\u8ba4\u6570\u636e\u5e93\u4e0a\u4e0b\u6587"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,6,12}","{1,6,12}":!0},'using Furion.DatabaseAccessor;\nusing Microsoft.EntityFrameworkCore;\n\nnamespace Furion.EntityFramework.Core\n{\n [AppDbContext("\u8fde\u63a5\u5b57\u7b26\u4e32\u6216appsetting.json \u952e")]\n public class FurionDbContext : AppDbContext // \u7ee7\u627f AppDbContext<> \u7c7b\n {\n /// \n /// \u7ee7\u627f\u7236\u7c7b\u6784\u9020\u51fd\u6570\n /// \n /// \n public FurionDbContext(DbContextOptions options) : base(options)\n {\n }\n }\n}\n')),(0,o.kt)("h3",{id:"9142-\u521b\u5efa\u5176\u4ed6\u6570\u636e\u5e93\u4e0a\u4e0b\u6587"},"9.1.4.2 \u521b\u5efa\u5176\u4ed6\u6570\u636e\u5e93\u4e0a\u4e0b\u6587"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,6,12}","{1,6,12}":!0},'using Furion.DatabaseAccessor;\nusing Microsoft.EntityFrameworkCore;\n\nnamespace Furion.EntityFramework.Core\n{\n [AppDbContext("\u8fde\u63a5\u5b57\u7b26\u4e32\u6216appsetting.json \u952e")]\n public class FurOtherDbContext : AppDbContext // \u7ee7\u627f AppDbContext<> \u7c7b\n {\n /// \n /// \u7ee7\u627f\u7236\u7c7b\u6784\u9020\u51fd\u6570\n /// \n /// \n public FurOtherDbContext(DbContextOptions options) : base(options)\n {\n }\n }\n}\n')),(0,o.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u6ce8\u610f")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u6240\u6709\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u90fd\u5e94\u8be5\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"Furion.EntityFramework.Core")," \u9879\u76ee\u4e2d\u521b\u5efa\u3002\u53e6\u5916\u5982\u679c\u7cfb\u7edf\u7528\u5230\u4e86\u591a\u4e2a\u6570\u636e\u5e93\uff0c\u90a3\u4e48\u4ece\u7b2c\u4e8c\u4e2a\u5f00\u59cb\u5fc5\u987b\u6307\u5b9a\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u5b9a\u4f4d\u5668\u3002\u5173\u4e8e ",(0,o.kt)("inlineCode",{parentName:"p"},"TDbContextLocator")," \u5c06\u5728\u4e0b\u4e00\u7ae0\u8282 \u300a",(0,o.kt)("a",{parentName:"p",href:"dbcontext-locator"},"9.2 \u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u5b9a\u4f4d\u5668"),"\u300b\u9610\u8ff0\u3002"))),(0,o.kt)("h2",{id:"915-\u914d\u7f6e\u8fde\u63a5\u5b57\u7b26\u4e32"},"9.1.5 \u914d\u7f6e\u8fde\u63a5\u5b57\u7b26\u4e32"),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u591a\u79cd\u6570\u636e\u5e93\u8fde\u63a5\u5b57\u7b26\u4e32\u914d\u7f6e\u65b9\u5f0f\uff1a"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"\u5728\u6ce8\u518c\u6570\u636e\u5e93\u670d\u52a1\u65f6\u914d\u7f6e\uff1a",(0,o.kt)("inlineCode",{parentName:"li"},'AddDbPool("\u8fde\u63a5\u5b57\u7b26\u4e32")')," \u65b9\u5f0f"),(0,o.kt)("li",{parentName:"ul"},"\u4f7f\u7528 ",(0,o.kt)("inlineCode",{parentName:"li"},'[AppDbContext("\u8fde\u63a5\u5b57\u7b26\u4e32/Key")]')," \u7279\u6027\u65b9\u5f0f\uff08\u53ea\u5728 ",(0,o.kt)("inlineCode",{parentName:"li"},"AppDbContext \u5b9e\u73b0\u7c7b\u6709\u6548"),"\uff09",(0,o.kt)("strong",{parentName:"li"},"\u63a8\u8350")),(0,o.kt)("li",{parentName:"ul"},"\u901a\u8fc7\u91cd\u5199 ",(0,o.kt)("inlineCode",{parentName:"li"},"OnConfiguring(DbContextOptionsBuilder optionsBuilder)")," \u914d\u7f6e")),(0,o.kt)("h3",{id:"9151-\u5728\u6ce8\u518c\u6570\u636e\u5e93\u670d\u52a1\u65f6\u914d\u7f6e"},"9.1.5.1 \u5728\u6ce8\u518c\u6570\u636e\u5e93\u670d\u52a1\u65f6\u914d\u7f6e"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:'{12-19} title="Furion.EntityFramework.Core\\Startup.cs"',"{12-19}":!0,title:'"Furion.EntityFramework.Core\\Startup.cs"'},'using Furion.DependencyInjection;\nusing Microsoft.Extensions.DependencyInjection;\n\nnamespace Furion.EntityFramework.Core\n{\n [AppStartup(600)]\n public sealed class FurEntityFrameworkCoreStartup : AppStartup\n {\n public void ConfigureServices(IServiceCollection services)\n {\n // \u914d\u7f6e\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\uff0c\u652f\u6301N\u4e2a\u6570\u636e\u5e93\n services.AddDatabaseAccessor(options =>\n {\n // \u914d\u7f6e\u9ed8\u8ba4\u6570\u636e\u5e93\n options.AddDbPool(DbProvider.SqlServer, connectionMetadata:"\u8fde\u63a5\u5b57\u7b26\u4e32");\n\n // \u914d\u7f6e\u591a\u4e2a\u6570\u636e\u5e93\uff0c\u591a\u4e2a\u6570\u636e\u5e93\u5fc5\u987b\u6307\u5b9a\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u5b9a\u4f4d\u5668\n options.AddDbPool(DbProvider.Sqlite, connectionMetadata:"\u8fde\u63a5\u5b57\u7b26\u4e32");\n });\n }\n }\n}\n')),(0,o.kt)("div",{className:"admonition admonition-caution alert alert--warning"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 16 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"}))),"\u65b0\u7248 MySQL \u6ce8\u610f")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},(0,o.kt)("inlineCode",{parentName:"p"},"MySQL")," \u5728\u65b0\u7248\u672c\u5305\u4e2d\u6ce8\u518c\u6709\u6240\u4fee\u6539\uff0c\u6240\u4ee5\u6ce8\u518c\u65b9\u5f0f\u4e3a\uff1a"),(0,o.kt)("pre",{parentName:"div"},(0,o.kt)("code",{parentName:"pre",className:"language-cs"},'services.AddDatabaseAccessor(options =>\n{\n options.AddDbPool($"{DbProvider.MySql}@8.0.22");\n});\n')))),(0,o.kt)("h3",{id:"9152-appdbcontext-\u65b9\u5f0f\u914d\u7f6e"},"9.1.5.2 ",(0,o.kt)("inlineCode",{parentName:"h3"},"[AppDbContext]")," \u65b9\u5f0f\u914d\u7f6e"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,6}","{1,6}":!0},'using Furion.DatabaseAccessor;\nusing Microsoft.EntityFrameworkCore;\n\nnamespace Furion.EntityFramework.Core\n{\n [AppDbContext("DbConnectionString")] // \u652f\u6301 `appsetting.json` \u540d\u6216 \u8fde\u63a5\u5b57\u7b26\u4e32\n public class FurionDbContext : AppDbContext\n {\n /// \n /// \u7ee7\u627f\u7236\u7c7b\u6784\u9020\u51fd\u6570\n /// \n /// \n public FurionDbContext(DbContextOptions options) : base(options)\n {\n }\n }\n}\n')),(0,o.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u5c0f\u63d0\u793a")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u63a8\u8350\u4f7f\u7528\u6b64\u65b9\u5f0f\u914d\u7f6e\u6570\u636e\u5e93\u8fde\u63a5\u5b57\u7b26\u4e32\u3002"))),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},(0,o.kt)("inlineCode",{parentName:"strong"},"[AppDbContext]"))," \u5185\u7f6e\u5c5e\u6027\uff1a"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"ConnectionMetadata"),"\uff1a\u652f\u6301\u6570\u636e\u5e93\u8fde\u63a5\u5b57\u7b26\u4e32\uff0c\u914d\u7f6e\u6587\u4ef6\u7684 ",(0,o.kt)("inlineCode",{parentName:"li"},"ConnectionStrings")," \u4e2d\u7684 ",(0,o.kt)("inlineCode",{parentName:"li"},"Key")," \u6216\u914d\u7f6e\u6587\u4ef6\u7684\u5b8c\u6574\u7684\u914d\u7f6e\u8def\u5f84\uff0c\u5982\u679c\u662f\u5185\u5b58\u6570\u636e\u5e93\uff0c\u5219\u4e3a\u6570\u636e\u5e93\u540d\u79f0\u3002"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"TablePrefix"),"\uff1a\u5f53\u524d\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u8868\u7edf\u4e00\u524d\u7f00"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"TableSuffix"),"\uff1a\u5f53\u524d\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u8868\u7edf\u4e00\u540e\u7f00"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"ProviderName"),"\uff1a\u914d\u7f6e\u6570\u636e\u5e93\u63d0\u4f9b\u5668\u7c7b\u578b\uff0c\u4f20\u5165 ",(0,o.kt)("inlineCode",{parentName:"li"},"DbProvider.Xxx")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"Mode"),"\uff1a\u914d\u7f6e\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u6a21\u5f0f\uff0c",(0,o.kt)("inlineCode",{parentName:"li"},"DbContextMode")," \u679a\u4e3e\u7c7b\u578b\uff0c\u53d6\u503c\uff1a",(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"Cached"),"\uff1a\u7f13\u5b58\u6a21\u578b\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\uff0c\u9ed8\u8ba4\u503c"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"Dynamic"),"\uff1a\u52a8\u6001\u6a21\u578b\u6570\u636e\u5e93\u4e0a\u4e0b\u6587"))),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"SlaveDbContextLocators"),"\uff1a\u4e3b\u4ece\u5e93\u914d\u7f6e\uff0c\u8bbe\u7f6e\u591a\u4e2a\u4ece\u5e93\u5b9a\u4f4d\u5668\uff0c",(0,o.kt)("inlineCode",{parentName:"li"},"Type[]")," \u7c7b\u578b")),(0,o.kt)("h3",{id:"9153-onconfiguring-\u65b9\u5f0f\u914d\u7f6e"},"9.1.5.3 ",(0,o.kt)("inlineCode",{parentName:"h3"},"OnConfiguring")," \u65b9\u5f0f\u914d\u7f6e"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{16-20}","{16-20}":!0},'using Furion.DatabaseAccessor;\nusing Microsoft.EntityFrameworkCore;\n\nnamespace Furion.EntityFramework.Core\n{\n public class FurionDbContext : AppDbContext\n {\n /// \n /// \u7ee7\u627f\u7236\u7c7b\u6784\u9020\u51fd\u6570\n /// \n /// \n public FurionDbContext(DbContextOptions options) : base(options)\n {\n }\n\n protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)\n {\n base.OnConfiguring(optionsBuilder);\n\n optionsBuilder.UseSqlServer("\u6570\u636e\u5e93\u8fde\u63a5\u5b57\u7b26\u4e32");\n }\n }\n}\n')),(0,o.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u6ce8\u610f")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u8fd9\u4e09\u79cd\u65b9\u5f0f\u53ef\u4ee5\u540c\u65f6\u4f7f\u7528\uff0c\u4f46\u662f\u6709\u4f18\u5148\u7ea7\uff1a",(0,o.kt)("inlineCode",{parentName:"p"},"[AppDbContext]")," -> ",(0,o.kt)("inlineCode",{parentName:"p"},"\u5728\u6ce8\u518c\u6570\u636e\u5e93\u670d\u52a1\u65f6\u914d\u7f6e")," -> ",(0,o.kt)("inlineCode",{parentName:"p"},"OnConfiguring"),"\uff08\u4f4e\u5230\u9ad8\uff09"),(0,o.kt)("p",{parentName:"div"},"\u4e5f\u5c31\u662f ",(0,o.kt)("inlineCode",{parentName:"p"},"OnConfiguring")," \u914d\u7f6e\u4f1a\u8986\u76d6 ",(0,o.kt)("inlineCode",{parentName:"p"},"\u5728\u6ce8\u518c\u6570\u636e\u5e93\u670d\u52a1\u65f6\u914d\u7f6e")," \u914d\u7f6e\uff0c",(0,o.kt)("inlineCode",{parentName:"p"},"\u5728\u6ce8\u518c\u6570\u636e\u5e93\u670d\u52a1\u65f6\u914d\u7f6e")," \u914d\u7f6e\u4f1a\u8986\u76d6 ",(0,o.kt)("inlineCode",{parentName:"p"},"[AppDbContext]")," \u914d\u7f6e\u6240\u914d\u7f6e\u7684\u8fde\u63a5\u5b57\u7b26\u4e32\u3002"))),(0,o.kt)("h3",{id:"9154-\u5404\u7c7b\u6570\u636e\u5e93\u8fde\u63a5\u5b57\u7b26\u4e32\u914d\u7f6e\u793a\u4f8b"},"9.1.5.4 \u5404\u7c7b\u6570\u636e\u5e93\u8fde\u63a5\u5b57\u7b26\u4e32\u914d\u7f6e\u793a\u4f8b"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"Sqlite"),"\uff1a",(0,o.kt)("inlineCode",{parentName:"li"},"Data Source=./Furion.db")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"MySql"),"\uff1a",(0,o.kt)("inlineCode",{parentName:"li"},"Data Source=localhost;Database=Furion;User ID=root;Password=000000;pooling=true;port=3306;sslmode=none;CharSet=utf8;")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"SqlServer"),"\uff1a",(0,o.kt)("inlineCode",{parentName:"li"},"Server=localhost;Database=Furion;User=sa;Password=000000;MultipleActiveResultSets=True;")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"Oracle"),"\uff1a",(0,o.kt)("inlineCode",{parentName:"li"},"User Id=orcl;Password=orcl;Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=orcl)))")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"PostgreSQL"),"\uff1a",(0,o.kt)("inlineCode",{parentName:"li"},"PORT=5432;DATABASE=postgres;HOST=127.0.0.1;PASSWORD=postgres;USER ID=postgres;"))),(0,o.kt)("h2",{id:"916-\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u5b9a\u4e49\u4f4d\u7f6e"},"9.1.6 \u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u5b9a\u4e49\u4f4d\u7f6e"),(0,o.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u6ce8\u610f")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\uff0c\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u9700\u5b9a\u4e49\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"Furion.EntityFramework.Core")," \u4e2d\uff0c\u4e14\u6bcf\u4e00\u4e2a\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u90fd\u5fc5\u987b\u62e5\u6709\u552f\u4e00\u7684 ",(0,o.kt)("inlineCode",{parentName:"p"},"DbContextLocator")," \u5b9a\u4f4d\u5668"))),(0,o.kt)("h2",{id:"917-\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u6ce8\u518c"},"9.1.7 \u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u6ce8\u518c"),(0,o.kt)("p",null,"\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u914d\u7f6e\u597d\u6570\u636e\u5e93\u8fde\u63a5\u5b57\u7b26\u4e32\u540e\uff0c\u9700\u8981\u6ce8\u518c\u8be5\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\uff0c\u5e76\u6307\u5b9a\u6570\u636e\u5e93\u7c7b\u578b\uff0c\u5982\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:'{11-13} title="Furion\\framework\\Furion.EntityFramework.Core\\FurEntityFrameworkCoreStartup.cs"',"{11-13}":!0,title:'"Furion\\framework\\Furion.EntityFramework.Core\\FurEntityFrameworkCoreStartup.cs"'},"using Furion.DatabaseAccessor;\nusing Microsoft.Extensions.DependencyInjection;\n\nnamespace Furion.EntityFramework.Core\n{\n [AppStartup(600)]\n public sealed class FurEntityFrameworkCoreStartup : AppStartup\n {\n public void ConfigureServices(IServiceCollection services)\n {\n services.AddDatabaseAccessor(options =>\n {\n options.AddDbPool(DbProvider.Sqlite);\n });\n }\n }\n}\n")),(0,o.kt)("p",null,"\u5982\u679c\u6709\u591a\u4e2a\u6570\u636e\u5e93\u64cd\u4f5c\uff0c",(0,o.kt)("strong",{parentName:"p"},"\u90a3\u4e48\u4ece\u7b2c\u4e8c\u4e2a\u8d77\uff0c\u5c31\u9700\u8981\u7ed1\u5b9a\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u5b9a\u4f4d\u5668"),"\uff0c\u5982\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},"options.AddDbPool(DbProvider.Sqlite); // \u7b2c\u4e00\u4e2a\u6570\u636e\u5e93\n\noptions.AddDbPool(DbProvider.SqlServer); // \u7b2c\u4e8c\u4e2a\u6570\u636e\u5e93\n\noptions.AddDbPool(DbProvider.SqlServer); // \u7b2c\u4e09\u4e2a\u6570\u636e\u5e93\n")),(0,o.kt)("h2",{id:"918-\u81ea\u5b9a\u4e49\u9ad8\u7ea7\u6ce8\u518c"},"9.1.8 \u81ea\u5b9a\u4e49\u9ad8\u7ea7\u6ce8\u518c"),(0,o.kt)("p",null,"\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\uff0c\u4e3a\u4e86\u80fd\u591f\u5b9e\u73b0\u6570\u636e\u5e93\u7684\u7b80\u5355\u4f7f\u7528\u8fdb\u884c\u4e86\u6ce8\u518c\u5c01\u88c5\uff0c\u4f46\u6709\u4e9b\u65f6\u5019\uff0c\u6211\u4eec\u53ef\u80fd\u9700\u8981\u6dfb\u52a0\u66f4\u591a\u914d\u7f6e\uff0c\u8fd9\u65f6\u5c31\u9700\u8981\u4f7f\u7528\u539f\u751f\u81ea\u5b9a\u4e49\u914d\u7f6e\u65b9\u5f0f\uff0c\u5982\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},'// \u6ce8\u518c\u4f60\u7684\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u548c\u5b9a\u4f4d\u5668\u7ed1\u5b9a\nservices.AddDatabaseAccessor(options =>\n{\n // \u6ce8\u518c\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u548c\u5b9a\u4f4d\u5668\n options.RegisterDbContext();\n\n // \u83b7\u53d6\u8fde\u63a5\u5b57\u7b26\u4e32\n var connStr = DbProvider.GetConnectionString(/*\u8fd9\u91cc\u53ef\u5199\u53ef\u4e0d\u5199*/);\n\n // \u4f7f\u7528\u539f\u751f\u6ce8\u518c\n options.AddDbContextPool(builder =>\n {\n // \u6ce8\u518c\u7279\u5b9a\u6570\u636e\u5e93\n builder.UseSqlite(connStr, dbContextOptions =>\n {\n // \u914d\u7f6e\u8fc1\u79fb\u7a0b\u5e8f\u96c6\n dbContextOptions.MigrationsAssembly("\u8fc1\u79fb\u7a0b\u5e8f\u96c6");\n }).EnableDetailedErrors() // \u542f\u52a8\u8be6\u7ec6\u9519\u8bef\n .EnableSensitiveDataLogging() // \u66ff\u6362\u53c2\u6570\u4e3a\u5177\u4f53\u53c2\u6570\u503c\n .AddInterceptors(DbProvider.GetDefaultInterceptors()); // \u6dfb\u52a0\u9ed8\u8ba4\u8fc7\u6ee4\u5668\n }, 100); // \u914d\u7f6e\u6570\u636e\u5e93\u8fde\u63a5\u6c60\n});\n\n')),(0,o.kt)("h2",{id:"919-\u52a8\u6001\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u5bf9\u8c61"},"9.1.9 \u52a8\u6001\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u5bf9\u8c61"),(0,o.kt)("p",null,"\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\uff0c\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u662f\u5b9a\u4e49\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"Furion.EntityFramework.Core")," \u9879\u76ee\u5c42\uff0c\u5e76\u4e14\u8be5\u5c42\u4e0d\u88ab ",(0,o.kt)("inlineCode",{parentName:"p"},"Furion.Application")," \u548c ",(0,o.kt)("inlineCode",{parentName:"p"},"Furion.Core")," \u7b49\u5c42\u5f15\u7528\u3002"),(0,o.kt)("p",null,"\u6240\u4ee5\u5c31\u4e0d\u80fd\u76f4\u63a5\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"Furion.Application")," \u9879\u76ee\u5c42\u76f4\u63a5\u4f7f\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"Furion.EntityFramework.Core")," \u5b9a\u4e49\u7684\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u3002"),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u4e3a\u4e86\u89e3\u51b3\u8fd9\u4e2a\u95ee\u9898\uff0c\u63d0\u4f9b\u4e86\u4e24\u79cd\u65b9\u5f0f\u5904\u7406\uff1a"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"repository.Context")," \uff1a\u5f53\u524d\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u5bf9\u8c61\uff0c\u8fd4\u56de\u662f ",(0,o.kt)("inlineCode",{parentName:"li"},"DbContext")," \u62bd\u8c61\u7c7b\u578b"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"repository.DynamicContext"),"\uff1a\u5f53\u524d\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u5bf9\u8c61\uff0c\u8fd4\u56de\u7684\u662f ",(0,o.kt)("inlineCode",{parentName:"li"},"dynamic")," \u7c7b\u578b")),(0,o.kt)("p",null,"\u5982\u679c\u4f60\u53ea\u662f\u60f3\u4f7f\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"DbContext")," \u7684\u529f\u80fd\uff0c\u76f4\u63a5\u4f7f\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"repository.Context")," \u5373\u53ef\uff0c\u5982\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},"repository.Context.SaveChanges();\n")),(0,o.kt)("p",null,"\u5982\u679c\u4f60\u60f3\u80fd\u591f\u83b7\u53d6\u5177\u4f53\u7684\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u7c7b\u578b\uff0c\u5982 ",(0,o.kt)("inlineCode",{parentName:"p"},"MyDbContext"),"\uff0c\u90a3\u4e48\u4f7f\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"repository.DynamicContext")," \u5c31\u53ef\u4ee5\u83b7\u53d6\u5230\u5177\u4f53\u7684 ",(0,o.kt)("inlineCode",{parentName:"p"},"MyDbContext")," \u7c7b\u578b\u3002\u5982\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},"var persons = repository.DynamicContext.Persons.Find(1);\nvar users = repository.DynamicContext.Users;\n")),(0,o.kt)("p",null,"\u8fd9\u6837\u5c31\u53ef\u4ee5\u76f4\u63a5\u64cd\u4f5c ",(0,o.kt)("inlineCode",{parentName:"p"},"MyDbContext")," \u5b9a\u4e49\u7684\u5c5e\u6027\u548c\u65b9\u6cd5\u4e86\u3002"),(0,o.kt)("h2",{id:"9110-\u5728\u540e\u53f0\u4efb\u52a1\u4e2d\u4f7f\u7528"},"9.1.10 \u5728\u540e\u53f0\u4efb\u52a1\u4e2d\u4f7f\u7528"),(0,o.kt)("p",null,"\u7531\u4e8e ",(0,o.kt)("inlineCode",{parentName:"p"},"DbContext")," \u9ed8\u8ba4\u6ce8\u518c\u4e3a ",(0,o.kt)("inlineCode",{parentName:"p"},"Scoped")," \u751f\u5b58\u5468\u671f\uff0c\u6240\u4ee5\u5728\u540e\u53f0\u4efb\u52a1\u4e2d\u4f7f\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"IServiceScopeFactory")," \u83b7\u53d6\u6240\u6709\u670d\u52a1\uff0c\u5982\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},'public class JobService : BackgroundService\n{\n // \u65e5\u5fd7\u5bf9\u8c61\n private readonly ILogger _logger;\n\n // \u670d\u52a1\u5de5\u5382\n private readonly IServiceScopeFactory _scopeFactory;\n public JobService(ILogger logger\n , IServiceScopeFactory scopeFactory)\n {\n _logger = logger;\n _scopeFactory = scopeFactory;\n }\n\n protected override Task ExecuteAsync(CancellationToken stoppingToken)\n {\n _logger.LogInformation("\u5199\u65e5\u5fd7~~");\n\n using (var scope = _scopeFactory.CreateScope())\n {\n var services = scope.ServiceProvider;\n\n // \u83b7\u53d6\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\n var dbContext = Db.GetDbContext(services);\n\n // \u83b7\u53d6\u4ed3\u50a8\n var repository = Db.GetRepository(services);\n\n // \u89e3\u6790\u5176\u4ed6\u670d\u52a1\n var otherService = services.GetService();\n }\n\n return Task.CompletedTask;\n }\n}\n')),(0,o.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u6570\u636e\u5e93\u64cd\u4f5c\u6ce8\u610f")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u5982\u679c\u4f5c\u7528\u57df\u4e2d\u5bf9",(0,o.kt)("strong",{parentName:"p"},"\u6570\u636e\u5e93\u6709\u4efb\u4f55\u53d8\u66f4\u64cd\u4f5c"),"\uff0c\u9700\u624b\u52a8\u8c03\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"SaveChanges")," \u6216\u5e26 ",(0,o.kt)("inlineCode",{parentName:"p"},"Now")," \u7ed3\u5c3e\u7684\u65b9\u6cd5\u3002\u4e5f\u53ef\u4ee5\u4f7f\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"Scoped.CreateUow(handler)")," \u4ee3\u66ff\u3002"))),(0,o.kt)("h2",{id:"9111-appdbcontext-\u5168\u5c40\u914d\u7f6e\u5c5e\u6027"},"9.1.11 ",(0,o.kt)("inlineCode",{parentName:"h2"},"AppDbContext")," \u5168\u5c40\u914d\u7f6e\u5c5e\u6027"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"InsertOrUpdateIgnoreNullValues"),"\uff1a\u65b0\u589e\u6216\u66f4\u65b0\u5ffd\u7565\u7a7a\u503c\uff0c\u9ed8\u8ba4 ",(0,o.kt)("inlineCode",{parentName:"li"},"false"),"\uff0c",(0,o.kt)("strong",{parentName:"li"},"\u5728\u6784\u9020\u51fd\u6570\u4e2d\u914d\u7f6e")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"EnabledEntityStateTracked"),"\uff1a\u542f\u7528\u5b9e\u4f53\u8ddf\u8e2a\uff0c\u9ed8\u8ba4 ",(0,o.kt)("inlineCode",{parentName:"li"},"true"),"\uff0c",(0,o.kt)("strong",{parentName:"li"},"\u5728\u6784\u9020\u51fd\u6570\u4e2d\u914d\u7f6e")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"EnabledEntityChangedListener"),"\uff1a\u542f\u7528\u5b9e\u4f53\u6570\u636e\u66f4\u6539\u76d1\u542c\uff0c\u9ed8\u8ba4 ",(0,o.kt)("inlineCode",{parentName:"li"},"false"),"\uff0c",(0,o.kt)("strong",{parentName:"li"},"\u5728\u6784\u9020\u51fd\u6570\u4e2d\u914d\u7f6e")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"Tenant"),"\uff1a\u9ed8\u8ba4\u5185\u7f6e\u591a\u79df\u6237"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"FailedAutoRollback"),"\uff1a\u662f\u5426\u542f\u7528\u4fdd\u5b58\u5931\u8d25\u540e\u4e8b\u52a1\u81ea\u52a8\u56de\u6eda\uff0c\u9ed8\u8ba4 ",(0,o.kt)("inlineCode",{parentName:"li"},"true"),"\uff0c\u53ef\u4ee5\u5728\u4efb\u4f55\u5730\u65b9\u914d\u7f6e")),(0,o.kt)("h2",{id:"9112-\u914d\u7f6e\u5b9e\u4f53-\u61d2\u52a0\u8f7d"},"9.1.12 \u914d\u7f6e\u5b9e\u4f53 ",(0,o.kt)("inlineCode",{parentName:"h2"},"\u61d2\u52a0\u8f7d")),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"\u7b2c\u4e00\u6b65\uff1a\u5b89\u88c5 ",(0,o.kt)("inlineCode",{parentName:"li"},"EFCore")," \u62d3\u5c55\u5305")),(0,o.kt)("p",null,"\u5728\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u5b9a\u4e49\u6240\u5728\u7684\u5c42\u5b89\u88c5 ",(0,o.kt)("inlineCode",{parentName:"p"},"Microsoft.EntityFrameworkCore.Proxies")," \u62d3\u5c55\u5305"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"\u7b2c\u4e8c\u6b65\uff1a\u91c7\u7528 ",(0,o.kt)("inlineCode",{parentName:"li"},"AddDb")," \u65b9\u5f0f\u6ce8\u518c")),(0,o.kt)("p",null,"\u786e\u4fdd\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u91c7\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"AddDb")," \u6ce8\u518c\u800c\u975e ",(0,o.kt)("inlineCode",{parentName:"p"},"AddDbPool"),"\u3002"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"\u7b2c\u4e09\u6b65\uff1a\u91cd\u5199 ",(0,o.kt)("inlineCode",{parentName:"li"},"OnConfiguring")," \u65b9\u6cd5")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{13,15}","{13,15}":!0},'using Furion.DatabaseAccessor;\nusing Microsoft.EntityFrameworkCore;\n\nnamespace Furion.EntityFramework.Core\n{\n [AppDbContext("Sqlite3ConnectionString", DbProvider.Sqlite)]\n public class DefaultDbContext : AppDbContext\n {\n public DefaultDbContext(DbContextOptions options) : base(options)\n {\n }\n\n protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)\n {\n optionsBuilder.UseLazyLoadingProxies()\n .UseSqlite(DbProvider.GetConnectionString());\n\n base.OnConfiguring(optionsBuilder);\n }\n }\n}\n')),(0,o.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u5c0f\u77e5\u8bc6")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u66f4\u591a ",(0,o.kt)("inlineCode",{parentName:"p"},"EFCore")," \u61d2\u52a0\u8f7d\u53ef\u67e5\u770b ",(0,o.kt)("strong",{parentName:"p"},(0,o.kt)("a",{parentName:"strong",href:"https://docs.microsoft.com/zh-cn/ef/core/querying/related-data/lazy"},"\u3010EFCore - \u5ef6\u8fdf\u52a0\u8f7d\u3011"))," \u6587\u6863\u3002"))),(0,o.kt)("h2",{id:"9113-\u53cd\u9988\u4e0e\u5efa\u8bae"},"9.1.13 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,o.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,o.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))),(0,o.kt)("hr",null),(0,o.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e86\u89e3\u66f4\u591a")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u60f3\u4e86\u89e3\u66f4\u591a ",(0,o.kt)("inlineCode",{parentName:"p"},"\u6570\u636e\u5e93\u4e0a\u4e0b\u6587")," \u77e5\u8bc6\u53ef\u67e5\u9605 ",(0,o.kt)("a",{parentName:"p",href:"https://docs.microsoft.com/zh-cn/ef/core/miscellaneous/configuring-dbcontext"},"EF Core - \u914d\u7f6e DbContext")," \u7ae0\u8282\u3002"))))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/a4c09e9b.507ee5c0.js b/handbook/build/assets/js/a4c09e9b.507ee5c0.js deleted file mode 100644 index 1909133e63f..00000000000 --- a/handbook/build/assets/js/a4c09e9b.507ee5c0.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[8854],{3905:function(t,e,n){n.d(e,{Zo:function(){return d},kt:function(){return u}});var a=n(7294);function o(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function r(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,a)}return n}function i(t){for(var e=1;e=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}var p=a.createContext({}),c=function(t){var e=a.useContext(p),n=e;return t&&(n="function"==typeof t?t(e):i(i({},e),t)),n},d=function(t){var e=c(t.components);return a.createElement(p.Provider,{value:e},t.children)},m={inlineCode:"code",wrapper:function(t){var e=t.children;return a.createElement(a.Fragment,{},e)}},s=a.forwardRef((function(t,e){var n=t.components,o=t.mdxType,r=t.originalType,p=t.parentName,d=l(t,["components","mdxType","originalType","parentName"]),s=c(n),u=o,k=s["".concat(p,".").concat(u)]||s[u]||m[u]||r;return n?a.createElement(k,i(i({ref:e},d),{},{components:n})):a.createElement(k,i({ref:e},d))}));function u(t,e){var n=arguments,o=e&&e.mdxType;if("string"==typeof t||o){var r=n.length,i=new Array(r);i[0]=s;var l={};for(var p in e)hasOwnProperty.call(e,p)&&(l[p]=e[p]);l.originalType=t,l.mdxType="string"==typeof t?t:o,i[1]=l;for(var c=2;c")," \u5373\u53ef\u3002"),(0,r.kt)("p",null,"\u5982\uff1a\u53ea\u6709\u4e00\u4e2a\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u5b9a\u4e49\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'using Furion.DatabaseAccessor;\nusing Microsoft.EntityFrameworkCore;\n\nnamespace Furion.EntityFramework.Core\n{\n [AppDbContext("Sqlite3ConnectionString", DbProvider.Sqlite)]\n public class DefaultDbContext : AppDbContext // \u65e0\u9700\u6307\u5b9a\u5b9a\u4f4d\u5668\n {\n public DefaultDbContext(DbContextOptions options) : base(options)\n {\n }\n }\n}\n')),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u5173\u4e8e\u591a\u6570\u636e\u5e93\u5b9a\u4f4d\u5668")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u9ed8\u8ba4\u6570\u636e\u5e93\u7684\u5b9a\u4f4d\u5668\u9ed8\u8ba4\u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"MasterDbContextLocator"),"\uff0c\u6240\u4ee5\u65e0\u9700\u663e\u793a\u6307\u5b9a\u5b9a\u4f4d\u5668\uff0c",(0,r.kt)("strong",{parentName:"p"},"\u4f46\u4ece\u7b2c\u4e8c\u4e2a\u6570\u636e\u5e93\u5f00\u59cb\uff0c\u90fd\u5fc5\u987b\u6307\u5b9a\u6570\u636e\u5e93\u5b9a\u4f4d\u5668"),"\u3002\u5982\uff1a"),(0,r.kt)("ul",{parentName:"div"},(0,r.kt)("li",{parentName:"ul"},"\u6ce8\u518c\u4e0a\u4e0b\u6587\uff1a")),(0,r.kt)("pre",{parentName:"div"},(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"options.AddDbPool();\n")),(0,r.kt)("ul",{parentName:"div"},(0,r.kt)("li",{parentName:"ul"},"\u5b9a\u4e49\u4e0a\u4e0b\u6587")),(0,r.kt)("pre",{parentName:"div"},(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'using Furion.DatabaseAccessor;\nusing Microsoft.EntityFrameworkCore;\n\nnamespace Furion.EntityFramework.Core\n{\n [AppDbContext("Sqlite3ConnectionString", DbProvider.Sqlite)]\n public class OtherDbContext : AppDbContext // \u9700\u6307\u5b9a\u5b9a\u4f4d\u5668\n {\n public OtherDbContext(DbContextOptions options) : base(options)\n {\n }\n }\n}\n')),(0,r.kt)("p",{parentName:"div"},"\u53e6\u5916\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"Entity/IEntity")," \u548c ",(0,r.kt)("inlineCode",{parentName:"p"},"IRepository")," \u7b49\u90fd\u9700\u8981\u6307\u5b9a\u5b9a\u4f4d\u5668\uff0c\u5982\uff1a",(0,r.kt)("inlineCode",{parentName:"p"},"IEntity"),"\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"IRepository")," \u64cd\u4f5c\u3002"))),(0,r.kt)("h2",{id:"925-\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u5b9a\u4f4d\u5668\u652f\u6301\u5bf9\u8c61"},"9.2.5 \u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u5b9a\u4f4d\u5668\u652f\u6301\u5bf9\u8c61"),(0,r.kt)("p",null,"\u76ee\u524d\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u652f\u6301\u4ee5\u4e0b\u591a\u4e2a\u5bf9\u8c61\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"AppDbContext"),"\uff1a\u6570\u636e\u4e0a\u4e0b\u6587"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"IRepository"),"\uff1a\u5b9e\u4f53\u4ed3\u50a8"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"ISqlRepository"),": Sql \u64cd\u4f5c\u4ed3\u50a8"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"IDbRepository"),": \u7279\u5b9a\u6570\u636e\u5e93\u64cd\u4f5c\u4ed3\u50a8"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"IMSRepository"),": \u8bfb\u5199\u5206\u79bb\u4ed3\u50a8"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Func"),"\uff1a\u4f9d\u8d56\u6ce8\u5165\u83b7\u53d6\u6570\u636e\u5e93\u4e0a\u4e0b\u6587"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Entity")," \uff1a\u5b9e\u4f53\u914d\u7f6e"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"EntityBase"),"\uff1a\u5b9e\u4f53\u914d\u7f6e"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"EntityNotKey"),"\uff1a\u65e0\u952e\u5b9e\u4f53\u914d\u7f6e"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"IEntity"),"\uff1a\u9ed8\u8ba4\u5b9e\u4f53\u914d\u7f6e"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"IEntitySeedData"),"\uff1a\u79cd\u5b50\u6570\u636e\u914d\u7f6e"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"IEntityTypeBuilder"),"\uff1a\u5b9e\u4f53\u7c7b\u578b\u6784\u5efa\u5668"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"IModelBuilderFilter"),"\uff1a\u6a21\u578b\u6784\u5efa\u7b5b\u9009\u5668"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"[QueryableFunction(DbContextLocators=Type[])]"),"\uff1a\u67e5\u8be2\u51fd\u6570")),(0,r.kt)("h2",{id:"926-\u53cd\u9988\u4e0e\u5efa\u8bae"},"9.2.6 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,r.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/a4c09e9b.c8b2ebdb.js b/handbook/build/assets/js/a4c09e9b.c8b2ebdb.js new file mode 100644 index 00000000000..ae3c0f9d3b2 --- /dev/null +++ b/handbook/build/assets/js/a4c09e9b.c8b2ebdb.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[8854],{3905:function(t,e,n){n.d(e,{Zo:function(){return d},kt:function(){return u}});var a=n(7294);function o(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function r(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,a)}return n}function i(t){for(var e=1;e=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}var p=a.createContext({}),c=function(t){var e=a.useContext(p),n=e;return t&&(n="function"==typeof t?t(e):i(i({},e),t)),n},d=function(t){var e=c(t.components);return a.createElement(p.Provider,{value:e},t.children)},m={inlineCode:"code",wrapper:function(t){var e=t.children;return a.createElement(a.Fragment,{},e)}},s=a.forwardRef((function(t,e){var n=t.components,o=t.mdxType,r=t.originalType,p=t.parentName,d=l(t,["components","mdxType","originalType","parentName"]),s=c(n),u=o,k=s["".concat(p,".").concat(u)]||s[u]||m[u]||r;return n?a.createElement(k,i(i({ref:e},d),{},{components:n})):a.createElement(k,i({ref:e},d))}));function u(t,e){var n=arguments,o=e&&e.mdxType;if("string"==typeof t||o){var r=n.length,i=new Array(r);i[0]=s;var l={};for(var p in e)hasOwnProperty.call(e,p)&&(l[p]=e[p]);l.originalType=t,l.mdxType="string"==typeof t?t:o,i[1]=l;for(var c=2;c")," \u5373\u53ef\u3002"),(0,r.kt)("p",null,"\u5982\uff1a\u53ea\u6709\u4e00\u4e2a\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u5b9a\u4e49\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'using Furion.DatabaseAccessor;\nusing Microsoft.EntityFrameworkCore;\n\nnamespace Furion.EntityFramework.Core\n{\n [AppDbContext("Sqlite3ConnectionString", DbProvider.Sqlite)]\n public class DefaultDbContext : AppDbContext // \u65e0\u9700\u6307\u5b9a\u5b9a\u4f4d\u5668\n {\n public DefaultDbContext(DbContextOptions options) : base(options)\n {\n }\n }\n}\n')),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u5173\u4e8e\u591a\u6570\u636e\u5e93\u5b9a\u4f4d\u5668")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u9ed8\u8ba4\u6570\u636e\u5e93\u7684\u5b9a\u4f4d\u5668\u9ed8\u8ba4\u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"MasterDbContextLocator"),"\uff0c\u6240\u4ee5\u65e0\u9700\u663e\u793a\u6307\u5b9a\u5b9a\u4f4d\u5668\uff0c",(0,r.kt)("strong",{parentName:"p"},"\u4f46\u4ece\u7b2c\u4e8c\u4e2a\u6570\u636e\u5e93\u5f00\u59cb\uff0c\u90fd\u5fc5\u987b\u6307\u5b9a\u6570\u636e\u5e93\u5b9a\u4f4d\u5668"),"\u3002\u5982\uff1a"),(0,r.kt)("ul",{parentName:"div"},(0,r.kt)("li",{parentName:"ul"},"\u6ce8\u518c\u4e0a\u4e0b\u6587\uff1a")),(0,r.kt)("pre",{parentName:"div"},(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"options.AddDbPool();\n")),(0,r.kt)("ul",{parentName:"div"},(0,r.kt)("li",{parentName:"ul"},"\u5b9a\u4e49\u4e0a\u4e0b\u6587")),(0,r.kt)("pre",{parentName:"div"},(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'using Furion.DatabaseAccessor;\nusing Microsoft.EntityFrameworkCore;\n\nnamespace Furion.EntityFramework.Core\n{\n [AppDbContext("Sqlite3ConnectionString", DbProvider.Sqlite)]\n public class OtherDbContext : AppDbContext // \u9700\u6307\u5b9a\u5b9a\u4f4d\u5668\n {\n public OtherDbContext(DbContextOptions options) : base(options)\n {\n }\n }\n}\n')),(0,r.kt)("p",{parentName:"div"},"\u53e6\u5916\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"Entity/IEntity")," \u548c ",(0,r.kt)("inlineCode",{parentName:"p"},"IRepository")," \u7b49\u90fd\u9700\u8981\u6307\u5b9a\u5b9a\u4f4d\u5668\uff0c\u5982\uff1a",(0,r.kt)("inlineCode",{parentName:"p"},"IEntity"),"\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"IRepository")," \u64cd\u4f5c\u3002"))),(0,r.kt)("h2",{id:"925-\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u5b9a\u4f4d\u5668\u652f\u6301\u5bf9\u8c61"},"9.2.5 \u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u5b9a\u4f4d\u5668\u652f\u6301\u5bf9\u8c61"),(0,r.kt)("p",null,"\u76ee\u524d\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u652f\u6301\u4ee5\u4e0b\u591a\u4e2a\u5bf9\u8c61\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"AppDbContext"),"\uff1a\u6570\u636e\u4e0a\u4e0b\u6587"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"IRepository"),"\uff1a\u5b9e\u4f53\u4ed3\u50a8"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"ISqlRepository"),": Sql \u64cd\u4f5c\u4ed3\u50a8"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"IDbRepository"),": \u7279\u5b9a\u6570\u636e\u5e93\u64cd\u4f5c\u4ed3\u50a8"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"IMSRepository"),": \u8bfb\u5199\u5206\u79bb\u4ed3\u50a8"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Func"),"\uff1a\u4f9d\u8d56\u6ce8\u5165\u83b7\u53d6\u6570\u636e\u5e93\u4e0a\u4e0b\u6587"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Entity")," \uff1a\u5b9e\u4f53\u914d\u7f6e"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"EntityBase"),"\uff1a\u5b9e\u4f53\u914d\u7f6e"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"EntityNotKey"),"\uff1a\u65e0\u952e\u5b9e\u4f53\u914d\u7f6e"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"IEntity"),"\uff1a\u9ed8\u8ba4\u5b9e\u4f53\u914d\u7f6e"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"IEntitySeedData"),"\uff1a\u79cd\u5b50\u6570\u636e\u914d\u7f6e"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"IEntityTypeBuilder"),"\uff1a\u5b9e\u4f53\u7c7b\u578b\u6784\u5efa\u5668"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"IModelBuilderFilter"),"\uff1a\u6a21\u578b\u6784\u5efa\u7b5b\u9009\u5668"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"[QueryableFunction(DbContextLocators=Type[])]"),"\uff1a\u67e5\u8be2\u51fd\u6570")),(0,r.kt)("h2",{id:"926-\u53cd\u9988\u4e0e\u5efa\u8bae"},"9.2.6 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,r.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/a6aa9e1f.0c4a877b.js b/handbook/build/assets/js/a6aa9e1f.0c4a877b.js deleted file mode 100644 index a83cd8b88d7..00000000000 --- a/handbook/build/assets/js/a6aa9e1f.0c4a877b.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[3089,5965],{3905:function(e,t,a){a.d(t,{Zo:function(){return m},kt:function(){return f}});var r=a(7294);function n(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function l(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,r)}return a}function o(e){for(var t=1;t=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var c=r.createContext({}),s=function(e){var t=r.useContext(c),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},m=function(e){var t=s(e.components);return r.createElement(c.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,l=e.originalType,c=e.parentName,m=i(e,["components","mdxType","originalType","parentName"]),d=s(a),f=n,g=d["".concat(c,".").concat(f)]||d[f]||u[f]||l;return a?r.createElement(g,o(o({ref:t},m),{},{components:a})):r.createElement(g,o({ref:t},m))}));function f(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var l=a.length,o=new Array(l);o[0]=d;var i={};for(var c in t)hasOwnProperty.call(t,c)&&(i[c]=t[c]);i.originalType=e,i.mdxType="string"==typeof e?e:n,o[1]=i;for(var s=2;s0;return n.createElement(o.Z,c,n.createElement("div",{className:"container margin-vert--lg"},n.createElement("div",{className:"row"},s&&n.createElement("aside",{className:"col col--3"},n.createElement(p,{sidebar:t})),n.createElement("main",{className:(0,l.Z)("col",{"col--7":s,"col--9 col--offset-1":!s})},i),a&&n.createElement("div",{className:"col col--2"},n.createElement(v.Z,{toc:a})))))}},4428:function(e,t,a){a.r(t),a.d(t,{default:function(){return u}});var r=a(7294),n=a(2263),l=a(6165),o=a(3146),i=a(6742),c=a(4973);var s=function(e){var t=e.metadata,a=t.previousPage,n=t.nextPage;return r.createElement("nav",{className:"pagination-nav","aria-label":(0,c.I)({id:"theme.blog.paginator.navAriaLabel",message:"Blog list page navigation",description:"The ARIA label for the blog pagination"})},r.createElement("div",{className:"pagination-nav__item"},a&&r.createElement(i.Z,{className:"pagination-nav__link",to:a},r.createElement("div",{className:"pagination-nav__label"},"\xab"," ",r.createElement(c.Z,{id:"theme.blog.paginator.newerEntries",description:"The label used to navigate to the newer blog posts page (previous page)"},"Newer Entries")))),r.createElement("div",{className:"pagination-nav__item pagination-nav__item--next"},n&&r.createElement(i.Z,{className:"pagination-nav__link",to:n},r.createElement("div",{className:"pagination-nav__label"},r.createElement(c.Z,{id:"theme.blog.paginator.olderEntries",description:"The label used to navigate to the older blog posts page (next page)"},"Older Entries")," ","\xbb"))))},m=a(3018);var u=function(e){var t=e.metadata,a=e.items,i=e.sidebar,c=(0,n.Z)().siteConfig.title,u=t.blogDescription,d=t.blogTitle,f="/"===t.permalink?c:d;return r.createElement(l.Z,{title:f,description:u,wrapperClassName:m.kM.wrapper.blogPages,pageClassName:m.kM.page.blogListPage,searchMetadatas:{tag:"blog_posts_list"},sidebar:i},a.map((function(e){var t=e.content;return r.createElement(o.Z,{key:t.metadata.permalink,frontMatter:t.frontMatter,metadata:t.metadata,truncated:t.metadata.truncated},r.createElement(t,null))})),r.createElement(s,{metadata:t}))}},3146:function(e,t,a){a.d(t,{Z:function(){return p}});var r=a(7294),n=a(6010),l=a(3905),o=a(4973),i=a(6742),c=a(3018),s=a(4848),m=a(1217),u=a(6146),d="blogPostTitle_GeHD",f="blogPostData_291c",g="blogPostDetailsFull_3kfx";var p=function(e){var t,a,p,v=(a=(0,c.c2)().selectMessage,function(e){var t=Math.ceil(e);return a(t,(0,o.I)({id:"theme.blog.post.readingTime.plurals",description:'Pluralized label for "{readingTime} min read". Use as much plural forms (separated by "|") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)',message:"One min read|{readingTime} min read"},{readingTime:t}))}),E=e.children,b=e.frontMatter,h=e.metadata,_=e.truncated,N=e.isBlogPostPage,y=void 0!==N&&N,k=h.date,Z=h.formattedDate,O=h.permalink,T=h.tags,w=h.readingTime,P=h.title,x=h.editUrl,L=b.author,C=b.image,j=b.keywords,I=b.author_url||b.authorURL,M=b.author_title||b.authorTitle,A=b.author_image_url||b.authorImageURL;return r.createElement(r.Fragment,null,r.createElement(m.Z,{keywords:j,image:C}),r.createElement("article",{className:y?void 0:"margin-bottom--xl"},(p=y?"h1":"h2",r.createElement("header",null,r.createElement(p,{className:d},y?P:r.createElement(i.Z,{to:O},P)),r.createElement("div",{className:(0,n.Z)(f,"margin-vert--md")},r.createElement("time",{dateTime:k},Z),w&&r.createElement(r.Fragment,null," \xb7 ",v(w))),r.createElement("div",{className:"avatar margin-vert--md"},A&&r.createElement(i.Z,{className:"avatar__photo-link avatar__photo",href:I},r.createElement("img",{src:A,alt:L})),r.createElement("div",{className:"avatar__intro"},L&&r.createElement(r.Fragment,null,r.createElement("div",{className:"avatar__name"},r.createElement(i.Z,{href:I},L)),r.createElement("small",{className:"avatar__subtitle"},M)))))),r.createElement("div",{className:"markdown"},r.createElement(l.Zo,{components:s.Z},E)),(T.length>0||_)&&r.createElement("footer",{className:(0,n.Z)("row docusaurus-mt-lg",(t={},t[g]=y,t))},T.length>0&&r.createElement("div",{className:"col"},r.createElement("b",null,r.createElement(o.Z,{id:"theme.tags.tagsListLabel",description:"The label alongside a tag list"},"Tags:")),T.map((function(e){var t=e.label,a=e.permalink;return r.createElement(i.Z,{key:a,className:"margin-horiz--sm",to:a},t)}))),y&&x&&r.createElement("div",{className:"col margin-top--sm"},r.createElement(u.Z,{editUrl:x})),!y&&_&&r.createElement("div",{className:"col text--right"},r.createElement(i.Z,{to:h.permalink,"aria-label":"Read more about "+P},r.createElement("b",null,r.createElement(o.Z,{id:"theme.blog.post.readMore",description:"The label used in blog post item excerpts to link to full blog posts"},"Read More")))))))}},6146:function(e,t,a){a.d(t,{Z:function(){return u}});var r=a(7294),n=a(4973),l=a(7462),o=a(3366),i=a(6010),c="iconEdit_2_ui",s=["className"],m=function(e){var t=e.className,a=(0,o.Z)(e,s);return r.createElement("svg",(0,l.Z)({fill:"currentColor",height:"20",width:"20",viewBox:"0 0 40 40",className:(0,i.Z)(c,t),"aria-hidden":"true"},a),r.createElement("g",null,r.createElement("path",{d:"m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"})))};function u(e){var t=e.editUrl;return r.createElement("a",{href:t,target:"_blank",rel:"noreferrer noopener"},r.createElement(m,null),r.createElement(n.Z,{id:"theme.common.editThisPage",description:"The link label to edit the current page"},"Edit this page"))}},571:function(e,t,a){a.d(t,{r:function(){return c},Z:function(){return s}});var r=a(7294),n=a(6010);var l=function(e,t,a){var n=(0,r.useState)(void 0),l=n[0],o=n[1];(0,r.useEffect)((function(){function r(){var r=function(){var e=Array.from(document.getElementsByClassName("anchor")),t=e.find((function(e){return e.getBoundingClientRect().top>=a}));if(t){if(t.getBoundingClientRect().top>=a){var r=e[e.indexOf(t)-1];return null!=r?r:t}return t}return e[e.length-1]}();if(r)for(var n=0,i=!1,c=document.getElementsByClassName(e);n0&&l.createElement("div",{className:"row footer__links"},n.map((function(e,t){return l.createElement("div",{key:t,className:"col footer__col"},null!=e.title?l.createElement("h4",{className:"footer__title"},e.title):null,null!=e.items&&Array.isArray(e.items)&&e.items.length>0?l.createElement("ul",{className:"footer__items"},e.items.map((function(e,t){return e.html?l.createElement("li",{key:t,className:"footer__item",dangerouslySetInnerHTML:{__html:e.html}}):l.createElement("li",{key:e.href||e.to,className:"footer__item"},l.createElement(d,e))}))):null)}))),(u||a)&&l.createElement("div",{className:"footer__bottom text--center"},u&&u.src&&l.createElement("div",{className:"margin-bottom--sm"},u.href?l.createElement("a",{href:u.href,target:"_blank",rel:"noopener noreferrer",className:m},l.createElement(f,{alt:u.alt,url:g})):l.createElement(f,{alt:u.alt,url:g})),a?l.createElement("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:a}}):null))):null}}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/a6aa9e1f.f70598de.js b/handbook/build/assets/js/a6aa9e1f.f70598de.js new file mode 100644 index 00000000000..73ef1f30c64 --- /dev/null +++ b/handbook/build/assets/js/a6aa9e1f.f70598de.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[3089,613],{4428:function(e,t,a){a.r(t),a.d(t,{default:function(){return g}});var r=a(7294),n=a(2263),l=a(6165),o=a(4884),i=a(6742),s=a(4973);var m=function(e){var t=e.metadata,a=t.previousPage,n=t.nextPage;return r.createElement("nav",{className:"pagination-nav","aria-label":(0,s.I)({id:"theme.blog.paginator.navAriaLabel",message:"Blog list page navigation",description:"The ARIA label for the blog pagination"})},r.createElement("div",{className:"pagination-nav__item"},a&&r.createElement(i.Z,{className:"pagination-nav__link",to:a},r.createElement("div",{className:"pagination-nav__label"},"\xab"," ",r.createElement(s.Z,{id:"theme.blog.paginator.newerEntries",description:"The label used to navigate to the newer blog posts page (previous page)"},"Newer Entries")))),r.createElement("div",{className:"pagination-nav__item pagination-nav__item--next"},n&&r.createElement(i.Z,{className:"pagination-nav__link",to:n},r.createElement("div",{className:"pagination-nav__label"},r.createElement(s.Z,{id:"theme.blog.paginator.olderEntries",description:"The label used to navigate to the older blog posts page (next page)"},"Older Entries")," ","\xbb"))))},c=a(941);var g=function(e){var t=e.metadata,a=e.items,i=e.sidebar,s=(0,n.Z)().siteConfig.title,g=t.blogDescription,p=t.blogTitle,f="/"===t.permalink?s:p;return r.createElement(l.Z,{title:f,description:g,wrapperClassName:c.kM.wrapper.blogPages,pageClassName:c.kM.page.blogListPage,searchMetadatas:{tag:"blog_posts_list"},sidebar:i},a.map((function(e){var t=e.content;return r.createElement(o.Z,{key:t.metadata.permalink,frontMatter:t.frontMatter,assets:t.assets,metadata:t.metadata,truncated:t.metadata.truncated},r.createElement(t,null))})),r.createElement(m,{metadata:t}))}},546:function(e,t,a){a.d(t,{Z:function(){return d}});var r=a(7462),n=a(3366),l=a(7294),o=a(6010),i=a(6742),s=a(941),m=a(4996),c="footerLogoLink_qW4Z",g=["to","href","label","prependBaseUrlToHref"];function p(e){var t=e.to,a=e.href,o=e.label,s=e.prependBaseUrlToHref,c=(0,n.Z)(e,g),p=(0,m.Z)(t),f=(0,m.Z)(a,{forcePrependBaseUrl:!0});return l.createElement(i.Z,(0,r.Z)({className:"footer__link-item"},a?{target:"_blank",rel:"noopener noreferrer",href:s?f:a}:{to:p},c),o)}var f=function(e){var t=e.url,a=e.alt;return l.createElement("img",{className:"footer__logo",alt:a,src:t,style:{background:"#fff",padding:"5px 10px"}})};var d=function(){var e=(0,s.LU)().footer,t=e||{},a=t.copyright,r=t.links,n=void 0===r?[]:r,i=t.logo,g=void 0===i?{}:i,d=(0,m.Z)(g.src);return e?l.createElement("footer",{className:(0,o.Z)("footer",{"footer--dark":"dark"===e.style})},l.createElement("div",{className:"container"},n&&n.length>0&&l.createElement("div",{className:"row footer__links"},n.map((function(e,t){return l.createElement("div",{key:t,className:"col footer__col"},null!=e.title?l.createElement("h4",{className:"footer__title"},e.title):null,null!=e.items&&Array.isArray(e.items)&&e.items.length>0?l.createElement("ul",{className:"footer__items"},e.items.map((function(e,t){return e.html?l.createElement("li",{key:t,className:"footer__item",dangerouslySetInnerHTML:{__html:e.html}}):l.createElement("li",{key:e.href||e.to,className:"footer__item"},l.createElement(p,e))}))):null)}))),(g||a)&&l.createElement("div",{className:"footer__bottom text--center"},g&&g.src&&l.createElement("div",{className:"margin-bottom--sm"},g.href?l.createElement("a",{href:g.href,target:"_blank",rel:"noopener noreferrer",className:c},l.createElement(f,{alt:g.alt,url:d})):l.createElement(f,{alt:g.alt,url:d})),a?l.createElement("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:a}}):null))):null}}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/a71f9f93.843ad895.js b/handbook/build/assets/js/a71f9f93.843ad895.js new file mode 100644 index 00000000000..c084ceb495e --- /dev/null +++ b/handbook/build/assets/js/a71f9f93.843ad895.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[74],{3905:function(e,t,n){n.d(t,{Zo:function(){return d},kt:function(){return u}});var a=n(7294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var p=a.createContext({}),s=function(e){var t=a.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},d=function(e){var t=s(e.components);return a.createElement(p.Provider,{value:t},e.children)},m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},c=a.forwardRef((function(e,t){var n=e.components,i=e.mdxType,r=e.originalType,p=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),c=s(n),u=i,k=c["".concat(p,".").concat(u)]||c[u]||m[u]||r;return n?a.createElement(k,o(o({ref:t},d),{},{components:n})):a.createElement(k,o({ref:t},d))}));function u(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var r=n.length,o=new Array(r);o[0]=c;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l.mdxType="string"==typeof e?e:i,o[1]=l;for(var s=2;sCode First \u8bf4\u660e",id:"9016-code-first-\u8bf4\u660e",children:[]}]},{value:"9.0.2 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"902-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],m={toc:d};function c(e){var t=e.components,n=(0,i.Z)(e,o);return(0,r.kt)("wrapper",(0,a.Z)({},m,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"901-\u5165\u95e8\u51c6\u5907"},"9.0.1 \u5165\u95e8\u51c6\u5907"),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u5165\u95e8\u6761\u4ef6")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u5bf9 ",(0,r.kt)("inlineCode",{parentName:"p"},"EF/EFCore")," \u6709\u4e00\u5b9a\u57fa\u7840\u4e86\u89e3\uff0c\u8fd8\u672a\u63a5\u89e6\u7684\u53ef\u5148\u770b ",(0,r.kt)("a",{parentName:"p",href:"https://docs.microsoft.com/zh-cn/ef/core/"},"\u3010EFCore \u57fa\u7840\u3011")))),(0,r.kt)("h3",{id:"9011-\u5b89\u88c5\u5bf9\u5e94\u6570\u636e\u5e93\u5305"},"9.0.1.1 \u5b89\u88c5\u5bf9\u5e94\u6570\u636e\u5e93\u5305"),(0,r.kt)("p",null,"\u5728\u672c\u7ae0\u8282\u6240\u5728\u7684\u7c7b\u522b\u4e2d\uff0c\u6240\u6709\u6570\u636e\u5e93\u64cd\u4f5c\u529f\u80fd\u5747\u9700\u8981\u4f9d\u8d56 ",(0,r.kt)("inlineCode",{parentName:"p"},"EntityFramework Core")," \u6846\u67b6\uff0c\u4f46 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u5e95\u5c42\u5e76\u672a\u96c6\u6210 ",(0,r.kt)("inlineCode",{parentName:"p"},"EntityFramework Core")," \u5305\uff0c\u800c\u662f\u91c7\u7528\u52a8\u6001\u52a0\u8f7d\u7a0b\u5e8f\u96c6\u65b9\u5f0f\u81ea\u52a8\u8f7d\u5165\u3002"),(0,r.kt)("p",null,"\u6240\u4ee5\uff0c\u5982\u9700\u4f7f\u7528\u672c\u5927\u7c7b\u6570\u636e\u5e93\u529f\u80fd\uff0c\u9700\u5b89\u88c5\u5bf9\u5e94\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"EntityFramework Core")," \u6570\u636e\u5e93\u5305\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"SqlServer"),"\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"Microsoft.EntityFrameworkCore.SqlServer")," (\u652f\u6301 SqlServer 2005 +)"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Sqlite"),"\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"Microsoft.EntityFrameworkCore.Sqlite")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Cosmos"),"\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"Microsoft.EntityFrameworkCore.Cosmos")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"InMemoryDatabase"),"\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"Microsoft.EntityFrameworkCore.InMemory")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"MySql"),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Pomelo.EntityFrameworkCore.MySql"),"\uff1a(\u652f\u6301 MySql 5.x +)"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"MySql.EntityFrameworkCore"),"\uff1a\u652f\u6301 (MySql 8.x +)"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"PostgreSQL"),"\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"Npgsql.EntityFrameworkCore.PostgreSQL")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Oracle"),"\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"Oracle.EntityFrameworkCore")," \uff08\u652f\u6301 Oracle 10 +\uff09"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Firebird"),"\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"FirebirdSql.EntityFrameworkCore.Firebird")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Dm"),"\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"Microsoft.EntityFrameworkCore.Dm"))),(0,r.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u5c0f\u77e5\u8bc6")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u8fd9\u4e9b\u6570\u636e\u5e93\u5305\u5e94\u8be5\u5b89\u88c5\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion.EntityFramework.Core")," \u5c42\u3002\u7279\u6b8a\u60c5\u51b5\u9700\u5b89\u88c5\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion.Core")," \u5c42\u4e2d\uff0c\u5982 ",(0,r.kt)("inlineCode",{parentName:"p"},"Mysql")," ",(0,r.kt)("inlineCode",{parentName:"p"},"HasCharset()")," \u914d\u7f6e\u3002"))),(0,r.kt)("h3",{id:"9012-\u521b\u5efa\u6570\u636e\u5e93\u4e0a\u4e0b\u6587"},"9.0.1.2 \u521b\u5efa\u6570\u636e\u5e93\u4e0a\u4e0b\u6587"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{7}","{7}":!0},'using Furion.DatabaseAccessor;\nusing Microsoft.EntityFrameworkCore;\n\nnamespace Furion.EntityFramework.Core\n{\n [AppDbContext("Sqlite3ConnectionString", DbProvider.Sqlite)]\n public class DefaultDbContext : AppDbContext\n {\n public DefaultDbContext(DbContextOptions options) : base(options)\n {\n }\n }\n}\n')),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u6ce8\u610f")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u6bcf\u4e00\u4e2a\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u90fd\u9700\u7ee7\u627f ",(0,r.kt)("inlineCode",{parentName:"p"},"AppDbContext")," \u57fa\u7c7b\uff0c\u9ed8\u8ba4\u6570\u636e\u5e93\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"TDbContextLocator")," \u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"MasterDbContextLocator"),"\uff0c\u65e0\u9700\u663e\u5f0f\u7f16\u5199\u3002"),(0,r.kt)("p",{parentName:"div"},"\u975e\u9ed8\u8ba4\u6570\u636e\u5e93\u5219\u9700\u663e\u5f0f\u7ee7\u627f\u5e76\u7533\u660e\uff0c\u5982\uff1a",(0,r.kt)("inlineCode",{parentName:"p"},"AppDbContext"),"\u3002"))),(0,r.kt)("p",null,"\u60f3\u4e86\u89e3\u66f4\u591a\u53ef\u67e5\u9605 \u3010",(0,r.kt)("a",{parentName:"p",href:"./dbcontext-locator"},"\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u5b9a\u4f4d\u5668"),"\u3011 \u7ae0\u8282\u3002"),(0,r.kt)("h3",{id:"9013-\u914d\u7f6e\u8fde\u63a5\u5b57\u7b26\u4e32"},"9.0.1.3 \u914d\u7f6e\u8fde\u63a5\u5b57\u7b26\u4e32"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u591a\u79cd\u65b9\u5f0f\u914d\u7f6e\u6570\u636e\u5e93\u8fde\u63a5\u5b57\u7b26\u4e32\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"appsettings.json")," \u4e2d\u914d\u7f6e")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json",metastring:"{2-3}","{2-3}":!0},'{\n "ConnectionStrings": {\n "Sqlite3ConnectionString": "Data Source=./Furion.db"\n }\n}\n')),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u81ea\u5b9a\u4e49 ",(0,r.kt)("inlineCode",{parentName:"li"},".json")," \u6587\u4ef6\u914d\u7f6e")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json",metastring:"{2-3}","{2-3}":!0},'{\n "ConnectionStrings": {\n "Sqlite3ConnectionString": "Data Source=./Furion.db"\n }\n}\n')),(0,r.kt)("p",null,"\u8be5\u65b9\u5f0f\u548c\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"appsettings.json")," \u7684\u533a\u522b\u662f\u81ea\u5b9a\u4e49\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},".json")," \u6587\u4ef6\u4e0d\u4f1a\u81ea\u52a8\u6dfb\u52a0\u5230\u9879\u76ee\u4e2d\uff0c",(0,r.kt)("strong",{parentName:"p"},"\u987b\u5728 ",(0,r.kt)("inlineCode",{parentName:"strong"},"Visual Studio")," \u4e2d\u914d\u7f6e ",(0,r.kt)("inlineCode",{parentName:"strong"},".json")," \u53f3\u952e\u5c5e\u6027\uff0c\u8bbe\u7f6e ",(0,r.kt)("inlineCode",{parentName:"strong"},"\u590d\u5236")," \u8f93\u51fa\u76ee\u5f55\u4e3a ",(0,r.kt)("inlineCode",{parentName:"strong"},"\u5982\u679c\u8f83\u65b0\u5219\u590d\u5236"),"\uff0c\u751f\u6210\u64cd\u4f5c\u4e3a\uff1a",(0,r.kt)("inlineCode",{parentName:"strong"},"\u5185\u5bb9"),"\u3002")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"[AppDbContext]")," \u7279\u6027\u914d\u7f6e")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1}","{1}":!0},'[AppDbContext("Data Source=./Furion.db", DbProvider.Sqlite)]\npublic class DefaultDbContext : AppDbContext\n{\n}\n')),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u5728\u6ce8\u518c\u4e0a\u4e0b\u6587\u65f6\u914d\u7f6e")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{3-4}","{3-4}":!0},'services.AddDatabaseAccessor(options =>\n{\n // options.AddDb(connectionMetadata: "\u914d\u7f6eKey\u6216\u8fde\u63a5\u5b57\u7b26\u4e32");\n options.AddDbPool(connectionMetadata: "\u914d\u7f6eKey\u6216\u8fde\u63a5\u5b57\u7b26\u4e32");\n});\n')),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u5728 ",(0,r.kt)("inlineCode",{parentName:"li"},"DbContext")," \u4e2d\u914d\u7f6e")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{12-14}","{12-14}":!0},'using Furion.DatabaseAccessor;\nusing Microsoft.EntityFrameworkCore;\n\nnamespace Furion.EntityFramework.Core\n{\n public class DefaultDbContext : AppDbContext\n {\n public DefaultDbContext(DbContextOptions options) : base(options)\n {\n }\n\n protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)\n {\n optionsBuilder.UseSqlite("\u8fde\u63a5\u5b57\u7b26\u4e32");\n base.OnConfiguring(optionsBuilder);\n }\n }\n}\n')),(0,r.kt)("h3",{id:"9014-\u5404\u7c7b\u6570\u636e\u5e93\u8fde\u63a5\u5b57\u7b26\u4e32\u914d\u7f6e\u793a\u4f8b"},"9.0.1.4 \u5404\u7c7b\u6570\u636e\u5e93\u8fde\u63a5\u5b57\u7b26\u4e32\u914d\u7f6e\u793a\u4f8b"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Sqlite"),"\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"Data Source=./Furion.db")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"MySql"),"\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"Data Source=localhost;Database=Furion;User ID=root;Password=000000;pooling=true;port=3306;sslmode=none;CharSet=utf8;")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"SqlServer"),"\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"Server=localhost;Database=Furion;User=sa;Password=000000;MultipleActiveResultSets=True;")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Oracle"),"\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"User Id=orcl;Password=orcl;Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=orcl)))")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"PostgreSQL"),"\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"PORT=5432;DATABASE=postgres;HOST=127.0.0.1;PASSWORD=postgres;USER ID=postgres;"))),(0,r.kt)("h3",{id:"9015-\u6ce8\u518c\u6570\u636e\u5e93\u4e0a\u4e0b\u6587"},"9.0.1.5 \u6ce8\u518c\u6570\u636e\u5e93\u4e0a\u4e0b\u6587"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:'{12-19} title="Furion.EntityFramework.Core\\Startup.cs"',"{12-19}":!0,title:'"Furion.EntityFramework.Core\\Startup.cs"'},"using Furion.DependencyInjection;\nusing Microsoft.Extensions.DependencyInjection;\n\nnamespace Furion.EntityFramework.Core\n{\n [AppStartup(600)]\n public sealed class FurEntityFrameworkCoreStartup : AppStartup\n {\n public void ConfigureServices(IServiceCollection services)\n {\n // \u914d\u7f6e\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\uff0c\u652f\u6301N\u4e2a\u6570\u636e\u5e93\n services.AddDatabaseAccessor(options =>\n {\n // \u914d\u7f6e\u9ed8\u8ba4\u6570\u636e\u5e93\n options.AddDbPool();\n\n // \u914d\u7f6e\u591a\u4e2a\u6570\u636e\u5e93\uff0c\u591a\u4e2a\u6570\u636e\u5e93\u5fc5\u987b\u6307\u5b9a\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u5b9a\u4f4d\u5668\n // options.AddDbPool();\n });\n }\n }\n}\n")),(0,r.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u4e86\u89e3\u66f4\u591a\u6570\u636e\u5e93\u6570\u636e\u5e93\u6ce8\u518c\u65b9\u5f0f")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u5982\u9700\u4e86\u89e3\u5404\u79cd\u6570\u636e\u5e93\u53ca\u7248\u672c\u6ce8\u518c\u65b9\u5f0f\u53ef\u67e5\u9605 \u3010",(0,r.kt)("a",{parentName:"p",href:"/furion/docs/dbcontext-multi-database"},"\u591a\u6570\u636e\u5e93\u6ce8\u518c\u7ae0\u8282"),"\u3011"))),(0,r.kt)("h3",{id:"9016-code-first-\u8bf4\u660e"},"9.0.1.6 ",(0,r.kt)("inlineCode",{parentName:"h3"},"Code First")," \u8bf4\u660e"),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u6ce8\u610f")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u9ed8\u8ba4\u6570\u636e\u8fc1\u79fb\u7684\u7a0b\u5e8f\u96c6\u4e3a\uff1a",(0,r.kt)("inlineCode",{parentName:"p"},"Furion.Database.Migrations"),"\uff0c\u6240\u4ee5\u5982\u679c\u60a8\u6539\u4e86\u7a0b\u5e8f\u96c6\u540d\u79f0\u6216\u901a\u8fc7 ",(0,r.kt)("inlineCode",{parentName:"p"},"Nuget")," \u65b9\u5f0f\u5b89\u88c5\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u5305\uff0c\u5219\u9700\u8981\u914d\u7f6e\u8fc1\u79fb\u7a0b\u5e8f\u96c6\u540d\u79f0\uff1a"),(0,r.kt)("pre",{parentName:"div"},(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{4}","{4}":!0},'services.AddDatabaseAccessor(options =>\n{\n options.AddDbPool(DbProvider.Sqlite);\n}, "\u5b58\u653e\u8fc1\u79fb\u6587\u4ef6\u7684\u9879\u76ee\u540d\u79f0");\n')),(0,r.kt)("p",{parentName:"div"},"\u53e6\u5916\uff0c\u5982\u679c\u5e94\u7528\u4e2d\u914d\u7f6e\u4e86\u591a\u4e2a\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\uff0c\u90a3\u4e48\u6240\u6709\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"\u8fc1\u79fb\u547d\u4ee4")," \u90fd\u9700\u8981\u6307\u5b9a ",(0,r.kt)("inlineCode",{parentName:"p"},"-Context \u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u540d\u79f0")," \u53c2\u6570\u3002\u5982\uff1a"),(0,r.kt)("pre",{parentName:"div"},(0,r.kt)("code",{parentName:"pre",className:"language-shell"},"Add-Migration v1.0.0 -Context DefaultDbContext\n")))),(0,r.kt)("h2",{id:"902-\u53cd\u9988\u4e0e\u5efa\u8bae"},"9.0.2 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,r.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/a71f9f93.af4c9ab5.js b/handbook/build/assets/js/a71f9f93.af4c9ab5.js deleted file mode 100644 index 1408700301e..00000000000 --- a/handbook/build/assets/js/a71f9f93.af4c9ab5.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[74],{3905:function(e,t,n){n.d(t,{Zo:function(){return d},kt:function(){return u}});var a=n(7294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var p=a.createContext({}),s=function(e){var t=a.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},d=function(e){var t=s(e.components);return a.createElement(p.Provider,{value:t},e.children)},m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},c=a.forwardRef((function(e,t){var n=e.components,i=e.mdxType,r=e.originalType,p=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),c=s(n),u=i,k=c["".concat(p,".").concat(u)]||c[u]||m[u]||r;return n?a.createElement(k,o(o({ref:t},d),{},{components:n})):a.createElement(k,o({ref:t},d))}));function u(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var r=n.length,o=new Array(r);o[0]=c;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l.mdxType="string"==typeof e?e:i,o[1]=l;for(var s=2;sCode First \u8bf4\u660e",id:"9016-code-first-\u8bf4\u660e",children:[]}]},{value:"9.0.2 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"902-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],m={toc:d};function c(e){var t=e.components,n=(0,i.Z)(e,o);return(0,r.kt)("wrapper",(0,a.Z)({},m,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"901-\u5165\u95e8\u51c6\u5907"},"9.0.1 \u5165\u95e8\u51c6\u5907"),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u5165\u95e8\u6761\u4ef6")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u5bf9 ",(0,r.kt)("inlineCode",{parentName:"p"},"EF/EFCore")," \u6709\u4e00\u5b9a\u57fa\u7840\u4e86\u89e3\uff0c\u8fd8\u672a\u63a5\u89e6\u7684\u53ef\u5148\u770b ",(0,r.kt)("a",{parentName:"p",href:"https://docs.microsoft.com/zh-cn/ef/core/"},"\u3010EFCore \u57fa\u7840\u3011")))),(0,r.kt)("h3",{id:"9011-\u5b89\u88c5\u5bf9\u5e94\u6570\u636e\u5e93\u5305"},"9.0.1.1 \u5b89\u88c5\u5bf9\u5e94\u6570\u636e\u5e93\u5305"),(0,r.kt)("p",null,"\u5728\u672c\u7ae0\u8282\u6240\u5728\u7684\u7c7b\u522b\u4e2d\uff0c\u6240\u6709\u6570\u636e\u5e93\u64cd\u4f5c\u529f\u80fd\u5747\u9700\u8981\u4f9d\u8d56 ",(0,r.kt)("inlineCode",{parentName:"p"},"EntityFramework Core")," \u6846\u67b6\uff0c\u4f46 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u5e95\u5c42\u5e76\u672a\u96c6\u6210 ",(0,r.kt)("inlineCode",{parentName:"p"},"EntityFramework Core")," \u5305\uff0c\u800c\u662f\u91c7\u7528\u52a8\u6001\u52a0\u8f7d\u7a0b\u5e8f\u96c6\u65b9\u5f0f\u81ea\u52a8\u8f7d\u5165\u3002"),(0,r.kt)("p",null,"\u6240\u4ee5\uff0c\u5982\u9700\u4f7f\u7528\u672c\u5927\u7c7b\u6570\u636e\u5e93\u529f\u80fd\uff0c\u9700\u5b89\u88c5\u5bf9\u5e94\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"EntityFramework Core")," \u6570\u636e\u5e93\u5305\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"SqlServer"),"\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"Microsoft.EntityFrameworkCore.SqlServer")," (\u652f\u6301 SqlServer 2005 +)"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Sqlite"),"\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"Microsoft.EntityFrameworkCore.Sqlite")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Cosmos"),"\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"Microsoft.EntityFrameworkCore.Cosmos")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"InMemoryDatabase"),"\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"Microsoft.EntityFrameworkCore.InMemory")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"MySql"),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Pomelo.EntityFrameworkCore.MySql"),"\uff1a(\u652f\u6301 MySql 5.x +)"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"MySql.EntityFrameworkCore"),"\uff1a\u652f\u6301 (MySql 8.x +)"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"PostgreSQL"),"\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"Npgsql.EntityFrameworkCore.PostgreSQL")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Oracle"),"\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"Oracle.EntityFrameworkCore")," \uff08\u652f\u6301 Oracle 10 +\uff09"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Firebird"),"\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"FirebirdSql.EntityFrameworkCore.Firebird")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Dm"),"\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"Microsoft.EntityFrameworkCore.Dm"))),(0,r.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u5c0f\u77e5\u8bc6")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u8fd9\u4e9b\u6570\u636e\u5e93\u5305\u5e94\u8be5\u5b89\u88c5\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion.EntityFramework.Core")," \u5c42\u3002\u7279\u6b8a\u60c5\u51b5\u9700\u5b89\u88c5\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion.Core")," \u5c42\u4e2d\uff0c\u5982 ",(0,r.kt)("inlineCode",{parentName:"p"},"Mysql")," ",(0,r.kt)("inlineCode",{parentName:"p"},"HasCharset()")," \u914d\u7f6e\u3002"))),(0,r.kt)("h3",{id:"9012-\u521b\u5efa\u6570\u636e\u5e93\u4e0a\u4e0b\u6587"},"9.0.1.2 \u521b\u5efa\u6570\u636e\u5e93\u4e0a\u4e0b\u6587"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{7}","{7}":!0},'using Furion.DatabaseAccessor;\nusing Microsoft.EntityFrameworkCore;\n\nnamespace Furion.EntityFramework.Core\n{\n [AppDbContext("Sqlite3ConnectionString", DbProvider.Sqlite)]\n public class DefaultDbContext : AppDbContext\n {\n public DefaultDbContext(DbContextOptions options) : base(options)\n {\n }\n }\n}\n')),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u6ce8\u610f")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u6bcf\u4e00\u4e2a\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u90fd\u9700\u7ee7\u627f ",(0,r.kt)("inlineCode",{parentName:"p"},"AppDbContext")," \u57fa\u7c7b\uff0c\u9ed8\u8ba4\u6570\u636e\u5e93\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"TDbContextLocator")," \u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"MasterDbContextLocator"),"\uff0c\u65e0\u9700\u663e\u5f0f\u7f16\u5199\u3002"),(0,r.kt)("p",{parentName:"div"},"\u975e\u9ed8\u8ba4\u6570\u636e\u5e93\u5219\u9700\u663e\u5f0f\u7ee7\u627f\u5e76\u7533\u660e\uff0c\u5982\uff1a",(0,r.kt)("inlineCode",{parentName:"p"},"AppDbContext"),"\u3002"))),(0,r.kt)("p",null,"\u60f3\u4e86\u89e3\u66f4\u591a\u53ef\u67e5\u9605 \u3010",(0,r.kt)("a",{parentName:"p",href:"./dbcontext-locator"},"\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u5b9a\u4f4d\u5668"),"\u3011 \u7ae0\u8282\u3002"),(0,r.kt)("h3",{id:"9013-\u914d\u7f6e\u8fde\u63a5\u5b57\u7b26\u4e32"},"9.0.1.3 \u914d\u7f6e\u8fde\u63a5\u5b57\u7b26\u4e32"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u591a\u79cd\u65b9\u5f0f\u914d\u7f6e\u6570\u636e\u5e93\u8fde\u63a5\u5b57\u7b26\u4e32\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"appsettings.json")," \u4e2d\u914d\u7f6e")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json",metastring:"{2-3}","{2-3}":!0},'{\n "ConnectionStrings": {\n "Sqlite3ConnectionString": "Data Source=./Furion.db"\n }\n}\n')),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u81ea\u5b9a\u4e49 ",(0,r.kt)("inlineCode",{parentName:"li"},".json")," \u6587\u4ef6\u914d\u7f6e")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json",metastring:"{2-3}","{2-3}":!0},'{\n "ConnectionStrings": {\n "Sqlite3ConnectionString": "Data Source=./Furion.db"\n }\n}\n')),(0,r.kt)("p",null,"\u8be5\u65b9\u5f0f\u548c\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"appsettings.json")," \u7684\u533a\u522b\u662f\u81ea\u5b9a\u4e49\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},".json")," \u6587\u4ef6\u4e0d\u4f1a\u81ea\u52a8\u6dfb\u52a0\u5230\u9879\u76ee\u4e2d\uff0c",(0,r.kt)("strong",{parentName:"p"},"\u987b\u5728 ",(0,r.kt)("inlineCode",{parentName:"strong"},"Visual Studio")," \u4e2d\u914d\u7f6e ",(0,r.kt)("inlineCode",{parentName:"strong"},".json")," \u53f3\u952e\u5c5e\u6027\uff0c\u8bbe\u7f6e ",(0,r.kt)("inlineCode",{parentName:"strong"},"\u590d\u5236")," \u8f93\u51fa\u76ee\u5f55\u4e3a ",(0,r.kt)("inlineCode",{parentName:"strong"},"\u5982\u679c\u8f83\u65b0\u5219\u590d\u5236"),"\uff0c\u751f\u6210\u64cd\u4f5c\u4e3a\uff1a",(0,r.kt)("inlineCode",{parentName:"strong"},"\u5185\u5bb9"),"\u3002")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"[AppDbContext]")," \u7279\u6027\u914d\u7f6e")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1}","{1}":!0},'[AppDbContext("Data Source=./Furion.db", DbProvider.Sqlite)]\npublic class DefaultDbContext : AppDbContext\n{\n}\n')),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u5728\u6ce8\u518c\u4e0a\u4e0b\u6587\u65f6\u914d\u7f6e")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{3-4}","{3-4}":!0},'services.AddDatabaseAccessor(options =>\n{\n // options.AddDb(connectionMetadata: "\u914d\u7f6eKey\u6216\u8fde\u63a5\u5b57\u7b26\u4e32");\n options.AddDbPool(connectionMetadata: "\u914d\u7f6eKey\u6216\u8fde\u63a5\u5b57\u7b26\u4e32");\n});\n')),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u5728 ",(0,r.kt)("inlineCode",{parentName:"li"},"DbContext")," \u4e2d\u914d\u7f6e")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{12-14}","{12-14}":!0},'using Furion.DatabaseAccessor;\nusing Microsoft.EntityFrameworkCore;\n\nnamespace Furion.EntityFramework.Core\n{\n public class DefaultDbContext : AppDbContext\n {\n public DefaultDbContext(DbContextOptions options) : base(options)\n {\n }\n\n protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)\n {\n optionsBuilder.UseSqlite("\u8fde\u63a5\u5b57\u7b26\u4e32");\n base.OnConfiguring(optionsBuilder);\n }\n }\n}\n')),(0,r.kt)("h3",{id:"9014-\u5404\u7c7b\u6570\u636e\u5e93\u8fde\u63a5\u5b57\u7b26\u4e32\u914d\u7f6e\u793a\u4f8b"},"9.0.1.4 \u5404\u7c7b\u6570\u636e\u5e93\u8fde\u63a5\u5b57\u7b26\u4e32\u914d\u7f6e\u793a\u4f8b"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Sqlite"),"\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"Data Source=./Furion.db")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"MySql"),"\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"Data Source=localhost;Database=Furion;User ID=root;Password=000000;pooling=true;port=3306;sslmode=none;CharSet=utf8;")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"SqlServer"),"\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"Server=localhost;Database=Furion;User=sa;Password=000000;MultipleActiveResultSets=True;")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Oracle"),"\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"User Id=orcl;Password=orcl;Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=orcl)))")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"PostgreSQL"),"\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"PORT=5432;DATABASE=postgres;HOST=127.0.0.1;PASSWORD=postgres;USER ID=postgres;"))),(0,r.kt)("h3",{id:"9015-\u6ce8\u518c\u6570\u636e\u5e93\u4e0a\u4e0b\u6587"},"9.0.1.5 \u6ce8\u518c\u6570\u636e\u5e93\u4e0a\u4e0b\u6587"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:'{12-19} title="Furion.EntityFramework.Core\\Startup.cs"',"{12-19}":!0,title:'"Furion.EntityFramework.Core\\Startup.cs"'},"using Furion.DependencyInjection;\nusing Microsoft.Extensions.DependencyInjection;\n\nnamespace Furion.EntityFramework.Core\n{\n [AppStartup(600)]\n public sealed class FurEntityFrameworkCoreStartup : AppStartup\n {\n public void ConfigureServices(IServiceCollection services)\n {\n // \u914d\u7f6e\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\uff0c\u652f\u6301N\u4e2a\u6570\u636e\u5e93\n services.AddDatabaseAccessor(options =>\n {\n // \u914d\u7f6e\u9ed8\u8ba4\u6570\u636e\u5e93\n options.AddDbPool();\n\n // \u914d\u7f6e\u591a\u4e2a\u6570\u636e\u5e93\uff0c\u591a\u4e2a\u6570\u636e\u5e93\u5fc5\u987b\u6307\u5b9a\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u5b9a\u4f4d\u5668\n // options.AddDbPool();\n });\n }\n }\n}\n")),(0,r.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u4e86\u89e3\u66f4\u591a\u6570\u636e\u5e93\u6570\u636e\u5e93\u6ce8\u518c\u65b9\u5f0f")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u5982\u9700\u4e86\u89e3\u5404\u79cd\u6570\u636e\u5e93\u53ca\u7248\u672c\u6ce8\u518c\u65b9\u5f0f\u53ef\u67e5\u9605 \u3010",(0,r.kt)("a",{parentName:"p",href:"/furion/docs/dbcontext-multi-database"},"\u591a\u6570\u636e\u5e93\u6ce8\u518c\u7ae0\u8282"),"\u3011"))),(0,r.kt)("h3",{id:"9016-code-first-\u8bf4\u660e"},"9.0.1.6 ",(0,r.kt)("inlineCode",{parentName:"h3"},"Code First")," \u8bf4\u660e"),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u6ce8\u610f")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u9ed8\u8ba4\u6570\u636e\u8fc1\u79fb\u7684\u7a0b\u5e8f\u96c6\u4e3a\uff1a",(0,r.kt)("inlineCode",{parentName:"p"},"Furion.Database.Migrations"),"\uff0c\u6240\u4ee5\u5982\u679c\u60a8\u6539\u4e86\u7a0b\u5e8f\u96c6\u540d\u79f0\u6216\u901a\u8fc7 ",(0,r.kt)("inlineCode",{parentName:"p"},"Nuget")," \u65b9\u5f0f\u5b89\u88c5\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u5305\uff0c\u5219\u9700\u8981\u914d\u7f6e\u8fc1\u79fb\u7a0b\u5e8f\u96c6\u540d\u79f0\uff1a"),(0,r.kt)("pre",{parentName:"div"},(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{4}","{4}":!0},'services.AddDatabaseAccessor(options =>\n{\n options.AddDbPool(DbProvider.Sqlite);\n}, "\u5b58\u653e\u8fc1\u79fb\u6587\u4ef6\u7684\u9879\u76ee\u540d\u79f0");\n')),(0,r.kt)("p",{parentName:"div"},"\u53e6\u5916\uff0c\u5982\u679c\u5e94\u7528\u4e2d\u914d\u7f6e\u4e86\u591a\u4e2a\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\uff0c\u90a3\u4e48\u6240\u6709\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"\u8fc1\u79fb\u547d\u4ee4")," \u90fd\u9700\u8981\u6307\u5b9a ",(0,r.kt)("inlineCode",{parentName:"p"},"-Context \u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u540d\u79f0")," \u53c2\u6570\u3002\u5982\uff1a"),(0,r.kt)("pre",{parentName:"div"},(0,r.kt)("code",{parentName:"pre",className:"language-shell"},"Add-Migration v1.0.0 -Context DefaultDbContext\n")))),(0,r.kt)("h2",{id:"902-\u53cd\u9988\u4e0e\u5efa\u8bae"},"9.0.2 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,r.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/a8677dec.29fd4569.js b/handbook/build/assets/js/a8677dec.29fd4569.js new file mode 100644 index 00000000000..daa00c52199 --- /dev/null +++ b/handbook/build/assets/js/a8677dec.29fd4569.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[4197],{3905:function(e,n,t){t.d(n,{Zo:function(){return c},kt:function(){return u}});var i=t(7294);function a(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function r(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);n&&(i=i.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,i)}return t}function l(e){for(var n=1;n=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var p=i.createContext({}),s=function(e){var n=i.useContext(p),t=n;return e&&(t="function"==typeof e?e(n):l(l({},n),e)),t},c=function(e){var n=s(e.components);return i.createElement(p.Provider,{value:n},e.children)},d={inlineCode:"code",wrapper:function(e){var n=e.children;return i.createElement(i.Fragment,{},n)}},m=i.forwardRef((function(e,n){var t=e.components,a=e.mdxType,r=e.originalType,p=e.parentName,c=o(e,["components","mdxType","originalType","parentName"]),m=s(t),u=a,k=m["".concat(p,".").concat(u)]||m[u]||d[u]||r;return t?i.createElement(k,l(l({ref:n},c),{},{components:t})):i.createElement(k,l({ref:n},c))}));function u(e,n){var t=arguments,a=n&&n.mdxType;if("string"==typeof e||a){var r=t.length,l=new Array(r);l[0]=m;var o={};for(var p in n)hasOwnProperty.call(n,p)&&(o[p]=n[p]);o.originalType=e,o.mdxType="string"==typeof e?e:a,l[1]=o;for(var s=2;sIOC/DI \u4f18\u7f3a\u70b9",id:"123-iocdi-\u4f18\u7f3a\u70b9",children:[]},{value:"12.4 \u4f9d\u8d56\u6ce8\u5165\u7684\u4e09\u79cd\u65b9\u5f0f",id:"124-\u4f9d\u8d56\u6ce8\u5165\u7684\u4e09\u79cd\u65b9\u5f0f",children:[{value:"12.4.1 \u6784\u9020\u65b9\u6cd5\u6ce8\u5165",id:"1241-\u6784\u9020\u65b9\u6cd5\u6ce8\u5165",children:[]},{value:"12.4.2 \u5c5e\u6027\u65b9\u5f0f\u6ce8\u5165",id:"1242-\u5c5e\u6027\u65b9\u5f0f\u6ce8\u5165",children:[]},{value:"12.4.3 \u65b9\u6cd5\u53c2\u6570\u6ce8\u5165",id:"1243-\u65b9\u6cd5\u53c2\u6570\u6ce8\u5165",children:[]}]},{value:"12.5 \u6ce8\u518c\u5bf9\u8c61\u751f\u5b58\u671f",id:"125-\u6ce8\u518c\u5bf9\u8c61\u751f\u5b58\u671f",children:[{value:"12.5.1 \u6682\u65f6/\u77ac\u65f6 \u751f\u5b58\u671f",id:"1251-\u6682\u65f6\u77ac\u65f6-\u751f\u5b58\u671f",children:[]},{value:"12.5.2 \u4f5c\u7528\u57df \u751f\u5b58\u671f",id:"1252-\u4f5c\u7528\u57df-\u751f\u5b58\u671f",children:[]},{value:"12.5.3 \u5355\u4f8b \u751f\u5b58\u671f",id:"1253-\u5355\u4f8b-\u751f\u5b58\u671f",children:[]}]},{value:"12.6 \u5185\u7f6e\u4f9d\u8d56\u63a5\u53e3",id:"126-\u5185\u7f6e\u4f9d\u8d56\u63a5\u53e3",children:[]},{value:"12.7 \u5e38\u89c1\u4f7f\u7528",id:"127-\u5e38\u89c1\u4f7f\u7528",children:[{value:"12.7.1 \u7b2c\u4e00\u4e2a\u4f8b\u5b50",id:"1271-\u7b2c\u4e00\u4e2a\u4f8b\u5b50",children:[]},{value:"12.7.2 \u6ce8\u518c\u6cdb\u578b\u5b9e\u4f8b",id:"1272-\u6ce8\u518c\u6cdb\u578b\u5b9e\u4f8b",children:[]},{value:"12.7.3 \u4e00\u4e2a\u63a5\u53e3\u591a\u4e2a\u5b9e\u73b0",id:"1273-\u4e00\u4e2a\u63a5\u53e3\u591a\u4e2a\u5b9e\u73b0",children:[]},{value:"12.7.4 \u65e0\u63a5\u53e3\u65b9\u5f0f",id:"1274-\u65e0\u63a5\u53e3\u65b9\u5f0f",children:[]}]},{value:"12.8 [Injection] \u7279\u6027\u914d\u7f6e",id:"128-injection-\u7279\u6027\u914d\u7f6e",children:[]},{value:"12.9 \u81ea\u5b9a\u4e49\u9ad8\u7ea7\u6ce8\u518c",id:"129-\u81ea\u5b9a\u4e49\u9ad8\u7ea7\u6ce8\u518c",children:[]},{value:"12.10 appsettings.json \u914d\u7f6e\u6ce8\u518c",id:"1210-appsettingsjson-\u914d\u7f6e\u6ce8\u518c",children:[]},{value:"12.11 \u6ce8\u518c\u987a\u5e8f\u548c\u4f18\u5148\u7ea7",id:"1211-\u6ce8\u518c\u987a\u5e8f\u548c\u4f18\u5148\u7ea7",children:[]},{value:"12.12 Aop \u6ce8\u518c\u62e6\u622a",id:"1212-aop-\u6ce8\u518c\u62e6\u622a",children:[{value:"12.12.1 \u5168\u5c40Aop\u62e6\u622a",id:"12121-\u5168\u5c40aop\u62e6\u622a",children:[]},{value:"12.12.2 AOP \u6ce8\u5165\u89e3\u6790\u670d\u52a1",id:"12122-aop-\u6ce8\u5165\u89e3\u6790\u670d\u52a1",children:[]},{value:"12.12.3 AOP \u7684\u4f5c\u7528",id:"12123-aop-\u7684\u4f5c\u7528",children:[]}]},{value:"12.13 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"1213-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],m={toc:d};function u(e){var n=e.components,t=(0,a.Z)(e,o);return(0,r.kt)("wrapper",(0,i.Z)({},m,t,{components:n,mdxType:"MDXLayout"}),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u9605\u524d\u5fc5\u8bfb")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u7531\u4e8e\u5f88\u591a\u670b\u53cb\u7b2c\u4e00\u6b21\u63a5\u89e6 ",(0,r.kt)("inlineCode",{parentName:"p"},"\u4f9d\u8d56\u6ce8\u5165/\u63a7\u5236\u53cd\u8f6c")," \u7684\u67b6\u6784\u7406\u5ff5\uff0c\u6240\u4ee5\u6ca1\u641e\u660e\u767d ",(0,r.kt)("inlineCode",{parentName:"p"},"\u4f5c\u7528\u57df")," \u548c ",(0,r.kt)("inlineCode",{parentName:"p"},"\u591a\u7ebf\u7a0b\u89e3\u6790\u670d\u52a1")," \u7684\u95ee\u9898\uff0c\u4ece\u800c\u4e0d\u6b63\u786e\u7684\u4f7f\u7528\u5bfc\u81f4\u5185\u5b58\u4e0d\u65ad\u98d9\u9ad8\uff0c\u6b63\u786e\u7684\u65b9\u5f0f\u5e94\u8be5\u662f\uff1a"),(0,r.kt)("ul",{parentName:"div"},(0,r.kt)("li",{parentName:"ul"},"\u5c3d\u53ef\u80fd\u7684\u91c7\u7528\u6784\u9020\u51fd\u6570\u6ce8\u5165\uff08\u5982\u679c\u8fd9\u4e2a\u7c7b\u652f\u6301\uff09"),(0,r.kt)("li",{parentName:"ul"},"\u5728\u975e\u9759\u6001\u4e2d\uff08",(0,r.kt)("strong",{parentName:"li"},"\u4f46\u5728 Web \u8bf7\u6c42\u6709\u6548\u7684\u58f0\u660e\u5468\u671f\u5185"),"\uff09\u53ef\u5b89\u5168\u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"li"},"App.GetService<>")," \u89e3\u6790\u670d\u52a1\uff0c\u5982\u679c\u662f ",(0,r.kt)("inlineCode",{parentName:"li"},"\u5355\u4f8b\u670d\u52a1"),"\uff0c\u4f18\u5148\u63a8\u8350\u6784\u9020\u51fd\u6570\u6ce8\u5165\u6216 ",(0,r.kt)("inlineCode",{parentName:"li"},"App.RootServices.GetService<>")," \u65b9\u5f0f"),(0,r.kt)("li",{parentName:"ul"},"\ud83e\udd10 ",(0,r.kt)("strong",{parentName:"li"},"\u5728\u975e ",(0,r.kt)("inlineCode",{parentName:"strong"},"Web")," \u73af\u5883\u3001\u591a\u7ebf\u7a0b\u73af\u5883\u3001\u7269\u8054\u7f51\u7b49\u73af\u5883\uff08\u542b\u4e8b\u4ef6\u603b\u7ebf\u3001\u5b9a\u65f6\u4efb\u52a1\u7b49\uff09\ud83c\udfd2 \u9664\u5355\u4f8b\u670d\u52a1\u4ee5\u5916 \ud83c\udfd2 \u5fc5\u987b\u91c7\u7528 ",(0,r.kt)("inlineCode",{parentName:"strong"},"Scoped.Create()")," \u65b9\u5f0f\u521b\u5efa\u4f5c\u7528\u57df\u4e14\u670d\u52a1\u5728\u5185\u90e8\u59d4\u6258\u4e2d\u89e3\u6790\uff01")," \ud83e\udd10")))),(0,r.kt)("h2",{id:"121-\u4f9d\u8d56\u6ce8\u5165"},"12.1 \u4f9d\u8d56\u6ce8\u5165"),(0,r.kt)("p",null,"\u6240\u8c13\u4f9d\u8d56\u6ce8\u5165\uff0c\u662f\u6307\u7a0b\u5e8f\u8fd0\u884c\u8fc7\u7a0b\u4e2d\uff0c\u5982\u679c\u9700\u8981\u8c03\u7528\u53e6\u4e00\u4e2a\u5bf9\u8c61\u534f\u52a9\u65f6\uff0c\u65e0\u987b\u5728\u4ee3\u7801\u4e2d\u521b\u5efa\u88ab\u8c03\u7528\u8005\uff0c\u800c\u662f\u4f9d\u8d56\u4e8e\u5916\u90e8\u7684\u6ce8\u5165\u3002"),(0,r.kt)("p",null,"\u901a\u4fd7\u6765\u8bb2\uff0c\u5c31\u662f\u628a\u6709\u4f9d\u8d56\u5173\u7cfb\u7684\u7c7b\u653e\u5230\u5bb9\u5668\u4e2d\uff0c\u7136\u540e\u5728\u6211\u4eec\u9700\u8981\u8fd9\u4e9b\u7c7b\u65f6\uff0c\u5bb9\u5668\u81ea\u52a8\u89e3\u6790\u51fa\u8fd9\u4e9b\u7c7b\u7684\u5b9e\u4f8b\u3002"),(0,r.kt)("p",null,"\u4f9d\u8d56\u6ce8\u5165\u6700\u5927\u7684\u597d\u5904\u65f6\u5b9e\u73b0\u7c7b\u7684\u89e3\u8026\uff0c\u5229\u4e8e\u7a0b\u5e8f\u62d3\u5c55\u3001\u5355\u5143\u6d4b\u8bd5\u3001\u81ea\u52a8\u5316\u6a21\u62df\u6d4b\u8bd5\u7b49\u3002"),(0,r.kt)("p",null,"\u4f9d\u8d56\u6ce8\u5165\u7684\u82f1\u6587\u4e3a\uff1a",(0,r.kt)("inlineCode",{parentName:"p"},"Dependency Injection"),"\uff0c\u7b80\u79f0 ",(0,r.kt)("inlineCode",{parentName:"p"},"DI")),(0,r.kt)("h2",{id:"122-\u63a7\u5236\u53cd\u8f6c"},"12.2 \u63a7\u5236\u53cd\u8f6c"),(0,r.kt)("p",null,"\u63a7\u5236\u53cd\u8f6c\u53ea\u662f\u4e00\u4e2a\u6982\u5ff5\uff0c\u4e5f\u5c31\u662f\u5c06\u521b\u5efa\u5bf9\u8c61\u5b9e\u4f8b\u7684\u63a7\u5236\u6743\uff08\u539f\u672c\u662f\u7a0b\u5e8f\u5458\uff09\u4ece\u4ee3\u7801\u63a7\u5236\u6743\u5265\u79bb\u5230 ",(0,r.kt)("inlineCode",{parentName:"p"},"IOC \u5bb9\u5668")," \u4e2d\u63a7\u5236\u3002"),(0,r.kt)("p",null,"\u63a7\u5236\u53cd\u8f6c\u7684\u82f1\u6587\u4e3a\uff1a",(0,r.kt)("inlineCode",{parentName:"p"},"Inversion of Control"),"\uff0c\u7b80\u79f0 ",(0,r.kt)("inlineCode",{parentName:"p"},"IOC")),(0,r.kt)("h2",{id:"123-iocdi-\u4f18\u7f3a\u70b9"},"12.3 ",(0,r.kt)("inlineCode",{parentName:"h2"},"IOC/DI")," \u4f18\u7f3a\u70b9"),(0,r.kt)("p",null,"\u4f20\u7edf\u7684\u4ee3\u7801\uff0c\u6bcf\u4e2a\u5bf9\u8c61\u8d1f\u8d23\u7ba1\u7406\u4e0e\u81ea\u5df1\u9700\u8981\u4f9d\u8d56\u7684\u5bf9\u8c61\uff0c\u5bfc\u81f4\u5982\u679c\u9700\u8981\u5207\u6362\u4f9d\u8d56\u5bf9\u8c61\u7684\u5b9e\u73b0\u7c7b\u65f6\uff0c\u9700\u8981\u4fee\u6539\u591a\u5904\u5730\u65b9\u3002\u540c\u65f6\uff0c\u8fc7\u5ea6\u8026\u5408\u4e5f\u4f7f\u5f97\u5bf9\u8c61\u96be\u4ee5\u8fdb\u884c\u5355\u5143\u6d4b\u8bd5\u3002"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"\u4f18\u70b9"),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"\u4f9d\u8d56\u6ce8\u5165\u628a\u5bf9\u8c61\u7684\u521b\u9020\u4ea4\u7ed9\u5916\u90e8\u53bb\u7ba1\u7406,\u5f88\u597d\u7684\u89e3\u51b3\u4e86\u4ee3\u7801\u7d27\u8026\u5408\uff08tight couple\uff09\u7684\u95ee\u9898\uff0c\u662f\u4e00\u79cd\u8ba9\u4ee3\u7801\u5b9e\u73b0\u677e\u8026\u5408\uff08loose couple\uff09\u7684\u673a\u5236"),(0,r.kt)("li",{parentName:"ul"},"\u677e\u8026\u5408\u8ba9\u4ee3\u7801\u66f4\u5177\u7075\u6d3b\u6027\uff0c\u80fd\u66f4\u597d\u5730\u5e94\u5bf9\u9700\u6c42\u53d8\u52a8\uff0c\u4ee5\u53ca\u65b9\u4fbf\u5355\u5143\u6d4b\u8bd5"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"\u7f3a\u70b9"),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"\u76ee\u524d\u4e3b\u6d41\u7684 ",(0,r.kt)("inlineCode",{parentName:"li"},"IOC/DI")," \u57fa\u672c\u91c7\u7528\u53cd\u5c04\u7684\u65b9\u5f0f\u6765\u5b9e\u73b0\u4f9d\u8d56\u6ce8\u5165\uff0c\u5728\u4e00\u5b9a\u7a0b\u5ea6\u4f1a\u5f71\u54cd\u6027\u80fd")))),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u8bf4\u660e")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u5728\u672c\u7ae0\u8282\u4e0d\u6253\u7b97\u7ec6\u8bb2 ",(0,r.kt)("inlineCode",{parentName:"p"},"\u4f9d\u8d56\u6ce8\u5165/\u63a7\u5236\u53cd\u8f6c")," \u5177\u4f53\u5b9e\u73b0\u548c\u5e94\u7528\u573a\u666f\uff0c\u60f3\u4e86\u89e3\u66f4\u591a\u77e5\u8bc6\uff0c\u53ef\u67e5\u9605 \u3010",(0,r.kt)("a",{parentName:"p",href:"https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/dependency-injection?view=aspnetcore-5.0"},"ASP.NET Core \u4f9d\u8d56\u6ce8\u5165"),"\u3011 \u5b98\u65b9\u6587\u6863\u3002"))),(0,r.kt)("h2",{id:"124-\u4f9d\u8d56\u6ce8\u5165\u7684\u4e09\u79cd\u65b9\u5f0f"},"12.4 \u4f9d\u8d56\u6ce8\u5165\u7684\u4e09\u79cd\u65b9\u5f0f"),(0,r.kt)("h3",{id:"1241-\u6784\u9020\u65b9\u6cd5\u6ce8\u5165"},"12.4.1 \u6784\u9020\u65b9\u6cd5\u6ce8\u5165"),(0,r.kt)("p",null,"\u76ee\u524d\u6784\u9020\u65b9\u6cd5\u6ce8\u5165\u662f\u4f9d\u8d56\u6ce8\u5165\u63a8\u8350\u4f7f\u7528\u65b9\u5f0f\u3002"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"\u4f18\u70b9"),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"\u5728\u6784\u9020\u65b9\u6cd5\u4e2d\u4f53\u73b0\u51fa\u5bf9\u5176\u4ed6\u7c7b\u7684\u4f9d\u8d56\uff0c\u4e00\u773c\u5c31\u80fd\u770b\u51fa\u8fd9\u4e2a\u7c7b\u9700\u8981\u4f9d\u8d56\u54ea\u4e9b\u7c7b\u624d\u80fd\u5de5\u4f5c"),(0,r.kt)("li",{parentName:"ul"},"\u8131\u79bb\u4e86 IOC \u6846\u67b6\uff0c\u8fd9\u4e2a\u7c7b\u4ecd\u7136\u53ef\u4ee5\u5de5\u4f5c\uff0cPOJO \u7684\u6982\u5ff5"),(0,r.kt)("li",{parentName:"ul"},"\u4e00\u65e6\u5bf9\u8c61\u521d\u59cb\u5316\u6210\u529f\u4e86\uff0c\u8fd9\u4e2a\u5bf9\u8c61\u7684\u72b6\u6001\u80af\u5b9a\u662f\u6b63\u786e\u7684"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"\u7f3a\u70b9"),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"\u6784\u9020\u51fd\u6570\u4f1a\u6709\u5f88\u591a\u53c2\u6570\uff08Bad smell\uff09"),(0,r.kt)("li",{parentName:"ul"},"\u6709\u4e9b\u7c7b\u662f\u9700\u8981\u9ed8\u8ba4\u6784\u9020\u51fd\u6570\u7684\uff0c\u6bd4\u5982 MVC \u6846\u67b6\u7684 Controller \u7c7b\uff0c\u4e00\u65e6\u4f7f\u7528\u6784\u9020\u51fd\u6570\u6ce8\u5165\uff0c\u5c31\u65e0\u6cd5\u4f7f\u7528\u9ed8\u8ba4\u6784\u9020\u51fd\u6570"),(0,r.kt)("li",{parentName:"ul"},"\u8fd9\u4e2a\u7c7b\u91cc\u9762\u7684\u6709\u4e9b\u65b9\u6cd5\u5e76\u4e0d\u9700\u8981\u7528\u5230\u8fd9\u4e9b\u4f9d\u8d56\uff08Bad smell\uff09")))),(0,r.kt)("p",null,"\u4ee3\u7801\u793a\u4f8b\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{4}","{4}":!0},"public class FurionService\n{\n private readonly IRepository _repository;\n public FurionService(IRepository repository)\n {\n _repository = repository;\n }\n}\n")),(0,r.kt)("h3",{id:"1242-\u5c5e\u6027\u65b9\u5f0f\u6ce8\u5165"},"12.4.2 \u5c5e\u6027\u65b9\u5f0f\u6ce8\u5165"),(0,r.kt)("div",{className:"admonition admonition-warning alert alert--danger"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"}))),"\u7279\u522b\u58f0\u660e")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u65b0\u7248\u672c\u4e2d\uff0c\u5df2\u7ecf\u79fb\u9664\u5c5e\u6027\u6ce8\u5165\u529f\u80fd\uff0c\u5efa\u8bae\u4f7f\u7528\u6784\u9020\u51fd\u6570\u6216\u65b9\u6cd5\u65b9\u5f0f\u6ce8\u5165\uff0c\u4e5f\u53ef\u4ee5\u901a\u8fc7 ",(0,r.kt)("inlineCode",{parentName:"p"},"App.GetService")," \u65b9\u5f0f\u6ce8\u5165\u3002"))),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"\u901a\u8fc7\u5c5e\u6027\u65b9\u5f0f\u6ce8\u5165\u5bb9\u6613\u548c\u7c7b\u7684\u5b9e\u4f8b\u5c5e\u6027\u6df7\u6dc6\uff0c\u4e0d\u5efa\u8bae\u4f7f\u7528\u3002")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"\u4f18\u70b9"),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"\u5728\u5bf9\u8c61\u7684\u6574\u4e2a\u751f\u547d\u5468\u671f\u5185\uff0c\u53ef\u4ee5\u968f\u65f6\u52a8\u6001\u7684\u6539\u53d8\u4f9d\u8d56"),(0,r.kt)("li",{parentName:"ul"},"\u975e\u5e38\u7075\u6d3b"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"\u7f3a\u70b9"),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"\u5bf9\u8c61\u5728\u521b\u5efa\u540e\uff0c\u88ab\u8bbe\u7f6e\u4f9d\u8d56\u5bf9\u8c61\u4e4b\u524d\u8fd9\u6bb5\u65f6\u95f4\u72b6\u6001\u662f\u4e0d\u5bf9\u7684"),(0,r.kt)("li",{parentName:"ul"},"\u4e0d\u76f4\u89c2\uff0c\u65e0\u6cd5\u6e05\u6670\u5730\u8868\u793a\u54ea\u4e9b\u5c5e\u6027\u662f\u5fc5\u987b\u7684")))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{3}","{3}":!0},"public class FurionService\n{\n public IRepository Repository { get; set; }\n}\n")),(0,r.kt)("h3",{id:"1243-\u65b9\u6cd5\u53c2\u6570\u6ce8\u5165"},"12.4.3 \u65b9\u6cd5\u53c2\u6570\u6ce8\u5165"),(0,r.kt)("p",null,"\u65b9\u6cd5\u53c2\u6570\u6ce8\u5165\u7684\u610f\u601d\u662f\u5728\u521b\u5efa\u5bf9\u8c61\u540e\uff0c\u901a\u8fc7\u81ea\u52a8\u8c03\u7528\u67d0\u4e2a\u65b9\u6cd5\u6765\u6ce8\u5165\u4f9d\u8d56\u3002"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"\u4f18\u70b9\uff1a"),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"\u6bd4\u8f83\u7075\u6d3b"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"\u7f3a\u70b9\uff1a"),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"\u65b0\u52a0\u5165\u4f9d\u8d56\u65f6\u4f1a\u7834\u574f\u539f\u6709\u7684\u65b9\u6cd5\u7b7e\u540d\uff0c\u5982\u679c\u8fd9\u4e2a\u65b9\u6cd5\u5df2\u7ecf\u88ab\u5176\u4ed6\u5f88\u591a\u6a21\u5757\u7528\u5230\u5c31\u5f88\u9ebb\u70e6"),(0,r.kt)("li",{parentName:"ul"},"\u4e0e\u6784\u9020\u65b9\u6cd5\u6ce8\u5165\u4e00\u6837\uff0c\u4f1a\u6709\u5f88\u591a\u53c2\u6570")))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{3}","{3}":!0},"public class FurionService\n{\n public Person GetById([FromServices]IRepository repository, int id)\n {\n return repository.Find(id);\n }\n}\n")),(0,r.kt)("h2",{id:"125-\u6ce8\u518c\u5bf9\u8c61\u751f\u5b58\u671f"},"12.5 \u6ce8\u518c\u5bf9\u8c61\u751f\u5b58\u671f"),(0,r.kt)("h3",{id:"1251-\u6682\u65f6\u77ac\u65f6-\u751f\u5b58\u671f"},"12.5.1 ",(0,r.kt)("inlineCode",{parentName:"h3"},"\u6682\u65f6/\u77ac\u65f6")," \u751f\u5b58\u671f"),(0,r.kt)("p",null,"\u6682\u65f6\u751f\u5b58\u671f\u670d\u52a1\u662f\u6bcf\u6b21\u4ece\u670d\u52a1\u5bb9\u5668\u8fdb\u884c\u8bf7\u6c42\u65f6\u521b\u5efa\u7684\u3002 \u8fd9\u79cd\u751f\u5b58\u671f\u9002\u5408\u8f7b\u91cf\u7ea7\u3001 \u65e0\u72b6\u6001\u7684\u670d\u52a1\u3002"),(0,r.kt)("p",null,"\u5728\u5904\u7406\u8bf7\u6c42\u7684\u5e94\u7528\u4e2d\uff0c\u5728\u8bf7\u6c42\u7ed3\u675f\u65f6\u4f1a\u91ca\u653e\u6682\u65f6\u670d\u52a1\u3002"),(0,r.kt)("p",null,"\u901a\u5e38\u6211\u4eec\u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"ITransient")," \u63a5\u53e3\u4f9d\u8d56\u8868\u793a\u8be5\u751f\u547d\u5468\u671f\u3002"),(0,r.kt)("h3",{id:"1252-\u4f5c\u7528\u57df-\u751f\u5b58\u671f"},"12.5.2 ",(0,r.kt)("inlineCode",{parentName:"h3"},"\u4f5c\u7528\u57df")," \u751f\u5b58\u671f"),(0,r.kt)("p",null,"\u4f5c\u7528\u57df\u751f\u5b58\u671f\u670d\u52a1\u9488\u5bf9\u6bcf\u4e2a\u5ba2\u6237\u7aef\u8bf7\u6c42\uff08\u8fde\u63a5\uff09\u521b\u5efa\u4e00\u6b21\u3002\u5728\u5904\u7406\u8bf7\u6c42\u7684\u5e94\u7528\u4e2d\uff0c\u5728\u8bf7\u6c42\u7ed3\u675f\u65f6\u4f1a\u91ca\u653e\u6709\u4f5c\u7528\u57df\u7684\u670d\u52a1\u3002"),(0,r.kt)("p",null,"\u901a\u5e38\u6211\u4eec\u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"IScoped")," \u63a5\u53e3\u4f9d\u8d56\u8868\u793a\u8be5\u751f\u547d\u5468\u671f\u3002"),(0,r.kt)("h3",{id:"1253-\u5355\u4f8b-\u751f\u5b58\u671f"},"12.5.3 ",(0,r.kt)("inlineCode",{parentName:"h3"},"\u5355\u4f8b")," \u751f\u5b58\u671f"),(0,r.kt)("p",null,"\u5728\u9996\u6b21\u8bf7\u6c42\u5b83\u4eec\u65f6\u8fdb\u884c\u521b\u5efa\uff0c\u4e4b\u540e\u6bcf\u4e2a\u540e\u7eed\u8bf7\u6c42\u90fd\u4f7f\u7528\u76f8\u540c\u7684\u5b9e\u4f8b\u3002"),(0,r.kt)("p",null,"\u901a\u5e38\u6211\u4eec\u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"ISingleton")," \u63a5\u53e3\u4f9d\u8d56\u8868\u793a\u8be5\u751f\u547d\u5468\u671f\u3002"),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e86\u89e3\u66f4\u591a")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u60f3\u4e86\u89e3\u66f4\u591a ",(0,r.kt)("inlineCode",{parentName:"p"},"\u670d\u52a1\u751f\u5b58\u671f")," \u77e5\u8bc6\u53ef\u67e5\u9605 ",(0,r.kt)("a",{parentName:"p",href:"https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/dependency-injection?view=aspnetcore-5.0#service-lifetimes"},"ASP.NET Core - \u4f9d\u8d56\u6ce8\u5165 - \u670d\u52a1\u751f\u5b58\u671f")," \u7ae0\u8282\u3002"))),(0,r.kt)("h2",{id:"126-\u5185\u7f6e\u4f9d\u8d56\u63a5\u53e3"},"12.6 \u5185\u7f6e\u4f9d\u8d56\u63a5\u53e3"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u4e09\u4e2a\u63a5\u53e3\u4f9d\u8d56\u5206\u522b\u5bf9\u5e94\u4e0d\u540c\u7684\u670d\u52a1\u751f\u5b58\u671f\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"ITransient"),"\uff1a\u5bf9\u5e94\u6682\u65f6/\u77ac\u65f6\u4f5c\u7528\u57df\u670d\u52a1\u751f\u5b58\u671f"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"IScoped"),"\uff1a\u5bf9\u5e94\u8bf7\u6c42\u4f5c\u7528\u57df\u670d\u52a1\u751f\u5b58\u671f"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"ISingleton"),"\uff1a\u5bf9\u5e94\u5355\u4f8b\u4f5c\u7528\u57df\u670d\u52a1\u751f\u5b58\u671f")),(0,r.kt)("div",{className:"admonition admonition-warning alert alert--danger"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"}))),"\u7279\u522b\u6ce8\u610f")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u4ee5\u4e0a\u4e09\u4e2a\u63a5\u53e3\u53ea\u80fd\u5b9e\u4f8b\u7c7b\u5b9e\u73b0\uff0c\u5176\u4ed6\u9759\u6001\u7c7b\u3001\u62bd\u8c61\u7c7b\u3001\u53ca\u63a5\u53e3\u4e0d\u80fd\u5b9e\u73b0\u3002"))),(0,r.kt)("h2",{id:"127-\u5e38\u89c1\u4f7f\u7528"},"12.7 \u5e38\u89c1\u4f7f\u7528"),(0,r.kt)("h3",{id:"1271-\u7b2c\u4e00\u4e2a\u4f8b\u5b50"},"12.7.1 \u7b2c\u4e00\u4e2a\u4f8b\u5b50"),(0,r.kt)("p",null,"\u521b\u5efa ",(0,r.kt)("inlineCode",{parentName:"p"},"IBusinessService")," \u63a5\u53e3\u548c ",(0,r.kt)("inlineCode",{parentName:"p"},"BusinessService")," \u5b9e\u73b0\u7c7b\uff0c\u4ee3\u7801\u5982\u4e0b\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{7,12}","{7,12}":!0},"using Furion.Core;\nusing Furion.DatabaseAccessor;\nusing Furion.DependencyInjection;\n\nnamespace Furion.Application\n{\n public interface IBusinessService\n {\n Person Get(int id);\n }\n\n public class BusinessService : IBusinessService, ITransient\n {\n private readonly IRepository _personRepository;\n\n public BusinessService(IRepository personRepository)\n {\n _personRepository = personRepository;\n }\n\n public Person Get(int id)\n {\n return _personRepository.Find(id);\n }\n }\n}\n")),(0,r.kt)("p",null,"\u521b\u5efa ",(0,r.kt)("inlineCode",{parentName:"p"},"PersonController")," \u63a7\u5236\u5668\uff0c\u4ee3\u7801\u5982\u4e0b\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{11,19}","{11,19}":!0},'using Furion.Application;\nusing Microsoft.AspNetCore.Mvc;\n\nnamespace Furion.Web.Entry.Controllers\n{\n [Route("api/[controller]")]\n [ApiController]\n public class PersonController : ControllerBase\n {\n private readonly IBusinessService _businessService;\n public PersonController(IBusinessService businessService)\n {\n _businessService = businessService;\n }\n\n [HttpGet]\n public IActionResult Get(int id)\n {\n var person = _businessService.Get(id);\n return new JsonResult(person);\n }\n }\n}\n')),(0,r.kt)("img",{src:(0,l.Z)("img/di1.gif")}),(0,r.kt)("hr",null),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"\u4f8b\u5b50\u89e3\u8bf4")),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u4e86\u975e\u5e38\u7075\u6d3b\u4e14\u65b9\u4fbf\u7684\u5b9e\u73b0\u4f9d\u8d56\u6ce8\u5165\u7684\u65b9\u5f0f\uff0c\u53ea\u9700\u8981\u5b9e\u4f8b\u7c7b\u7ee7\u627f\u5bf9\u5e94\u751f\u5b58\u671f\u7684\u63a5\u53e3\u5373\u53ef\uff0c\u8fd9\u91cc\u7ee7\u627f\u4e86 ",(0,r.kt)("inlineCode",{parentName:"p"},"ITransient"),"\uff0c\u4e5f\u5c31\u8868\u660e\u4e86\u8fd9\u662f\u4e00\u4e2a ",(0,r.kt)("inlineCode",{parentName:"p"},"\u6682\u65f6/\u77ac\u65f6")," \u4f5c\u7528\u57df\u5b9e\u4f8b\u7c7b\u3002\u8be5\u7c7b\u5c31\u53ef\u4ee5\u4f5c\u4e3a\u88ab\u6ce8\u5165\u5bf9\u8c61\uff0c\u540c\u65f6\u4e5f\u80fd\u6ce8\u5165\u5176\u4ed6\u63a5\u53e3\u5bf9\u8c61\u3002"),(0,r.kt)("p",null,"\u4e0a\u9762\u7684\u4f8b\u5b50\u4e2d\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"BusinessService")," \u6ce8\u5165\u4e86 ",(0,r.kt)("inlineCode",{parentName:"p"},"IRepository")," \u4ed3\u50a8\u63a5\u53e3\uff0c\u540c\u65f6 ",(0,r.kt)("inlineCode",{parentName:"p"},"PersonController")," \u63a7\u5236\u5668\u6ce8\u5165\u4e86 ",(0,r.kt)("inlineCode",{parentName:"p"},"IBusinessService")," \u63a5\u53e3\u3002"),(0,r.kt)("p",null,"\u8fd9\u6837 ",(0,r.kt)("inlineCode",{parentName:"p"},"PersonController")," \u548c ",(0,r.kt)("inlineCode",{parentName:"p"},"BusinessService")," \u4e4b\u95f4\u5c31\u5b9e\u73b0\u4e86\u89e3\u8026\uff0c\u4e0d\u518d\u4f9d\u8d56\u4e8e\u5177\u4f53\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"BusinessService")," \u5b9e\u4f8b\u3002"),(0,r.kt)("p",null,"\u8fd9\u5c31\u662f\u4f9d\u8d56\u6ce8\u5165/\u63a7\u5236\u53cd\u8f6c\u6700\u7ecf\u5178\u7684\u4f8b\u5b50\u3002"),(0,r.kt)("h3",{id:"1272-\u6ce8\u518c\u6cdb\u578b\u5b9e\u4f8b"},"12.7.2 \u6ce8\u518c\u6cdb\u578b\u5b9e\u4f8b"),(0,r.kt)("p",null,"\u521b\u5efa ",(0,r.kt)("inlineCode",{parentName:"p"},"IBusinessService")," \u63a5\u53e3\u548c ",(0,r.kt)("inlineCode",{parentName:"p"},"BusinessService")," \u5b9e\u73b0\u7c7b\uff0c\u4ee3\u7801\u5982\u4e0b\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{7,12}","{7,12}":!0},"using Furion.Core;\nusing Furion.DatabaseAccessor;\nusing Furion.DependencyInjection;\n\nnamespace Furion.Application\n{\n public interface IBusinessService\n {\n Person Get(int id);\n }\n\n public class BusinessService : IBusinessService, ITransient\n {\n private readonly IRepository _personRepository;\n\n public BusinessService(IRepository personRepository)\n {\n _personRepository = personRepository;\n }\n\n public Person Get(int id)\n {\n return _personRepository.Find(id);\n }\n }\n}\n")),(0,r.kt)("p",null,"\u521b\u5efa ",(0,r.kt)("inlineCode",{parentName:"p"},"PersonController")," \u63a7\u5236\u5668\uff0c\u4ee3\u7801\u5982\u4e0b\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{11,19}","{11,19}":!0},'using Furion.Application;\nusing Microsoft.AspNetCore.Mvc;\n\nnamespace Furion.Web.Entry.Controllers\n{\n [Route("api/[controller]")]\n [ApiController]\n public class PersonController : ControllerBase\n {\n private readonly IBusinessService _businessService;\n public PersonController(IBusinessService businessService)\n {\n _businessService = businessService;\n }\n\n [HttpGet]\n public IActionResult Get(int id)\n {\n var person = _businessService.Get(id);\n return new JsonResult(person);\n }\n }\n}\n')),(0,r.kt)("h3",{id:"1273-\u4e00\u4e2a\u63a5\u53e3\u591a\u4e2a\u5b9e\u73b0"},"12.7.3 \u4e00\u4e2a\u63a5\u53e3\u591a\u4e2a\u5b9e\u73b0"),(0,r.kt)("p",null,"\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c\u4e00\u4e2a\u63a5\u53e3\u53ea\u5bf9\u5e94\u4e00\u4e2a\u5b9e\u73b0\u7c7b\uff0c\u4f46\u6709\u4e9b\u7279\u6b8a\u60c5\u51b5\uff0c\u9700\u8981\u591a\u4e2a\u5b9e\u73b0\u7c7b\u6ce8\u518c\u540c\u4e00\u4e2a\u63a5\u53e3\uff0c\u5982 ",(0,r.kt)("inlineCode",{parentName:"p"},"DbContext")," \u591a\u6570\u636e\u5e93\u60c5\u51b5\u3002"),(0,r.kt)("p",null,"\u8fd9\u4e2a\u65f6\u5019\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7\u4f9d\u8d56\u6ce8\u5165 ",(0,r.kt)("inlineCode",{parentName:"p"},"Func")," \u59d4\u6258\u6765\u89e3\u6790\u591a\u4e2a\u5b9e\u4f8b\uff0c\u5176\u4e2d\u59d4\u6258\u7684\u53c2\u6570\u5206\u522b\u4e3a\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u53c2\u6570 1\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"string")," \u7c7b\u578b\uff0c\u4e0d\u540c\u5b9e\u73b0\u7c7b\u552f\u4e00\u6807\u8bc6\uff0c\u9ed8\u8ba4\u4e3a ",(0,r.kt)("inlineCode",{parentName:"li"},"nameof(\u5b9e\u73b0\u7c7b)")," \u540d\u79f0"),(0,r.kt)("li",{parentName:"ul"},"\u53c2\u6570 2\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"Type")," \u7c7b\u578b\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"IPrivateDependency")," \u6d3e\u751f\u63a5\u53e3\uff0c\u4e5f\u5c31\u662f ",(0,r.kt)("inlineCode",{parentName:"li"},"ITransient"),"\u3001",(0,r.kt)("inlineCode",{parentName:"li"},"IScoped"),"\u3001",(0,r.kt)("inlineCode",{parentName:"li"},"ISingleton")),(0,r.kt)("li",{parentName:"ul"},"\u8fd4\u56de\u503c\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"object")," \u7c7b\u578b\uff0c\u8fd4\u56de\u5177\u4f53\u7684\u5b9e\u73b0\u7c7b\u5b9e\u4f8b")),(0,r.kt)("p",null,"\u521b\u5efa ",(0,r.kt)("inlineCode",{parentName:"p"},"IBusinessService")," \u63a5\u53e3\u548c ",(0,r.kt)("inlineCode",{parentName:"p"},"BusinessService"),"\u3001",(0,r.kt)("inlineCode",{parentName:"p"},"OtherBusinessService")," \u4e24\u4e2a\u5b9e\u73b0\u7c7b\uff0c\u4ee3\u7801\u5982\u4e0b\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{5,10,18}","{5,10,18}":!0},'using Furion.DependencyInjection;\n\nnamespace Furion.Application\n{\n public interface IBusinessService\n {\n string GetName();\n }\n\n public class BusinessService : IBusinessService, ITransient\n {\n public string GetName()\n {\n return "\u6211\u662f\uff1a" + nameof(BusinessService);\n }\n }\n\n public class OtherBusinessService : IBusinessService, ITransient\n {\n public string GetName()\n {\n return "\u6211\u662f\uff1a" + nameof(OtherBusinessService);\n }\n }\n}\n')),(0,r.kt)("p",null,"\u521b\u5efa ",(0,r.kt)("inlineCode",{parentName:"p"},"ValueController")," \u63a7\u5236\u5668\uff0c\u4ee3\u7801\u5982\u4e0b\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{15,17,18}","{15,17,18}":!0},'using Furion.Application;\nusing Furion.DependencyInjection;\nusing Microsoft.AspNetCore.Mvc;\nusing System;\n\nnamespace Furion.Web.Entry.Controllers\n{\n [Route("api/[controller]")]\n [ApiController]\n public class ValueController : ControllerBase\n {\n private readonly IBusinessService _businessService;\n private readonly IBusinessService _otherBusinessService;\n\n public ValueController(Func resolveNamed)\n {\n _businessService = resolveNamed("BusinessService", default) as IBusinessService;\n _otherBusinessService = resolveNamed("OtherBusinessService", default) as IBusinessService;\n }\n\n [HttpGet]\n public string GetName()\n {\n return _businessService.GetName() + "----------" + _otherBusinessService.GetName();\n }\n }\n}\n')),(0,r.kt)("img",{src:(0,l.Z)("img/di2.gif")}),(0,r.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u5c0f\u77e5\u8bc6")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u5982\u679c\u9700\u8981\u81ea\u5b9a\u4e49\u89e3\u6790\u540d\u79f0\uff0c\u53ea\u9700\u8981\u8d34 ",(0,r.kt)("inlineCode",{parentName:"p"},'[Injection(Named = "\u540d\u79f0")]')," \u5373\u53ef\uff0c\u5982\uff1a"),(0,r.kt)("pre",{parentName:"div"},(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{5,11}","{5,11}":!0},'using Furion.DependencyInjection;\n\nnamespace Furion.Application\n{\n [Injection(Named = "BusName1")]\n public class BusinessService : IBusinessService, ITransient\n {\n // ...\n }\n\n [Injection(Named = "BusName2")]\n public class OtherBusinessService : IBusinessService, ITransient\n {\n // ...\n }\n}\n')),(0,r.kt)("p",{parentName:"div"},"\u89e3\u6790\u670d\u52a1\uff1a"),(0,r.kt)("pre",{parentName:"div"},(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'_businessService = resolveNamed("BusName1", default) as IBusinessService;\n_otherBusinessService = resolveNamed("BusName2", default) as IBusinessService;\n')))),(0,r.kt)("h3",{id:"1274-\u65e0\u63a5\u53e3\u65b9\u5f0f"},"12.7.4 \u65e0\u63a5\u53e3\u65b9\u5f0f"),(0,r.kt)("p",null,"\u6709\u4e9b\u65f6\u5019\uff0c\u6211\u4eec\u4e0d\u60f3\u5b9a\u4e49\u63a5\u53e3\uff0c\u800c\u662f\u60f3\u628a\u5b9e\u4f8b\u7c7b\u4f5c\u4e3a\u53ef\u4f9d\u8d56\u6ce8\u5165\u7684\u5bf9\u8c61\uff0c\u5982 MVC \u4e2d\u7684\u63a7\u5236\u5668\u3002"),(0,r.kt)("p",null,"\u521b\u5efa ",(0,r.kt)("inlineCode",{parentName:"p"},"SelfService")," \u5b9e\u4f8b\u7c7b\uff0c\u4ee3\u7801\u5982\u4e0b\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{7,11}","{7,11}":!0},"using Furion.Core;\nusing Furion.DatabaseAccessor;\nusing Furion.DependencyInjection;\n\nnamespace Furion.Application\n{\n public class SelfService : ITransient\n {\n private readonly IRepository _personRepository;\n\n public SelfService(IRepository personRepository)\n {\n _personRepository = personRepository;\n }\n\n public Person Get(int id)\n {\n return _personRepository.Find(id);\n }\n }\n}\n")),(0,r.kt)("p",null,"\u521b\u5efa ",(0,r.kt)("inlineCode",{parentName:"p"},"ValueController")," \u63a7\u5236\u5668\uff0c\u4ee3\u7801\u5982\u4e0b\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{13,21}","{13,21}":!0},'using Furion.Application;\nusing Furion.Core;\nusing Microsoft.AspNetCore.Mvc;\n\nnamespace Furion.Web.Entry.Controllers\n{\n [Route("api/[controller]")]\n [ApiController]\n public class ValueController : ControllerBase\n {\n private readonly SelfService _selfService;\n\n public ValueController(SelfService selfService)\n {\n _selfService = selfService;\n }\n\n [HttpGet]\n public Person Get(int id)\n {\n return _selfService.Get(id);\n }\n }\n}\n')),(0,r.kt)("h2",{id:"128-injection-\u7279\u6027\u914d\u7f6e"},"12.8 ",(0,r.kt)("inlineCode",{parentName:"h2"},"[Injection]")," \u7279\u6027\u914d\u7f6e"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b ",(0,r.kt)("inlineCode",{parentName:"p"},"[Injection]")," \u7279\u6027\u53ef\u4ee5\u6539\u53d8\u6ce8\u518c\u65b9\u5f0f\uff0c\u540c\u65f6\u8fd8\u80fd\u914d\u7f6e ",(0,r.kt)("inlineCode",{parentName:"p"},"AOP")," \u62e6\u622a\u3002"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"[Injection]")," \u63d0\u4f9b\u4ee5\u4e0b\u914d\u7f6e\u652f\u6301\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Action"),"\uff1a\u914d\u7f6e\u6ce8\u518c\u884c\u4e3a\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"InjectionActions")," \u7c7b\u578b\uff0c\u53ef\u9009\u503c\uff1a",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Add"),"\uff1a",(0,r.kt)("strong",{parentName:"li"},"\u9ed8\u8ba4\u503c"),"\uff0c\u8868\u793a\u65e0\u9650\u5236\u6dfb\u52a0\u6ce8\u518c\u670d\u52a1\uff0c\u8be5\u65b9\u5f0f\u652f\u6301\u4e00\u4e2a\u63a5\u53e3\u591a\u4e2a\u5b9e\u73b0"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"TryAdd"),"\uff1a\u8868\u793a\u6ce8\u518c\u5df2\u5b58\u5728\u5219\u8df3\u8fc7\u6ce8\u518c"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Pattern"),"\uff1a\u914d\u7f6e\u6ce8\u518c\u9009\u9879\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"InjectionPatterns")," \u7c7b\u578b\uff0c\u53ef\u9009\u503c\uff1a",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Self"),"\uff1a\u53ea\u6ce8\u518c\u81ea\u5df1"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"FirstInterface"),"\uff1a\u53ea\u6ce8\u518c\u7b2c\u4e00\u4e2a\u63a5\u53e3"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"SelfWithFirstInterface"),"\uff1a\u6ce8\u518c\u81ea\u5df1\u548c\u7b2c\u4e00\u4e2a\u63a5\u53e3"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"ImplementedInterfaces"),"\uff1a\u6ce8\u518c\u6240\u6709\u63a5\u53e3"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"All"),"\uff1a\u6ce8\u518c\u81ea\u5df1\u5305\u62ec\u6240\u6709\u63a5\u53e3 \uff0c",(0,r.kt)("strong",{parentName:"li"},"\u9ed8\u8ba4\u503c")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Named"),"\uff1a\u914d\u7f6e\u5b9e\u4f8b\u522b\u540d\uff0c\u901a\u8fc7\u522b\u540d\u53ef\u4ee5\u89e3\u6790\u63a5\u53e3\uff0c\u5982\u540c\u4e00\u4e2a\u63a5\u53e3\u6709\u591a\u4e2a\u5b9e\u73b0\uff0c\u90a3\u4e48\u53ef\u4ee5\u901a\u8fc7\u522b\u540d\u89e3\u6790\u4e0d\u540c\u7684\u5b9e\u73b0\uff0c\u9ed8\u8ba4\u53ea\u4e3a\u5b9e\u73b0\u7c7b\u7684\u7c7b\u540d"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Order"),"\uff1a\u6ce8\u518c\u6392\u5e8f\uff0c\u6570\u5b57\u8d8a\u5927\uff0c\u5219\u8d8a\u5728\u6700\u540e\u6ce8\u518c\uff0c\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"0")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Proxy"),"\uff1a\u914d\u7f6e\u4ee3\u7406\u62e6\u622a\u7c7b\u578b\uff0c\u4e5f\u5c31\u662f ",(0,r.kt)("inlineCode",{parentName:"li"},"AOP"),"\uff0c",(0,r.kt)("strong",{parentName:"li"},"\u4ee3\u7406\u7c7b\u578b\u5fc5\u987b\u7ee7\u627f ",(0,r.kt)("inlineCode",{parentName:"strong"},"AspectDispatchProxy")," \u7c7b\u548c ",(0,r.kt)("inlineCode",{parentName:"strong"},"IDispatchProxy")," \u63a5\u53e3"),"\uff0c\u65e0\u9ed8\u8ba4\u503c"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"ExpectInterfaces"),"\uff1a\u914d\u7f6e\u5ffd\u7565\u6ce8\u518c\u7684\u63a5\u53e3\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"Type[]")," \u7c7b\u578b")),(0,r.kt)("h2",{id:"129-\u81ea\u5b9a\u4e49\u9ad8\u7ea7\u6ce8\u518c"},"12.9 \u81ea\u5b9a\u4e49\u9ad8\u7ea7\u6ce8\u518c"),(0,r.kt)("p",null,"\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u63d0\u4f9b\u7684\u6ce8\u518c\u65b9\u5f0f\u53ef\u4ee5\u6ee1\u8db3\u5927\u591a\u6570\u4f9d\u8d56\u6ce8\u5165\u7684\u9700\u6c42\uff0c\u5982\u6709\u7279\u522b\u6ce8\u518c\u9700\u6c42\uff0c\u53ea\u9700\u8981\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Startup")," \u4e2d\u914d\u7f6e\u5373\u53ef\uff0c\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"services.AddScoped(typeof(ISpecService), provider = > {\n // \u81ea\u5b9a\u4e49\u4efb\u4f55\u521b\u5efa\u5b9e\u4f8b\u7684\u65b9\u5f0f\n var instance = new SpecService(); // \u6216\u8005\u53ef\u4ee5\u901a\u8fc7 AOP\u63d2\u4ef6\u8fd4\u56de\u4ee3\u7406\u5b9e\u4f8b\n\n return instance;\n});\n")),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u8865\u5145\u8bf4\u660e")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"AppDbContext")," \u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u8fd8\u6709 ",(0,r.kt)("inlineCode",{parentName:"p"},"ISqlDispatchProxy")," \u90fd\u662f\u901a\u8fc7\u8fd9\u79cd\u65b9\u5f0f\u521b\u5efa\u7684\u3002"))),(0,r.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u77e5\u8bc6\u5bfc\u822a")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u60f3\u4e86\u89e3\u66f4\u591a\u81ea\u5b9a\u4e49\u9ad8\u7ea7\u4e2d\u6ce8\u518c\uff0c\u53ef\u67e5\u9605 \u3010",(0,r.kt)("a",{parentName:"p",href:"https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/dependency-injection?view=aspnetcore-5.0"},"ASP.NET Core \u4f9d\u8d56\u6ce8\u5165"),"\u3011 \u5b98\u65b9\u6587\u6863\u3002"))),(0,r.kt)("h2",{id:"1210-appsettingsjson-\u914d\u7f6e\u6ce8\u518c"},"12.10 ",(0,r.kt)("inlineCode",{parentName:"h2"},"appsettings.json")," \u914d\u7f6e\u6ce8\u518c"),(0,r.kt)("p",null,"\u9664\u4e86\u5728\u4ee3\u7801\u4e2d\u5b9e\u73b0\u4f9d\u8d56\u6ce8\u5165\uff0c\u4e5f\u53ef\u4ee5\u5b9e\u73b0\u52a8\u6001\u4f9d\u8d56\u6ce8\u5165\uff0c\u65e0\u9700\u4fee\u6539\u4ee3\u7801\u6216\u91cd\u65b0\u7f16\u8bd1\u5373\u53ef\u5b9e\u73b0\u70ed\u63d2\u62d4\uff08\u63d2\u4ef6\uff09\u6548\u679c\u3002\u914d\u7f6e\u5982\u4e0b\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json",metastring:"{2}","{2}":!0},'{\n "DependencyInjectionSettings": {\n "Definitions": [\n {\n "Interface": "Furion.Application;Furion.Application.ITestService",\n "Service": "Furion.Application;Furion.Application.TestService",\n "RegisterType": "Transient",\n "Action": "Add",\n "Pattern": "SelfWithFirstInterface",\n "Named": "TestService",\n "Order": 1,\n "Proxy": "Furion.Application;Furion.Application.LogDispathProxy"\n }\n ]\n }\n}\n')),(0,r.kt)("p",null,"\u914d\u7f6e\u8bf4\u660e\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"DependencyInjectionSettings"),"\uff1a\u4f9d\u8d56\u6ce8\u5165\u914d\u7f6e\u6839\u8282\u70b9",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Definitions"),"\uff1a\u52a8\u6001\u4f9d\u8d56\u6ce8\u5165\u914d\u7f6e\u8282\u70b9\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"ExternalService")," \u6570\u7ec4\u7c7b\u578b",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"ExternalService"),"\uff1a\u914d\u7f6e\u5355\u4e2a\u4f9d\u8d56\u6ce8\u5165\u4fe1\u606f",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Interface"),"\uff1a\u914d\u7f6e\u4f9d\u8d56\u63a5\u53e3\u4fe1\u606f\uff0c\u683c\u5f0f\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"\u7a0b\u5e8f\u96c6\u540d\u79f0;\u63a5\u53e3\u5b8c\u6574\u540d\u79f0"),"\uff0c\u5982\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"Furion.Application;Furion.Application.ITestService")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Service"),"\uff1a\u914d\u7f6e\u63a5\u53e3\u5b9e\u73b0\u4fe1\u606f\uff0c\u683c\u5f0f\u540c\u4e0a"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"RegisterType"),"\uff1a\u914d\u7f6e\u4f9d\u8d56\u6ce8\u5165\u7684\u5bf9\u8c61\u751f\u5b58\u671f\uff0c\u53d6\u503c\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"Transient"),"\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"Scoped"),"\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"Singleton")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Action"),"\uff1a\u6ce8\u518c\u884c\u4e3a\uff0c\u53ef\u9009\u503c\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"Add"),"\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"TryAdd"),"\uff0c\u53c2\u89c1 ",(0,r.kt)("a",{parentName:"li",href:"#128-injection-%E7%89%B9%E6%80%A7%E9%85%8D%E7%BD%AE"},"#128-injection-\u7279\u6027\u914d\u7f6e")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Pattern"),"\uff1a\u6ce8\u518c\u9009\u9879\uff0c\u53c2\u89c1 ",(0,r.kt)("a",{parentName:"li",href:"#128-injection-%E7%89%B9%E6%80%A7%E9%85%8D%E7%BD%AE"},"#128-injection-\u7279\u6027\u914d\u7f6e")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Named"),"\uff1a\u6ce8\u518c\u522b\u540d\uff0c\u53c2\u89c1 ",(0,r.kt)("a",{parentName:"li",href:"#128-injection-%E7%89%B9%E6%80%A7%E9%85%8D%E7%BD%AE"},"#128-injection-\u7279\u6027\u914d\u7f6e")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Order"),"\uff1a\u6ce8\u518c\u6392\u5e8f\uff0c\u53c2\u89c1 ",(0,r.kt)("a",{parentName:"li",href:"#128-injection-%E7%89%B9%E6%80%A7%E9%85%8D%E7%BD%AE"},"#128-injection-\u7279\u6027\u914d\u7f6e")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Proxy"),"\uff1a\u914d\u7f6e\u4ee3\u7406\u62e6\u622a\uff0c\u683c\u5f0f\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"\u7a0b\u5e8f\u96c6\u540d\u79f0;\u4ee3\u7406\u7c7b\u5b8c\u6574\u540d\u79f0"),"\uff0c\u53c2\u89c1 ",(0,r.kt)("a",{parentName:"li",href:"#128-injection-%E7%89%B9%E6%80%A7%E9%85%8D%E7%BD%AE"},"#128-injection-\u7279\u6027\u914d\u7f6e"))))))))),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u5173\u4e8e\u5916\u90e8\u7a0b\u5e8f\u96c6")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u5982\u679c\u52a8\u6001\u6ce8\u5165\u7684\u5bf9\u8c61\u662f\u5916\u90e8\u7a0b\u5e8f\u96c6\uff0c\u90a3\u4e48\u9996\u5148\u5148\u6ce8\u518c\u5916\u90e8\u7a0b\u5e8f\u96c6\uff1a"),(0,r.kt)("pre",{parentName:"div"},(0,r.kt)("code",{parentName:"pre",className:"language-json"},'{\n "AppSettings": {\n "ExternalAssemblies": ["\u5916\u90e8\u7a0b\u5e8f\u96c6\u540d\u79f0", "Taobao.Pay"] // \u652f\u6301\u591a\u4e2a\n }\n}\n')))),(0,r.kt)("h2",{id:"1211-\u6ce8\u518c\u987a\u5e8f\u548c\u4f18\u5148\u7ea7"},"12.11 \u6ce8\u518c\u987a\u5e8f\u548c\u4f18\u5148\u7ea7"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\uff0c\u9ed8\u8ba4\u6ce8\u518c\u987a\u5e8f\u662f\u6309\u7167\u7a0b\u5e8f\u96c6\u626b\u63cf\u987a\u5e8f\u8fdb\u884c\u6ce8\u518c\uff0c\u5982\u679c\u9700\u8981\u6539\u53d8\u6ce8\u518c\u987a\u5e8f\uff0c\u53ef\u901a\u8fc7 ",(0,r.kt)("inlineCode",{parentName:"p"},"[Injection(Order)]")," \u7279\u6027\u6307\u5b9a\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"Order")," \u503c\u8d8a\u5927\uff0c\u5219\u8d8a\u5728\u6700\u540e\u6ce8\u518c\u3002"),(0,r.kt)("p",null,"\u53e6\u5916 ",(0,r.kt)("inlineCode",{parentName:"p"},"appsettings.json")," \u914d\u7f6e\u7684\u4f18\u5148\u7ea7\u6700\u5927\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"appsettings.json")," \u914d\u7f6e\u7684\u6ce8\u518c\u4f1a\u8986\u76d6\u4e4b\u524d\u6240\u6709\u6ce8\u518c\u3002"),(0,r.kt)("h2",{id:"1212-aop-\u6ce8\u518c\u62e6\u622a"},"12.12 ",(0,r.kt)("inlineCode",{parentName:"h2"},"Aop")," \u6ce8\u518c\u62e6\u622a"),(0,r.kt)("div",{className:"admonition admonition-warning alert alert--danger"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"}))),"\u5173\u4e8e\u52a8\u6001 API \u548c\u670d\u52a1\u7684\u533a\u522b")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u5982\u679c\u60a8\u7684\u670d\u52a1\u662f\u52a8\u6001 API\uff0c\u90a3\u4e48\u8bf7\u4f7f\u7528 ",(0,r.kt)("a",{parentName:"p",href:"/docs/dynamic-api-controller#511-%E5%85%B3%E4%BA%8E-aop-%E6%8B%A6%E6%88%AA"},"\u52a8\u6001 API - AOP \u62e6\u622a"),"\uff0c\u539f\u56e0\u662f\u52a8\u6001 API \u672c\u8d28\u662f\u63a7\u5236\u5668\uff0c\u6240\u4ee5\u91c7\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"Filter")," \u65b9\u5f0f\u3002"))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"AOP")," \u662f\u975e\u5e38\u91cd\u8981\u7684\u601d\u60f3\u548c\u6280\u672f\uff0c\u4e5f\u5c31\u662f ",(0,r.kt)("inlineCode",{parentName:"p"},"\u9762\u5411\u5207\u9762")," \u7f16\u7a0b\uff0c\u53ef\u4ee5\u8ba9\u6211\u4eec\u5728\u4e0d\u6539\u52a8\u539f\u6765\u4ee3\u7801\u7684\u60c5\u51b5\u4e0b\u8fdb\u884c\u52a8\u6001\u7be1\u6539\u4e1a\u52a1\u4ee3\u7801\u3002"),(0,r.kt)("p",null,"\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\uff0c\u5b9e\u73b0 ",(0,r.kt)("inlineCode",{parentName:"p"},"Aop")," \u975e\u5e38\u7b80\u5355\uff0c\u5982\uff1a"),(0,r.kt)("p",null,"\u5047\u8bbe\u6211\u4eec\u6709 ",(0,r.kt)("inlineCode",{parentName:"p"},"ITestService")," \u548c ",(0,r.kt)("inlineCode",{parentName:"p"},"TestService")," \u4e24\u4e2a\u7c7b\u578b\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"public interface ITestService\n{\n string SayHello(string word);\n}\n")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'public class TestService: ITestService, ITransient\n{\n public string SayHello(string word)\n {\n return $"Hello {word}";\n }\n}\n')),(0,r.kt)("p",null,"\u73b0\u5728\u6211\u4eec\u6709\u4e00\u4e2a\u9700\u6c42\uff0c\u6211\u4eec\u5e0c\u671b\u8c03\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"SayHello")," \u7684\u65f6\u5019\u53ef\u4ee5\u8bb0\u5f55\u65e5\u5fd7\u548c\u6743\u9650\u63a7\u5236\uff08\u4e4b\u524d\u6ca1\u6709\u8003\u8651\u5230\u7684\u9700\u6c42\uff09\u3002"),(0,r.kt)("p",null,"\u8fd9\u4e2a\u65f6\u5019\u6211\u4eec\u53ea\u9700\u8981\u521b\u5efa\u4e00\u4e2a\u4ee3\u7406\u7c7b\u5373\u53ef\uff0c\u5982 ",(0,r.kt)("inlineCode",{parentName:"p"},"LogDispatchProxy")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,3,7,25,37,48}","{1,3,7,25,37,48}":!0},'using Furion.DependencyInjection;\nusing System;\nusing System.Reflection;\n\nnamespace Furion.Application\n{\n public class LogDispatchProxy : AspectDispatchProxy, IDispatchProxy\n {\n /// \n /// \u5f53\u524d\u670d\u52a1\u5b9e\u4f8b\n /// \n public object Target { get; set; }\n\n /// \n /// \u670d\u52a1\u63d0\u4f9b\u5668\uff0c\u53ef\u4ee5\u7528\u6765\u89e3\u6790\u670d\u52a1\uff0c\u5982\uff1aServices.GetService()\n /// \n public IServiceProvider Services { get; set; }\n\n /// \n /// \u62e6\u622a\u65b9\u6cd5\n /// \n /// \n /// \n /// \n public override object Invoke(MethodInfo method, object[] args)\n {\n Console.WriteLine("SayHello \u65b9\u6cd5\u88ab\u8c03\u7528\u4e86");\n\n var result = method.Invoke(Target, args);\n\n Console.WriteLine("SayHello \u65b9\u6cd5\u8fd4\u56de\u503c\uff1a" + result);\n\n return result;\n }\n\n // \u5f02\u6b65\u65e0\u8fd4\u56de\u503c\n public override async Task InvokeAsync(MethodInfo method, object[] args)\n {\n Console.WriteLine("SayHello \u65b9\u6cd5\u88ab\u8c03\u7528\u4e86");\n\n var task = method.Invoke(Target, args) as Task;\n await task;\n\n Console.WriteLine("SayHello \u65b9\u6cd5\u8c03\u7528\u5b8c\u6210");\n }\n\n // \u5f02\u6b65\u5e26\u8fd4\u56de\u503c\n public override async Task InvokeAsyncT(MethodInfo method, object[] args)\n {\n Console.WriteLine("SayHello \u65b9\u6cd5\u88ab\u8c03\u7528\u4e86");\n\n var taskT = method.Invoke(Target, args) as Task;\n var result = await taskT;\n\n Console.WriteLine("SayHello \u65b9\u6cd5\u8fd4\u56de\u503c\uff1a" + result);\n\n return result;\n }\n }\n}\n')),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u83b7\u53d6\u7279\u6027")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u5982\u679c\u9700\u8981\u83b7\u53d6\u65b9\u6cd5\u7684\u7279\u6027\uff0c\u53ea\u9700\u8981\u901a\u8fc7 ",(0,r.kt)("inlineCode",{parentName:"p"},"method.GetActualCustomAttribute()")," \u5373\u53ef\u3002\u6240\u6709\u83b7\u53d6\u771f\u5b9e\u7684\u7279\u6027\u7edf\u4e00\u91c7\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"method.GetActual....()")," \u65b9\u6cd5\u5f00\u5934\u3002"))),(0,r.kt)("p",null,"\u4e4b\u540e\u6211\u4eec\u53ea\u9700\u8981\u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"TestService")," \u589e\u52a0 ",(0,r.kt)("inlineCode",{parentName:"p"},"[Injection]")," \u7279\u6027\u5373\u53ef\uff0c\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1}","{1}":!0},'[Injection(Proxy = typeof(LogDispatchProxy))]\npublic class TestService: ITestService, ITransient\n{\n public string SayHello(string word)\n {\n return $"Hello {word}";\n }\n}\n')),(0,r.kt)("p",null,"\u4e4b\u540e ",(0,r.kt)("inlineCode",{parentName:"p"},"SayHello")," \u65b9\u6cd5\u88ab\u8c03\u7528\u7684\u65f6\u5019\u5c31\u53ef\u4ee5\u5b9e\u73b0\u52a8\u6001\u62e6\u622a\u4e86\uff0c\u6bd4\u5982\u8fd9\u91cc\u5199\u65e5\u5fd7\u3002"),(0,r.kt)("h3",{id:"12121-\u5168\u5c40aop\u62e6\u622a"},"12.12.1 ",(0,r.kt)("inlineCode",{parentName:"h3"},"\u5168\u5c40Aop\u62e6\u622a")),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e5f\u63d0\u4f9b\u4e86\u5168\u5c40\u62e6\u622a\u7684\u65b9\u5f0f\uff0c\u53ea\u9700\u8981\u5c06 ",(0,r.kt)("inlineCode",{parentName:"p"},"IDispatchProxy")," \u4fee\u6539\u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"IGlobalDispatchProxy")," \u5373\u53ef\u3002"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"using Furion;\nusing System.Reflection;\n\nnamespace Furion.Application\n{\n public class LogDispatchProxy : AspectDispatchProxy, IGlobalDispatchProxy\n {\n // ....\n }\n}\n")),(0,r.kt)("p",null,"\u8fd9\u6837\u5c31\u4f1a\u62e6\u622a\u6240\u6709\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"Service"),"\uff0c\u5f53\u7136\u4e5f\u53ef\u4ee5\u901a\u8fc7\u7ed9\u7279\u5b9a\u7c7b\u8d34 ",(0,r.kt)("inlineCode",{parentName:"p"},"[SuppressProxy]")," \u8df3\u8fc7\u5168\u5c40\u62e6\u622a\u64cd\u4f5c\u3002"),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u62e6\u622a\u4f18\u5148\u7ea7")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},(0,r.kt)("inlineCode",{parentName:"p"},"[SuppressProxy]")," > ",(0,r.kt)("inlineCode",{parentName:"p"},"[Injection(Proxy = typeof(LogDispatchProxy))]")," > ",(0,r.kt)("inlineCode",{parentName:"p"},"\u5168\u5c40\u62e6\u622a"),"\u3002"))),(0,r.kt)("h3",{id:"12122-aop-\u6ce8\u5165\u89e3\u6790\u670d\u52a1"},"12.12.2 ",(0,r.kt)("inlineCode",{parentName:"h3"},"AOP")," \u6ce8\u5165\u89e3\u6790\u670d\u52a1"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u672a\u63d0\u4f9b ",(0,r.kt)("inlineCode",{parentName:"p"},"Proxy")," \u6784\u9020\u51fd\u6570\u6ce8\u5165\u529f\u80fd\uff0c\u4f46\u662f\u63d0\u4f9b\u4e86 ",(0,r.kt)("inlineCode",{parentName:"p"},"Services")," \u5c5e\u6027\uff0c\u5982\u679c\u9700\u8981\u89e3\u6790\u670d\u52a1\uff0c\u5219\u53ef\u4ee5\u901a\u8fc7\u4ee5\u4e0b\u65b9\u5f0f\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"var someServices = Services.GetService(); // \u63a8\u8350\u65b9\u5f0f\n// \u6216\nvar someServices = App.GetService();\n")),(0,r.kt)("h3",{id:"12123-aop-\u7684\u4f5c\u7528"},"12.12.3 ",(0,r.kt)("inlineCode",{parentName:"h3"},"AOP")," \u7684\u4f5c\u7528"),(0,r.kt)("p",null,"\u8fd9\u79cd\u9762\u5411\u5207\u9762\u7684\u80fd\u529b\uff08\u52a8\u6001\u62e6\u622a/\u4ee3\u7406\uff09\u53ef\u4ee5\u5b9e\u73b0\u5f88\u591a\u5f88\u591a\u529f\u80fd\uff0c\u5982\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u52a8\u6001\u65e5\u5fd7\u8bb0\u5f55"),(0,r.kt)("li",{parentName:"ul"},"\u52a8\u6001\u4fee\u6539\u53c2\u6570"),(0,r.kt)("li",{parentName:"ul"},"\u52a8\u6001\u4fee\u6539\u8fd4\u56de\u503c"),(0,r.kt)("li",{parentName:"ul"},"\u52a8\u6001\u65b9\u6cd5\u91cd\u5b9a\u5411"),(0,r.kt)("li",{parentName:"ul"},"\u52a8\u6001\u4fee\u6539\u4ee3\u7801\u903b\u8f91"),(0,r.kt)("li",{parentName:"ul"},"\u52a8\u6001\u5b9e\u73b0\u5f02\u5e38\u76d1\u542c")),(0,r.kt)("p",null,"\u8fd8\u53ef\u4ee5\u505a\u66f4\u591a\u66f4\u591a\u7684\u4e8b\u60c5\u3002"),(0,r.kt)("h2",{id:"1213-\u53cd\u9988\u4e0e\u5efa\u8bae"},"12.13 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,r.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/a8677dec.7a033577.js b/handbook/build/assets/js/a8677dec.7a033577.js deleted file mode 100644 index 526bc1cdcae..00000000000 --- a/handbook/build/assets/js/a8677dec.7a033577.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[4197],{3905:function(e,n,t){t.d(n,{Zo:function(){return c},kt:function(){return u}});var i=t(7294);function a(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function r(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);n&&(i=i.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,i)}return t}function l(e){for(var n=1;n=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var p=i.createContext({}),s=function(e){var n=i.useContext(p),t=n;return e&&(t="function"==typeof e?e(n):l(l({},n),e)),t},c=function(e){var n=s(e.components);return i.createElement(p.Provider,{value:n},e.children)},d={inlineCode:"code",wrapper:function(e){var n=e.children;return i.createElement(i.Fragment,{},n)}},m=i.forwardRef((function(e,n){var t=e.components,a=e.mdxType,r=e.originalType,p=e.parentName,c=o(e,["components","mdxType","originalType","parentName"]),m=s(t),u=a,k=m["".concat(p,".").concat(u)]||m[u]||d[u]||r;return t?i.createElement(k,l(l({ref:n},c),{},{components:t})):i.createElement(k,l({ref:n},c))}));function u(e,n){var t=arguments,a=n&&n.mdxType;if("string"==typeof e||a){var r=t.length,l=new Array(r);l[0]=m;var o={};for(var p in n)hasOwnProperty.call(n,p)&&(o[p]=n[p]);o.originalType=e,o.mdxType="string"==typeof e?e:a,l[1]=o;for(var s=2;sIOC/DI \u4f18\u7f3a\u70b9",id:"123-iocdi-\u4f18\u7f3a\u70b9",children:[]},{value:"12.4 \u4f9d\u8d56\u6ce8\u5165\u7684\u4e09\u79cd\u65b9\u5f0f",id:"124-\u4f9d\u8d56\u6ce8\u5165\u7684\u4e09\u79cd\u65b9\u5f0f",children:[{value:"12.4.1 \u6784\u9020\u65b9\u6cd5\u6ce8\u5165",id:"1241-\u6784\u9020\u65b9\u6cd5\u6ce8\u5165",children:[]},{value:"12.4.2 \u5c5e\u6027\u65b9\u5f0f\u6ce8\u5165",id:"1242-\u5c5e\u6027\u65b9\u5f0f\u6ce8\u5165",children:[]},{value:"12.4.3 \u65b9\u6cd5\u53c2\u6570\u6ce8\u5165",id:"1243-\u65b9\u6cd5\u53c2\u6570\u6ce8\u5165",children:[]}]},{value:"12.5 \u6ce8\u518c\u5bf9\u8c61\u751f\u5b58\u671f",id:"125-\u6ce8\u518c\u5bf9\u8c61\u751f\u5b58\u671f",children:[{value:"12.5.1 \u6682\u65f6/\u77ac\u65f6 \u751f\u5b58\u671f",id:"1251-\u6682\u65f6\u77ac\u65f6-\u751f\u5b58\u671f",children:[]},{value:"12.5.2 \u4f5c\u7528\u57df \u751f\u5b58\u671f",id:"1252-\u4f5c\u7528\u57df-\u751f\u5b58\u671f",children:[]},{value:"12.5.3 \u5355\u4f8b \u751f\u5b58\u671f",id:"1253-\u5355\u4f8b-\u751f\u5b58\u671f",children:[]}]},{value:"12.6 \u5185\u7f6e\u4f9d\u8d56\u63a5\u53e3",id:"126-\u5185\u7f6e\u4f9d\u8d56\u63a5\u53e3",children:[]},{value:"12.7 \u5e38\u89c1\u4f7f\u7528",id:"127-\u5e38\u89c1\u4f7f\u7528",children:[{value:"12.7.1 \u7b2c\u4e00\u4e2a\u4f8b\u5b50",id:"1271-\u7b2c\u4e00\u4e2a\u4f8b\u5b50",children:[]},{value:"12.7.2 \u6ce8\u518c\u6cdb\u578b\u5b9e\u4f8b",id:"1272-\u6ce8\u518c\u6cdb\u578b\u5b9e\u4f8b",children:[]},{value:"12.7.3 \u4e00\u4e2a\u63a5\u53e3\u591a\u4e2a\u5b9e\u73b0",id:"1273-\u4e00\u4e2a\u63a5\u53e3\u591a\u4e2a\u5b9e\u73b0",children:[]},{value:"12.7.4 \u65e0\u63a5\u53e3\u65b9\u5f0f",id:"1274-\u65e0\u63a5\u53e3\u65b9\u5f0f",children:[]}]},{value:"12.8 [Injection] \u7279\u6027\u914d\u7f6e",id:"128-injection-\u7279\u6027\u914d\u7f6e",children:[]},{value:"12.9 \u81ea\u5b9a\u4e49\u9ad8\u7ea7\u6ce8\u518c",id:"129-\u81ea\u5b9a\u4e49\u9ad8\u7ea7\u6ce8\u518c",children:[]},{value:"12.10 appsettings.json \u914d\u7f6e\u6ce8\u518c",id:"1210-appsettingsjson-\u914d\u7f6e\u6ce8\u518c",children:[]},{value:"12.11 \u6ce8\u518c\u987a\u5e8f\u548c\u4f18\u5148\u7ea7",id:"1211-\u6ce8\u518c\u987a\u5e8f\u548c\u4f18\u5148\u7ea7",children:[]},{value:"12.12 Aop \u6ce8\u518c\u62e6\u622a",id:"1212-aop-\u6ce8\u518c\u62e6\u622a",children:[{value:"12.12.1 \u5168\u5c40Aop\u62e6\u622a",id:"12121-\u5168\u5c40aop\u62e6\u622a",children:[]},{value:"12.12.2 AOP \u6ce8\u5165\u89e3\u6790\u670d\u52a1",id:"12122-aop-\u6ce8\u5165\u89e3\u6790\u670d\u52a1",children:[]},{value:"12.12.3 AOP \u7684\u4f5c\u7528",id:"12123-aop-\u7684\u4f5c\u7528",children:[]}]},{value:"12.13 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"1213-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],m={toc:d};function u(e){var n=e.components,t=(0,a.Z)(e,o);return(0,r.kt)("wrapper",(0,i.Z)({},m,t,{components:n,mdxType:"MDXLayout"}),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u9605\u524d\u5fc5\u8bfb")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u7531\u4e8e\u5f88\u591a\u670b\u53cb\u7b2c\u4e00\u6b21\u63a5\u89e6 ",(0,r.kt)("inlineCode",{parentName:"p"},"\u4f9d\u8d56\u6ce8\u5165/\u63a7\u5236\u53cd\u8f6c")," \u7684\u67b6\u6784\u7406\u5ff5\uff0c\u6240\u4ee5\u6ca1\u641e\u660e\u767d ",(0,r.kt)("inlineCode",{parentName:"p"},"\u4f5c\u7528\u57df")," \u548c ",(0,r.kt)("inlineCode",{parentName:"p"},"\u591a\u7ebf\u7a0b\u89e3\u6790\u670d\u52a1")," \u7684\u95ee\u9898\uff0c\u4ece\u800c\u4e0d\u6b63\u786e\u7684\u4f7f\u7528\u5bfc\u81f4\u5185\u5b58\u4e0d\u65ad\u98d9\u9ad8\uff0c\u6b63\u786e\u7684\u65b9\u5f0f\u5e94\u8be5\u662f\uff1a"),(0,r.kt)("ul",{parentName:"div"},(0,r.kt)("li",{parentName:"ul"},"\u5c3d\u53ef\u80fd\u7684\u91c7\u7528\u6784\u9020\u51fd\u6570\u6ce8\u5165\uff08\u5982\u679c\u8fd9\u4e2a\u7c7b\u652f\u6301\uff09"),(0,r.kt)("li",{parentName:"ul"},"\u5728\u975e\u9759\u6001\u4e2d\uff08",(0,r.kt)("strong",{parentName:"li"},"\u4f46\u5728 Web \u8bf7\u6c42\u6709\u6548\u7684\u58f0\u660e\u5468\u671f\u5185"),"\uff09\u53ef\u5b89\u5168\u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"li"},"App.GetService<>")," \u89e3\u6790\u670d\u52a1\uff0c\u5982\u679c\u662f ",(0,r.kt)("inlineCode",{parentName:"li"},"\u5355\u4f8b\u670d\u52a1"),"\uff0c\u4f18\u5148\u63a8\u8350\u6784\u9020\u51fd\u6570\u6ce8\u5165\u6216 ",(0,r.kt)("inlineCode",{parentName:"li"},"App.RootServices.GetService<>")," \u65b9\u5f0f"),(0,r.kt)("li",{parentName:"ul"},"\ud83e\udd10 ",(0,r.kt)("strong",{parentName:"li"},"\u5728\u975e ",(0,r.kt)("inlineCode",{parentName:"strong"},"Web")," \u73af\u5883\u3001\u591a\u7ebf\u7a0b\u73af\u5883\u3001\u7269\u8054\u7f51\u7b49\u73af\u5883\uff08\u542b\u4e8b\u4ef6\u603b\u7ebf\u3001\u5b9a\u65f6\u4efb\u52a1\u7b49\uff09\ud83c\udfd2 \u9664\u5355\u4f8b\u670d\u52a1\u4ee5\u5916 \ud83c\udfd2 \u5fc5\u987b\u91c7\u7528 ",(0,r.kt)("inlineCode",{parentName:"strong"},"Scoped.Create()")," \u65b9\u5f0f\u521b\u5efa\u4f5c\u7528\u57df\u4e14\u670d\u52a1\u5728\u5185\u90e8\u59d4\u6258\u4e2d\u89e3\u6790\uff01")," \ud83e\udd10")))),(0,r.kt)("h2",{id:"121-\u4f9d\u8d56\u6ce8\u5165"},"12.1 \u4f9d\u8d56\u6ce8\u5165"),(0,r.kt)("p",null,"\u6240\u8c13\u4f9d\u8d56\u6ce8\u5165\uff0c\u662f\u6307\u7a0b\u5e8f\u8fd0\u884c\u8fc7\u7a0b\u4e2d\uff0c\u5982\u679c\u9700\u8981\u8c03\u7528\u53e6\u4e00\u4e2a\u5bf9\u8c61\u534f\u52a9\u65f6\uff0c\u65e0\u987b\u5728\u4ee3\u7801\u4e2d\u521b\u5efa\u88ab\u8c03\u7528\u8005\uff0c\u800c\u662f\u4f9d\u8d56\u4e8e\u5916\u90e8\u7684\u6ce8\u5165\u3002"),(0,r.kt)("p",null,"\u901a\u4fd7\u6765\u8bb2\uff0c\u5c31\u662f\u628a\u6709\u4f9d\u8d56\u5173\u7cfb\u7684\u7c7b\u653e\u5230\u5bb9\u5668\u4e2d\uff0c\u7136\u540e\u5728\u6211\u4eec\u9700\u8981\u8fd9\u4e9b\u7c7b\u65f6\uff0c\u5bb9\u5668\u81ea\u52a8\u89e3\u6790\u51fa\u8fd9\u4e9b\u7c7b\u7684\u5b9e\u4f8b\u3002"),(0,r.kt)("p",null,"\u4f9d\u8d56\u6ce8\u5165\u6700\u5927\u7684\u597d\u5904\u65f6\u5b9e\u73b0\u7c7b\u7684\u89e3\u8026\uff0c\u5229\u4e8e\u7a0b\u5e8f\u62d3\u5c55\u3001\u5355\u5143\u6d4b\u8bd5\u3001\u81ea\u52a8\u5316\u6a21\u62df\u6d4b\u8bd5\u7b49\u3002"),(0,r.kt)("p",null,"\u4f9d\u8d56\u6ce8\u5165\u7684\u82f1\u6587\u4e3a\uff1a",(0,r.kt)("inlineCode",{parentName:"p"},"Dependency Injection"),"\uff0c\u7b80\u79f0 ",(0,r.kt)("inlineCode",{parentName:"p"},"DI")),(0,r.kt)("h2",{id:"122-\u63a7\u5236\u53cd\u8f6c"},"12.2 \u63a7\u5236\u53cd\u8f6c"),(0,r.kt)("p",null,"\u63a7\u5236\u53cd\u8f6c\u53ea\u662f\u4e00\u4e2a\u6982\u5ff5\uff0c\u4e5f\u5c31\u662f\u5c06\u521b\u5efa\u5bf9\u8c61\u5b9e\u4f8b\u7684\u63a7\u5236\u6743\uff08\u539f\u672c\u662f\u7a0b\u5e8f\u5458\uff09\u4ece\u4ee3\u7801\u63a7\u5236\u6743\u5265\u79bb\u5230 ",(0,r.kt)("inlineCode",{parentName:"p"},"IOC \u5bb9\u5668")," \u4e2d\u63a7\u5236\u3002"),(0,r.kt)("p",null,"\u63a7\u5236\u53cd\u8f6c\u7684\u82f1\u6587\u4e3a\uff1a",(0,r.kt)("inlineCode",{parentName:"p"},"Inversion of Control"),"\uff0c\u7b80\u79f0 ",(0,r.kt)("inlineCode",{parentName:"p"},"IOC")),(0,r.kt)("h2",{id:"123-iocdi-\u4f18\u7f3a\u70b9"},"12.3 ",(0,r.kt)("inlineCode",{parentName:"h2"},"IOC/DI")," \u4f18\u7f3a\u70b9"),(0,r.kt)("p",null,"\u4f20\u7edf\u7684\u4ee3\u7801\uff0c\u6bcf\u4e2a\u5bf9\u8c61\u8d1f\u8d23\u7ba1\u7406\u4e0e\u81ea\u5df1\u9700\u8981\u4f9d\u8d56\u7684\u5bf9\u8c61\uff0c\u5bfc\u81f4\u5982\u679c\u9700\u8981\u5207\u6362\u4f9d\u8d56\u5bf9\u8c61\u7684\u5b9e\u73b0\u7c7b\u65f6\uff0c\u9700\u8981\u4fee\u6539\u591a\u5904\u5730\u65b9\u3002\u540c\u65f6\uff0c\u8fc7\u5ea6\u8026\u5408\u4e5f\u4f7f\u5f97\u5bf9\u8c61\u96be\u4ee5\u8fdb\u884c\u5355\u5143\u6d4b\u8bd5\u3002"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"\u4f18\u70b9"),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"\u4f9d\u8d56\u6ce8\u5165\u628a\u5bf9\u8c61\u7684\u521b\u9020\u4ea4\u7ed9\u5916\u90e8\u53bb\u7ba1\u7406,\u5f88\u597d\u7684\u89e3\u51b3\u4e86\u4ee3\u7801\u7d27\u8026\u5408\uff08tight couple\uff09\u7684\u95ee\u9898\uff0c\u662f\u4e00\u79cd\u8ba9\u4ee3\u7801\u5b9e\u73b0\u677e\u8026\u5408\uff08loose couple\uff09\u7684\u673a\u5236"),(0,r.kt)("li",{parentName:"ul"},"\u677e\u8026\u5408\u8ba9\u4ee3\u7801\u66f4\u5177\u7075\u6d3b\u6027\uff0c\u80fd\u66f4\u597d\u5730\u5e94\u5bf9\u9700\u6c42\u53d8\u52a8\uff0c\u4ee5\u53ca\u65b9\u4fbf\u5355\u5143\u6d4b\u8bd5"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"\u7f3a\u70b9"),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"\u76ee\u524d\u4e3b\u6d41\u7684 ",(0,r.kt)("inlineCode",{parentName:"li"},"IOC/DI")," \u57fa\u672c\u91c7\u7528\u53cd\u5c04\u7684\u65b9\u5f0f\u6765\u5b9e\u73b0\u4f9d\u8d56\u6ce8\u5165\uff0c\u5728\u4e00\u5b9a\u7a0b\u5ea6\u4f1a\u5f71\u54cd\u6027\u80fd")))),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u8bf4\u660e")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u5728\u672c\u7ae0\u8282\u4e0d\u6253\u7b97\u7ec6\u8bb2 ",(0,r.kt)("inlineCode",{parentName:"p"},"\u4f9d\u8d56\u6ce8\u5165/\u63a7\u5236\u53cd\u8f6c")," \u5177\u4f53\u5b9e\u73b0\u548c\u5e94\u7528\u573a\u666f\uff0c\u60f3\u4e86\u89e3\u66f4\u591a\u77e5\u8bc6\uff0c\u53ef\u67e5\u9605 \u3010",(0,r.kt)("a",{parentName:"p",href:"https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/dependency-injection?view=aspnetcore-5.0"},"ASP.NET Core \u4f9d\u8d56\u6ce8\u5165"),"\u3011 \u5b98\u65b9\u6587\u6863\u3002"))),(0,r.kt)("h2",{id:"124-\u4f9d\u8d56\u6ce8\u5165\u7684\u4e09\u79cd\u65b9\u5f0f"},"12.4 \u4f9d\u8d56\u6ce8\u5165\u7684\u4e09\u79cd\u65b9\u5f0f"),(0,r.kt)("h3",{id:"1241-\u6784\u9020\u65b9\u6cd5\u6ce8\u5165"},"12.4.1 \u6784\u9020\u65b9\u6cd5\u6ce8\u5165"),(0,r.kt)("p",null,"\u76ee\u524d\u6784\u9020\u65b9\u6cd5\u6ce8\u5165\u662f\u4f9d\u8d56\u6ce8\u5165\u63a8\u8350\u4f7f\u7528\u65b9\u5f0f\u3002"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"\u4f18\u70b9"),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"\u5728\u6784\u9020\u65b9\u6cd5\u4e2d\u4f53\u73b0\u51fa\u5bf9\u5176\u4ed6\u7c7b\u7684\u4f9d\u8d56\uff0c\u4e00\u773c\u5c31\u80fd\u770b\u51fa\u8fd9\u4e2a\u7c7b\u9700\u8981\u4f9d\u8d56\u54ea\u4e9b\u7c7b\u624d\u80fd\u5de5\u4f5c"),(0,r.kt)("li",{parentName:"ul"},"\u8131\u79bb\u4e86 IOC \u6846\u67b6\uff0c\u8fd9\u4e2a\u7c7b\u4ecd\u7136\u53ef\u4ee5\u5de5\u4f5c\uff0cPOJO \u7684\u6982\u5ff5"),(0,r.kt)("li",{parentName:"ul"},"\u4e00\u65e6\u5bf9\u8c61\u521d\u59cb\u5316\u6210\u529f\u4e86\uff0c\u8fd9\u4e2a\u5bf9\u8c61\u7684\u72b6\u6001\u80af\u5b9a\u662f\u6b63\u786e\u7684"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"\u7f3a\u70b9"),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"\u6784\u9020\u51fd\u6570\u4f1a\u6709\u5f88\u591a\u53c2\u6570\uff08Bad smell\uff09"),(0,r.kt)("li",{parentName:"ul"},"\u6709\u4e9b\u7c7b\u662f\u9700\u8981\u9ed8\u8ba4\u6784\u9020\u51fd\u6570\u7684\uff0c\u6bd4\u5982 MVC \u6846\u67b6\u7684 Controller \u7c7b\uff0c\u4e00\u65e6\u4f7f\u7528\u6784\u9020\u51fd\u6570\u6ce8\u5165\uff0c\u5c31\u65e0\u6cd5\u4f7f\u7528\u9ed8\u8ba4\u6784\u9020\u51fd\u6570"),(0,r.kt)("li",{parentName:"ul"},"\u8fd9\u4e2a\u7c7b\u91cc\u9762\u7684\u6709\u4e9b\u65b9\u6cd5\u5e76\u4e0d\u9700\u8981\u7528\u5230\u8fd9\u4e9b\u4f9d\u8d56\uff08Bad smell\uff09")))),(0,r.kt)("p",null,"\u4ee3\u7801\u793a\u4f8b\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{4}","{4}":!0},"public class FurionService\n{\n private readonly IRepository _repository;\n public FurionService(IRepository repository)\n {\n _repository = repository;\n }\n}\n")),(0,r.kt)("h3",{id:"1242-\u5c5e\u6027\u65b9\u5f0f\u6ce8\u5165"},"12.4.2 \u5c5e\u6027\u65b9\u5f0f\u6ce8\u5165"),(0,r.kt)("div",{className:"admonition admonition-warning alert alert--danger"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"}))),"\u7279\u522b\u58f0\u660e")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u65b0\u7248\u672c\u4e2d\uff0c\u5df2\u7ecf\u79fb\u9664\u5c5e\u6027\u6ce8\u5165\u529f\u80fd\uff0c\u5efa\u8bae\u4f7f\u7528\u6784\u9020\u51fd\u6570\u6216\u65b9\u6cd5\u65b9\u5f0f\u6ce8\u5165\uff0c\u4e5f\u53ef\u4ee5\u901a\u8fc7 ",(0,r.kt)("inlineCode",{parentName:"p"},"App.GetService")," \u65b9\u5f0f\u6ce8\u5165\u3002"))),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"\u901a\u8fc7\u5c5e\u6027\u65b9\u5f0f\u6ce8\u5165\u5bb9\u6613\u548c\u7c7b\u7684\u5b9e\u4f8b\u5c5e\u6027\u6df7\u6dc6\uff0c\u4e0d\u5efa\u8bae\u4f7f\u7528\u3002")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"\u4f18\u70b9"),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"\u5728\u5bf9\u8c61\u7684\u6574\u4e2a\u751f\u547d\u5468\u671f\u5185\uff0c\u53ef\u4ee5\u968f\u65f6\u52a8\u6001\u7684\u6539\u53d8\u4f9d\u8d56"),(0,r.kt)("li",{parentName:"ul"},"\u975e\u5e38\u7075\u6d3b"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"\u7f3a\u70b9"),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"\u5bf9\u8c61\u5728\u521b\u5efa\u540e\uff0c\u88ab\u8bbe\u7f6e\u4f9d\u8d56\u5bf9\u8c61\u4e4b\u524d\u8fd9\u6bb5\u65f6\u95f4\u72b6\u6001\u662f\u4e0d\u5bf9\u7684"),(0,r.kt)("li",{parentName:"ul"},"\u4e0d\u76f4\u89c2\uff0c\u65e0\u6cd5\u6e05\u6670\u5730\u8868\u793a\u54ea\u4e9b\u5c5e\u6027\u662f\u5fc5\u987b\u7684")))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{3}","{3}":!0},"public class FurionService\n{\n public IRepository Repository { get; set; }\n}\n")),(0,r.kt)("h3",{id:"1243-\u65b9\u6cd5\u53c2\u6570\u6ce8\u5165"},"12.4.3 \u65b9\u6cd5\u53c2\u6570\u6ce8\u5165"),(0,r.kt)("p",null,"\u65b9\u6cd5\u53c2\u6570\u6ce8\u5165\u7684\u610f\u601d\u662f\u5728\u521b\u5efa\u5bf9\u8c61\u540e\uff0c\u901a\u8fc7\u81ea\u52a8\u8c03\u7528\u67d0\u4e2a\u65b9\u6cd5\u6765\u6ce8\u5165\u4f9d\u8d56\u3002"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"\u4f18\u70b9\uff1a"),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"\u6bd4\u8f83\u7075\u6d3b"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"\u7f3a\u70b9\uff1a"),(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},"\u65b0\u52a0\u5165\u4f9d\u8d56\u65f6\u4f1a\u7834\u574f\u539f\u6709\u7684\u65b9\u6cd5\u7b7e\u540d\uff0c\u5982\u679c\u8fd9\u4e2a\u65b9\u6cd5\u5df2\u7ecf\u88ab\u5176\u4ed6\u5f88\u591a\u6a21\u5757\u7528\u5230\u5c31\u5f88\u9ebb\u70e6"),(0,r.kt)("li",{parentName:"ul"},"\u4e0e\u6784\u9020\u65b9\u6cd5\u6ce8\u5165\u4e00\u6837\uff0c\u4f1a\u6709\u5f88\u591a\u53c2\u6570")))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{3}","{3}":!0},"public class FurionService\n{\n public Person GetById([FromServices]IRepository repository, int id)\n {\n return repository.Find(id);\n }\n}\n")),(0,r.kt)("h2",{id:"125-\u6ce8\u518c\u5bf9\u8c61\u751f\u5b58\u671f"},"12.5 \u6ce8\u518c\u5bf9\u8c61\u751f\u5b58\u671f"),(0,r.kt)("h3",{id:"1251-\u6682\u65f6\u77ac\u65f6-\u751f\u5b58\u671f"},"12.5.1 ",(0,r.kt)("inlineCode",{parentName:"h3"},"\u6682\u65f6/\u77ac\u65f6")," \u751f\u5b58\u671f"),(0,r.kt)("p",null,"\u6682\u65f6\u751f\u5b58\u671f\u670d\u52a1\u662f\u6bcf\u6b21\u4ece\u670d\u52a1\u5bb9\u5668\u8fdb\u884c\u8bf7\u6c42\u65f6\u521b\u5efa\u7684\u3002 \u8fd9\u79cd\u751f\u5b58\u671f\u9002\u5408\u8f7b\u91cf\u7ea7\u3001 \u65e0\u72b6\u6001\u7684\u670d\u52a1\u3002"),(0,r.kt)("p",null,"\u5728\u5904\u7406\u8bf7\u6c42\u7684\u5e94\u7528\u4e2d\uff0c\u5728\u8bf7\u6c42\u7ed3\u675f\u65f6\u4f1a\u91ca\u653e\u6682\u65f6\u670d\u52a1\u3002"),(0,r.kt)("p",null,"\u901a\u5e38\u6211\u4eec\u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"ITransient")," \u63a5\u53e3\u4f9d\u8d56\u8868\u793a\u8be5\u751f\u547d\u5468\u671f\u3002"),(0,r.kt)("h3",{id:"1252-\u4f5c\u7528\u57df-\u751f\u5b58\u671f"},"12.5.2 ",(0,r.kt)("inlineCode",{parentName:"h3"},"\u4f5c\u7528\u57df")," \u751f\u5b58\u671f"),(0,r.kt)("p",null,"\u4f5c\u7528\u57df\u751f\u5b58\u671f\u670d\u52a1\u9488\u5bf9\u6bcf\u4e2a\u5ba2\u6237\u7aef\u8bf7\u6c42\uff08\u8fde\u63a5\uff09\u521b\u5efa\u4e00\u6b21\u3002\u5728\u5904\u7406\u8bf7\u6c42\u7684\u5e94\u7528\u4e2d\uff0c\u5728\u8bf7\u6c42\u7ed3\u675f\u65f6\u4f1a\u91ca\u653e\u6709\u4f5c\u7528\u57df\u7684\u670d\u52a1\u3002"),(0,r.kt)("p",null,"\u901a\u5e38\u6211\u4eec\u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"IScoped")," \u63a5\u53e3\u4f9d\u8d56\u8868\u793a\u8be5\u751f\u547d\u5468\u671f\u3002"),(0,r.kt)("h3",{id:"1253-\u5355\u4f8b-\u751f\u5b58\u671f"},"12.5.3 ",(0,r.kt)("inlineCode",{parentName:"h3"},"\u5355\u4f8b")," \u751f\u5b58\u671f"),(0,r.kt)("p",null,"\u5728\u9996\u6b21\u8bf7\u6c42\u5b83\u4eec\u65f6\u8fdb\u884c\u521b\u5efa\uff0c\u4e4b\u540e\u6bcf\u4e2a\u540e\u7eed\u8bf7\u6c42\u90fd\u4f7f\u7528\u76f8\u540c\u7684\u5b9e\u4f8b\u3002"),(0,r.kt)("p",null,"\u901a\u5e38\u6211\u4eec\u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"ISingleton")," \u63a5\u53e3\u4f9d\u8d56\u8868\u793a\u8be5\u751f\u547d\u5468\u671f\u3002"),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e86\u89e3\u66f4\u591a")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u60f3\u4e86\u89e3\u66f4\u591a ",(0,r.kt)("inlineCode",{parentName:"p"},"\u670d\u52a1\u751f\u5b58\u671f")," \u77e5\u8bc6\u53ef\u67e5\u9605 ",(0,r.kt)("a",{parentName:"p",href:"https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/dependency-injection?view=aspnetcore-5.0#service-lifetimes"},"ASP.NET Core - \u4f9d\u8d56\u6ce8\u5165 - \u670d\u52a1\u751f\u5b58\u671f")," \u7ae0\u8282\u3002"))),(0,r.kt)("h2",{id:"126-\u5185\u7f6e\u4f9d\u8d56\u63a5\u53e3"},"12.6 \u5185\u7f6e\u4f9d\u8d56\u63a5\u53e3"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u4e09\u4e2a\u63a5\u53e3\u4f9d\u8d56\u5206\u522b\u5bf9\u5e94\u4e0d\u540c\u7684\u670d\u52a1\u751f\u5b58\u671f\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"ITransient"),"\uff1a\u5bf9\u5e94\u6682\u65f6/\u77ac\u65f6\u4f5c\u7528\u57df\u670d\u52a1\u751f\u5b58\u671f"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"IScoped"),"\uff1a\u5bf9\u5e94\u8bf7\u6c42\u4f5c\u7528\u57df\u670d\u52a1\u751f\u5b58\u671f"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"ISingleton"),"\uff1a\u5bf9\u5e94\u5355\u4f8b\u4f5c\u7528\u57df\u670d\u52a1\u751f\u5b58\u671f")),(0,r.kt)("div",{className:"admonition admonition-warning alert alert--danger"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"}))),"\u7279\u522b\u6ce8\u610f")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u4ee5\u4e0a\u4e09\u4e2a\u63a5\u53e3\u53ea\u80fd\u5b9e\u4f8b\u7c7b\u5b9e\u73b0\uff0c\u5176\u4ed6\u9759\u6001\u7c7b\u3001\u62bd\u8c61\u7c7b\u3001\u53ca\u63a5\u53e3\u4e0d\u80fd\u5b9e\u73b0\u3002"))),(0,r.kt)("h2",{id:"127-\u5e38\u89c1\u4f7f\u7528"},"12.7 \u5e38\u89c1\u4f7f\u7528"),(0,r.kt)("h3",{id:"1271-\u7b2c\u4e00\u4e2a\u4f8b\u5b50"},"12.7.1 \u7b2c\u4e00\u4e2a\u4f8b\u5b50"),(0,r.kt)("p",null,"\u521b\u5efa ",(0,r.kt)("inlineCode",{parentName:"p"},"IBusinessService")," \u63a5\u53e3\u548c ",(0,r.kt)("inlineCode",{parentName:"p"},"BusinessService")," \u5b9e\u73b0\u7c7b\uff0c\u4ee3\u7801\u5982\u4e0b\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{7,12}","{7,12}":!0},"using Furion.Core;\nusing Furion.DatabaseAccessor;\nusing Furion.DependencyInjection;\n\nnamespace Furion.Application\n{\n public interface IBusinessService\n {\n Person Get(int id);\n }\n\n public class BusinessService : IBusinessService, ITransient\n {\n private readonly IRepository _personRepository;\n\n public BusinessService(IRepository personRepository)\n {\n _personRepository = personRepository;\n }\n\n public Person Get(int id)\n {\n return _personRepository.Find(id);\n }\n }\n}\n")),(0,r.kt)("p",null,"\u521b\u5efa ",(0,r.kt)("inlineCode",{parentName:"p"},"PersonController")," \u63a7\u5236\u5668\uff0c\u4ee3\u7801\u5982\u4e0b\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{11,19}","{11,19}":!0},'using Furion.Application;\nusing Microsoft.AspNetCore.Mvc;\n\nnamespace Furion.Web.Entry.Controllers\n{\n [Route("api/[controller]")]\n [ApiController]\n public class PersonController : ControllerBase\n {\n private readonly IBusinessService _businessService;\n public PersonController(IBusinessService businessService)\n {\n _businessService = businessService;\n }\n\n [HttpGet]\n public IActionResult Get(int id)\n {\n var person = _businessService.Get(id);\n return new JsonResult(person);\n }\n }\n}\n')),(0,r.kt)("img",{src:(0,l.Z)("img/di1.gif")}),(0,r.kt)("hr",null),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"\u4f8b\u5b50\u89e3\u8bf4")),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u4e86\u975e\u5e38\u7075\u6d3b\u4e14\u65b9\u4fbf\u7684\u5b9e\u73b0\u4f9d\u8d56\u6ce8\u5165\u7684\u65b9\u5f0f\uff0c\u53ea\u9700\u8981\u5b9e\u4f8b\u7c7b\u7ee7\u627f\u5bf9\u5e94\u751f\u5b58\u671f\u7684\u63a5\u53e3\u5373\u53ef\uff0c\u8fd9\u91cc\u7ee7\u627f\u4e86 ",(0,r.kt)("inlineCode",{parentName:"p"},"ITransient"),"\uff0c\u4e5f\u5c31\u8868\u660e\u4e86\u8fd9\u662f\u4e00\u4e2a ",(0,r.kt)("inlineCode",{parentName:"p"},"\u6682\u65f6/\u77ac\u65f6")," \u4f5c\u7528\u57df\u5b9e\u4f8b\u7c7b\u3002\u8be5\u7c7b\u5c31\u53ef\u4ee5\u4f5c\u4e3a\u88ab\u6ce8\u5165\u5bf9\u8c61\uff0c\u540c\u65f6\u4e5f\u80fd\u6ce8\u5165\u5176\u4ed6\u63a5\u53e3\u5bf9\u8c61\u3002"),(0,r.kt)("p",null,"\u4e0a\u9762\u7684\u4f8b\u5b50\u4e2d\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"BusinessService")," \u6ce8\u5165\u4e86 ",(0,r.kt)("inlineCode",{parentName:"p"},"IRepository")," \u4ed3\u50a8\u63a5\u53e3\uff0c\u540c\u65f6 ",(0,r.kt)("inlineCode",{parentName:"p"},"PersonController")," \u63a7\u5236\u5668\u6ce8\u5165\u4e86 ",(0,r.kt)("inlineCode",{parentName:"p"},"IBusinessService")," \u63a5\u53e3\u3002"),(0,r.kt)("p",null,"\u8fd9\u6837 ",(0,r.kt)("inlineCode",{parentName:"p"},"PersonController")," \u548c ",(0,r.kt)("inlineCode",{parentName:"p"},"BusinessService")," \u4e4b\u95f4\u5c31\u5b9e\u73b0\u4e86\u89e3\u8026\uff0c\u4e0d\u518d\u4f9d\u8d56\u4e8e\u5177\u4f53\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"BusinessService")," \u5b9e\u4f8b\u3002"),(0,r.kt)("p",null,"\u8fd9\u5c31\u662f\u4f9d\u8d56\u6ce8\u5165/\u63a7\u5236\u53cd\u8f6c\u6700\u7ecf\u5178\u7684\u4f8b\u5b50\u3002"),(0,r.kt)("h3",{id:"1272-\u6ce8\u518c\u6cdb\u578b\u5b9e\u4f8b"},"12.7.2 \u6ce8\u518c\u6cdb\u578b\u5b9e\u4f8b"),(0,r.kt)("p",null,"\u521b\u5efa ",(0,r.kt)("inlineCode",{parentName:"p"},"IBusinessService")," \u63a5\u53e3\u548c ",(0,r.kt)("inlineCode",{parentName:"p"},"BusinessService")," \u5b9e\u73b0\u7c7b\uff0c\u4ee3\u7801\u5982\u4e0b\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{7,12}","{7,12}":!0},"using Furion.Core;\nusing Furion.DatabaseAccessor;\nusing Furion.DependencyInjection;\n\nnamespace Furion.Application\n{\n public interface IBusinessService\n {\n Person Get(int id);\n }\n\n public class BusinessService : IBusinessService, ITransient\n {\n private readonly IRepository _personRepository;\n\n public BusinessService(IRepository personRepository)\n {\n _personRepository = personRepository;\n }\n\n public Person Get(int id)\n {\n return _personRepository.Find(id);\n }\n }\n}\n")),(0,r.kt)("p",null,"\u521b\u5efa ",(0,r.kt)("inlineCode",{parentName:"p"},"PersonController")," \u63a7\u5236\u5668\uff0c\u4ee3\u7801\u5982\u4e0b\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{11,19}","{11,19}":!0},'using Furion.Application;\nusing Microsoft.AspNetCore.Mvc;\n\nnamespace Furion.Web.Entry.Controllers\n{\n [Route("api/[controller]")]\n [ApiController]\n public class PersonController : ControllerBase\n {\n private readonly IBusinessService _businessService;\n public PersonController(IBusinessService businessService)\n {\n _businessService = businessService;\n }\n\n [HttpGet]\n public IActionResult Get(int id)\n {\n var person = _businessService.Get(id);\n return new JsonResult(person);\n }\n }\n}\n')),(0,r.kt)("h3",{id:"1273-\u4e00\u4e2a\u63a5\u53e3\u591a\u4e2a\u5b9e\u73b0"},"12.7.3 \u4e00\u4e2a\u63a5\u53e3\u591a\u4e2a\u5b9e\u73b0"),(0,r.kt)("p",null,"\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c\u4e00\u4e2a\u63a5\u53e3\u53ea\u5bf9\u5e94\u4e00\u4e2a\u5b9e\u73b0\u7c7b\uff0c\u4f46\u6709\u4e9b\u7279\u6b8a\u60c5\u51b5\uff0c\u9700\u8981\u591a\u4e2a\u5b9e\u73b0\u7c7b\u6ce8\u518c\u540c\u4e00\u4e2a\u63a5\u53e3\uff0c\u5982 ",(0,r.kt)("inlineCode",{parentName:"p"},"DbContext")," \u591a\u6570\u636e\u5e93\u60c5\u51b5\u3002"),(0,r.kt)("p",null,"\u8fd9\u4e2a\u65f6\u5019\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7\u4f9d\u8d56\u6ce8\u5165 ",(0,r.kt)("inlineCode",{parentName:"p"},"Func")," \u59d4\u6258\u6765\u89e3\u6790\u591a\u4e2a\u5b9e\u4f8b\uff0c\u5176\u4e2d\u59d4\u6258\u7684\u53c2\u6570\u5206\u522b\u4e3a\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u53c2\u6570 1\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"string")," \u7c7b\u578b\uff0c\u4e0d\u540c\u5b9e\u73b0\u7c7b\u552f\u4e00\u6807\u8bc6\uff0c\u9ed8\u8ba4\u4e3a ",(0,r.kt)("inlineCode",{parentName:"li"},"nameof(\u5b9e\u73b0\u7c7b)")," \u540d\u79f0"),(0,r.kt)("li",{parentName:"ul"},"\u53c2\u6570 2\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"Type")," \u7c7b\u578b\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"IPrivateDependency")," \u6d3e\u751f\u63a5\u53e3\uff0c\u4e5f\u5c31\u662f ",(0,r.kt)("inlineCode",{parentName:"li"},"ITransient"),"\u3001",(0,r.kt)("inlineCode",{parentName:"li"},"IScoped"),"\u3001",(0,r.kt)("inlineCode",{parentName:"li"},"ISingleton")),(0,r.kt)("li",{parentName:"ul"},"\u8fd4\u56de\u503c\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"object")," \u7c7b\u578b\uff0c\u8fd4\u56de\u5177\u4f53\u7684\u5b9e\u73b0\u7c7b\u5b9e\u4f8b")),(0,r.kt)("p",null,"\u521b\u5efa ",(0,r.kt)("inlineCode",{parentName:"p"},"IBusinessService")," \u63a5\u53e3\u548c ",(0,r.kt)("inlineCode",{parentName:"p"},"BusinessService"),"\u3001",(0,r.kt)("inlineCode",{parentName:"p"},"OtherBusinessService")," \u4e24\u4e2a\u5b9e\u73b0\u7c7b\uff0c\u4ee3\u7801\u5982\u4e0b\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{5,10,18}","{5,10,18}":!0},'using Furion.DependencyInjection;\n\nnamespace Furion.Application\n{\n public interface IBusinessService\n {\n string GetName();\n }\n\n public class BusinessService : IBusinessService, ITransient\n {\n public string GetName()\n {\n return "\u6211\u662f\uff1a" + nameof(BusinessService);\n }\n }\n\n public class OtherBusinessService : IBusinessService, ITransient\n {\n public string GetName()\n {\n return "\u6211\u662f\uff1a" + nameof(OtherBusinessService);\n }\n }\n}\n')),(0,r.kt)("p",null,"\u521b\u5efa ",(0,r.kt)("inlineCode",{parentName:"p"},"ValueController")," \u63a7\u5236\u5668\uff0c\u4ee3\u7801\u5982\u4e0b\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{15,17,18}","{15,17,18}":!0},'using Furion.Application;\nusing Furion.DependencyInjection;\nusing Microsoft.AspNetCore.Mvc;\nusing System;\n\nnamespace Furion.Web.Entry.Controllers\n{\n [Route("api/[controller]")]\n [ApiController]\n public class ValueController : ControllerBase\n {\n private readonly IBusinessService _businessService;\n private readonly IBusinessService _otherBusinessService;\n\n public ValueController(Func resolveNamed)\n {\n _businessService = resolveNamed("BusinessService", default) as IBusinessService;\n _otherBusinessService = resolveNamed("OtherBusinessService", default) as IBusinessService;\n }\n\n [HttpGet]\n public string GetName()\n {\n return _businessService.GetName() + "----------" + _otherBusinessService.GetName();\n }\n }\n}\n')),(0,r.kt)("img",{src:(0,l.Z)("img/di2.gif")}),(0,r.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u5c0f\u77e5\u8bc6")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u5982\u679c\u9700\u8981\u81ea\u5b9a\u4e49\u89e3\u6790\u540d\u79f0\uff0c\u53ea\u9700\u8981\u8d34 ",(0,r.kt)("inlineCode",{parentName:"p"},'[Injection(Named = "\u540d\u79f0")]')," \u5373\u53ef\uff0c\u5982\uff1a"),(0,r.kt)("pre",{parentName:"div"},(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{5,11}","{5,11}":!0},'using Furion.DependencyInjection;\n\nnamespace Furion.Application\n{\n [Injection(Named = "BusName1")]\n public class BusinessService : IBusinessService, ITransient\n {\n // ...\n }\n\n [Injection(Named = "BusName2")]\n public class OtherBusinessService : IBusinessService, ITransient\n {\n // ...\n }\n}\n')),(0,r.kt)("p",{parentName:"div"},"\u89e3\u6790\u670d\u52a1\uff1a"),(0,r.kt)("pre",{parentName:"div"},(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'_businessService = resolveNamed("BusName1", default) as IBusinessService;\n_otherBusinessService = resolveNamed("BusName2", default) as IBusinessService;\n')))),(0,r.kt)("h3",{id:"1274-\u65e0\u63a5\u53e3\u65b9\u5f0f"},"12.7.4 \u65e0\u63a5\u53e3\u65b9\u5f0f"),(0,r.kt)("p",null,"\u6709\u4e9b\u65f6\u5019\uff0c\u6211\u4eec\u4e0d\u60f3\u5b9a\u4e49\u63a5\u53e3\uff0c\u800c\u662f\u60f3\u628a\u5b9e\u4f8b\u7c7b\u4f5c\u4e3a\u53ef\u4f9d\u8d56\u6ce8\u5165\u7684\u5bf9\u8c61\uff0c\u5982 MVC \u4e2d\u7684\u63a7\u5236\u5668\u3002"),(0,r.kt)("p",null,"\u521b\u5efa ",(0,r.kt)("inlineCode",{parentName:"p"},"SelfService")," \u5b9e\u4f8b\u7c7b\uff0c\u4ee3\u7801\u5982\u4e0b\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{7,11}","{7,11}":!0},"using Furion.Core;\nusing Furion.DatabaseAccessor;\nusing Furion.DependencyInjection;\n\nnamespace Furion.Application\n{\n public class SelfService : ITransient\n {\n private readonly IRepository _personRepository;\n\n public SelfService(IRepository personRepository)\n {\n _personRepository = personRepository;\n }\n\n public Person Get(int id)\n {\n return _personRepository.Find(id);\n }\n }\n}\n")),(0,r.kt)("p",null,"\u521b\u5efa ",(0,r.kt)("inlineCode",{parentName:"p"},"ValueController")," \u63a7\u5236\u5668\uff0c\u4ee3\u7801\u5982\u4e0b\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{13,21}","{13,21}":!0},'using Furion.Application;\nusing Furion.Core;\nusing Microsoft.AspNetCore.Mvc;\n\nnamespace Furion.Web.Entry.Controllers\n{\n [Route("api/[controller]")]\n [ApiController]\n public class ValueController : ControllerBase\n {\n private readonly SelfService _selfService;\n\n public ValueController(SelfService selfService)\n {\n _selfService = selfService;\n }\n\n [HttpGet]\n public Person Get(int id)\n {\n return _selfService.Get(id);\n }\n }\n}\n')),(0,r.kt)("h2",{id:"128-injection-\u7279\u6027\u914d\u7f6e"},"12.8 ",(0,r.kt)("inlineCode",{parentName:"h2"},"[Injection]")," \u7279\u6027\u914d\u7f6e"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b ",(0,r.kt)("inlineCode",{parentName:"p"},"[Injection]")," \u7279\u6027\u53ef\u4ee5\u6539\u53d8\u6ce8\u518c\u65b9\u5f0f\uff0c\u540c\u65f6\u8fd8\u80fd\u914d\u7f6e ",(0,r.kt)("inlineCode",{parentName:"p"},"AOP")," \u62e6\u622a\u3002"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"[Injection]")," \u63d0\u4f9b\u4ee5\u4e0b\u914d\u7f6e\u652f\u6301\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Action"),"\uff1a\u914d\u7f6e\u6ce8\u518c\u884c\u4e3a\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"InjectionActions")," \u7c7b\u578b\uff0c\u53ef\u9009\u503c\uff1a",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Add"),"\uff1a",(0,r.kt)("strong",{parentName:"li"},"\u9ed8\u8ba4\u503c"),"\uff0c\u8868\u793a\u65e0\u9650\u5236\u6dfb\u52a0\u6ce8\u518c\u670d\u52a1\uff0c\u8be5\u65b9\u5f0f\u652f\u6301\u4e00\u4e2a\u63a5\u53e3\u591a\u4e2a\u5b9e\u73b0"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"TryAdd"),"\uff1a\u8868\u793a\u6ce8\u518c\u5df2\u5b58\u5728\u5219\u8df3\u8fc7\u6ce8\u518c"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Pattern"),"\uff1a\u914d\u7f6e\u6ce8\u518c\u9009\u9879\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"InjectionPatterns")," \u7c7b\u578b\uff0c\u53ef\u9009\u503c\uff1a",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Self"),"\uff1a\u53ea\u6ce8\u518c\u81ea\u5df1"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"FirstInterface"),"\uff1a\u53ea\u6ce8\u518c\u7b2c\u4e00\u4e2a\u63a5\u53e3"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"SelfWithFirstInterface"),"\uff1a\u6ce8\u518c\u81ea\u5df1\u548c\u7b2c\u4e00\u4e2a\u63a5\u53e3"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"ImplementedInterfaces"),"\uff1a\u6ce8\u518c\u6240\u6709\u63a5\u53e3"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"All"),"\uff1a\u6ce8\u518c\u81ea\u5df1\u5305\u62ec\u6240\u6709\u63a5\u53e3 \uff0c",(0,r.kt)("strong",{parentName:"li"},"\u9ed8\u8ba4\u503c")))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Named"),"\uff1a\u914d\u7f6e\u5b9e\u4f8b\u522b\u540d\uff0c\u901a\u8fc7\u522b\u540d\u53ef\u4ee5\u89e3\u6790\u63a5\u53e3\uff0c\u5982\u540c\u4e00\u4e2a\u63a5\u53e3\u6709\u591a\u4e2a\u5b9e\u73b0\uff0c\u90a3\u4e48\u53ef\u4ee5\u901a\u8fc7\u522b\u540d\u89e3\u6790\u4e0d\u540c\u7684\u5b9e\u73b0\uff0c\u9ed8\u8ba4\u53ea\u4e3a\u5b9e\u73b0\u7c7b\u7684\u7c7b\u540d"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Order"),"\uff1a\u6ce8\u518c\u6392\u5e8f\uff0c\u6570\u5b57\u8d8a\u5927\uff0c\u5219\u8d8a\u5728\u6700\u540e\u6ce8\u518c\uff0c\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"0")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Proxy"),"\uff1a\u914d\u7f6e\u4ee3\u7406\u62e6\u622a\u7c7b\u578b\uff0c\u4e5f\u5c31\u662f ",(0,r.kt)("inlineCode",{parentName:"li"},"AOP"),"\uff0c",(0,r.kt)("strong",{parentName:"li"},"\u4ee3\u7406\u7c7b\u578b\u5fc5\u987b\u7ee7\u627f ",(0,r.kt)("inlineCode",{parentName:"strong"},"AspectDispatchProxy")," \u7c7b\u548c ",(0,r.kt)("inlineCode",{parentName:"strong"},"IDispatchProxy")," \u63a5\u53e3"),"\uff0c\u65e0\u9ed8\u8ba4\u503c"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"ExpectInterfaces"),"\uff1a\u914d\u7f6e\u5ffd\u7565\u6ce8\u518c\u7684\u63a5\u53e3\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"Type[]")," \u7c7b\u578b")),(0,r.kt)("h2",{id:"129-\u81ea\u5b9a\u4e49\u9ad8\u7ea7\u6ce8\u518c"},"12.9 \u81ea\u5b9a\u4e49\u9ad8\u7ea7\u6ce8\u518c"),(0,r.kt)("p",null,"\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u63d0\u4f9b\u7684\u6ce8\u518c\u65b9\u5f0f\u53ef\u4ee5\u6ee1\u8db3\u5927\u591a\u6570\u4f9d\u8d56\u6ce8\u5165\u7684\u9700\u6c42\uff0c\u5982\u6709\u7279\u522b\u6ce8\u518c\u9700\u6c42\uff0c\u53ea\u9700\u8981\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Startup")," \u4e2d\u914d\u7f6e\u5373\u53ef\uff0c\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"services.AddScoped(typeof(ISpecService), provider = > {\n // \u81ea\u5b9a\u4e49\u4efb\u4f55\u521b\u5efa\u5b9e\u4f8b\u7684\u65b9\u5f0f\n var instance = new SpecService(); // \u6216\u8005\u53ef\u4ee5\u901a\u8fc7 AOP\u63d2\u4ef6\u8fd4\u56de\u4ee3\u7406\u5b9e\u4f8b\n\n return instance;\n});\n")),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u8865\u5145\u8bf4\u660e")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"AppDbContext")," \u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u8fd8\u6709 ",(0,r.kt)("inlineCode",{parentName:"p"},"ISqlDispatchProxy")," \u90fd\u662f\u901a\u8fc7\u8fd9\u79cd\u65b9\u5f0f\u521b\u5efa\u7684\u3002"))),(0,r.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u77e5\u8bc6\u5bfc\u822a")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u60f3\u4e86\u89e3\u66f4\u591a\u81ea\u5b9a\u4e49\u9ad8\u7ea7\u4e2d\u6ce8\u518c\uff0c\u53ef\u67e5\u9605 \u3010",(0,r.kt)("a",{parentName:"p",href:"https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/dependency-injection?view=aspnetcore-5.0"},"ASP.NET Core \u4f9d\u8d56\u6ce8\u5165"),"\u3011 \u5b98\u65b9\u6587\u6863\u3002"))),(0,r.kt)("h2",{id:"1210-appsettingsjson-\u914d\u7f6e\u6ce8\u518c"},"12.10 ",(0,r.kt)("inlineCode",{parentName:"h2"},"appsettings.json")," \u914d\u7f6e\u6ce8\u518c"),(0,r.kt)("p",null,"\u9664\u4e86\u5728\u4ee3\u7801\u4e2d\u5b9e\u73b0\u4f9d\u8d56\u6ce8\u5165\uff0c\u4e5f\u53ef\u4ee5\u5b9e\u73b0\u52a8\u6001\u4f9d\u8d56\u6ce8\u5165\uff0c\u65e0\u9700\u4fee\u6539\u4ee3\u7801\u6216\u91cd\u65b0\u7f16\u8bd1\u5373\u53ef\u5b9e\u73b0\u70ed\u63d2\u62d4\uff08\u63d2\u4ef6\uff09\u6548\u679c\u3002\u914d\u7f6e\u5982\u4e0b\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json",metastring:"{2}","{2}":!0},'{\n "DependencyInjectionSettings": {\n "Definitions": [\n {\n "Interface": "Furion.Application;Furion.Application.ITestService",\n "Service": "Furion.Application;Furion.Application.TestService",\n "RegisterType": "Transient",\n "Action": "Add",\n "Pattern": "SelfWithFirstInterface",\n "Named": "TestService",\n "Order": 1,\n "Proxy": "Furion.Application;Furion.Application.LogDispathProxy"\n }\n ]\n }\n}\n')),(0,r.kt)("p",null,"\u914d\u7f6e\u8bf4\u660e\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"DependencyInjectionSettings"),"\uff1a\u4f9d\u8d56\u6ce8\u5165\u914d\u7f6e\u6839\u8282\u70b9",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Definitions"),"\uff1a\u52a8\u6001\u4f9d\u8d56\u6ce8\u5165\u914d\u7f6e\u8282\u70b9\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"ExternalService")," \u6570\u7ec4\u7c7b\u578b",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"ExternalService"),"\uff1a\u914d\u7f6e\u5355\u4e2a\u4f9d\u8d56\u6ce8\u5165\u4fe1\u606f",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Interface"),"\uff1a\u914d\u7f6e\u4f9d\u8d56\u63a5\u53e3\u4fe1\u606f\uff0c\u683c\u5f0f\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"\u7a0b\u5e8f\u96c6\u540d\u79f0;\u63a5\u53e3\u5b8c\u6574\u540d\u79f0"),"\uff0c\u5982\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"Furion.Application;Furion.Application.ITestService")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Service"),"\uff1a\u914d\u7f6e\u63a5\u53e3\u5b9e\u73b0\u4fe1\u606f\uff0c\u683c\u5f0f\u540c\u4e0a"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"RegisterType"),"\uff1a\u914d\u7f6e\u4f9d\u8d56\u6ce8\u5165\u7684\u5bf9\u8c61\u751f\u5b58\u671f\uff0c\u53d6\u503c\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"Transient"),"\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"Scoped"),"\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"Singleton")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Action"),"\uff1a\u6ce8\u518c\u884c\u4e3a\uff0c\u53ef\u9009\u503c\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"Add"),"\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"TryAdd"),"\uff0c\u53c2\u89c1 ",(0,r.kt)("a",{parentName:"li",href:"#128-injection-%E7%89%B9%E6%80%A7%E9%85%8D%E7%BD%AE"},"#128-injection-\u7279\u6027\u914d\u7f6e")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Pattern"),"\uff1a\u6ce8\u518c\u9009\u9879\uff0c\u53c2\u89c1 ",(0,r.kt)("a",{parentName:"li",href:"#128-injection-%E7%89%B9%E6%80%A7%E9%85%8D%E7%BD%AE"},"#128-injection-\u7279\u6027\u914d\u7f6e")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Named"),"\uff1a\u6ce8\u518c\u522b\u540d\uff0c\u53c2\u89c1 ",(0,r.kt)("a",{parentName:"li",href:"#128-injection-%E7%89%B9%E6%80%A7%E9%85%8D%E7%BD%AE"},"#128-injection-\u7279\u6027\u914d\u7f6e")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Order"),"\uff1a\u6ce8\u518c\u6392\u5e8f\uff0c\u53c2\u89c1 ",(0,r.kt)("a",{parentName:"li",href:"#128-injection-%E7%89%B9%E6%80%A7%E9%85%8D%E7%BD%AE"},"#128-injection-\u7279\u6027\u914d\u7f6e")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Proxy"),"\uff1a\u914d\u7f6e\u4ee3\u7406\u62e6\u622a\uff0c\u683c\u5f0f\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"\u7a0b\u5e8f\u96c6\u540d\u79f0;\u4ee3\u7406\u7c7b\u5b8c\u6574\u540d\u79f0"),"\uff0c\u53c2\u89c1 ",(0,r.kt)("a",{parentName:"li",href:"#128-injection-%E7%89%B9%E6%80%A7%E9%85%8D%E7%BD%AE"},"#128-injection-\u7279\u6027\u914d\u7f6e"))))))))),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u5173\u4e8e\u5916\u90e8\u7a0b\u5e8f\u96c6")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u5982\u679c\u52a8\u6001\u6ce8\u5165\u7684\u5bf9\u8c61\u662f\u5916\u90e8\u7a0b\u5e8f\u96c6\uff0c\u90a3\u4e48\u9996\u5148\u5148\u6ce8\u518c\u5916\u90e8\u7a0b\u5e8f\u96c6\uff1a"),(0,r.kt)("pre",{parentName:"div"},(0,r.kt)("code",{parentName:"pre",className:"language-json"},'{\n "AppSettings": {\n "ExternalAssemblies": ["\u5916\u90e8\u7a0b\u5e8f\u96c6\u540d\u79f0", "Taobao.Pay"] // \u652f\u6301\u591a\u4e2a\n }\n}\n')))),(0,r.kt)("h2",{id:"1211-\u6ce8\u518c\u987a\u5e8f\u548c\u4f18\u5148\u7ea7"},"12.11 \u6ce8\u518c\u987a\u5e8f\u548c\u4f18\u5148\u7ea7"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\uff0c\u9ed8\u8ba4\u6ce8\u518c\u987a\u5e8f\u662f\u6309\u7167\u7a0b\u5e8f\u96c6\u626b\u63cf\u987a\u5e8f\u8fdb\u884c\u6ce8\u518c\uff0c\u5982\u679c\u9700\u8981\u6539\u53d8\u6ce8\u518c\u987a\u5e8f\uff0c\u53ef\u901a\u8fc7 ",(0,r.kt)("inlineCode",{parentName:"p"},"[Injection(Order)]")," \u7279\u6027\u6307\u5b9a\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"Order")," \u503c\u8d8a\u5927\uff0c\u5219\u8d8a\u5728\u6700\u540e\u6ce8\u518c\u3002"),(0,r.kt)("p",null,"\u53e6\u5916 ",(0,r.kt)("inlineCode",{parentName:"p"},"appsettings.json")," \u914d\u7f6e\u7684\u4f18\u5148\u7ea7\u6700\u5927\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"appsettings.json")," \u914d\u7f6e\u7684\u6ce8\u518c\u4f1a\u8986\u76d6\u4e4b\u524d\u6240\u6709\u6ce8\u518c\u3002"),(0,r.kt)("h2",{id:"1212-aop-\u6ce8\u518c\u62e6\u622a"},"12.12 ",(0,r.kt)("inlineCode",{parentName:"h2"},"Aop")," \u6ce8\u518c\u62e6\u622a"),(0,r.kt)("div",{className:"admonition admonition-warning alert alert--danger"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"}))),"\u5173\u4e8e\u52a8\u6001 API \u548c\u670d\u52a1\u7684\u533a\u522b")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u5982\u679c\u60a8\u7684\u670d\u52a1\u662f\u52a8\u6001 API\uff0c\u90a3\u4e48\u8bf7\u4f7f\u7528 ",(0,r.kt)("a",{parentName:"p",href:"/docs/dynamic-api-controller#511-%E5%85%B3%E4%BA%8E-aop-%E6%8B%A6%E6%88%AA"},"\u52a8\u6001 API - AOP \u62e6\u622a"),"\uff0c\u539f\u56e0\u662f\u52a8\u6001 API \u672c\u8d28\u662f\u63a7\u5236\u5668\uff0c\u6240\u4ee5\u91c7\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"Filter")," \u65b9\u5f0f\u3002"))),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"AOP")," \u662f\u975e\u5e38\u91cd\u8981\u7684\u601d\u60f3\u548c\u6280\u672f\uff0c\u4e5f\u5c31\u662f ",(0,r.kt)("inlineCode",{parentName:"p"},"\u9762\u5411\u5207\u9762")," \u7f16\u7a0b\uff0c\u53ef\u4ee5\u8ba9\u6211\u4eec\u5728\u4e0d\u6539\u52a8\u539f\u6765\u4ee3\u7801\u7684\u60c5\u51b5\u4e0b\u8fdb\u884c\u52a8\u6001\u7be1\u6539\u4e1a\u52a1\u4ee3\u7801\u3002"),(0,r.kt)("p",null,"\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\uff0c\u5b9e\u73b0 ",(0,r.kt)("inlineCode",{parentName:"p"},"Aop")," \u975e\u5e38\u7b80\u5355\uff0c\u5982\uff1a"),(0,r.kt)("p",null,"\u5047\u8bbe\u6211\u4eec\u6709 ",(0,r.kt)("inlineCode",{parentName:"p"},"ITestService")," \u548c ",(0,r.kt)("inlineCode",{parentName:"p"},"TestService")," \u4e24\u4e2a\u7c7b\u578b\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"public interface ITestService\n{\n string SayHello(string word);\n}\n")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'public class TestService: ITestService, ITransient\n{\n public string SayHello(string word)\n {\n return $"Hello {word}";\n }\n}\n')),(0,r.kt)("p",null,"\u73b0\u5728\u6211\u4eec\u6709\u4e00\u4e2a\u9700\u6c42\uff0c\u6211\u4eec\u5e0c\u671b\u8c03\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"SayHello")," \u7684\u65f6\u5019\u53ef\u4ee5\u8bb0\u5f55\u65e5\u5fd7\u548c\u6743\u9650\u63a7\u5236\uff08\u4e4b\u524d\u6ca1\u6709\u8003\u8651\u5230\u7684\u9700\u6c42\uff09\u3002"),(0,r.kt)("p",null,"\u8fd9\u4e2a\u65f6\u5019\u6211\u4eec\u53ea\u9700\u8981\u521b\u5efa\u4e00\u4e2a\u4ee3\u7406\u7c7b\u5373\u53ef\uff0c\u5982 ",(0,r.kt)("inlineCode",{parentName:"p"},"LogDispatchProxy")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,3,7,25,37,48}","{1,3,7,25,37,48}":!0},'using Furion.DependencyInjection;\nusing System;\nusing System.Reflection;\n\nnamespace Furion.Application\n{\n public class LogDispatchProxy : AspectDispatchProxy, IDispatchProxy\n {\n /// \n /// \u5f53\u524d\u670d\u52a1\u5b9e\u4f8b\n /// \n public object Target { get; set; }\n\n /// \n /// \u670d\u52a1\u63d0\u4f9b\u5668\uff0c\u53ef\u4ee5\u7528\u6765\u89e3\u6790\u670d\u52a1\uff0c\u5982\uff1aServices.GetService()\n /// \n public IServiceProvider Services { get; set; }\n\n /// \n /// \u62e6\u622a\u65b9\u6cd5\n /// \n /// \n /// \n /// \n public override object Invoke(MethodInfo method, object[] args)\n {\n Console.WriteLine("SayHello \u65b9\u6cd5\u88ab\u8c03\u7528\u4e86");\n\n var result = method.Invoke(Target, args);\n\n Console.WriteLine("SayHello \u65b9\u6cd5\u8fd4\u56de\u503c\uff1a" + result);\n\n return result;\n }\n\n // \u5f02\u6b65\u65e0\u8fd4\u56de\u503c\n public override async Task InvokeAsync(MethodInfo method, object[] args)\n {\n Console.WriteLine("SayHello \u65b9\u6cd5\u88ab\u8c03\u7528\u4e86");\n\n var task = method.Invoke(Target, args) as Task;\n await task;\n\n Console.WriteLine("SayHello \u65b9\u6cd5\u8c03\u7528\u5b8c\u6210");\n }\n\n // \u5f02\u6b65\u5e26\u8fd4\u56de\u503c\n public override async Task InvokeAsyncT(MethodInfo method, object[] args)\n {\n Console.WriteLine("SayHello \u65b9\u6cd5\u88ab\u8c03\u7528\u4e86");\n\n var taskT = method.Invoke(Target, args) as Task;\n var result = await taskT;\n\n Console.WriteLine("SayHello \u65b9\u6cd5\u8fd4\u56de\u503c\uff1a" + result);\n\n return result;\n }\n }\n}\n')),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u83b7\u53d6\u7279\u6027")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u5982\u679c\u9700\u8981\u83b7\u53d6\u65b9\u6cd5\u7684\u7279\u6027\uff0c\u53ea\u9700\u8981\u901a\u8fc7 ",(0,r.kt)("inlineCode",{parentName:"p"},"method.GetActualCustomAttribute()")," \u5373\u53ef\u3002\u6240\u6709\u83b7\u53d6\u771f\u5b9e\u7684\u7279\u6027\u7edf\u4e00\u91c7\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"method.GetActual....()")," \u65b9\u6cd5\u5f00\u5934\u3002"))),(0,r.kt)("p",null,"\u4e4b\u540e\u6211\u4eec\u53ea\u9700\u8981\u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"TestService")," \u589e\u52a0 ",(0,r.kt)("inlineCode",{parentName:"p"},"[Injection]")," \u7279\u6027\u5373\u53ef\uff0c\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1}","{1}":!0},'[Injection(Proxy = typeof(LogDispatchProxy))]\npublic class TestService: ITestService, ITransient\n{\n public string SayHello(string word)\n {\n return $"Hello {word}";\n }\n}\n')),(0,r.kt)("p",null,"\u4e4b\u540e ",(0,r.kt)("inlineCode",{parentName:"p"},"SayHello")," \u65b9\u6cd5\u88ab\u8c03\u7528\u7684\u65f6\u5019\u5c31\u53ef\u4ee5\u5b9e\u73b0\u52a8\u6001\u62e6\u622a\u4e86\uff0c\u6bd4\u5982\u8fd9\u91cc\u5199\u65e5\u5fd7\u3002"),(0,r.kt)("h3",{id:"12121-\u5168\u5c40aop\u62e6\u622a"},"12.12.1 ",(0,r.kt)("inlineCode",{parentName:"h3"},"\u5168\u5c40Aop\u62e6\u622a")),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e5f\u63d0\u4f9b\u4e86\u5168\u5c40\u62e6\u622a\u7684\u65b9\u5f0f\uff0c\u53ea\u9700\u8981\u5c06 ",(0,r.kt)("inlineCode",{parentName:"p"},"IDispatchProxy")," \u4fee\u6539\u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"IGlobalDispatchProxy")," \u5373\u53ef\u3002"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"using Furion;\nusing System.Reflection;\n\nnamespace Furion.Application\n{\n public class LogDispatchProxy : AspectDispatchProxy, IGlobalDispatchProxy\n {\n // ....\n }\n}\n")),(0,r.kt)("p",null,"\u8fd9\u6837\u5c31\u4f1a\u62e6\u622a\u6240\u6709\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"Service"),"\uff0c\u5f53\u7136\u4e5f\u53ef\u4ee5\u901a\u8fc7\u7ed9\u7279\u5b9a\u7c7b\u8d34 ",(0,r.kt)("inlineCode",{parentName:"p"},"[SuppressProxy]")," \u8df3\u8fc7\u5168\u5c40\u62e6\u622a\u64cd\u4f5c\u3002"),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u62e6\u622a\u4f18\u5148\u7ea7")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},(0,r.kt)("inlineCode",{parentName:"p"},"[SuppressProxy]")," > ",(0,r.kt)("inlineCode",{parentName:"p"},"[Injection(Proxy = typeof(LogDispatchProxy))]")," > ",(0,r.kt)("inlineCode",{parentName:"p"},"\u5168\u5c40\u62e6\u622a"),"\u3002"))),(0,r.kt)("h3",{id:"12122-aop-\u6ce8\u5165\u89e3\u6790\u670d\u52a1"},"12.12.2 ",(0,r.kt)("inlineCode",{parentName:"h3"},"AOP")," \u6ce8\u5165\u89e3\u6790\u670d\u52a1"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u672a\u63d0\u4f9b ",(0,r.kt)("inlineCode",{parentName:"p"},"Proxy")," \u6784\u9020\u51fd\u6570\u6ce8\u5165\u529f\u80fd\uff0c\u4f46\u662f\u63d0\u4f9b\u4e86 ",(0,r.kt)("inlineCode",{parentName:"p"},"Services")," \u5c5e\u6027\uff0c\u5982\u679c\u9700\u8981\u89e3\u6790\u670d\u52a1\uff0c\u5219\u53ef\u4ee5\u901a\u8fc7\u4ee5\u4e0b\u65b9\u5f0f\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"var someServices = Services.GetService(); // \u63a8\u8350\u65b9\u5f0f\n// \u6216\nvar someServices = App.GetService();\n")),(0,r.kt)("h3",{id:"12123-aop-\u7684\u4f5c\u7528"},"12.12.3 ",(0,r.kt)("inlineCode",{parentName:"h3"},"AOP")," \u7684\u4f5c\u7528"),(0,r.kt)("p",null,"\u8fd9\u79cd\u9762\u5411\u5207\u9762\u7684\u80fd\u529b\uff08\u52a8\u6001\u62e6\u622a/\u4ee3\u7406\uff09\u53ef\u4ee5\u5b9e\u73b0\u5f88\u591a\u5f88\u591a\u529f\u80fd\uff0c\u5982\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u52a8\u6001\u65e5\u5fd7\u8bb0\u5f55"),(0,r.kt)("li",{parentName:"ul"},"\u52a8\u6001\u4fee\u6539\u53c2\u6570"),(0,r.kt)("li",{parentName:"ul"},"\u52a8\u6001\u4fee\u6539\u8fd4\u56de\u503c"),(0,r.kt)("li",{parentName:"ul"},"\u52a8\u6001\u65b9\u6cd5\u91cd\u5b9a\u5411"),(0,r.kt)("li",{parentName:"ul"},"\u52a8\u6001\u4fee\u6539\u4ee3\u7801\u903b\u8f91"),(0,r.kt)("li",{parentName:"ul"},"\u52a8\u6001\u5b9e\u73b0\u5f02\u5e38\u76d1\u542c")),(0,r.kt)("p",null,"\u8fd8\u53ef\u4ee5\u505a\u66f4\u591a\u66f4\u591a\u7684\u4e8b\u60c5\u3002"),(0,r.kt)("h2",{id:"1213-\u53cd\u9988\u4e0e\u5efa\u8bae"},"12.13 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,r.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/aa7bdd74.8e14ff48.js b/handbook/build/assets/js/aa7bdd74.8e14ff48.js deleted file mode 100644 index 3c410d00e51..00000000000 --- a/handbook/build/assets/js/aa7bdd74.8e14ff48.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[4572],{3905:function(e,n,r){r.d(n,{Zo:function(){return p},kt:function(){return u}});var t=r(7294);function i(e,n,r){return n in e?Object.defineProperty(e,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[n]=r,e}function o(e,n){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n&&(t=t.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),r.push.apply(r,t)}return r}function a(e){for(var n=1;n=0||(i[r]=e[r]);return i}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(t=0;t=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}var l=t.createContext({}),c=function(e){var n=t.useContext(l),r=n;return e&&(r="function"==typeof e?e(n):a(a({},n),e)),r},p=function(e){var n=c(e.components);return t.createElement(l.Provider,{value:n},e.children)},d={inlineCode:"code",wrapper:function(e){var n=e.children;return t.createElement(t.Fragment,{},n)}},k=t.forwardRef((function(e,n){var r=e.components,i=e.mdxType,o=e.originalType,l=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),k=c(r),u=i,m=k["".concat(l,".").concat(u)]||k[u]||d[u]||o;return r?t.createElement(m,a(a({ref:n},p),{},{components:r})):t.createElement(m,a({ref:n},p))}));function u(e,n){var r=arguments,i=n&&n.mdxType;if("string"==typeof e||i){var o=r.length,a=new Array(o);a[0]=k;var s={};for(var l in n)hasOwnProperty.call(n,l)&&(s[l]=n[l]);s.originalType=e,s.mdxType="string"==typeof e?e:i,a[1]=s;for(var c=2;cWorker Service",id:"252-\u5982\u4f55\u521b\u5efa-worker-service",children:[]},{value:"25.3 \u521b\u5efa Worker",id:"253-\u521b\u5efa-worker",children:[{value:"25.3.1 \u591a\u4e2a Worker",id:"2531-\u591a\u4e2a-worker",children:[]},{value:"25.3.2 \u751f\u547d\u5468\u671f",id:"2532-\u751f\u547d\u5468\u671f",children:[]}]},{value:"25.4 \u96c6\u6210 Furion",id:"254-\u96c6\u6210-furion",children:[]},{value:"25.5 \u6ce8\u518c\u670d\u52a1",id:"255-\u6ce8\u518c\u670d\u52a1",children:[]},{value:"25.6 \u5b9e\u73b0\u5b9a\u65f6\u4efb\u52a1",id:"256-\u5b9e\u73b0\u5b9a\u65f6\u4efb\u52a1",children:[{value:"26.6.1 \u95f4\u9694\u6267\u884c\u65b9\u5f0f",id:"2661-\u95f4\u9694\u6267\u884c\u65b9\u5f0f",children:[]},{value:"26.6.2 Cron \u8868\u8fbe\u5f0f\u683c\u5f0f\u5316\u65b9\u5f0f\uff0c",id:"2662-cron-\u8868\u8fbe\u5f0f\u683c\u5f0f\u5316\u65b9\u5f0f\uff0c",children:[]}]},{value:"25.7 \u4f9d\u8d56\u6ce8\u5165\u4f7f\u7528",id:"257-\u4f9d\u8d56\u6ce8\u5165\u4f7f\u7528",children:[]},{value:"25.8 \u90e8\u7f72\u5230\u64cd\u4f5c\u7cfb\u7edf",id:"258-\u90e8\u7f72\u5230\u64cd\u4f5c\u7cfb\u7edf",children:[{value:"25.8.1 \u90e8\u7f72\u5230 Windows Service",id:"2581-\u90e8\u7f72\u5230-windows-service",children:[]},{value:"25.8.2 \u90e8\u7f72\u5230 Linux \u5b88\u62a4\u7a0b\u5e8f",id:"2582-\u90e8\u7f72\u5230-linux-\u5b88\u62a4\u7a0b\u5e8f",children:[]}]},{value:"25.9 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"259-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],k={toc:d};function u(e){var n=e.components,r=(0,i.Z)(e,s);return(0,o.kt)("wrapper",(0,t.Z)({},k,r,{components:n,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"251-\u5173\u4e8e\u8f85\u52a9\u89d2\u8272\u670d\u52a1"},"25.1 \u5173\u4e8e\u8f85\u52a9\u89d2\u8272\u670d\u52a1"),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},".NET Core 3.0")," \u65b0\u589e\u4e86 ",(0,o.kt)("inlineCode",{parentName:"p"},"Worker Service")," \u7684\u65b0\u9879\u76ee\u6a21\u677f\uff0c",(0,o.kt)("strong",{parentName:"p"},"\u53ef\u4ee5\u7f16\u5199\u957f\u65f6\u95f4\u8fd0\u884c\u7684\u540e\u53f0\u670d\u52a1\uff0c\u5e76\u4e14\u80fd\u8f7b\u677e\u7684\u90e8\u7f72\u6210 ",(0,o.kt)("inlineCode",{parentName:"strong"},"Windows\u670d\u52a1")," \u6216 ",(0,o.kt)("inlineCode",{parentName:"strong"},"Linux \u5b88\u62a4\u7a0b\u5e8f")),"\u3002"),(0,o.kt)("h2",{id:"252-\u5982\u4f55\u521b\u5efa-worker-service"},"25.2 \u5982\u4f55\u521b\u5efa ",(0,o.kt)("inlineCode",{parentName:"h2"},"Worker Service")),(0,o.kt)("p",null,"\u901a\u8fc7 ",(0,o.kt)("inlineCode",{parentName:"p"},"Visual Studio 2019")," \u63d0\u4f9b\u7684 ",(0,o.kt)("inlineCode",{parentName:"p"},"Worker Service")," \u53ef\u76f4\u63a5\u521b\u5efa\u3002\u5982\u56fe\uff1a"),(0,o.kt)("img",{src:(0,a.Z)("img/wk.png")}),(0,o.kt)("h2",{id:"253-\u521b\u5efa-worker"},"25.3 \u521b\u5efa ",(0,o.kt)("inlineCode",{parentName:"h2"},"Worker")),(0,o.kt)("p",null,"\u5f53\u6211\u4eec\u521b\u5efa\u597d ",(0,o.kt)("inlineCode",{parentName:"p"},"Worker Service")," \u9879\u76ee\u65f6\uff0c\u5df2\u7ecf\u81ea\u5e26\u4e86\u4e00\u4e2a ",(0,o.kt)("inlineCode",{parentName:"p"},"Worker")," \u7c7b\u5e76\u7ee7\u627f\u81ea ",(0,o.kt)("inlineCode",{parentName:"p"},"BackgroundService")," \u57fa\u7c7b\u3002"),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"Worker")," \u6b63\u662f\u6211\u4eec\u8f85\u52a9\u89d2\u8272\u7684\u4e3b\u8981\u5de5\u4f5c\u7c7b\uff0c\u5728\u8fd9\u91cc\u6211\u4eec\u7f16\u5199\u6211\u4eec\u6240\u6709\u7684\u4e1a\u52a1\u903b\u8f91\u3002\u901a\u5e38 ",(0,o.kt)("inlineCode",{parentName:"p"},"Worker")," \u9ed8\u8ba4\u683c\u5f0f\u4e3a\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{9,18}","{9,18}":!0},'using Microsoft.Extensions.Hosting;\nusing Microsoft.Extensions.Logging;\nusing System;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace FurionWorkers\n{\n public class Worker : BackgroundService\n {\n private readonly ILogger _logger;\n\n public Worker(ILogger logger)\n {\n _logger = logger;\n }\n\n protected override async Task ExecuteAsync(CancellationToken stoppingToken)\n {\n while (!stoppingToken.IsCancellationRequested)\n {\n _logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now);\n await Task.Delay(1000, stoppingToken);\n }\n }\n }\n}\n')),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"\u5f53\u6211\u4eec\u521b\u5efa\u4e86 ",(0,o.kt)("inlineCode",{parentName:"strong"},"Worker")," \u7c7b\u4e4b\u540e\uff0c\u9700\u8981\u5728 ",(0,o.kt)("inlineCode",{parentName:"strong"},"Program.cs")," \u4e2d\u8fdb\u884c\u6ce8\u518c"),"\uff0c\u5982\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{17}","{17}":!0},"using Microsoft.Extensions.DependencyInjection;\nusing Microsoft.Extensions.Hosting;\n\nnamespace FurionWorkers\n{\n public class Program\n {\n public static void Main(string[] args)\n {\n CreateHostBuilder(args).Build().Run();\n }\n\n public static IHostBuilder CreateHostBuilder(string[] args) =>\n Host.CreateDefaultBuilder(args)\n .ConfigureServices((hostContext, services) =>\n {\n services.AddHostedService();\n });\n }\n}\n")),(0,o.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u5c0f\u77e5\u8bc6")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u5982\u679c\u4f7f\u7528\u4e86 ",(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u5305\u540e\u53ef\u5b9e\u73b0\u81ea\u52a8\u6ce8\u518c\u3002"))),(0,o.kt)("h3",{id:"2531-\u591a\u4e2a-worker"},"25.3.1 \u591a\u4e2a ",(0,o.kt)("inlineCode",{parentName:"h3"},"Worker")),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"Worker Service")," \u662f\u652f\u6301\u5b9a\u4e49\u591a\u4e2a ",(0,o.kt)("inlineCode",{parentName:"p"},"Worker")," \u8fdb\u884c\u534f\u8c03\u5de5\u4f5c\u7684\uff0c\u6bcf\u4e2a ",(0,o.kt)("inlineCode",{parentName:"p"},"Worker")," \u662f\u5b8c\u5168\u72ec\u7acb\u7684\u5de5\u4f5c\u73af\u5883\uff0c\u4f46\u53ef\u5171\u4eab\u540c\u4e00\u4e3b\u8fdb\u7a0b\u4fe1\u606f\u3002"),(0,o.kt)("h3",{id:"2532-\u751f\u547d\u5468\u671f"},"25.3.2 \u751f\u547d\u5468\u671f"),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"Worker Service")," \u4e3a ",(0,o.kt)("inlineCode",{parentName:"p"},"Worker")," \u63d0\u4f9b\u4e86\u4e09\u4e2a\u6267\u884c\u65b9\u6cd5\uff0c\u5206\u522b\u4ee3\u8868\u4e09\u4e2a\u751f\u547d\u5468\u671f\uff1a"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"StartAsync"),"\uff1a\u8d1f\u8d23\u542f\u52a8 ",(0,o.kt)("inlineCode",{parentName:"li"},"Worker Service"),"\uff0c\u5982\u679c\u8c03\u7528 ",(0,o.kt)("inlineCode",{parentName:"li"},"StartAsync")," \u65b9\u6cd5\u7684\u7ebf\u7a0b\u88ab\u4e00\u76f4\u963b\u585e\u4e86\uff0c\u90a3\u4e48 ",(0,o.kt)("inlineCode",{parentName:"li"},"Worker Service")," \u7684\u542f\u52a8\u5c31\u4e00\u76f4\u5b8c\u6210\u4e0d\u4e86"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"ExecuteAsync"),"\uff1a",(0,o.kt)("inlineCode",{parentName:"li"},"Worker Service")," \u771f\u6b63\u5b9e\u73b0\u4e1a\u52a1\u903b\u8f91\u7684\u5730\u65b9\uff0c\u8fd9\u91cc\u4e0d\u80fd\u8c03\u7528\u963b\u585e\u4ee3\u7801\uff01\uff01\uff01"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"StopAsync"),"\uff1a\u8d1f\u8d23\u7ed3\u675f ",(0,o.kt)("inlineCode",{parentName:"li"},"Worker Service"),"\uff0c\u5982\u679c\u8c03\u7528 ",(0,o.kt)("inlineCode",{parentName:"li"},"StopAsync")," \u65b9\u6cd5\u7684\u7ebf\u7a0b\u88ab\u4e00\u76f4\u963b\u585e\u4e86\uff0c\u90a3\u4e48 ",(0,o.kt)("inlineCode",{parentName:"li"},"Worker Service")," \u7684\u7ed3\u675f\u5c31\u4e00\u76f4\u5b8c\u6210\u4e0d\u4e86")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{19,25,35}","{19,25,35}":!0},'using Microsoft.Extensions.Hosting;\nusing Microsoft.Extensions.Logging;\nusing System;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace FurionWorkers\n{\n public class Worker : BackgroundService\n {\n private readonly ILogger _logger;\n\n public Worker(ILogger logger)\n {\n _logger = logger;\n }\n\n // \u542f\u52a8\n public override Task StartAsync(CancellationToken cancellationToken)\n {\n return base.StartAsync(cancellationToken);\n }\n\n // \u6267\u884c\u903b\u8f91\n protected override async Task ExecuteAsync(CancellationToken stoppingToken)\n {\n while (!stoppingToken.IsCancellationRequested)\n {\n _logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now);\n await Task.Delay(1000, stoppingToken);\n }\n }\n\n // \u505c\u6b62\n public override Task StopAsync(CancellationToken cancellationToken)\n {\n return base.StopAsync(cancellationToken);\n }\n }\n}\n')),(0,o.kt)("h2",{id:"254-\u96c6\u6210-furion"},"25.4 \u96c6\u6210 ",(0,o.kt)("inlineCode",{parentName:"h2"},"Furion")),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"Worker Service")," \u96c6\u6210 ",(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u975e\u5e38\u65b9\u4fbf\uff0c\u53ea\u9700\u8981\u5b89\u88c5 ",(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u7684\u5305\u5373\u53ef\uff0c\u5e76\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"Program.cs")," \u4e2d\u8c03\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},".Inject()")," \u65b9\u6cd5\uff0c\u5982\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{15}","{15}":!0},"using Microsoft.Extensions.DependencyInjection;\nusing Microsoft.Extensions.Hosting;\n\nnamespace FurionWorkers\n{\n public class Program\n {\n public static void Main(string[] args)\n {\n CreateHostBuilder(args).Build().Run();\n }\n\n public static IHostBuilder CreateHostBuilder(string[] args) =>\n Host.CreateDefaultBuilder(args)\n .Inject()\n .ConfigureServices((hostContext, services) =>\n {\n // \u4ee5\u4e0b\u4ee3\u7801\u53ef\u4e0d\u7528\u7f16\u5199\uff0cFurion \u5df2\u5b9e\u73b0\u81ea\u52a8\u6ce8\u518c Worker;\n // services.AddHostedService();\n });\n }\n}\n")),(0,o.kt)("p",null,"\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c",(0,o.kt)("inlineCode",{parentName:"p"},"Inject()")," \u65b9\u6cd5\u6ce8\u518c\u4e86 ",(0,o.kt)("inlineCode",{parentName:"p"},"\u65e5\u5fd7\u3001\u7f13\u5b58\u3001\u4f9d\u8d56\u6ce8\u5165\u3001\u52a0\u8f7d\u914d\u7f6e\u3001\u81ea\u5b9a\u4e49 Startup")," \u529f\u80fd\u3002"),(0,o.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u5c0f\u77e5\u8bc6")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u96c6\u6210 ",(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u540e\u4f1a\u81ea\u52a8\u626b\u63cf ",(0,o.kt)("inlineCode",{parentName:"p"},"Worker")," \u7c7b\u5e76\u5b9e\u73b0\u81ea\u52a8\u6ce8\u518c\u3002"))),(0,o.kt)("h2",{id:"255-\u6ce8\u518c\u670d\u52a1"},"25.5 \u6ce8\u518c\u670d\u52a1"),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"Worker Service")," \u6ce8\u518c\u670d\u52a1\u548c ",(0,o.kt)("inlineCode",{parentName:"p"},"Web")," \u7565\u6709\u4e0d\u540c\uff0c",(0,o.kt)("inlineCode",{parentName:"p"},"Web")," \u4e3b\u8981\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"Starup.cs")," \u7c7b\u4e2d\u6ce8\u518c\uff0c",(0,o.kt)("inlineCode",{parentName:"p"},"Worker Service")," \u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"Program.cs")," \u542f\u52a8\u7c7b\u7684 ",(0,o.kt)("inlineCode",{parentName:"p"},"ConfigureServices")," \u65b9\u6cd5\u4e2d\u6ce8\u518c\uff0c\u5982\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{16-28}","{16-28}":!0},"using Microsoft.Extensions.DependencyInjection;\nusing Microsoft.Extensions.Hosting;\n\nnamespace FurionWorkers\n{\n public class Program\n {\n public static void Main(string[] args)\n {\n CreateHostBuilder(args).Build().Run();\n }\n\n public static IHostBuilder CreateHostBuilder(string[] args) =>\n Host.CreateDefaultBuilder(args)\n .Inject()\n .ConfigureServices((hostContext, services) =>\n {\n // \u6ce8\u518c\u6570\u636e\u5e93\u670d\u52a1\n services.AddDatabaseAccessor(options =>\n {\n options.AddDb();\n });\n\n // \u6ce8\u518c\u8fdc\u7a0b\u8bf7\u6c42\n services.AddRemoteRequest();\n\n // \u7b49\u7b49\u5176\u4ed6\u670d\u52a1\u6ce8\u518c\n });\n }\n}\n")),(0,o.kt)("h2",{id:"256-\u5b9e\u73b0\u5b9a\u65f6\u4efb\u52a1"},"25.6 \u5b9e\u73b0\u5b9a\u65f6\u4efb\u52a1"),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u540c\u65f6\u4e5f\u4e3a ",(0,o.kt)("inlineCode",{parentName:"p"},"Worker Service")," \u63d0\u4f9b\u4e86\u5b9a\u65f6\u4efb\u52a1\u7684\u652f\u6301\u3002"),(0,o.kt)("h3",{id:"2661-\u95f4\u9694\u6267\u884c\u65b9\u5f0f"},"26.6.1 \u95f4\u9694\u6267\u884c\u65b9\u5f0f"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{23-27}","{23-27}":!0},'using Furion.TaskScheduler;\nusing Microsoft.Extensions.Hosting;\nusing Microsoft.Extensions.Logging;\nusing System;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace WorkerService1\n{\n public class Worker : BackgroundService\n {\n private readonly ILogger _logger;\n\n public Worker(ILogger logger)\n {\n _logger = logger;\n }\n\n protected override async Task ExecuteAsync(CancellationToken stoppingToken)\n {\n while (!stoppingToken.IsCancellationRequested)\n {\n // \u95f4\u9694\u6267\u884c\u4efb\u52a1\n await SpareTime.DoAsync(1000, () =>\n {\n _logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now);\n }, stoppingToken);\n }\n }\n }\n}\n')),(0,o.kt)("h3",{id:"2662-cron-\u8868\u8fbe\u5f0f\u683c\u5f0f\u5316\u65b9\u5f0f\uff0c"},"26.6.2 ",(0,o.kt)("inlineCode",{parentName:"h3"},"Cron")," \u8868\u8fbe\u5f0f\u683c\u5f0f\u5316\u65b9\u5f0f\uff0c"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{23-27}","{23-27}":!0},'using Furion.TaskScheduler;\nusing Microsoft.Extensions.Hosting;\nusing Microsoft.Extensions.Logging;\nusing System;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace WorkerService1\n{\n public class Worker : BackgroundService\n {\n private readonly ILogger _logger;\n\n public Worker(ILogger logger)\n {\n _logger = logger;\n }\n\n protected override async Task ExecuteAsync(CancellationToken stoppingToken)\n {\n while (!stoppingToken.IsCancellationRequested)\n {\n // \u6267\u884c Cron \u8868\u8fbe\u5f0f\u4efb\u52a1\n await SpareTime.DoAsync("*/5 * * * * *", () =>\n {\n _logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now);\n }, stoppingToken, CronFormat.IncludeSeconds);\n }\n }\n }\n}\n')),(0,o.kt)("h2",{id:"257-\u4f9d\u8d56\u6ce8\u5165\u4f7f\u7528"},"25.7 \u4f9d\u8d56\u6ce8\u5165\u4f7f\u7528"),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"Worker Service")," \u53ea\u4e3a ",(0,o.kt)("inlineCode",{parentName:"p"},"Worker")," \u63d0\u4f9b\u4e86",(0,o.kt)("strong",{parentName:"p"},"\u5355\u4f8b\u4f5c\u7528\u57df"),"\u7684\u670d\u52a1\u6ce8\u5165\uff0c\u5982\u679c\u9700\u8981\u6ce8\u5165\u77ac\u65f6\u6216\u4f5c\u7528\u57df\u5bf9\u8c61\uff0c\u9700\u624b\u52a8\u521b\u5efa\u4f5c\u7528\u57df\uff0c\u5982\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{7-8,19-31}","{7-8,19-31}":!0},"public class Worker : BackgroundService\n{\n // \u65e5\u5fd7\u5bf9\u8c61\n private readonly ILogger _logger;\n\n // \u670d\u52a1\u5de5\u5382\n private readonly IServiceScopeFactory _scopeFactory;\n public Worker(ILogger logger\n , IServiceScopeFactory scopeFactory)\n {\n _logger = logger;\n _scopeFactory = scopeFactory;\n }\n\n protected override Task ExecuteAsync(CancellationToken stoppingToken)\n {\n while (!stoppingToken.IsCancellationRequested)\n {\n using (var scope = _scopeFactory.CreateScope())\n {\n var services = scope.ServiceProvider;\n\n // \u83b7\u53d6\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\n var dbContext = Db.GetDbContext(services);\n\n // \u83b7\u53d6\u4ed3\u50a8\n var respository = Db.GetRepository(services);\n\n // \u89e3\u6790\u5176\u4ed6\u670d\u52a1\n var otherService = services.GetService();\n }\n }\n\n return Task.CompletedTask;\n }\n}\n")),(0,o.kt)("h2",{id:"258-\u90e8\u7f72\u5230\u64cd\u4f5c\u7cfb\u7edf"},"25.8 \u90e8\u7f72\u5230\u64cd\u4f5c\u7cfb\u7edf"),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"Worker Service")," \u652f\u6301\u90e8\u7f72\u5230 ",(0,o.kt)("inlineCode",{parentName:"p"},"Windows Service")," \u4e2d \u6216 ",(0,o.kt)("inlineCode",{parentName:"p"},"Linux \u5b88\u62a4\u8fdb\u7a0b\u4e2d")),(0,o.kt)("h3",{id:"2581-\u90e8\u7f72\u5230-windows-service"},"25.8.1 \u90e8\u7f72\u5230 ",(0,o.kt)("inlineCode",{parentName:"h3"},"Windows Service")),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"\u7b2c\u4e00\u6b65"))),(0,o.kt)("p",null,"\u5b89\u88c5 ",(0,o.kt)("inlineCode",{parentName:"p"},"Microsoft.Extensions.Hosting.WindowsServices")," \u62d3\u5c55\u5305"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"\u7b2c\u4e8c\u6b65"))),(0,o.kt)("p",null,"\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"Program.cs")," \u4e2d\u6dfb\u52a0 ",(0,o.kt)("inlineCode",{parentName:"p"},".UseWindowsService()")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{15}","{15}":!0},"using Microsoft.Extensions.DependencyInjection;\nusing Microsoft.Extensions.Hosting;\n\nnamespace FurionWorkers\n{\n public class Program\n {\n public static void Main(string[] args)\n {\n CreateHostBuilder(args).Build().Run();\n }\n\n public static IHostBuilder CreateHostBuilder(string[] args) =>\n Host.CreateDefaultBuilder(args)\n .UseWindowsService()\n .Inject()\n .ConfigureServices((hostContext, services) =>\n {\n // \u4ee5\u4e0b\u4ee3\u7801\u53ef\u4e0d\u7528\u7f16\u5199\uff0cFurion \u5df2\u5b9e\u73b0\u81ea\u52a8\u6ce8\u518c Worker;\n // services.AddHostedService();\n });\n }\n}\n")),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"\u7b2c\u4e09\u6b65"))),(0,o.kt)("p",null,"\u53d1\u5e03 ",(0,o.kt)("inlineCode",{parentName:"p"},"Worker Service"),"\uff0c\u53ef\u901a\u8fc7 ",(0,o.kt)("inlineCode",{parentName:"p"},"dotnet publish -c Release -o C:\\FurionWorker")," \u547d\u4ee4\u53d1\u5e03\u6216\u901a\u8fc7 ",(0,o.kt)("inlineCode",{parentName:"p"},"Visual Studio 2019")," \u53d1\u5e03\u3002"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"\u7b2c\u56db\u6b65"))),(0,o.kt)("p",null,"\u901a\u8fc7 ",(0,o.kt)("inlineCode",{parentName:"p"},"sc.exe")," \u5de5\u5177\u6765\u7ba1\u7406\u5e76\u521b\u5efa ",(0,o.kt)("inlineCode",{parentName:"p"},"Windows")," \u670d\u52a1\uff0c\u901a\u8fc7 ",(0,o.kt)("strong",{parentName:"p"},"\u7ba1\u7406\u5458\u6a21\u5f0f")," \u5e76\u6253\u5f00\u63a7\u5236\u53f0\uff0c\u8f93\u5165\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cmd"},"sc.exe create FurionWorkerServices binPath= C:\\FurionWorker\\FurionWorker.exe\n")),(0,o.kt)("p",null,"\u6ce8\u610f",(0,o.kt)("inlineCode",{parentName:"p"},"="),"\u540e\u9762\u8981\u6709\u4e00\u4e2a\u7a7a\u683c",(0,o.kt)("br",{parentName:"p"}),"\n","\u521b\u5efa\u6210\u529f\u540e\u53ef\u901a\u8fc7 ",(0,o.kt)("inlineCode",{parentName:"p"},"sc.exe query FurionWorkerServices")," \u67e5\u770b\u670d\u52a1\u72b6\u6001\u3002"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"\u7b2c\u4e94\u6b65"))),(0,o.kt)("p",null,"\u542f\u52a8\u670d\u52a1\uff1a",(0,o.kt)("inlineCode",{parentName:"p"},"sc.exe start FurionWorkerServices"),"\uff0c\u542f\u52a8\u4e4b\u540e\u5c31\u53ef\u4ee5\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"Windows")," \u670d\u52a1\u5de5\u5177\u4e2d\u67e5\u770b\u4e86\u3002"),(0,o.kt)("p",null,"\u505c\u6b62\u670d\u52a1\uff1a",(0,o.kt)("inlineCode",{parentName:"p"},"sc.exe stop NETCoreDemoWorkerService")),(0,o.kt)("p",null,"\u5220\u9664\u670d\u52a1\uff1a",(0,o.kt)("inlineCode",{parentName:"p"},"sc.exe delete NETCoreDemoWorkerService")),(0,o.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u63d0\u9192")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u4ee5\u4e0a\u6240\u6709 ",(0,o.kt)("inlineCode",{parentName:"p"},"sc.exe")," \u547d\u4ee4\u5fc5\u987b\u5728 ",(0,o.kt)("strong",{parentName:"p"},"\u7ba1\u7406\u5458")," \u6a21\u5f0f\u4e0b\u8fdb\u884c\u3002"))),(0,o.kt)("h3",{id:"2582-\u90e8\u7f72\u5230-linux-\u5b88\u62a4\u7a0b\u5e8f"},"25.8.2 \u90e8\u7f72\u5230 ",(0,o.kt)("inlineCode",{parentName:"h3"},"Linux \u5b88\u62a4\u7a0b\u5e8f")),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"\u7b2c\u4e00\u6b65"))),(0,o.kt)("p",null,"\u5b89\u88c5 ",(0,o.kt)("inlineCode",{parentName:"p"},"Microsoft.Extensions.Hosting.Systemd")," \u62d3\u5c55\u5305"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"\u7b2c\u4e8c\u6b65"))),(0,o.kt)("p",null,"\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"Program.cs")," \u4e2d\u6dfb\u52a0 ",(0,o.kt)("inlineCode",{parentName:"p"},".UseSystemd()")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{15}","{15}":!0},"using Microsoft.Extensions.DependencyInjection;\nusing Microsoft.Extensions.Hosting;\n\nnamespace FurionWorkers\n{\n public class Program\n {\n public static void Main(string[] args)\n {\n CreateHostBuilder(args).Build().Run();\n }\n\n public static IHostBuilder CreateHostBuilder(string[] args) =>\n Host.CreateDefaultBuilder(args)\n .UseSystemd()\n .Inject()\n .ConfigureServices((hostContext, services) =>\n {\n // \u4ee5\u4e0b\u4ee3\u7801\u53ef\u4e0d\u7528\u7f16\u5199\uff0cFurion \u5df2\u5b9e\u73b0\u81ea\u52a8\u6ce8\u518c Worker;\n // services.AddHostedService();\n });\n }\n}\n")),(0,o.kt)("p",null,"\u90e8\u7f72\u5230 ",(0,o.kt)("inlineCode",{parentName:"p"},"Linux \u5b88\u62a4\u8fdb\u7a0b")," \u5c31\u662f\u8fd9\u4e48\u7b80\u5355\u3002"),(0,o.kt)("h2",{id:"259-\u53cd\u9988\u4e0e\u5efa\u8bae"},"25.9 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,o.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,o.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/aa7bdd74.bd35879c.js b/handbook/build/assets/js/aa7bdd74.bd35879c.js new file mode 100644 index 00000000000..600d386b328 --- /dev/null +++ b/handbook/build/assets/js/aa7bdd74.bd35879c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[4572],{3905:function(e,n,r){r.d(n,{Zo:function(){return p},kt:function(){return u}});var t=r(7294);function i(e,n,r){return n in e?Object.defineProperty(e,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[n]=r,e}function o(e,n){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n&&(t=t.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),r.push.apply(r,t)}return r}function a(e){for(var n=1;n=0||(i[r]=e[r]);return i}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(t=0;t=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}var l=t.createContext({}),c=function(e){var n=t.useContext(l),r=n;return e&&(r="function"==typeof e?e(n):a(a({},n),e)),r},p=function(e){var n=c(e.components);return t.createElement(l.Provider,{value:n},e.children)},d={inlineCode:"code",wrapper:function(e){var n=e.children;return t.createElement(t.Fragment,{},n)}},k=t.forwardRef((function(e,n){var r=e.components,i=e.mdxType,o=e.originalType,l=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),k=c(r),u=i,m=k["".concat(l,".").concat(u)]||k[u]||d[u]||o;return r?t.createElement(m,a(a({ref:n},p),{},{components:r})):t.createElement(m,a({ref:n},p))}));function u(e,n){var r=arguments,i=n&&n.mdxType;if("string"==typeof e||i){var o=r.length,a=new Array(o);a[0]=k;var s={};for(var l in n)hasOwnProperty.call(n,l)&&(s[l]=n[l]);s.originalType=e,s.mdxType="string"==typeof e?e:i,a[1]=s;for(var c=2;cWorker Service",id:"252-\u5982\u4f55\u521b\u5efa-worker-service",children:[]},{value:"25.3 \u521b\u5efa Worker",id:"253-\u521b\u5efa-worker",children:[{value:"25.3.1 \u591a\u4e2a Worker",id:"2531-\u591a\u4e2a-worker",children:[]},{value:"25.3.2 \u751f\u547d\u5468\u671f",id:"2532-\u751f\u547d\u5468\u671f",children:[]}]},{value:"25.4 \u96c6\u6210 Furion",id:"254-\u96c6\u6210-furion",children:[]},{value:"25.5 \u6ce8\u518c\u670d\u52a1",id:"255-\u6ce8\u518c\u670d\u52a1",children:[]},{value:"25.6 \u5b9e\u73b0\u5b9a\u65f6\u4efb\u52a1",id:"256-\u5b9e\u73b0\u5b9a\u65f6\u4efb\u52a1",children:[{value:"26.6.1 \u95f4\u9694\u6267\u884c\u65b9\u5f0f",id:"2661-\u95f4\u9694\u6267\u884c\u65b9\u5f0f",children:[]},{value:"26.6.2 Cron \u8868\u8fbe\u5f0f\u683c\u5f0f\u5316\u65b9\u5f0f\uff0c",id:"2662-cron-\u8868\u8fbe\u5f0f\u683c\u5f0f\u5316\u65b9\u5f0f\uff0c",children:[]}]},{value:"25.7 \u4f9d\u8d56\u6ce8\u5165\u4f7f\u7528",id:"257-\u4f9d\u8d56\u6ce8\u5165\u4f7f\u7528",children:[]},{value:"25.8 \u90e8\u7f72\u5230\u64cd\u4f5c\u7cfb\u7edf",id:"258-\u90e8\u7f72\u5230\u64cd\u4f5c\u7cfb\u7edf",children:[{value:"25.8.1 \u90e8\u7f72\u5230 Windows Service",id:"2581-\u90e8\u7f72\u5230-windows-service",children:[]},{value:"25.8.2 \u90e8\u7f72\u5230 Linux \u5b88\u62a4\u7a0b\u5e8f",id:"2582-\u90e8\u7f72\u5230-linux-\u5b88\u62a4\u7a0b\u5e8f",children:[]}]},{value:"25.9 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"259-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],k={toc:d};function u(e){var n=e.components,r=(0,i.Z)(e,s);return(0,o.kt)("wrapper",(0,t.Z)({},k,r,{components:n,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"251-\u5173\u4e8e\u8f85\u52a9\u89d2\u8272\u670d\u52a1"},"25.1 \u5173\u4e8e\u8f85\u52a9\u89d2\u8272\u670d\u52a1"),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},".NET Core 3.0")," \u65b0\u589e\u4e86 ",(0,o.kt)("inlineCode",{parentName:"p"},"Worker Service")," \u7684\u65b0\u9879\u76ee\u6a21\u677f\uff0c",(0,o.kt)("strong",{parentName:"p"},"\u53ef\u4ee5\u7f16\u5199\u957f\u65f6\u95f4\u8fd0\u884c\u7684\u540e\u53f0\u670d\u52a1\uff0c\u5e76\u4e14\u80fd\u8f7b\u677e\u7684\u90e8\u7f72\u6210 ",(0,o.kt)("inlineCode",{parentName:"strong"},"Windows\u670d\u52a1")," \u6216 ",(0,o.kt)("inlineCode",{parentName:"strong"},"Linux \u5b88\u62a4\u7a0b\u5e8f")),"\u3002"),(0,o.kt)("h2",{id:"252-\u5982\u4f55\u521b\u5efa-worker-service"},"25.2 \u5982\u4f55\u521b\u5efa ",(0,o.kt)("inlineCode",{parentName:"h2"},"Worker Service")),(0,o.kt)("p",null,"\u901a\u8fc7 ",(0,o.kt)("inlineCode",{parentName:"p"},"Visual Studio 2019")," \u63d0\u4f9b\u7684 ",(0,o.kt)("inlineCode",{parentName:"p"},"Worker Service")," \u53ef\u76f4\u63a5\u521b\u5efa\u3002\u5982\u56fe\uff1a"),(0,o.kt)("img",{src:(0,a.Z)("img/wk.png")}),(0,o.kt)("h2",{id:"253-\u521b\u5efa-worker"},"25.3 \u521b\u5efa ",(0,o.kt)("inlineCode",{parentName:"h2"},"Worker")),(0,o.kt)("p",null,"\u5f53\u6211\u4eec\u521b\u5efa\u597d ",(0,o.kt)("inlineCode",{parentName:"p"},"Worker Service")," \u9879\u76ee\u65f6\uff0c\u5df2\u7ecf\u81ea\u5e26\u4e86\u4e00\u4e2a ",(0,o.kt)("inlineCode",{parentName:"p"},"Worker")," \u7c7b\u5e76\u7ee7\u627f\u81ea ",(0,o.kt)("inlineCode",{parentName:"p"},"BackgroundService")," \u57fa\u7c7b\u3002"),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"Worker")," \u6b63\u662f\u6211\u4eec\u8f85\u52a9\u89d2\u8272\u7684\u4e3b\u8981\u5de5\u4f5c\u7c7b\uff0c\u5728\u8fd9\u91cc\u6211\u4eec\u7f16\u5199\u6211\u4eec\u6240\u6709\u7684\u4e1a\u52a1\u903b\u8f91\u3002\u901a\u5e38 ",(0,o.kt)("inlineCode",{parentName:"p"},"Worker")," \u9ed8\u8ba4\u683c\u5f0f\u4e3a\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{9,18}","{9,18}":!0},'using Microsoft.Extensions.Hosting;\nusing Microsoft.Extensions.Logging;\nusing System;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace FurionWorkers\n{\n public class Worker : BackgroundService\n {\n private readonly ILogger _logger;\n\n public Worker(ILogger logger)\n {\n _logger = logger;\n }\n\n protected override async Task ExecuteAsync(CancellationToken stoppingToken)\n {\n while (!stoppingToken.IsCancellationRequested)\n {\n _logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now);\n await Task.Delay(1000, stoppingToken);\n }\n }\n }\n}\n')),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"\u5f53\u6211\u4eec\u521b\u5efa\u4e86 ",(0,o.kt)("inlineCode",{parentName:"strong"},"Worker")," \u7c7b\u4e4b\u540e\uff0c\u9700\u8981\u5728 ",(0,o.kt)("inlineCode",{parentName:"strong"},"Program.cs")," \u4e2d\u8fdb\u884c\u6ce8\u518c"),"\uff0c\u5982\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{17}","{17}":!0},"using Microsoft.Extensions.DependencyInjection;\nusing Microsoft.Extensions.Hosting;\n\nnamespace FurionWorkers\n{\n public class Program\n {\n public static void Main(string[] args)\n {\n CreateHostBuilder(args).Build().Run();\n }\n\n public static IHostBuilder CreateHostBuilder(string[] args) =>\n Host.CreateDefaultBuilder(args)\n .ConfigureServices((hostContext, services) =>\n {\n services.AddHostedService();\n });\n }\n}\n")),(0,o.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u5c0f\u77e5\u8bc6")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u5982\u679c\u4f7f\u7528\u4e86 ",(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u5305\u540e\u53ef\u5b9e\u73b0\u81ea\u52a8\u6ce8\u518c\u3002"))),(0,o.kt)("h3",{id:"2531-\u591a\u4e2a-worker"},"25.3.1 \u591a\u4e2a ",(0,o.kt)("inlineCode",{parentName:"h3"},"Worker")),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"Worker Service")," \u662f\u652f\u6301\u5b9a\u4e49\u591a\u4e2a ",(0,o.kt)("inlineCode",{parentName:"p"},"Worker")," \u8fdb\u884c\u534f\u8c03\u5de5\u4f5c\u7684\uff0c\u6bcf\u4e2a ",(0,o.kt)("inlineCode",{parentName:"p"},"Worker")," \u662f\u5b8c\u5168\u72ec\u7acb\u7684\u5de5\u4f5c\u73af\u5883\uff0c\u4f46\u53ef\u5171\u4eab\u540c\u4e00\u4e3b\u8fdb\u7a0b\u4fe1\u606f\u3002"),(0,o.kt)("h3",{id:"2532-\u751f\u547d\u5468\u671f"},"25.3.2 \u751f\u547d\u5468\u671f"),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"Worker Service")," \u4e3a ",(0,o.kt)("inlineCode",{parentName:"p"},"Worker")," \u63d0\u4f9b\u4e86\u4e09\u4e2a\u6267\u884c\u65b9\u6cd5\uff0c\u5206\u522b\u4ee3\u8868\u4e09\u4e2a\u751f\u547d\u5468\u671f\uff1a"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"StartAsync"),"\uff1a\u8d1f\u8d23\u542f\u52a8 ",(0,o.kt)("inlineCode",{parentName:"li"},"Worker Service"),"\uff0c\u5982\u679c\u8c03\u7528 ",(0,o.kt)("inlineCode",{parentName:"li"},"StartAsync")," \u65b9\u6cd5\u7684\u7ebf\u7a0b\u88ab\u4e00\u76f4\u963b\u585e\u4e86\uff0c\u90a3\u4e48 ",(0,o.kt)("inlineCode",{parentName:"li"},"Worker Service")," \u7684\u542f\u52a8\u5c31\u4e00\u76f4\u5b8c\u6210\u4e0d\u4e86"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"ExecuteAsync"),"\uff1a",(0,o.kt)("inlineCode",{parentName:"li"},"Worker Service")," \u771f\u6b63\u5b9e\u73b0\u4e1a\u52a1\u903b\u8f91\u7684\u5730\u65b9\uff0c\u8fd9\u91cc\u4e0d\u80fd\u8c03\u7528\u963b\u585e\u4ee3\u7801\uff01\uff01\uff01"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"StopAsync"),"\uff1a\u8d1f\u8d23\u7ed3\u675f ",(0,o.kt)("inlineCode",{parentName:"li"},"Worker Service"),"\uff0c\u5982\u679c\u8c03\u7528 ",(0,o.kt)("inlineCode",{parentName:"li"},"StopAsync")," \u65b9\u6cd5\u7684\u7ebf\u7a0b\u88ab\u4e00\u76f4\u963b\u585e\u4e86\uff0c\u90a3\u4e48 ",(0,o.kt)("inlineCode",{parentName:"li"},"Worker Service")," \u7684\u7ed3\u675f\u5c31\u4e00\u76f4\u5b8c\u6210\u4e0d\u4e86")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{19,25,35}","{19,25,35}":!0},'using Microsoft.Extensions.Hosting;\nusing Microsoft.Extensions.Logging;\nusing System;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace FurionWorkers\n{\n public class Worker : BackgroundService\n {\n private readonly ILogger _logger;\n\n public Worker(ILogger logger)\n {\n _logger = logger;\n }\n\n // \u542f\u52a8\n public override Task StartAsync(CancellationToken cancellationToken)\n {\n return base.StartAsync(cancellationToken);\n }\n\n // \u6267\u884c\u903b\u8f91\n protected override async Task ExecuteAsync(CancellationToken stoppingToken)\n {\n while (!stoppingToken.IsCancellationRequested)\n {\n _logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now);\n await Task.Delay(1000, stoppingToken);\n }\n }\n\n // \u505c\u6b62\n public override Task StopAsync(CancellationToken cancellationToken)\n {\n return base.StopAsync(cancellationToken);\n }\n }\n}\n')),(0,o.kt)("h2",{id:"254-\u96c6\u6210-furion"},"25.4 \u96c6\u6210 ",(0,o.kt)("inlineCode",{parentName:"h2"},"Furion")),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"Worker Service")," \u96c6\u6210 ",(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u975e\u5e38\u65b9\u4fbf\uff0c\u53ea\u9700\u8981\u5b89\u88c5 ",(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u7684\u5305\u5373\u53ef\uff0c\u5e76\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"Program.cs")," \u4e2d\u8c03\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},".Inject()")," \u65b9\u6cd5\uff0c\u5982\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{15}","{15}":!0},"using Microsoft.Extensions.DependencyInjection;\nusing Microsoft.Extensions.Hosting;\n\nnamespace FurionWorkers\n{\n public class Program\n {\n public static void Main(string[] args)\n {\n CreateHostBuilder(args).Build().Run();\n }\n\n public static IHostBuilder CreateHostBuilder(string[] args) =>\n Host.CreateDefaultBuilder(args)\n .Inject()\n .ConfigureServices((hostContext, services) =>\n {\n // \u4ee5\u4e0b\u4ee3\u7801\u53ef\u4e0d\u7528\u7f16\u5199\uff0cFurion \u5df2\u5b9e\u73b0\u81ea\u52a8\u6ce8\u518c Worker;\n // services.AddHostedService();\n });\n }\n}\n")),(0,o.kt)("p",null,"\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c",(0,o.kt)("inlineCode",{parentName:"p"},"Inject()")," \u65b9\u6cd5\u6ce8\u518c\u4e86 ",(0,o.kt)("inlineCode",{parentName:"p"},"\u65e5\u5fd7\u3001\u7f13\u5b58\u3001\u4f9d\u8d56\u6ce8\u5165\u3001\u52a0\u8f7d\u914d\u7f6e\u3001\u81ea\u5b9a\u4e49 Startup")," \u529f\u80fd\u3002"),(0,o.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u5c0f\u77e5\u8bc6")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u96c6\u6210 ",(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u540e\u4f1a\u81ea\u52a8\u626b\u63cf ",(0,o.kt)("inlineCode",{parentName:"p"},"Worker")," \u7c7b\u5e76\u5b9e\u73b0\u81ea\u52a8\u6ce8\u518c\u3002"))),(0,o.kt)("h2",{id:"255-\u6ce8\u518c\u670d\u52a1"},"25.5 \u6ce8\u518c\u670d\u52a1"),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"Worker Service")," \u6ce8\u518c\u670d\u52a1\u548c ",(0,o.kt)("inlineCode",{parentName:"p"},"Web")," \u7565\u6709\u4e0d\u540c\uff0c",(0,o.kt)("inlineCode",{parentName:"p"},"Web")," \u4e3b\u8981\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"Starup.cs")," \u7c7b\u4e2d\u6ce8\u518c\uff0c",(0,o.kt)("inlineCode",{parentName:"p"},"Worker Service")," \u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"Program.cs")," \u542f\u52a8\u7c7b\u7684 ",(0,o.kt)("inlineCode",{parentName:"p"},"ConfigureServices")," \u65b9\u6cd5\u4e2d\u6ce8\u518c\uff0c\u5982\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{16-28}","{16-28}":!0},"using Microsoft.Extensions.DependencyInjection;\nusing Microsoft.Extensions.Hosting;\n\nnamespace FurionWorkers\n{\n public class Program\n {\n public static void Main(string[] args)\n {\n CreateHostBuilder(args).Build().Run();\n }\n\n public static IHostBuilder CreateHostBuilder(string[] args) =>\n Host.CreateDefaultBuilder(args)\n .Inject()\n .ConfigureServices((hostContext, services) =>\n {\n // \u6ce8\u518c\u6570\u636e\u5e93\u670d\u52a1\n services.AddDatabaseAccessor(options =>\n {\n options.AddDb();\n });\n\n // \u6ce8\u518c\u8fdc\u7a0b\u8bf7\u6c42\n services.AddRemoteRequest();\n\n // \u7b49\u7b49\u5176\u4ed6\u670d\u52a1\u6ce8\u518c\n });\n }\n}\n")),(0,o.kt)("h2",{id:"256-\u5b9e\u73b0\u5b9a\u65f6\u4efb\u52a1"},"25.6 \u5b9e\u73b0\u5b9a\u65f6\u4efb\u52a1"),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u540c\u65f6\u4e5f\u4e3a ",(0,o.kt)("inlineCode",{parentName:"p"},"Worker Service")," \u63d0\u4f9b\u4e86\u5b9a\u65f6\u4efb\u52a1\u7684\u652f\u6301\u3002"),(0,o.kt)("h3",{id:"2661-\u95f4\u9694\u6267\u884c\u65b9\u5f0f"},"26.6.1 \u95f4\u9694\u6267\u884c\u65b9\u5f0f"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{23-27}","{23-27}":!0},'using Furion.TaskScheduler;\nusing Microsoft.Extensions.Hosting;\nusing Microsoft.Extensions.Logging;\nusing System;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace WorkerService1\n{\n public class Worker : BackgroundService\n {\n private readonly ILogger _logger;\n\n public Worker(ILogger logger)\n {\n _logger = logger;\n }\n\n protected override async Task ExecuteAsync(CancellationToken stoppingToken)\n {\n while (!stoppingToken.IsCancellationRequested)\n {\n // \u95f4\u9694\u6267\u884c\u4efb\u52a1\n await SpareTime.DoAsync(1000, () =>\n {\n _logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now);\n }, stoppingToken);\n }\n }\n }\n}\n')),(0,o.kt)("h3",{id:"2662-cron-\u8868\u8fbe\u5f0f\u683c\u5f0f\u5316\u65b9\u5f0f\uff0c"},"26.6.2 ",(0,o.kt)("inlineCode",{parentName:"h3"},"Cron")," \u8868\u8fbe\u5f0f\u683c\u5f0f\u5316\u65b9\u5f0f\uff0c"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{23-27}","{23-27}":!0},'using Furion.TaskScheduler;\nusing Microsoft.Extensions.Hosting;\nusing Microsoft.Extensions.Logging;\nusing System;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace WorkerService1\n{\n public class Worker : BackgroundService\n {\n private readonly ILogger _logger;\n\n public Worker(ILogger logger)\n {\n _logger = logger;\n }\n\n protected override async Task ExecuteAsync(CancellationToken stoppingToken)\n {\n while (!stoppingToken.IsCancellationRequested)\n {\n // \u6267\u884c Cron \u8868\u8fbe\u5f0f\u4efb\u52a1\n await SpareTime.DoAsync("*/5 * * * * *", () =>\n {\n _logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now);\n }, stoppingToken, CronFormat.IncludeSeconds);\n }\n }\n }\n}\n')),(0,o.kt)("h2",{id:"257-\u4f9d\u8d56\u6ce8\u5165\u4f7f\u7528"},"25.7 \u4f9d\u8d56\u6ce8\u5165\u4f7f\u7528"),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"Worker Service")," \u53ea\u4e3a ",(0,o.kt)("inlineCode",{parentName:"p"},"Worker")," \u63d0\u4f9b\u4e86",(0,o.kt)("strong",{parentName:"p"},"\u5355\u4f8b\u4f5c\u7528\u57df"),"\u7684\u670d\u52a1\u6ce8\u5165\uff0c\u5982\u679c\u9700\u8981\u6ce8\u5165\u77ac\u65f6\u6216\u4f5c\u7528\u57df\u5bf9\u8c61\uff0c\u9700\u624b\u52a8\u521b\u5efa\u4f5c\u7528\u57df\uff0c\u5982\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{7-8,19-31}","{7-8,19-31}":!0},"public class Worker : BackgroundService\n{\n // \u65e5\u5fd7\u5bf9\u8c61\n private readonly ILogger _logger;\n\n // \u670d\u52a1\u5de5\u5382\n private readonly IServiceScopeFactory _scopeFactory;\n public Worker(ILogger logger\n , IServiceScopeFactory scopeFactory)\n {\n _logger = logger;\n _scopeFactory = scopeFactory;\n }\n\n protected override Task ExecuteAsync(CancellationToken stoppingToken)\n {\n while (!stoppingToken.IsCancellationRequested)\n {\n using (var scope = _scopeFactory.CreateScope())\n {\n var services = scope.ServiceProvider;\n\n // \u83b7\u53d6\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\n var dbContext = Db.GetDbContext(services);\n\n // \u83b7\u53d6\u4ed3\u50a8\n var respository = Db.GetRepository(services);\n\n // \u89e3\u6790\u5176\u4ed6\u670d\u52a1\n var otherService = services.GetService();\n }\n }\n\n return Task.CompletedTask;\n }\n}\n")),(0,o.kt)("h2",{id:"258-\u90e8\u7f72\u5230\u64cd\u4f5c\u7cfb\u7edf"},"25.8 \u90e8\u7f72\u5230\u64cd\u4f5c\u7cfb\u7edf"),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"Worker Service")," \u652f\u6301\u90e8\u7f72\u5230 ",(0,o.kt)("inlineCode",{parentName:"p"},"Windows Service")," \u4e2d \u6216 ",(0,o.kt)("inlineCode",{parentName:"p"},"Linux \u5b88\u62a4\u8fdb\u7a0b\u4e2d")),(0,o.kt)("h3",{id:"2581-\u90e8\u7f72\u5230-windows-service"},"25.8.1 \u90e8\u7f72\u5230 ",(0,o.kt)("inlineCode",{parentName:"h3"},"Windows Service")),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"\u7b2c\u4e00\u6b65"))),(0,o.kt)("p",null,"\u5b89\u88c5 ",(0,o.kt)("inlineCode",{parentName:"p"},"Microsoft.Extensions.Hosting.WindowsServices")," \u62d3\u5c55\u5305"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"\u7b2c\u4e8c\u6b65"))),(0,o.kt)("p",null,"\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"Program.cs")," \u4e2d\u6dfb\u52a0 ",(0,o.kt)("inlineCode",{parentName:"p"},".UseWindowsService()")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{15}","{15}":!0},"using Microsoft.Extensions.DependencyInjection;\nusing Microsoft.Extensions.Hosting;\n\nnamespace FurionWorkers\n{\n public class Program\n {\n public static void Main(string[] args)\n {\n CreateHostBuilder(args).Build().Run();\n }\n\n public static IHostBuilder CreateHostBuilder(string[] args) =>\n Host.CreateDefaultBuilder(args)\n .UseWindowsService()\n .Inject()\n .ConfigureServices((hostContext, services) =>\n {\n // \u4ee5\u4e0b\u4ee3\u7801\u53ef\u4e0d\u7528\u7f16\u5199\uff0cFurion \u5df2\u5b9e\u73b0\u81ea\u52a8\u6ce8\u518c Worker;\n // services.AddHostedService();\n });\n }\n}\n")),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"\u7b2c\u4e09\u6b65"))),(0,o.kt)("p",null,"\u53d1\u5e03 ",(0,o.kt)("inlineCode",{parentName:"p"},"Worker Service"),"\uff0c\u53ef\u901a\u8fc7 ",(0,o.kt)("inlineCode",{parentName:"p"},"dotnet publish -c Release -o C:\\FurionWorker")," \u547d\u4ee4\u53d1\u5e03\u6216\u901a\u8fc7 ",(0,o.kt)("inlineCode",{parentName:"p"},"Visual Studio 2019")," \u53d1\u5e03\u3002"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"\u7b2c\u56db\u6b65"))),(0,o.kt)("p",null,"\u901a\u8fc7 ",(0,o.kt)("inlineCode",{parentName:"p"},"sc.exe")," \u5de5\u5177\u6765\u7ba1\u7406\u5e76\u521b\u5efa ",(0,o.kt)("inlineCode",{parentName:"p"},"Windows")," \u670d\u52a1\uff0c\u901a\u8fc7 ",(0,o.kt)("strong",{parentName:"p"},"\u7ba1\u7406\u5458\u6a21\u5f0f")," \u5e76\u6253\u5f00\u63a7\u5236\u53f0\uff0c\u8f93\u5165\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cmd"},"sc.exe create FurionWorkerServices binPath= C:\\FurionWorker\\FurionWorker.exe\n")),(0,o.kt)("p",null,"\u6ce8\u610f",(0,o.kt)("inlineCode",{parentName:"p"},"="),"\u540e\u9762\u8981\u6709\u4e00\u4e2a\u7a7a\u683c",(0,o.kt)("br",{parentName:"p"}),"\n","\u521b\u5efa\u6210\u529f\u540e\u53ef\u901a\u8fc7 ",(0,o.kt)("inlineCode",{parentName:"p"},"sc.exe query FurionWorkerServices")," \u67e5\u770b\u670d\u52a1\u72b6\u6001\u3002"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"\u7b2c\u4e94\u6b65"))),(0,o.kt)("p",null,"\u542f\u52a8\u670d\u52a1\uff1a",(0,o.kt)("inlineCode",{parentName:"p"},"sc.exe start FurionWorkerServices"),"\uff0c\u542f\u52a8\u4e4b\u540e\u5c31\u53ef\u4ee5\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"Windows")," \u670d\u52a1\u5de5\u5177\u4e2d\u67e5\u770b\u4e86\u3002"),(0,o.kt)("p",null,"\u505c\u6b62\u670d\u52a1\uff1a",(0,o.kt)("inlineCode",{parentName:"p"},"sc.exe stop NETCoreDemoWorkerService")),(0,o.kt)("p",null,"\u5220\u9664\u670d\u52a1\uff1a",(0,o.kt)("inlineCode",{parentName:"p"},"sc.exe delete NETCoreDemoWorkerService")),(0,o.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u63d0\u9192")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u4ee5\u4e0a\u6240\u6709 ",(0,o.kt)("inlineCode",{parentName:"p"},"sc.exe")," \u547d\u4ee4\u5fc5\u987b\u5728 ",(0,o.kt)("strong",{parentName:"p"},"\u7ba1\u7406\u5458")," \u6a21\u5f0f\u4e0b\u8fdb\u884c\u3002"))),(0,o.kt)("h3",{id:"2582-\u90e8\u7f72\u5230-linux-\u5b88\u62a4\u7a0b\u5e8f"},"25.8.2 \u90e8\u7f72\u5230 ",(0,o.kt)("inlineCode",{parentName:"h3"},"Linux \u5b88\u62a4\u7a0b\u5e8f")),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"\u7b2c\u4e00\u6b65"))),(0,o.kt)("p",null,"\u5b89\u88c5 ",(0,o.kt)("inlineCode",{parentName:"p"},"Microsoft.Extensions.Hosting.Systemd")," \u62d3\u5c55\u5305"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("strong",{parentName:"li"},"\u7b2c\u4e8c\u6b65"))),(0,o.kt)("p",null,"\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"Program.cs")," \u4e2d\u6dfb\u52a0 ",(0,o.kt)("inlineCode",{parentName:"p"},".UseSystemd()")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{15}","{15}":!0},"using Microsoft.Extensions.DependencyInjection;\nusing Microsoft.Extensions.Hosting;\n\nnamespace FurionWorkers\n{\n public class Program\n {\n public static void Main(string[] args)\n {\n CreateHostBuilder(args).Build().Run();\n }\n\n public static IHostBuilder CreateHostBuilder(string[] args) =>\n Host.CreateDefaultBuilder(args)\n .UseSystemd()\n .Inject()\n .ConfigureServices((hostContext, services) =>\n {\n // \u4ee5\u4e0b\u4ee3\u7801\u53ef\u4e0d\u7528\u7f16\u5199\uff0cFurion \u5df2\u5b9e\u73b0\u81ea\u52a8\u6ce8\u518c Worker;\n // services.AddHostedService();\n });\n }\n}\n")),(0,o.kt)("p",null,"\u90e8\u7f72\u5230 ",(0,o.kt)("inlineCode",{parentName:"p"},"Linux \u5b88\u62a4\u8fdb\u7a0b")," \u5c31\u662f\u8fd9\u4e48\u7b80\u5355\u3002"),(0,o.kt)("h2",{id:"259-\u53cd\u9988\u4e0e\u5efa\u8bae"},"25.9 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,o.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,o.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/ab4c4f37.49bafa0f.js b/handbook/build/assets/js/ab4c4f37.49bafa0f.js deleted file mode 100644 index c7e425aca66..00000000000 --- a/handbook/build/assets/js/ab4c4f37.49bafa0f.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[7065],{3905:function(e,t,n){n.d(t,{Zo:function(){return c},kt:function(){return m}});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var s=r.createContext({}),p=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},c=function(e){var t=p(e.components);return r.createElement(s.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,i=e.originalType,s=e.parentName,c=o(e,["components","mdxType","originalType","parentName"]),d=p(n),m=a,v=d["".concat(s,".").concat(m)]||d[m]||u[m]||i;return n?r.createElement(v,l(l({ref:t},c),{},{components:n})):r.createElement(v,l({ref:t},c))}));function m(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,l=new Array(i);l[0]=d;var o={};for(var s in t)hasOwnProperty.call(t,s)&&(o[s]=t[s]);o.originalType=e,o.mdxType="string"==typeof e?e:a,l[1]=o;for(var p=2;p=0&&i<=p&&a<=o&&r>=0)||(t.scrollIntoView({block:"center",behavior:"smooth"}),t.classList.add(s),setTimeout((function(){return t.classList.remove(s)}),2e3))}),150))},_=function(e){var t,n;switch(e.keyCode){case c:var r=g.indexOf(e.target)+1;n=g[r]||g[0];break;case p:var a=g.indexOf(e.target)-1;n=g[a]||g[g.length-1]}null==(t=n)||t.focus()};return r.createElement("div",{className:"tabs-container"},r.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,l.Z)("tabs",{"tabs--block":n},m)},u.map((function(e){var t=e.value,n=e.label;return r.createElement("li",{role:"tab",tabIndex:P===t?0:-1,"aria-selected":P===t,className:(0,l.Z)("tabs__item",o,{"tabs__item--active":P===t}),key:t,ref:function(e){return g.push(e)},onKeyDown:_,onFocus:S,onClick:S},n)}))),t?(0,r.cloneElement)(y.filter((function(e){return e.props.value===P}))[0],{className:"margin-vert--md"}):r.createElement("div",{className:"margin-vert--md"},y.map((function(e,t){return(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==P})}))))}},9443:function(e,t,n){var r=(0,n(7294).createContext)(void 0);t.Z=r},6181:function(e,t,n){n.r(t),n.d(t,{frontMatter:function(){return p},contentTitle:function(){return c},metadata:function(){return u},toc:function(){return d},default:function(){return v}});var r=n(7462),a=n(3366),i=(n(7294),n(3905)),l=(n(4996),n(5064)),o=n(8215),s=["components"],p={id:"dbcontext-proc",title:"9.13 \u5b58\u50a8\u8fc7\u7a0b\u64cd\u4f5c",sidebar_label:"9.13 \u5b58\u50a8\u8fc7\u7a0b\u64cd\u4f5c"},c=void 0,u={unversionedId:"dbcontext-proc",id:"dbcontext-proc",isDocsHomePage:!1,title:"9.13 \u5b58\u50a8\u8fc7\u7a0b\u64cd\u4f5c",description:"\u63a8\u8350\u4f7f\u7528 \u300a9.17 Sql \u9ad8\u7ea7\u4ee3\u7406\u300b\u4ee3\u66ff\u672c\u7ae0\u8282\u529f\u80fd\u3002Sql \u9ad8\u7ea7\u4ee3\u7406 \u80fd\u591f\u63d0\u4f9b\u66f4\u5bb9\u6613\u4e14\u66f4\u6613\u7ef4\u62a4\u7684\u65b9\u5f0f\u3002",source:"@site/docs/dbcontext-proc.mdx",sourceDirName:".",slug:"/dbcontext-proc",permalink:"/furion/docs/dbcontext-proc",editUrl:"https://gitee.com/dotnetchina/Furion/tree/master/handbook/docs/dbcontext-proc.mdx",version:"current",lastUpdatedBy:"Monk",lastUpdatedAt:1614238444,formattedLastUpdatedAt:"2/25/2021",frontMatter:{id:"dbcontext-proc",title:"9.13 \u5b58\u50a8\u8fc7\u7a0b\u64cd\u4f5c",sidebar_label:"9.13 \u5b58\u50a8\u8fc7\u7a0b\u64cd\u4f5c"},sidebar:"docs",previous:{title:"9.12 \u89c6\u56fe\u64cd\u4f5c",permalink:"/furion/docs/dbcontext-view"},next:{title:"9.14 \u51fd\u6570\u64cd\u4f5c",permalink:"/furion/docs/dbcontext-function"}},d=[{value:"9.13.1 \u5173\u4e8e\u5b58\u50a8\u8fc7\u7a0b",id:"9131-\u5173\u4e8e\u5b58\u50a8\u8fc7\u7a0b",children:[{value:"9.13.1.1 \u652f\u6301\u5b58\u50a8\u8fc7\u7a0b\u7684\u6570\u636e\u5e93",id:"91311-\u652f\u6301\u5b58\u50a8\u8fc7\u7a0b\u7684\u6570\u636e\u5e93",children:[]}]},{value:"9.13.2 \u5b58\u50a8\u8fc7\u7a0b\u4f7f\u7528",id:"9132-\u5b58\u50a8\u8fc7\u7a0b\u4f7f\u7528",children:[{value:"9.13.2.1 \u521d\u59cb\u5316\u65b9\u5f0f",id:"91321-\u521d\u59cb\u5316\u65b9\u5f0f",children:[]},{value:"9.13.2.2 \u8fd4\u56de DataTable",id:"91322-\u8fd4\u56de-datatable",children:[]},{value:"9.13.2.3 \u8fd4\u56de DataSet",id:"91323-\u8fd4\u56de-dataset",children:[]},{value:"9.13.2.4 \u8fd4\u56de List<T>",id:"91324-\u8fd4\u56de-listt",children:[]},{value:"9.13.2.5 \u8fd4\u56de Tuple<T1,...T8>",id:"91325-\u8fd4\u56de-tuplet1t8",children:[]},{value:"9.13.2.6 \u8fd4\u56de \u5355\u884c\u5355\u5217 object",id:"91326-\u8fd4\u56de-\u5355\u884c\u5355\u5217-object",children:[]},{value:"9.13.2.7 \u8fd4\u56de \u5355\u884c\u5355\u5217 <T>",id:"91327-\u8fd4\u56de-\u5355\u884c\u5355\u5217-t",children:[]},{value:"9.13.2.8 \u6267\u884c\u4f46\u65e0\u8fd4\u56de",id:"91328-\u6267\u884c\u4f46\u65e0\u8fd4\u56de",children:[]}]},{value:"9.13.3 \u6267\u884c\u590d\u6742\u5b58\u50a8\u8fc7\u7a0b",id:"9133-\u6267\u884c\u590d\u6742\u5b58\u50a8\u8fc7\u7a0b",children:[{value:"9.13.3.1 \u521b\u5efa\u53c2\u6570\u6a21\u578b",id:"91331-\u521b\u5efa\u53c2\u6570\u6a21\u578b",children:[]},{value:"9.13.3.2 \u6267\u884c\u590d\u6742\u5b58\u50a8\u8fc7\u7a0b",id:"91332-\u6267\u884c\u590d\u6742\u5b58\u50a8\u8fc7\u7a0b",children:[]}]},{value:"9.13.3 \u5173\u4e8e [DbParameter]",id:"9133-\u5173\u4e8e-dbparameter",children:[]},{value:"9.13.4 \u5173\u4e8e ProcedureOutputResult",id:"9134-\u5173\u4e8e-procedureoutputresult",children:[]},{value:"9.13.5 \u5b58\u50a8\u8fc7\u7a0b\u53c2\u6570",id:"9135-\u5b58\u50a8\u8fc7\u7a0b\u53c2\u6570",children:[]},{value:"9.13.6 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"9136-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],m={toc:d};function v(e){var t=e.components,n=(0,a.Z)(e,s);return(0,i.kt)("wrapper",(0,r.Z)({},m,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u6e29\u99a8\u63d0\u793a")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u63a8\u8350\u4f7f\u7528 \u300a",(0,i.kt)("a",{parentName:"p",href:"/furion/docs/dbcontext-sql-proxy"},"9.17 Sql \u9ad8\u7ea7\u4ee3\u7406"),"\u300b\u4ee3\u66ff\u672c\u7ae0\u8282\u529f\u80fd\u3002",(0,i.kt)("inlineCode",{parentName:"p"},"Sql \u9ad8\u7ea7\u4ee3\u7406")," \u80fd\u591f\u63d0\u4f9b\u66f4\u5bb9\u6613\u4e14\u66f4\u6613\u7ef4\u62a4\u7684\u65b9\u5f0f\u3002"))),(0,i.kt)("h2",{id:"9131-\u5173\u4e8e\u5b58\u50a8\u8fc7\u7a0b"},"9.13.1 \u5173\u4e8e\u5b58\u50a8\u8fc7\u7a0b"),(0,i.kt)("p",null,"\u5f15\u7528\u767e\u5ea6\u767e\u79d1\uff1a"),(0,i.kt)("blockquote",null,(0,i.kt)("p",{parentName:"blockquote"},"\u5b58\u50a8\u8fc7\u7a0b\uff08Stored Procedure\uff09\u662f\u5728\u5927\u578b\u6570\u636e\u5e93\u7cfb\u7edf\u4e2d\uff0c\u4e00\u7ec4\u4e3a\u4e86\u5b8c\u6210\u7279\u5b9a\u529f\u80fd\u7684 SQL \u8bed\u53e5\u96c6\uff0c\u5b83\u5b58\u50a8\u5728\u6570\u636e\u5e93\u4e2d\uff0c\u4e00\u6b21\u7f16\u8bd1\u540e\u6c38\u4e45\u6709\u6548\uff0c\u7528\u6237\u901a\u8fc7\u6307\u5b9a\u5b58\u50a8\u8fc7\u7a0b\u7684\u540d\u5b57\u5e76\u7ed9\u51fa\u53c2\u6570\uff08\u5982\u679c\u8be5\u5b58\u50a8\u8fc7\u7a0b\u5e26\u6709\u53c2\u6570\uff09\u6765\u6267\u884c\u5b83\u3002"),(0,i.kt)("p",{parentName:"blockquote"},"\u5b58\u50a8\u8fc7\u7a0b\u662f\u6570\u636e\u5e93\u4e2d\u7684\u4e00\u4e2a\u91cd\u8981\u5bf9\u8c61\u3002\u5728\u6570\u636e\u91cf\u7279\u522b\u5e9e\u5927\u7684\u60c5\u51b5\u4e0b\u5229\u7528\u5b58\u50a8\u8fc7\u7a0b\u80fd\u8fbe\u5230\u500d\u901f\u7684\u6548\u7387\u63d0\u5347\u3002")),(0,i.kt)("p",null,"\u7b80\u5355\u6765\u8bf4\uff0c\u5b58\u50a8\u8fc7\u7a0b\u5c31\u662f\u5173\u7cfb\u578b\u6570\u636e\u5e93\u4e2d\uff08",(0,i.kt)("inlineCode",{parentName:"p"},"Sqlite")," \u9664\u5916\uff09\u4e2d\u7f16\u5199\u903b\u8f91\u7684\u51fd\u6570/\u65b9\u6cd5\uff0c\u901a\u8fc7\u8fd9\u79cd\u65b9\u5f0f\uff0c\u53ef\u4ee5\u5c06 ",(0,i.kt)("inlineCode",{parentName:"p"},"sql")," \u7f16\u8bd1\u7f13\u5b58\u8d77\u6765\uff0c\u5927\u5927\u63d0\u9ad8\u5b58\u50a8\u8fc7\u7a0b\u7684\u6267\u884c\u6548\u7387\u3002"),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"\u8fd9\u91cc\u4e0d\u8ba8\u8bba\u5b58\u50a8\u8fc7\u7a0b\u7684\u4f18\u7f3a\u70b9\u3002")),(0,i.kt)("h3",{id:"91311-\u652f\u6301\u5b58\u50a8\u8fc7\u7a0b\u7684\u6570\u636e\u5e93"},"9.13.1.1 \u652f\u6301\u5b58\u50a8\u8fc7\u7a0b\u7684\u6570\u636e\u5e93"),(0,i.kt)("table",null,(0,i.kt)("thead",{parentName:"table"},(0,i.kt)("tr",{parentName:"thead"},(0,i.kt)("th",{parentName:"tr",align:null},"SqlServer"),(0,i.kt)("th",{parentName:"tr",align:null},"Sqlite"),(0,i.kt)("th",{parentName:"tr",align:null},"Cosmos"),(0,i.kt)("th",{parentName:"tr",align:null},"InMemoryDatabase"),(0,i.kt)("th",{parentName:"tr",align:null},"MySql"),(0,i.kt)("th",{parentName:"tr",align:null},"PostgreSQL"),(0,i.kt)("th",{parentName:"tr",align:null},"Oracle"),(0,i.kt)("th",{parentName:"tr",align:null},"Firebird"),(0,i.kt)("th",{parentName:"tr",align:null},"Dm"))),(0,i.kt)("tbody",{parentName:"table"},(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},"\u2714"),(0,i.kt)("td",{parentName:"tr",align:null}),(0,i.kt)("td",{parentName:"tr",align:null},"\u2714"),(0,i.kt)("td",{parentName:"tr",align:null}),(0,i.kt)("td",{parentName:"tr",align:null},"\u2714"),(0,i.kt)("td",{parentName:"tr",align:null},"\u2714"),(0,i.kt)("td",{parentName:"tr",align:null},"\u2714"),(0,i.kt)("td",{parentName:"tr",align:null},"\u2714"),(0,i.kt)("td",{parentName:"tr",align:null},"\u2714")))),(0,i.kt)("h2",{id:"9132-\u5b58\u50a8\u8fc7\u7a0b\u4f7f\u7528"},"9.13.2 \u5b58\u50a8\u8fc7\u7a0b\u4f7f\u7528"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\u63d0\u4f9b\u4e86\u591a\u79cd\u5b58\u50a8\u8fc7\u7a0b\u64cd\u4f5c\u65b9\u5f0f\uff1a"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"ISqlRepository"),"\uff1a",(0,i.kt)("inlineCode",{parentName:"li"},"Sql")," \u64cd\u4f5c\u4ed3\u50a8\uff0c\u53ef\u901a\u8fc7 ",(0,i.kt)("inlineCode",{parentName:"li"},"\u4f9d\u8d56\u6ce8\u5165")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"ISqlDispatchProxy"),"\uff1a",(0,i.kt)("inlineCode",{parentName:"li"},"Sql")," \u4ee3\u7406\u65b9\u5f0f\uff08\u9ad8\u7ea7\u7528\u6cd5\uff0c\u63a8\u8350\uff09"),(0,i.kt)("li",{parentName:"ul"},"\u901a\u8fc7\u4efb\u610f\u5b9e\u4f53\u4ed3\u50a8\u64cd\u4f5c\uff1a",(0,i.kt)("inlineCode",{parentName:"li"},"personRepository.SqlProcedureQuery(procName)")),(0,i.kt)("li",{parentName:"ul"},"\u901a\u8fc7\u5b57\u7b26\u4e32\u62d3\u5c55\u65b9\u6cd5\uff1a",(0,i.kt)("inlineCode",{parentName:"li"},"procName.SqlProcedureQuery()")),(0,i.kt)("li",{parentName:"ul"},"\u901a\u8fc7 ",(0,i.kt)("inlineCode",{parentName:"li"},"repository.Sql().SqlProcedureQuery()")," \u65b9\u5f0f")),(0,i.kt)("h3",{id:"91321-\u521d\u59cb\u5316\u65b9\u5f0f"},"9.13.2.1 \u521d\u59cb\u5316\u65b9\u5f0f"),(0,i.kt)(l.Z,{defaultValue:"one",values:[{label:"ISqlRepository",value:"one"},{label:"ISqlDispatchProxy",value:"two"},{label:"\u5b9e\u4f53\u4ed3\u50a8\u65b9\u5f0f",value:"three"},{label:"\u5b57\u7b26\u4e32\u62d3\u5c55\u65b9\u5f0f",value:"four"}],mdxType:"Tabs"},(0,i.kt)(o.Z,{value:"one",mdxType:"TabItem"},(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,9-12}","{1,9-12}":!0},"using Furion.DatabaseAccessor;\nusing Furion.DynamicApiController;\n\nnamespace Furion.Application\n{\n [DynamicApiController]\n public class SqlService\n {\n private ISqlRepository _sqlRepository;\n public SqlService(ISqlRepository sqlRepository)\n {\n _sqlRepository = sqlRepository;\n }\n }\n}\n"))),(0,i.kt)(o.Z,{value:"two",mdxType:"TabItem"},(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{2,7,9-10}","{2,7,9-10}":!0},'using Furion.Core;\nusing Furion.DatabaseAccessor;\nusing System.Collections.Generic;\n\nnamespace Furion.Application\n{\n public interface ISqlExecuteProxy : ISqlDispatchProxy\n {\n [SqlProcedure("proc_GetPersons")]\n List GetPersons(string keyword);\n }\n}\n')),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{9-12}","{9-12}":!0},"using Furion.DatabaseAccessor;\nusing Furion.DynamicApiController;\n\nnamespace Furion.Application\n{\n [DynamicApiController]\n public class SqlService\n {\n private ISqlExecuteProxy _sqlExecuteProxy;\n public SqlService(ISqlExecuteProxy sqlExecuteProxy)\n {\n _sqlExecuteProxy = sqlExecuteProxy;\n }\n }\n}\n"))),(0,i.kt)(o.Z,{value:"three",mdxType:"TabItem"},(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'var persons = personRepository.SqlProcedureQuery("proc_GetPersons");\n'))),(0,i.kt)(o.Z,{value:"four",mdxType:"TabItem"},(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'var persons = "proc_GetPersons".SqlProcedureQuery();\n')))),(0,i.kt)("h3",{id:"91322-\u8fd4\u56de-datatable"},"9.13.2.2 \u8fd4\u56de ",(0,i.kt)("inlineCode",{parentName:"h3"},"DataTable")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// ISqlRepository \u65b9\u6cd5\nvar dataTable = _sqlRepository.SqlProcedureQuery("proc_GetPersons");\n\n// ISqlDispatchProxy \u65b9\u5f0f\nvar dataTable = _sqlExecuteProxy.GetPersons(); // \u63a8\u8350\u65b9\u5f0f\n\n// \u5b9e\u4f53\u4ed3\u50a8\u65b9\u5f0f\nvar dataTable = _personRepository.SqlProcedureQuery("proc_GetPersons");\n\n// IRepository \u975e\u6cdb\u578b\u65b9\u5f0f\nvar dataTable = _repository.Sql().SqlProcedureQuery("proc_GetPersons");\n\n// \u53d8\u6001\u61d2\u4eba\u65b9\u5f0f\uff0c\u76f4\u63a5\u901a\u8fc7\u5b58\u50a8\u8fc7\u7a0b\u540d\u6267\u884c\nvar dataTable = "proc_GetPersons".SqlProcedureQuery();\n')),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u5173\u4e8e\u5f02\u6b65")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u6bcf\u4e00\u4e2a\u6570\u636e\u5e93\u64cd\u4f5c\u90fd\u652f\u6301\u5f02\u6b65\u65b9\u5f0f\uff0c\u7531\u4e8e\u7bc7\u5e45\u6709\u9650\uff0c\u5c31\u4e0d\u5217\u4e3e\u5f02\u6b65\u65b9\u5f0f\u4e86\u3002"))),(0,i.kt)("h3",{id:"91323-\u8fd4\u56de-dataset"},"9.13.2.3 \u8fd4\u56de ",(0,i.kt)("inlineCode",{parentName:"h3"},"DataSet")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// ISqlRepository \u65b9\u6cd5\nvar dataSet = _sqlRepository.SqlProcedureQueries("proc_GetPersons");\n\n// ISqlDispatchProxy \u65b9\u5f0f\nvar dataSet = _sqlExecuteProxy.GetPersons(); // \u63a8\u8350\u65b9\u5f0f\n\n// \u5b9e\u4f53\u4ed3\u50a8\u65b9\u5f0f\nvar dataSet = _personRepository.SqlProcedureQueries("proc_GetPersons");\n\n// IRepository \u975e\u6cdb\u578b\u65b9\u5f0f\nvar dataSet = _repository.Sql().SqlProcedureQueries("proc_GetPersons");\n\n// \u53d8\u6001\u61d2\u4eba\u65b9\u5f0f\uff0c\u76f4\u63a5\u901a\u8fc7\u5b58\u50a8\u8fc7\u7a0b\u540d\u6267\u884c\nvar dataSet = "proc_GetPersons".SqlProcedureQueries();\n')),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u5173\u4e8e\u5f02\u6b65")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u6bcf\u4e00\u4e2a\u6570\u636e\u5e93\u64cd\u4f5c\u90fd\u652f\u6301\u5f02\u6b65\u65b9\u5f0f\uff0c\u7531\u4e8e\u7bc7\u5e45\u6709\u9650\uff0c\u5c31\u4e0d\u5217\u4e3e\u5f02\u6b65\u65b9\u5f0f\u4e86\u3002"))),(0,i.kt)("h3",{id:"91324-\u8fd4\u56de-listt"},"9.13.2.4 \u8fd4\u56de ",(0,i.kt)("inlineCode",{parentName:"h3"},"List")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// ISqlRepository \u65b9\u6cd5\nvar list = _sqlRepository.SqlProcedureQuery("proc_GetPersons");\n\n// ISqlDispatchProxy \u65b9\u5f0f\nvar list = _sqlExecuteProxy.GetPersons(); // \u63a8\u8350\u65b9\u5f0f\n\n// \u5b9e\u4f53\u4ed3\u50a8\u65b9\u5f0f\nvar list = _personRepository.SqlProcedureQuery("proc_GetPersons");\n\n// IRepository \u975e\u6cdb\u578b\u65b9\u5f0f\nvar list = _repository.Sql().SqlProcedureQuery("proc_GetPersons");\n\n// \u53d8\u6001\u61d2\u4eba\u65b9\u5f0f\uff0c\u76f4\u63a5\u901a\u8fc7\u5b58\u50a8\u8fc7\u7a0b\u540d\u6267\u884c\nvar list = "proc_GetPersons".SqlProcedureQuery();\n')),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u5173\u4e8e\u5f02\u6b65")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u6bcf\u4e00\u4e2a\u6570\u636e\u5e93\u64cd\u4f5c\u90fd\u652f\u6301\u5f02\u6b65\u65b9\u5f0f\uff0c\u7531\u4e8e\u7bc7\u5e45\u6709\u9650\uff0c\u5c31\u4e0d\u5217\u4e3e\u5f02\u6b65\u65b9\u5f0f\u4e86\u3002"))),(0,i.kt)("h3",{id:"91325-\u8fd4\u56de-tuplet1t8"},"9.13.2.5 \u8fd4\u56de ",(0,i.kt)("inlineCode",{parentName:"h3"},"Tuple")),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u5927\u5927\u5229\u7528\u4e86 ",(0,i.kt)("inlineCode",{parentName:"p"},"Tuple")," \u7684\u7279\u6027\uff0c\u5c06\u8fd4\u56de\u591a\u4e2a\u7ed3\u679c\u96c6\u8f6c\u6210 ",(0,i.kt)("inlineCode",{parentName:"p"},"Tuple")," \u7c7b\u578b"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// ISqlRepository \u65b9\u6cd5\n\n// \u8fd4\u56de\u4e00\u4e2a\u7ed3\u679c\u96c6\nvar list1 = _sqlRepository.SqlProcedureQueries("proc_GetPersons");\n\n// \u8fd4\u56de\u4e24\u4e2a\u7ed3\u679c\u96c6\nvar (list1, list2) = _sqlRepository.SqlProcedureQueries("proc_GetPersons");\n\n// \u8fd4\u56de\u4e09\u4e2a\u7ed3\u679c\u96c6\nvar (list1, list2, list3) = _sqlRepository.SqlProcedureQueries("proc_GetPersons");\n\n// \u8fd4\u56de\u56db\u4e2a\u7ed3\u679c\u96c6\nvar (list1, list2, list3, list4) = _sqlRepository.SqlProcedureQueries("proc_GetPersons");\n\n// \u8fd4\u56de\u4e94\u4e2a\u7ed3\u679c\u96c6\nvar (list1, list2, list3, list4, list5) = _sqlRepository.SqlProcedureQueries("proc_GetPersons");\n\n// \u8fd4\u56de\u516d\u4e2a\u7ed3\u679c\u96c6\nvar (list1, list2, list3, list4, list5, list6) = _sqlRepository.SqlProcedureQueries("proc_GetPersons");\n\n// \u8fd4\u56de\u4e03\u4e2a\u7ed3\u679c\u96c6\nvar (list1, list2, list3, list4, list5, list6, list7) = _sqlRepository.SqlProcedureQueries("proc_GetPersons");\n\n// \u8fd4\u56de\u516b\u4e2a\u7ed3\u679c\u96c6\nvar (list1, list2, list3, list4, list5, list6, list7, list8) = _sqlRepository.SqlProcedureQueries("proc_GetPersons");\n\n// ==================================\n\n// ISqlDispatchProxy \u65b9\u5f0f\uff0c\u63a8\u8350\u65b9\u5f0f\uff0c\u81ea\u52a8\u5904\u7406\u591a\u4e2a\u7ed3\u679c\u96c6\n\n// \u8fd4\u56de\u4e00\u4e2a\u7ed3\u679c\u96c6\nvar list1 = _sqlRepository.GetDatas();\n\n// \u8fd4\u56de\u4e24\u4e2a\u7ed3\u679c\u96c6\nvar (list1, list2) = _sqlRepository.GetDatas();\n\n// \u8fd4\u56de\u4e09\u4e2a\u7ed3\u679c\u96c6\nvar (list1, list2, list3) = _sqlRepository.GetDatas();\n\n// \u8fd4\u56de\u56db\u4e2a\u7ed3\u679c\u96c6\nvar (list1, list2, list3, list4) = _sqlRepository.GetDatas();\n\n// \u8fd4\u56de\u4e94\u4e2a\u7ed3\u679c\u96c6\nvar (list1, list2, list3, list4, list5) = _sqlRepository.GetDatas();\n\n// \u8fd4\u56de\u516d\u4e2a\u7ed3\u679c\u96c6\nvar (list1, list2, list3, list4, list5, list6) = _sqlRepository.GetDatas();\n\n// \u8fd4\u56de\u4e03\u4e2a\u7ed3\u679c\u96c6\nvar (list1, list2, list3, list4, list5, list6, list7) = _sqlRepository.GetDatas();\n\n// \u8fd4\u56de\u516b\u4e2a\u7ed3\u679c\u96c6\nvar (list1, list2, list3, list4, list5, list6, list7, list8) = _sqlRepository.GetDatas();\n\n// ==================================\n\n// \u5b9e\u4f53\u4ed3\u50a8\u65b9\u5f0f\n\n// \u8fd4\u56de\u4e00\u4e2a\u7ed3\u679c\u96c6\nvar list1 = _personRepository.SqlProcedureQueries("proc_GetPersons");\n\n// \u8fd4\u56de\u4e24\u4e2a\u7ed3\u679c\u96c6\nvar (list1, list2) = _personRepository.SqlProcedureQueries("proc_GetPersons");\n\n// \u8fd4\u56de\u4e09\u4e2a\u7ed3\u679c\u96c6\nvar (list1, list2, list3) = _personRepository.SqlProcedureQueries("proc_GetPersons");\n\n// \u8fd4\u56de\u56db\u4e2a\u7ed3\u679c\u96c6\nvar (list1, list2, list3, list4) = _personRepository.SqlProcedureQueries("proc_GetPersons");\n\n// \u8fd4\u56de\u4e94\u4e2a\u7ed3\u679c\u96c6\nvar (list1, list2, list3, list4, list5) = _personRepository.SqlProcedureQueries("proc_GetPersons");\n\n// \u8fd4\u56de\u516d\u4e2a\u7ed3\u679c\u96c6\nvar (list1, list2, list3, list4, list5, list6) = _personRepository.SqlProcedureQueries("proc_GetPersons");\n\n// \u8fd4\u56de\u4e03\u4e2a\u7ed3\u679c\u96c6\nvar (list1, list2, list3, list4, list5, list6, list7) = _personRepository.SqlProcedureQueries("proc_GetPersons");\n\n// \u8fd4\u56de\u516b\u4e2a\u7ed3\u679c\u96c6\nvar (list1, list2, list3, list4, list5, list6, list7, list8) = _personRepository.SqlProcedureQueries("proc_GetPersons");\n\n// ==================================\n\n// IRepository \u975e\u6cdb\u578b\u65b9\u5f0f\n\n// \u8fd4\u56de\u4e00\u4e2a\u7ed3\u679c\u96c6\nvar list1 = _repository.Sql().SqlProcedureQueries("proc_GetPersons");\n\n// \u8fd4\u56de\u4e24\u4e2a\u7ed3\u679c\u96c6\nvar (list1, list2) = _repository.Sql().SqlProcedureQueries("proc_GetPersons");\n\n// \u8fd4\u56de\u4e09\u4e2a\u7ed3\u679c\u96c6\nvar (list1, list2, list3) = _repository.Sql().SqlProcedureQueries("proc_GetPersons");\n\n// \u8fd4\u56de\u56db\u4e2a\u7ed3\u679c\u96c6\nvar (list1, list2, list3, list4) = _repository.Sql().SqlProcedureQueries("proc_GetPersons");\n\n// \u8fd4\u56de\u4e94\u4e2a\u7ed3\u679c\u96c6\nvar (list1, list2, list3, list4, list5) = _repository.Sql().SqlProcedureQueries("proc_GetPersons");\n\n// \u8fd4\u56de\u516d\u4e2a\u7ed3\u679c\u96c6\nvar (list1, list2, list3, list4, list5, list6) = _repository.Sql().SqlProcedureQueries("proc_GetPersons");\n\n// \u8fd4\u56de\u4e03\u4e2a\u7ed3\u679c\u96c6\nvar (list1, list2, list3, list4, list5, list6, list7) = _repository.Sql().SqlProcedureQueries("proc_GetPersons");\n\n// \u8fd4\u56de\u516b\u4e2a\u7ed3\u679c\u96c6\nvar (list1, list2, list3, list4, list5, list6, list7, list8) = _repository.Sql().SqlProcedureQueries("proc_GetPersons");\n\n// ==================================\n\n// \u53d8\u6001\u61d2\u4eba\u65b9\u5f0f\uff0c\u76f4\u63a5\u901a\u8fc7\u5b58\u50a8\u8fc7\u7a0b\u540d\u6267\u884c\n\n// \u8fd4\u56de\u4e00\u4e2a\u7ed3\u679c\u96c6\nvar list1 = "proc_GetPersons".SqlProcedureQueries();\n\n// \u8fd4\u56de\u4e24\u4e2a\u7ed3\u679c\u96c6\nvar (list1, list2) = "proc_GetPersons".SqlProcedureQueries();\n\n// \u8fd4\u56de\u4e09\u4e2a\u7ed3\u679c\u96c6\nvar (list1, list2, list3) = "proc_GetPersons".SqlProcedureQueries();\n\n// \u8fd4\u56de\u56db\u4e2a\u7ed3\u679c\u96c6\nvar (list1, list2, list3, list4) = "proc_GetPersons".SqlProcedureQueries();\n\n// \u8fd4\u56de\u4e94\u4e2a\u7ed3\u679c\u96c6\nvar (list1, list2, list3, list4, list5) = "proc_GetPersons".SqlProcedureQueries();\n\n// \u8fd4\u56de\u516d\u4e2a\u7ed3\u679c\u96c6\nvar (list1, list2, list3, list4, list5, list6) = "proc_GetPersons".SqlProcedureQueries();\n\n// \u8fd4\u56de\u4e03\u4e2a\u7ed3\u679c\u96c6\nvar (list1, list2, list3, list4, list5, list6, list7) = "proc_GetPersons".SqlProcedureQueries();\n\n// \u8fd4\u56de\u516b\u4e2a\u7ed3\u679c\u96c6\nvar (list1, list2, list3, list4, list5, list6, list7, list8) = "proc_GetPersons".SqlProcedureQueries();\n')),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u5173\u4e8e\u5f02\u6b65")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u6bcf\u4e00\u4e2a\u6570\u636e\u5e93\u64cd\u4f5c\u90fd\u652f\u6301\u5f02\u6b65\u65b9\u5f0f\uff0c\u7531\u4e8e\u7bc7\u5e45\u6709\u9650\uff0c\u5c31\u4e0d\u5217\u4e3e\u5f02\u6b65\u65b9\u5f0f\u4e86\u3002"))),(0,i.kt)("h3",{id:"91326-\u8fd4\u56de-\u5355\u884c\u5355\u5217-object"},"9.13.2.6 \u8fd4\u56de ",(0,i.kt)("inlineCode",{parentName:"h3"},"\u5355\u884c\u5355\u5217 object")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// ISqlRepository \u65b9\u6cd5\nvar value = _sqlRepository.SqlProcedureScalar("proc_GetName");\n\n// ISqlDispatchProxy \u65b9\u5f0f\nvar value = _sqlExecuteProxy.GetName(); // \u63a8\u8350\u65b9\u5f0f\n\n// \u5b9e\u4f53\u4ed3\u50a8\u65b9\u5f0f\nvar value = _personRepository.SqlProcedureScalar("proc_GetName");\n\n// IRepository \u975e\u6cdb\u578b\u65b9\u5f0f\nvar value = _repository.Sql().SqlProcedureScalar("proc_GetName");\n\n// \u53d8\u6001\u61d2\u4eba\u65b9\u5f0f\uff0c\u76f4\u63a5\u901a\u8fc7\u5b58\u50a8\u8fc7\u7a0b\u540d\u6267\u884c\nvar value = "proc_GetName".SqlProcedureScalar();\n')),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u5173\u4e8e\u5f02\u6b65")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u6bcf\u4e00\u4e2a\u6570\u636e\u5e93\u64cd\u4f5c\u90fd\u652f\u6301\u5f02\u6b65\u65b9\u5f0f\uff0c\u7531\u4e8e\u7bc7\u5e45\u6709\u9650\uff0c\u5c31\u4e0d\u5217\u4e3e\u5f02\u6b65\u65b9\u5f0f\u4e86\u3002"))),(0,i.kt)("h3",{id:"91327-\u8fd4\u56de-\u5355\u884c\u5355\u5217-t"},"9.13.2.7 \u8fd4\u56de ",(0,i.kt)("inlineCode",{parentName:"h3"},"\u5355\u884c\u5355\u5217 ")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// ISqlRepository \u65b9\u6cd5\nvar value = _sqlRepository.SqlProcedureScalar("proc_GetName");\n\n// ISqlDispatchProxy \u65b9\u5f0f\nvar value = _sqlExecuteProxy.GetName(); // \u63a8\u8350\u65b9\u5f0f\n\n// \u5b9e\u4f53\u4ed3\u50a8\u65b9\u5f0f\nvar value = _personRepository.SqlProcedureScalar("proc_GetName");\n\n// IRepository \u975e\u6cdb\u578b\u65b9\u5f0f\nvar value = _repository.Sql().SqlProcedureScalar("proc_GetName");\n\n// \u53d8\u6001\u61d2\u4eba\u65b9\u5f0f\uff0c\u76f4\u63a5\u901a\u8fc7\u5b58\u50a8\u8fc7\u7a0b\u540d\u6267\u884c\nvar value = "proc_GetName".SqlProcedureScalar();\n')),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u5173\u4e8e\u5f02\u6b65")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u6bcf\u4e00\u4e2a\u6570\u636e\u5e93\u64cd\u4f5c\u90fd\u652f\u6301\u5f02\u6b65\u65b9\u5f0f\uff0c\u7531\u4e8e\u7bc7\u5e45\u6709\u9650\uff0c\u5c31\u4e0d\u5217\u4e3e\u5f02\u6b65\u65b9\u5f0f\u4e86\u3002"))),(0,i.kt)("h3",{id:"91328-\u6267\u884c\u4f46\u65e0\u8fd4\u56de"},"9.13.2.8 \u6267\u884c\u4f46\u65e0\u8fd4\u56de"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// ISqlRepository \u65b9\u6cd5\n_sqlRepository.SqlProcedureNonQuery("proc_UpdateData");\n\n// ISqlDispatchProxy \u65b9\u5f0f\n_sqlExecuteProxy.UpdateData(); // \u63a8\u8350\u65b9\u5f0f\n\n// \u5b9e\u4f53\u4ed3\u50a8\u65b9\u5f0f\n_personRepository.SqlProcedureNonQuery("proc_UpdateData");\n\n// IRepository \u975e\u6cdb\u578b\u65b9\u5f0f\n_repository.Sql().SqlProcedureNonQuery("proc_UpdateData");\n\n// \u53d8\u6001\u61d2\u4eba\u65b9\u5f0f\uff0c\u76f4\u63a5\u901a\u8fc7\u5b58\u50a8\u8fc7\u7a0b\u540d\u6267\u884c\n"proc_UpdateData".SqlProcedureNonQuery();\n')),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u5173\u4e8e\u5f02\u6b65")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u6bcf\u4e00\u4e2a\u6570\u636e\u5e93\u64cd\u4f5c\u90fd\u652f\u6301\u5f02\u6b65\u65b9\u5f0f\uff0c\u7531\u4e8e\u7bc7\u5e45\u6709\u9650\uff0c\u5c31\u4e0d\u5217\u4e3e\u5f02\u6b65\u65b9\u5f0f\u4e86\u3002"))),(0,i.kt)("h2",{id:"9133-\u6267\u884c\u590d\u6742\u5b58\u50a8\u8fc7\u7a0b"},"9.13.3 \u6267\u884c\u590d\u6742\u5b58\u50a8\u8fc7\u7a0b"),(0,i.kt)("p",null,"\u5728\u5b58\u50a8\u8fc7\u7a0b\u4e2d\uff0c\u6709\u4e00\u79cd\u4f8b\u5b50\u975e\u5e38\u590d\u6742\uff0c\u90a3\u5c31\u662f\u65e2\u6709 ",(0,i.kt)("inlineCode",{parentName:"p"},"INPUT")," \u53c2\u6570\uff0c\u53c8\u6709 ",(0,i.kt)("inlineCode",{parentName:"p"},"OUTPUT")," \u53c2\u6570\uff0c\u8fd8\u6709 ",(0,i.kt)("inlineCode",{parentName:"p"},"RETURN")," \u53c2\u6570\uff0c\u540c\u65f6\u8fd8\u8f93\u51fa \u7ed3\u679c\u96c6 \ud83d\udca5\uff0c\u5982\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-sql",metastring:"{3,4,10-12,15-17,22}","{3,4,10-12,15-17,22}":!0},"CREATE PROC PROC_Output\n @Id INT, // \u8f93\u5165\u53c2\u6570\n @Name NVARCHAR(32) OUTPUT, // \u8f93\u51fa\u53c2\u6570\uff0c\u8fd8\u5e26\u957f\u5ea6\n @Age INT OUTPUT // \u8f93\u51fa\u53c2\u6570\nAS\nBEGIN\n SET @Name = 'Furion Output';\n\n // \u8f93\u51fa\u7ed3\u679c\u96c6\n SELECT *\n FROM dbo.Test\n WHERE Id > @Id;\n\n // \u8f93\u51fa\u7ed3\u679c\u96c6\n SELECT TOP 10\n *\n FROM dbo.Test;\n\n SET @Age = 27;\n\n // \u5e26 RETURN \u8fd4\u56de\n RETURN 10;\nEND;\n")),(0,i.kt)("h3",{id:"91331-\u521b\u5efa\u53c2\u6570\u6a21\u578b"},"9.13.3.1 \u521b\u5efa\u53c2\u6570\u6a21\u578b"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,10,13,16}","{1,10,13,16}":!0},"using Furion.DatabaseAccessor;\nusing System.Data;\n\nnamespace Furion.Application\n{\n public class ProcOutputModel\n {\n public int Id { get; set; } // \u8f93\u5165\u53c2\u6570\n\n [DbParameter(ParameterDirection.Output, Size = 32)]\n public string Name { get; set; } // \u8f93\u51fa\u53c2\u6570\n\n [DbParameter(ParameterDirection.Output)]\n public int Age { get; set; } // \u8f93\u51fa\u53c2\u6570\n\n [DbParameter(ParameterDirection.ReturnValue)]\n public int ReturnValue { get; set; } // \u8fd4\u56de\u503c\n }\n}\n")),(0,i.kt)("h3",{id:"91332-\u6267\u884c\u590d\u6742\u5b58\u50a8\u8fc7\u7a0b"},"9.13.3.2 \u6267\u884c\u590d\u6742\u5b58\u50a8\u8fc7\u7a0b"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("strong",{parentName:"li"}," ",(0,i.kt)("inlineCode",{parentName:"strong"},"DataSet")," ")," \u65b9\u5f0f")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// ISqlRepository \u65b9\u6cd5\nProcedureOutputResult result = _sqlRepository.SqlProcedureOutput("proc_Complex", new ProcOutputModel{});\n\n// ISqlDispatchProxy \u65b9\u5f0f\nProcedureOutputResult result = _sqlExecuteProxy.Complex(new ProcOutputModel{}); // \u63a8\u8350\u65b9\u5f0f\n\n// \u5b9e\u4f53\u4ed3\u50a8\u65b9\u5f0f\nProcedureOutputResult result = _personRepository.SqlProcedureOutput("proc_Complex", new ProcOutputModel{});\n\n// IRepository \u975e\u6cdb\u578b\u65b9\u5f0f\nProcedureOutputResult result = _repository.Sql().SqlProcedureOutput("proc_Complex", new ProcOutputModel{});\n\n// \u53d8\u6001\u61d2\u4eba\u65b9\u5f0f\uff0c\u76f4\u63a5\u901a\u8fc7\u5b58\u50a8\u8fc7\u7a0b\u540d\u6267\u884c\nProcedureOutputResult result = "proc_Complex".SqlProcedureOutput(new ProcOutputModel{});\n')),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"// \u83b7\u53d6 OUTPUT \u53c2\u6570\u503c\nvar outputs = result.OutputValues;\n\n// \u83b7\u53d6 RETURN \u8fd4\u56de\u503c\nvar reval = result.ReturnValue;\n\n// \u83b7\u53d6\u8fd4\u56de\u7ed3\u679c\u96c6\nvar dataSet = result.Result;\n")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"Tuple")," \u65b9\u5f0f")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// ISqlRepository \u65b9\u6cd5\nProcedureOutputResult<(List, List)> result = _sqlRepository.SqlProcedureOutput<(List, List)>("proc_Complex", new ProcOutputModel{});\n\n// ISqlDispatchProxy \u65b9\u5f0f\nProcedureOutputResult<(List, List)> result = _sqlExecuteProxy.Complex(new ProcOutputModel{}); // \u63a8\u8350\u65b9\u5f0f\n\n// \u5b9e\u4f53\u4ed3\u50a8\u65b9\u5f0f\nProcedureOutputResult<(List, List)> result = _personRepository.SqlProcedureOutput<(List, List)>("proc_Complex", new ProcOutputModel{});\n\n// IRepository \u975e\u6cdb\u578b\u65b9\u5f0f\nProcedureOutputResult<(List, List)> result = _repository.Sql().SqlProcedureOutput<(List, List)>("proc_Complex", new ProcOutputModel{});\n\n// \u53d8\u6001\u61d2\u4eba\u65b9\u5f0f\uff0c\u76f4\u63a5\u901a\u8fc7\u5b58\u50a8\u8fc7\u7a0b\u540d\u6267\u884c\nProcedureOutputResult<(List, List)> result = "proc_Complex".SqlProcedureOutput<(List, List)>(new ProcOutputModel{});\n')),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"// \u83b7\u53d6 OUTPUT \u53c2\u6570\u503c\nvar outputs = result.OutputValues;\n\n// \u83b7\u53d6 RETURN \u8fd4\u56de\u503c\nvar reval = result.ReturnValue;\n\n// \u83b7\u53d6\u8fd4\u56de\u7ed3\u679c\u96c6\nvar (list1,list2) = result.Result;\n")),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u5173\u4e8e\u5f02\u6b65")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u6bcf\u4e00\u4e2a\u6570\u636e\u5e93\u64cd\u4f5c\u90fd\u652f\u6301\u5f02\u6b65\u65b9\u5f0f\uff0c\u7531\u4e8e\u7bc7\u5e45\u6709\u9650\uff0c\u5c31\u4e0d\u5217\u4e3e\u5f02\u6b65\u65b9\u5f0f\u4e86\u3002"))),(0,i.kt)("h2",{id:"9133-\u5173\u4e8e-dbparameter"},"9.13.3 \u5173\u4e8e ",(0,i.kt)("inlineCode",{parentName:"h2"},"[DbParameter]")),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"[DbParameter]")," \u7279\u6027\u662f\u7528\u6765\u6807\u6ce8 ",(0,i.kt)("inlineCode",{parentName:"p"},"Sql"),"\uff0c",(0,i.kt)("inlineCode",{parentName:"p"},"\u51fd\u6570"),"\uff0c",(0,i.kt)("inlineCode",{parentName:"p"},"\u5b58\u50a8\u8fc7\u7a0b")," \u53c2\u6570\u7684\uff0c\u53ef\u914d\u7f6e\u5c5e\u6027\uff1a"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"Direction"),"\uff1a\u8bbe\u7f6e\u53c2\u6570\u65b9\u5411\uff0c",(0,i.kt)("inlineCode",{parentName:"li"},"ParameterDirection")," \u679a\u4e3e\u7c7b\u578b\uff0c\u9ed8\u8ba4 ",(0,i.kt)("inlineCode",{parentName:"li"},"ParameterDirection.Input")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"DbType"),"\uff1a\u8bbe\u7f6e\u53c2\u6570\u7c7b\u578b\uff0c",(0,i.kt)("inlineCode",{parentName:"li"},"DbType")," \u679a\u4e3e\u7c7b\u578b\uff0c\u65e0\u9ed8\u8ba4"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"Size"),"\uff1a\u8bbe\u7f6e\u53c2\u6570\u957f\u5ea6\u7684\uff0c",(0,i.kt)("inlineCode",{parentName:"li"},"int")," \u7c7b\u578b")),(0,i.kt)("p",null,"\u5176\u4e2d ",(0,i.kt)("inlineCode",{parentName:"p"},"Direction")," \u5c5e\u6027\u662f\u9ed8\u8ba4\u6784\u9020\u51fd\u6570\u53c2\u6570\u3002"),(0,i.kt)("h2",{id:"9134-\u5173\u4e8e-procedureoutputresult"},"9.13.4 \u5173\u4e8e ",(0,i.kt)("inlineCode",{parentName:"h2"},"ProcedureOutputResult")),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"ProcedureOutputResult")," \u548c ",(0,i.kt)("inlineCode",{parentName:"p"},"ProcedureOutputResult")," \u662f\u590d\u6742\u5b58\u50a8\u8fc7\u7a0b\u6267\u884c\u8fd4\u56de\u6a21\u578b\u7c7b\uff0c\u6709\u4ee5\u4e0b\u5c5e\u6027\uff1a"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"OutputValues"),"\uff1a\u591a\u4e2a\u8f93\u51fa\u503c\uff0c",(0,i.kt)("inlineCode",{parentName:"li"},"ProcedureOutputValue")," \u7c7b\u578b"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"ReturnValue"),"\uff1a\u8fd4\u56de\u503c\uff0c",(0,i.kt)("inlineCode",{parentName:"li"},"object")," \u7c7b\u578b"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"Result"),"\uff1a\u7ed3\u679c\u96c6\uff0c\u975e\u6cdb\u578b\u7248\u672c\u662f ",(0,i.kt)("inlineCode",{parentName:"li"},"DataSet"),"\u7c7b\u578b\uff0c\u5426\u5219\u662f \u6cdb\u578b\u7c7b\u578b")),(0,i.kt)("h2",{id:"9135-\u5b58\u50a8\u8fc7\u7a0b\u53c2\u6570"},"9.13.5 \u5b58\u50a8\u8fc7\u7a0b\u53c2\u6570"),(0,i.kt)("p",null,"\u6240\u6709 ",(0,i.kt)("inlineCode",{parentName:"p"},"sql")," \u53c2\u6570\u90fd\u652f\u6301\u56db\u79cd\u65b9\u5f0f\uff1a"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"DbParameter[]"),"\uff1a\u6570\u7ec4\u7c7b\u578b"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"new {}"),"\uff1a\u533f\u540d\u7c7b\u578b"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"new Class{}"),"\uff1a\u5f3a\u7c7b\u578b\u7c7b\u578b\uff08\u652f\u6301\u590d\u6742\u5b58\u50a8\u8fc7\u7a0b\u53c2\u6570\uff09"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"Dictionary")," \u7c7b\u578b")),(0,i.kt)("h2",{id:"9136-\u53cd\u9988\u4e0e\u5efa\u8bae"},"9.13.6 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,i.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}v.isMDXComponent=!0},6010:function(e,t,n){function r(e){var t,n,a="";if("string"==typeof e||"number"==typeof e)a+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var s=r.createContext({}),p=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},c=function(e){var t=p(e.components);return r.createElement(s.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,i=e.originalType,s=e.parentName,c=o(e,["components","mdxType","originalType","parentName"]),d=p(n),m=a,v=d["".concat(s,".").concat(m)]||d[m]||u[m]||i;return n?r.createElement(v,l(l({ref:t},c),{},{components:n})):r.createElement(v,l({ref:t},c))}));function m(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,l=new Array(i);l[0]=d;var o={};for(var s in t)hasOwnProperty.call(t,s)&&(o[s]=t[s]);o.originalType=e,o.mdxType="string"==typeof e?e:a,l[1]=o;for(var p=2;p=0&&i<=p&&a<=o&&r>=0)||(t.scrollIntoView({block:"center",behavior:"smooth"}),t.classList.add(s),setTimeout((function(){return t.classList.remove(s)}),2e3))}),150))},b=function(e){var t,n=null;switch(e.key){case"ArrowRight":var r=q.indexOf(e.target)+1;n=q[r]||q[0];break;case"ArrowLeft":var a=q.indexOf(e.target)-1;n=q[a]||q[q.length-1]}null==(t=n)||t.focus()};return r.createElement("div",{className:"tabs-container"},r.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,l.Z)("tabs",{"tabs--block":a},d)},v.map((function(e){var t=e.value,n=e.label;return r.createElement("li",{role:"tab",tabIndex:y===t?0:-1,"aria-selected":y===t,className:(0,l.Z)("tabs__item",o,{"tabs__item--active":y===t}),key:t,ref:function(e){return q.push(e)},onKeyDown:b,onFocus:_,onClick:_},null!=n?n:t)}))),n?(0,r.cloneElement)(m.filter((function(e){return e.props.value===y}))[0],{className:"margin-vert--md"}):r.createElement("div",{className:"margin-vert--md"},m.map((function(e,t){return(0,r.cloneElement)(e,{key:t,hidden:e.props.value!==y})}))))}},9443:function(e,t,n){var r=(0,n(7294).createContext)(void 0);t.Z=r},2746:function(e,t,n){n.r(t),n.d(t,{frontMatter:function(){return p},contentTitle:function(){return c},metadata:function(){return u},toc:function(){return d},default:function(){return v}});var r=n(7462),a=n(3366),i=(n(7294),n(3905)),l=(n(4996),n(5064)),o=n(8215),s=["components"],p={id:"dbcontext-proc",title:"9.13 \u5b58\u50a8\u8fc7\u7a0b\u64cd\u4f5c",sidebar_label:"9.13 \u5b58\u50a8\u8fc7\u7a0b\u64cd\u4f5c"},c=void 0,u={unversionedId:"dbcontext-proc",id:"dbcontext-proc",isDocsHomePage:!1,title:"9.13 \u5b58\u50a8\u8fc7\u7a0b\u64cd\u4f5c",description:"\u63a8\u8350\u4f7f\u7528 \u300a9.17 Sql \u9ad8\u7ea7\u4ee3\u7406\u300b\u4ee3\u66ff\u672c\u7ae0\u8282\u529f\u80fd\u3002Sql \u9ad8\u7ea7\u4ee3\u7406 \u80fd\u591f\u63d0\u4f9b\u66f4\u5bb9\u6613\u4e14\u66f4\u6613\u7ef4\u62a4\u7684\u65b9\u5f0f\u3002",source:"@site/docs/dbcontext-proc.mdx",sourceDirName:".",slug:"/dbcontext-proc",permalink:"/furion/docs/dbcontext-proc",editUrl:"https://gitee.com/dotnetchina/Furion/tree/master/handbook/docs/dbcontext-proc.mdx",tags:[],version:"current",lastUpdatedBy:"Monk",lastUpdatedAt:1614238444,formattedLastUpdatedAt:"2/25/2021",frontMatter:{id:"dbcontext-proc",title:"9.13 \u5b58\u50a8\u8fc7\u7a0b\u64cd\u4f5c",sidebar_label:"9.13 \u5b58\u50a8\u8fc7\u7a0b\u64cd\u4f5c"},sidebar:"docs",previous:{title:"9.12 \u89c6\u56fe\u64cd\u4f5c",permalink:"/furion/docs/dbcontext-view"},next:{title:"9.14 \u51fd\u6570\u64cd\u4f5c",permalink:"/furion/docs/dbcontext-function"}},d=[{value:"9.13.1 \u5173\u4e8e\u5b58\u50a8\u8fc7\u7a0b",id:"9131-\u5173\u4e8e\u5b58\u50a8\u8fc7\u7a0b",children:[{value:"9.13.1.1 \u652f\u6301\u5b58\u50a8\u8fc7\u7a0b\u7684\u6570\u636e\u5e93",id:"91311-\u652f\u6301\u5b58\u50a8\u8fc7\u7a0b\u7684\u6570\u636e\u5e93",children:[]}]},{value:"9.13.2 \u5b58\u50a8\u8fc7\u7a0b\u4f7f\u7528",id:"9132-\u5b58\u50a8\u8fc7\u7a0b\u4f7f\u7528",children:[{value:"9.13.2.1 \u521d\u59cb\u5316\u65b9\u5f0f",id:"91321-\u521d\u59cb\u5316\u65b9\u5f0f",children:[]},{value:"9.13.2.2 \u8fd4\u56de DataTable",id:"91322-\u8fd4\u56de-datatable",children:[]},{value:"9.13.2.3 \u8fd4\u56de DataSet",id:"91323-\u8fd4\u56de-dataset",children:[]},{value:"9.13.2.4 \u8fd4\u56de List<T>",id:"91324-\u8fd4\u56de-listt",children:[]},{value:"9.13.2.5 \u8fd4\u56de Tuple<T1,...T8>",id:"91325-\u8fd4\u56de-tuplet1t8",children:[]},{value:"9.13.2.6 \u8fd4\u56de \u5355\u884c\u5355\u5217 object",id:"91326-\u8fd4\u56de-\u5355\u884c\u5355\u5217-object",children:[]},{value:"9.13.2.7 \u8fd4\u56de \u5355\u884c\u5355\u5217 <T>",id:"91327-\u8fd4\u56de-\u5355\u884c\u5355\u5217-t",children:[]},{value:"9.13.2.8 \u6267\u884c\u4f46\u65e0\u8fd4\u56de",id:"91328-\u6267\u884c\u4f46\u65e0\u8fd4\u56de",children:[]}]},{value:"9.13.3 \u6267\u884c\u590d\u6742\u5b58\u50a8\u8fc7\u7a0b",id:"9133-\u6267\u884c\u590d\u6742\u5b58\u50a8\u8fc7\u7a0b",children:[{value:"9.13.3.1 \u521b\u5efa\u53c2\u6570\u6a21\u578b",id:"91331-\u521b\u5efa\u53c2\u6570\u6a21\u578b",children:[]},{value:"9.13.3.2 \u6267\u884c\u590d\u6742\u5b58\u50a8\u8fc7\u7a0b",id:"91332-\u6267\u884c\u590d\u6742\u5b58\u50a8\u8fc7\u7a0b",children:[]}]},{value:"9.13.3 \u5173\u4e8e [DbParameter]",id:"9133-\u5173\u4e8e-dbparameter",children:[]},{value:"9.13.4 \u5173\u4e8e ProcedureOutputResult",id:"9134-\u5173\u4e8e-procedureoutputresult",children:[]},{value:"9.13.5 \u5b58\u50a8\u8fc7\u7a0b\u53c2\u6570",id:"9135-\u5b58\u50a8\u8fc7\u7a0b\u53c2\u6570",children:[]},{value:"9.13.6 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"9136-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],m={toc:d};function v(e){var t=e.components,n=(0,a.Z)(e,s);return(0,i.kt)("wrapper",(0,r.Z)({},m,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u6e29\u99a8\u63d0\u793a")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u63a8\u8350\u4f7f\u7528 \u300a",(0,i.kt)("a",{parentName:"p",href:"/furion/docs/dbcontext-sql-proxy"},"9.17 Sql \u9ad8\u7ea7\u4ee3\u7406"),"\u300b\u4ee3\u66ff\u672c\u7ae0\u8282\u529f\u80fd\u3002",(0,i.kt)("inlineCode",{parentName:"p"},"Sql \u9ad8\u7ea7\u4ee3\u7406")," \u80fd\u591f\u63d0\u4f9b\u66f4\u5bb9\u6613\u4e14\u66f4\u6613\u7ef4\u62a4\u7684\u65b9\u5f0f\u3002"))),(0,i.kt)("h2",{id:"9131-\u5173\u4e8e\u5b58\u50a8\u8fc7\u7a0b"},"9.13.1 \u5173\u4e8e\u5b58\u50a8\u8fc7\u7a0b"),(0,i.kt)("p",null,"\u5f15\u7528\u767e\u5ea6\u767e\u79d1\uff1a"),(0,i.kt)("blockquote",null,(0,i.kt)("p",{parentName:"blockquote"},"\u5b58\u50a8\u8fc7\u7a0b\uff08Stored Procedure\uff09\u662f\u5728\u5927\u578b\u6570\u636e\u5e93\u7cfb\u7edf\u4e2d\uff0c\u4e00\u7ec4\u4e3a\u4e86\u5b8c\u6210\u7279\u5b9a\u529f\u80fd\u7684 SQL \u8bed\u53e5\u96c6\uff0c\u5b83\u5b58\u50a8\u5728\u6570\u636e\u5e93\u4e2d\uff0c\u4e00\u6b21\u7f16\u8bd1\u540e\u6c38\u4e45\u6709\u6548\uff0c\u7528\u6237\u901a\u8fc7\u6307\u5b9a\u5b58\u50a8\u8fc7\u7a0b\u7684\u540d\u5b57\u5e76\u7ed9\u51fa\u53c2\u6570\uff08\u5982\u679c\u8be5\u5b58\u50a8\u8fc7\u7a0b\u5e26\u6709\u53c2\u6570\uff09\u6765\u6267\u884c\u5b83\u3002"),(0,i.kt)("p",{parentName:"blockquote"},"\u5b58\u50a8\u8fc7\u7a0b\u662f\u6570\u636e\u5e93\u4e2d\u7684\u4e00\u4e2a\u91cd\u8981\u5bf9\u8c61\u3002\u5728\u6570\u636e\u91cf\u7279\u522b\u5e9e\u5927\u7684\u60c5\u51b5\u4e0b\u5229\u7528\u5b58\u50a8\u8fc7\u7a0b\u80fd\u8fbe\u5230\u500d\u901f\u7684\u6548\u7387\u63d0\u5347\u3002")),(0,i.kt)("p",null,"\u7b80\u5355\u6765\u8bf4\uff0c\u5b58\u50a8\u8fc7\u7a0b\u5c31\u662f\u5173\u7cfb\u578b\u6570\u636e\u5e93\u4e2d\uff08",(0,i.kt)("inlineCode",{parentName:"p"},"Sqlite")," \u9664\u5916\uff09\u4e2d\u7f16\u5199\u903b\u8f91\u7684\u51fd\u6570/\u65b9\u6cd5\uff0c\u901a\u8fc7\u8fd9\u79cd\u65b9\u5f0f\uff0c\u53ef\u4ee5\u5c06 ",(0,i.kt)("inlineCode",{parentName:"p"},"sql")," \u7f16\u8bd1\u7f13\u5b58\u8d77\u6765\uff0c\u5927\u5927\u63d0\u9ad8\u5b58\u50a8\u8fc7\u7a0b\u7684\u6267\u884c\u6548\u7387\u3002"),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"\u8fd9\u91cc\u4e0d\u8ba8\u8bba\u5b58\u50a8\u8fc7\u7a0b\u7684\u4f18\u7f3a\u70b9\u3002")),(0,i.kt)("h3",{id:"91311-\u652f\u6301\u5b58\u50a8\u8fc7\u7a0b\u7684\u6570\u636e\u5e93"},"9.13.1.1 \u652f\u6301\u5b58\u50a8\u8fc7\u7a0b\u7684\u6570\u636e\u5e93"),(0,i.kt)("table",null,(0,i.kt)("thead",{parentName:"table"},(0,i.kt)("tr",{parentName:"thead"},(0,i.kt)("th",{parentName:"tr",align:null},"SqlServer"),(0,i.kt)("th",{parentName:"tr",align:null},"Sqlite"),(0,i.kt)("th",{parentName:"tr",align:null},"Cosmos"),(0,i.kt)("th",{parentName:"tr",align:null},"InMemoryDatabase"),(0,i.kt)("th",{parentName:"tr",align:null},"MySql"),(0,i.kt)("th",{parentName:"tr",align:null},"PostgreSQL"),(0,i.kt)("th",{parentName:"tr",align:null},"Oracle"),(0,i.kt)("th",{parentName:"tr",align:null},"Firebird"),(0,i.kt)("th",{parentName:"tr",align:null},"Dm"))),(0,i.kt)("tbody",{parentName:"table"},(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},"\u2714"),(0,i.kt)("td",{parentName:"tr",align:null}),(0,i.kt)("td",{parentName:"tr",align:null},"\u2714"),(0,i.kt)("td",{parentName:"tr",align:null}),(0,i.kt)("td",{parentName:"tr",align:null},"\u2714"),(0,i.kt)("td",{parentName:"tr",align:null},"\u2714"),(0,i.kt)("td",{parentName:"tr",align:null},"\u2714"),(0,i.kt)("td",{parentName:"tr",align:null},"\u2714"),(0,i.kt)("td",{parentName:"tr",align:null},"\u2714")))),(0,i.kt)("h2",{id:"9132-\u5b58\u50a8\u8fc7\u7a0b\u4f7f\u7528"},"9.13.2 \u5b58\u50a8\u8fc7\u7a0b\u4f7f\u7528"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\u63d0\u4f9b\u4e86\u591a\u79cd\u5b58\u50a8\u8fc7\u7a0b\u64cd\u4f5c\u65b9\u5f0f\uff1a"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"ISqlRepository"),"\uff1a",(0,i.kt)("inlineCode",{parentName:"li"},"Sql")," \u64cd\u4f5c\u4ed3\u50a8\uff0c\u53ef\u901a\u8fc7 ",(0,i.kt)("inlineCode",{parentName:"li"},"\u4f9d\u8d56\u6ce8\u5165")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"ISqlDispatchProxy"),"\uff1a",(0,i.kt)("inlineCode",{parentName:"li"},"Sql")," \u4ee3\u7406\u65b9\u5f0f\uff08\u9ad8\u7ea7\u7528\u6cd5\uff0c\u63a8\u8350\uff09"),(0,i.kt)("li",{parentName:"ul"},"\u901a\u8fc7\u4efb\u610f\u5b9e\u4f53\u4ed3\u50a8\u64cd\u4f5c\uff1a",(0,i.kt)("inlineCode",{parentName:"li"},"personRepository.SqlProcedureQuery(procName)")),(0,i.kt)("li",{parentName:"ul"},"\u901a\u8fc7\u5b57\u7b26\u4e32\u62d3\u5c55\u65b9\u6cd5\uff1a",(0,i.kt)("inlineCode",{parentName:"li"},"procName.SqlProcedureQuery()")),(0,i.kt)("li",{parentName:"ul"},"\u901a\u8fc7 ",(0,i.kt)("inlineCode",{parentName:"li"},"repository.Sql().SqlProcedureQuery()")," \u65b9\u5f0f")),(0,i.kt)("h3",{id:"91321-\u521d\u59cb\u5316\u65b9\u5f0f"},"9.13.2.1 \u521d\u59cb\u5316\u65b9\u5f0f"),(0,i.kt)(l.Z,{defaultValue:"one",values:[{label:"ISqlRepository",value:"one"},{label:"ISqlDispatchProxy",value:"two"},{label:"\u5b9e\u4f53\u4ed3\u50a8\u65b9\u5f0f",value:"three"},{label:"\u5b57\u7b26\u4e32\u62d3\u5c55\u65b9\u5f0f",value:"four"}],mdxType:"Tabs"},(0,i.kt)(o.Z,{value:"one",mdxType:"TabItem"},(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,9-12}","{1,9-12}":!0},"using Furion.DatabaseAccessor;\nusing Furion.DynamicApiController;\n\nnamespace Furion.Application\n{\n [DynamicApiController]\n public class SqlService\n {\n private ISqlRepository _sqlRepository;\n public SqlService(ISqlRepository sqlRepository)\n {\n _sqlRepository = sqlRepository;\n }\n }\n}\n"))),(0,i.kt)(o.Z,{value:"two",mdxType:"TabItem"},(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{2,7,9-10}","{2,7,9-10}":!0},'using Furion.Core;\nusing Furion.DatabaseAccessor;\nusing System.Collections.Generic;\n\nnamespace Furion.Application\n{\n public interface ISqlExecuteProxy : ISqlDispatchProxy\n {\n [SqlProcedure("proc_GetPersons")]\n List GetPersons(string keyword);\n }\n}\n')),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{9-12}","{9-12}":!0},"using Furion.DatabaseAccessor;\nusing Furion.DynamicApiController;\n\nnamespace Furion.Application\n{\n [DynamicApiController]\n public class SqlService\n {\n private ISqlExecuteProxy _sqlExecuteProxy;\n public SqlService(ISqlExecuteProxy sqlExecuteProxy)\n {\n _sqlExecuteProxy = sqlExecuteProxy;\n }\n }\n}\n"))),(0,i.kt)(o.Z,{value:"three",mdxType:"TabItem"},(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'var persons = personRepository.SqlProcedureQuery("proc_GetPersons");\n'))),(0,i.kt)(o.Z,{value:"four",mdxType:"TabItem"},(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'var persons = "proc_GetPersons".SqlProcedureQuery();\n')))),(0,i.kt)("h3",{id:"91322-\u8fd4\u56de-datatable"},"9.13.2.2 \u8fd4\u56de ",(0,i.kt)("inlineCode",{parentName:"h3"},"DataTable")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// ISqlRepository \u65b9\u6cd5\nvar dataTable = _sqlRepository.SqlProcedureQuery("proc_GetPersons");\n\n// ISqlDispatchProxy \u65b9\u5f0f\nvar dataTable = _sqlExecuteProxy.GetPersons(); // \u63a8\u8350\u65b9\u5f0f\n\n// \u5b9e\u4f53\u4ed3\u50a8\u65b9\u5f0f\nvar dataTable = _personRepository.SqlProcedureQuery("proc_GetPersons");\n\n// IRepository \u975e\u6cdb\u578b\u65b9\u5f0f\nvar dataTable = _repository.Sql().SqlProcedureQuery("proc_GetPersons");\n\n// \u53d8\u6001\u61d2\u4eba\u65b9\u5f0f\uff0c\u76f4\u63a5\u901a\u8fc7\u5b58\u50a8\u8fc7\u7a0b\u540d\u6267\u884c\nvar dataTable = "proc_GetPersons".SqlProcedureQuery();\n')),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u5173\u4e8e\u5f02\u6b65")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u6bcf\u4e00\u4e2a\u6570\u636e\u5e93\u64cd\u4f5c\u90fd\u652f\u6301\u5f02\u6b65\u65b9\u5f0f\uff0c\u7531\u4e8e\u7bc7\u5e45\u6709\u9650\uff0c\u5c31\u4e0d\u5217\u4e3e\u5f02\u6b65\u65b9\u5f0f\u4e86\u3002"))),(0,i.kt)("h3",{id:"91323-\u8fd4\u56de-dataset"},"9.13.2.3 \u8fd4\u56de ",(0,i.kt)("inlineCode",{parentName:"h3"},"DataSet")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// ISqlRepository \u65b9\u6cd5\nvar dataSet = _sqlRepository.SqlProcedureQueries("proc_GetPersons");\n\n// ISqlDispatchProxy \u65b9\u5f0f\nvar dataSet = _sqlExecuteProxy.GetPersons(); // \u63a8\u8350\u65b9\u5f0f\n\n// \u5b9e\u4f53\u4ed3\u50a8\u65b9\u5f0f\nvar dataSet = _personRepository.SqlProcedureQueries("proc_GetPersons");\n\n// IRepository \u975e\u6cdb\u578b\u65b9\u5f0f\nvar dataSet = _repository.Sql().SqlProcedureQueries("proc_GetPersons");\n\n// \u53d8\u6001\u61d2\u4eba\u65b9\u5f0f\uff0c\u76f4\u63a5\u901a\u8fc7\u5b58\u50a8\u8fc7\u7a0b\u540d\u6267\u884c\nvar dataSet = "proc_GetPersons".SqlProcedureQueries();\n')),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u5173\u4e8e\u5f02\u6b65")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u6bcf\u4e00\u4e2a\u6570\u636e\u5e93\u64cd\u4f5c\u90fd\u652f\u6301\u5f02\u6b65\u65b9\u5f0f\uff0c\u7531\u4e8e\u7bc7\u5e45\u6709\u9650\uff0c\u5c31\u4e0d\u5217\u4e3e\u5f02\u6b65\u65b9\u5f0f\u4e86\u3002"))),(0,i.kt)("h3",{id:"91324-\u8fd4\u56de-listt"},"9.13.2.4 \u8fd4\u56de ",(0,i.kt)("inlineCode",{parentName:"h3"},"List")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// ISqlRepository \u65b9\u6cd5\nvar list = _sqlRepository.SqlProcedureQuery("proc_GetPersons");\n\n// ISqlDispatchProxy \u65b9\u5f0f\nvar list = _sqlExecuteProxy.GetPersons(); // \u63a8\u8350\u65b9\u5f0f\n\n// \u5b9e\u4f53\u4ed3\u50a8\u65b9\u5f0f\nvar list = _personRepository.SqlProcedureQuery("proc_GetPersons");\n\n// IRepository \u975e\u6cdb\u578b\u65b9\u5f0f\nvar list = _repository.Sql().SqlProcedureQuery("proc_GetPersons");\n\n// \u53d8\u6001\u61d2\u4eba\u65b9\u5f0f\uff0c\u76f4\u63a5\u901a\u8fc7\u5b58\u50a8\u8fc7\u7a0b\u540d\u6267\u884c\nvar list = "proc_GetPersons".SqlProcedureQuery();\n')),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u5173\u4e8e\u5f02\u6b65")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u6bcf\u4e00\u4e2a\u6570\u636e\u5e93\u64cd\u4f5c\u90fd\u652f\u6301\u5f02\u6b65\u65b9\u5f0f\uff0c\u7531\u4e8e\u7bc7\u5e45\u6709\u9650\uff0c\u5c31\u4e0d\u5217\u4e3e\u5f02\u6b65\u65b9\u5f0f\u4e86\u3002"))),(0,i.kt)("h3",{id:"91325-\u8fd4\u56de-tuplet1t8"},"9.13.2.5 \u8fd4\u56de ",(0,i.kt)("inlineCode",{parentName:"h3"},"Tuple")),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u5927\u5927\u5229\u7528\u4e86 ",(0,i.kt)("inlineCode",{parentName:"p"},"Tuple")," \u7684\u7279\u6027\uff0c\u5c06\u8fd4\u56de\u591a\u4e2a\u7ed3\u679c\u96c6\u8f6c\u6210 ",(0,i.kt)("inlineCode",{parentName:"p"},"Tuple")," \u7c7b\u578b"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// ISqlRepository \u65b9\u6cd5\n\n// \u8fd4\u56de\u4e00\u4e2a\u7ed3\u679c\u96c6\nvar list1 = _sqlRepository.SqlProcedureQueries("proc_GetPersons");\n\n// \u8fd4\u56de\u4e24\u4e2a\u7ed3\u679c\u96c6\nvar (list1, list2) = _sqlRepository.SqlProcedureQueries("proc_GetPersons");\n\n// \u8fd4\u56de\u4e09\u4e2a\u7ed3\u679c\u96c6\nvar (list1, list2, list3) = _sqlRepository.SqlProcedureQueries("proc_GetPersons");\n\n// \u8fd4\u56de\u56db\u4e2a\u7ed3\u679c\u96c6\nvar (list1, list2, list3, list4) = _sqlRepository.SqlProcedureQueries("proc_GetPersons");\n\n// \u8fd4\u56de\u4e94\u4e2a\u7ed3\u679c\u96c6\nvar (list1, list2, list3, list4, list5) = _sqlRepository.SqlProcedureQueries("proc_GetPersons");\n\n// \u8fd4\u56de\u516d\u4e2a\u7ed3\u679c\u96c6\nvar (list1, list2, list3, list4, list5, list6) = _sqlRepository.SqlProcedureQueries("proc_GetPersons");\n\n// \u8fd4\u56de\u4e03\u4e2a\u7ed3\u679c\u96c6\nvar (list1, list2, list3, list4, list5, list6, list7) = _sqlRepository.SqlProcedureQueries("proc_GetPersons");\n\n// \u8fd4\u56de\u516b\u4e2a\u7ed3\u679c\u96c6\nvar (list1, list2, list3, list4, list5, list6, list7, list8) = _sqlRepository.SqlProcedureQueries("proc_GetPersons");\n\n// ==================================\n\n// ISqlDispatchProxy \u65b9\u5f0f\uff0c\u63a8\u8350\u65b9\u5f0f\uff0c\u81ea\u52a8\u5904\u7406\u591a\u4e2a\u7ed3\u679c\u96c6\n\n// \u8fd4\u56de\u4e00\u4e2a\u7ed3\u679c\u96c6\nvar list1 = _sqlRepository.GetDatas();\n\n// \u8fd4\u56de\u4e24\u4e2a\u7ed3\u679c\u96c6\nvar (list1, list2) = _sqlRepository.GetDatas();\n\n// \u8fd4\u56de\u4e09\u4e2a\u7ed3\u679c\u96c6\nvar (list1, list2, list3) = _sqlRepository.GetDatas();\n\n// \u8fd4\u56de\u56db\u4e2a\u7ed3\u679c\u96c6\nvar (list1, list2, list3, list4) = _sqlRepository.GetDatas();\n\n// \u8fd4\u56de\u4e94\u4e2a\u7ed3\u679c\u96c6\nvar (list1, list2, list3, list4, list5) = _sqlRepository.GetDatas();\n\n// \u8fd4\u56de\u516d\u4e2a\u7ed3\u679c\u96c6\nvar (list1, list2, list3, list4, list5, list6) = _sqlRepository.GetDatas();\n\n// \u8fd4\u56de\u4e03\u4e2a\u7ed3\u679c\u96c6\nvar (list1, list2, list3, list4, list5, list6, list7) = _sqlRepository.GetDatas();\n\n// \u8fd4\u56de\u516b\u4e2a\u7ed3\u679c\u96c6\nvar (list1, list2, list3, list4, list5, list6, list7, list8) = _sqlRepository.GetDatas();\n\n// ==================================\n\n// \u5b9e\u4f53\u4ed3\u50a8\u65b9\u5f0f\n\n// \u8fd4\u56de\u4e00\u4e2a\u7ed3\u679c\u96c6\nvar list1 = _personRepository.SqlProcedureQueries("proc_GetPersons");\n\n// \u8fd4\u56de\u4e24\u4e2a\u7ed3\u679c\u96c6\nvar (list1, list2) = _personRepository.SqlProcedureQueries("proc_GetPersons");\n\n// \u8fd4\u56de\u4e09\u4e2a\u7ed3\u679c\u96c6\nvar (list1, list2, list3) = _personRepository.SqlProcedureQueries("proc_GetPersons");\n\n// \u8fd4\u56de\u56db\u4e2a\u7ed3\u679c\u96c6\nvar (list1, list2, list3, list4) = _personRepository.SqlProcedureQueries("proc_GetPersons");\n\n// \u8fd4\u56de\u4e94\u4e2a\u7ed3\u679c\u96c6\nvar (list1, list2, list3, list4, list5) = _personRepository.SqlProcedureQueries("proc_GetPersons");\n\n// \u8fd4\u56de\u516d\u4e2a\u7ed3\u679c\u96c6\nvar (list1, list2, list3, list4, list5, list6) = _personRepository.SqlProcedureQueries("proc_GetPersons");\n\n// \u8fd4\u56de\u4e03\u4e2a\u7ed3\u679c\u96c6\nvar (list1, list2, list3, list4, list5, list6, list7) = _personRepository.SqlProcedureQueries("proc_GetPersons");\n\n// \u8fd4\u56de\u516b\u4e2a\u7ed3\u679c\u96c6\nvar (list1, list2, list3, list4, list5, list6, list7, list8) = _personRepository.SqlProcedureQueries("proc_GetPersons");\n\n// ==================================\n\n// IRepository \u975e\u6cdb\u578b\u65b9\u5f0f\n\n// \u8fd4\u56de\u4e00\u4e2a\u7ed3\u679c\u96c6\nvar list1 = _repository.Sql().SqlProcedureQueries("proc_GetPersons");\n\n// \u8fd4\u56de\u4e24\u4e2a\u7ed3\u679c\u96c6\nvar (list1, list2) = _repository.Sql().SqlProcedureQueries("proc_GetPersons");\n\n// \u8fd4\u56de\u4e09\u4e2a\u7ed3\u679c\u96c6\nvar (list1, list2, list3) = _repository.Sql().SqlProcedureQueries("proc_GetPersons");\n\n// \u8fd4\u56de\u56db\u4e2a\u7ed3\u679c\u96c6\nvar (list1, list2, list3, list4) = _repository.Sql().SqlProcedureQueries("proc_GetPersons");\n\n// \u8fd4\u56de\u4e94\u4e2a\u7ed3\u679c\u96c6\nvar (list1, list2, list3, list4, list5) = _repository.Sql().SqlProcedureQueries("proc_GetPersons");\n\n// \u8fd4\u56de\u516d\u4e2a\u7ed3\u679c\u96c6\nvar (list1, list2, list3, list4, list5, list6) = _repository.Sql().SqlProcedureQueries("proc_GetPersons");\n\n// \u8fd4\u56de\u4e03\u4e2a\u7ed3\u679c\u96c6\nvar (list1, list2, list3, list4, list5, list6, list7) = _repository.Sql().SqlProcedureQueries("proc_GetPersons");\n\n// \u8fd4\u56de\u516b\u4e2a\u7ed3\u679c\u96c6\nvar (list1, list2, list3, list4, list5, list6, list7, list8) = _repository.Sql().SqlProcedureQueries("proc_GetPersons");\n\n// ==================================\n\n// \u53d8\u6001\u61d2\u4eba\u65b9\u5f0f\uff0c\u76f4\u63a5\u901a\u8fc7\u5b58\u50a8\u8fc7\u7a0b\u540d\u6267\u884c\n\n// \u8fd4\u56de\u4e00\u4e2a\u7ed3\u679c\u96c6\nvar list1 = "proc_GetPersons".SqlProcedureQueries();\n\n// \u8fd4\u56de\u4e24\u4e2a\u7ed3\u679c\u96c6\nvar (list1, list2) = "proc_GetPersons".SqlProcedureQueries();\n\n// \u8fd4\u56de\u4e09\u4e2a\u7ed3\u679c\u96c6\nvar (list1, list2, list3) = "proc_GetPersons".SqlProcedureQueries();\n\n// \u8fd4\u56de\u56db\u4e2a\u7ed3\u679c\u96c6\nvar (list1, list2, list3, list4) = "proc_GetPersons".SqlProcedureQueries();\n\n// \u8fd4\u56de\u4e94\u4e2a\u7ed3\u679c\u96c6\nvar (list1, list2, list3, list4, list5) = "proc_GetPersons".SqlProcedureQueries();\n\n// \u8fd4\u56de\u516d\u4e2a\u7ed3\u679c\u96c6\nvar (list1, list2, list3, list4, list5, list6) = "proc_GetPersons".SqlProcedureQueries();\n\n// \u8fd4\u56de\u4e03\u4e2a\u7ed3\u679c\u96c6\nvar (list1, list2, list3, list4, list5, list6, list7) = "proc_GetPersons".SqlProcedureQueries();\n\n// \u8fd4\u56de\u516b\u4e2a\u7ed3\u679c\u96c6\nvar (list1, list2, list3, list4, list5, list6, list7, list8) = "proc_GetPersons".SqlProcedureQueries();\n')),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u5173\u4e8e\u5f02\u6b65")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u6bcf\u4e00\u4e2a\u6570\u636e\u5e93\u64cd\u4f5c\u90fd\u652f\u6301\u5f02\u6b65\u65b9\u5f0f\uff0c\u7531\u4e8e\u7bc7\u5e45\u6709\u9650\uff0c\u5c31\u4e0d\u5217\u4e3e\u5f02\u6b65\u65b9\u5f0f\u4e86\u3002"))),(0,i.kt)("h3",{id:"91326-\u8fd4\u56de-\u5355\u884c\u5355\u5217-object"},"9.13.2.6 \u8fd4\u56de ",(0,i.kt)("inlineCode",{parentName:"h3"},"\u5355\u884c\u5355\u5217 object")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// ISqlRepository \u65b9\u6cd5\nvar value = _sqlRepository.SqlProcedureScalar("proc_GetName");\n\n// ISqlDispatchProxy \u65b9\u5f0f\nvar value = _sqlExecuteProxy.GetName(); // \u63a8\u8350\u65b9\u5f0f\n\n// \u5b9e\u4f53\u4ed3\u50a8\u65b9\u5f0f\nvar value = _personRepository.SqlProcedureScalar("proc_GetName");\n\n// IRepository \u975e\u6cdb\u578b\u65b9\u5f0f\nvar value = _repository.Sql().SqlProcedureScalar("proc_GetName");\n\n// \u53d8\u6001\u61d2\u4eba\u65b9\u5f0f\uff0c\u76f4\u63a5\u901a\u8fc7\u5b58\u50a8\u8fc7\u7a0b\u540d\u6267\u884c\nvar value = "proc_GetName".SqlProcedureScalar();\n')),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u5173\u4e8e\u5f02\u6b65")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u6bcf\u4e00\u4e2a\u6570\u636e\u5e93\u64cd\u4f5c\u90fd\u652f\u6301\u5f02\u6b65\u65b9\u5f0f\uff0c\u7531\u4e8e\u7bc7\u5e45\u6709\u9650\uff0c\u5c31\u4e0d\u5217\u4e3e\u5f02\u6b65\u65b9\u5f0f\u4e86\u3002"))),(0,i.kt)("h3",{id:"91327-\u8fd4\u56de-\u5355\u884c\u5355\u5217-t"},"9.13.2.7 \u8fd4\u56de ",(0,i.kt)("inlineCode",{parentName:"h3"},"\u5355\u884c\u5355\u5217 ")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// ISqlRepository \u65b9\u6cd5\nvar value = _sqlRepository.SqlProcedureScalar("proc_GetName");\n\n// ISqlDispatchProxy \u65b9\u5f0f\nvar value = _sqlExecuteProxy.GetName(); // \u63a8\u8350\u65b9\u5f0f\n\n// \u5b9e\u4f53\u4ed3\u50a8\u65b9\u5f0f\nvar value = _personRepository.SqlProcedureScalar("proc_GetName");\n\n// IRepository \u975e\u6cdb\u578b\u65b9\u5f0f\nvar value = _repository.Sql().SqlProcedureScalar("proc_GetName");\n\n// \u53d8\u6001\u61d2\u4eba\u65b9\u5f0f\uff0c\u76f4\u63a5\u901a\u8fc7\u5b58\u50a8\u8fc7\u7a0b\u540d\u6267\u884c\nvar value = "proc_GetName".SqlProcedureScalar();\n')),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u5173\u4e8e\u5f02\u6b65")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u6bcf\u4e00\u4e2a\u6570\u636e\u5e93\u64cd\u4f5c\u90fd\u652f\u6301\u5f02\u6b65\u65b9\u5f0f\uff0c\u7531\u4e8e\u7bc7\u5e45\u6709\u9650\uff0c\u5c31\u4e0d\u5217\u4e3e\u5f02\u6b65\u65b9\u5f0f\u4e86\u3002"))),(0,i.kt)("h3",{id:"91328-\u6267\u884c\u4f46\u65e0\u8fd4\u56de"},"9.13.2.8 \u6267\u884c\u4f46\u65e0\u8fd4\u56de"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// ISqlRepository \u65b9\u6cd5\n_sqlRepository.SqlProcedureNonQuery("proc_UpdateData");\n\n// ISqlDispatchProxy \u65b9\u5f0f\n_sqlExecuteProxy.UpdateData(); // \u63a8\u8350\u65b9\u5f0f\n\n// \u5b9e\u4f53\u4ed3\u50a8\u65b9\u5f0f\n_personRepository.SqlProcedureNonQuery("proc_UpdateData");\n\n// IRepository \u975e\u6cdb\u578b\u65b9\u5f0f\n_repository.Sql().SqlProcedureNonQuery("proc_UpdateData");\n\n// \u53d8\u6001\u61d2\u4eba\u65b9\u5f0f\uff0c\u76f4\u63a5\u901a\u8fc7\u5b58\u50a8\u8fc7\u7a0b\u540d\u6267\u884c\n"proc_UpdateData".SqlProcedureNonQuery();\n')),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u5173\u4e8e\u5f02\u6b65")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u6bcf\u4e00\u4e2a\u6570\u636e\u5e93\u64cd\u4f5c\u90fd\u652f\u6301\u5f02\u6b65\u65b9\u5f0f\uff0c\u7531\u4e8e\u7bc7\u5e45\u6709\u9650\uff0c\u5c31\u4e0d\u5217\u4e3e\u5f02\u6b65\u65b9\u5f0f\u4e86\u3002"))),(0,i.kt)("h2",{id:"9133-\u6267\u884c\u590d\u6742\u5b58\u50a8\u8fc7\u7a0b"},"9.13.3 \u6267\u884c\u590d\u6742\u5b58\u50a8\u8fc7\u7a0b"),(0,i.kt)("p",null,"\u5728\u5b58\u50a8\u8fc7\u7a0b\u4e2d\uff0c\u6709\u4e00\u79cd\u4f8b\u5b50\u975e\u5e38\u590d\u6742\uff0c\u90a3\u5c31\u662f\u65e2\u6709 ",(0,i.kt)("inlineCode",{parentName:"p"},"INPUT")," \u53c2\u6570\uff0c\u53c8\u6709 ",(0,i.kt)("inlineCode",{parentName:"p"},"OUTPUT")," \u53c2\u6570\uff0c\u8fd8\u6709 ",(0,i.kt)("inlineCode",{parentName:"p"},"RETURN")," \u53c2\u6570\uff0c\u540c\u65f6\u8fd8\u8f93\u51fa \u7ed3\u679c\u96c6 \ud83d\udca5\uff0c\u5982\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-sql",metastring:"{3,4,10-12,15-17,22}","{3,4,10-12,15-17,22}":!0},"CREATE PROC PROC_Output\n @Id INT, // \u8f93\u5165\u53c2\u6570\n @Name NVARCHAR(32) OUTPUT, // \u8f93\u51fa\u53c2\u6570\uff0c\u8fd8\u5e26\u957f\u5ea6\n @Age INT OUTPUT // \u8f93\u51fa\u53c2\u6570\nAS\nBEGIN\n SET @Name = 'Furion Output';\n\n // \u8f93\u51fa\u7ed3\u679c\u96c6\n SELECT *\n FROM dbo.Test\n WHERE Id > @Id;\n\n // \u8f93\u51fa\u7ed3\u679c\u96c6\n SELECT TOP 10\n *\n FROM dbo.Test;\n\n SET @Age = 27;\n\n // \u5e26 RETURN \u8fd4\u56de\n RETURN 10;\nEND;\n")),(0,i.kt)("h3",{id:"91331-\u521b\u5efa\u53c2\u6570\u6a21\u578b"},"9.13.3.1 \u521b\u5efa\u53c2\u6570\u6a21\u578b"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,10,13,16}","{1,10,13,16}":!0},"using Furion.DatabaseAccessor;\nusing System.Data;\n\nnamespace Furion.Application\n{\n public class ProcOutputModel\n {\n public int Id { get; set; } // \u8f93\u5165\u53c2\u6570\n\n [DbParameter(ParameterDirection.Output, Size = 32)]\n public string Name { get; set; } // \u8f93\u51fa\u53c2\u6570\n\n [DbParameter(ParameterDirection.Output)]\n public int Age { get; set; } // \u8f93\u51fa\u53c2\u6570\n\n [DbParameter(ParameterDirection.ReturnValue)]\n public int ReturnValue { get; set; } // \u8fd4\u56de\u503c\n }\n}\n")),(0,i.kt)("h3",{id:"91332-\u6267\u884c\u590d\u6742\u5b58\u50a8\u8fc7\u7a0b"},"9.13.3.2 \u6267\u884c\u590d\u6742\u5b58\u50a8\u8fc7\u7a0b"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("strong",{parentName:"li"}," ",(0,i.kt)("inlineCode",{parentName:"strong"},"DataSet")," ")," \u65b9\u5f0f")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// ISqlRepository \u65b9\u6cd5\nProcedureOutputResult result = _sqlRepository.SqlProcedureOutput("proc_Complex", new ProcOutputModel{});\n\n// ISqlDispatchProxy \u65b9\u5f0f\nProcedureOutputResult result = _sqlExecuteProxy.Complex(new ProcOutputModel{}); // \u63a8\u8350\u65b9\u5f0f\n\n// \u5b9e\u4f53\u4ed3\u50a8\u65b9\u5f0f\nProcedureOutputResult result = _personRepository.SqlProcedureOutput("proc_Complex", new ProcOutputModel{});\n\n// IRepository \u975e\u6cdb\u578b\u65b9\u5f0f\nProcedureOutputResult result = _repository.Sql().SqlProcedureOutput("proc_Complex", new ProcOutputModel{});\n\n// \u53d8\u6001\u61d2\u4eba\u65b9\u5f0f\uff0c\u76f4\u63a5\u901a\u8fc7\u5b58\u50a8\u8fc7\u7a0b\u540d\u6267\u884c\nProcedureOutputResult result = "proc_Complex".SqlProcedureOutput(new ProcOutputModel{});\n')),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"// \u83b7\u53d6 OUTPUT \u53c2\u6570\u503c\nvar outputs = result.OutputValues;\n\n// \u83b7\u53d6 RETURN \u8fd4\u56de\u503c\nvar reval = result.ReturnValue;\n\n// \u83b7\u53d6\u8fd4\u56de\u7ed3\u679c\u96c6\nvar dataSet = result.Result;\n")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"Tuple")," \u65b9\u5f0f")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// ISqlRepository \u65b9\u6cd5\nProcedureOutputResult<(List, List)> result = _sqlRepository.SqlProcedureOutput<(List, List)>("proc_Complex", new ProcOutputModel{});\n\n// ISqlDispatchProxy \u65b9\u5f0f\nProcedureOutputResult<(List, List)> result = _sqlExecuteProxy.Complex(new ProcOutputModel{}); // \u63a8\u8350\u65b9\u5f0f\n\n// \u5b9e\u4f53\u4ed3\u50a8\u65b9\u5f0f\nProcedureOutputResult<(List, List)> result = _personRepository.SqlProcedureOutput<(List, List)>("proc_Complex", new ProcOutputModel{});\n\n// IRepository \u975e\u6cdb\u578b\u65b9\u5f0f\nProcedureOutputResult<(List, List)> result = _repository.Sql().SqlProcedureOutput<(List, List)>("proc_Complex", new ProcOutputModel{});\n\n// \u53d8\u6001\u61d2\u4eba\u65b9\u5f0f\uff0c\u76f4\u63a5\u901a\u8fc7\u5b58\u50a8\u8fc7\u7a0b\u540d\u6267\u884c\nProcedureOutputResult<(List, List)> result = "proc_Complex".SqlProcedureOutput<(List, List)>(new ProcOutputModel{});\n')),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"// \u83b7\u53d6 OUTPUT \u53c2\u6570\u503c\nvar outputs = result.OutputValues;\n\n// \u83b7\u53d6 RETURN \u8fd4\u56de\u503c\nvar reval = result.ReturnValue;\n\n// \u83b7\u53d6\u8fd4\u56de\u7ed3\u679c\u96c6\nvar (list1,list2) = result.Result;\n")),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u5173\u4e8e\u5f02\u6b65")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u6bcf\u4e00\u4e2a\u6570\u636e\u5e93\u64cd\u4f5c\u90fd\u652f\u6301\u5f02\u6b65\u65b9\u5f0f\uff0c\u7531\u4e8e\u7bc7\u5e45\u6709\u9650\uff0c\u5c31\u4e0d\u5217\u4e3e\u5f02\u6b65\u65b9\u5f0f\u4e86\u3002"))),(0,i.kt)("h2",{id:"9133-\u5173\u4e8e-dbparameter"},"9.13.3 \u5173\u4e8e ",(0,i.kt)("inlineCode",{parentName:"h2"},"[DbParameter]")),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"[DbParameter]")," \u7279\u6027\u662f\u7528\u6765\u6807\u6ce8 ",(0,i.kt)("inlineCode",{parentName:"p"},"Sql"),"\uff0c",(0,i.kt)("inlineCode",{parentName:"p"},"\u51fd\u6570"),"\uff0c",(0,i.kt)("inlineCode",{parentName:"p"},"\u5b58\u50a8\u8fc7\u7a0b")," \u53c2\u6570\u7684\uff0c\u53ef\u914d\u7f6e\u5c5e\u6027\uff1a"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"Direction"),"\uff1a\u8bbe\u7f6e\u53c2\u6570\u65b9\u5411\uff0c",(0,i.kt)("inlineCode",{parentName:"li"},"ParameterDirection")," \u679a\u4e3e\u7c7b\u578b\uff0c\u9ed8\u8ba4 ",(0,i.kt)("inlineCode",{parentName:"li"},"ParameterDirection.Input")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"DbType"),"\uff1a\u8bbe\u7f6e\u53c2\u6570\u7c7b\u578b\uff0c",(0,i.kt)("inlineCode",{parentName:"li"},"DbType")," \u679a\u4e3e\u7c7b\u578b\uff0c\u65e0\u9ed8\u8ba4"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"Size"),"\uff1a\u8bbe\u7f6e\u53c2\u6570\u957f\u5ea6\u7684\uff0c",(0,i.kt)("inlineCode",{parentName:"li"},"int")," \u7c7b\u578b")),(0,i.kt)("p",null,"\u5176\u4e2d ",(0,i.kt)("inlineCode",{parentName:"p"},"Direction")," \u5c5e\u6027\u662f\u9ed8\u8ba4\u6784\u9020\u51fd\u6570\u53c2\u6570\u3002"),(0,i.kt)("h2",{id:"9134-\u5173\u4e8e-procedureoutputresult"},"9.13.4 \u5173\u4e8e ",(0,i.kt)("inlineCode",{parentName:"h2"},"ProcedureOutputResult")),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"ProcedureOutputResult")," \u548c ",(0,i.kt)("inlineCode",{parentName:"p"},"ProcedureOutputResult")," \u662f\u590d\u6742\u5b58\u50a8\u8fc7\u7a0b\u6267\u884c\u8fd4\u56de\u6a21\u578b\u7c7b\uff0c\u6709\u4ee5\u4e0b\u5c5e\u6027\uff1a"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"OutputValues"),"\uff1a\u591a\u4e2a\u8f93\u51fa\u503c\uff0c",(0,i.kt)("inlineCode",{parentName:"li"},"ProcedureOutputValue")," \u7c7b\u578b"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"ReturnValue"),"\uff1a\u8fd4\u56de\u503c\uff0c",(0,i.kt)("inlineCode",{parentName:"li"},"object")," \u7c7b\u578b"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"Result"),"\uff1a\u7ed3\u679c\u96c6\uff0c\u975e\u6cdb\u578b\u7248\u672c\u662f ",(0,i.kt)("inlineCode",{parentName:"li"},"DataSet"),"\u7c7b\u578b\uff0c\u5426\u5219\u662f \u6cdb\u578b\u7c7b\u578b")),(0,i.kt)("h2",{id:"9135-\u5b58\u50a8\u8fc7\u7a0b\u53c2\u6570"},"9.13.5 \u5b58\u50a8\u8fc7\u7a0b\u53c2\u6570"),(0,i.kt)("p",null,"\u6240\u6709 ",(0,i.kt)("inlineCode",{parentName:"p"},"sql")," \u53c2\u6570\u90fd\u652f\u6301\u56db\u79cd\u65b9\u5f0f\uff1a"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"DbParameter[]"),"\uff1a\u6570\u7ec4\u7c7b\u578b"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"new {}"),"\uff1a\u533f\u540d\u7c7b\u578b"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"new Class{}"),"\uff1a\u5f3a\u7c7b\u578b\u7c7b\u578b\uff08\u652f\u6301\u590d\u6742\u5b58\u50a8\u8fc7\u7a0b\u53c2\u6570\uff09"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"Dictionary")," \u7c7b\u578b")),(0,i.kt)("h2",{id:"9136-\u53cd\u9988\u4e0e\u5efa\u8bae"},"9.13.6 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,i.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}v.isMDXComponent=!0},6010:function(e,t,n){function r(e){var t,n,a="";if("string"==typeof e||"number"==typeof e)a+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var o=a.createContext({}),l=function(e){var t=a.useContext(o),n=t;return e&&(n="function"==typeof e?e(t):p(p({},t),e)),n},d=function(e){var t=l(e.components);return a.createElement(o.Provider,{value:t},e.children)},c={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},u=a.forwardRef((function(e,t){var n=e.components,i=e.mdxType,r=e.originalType,o=e.parentName,d=s(e,["components","mdxType","originalType","parentName"]),u=l(n),m=i,k=u["".concat(o,".").concat(m)]||u[m]||c[m]||r;return n?a.createElement(k,p(p({ref:t},d),{},{components:n})):a.createElement(k,p({ref:t},d))}));function m(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var r=n.length,p=new Array(r);p[0]=u;var s={};for(var o in t)hasOwnProperty.call(t,o)&&(s[o]=t[o]);s.originalType=e,s.mdxType="string"==typeof e?e:i,p[1]=s;for(var l=2;l=0&&r<=l&&i<=s&&a>=0)||(t.scrollIntoView({block:"center",behavior:"smooth"}),t.classList.add(o),setTimeout((function(){return t.classList.remove(o)}),2e3))}),150))},b=function(e){var t,n=null;switch(e.key){case"ArrowRight":var a=C.indexOf(e.target)+1;n=C[a]||C[0];break;case"ArrowLeft":var i=C.indexOf(e.target)-1;n=C[i]||C[C.length-1]}null==(t=n)||t.focus()};return a.createElement("div",{className:"tabs-container"},a.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,p.Z)("tabs",{"tabs--block":i},u)},k.map((function(e){var t=e.value,n=e.label;return a.createElement("li",{role:"tab",tabIndex:f===t?0:-1,"aria-selected":f===t,className:(0,p.Z)("tabs__item",s,{"tabs__item--active":f===t}),key:t,ref:function(e){return C.push(e)},onKeyDown:b,onFocus:A,onClick:A},null!=n?n:t)}))),n?(0,a.cloneElement)(m.filter((function(e){return e.props.value===f}))[0],{className:"margin-vert--md"}):a.createElement("div",{className:"margin-vert--md"},m.map((function(e,t){return(0,a.cloneElement)(e,{key:t,hidden:e.props.value!==f})}))))}},9443:function(e,t,n){var a=(0,n(7294).createContext)(void 0);t.Z=a},2133:function(e,t,n){n.r(t),n.d(t,{frontMatter:function(){return l},contentTitle:function(){return d},metadata:function(){return c},toc:function(){return u},default:function(){return k}});var a=n(7462),i=n(3366),r=(n(7294),n(3905)),p=n(5064),s=n(8215),o=["components"],l={id:"http",title:"19. \u8fdc\u7a0b\u8bf7\u6c42",sidebar_label:"19. \u8fdc\u7a0b\u8bf7\u6c42 (HttpClient)"},d=void 0,c={unversionedId:"http",id:"http",isDocsHomePage:!1,title:"19. \u8fdc\u7a0b\u8bf7\u6c42",description:"\u4ee5\u4e0b\u5185\u5bb9\u4ec5\u9650 Furion 1.16.0 + \u7248\u672c\u4f7f\u7528\u3002",source:"@site/docs/http.mdx",sourceDirName:".",slug:"/http",permalink:"/furion/docs/http",editUrl:"https://gitee.com/dotnetchina/Furion/tree/master/handbook/docs/http.mdx",tags:[],version:"current",lastUpdatedBy:"\u767e\u5c0f\u50e7",lastUpdatedAt:1629885994,formattedLastUpdatedAt:"8/25/2021",frontMatter:{id:"http",title:"19. \u8fdc\u7a0b\u8bf7\u6c42",sidebar_label:"19. \u8fdc\u7a0b\u8bf7\u6c42 (HttpClient)"},sidebar:"docs",previous:{title:"18. \u65e5\u5fd7\u8bb0\u5f55",permalink:"/furion/docs/logging"},next:{title:"20. \u6570\u636e\u52a0\u89e3\u5bc6",permalink:"/furion/docs/encryption"}},u=[{value:"19.1 \u5173\u4e8e\u8fdc\u7a0b\u8bf7\u6c42",id:"191-\u5173\u4e8e\u8fdc\u7a0b\u8bf7\u6c42",children:[]},{value:"19.2 \u8fdc\u7a0b\u8bf7\u6c42\u7684\u4f5c\u7528",id:"192-\u8fdc\u7a0b\u8bf7\u6c42\u7684\u4f5c\u7528",children:[]},{value:"19.3 \u57fa\u7840\u4f7f\u7528",id:"193-\u57fa\u7840\u4f7f\u7528",children:[{value:"19.3.1 \u6ce8\u518c\u670d\u52a1",id:"1931-\u6ce8\u518c\u670d\u52a1",children:[]},{value:"19.3.2 \u4f7f\u7528\u65b9\u5f0f",id:"1932-\u4f7f\u7528\u65b9\u5f0f",children:[]}]},{value:"19.4 \u5b57\u7b26\u4e32\u65b9\u5f0f\u4f7f\u7528\u793a\u4f8b",id:"194-\u5b57\u7b26\u4e32\u65b9\u5f0f\u4f7f\u7528\u793a\u4f8b",children:[{value:"19.4.1 \u5185\u7f6e\u8bf7\u6c42\u65b9\u5f0f",id:"1941-\u5185\u7f6e\u8bf7\u6c42\u65b9\u5f0f",children:[]},{value:"19.4.2 \u8bbe\u7f6e\u8bf7\u6c42\u5730\u5740",id:"1942-\u8bbe\u7f6e\u8bf7\u6c42\u5730\u5740",children:[]},{value:"19.4.3 \u8bbe\u7f6e\u8bf7\u6c42\u65b9\u5f0f",id:"1943-\u8bbe\u7f6e\u8bf7\u6c42\u65b9\u5f0f",children:[]},{value:"19.4.4 \u8bbe\u7f6e\u5730\u5740\u6a21\u677f",id:"1944-\u8bbe\u7f6e\u5730\u5740\u6a21\u677f",children:[]},{value:"19.4.5 \u8bbe\u7f6e\u8bf7\u6c42\u62a5\u6587\u5934",id:"1945-\u8bbe\u7f6e\u8bf7\u6c42\u62a5\u6587\u5934",children:[]},{value:"19.4.6 \u8bbe\u7f6e URL \u5730\u5740\u53c2\u6570",id:"1946-\u8bbe\u7f6e-url-\u5730\u5740\u53c2\u6570",children:[]},{value:"19.4.7 \u8bbe\u7f6e\u8bf7\u6c42\u5ba2\u6237\u7aef",id:"1947-\u8bbe\u7f6e\u8bf7\u6c42\u5ba2\u6237\u7aef",children:[]},{value:"19.4.8 \u8bbe\u7f6e Body \u53c2\u6570",id:"1948-\u8bbe\u7f6e-body-\u53c2\u6570",children:[]},{value:"19.4.9 \u8bbe\u7f6e Content-Type",id:"1949-\u8bbe\u7f6e-content-type",children:[]},{value:"19.4.10 \u8bbe\u7f6e\u5185\u5bb9\u7f16\u7801",id:"19410-\u8bbe\u7f6e\u5185\u5bb9\u7f16\u7801",children:[]},{value:"19.4.11 \u8bbe\u7f6e JSON \u5e8f\u5217\u5316\u63d0\u4f9b\u7a0b\u5e8f",id:"19411-\u8bbe\u7f6e-json-\u5e8f\u5217\u5316\u63d0\u4f9b\u7a0b\u5e8f",children:[]},{value:"19.4.12 \u542f\u7528 Body \u53c2\u6570\u9a8c\u8bc1",id:"19412-\u542f\u7528-body-\u53c2\u6570\u9a8c\u8bc1",children:[]},{value:"19.4.13 \u8bf7\u6c42\u62e6\u622a",id:"19413-\u8bf7\u6c42\u62e6\u622a",children:[]},{value:"19.4.14 HttpClient \u62e6\u622a",id:"19414-httpclient-\u62e6\u622a",children:[]},{value:"19.4.15 \u6210\u529f\u8bf7\u6c42\u62e6\u622a",id:"19415-\u6210\u529f\u8bf7\u6c42\u62e6\u622a",children:[]},{value:"19.4.16 \u8bf7\u6c42\u5f02\u5e38\u62e6\u622a",id:"19416-\u8bf7\u6c42\u5f02\u5e38\u62e6\u622a",children:[]},{value:"19.4.17 \u5404\u79cd\u8fd4\u56de\u503c\u5904\u7406",id:"19417-\u5404\u79cd\u8fd4\u56de\u503c\u5904\u7406",children:[]},{value:"19.4.18 \u8bbe\u7f6e Byte[] \u7c7b\u578b",id:"19418-\u8bbe\u7f6e-byte-\u7c7b\u578b",children:[]},{value:"19.4.19 \u8bbe\u7f6e IServiceProvider",id:"19419-\u8bbe\u7f6e-iserviceprovider",children:[]},{value:"19.4.20 \u8bbe\u7f6e Timeout \u8d85\u65f6\u65f6\u95f4",id:"19420-\u8bbe\u7f6e-timeout-\u8d85\u65f6\u65f6\u95f4",children:[]},{value:"19.4.21 \u652f\u6301\u6a21\u677f\u914d\u7f6e",id:"19421-\u652f\u6301\u6a21\u677f\u914d\u7f6e",children:[]},{value:"19.4.22 \u91cd\u8bd5\u7b56\u7565",id:"19422-\u91cd\u8bd5\u7b56\u7565",children:[]}]},{value:"19.5 IHttpDispatchProxy \u4ee3\u7406\u65b9\u5f0f",id:"195-ihttpdispatchproxy-\u4ee3\u7406\u65b9\u5f0f",children:[{value:"19.5.1 \u652f\u6301\u591a\u79cd\u4ee3\u7406\u65b9\u5f0f",id:"1951-\u652f\u6301\u591a\u79cd\u4ee3\u7406\u65b9\u5f0f",children:[]},{value:"19.5.2 \u8bbe\u7f6e\u5730\u5740\u6a21\u677f",id:"1952-\u8bbe\u7f6e\u5730\u5740\u6a21\u677f",children:[]},{value:"19.5.3 \u8bbe\u7f6e\u8bf7\u6c42\u62a5\u6587\u5934",id:"1953-\u8bbe\u7f6e\u8bf7\u6c42\u62a5\u6587\u5934",children:[]},{value:"19.5.4 \u8bbe\u7f6e URL \u5730\u5740\u53c2\u6570",id:"1954-\u8bbe\u7f6e-url-\u5730\u5740\u53c2\u6570",children:[]},{value:"19.5.5 \u8bbe\u7f6e\u8bf7\u6c42\u5ba2\u6237\u7aef",id:"1955-\u8bbe\u7f6e\u8bf7\u6c42\u5ba2\u6237\u7aef",children:[]},{value:"19.5.6 \u8bbe\u7f6e Body \u53c2\u6570",id:"1956-\u8bbe\u7f6e-body-\u53c2\u6570",children:[]},{value:"19.5.7 \u8bbe\u7f6e JSON \u5e8f\u5217\u5316\u63d0\u4f9b\u7a0b\u5e8f",id:"1957-\u8bbe\u7f6e-json-\u5e8f\u5217\u5316\u63d0\u4f9b\u7a0b\u5e8f",children:[]},{value:"19.5.8 \u53c2\u6570\u9a8c\u8bc1",id:"1958-\u53c2\u6570\u9a8c\u8bc1",children:[]},{value:"19.5.9 \u8bf7\u6c42\u62e6\u622a",id:"1959-\u8bf7\u6c42\u62e6\u622a",children:[]},{value:"19.5.10 HttpClient \u62e6\u622a",id:"19510-httpclient-\u62e6\u622a",children:[]},{value:"19.5.11 \u6210\u529f\u8bf7\u6c42\u62e6\u622a",id:"19511-\u6210\u529f\u8bf7\u6c42\u62e6\u622a",children:[]},{value:"19.5.12 \u8bf7\u6c42\u5f02\u5e38\u62e6\u622a",id:"19512-\u8bf7\u6c42\u5f02\u5e38\u62e6\u622a",children:[]},{value:"19.5.13 \u5404\u79cd\u8fd4\u56de\u503c\u5904\u7406",id:"19513-\u5404\u79cd\u8fd4\u56de\u503c\u5904\u7406",children:[]},{value:"19.5.14 \u8bbe\u7f6e Byte[] \u7c7b\u578b",id:"19514-\u8bbe\u7f6e-byte-\u7c7b\u578b",children:[]},{value:"19.5.15 \u8bbe\u7f6e Timeout \u8d85\u65f6\u65f6\u95f4",id:"19515-\u8bbe\u7f6e-timeout-\u8d85\u65f6\u65f6\u95f4",children:[]},{value:"19.4.20 \u8bbe\u7f6e Timeout \u8d85\u65f6\u65f6\u95f4",id:"19420-\u8bbe\u7f6e-timeout-\u8d85\u65f6\u65f6\u95f4-1",children:[]},{value:"19.5.16 \u652f\u6301\u6a21\u677f\u914d\u7f6e",id:"19516-\u652f\u6301\u6a21\u677f\u914d\u7f6e",children:[]},{value:"19.5.17 \u91cd\u8bd5\u7b56\u7565",id:"19517-\u91cd\u8bd5\u7b56\u7565",children:[]}]},{value:"19.6 \u591a\u4e2a\u8bf7\u6c42\u5ba2\u6237\u7aef\u914d\u7f6e",id:"196-\u591a\u4e2a\u8bf7\u6c42\u5ba2\u6237\u7aef\u914d\u7f6e",children:[]},{value:"19.7 \u5173\u4e8e\u8fd4\u56de\u503c\u975e 200 \u65f6\u5ffd\u7565 Http\u72b6\u6001",id:"197-\u5173\u4e8e\u8fd4\u56de\u503c\u975e-200-\u65f6\u5ffd\u7565-http\u72b6\u6001",children:[]},{value:"19.8 \u5173\u4e8e\u540c\u6b65\u8bf7\u6c42",id:"198-\u5173\u4e8e\u540c\u6b65\u8bf7\u6c42",children:[]},{value:"19.9 \u591a\u7ebf\u7a0b\u5171\u4eab\u4f5c\u7528\u57df",id:"199-\u591a\u7ebf\u7a0b\u5171\u4eab\u4f5c\u7528\u57df",children:[]},{value:"19.10 \u9759\u6001 Default \u65b9\u5f0f\u6784\u5efa",id:"1910-\u9759\u6001-default-\u65b9\u5f0f\u6784\u5efa",children:[]},{value:"19.11 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"1911-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],m={toc:u};function k(e){var t=e.components,n=(0,i.Z)(e,o);return(0,r.kt)("wrapper",(0,a.Z)({},m,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7248\u672c\u8bf4\u660e")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u4ee5\u4e0b\u5185\u5bb9\u4ec5\u9650 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion 1.16.0 +")," \u7248\u672c\u4f7f\u7528\u3002"))),(0,r.kt)("h2",{id:"191-\u5173\u4e8e\u8fdc\u7a0b\u8bf7\u6c42"},"19.1 \u5173\u4e8e\u8fdc\u7a0b\u8bf7\u6c42"),(0,r.kt)("p",null,"\u5728\u4e92\u8054\u7f51\u5927\u6570\u636e\u7684\u9a71\u52a8\u4e0b\uff0c\u5e73\u53f0\u6216\u7cfb\u7edf\u514d\u4e0d\u4e86\u9700\u8981\u548c\u7b2c\u4e09\u65b9\u8fdb\u884c\u6570\u636e\u4ea4\u4e92\uff0c\u800c\u7b2c\u4e09\u65b9\u5f80\u5f80\u63d0\u4f9b\u4e86 ",(0,r.kt)("inlineCode",{parentName:"p"},"RESTful API")," \u63a5\u53e3\u89c4\u8303\uff0c\u8fd9\u4e2a\u65f6\u5019\u5c31\u9700\u8981\u901a\u8fc7 ",(0,r.kt)("inlineCode",{parentName:"p"},"Http")," \u8bf7\u6c42\u7b2c\u4e09\u65b9\u63a5\u53e3\u8fdb\u884c\u6570\u636e\u4f20\u8f93\u4ea4\u4e92\u3002"),(0,r.kt)("p",null,"\u4e5f\u5c31\u662f\u672c\u7ae0\u8282\u6240\u8bf4\u7684\u8fdc\u7a0b\u8bf7\u6c42\u3002"),(0,r.kt)("h2",{id:"192-\u8fdc\u7a0b\u8bf7\u6c42\u7684\u4f5c\u7528"},"19.2 \u8fdc\u7a0b\u8bf7\u6c42\u7684\u4f5c\u7528"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u8de8\u7cfb\u7edf\u3001\u8de8\u8bbe\u5907\u901a\u4fe1"),(0,r.kt)("li",{parentName:"ul"},"\u5b9e\u73b0\u591a\u4e2a\u7cfb\u7edf\u6570\u636e\u4f20\u8f93\u4ea4\u4e92"),(0,r.kt)("li",{parentName:"ul"},"\u8de8\u7f16\u7a0b\u8bed\u8a00\u534f\u540c\u5f00\u53d1")),(0,r.kt)("h2",{id:"193-\u57fa\u7840\u4f7f\u7528"},"19.3 \u57fa\u7840\u4f7f\u7528"),(0,r.kt)("h3",{id:"1931-\u6ce8\u518c\u670d\u52a1"},"19.3.1 \u6ce8\u518c\u670d\u52a1"),(0,r.kt)("p",null,"\u4f7f\u7528\u4e4b\u524d\u9700\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Startup.cs")," \u6ce8\u518c ",(0,r.kt)("inlineCode",{parentName:"p"},"\u8fdc\u7a0b\u8bf7\u6c42\u670d\u52a1")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{3}","{3}":!0},"public void ConfigureServices(IServiceCollection services)\n{\n services.AddRemoteRequest();\n}\n")),(0,r.kt)("h3",{id:"1932-\u4f7f\u7528\u65b9\u5f0f"},"19.3.2 \u4f7f\u7528\u65b9\u5f0f"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u63d0\u4f9b\u4e24\u79cd\u65b9\u5f0f\u8bbf\u95ee\u53d1\u9001\u8fdc\u7a0b\u8bf7\u6c42\u3002"),(0,r.kt)(p.Z,{defaultValue:"IHttpDispatchProxy \u4ee3\u7406\u65b9\u5f0f",values:[{label:"IHttpDispatchProxy \u4ee3\u7406\u65b9\u5f0f",value:"IHttpDispatchProxy \u4ee3\u7406\u65b9\u5f0f"},{label:"\u5b57\u7b26\u4e32\u62d3\u5c55\u65b9\u5f0f",value:"\u5b57\u7b26\u4e32\u62d3\u5c55\u65b9\u5f0f"}],mdxType:"Tabs"},(0,r.kt)(s.Z,{value:"IHttpDispatchProxy \u4ee3\u7406\u65b9\u5f0f",mdxType:"TabItem"},(0,r.kt)("p",null,"\u5b9a\u4e49\u4ee3\u7406\u8bf7\u6c42\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"\u63a5\u53e3")," \u5e76\u7ee7\u627f ",(0,r.kt)("inlineCode",{parentName:"p"},"IHttpDispatchProxy")," \u63a5\u53e3"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,3,6,9,12,15,18}","{1,3,6,9,12,15,18}":!0},'public interface IHttp : IHttpDispatchProxy\n{\n [Get("https://www.furion.pro/get")]\n Task GetXXXAsync();\n\n [Post("https://www.furion.pro/post")]\n Task PostXXXAsync();\n\n [Put("https://www.furion.pro/put")]\n Task PutXXXAsync();\n\n [Delete("https://www.furion.pro/delete")]\n Task DeleteXXXAsync();\n\n [Patch("https://www.furion.pro/patch")]\n Task PatchXXXAsync();\n\n [Head("https://www.furion.pro/head")]\n Task HeadXXXAsync();\n}\n')),(0,r.kt)("p",null,"\u901a\u8fc7\u6784\u9020\u51fd\u6570\u6ce8\u5165 ",(0,r.kt)("inlineCode",{parentName:"p"},"\u63a5\u53e3")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{9,16}","{9,16}":!0},"using Furion.DynamicApiController;\nusing Furion.RemoteRequest.Extensions;\n\nnamespace Furion.Application\n{\n public class RemoteRequestService : IDynamicApiController\n {\n private readonly IHttp _http;\n public RemoteRequestService(IHttp http)\n {\n _http = http;\n }\n\n public async Task GetData()\n {\n var data = await _http.GetXXXAsync();\n }\n }\n}\n"))),(0,r.kt)(s.Z,{value:"\u5b57\u7b26\u4e32\u62d3\u5c55\u65b9\u5f0f",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'var response = await "https://www.furion.pro/get".GetAsync();\n\nvar response = await "https://www.furion.pro/post".PostAsync();\n\nvar response = await "https://www.furion.pro/put".PutAsync();\n\nvar response = await "https://www.furion.pro/delete".DeleteAsync();\n\nvar response = await "https://www.furion.pro/patch".PatchAsync();\n\nvar response = await "https://www.furion.pro/head".HeadAsync();\n')),(0,r.kt)("p",null,"\u9700\u5f15\u5165 ",(0,r.kt)("inlineCode",{parentName:"p"},"using Furion.RemoteRequest.Extensions")," \u547d\u540d\u7a7a\u95f4\u3002"))),(0,r.kt)("h2",{id:"194-\u5b57\u7b26\u4e32\u65b9\u5f0f\u4f7f\u7528\u793a\u4f8b"},"19.4 \u5b57\u7b26\u4e32\u65b9\u5f0f\u4f7f\u7528\u793a\u4f8b"),(0,r.kt)("h3",{id:"1941-\u5185\u7f6e\u8bf7\u6c42\u65b9\u5f0f"},"19.4.1 \u5185\u7f6e\u8bf7\u6c42\u65b9\u5f0f"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'// \u53d1\u9001 Get \u8bf7\u6c42\nvar response = await "https://www.furion.pro/get".GetAsync();\n\n// \u53d1\u9001 Post \u8bf7\u6c42\nvar response = await "https://www.furion.pro/post".PostAsync();\n\n// \u53d1\u9001 Put \u8bf7\u6c42\nvar response = await "https://www.furion.pro/put".PutAsync();\n\n// \u53d1\u9001 Delete \u8bf7\u6c42\nvar response = await "https://www.furion.pro/delete".DeleteAsync();\n\n// \u53d1\u9001 Patch \u8bf7\u6c42\nvar response = await "https://www.furion.pro/patch".PatchAsync();\n\n// \u53d1\u9001 Head \u8bf7\u6c42\nvar response = await "https://www.furion.pro/head".HeadAsync();\n\n// \u624b\u52a8\u6307\u5b9a\u53d1\u9001\u7279\u5b9a\u8bf7\u6c42\nvar response = await "https://www.furion.pro/post".SetHttpMethod(HttpMethod.Post)\n .SendAsync();\n')),(0,r.kt)("h3",{id:"1942-\u8bbe\u7f6e\u8bf7\u6c42\u5730\u5740"},"19.4.2 \u8bbe\u7f6e\u8bf7\u6c42\u5730\u5740"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'await "".SetRequestUrl("https://www.furion.pro/");\n')),(0,r.kt)("h3",{id:"1943-\u8bbe\u7f6e\u8bf7\u6c42\u65b9\u5f0f"},"19.4.3 \u8bbe\u7f6e\u8bf7\u6c42\u65b9\u5f0f"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'await "https://www.furion.pro/post".SetHttpMethod(HttpMethod.Get);\n')),(0,r.kt)("h3",{id:"1944-\u8bbe\u7f6e\u5730\u5740\u6a21\u677f"},"19.4.4 \u8bbe\u7f6e\u5730\u5740\u6a21\u677f"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'// \u5b57\u5178\u65b9\u5f0f\nawait "https://www.furion.pro/post/{id}?name={name}&id={p.Id}".SetTemplates(new Dictionary {\n { "id", 1 },\n { "name", "Furion" },\n { "p.Id", new Person { Id = 1 } }\n});\n\n// \u5bf9\u8c61/\u533f\u540d\u5bf9\u8c61\u65b9\u5f0f\nawait "https://www.furion.pro/post/{id}?name={name}".SetTemplates(new {\n id = 1,\n name = "Furion"\n});\n')),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"\u6ce8\uff1a\u6a21\u677f\u66ff\u6362\u533a\u5206\u5927\u5c0f\u5199\u3002")),(0,r.kt)("h3",{id:"1945-\u8bbe\u7f6e\u8bf7\u6c42\u62a5\u6587\u5934"},"19.4.5 \u8bbe\u7f6e\u8bf7\u6c42\u62a5\u6587\u5934"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'// \u5b57\u5178\u65b9\u5f0f\nawait "https://www.furion.pro/post".SetHeaders(new Dictionary {\n { "Authorization", "Bearer \u4f60\u7684token"},\n { "X-Authorization", "Bearer \u4f60\u7684\u5237\u65b0token"}\n});\n\n// \u5bf9\u8c61/\u533f\u540d\u5bf9\u8c61\u65b9\u5f0f\nawait "https://www.furion.pro/post".SetHeaders(new {\n Authorization = "Bearer \u4f60\u7684token"\n});\n')),(0,r.kt)("h3",{id:"1946-\u8bbe\u7f6e-url-\u5730\u5740\u53c2\u6570"},"19.4.6 \u8bbe\u7f6e ",(0,r.kt)("inlineCode",{parentName:"h3"},"URL")," \u5730\u5740\u53c2\u6570"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'// \u5b57\u5178\u65b9\u5f0f\nawait "https://www.furion.pro/get".SetQueries(new Dictionary {\n { "id", 1 },\n { "name", "Furion"}\n});\n\n// \u5bf9\u8c61/\u533f\u540d\u5bf9\u8c61\u65b9\u5f0f\nawait "https://www.furion.pro/get".SetQueries(new {\n id = 1,\n name = "Furion"\n});\n')),(0,r.kt)("p",null,"\u6700\u7ec8\u8f93\u51fa\u683c\u5f0f\u4e3a\uff1a",(0,r.kt)("inlineCode",{parentName:"p"},"https://www.furion.pro/get?id=1&name=Furion"),"\u3002"),(0,r.kt)("h3",{id:"1947-\u8bbe\u7f6e\u8bf7\u6c42\u5ba2\u6237\u7aef"},"19.4.7 \u8bbe\u7f6e\u8bf7\u6c42\u5ba2\u6237\u7aef"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,3-4,12}","{1,3-4,12}":!0},'services.AddRemoteRequest(options=>\n{\n // \u914d\u7f6e Github \u57fa\u672c\u4fe1\u606f\n options.AddHttpClient("github", c =>\n {\n c.BaseAddress = new Uri("https://api.github.com/");\n c.DefaultRequestHeaders.Add("Accept", "application/vnd.github.v3+json");\n c.DefaultRequestHeaders.Add("User-Agent", "HttpClientFactory-Sample");\n });\n});\n\nawait "get".SetClient("github");\n')),(0,r.kt)("p",null,"\u6700\u7ec8\u751f\u6210\u8bf7\u6c42\u5730\u5740\u4e3a\uff1a",(0,r.kt)("inlineCode",{parentName:"p"},"https://api.github.com/get"),"\u3002"),(0,r.kt)("h3",{id:"1948-\u8bbe\u7f6e-body-\u53c2\u6570"},"19.4.8 \u8bbe\u7f6e ",(0,r.kt)("inlineCode",{parentName:"h3"},"Body")," \u53c2\u6570"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'// \u4f20\u5165\u5bf9\u8c61\nawait "https://www.furion.pro/api/user/add".SetBody(new User { Id = 1, Name = "Furion" });\n\n// \u914d\u7f6e Content-Type\nawait "https://www.furion.pro/api/user/add".SetBody(new { Id = 1, Name = "Furion" }, "application/json");\n\n// \u8bbe\u7f6e Encoding \u7f16\u7801\nawait "https://www.furion.pro/api/user/add".SetBody(new User { Id = 1, Name = "Furion" }, "application/json", Encoding.UTF8);\n\n// \u5904\u7406 application/x-www-form-urlencoded \u8bf7\u6c42\nawait "https://www.furion.pro/api/user/add".SetBody(new Dictionary {\n { "Id", 1 },\n { "Name", "Furion"}\n}, "application/x-www-form-urlencoded");\n\n// \u5904\u7406 application/xml\u3001text/xml\nawait "https://www.furion.pro/api/user/add".SetBody("somevalue", "application/xml");\n')),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u6ce8\u610f")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u5982\u679c\u8bf7\u6c42 ",(0,r.kt)("inlineCode",{parentName:"p"},"Content-Type")," \u8bbe\u7f6e\u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"application/x-www-form-urlencoded")," \u7c7b\u578b\uff0c\u90a3\u4e48\u5e95\u5c42\u81ea\u52a8\u5c06\u6570\u636e\u8fdb\u884c ",(0,r.kt)("inlineCode",{parentName:"p"},"UrlEncode")," \u7f16\u7801\u5904\u7406\uff0c\u65e0\u9700\u5916\u90e8\u5904\u7406\u3002"))),(0,r.kt)("h3",{id:"1949-\u8bbe\u7f6e-content-type"},"19.4.9 \u8bbe\u7f6e ",(0,r.kt)("inlineCode",{parentName:"h3"},"Content-Type")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'await "https://www.furion.pro/post".SetContentType("application/json");\n')),(0,r.kt)("h3",{id:"19410-\u8bbe\u7f6e\u5185\u5bb9\u7f16\u7801"},"19.4.10 \u8bbe\u7f6e\u5185\u5bb9\u7f16\u7801"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'await "https://www.furion.pro/post".SetContentEncoding(Encoding.UTF8);\n')),(0,r.kt)("h3",{id:"19411-\u8bbe\u7f6e-json-\u5e8f\u5217\u5316\u63d0\u4f9b\u7a0b\u5e8f"},"19.4.11 \u8bbe\u7f6e ",(0,r.kt)("inlineCode",{parentName:"h3"},"JSON")," \u5e8f\u5217\u5316\u63d0\u4f9b\u7a0b\u5e8f"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u9ed8\u8ba4\u60c5\u51b5\u4e0b\u91c7\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"System.Text.Json")," \u8fdb\u884c ",(0,r.kt)("inlineCode",{parentName:"p"},"JSON")," \u5e8f\u5217\u5316\u5904\u7406\uff0c\u5982\u9700\u8bbe\u7f6e\u7b2c\u4e09\u65b9 ",(0,r.kt)("inlineCode",{parentName:"p"},"JSON")," \u63d0\u4f9b\u5668\uff0c\u5219\u53ef\u4ee5\u901a\u8fc7\u4ee5\u4e0b\u914d\u7f6e\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'// \u6cdb\u578b\u65b9\u5f0f\nawait "https://www.furion.pro/api/user/add".SetJsonSerialization();\n\n// \u975e\u6cdb\u578b\u65b9\u5f0f\nawait "https://www.furion.pro/api/user/add".SetJsonSerialization(typeof(NewtonsoftJsonSerializerProvider));\n\n// \u6dfb\u52a0\u66f4\u591a\u914d\u7f6e\nawait "https://www.furion.pro/api/user/add".SetJsonSerialization(new JsonSerializerSettings {\n\n});\n')),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u5173\u4e8e ",(0,r.kt)("inlineCode",{parentName:"h5"},"JSON")," \u5e8f\u5217\u5316\u63d0\u4f9b\u5668")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u5982\u9700\u4e86\u89e3\u66f4\u591a ",(0,r.kt)("inlineCode",{parentName:"p"},"JSON")," \u5e8f\u5217\u5316\u77e5\u8bc6\u53ef\u67e5\u9605 ",(0,r.kt)("a",{parentName:"p",href:"json-serialization#2351-%E8%87%AA%E5%AE%9A%E4%B9%89%E5%BA%8F%E5%88%97%E5%8C%96%E6%8F%90%E4%BE%9B%E5%99%A8"},"23. JSON \u5e8f\u5217\u5316")," \u7ae0\u8282"))),(0,r.kt)("h3",{id:"19412-\u542f\u7528-body-\u53c2\u6570\u9a8c\u8bc1"},"19.4.12 \u542f\u7528 ",(0,r.kt)("inlineCode",{parentName:"h3"},"Body")," \u53c2\u6570\u9a8c\u8bc1"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'await "https://www.furion.pro/api/user/add".SetValidationState();\n\n// \u8bbe\u7f6e\u4e0d\u9a8c\u8bc1 null \u503c\nawait "https://www.furion.pro/api/user/add".SetValidationState(includeNull: true);\n')),(0,r.kt)("p",null,"\u652f\u6301\u7c7b\u4e2d ",(0,r.kt)("inlineCode",{parentName:"p"},"[Required]")," \u7b49\u5b8c\u6574\u6a21\u578b\u9a8c\u8bc1\u7279\u6027\u3002"),(0,r.kt)("h3",{id:"19413-\u8bf7\u6c42\u62e6\u622a"},"19.4.13 \u8bf7\u6c42\u62e6\u622a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'await "https://www.furion.pro/".OnRequesting(req => {\n // req \u4e3a HttpRequestMessage \u5bf9\u8c61\n // \u8ffd\u52a0\u66f4\u591a\u53c2\u6570\n req.AppendQueries(new Dictionary {\n { "access_token", "xxxx"}\n });\n});\n')),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"\u652f\u6301\u591a\u6b21\u62e6\u622a")),(0,r.kt)("h3",{id:"19414-httpclient-\u62e6\u622a"},"19.4.14 ",(0,r.kt)("inlineCode",{parentName:"h3"},"HttpClient")," \u62e6\u622a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'await "https://www.furion.pro/".OnClientCreating(client => {\n // client \u4e3a HttpClient \u5bf9\u8c61\n client.Timeout = 30000; // \u8bbe\u7f6e\u8d85\u65f6\u65f6\u95f4\n});\n')),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"\u652f\u6301\u591a\u6b21\u62e6\u622a")),(0,r.kt)("h3",{id:"19415-\u6210\u529f\u8bf7\u6c42\u62e6\u622a"},"19.4.15 \u6210\u529f\u8bf7\u6c42\u62e6\u622a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'await "https://www.furion.pro/".OnResponsing(res => {\n // res \u4e3a HttpResponseMessage \u5bf9\u8c61\n});\n')),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"\u652f\u6301\u591a\u6b21\u62e6\u622a")),(0,r.kt)("h3",{id:"19416-\u8bf7\u6c42\u5f02\u5e38\u62e6\u622a"},"19.4.16 \u8bf7\u6c42\u5f02\u5e38\u62e6\u622a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'await "https://www.furion.pro/".OnException((res,errors) => {\n // res \u4e3a HttpResponseMessage \u5bf9\u8c61\n});\n')),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"\u652f\u6301\u591a\u6b21\u62e6\u622a")),(0,r.kt)("h3",{id:"19417-\u5404\u79cd\u8fd4\u56de\u503c\u5904\u7406"},"19.4.17 \u5404\u79cd\u8fd4\u56de\u503c\u5904\u7406"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u8fdc\u7a0b\u8bf7\u6c42\u9ed8\u8ba4\u63d0\u4f9b\u56db\u79cd\u8fd4\u56de\u503c\u7c7b\u578b\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"HttpResponseMessage"),"\uff1a\u8bf7\u6c42\u54cd\u5e94\u6d88\u606f\u7c7b\u578b"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Stream"),"\uff1a\u6d41\u7c7b\u578b"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"T"),"\uff1a\u6cdb\u578b ",(0,r.kt)("inlineCode",{parentName:"li"},"T")," \u7c7b\u578b"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"String"),"\uff1a\u5b57\u7b26\u4e32\u7c7b\u578b\uff0c\u4e5f\u5c31\u662f\u76f4\u63a5\u5c06\u7f51\u7edc\u8bf7\u6c42\u7ed3\u679c\u5185\u5bb9\u5b57\u7b26\u4e32\u5316")),(0,r.kt)("p",null,"\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'// HttpResponseMessage\nvar res = await "https://www.furion.pro/".GetAsync();\n\n// Stream\nvar stream = await "https://www.furion.pro/".GetAsStreamAsync();\n\n// T\nvar user = await "https://www.furion.pro/".GetAsAsync();\n\n// String\nvar str = await "https://www.baidu.com".GetAsStringAsync();\n')),(0,r.kt)("h3",{id:"19418-\u8bbe\u7f6e-byte-\u7c7b\u578b"},"19.4.18 \u8bbe\u7f6e ",(0,r.kt)("inlineCode",{parentName:"h3"},"Byte[]")," \u7c7b\u578b"),(0,r.kt)("p",null,"\u6709\u65f6\u5019\u6211\u4eec\u9700\u8981\u4e0a\u4f20\u6587\u4ef6\uff0c\u9700\u8981\u8bbe\u7f6e ",(0,r.kt)("inlineCode",{parentName:"p"},"Content-Type")," \u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"multipart/form-data")," \u7c7b\u578b\uff0c\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'// bytes \u53ef\u4ee5\u901a\u8fc7 File.ReadAllBytes(\u6587\u4ef6\u8def\u5f84) \u83b7\u53d6\nvar res = await "https://www.furion.pro/upload".SetBody(new { id =1, name = "Furion"}, "multipart/form-data")\n .SetBodyBytes(("\u952e", bytes, "\u6587\u4ef6\u540d")).PostAsync();\n')),(0,r.kt)("h3",{id:"19419-\u8bbe\u7f6e-iserviceprovider"},"19.4.19 \u8bbe\u7f6e ",(0,r.kt)("inlineCode",{parentName:"h3"},"IServiceProvider")),(0,r.kt)("p",null,"\u6709\u65f6\u5019\u6211\u4eec\u9700\u8981\u6784\u5efa\u4e00\u4e2a\u4f5c\u7528\u57df\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"IServiceProvider"),"\uff0c\u8fd9\u65f6\u53ea\u9700\u8981\u8bbe\u7f6e\u5373\u53ef\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'var res = await "https://www.furion.pro/upload".SetRequestScoped(services);\n')),(0,r.kt)("h3",{id:"19420-\u8bbe\u7f6e-timeout-\u8d85\u65f6\u65f6\u95f4"},"19.4.20 \u8bbe\u7f6e ",(0,r.kt)("inlineCode",{parentName:"h3"},"Timeout")," \u8d85\u65f6\u65f6\u95f4"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'var res = await "https://www.furion.pro/upload".SetClientTimeout(10); // \u5355\u4f4d\u79d2\n')),(0,r.kt)("h3",{id:"19421-\u652f\u6301\u6a21\u677f\u914d\u7f6e"},"19.4.21 \u652f\u6301\u6a21\u677f\u914d\u7f6e"),(0,r.kt)("p",null,"\u6a21\u677f\u683c\u5f0f\u4e3a\uff1a",(0,r.kt)("inlineCode",{parentName:"p"},"#(\u914d\u7f6e\u8def\u5f84)")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'var res = await "#(Furion:Address)/upload".GetAsync();\n')),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json"},'{\n "Furion": {\n "Address": "https://www.furion.pro"\n }\n}\n')),(0,r.kt)("h3",{id:"19422-\u91cd\u8bd5\u7b56\u7565"},"19.4.22 \u91cd\u8bd5\u7b56\u7565"),(0,r.kt)("p",null,"\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion v2.18+")," \u7248\u672c\u652f\u6301\u914d\u7f6e\u91cd\u8bd5\u7b56\u7565\uff0c\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'var res = await "#(Furion:Address)/upload".SetRetryPolicy(3, 1000).GetAsync();\n')),(0,r.kt)("p",null,"\u4ee5\u4e0a\u4ee3\u7801\u8868\u793a\u8bf7\u6c42\u5931\u8d25\u91cd\u8bd5 ",(0,r.kt)("inlineCode",{parentName:"p"},"3")," \u6b21\uff0c\u6bcf\u6b21\u5ef6\u8fdf ",(0,r.kt)("inlineCode",{parentName:"p"},"1000ms")," \u3002"),(0,r.kt)("h2",{id:"195-ihttpdispatchproxy-\u4ee3\u7406\u65b9\u5f0f"},"19.5 ",(0,r.kt)("inlineCode",{parentName:"h2"},"IHttpDispatchProxy")," \u4ee3\u7406\u65b9\u5f0f"),(0,r.kt)("h3",{id:"1951-\u652f\u6301\u591a\u79cd\u4ee3\u7406\u65b9\u5f0f"},"19.5.1 \u652f\u6301\u591a\u79cd\u4ee3\u7406\u65b9\u5f0f"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'public interface IHttp : IHttpDispatchProxy\n{\n // \u53d1\u9001 Get \u8bf7\u6c42\n [Get("https://www.furion.pro/get")]\n Task GetXXXAsync();\n\n // \u53d1\u9001 Post \u8bf7\u6c42\n [Post("https://www.furion.pro/post")]\n Task PostXXXAsync();\n\n // \u53d1\u9001 Put \u8bf7\u6c42\n [Put("https://www.furion.pro/put")]\n Task PutXXXAsync();\n\n // \u53d1\u9001 Put \u8bf7\u6c42\n [Delete("https://www.furion.pro/delete")]\n Task DeleteXXXAsync();\n\n // \u53d1\u9001 Put \u8bf7\u6c42\n [Patch("https://www.furion.pro/patch")]\n Task PatchXXXAsync();\n\n // \u53d1\u9001 Head \u8bf7\u6c42\n [Head("https://www.furion.pro/head")]\n Task HeadXXXAsync();\n}\n')),(0,r.kt)("h3",{id:"1952-\u8bbe\u7f6e\u5730\u5740\u6a21\u677f"},"19.5.2 \u8bbe\u7f6e\u5730\u5740\u6a21\u677f"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'public interface IHttp : IHttpDispatchProxy\n{\n [Get("https://www.furion.pro/get/{id}?name={name}&number={p.PersonDetail.PhonNumber}")]\n Task GetXXXAsync(int id, string name, Person p);\n}\n')),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"\u6ce8\uff1a\u6a21\u677f\u66ff\u6362\u533a\u5206\u5927\u5c0f\u5199\u3002")),(0,r.kt)("h3",{id:"1953-\u8bbe\u7f6e\u8bf7\u6c42\u62a5\u6587\u5934"},"19.5.3 \u8bbe\u7f6e\u8bf7\u6c42\u62a5\u6587\u5934"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u8fdc\u7a0b\u8bf7\u6c42\u4ee3\u7406\u6a21\u5f0f\u63d0\u4f9b\u4e09\u79cd\u65b9\u5f0f\u8bbe\u7f6e\u8bf7\u6c42\u62a5\u6587\u5934\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u652f\u6301\u5728\u63a5\u53e3\u4e2d\u58f0\u660e"),(0,r.kt)("li",{parentName:"ul"},"\u652f\u6301\u5728\u65b9\u6cd5\u4e2d\u58f0\u660e"),(0,r.kt)("li",{parentName:"ul"},"\u652f\u6301\u5728\u53c2\u6570\u4e2d\u58f0\u660e")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1-2,5,9,12}","{1-2,5,9,12}":!0},'[Headers("key","value")]\n[Headers("key1","value2")] // \u8bbe\u7f6e\u591a\u4e2a\npublic interface IHttp : IHttpDispatchProxy\n{\n [Get("https://www.furion.pro/get/{id}?name={name}"), Headers("key2","value2")]\n Task GetXXXAsync(int id, string name);\n\n [Get("https://www.furion.pro")]\n Task GetXXX2Async(int id, [Headers]string token = default);\n\n [Get("https://www.furion.pro")]\n Task GetXXX2Async(int id, string name, [Headers("\u522b\u540d")]string token = default);\n}\n')),(0,r.kt)("h3",{id:"1954-\u8bbe\u7f6e-url-\u5730\u5740\u53c2\u6570"},"19.5.4 \u8bbe\u7f6e ",(0,r.kt)("inlineCode",{parentName:"h3"},"URL")," \u5730\u5740\u53c2\u6570"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{4,7}","{4,7}":!0},'public interface IHttp : IHttpDispatchProxy\n{\n [Get("https://www.furion.pro/get")]\n Task GetXXXAsync([QueryString]int id, [QueryString]string name);\n\n [Get("https://www.furion.pro/get")]\n Task GetXXXAsync([QueryString]int id, [QueryString("\u522b\u540d")]string name);\n}\n')),(0,r.kt)("p",null,"\u6700\u7ec8\u8f93\u51fa\u683c\u5f0f\u4e3a\uff1a",(0,r.kt)("inlineCode",{parentName:"p"},"https://www.furion.pro/get?id=1&name=Furion"),"\u3002"),(0,r.kt)("h3",{id:"1955-\u8bbe\u7f6e\u8bf7\u6c42\u5ba2\u6237\u7aef"},"19.5.5 \u8bbe\u7f6e\u8bf7\u6c42\u5ba2\u6237\u7aef"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,3-4,14}","{1,3-4,14}":!0},'services.AddRemoteRequest(options=>\n{\n // \u914d\u7f6e Github \u57fa\u672c\u4fe1\u606f\n options.AddHttpClient("github", c =>\n {\n c.BaseAddress = new Uri("https://api.github.com/");\n c.DefaultRequestHeaders.Add("Accept", "application/vnd.github.v3+json");\n c.DefaultRequestHeaders.Add("User-Agent", "HttpClientFactory-Sample");\n });\n});\n\npublic interface IHttp : IHttpDispatchProxy\n{\n [Get("get"), Client("github")]\n Task GetXXXAsync();\n}\n')),(0,r.kt)("p",null,"\u6700\u7ec8\u751f\u6210\u8bf7\u6c42\u5730\u5740\u4e3a\uff1a",(0,r.kt)("inlineCode",{parentName:"p"},"https://api.github.com/get"),"\u3002"),(0,r.kt)("h3",{id:"1956-\u8bbe\u7f6e-body-\u53c2\u6570"},"19.5.6 \u8bbe\u7f6e ",(0,r.kt)("inlineCode",{parentName:"h3"},"Body")," \u53c2\u6570"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{3,6,9}","{3,6,9}":!0},'public interface IHttp : IHttpDispatchProxy\n{\n [Post("https://www.furion.pro/post")]\n Task PostXXXAsync([Body]User user);\n\n [Post("https://www.furion.pro/post")]\n Task PostXXXAsync([Body("application/x-www-form-urlencoded")]User user);\n\n [Post("https://www.furion.pro/post")]\n Task PostXXXAsync([Body("application/x-www-form-urlencoded", "UTF-8")]User user);\n}\n')),(0,r.kt)("h3",{id:"1957-\u8bbe\u7f6e-json-\u5e8f\u5217\u5316\u63d0\u4f9b\u7a0b\u5e8f"},"19.5.7 \u8bbe\u7f6e ",(0,r.kt)("inlineCode",{parentName:"h3"},"JSON")," \u5e8f\u5217\u5316\u63d0\u4f9b\u7a0b\u5e8f"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u9ed8\u8ba4\u60c5\u51b5\u4e0b\u91c7\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"System.Text.Json")," \u8fdb\u884c ",(0,r.kt)("inlineCode",{parentName:"p"},"JSON")," \u5e8f\u5217\u5316\u5904\u7406\uff0c\u5982\u9700\u8bbe\u7f6e\u7b2c\u4e09\u65b9 ",(0,r.kt)("inlineCode",{parentName:"p"},"JSON")," \u63d0\u4f9b\u5668\uff0c\u5219\u53ef\u4ee5\u901a\u8fc7\u4ee5\u4e0b\u914d\u7f6e\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{3,6-7}","{3,6-7}":!0},'public interface IHttp : IHttpDispatchProxy\n{\n [Post("https://www.furion.pro/post"), JsonSerialization(typeof(NewtonsoftJsonSerializerProvider))]\n Task PostXXXAsync([Body]User user);\n\n [Post("https://www.furion.pro/post"), JsonSerialization(typeof(NewtonsoftJsonSerializerProvider))]\n Task PostXXXAsync([Body]User user, [JsonSerializerOptions]object jsonSerializerOptions = default);\n\n /// \n /// \u7f3a\u7701\u5e8f\u5217\u5316\u914d\u7f6e\n /// \n /// \n [JsonSerializerOptions]\n static object GetJsonSerializerOptions()\n {\n // \u8fd9\u91cc\u4e5f\u53ef\u4ee5\u901a\u8fc7 JSON.GetSerializerOptions() \u83b7\u53d6 Startup.cs \u4e2d\u7684\u914d\u7f6e\n return new JsonSerializerOptions\n {\n\n };\n }\n}\n')),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"[JsonSerializerOptions]")," \u53ef\u4ee5\u6807\u8bb0\u53c2\u6570\u662f\u4e00\u4e2a ",(0,r.kt)("inlineCode",{parentName:"p"},"JSON")," \u5e8f\u5217\u5316\u914d\u7f6e\u53c2\u6570\u3002"),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u5173\u4e8e ",(0,r.kt)("inlineCode",{parentName:"h5"},"JSON")," \u5e8f\u5217\u5316\u63d0\u4f9b\u5668")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u5982\u9700\u4e86\u89e3\u66f4\u591a ",(0,r.kt)("inlineCode",{parentName:"p"},"JSON")," \u5e8f\u5217\u5316\u77e5\u8bc6\u53ef\u67e5\u9605 ",(0,r.kt)("a",{parentName:"p",href:"json-serialization#2351-%E8%87%AA%E5%AE%9A%E4%B9%89%E5%BA%8F%E5%88%97%E5%8C%96%E6%8F%90%E4%BE%9B%E5%99%A8"},"23. JSON \u5e8f\u5217\u5316")," \u7ae0\u8282"))),(0,r.kt)("h3",{id:"1958-\u53c2\u6570\u9a8c\u8bc1"},"19.5.8 \u53c2\u6570\u9a8c\u8bc1"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{4,7}","{4,7}":!0},'public interface IHttp : IHttpDispatchProxy\n{\n [Post("https://www.furion.pro/post")]\n Task PostXXXAsync([Range(1,10)]int id, [Required, MaxLength(10)]string name);\n\n [Post("https://www.furion.pro/post")]\n Task PostXXXAsync([Required]User user); // \u5bf9\u8c61\u7c7b\u578b\u652f\u6301\u5c5e\u6027\u914d\u7f6e\u7279\u6027\u9a8c\u8bc1\n}\n')),(0,r.kt)("h3",{id:"1959-\u8bf7\u6c42\u62e6\u622a"},"19.5.9 \u8bf7\u6c42\u62e6\u622a"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u8fdc\u7a0b\u8bf7\u6c42\u4ee3\u7406\u65b9\u5f0f\u63d0\u4f9b\u4e24\u79cd\u62e6\u622a\u65b9\u5f0f\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u63a5\u53e3\u9759\u6001\u65b9\u6cd5\u62e6\u622a"),(0,r.kt)("li",{parentName:"ul"},"\u53c2\u6570\u6807\u8bb0\u62e6\u622a")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{5,8,15}","{5,8,15}":!0},'public interface IHttp : IHttpDispatchProxy\n{\n // \u901a\u8fc7\u53c2\u6570\u62e6\u622a\n [Post("https://www.furion.pro/post")]\n Task PostXXXAsync([Interceptor(InterceptorTypes.Request)] Action action = default);\n\n // \u5168\u5c40\u62e6\u622a\uff0c\u7c7b\u4e2d\u6bcf\u4e00\u4e2a\u65b9\u6cd5\u90fd\u4f1a\u89e6\u53d1\n [Interceptor(InterceptorTypes.Request)]\n static void OnRequesting1(HttpRequestMessage req)\n {\n // \u8ffd\u52a0\u66f4\u591a\u53c2\u6570\n req.AppendQueries(new Dictionary {\n { "access_token", "xxxx"}\n });\n }\n\n // \u5168\u5c40\u62e6\u622a\uff0c\u7c7b\u4e2d\u6bcf\u4e00\u4e2a\u65b9\u6cd5\u90fd\u4f1a\u89e6\u53d1\n [Interceptor(InterceptorTypes.Request)]\n static void OnRequesting2(HttpRequestMessage req)\n {\n\n }\n}\n')),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"\u652f\u6301\u591a\u6b21\u62e6\u622a")),(0,r.kt)("h3",{id:"19510-httpclient-\u62e6\u622a"},"19.5.10 ",(0,r.kt)("inlineCode",{parentName:"h3"},"HttpClient")," \u62e6\u622a"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u8fdc\u7a0b\u8bf7\u6c42\u4ee3\u7406\u65b9\u5f0f\u63d0\u4f9b\u4e24\u79cd\u62e6\u622a\u65b9\u5f0f\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u63a5\u53e3\u9759\u6001\u65b9\u6cd5\u62e6\u622a"),(0,r.kt)("li",{parentName:"ul"},"\u53c2\u6570\u6807\u8bb0\u62e6\u622a")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{5,8,15}","{5,8,15}":!0},'public interface IHttp : IHttpDispatchProxy\n{\n // \u901a\u8fc7\u53c2\u6570\u62e6\u622a\n [Post("https://www.furion.pro/post")]\n Task PostXXXAsync([Interceptor(InterceptorTypes.Client)] Action action = default);\n\n // \u5168\u5c40\u62e6\u622a\uff0c\u7c7b\u4e2d\u6bcf\u4e00\u4e2a\u65b9\u6cd5\u90fd\u4f1a\u89e6\u53d1\n [Interceptor(InterceptorTypes.Client)]\n static void onClientCreating1(HttpClient req)\n {\n\n }\n\n // \u5168\u5c40\u62e6\u622a\uff0c\u7c7b\u4e2d\u6bcf\u4e00\u4e2a\u65b9\u6cd5\u90fd\u4f1a\u89e6\u53d1\n [Interceptor(InterceptorTypes.Client)]\n static void onClientCreating2(HttpClient req)\n {\n\n }\n}\n')),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"\u652f\u6301\u591a\u6b21\u62e6\u622a")),(0,r.kt)("h3",{id:"19511-\u6210\u529f\u8bf7\u6c42\u62e6\u622a"},"19.5.11 \u6210\u529f\u8bf7\u6c42\u62e6\u622a"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u8fdc\u7a0b\u8bf7\u6c42\u4ee3\u7406\u65b9\u5f0f\u63d0\u4f9b\u4e24\u79cd\u62e6\u622a\u65b9\u5f0f\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u63a5\u53e3\u9759\u6001\u65b9\u6cd5\u62e6\u622a"),(0,r.kt)("li",{parentName:"ul"},"\u53c2\u6570\u6807\u8bb0\u62e6\u622a")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{5,8,15}","{5,8,15}":!0},'public interface IHttp : IHttpDispatchProxy\n{\n // \u901a\u8fc7\u53c2\u6570\u62e6\u622a\n [Post("https://www.furion.pro/post")]\n Task PostXXXAsync([Interceptor(InterceptorTypes.Response)] Action action = default);\n\n // \u5168\u5c40\u62e6\u622a\uff0c\u7c7b\u4e2d\u6bcf\u4e00\u4e2a\u65b9\u6cd5\u90fd\u4f1a\u89e6\u53d1\n [Interceptor(InterceptorTypes.Response)]\n static void OnResponsing1(HttpResponseMessage req)\n {\n\n }\n\n // \u5168\u5c40\u62e6\u622a\uff0c\u7c7b\u4e2d\u6bcf\u4e00\u4e2a\u65b9\u6cd5\u90fd\u4f1a\u89e6\u53d1\n [Interceptor(InterceptorTypes.Response)]\n static void OnResponsing2(HttpResponseMessage req)\n {\n\n }\n}\n')),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"\u652f\u6301\u591a\u6b21\u62e6\u622a")),(0,r.kt)("h3",{id:"19512-\u8bf7\u6c42\u5f02\u5e38\u62e6\u622a"},"19.5.12 \u8bf7\u6c42\u5f02\u5e38\u62e6\u622a"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u8fdc\u7a0b\u8bf7\u6c42\u4ee3\u7406\u65b9\u5f0f\u63d0\u4f9b\u4e24\u79cd\u62e6\u622a\u65b9\u5f0f\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u63a5\u53e3\u9759\u6001\u65b9\u6cd5\u62e6\u622a"),(0,r.kt)("li",{parentName:"ul"},"\u53c2\u6570\u6807\u8bb0\u62e6\u622a")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{5,8,15}","{5,8,15}":!0},'public interface IHttp : IHttpDispatchProxy\n{\n // \u901a\u8fc7\u53c2\u6570\u62e6\u622a\n [Post("https://www.furion.pro/post")]\n Task PostXXXAsync([Interceptor(InterceptorTypes.Exception)] Action action = default);\n\n // \u5168\u5c40\u62e6\u622a\uff0c\u7c7b\u4e2d\u6bcf\u4e00\u4e2a\u65b9\u6cd5\u90fd\u4f1a\u89e6\u53d1\n [Interceptor(InterceptorTypes.Exception)]\n static void OnException1(HttpResponseMessage req, string errors)\n {\n\n }\n\n // \u5168\u5c40\u62e6\u622a\uff0c\u7c7b\u4e2d\u6bcf\u4e00\u4e2a\u65b9\u6cd5\u90fd\u4f1a\u89e6\u53d1\n [Interceptor(InterceptorTypes.Exception)]\n static void OnException2(HttpResponseMessage req, string errors)\n {\n\n }\n}\n')),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"\u652f\u6301\u591a\u6b21\u62e6\u622a")),(0,r.kt)("h3",{id:"19513-\u5404\u79cd\u8fd4\u56de\u503c\u5904\u7406"},"19.5.13 \u5404\u79cd\u8fd4\u56de\u503c\u5904\u7406"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u8fdc\u7a0b\u8bf7\u6c42\u9ed8\u8ba4\u63d0\u4f9b\u56db\u79cd\u8fd4\u56de\u503c\u7c7b\u578b\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"HttpResponseMessage"),"\uff1a\u8bf7\u6c42\u54cd\u5e94\u6d88\u606f\u7c7b\u578b"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Stream"),"\uff1a\u6d41\u7c7b\u578b"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"T"),"\uff1a\u6cdb\u578b ",(0,r.kt)("inlineCode",{parentName:"li"},"T")," \u7c7b\u578b"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"String"),"\uff1a\u5b57\u7b26\u4e32\u7c7b\u578b\uff0c\u4e5f\u5c31\u662f\u76f4\u63a5\u5c06\u7f51\u7edc\u8bf7\u6c42\u7ed3\u679c\u5185\u5bb9\u5b57\u7b26\u4e32\u5316")),(0,r.kt)("p",null,"\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'public interface IHttp : IHttpDispatchProxy\n{\n [Post("https://www.furion.pro/post")]\n Task PostXXXAsync();\n\n [Post("https://www.furion.pro/post")]\n Task PostXXXAsync();\n\n [Post("https://www.furion.pro/post")]\n Task PostXXXAsync();\n\n [Post("https://www.furion.pro/post")]\n Task PostXXXAsync();\n}\n')),(0,r.kt)("h3",{id:"19514-\u8bbe\u7f6e-byte-\u7c7b\u578b"},"19.5.14 \u8bbe\u7f6e ",(0,r.kt)("inlineCode",{parentName:"h3"},"Byte[]")," \u7c7b\u578b"),(0,r.kt)("p",null,"\u6709\u65f6\u5019\u6211\u4eec\u9700\u8981\u4e0a\u4f20\u6587\u4ef6\uff0c\u9700\u8981\u8bbe\u7f6e ",(0,r.kt)("inlineCode",{parentName:"p"},"Content-Type")," \u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"multipart/form-data")," \u7c7b\u578b\uff0c\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'public interface IHttp : IHttpDispatchProxy\n{\n [Post("https://www.furion.pro/upload")] // bytes \u53ef\u4ee5\u901a\u8fc7 File.ReadAllBytes(\u6587\u4ef6\u8def\u5f84) \u83b7\u53d6\n Task PostXXXAsync([Body("multipart/form-data")]User user, [BodyBytes("\u952e","\u6587\u4ef6\u540d")]Byte[] bytes);\n}\n')),(0,r.kt)("h3",{id:"19515-\u8bbe\u7f6e-timeout-\u8d85\u65f6\u65f6\u95f4"},"19.5.15 \u8bbe\u7f6e ",(0,r.kt)("inlineCode",{parentName:"h3"},"Timeout")," \u8d85\u65f6\u65f6\u95f4"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'[Timeout(1000)]\npublic interface IHttp : IHttpDispatchProxy\n{\n [Post("https://www.furion.pro/upload"), Timeout(500)] // \u5355\u4f4d\u79d2\n Task PostXXXAsync([Body]User user);\n}\n')),(0,r.kt)("h3",{id:"19420-\u8bbe\u7f6e-timeout-\u8d85\u65f6\u65f6\u95f4-1"},"19.4.20 \u8bbe\u7f6e ",(0,r.kt)("inlineCode",{parentName:"h3"},"Timeout")," \u8d85\u65f6\u65f6\u95f4"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'var res = await "https://www.furion.pro/upload".SetClientTimeout(10); // \u5355\u4f4d\u79d2\n')),(0,r.kt)("h3",{id:"19516-\u652f\u6301\u6a21\u677f\u914d\u7f6e"},"19.5.16 \u652f\u6301\u6a21\u677f\u914d\u7f6e"),(0,r.kt)("p",null,"\u6a21\u677f\u683c\u5f0f\u4e3a\uff1a",(0,r.kt)("inlineCode",{parentName:"p"},"#(\u914d\u7f6e\u8def\u5f84)")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'public interface IHttp : IHttpDispatchProxy\n{\n [Post("#(Furion:Address)/upload")]\n Task PostXXXAsync([Body]User user);\n}\n')),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json"},'{\n "Furion": {\n "Address": "https://www.furion.pro"\n }\n}\n')),(0,r.kt)("p",null,"\u65b9\u6cd5\u7684\u4f18\u5148\u7ea7\u9ad8\u4e8e\u63a5\u53e3\u5b9a\u4e49\u7684\u4f18\u5148\u7ea7\u3002"),(0,r.kt)("h3",{id:"19517-\u91cd\u8bd5\u7b56\u7565"},"19.5.17 \u91cd\u8bd5\u7b56\u7565"),(0,r.kt)("p",null,"\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion v2.18+")," \u7248\u672c\u652f\u6301\u914d\u7f6e\u91cd\u8bd5\u7b56\u7565\uff0c\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'[RetryPolicy(3, 1000)] // \u652f\u6301\u5168\u5c40\npublic interface IHttp : IHttpDispatchProxy\n{\n [Post("#(Furion:Address)/upload"), RetryPolicy(3, 1000)] // \u652f\u6301\u5c40\u90e8\n Task PostXXXAsync([Body]User user);\n}\n')),(0,r.kt)("p",null,"\u4ee5\u4e0a\u4ee3\u7801\u8868\u793a\u8bf7\u6c42\u5931\u8d25\u91cd\u8bd5 ",(0,r.kt)("inlineCode",{parentName:"p"},"3")," \u6b21\uff0c\u6bcf\u6b21\u5ef6\u8fdf ",(0,r.kt)("inlineCode",{parentName:"p"},"1000ms")," \u3002"),(0,r.kt)("h2",{id:"196-\u591a\u4e2a\u8bf7\u6c42\u5ba2\u6237\u7aef\u914d\u7f6e"},"19.6 \u591a\u4e2a\u8bf7\u6c42\u5ba2\u6237\u7aef\u914d\u7f6e"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e5f\u63d0\u4f9b\u4e86\u591a\u4e2a\u8bf7\u6c42\u5ba2\u6237\u7aef\u914d\u7f6e\uff0c\u53ef\u4ee5\u4e3a\u591a\u4e2a\u5ba2\u6237\u7aef\u8bf7\u6c42\u914d\u7f6e\u9ed8\u8ba4\u8bf7\u6c42\u4fe1\u606f\uff0c\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{4,12}","{4,12}":!0},'services.AddRemoteRequest(options=>\n{\n // \u914d\u7f6e Github \u57fa\u672c\u4fe1\u606f\n options.AddHttpClient("github", c =>\n {\n c.BaseAddress = new Uri("https://api.github.com/");\n c.DefaultRequestHeaders.Add("Accept", "application/vnd.github.v3+json");\n c.DefaultRequestHeaders.Add("User-Agent", "HttpClientFactory-Sample");\n });\n\n // \u914d\u7f6e Facebook \u57fa\u672c\u4fe1\u606f\n options.AddHttpClient("facebook", c =>\n {\n c.BaseAddress = new Uri("https://api.facebook.com/");\n c.DefaultRequestHeaders.Add("Accept", "application/vnd.facebook.v3+json");\n c.DefaultRequestHeaders.Add("User-Agent", "HttpClientFactory-Sample");\n });\n\n // \u914d\u7f6e\u66f4\u591a\u53c2\u6570\uff0c\u6bd4\u5982 SSL \u8bc1\u4e66\n services.AddHttpClient("github", c => {\n // \u5176\u4ed6\u914d\u7f6e\n })\n .ConfigurePrimaryHttpMessageHandler(u => new HttpClientHandler\n {\n // \u5ffd\u7565 SSL \u4e0d\u5b89\u5168\u68c0\u67e5\uff0c\u6216 https \u4e0d\u5b89\u5168\u6216 https \u8bc1\u4e66\u6709\u8bef\n ServerCertificateCustomValidationCallback = (_, _, _, _) => true,\n ClientCertificateOptions = ClientCertificateOption.Manual,\n ClientCertificates = {\n new X509Certificate2("...","..."),\n new X509Certificate2("...","..."),\n new X509Certificate2("...","...")\n }\n });\n})\n')),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u5173\u4e8e\u9ed8\u8ba4\u5ba2\u6237\u7aef\u914d\u7f6e")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"services.AddRemoteRequest()")," \u4f1a\u6ce8\u518c\u4e00\u4e2a\u9ed8\u8ba4\u7684\u5ba2\u6237\u7aef\uff0c\u4f46\u662f\u65e0\u6cd5\u8fdb\u884c\u9ed8\u8ba4\u5ba2\u6237\u7aef\u66f4\u591a\u914d\u7f6e\uff0c\u5982\u9700\u914d\u7f6e\u9ed8\u8ba4\u5ba2\u6237\u7aef\uff0c\u53ef\u4ee5\u8bbe\u7f6e ",(0,r.kt)("inlineCode",{parentName:"p"},"inludeDefaultHttpClient")," \u53c2\u6570\u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"false"),"\uff0c\u5e76\u624b\u52a8\u6ce8\u518c\u9ed8\u8ba4\u5ba2\u6237\u7aef\uff0c\u5982\uff1a"),(0,r.kt)("pre",{parentName:"div"},(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{3-4,9}","{3-4,9}":!0},'services.AddRemoteRequest(options=>\n{\n // \u914d\u7f6e\u9ed8\u8ba4\u5ba2\u6237\u7aef\uff0c\u6ce8\u610f string.Empty\n options.AddHttpClient(string.Empty, c =>\n {\n c.BaseAddress = new Uri("https://furion.pro/");\n // \u5176\u4ed6\u914d\u7f6e\n });\n}, false)\n')))),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"\u914d\u7f6e\u4e86\u547d\u540d\u5ba2\u6237\u7aef\u540e\uff0c\u6bcf\u6b21\u8bf7\u6c42\u90fd\u4f1a\u81ea\u52a8\u52a0\u4e0a\u8fd9\u4e9b\u914d\u7f6e\u3002")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u5728 ",(0,r.kt)("inlineCode",{parentName:"li"},"\u4ee3\u7406\u8bf7\u6c42")," \u4f7f\u7528")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'[Get("api/getdata"), Client("github")]\nTask GetData();\n\n[Put("api/getdata"), Client("facebook")]\nTask GetData();\n')),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u5728 ",(0,r.kt)("inlineCode",{parentName:"li"},"\u5b57\u7b26\u4e32\u62d3\u5c55")," \u4f7f\u7528")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'// \u8bbe\u7f6e\u8bf7\u6c42\u62e6\u622a\nvar response = await "http://47.100.247.61/api/sysdata/categories".SetClient("github").PostAsync();\n')),(0,r.kt)("h2",{id:"197-\u5173\u4e8e\u8fd4\u56de\u503c\u975e-200-\u65f6\u5ffd\u7565-http\u72b6\u6001"},"19.7 \u5173\u4e8e\u8fd4\u56de\u503c\u975e ",(0,r.kt)("inlineCode",{parentName:"h2"},"200")," \u65f6\u5ffd\u7565 ",(0,r.kt)("inlineCode",{parentName:"h2"},"Http\u72b6\u6001")),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u63d0\u4f9b\u4e86\u975e\u5e38\u65b9\u4fbf\u7684\u8bf7\u6c42\u5e76\u4e14\u5e8f\u5217\u5316\u8bf7\u6c42\u7ed3\u679c ",(0,r.kt)("inlineCode",{parentName:"p"},"PostAsAsync"),"\n\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"2.8.8")," \u53ca\u4ee5\u4e0b\u7248\u672c\uff0c\u5f53\u8fd4\u56de\u7ed3\u679c\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"Http")," \u72b6\u6001\u4e3a\u975e ",(0,r.kt)("inlineCode",{parentName:"p"},"200")," \u65f6\uff0c\u4f1a\u76f4\u63a5\u622a\u65ad\u3002\u8003\u8651\u5230\u8bf7\u6c42\u63a5\u53e3\u7684\u591a\u6837\u6027\uff0c\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"2.8.9")," \u53ca\u4ee5\u4e0a\u7248\u672c\u589e\u52a0\u5ffd\u7565\u8fd4\u56de ",(0,r.kt)("inlineCode",{parentName:"p"},"Http")," \u72b6\u6001\uff0c\u76f4\u63a5\u5e8f\u5217\u5316\u7ed3\u679c\u7684\u65b9\u5f0f\u3002"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'//\u8bf7\u6c42\u5e76\u4e14\u5e8f\u5217\u5316\u8bf7\u6c42\u7ed3\u679c\nvar result = await "https://api.facebook.com/"\n //\u5982\u679c\u4e0d\u52a0OnException\uff0c\u5219\u4f1a\u76f4\u63a5\u622a\u65ad\n .OnException((res,errors)=> {\n //\u6fc0\u6d3b\u5f02\u6b65\u62e6\u622a \u6b64\u5904\u53ef\u4ee5\u505a\u8bb0\u5f55\u65e5\u5fd7\u64cd\u4f5c \u4e5f\u53ef\u4fdd\u6301\u73b0\u72b6\n })\n .PostAsAsync();\n')),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"PostAsStringAsync()")," \u4e5f\u4f7f\u7528\u540c\u6837\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"OnException")," \u64cd\u4f5c\u4f7f\u5f97\u5ffd\u7565\u8fd4\u56de ",(0,r.kt)("inlineCode",{parentName:"p"},"Http")," \u72b6\u6001,\u539f\u6837\u8fd4\u56de ",(0,r.kt)("inlineCode",{parentName:"p"},"Http")," \u8bf7\u6c42\u7ed3\u679c"),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u8bf4\u660e")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u5982\u679c\u4e0d\u52a0 ",(0,r.kt)("inlineCode",{parentName:"p"},"OnException"),"\uff0c\u5219\u4f1a\u76f4\u63a5\u622a\u65ad\u3002\n\u5982\u679c\u9700\u8981\u590d\u6742\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"Http Post")," \u8bf7\u6c42\uff0c\u5efa\u8bae\u76f4\u63a5\u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"PostAsync"),",\u8fd4\u56de\u503c\u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"HttpResponseMessage"),"\uff0c\u53ef\u4ee5\u66f4\u7075\u6d3b\u7684\u63a7\u5236\u7ed3\u679c\u3002"))),(0,r.kt)("h2",{id:"198-\u5173\u4e8e\u540c\u6b65\u8bf7\u6c42"},"19.8 \u5173\u4e8e\u540c\u6b65\u8bf7\u6c42"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u5185\u90e8\u9ed8\u8ba4\u4e0d\u63d0\u4f9b\u540c\u6b65\u8bf7\u6c42\u64cd\u4f5c\uff0c\u5efa\u8bae\u603b\u662f\u4f7f\u7528\u5f02\u6b65\u7684\u65b9\u5f0f\u8bf7\u6c42\u3002\u5982\u5728\u4e0d\u80fd\u4f7f\u7528\u5f02\u6b65\u7684\u60c5\u51b5\u4e0b\uff0c\u53ef\u81ea\u884c\u8f6c\u6362\u4e3a\u540c\u6b65\u6267\u884c\u3002"),(0,r.kt)("h2",{id:"199-\u591a\u7ebf\u7a0b\u5171\u4eab\u4f5c\u7528\u57df"},"19.9 \u591a\u7ebf\u7a0b\u5171\u4eab\u4f5c\u7528\u57df"),(0,r.kt)("p",null,"\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c\u6240\u6709\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"\u5b57\u7b26\u4e32")," \u548c ",(0,r.kt)("inlineCode",{parentName:"p"},"\u5b9e\u4f53")," \u62d3\u5c55\u90fd\u6709\u81ea\u5df1\u72ec\u7acb\u7ef4\u62a4\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"ServiceProvider")," \u4f5c\u7528\u57df\u3002"),(0,r.kt)("p",null,"\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Web")," \u8bf7\u6c42\u4e2d\uff0c\u9ed8\u8ba4\u662f ",(0,r.kt)("inlineCode",{parentName:"p"},"HttpContext.RequestServices"),"\uff0c\u4f46\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"\u975e Web"),"\uff0c\u5982\u591a\u7ebf\u7a0b\u64cd\u4f5c\uff0c\u540e\u53f0\u4efb\u52a1\uff0c\u4e8b\u4ef6\u603b\u7ebf\u7b49\u573a\u666f\u4e0b\u4f1a\u81ea\u52a8\u521b\u5efa\u65b0\u7684\u4f5c\u7528\u57df\uff0c\u5b9e\u9645\u4e0a\u8fd9\u662f\u975e\u5e38\u4e0d\u5fc5\u8981\u7684\u5185\u5b58\u5f00\u9500\u3002"),(0,r.kt)("p",null,"\u8fd9\u65f6\uff0c\u6211\u4eec\u53ea\u9700\u8981\u901a\u8fc7 ",(0,r.kt)("inlineCode",{parentName:"p"},".SetXXXScoped(service)")," \u5171\u4eab\u5f53\u524d\u670d\u52a1\u63d0\u4f9b\u5668\u4f5c\u7528\u57df\u5373\u53ef\uff0c\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'Scoped.Create(async (fac, scope) => {\n var response = await "https://www.furion.pro".SetRequestScoped(scope.ServiceProvider).PostAsync();\n});\n')),(0,r.kt)("h2",{id:"1910-\u9759\u6001-default-\u65b9\u5f0f\u6784\u5efa"},"19.10 \u9759\u6001 ",(0,r.kt)("inlineCode",{parentName:"h2"},"Default")," \u65b9\u5f0f\u6784\u5efa"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'await HttpRequestPart.Default.SetRequestUrl("https://www.baidu.com").GetAsStringAsync();\n')),(0,r.kt)("h2",{id:"1911-\u53cd\u9988\u4e0e\u5efa\u8bae"},"19.11 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,r.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))),(0,r.kt)("hr",null),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e86\u89e3\u66f4\u591a")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u60f3\u4e86\u89e3\u66f4\u591a ",(0,r.kt)("inlineCode",{parentName:"p"},"HttpClient")," \u77e5\u8bc6\u53ef\u67e5\u9605 ",(0,r.kt)("a",{parentName:"p",href:"https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/http-requests?view=aspnetcore-5.0"},"ASP.NET Core - HTTP \u8bf7\u6c42")," \u7ae0\u8282"))))}k.isMDXComponent=!0},6010:function(e,t,n){function a(e){var t,n,i="";if("string"==typeof e||"number"==typeof e)i+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var o=a.createContext({}),l=function(e){var t=a.useContext(o),n=t;return e&&(n="function"==typeof e?e(t):s(s({},t),e)),n},d=function(e){var t=l(e.components);return a.createElement(o.Provider,{value:t},e.children)},c={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},u=a.forwardRef((function(e,t){var n=e.components,i=e.mdxType,r=e.originalType,o=e.parentName,d=p(e,["components","mdxType","originalType","parentName"]),u=l(n),m=i,k=u["".concat(o,".").concat(m)]||u[m]||c[m]||r;return n?a.createElement(k,s(s({ref:t},d),{},{components:n})):a.createElement(k,s({ref:t},d))}));function m(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var r=n.length,s=new Array(r);s[0]=u;var p={};for(var o in t)hasOwnProperty.call(t,o)&&(p[o]=t[o]);p.originalType=e,p.mdxType="string"==typeof e?e:i,s[1]=p;for(var l=2;l=0&&r<=l&&i<=p&&a>=0)||(t.scrollIntoView({block:"center",behavior:"smooth"}),t.classList.add(o),setTimeout((function(){return t.classList.remove(o)}),2e3))}),150))},A=function(e){var t,n;switch(e.keyCode){case d:var a=y.indexOf(e.target)+1;n=y[a]||y[0];break;case l:var i=y.indexOf(e.target)-1;n=y[i]||y[y.length-1]}null==(t=n)||t.focus()};return a.createElement("div",{className:"tabs-container"},a.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,s.Z)("tabs",{"tabs--block":n},m)},c.map((function(e){var t=e.value,n=e.label;return a.createElement("li",{role:"tab",tabIndex:g===t?0:-1,"aria-selected":g===t,className:(0,s.Z)("tabs__item",p,{"tabs__item--active":g===t}),key:t,ref:function(e){return y.push(e)},onKeyDown:A,onFocus:H,onClick:H},n)}))),t?(0,a.cloneElement)(f.filter((function(e){return e.props.value===g}))[0],{className:"margin-vert--md"}):a.createElement("div",{className:"margin-vert--md"},f.map((function(e,t){return(0,a.cloneElement)(e,{key:t,hidden:e.props.value!==g})}))))}},9443:function(e,t,n){var a=(0,n(7294).createContext)(void 0);t.Z=a},3336:function(e,t,n){n.r(t),n.d(t,{frontMatter:function(){return l},contentTitle:function(){return d},metadata:function(){return c},toc:function(){return u},default:function(){return k}});var a=n(7462),i=n(3366),r=(n(7294),n(3905)),s=n(5064),p=n(8215),o=["components"],l={id:"http",title:"19. \u8fdc\u7a0b\u8bf7\u6c42",sidebar_label:"19. \u8fdc\u7a0b\u8bf7\u6c42 (HttpClient)"},d=void 0,c={unversionedId:"http",id:"http",isDocsHomePage:!1,title:"19. \u8fdc\u7a0b\u8bf7\u6c42",description:"\u4ee5\u4e0b\u5185\u5bb9\u4ec5\u9650 Furion 1.16.0 + \u7248\u672c\u4f7f\u7528\u3002",source:"@site/docs/http.mdx",sourceDirName:".",slug:"/http",permalink:"/furion/docs/http",editUrl:"https://gitee.com/dotnetchina/Furion/tree/master/handbook/docs/http.mdx",version:"current",lastUpdatedBy:"\u767e\u5c0f\u50e7",lastUpdatedAt:1629885994,formattedLastUpdatedAt:"8/25/2021",frontMatter:{id:"http",title:"19. \u8fdc\u7a0b\u8bf7\u6c42",sidebar_label:"19. \u8fdc\u7a0b\u8bf7\u6c42 (HttpClient)"},sidebar:"docs",previous:{title:"18. \u65e5\u5fd7\u8bb0\u5f55",permalink:"/furion/docs/logging"},next:{title:"20. \u6570\u636e\u52a0\u89e3\u5bc6",permalink:"/furion/docs/encryption"}},u=[{value:"19.1 \u5173\u4e8e\u8fdc\u7a0b\u8bf7\u6c42",id:"191-\u5173\u4e8e\u8fdc\u7a0b\u8bf7\u6c42",children:[]},{value:"19.2 \u8fdc\u7a0b\u8bf7\u6c42\u7684\u4f5c\u7528",id:"192-\u8fdc\u7a0b\u8bf7\u6c42\u7684\u4f5c\u7528",children:[]},{value:"19.3 \u57fa\u7840\u4f7f\u7528",id:"193-\u57fa\u7840\u4f7f\u7528",children:[{value:"19.3.1 \u6ce8\u518c\u670d\u52a1",id:"1931-\u6ce8\u518c\u670d\u52a1",children:[]},{value:"19.3.2 \u4f7f\u7528\u65b9\u5f0f",id:"1932-\u4f7f\u7528\u65b9\u5f0f",children:[]}]},{value:"19.4 \u5b57\u7b26\u4e32\u65b9\u5f0f\u4f7f\u7528\u793a\u4f8b",id:"194-\u5b57\u7b26\u4e32\u65b9\u5f0f\u4f7f\u7528\u793a\u4f8b",children:[{value:"19.4.1 \u5185\u7f6e\u8bf7\u6c42\u65b9\u5f0f",id:"1941-\u5185\u7f6e\u8bf7\u6c42\u65b9\u5f0f",children:[]},{value:"19.4.2 \u8bbe\u7f6e\u8bf7\u6c42\u5730\u5740",id:"1942-\u8bbe\u7f6e\u8bf7\u6c42\u5730\u5740",children:[]},{value:"19.4.3 \u8bbe\u7f6e\u8bf7\u6c42\u65b9\u5f0f",id:"1943-\u8bbe\u7f6e\u8bf7\u6c42\u65b9\u5f0f",children:[]},{value:"19.4.4 \u8bbe\u7f6e\u5730\u5740\u6a21\u677f",id:"1944-\u8bbe\u7f6e\u5730\u5740\u6a21\u677f",children:[]},{value:"19.4.5 \u8bbe\u7f6e\u8bf7\u6c42\u62a5\u6587\u5934",id:"1945-\u8bbe\u7f6e\u8bf7\u6c42\u62a5\u6587\u5934",children:[]},{value:"19.4.6 \u8bbe\u7f6e URL \u5730\u5740\u53c2\u6570",id:"1946-\u8bbe\u7f6e-url-\u5730\u5740\u53c2\u6570",children:[]},{value:"19.4.7 \u8bbe\u7f6e\u8bf7\u6c42\u5ba2\u6237\u7aef",id:"1947-\u8bbe\u7f6e\u8bf7\u6c42\u5ba2\u6237\u7aef",children:[]},{value:"19.4.8 \u8bbe\u7f6e Body \u53c2\u6570",id:"1948-\u8bbe\u7f6e-body-\u53c2\u6570",children:[]},{value:"19.4.9 \u8bbe\u7f6e Content-Type",id:"1949-\u8bbe\u7f6e-content-type",children:[]},{value:"19.4.10 \u8bbe\u7f6e\u5185\u5bb9\u7f16\u7801",id:"19410-\u8bbe\u7f6e\u5185\u5bb9\u7f16\u7801",children:[]},{value:"19.4.11 \u8bbe\u7f6e JSON \u5e8f\u5217\u5316\u63d0\u4f9b\u7a0b\u5e8f",id:"19411-\u8bbe\u7f6e-json-\u5e8f\u5217\u5316\u63d0\u4f9b\u7a0b\u5e8f",children:[]},{value:"19.4.12 \u542f\u7528 Body \u53c2\u6570\u9a8c\u8bc1",id:"19412-\u542f\u7528-body-\u53c2\u6570\u9a8c\u8bc1",children:[]},{value:"19.4.13 \u8bf7\u6c42\u62e6\u622a",id:"19413-\u8bf7\u6c42\u62e6\u622a",children:[]},{value:"19.4.14 HttpClient \u62e6\u622a",id:"19414-httpclient-\u62e6\u622a",children:[]},{value:"19.4.15 \u6210\u529f\u8bf7\u6c42\u62e6\u622a",id:"19415-\u6210\u529f\u8bf7\u6c42\u62e6\u622a",children:[]},{value:"19.4.16 \u8bf7\u6c42\u5f02\u5e38\u62e6\u622a",id:"19416-\u8bf7\u6c42\u5f02\u5e38\u62e6\u622a",children:[]},{value:"19.4.17 \u5404\u79cd\u8fd4\u56de\u503c\u5904\u7406",id:"19417-\u5404\u79cd\u8fd4\u56de\u503c\u5904\u7406",children:[]},{value:"19.4.18 \u8bbe\u7f6e Byte[] \u7c7b\u578b",id:"19418-\u8bbe\u7f6e-byte-\u7c7b\u578b",children:[]},{value:"19.4.19 \u8bbe\u7f6e IServiceProvider",id:"19419-\u8bbe\u7f6e-iserviceprovider",children:[]},{value:"19.4.20 \u8bbe\u7f6e Timeout \u8d85\u65f6\u65f6\u95f4",id:"19420-\u8bbe\u7f6e-timeout-\u8d85\u65f6\u65f6\u95f4",children:[]},{value:"19.4.21 \u652f\u6301\u6a21\u677f\u914d\u7f6e",id:"19421-\u652f\u6301\u6a21\u677f\u914d\u7f6e",children:[]},{value:"19.4.22 \u91cd\u8bd5\u7b56\u7565",id:"19422-\u91cd\u8bd5\u7b56\u7565",children:[]}]},{value:"19.5 IHttpDispatchProxy \u4ee3\u7406\u65b9\u5f0f",id:"195-ihttpdispatchproxy-\u4ee3\u7406\u65b9\u5f0f",children:[{value:"19.5.1 \u652f\u6301\u591a\u79cd\u4ee3\u7406\u65b9\u5f0f",id:"1951-\u652f\u6301\u591a\u79cd\u4ee3\u7406\u65b9\u5f0f",children:[]},{value:"19.5.2 \u8bbe\u7f6e\u5730\u5740\u6a21\u677f",id:"1952-\u8bbe\u7f6e\u5730\u5740\u6a21\u677f",children:[]},{value:"19.5.3 \u8bbe\u7f6e\u8bf7\u6c42\u62a5\u6587\u5934",id:"1953-\u8bbe\u7f6e\u8bf7\u6c42\u62a5\u6587\u5934",children:[]},{value:"19.5.4 \u8bbe\u7f6e URL \u5730\u5740\u53c2\u6570",id:"1954-\u8bbe\u7f6e-url-\u5730\u5740\u53c2\u6570",children:[]},{value:"19.5.5 \u8bbe\u7f6e\u8bf7\u6c42\u5ba2\u6237\u7aef",id:"1955-\u8bbe\u7f6e\u8bf7\u6c42\u5ba2\u6237\u7aef",children:[]},{value:"19.5.6 \u8bbe\u7f6e Body \u53c2\u6570",id:"1956-\u8bbe\u7f6e-body-\u53c2\u6570",children:[]},{value:"19.5.7 \u8bbe\u7f6e JSON \u5e8f\u5217\u5316\u63d0\u4f9b\u7a0b\u5e8f",id:"1957-\u8bbe\u7f6e-json-\u5e8f\u5217\u5316\u63d0\u4f9b\u7a0b\u5e8f",children:[]},{value:"19.5.8 \u53c2\u6570\u9a8c\u8bc1",id:"1958-\u53c2\u6570\u9a8c\u8bc1",children:[]},{value:"19.5.9 \u8bf7\u6c42\u62e6\u622a",id:"1959-\u8bf7\u6c42\u62e6\u622a",children:[]},{value:"19.5.10 HttpClient \u62e6\u622a",id:"19510-httpclient-\u62e6\u622a",children:[]},{value:"19.5.11 \u6210\u529f\u8bf7\u6c42\u62e6\u622a",id:"19511-\u6210\u529f\u8bf7\u6c42\u62e6\u622a",children:[]},{value:"19.5.12 \u8bf7\u6c42\u5f02\u5e38\u62e6\u622a",id:"19512-\u8bf7\u6c42\u5f02\u5e38\u62e6\u622a",children:[]},{value:"19.5.13 \u5404\u79cd\u8fd4\u56de\u503c\u5904\u7406",id:"19513-\u5404\u79cd\u8fd4\u56de\u503c\u5904\u7406",children:[]},{value:"19.5.14 \u8bbe\u7f6e Byte[] \u7c7b\u578b",id:"19514-\u8bbe\u7f6e-byte-\u7c7b\u578b",children:[]},{value:"19.5.15 \u8bbe\u7f6e Timeout \u8d85\u65f6\u65f6\u95f4",id:"19515-\u8bbe\u7f6e-timeout-\u8d85\u65f6\u65f6\u95f4",children:[]},{value:"19.4.20 \u8bbe\u7f6e Timeout \u8d85\u65f6\u65f6\u95f4",id:"19420-\u8bbe\u7f6e-timeout-\u8d85\u65f6\u65f6\u95f4-1",children:[]},{value:"19.5.16 \u652f\u6301\u6a21\u677f\u914d\u7f6e",id:"19516-\u652f\u6301\u6a21\u677f\u914d\u7f6e",children:[]},{value:"19.5.17 \u91cd\u8bd5\u7b56\u7565",id:"19517-\u91cd\u8bd5\u7b56\u7565",children:[]}]},{value:"19.6 \u591a\u4e2a\u8bf7\u6c42\u5ba2\u6237\u7aef\u914d\u7f6e",id:"196-\u591a\u4e2a\u8bf7\u6c42\u5ba2\u6237\u7aef\u914d\u7f6e",children:[]},{value:"19.7 \u5173\u4e8e\u8fd4\u56de\u503c\u975e 200 \u65f6\u5ffd\u7565 Http\u72b6\u6001",id:"197-\u5173\u4e8e\u8fd4\u56de\u503c\u975e-200-\u65f6\u5ffd\u7565-http\u72b6\u6001",children:[]},{value:"19.8 \u5173\u4e8e\u540c\u6b65\u8bf7\u6c42",id:"198-\u5173\u4e8e\u540c\u6b65\u8bf7\u6c42",children:[]},{value:"19.9 \u591a\u7ebf\u7a0b\u5171\u4eab\u4f5c\u7528\u57df",id:"199-\u591a\u7ebf\u7a0b\u5171\u4eab\u4f5c\u7528\u57df",children:[]},{value:"19.10 \u9759\u6001 Default \u65b9\u5f0f\u6784\u5efa",id:"1910-\u9759\u6001-default-\u65b9\u5f0f\u6784\u5efa",children:[]},{value:"19.11 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"1911-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],m={toc:u};function k(e){var t=e.components,n=(0,i.Z)(e,o);return(0,r.kt)("wrapper",(0,a.Z)({},m,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7248\u672c\u8bf4\u660e")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u4ee5\u4e0b\u5185\u5bb9\u4ec5\u9650 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion 1.16.0 +")," \u7248\u672c\u4f7f\u7528\u3002"))),(0,r.kt)("h2",{id:"191-\u5173\u4e8e\u8fdc\u7a0b\u8bf7\u6c42"},"19.1 \u5173\u4e8e\u8fdc\u7a0b\u8bf7\u6c42"),(0,r.kt)("p",null,"\u5728\u4e92\u8054\u7f51\u5927\u6570\u636e\u7684\u9a71\u52a8\u4e0b\uff0c\u5e73\u53f0\u6216\u7cfb\u7edf\u514d\u4e0d\u4e86\u9700\u8981\u548c\u7b2c\u4e09\u65b9\u8fdb\u884c\u6570\u636e\u4ea4\u4e92\uff0c\u800c\u7b2c\u4e09\u65b9\u5f80\u5f80\u63d0\u4f9b\u4e86 ",(0,r.kt)("inlineCode",{parentName:"p"},"RESTful API")," \u63a5\u53e3\u89c4\u8303\uff0c\u8fd9\u4e2a\u65f6\u5019\u5c31\u9700\u8981\u901a\u8fc7 ",(0,r.kt)("inlineCode",{parentName:"p"},"Http")," \u8bf7\u6c42\u7b2c\u4e09\u65b9\u63a5\u53e3\u8fdb\u884c\u6570\u636e\u4f20\u8f93\u4ea4\u4e92\u3002"),(0,r.kt)("p",null,"\u4e5f\u5c31\u662f\u672c\u7ae0\u8282\u6240\u8bf4\u7684\u8fdc\u7a0b\u8bf7\u6c42\u3002"),(0,r.kt)("h2",{id:"192-\u8fdc\u7a0b\u8bf7\u6c42\u7684\u4f5c\u7528"},"19.2 \u8fdc\u7a0b\u8bf7\u6c42\u7684\u4f5c\u7528"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u8de8\u7cfb\u7edf\u3001\u8de8\u8bbe\u5907\u901a\u4fe1"),(0,r.kt)("li",{parentName:"ul"},"\u5b9e\u73b0\u591a\u4e2a\u7cfb\u7edf\u6570\u636e\u4f20\u8f93\u4ea4\u4e92"),(0,r.kt)("li",{parentName:"ul"},"\u8de8\u7f16\u7a0b\u8bed\u8a00\u534f\u540c\u5f00\u53d1")),(0,r.kt)("h2",{id:"193-\u57fa\u7840\u4f7f\u7528"},"19.3 \u57fa\u7840\u4f7f\u7528"),(0,r.kt)("h3",{id:"1931-\u6ce8\u518c\u670d\u52a1"},"19.3.1 \u6ce8\u518c\u670d\u52a1"),(0,r.kt)("p",null,"\u4f7f\u7528\u4e4b\u524d\u9700\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Startup.cs")," \u6ce8\u518c ",(0,r.kt)("inlineCode",{parentName:"p"},"\u8fdc\u7a0b\u8bf7\u6c42\u670d\u52a1")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{3}","{3}":!0},"public void ConfigureServices(IServiceCollection services)\n{\n services.AddRemoteRequest();\n}\n")),(0,r.kt)("h3",{id:"1932-\u4f7f\u7528\u65b9\u5f0f"},"19.3.2 \u4f7f\u7528\u65b9\u5f0f"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u63d0\u4f9b\u4e24\u79cd\u65b9\u5f0f\u8bbf\u95ee\u53d1\u9001\u8fdc\u7a0b\u8bf7\u6c42\u3002"),(0,r.kt)(s.Z,{defaultValue:"IHttpDispatchProxy \u4ee3\u7406\u65b9\u5f0f",values:[{label:"IHttpDispatchProxy \u4ee3\u7406\u65b9\u5f0f",value:"IHttpDispatchProxy \u4ee3\u7406\u65b9\u5f0f"},{label:"\u5b57\u7b26\u4e32\u62d3\u5c55\u65b9\u5f0f",value:"\u5b57\u7b26\u4e32\u62d3\u5c55\u65b9\u5f0f"}],mdxType:"Tabs"},(0,r.kt)(p.Z,{value:"IHttpDispatchProxy \u4ee3\u7406\u65b9\u5f0f",mdxType:"TabItem"},(0,r.kt)("p",null,"\u5b9a\u4e49\u4ee3\u7406\u8bf7\u6c42\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"\u63a5\u53e3")," \u5e76\u7ee7\u627f ",(0,r.kt)("inlineCode",{parentName:"p"},"IHttpDispatchProxy")," \u63a5\u53e3"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,3,6,9,12,15,18}","{1,3,6,9,12,15,18}":!0},'public interface IHttp : IHttpDispatchProxy\n{\n [Get("https://www.furion.pro/get")]\n Task GetXXXAsync();\n\n [Post("https://www.furion.pro/post")]\n Task PostXXXAsync();\n\n [Put("https://www.furion.pro/put")]\n Task PutXXXAsync();\n\n [Delete("https://www.furion.pro/delete")]\n Task DeleteXXXAsync();\n\n [Patch("https://www.furion.pro/patch")]\n Task PatchXXXAsync();\n\n [Head("https://www.furion.pro/head")]\n Task HeadXXXAsync();\n}\n')),(0,r.kt)("p",null,"\u901a\u8fc7\u6784\u9020\u51fd\u6570\u6ce8\u5165 ",(0,r.kt)("inlineCode",{parentName:"p"},"\u63a5\u53e3")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{9,16}","{9,16}":!0},"using Furion.DynamicApiController;\nusing Furion.RemoteRequest.Extensions;\n\nnamespace Furion.Application\n{\n public class RemoteRequestService : IDynamicApiController\n {\n private readonly IHttp _http;\n public RemoteRequestService(IHttp http)\n {\n _http = http;\n }\n\n public async Task GetData()\n {\n var data = await _http.GetXXXAsync();\n }\n }\n}\n"))),(0,r.kt)(p.Z,{value:"\u5b57\u7b26\u4e32\u62d3\u5c55\u65b9\u5f0f",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'var response = await "https://www.furion.pro/get".GetAsync();\n\nvar response = await "https://www.furion.pro/post".PostAsync();\n\nvar response = await "https://www.furion.pro/put".PutAsync();\n\nvar response = await "https://www.furion.pro/delete".DeleteAsync();\n\nvar response = await "https://www.furion.pro/patch".PatchAsync();\n\nvar response = await "https://www.furion.pro/head".HeadAsync();\n')),(0,r.kt)("p",null,"\u9700\u5f15\u5165 ",(0,r.kt)("inlineCode",{parentName:"p"},"using Furion.RemoteRequest.Extensions")," \u547d\u540d\u7a7a\u95f4\u3002"))),(0,r.kt)("h2",{id:"194-\u5b57\u7b26\u4e32\u65b9\u5f0f\u4f7f\u7528\u793a\u4f8b"},"19.4 \u5b57\u7b26\u4e32\u65b9\u5f0f\u4f7f\u7528\u793a\u4f8b"),(0,r.kt)("h3",{id:"1941-\u5185\u7f6e\u8bf7\u6c42\u65b9\u5f0f"},"19.4.1 \u5185\u7f6e\u8bf7\u6c42\u65b9\u5f0f"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'// \u53d1\u9001 Get \u8bf7\u6c42\nvar response = await "https://www.furion.pro/get".GetAsync();\n\n// \u53d1\u9001 Post \u8bf7\u6c42\nvar response = await "https://www.furion.pro/post".PostAsync();\n\n// \u53d1\u9001 Put \u8bf7\u6c42\nvar response = await "https://www.furion.pro/put".PutAsync();\n\n// \u53d1\u9001 Delete \u8bf7\u6c42\nvar response = await "https://www.furion.pro/delete".DeleteAsync();\n\n// \u53d1\u9001 Patch \u8bf7\u6c42\nvar response = await "https://www.furion.pro/patch".PatchAsync();\n\n// \u53d1\u9001 Head \u8bf7\u6c42\nvar response = await "https://www.furion.pro/head".HeadAsync();\n\n// \u624b\u52a8\u6307\u5b9a\u53d1\u9001\u7279\u5b9a\u8bf7\u6c42\nvar response = await "https://www.furion.pro/post".SetHttpMethod(HttpMethod.Post)\n .SendAsync();\n')),(0,r.kt)("h3",{id:"1942-\u8bbe\u7f6e\u8bf7\u6c42\u5730\u5740"},"19.4.2 \u8bbe\u7f6e\u8bf7\u6c42\u5730\u5740"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'await "".SetRequestUrl("https://www.furion.pro/");\n')),(0,r.kt)("h3",{id:"1943-\u8bbe\u7f6e\u8bf7\u6c42\u65b9\u5f0f"},"19.4.3 \u8bbe\u7f6e\u8bf7\u6c42\u65b9\u5f0f"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'await "https://www.furion.pro/post".SetHttpMethod(HttpMethod.Get);\n')),(0,r.kt)("h3",{id:"1944-\u8bbe\u7f6e\u5730\u5740\u6a21\u677f"},"19.4.4 \u8bbe\u7f6e\u5730\u5740\u6a21\u677f"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'// \u5b57\u5178\u65b9\u5f0f\nawait "https://www.furion.pro/post/{id}?name={name}&id={p.Id}".SetTemplates(new Dictionary {\n { "id", 1 },\n { "name", "Furion" },\n { "p.Id", new Person { Id = 1 } }\n});\n\n// \u5bf9\u8c61/\u533f\u540d\u5bf9\u8c61\u65b9\u5f0f\nawait "https://www.furion.pro/post/{id}?name={name}".SetTemplates(new {\n id = 1,\n name = "Furion"\n});\n')),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"\u6ce8\uff1a\u6a21\u677f\u66ff\u6362\u533a\u5206\u5927\u5c0f\u5199\u3002")),(0,r.kt)("h3",{id:"1945-\u8bbe\u7f6e\u8bf7\u6c42\u62a5\u6587\u5934"},"19.4.5 \u8bbe\u7f6e\u8bf7\u6c42\u62a5\u6587\u5934"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'// \u5b57\u5178\u65b9\u5f0f\nawait "https://www.furion.pro/post".SetHeaders(new Dictionary {\n { "Authorization", "Bearer \u4f60\u7684token"},\n { "X-Authorization", "Bearer \u4f60\u7684\u5237\u65b0token"}\n});\n\n// \u5bf9\u8c61/\u533f\u540d\u5bf9\u8c61\u65b9\u5f0f\nawait "https://www.furion.pro/post".SetHeaders(new {\n Authorization = "Bearer \u4f60\u7684token"\n});\n')),(0,r.kt)("h3",{id:"1946-\u8bbe\u7f6e-url-\u5730\u5740\u53c2\u6570"},"19.4.6 \u8bbe\u7f6e ",(0,r.kt)("inlineCode",{parentName:"h3"},"URL")," \u5730\u5740\u53c2\u6570"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'// \u5b57\u5178\u65b9\u5f0f\nawait "https://www.furion.pro/get".SetQueries(new Dictionary {\n { "id", 1 },\n { "name", "Furion"}\n});\n\n// \u5bf9\u8c61/\u533f\u540d\u5bf9\u8c61\u65b9\u5f0f\nawait "https://www.furion.pro/get".SetQueries(new {\n id = 1,\n name = "Furion"\n});\n')),(0,r.kt)("p",null,"\u6700\u7ec8\u8f93\u51fa\u683c\u5f0f\u4e3a\uff1a",(0,r.kt)("inlineCode",{parentName:"p"},"https://www.furion.pro/get?id=1&name=Furion"),"\u3002"),(0,r.kt)("h3",{id:"1947-\u8bbe\u7f6e\u8bf7\u6c42\u5ba2\u6237\u7aef"},"19.4.7 \u8bbe\u7f6e\u8bf7\u6c42\u5ba2\u6237\u7aef"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,3-4,12}","{1,3-4,12}":!0},'services.AddRemoteRequest(options=>\n{\n // \u914d\u7f6e Github \u57fa\u672c\u4fe1\u606f\n options.AddHttpClient("github", c =>\n {\n c.BaseAddress = new Uri("https://api.github.com/");\n c.DefaultRequestHeaders.Add("Accept", "application/vnd.github.v3+json");\n c.DefaultRequestHeaders.Add("User-Agent", "HttpClientFactory-Sample");\n });\n});\n\nawait "get".SetClient("github");\n')),(0,r.kt)("p",null,"\u6700\u7ec8\u751f\u6210\u8bf7\u6c42\u5730\u5740\u4e3a\uff1a",(0,r.kt)("inlineCode",{parentName:"p"},"https://api.github.com/get"),"\u3002"),(0,r.kt)("h3",{id:"1948-\u8bbe\u7f6e-body-\u53c2\u6570"},"19.4.8 \u8bbe\u7f6e ",(0,r.kt)("inlineCode",{parentName:"h3"},"Body")," \u53c2\u6570"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'// \u4f20\u5165\u5bf9\u8c61\nawait "https://www.furion.pro/api/user/add".SetBody(new User { Id = 1, Name = "Furion" });\n\n// \u914d\u7f6e Content-Type\nawait "https://www.furion.pro/api/user/add".SetBody(new { Id = 1, Name = "Furion" }, "application/json");\n\n// \u8bbe\u7f6e Encoding \u7f16\u7801\nawait "https://www.furion.pro/api/user/add".SetBody(new User { Id = 1, Name = "Furion" }, "application/json", Encoding.UTF8);\n\n// \u5904\u7406 application/x-www-form-urlencoded \u8bf7\u6c42\nawait "https://www.furion.pro/api/user/add".SetBody(new Dictionary {\n { "Id", 1 },\n { "Name", "Furion"}\n}, "application/x-www-form-urlencoded");\n\n// \u5904\u7406 application/xml\u3001text/xml\nawait "https://www.furion.pro/api/user/add".SetBody("somevalue", "application/xml");\n')),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u6ce8\u610f")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u5982\u679c\u8bf7\u6c42 ",(0,r.kt)("inlineCode",{parentName:"p"},"Content-Type")," \u8bbe\u7f6e\u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"application/x-www-form-urlencoded")," \u7c7b\u578b\uff0c\u90a3\u4e48\u5e95\u5c42\u81ea\u52a8\u5c06\u6570\u636e\u8fdb\u884c ",(0,r.kt)("inlineCode",{parentName:"p"},"UrlEncode")," \u7f16\u7801\u5904\u7406\uff0c\u65e0\u9700\u5916\u90e8\u5904\u7406\u3002"))),(0,r.kt)("h3",{id:"1949-\u8bbe\u7f6e-content-type"},"19.4.9 \u8bbe\u7f6e ",(0,r.kt)("inlineCode",{parentName:"h3"},"Content-Type")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'await "https://www.furion.pro/post".SetContentType("application/json");\n')),(0,r.kt)("h3",{id:"19410-\u8bbe\u7f6e\u5185\u5bb9\u7f16\u7801"},"19.4.10 \u8bbe\u7f6e\u5185\u5bb9\u7f16\u7801"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'await "https://www.furion.pro/post".SetContentEncoding(Encoding.UTF8);\n')),(0,r.kt)("h3",{id:"19411-\u8bbe\u7f6e-json-\u5e8f\u5217\u5316\u63d0\u4f9b\u7a0b\u5e8f"},"19.4.11 \u8bbe\u7f6e ",(0,r.kt)("inlineCode",{parentName:"h3"},"JSON")," \u5e8f\u5217\u5316\u63d0\u4f9b\u7a0b\u5e8f"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u9ed8\u8ba4\u60c5\u51b5\u4e0b\u91c7\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"System.Text.Json")," \u8fdb\u884c ",(0,r.kt)("inlineCode",{parentName:"p"},"JSON")," \u5e8f\u5217\u5316\u5904\u7406\uff0c\u5982\u9700\u8bbe\u7f6e\u7b2c\u4e09\u65b9 ",(0,r.kt)("inlineCode",{parentName:"p"},"JSON")," \u63d0\u4f9b\u5668\uff0c\u5219\u53ef\u4ee5\u901a\u8fc7\u4ee5\u4e0b\u914d\u7f6e\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'// \u6cdb\u578b\u65b9\u5f0f\nawait "https://www.furion.pro/api/user/add".SetJsonSerialization();\n\n// \u975e\u6cdb\u578b\u65b9\u5f0f\nawait "https://www.furion.pro/api/user/add".SetJsonSerialization(typeof(NewtonsoftJsonSerializerProvider));\n\n// \u6dfb\u52a0\u66f4\u591a\u914d\u7f6e\nawait "https://www.furion.pro/api/user/add".SetJsonSerialization(new JsonSerializerSettings {\n\n});\n')),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u5173\u4e8e ",(0,r.kt)("inlineCode",{parentName:"h5"},"JSON")," \u5e8f\u5217\u5316\u63d0\u4f9b\u5668")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u5982\u9700\u4e86\u89e3\u66f4\u591a ",(0,r.kt)("inlineCode",{parentName:"p"},"JSON")," \u5e8f\u5217\u5316\u77e5\u8bc6\u53ef\u67e5\u9605 ",(0,r.kt)("a",{parentName:"p",href:"json-serialization#2351-%E8%87%AA%E5%AE%9A%E4%B9%89%E5%BA%8F%E5%88%97%E5%8C%96%E6%8F%90%E4%BE%9B%E5%99%A8"},"23. JSON \u5e8f\u5217\u5316")," \u7ae0\u8282"))),(0,r.kt)("h3",{id:"19412-\u542f\u7528-body-\u53c2\u6570\u9a8c\u8bc1"},"19.4.12 \u542f\u7528 ",(0,r.kt)("inlineCode",{parentName:"h3"},"Body")," \u53c2\u6570\u9a8c\u8bc1"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'await "https://www.furion.pro/api/user/add".SetValidationState();\n\n// \u8bbe\u7f6e\u4e0d\u9a8c\u8bc1 null \u503c\nawait "https://www.furion.pro/api/user/add".SetValidationState(includeNull: true);\n')),(0,r.kt)("p",null,"\u652f\u6301\u7c7b\u4e2d ",(0,r.kt)("inlineCode",{parentName:"p"},"[Required]")," \u7b49\u5b8c\u6574\u6a21\u578b\u9a8c\u8bc1\u7279\u6027\u3002"),(0,r.kt)("h3",{id:"19413-\u8bf7\u6c42\u62e6\u622a"},"19.4.13 \u8bf7\u6c42\u62e6\u622a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'await "https://www.furion.pro/".OnRequesting(req => {\n // req \u4e3a HttpRequestMessage \u5bf9\u8c61\n // \u8ffd\u52a0\u66f4\u591a\u53c2\u6570\n req.AppendQueries(new Dictionary {\n { "access_token", "xxxx"}\n });\n});\n')),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"\u652f\u6301\u591a\u6b21\u62e6\u622a")),(0,r.kt)("h3",{id:"19414-httpclient-\u62e6\u622a"},"19.4.14 ",(0,r.kt)("inlineCode",{parentName:"h3"},"HttpClient")," \u62e6\u622a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'await "https://www.furion.pro/".OnClientCreating(client => {\n // client \u4e3a HttpClient \u5bf9\u8c61\n client.Timeout = 30000; // \u8bbe\u7f6e\u8d85\u65f6\u65f6\u95f4\n});\n')),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"\u652f\u6301\u591a\u6b21\u62e6\u622a")),(0,r.kt)("h3",{id:"19415-\u6210\u529f\u8bf7\u6c42\u62e6\u622a"},"19.4.15 \u6210\u529f\u8bf7\u6c42\u62e6\u622a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'await "https://www.furion.pro/".OnResponsing(res => {\n // res \u4e3a HttpResponseMessage \u5bf9\u8c61\n});\n')),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"\u652f\u6301\u591a\u6b21\u62e6\u622a")),(0,r.kt)("h3",{id:"19416-\u8bf7\u6c42\u5f02\u5e38\u62e6\u622a"},"19.4.16 \u8bf7\u6c42\u5f02\u5e38\u62e6\u622a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'await "https://www.furion.pro/".OnException((res,errors) => {\n // res \u4e3a HttpResponseMessage \u5bf9\u8c61\n});\n')),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"\u652f\u6301\u591a\u6b21\u62e6\u622a")),(0,r.kt)("h3",{id:"19417-\u5404\u79cd\u8fd4\u56de\u503c\u5904\u7406"},"19.4.17 \u5404\u79cd\u8fd4\u56de\u503c\u5904\u7406"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u8fdc\u7a0b\u8bf7\u6c42\u9ed8\u8ba4\u63d0\u4f9b\u56db\u79cd\u8fd4\u56de\u503c\u7c7b\u578b\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"HttpResponseMessage"),"\uff1a\u8bf7\u6c42\u54cd\u5e94\u6d88\u606f\u7c7b\u578b"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Stream"),"\uff1a\u6d41\u7c7b\u578b"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"T"),"\uff1a\u6cdb\u578b ",(0,r.kt)("inlineCode",{parentName:"li"},"T")," \u7c7b\u578b"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"String"),"\uff1a\u5b57\u7b26\u4e32\u7c7b\u578b\uff0c\u4e5f\u5c31\u662f\u76f4\u63a5\u5c06\u7f51\u7edc\u8bf7\u6c42\u7ed3\u679c\u5185\u5bb9\u5b57\u7b26\u4e32\u5316")),(0,r.kt)("p",null,"\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'// HttpResponseMessage\nvar res = await "https://www.furion.pro/".GetAsync();\n\n// Stream\nvar stream = await "https://www.furion.pro/".GetAsStreamAsync();\n\n// T\nvar user = await "https://www.furion.pro/".GetAsAsync();\n\n// String\nvar str = await "https://www.baidu.com".GetAsStringAsync();\n')),(0,r.kt)("h3",{id:"19418-\u8bbe\u7f6e-byte-\u7c7b\u578b"},"19.4.18 \u8bbe\u7f6e ",(0,r.kt)("inlineCode",{parentName:"h3"},"Byte[]")," \u7c7b\u578b"),(0,r.kt)("p",null,"\u6709\u65f6\u5019\u6211\u4eec\u9700\u8981\u4e0a\u4f20\u6587\u4ef6\uff0c\u9700\u8981\u8bbe\u7f6e ",(0,r.kt)("inlineCode",{parentName:"p"},"Content-Type")," \u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"multipart/form-data")," \u7c7b\u578b\uff0c\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'// bytes \u53ef\u4ee5\u901a\u8fc7 File.ReadAllBytes(\u6587\u4ef6\u8def\u5f84) \u83b7\u53d6\nvar res = await "https://www.furion.pro/upload".SetBody(new { id =1, name = "Furion"}, "multipart/form-data")\n .SetBodyBytes(("\u952e", bytes, "\u6587\u4ef6\u540d")).PostAsync();\n')),(0,r.kt)("h3",{id:"19419-\u8bbe\u7f6e-iserviceprovider"},"19.4.19 \u8bbe\u7f6e ",(0,r.kt)("inlineCode",{parentName:"h3"},"IServiceProvider")),(0,r.kt)("p",null,"\u6709\u65f6\u5019\u6211\u4eec\u9700\u8981\u6784\u5efa\u4e00\u4e2a\u4f5c\u7528\u57df\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"IServiceProvider"),"\uff0c\u8fd9\u65f6\u53ea\u9700\u8981\u8bbe\u7f6e\u5373\u53ef\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'var res = await "https://www.furion.pro/upload".SetRequestScoped(services);\n')),(0,r.kt)("h3",{id:"19420-\u8bbe\u7f6e-timeout-\u8d85\u65f6\u65f6\u95f4"},"19.4.20 \u8bbe\u7f6e ",(0,r.kt)("inlineCode",{parentName:"h3"},"Timeout")," \u8d85\u65f6\u65f6\u95f4"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'var res = await "https://www.furion.pro/upload".SetClientTimeout(10); // \u5355\u4f4d\u79d2\n')),(0,r.kt)("h3",{id:"19421-\u652f\u6301\u6a21\u677f\u914d\u7f6e"},"19.4.21 \u652f\u6301\u6a21\u677f\u914d\u7f6e"),(0,r.kt)("p",null,"\u6a21\u677f\u683c\u5f0f\u4e3a\uff1a",(0,r.kt)("inlineCode",{parentName:"p"},"#(\u914d\u7f6e\u8def\u5f84)")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'var res = await "#(Furion:Address)/upload".GetAsync();\n')),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json"},'{\n "Furion": {\n "Address": "https://www.furion.pro"\n }\n}\n')),(0,r.kt)("h3",{id:"19422-\u91cd\u8bd5\u7b56\u7565"},"19.4.22 \u91cd\u8bd5\u7b56\u7565"),(0,r.kt)("p",null,"\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion v2.18+")," \u7248\u672c\u652f\u6301\u914d\u7f6e\u91cd\u8bd5\u7b56\u7565\uff0c\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'var res = await "#(Furion:Address)/upload".SetRetryPolicy(3, 1000).GetAsync();\n')),(0,r.kt)("p",null,"\u4ee5\u4e0a\u4ee3\u7801\u8868\u793a\u8bf7\u6c42\u5931\u8d25\u91cd\u8bd5 ",(0,r.kt)("inlineCode",{parentName:"p"},"3")," \u6b21\uff0c\u6bcf\u6b21\u5ef6\u8fdf ",(0,r.kt)("inlineCode",{parentName:"p"},"1000ms")," \u3002"),(0,r.kt)("h2",{id:"195-ihttpdispatchproxy-\u4ee3\u7406\u65b9\u5f0f"},"19.5 ",(0,r.kt)("inlineCode",{parentName:"h2"},"IHttpDispatchProxy")," \u4ee3\u7406\u65b9\u5f0f"),(0,r.kt)("h3",{id:"1951-\u652f\u6301\u591a\u79cd\u4ee3\u7406\u65b9\u5f0f"},"19.5.1 \u652f\u6301\u591a\u79cd\u4ee3\u7406\u65b9\u5f0f"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'public interface IHttp : IHttpDispatchProxy\n{\n // \u53d1\u9001 Get \u8bf7\u6c42\n [Get("https://www.furion.pro/get")]\n Task GetXXXAsync();\n\n // \u53d1\u9001 Post \u8bf7\u6c42\n [Post("https://www.furion.pro/post")]\n Task PostXXXAsync();\n\n // \u53d1\u9001 Put \u8bf7\u6c42\n [Put("https://www.furion.pro/put")]\n Task PutXXXAsync();\n\n // \u53d1\u9001 Put \u8bf7\u6c42\n [Delete("https://www.furion.pro/delete")]\n Task DeleteXXXAsync();\n\n // \u53d1\u9001 Put \u8bf7\u6c42\n [Patch("https://www.furion.pro/patch")]\n Task PatchXXXAsync();\n\n // \u53d1\u9001 Head \u8bf7\u6c42\n [Head("https://www.furion.pro/head")]\n Task HeadXXXAsync();\n}\n')),(0,r.kt)("h3",{id:"1952-\u8bbe\u7f6e\u5730\u5740\u6a21\u677f"},"19.5.2 \u8bbe\u7f6e\u5730\u5740\u6a21\u677f"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'public interface IHttp : IHttpDispatchProxy\n{\n [Get("https://www.furion.pro/get/{id}?name={name}&number={p.PersonDetail.PhonNumber}")]\n Task GetXXXAsync(int id, string name, Person p);\n}\n')),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"\u6ce8\uff1a\u6a21\u677f\u66ff\u6362\u533a\u5206\u5927\u5c0f\u5199\u3002")),(0,r.kt)("h3",{id:"1953-\u8bbe\u7f6e\u8bf7\u6c42\u62a5\u6587\u5934"},"19.5.3 \u8bbe\u7f6e\u8bf7\u6c42\u62a5\u6587\u5934"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u8fdc\u7a0b\u8bf7\u6c42\u4ee3\u7406\u6a21\u5f0f\u63d0\u4f9b\u4e09\u79cd\u65b9\u5f0f\u8bbe\u7f6e\u8bf7\u6c42\u62a5\u6587\u5934\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u652f\u6301\u5728\u63a5\u53e3\u4e2d\u58f0\u660e"),(0,r.kt)("li",{parentName:"ul"},"\u652f\u6301\u5728\u65b9\u6cd5\u4e2d\u58f0\u660e"),(0,r.kt)("li",{parentName:"ul"},"\u652f\u6301\u5728\u53c2\u6570\u4e2d\u58f0\u660e")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1-2,5,9,12}","{1-2,5,9,12}":!0},'[Headers("key","value")]\n[Headers("key1","value2")] // \u8bbe\u7f6e\u591a\u4e2a\npublic interface IHttp : IHttpDispatchProxy\n{\n [Get("https://www.furion.pro/get/{id}?name={name}"), Headers("key2","value2")]\n Task GetXXXAsync(int id, string name);\n\n [Get("https://www.furion.pro")]\n Task GetXXX2Async(int id, [Headers]string token = default);\n\n [Get("https://www.furion.pro")]\n Task GetXXX2Async(int id, string name, [Headers("\u522b\u540d")]string token = default);\n}\n')),(0,r.kt)("h3",{id:"1954-\u8bbe\u7f6e-url-\u5730\u5740\u53c2\u6570"},"19.5.4 \u8bbe\u7f6e ",(0,r.kt)("inlineCode",{parentName:"h3"},"URL")," \u5730\u5740\u53c2\u6570"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{4,7}","{4,7}":!0},'public interface IHttp : IHttpDispatchProxy\n{\n [Get("https://www.furion.pro/get")]\n Task GetXXXAsync([QueryString]int id, [QueryString]string name);\n\n [Get("https://www.furion.pro/get")]\n Task GetXXXAsync([QueryString]int id, [QueryString("\u522b\u540d")]string name);\n}\n')),(0,r.kt)("p",null,"\u6700\u7ec8\u8f93\u51fa\u683c\u5f0f\u4e3a\uff1a",(0,r.kt)("inlineCode",{parentName:"p"},"https://www.furion.pro/get?id=1&name=Furion"),"\u3002"),(0,r.kt)("h3",{id:"1955-\u8bbe\u7f6e\u8bf7\u6c42\u5ba2\u6237\u7aef"},"19.5.5 \u8bbe\u7f6e\u8bf7\u6c42\u5ba2\u6237\u7aef"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,3-4,14}","{1,3-4,14}":!0},'services.AddRemoteRequest(options=>\n{\n // \u914d\u7f6e Github \u57fa\u672c\u4fe1\u606f\n options.AddHttpClient("github", c =>\n {\n c.BaseAddress = new Uri("https://api.github.com/");\n c.DefaultRequestHeaders.Add("Accept", "application/vnd.github.v3+json");\n c.DefaultRequestHeaders.Add("User-Agent", "HttpClientFactory-Sample");\n });\n});\n\npublic interface IHttp : IHttpDispatchProxy\n{\n [Get("get"), Client("github")]\n Task GetXXXAsync();\n}\n')),(0,r.kt)("p",null,"\u6700\u7ec8\u751f\u6210\u8bf7\u6c42\u5730\u5740\u4e3a\uff1a",(0,r.kt)("inlineCode",{parentName:"p"},"https://api.github.com/get"),"\u3002"),(0,r.kt)("h3",{id:"1956-\u8bbe\u7f6e-body-\u53c2\u6570"},"19.5.6 \u8bbe\u7f6e ",(0,r.kt)("inlineCode",{parentName:"h3"},"Body")," \u53c2\u6570"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{3,6,9}","{3,6,9}":!0},'public interface IHttp : IHttpDispatchProxy\n{\n [Post("https://www.furion.pro/post")]\n Task PostXXXAsync([Body]User user);\n\n [Post("https://www.furion.pro/post")]\n Task PostXXXAsync([Body("application/x-www-form-urlencoded")]User user);\n\n [Post("https://www.furion.pro/post")]\n Task PostXXXAsync([Body("application/x-www-form-urlencoded", "UTF-8")]User user);\n}\n')),(0,r.kt)("h3",{id:"1957-\u8bbe\u7f6e-json-\u5e8f\u5217\u5316\u63d0\u4f9b\u7a0b\u5e8f"},"19.5.7 \u8bbe\u7f6e ",(0,r.kt)("inlineCode",{parentName:"h3"},"JSON")," \u5e8f\u5217\u5316\u63d0\u4f9b\u7a0b\u5e8f"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u9ed8\u8ba4\u60c5\u51b5\u4e0b\u91c7\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"System.Text.Json")," \u8fdb\u884c ",(0,r.kt)("inlineCode",{parentName:"p"},"JSON")," \u5e8f\u5217\u5316\u5904\u7406\uff0c\u5982\u9700\u8bbe\u7f6e\u7b2c\u4e09\u65b9 ",(0,r.kt)("inlineCode",{parentName:"p"},"JSON")," \u63d0\u4f9b\u5668\uff0c\u5219\u53ef\u4ee5\u901a\u8fc7\u4ee5\u4e0b\u914d\u7f6e\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{3,6-7}","{3,6-7}":!0},'public interface IHttp : IHttpDispatchProxy\n{\n [Post("https://www.furion.pro/post"), JsonSerialization(typeof(NewtonsoftJsonSerializerProvider))]\n Task PostXXXAsync([Body]User user);\n\n [Post("https://www.furion.pro/post"), JsonSerialization(typeof(NewtonsoftJsonSerializerProvider))]\n Task PostXXXAsync([Body]User user, [JsonSerializerOptions]object jsonSerializerOptions = default);\n\n /// \n /// \u7f3a\u7701\u5e8f\u5217\u5316\u914d\u7f6e\n /// \n /// \n [JsonSerializerOptions]\n static object GetJsonSerializerOptions()\n {\n // \u8fd9\u91cc\u4e5f\u53ef\u4ee5\u901a\u8fc7 JSON.GetSerializerOptions() \u83b7\u53d6 Startup.cs \u4e2d\u7684\u914d\u7f6e\n return new JsonSerializerOptions\n {\n\n };\n }\n}\n')),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"[JsonSerializerOptions]")," \u53ef\u4ee5\u6807\u8bb0\u53c2\u6570\u662f\u4e00\u4e2a ",(0,r.kt)("inlineCode",{parentName:"p"},"JSON")," \u5e8f\u5217\u5316\u914d\u7f6e\u53c2\u6570\u3002"),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u5173\u4e8e ",(0,r.kt)("inlineCode",{parentName:"h5"},"JSON")," \u5e8f\u5217\u5316\u63d0\u4f9b\u5668")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u5982\u9700\u4e86\u89e3\u66f4\u591a ",(0,r.kt)("inlineCode",{parentName:"p"},"JSON")," \u5e8f\u5217\u5316\u77e5\u8bc6\u53ef\u67e5\u9605 ",(0,r.kt)("a",{parentName:"p",href:"json-serialization#2351-%E8%87%AA%E5%AE%9A%E4%B9%89%E5%BA%8F%E5%88%97%E5%8C%96%E6%8F%90%E4%BE%9B%E5%99%A8"},"23. JSON \u5e8f\u5217\u5316")," \u7ae0\u8282"))),(0,r.kt)("h3",{id:"1958-\u53c2\u6570\u9a8c\u8bc1"},"19.5.8 \u53c2\u6570\u9a8c\u8bc1"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{4,7}","{4,7}":!0},'public interface IHttp : IHttpDispatchProxy\n{\n [Post("https://www.furion.pro/post")]\n Task PostXXXAsync([Range(1,10)]int id, [Required, MaxLength(10)]string name);\n\n [Post("https://www.furion.pro/post")]\n Task PostXXXAsync([Required]User user); // \u5bf9\u8c61\u7c7b\u578b\u652f\u6301\u5c5e\u6027\u914d\u7f6e\u7279\u6027\u9a8c\u8bc1\n}\n')),(0,r.kt)("h3",{id:"1959-\u8bf7\u6c42\u62e6\u622a"},"19.5.9 \u8bf7\u6c42\u62e6\u622a"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u8fdc\u7a0b\u8bf7\u6c42\u4ee3\u7406\u65b9\u5f0f\u63d0\u4f9b\u4e24\u79cd\u62e6\u622a\u65b9\u5f0f\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u63a5\u53e3\u9759\u6001\u65b9\u6cd5\u62e6\u622a"),(0,r.kt)("li",{parentName:"ul"},"\u53c2\u6570\u6807\u8bb0\u62e6\u622a")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{5,8,15}","{5,8,15}":!0},'public interface IHttp : IHttpDispatchProxy\n{\n // \u901a\u8fc7\u53c2\u6570\u62e6\u622a\n [Post("https://www.furion.pro/post")]\n Task PostXXXAsync([Interceptor(InterceptorTypes.Request)] Action action = default);\n\n // \u5168\u5c40\u62e6\u622a\uff0c\u7c7b\u4e2d\u6bcf\u4e00\u4e2a\u65b9\u6cd5\u90fd\u4f1a\u89e6\u53d1\n [Interceptor(InterceptorTypes.Request)]\n static void OnRequesting1(HttpRequestMessage req)\n {\n // \u8ffd\u52a0\u66f4\u591a\u53c2\u6570\n req.AppendQueries(new Dictionary {\n { "access_token", "xxxx"}\n });\n }\n\n // \u5168\u5c40\u62e6\u622a\uff0c\u7c7b\u4e2d\u6bcf\u4e00\u4e2a\u65b9\u6cd5\u90fd\u4f1a\u89e6\u53d1\n [Interceptor(InterceptorTypes.Request)]\n static void OnRequesting2(HttpRequestMessage req)\n {\n\n }\n}\n')),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"\u652f\u6301\u591a\u6b21\u62e6\u622a")),(0,r.kt)("h3",{id:"19510-httpclient-\u62e6\u622a"},"19.5.10 ",(0,r.kt)("inlineCode",{parentName:"h3"},"HttpClient")," \u62e6\u622a"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u8fdc\u7a0b\u8bf7\u6c42\u4ee3\u7406\u65b9\u5f0f\u63d0\u4f9b\u4e24\u79cd\u62e6\u622a\u65b9\u5f0f\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u63a5\u53e3\u9759\u6001\u65b9\u6cd5\u62e6\u622a"),(0,r.kt)("li",{parentName:"ul"},"\u53c2\u6570\u6807\u8bb0\u62e6\u622a")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{5,8,15}","{5,8,15}":!0},'public interface IHttp : IHttpDispatchProxy\n{\n // \u901a\u8fc7\u53c2\u6570\u62e6\u622a\n [Post("https://www.furion.pro/post")]\n Task PostXXXAsync([Interceptor(InterceptorTypes.Client)] Action action = default);\n\n // \u5168\u5c40\u62e6\u622a\uff0c\u7c7b\u4e2d\u6bcf\u4e00\u4e2a\u65b9\u6cd5\u90fd\u4f1a\u89e6\u53d1\n [Interceptor(InterceptorTypes.Client)]\n static void onClientCreating1(HttpClient req)\n {\n\n }\n\n // \u5168\u5c40\u62e6\u622a\uff0c\u7c7b\u4e2d\u6bcf\u4e00\u4e2a\u65b9\u6cd5\u90fd\u4f1a\u89e6\u53d1\n [Interceptor(InterceptorTypes.Client)]\n static void onClientCreating2(HttpClient req)\n {\n\n }\n}\n')),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"\u652f\u6301\u591a\u6b21\u62e6\u622a")),(0,r.kt)("h3",{id:"19511-\u6210\u529f\u8bf7\u6c42\u62e6\u622a"},"19.5.11 \u6210\u529f\u8bf7\u6c42\u62e6\u622a"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u8fdc\u7a0b\u8bf7\u6c42\u4ee3\u7406\u65b9\u5f0f\u63d0\u4f9b\u4e24\u79cd\u62e6\u622a\u65b9\u5f0f\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u63a5\u53e3\u9759\u6001\u65b9\u6cd5\u62e6\u622a"),(0,r.kt)("li",{parentName:"ul"},"\u53c2\u6570\u6807\u8bb0\u62e6\u622a")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{5,8,15}","{5,8,15}":!0},'public interface IHttp : IHttpDispatchProxy\n{\n // \u901a\u8fc7\u53c2\u6570\u62e6\u622a\n [Post("https://www.furion.pro/post")]\n Task PostXXXAsync([Interceptor(InterceptorTypes.Response)] Action action = default);\n\n // \u5168\u5c40\u62e6\u622a\uff0c\u7c7b\u4e2d\u6bcf\u4e00\u4e2a\u65b9\u6cd5\u90fd\u4f1a\u89e6\u53d1\n [Interceptor(InterceptorTypes.Response)]\n static void OnResponsing1(HttpResponseMessage req)\n {\n\n }\n\n // \u5168\u5c40\u62e6\u622a\uff0c\u7c7b\u4e2d\u6bcf\u4e00\u4e2a\u65b9\u6cd5\u90fd\u4f1a\u89e6\u53d1\n [Interceptor(InterceptorTypes.Response)]\n static void OnResponsing2(HttpResponseMessage req)\n {\n\n }\n}\n')),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"\u652f\u6301\u591a\u6b21\u62e6\u622a")),(0,r.kt)("h3",{id:"19512-\u8bf7\u6c42\u5f02\u5e38\u62e6\u622a"},"19.5.12 \u8bf7\u6c42\u5f02\u5e38\u62e6\u622a"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u8fdc\u7a0b\u8bf7\u6c42\u4ee3\u7406\u65b9\u5f0f\u63d0\u4f9b\u4e24\u79cd\u62e6\u622a\u65b9\u5f0f\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u63a5\u53e3\u9759\u6001\u65b9\u6cd5\u62e6\u622a"),(0,r.kt)("li",{parentName:"ul"},"\u53c2\u6570\u6807\u8bb0\u62e6\u622a")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{5,8,15}","{5,8,15}":!0},'public interface IHttp : IHttpDispatchProxy\n{\n // \u901a\u8fc7\u53c2\u6570\u62e6\u622a\n [Post("https://www.furion.pro/post")]\n Task PostXXXAsync([Interceptor(InterceptorTypes.Exception)] Action action = default);\n\n // \u5168\u5c40\u62e6\u622a\uff0c\u7c7b\u4e2d\u6bcf\u4e00\u4e2a\u65b9\u6cd5\u90fd\u4f1a\u89e6\u53d1\n [Interceptor(InterceptorTypes.Exception)]\n static void OnException1(HttpResponseMessage req, string errors)\n {\n\n }\n\n // \u5168\u5c40\u62e6\u622a\uff0c\u7c7b\u4e2d\u6bcf\u4e00\u4e2a\u65b9\u6cd5\u90fd\u4f1a\u89e6\u53d1\n [Interceptor(InterceptorTypes.Exception)]\n static void OnException2(HttpResponseMessage req, string errors)\n {\n\n }\n}\n')),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"\u652f\u6301\u591a\u6b21\u62e6\u622a")),(0,r.kt)("h3",{id:"19513-\u5404\u79cd\u8fd4\u56de\u503c\u5904\u7406"},"19.5.13 \u5404\u79cd\u8fd4\u56de\u503c\u5904\u7406"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u8fdc\u7a0b\u8bf7\u6c42\u9ed8\u8ba4\u63d0\u4f9b\u56db\u79cd\u8fd4\u56de\u503c\u7c7b\u578b\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"HttpResponseMessage"),"\uff1a\u8bf7\u6c42\u54cd\u5e94\u6d88\u606f\u7c7b\u578b"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Stream"),"\uff1a\u6d41\u7c7b\u578b"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"T"),"\uff1a\u6cdb\u578b ",(0,r.kt)("inlineCode",{parentName:"li"},"T")," \u7c7b\u578b"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"String"),"\uff1a\u5b57\u7b26\u4e32\u7c7b\u578b\uff0c\u4e5f\u5c31\u662f\u76f4\u63a5\u5c06\u7f51\u7edc\u8bf7\u6c42\u7ed3\u679c\u5185\u5bb9\u5b57\u7b26\u4e32\u5316")),(0,r.kt)("p",null,"\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'public interface IHttp : IHttpDispatchProxy\n{\n [Post("https://www.furion.pro/post")]\n Task PostXXXAsync();\n\n [Post("https://www.furion.pro/post")]\n Task PostXXXAsync();\n\n [Post("https://www.furion.pro/post")]\n Task PostXXXAsync();\n\n [Post("https://www.furion.pro/post")]\n Task PostXXXAsync();\n}\n')),(0,r.kt)("h3",{id:"19514-\u8bbe\u7f6e-byte-\u7c7b\u578b"},"19.5.14 \u8bbe\u7f6e ",(0,r.kt)("inlineCode",{parentName:"h3"},"Byte[]")," \u7c7b\u578b"),(0,r.kt)("p",null,"\u6709\u65f6\u5019\u6211\u4eec\u9700\u8981\u4e0a\u4f20\u6587\u4ef6\uff0c\u9700\u8981\u8bbe\u7f6e ",(0,r.kt)("inlineCode",{parentName:"p"},"Content-Type")," \u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"multipart/form-data")," \u7c7b\u578b\uff0c\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'public interface IHttp : IHttpDispatchProxy\n{\n [Post("https://www.furion.pro/upload")] // bytes \u53ef\u4ee5\u901a\u8fc7 File.ReadAllBytes(\u6587\u4ef6\u8def\u5f84) \u83b7\u53d6\n Task PostXXXAsync([Body("multipart/form-data")]User user, [BodyBytes("\u952e","\u6587\u4ef6\u540d")]Byte[] bytes);\n}\n')),(0,r.kt)("h3",{id:"19515-\u8bbe\u7f6e-timeout-\u8d85\u65f6\u65f6\u95f4"},"19.5.15 \u8bbe\u7f6e ",(0,r.kt)("inlineCode",{parentName:"h3"},"Timeout")," \u8d85\u65f6\u65f6\u95f4"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'[Timeout(1000)]\npublic interface IHttp : IHttpDispatchProxy\n{\n [Post("https://www.furion.pro/upload"), Timeout(500)] // \u5355\u4f4d\u79d2\n Task PostXXXAsync([Body]User user);\n}\n')),(0,r.kt)("h3",{id:"19420-\u8bbe\u7f6e-timeout-\u8d85\u65f6\u65f6\u95f4-1"},"19.4.20 \u8bbe\u7f6e ",(0,r.kt)("inlineCode",{parentName:"h3"},"Timeout")," \u8d85\u65f6\u65f6\u95f4"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'var res = await "https://www.furion.pro/upload".SetClientTimeout(10); // \u5355\u4f4d\u79d2\n')),(0,r.kt)("h3",{id:"19516-\u652f\u6301\u6a21\u677f\u914d\u7f6e"},"19.5.16 \u652f\u6301\u6a21\u677f\u914d\u7f6e"),(0,r.kt)("p",null,"\u6a21\u677f\u683c\u5f0f\u4e3a\uff1a",(0,r.kt)("inlineCode",{parentName:"p"},"#(\u914d\u7f6e\u8def\u5f84)")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'public interface IHttp : IHttpDispatchProxy\n{\n [Post("#(Furion:Address)/upload")]\n Task PostXXXAsync([Body]User user);\n}\n')),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json"},'{\n "Furion": {\n "Address": "https://www.furion.pro"\n }\n}\n')),(0,r.kt)("p",null,"\u65b9\u6cd5\u7684\u4f18\u5148\u7ea7\u9ad8\u4e8e\u63a5\u53e3\u5b9a\u4e49\u7684\u4f18\u5148\u7ea7\u3002"),(0,r.kt)("h3",{id:"19517-\u91cd\u8bd5\u7b56\u7565"},"19.5.17 \u91cd\u8bd5\u7b56\u7565"),(0,r.kt)("p",null,"\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion v2.18+")," \u7248\u672c\u652f\u6301\u914d\u7f6e\u91cd\u8bd5\u7b56\u7565\uff0c\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'[RetryPolicy(3, 1000)] // \u652f\u6301\u5168\u5c40\npublic interface IHttp : IHttpDispatchProxy\n{\n [Post("#(Furion:Address)/upload"), RetryPolicy(3, 1000)] // \u652f\u6301\u5c40\u90e8\n Task PostXXXAsync([Body]User user);\n}\n')),(0,r.kt)("p",null,"\u4ee5\u4e0a\u4ee3\u7801\u8868\u793a\u8bf7\u6c42\u5931\u8d25\u91cd\u8bd5 ",(0,r.kt)("inlineCode",{parentName:"p"},"3")," \u6b21\uff0c\u6bcf\u6b21\u5ef6\u8fdf ",(0,r.kt)("inlineCode",{parentName:"p"},"1000ms")," \u3002"),(0,r.kt)("h2",{id:"196-\u591a\u4e2a\u8bf7\u6c42\u5ba2\u6237\u7aef\u914d\u7f6e"},"19.6 \u591a\u4e2a\u8bf7\u6c42\u5ba2\u6237\u7aef\u914d\u7f6e"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e5f\u63d0\u4f9b\u4e86\u591a\u4e2a\u8bf7\u6c42\u5ba2\u6237\u7aef\u914d\u7f6e\uff0c\u53ef\u4ee5\u4e3a\u591a\u4e2a\u5ba2\u6237\u7aef\u8bf7\u6c42\u914d\u7f6e\u9ed8\u8ba4\u8bf7\u6c42\u4fe1\u606f\uff0c\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{4,12}","{4,12}":!0},'services.AddRemoteRequest(options=>\n{\n // \u914d\u7f6e Github \u57fa\u672c\u4fe1\u606f\n options.AddHttpClient("github", c =>\n {\n c.BaseAddress = new Uri("https://api.github.com/");\n c.DefaultRequestHeaders.Add("Accept", "application/vnd.github.v3+json");\n c.DefaultRequestHeaders.Add("User-Agent", "HttpClientFactory-Sample");\n });\n\n // \u914d\u7f6e Facebook \u57fa\u672c\u4fe1\u606f\n options.AddHttpClient("facebook", c =>\n {\n c.BaseAddress = new Uri("https://api.facebook.com/");\n c.DefaultRequestHeaders.Add("Accept", "application/vnd.facebook.v3+json");\n c.DefaultRequestHeaders.Add("User-Agent", "HttpClientFactory-Sample");\n });\n\n // \u914d\u7f6e\u66f4\u591a\u53c2\u6570\uff0c\u6bd4\u5982 SSL \u8bc1\u4e66\n services.AddHttpClient("github", c => {\n // \u5176\u4ed6\u914d\u7f6e\n })\n .ConfigurePrimaryHttpMessageHandler(u => new HttpClientHandler\n {\n // \u5ffd\u7565 SSL \u4e0d\u5b89\u5168\u68c0\u67e5\uff0c\u6216 https \u4e0d\u5b89\u5168\u6216 https \u8bc1\u4e66\u6709\u8bef\n ServerCertificateCustomValidationCallback = (_, _, _, _) => true,\n ClientCertificateOptions = ClientCertificateOption.Manual,\n ClientCertificates = {\n new X509Certificate2("...","..."),\n new X509Certificate2("...","..."),\n new X509Certificate2("...","...")\n }\n });\n})\n')),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u5173\u4e8e\u9ed8\u8ba4\u5ba2\u6237\u7aef\u914d\u7f6e")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"services.AddRemoteRequest()")," \u4f1a\u6ce8\u518c\u4e00\u4e2a\u9ed8\u8ba4\u7684\u5ba2\u6237\u7aef\uff0c\u4f46\u662f\u65e0\u6cd5\u8fdb\u884c\u9ed8\u8ba4\u5ba2\u6237\u7aef\u66f4\u591a\u914d\u7f6e\uff0c\u5982\u9700\u914d\u7f6e\u9ed8\u8ba4\u5ba2\u6237\u7aef\uff0c\u53ef\u4ee5\u8bbe\u7f6e ",(0,r.kt)("inlineCode",{parentName:"p"},"inludeDefaultHttpClient")," \u53c2\u6570\u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"false"),"\uff0c\u5e76\u624b\u52a8\u6ce8\u518c\u9ed8\u8ba4\u5ba2\u6237\u7aef\uff0c\u5982\uff1a"),(0,r.kt)("pre",{parentName:"div"},(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{3-4,9}","{3-4,9}":!0},'services.AddRemoteRequest(options=>\n{\n // \u914d\u7f6e\u9ed8\u8ba4\u5ba2\u6237\u7aef\uff0c\u6ce8\u610f string.Empty\n options.AddHttpClient(string.Empty, c =>\n {\n c.BaseAddress = new Uri("https://furion.pro/");\n // \u5176\u4ed6\u914d\u7f6e\n });\n}, false)\n')))),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"\u914d\u7f6e\u4e86\u547d\u540d\u5ba2\u6237\u7aef\u540e\uff0c\u6bcf\u6b21\u8bf7\u6c42\u90fd\u4f1a\u81ea\u52a8\u52a0\u4e0a\u8fd9\u4e9b\u914d\u7f6e\u3002")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u5728 ",(0,r.kt)("inlineCode",{parentName:"li"},"\u4ee3\u7406\u8bf7\u6c42")," \u4f7f\u7528")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'[Get("api/getdata"), Client("github")]\nTask GetData();\n\n[Put("api/getdata"), Client("facebook")]\nTask GetData();\n')),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u5728 ",(0,r.kt)("inlineCode",{parentName:"li"},"\u5b57\u7b26\u4e32\u62d3\u5c55")," \u4f7f\u7528")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'// \u8bbe\u7f6e\u8bf7\u6c42\u62e6\u622a\nvar response = await "http://47.100.247.61/api/sysdata/categories".SetClient("github").PostAsync();\n')),(0,r.kt)("h2",{id:"197-\u5173\u4e8e\u8fd4\u56de\u503c\u975e-200-\u65f6\u5ffd\u7565-http\u72b6\u6001"},"19.7 \u5173\u4e8e\u8fd4\u56de\u503c\u975e ",(0,r.kt)("inlineCode",{parentName:"h2"},"200")," \u65f6\u5ffd\u7565 ",(0,r.kt)("inlineCode",{parentName:"h2"},"Http\u72b6\u6001")),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u63d0\u4f9b\u4e86\u975e\u5e38\u65b9\u4fbf\u7684\u8bf7\u6c42\u5e76\u4e14\u5e8f\u5217\u5316\u8bf7\u6c42\u7ed3\u679c ",(0,r.kt)("inlineCode",{parentName:"p"},"PostAsAsync"),"\n\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"2.8.8")," \u53ca\u4ee5\u4e0b\u7248\u672c\uff0c\u5f53\u8fd4\u56de\u7ed3\u679c\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"Http")," \u72b6\u6001\u4e3a\u975e ",(0,r.kt)("inlineCode",{parentName:"p"},"200")," \u65f6\uff0c\u4f1a\u76f4\u63a5\u622a\u65ad\u3002\u8003\u8651\u5230\u8bf7\u6c42\u63a5\u53e3\u7684\u591a\u6837\u6027\uff0c\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"2.8.9")," \u53ca\u4ee5\u4e0a\u7248\u672c\u589e\u52a0\u5ffd\u7565\u8fd4\u56de ",(0,r.kt)("inlineCode",{parentName:"p"},"Http")," \u72b6\u6001\uff0c\u76f4\u63a5\u5e8f\u5217\u5316\u7ed3\u679c\u7684\u65b9\u5f0f\u3002"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'//\u8bf7\u6c42\u5e76\u4e14\u5e8f\u5217\u5316\u8bf7\u6c42\u7ed3\u679c\nvar result = await "https://api.facebook.com/"\n //\u5982\u679c\u4e0d\u52a0OnException\uff0c\u5219\u4f1a\u76f4\u63a5\u622a\u65ad\n .OnException((res,errors)=> {\n //\u6fc0\u6d3b\u5f02\u6b65\u62e6\u622a \u6b64\u5904\u53ef\u4ee5\u505a\u8bb0\u5f55\u65e5\u5fd7\u64cd\u4f5c \u4e5f\u53ef\u4fdd\u6301\u73b0\u72b6\n })\n .PostAsAsync();\n')),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"PostAsStringAsync()")," \u4e5f\u4f7f\u7528\u540c\u6837\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"OnException")," \u64cd\u4f5c\u4f7f\u5f97\u5ffd\u7565\u8fd4\u56de ",(0,r.kt)("inlineCode",{parentName:"p"},"Http")," \u72b6\u6001,\u539f\u6837\u8fd4\u56de ",(0,r.kt)("inlineCode",{parentName:"p"},"Http")," \u8bf7\u6c42\u7ed3\u679c"),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u8bf4\u660e")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u5982\u679c\u4e0d\u52a0 ",(0,r.kt)("inlineCode",{parentName:"p"},"OnException"),"\uff0c\u5219\u4f1a\u76f4\u63a5\u622a\u65ad\u3002\n\u5982\u679c\u9700\u8981\u590d\u6742\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"Http Post")," \u8bf7\u6c42\uff0c\u5efa\u8bae\u76f4\u63a5\u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"PostAsync"),",\u8fd4\u56de\u503c\u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"HttpResponseMessage"),"\uff0c\u53ef\u4ee5\u66f4\u7075\u6d3b\u7684\u63a7\u5236\u7ed3\u679c\u3002"))),(0,r.kt)("h2",{id:"198-\u5173\u4e8e\u540c\u6b65\u8bf7\u6c42"},"19.8 \u5173\u4e8e\u540c\u6b65\u8bf7\u6c42"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u5185\u90e8\u9ed8\u8ba4\u4e0d\u63d0\u4f9b\u540c\u6b65\u8bf7\u6c42\u64cd\u4f5c\uff0c\u5efa\u8bae\u603b\u662f\u4f7f\u7528\u5f02\u6b65\u7684\u65b9\u5f0f\u8bf7\u6c42\u3002\u5982\u5728\u4e0d\u80fd\u4f7f\u7528\u5f02\u6b65\u7684\u60c5\u51b5\u4e0b\uff0c\u53ef\u81ea\u884c\u8f6c\u6362\u4e3a\u540c\u6b65\u6267\u884c\u3002"),(0,r.kt)("h2",{id:"199-\u591a\u7ebf\u7a0b\u5171\u4eab\u4f5c\u7528\u57df"},"19.9 \u591a\u7ebf\u7a0b\u5171\u4eab\u4f5c\u7528\u57df"),(0,r.kt)("p",null,"\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c\u6240\u6709\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"\u5b57\u7b26\u4e32")," \u548c ",(0,r.kt)("inlineCode",{parentName:"p"},"\u5b9e\u4f53")," \u62d3\u5c55\u90fd\u6709\u81ea\u5df1\u72ec\u7acb\u7ef4\u62a4\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"ServiceProvider")," \u4f5c\u7528\u57df\u3002"),(0,r.kt)("p",null,"\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Web")," \u8bf7\u6c42\u4e2d\uff0c\u9ed8\u8ba4\u662f ",(0,r.kt)("inlineCode",{parentName:"p"},"HttpContext.RequestServices"),"\uff0c\u4f46\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"\u975e Web"),"\uff0c\u5982\u591a\u7ebf\u7a0b\u64cd\u4f5c\uff0c\u540e\u53f0\u4efb\u52a1\uff0c\u4e8b\u4ef6\u603b\u7ebf\u7b49\u573a\u666f\u4e0b\u4f1a\u81ea\u52a8\u521b\u5efa\u65b0\u7684\u4f5c\u7528\u57df\uff0c\u5b9e\u9645\u4e0a\u8fd9\u662f\u975e\u5e38\u4e0d\u5fc5\u8981\u7684\u5185\u5b58\u5f00\u9500\u3002"),(0,r.kt)("p",null,"\u8fd9\u65f6\uff0c\u6211\u4eec\u53ea\u9700\u8981\u901a\u8fc7 ",(0,r.kt)("inlineCode",{parentName:"p"},".SetXXXScoped(service)")," \u5171\u4eab\u5f53\u524d\u670d\u52a1\u63d0\u4f9b\u5668\u4f5c\u7528\u57df\u5373\u53ef\uff0c\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'Scoped.Create(async (fac, scope) => {\n var response = await "https://www.furion.pro".SetRequestScoped(scope.ServiceProvider).PostAsync();\n});\n')),(0,r.kt)("h2",{id:"1910-\u9759\u6001-default-\u65b9\u5f0f\u6784\u5efa"},"19.10 \u9759\u6001 ",(0,r.kt)("inlineCode",{parentName:"h2"},"Default")," \u65b9\u5f0f\u6784\u5efa"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'await HttpRequestPart.Default.SetRequestUrl("https://www.baidu.com").GetAsStringAsync();\n')),(0,r.kt)("h2",{id:"1911-\u53cd\u9988\u4e0e\u5efa\u8bae"},"19.11 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,r.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))),(0,r.kt)("hr",null),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e86\u89e3\u66f4\u591a")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u60f3\u4e86\u89e3\u66f4\u591a ",(0,r.kt)("inlineCode",{parentName:"p"},"HttpClient")," \u77e5\u8bc6\u53ef\u67e5\u9605 ",(0,r.kt)("a",{parentName:"p",href:"https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/http-requests?view=aspnetcore-5.0"},"ASP.NET Core - HTTP \u8bf7\u6c42")," \u7ae0\u8282"))))}k.isMDXComponent=!0},6010:function(e,t,n){function a(e){var t,n,i="";if("string"==typeof e||"number"==typeof e)i+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;t=0||(i[t]=e[t]);return i}(e,n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(i[t]=e[t])}return i}var p=a.createContext({}),s=function(e){var n=a.useContext(p),t=n;return e&&(t="function"==typeof e?e(n):l(l({},n),e)),t},m=function(e){var n=s(e.components);return a.createElement(p.Provider,{value:n},e.children)},u={inlineCode:"code",wrapper:function(e){var n=e.children;return a.createElement(a.Fragment,{},n)}},d=a.forwardRef((function(e,n){var t=e.components,i=e.mdxType,r=e.originalType,p=e.parentName,m=o(e,["components","mdxType","originalType","parentName"]),d=s(t),c=i,k=d["".concat(p,".").concat(c)]||d[c]||u[c]||r;return t?a.createElement(k,l(l({ref:n},m),{},{components:t})):a.createElement(k,l({ref:n},m))}));function c(e,n){var t=arguments,i=n&&n.mdxType;if("string"==typeof e||i){var r=t.length,l=new Array(r);l[0]=d;var o={};for(var p in n)hasOwnProperty.call(n,p)&&(o[p]=n[p]);o.originalType=e,o.mdxType="string"==typeof e?e:i,l[1]=o;for(var s=2;s=0&&r<=s&&i<=o&&a>=0)||(n.scrollIntoView({block:"center",behavior:"smooth"}),n.classList.add(p),setTimeout((function(){return n.classList.remove(p)}),2e3))}),150))},y=function(e){var n,t;switch(e.keyCode){case m:var a=S.indexOf(e.target)+1;t=S[a]||S[0];break;case s:var i=S.indexOf(e.target)-1;t=S[i]||S[S.length-1]}null==(n=t)||n.focus()};return a.createElement("div",{className:"tabs-container"},a.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,l.Z)("tabs",{"tabs--block":t},c)},u.map((function(e){var n=e.value,t=e.label;return a.createElement("li",{role:"tab",tabIndex:v===n?0:-1,"aria-selected":v===n,className:(0,l.Z)("tabs__item",o,{"tabs__item--active":v===n}),key:n,ref:function(e){return S.push(e)},onKeyDown:y,onFocus:b,onClick:b},t)}))),n?(0,a.cloneElement)(h.filter((function(e){return e.props.value===v}))[0],{className:"margin-vert--md"}):a.createElement("div",{className:"margin-vert--md"},h.map((function(e,n){return(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==v})}))))}},9443:function(e,n,t){var a=(0,t(7294).createContext)(void 0);n.Z=a},5323:function(e,n,t){t.r(n),t.d(n,{frontMatter:function(){return m},contentTitle:function(){return u},metadata:function(){return d},toc:function(){return c},default:function(){return g}});var a=t(7462),i=t(3366),r=(t(7294),t(3905)),l=t(4996),o=t(5064),p=t(8215),s=["components"],m={id:"specification-document",title:"6. \u89c4\u8303\u5316\u63a5\u53e3\u6587\u6863",sidebar_label:"6. \u89c4\u8303\u5316\u63a5\u53e3\u6587\u6863 (Swagger)"},u=void 0,d={unversionedId:"specification-document",id:"specification-document",isDocsHomePage:!1,title:"6. \u89c4\u8303\u5316\u63a5\u53e3\u6587\u6863",description:"6.1 \u4ec0\u4e48\u662f\u63a5\u53e3\u6587\u6863",source:"@site/docs/specification-document.mdx",sourceDirName:".",slug:"/specification-document",permalink:"/furion/docs/specification-document",editUrl:"https://gitee.com/dotnetchina/Furion/tree/master/handbook/docs/specification-document.mdx",version:"current",lastUpdatedBy:"\u767e\u5c0f\u50e7",lastUpdatedAt:1629484898,formattedLastUpdatedAt:"8/21/2021",frontMatter:{id:"specification-document",title:"6. \u89c4\u8303\u5316\u63a5\u53e3\u6587\u6863",sidebar_label:"6. \u89c4\u8303\u5316\u63a5\u53e3\u6587\u6863 (Swagger)"},sidebar:"docs",previous:{title:"5. \u52a8\u6001 WebAPI",permalink:"/furion/docs/dynamic-api-controller"},next:{title:"7. \u53cb\u597d\u5f02\u5e38\u5904\u7406",permalink:"/furion/docs/friendly-exception"}},c=[{value:"6.1 \u4ec0\u4e48\u662f\u63a5\u53e3\u6587\u6863",id:"61-\u4ec0\u4e48\u662f\u63a5\u53e3\u6587\u6863",children:[]},{value:"6.2 \u4e3a\u4ec0\u4e48\u8981\u5199\u63a5\u53e3\u6587\u6863",id:"62-\u4e3a\u4ec0\u4e48\u8981\u5199\u63a5\u53e3\u6587\u6863",children:[]},{value:"6.3 \u4e3a\u4ec0\u4e48\u9700\u8981\u89c4\u8303\u5316\u6587\u6863",id:"63-\u4e3a\u4ec0\u4e48\u9700\u8981\u89c4\u8303\u5316\u6587\u6863",children:[{value:"6.3.1 \u534f\u8bae\u89c4\u8303",id:"631-\u534f\u8bae\u89c4\u8303",children:[]},{value:"6.3.2 \u63a5\u53e3\u8def\u5f84\u89c4\u8303",id:"632-\u63a5\u53e3\u8def\u5f84\u89c4\u8303",children:[]},{value:"6.3.3 \u7248\u672c\u63a7\u5236\u89c4\u8303",id:"633-\u7248\u672c\u63a7\u5236\u89c4\u8303",children:[]},{value:"6.3.4 \u63a5\u53e3\u547d\u540d\u89c4\u8303",id:"634-\u63a5\u53e3\u547d\u540d\u89c4\u8303",children:[]},{value:"6.3.5 \u8bf7\u6c42\u53c2\u6570\u89c4\u8303",id:"635-\u8bf7\u6c42\u53c2\u6570\u89c4\u8303",children:[]},{value:"6.3.6 \u8fd4\u56de\u6570\u636e\u89c4\u8303",id:"636-\u8fd4\u56de\u6570\u636e\u89c4\u8303",children:[]}]},{value:"6.4 \u4ec0\u4e48\u662f Swagger",id:"64-\u4ec0\u4e48\u662f-swagger",children:[]},{value:"6.5 Swagger \u4f7f\u7528",id:"65-swagger-\u4f7f\u7528",children:[{value:"6.5.1 \u6ce8\u518c\u670d\u52a1",id:"651-\u6ce8\u518c\u670d\u52a1",children:[]},{value:"6.5.2 \u9ed8\u8ba4\u5730\u5740",id:"652-\u9ed8\u8ba4\u5730\u5740",children:[]},{value:"6.5.3 \u9ed8\u8ba4\u5206\u7ec4",id:"653-\u9ed8\u8ba4\u5206\u7ec4",children:[]},{value:"6.5.4 \u6587\u6863\u6ce8\u91ca",id:"654-\u6587\u6863\u6ce8\u91ca",children:[]},{value:"6.5.5 \u591a\u5206\u7ec4\u652f\u6301",id:"655-\u591a\u5206\u7ec4\u652f\u6301",children:[]},{value:"6.5.6 \u591a\u5206\u7ec4\u6392\u5e8f",id:"656-\u591a\u5206\u7ec4\u6392\u5e8f",children:[]},{value:"6.5.7 \u591a\u5206\u7ec4\u4fe1\u606f\u914d\u7f6e",id:"657-\u591a\u5206\u7ec4\u4fe1\u606f\u914d\u7f6e",children:[]},{value:"6.5.8 \u7ec4\u4e2d\u7ec4\uff08\u6807\u7b7e\uff09",id:"658-\u7ec4\u4e2d\u7ec4\uff08\u6807\u7b7e\uff09",children:[]},{value:"6.5.9 \u9ed8\u8ba4\u5c55\u5f00\u6240\u6709\u6587\u6863",id:"659-\u9ed8\u8ba4\u5c55\u5f00\u6240\u6709\u6587\u6863",children:[]},{value:"6.5.10 \u914d\u7f6e\u6587\u6863\u6807\u9898",id:"6510-\u914d\u7f6e\u6587\u6863\u6807\u9898",children:[]},{value:"6.5.11 \u6388\u6743\u63a7\u5236",id:"6511-\u6388\u6743\u63a7\u5236",children:[]},{value:"6.5.12 \u5728\u7ebf\u6d4b\u8bd5",id:"6512-\u5728\u7ebf\u6d4b\u8bd5",children:[]},{value:"6.5.13 \u6027\u80fd\u76d1\u89c6 MiniProfiler",id:"6513-\u6027\u80fd\u76d1\u89c6-miniprofiler",children:[]},{value:"6.5.14 \u5b9a\u4e49\u63a5\u53e3\u8f93\u51fa\u7c7b\u578b",id:"6514-\u5b9a\u4e49\u63a5\u53e3\u8f93\u51fa\u7c7b\u578b",children:[]},{value:"6.5.15 \u9690\u85cf\u7279\u5b9a\u5206\u7ec4",id:"6515-\u9690\u85cf\u7279\u5b9a\u5206\u7ec4",children:[]},{value:"6.5.16 \u4e2d\u6587\u4e71\u7801\u95ee\u9898",id:"6516-\u4e2d\u6587\u4e71\u7801\u95ee\u9898",children:[]},{value:"6.5.17 \u751f\u4ea7\u73af\u5883\u4e2d\u5173\u95ed Swagger",id:"6517-\u751f\u4ea7\u73af\u5883\u4e2d\u5173\u95ed-swagger",children:[]},{value:"6.5.18 \u8bbe\u7f6e Example Value \u9ed8\u8ba4\u503c",id:"6518-\u8bbe\u7f6e-example-value-\u9ed8\u8ba4\u503c",children:[]},{value:"6.5.19 \u81ea\u5b9a\u4e49 Swagger \u914d\u7f6e",id:"6519-\u81ea\u5b9a\u4e49-swagger-\u914d\u7f6e",children:[]},{value:"6.5.20 \u914d\u7f6e Swagger\u7684 Schemes",id:"6520-\u914d\u7f6e-swagger\u7684-schemes",children:[]},{value:"6.5.21 \u81ea\u5b9a\u4e49 swagger.json \u8def\u7531\u6a21\u677f",id:"6521-\u81ea\u5b9a\u4e49-swaggerjson-\u8def\u7531\u6a21\u677f",children:[]},{value:"6.5.22 \u5173\u4e8e application/x-www-form-urlencoded \u8bf7\u6c42",id:"6522-\u5173\u4e8e-applicationx-www-form-urlencoded-\u8bf7\u6c42",children:[]},{value:"6.5.23 Swagger \u51fa\u73b0 CORS \u95ee\u9898\u89e3\u51b3",id:"6523-swagger-\u51fa\u73b0-cors-\u95ee\u9898\u89e3\u51b3",children:[]},{value:"6.5.24 Swagger \u51fa\u73b0\u9ed8\u8ba4 xml \u53c2\u6570\u95ee\u9898\u89e3\u51b3",id:"6524-swagger-\u51fa\u73b0\u9ed8\u8ba4-xml-\u53c2\u6570\u95ee\u9898\u89e3\u51b3",children:[]},{value:"6.5.25 Swagger \u591a\u8bed\u8a00\u652f\u6301",id:"6525-swagger-\u591a\u8bed\u8a00\u652f\u6301",children:[]},{value:"6.5.26 \u81ea\u5b9a\u4e49\u903b\u8f91\u63a7\u5236 Swagger \u6bcf\u4e00\u4e2a api \u53ef\u89c1\u6027",id:"6526-\u81ea\u5b9a\u4e49\u903b\u8f91\u63a7\u5236-swagger-\u6bcf\u4e00\u4e2a-api-\u53ef\u89c1\u6027",children:[]},{value:"6.5.27 \u914d\u7f6e MVC \u63a7\u5236\u5668\u652f\u6301\u89c4\u8303\u5316\u5904\u7406",id:"6527-\u914d\u7f6e-mvc-\u63a7\u5236\u5668\u652f\u6301\u89c4\u8303\u5316\u5904\u7406",children:[]}]},{value:"6.6 SpecificationDocumentSettings \u914d\u7f6e",id:"66-specificationdocumentsettings-\u914d\u7f6e",children:[]},{value:"6.7 \u7edf\u4e00\u8fd4\u56de\u503c\u6a21\u578b/\u89c4\u8303\u5316\u7ed3\u679c/API \u8fd4\u56de\u503c",id:"67-\u7edf\u4e00\u8fd4\u56de\u503c\u6a21\u578b\u89c4\u8303\u5316\u7ed3\u679capi-\u8fd4\u56de\u503c",children:[{value:"6.7.1 \u6392\u9664\u89c4\u8303\u5316\u5904\u7406",id:"671-\u6392\u9664\u89c4\u8303\u5316\u5904\u7406",children:[]},{value:"6.7.2 \u89c4\u8303\u5316\u7ed3\u679c\u6dfb\u52a0\u989d\u5916\u6570\u636e",id:"672-\u89c4\u8303\u5316\u7ed3\u679c\u6dfb\u52a0\u989d\u5916\u6570\u636e",children:[]},{value:"6.7.3 \u81ea\u5b9a\u4e49\u7279\u522b\u63a5\u53e3\u89c4\u8303\u5316\u7ed3\u679c",id:"673-\u81ea\u5b9a\u4e49\u7279\u522b\u63a5\u53e3\u89c4\u8303\u5316\u7ed3\u679c",children:[]}]},{value:"6.8 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"68-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],k={toc:c};function g(e){var n=e.components,t=(0,i.Z)(e,s);return(0,r.kt)("wrapper",(0,a.Z)({},k,t,{components:n,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"61-\u4ec0\u4e48\u662f\u63a5\u53e3\u6587\u6863"},"6.1 \u4ec0\u4e48\u662f\u63a5\u53e3\u6587\u6863"),(0,r.kt)("p",null,"\u5728\u73b0\u5728\u79fb\u52a8\u4e3a\u738b\u3001\u591a\u7aef\u4e92\u8f85\u3001\u524d\u7aef\u767e\u82b1\u9f50\u653e\u7684\u5f00\u653e\u65f6\u4ee3\uff0c\u4e0d\u518d\u662f\u4e00\u4eba\u5305\u63fd\u5f0f\u5f00\u53d1\uff0c\u5927\u5bb6\u5404\u53f8\u5176\u804c\uff0c\u540e\u7aef\u5de5\u7a0b\u5e08\u8d1f\u8d23\u63a5\u53e3\u5f00\u53d1\uff0c\u524d\u7aef\u8d1f\u8d23\u63a5\u53e3\u8054\u8c03\uff0c\u4e5f\u5c31\u662f\u4e92\u8054\u7f51\u73b0\u5728\u6d41\u884c\u7684\u524d\u540e\u7aef\u5206\u79bb\u67b6\u6784\u3002"),(0,r.kt)("p",null,"\u6240\u4ee5\u5c31\u9700\u8981\u7531\u524d\u540e\u7aef\u5de5\u7a0b\u5e08\u5171\u540c\u5b9a\u4e49\u63a5\u53e3\uff0c\u7f16\u5199\u63a5\u53e3\u6587\u6863\uff0c\u4e4b\u540e\u5927\u5bb6\u6309\u7167\u8fd9\u4e2a\u63a5\u53e3\u6587\u6863\u8fdb\u884c\u5f00\u53d1\u3001\u7ef4\u62a4\u53ca\u5f00\u653e\u7ed9\u7b2c\u4e09\u65b9\u3002"),(0,r.kt)("h2",{id:"62-\u4e3a\u4ec0\u4e48\u8981\u5199\u63a5\u53e3\u6587\u6863"},"6.2 \u4e3a\u4ec0\u4e48\u8981\u5199\u63a5\u53e3\u6587\u6863"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u80fd\u591f\u8ba9\u524d\u7aef\u5f00\u53d1\u4e0e\u540e\u53f0\u5f00\u53d1\u4eba\u5458\u66f4\u597d\u7684\u914d\u5408\uff0c\u63d0\u9ad8\u5de5\u4f5c\u6548\u7387"),(0,r.kt)("li",{parentName:"ul"},"\u9879\u76ee\u8fed\u4ee3\u6216\u8005\u9879\u76ee\u4eba\u5458\u66f4\u8fed\u65f6\uff0c\u65b9\u4fbf\u540e\u671f\u4eba\u5458\u67e5\u770b\u548c\u7ef4\u62a4"),(0,r.kt)("li",{parentName:"ul"},"\u65b9\u4fbf\u6d4b\u8bd5\u4eba\u5458\u8fdb\u884c\u63a5\u53e3\u6d4b\u8bd5")),(0,r.kt)("h2",{id:"63-\u4e3a\u4ec0\u4e48\u9700\u8981\u89c4\u8303\u5316\u6587\u6863"},"6.3 \u4e3a\u4ec0\u4e48\u9700\u8981\u89c4\u8303\u5316\u6587\u6863"),(0,r.kt)("p",null,"\u7531\u4e8e\u6bcf\u4e2a\u516c\u53f8\u540e\u7aef\u4eba\u5458\u6280\u672f\u53c2\u5dee\u4e0d\u9f50\uff0c\u6280\u672f\u6587\u6863\u80fd\u529b\u4e5f\u4e0d\u4f8b\u5916\uff0c\u5bfc\u81f4\u63a5\u53e3\u5b9a\u4e49\u53ca\u6587\u6863\u4e94\u82b1\u516b\u95e8\uff0c\u4e0d\u540c\u9879\u76ee\u6216\u4e0d\u540c\u516c\u53f8\u5bf9\u63a5\u6781\u5176\u56f0\u96be\uff0c\u800c\u4e14\u4f53\u9a8c\u7cdf\u7cd5\u3002\u6240\u4ee5\uff0c\u65e0\u89c4\u77e9\u4e0d\u6210\u65b9\u5706\uff0c\u4e3a\u4e86\u5f00\u53d1\u4eba\u5458\u95f4\u66f4\u597d\u7684\u914d\u5408\uff0c\u8feb\u5207\u9700\u8981\u6574\u7406\u51fa\u4e00\u5957\u89c4\u8303\u3002"),(0,r.kt)("p",null,"\u901a\u5e38\u63a5\u53e3\u89c4\u8303\u5206\u4e3a\u516d\u4e2a\u90e8\u5206\uff1a"),(0,r.kt)("h3",{id:"631-\u534f\u8bae\u89c4\u8303"},"6.3.1 \u534f\u8bae\u89c4\u8303"),(0,r.kt)("p",null,"\u4e3a\u4e86\u786e\u4fdd\u4e0d\u540c\u7cfb\u7edf/\u6a21\u5757\u95f4\u7684\u6570\u636e\u4ea4\u4e92\uff0c\u9700\u8981\u4e8b\u5148\u7ea6\u5b9a\u597d\u901a\u8baf\u534f\u8bae\uff0c\u5982\uff1aTCP\u3001HTTP\u3001HTTPS \u534f\u8bae\u3002\u4e3a\u4e86\u786e\u4fdd\u6570\u636e\u4ea4\u4e92\u5b89\u5168\uff0c\u5efa\u8bae\u4f7f\u7528 HTTPS \u534f\u8bae"),(0,r.kt)("h3",{id:"632-\u63a5\u53e3\u8def\u5f84\u89c4\u8303"},"6.3.2 \u63a5\u53e3\u8def\u5f84\u89c4\u8303"),(0,r.kt)("p",null,"\u4f5c\u4e3a\u63a5\u53e3\u8def\u5f84\uff0c\u4e3a\u4e86\u65b9\u4fbf\u6e05\u6670\u7684\u533a\u5206\u6765\u81ea\u4e0d\u540c\u7684\u7cfb\u7edf\uff0c\u53ef\u4ee5\u91c7\u7528\u4e0d\u540c\u7cfb\u7edf/\u6a21\u5757\u540d\u4f5c\u4e3a\u63a5\u53e3\u8def\u5f84\u524d\u7f00\uff0c\u5982\uff1a\u652f\u4ed8\u6a21\u5757\uff1a",(0,r.kt)("inlineCode",{parentName:"p"},"/pay/xxx"),"\uff0c\u8ba2\u5355\u6a21\u5757\uff1a",(0,r.kt)("inlineCode",{parentName:"p"},"/order/xxx")),(0,r.kt)("h3",{id:"633-\u7248\u672c\u63a7\u5236\u89c4\u8303"},"6.3.3 \u7248\u672c\u63a7\u5236\u89c4\u8303"),(0,r.kt)("p",null,'\u4e3a\u4e86\u4fbf\u4e8e\u540e\u671f\u63a5\u53e3\u7684\u5347\u7ea7\u548c\u7ef4\u62a4\uff0c\u5efa\u8bae\u5728\u63a5\u53e3\u8def\u5f84\u4e2d\u52a0\u5165\u7248\u672c\u53f7\uff0c\u4fbf\u4e8e\u7ba1\u7406\uff0c\u5b9e\u73b0\u63a5\u53e3\u591a\u7248\u672c\u7684\u53ef\u7ef4\u62a4\u6027\u3002\u5982\uff1a\u63a5\u53e3\u8def\u5f84\u4e2d\u6dfb\u52a0\u7c7b\u4f3c"',(0,r.kt)("inlineCode",{parentName:"p"},"v1"),'"\u3001"',(0,r.kt)("inlineCode",{parentName:"p"},"v2"),'"\u7b49\u7248\u672c\u53f7'),(0,r.kt)("h3",{id:"634-\u63a5\u53e3\u547d\u540d\u89c4\u8303"},"6.3.4 \u63a5\u53e3\u547d\u540d\u89c4\u8303"),(0,r.kt)("p",null,'\u548c C# \u547d\u540d\u89c4\u8303\u4e00\u6837\uff0c\u597d\u7684\u3001\u7edf\u4e00\u7684\u63a5\u53e3\u547d\u540d\u89c4\u8303\uff0c\u4e0d\u4ec5\u53ef\u4ee5\u589e\u5f3a\u5176\u53ef\u8bfb\u6027\uff0c\u800c\u4e14\u8fd8\u4f1a\u51cf\u5c11\u5f88\u591a\u4e0d\u5fc5\u8981\u7684\u53e3\u5934/\u4e66\u9762\u4e0a\u7684\u89e3\u91ca\u3002\u53ef\u4f7f\u7528"\u9a7c\u5cf0\u547d\u540d\u6cd5"\u6309\u7167\u5b9e\u73b0\u63a5\u53e3\u7684',(0,r.kt)("strong",{parentName:"p"},"\u4e1a\u52a1\u7c7b\u578b\u3001\u4e1a\u52a1\u573a\u666f"),"\u7b49\u547d\u540d\uff0c\u6709\u5fc5\u8981\u65f6\u53ef\u91c7\u53d6\u591a\u7ea7\u76ee\u5f55\u547d\u540d\uff0c\u4f46\u76ee\u5f55\u4e0d\u5b9c\u8fc7\u957f\uff0c\u4e24\u7ea7\u76ee\u5f55\u8f83\u4e3a\u9002\u5b9c"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"\u5e38\u89c1\u547d\u540d\u65b9\u5f0f"),":",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"\u63a5\u53e3\u540d\u79f0\u52a8\u8bcd\u524d/\u540e\u7f00\u5316"),"\uff1a \u63a5\u53e3\u540d\u79f0\u4ee5\u63a5\u53e3\u6570\u636e\u64cd\u4f5c\u7684\u52a8\u8bcd\u4e3a\u524d/\u540e\u7f00\uff0c\u5e38\u89c1\u52a8\u8bcd\u6709\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"Add\u3001Delete\u3001Update\u3001Query\u3001Get\u3001Send\u3001Save\u3001Detail\u3001List"),"\u7b49\uff0c\u5982\uff1a\u65b0\u5efa\u7528\u6237 ",(0,r.kt)("inlineCode",{parentName:"li"},"AddUser"),"\u3001\u67e5\u8be2\u8ba2\u5355\u8be6\u60c5 ",(0,r.kt)("inlineCode",{parentName:"li"},"QueryOrderDetail"),"\u3002"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"\u63a5\u53e3\u540d\u79f0\u52a8\u8bcd + \u8bf7\u6c42\u65b9\u5f0f"),"\uff1a\u63a5\u53e3\u8def\u5f84\u4e2d\u5305\u542b\u5177\u4f53\u63a5\u53e3\u540d\u79f0\u7684\u540d\u8bcd\uff0c\u63a5\u53e3\u6570\u636e\u64cd\u4f5c\u52a8\u4f5c\u4ee5 HTTP \u8bf7\u6c42\u65b9\u5f0f\u6765\u533a\u5206\u3002\u5e38\u7528\u7684 HTTP \u8bf7\u6c42\u65b9\u5f0f\u6709\uff1a",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"GET"),"\uff1a\u4ece\u670d\u52a1\u5668\u53d6\u51fa\u8d44\u6e90\uff08\u4e00\u9879\u6216\u591a\u9879\uff09"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"POST"),"\uff1a\u5728\u670d\u52a1\u5668\u65b0\u5efa\u4e00\u4e2a\u8d44\u6e90"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"PUT"),"\uff1a\u5728\u670d\u52a1\u5668\u66f4\u65b0\u8d44\u6e90\uff08\u5ba2\u6237\u7aef\u63d0\u4f9b\u6539\u53d8\u540e\u7684\u5b8c\u6574\u8d44\u6e90\uff09"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"PATCH"),"\uff1a\u5728\u670d\u52a1\u5668\u66f4\u65b0\u8d44\u6e90\uff08\u5ba2\u6237\u7aef\u63d0\u4f9b\u6539\u53d8\u7684\u5c5e\u6027\uff09"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"DELETE"),"\uff1a\u4ece\u670d\u52a1\u5668\u5220\u9664\u8d44\u6e90")))))),(0,r.kt)("h3",{id:"635-\u8bf7\u6c42\u53c2\u6570\u89c4\u8303"},"6.3.5 \u8bf7\u6c42\u53c2\u6570\u89c4\u8303"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"\u8bf7\u6c42\u65b9\u5f0f"),"\uff1a\u6309\u7167 ",(0,r.kt)("inlineCode",{parentName:"li"},"GET\u3001POST\u3001PUT")," \u7b49\u542b\u4e49\u5b9a\u4e49\uff0c\u907f\u514d\u51fa\u73b0\u4e0d\u4e00\u81f4\u73b0\u8c61\uff0c\u5bf9\u4eba\u9020\u6210\u8bef\u89e3\u3001\u6b67\u4e49",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"\u8bf7\u6c42\u5934"),"\uff1a\u8bf7\u6c42\u5934\u6839\u636e\u9879\u76ee\u9700\u6c42\u6dfb\u52a0\u914d\u7f6e\u53c2\u6570\u3002\u5982\uff1a\u8bf7\u6c42\u6570\u636e\u683c\u5f0f\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"accept=application/json")," \u7b49\u3002\u5982\u6709\u9700\u8981\uff0c\u8bf7\u6c42\u5934\u53ef\u6839\u636e\u9879\u76ee\u9700\u6c42\u8981\u6c42\u4f20\u5165\u7528\u6237 token\u3001\u552f\u4e00\u9a8c\u7b7e\u7801\u7b49\u52a0\u5bc6\u6570\u636e"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"\u8bf7\u6c42\u53c2\u6570/\u8bf7\u6c42\u4f53"),"\uff1a \u8bf7\u6c42\u53c2\u6570\u5b57\u6bb5\uff0c\u5c3d\u53ef\u80fd\u4e0e\u6570\u636e\u5e93\u8868\u5b57\u6bb5\u3001\u5bf9\u8c61\u5c5e\u6027\u540d\u7b49\u4fdd\u6301\u4e00\u81f4\uff0c\u56e0\u4e3a\u4fdd\u6301\u4e00\u81f4\u662f\u6700\u7701\u4e8b\uff0c\u6700\u8212\u670d\u7684\u4e00\u4ef6\u4e8b")))),(0,r.kt)("h3",{id:"636-\u8fd4\u56de\u6570\u636e\u89c4\u8303"},"6.3.6 \u8fd4\u56de\u6570\u636e\u89c4\u8303"),(0,r.kt)("p",null,"\u7edf\u4e00\u89c4\u8303\u8fd4\u56de\u6570\u636e\u7684\u683c\u5f0f\uff0c\u5bf9\u5df1\u5bf9\u5f7c\u90fd\u6709\u597d\u5904\uff0c\u6b64\u5904\u4ee5 json \u683c\u5f0f\u4e3a\u4f8b\u3002\u8fd4\u56de\u6570\u636e\u5e94\u5305\u542b\uff1a",(0,r.kt)("strong",{parentName:"p"},"\u8fd4\u56de\u72b6\u6001\u7801\u3001\u8fd4\u56de\u72b6\u6001\u4fe1\u606f\u3001\u5177\u4f53\u6570\u636e"),"\u3002",(0,r.kt)("strong",{parentName:"p"},"\u8fd4\u56de\u6570\u636e\u4e2d\u7684\u72b6\u6001\u7801\u3001\u72b6\u6001\u4fe1\u606f\uff0c\u5e38\u6307\u5177\u4f53\u7684\u4e1a\u52a1\u72b6\u6001\uff0c\u4e0d\u5efa\u8bae\u548c HTTP \u72b6\u6001\u7801\u6df7\u5728\u4e00\u8d77"),"\u3002HTTP \u72b6\u6001\uff0c\u662f\u7528\u6765\u4f53\u73b0 HTTP \u94fe\u8def\u72b6\u6001\u60c5\u51b5\uff0c\u5982\uff1a404-Not Found\u3002HTTP \u72b6\u6001\u7801\u548c json \u7ed3\u679c\u4e2d\u7684\u72b6\u6001\u7801\uff0c\u5e76\u5b58\u5c1a\u53ef\uff0c\u7528\u4e8e\u4f53\u73b0\u4e0d\u540c\u7ef4\u5ea6\u7684\u72b6\u6001\u3002"),(0,r.kt)("h2",{id:"64-\u4ec0\u4e48\u662f-swagger"},"6.4 \u4ec0\u4e48\u662f Swagger"),(0,r.kt)("p",null,"\u76f8\u4fe1\u65e0\u8bba\u662f\u524d\u7aef\u8fd8\u662f\u540e\u7aef\u5f00\u53d1\uff0c\u90fd\u6216\u591a\u6216\u5c11\u5730\u88ab\u63a5\u53e3\u6587\u6863\u6298\u78e8\u8fc7\u3002\u524d\u7aef\u7ecf\u5e38\u62b1\u6028\u540e\u7aef\u7ed9\u7684\u63a5\u53e3\u6587\u6863\u4e0e\u5b9e\u9645\u60c5\u51b5\u4e0d\u4e00\u81f4\u3002\u540e\u7aef\u53c8\u89c9\u5f97\u7f16\u5199\u53ca\u7ef4\u62a4\u63a5\u53e3\u6587\u6863\u4f1a\u8017\u8d39\u4e0d\u5c11\u7cbe\u529b\uff0c\u7ecf\u5e38\u6765\u4e0d\u53ca\u66f4\u65b0\u3002"),(0,r.kt)("p",null,"\u5176\u5b9e\u65e0\u8bba\u662f\u524d\u7aef\u8c03\u7528\u540e\u7aef\uff0c\u8fd8\u662f\u540e\u7aef\u8c03\u7528\u540e\u7aef\uff0c\u90fd\u671f\u671b\u6709\u4e00\u4e2a\u597d\u7684\u63a5\u53e3\u6587\u6863\u3002\u4f46\u662f\u8fd9\u4e2a\u63a5\u53e3\u6587\u6863\u5bf9\u4e8e\u7a0b\u5e8f\u5458\u6765\u8bf4\uff0c\u5c31\u8ddf\u6ce8\u91ca\u4e00\u6837\uff0c\u7ecf\u5e38\u4f1a\u62b1\u6028\u522b\u4eba\u5199\u7684\u4ee3\u7801\u6ca1\u6709\u5199\u6ce8\u91ca\uff0c\u7136\u800c\u81ea\u5df1\u5199\u8d77\u4ee3\u7801\u8d77\u6765\uff0c\u6700\u8ba8\u538c\u7684\uff0c\u4e5f\u662f\u5199\u6ce8\u91ca\u3002\u6240\u4ee5\u4ec5\u4ec5\u53ea\u901a\u8fc7\u5f3a\u5236\u6765\u89c4\u8303\u5927\u5bb6\u662f\u4e0d\u591f\u7684\uff0c\u968f\u7740\u65f6\u95f4\u63a8\u79fb\uff0c\u7248\u672c\u8fed\u4ee3\uff0c\u63a5\u53e3\u6587\u6863\u5f80\u5f80\u5f88\u5bb9\u6613\u5c31\u8ddf\u4e0d\u4e0a\u4ee3\u7801\u4e86\u3002"),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"\u53d1\u73b0\u4e86\u75db\u70b9\u5c31\u8981\u53bb\u627e\u89e3\u51b3\u65b9\u6848\u3002\u89e3\u51b3\u65b9\u6848\u7528\u7684\u4eba\u591a\u4e86\uff0c\u5c31\u6210\u4e86\u6807\u51c6\u7684\u89c4\u8303\uff0c\u8fd9\u5c31\u662f ",(0,r.kt)("inlineCode",{parentName:"strong"},"Swagger")," \u7684\u7531\u6765"),"\u3002"),(0,r.kt)("p",null,"\u901a\u8fc7\u8fd9\u5957\u89c4\u8303\uff0c\u4f60\u53ea\u9700\u8981\u6309\u7167\u5b83\u7684\u89c4\u8303\u53bb\u5b9a\u4e49\u63a5\u53e3\u53ca\u63a5\u53e3\u76f8\u5173\u7684\u4fe1\u606f\u3002\u518d\u901a\u8fc7 ",(0,r.kt)("inlineCode",{parentName:"p"},"Swagger")," \u884d\u751f\u51fa\u6765\u7684\u4e00\u7cfb\u5217\u9879\u76ee\u548c\u5de5\u5177\uff0c\u5c31\u53ef\u4ee5\u505a\u5230\u751f\u6210\u5404\u79cd\u683c\u5f0f\u7684\u63a5\u53e3\u6587\u6863\uff0c\u751f\u6210\u591a\u79cd\u8bed\u8a00\u7684\u5ba2\u6237\u7aef\u548c\u670d\u52a1\u7aef\u7684\u4ee3\u7801\uff0c\u4ee5\u53ca\u5728\u7ebf\u63a5\u53e3\u8c03\u8bd5\u9875\u9762\u7b49\u7b49\u3002"),(0,r.kt)("p",null,"\u8fd9\u6837\uff0c\u5982\u679c\u6309\u7167\u65b0\u7684\u5f00\u53d1\u6a21\u5f0f\uff0c\u5728\u5f00\u53d1\u65b0\u7248\u672c\u6216\u8005\u8fed\u4ee3\u7248\u672c\u7684\u65f6\u5019\uff0c\u53ea\u9700\u8981\u66f4\u65b0 ",(0,r.kt)("inlineCode",{parentName:"p"},"Swagger")," \u63cf\u8ff0\u6587\u4ef6\uff0c\u5c31\u53ef\u4ee5\u81ea\u52a8\u751f\u6210\u63a5\u53e3\u6587\u6863\u548c\u5ba2\u6237\u7aef\u670d\u52a1\u7aef\u4ee3\u7801\uff0c\u505a\u5230\u8c03\u7528\u7aef\u4ee3\u7801\u3001\u670d\u52a1\u7aef\u4ee3\u7801\u4ee5\u53ca\u63a5\u53e3\u6587\u6863\u7684\u4e00\u81f4\u6027\u3002"),(0,r.kt)("p",null,"\u6240\u4ee5\uff0cSwagger \u662f\u4e00\u4e2a\u89c4\u8303\u548c\u5b8c\u6574\u7684\u6846\u67b6\uff0c\u7528\u4e8e\u751f\u6210\u3001\u63cf\u8ff0\u3001\u8c03\u7528\u548c\u53ef\u89c6\u5316",(0,r.kt)("inlineCode",{parentName:"p"},"RESTful")," \u98ce\u683c\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"Web")," \u670d\u52a1\u3002"),(0,r.kt)("p",null,"\u603b\u4f53\u76ee\u6807\u662f\u4f7f\u5ba2\u6237\u7aef\u548c\u6587\u4ef6\u7cfb\u7edf\u4f5c\u4e3a\u670d\u52a1\u5668\u4ee5\u540c\u6837\u7684\u901f\u5ea6\u6765\u66f4\u65b0\u3002\u6587\u4ef6\u7684\u65b9\u6cd5\u3001\u53c2\u6570\u548c\u6a21\u578b\u7d27\u5bc6\u96c6\u6210\u5230\u670d\u52a1\u5668\u7aef\u7684\u4ee3\u7801\uff0c\u5141\u8bb8 API \u6765\u59cb\u7ec8\u4fdd\u6301\u540c\u6b65\u3002",(0,r.kt)("inlineCode",{parentName:"p"},"Swagger")," \u8ba9\u90e8\u7f72\u7ba1\u7406\u548c\u4f7f\u7528\u529f\u80fd\u5f3a\u5927\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"API")," \u4ece\u672a\u5982\u6b64\u7b80\u5355\u3002"),(0,r.kt)("h2",{id:"65-swagger-\u4f7f\u7528"},"6.5 Swagger \u4f7f\u7528"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u4e86\u975e\u5e38\u65b9\u4fbf\u4e14\u7075\u6d3b\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"Swagger")," \u914d\u7f6e\uff0c\u65e0\u9700\u589e\u52a0\u989d\u5916\u5b66\u4e60\u6210\u672c\u3002"),(0,r.kt)("h3",{id:"651-\u6ce8\u518c\u670d\u52a1"},"6.5.1 \u6ce8\u518c\u670d\u52a1"),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u5907\u6ce8")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},(0,r.kt)("inlineCode",{parentName:"p"},".UseInject()")," \u5df2\u7ecf\u5305\u542b\u4e86 ",(0,r.kt)("inlineCode",{parentName:"p"},".UseSpecificationDocuments()")," \u6ce8\u518c\uff0c\u65e0\u9700\u518d\u6b21\u6ce8\u518c\u3002"))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:'{11,21} title="Furion.Web.Core\\FurWebCoreStartup.cs"',"{11,21}":!0,title:'"Furion.Web.Core\\FurWebCoreStartup.cs"'},"using Microsoft.AspNetCore.Builder;\nusing Microsoft.AspNetCore.Hosting;\nusing Microsoft.Extensions.DependencyInjection;\nusing Microsoft.Extensions.Hosting;\n\nnamespace Furion.Web.Core\n{\n [AppStartup(800)]\n public sealed class FurWebCoreStartup : AppStartup\n {\n public void ConfigureServices(IServiceCollection services)\n {\n services.AddSpecificationDocuments();\n services.AddControllers();\n }\n\n public void Configure(IApplicationBuilder app, IWebHostEnvironment env)\n {\n // Other Codes\n\n app.UseSpecificationDocuments();\n\n app.UseEndpoints(endpoints =>\n {\n endpoints.MapControllers();\n });\n }\n }\n}\n")),(0,r.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u5c0f\u77e5\u8bc6")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},(0,r.kt)("inlineCode",{parentName:"p"},"services.AddSpecificationDocuments()")," \u901a\u5e38\u548c ",(0,r.kt)("inlineCode",{parentName:"p"},".AddDynamicApiControllers()")," \u6210\u5bf9\u51fa\u73b0\u3002"))),(0,r.kt)("h3",{id:"652-\u9ed8\u8ba4\u5730\u5740"},"6.5.2 \u9ed8\u8ba4\u5730\u5740"),(0,r.kt)("p",null,"\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\uff0c\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"p"},"\u89c4\u8303\u5316\u6587\u6863")," \u5730\u5740\u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"/api")," \u76ee\u5f55\uff0c",(0,r.kt)("strong",{parentName:"p"},"\u652f\u6301\u81ea\u5b9a\u4e49\u914d\u7f6e"),"\u3002"),(0,r.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,r.kt)("img",{src:(0,l.Z)("img/swagger1.png")}),(0,r.kt)("p",null,"\u53ef\u4ee5\u901a\u8fc7\u4e24\u79cd\u65b9\u5f0f\u914d\u7f6e\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},'app.UseInject("\u8def\u7531")')," \u65b9\u5f0f\uff0c\u5982")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'app.UseInject("testapi"); // \u90a3\u4e48 /testapi \u5c31\u662f\u89c4\u8303\u5316\u5730\u5740\n')),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e"),"\uff1a")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{3}","{3}":!0},'{\n "SpecificationDocumentSettings": {\n "RoutePrefix": "testapi"\n }\n}\n')),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"\u914d\u7f6e\u6587\u4ef6\u4f18\u5148\u7ea7\u5927\u4e8e ",(0,r.kt)("inlineCode",{parentName:"strong"},"UseInject()")," \u65b9\u5f0f")),(0,r.kt)("h3",{id:"653-\u9ed8\u8ba4\u5206\u7ec4"},"6.5.3 \u9ed8\u8ba4\u5206\u7ec4"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\u9ed8\u8ba4\u5206\u7ec4\u540d\u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"Default"),"\uff0c",(0,r.kt)("strong",{parentName:"p"},"\u652f\u6301\u81ea\u5b9a\u4e49\u914d\u7f6e"),"\u3002"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{3}","{3}":!0},'{\n "SpecificationDocumentSettings": {\n "DefaultGroupName": "MyGroup"\n }\n}\n')),(0,r.kt)("h3",{id:"654-\u6587\u6863\u6ce8\u91ca"},"6.5.4 \u6587\u6863\u6ce8\u91ca"),(0,r.kt)("p",null,"\u89c4\u8303\u5316\u6587\u6863\u9ed8\u8ba4\u626b\u63cf ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion.Application"),"\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"Furion.Web.Core"),"\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"Furion.Web.Entry")," \u4e09\u4e2a\u7a0b\u5e8f\u96c6",(0,r.kt)("inlineCode",{parentName:"p"},".xml")," \u6ce8\u91ca\u6587\u4ef6\uff0c",(0,r.kt)("strong",{parentName:"p"},"\u652f\u6301\u81ea\u5b9a\u4e49\u914d\u7f6e"),"\u3002"),(0,r.kt)("p",null,"\u53ea\u652f\u6301 ",(0,r.kt)("inlineCode",{parentName:"p"},"///")," \u6807\u8bc6\u7684\u6ce8\u91ca\u8bed\u6cd5\uff0c\u5982\uff1a",(0,r.kt)("strong",{parentName:"p"},"\u7c7b\u3001\u65b9\u6cd5\u3001\u5c5e\u6027\u3001\u53c2\u6570\u3001\u8fd4\u56de\u503c\u3001\u9a8c\u8bc1\u7279\u6027"),"\u3002"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{5-7,10-13,19-23}","{5-7,10-13,19-23}":!0},'using Furion.DynamicApiController;\n\nnamespace Furion.Application\n{\n /// \n /// \u7c7b\u6ce8\u91ca\n /// \n public class FurionAppService : IDynamicApiController\n {\n /// \n /// \u65b9\u6cd5\u6ce8\u91ca\n /// \n /// \n public string Get()\n {\n return nameof(Furion);\n }\n\n /// \n /// \u5e26 ID \u53c2\u6570\u7684\u65b9\u6cd5\u6ce8\u91ca\n /// \n /// \n /// \n public int Get(int id)\n {\n return id;\n }\n }\n}\n')),(0,r.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,r.kt)("img",{src:(0,l.Z)("img/swagger2.png")}),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u5c0f\u63d0\u793a")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u5982\u679c\u6587\u6863\u6ce8\u91ca\u6ca1\u6709\u663e\u793a\uff0c\u8bf7\u68c0\u67e5\u9879\u76ee ",(0,r.kt)("inlineCode",{parentName:"p"},"\u5c5e\u6027->\u751f\u6210->\u8f93\u51fa")," \u4e2d XML \u6587\u6863\u662f\u5426\u914d\u7f6e\u8f93\u51fa\u8def\u5f84\u3002",(0,r.kt)("strong",{parentName:"p"},"\u6ce8\u610f\uff1a\u53ea\u6709\u4e0d\u5e26\u8def\u5f84\u7684 \u3010\u9879\u76ee\u540d\u79f0.xml\u3011 \u624d\u4f1a\u81ea\u52a8\u52a0\u8f7d\u3002")))),(0,r.kt)("div",{className:"admonition admonition-info alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u8bf4\u660e")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},(0,r.kt)("inlineCode",{parentName:"p"},"Debug")," \u6a21\u5f0f\u4e0b\u548c ",(0,r.kt)("inlineCode",{parentName:"p"},"Release")," \u6a21\u5f0f\u4e0b\u7684\u6ce8\u91ca\u6587\u4ef6\u662f\u4e0d\u901a\u7528\u7684\uff0c\u6240\u4ee5\u5bfc\u81f4\u5f88\u591a\u5f00\u53d1\u8005\u53d1\u5e03\u5230\u670d\u52a1\u5668\u4e0a\u53d1\u73b0\u6ca1\u6709\u663e\u793a\u6ce8\u91ca\u3002\u6211\u4eec\u53ea\u9700\u8981\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Visual Studio")," \u4e2d\u5207\u6362 ",(0,r.kt)("inlineCode",{parentName:"p"},"Debug")," \u6a21\u5f0f\u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"Release"),"\uff0c\u7136\u540e\u91cd\u65b0\u914d\u7f6e\u4e00\u6b21\u5373\u53ef\u3002"),(0,r.kt)("p",{parentName:"div"},"\u8fd9\u6837\u4e0d\u7ba1\u662f ",(0,r.kt)("inlineCode",{parentName:"p"},"Debug")," \u8fd8\u662f ",(0,r.kt)("inlineCode",{parentName:"p"},"Release")," \u6a21\u5f0f\u90fd\u4f1a\u663e\u793a\u6ce8\u91ca\u4e86\u3002"))),(0,r.kt)("h3",{id:"655-\u591a\u5206\u7ec4\u652f\u6301"},"6.5.5 \u591a\u5206\u7ec4\u652f\u6301"),(0,r.kt)("p",null,"\u591a\u5206\u7ec4\u662f\u4e00\u4e2a\u7cfb\u7edf\u4e2d\u5fc5\u5907\u529f\u80fd\uff0c\u6211\u4eec\u53ef\u4ee5\u5c06\u7cfb\u7edf\u5212\u5206\u4e3a\u591a\u4e2a\u6a21\u5757\uff0c\u6bcf\u4e2a\u6a21\u5757\u90fd\u72ec\u7acb\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"api")," \u914d\u7f6e\u3002\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\uff0c\u5b9e\u73b0\u591a\u5206\u7ec4\u975e\u5e38\u7b80\u5355\u3002\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{5,21,32}","{5,21,32}":!0},'using Furion.DynamicApiController;\n\nnamespace Furion.Application\n{\n [ApiDescriptionSettings("Group1")]\n public class FurionAppService : IDynamicApiController\n {\n /// \n /// \u968f\u7236\u7c7b Group1 \u5206\u7ec4\n /// \n /// \n public string Post()\n {\n return nameof(Furion);\n }\n\n /// \n /// \u5728 Group1\u3001Group3 \u90fd\u6709\u6211\n /// \n /// \n [ApiDescriptionSettings("Group1", "Group3")]\n public string Get()\n {\n return nameof(Furion);\n }\n\n /// \n /// \u6211\u53ea\u5728 Group2 \u51fa\u73b0\n /// \n /// \n /// \n [ApiDescriptionSettings("Group2")]\n public int Get(int id)\n {\n return id;\n }\n }\n}\n')),(0,r.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,r.kt)("img",{src:(0,l.Z)("img/swagger3.gif")}),(0,r.kt)("h3",{id:"656-\u591a\u5206\u7ec4\u6392\u5e8f"},"6.5.6 \u591a\u5206\u7ec4\u6392\u5e8f"),(0,r.kt)(o.Z,{defaultValue:"fz1",values:[{label:"\u65b9\u5f0f\u4e00",value:"fz1"},{label:"\u65b9\u5f0f\u4e8c",value:"fz2"}],mdxType:"Tabs"},(0,r.kt)(p.Z,{value:"fz1",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"\u901a\u8fc7\u5206\u7ec4\u540d\u79f0\u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"strong"},"@\u6574\u6570")," \u8fdb\u884c\u6392\u5e8f")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{5,19}","{5,19}":!0},'using Furion.DynamicApiController;\n\nnamespace Furion.Application\n{\n [ApiDescriptionSettings("Group1@1")]\n public class FurionAppService : IDynamicApiController\n {\n public string Post()\n {\n return nameof(Furion);\n }\n\n [ApiDescriptionSettings("Group1", "Group3")]\n public string Get()\n {\n return nameof(Furion);\n }\n\n [ApiDescriptionSettings("Group@2")]\n public int Get(int id)\n {\n return id;\n }\n }\n}\n')),(0,r.kt)("p",null,"\u53ef\u4ee5\u901a\u8fc7\u5728\u5206\u7ec4\u540d\u540e\u9762\u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"p"},"@\u6574\u6570")," \u8fdb\u884c\u6392\u5e8f\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"\u6574\u6570")," \u8d8a\u5927\u6392\u524d\u9762\u3002\u5982\u679c\u5206\u7ec4\u540d\u79f0\u591a\u6b21\u6307\u5b9a\u4e14\u591a\u6b21\u6307\u5b9a\u4e86 ",(0,r.kt)("inlineCode",{parentName:"p"},"@\u6574\u6570")," \uff0c\u5219\u81ea\u52a8",(0,r.kt)("strong",{parentName:"p"},"\u53d6\u8be5\u5206\u7ec4\u6700\u5927\u7684\u6574\u6570"),"\u8fdb\u884c\u6392\u5e8f\u3002")),(0,r.kt)(p.Z,{value:"fz2",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"\u901a\u8fc7\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e\u6392\u5e8f")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json",metastring:'{2-17} title="Furion.Web.Entry/appsettings.json"',"{2-17}":!0,title:'"Furion.Web.Entry/appsettings.json"'},'{\n "SpecificationDocumentSettings": {\n "GroupOpenApiInfos": [\n {\n "Group": "Group1",\n "Order": 1\n },\n {\n "Group": "Group2",\n "Order": 2\n },\n {\n "Group": "Group3",\n "Order": 0\n }\n ]\n }\n}\n')))),(0,r.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,r.kt)("img",{src:(0,l.Z)("img/swagger4.png")}),(0,r.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u6392\u5e8f\u8bf4\u660e")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u5206\u7ec4\u9ed8\u8ba4\u6392\u5e8f ",(0,r.kt)("inlineCode",{parentName:"p"},"Order")," \u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"0"),"\u3002\u5982\u679c\u540c\u65f6\u914d\u7f6e\u4e86 ",(0,r.kt)("inlineCode",{parentName:"p"},"@\u6574\u6570")," \u548c ",(0,r.kt)("inlineCode",{parentName:"p"},"appsettings.json")," \u914d\u7f6e\u6587\u4ef6\uff0c\u90a3\u4e48\u4f18\u5148\u91c7\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"appsettings.json")," \u4e2d\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"Order")))),(0,r.kt)("h3",{id:"657-\u591a\u5206\u7ec4\u4fe1\u606f\u914d\u7f6e"},"6.5.7 \u591a\u5206\u7ec4\u4fe1\u606f\u914d\u7f6e"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u4e86\u53ef\u901a\u8fc7 ",(0,r.kt)("inlineCode",{parentName:"p"},"appsetting.json")," \u914d\u7f6e\u5206\u7ec4\u4fe1\u606f\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json",metastring:'{3-20} title="Furion.Web.Entry/appsettings.json"',"{3-20}":!0,title:'"Furion.Web.Entry/appsettings.json"'},'{\n "SpecificationDocumentSettings": {\n "GroupOpenApiInfos": [\n {\n "Group": "Group1",\n "Title": "\u5206\u7ec4\u6807\u9898",\n "Description": "\u8fd9\u91cc\u662f\u5206\u7ec4\u63cf\u8ff0",\n "Version": "\u7248\u672c\u53f7",\n "TermsOfService": "https://furion.pro",\n "Contact": {\n "Name": "\u767e\u5c0f\u50e7",\n "Url": "https://gitee.com/monksoul",\n "Email": "monksoul@outlook.com"\n },\n "License": {\n "Name": "MulanPSL-2.0",\n "Url": "https://gitee.com/dotnetchina/Furion/blob/alpha/LICENSE"\n }\n }\n ]\n }\n}\n')),(0,r.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,r.kt)("img",{src:(0,l.Z)("img/swagger5.png")}),(0,r.kt)("h3",{id:"658-\u7ec4\u4e2d\u7ec4\uff08\u6807\u7b7e\uff09"},"6.5.8 \u7ec4\u4e2d\u7ec4\uff08\u6807\u7b7e\uff09"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Tag")," \u914d\u7f6e\u4e3b\u8981\u7528\u4e8e\u914d\u7f6e ",(0,r.kt)("inlineCode",{parentName:"p"},"Swagger")," \u6807\u7b7e\u5206\u7ec4\u4fe1\u606f\u53ca\u5408\u5e76\u6807\u7b7e\u3002\u4e5f\u5c31\u662f ",(0,r.kt)("inlineCode",{parentName:"p"},"\u7ec4\u4e2d\u7ec4"),":"),(0,r.kt)(o.Z,{defaultValue:"tag1",values:[{label:"\u6807\u7b7e\u547d\u540d",value:"tag1"},{label:"\u5408\u5e76\u6807\u7b7e",value:"tag2"}],mdxType:"Tabs"},(0,r.kt)(p.Z,{value:"tag1",mdxType:"TabItem"},(0,r.kt)("h4",{id:"\u672a\u8d34\u6807\u7b7e\u4e4b\u524d"},"\u672a\u8d34\u6807\u7b7e\u4e4b\u524d"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"using Furion.DynamicApiController;\n\nnamespace Furion.Application\n{\n public class FurionAppService : IDynamicApiController\n {\n public string Get()\n {\n return nameof(Furion);\n }\n\n public int Get(int id)\n {\n return id;\n }\n }\n\n public class TestAppService : IDynamicApiController\n {\n public string Get()\n {\n return nameof(Furion);\n }\n\n public int Get(int id)\n {\n return id;\n }\n }\n}\n")),(0,r.kt)("h4",{id:"\u8d34\u6807\u7b7e\u4e4b\u540e"},"\u8d34\u6807\u7b7e\u4e4b\u540e"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{5,19}","{5,19}":!0},'using Furion.DynamicApiController;\n\nnamespace Furion.Application\n{\n [ApiDescriptionSettings(Tag = "\u5206\u7ec4\u4e00")]\n public class FurionAppService : IDynamicApiController\n {\n public string Get()\n {\n return nameof(Furion);\n }\n\n public int Get(int id)\n {\n return id;\n }\n }\n\n [ApiDescriptionSettings(Tag = "\u5206\u7ec4\u4e8c")]\n public class TestAppService : IDynamicApiController\n {\n public string Get()\n {\n return nameof(Furion);\n }\n\n public int Get(int id)\n {\n return id;\n }\n }\n}\n')),(0,r.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,r.kt)("img",{src:(0,l.Z)("img/tag1.png")})),(0,r.kt)(p.Z,{value:"tag2",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{5,19}","{5,19}":!0},'using Furion.DynamicApiController;\n\nnamespace Furion.Application\n{\n [ApiDescriptionSettings(Tag = "\u5408\u5e76\u6240\u6709\u6807\u7b7e")]\n public class FurionAppService : IDynamicApiController\n {\n public string Get()\n {\n return nameof(Furion);\n }\n\n public int Get(int id)\n {\n return id;\n }\n }\n\n [ApiDescriptionSettings(Tag = "\u5408\u5e76\u6240\u6709\u6807\u7b7e")]\n public class TestAppService : IDynamicApiController\n {\n public string Get()\n {\n return nameof(Furion);\n }\n\n public int Get(int id)\n {\n return id;\n }\n }\n}\n')),(0,r.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,r.kt)("img",{src:(0,l.Z)("img/tag2.png")}))),(0,r.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u5c0f\u77e5\u8bc6")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u5982\u679c ",(0,r.kt)("inlineCode",{parentName:"p"},"Tag")," \u540d\u5b57\u4e00\u6837\uff0c\u5219\u4f1a\u81ea\u52a8\u5408\u5e76\uff0c\u5426\u5219\u53ea\u662f\u547d\u540d\u3002"))),(0,r.kt)("h3",{id:"659-\u9ed8\u8ba4\u5c55\u5f00\u6240\u6709\u6587\u6863"},"6.5.9 \u9ed8\u8ba4\u5c55\u5f00\u6240\u6709\u6587\u6863"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json",metastring:'{2-4} title="Furion.Web.Entry/appsettings.json"',"{2-4}":!0,title:'"Furion.Web.Entry/appsettings.json"'},'{\n "SpecificationDocumentSettings": {\n "DocExpansionState": "Full"\n }\n}\n')),(0,r.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,r.kt)("img",{src:(0,l.Z)("img/swagger6.gif")}),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"DocExpansionState")," \u914d\u7f6e\u8bf4\u660e\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"List"),"\uff1a\u5217\u8868\u5f0f\uff08\u5c55\u5f00\u5b50\u7c7b\uff09\uff0c",(0,r.kt)("strong",{parentName:"li"},"\u9ed8\u8ba4\u503c")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Full"),"\uff1a\u5b8c\u5168\u5c55\u5f00"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"None"),"\uff1a\u5217\u8868\u5f0f\uff08\u4e0d\u5c55\u5f00\u5b50\u7c7b\uff09")),(0,r.kt)("h3",{id:"6510-\u914d\u7f6e\u6587\u6863\u6807\u9898"},"6.5.10 \u914d\u7f6e\u6587\u6863\u6807\u9898"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json",metastring:'{2-4} title="Furion.Web.Entry/appsettings.json"',"{2-4}":!0,title:'"Furion.Web.Entry/appsettings.json"'},'{\n "SpecificationDocumentSettings": {\n "DocumentTitle": "\u6211\u662f\u81ea\u5b9a\u4e49\u6807\u9898"\n }\n}\n')),(0,r.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,r.kt)("img",{src:(0,l.Z)("img/swagger7.png")}),(0,r.kt)("h3",{id:"6511-\u6388\u6743\u63a7\u5236"},"6.5.11 \u6388\u6743\u63a7\u5236"),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"\u65b0\u7248\u672c ",(0,r.kt)("inlineCode",{parentName:"strong"},"Furion")," \u5df2\u7ecf\u9ed8\u8ba4\u542f\u7528\u4e86 Bearer Token \u6388\u6743\u914d\u7f6e\uff0c\u65e0\u9700\u624b\u52a8\u914d\u7f6e"),"\uff0c\u5982\u9700\u624b\u52a8\u914d\u7f6e\uff0c\u53ef\u624b\u52a8\u6dfb\u52a0\u4ee5\u4e0b\u7c7b\u4f3c\u914d\u7f6e\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json",metastring:'title="Furion.Web.Entry/appsettings.json"',title:'"Furion.Web.Entry/appsettings.json"'},'{\n "SpecificationDocumentSettings": {\n "EnableAuthorized": true,\n\n "SecurityDefinitions": [\n {\n "Id": "Bearer",\n "Type": "Http",\n "Name": "Authorization",\n "Description": "JWT Authorization header using the Bearer scheme.",\n "BearerFormat": "JWT",\n "Scheme": "bearer",\n "In": "Header",\n\n "Requirement": {\n "Scheme": {\n "Reference": {\n "Id": "Bearer",\n "Type": "SecurityScheme"\n },\n "Accesses": []\n }\n }\n }\n ]\n }\n}\n')),(0,r.kt)("h3",{id:"6512-\u5728\u7ebf\u6d4b\u8bd5"},"6.5.12 \u5728\u7ebf\u6d4b\u8bd5"),(0,r.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,r.kt)("img",{src:(0,l.Z)("img/swagger8.gif")}),(0,r.kt)("h3",{id:"6513-\u6027\u80fd\u76d1\u89c6-miniprofiler"},"6.5.13 \u6027\u80fd\u76d1\u89c6 ",(0,r.kt)("inlineCode",{parentName:"h3"},"MiniProfiler")),(0,r.kt)("p",null,"\u89c4\u8303\u5316\u6587\u6863\u9ed8\u8ba4\u96c6\u6210\u4e86 ",(0,r.kt)("inlineCode",{parentName:"p"},"MiniProfiler")," \u7b2c\u4e09\u65b9\u6027\u80fd\u7ec4\u4ef6\uff0c\u901a\u8fc7\u8be5\u7ec4\u4ef6\u53ef\u4ee5\u65b9\u4fbf\u67e5\u770b\u8bf7\u6c42\u6027\u80fd\u3001\u5f02\u5e38\u5806\u6808\u3001\u6570\u636e\u5e93\u64cd\u4f5c\u7b49\u4fe1\u606f\u3002\u9ed8\u8ba4\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Swagger")," \u9996\u9875\u5de6\u4e0a\u89d2\u663e\u793a\u3002"),(0,r.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,r.kt)("img",{src:(0,l.Z)("img/mipr.png")}),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u5c0f\u63d0\u793a")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u4e5f\u53ef\u4ee5\u901a\u8fc7 ",(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("inlineCode",{parentName:"strong"},"appsetting.json"))," \u4e2d ",(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("inlineCode",{parentName:"strong"},"AppSettings:InjectMiniProfiler"))," \u8bbe\u4e3a ",(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("inlineCode",{parentName:"strong"},"false"))," \u5173\u95ed\u3002"))),(0,r.kt)("h3",{id:"6514-\u5b9a\u4e49\u63a5\u53e3\u8f93\u51fa\u7c7b\u578b"},"6.5.14 \u5b9a\u4e49\u63a5\u53e3\u8f93\u51fa\u7c7b\u578b"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{2,8-9}","{2,8-9}":!0},"using Furion.DynamicApiController;\nusing Microsoft.AspNetCore.Mvc;\n\nnamespace Furion.Application\n{\n public class FurionAppService : IDynamicApiController\n {\n [ProducesResponseType(201, Type = typeof(TestDto))]\n [ProducesResponseType(400)]\n public string Get()\n {\n return nameof(Furion);\n }\n }\n}\n")),(0,r.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,r.kt)("img",{src:(0,l.Z)("img/fhzlx.png")}),(0,r.kt)("h3",{id:"6515-\u9690\u85cf\u7279\u5b9a\u5206\u7ec4"},"6.5.15 \u9690\u85cf\u7279\u5b9a\u5206\u7ec4"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u65b0\u7248\u672c\u63d0\u4f9b\u4e86\u9690\u85cf\u5206\u7ec4\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"Visible")," \u914d\u7f6e\uff0c\u8bbe\u7f6e\u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"false")," \u4e4b\u540e\u8be5\u5206\u7ec4\u5c06\u4e0d\u663e\u793a\u5728\u89c4\u8303\u5316\u6587\u6863\u4e2d\uff0c\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json",metastring:'title="appsetting.json"',title:'"appsetting.json"'},'{\n "SpecificationDocumentSettings": {\n "GroupOpenApiInfos": [\n {\n "Group": "Group1",\n "Visible": false\n }\n ]\n }\n}\n')),(0,r.kt)("h3",{id:"6516-\u4e2d\u6587\u4e71\u7801\u95ee\u9898"},"6.5.16 \u4e2d\u6587\u4e71\u7801\u95ee\u9898"),(0,r.kt)("p",null,"\u9ed8\u8ba4\u60c5\u51b5\u4e0b,",(0,r.kt)("inlineCode",{parentName:"p"},".json")," \u6587\u4ef6\u5e76\u672a\u91c7\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"utf-8")," \u7f16\u7801\uff0c\u6240\u4ee5\u5982\u679c\u914d\u7f6e\u4e2d\u6587\u5206\u7ec4\u4fe1\u606f\u5c31\u4f1a\u51fa\u73b0\u4e71\u7801\u60c5\u51b5\uff0c\u8fd9\u65f6\u5019\uff0c\u53ea\u9700\u8981\u4fee\u6539 ",(0,r.kt)("inlineCode",{parentName:"p"},".json")," \u6587\u4ef6\u7f16\u7801\u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"utf-8")," \u5373\u53ef\u3002"),(0,r.kt)("h3",{id:"6517-\u751f\u4ea7\u73af\u5883\u4e2d\u5173\u95ed-swagger"},"6.5.17 \u751f\u4ea7\u73af\u5883\u4e2d\u5173\u95ed ",(0,r.kt)("inlineCode",{parentName:"h3"},"Swagger")),(0,r.kt)("p",null,"\u5982\u679c\u4e0d\u9700\u8981\u7ebf\u4e0a\u73af\u5883\u5f00\u542f ",(0,r.kt)("inlineCode",{parentName:"p"},"Swagger")," \u529f\u80fd\uff0c\u53ea\u9700\u8981\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"appsetting.json")," \u914d\u7f6e\u5373\u53ef\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json",metastring:"{3}","{3}":!0},'{\n "AppSettings": {\n "InjectSpecificationDocument": false\n }\n}\n')),(0,r.kt)("h3",{id:"6518-\u8bbe\u7f6e-example-value-\u9ed8\u8ba4\u503c"},"6.5.18 \u8bbe\u7f6e ",(0,r.kt)("inlineCode",{parentName:"h3"},"Example Value")," \u9ed8\u8ba4\u503c"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Swagger")," \u4f1a\u81ea\u52a8\u6839\u636e\u5bf9\u8c61\u7c7b\u578b\u8f93\u5165\u53c2\u6570\u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"p"},"Example Value")," \u9ed8\u8ba4\u503c\uff0c\u4f46\u662f\u8be5\u9ed8\u8ba4\u503c\u901a\u5e38\u662f\u5bf9\u8c61\u5c5e\u6027\u7684\u7c7b\u578b\u5b57\u7b26\u4e32\u6216\u7f3a\u7701\u503c\uff0c\u5982\u679c\u6211\u4eec\u9700\u8981\u81ea\u5b9a\u4e49\u8fd9\u4e9b\u9ed8\u8ba4\u503c\uff0c\u53ea\u9700\u8981\u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"p"},"/// \u9ed8\u8ba4\u503c")," \u6ce8\u91ca\u5373\u53ef\u3002"),(0,r.kt)("p",null,"\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{4}","{4}":!0},"/// \n/// \u5e74\u9f84\n/// \n/// 13\n[Required, Range(10, 110)]\npublic int Age { get; set; }\n")),(0,r.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,r.kt)("img",{src:(0,l.Z)("img/sd20.png")}),(0,r.kt)("p",null,"\u66f4\u591a\u7c7b\u578b\u9ed8\u8ba4\u503c\u8bbe\u7f6e\u793a\u4f8b\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"bool")," \u7c7b\u578b\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"/// true")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"string")," \u7c7b\u578b\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},'/// "foobar"')),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"number")," \u7c7b\u578b\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"/// 123")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"null")," \u7c7b\u578b\uff1a ",(0,r.kt)("inlineCode",{parentName:"li"},"/// null")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"array")," \u7c7b\u578b\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"/// [ 1, 2, 3 ]"))),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u5173\u4e8e ",(0,r.kt)("inlineCode",{parentName:"h5"},"object")," \u7c7b\u578b\u8f93\u5165\u53c2\u6570")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"Example Value")," \u4e0d\u4f1a\u663e\u793a ",(0,r.kt)("inlineCode",{parentName:"p"},"object")," \u7c7b\u578b\u7684\u5bf9\u8c61\u5c5e\u6027\uff0c\u56e0\u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"Swagger")," \u8ba4\u4e3a\u8fd9\u662f\u4e0d\u5408\u7406\u7684\u5b9a\u4e49\u3002\u5982\u679c\u9700\u8981\u5f3a\u5236\u663e\u793a\uff0c\u53ea\u9700\u8981\u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"p"},'/// "object"')," \u6ce8\u91ca\u5373\u53ef\u3002"))),(0,r.kt)("h3",{id:"6519-\u81ea\u5b9a\u4e49-swagger-\u914d\u7f6e"},"6.5.19 \u81ea\u5b9a\u4e49 ",(0,r.kt)("inlineCode",{parentName:"h3"},"Swagger")," \u914d\u7f6e"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u9664\u4e86\u5185\u7f6e\u4e86\u4e0d\u5c11\u914d\u7f6e\u4ee5\u5916\uff0c\u8fd8\u63d0\u4f9b\u4e86\u76f4\u63a5\u914d\u7f6e ",(0,r.kt)("inlineCode",{parentName:"p"},"Swagger")," Api \u7684\u53c2\u6570\uff0c\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"public void ConfigureServices(IServiceCollection services)\n{\n services.AddInject(options =>\n {\n options.SpecificationDocumentConfigure = spt =>\n {\n spt.SwaggerGenConfigure = gen =>\n {\n // \u914d\u7f6e Swagger Gen\n };\n };\n });\n}\n")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"}," public void Configure(IApplicationBuilder app, IWebHostEnvironment env)\n {\n app.UseInject(configure: options =>\n {\n options.SpecificationDocumentConfigure = spt =>\n {\n spt.SwaggerConfigure = swg =>\n {\n // \u914d\u7f6e Swagger Options\n };\n spt.SwaggerUIConfigure = ui =>\n {\n // \u914d\u7f6e Swagger UI\n };\n };\n });\n}\n\n")),(0,r.kt)("h3",{id:"6520-\u914d\u7f6e-swagger\u7684-schemes"},"6.5.20 \u914d\u7f6e ",(0,r.kt)("inlineCode",{parentName:"h3"},"Swagger"),"\u7684 ",(0,r.kt)("inlineCode",{parentName:"h3"},"Schemes")),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u9ed8\u8ba4\u53ea\u663e\u793a\u540d\u79f0\uff0c\u5982\u679c\u9700\u8981\u81ea\u5b9a\u4e49\u663e\u793a\u89c4\u5219\uff0c\u53ea\u9700\u8981\u6dfb\u52a0\u914d\u7f6e\u5373\u53ef\u3002"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"services.AddControllersWithViews()\n .AddInject(options =>\n {\n options.SpecificationDocumentConfigure = spt =>\n {\n spt.SwaggerGenConfigure = gen =>\n {\n gen.CustomSchemaIds(x => x.FullName);\n };\n };\n });\n")),(0,r.kt)("h3",{id:"6521-\u81ea\u5b9a\u4e49-swaggerjson-\u8def\u7531\u6a21\u677f"},"6.5.21 \u81ea\u5b9a\u4e49 ",(0,r.kt)("inlineCode",{parentName:"h3"},"swagger.json")," \u8def\u7531\u6a21\u677f"),(0,r.kt)("p",null,"\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4f1a\u751f\u6210\u7edf\u4e00\u7684\u5206\u7ec4\u6a21\u677f\uff0c\u5982\uff1a",(0,r.kt)("inlineCode",{parentName:"p"},"swagger/{documentName}/swagger.json"),"\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"{documentName}")," \u4f1a\u5728\u8fd0\u884c\u65f6\u66ff\u6362\u4e3a\u5206\u7ec4\u540d\uff0c\u5982\u9700\u81ea\u5b9a\u4e49\uff0c\u914d\u7f6e ",(0,r.kt)("inlineCode",{parentName:"p"},"RouteTemplate")," \u5373\u53ef\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json",metastring:'title="appsetting.json"',title:'"appsetting.json"'},'{\n "SpecificationDocumentSettings": {\n "RouteTemplate": "myapp/{documentName}/xxxx.json"\n }\n}\n')),(0,r.kt)("h3",{id:"6522-\u5173\u4e8e-applicationx-www-form-urlencoded-\u8bf7\u6c42"},"6.5.22 \u5173\u4e8e ",(0,r.kt)("inlineCode",{parentName:"h3"},"application/x-www-form-urlencoded")," \u8bf7\u6c42"),(0,r.kt)("p",null,"\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"Swagger")," \u5e76\u672a\u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"p"},"application/x-www-form-urlencoded")," \u652f\u6301\uff0c\u5982\u9700\u542f\u7528\u8be5\u914d\u7f6e\uff0c\u53ea\u9700\u5728\u65b9\u6cd5\u9876\u90e8\u8d34 ",(0,r.kt)("inlineCode",{parentName:"p"},"[Consumes]")," \u7279\u6027\u5373\u53ef\uff0c\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,2}","{1,2}":!0},'[Consumes("application/x-www-form-urlencoded")]\npublic async Task Test([FromForm] TestRequest testRequest)\n{\n // ....\n}\n\npublic class TestRequest\n{\n public string TestValue { get; set; }\n}\n')),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u6ce8\u610f")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u53c2\u6570\u5fc5\u987b\u8d34 ",(0,r.kt)("inlineCode",{parentName:"p"},"[FromForm]")," \u7279\u6027\u3002\u53e6\u5916\u8bf7\u6c42\u65f6\u5c06\u53c2\u6570\u6309 ",(0,r.kt)("inlineCode",{parentName:"p"},"URL")," \u5730\u5740\u62fc\u63a5\u5e76\u653e\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Body")," \u4e2d\u8bf7\u6c42\u3002"))),(0,r.kt)("h3",{id:"6523-swagger-\u51fa\u73b0-cors-\u95ee\u9898\u89e3\u51b3"},"6.5.23 ",(0,r.kt)("inlineCode",{parentName:"h3"},"Swagger")," \u51fa\u73b0 ",(0,r.kt)("inlineCode",{parentName:"h3"},"CORS")," \u95ee\u9898\u89e3\u51b3"),(0,r.kt)("p",null,"\u5982\u679c ",(0,r.kt)("inlineCode",{parentName:"p"},"Swagger")," \u51fa\u73b0\u4ee5\u4e0b\u9519\u8bef\uff0c\u5982\u56fe\uff1a"),(0,r.kt)("img",{src:(0,l.Z)("img/swerror.png")}),(0,r.kt)("p",null,"\u5219\u9700\u8981\u6dfb\u52a0\u4ee5\u4e0b\u914d\u7f6e\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json",metastring:"{2,3}","{2,3}":!0},'{\n "SpecificationDocumentSettings": {\n "HideServers": true\n }\n}\n')),(0,r.kt)("h3",{id:"6524-swagger-\u51fa\u73b0\u9ed8\u8ba4-xml-\u53c2\u6570\u95ee\u9898\u89e3\u51b3"},"6.5.24 ",(0,r.kt)("inlineCode",{parentName:"h3"},"Swagger")," \u51fa\u73b0\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"h3"},"xml")," \u53c2\u6570\u95ee\u9898\u89e3\u51b3"),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"\u4ea7\u751f\u6b64\u539f\u56e0\u6709\u4e24\u4e2a\u5fc5\u8981\u6761\u4ef6\uff1a")),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},"\u4f7f\u7528\u4e86 ",(0,r.kt)("inlineCode",{parentName:"li"},"Microsoft.AspNetCore.Mvc.NewtonsoftJson")," \u5305\u5e76\u6dfb\u52a0\u4e86 ",(0,r.kt)("inlineCode",{parentName:"li"},"AddNewtonsoftJson()")," \u6ce8\u518c\u3002"),(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("inlineCode",{parentName:"li"},".AddNewtonsoftJson()")," \u5199\u5728\u4e86 ",(0,r.kt)("inlineCode",{parentName:"li"},".AddInjectWithUnifyResult()")," \u540e\u9762\u3002")),(0,r.kt)("p",null,"\u6240\u4ee5\u89e3\u51b3\u65b9\u6cd5\u662f\uff0c\u5148\u6ce8\u518c ",(0,r.kt)("inlineCode",{parentName:"p"},".AddNewtonsoftJson()")," \u518d\u6ce8\u518c\u89c4\u8303\u5316\u7ed3\u679c\uff0c\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{2}","{2}":!0},"services.AddControllers()\n .AddNewtonsoftJson()\n .AddInjectWithUnifyResult();\n")),(0,r.kt)("h3",{id:"6525-swagger-\u591a\u8bed\u8a00\u652f\u6301"},"6.5.25 ",(0,r.kt)("inlineCode",{parentName:"h3"},"Swagger")," \u591a\u8bed\u8a00\u652f\u6301"),(0,r.kt)("p",null,"\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion 2.9.0 + ")," \u7248\u672c\u5df2\u7ecf\u652f\u6301\u4e86 ",(0,r.kt)("inlineCode",{parentName:"p"},"Swagger")," \u6587\u6863\u5730\u5740 ",(0,r.kt)("inlineCode",{parentName:"p"},"?culture=en-US")," \u53c2\u6570\u591a\u8bed\u8a00\u8f6c\u53d1\u529f\u80fd\u4e86\uff0c\u4e5f\u5c31\u662f ",(0,r.kt)("inlineCode",{parentName:"p"},"Swagger")," \u5730\u5740\u5e26 ",(0,r.kt)("inlineCode",{parentName:"p"},"?culture=")," \u53c2\u6570\u5c06\u81ea\u52a8\u6dfb\u52a0\u5230\u6bcf\u4e00\u4e2a\u8bf7\u6c42\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"api")," \u5730\u5740\u4e2d\u3002"),(0,r.kt)("h3",{id:"6526-\u81ea\u5b9a\u4e49\u903b\u8f91\u63a7\u5236-swagger-\u6bcf\u4e00\u4e2a-api-\u53ef\u89c1\u6027"},"6.5.26 \u81ea\u5b9a\u4e49\u903b\u8f91\u63a7\u5236 ",(0,r.kt)("inlineCode",{parentName:"h3"},"Swagger")," \u6bcf\u4e00\u4e2a ",(0,r.kt)("inlineCode",{parentName:"h3"},"api")," \u53ef\u89c1\u6027"),(0,r.kt)("p",null,"\u6709\u65f6\u5019\u6211\u4eec\u9700\u8981\u81ea\u5b9a\u4e49 ",(0,r.kt)("inlineCode",{parentName:"p"},"Swagger")," \u63a5\u53e3\u53ef\u89c1\u6027\uff0c\u6bd4\u5982\u6839\u636e\u6743\u9650\uff0c\u4e0d\u540c\u7528\u6237\u7c7b\u578b\uff0c\u5404\u79cd\u903b\u8f91\u63a7\u5236\uff0c\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"// \u4e5f\u53ef\u4ee5\u7528 .AddInjectWithUnifyResult\nservices.AddInject(options =>\n {\n options.SpecificationDocumentConfigure = spt =>\n {\n spt.SwaggerGenConfigure = gen =>\n {\n gen.DocInclusionPredicate((currentGroup, apiDescription) =>\n {\n // Furion \u5185\u90e8\u68c0\u67e5\uff0c\u5fc5\u987b\u653e\u7b2c\u4e00\u884c\n var isShow = SpecificationDocumentBuilder.CheckApiDescriptionInCurrentGroup(currentGroup, apiDescription);\n\n // \u83b7\u53d6\u5f53\u524d\u65b9\u6cd5\n _ = apiDescription.TryGetMethodInfo(out var method);\n\n // \u6709\u4e86\u65b9\u6cd5\uff0c\u8fd9\u91cc\u505a\u4f60\u60f3\u505a\u7684\u4e8b\u60c5\uff0cisShow \u8bbe\u7f6e true \u53ef\u89c1\uff0c\u8bbe\u7f6e false \u4e0d\u53ef\u89c1\n\n return isShow;\n });\n };\n };\n });\n")),(0,r.kt)("h3",{id:"6527-\u914d\u7f6e-mvc-\u63a7\u5236\u5668\u652f\u6301\u89c4\u8303\u5316\u5904\u7406"},"6.5.27 \u914d\u7f6e ",(0,r.kt)("inlineCode",{parentName:"h3"},"MVC")," \u63a7\u5236\u5668\u652f\u6301\u89c4\u8303\u5316\u5904\u7406"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json"},'{\n "UnifyResultSettings": {\n "SupportMvcController": true\n }\n}\n')),(0,r.kt)("h2",{id:"66-specificationdocumentsettings-\u914d\u7f6e"},"6.6 ",(0,r.kt)("inlineCode",{parentName:"h2"},"SpecificationDocumentSettings")," \u914d\u7f6e"),(0,r.kt)("p",null,"\u9664\u4e86\u4e0a\u8ff0\u4f8b\u5b50\u5916\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u63d0\u4f9b\u4e86\u4e00\u4e9b\u914d\u7f6e\u9009\u9879\uff0c\u5982\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"DocumentTitle"),"\uff1a\u6587\u6863\u6807\u9898\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"string"),"\uff0c\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"Specification Api Document")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"DefaultGroupName"),"\uff1a\u9ed8\u8ba4\u5206\u7ec4\u540d\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"string"),"\uff0c\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"Default")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"EnableAuthorized"),"\uff1a\u662f\u5426\u542f\u7528\u6743\u9650\u63a7\u5236\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"bool"),"\uff0c\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"true")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"FormatAsV2"),"\uff1a\u91c7\u7528 ",(0,r.kt)("inlineCode",{parentName:"li"},"Swagger 2.0")," \u7248\u672c\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"bool"),"\uff0c\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"false")," ",(0,r.kt)("strong",{parentName:"li"},(0,r.kt)("a",{parentName:"strong",href:"https://github.com/domaindrivendev/Swashbuckle.WebApi/issues/1393"},"\u5df2\u5f03\u7528"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"RoutePrefix"),"\uff1a\u89c4\u8303\u5316\u6587\u6863\u5730\u5740\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"string"),"\uff0c\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"api"),"\uff0c",(0,r.kt)("strong",{parentName:"li"},"\u5982\u679c\u5e0c\u671b\u5728\u9996\u9875\uff0c\u6539\u4e3a\u7a7a\u5b57\u7b26\u4e32\u5373\u53ef"),"\u3002"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"DocExpansionState"),"\uff1a\u6587\u6863\u663e\u793a\u65b9\u5f0f\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"DocExpansion"),"\uff0c\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"List"),"\uff0c\u53d6\u503c\uff1a",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"List"),"\uff1a\u5217\u8868\u5f0f\uff08\u5c55\u5f00\u5b50\u7c7b\uff09\uff0c",(0,r.kt)("strong",{parentName:"li"},"\u9ed8\u8ba4\u503c")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Full"),"\uff1a\u5b8c\u5168\u5c55\u5f00"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"None"),"\uff1a\u5217\u8868\u5f0f\uff08\u4e0d\u5c55\u5f00\u5b50\u7c7b\uff09"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"XmlComments"),"\uff1a\u7a0b\u5e8f\u96c6\u6ce8\u91ca\u63cf\u8ff0\u6587\u4ef6\u540d\uff08\u53ef\u5e26 ",(0,r.kt)("inlineCode",{parentName:"li"},".xml"),"\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"string"),"\uff0c\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"Furion.Application, Furion.Web.Entry, Furion.Web.Core")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"GroupOpenApiInfos"),"\uff1a\u5206\u7ec4\u4fe1\u606f\u914d\u7f6e\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"SpecificationOpenApiInfo[]"),"\uff0c\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"{ 'Group': 'Default'}")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"SecurityDefinitions"),"\uff1a\u5b89\u5168\u7b56\u7565\u5b9a\u4e49\u914d\u7f6e\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"SpecificationOpenApiSecurityScheme[]"),"\uff0c\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"[]")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Servers"),"\uff1a\u914d\u7f6e Server \u4e0b\u62c9\u5217\u8868\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"OpenApiServer[]")," \u7c7b\u578b\uff0c\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"[]"),"\uff0c\u5982\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},'{Servers:[ { Url:"\u5730\u5740", Description:"\u63cf\u8ff0"} ]}')),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"HideServers"),"\uff1a\u662f\u5426\u9690\u85cf Server \u4e0b\u62c9\u5217\u8868\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"bool")," \u7c7b\u578b\uff0c\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"true")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"RouteTemplate"),"\uff1a\u914d\u7f6e\u6587\u6863 ",(0,r.kt)("inlineCode",{parentName:"li"},"swagger.json")," \u8def\u7531\u6a21\u677f\uff0c\u9ed8\u8ba4\u6a21\u677f\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"swagger/{documentName}/swagger.json"),", ",(0,r.kt)("inlineCode",{parentName:"li"},"{documentName}")," \u4ee3\u8868\u5206\u7ec4\u540d\uff0c",(0,r.kt)("strong",{parentName:"li"},"\u5fc5\u987b\u4fdd\u7559\u539f\u6837")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"PackagesGroups"),"\uff1a\u914d\u7f6e\u6a21\u5757\u5316\u5185\u7f6e\u5206\u7ec4\u540d\u79f0\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"string[]")," \u7c7b\u578b\uff0c\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"[]")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"EnableEnumSchemaFilter"),"\uff1a\u542f\u7528\u679a\u4e3e Schema \u7b5b\u9009\u5668\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"bool")," \u7c7b\u578b\uff0c\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"true")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"EnableTagsOrderDocumentFilter"),"\uff1a\u542f\u7528\u6807\u7b7e\u6392\u5e8f\u7b5b\u9009\u5668\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"bool")," \u7c7b\u578b\uff0c\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"true"))),(0,r.kt)("p",null,"\u53e6\u5916 ",(0,r.kt)("inlineCode",{parentName:"p"},"SpecificationOpenApiInfo")," \u5185\u7f6e\u914d\u7f6e\u5982\u4e0b\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Group"),"\uff1a\u5206\u7ec4\u552f\u4e00\u6807\u8bc6\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"string")," \u7c7b\u578b\uff0c\u5fc5\u586b"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Order"),"\uff1a\u5206\u7ec4\u6392\u5e8f\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"int")," \u7c7b\u578b\uff0c\u6570\u5b57\u8d8a\u5927\u6392\u524d\u9762\uff0c\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"0")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Visible"),"\uff1a\u914d\u7f6e\u5206\u7ec4\u662f\u5426\u53ef\u89c1\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"bool")," \u7c7b\u578b\uff0c\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"true")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Title"),"\uff1a\u914d\u7f6e\u5206\u7ec4\u6807\u9898\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"string")," \u7c7b\u578b"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Description"),"\uff1a\u914d\u7f6e\u5206\u7ec4\u63cf\u8ff0\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"string")," \u7c7b\u578b"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Version"),"\uff1a\u914d\u7f6e\u5206\u7ec4\u7248\u672c\uff0c\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"1.0")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"TermsOfService"),"\uff1a\u914d\u7f6e\u76f8\u5173\u94fe\u63a5\u5730\u5740\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"Uri")," \u7c7b\u578b"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Contact"),"\uff1a\u914d\u7f6e\u8054\u7cfb\u65b9\u5f0f\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"OpenApiContact")," \u7c7b\u578b"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"License"),"\uff1a\u914d\u7f6e\u534f\u8bae\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"OpenApiLicense")," \u7c7b\u578b")),(0,r.kt)("p",null,"\u914d\u7f6e\u793a\u4f8b\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json"},'{\n "SpecificationDocumentSettings": {\n "GroupOpenApiInfos": [\n {\n "Group": "Group1",\n "Title": "\u5206\u7ec4\u6807\u9898",\n "Description": "\u8fd9\u91cc\u662f\u5206\u7ec4\u63cf\u8ff0",\n "Version": "\u7248\u672c\u53f7",\n "TermsOfService": "https://furion.pro",\n "Contact": {\n "Name": "\u767e\u5c0f\u50e7",\n "Url": "https://gitee.com/monksoul",\n "Email": "monksoul@outlook.com"\n },\n "License": {\n "Name": "MulanPSL-2.0",\n "Url": "https://gitee.com/dotnetchina/Furion/blob/alpha/LICENSE"\n }\n }\n ]\n }\n}\n')),(0,r.kt)("h2",{id:"67-\u7edf\u4e00\u8fd4\u56de\u503c\u6a21\u578b\u89c4\u8303\u5316\u7ed3\u679capi-\u8fd4\u56de\u503c"},"6.7 \u7edf\u4e00\u8fd4\u56de\u503c\u6a21\u578b/\u89c4\u8303\u5316\u7ed3\u679c/API \u8fd4\u56de\u503c"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b ",(0,r.kt)("inlineCode",{parentName:"p"},"\u89c4\u8303\u5316\u7ed3\u679c")," \u529f\u80fd\uff0c\u53ef\u4ee5\u901a\u8fc7\u5b9e\u73b0 ",(0,r.kt)("inlineCode",{parentName:"p"},"IUnifyResultProvider")," \u63d0\u4f9b\u5668\u5b9e\u73b0\u7edf\u4e00\u89c4\u8303\u5316\u8fd4\u56de\u503c\u5b9a\u5236\uff0c\u5982\uff1a",(0,r.kt)("inlineCode",{parentName:"p"},"RESTfulResultProvider"),"\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{15-16}","{15-16}":!0},'using Furion.DataValidation;\nusing Furion.DependencyInjection;\nusing Furion.UnifyResult.Internal;\nusing Microsoft.AspNetCore.Http;\nusing Microsoft.AspNetCore.Mvc;\nusing Microsoft.AspNetCore.Mvc.Filters;\nusing System;\nusing System.Threading.Tasks;\n\nnamespace Furion.UnifyResult\n{\n /// \n /// RESTful \u98ce\u683c\u8fd4\u56de\u503c\n /// \n [SuppressSniffer, UnifyModel(typeof(RESTfulResult<>))]\n public class RESTfulResultProvider : IUnifyResultProvider\n {\n /// \n /// \u5f02\u5e38\u8fd4\u56de\u503c\n /// \n /// \n /// \n /// \n public IActionResult OnException(ExceptionContext context, ExceptionMetadata metadata)\n {\n return new JsonResult(RESTfulResult(metadata.StatusCode, errors: metadata.Errors));\n }\n\n /// \n /// \u6210\u529f\u8fd4\u56de\u503c\n /// \n /// \n /// \n /// \n public IActionResult OnSucceeded(ActionExecutedContext context, object data)\n {\n return new JsonResult(RESTfulResult(StatusCodes.Status200OK, true, data));\n }\n\n /// \n /// \u9a8c\u8bc1\u5931\u8d25\u8fd4\u56de\u503c\n /// \n /// \n /// \n /// \n public IActionResult OnValidateFailed(ActionExecutingContext context, ValidationMetadata metadata)\n {\n return new JsonResult(RESTfulResult(StatusCodes.Status400BadRequest, errors: metadata.ValidationResult));\n }\n\n /// \n /// \u7279\u5b9a\u72b6\u6001\u7801\u8fd4\u56de\u503c\n /// \n /// \n /// \n /// \n /// \n public async Task OnResponseStatusCodes(HttpContext context, int statusCode, UnifyResultSettingsOptions unifyResultSettings)\n {\n // \u8bbe\u7f6e\u54cd\u5e94\u72b6\u6001\u7801\n UnifyContext.SetResponseStatusCodes(context, statusCode, unifyResultSettings);\n\n switch (statusCode)\n {\n // \u5904\u7406 401 \u72b6\u6001\u7801\n case StatusCodes.Status401Unauthorized:\n await context.Response.WriteAsJsonAsync(RESTfulResult(statusCode, errors: "401 Unauthorized")\n , App.GetOptions()?.JsonSerializerOptions);\n break;\n // \u5904\u7406 403 \u72b6\u6001\u7801\n case StatusCodes.Status403Forbidden:\n await context.Response.WriteAsJsonAsync(RESTfulResult(statusCode, errors: "403 Forbidden")\n , App.GetOptions()?.JsonSerializerOptions);\n break;\n default: break;\n }\n }\n\n /// \n /// \u8fd4\u56de RESTful \u98ce\u683c\u7ed3\u679c\u96c6\n /// \n /// \n /// \n /// \n /// \n /// \n private static RESTfulResult RESTfulResult(int statusCode, bool succeeded = default, object data = default, object errors = default)\n {\n return new RESTfulResult\n {\n StatusCode = statusCode,\n Succeeded = succeeded,\n Data = data,\n Errors = errors,\n Extras = UnifyContext.Take(),\n Timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds()\n };\n }\n }\n}\n')),(0,r.kt)("p",null,"\u4e4b\u540e\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Startup.cs")," \u4e2d\u6ce8\u518c\u5373\u53ef\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"services.AddControllers()\n .AddInjectWithUnifyResult();\n")),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u6ce8\u610f")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c\u89c4\u8303\u5316\u7ed3\u679c\u4e0d\u4f1a\u5bf9 ",(0,r.kt)("inlineCode",{parentName:"p"},"401")," \u548c ",(0,r.kt)("inlineCode",{parentName:"p"},"403"),"\u3001",(0,r.kt)("inlineCode",{parentName:"p"},"404")," \u72b6\u6001\u7801\u8fdb\u884c\u89c4\u8303\u5316\u5904\u7406\uff0c\u5982\u9700\u542f\u52a8\u8be5\u72b6\u6001\u7801\u5904\u7406\uff0c\u53ea\u9700\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Startup.cs")," \u4e2d\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"Configure")," \u4e2d\u542f\u7528\u63a5\u53e3\uff1a"),(0,r.kt)("pre",{parentName:"div"},(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"public void Configure(IApplicationBuilder app, IWebHostEnvironment env)\n{\n if (env.IsDevelopment())\n {\n app.UseDeveloperExceptionPage();\n }\n // \u6dfb\u52a0\u89c4\u8303\u5316\u7ed3\u679c\u72b6\u6001\u7801\uff0c\u9700\u8981\u5728\u8fd9\u91cc\u6ce8\u518c\n app.UseUnifyResultStatusCodes();\n // \u5176\u4ed6\u6ce8\u518c...\n}\n")))),(0,r.kt)("h3",{id:"671-\u6392\u9664\u89c4\u8303\u5316\u5904\u7406"},"6.7.1 \u6392\u9664\u89c4\u8303\u5316\u5904\u7406"),(0,r.kt)("p",null,"\u6709\u4e9b\u65f6\u5019\uff0c\u6211\u4eec\u67d0\u4e9b\u63a5\u53e3\u4e0d\u9700\u8981\u8fdb\u884c\u89c4\u8303\u5316\u5904\u7406\uff0c\u8fd9\u65f6\uff0c\u6211\u4eec\u53ea\u9700\u8981\u5e16 ",(0,r.kt)("inlineCode",{parentName:"p"},"[NonUnify]")," \u7279\u6027\u5373\u53ef\u3002"),(0,r.kt)("h3",{id:"672-\u89c4\u8303\u5316\u7ed3\u679c\u6dfb\u52a0\u989d\u5916\u6570\u636e"},"6.7.2 \u89c4\u8303\u5316\u7ed3\u679c\u6dfb\u52a0\u989d\u5916\u6570\u636e"),(0,r.kt)("p",null,"\u9ed8\u8ba4\u7684\u89c4\u8303\u5316\u7ed3\u679c\u4e2d\u5305\u542b ",(0,r.kt)("inlineCode",{parentName:"p"},"extras")," \u5c5e\u6027\uff0c\u53ef\u4ee5\u914d\u7f6e\u989d\u5916\u6570\u636e\u8fd4\u56de\u5230\u5ba2\u6237\u7aef\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'UnifyContext.Fill(new { Message = "\u64cd\u4f5c\u6210\u529f" });\n')),(0,r.kt)("h3",{id:"673-\u81ea\u5b9a\u4e49\u7279\u522b\u63a5\u53e3\u89c4\u8303\u5316\u7ed3\u679c"},"6.7.3 \u81ea\u5b9a\u4e49\u7279\u522b\u63a5\u53e3\u89c4\u8303\u5316\u7ed3\u679c"),(0,r.kt)("p",null,"\u6709\u4e9b\u65f6\u5019\uff0c\u6211\u4eec\u7279\u5b9a\u63a5\u53e3\u9700\u8fd4\u56de\u7279\u5b9a\u7684\u63a5\u53e3\u7c7b\u578b\uff0c\u65e0\u9700\u89c4\u8303\u5316\u5904\u7406\uff0c\u8fd9\u65f6\u5019\u6211\u4eec\u53ea\u9700\u8981\u8d34 ",(0,r.kt)("inlineCode",{parentName:"p"},"[UnifyResult(typeof(\u7ed3\u679c\u7c7b))]")," \u6216 ",(0,r.kt)("inlineCode",{parentName:"p"},"[ProducesResponseType(typeof(\u7ed3\u679c\u7c7b),200)]"),"\uff0c\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"[UnifyResult(typeof(Person))]\npublic Person GetPerson(int id)\n{\n // ...\n}\n")),(0,r.kt)("h2",{id:"68-\u53cd\u9988\u4e0e\u5efa\u8bae"},"6.8 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,r.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}g.isMDXComponent=!0},6010:function(e,n,t){function a(e){var n,t,i="";if("string"==typeof e||"number"==typeof e)i+=e;else if("object"==typeof e)if(Array.isArray(e))for(n=0;n=0||(i[t]=e[t]);return i}(e,n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(i[t]=e[t])}return i}var p=a.createContext({}),s=function(e){var n=a.useContext(p),t=n;return e&&(t="function"==typeof e?e(n):l(l({},n),e)),t},m=function(e){var n=s(e.components);return a.createElement(p.Provider,{value:n},e.children)},u={inlineCode:"code",wrapper:function(e){var n=e.children;return a.createElement(a.Fragment,{},n)}},d=a.forwardRef((function(e,n){var t=e.components,i=e.mdxType,r=e.originalType,p=e.parentName,m=o(e,["components","mdxType","originalType","parentName"]),d=s(t),c=i,k=d["".concat(p,".").concat(c)]||d[c]||u[c]||r;return t?a.createElement(k,l(l({ref:n},m),{},{components:t})):a.createElement(k,l({ref:n},m))}));function c(e,n){var t=arguments,i=n&&n.mdxType;if("string"==typeof e||i){var r=t.length,l=new Array(r);l[0]=d;var o={};for(var p in n)hasOwnProperty.call(n,p)&&(o[p]=n[p]);o.originalType=e,o.mdxType="string"==typeof e?e:i,l[1]=o;for(var s=2;s=0&&r<=s&&i<=o&&a>=0)||(n.scrollIntoView({block:"center",behavior:"smooth"}),n.classList.add(p),setTimeout((function(){return n.classList.remove(p)}),2e3))}),150))},A=function(e){var n,t=null;switch(e.key){case"ArrowRight":var a=S.indexOf(e.target)+1;t=S[a]||S[0];break;case"ArrowLeft":var i=S.indexOf(e.target)-1;t=S[i]||S[S.length-1]}null==(n=t)||n.focus()};return a.createElement("div",{className:"tabs-container"},a.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,l.Z)("tabs",{"tabs--block":i},d)},k.map((function(e){var n=e.value,t=e.label;return a.createElement("li",{role:"tab",tabIndex:h===n?0:-1,"aria-selected":h===n,className:(0,l.Z)("tabs__item",o,{"tabs__item--active":h===n}),key:n,ref:function(e){return S.push(e)},onKeyDown:A,onFocus:y,onClick:y},null!=t?t:n)}))),t?(0,a.cloneElement)(c.filter((function(e){return e.props.value===h}))[0],{className:"margin-vert--md"}):a.createElement("div",{className:"margin-vert--md"},c.map((function(e,n){return(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==h})}))))}},9443:function(e,n,t){var a=(0,t(7294).createContext)(void 0);n.Z=a},3113:function(e,n,t){t.r(n),t.d(n,{frontMatter:function(){return m},contentTitle:function(){return u},metadata:function(){return d},toc:function(){return c},default:function(){return g}});var a=t(7462),i=t(3366),r=(t(7294),t(3905)),l=t(4996),o=t(5064),p=t(8215),s=["components"],m={id:"specification-document",title:"6. \u89c4\u8303\u5316\u63a5\u53e3\u6587\u6863",sidebar_label:"6. \u89c4\u8303\u5316\u63a5\u53e3\u6587\u6863 (Swagger)"},u=void 0,d={unversionedId:"specification-document",id:"specification-document",isDocsHomePage:!1,title:"6. \u89c4\u8303\u5316\u63a5\u53e3\u6587\u6863",description:"6.1 \u4ec0\u4e48\u662f\u63a5\u53e3\u6587\u6863",source:"@site/docs/specification-document.mdx",sourceDirName:".",slug:"/specification-document",permalink:"/furion/docs/specification-document",editUrl:"https://gitee.com/dotnetchina/Furion/tree/master/handbook/docs/specification-document.mdx",tags:[],version:"current",lastUpdatedBy:"\u767e\u5c0f\u50e7",lastUpdatedAt:1629484898,formattedLastUpdatedAt:"8/21/2021",frontMatter:{id:"specification-document",title:"6. \u89c4\u8303\u5316\u63a5\u53e3\u6587\u6863",sidebar_label:"6. \u89c4\u8303\u5316\u63a5\u53e3\u6587\u6863 (Swagger)"},sidebar:"docs",previous:{title:"5. \u52a8\u6001 WebAPI",permalink:"/furion/docs/dynamic-api-controller"},next:{title:"7. \u53cb\u597d\u5f02\u5e38\u5904\u7406",permalink:"/furion/docs/friendly-exception"}},c=[{value:"6.1 \u4ec0\u4e48\u662f\u63a5\u53e3\u6587\u6863",id:"61-\u4ec0\u4e48\u662f\u63a5\u53e3\u6587\u6863",children:[]},{value:"6.2 \u4e3a\u4ec0\u4e48\u8981\u5199\u63a5\u53e3\u6587\u6863",id:"62-\u4e3a\u4ec0\u4e48\u8981\u5199\u63a5\u53e3\u6587\u6863",children:[]},{value:"6.3 \u4e3a\u4ec0\u4e48\u9700\u8981\u89c4\u8303\u5316\u6587\u6863",id:"63-\u4e3a\u4ec0\u4e48\u9700\u8981\u89c4\u8303\u5316\u6587\u6863",children:[{value:"6.3.1 \u534f\u8bae\u89c4\u8303",id:"631-\u534f\u8bae\u89c4\u8303",children:[]},{value:"6.3.2 \u63a5\u53e3\u8def\u5f84\u89c4\u8303",id:"632-\u63a5\u53e3\u8def\u5f84\u89c4\u8303",children:[]},{value:"6.3.3 \u7248\u672c\u63a7\u5236\u89c4\u8303",id:"633-\u7248\u672c\u63a7\u5236\u89c4\u8303",children:[]},{value:"6.3.4 \u63a5\u53e3\u547d\u540d\u89c4\u8303",id:"634-\u63a5\u53e3\u547d\u540d\u89c4\u8303",children:[]},{value:"6.3.5 \u8bf7\u6c42\u53c2\u6570\u89c4\u8303",id:"635-\u8bf7\u6c42\u53c2\u6570\u89c4\u8303",children:[]},{value:"6.3.6 \u8fd4\u56de\u6570\u636e\u89c4\u8303",id:"636-\u8fd4\u56de\u6570\u636e\u89c4\u8303",children:[]}]},{value:"6.4 \u4ec0\u4e48\u662f Swagger",id:"64-\u4ec0\u4e48\u662f-swagger",children:[]},{value:"6.5 Swagger \u4f7f\u7528",id:"65-swagger-\u4f7f\u7528",children:[{value:"6.5.1 \u6ce8\u518c\u670d\u52a1",id:"651-\u6ce8\u518c\u670d\u52a1",children:[]},{value:"6.5.2 \u9ed8\u8ba4\u5730\u5740",id:"652-\u9ed8\u8ba4\u5730\u5740",children:[]},{value:"6.5.3 \u9ed8\u8ba4\u5206\u7ec4",id:"653-\u9ed8\u8ba4\u5206\u7ec4",children:[]},{value:"6.5.4 \u6587\u6863\u6ce8\u91ca",id:"654-\u6587\u6863\u6ce8\u91ca",children:[]},{value:"6.5.5 \u591a\u5206\u7ec4\u652f\u6301",id:"655-\u591a\u5206\u7ec4\u652f\u6301",children:[]},{value:"6.5.6 \u591a\u5206\u7ec4\u6392\u5e8f",id:"656-\u591a\u5206\u7ec4\u6392\u5e8f",children:[]},{value:"6.5.7 \u591a\u5206\u7ec4\u4fe1\u606f\u914d\u7f6e",id:"657-\u591a\u5206\u7ec4\u4fe1\u606f\u914d\u7f6e",children:[]},{value:"6.5.8 \u7ec4\u4e2d\u7ec4\uff08\u6807\u7b7e\uff09",id:"658-\u7ec4\u4e2d\u7ec4\uff08\u6807\u7b7e\uff09",children:[]},{value:"6.5.9 \u9ed8\u8ba4\u5c55\u5f00\u6240\u6709\u6587\u6863",id:"659-\u9ed8\u8ba4\u5c55\u5f00\u6240\u6709\u6587\u6863",children:[]},{value:"6.5.10 \u914d\u7f6e\u6587\u6863\u6807\u9898",id:"6510-\u914d\u7f6e\u6587\u6863\u6807\u9898",children:[]},{value:"6.5.11 \u6388\u6743\u63a7\u5236",id:"6511-\u6388\u6743\u63a7\u5236",children:[]},{value:"6.5.12 \u5728\u7ebf\u6d4b\u8bd5",id:"6512-\u5728\u7ebf\u6d4b\u8bd5",children:[]},{value:"6.5.13 \u6027\u80fd\u76d1\u89c6 MiniProfiler",id:"6513-\u6027\u80fd\u76d1\u89c6-miniprofiler",children:[]},{value:"6.5.14 \u5b9a\u4e49\u63a5\u53e3\u8f93\u51fa\u7c7b\u578b",id:"6514-\u5b9a\u4e49\u63a5\u53e3\u8f93\u51fa\u7c7b\u578b",children:[]},{value:"6.5.15 \u9690\u85cf\u7279\u5b9a\u5206\u7ec4",id:"6515-\u9690\u85cf\u7279\u5b9a\u5206\u7ec4",children:[]},{value:"6.5.16 \u4e2d\u6587\u4e71\u7801\u95ee\u9898",id:"6516-\u4e2d\u6587\u4e71\u7801\u95ee\u9898",children:[]},{value:"6.5.17 \u751f\u4ea7\u73af\u5883\u4e2d\u5173\u95ed Swagger",id:"6517-\u751f\u4ea7\u73af\u5883\u4e2d\u5173\u95ed-swagger",children:[]},{value:"6.5.18 \u8bbe\u7f6e Example Value \u9ed8\u8ba4\u503c",id:"6518-\u8bbe\u7f6e-example-value-\u9ed8\u8ba4\u503c",children:[]},{value:"6.5.19 \u81ea\u5b9a\u4e49 Swagger \u914d\u7f6e",id:"6519-\u81ea\u5b9a\u4e49-swagger-\u914d\u7f6e",children:[]},{value:"6.5.20 \u914d\u7f6e Swagger\u7684 Schemes",id:"6520-\u914d\u7f6e-swagger\u7684-schemes",children:[]},{value:"6.5.21 \u81ea\u5b9a\u4e49 swagger.json \u8def\u7531\u6a21\u677f",id:"6521-\u81ea\u5b9a\u4e49-swaggerjson-\u8def\u7531\u6a21\u677f",children:[]},{value:"6.5.22 \u5173\u4e8e application/x-www-form-urlencoded \u8bf7\u6c42",id:"6522-\u5173\u4e8e-applicationx-www-form-urlencoded-\u8bf7\u6c42",children:[]},{value:"6.5.23 Swagger \u51fa\u73b0 CORS \u95ee\u9898\u89e3\u51b3",id:"6523-swagger-\u51fa\u73b0-cors-\u95ee\u9898\u89e3\u51b3",children:[]},{value:"6.5.24 Swagger \u51fa\u73b0\u9ed8\u8ba4 xml \u53c2\u6570\u95ee\u9898\u89e3\u51b3",id:"6524-swagger-\u51fa\u73b0\u9ed8\u8ba4-xml-\u53c2\u6570\u95ee\u9898\u89e3\u51b3",children:[]},{value:"6.5.25 Swagger \u591a\u8bed\u8a00\u652f\u6301",id:"6525-swagger-\u591a\u8bed\u8a00\u652f\u6301",children:[]},{value:"6.5.26 \u81ea\u5b9a\u4e49\u903b\u8f91\u63a7\u5236 Swagger \u6bcf\u4e00\u4e2a api \u53ef\u89c1\u6027",id:"6526-\u81ea\u5b9a\u4e49\u903b\u8f91\u63a7\u5236-swagger-\u6bcf\u4e00\u4e2a-api-\u53ef\u89c1\u6027",children:[]},{value:"6.5.27 \u914d\u7f6e MVC \u63a7\u5236\u5668\u652f\u6301\u89c4\u8303\u5316\u5904\u7406",id:"6527-\u914d\u7f6e-mvc-\u63a7\u5236\u5668\u652f\u6301\u89c4\u8303\u5316\u5904\u7406",children:[]}]},{value:"6.6 SpecificationDocumentSettings \u914d\u7f6e",id:"66-specificationdocumentsettings-\u914d\u7f6e",children:[]},{value:"6.7 \u7edf\u4e00\u8fd4\u56de\u503c\u6a21\u578b/\u89c4\u8303\u5316\u7ed3\u679c/API \u8fd4\u56de\u503c",id:"67-\u7edf\u4e00\u8fd4\u56de\u503c\u6a21\u578b\u89c4\u8303\u5316\u7ed3\u679capi-\u8fd4\u56de\u503c",children:[{value:"6.7.1 \u6392\u9664\u89c4\u8303\u5316\u5904\u7406",id:"671-\u6392\u9664\u89c4\u8303\u5316\u5904\u7406",children:[]},{value:"6.7.2 \u89c4\u8303\u5316\u7ed3\u679c\u6dfb\u52a0\u989d\u5916\u6570\u636e",id:"672-\u89c4\u8303\u5316\u7ed3\u679c\u6dfb\u52a0\u989d\u5916\u6570\u636e",children:[]},{value:"6.7.3 \u81ea\u5b9a\u4e49\u7279\u522b\u63a5\u53e3\u89c4\u8303\u5316\u7ed3\u679c",id:"673-\u81ea\u5b9a\u4e49\u7279\u522b\u63a5\u53e3\u89c4\u8303\u5316\u7ed3\u679c",children:[]}]},{value:"6.8 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"68-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],k={toc:c};function g(e){var n=e.components,t=(0,i.Z)(e,s);return(0,r.kt)("wrapper",(0,a.Z)({},k,t,{components:n,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"61-\u4ec0\u4e48\u662f\u63a5\u53e3\u6587\u6863"},"6.1 \u4ec0\u4e48\u662f\u63a5\u53e3\u6587\u6863"),(0,r.kt)("p",null,"\u5728\u73b0\u5728\u79fb\u52a8\u4e3a\u738b\u3001\u591a\u7aef\u4e92\u8f85\u3001\u524d\u7aef\u767e\u82b1\u9f50\u653e\u7684\u5f00\u653e\u65f6\u4ee3\uff0c\u4e0d\u518d\u662f\u4e00\u4eba\u5305\u63fd\u5f0f\u5f00\u53d1\uff0c\u5927\u5bb6\u5404\u53f8\u5176\u804c\uff0c\u540e\u7aef\u5de5\u7a0b\u5e08\u8d1f\u8d23\u63a5\u53e3\u5f00\u53d1\uff0c\u524d\u7aef\u8d1f\u8d23\u63a5\u53e3\u8054\u8c03\uff0c\u4e5f\u5c31\u662f\u4e92\u8054\u7f51\u73b0\u5728\u6d41\u884c\u7684\u524d\u540e\u7aef\u5206\u79bb\u67b6\u6784\u3002"),(0,r.kt)("p",null,"\u6240\u4ee5\u5c31\u9700\u8981\u7531\u524d\u540e\u7aef\u5de5\u7a0b\u5e08\u5171\u540c\u5b9a\u4e49\u63a5\u53e3\uff0c\u7f16\u5199\u63a5\u53e3\u6587\u6863\uff0c\u4e4b\u540e\u5927\u5bb6\u6309\u7167\u8fd9\u4e2a\u63a5\u53e3\u6587\u6863\u8fdb\u884c\u5f00\u53d1\u3001\u7ef4\u62a4\u53ca\u5f00\u653e\u7ed9\u7b2c\u4e09\u65b9\u3002"),(0,r.kt)("h2",{id:"62-\u4e3a\u4ec0\u4e48\u8981\u5199\u63a5\u53e3\u6587\u6863"},"6.2 \u4e3a\u4ec0\u4e48\u8981\u5199\u63a5\u53e3\u6587\u6863"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u80fd\u591f\u8ba9\u524d\u7aef\u5f00\u53d1\u4e0e\u540e\u53f0\u5f00\u53d1\u4eba\u5458\u66f4\u597d\u7684\u914d\u5408\uff0c\u63d0\u9ad8\u5de5\u4f5c\u6548\u7387"),(0,r.kt)("li",{parentName:"ul"},"\u9879\u76ee\u8fed\u4ee3\u6216\u8005\u9879\u76ee\u4eba\u5458\u66f4\u8fed\u65f6\uff0c\u65b9\u4fbf\u540e\u671f\u4eba\u5458\u67e5\u770b\u548c\u7ef4\u62a4"),(0,r.kt)("li",{parentName:"ul"},"\u65b9\u4fbf\u6d4b\u8bd5\u4eba\u5458\u8fdb\u884c\u63a5\u53e3\u6d4b\u8bd5")),(0,r.kt)("h2",{id:"63-\u4e3a\u4ec0\u4e48\u9700\u8981\u89c4\u8303\u5316\u6587\u6863"},"6.3 \u4e3a\u4ec0\u4e48\u9700\u8981\u89c4\u8303\u5316\u6587\u6863"),(0,r.kt)("p",null,"\u7531\u4e8e\u6bcf\u4e2a\u516c\u53f8\u540e\u7aef\u4eba\u5458\u6280\u672f\u53c2\u5dee\u4e0d\u9f50\uff0c\u6280\u672f\u6587\u6863\u80fd\u529b\u4e5f\u4e0d\u4f8b\u5916\uff0c\u5bfc\u81f4\u63a5\u53e3\u5b9a\u4e49\u53ca\u6587\u6863\u4e94\u82b1\u516b\u95e8\uff0c\u4e0d\u540c\u9879\u76ee\u6216\u4e0d\u540c\u516c\u53f8\u5bf9\u63a5\u6781\u5176\u56f0\u96be\uff0c\u800c\u4e14\u4f53\u9a8c\u7cdf\u7cd5\u3002\u6240\u4ee5\uff0c\u65e0\u89c4\u77e9\u4e0d\u6210\u65b9\u5706\uff0c\u4e3a\u4e86\u5f00\u53d1\u4eba\u5458\u95f4\u66f4\u597d\u7684\u914d\u5408\uff0c\u8feb\u5207\u9700\u8981\u6574\u7406\u51fa\u4e00\u5957\u89c4\u8303\u3002"),(0,r.kt)("p",null,"\u901a\u5e38\u63a5\u53e3\u89c4\u8303\u5206\u4e3a\u516d\u4e2a\u90e8\u5206\uff1a"),(0,r.kt)("h3",{id:"631-\u534f\u8bae\u89c4\u8303"},"6.3.1 \u534f\u8bae\u89c4\u8303"),(0,r.kt)("p",null,"\u4e3a\u4e86\u786e\u4fdd\u4e0d\u540c\u7cfb\u7edf/\u6a21\u5757\u95f4\u7684\u6570\u636e\u4ea4\u4e92\uff0c\u9700\u8981\u4e8b\u5148\u7ea6\u5b9a\u597d\u901a\u8baf\u534f\u8bae\uff0c\u5982\uff1aTCP\u3001HTTP\u3001HTTPS \u534f\u8bae\u3002\u4e3a\u4e86\u786e\u4fdd\u6570\u636e\u4ea4\u4e92\u5b89\u5168\uff0c\u5efa\u8bae\u4f7f\u7528 HTTPS \u534f\u8bae"),(0,r.kt)("h3",{id:"632-\u63a5\u53e3\u8def\u5f84\u89c4\u8303"},"6.3.2 \u63a5\u53e3\u8def\u5f84\u89c4\u8303"),(0,r.kt)("p",null,"\u4f5c\u4e3a\u63a5\u53e3\u8def\u5f84\uff0c\u4e3a\u4e86\u65b9\u4fbf\u6e05\u6670\u7684\u533a\u5206\u6765\u81ea\u4e0d\u540c\u7684\u7cfb\u7edf\uff0c\u53ef\u4ee5\u91c7\u7528\u4e0d\u540c\u7cfb\u7edf/\u6a21\u5757\u540d\u4f5c\u4e3a\u63a5\u53e3\u8def\u5f84\u524d\u7f00\uff0c\u5982\uff1a\u652f\u4ed8\u6a21\u5757\uff1a",(0,r.kt)("inlineCode",{parentName:"p"},"/pay/xxx"),"\uff0c\u8ba2\u5355\u6a21\u5757\uff1a",(0,r.kt)("inlineCode",{parentName:"p"},"/order/xxx")),(0,r.kt)("h3",{id:"633-\u7248\u672c\u63a7\u5236\u89c4\u8303"},"6.3.3 \u7248\u672c\u63a7\u5236\u89c4\u8303"),(0,r.kt)("p",null,'\u4e3a\u4e86\u4fbf\u4e8e\u540e\u671f\u63a5\u53e3\u7684\u5347\u7ea7\u548c\u7ef4\u62a4\uff0c\u5efa\u8bae\u5728\u63a5\u53e3\u8def\u5f84\u4e2d\u52a0\u5165\u7248\u672c\u53f7\uff0c\u4fbf\u4e8e\u7ba1\u7406\uff0c\u5b9e\u73b0\u63a5\u53e3\u591a\u7248\u672c\u7684\u53ef\u7ef4\u62a4\u6027\u3002\u5982\uff1a\u63a5\u53e3\u8def\u5f84\u4e2d\u6dfb\u52a0\u7c7b\u4f3c"',(0,r.kt)("inlineCode",{parentName:"p"},"v1"),'"\u3001"',(0,r.kt)("inlineCode",{parentName:"p"},"v2"),'"\u7b49\u7248\u672c\u53f7'),(0,r.kt)("h3",{id:"634-\u63a5\u53e3\u547d\u540d\u89c4\u8303"},"6.3.4 \u63a5\u53e3\u547d\u540d\u89c4\u8303"),(0,r.kt)("p",null,'\u548c C# \u547d\u540d\u89c4\u8303\u4e00\u6837\uff0c\u597d\u7684\u3001\u7edf\u4e00\u7684\u63a5\u53e3\u547d\u540d\u89c4\u8303\uff0c\u4e0d\u4ec5\u53ef\u4ee5\u589e\u5f3a\u5176\u53ef\u8bfb\u6027\uff0c\u800c\u4e14\u8fd8\u4f1a\u51cf\u5c11\u5f88\u591a\u4e0d\u5fc5\u8981\u7684\u53e3\u5934/\u4e66\u9762\u4e0a\u7684\u89e3\u91ca\u3002\u53ef\u4f7f\u7528"\u9a7c\u5cf0\u547d\u540d\u6cd5"\u6309\u7167\u5b9e\u73b0\u63a5\u53e3\u7684',(0,r.kt)("strong",{parentName:"p"},"\u4e1a\u52a1\u7c7b\u578b\u3001\u4e1a\u52a1\u573a\u666f"),"\u7b49\u547d\u540d\uff0c\u6709\u5fc5\u8981\u65f6\u53ef\u91c7\u53d6\u591a\u7ea7\u76ee\u5f55\u547d\u540d\uff0c\u4f46\u76ee\u5f55\u4e0d\u5b9c\u8fc7\u957f\uff0c\u4e24\u7ea7\u76ee\u5f55\u8f83\u4e3a\u9002\u5b9c"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"\u5e38\u89c1\u547d\u540d\u65b9\u5f0f"),":",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"\u63a5\u53e3\u540d\u79f0\u52a8\u8bcd\u524d/\u540e\u7f00\u5316"),"\uff1a \u63a5\u53e3\u540d\u79f0\u4ee5\u63a5\u53e3\u6570\u636e\u64cd\u4f5c\u7684\u52a8\u8bcd\u4e3a\u524d/\u540e\u7f00\uff0c\u5e38\u89c1\u52a8\u8bcd\u6709\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"Add\u3001Delete\u3001Update\u3001Query\u3001Get\u3001Send\u3001Save\u3001Detail\u3001List"),"\u7b49\uff0c\u5982\uff1a\u65b0\u5efa\u7528\u6237 ",(0,r.kt)("inlineCode",{parentName:"li"},"AddUser"),"\u3001\u67e5\u8be2\u8ba2\u5355\u8be6\u60c5 ",(0,r.kt)("inlineCode",{parentName:"li"},"QueryOrderDetail"),"\u3002"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"\u63a5\u53e3\u540d\u79f0\u52a8\u8bcd + \u8bf7\u6c42\u65b9\u5f0f"),"\uff1a\u63a5\u53e3\u8def\u5f84\u4e2d\u5305\u542b\u5177\u4f53\u63a5\u53e3\u540d\u79f0\u7684\u540d\u8bcd\uff0c\u63a5\u53e3\u6570\u636e\u64cd\u4f5c\u52a8\u4f5c\u4ee5 HTTP \u8bf7\u6c42\u65b9\u5f0f\u6765\u533a\u5206\u3002\u5e38\u7528\u7684 HTTP \u8bf7\u6c42\u65b9\u5f0f\u6709\uff1a",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"GET"),"\uff1a\u4ece\u670d\u52a1\u5668\u53d6\u51fa\u8d44\u6e90\uff08\u4e00\u9879\u6216\u591a\u9879\uff09"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"POST"),"\uff1a\u5728\u670d\u52a1\u5668\u65b0\u5efa\u4e00\u4e2a\u8d44\u6e90"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"PUT"),"\uff1a\u5728\u670d\u52a1\u5668\u66f4\u65b0\u8d44\u6e90\uff08\u5ba2\u6237\u7aef\u63d0\u4f9b\u6539\u53d8\u540e\u7684\u5b8c\u6574\u8d44\u6e90\uff09"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"PATCH"),"\uff1a\u5728\u670d\u52a1\u5668\u66f4\u65b0\u8d44\u6e90\uff08\u5ba2\u6237\u7aef\u63d0\u4f9b\u6539\u53d8\u7684\u5c5e\u6027\uff09"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"DELETE"),"\uff1a\u4ece\u670d\u52a1\u5668\u5220\u9664\u8d44\u6e90")))))),(0,r.kt)("h3",{id:"635-\u8bf7\u6c42\u53c2\u6570\u89c4\u8303"},"6.3.5 \u8bf7\u6c42\u53c2\u6570\u89c4\u8303"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"\u8bf7\u6c42\u65b9\u5f0f"),"\uff1a\u6309\u7167 ",(0,r.kt)("inlineCode",{parentName:"li"},"GET\u3001POST\u3001PUT")," \u7b49\u542b\u4e49\u5b9a\u4e49\uff0c\u907f\u514d\u51fa\u73b0\u4e0d\u4e00\u81f4\u73b0\u8c61\uff0c\u5bf9\u4eba\u9020\u6210\u8bef\u89e3\u3001\u6b67\u4e49",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"\u8bf7\u6c42\u5934"),"\uff1a\u8bf7\u6c42\u5934\u6839\u636e\u9879\u76ee\u9700\u6c42\u6dfb\u52a0\u914d\u7f6e\u53c2\u6570\u3002\u5982\uff1a\u8bf7\u6c42\u6570\u636e\u683c\u5f0f\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"accept=application/json")," \u7b49\u3002\u5982\u6709\u9700\u8981\uff0c\u8bf7\u6c42\u5934\u53ef\u6839\u636e\u9879\u76ee\u9700\u6c42\u8981\u6c42\u4f20\u5165\u7528\u6237 token\u3001\u552f\u4e00\u9a8c\u7b7e\u7801\u7b49\u52a0\u5bc6\u6570\u636e"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"\u8bf7\u6c42\u53c2\u6570/\u8bf7\u6c42\u4f53"),"\uff1a \u8bf7\u6c42\u53c2\u6570\u5b57\u6bb5\uff0c\u5c3d\u53ef\u80fd\u4e0e\u6570\u636e\u5e93\u8868\u5b57\u6bb5\u3001\u5bf9\u8c61\u5c5e\u6027\u540d\u7b49\u4fdd\u6301\u4e00\u81f4\uff0c\u56e0\u4e3a\u4fdd\u6301\u4e00\u81f4\u662f\u6700\u7701\u4e8b\uff0c\u6700\u8212\u670d\u7684\u4e00\u4ef6\u4e8b")))),(0,r.kt)("h3",{id:"636-\u8fd4\u56de\u6570\u636e\u89c4\u8303"},"6.3.6 \u8fd4\u56de\u6570\u636e\u89c4\u8303"),(0,r.kt)("p",null,"\u7edf\u4e00\u89c4\u8303\u8fd4\u56de\u6570\u636e\u7684\u683c\u5f0f\uff0c\u5bf9\u5df1\u5bf9\u5f7c\u90fd\u6709\u597d\u5904\uff0c\u6b64\u5904\u4ee5 json \u683c\u5f0f\u4e3a\u4f8b\u3002\u8fd4\u56de\u6570\u636e\u5e94\u5305\u542b\uff1a",(0,r.kt)("strong",{parentName:"p"},"\u8fd4\u56de\u72b6\u6001\u7801\u3001\u8fd4\u56de\u72b6\u6001\u4fe1\u606f\u3001\u5177\u4f53\u6570\u636e"),"\u3002",(0,r.kt)("strong",{parentName:"p"},"\u8fd4\u56de\u6570\u636e\u4e2d\u7684\u72b6\u6001\u7801\u3001\u72b6\u6001\u4fe1\u606f\uff0c\u5e38\u6307\u5177\u4f53\u7684\u4e1a\u52a1\u72b6\u6001\uff0c\u4e0d\u5efa\u8bae\u548c HTTP \u72b6\u6001\u7801\u6df7\u5728\u4e00\u8d77"),"\u3002HTTP \u72b6\u6001\uff0c\u662f\u7528\u6765\u4f53\u73b0 HTTP \u94fe\u8def\u72b6\u6001\u60c5\u51b5\uff0c\u5982\uff1a404-Not Found\u3002HTTP \u72b6\u6001\u7801\u548c json \u7ed3\u679c\u4e2d\u7684\u72b6\u6001\u7801\uff0c\u5e76\u5b58\u5c1a\u53ef\uff0c\u7528\u4e8e\u4f53\u73b0\u4e0d\u540c\u7ef4\u5ea6\u7684\u72b6\u6001\u3002"),(0,r.kt)("h2",{id:"64-\u4ec0\u4e48\u662f-swagger"},"6.4 \u4ec0\u4e48\u662f Swagger"),(0,r.kt)("p",null,"\u76f8\u4fe1\u65e0\u8bba\u662f\u524d\u7aef\u8fd8\u662f\u540e\u7aef\u5f00\u53d1\uff0c\u90fd\u6216\u591a\u6216\u5c11\u5730\u88ab\u63a5\u53e3\u6587\u6863\u6298\u78e8\u8fc7\u3002\u524d\u7aef\u7ecf\u5e38\u62b1\u6028\u540e\u7aef\u7ed9\u7684\u63a5\u53e3\u6587\u6863\u4e0e\u5b9e\u9645\u60c5\u51b5\u4e0d\u4e00\u81f4\u3002\u540e\u7aef\u53c8\u89c9\u5f97\u7f16\u5199\u53ca\u7ef4\u62a4\u63a5\u53e3\u6587\u6863\u4f1a\u8017\u8d39\u4e0d\u5c11\u7cbe\u529b\uff0c\u7ecf\u5e38\u6765\u4e0d\u53ca\u66f4\u65b0\u3002"),(0,r.kt)("p",null,"\u5176\u5b9e\u65e0\u8bba\u662f\u524d\u7aef\u8c03\u7528\u540e\u7aef\uff0c\u8fd8\u662f\u540e\u7aef\u8c03\u7528\u540e\u7aef\uff0c\u90fd\u671f\u671b\u6709\u4e00\u4e2a\u597d\u7684\u63a5\u53e3\u6587\u6863\u3002\u4f46\u662f\u8fd9\u4e2a\u63a5\u53e3\u6587\u6863\u5bf9\u4e8e\u7a0b\u5e8f\u5458\u6765\u8bf4\uff0c\u5c31\u8ddf\u6ce8\u91ca\u4e00\u6837\uff0c\u7ecf\u5e38\u4f1a\u62b1\u6028\u522b\u4eba\u5199\u7684\u4ee3\u7801\u6ca1\u6709\u5199\u6ce8\u91ca\uff0c\u7136\u800c\u81ea\u5df1\u5199\u8d77\u4ee3\u7801\u8d77\u6765\uff0c\u6700\u8ba8\u538c\u7684\uff0c\u4e5f\u662f\u5199\u6ce8\u91ca\u3002\u6240\u4ee5\u4ec5\u4ec5\u53ea\u901a\u8fc7\u5f3a\u5236\u6765\u89c4\u8303\u5927\u5bb6\u662f\u4e0d\u591f\u7684\uff0c\u968f\u7740\u65f6\u95f4\u63a8\u79fb\uff0c\u7248\u672c\u8fed\u4ee3\uff0c\u63a5\u53e3\u6587\u6863\u5f80\u5f80\u5f88\u5bb9\u6613\u5c31\u8ddf\u4e0d\u4e0a\u4ee3\u7801\u4e86\u3002"),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"\u53d1\u73b0\u4e86\u75db\u70b9\u5c31\u8981\u53bb\u627e\u89e3\u51b3\u65b9\u6848\u3002\u89e3\u51b3\u65b9\u6848\u7528\u7684\u4eba\u591a\u4e86\uff0c\u5c31\u6210\u4e86\u6807\u51c6\u7684\u89c4\u8303\uff0c\u8fd9\u5c31\u662f ",(0,r.kt)("inlineCode",{parentName:"strong"},"Swagger")," \u7684\u7531\u6765"),"\u3002"),(0,r.kt)("p",null,"\u901a\u8fc7\u8fd9\u5957\u89c4\u8303\uff0c\u4f60\u53ea\u9700\u8981\u6309\u7167\u5b83\u7684\u89c4\u8303\u53bb\u5b9a\u4e49\u63a5\u53e3\u53ca\u63a5\u53e3\u76f8\u5173\u7684\u4fe1\u606f\u3002\u518d\u901a\u8fc7 ",(0,r.kt)("inlineCode",{parentName:"p"},"Swagger")," \u884d\u751f\u51fa\u6765\u7684\u4e00\u7cfb\u5217\u9879\u76ee\u548c\u5de5\u5177\uff0c\u5c31\u53ef\u4ee5\u505a\u5230\u751f\u6210\u5404\u79cd\u683c\u5f0f\u7684\u63a5\u53e3\u6587\u6863\uff0c\u751f\u6210\u591a\u79cd\u8bed\u8a00\u7684\u5ba2\u6237\u7aef\u548c\u670d\u52a1\u7aef\u7684\u4ee3\u7801\uff0c\u4ee5\u53ca\u5728\u7ebf\u63a5\u53e3\u8c03\u8bd5\u9875\u9762\u7b49\u7b49\u3002"),(0,r.kt)("p",null,"\u8fd9\u6837\uff0c\u5982\u679c\u6309\u7167\u65b0\u7684\u5f00\u53d1\u6a21\u5f0f\uff0c\u5728\u5f00\u53d1\u65b0\u7248\u672c\u6216\u8005\u8fed\u4ee3\u7248\u672c\u7684\u65f6\u5019\uff0c\u53ea\u9700\u8981\u66f4\u65b0 ",(0,r.kt)("inlineCode",{parentName:"p"},"Swagger")," \u63cf\u8ff0\u6587\u4ef6\uff0c\u5c31\u53ef\u4ee5\u81ea\u52a8\u751f\u6210\u63a5\u53e3\u6587\u6863\u548c\u5ba2\u6237\u7aef\u670d\u52a1\u7aef\u4ee3\u7801\uff0c\u505a\u5230\u8c03\u7528\u7aef\u4ee3\u7801\u3001\u670d\u52a1\u7aef\u4ee3\u7801\u4ee5\u53ca\u63a5\u53e3\u6587\u6863\u7684\u4e00\u81f4\u6027\u3002"),(0,r.kt)("p",null,"\u6240\u4ee5\uff0cSwagger \u662f\u4e00\u4e2a\u89c4\u8303\u548c\u5b8c\u6574\u7684\u6846\u67b6\uff0c\u7528\u4e8e\u751f\u6210\u3001\u63cf\u8ff0\u3001\u8c03\u7528\u548c\u53ef\u89c6\u5316",(0,r.kt)("inlineCode",{parentName:"p"},"RESTful")," \u98ce\u683c\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"Web")," \u670d\u52a1\u3002"),(0,r.kt)("p",null,"\u603b\u4f53\u76ee\u6807\u662f\u4f7f\u5ba2\u6237\u7aef\u548c\u6587\u4ef6\u7cfb\u7edf\u4f5c\u4e3a\u670d\u52a1\u5668\u4ee5\u540c\u6837\u7684\u901f\u5ea6\u6765\u66f4\u65b0\u3002\u6587\u4ef6\u7684\u65b9\u6cd5\u3001\u53c2\u6570\u548c\u6a21\u578b\u7d27\u5bc6\u96c6\u6210\u5230\u670d\u52a1\u5668\u7aef\u7684\u4ee3\u7801\uff0c\u5141\u8bb8 API \u6765\u59cb\u7ec8\u4fdd\u6301\u540c\u6b65\u3002",(0,r.kt)("inlineCode",{parentName:"p"},"Swagger")," \u8ba9\u90e8\u7f72\u7ba1\u7406\u548c\u4f7f\u7528\u529f\u80fd\u5f3a\u5927\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"API")," \u4ece\u672a\u5982\u6b64\u7b80\u5355\u3002"),(0,r.kt)("h2",{id:"65-swagger-\u4f7f\u7528"},"6.5 Swagger \u4f7f\u7528"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u4e86\u975e\u5e38\u65b9\u4fbf\u4e14\u7075\u6d3b\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"Swagger")," \u914d\u7f6e\uff0c\u65e0\u9700\u589e\u52a0\u989d\u5916\u5b66\u4e60\u6210\u672c\u3002"),(0,r.kt)("h3",{id:"651-\u6ce8\u518c\u670d\u52a1"},"6.5.1 \u6ce8\u518c\u670d\u52a1"),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u5907\u6ce8")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},(0,r.kt)("inlineCode",{parentName:"p"},".UseInject()")," \u5df2\u7ecf\u5305\u542b\u4e86 ",(0,r.kt)("inlineCode",{parentName:"p"},".UseSpecificationDocuments()")," \u6ce8\u518c\uff0c\u65e0\u9700\u518d\u6b21\u6ce8\u518c\u3002"))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:'{11,21} title="Furion.Web.Core\\FurWebCoreStartup.cs"',"{11,21}":!0,title:'"Furion.Web.Core\\FurWebCoreStartup.cs"'},"using Microsoft.AspNetCore.Builder;\nusing Microsoft.AspNetCore.Hosting;\nusing Microsoft.Extensions.DependencyInjection;\nusing Microsoft.Extensions.Hosting;\n\nnamespace Furion.Web.Core\n{\n [AppStartup(800)]\n public sealed class FurWebCoreStartup : AppStartup\n {\n public void ConfigureServices(IServiceCollection services)\n {\n services.AddSpecificationDocuments();\n services.AddControllers();\n }\n\n public void Configure(IApplicationBuilder app, IWebHostEnvironment env)\n {\n // Other Codes\n\n app.UseSpecificationDocuments();\n\n app.UseEndpoints(endpoints =>\n {\n endpoints.MapControllers();\n });\n }\n }\n}\n")),(0,r.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u5c0f\u77e5\u8bc6")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},(0,r.kt)("inlineCode",{parentName:"p"},"services.AddSpecificationDocuments()")," \u901a\u5e38\u548c ",(0,r.kt)("inlineCode",{parentName:"p"},".AddDynamicApiControllers()")," \u6210\u5bf9\u51fa\u73b0\u3002"))),(0,r.kt)("h3",{id:"652-\u9ed8\u8ba4\u5730\u5740"},"6.5.2 \u9ed8\u8ba4\u5730\u5740"),(0,r.kt)("p",null,"\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\uff0c\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"p"},"\u89c4\u8303\u5316\u6587\u6863")," \u5730\u5740\u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"/api")," \u76ee\u5f55\uff0c",(0,r.kt)("strong",{parentName:"p"},"\u652f\u6301\u81ea\u5b9a\u4e49\u914d\u7f6e"),"\u3002"),(0,r.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,r.kt)("img",{src:(0,l.Z)("img/swagger1.png")}),(0,r.kt)("p",null,"\u53ef\u4ee5\u901a\u8fc7\u4e24\u79cd\u65b9\u5f0f\u914d\u7f6e\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},'app.UseInject("\u8def\u7531")')," \u65b9\u5f0f\uff0c\u5982")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'app.UseInject("testapi"); // \u90a3\u4e48 /testapi \u5c31\u662f\u89c4\u8303\u5316\u5730\u5740\n')),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e"),"\uff1a")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{3}","{3}":!0},'{\n "SpecificationDocumentSettings": {\n "RoutePrefix": "testapi"\n }\n}\n')),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"\u914d\u7f6e\u6587\u4ef6\u4f18\u5148\u7ea7\u5927\u4e8e ",(0,r.kt)("inlineCode",{parentName:"strong"},"UseInject()")," \u65b9\u5f0f")),(0,r.kt)("h3",{id:"653-\u9ed8\u8ba4\u5206\u7ec4"},"6.5.3 \u9ed8\u8ba4\u5206\u7ec4"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\u9ed8\u8ba4\u5206\u7ec4\u540d\u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"Default"),"\uff0c",(0,r.kt)("strong",{parentName:"p"},"\u652f\u6301\u81ea\u5b9a\u4e49\u914d\u7f6e"),"\u3002"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{3}","{3}":!0},'{\n "SpecificationDocumentSettings": {\n "DefaultGroupName": "MyGroup"\n }\n}\n')),(0,r.kt)("h3",{id:"654-\u6587\u6863\u6ce8\u91ca"},"6.5.4 \u6587\u6863\u6ce8\u91ca"),(0,r.kt)("p",null,"\u89c4\u8303\u5316\u6587\u6863\u9ed8\u8ba4\u626b\u63cf ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion.Application"),"\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"Furion.Web.Core"),"\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"Furion.Web.Entry")," \u4e09\u4e2a\u7a0b\u5e8f\u96c6",(0,r.kt)("inlineCode",{parentName:"p"},".xml")," \u6ce8\u91ca\u6587\u4ef6\uff0c",(0,r.kt)("strong",{parentName:"p"},"\u652f\u6301\u81ea\u5b9a\u4e49\u914d\u7f6e"),"\u3002"),(0,r.kt)("p",null,"\u53ea\u652f\u6301 ",(0,r.kt)("inlineCode",{parentName:"p"},"///")," \u6807\u8bc6\u7684\u6ce8\u91ca\u8bed\u6cd5\uff0c\u5982\uff1a",(0,r.kt)("strong",{parentName:"p"},"\u7c7b\u3001\u65b9\u6cd5\u3001\u5c5e\u6027\u3001\u53c2\u6570\u3001\u8fd4\u56de\u503c\u3001\u9a8c\u8bc1\u7279\u6027"),"\u3002"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{5-7,10-13,19-23}","{5-7,10-13,19-23}":!0},'using Furion.DynamicApiController;\n\nnamespace Furion.Application\n{\n /// \n /// \u7c7b\u6ce8\u91ca\n /// \n public class FurionAppService : IDynamicApiController\n {\n /// \n /// \u65b9\u6cd5\u6ce8\u91ca\n /// \n /// \n public string Get()\n {\n return nameof(Furion);\n }\n\n /// \n /// \u5e26 ID \u53c2\u6570\u7684\u65b9\u6cd5\u6ce8\u91ca\n /// \n /// \n /// \n public int Get(int id)\n {\n return id;\n }\n }\n}\n')),(0,r.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,r.kt)("img",{src:(0,l.Z)("img/swagger2.png")}),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u5c0f\u63d0\u793a")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u5982\u679c\u6587\u6863\u6ce8\u91ca\u6ca1\u6709\u663e\u793a\uff0c\u8bf7\u68c0\u67e5\u9879\u76ee ",(0,r.kt)("inlineCode",{parentName:"p"},"\u5c5e\u6027->\u751f\u6210->\u8f93\u51fa")," \u4e2d XML \u6587\u6863\u662f\u5426\u914d\u7f6e\u8f93\u51fa\u8def\u5f84\u3002",(0,r.kt)("strong",{parentName:"p"},"\u6ce8\u610f\uff1a\u53ea\u6709\u4e0d\u5e26\u8def\u5f84\u7684 \u3010\u9879\u76ee\u540d\u79f0.xml\u3011 \u624d\u4f1a\u81ea\u52a8\u52a0\u8f7d\u3002")))),(0,r.kt)("div",{className:"admonition admonition-info alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u8bf4\u660e")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},(0,r.kt)("inlineCode",{parentName:"p"},"Debug")," \u6a21\u5f0f\u4e0b\u548c ",(0,r.kt)("inlineCode",{parentName:"p"},"Release")," \u6a21\u5f0f\u4e0b\u7684\u6ce8\u91ca\u6587\u4ef6\u662f\u4e0d\u901a\u7528\u7684\uff0c\u6240\u4ee5\u5bfc\u81f4\u5f88\u591a\u5f00\u53d1\u8005\u53d1\u5e03\u5230\u670d\u52a1\u5668\u4e0a\u53d1\u73b0\u6ca1\u6709\u663e\u793a\u6ce8\u91ca\u3002\u6211\u4eec\u53ea\u9700\u8981\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Visual Studio")," \u4e2d\u5207\u6362 ",(0,r.kt)("inlineCode",{parentName:"p"},"Debug")," \u6a21\u5f0f\u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"Release"),"\uff0c\u7136\u540e\u91cd\u65b0\u914d\u7f6e\u4e00\u6b21\u5373\u53ef\u3002"),(0,r.kt)("p",{parentName:"div"},"\u8fd9\u6837\u4e0d\u7ba1\u662f ",(0,r.kt)("inlineCode",{parentName:"p"},"Debug")," \u8fd8\u662f ",(0,r.kt)("inlineCode",{parentName:"p"},"Release")," \u6a21\u5f0f\u90fd\u4f1a\u663e\u793a\u6ce8\u91ca\u4e86\u3002"))),(0,r.kt)("h3",{id:"655-\u591a\u5206\u7ec4\u652f\u6301"},"6.5.5 \u591a\u5206\u7ec4\u652f\u6301"),(0,r.kt)("p",null,"\u591a\u5206\u7ec4\u662f\u4e00\u4e2a\u7cfb\u7edf\u4e2d\u5fc5\u5907\u529f\u80fd\uff0c\u6211\u4eec\u53ef\u4ee5\u5c06\u7cfb\u7edf\u5212\u5206\u4e3a\u591a\u4e2a\u6a21\u5757\uff0c\u6bcf\u4e2a\u6a21\u5757\u90fd\u72ec\u7acb\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"api")," \u914d\u7f6e\u3002\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\uff0c\u5b9e\u73b0\u591a\u5206\u7ec4\u975e\u5e38\u7b80\u5355\u3002\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{5,21,32}","{5,21,32}":!0},'using Furion.DynamicApiController;\n\nnamespace Furion.Application\n{\n [ApiDescriptionSettings("Group1")]\n public class FurionAppService : IDynamicApiController\n {\n /// \n /// \u968f\u7236\u7c7b Group1 \u5206\u7ec4\n /// \n /// \n public string Post()\n {\n return nameof(Furion);\n }\n\n /// \n /// \u5728 Group1\u3001Group3 \u90fd\u6709\u6211\n /// \n /// \n [ApiDescriptionSettings("Group1", "Group3")]\n public string Get()\n {\n return nameof(Furion);\n }\n\n /// \n /// \u6211\u53ea\u5728 Group2 \u51fa\u73b0\n /// \n /// \n /// \n [ApiDescriptionSettings("Group2")]\n public int Get(int id)\n {\n return id;\n }\n }\n}\n')),(0,r.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,r.kt)("img",{src:(0,l.Z)("img/swagger3.gif")}),(0,r.kt)("h3",{id:"656-\u591a\u5206\u7ec4\u6392\u5e8f"},"6.5.6 \u591a\u5206\u7ec4\u6392\u5e8f"),(0,r.kt)(o.Z,{defaultValue:"fz1",values:[{label:"\u65b9\u5f0f\u4e00",value:"fz1"},{label:"\u65b9\u5f0f\u4e8c",value:"fz2"}],mdxType:"Tabs"},(0,r.kt)(p.Z,{value:"fz1",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"\u901a\u8fc7\u5206\u7ec4\u540d\u79f0\u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"strong"},"@\u6574\u6570")," \u8fdb\u884c\u6392\u5e8f")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{5,19}","{5,19}":!0},'using Furion.DynamicApiController;\n\nnamespace Furion.Application\n{\n [ApiDescriptionSettings("Group1@1")]\n public class FurionAppService : IDynamicApiController\n {\n public string Post()\n {\n return nameof(Furion);\n }\n\n [ApiDescriptionSettings("Group1", "Group3")]\n public string Get()\n {\n return nameof(Furion);\n }\n\n [ApiDescriptionSettings("Group@2")]\n public int Get(int id)\n {\n return id;\n }\n }\n}\n')),(0,r.kt)("p",null,"\u53ef\u4ee5\u901a\u8fc7\u5728\u5206\u7ec4\u540d\u540e\u9762\u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"p"},"@\u6574\u6570")," \u8fdb\u884c\u6392\u5e8f\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"\u6574\u6570")," \u8d8a\u5927\u6392\u524d\u9762\u3002\u5982\u679c\u5206\u7ec4\u540d\u79f0\u591a\u6b21\u6307\u5b9a\u4e14\u591a\u6b21\u6307\u5b9a\u4e86 ",(0,r.kt)("inlineCode",{parentName:"p"},"@\u6574\u6570")," \uff0c\u5219\u81ea\u52a8",(0,r.kt)("strong",{parentName:"p"},"\u53d6\u8be5\u5206\u7ec4\u6700\u5927\u7684\u6574\u6570"),"\u8fdb\u884c\u6392\u5e8f\u3002")),(0,r.kt)(p.Z,{value:"fz2",mdxType:"TabItem"},(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"\u901a\u8fc7\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e\u6392\u5e8f")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json",metastring:'{2-17} title="Furion.Web.Entry/appsettings.json"',"{2-17}":!0,title:'"Furion.Web.Entry/appsettings.json"'},'{\n "SpecificationDocumentSettings": {\n "GroupOpenApiInfos": [\n {\n "Group": "Group1",\n "Order": 1\n },\n {\n "Group": "Group2",\n "Order": 2\n },\n {\n "Group": "Group3",\n "Order": 0\n }\n ]\n }\n}\n')))),(0,r.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,r.kt)("img",{src:(0,l.Z)("img/swagger4.png")}),(0,r.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u6392\u5e8f\u8bf4\u660e")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u5206\u7ec4\u9ed8\u8ba4\u6392\u5e8f ",(0,r.kt)("inlineCode",{parentName:"p"},"Order")," \u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"0"),"\u3002\u5982\u679c\u540c\u65f6\u914d\u7f6e\u4e86 ",(0,r.kt)("inlineCode",{parentName:"p"},"@\u6574\u6570")," \u548c ",(0,r.kt)("inlineCode",{parentName:"p"},"appsettings.json")," \u914d\u7f6e\u6587\u4ef6\uff0c\u90a3\u4e48\u4f18\u5148\u91c7\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"appsettings.json")," \u4e2d\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"Order")))),(0,r.kt)("h3",{id:"657-\u591a\u5206\u7ec4\u4fe1\u606f\u914d\u7f6e"},"6.5.7 \u591a\u5206\u7ec4\u4fe1\u606f\u914d\u7f6e"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u4e86\u53ef\u901a\u8fc7 ",(0,r.kt)("inlineCode",{parentName:"p"},"appsetting.json")," \u914d\u7f6e\u5206\u7ec4\u4fe1\u606f\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json",metastring:'{3-20} title="Furion.Web.Entry/appsettings.json"',"{3-20}":!0,title:'"Furion.Web.Entry/appsettings.json"'},'{\n "SpecificationDocumentSettings": {\n "GroupOpenApiInfos": [\n {\n "Group": "Group1",\n "Title": "\u5206\u7ec4\u6807\u9898",\n "Description": "\u8fd9\u91cc\u662f\u5206\u7ec4\u63cf\u8ff0",\n "Version": "\u7248\u672c\u53f7",\n "TermsOfService": "https://furion.pro",\n "Contact": {\n "Name": "\u767e\u5c0f\u50e7",\n "Url": "https://gitee.com/monksoul",\n "Email": "monksoul@outlook.com"\n },\n "License": {\n "Name": "MulanPSL-2.0",\n "Url": "https://gitee.com/dotnetchina/Furion/blob/alpha/LICENSE"\n }\n }\n ]\n }\n}\n')),(0,r.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,r.kt)("img",{src:(0,l.Z)("img/swagger5.png")}),(0,r.kt)("h3",{id:"658-\u7ec4\u4e2d\u7ec4\uff08\u6807\u7b7e\uff09"},"6.5.8 \u7ec4\u4e2d\u7ec4\uff08\u6807\u7b7e\uff09"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Tag")," \u914d\u7f6e\u4e3b\u8981\u7528\u4e8e\u914d\u7f6e ",(0,r.kt)("inlineCode",{parentName:"p"},"Swagger")," \u6807\u7b7e\u5206\u7ec4\u4fe1\u606f\u53ca\u5408\u5e76\u6807\u7b7e\u3002\u4e5f\u5c31\u662f ",(0,r.kt)("inlineCode",{parentName:"p"},"\u7ec4\u4e2d\u7ec4"),":"),(0,r.kt)(o.Z,{defaultValue:"tag1",values:[{label:"\u6807\u7b7e\u547d\u540d",value:"tag1"},{label:"\u5408\u5e76\u6807\u7b7e",value:"tag2"}],mdxType:"Tabs"},(0,r.kt)(p.Z,{value:"tag1",mdxType:"TabItem"},(0,r.kt)("h4",{id:"\u672a\u8d34\u6807\u7b7e\u4e4b\u524d"},"\u672a\u8d34\u6807\u7b7e\u4e4b\u524d"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"using Furion.DynamicApiController;\n\nnamespace Furion.Application\n{\n public class FurionAppService : IDynamicApiController\n {\n public string Get()\n {\n return nameof(Furion);\n }\n\n public int Get(int id)\n {\n return id;\n }\n }\n\n public class TestAppService : IDynamicApiController\n {\n public string Get()\n {\n return nameof(Furion);\n }\n\n public int Get(int id)\n {\n return id;\n }\n }\n}\n")),(0,r.kt)("h4",{id:"\u8d34\u6807\u7b7e\u4e4b\u540e"},"\u8d34\u6807\u7b7e\u4e4b\u540e"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{5,19}","{5,19}":!0},'using Furion.DynamicApiController;\n\nnamespace Furion.Application\n{\n [ApiDescriptionSettings(Tag = "\u5206\u7ec4\u4e00")]\n public class FurionAppService : IDynamicApiController\n {\n public string Get()\n {\n return nameof(Furion);\n }\n\n public int Get(int id)\n {\n return id;\n }\n }\n\n [ApiDescriptionSettings(Tag = "\u5206\u7ec4\u4e8c")]\n public class TestAppService : IDynamicApiController\n {\n public string Get()\n {\n return nameof(Furion);\n }\n\n public int Get(int id)\n {\n return id;\n }\n }\n}\n')),(0,r.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,r.kt)("img",{src:(0,l.Z)("img/tag1.png")})),(0,r.kt)(p.Z,{value:"tag2",mdxType:"TabItem"},(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{5,19}","{5,19}":!0},'using Furion.DynamicApiController;\n\nnamespace Furion.Application\n{\n [ApiDescriptionSettings(Tag = "\u5408\u5e76\u6240\u6709\u6807\u7b7e")]\n public class FurionAppService : IDynamicApiController\n {\n public string Get()\n {\n return nameof(Furion);\n }\n\n public int Get(int id)\n {\n return id;\n }\n }\n\n [ApiDescriptionSettings(Tag = "\u5408\u5e76\u6240\u6709\u6807\u7b7e")]\n public class TestAppService : IDynamicApiController\n {\n public string Get()\n {\n return nameof(Furion);\n }\n\n public int Get(int id)\n {\n return id;\n }\n }\n}\n')),(0,r.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,r.kt)("img",{src:(0,l.Z)("img/tag2.png")}))),(0,r.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u5c0f\u77e5\u8bc6")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u5982\u679c ",(0,r.kt)("inlineCode",{parentName:"p"},"Tag")," \u540d\u5b57\u4e00\u6837\uff0c\u5219\u4f1a\u81ea\u52a8\u5408\u5e76\uff0c\u5426\u5219\u53ea\u662f\u547d\u540d\u3002"))),(0,r.kt)("h3",{id:"659-\u9ed8\u8ba4\u5c55\u5f00\u6240\u6709\u6587\u6863"},"6.5.9 \u9ed8\u8ba4\u5c55\u5f00\u6240\u6709\u6587\u6863"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json",metastring:'{2-4} title="Furion.Web.Entry/appsettings.json"',"{2-4}":!0,title:'"Furion.Web.Entry/appsettings.json"'},'{\n "SpecificationDocumentSettings": {\n "DocExpansionState": "Full"\n }\n}\n')),(0,r.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,r.kt)("img",{src:(0,l.Z)("img/swagger6.gif")}),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"DocExpansionState")," \u914d\u7f6e\u8bf4\u660e\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"List"),"\uff1a\u5217\u8868\u5f0f\uff08\u5c55\u5f00\u5b50\u7c7b\uff09\uff0c",(0,r.kt)("strong",{parentName:"li"},"\u9ed8\u8ba4\u503c")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Full"),"\uff1a\u5b8c\u5168\u5c55\u5f00"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"None"),"\uff1a\u5217\u8868\u5f0f\uff08\u4e0d\u5c55\u5f00\u5b50\u7c7b\uff09")),(0,r.kt)("h3",{id:"6510-\u914d\u7f6e\u6587\u6863\u6807\u9898"},"6.5.10 \u914d\u7f6e\u6587\u6863\u6807\u9898"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json",metastring:'{2-4} title="Furion.Web.Entry/appsettings.json"',"{2-4}":!0,title:'"Furion.Web.Entry/appsettings.json"'},'{\n "SpecificationDocumentSettings": {\n "DocumentTitle": "\u6211\u662f\u81ea\u5b9a\u4e49\u6807\u9898"\n }\n}\n')),(0,r.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,r.kt)("img",{src:(0,l.Z)("img/swagger7.png")}),(0,r.kt)("h3",{id:"6511-\u6388\u6743\u63a7\u5236"},"6.5.11 \u6388\u6743\u63a7\u5236"),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"\u65b0\u7248\u672c ",(0,r.kt)("inlineCode",{parentName:"strong"},"Furion")," \u5df2\u7ecf\u9ed8\u8ba4\u542f\u7528\u4e86 Bearer Token \u6388\u6743\u914d\u7f6e\uff0c\u65e0\u9700\u624b\u52a8\u914d\u7f6e"),"\uff0c\u5982\u9700\u624b\u52a8\u914d\u7f6e\uff0c\u53ef\u624b\u52a8\u6dfb\u52a0\u4ee5\u4e0b\u7c7b\u4f3c\u914d\u7f6e\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json",metastring:'title="Furion.Web.Entry/appsettings.json"',title:'"Furion.Web.Entry/appsettings.json"'},'{\n "SpecificationDocumentSettings": {\n "EnableAuthorized": true,\n\n "SecurityDefinitions": [\n {\n "Id": "Bearer",\n "Type": "Http",\n "Name": "Authorization",\n "Description": "JWT Authorization header using the Bearer scheme.",\n "BearerFormat": "JWT",\n "Scheme": "bearer",\n "In": "Header",\n\n "Requirement": {\n "Scheme": {\n "Reference": {\n "Id": "Bearer",\n "Type": "SecurityScheme"\n },\n "Accesses": []\n }\n }\n }\n ]\n }\n}\n')),(0,r.kt)("h3",{id:"6512-\u5728\u7ebf\u6d4b\u8bd5"},"6.5.12 \u5728\u7ebf\u6d4b\u8bd5"),(0,r.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,r.kt)("img",{src:(0,l.Z)("img/swagger8.gif")}),(0,r.kt)("h3",{id:"6513-\u6027\u80fd\u76d1\u89c6-miniprofiler"},"6.5.13 \u6027\u80fd\u76d1\u89c6 ",(0,r.kt)("inlineCode",{parentName:"h3"},"MiniProfiler")),(0,r.kt)("p",null,"\u89c4\u8303\u5316\u6587\u6863\u9ed8\u8ba4\u96c6\u6210\u4e86 ",(0,r.kt)("inlineCode",{parentName:"p"},"MiniProfiler")," \u7b2c\u4e09\u65b9\u6027\u80fd\u7ec4\u4ef6\uff0c\u901a\u8fc7\u8be5\u7ec4\u4ef6\u53ef\u4ee5\u65b9\u4fbf\u67e5\u770b\u8bf7\u6c42\u6027\u80fd\u3001\u5f02\u5e38\u5806\u6808\u3001\u6570\u636e\u5e93\u64cd\u4f5c\u7b49\u4fe1\u606f\u3002\u9ed8\u8ba4\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Swagger")," \u9996\u9875\u5de6\u4e0a\u89d2\u663e\u793a\u3002"),(0,r.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,r.kt)("img",{src:(0,l.Z)("img/mipr.png")}),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u5c0f\u63d0\u793a")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u4e5f\u53ef\u4ee5\u901a\u8fc7 ",(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("inlineCode",{parentName:"strong"},"appsetting.json"))," \u4e2d ",(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("inlineCode",{parentName:"strong"},"AppSettings:InjectMiniProfiler"))," \u8bbe\u4e3a ",(0,r.kt)("strong",{parentName:"p"},(0,r.kt)("inlineCode",{parentName:"strong"},"false"))," \u5173\u95ed\u3002"))),(0,r.kt)("h3",{id:"6514-\u5b9a\u4e49\u63a5\u53e3\u8f93\u51fa\u7c7b\u578b"},"6.5.14 \u5b9a\u4e49\u63a5\u53e3\u8f93\u51fa\u7c7b\u578b"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{2,8-9}","{2,8-9}":!0},"using Furion.DynamicApiController;\nusing Microsoft.AspNetCore.Mvc;\n\nnamespace Furion.Application\n{\n public class FurionAppService : IDynamicApiController\n {\n [ProducesResponseType(201, Type = typeof(TestDto))]\n [ProducesResponseType(400)]\n public string Get()\n {\n return nameof(Furion);\n }\n }\n}\n")),(0,r.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,r.kt)("img",{src:(0,l.Z)("img/fhzlx.png")}),(0,r.kt)("h3",{id:"6515-\u9690\u85cf\u7279\u5b9a\u5206\u7ec4"},"6.5.15 \u9690\u85cf\u7279\u5b9a\u5206\u7ec4"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u65b0\u7248\u672c\u63d0\u4f9b\u4e86\u9690\u85cf\u5206\u7ec4\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"Visible")," \u914d\u7f6e\uff0c\u8bbe\u7f6e\u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"false")," \u4e4b\u540e\u8be5\u5206\u7ec4\u5c06\u4e0d\u663e\u793a\u5728\u89c4\u8303\u5316\u6587\u6863\u4e2d\uff0c\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json",metastring:'title="appsetting.json"',title:'"appsetting.json"'},'{\n "SpecificationDocumentSettings": {\n "GroupOpenApiInfos": [\n {\n "Group": "Group1",\n "Visible": false\n }\n ]\n }\n}\n')),(0,r.kt)("h3",{id:"6516-\u4e2d\u6587\u4e71\u7801\u95ee\u9898"},"6.5.16 \u4e2d\u6587\u4e71\u7801\u95ee\u9898"),(0,r.kt)("p",null,"\u9ed8\u8ba4\u60c5\u51b5\u4e0b,",(0,r.kt)("inlineCode",{parentName:"p"},".json")," \u6587\u4ef6\u5e76\u672a\u91c7\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"utf-8")," \u7f16\u7801\uff0c\u6240\u4ee5\u5982\u679c\u914d\u7f6e\u4e2d\u6587\u5206\u7ec4\u4fe1\u606f\u5c31\u4f1a\u51fa\u73b0\u4e71\u7801\u60c5\u51b5\uff0c\u8fd9\u65f6\u5019\uff0c\u53ea\u9700\u8981\u4fee\u6539 ",(0,r.kt)("inlineCode",{parentName:"p"},".json")," \u6587\u4ef6\u7f16\u7801\u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"utf-8")," \u5373\u53ef\u3002"),(0,r.kt)("h3",{id:"6517-\u751f\u4ea7\u73af\u5883\u4e2d\u5173\u95ed-swagger"},"6.5.17 \u751f\u4ea7\u73af\u5883\u4e2d\u5173\u95ed ",(0,r.kt)("inlineCode",{parentName:"h3"},"Swagger")),(0,r.kt)("p",null,"\u5982\u679c\u4e0d\u9700\u8981\u7ebf\u4e0a\u73af\u5883\u5f00\u542f ",(0,r.kt)("inlineCode",{parentName:"p"},"Swagger")," \u529f\u80fd\uff0c\u53ea\u9700\u8981\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"appsetting.json")," \u914d\u7f6e\u5373\u53ef\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json",metastring:"{3}","{3}":!0},'{\n "AppSettings": {\n "InjectSpecificationDocument": false\n }\n}\n')),(0,r.kt)("h3",{id:"6518-\u8bbe\u7f6e-example-value-\u9ed8\u8ba4\u503c"},"6.5.18 \u8bbe\u7f6e ",(0,r.kt)("inlineCode",{parentName:"h3"},"Example Value")," \u9ed8\u8ba4\u503c"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Swagger")," \u4f1a\u81ea\u52a8\u6839\u636e\u5bf9\u8c61\u7c7b\u578b\u8f93\u5165\u53c2\u6570\u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"p"},"Example Value")," \u9ed8\u8ba4\u503c\uff0c\u4f46\u662f\u8be5\u9ed8\u8ba4\u503c\u901a\u5e38\u662f\u5bf9\u8c61\u5c5e\u6027\u7684\u7c7b\u578b\u5b57\u7b26\u4e32\u6216\u7f3a\u7701\u503c\uff0c\u5982\u679c\u6211\u4eec\u9700\u8981\u81ea\u5b9a\u4e49\u8fd9\u4e9b\u9ed8\u8ba4\u503c\uff0c\u53ea\u9700\u8981\u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"p"},"/// \u9ed8\u8ba4\u503c")," \u6ce8\u91ca\u5373\u53ef\u3002"),(0,r.kt)("p",null,"\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{4}","{4}":!0},"/// \n/// \u5e74\u9f84\n/// \n/// 13\n[Required, Range(10, 110)]\npublic int Age { get; set; }\n")),(0,r.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,r.kt)("img",{src:(0,l.Z)("img/sd20.png")}),(0,r.kt)("p",null,"\u66f4\u591a\u7c7b\u578b\u9ed8\u8ba4\u503c\u8bbe\u7f6e\u793a\u4f8b\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"bool")," \u7c7b\u578b\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"/// true")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"string")," \u7c7b\u578b\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},'/// "foobar"')),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"number")," \u7c7b\u578b\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"/// 123")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"null")," \u7c7b\u578b\uff1a ",(0,r.kt)("inlineCode",{parentName:"li"},"/// null")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"array")," \u7c7b\u578b\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"/// [ 1, 2, 3 ]"))),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u5173\u4e8e ",(0,r.kt)("inlineCode",{parentName:"h5"},"object")," \u7c7b\u578b\u8f93\u5165\u53c2\u6570")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"Example Value")," \u4e0d\u4f1a\u663e\u793a ",(0,r.kt)("inlineCode",{parentName:"p"},"object")," \u7c7b\u578b\u7684\u5bf9\u8c61\u5c5e\u6027\uff0c\u56e0\u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"Swagger")," \u8ba4\u4e3a\u8fd9\u662f\u4e0d\u5408\u7406\u7684\u5b9a\u4e49\u3002\u5982\u679c\u9700\u8981\u5f3a\u5236\u663e\u793a\uff0c\u53ea\u9700\u8981\u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"p"},'/// "object"')," \u6ce8\u91ca\u5373\u53ef\u3002"))),(0,r.kt)("h3",{id:"6519-\u81ea\u5b9a\u4e49-swagger-\u914d\u7f6e"},"6.5.19 \u81ea\u5b9a\u4e49 ",(0,r.kt)("inlineCode",{parentName:"h3"},"Swagger")," \u914d\u7f6e"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u9664\u4e86\u5185\u7f6e\u4e86\u4e0d\u5c11\u914d\u7f6e\u4ee5\u5916\uff0c\u8fd8\u63d0\u4f9b\u4e86\u76f4\u63a5\u914d\u7f6e ",(0,r.kt)("inlineCode",{parentName:"p"},"Swagger")," Api \u7684\u53c2\u6570\uff0c\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"public void ConfigureServices(IServiceCollection services)\n{\n services.AddInject(options =>\n {\n options.SpecificationDocumentConfigure = spt =>\n {\n spt.SwaggerGenConfigure = gen =>\n {\n // \u914d\u7f6e Swagger Gen\n };\n };\n });\n}\n")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"}," public void Configure(IApplicationBuilder app, IWebHostEnvironment env)\n {\n app.UseInject(configure: options =>\n {\n options.SpecificationDocumentConfigure = spt =>\n {\n spt.SwaggerConfigure = swg =>\n {\n // \u914d\u7f6e Swagger Options\n };\n spt.SwaggerUIConfigure = ui =>\n {\n // \u914d\u7f6e Swagger UI\n };\n };\n });\n}\n\n")),(0,r.kt)("h3",{id:"6520-\u914d\u7f6e-swagger\u7684-schemes"},"6.5.20 \u914d\u7f6e ",(0,r.kt)("inlineCode",{parentName:"h3"},"Swagger"),"\u7684 ",(0,r.kt)("inlineCode",{parentName:"h3"},"Schemes")),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u9ed8\u8ba4\u53ea\u663e\u793a\u540d\u79f0\uff0c\u5982\u679c\u9700\u8981\u81ea\u5b9a\u4e49\u663e\u793a\u89c4\u5219\uff0c\u53ea\u9700\u8981\u6dfb\u52a0\u914d\u7f6e\u5373\u53ef\u3002"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"services.AddControllersWithViews()\n .AddInject(options =>\n {\n options.SpecificationDocumentConfigure = spt =>\n {\n spt.SwaggerGenConfigure = gen =>\n {\n gen.CustomSchemaIds(x => x.FullName);\n };\n };\n });\n")),(0,r.kt)("h3",{id:"6521-\u81ea\u5b9a\u4e49-swaggerjson-\u8def\u7531\u6a21\u677f"},"6.5.21 \u81ea\u5b9a\u4e49 ",(0,r.kt)("inlineCode",{parentName:"h3"},"swagger.json")," \u8def\u7531\u6a21\u677f"),(0,r.kt)("p",null,"\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4f1a\u751f\u6210\u7edf\u4e00\u7684\u5206\u7ec4\u6a21\u677f\uff0c\u5982\uff1a",(0,r.kt)("inlineCode",{parentName:"p"},"swagger/{documentName}/swagger.json"),"\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"{documentName}")," \u4f1a\u5728\u8fd0\u884c\u65f6\u66ff\u6362\u4e3a\u5206\u7ec4\u540d\uff0c\u5982\u9700\u81ea\u5b9a\u4e49\uff0c\u914d\u7f6e ",(0,r.kt)("inlineCode",{parentName:"p"},"RouteTemplate")," \u5373\u53ef\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json",metastring:'title="appsetting.json"',title:'"appsetting.json"'},'{\n "SpecificationDocumentSettings": {\n "RouteTemplate": "myapp/{documentName}/xxxx.json"\n }\n}\n')),(0,r.kt)("h3",{id:"6522-\u5173\u4e8e-applicationx-www-form-urlencoded-\u8bf7\u6c42"},"6.5.22 \u5173\u4e8e ",(0,r.kt)("inlineCode",{parentName:"h3"},"application/x-www-form-urlencoded")," \u8bf7\u6c42"),(0,r.kt)("p",null,"\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"Swagger")," \u5e76\u672a\u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"p"},"application/x-www-form-urlencoded")," \u652f\u6301\uff0c\u5982\u9700\u542f\u7528\u8be5\u914d\u7f6e\uff0c\u53ea\u9700\u5728\u65b9\u6cd5\u9876\u90e8\u8d34 ",(0,r.kt)("inlineCode",{parentName:"p"},"[Consumes]")," \u7279\u6027\u5373\u53ef\uff0c\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,2}","{1,2}":!0},'[Consumes("application/x-www-form-urlencoded")]\npublic async Task Test([FromForm] TestRequest testRequest)\n{\n // ....\n}\n\npublic class TestRequest\n{\n public string TestValue { get; set; }\n}\n')),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u6ce8\u610f")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u53c2\u6570\u5fc5\u987b\u8d34 ",(0,r.kt)("inlineCode",{parentName:"p"},"[FromForm]")," \u7279\u6027\u3002\u53e6\u5916\u8bf7\u6c42\u65f6\u5c06\u53c2\u6570\u6309 ",(0,r.kt)("inlineCode",{parentName:"p"},"URL")," \u5730\u5740\u62fc\u63a5\u5e76\u653e\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Body")," \u4e2d\u8bf7\u6c42\u3002"))),(0,r.kt)("h3",{id:"6523-swagger-\u51fa\u73b0-cors-\u95ee\u9898\u89e3\u51b3"},"6.5.23 ",(0,r.kt)("inlineCode",{parentName:"h3"},"Swagger")," \u51fa\u73b0 ",(0,r.kt)("inlineCode",{parentName:"h3"},"CORS")," \u95ee\u9898\u89e3\u51b3"),(0,r.kt)("p",null,"\u5982\u679c ",(0,r.kt)("inlineCode",{parentName:"p"},"Swagger")," \u51fa\u73b0\u4ee5\u4e0b\u9519\u8bef\uff0c\u5982\u56fe\uff1a"),(0,r.kt)("img",{src:(0,l.Z)("img/swerror.png")}),(0,r.kt)("p",null,"\u5219\u9700\u8981\u6dfb\u52a0\u4ee5\u4e0b\u914d\u7f6e\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json",metastring:"{2,3}","{2,3}":!0},'{\n "SpecificationDocumentSettings": {\n "HideServers": true\n }\n}\n')),(0,r.kt)("h3",{id:"6524-swagger-\u51fa\u73b0\u9ed8\u8ba4-xml-\u53c2\u6570\u95ee\u9898\u89e3\u51b3"},"6.5.24 ",(0,r.kt)("inlineCode",{parentName:"h3"},"Swagger")," \u51fa\u73b0\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"h3"},"xml")," \u53c2\u6570\u95ee\u9898\u89e3\u51b3"),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"\u4ea7\u751f\u6b64\u539f\u56e0\u6709\u4e24\u4e2a\u5fc5\u8981\u6761\u4ef6\uff1a")),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},"\u4f7f\u7528\u4e86 ",(0,r.kt)("inlineCode",{parentName:"li"},"Microsoft.AspNetCore.Mvc.NewtonsoftJson")," \u5305\u5e76\u6dfb\u52a0\u4e86 ",(0,r.kt)("inlineCode",{parentName:"li"},"AddNewtonsoftJson()")," \u6ce8\u518c\u3002"),(0,r.kt)("li",{parentName:"ol"},(0,r.kt)("inlineCode",{parentName:"li"},".AddNewtonsoftJson()")," \u5199\u5728\u4e86 ",(0,r.kt)("inlineCode",{parentName:"li"},".AddInjectWithUnifyResult()")," \u540e\u9762\u3002")),(0,r.kt)("p",null,"\u6240\u4ee5\u89e3\u51b3\u65b9\u6cd5\u662f\uff0c\u5148\u6ce8\u518c ",(0,r.kt)("inlineCode",{parentName:"p"},".AddNewtonsoftJson()")," \u518d\u6ce8\u518c\u89c4\u8303\u5316\u7ed3\u679c\uff0c\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{2}","{2}":!0},"services.AddControllers()\n .AddNewtonsoftJson()\n .AddInjectWithUnifyResult();\n")),(0,r.kt)("h3",{id:"6525-swagger-\u591a\u8bed\u8a00\u652f\u6301"},"6.5.25 ",(0,r.kt)("inlineCode",{parentName:"h3"},"Swagger")," \u591a\u8bed\u8a00\u652f\u6301"),(0,r.kt)("p",null,"\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion 2.9.0 + ")," \u7248\u672c\u5df2\u7ecf\u652f\u6301\u4e86 ",(0,r.kt)("inlineCode",{parentName:"p"},"Swagger")," \u6587\u6863\u5730\u5740 ",(0,r.kt)("inlineCode",{parentName:"p"},"?culture=en-US")," \u53c2\u6570\u591a\u8bed\u8a00\u8f6c\u53d1\u529f\u80fd\u4e86\uff0c\u4e5f\u5c31\u662f ",(0,r.kt)("inlineCode",{parentName:"p"},"Swagger")," \u5730\u5740\u5e26 ",(0,r.kt)("inlineCode",{parentName:"p"},"?culture=")," \u53c2\u6570\u5c06\u81ea\u52a8\u6dfb\u52a0\u5230\u6bcf\u4e00\u4e2a\u8bf7\u6c42\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"api")," \u5730\u5740\u4e2d\u3002"),(0,r.kt)("h3",{id:"6526-\u81ea\u5b9a\u4e49\u903b\u8f91\u63a7\u5236-swagger-\u6bcf\u4e00\u4e2a-api-\u53ef\u89c1\u6027"},"6.5.26 \u81ea\u5b9a\u4e49\u903b\u8f91\u63a7\u5236 ",(0,r.kt)("inlineCode",{parentName:"h3"},"Swagger")," \u6bcf\u4e00\u4e2a ",(0,r.kt)("inlineCode",{parentName:"h3"},"api")," \u53ef\u89c1\u6027"),(0,r.kt)("p",null,"\u6709\u65f6\u5019\u6211\u4eec\u9700\u8981\u81ea\u5b9a\u4e49 ",(0,r.kt)("inlineCode",{parentName:"p"},"Swagger")," \u63a5\u53e3\u53ef\u89c1\u6027\uff0c\u6bd4\u5982\u6839\u636e\u6743\u9650\uff0c\u4e0d\u540c\u7528\u6237\u7c7b\u578b\uff0c\u5404\u79cd\u903b\u8f91\u63a7\u5236\uff0c\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"// \u4e5f\u53ef\u4ee5\u7528 .AddInjectWithUnifyResult\nservices.AddInject(options =>\n {\n options.SpecificationDocumentConfigure = spt =>\n {\n spt.SwaggerGenConfigure = gen =>\n {\n gen.DocInclusionPredicate((currentGroup, apiDescription) =>\n {\n // Furion \u5185\u90e8\u68c0\u67e5\uff0c\u5fc5\u987b\u653e\u7b2c\u4e00\u884c\n var isShow = SpecificationDocumentBuilder.CheckApiDescriptionInCurrentGroup(currentGroup, apiDescription);\n\n // \u83b7\u53d6\u5f53\u524d\u65b9\u6cd5\n _ = apiDescription.TryGetMethodInfo(out var method);\n\n // \u6709\u4e86\u65b9\u6cd5\uff0c\u8fd9\u91cc\u505a\u4f60\u60f3\u505a\u7684\u4e8b\u60c5\uff0cisShow \u8bbe\u7f6e true \u53ef\u89c1\uff0c\u8bbe\u7f6e false \u4e0d\u53ef\u89c1\n\n return isShow;\n });\n };\n };\n });\n")),(0,r.kt)("h3",{id:"6527-\u914d\u7f6e-mvc-\u63a7\u5236\u5668\u652f\u6301\u89c4\u8303\u5316\u5904\u7406"},"6.5.27 \u914d\u7f6e ",(0,r.kt)("inlineCode",{parentName:"h3"},"MVC")," \u63a7\u5236\u5668\u652f\u6301\u89c4\u8303\u5316\u5904\u7406"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json"},'{\n "UnifyResultSettings": {\n "SupportMvcController": true\n }\n}\n')),(0,r.kt)("h2",{id:"66-specificationdocumentsettings-\u914d\u7f6e"},"6.6 ",(0,r.kt)("inlineCode",{parentName:"h2"},"SpecificationDocumentSettings")," \u914d\u7f6e"),(0,r.kt)("p",null,"\u9664\u4e86\u4e0a\u8ff0\u4f8b\u5b50\u5916\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u63d0\u4f9b\u4e86\u4e00\u4e9b\u914d\u7f6e\u9009\u9879\uff0c\u5982\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"DocumentTitle"),"\uff1a\u6587\u6863\u6807\u9898\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"string"),"\uff0c\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"Specification Api Document")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"DefaultGroupName"),"\uff1a\u9ed8\u8ba4\u5206\u7ec4\u540d\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"string"),"\uff0c\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"Default")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"EnableAuthorized"),"\uff1a\u662f\u5426\u542f\u7528\u6743\u9650\u63a7\u5236\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"bool"),"\uff0c\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"true")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"FormatAsV2"),"\uff1a\u91c7\u7528 ",(0,r.kt)("inlineCode",{parentName:"li"},"Swagger 2.0")," \u7248\u672c\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"bool"),"\uff0c\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"false")," ",(0,r.kt)("strong",{parentName:"li"},(0,r.kt)("a",{parentName:"strong",href:"https://github.com/domaindrivendev/Swashbuckle.WebApi/issues/1393"},"\u5df2\u5f03\u7528"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"RoutePrefix"),"\uff1a\u89c4\u8303\u5316\u6587\u6863\u5730\u5740\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"string"),"\uff0c\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"api"),"\uff0c",(0,r.kt)("strong",{parentName:"li"},"\u5982\u679c\u5e0c\u671b\u5728\u9996\u9875\uff0c\u6539\u4e3a\u7a7a\u5b57\u7b26\u4e32\u5373\u53ef"),"\u3002"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"DocExpansionState"),"\uff1a\u6587\u6863\u663e\u793a\u65b9\u5f0f\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"DocExpansion"),"\uff0c\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"List"),"\uff0c\u53d6\u503c\uff1a",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"List"),"\uff1a\u5217\u8868\u5f0f\uff08\u5c55\u5f00\u5b50\u7c7b\uff09\uff0c",(0,r.kt)("strong",{parentName:"li"},"\u9ed8\u8ba4\u503c")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Full"),"\uff1a\u5b8c\u5168\u5c55\u5f00"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"None"),"\uff1a\u5217\u8868\u5f0f\uff08\u4e0d\u5c55\u5f00\u5b50\u7c7b\uff09"))),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"XmlComments"),"\uff1a\u7a0b\u5e8f\u96c6\u6ce8\u91ca\u63cf\u8ff0\u6587\u4ef6\u540d\uff08\u53ef\u5e26 ",(0,r.kt)("inlineCode",{parentName:"li"},".xml"),"\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"string"),"\uff0c\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"Furion.Application, Furion.Web.Entry, Furion.Web.Core")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"GroupOpenApiInfos"),"\uff1a\u5206\u7ec4\u4fe1\u606f\u914d\u7f6e\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"SpecificationOpenApiInfo[]"),"\uff0c\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"{ 'Group': 'Default'}")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"SecurityDefinitions"),"\uff1a\u5b89\u5168\u7b56\u7565\u5b9a\u4e49\u914d\u7f6e\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"SpecificationOpenApiSecurityScheme[]"),"\uff0c\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"[]")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Servers"),"\uff1a\u914d\u7f6e Server \u4e0b\u62c9\u5217\u8868\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"OpenApiServer[]")," \u7c7b\u578b\uff0c\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"[]"),"\uff0c\u5982\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},'{Servers:[ { Url:"\u5730\u5740", Description:"\u63cf\u8ff0"} ]}')),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"HideServers"),"\uff1a\u662f\u5426\u9690\u85cf Server \u4e0b\u62c9\u5217\u8868\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"bool")," \u7c7b\u578b\uff0c\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"true")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"RouteTemplate"),"\uff1a\u914d\u7f6e\u6587\u6863 ",(0,r.kt)("inlineCode",{parentName:"li"},"swagger.json")," \u8def\u7531\u6a21\u677f\uff0c\u9ed8\u8ba4\u6a21\u677f\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"swagger/{documentName}/swagger.json"),", ",(0,r.kt)("inlineCode",{parentName:"li"},"{documentName}")," \u4ee3\u8868\u5206\u7ec4\u540d\uff0c",(0,r.kt)("strong",{parentName:"li"},"\u5fc5\u987b\u4fdd\u7559\u539f\u6837")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"PackagesGroups"),"\uff1a\u914d\u7f6e\u6a21\u5757\u5316\u5185\u7f6e\u5206\u7ec4\u540d\u79f0\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"string[]")," \u7c7b\u578b\uff0c\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"[]")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"EnableEnumSchemaFilter"),"\uff1a\u542f\u7528\u679a\u4e3e Schema \u7b5b\u9009\u5668\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"bool")," \u7c7b\u578b\uff0c\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"true")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"EnableTagsOrderDocumentFilter"),"\uff1a\u542f\u7528\u6807\u7b7e\u6392\u5e8f\u7b5b\u9009\u5668\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"bool")," \u7c7b\u578b\uff0c\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"true"))),(0,r.kt)("p",null,"\u53e6\u5916 ",(0,r.kt)("inlineCode",{parentName:"p"},"SpecificationOpenApiInfo")," \u5185\u7f6e\u914d\u7f6e\u5982\u4e0b\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Group"),"\uff1a\u5206\u7ec4\u552f\u4e00\u6807\u8bc6\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"string")," \u7c7b\u578b\uff0c\u5fc5\u586b"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Order"),"\uff1a\u5206\u7ec4\u6392\u5e8f\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"int")," \u7c7b\u578b\uff0c\u6570\u5b57\u8d8a\u5927\u6392\u524d\u9762\uff0c\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"0")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Visible"),"\uff1a\u914d\u7f6e\u5206\u7ec4\u662f\u5426\u53ef\u89c1\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"bool")," \u7c7b\u578b\uff0c\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"true")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Title"),"\uff1a\u914d\u7f6e\u5206\u7ec4\u6807\u9898\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"string")," \u7c7b\u578b"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Description"),"\uff1a\u914d\u7f6e\u5206\u7ec4\u63cf\u8ff0\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"string")," \u7c7b\u578b"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Version"),"\uff1a\u914d\u7f6e\u5206\u7ec4\u7248\u672c\uff0c\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"li"},"1.0")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"TermsOfService"),"\uff1a\u914d\u7f6e\u76f8\u5173\u94fe\u63a5\u5730\u5740\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"Uri")," \u7c7b\u578b"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Contact"),"\uff1a\u914d\u7f6e\u8054\u7cfb\u65b9\u5f0f\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"OpenApiContact")," \u7c7b\u578b"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"License"),"\uff1a\u914d\u7f6e\u534f\u8bae\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"OpenApiLicense")," \u7c7b\u578b")),(0,r.kt)("p",null,"\u914d\u7f6e\u793a\u4f8b\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json"},'{\n "SpecificationDocumentSettings": {\n "GroupOpenApiInfos": [\n {\n "Group": "Group1",\n "Title": "\u5206\u7ec4\u6807\u9898",\n "Description": "\u8fd9\u91cc\u662f\u5206\u7ec4\u63cf\u8ff0",\n "Version": "\u7248\u672c\u53f7",\n "TermsOfService": "https://furion.pro",\n "Contact": {\n "Name": "\u767e\u5c0f\u50e7",\n "Url": "https://gitee.com/monksoul",\n "Email": "monksoul@outlook.com"\n },\n "License": {\n "Name": "MulanPSL-2.0",\n "Url": "https://gitee.com/dotnetchina/Furion/blob/alpha/LICENSE"\n }\n }\n ]\n }\n}\n')),(0,r.kt)("h2",{id:"67-\u7edf\u4e00\u8fd4\u56de\u503c\u6a21\u578b\u89c4\u8303\u5316\u7ed3\u679capi-\u8fd4\u56de\u503c"},"6.7 \u7edf\u4e00\u8fd4\u56de\u503c\u6a21\u578b/\u89c4\u8303\u5316\u7ed3\u679c/API \u8fd4\u56de\u503c"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b ",(0,r.kt)("inlineCode",{parentName:"p"},"\u89c4\u8303\u5316\u7ed3\u679c")," \u529f\u80fd\uff0c\u53ef\u4ee5\u901a\u8fc7\u5b9e\u73b0 ",(0,r.kt)("inlineCode",{parentName:"p"},"IUnifyResultProvider")," \u63d0\u4f9b\u5668\u5b9e\u73b0\u7edf\u4e00\u89c4\u8303\u5316\u8fd4\u56de\u503c\u5b9a\u5236\uff0c\u5982\uff1a",(0,r.kt)("inlineCode",{parentName:"p"},"RESTfulResultProvider"),"\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{15-16}","{15-16}":!0},'using Furion.DataValidation;\nusing Furion.DependencyInjection;\nusing Furion.UnifyResult.Internal;\nusing Microsoft.AspNetCore.Http;\nusing Microsoft.AspNetCore.Mvc;\nusing Microsoft.AspNetCore.Mvc.Filters;\nusing System;\nusing System.Threading.Tasks;\n\nnamespace Furion.UnifyResult\n{\n /// \n /// RESTful \u98ce\u683c\u8fd4\u56de\u503c\n /// \n [SuppressSniffer, UnifyModel(typeof(RESTfulResult<>))]\n public class RESTfulResultProvider : IUnifyResultProvider\n {\n /// \n /// \u5f02\u5e38\u8fd4\u56de\u503c\n /// \n /// \n /// \n /// \n public IActionResult OnException(ExceptionContext context, ExceptionMetadata metadata)\n {\n return new JsonResult(RESTfulResult(metadata.StatusCode, errors: metadata.Errors));\n }\n\n /// \n /// \u6210\u529f\u8fd4\u56de\u503c\n /// \n /// \n /// \n /// \n public IActionResult OnSucceeded(ActionExecutedContext context, object data)\n {\n return new JsonResult(RESTfulResult(StatusCodes.Status200OK, true, data));\n }\n\n /// \n /// \u9a8c\u8bc1\u5931\u8d25\u8fd4\u56de\u503c\n /// \n /// \n /// \n /// \n public IActionResult OnValidateFailed(ActionExecutingContext context, ValidationMetadata metadata)\n {\n return new JsonResult(RESTfulResult(StatusCodes.Status400BadRequest, errors: metadata.ValidationResult));\n }\n\n /// \n /// \u7279\u5b9a\u72b6\u6001\u7801\u8fd4\u56de\u503c\n /// \n /// \n /// \n /// \n /// \n public async Task OnResponseStatusCodes(HttpContext context, int statusCode, UnifyResultSettingsOptions unifyResultSettings)\n {\n // \u8bbe\u7f6e\u54cd\u5e94\u72b6\u6001\u7801\n UnifyContext.SetResponseStatusCodes(context, statusCode, unifyResultSettings);\n\n switch (statusCode)\n {\n // \u5904\u7406 401 \u72b6\u6001\u7801\n case StatusCodes.Status401Unauthorized:\n await context.Response.WriteAsJsonAsync(RESTfulResult(statusCode, errors: "401 Unauthorized")\n , App.GetOptions()?.JsonSerializerOptions);\n break;\n // \u5904\u7406 403 \u72b6\u6001\u7801\n case StatusCodes.Status403Forbidden:\n await context.Response.WriteAsJsonAsync(RESTfulResult(statusCode, errors: "403 Forbidden")\n , App.GetOptions()?.JsonSerializerOptions);\n break;\n default: break;\n }\n }\n\n /// \n /// \u8fd4\u56de RESTful \u98ce\u683c\u7ed3\u679c\u96c6\n /// \n /// \n /// \n /// \n /// \n /// \n private static RESTfulResult RESTfulResult(int statusCode, bool succeeded = default, object data = default, object errors = default)\n {\n return new RESTfulResult\n {\n StatusCode = statusCode,\n Succeeded = succeeded,\n Data = data,\n Errors = errors,\n Extras = UnifyContext.Take(),\n Timestamp = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds()\n };\n }\n }\n}\n')),(0,r.kt)("p",null,"\u4e4b\u540e\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Startup.cs")," \u4e2d\u6ce8\u518c\u5373\u53ef\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"services.AddControllers()\n .AddInjectWithUnifyResult();\n")),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u6ce8\u610f")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c\u89c4\u8303\u5316\u7ed3\u679c\u4e0d\u4f1a\u5bf9 ",(0,r.kt)("inlineCode",{parentName:"p"},"401")," \u548c ",(0,r.kt)("inlineCode",{parentName:"p"},"403"),"\u3001",(0,r.kt)("inlineCode",{parentName:"p"},"404")," \u72b6\u6001\u7801\u8fdb\u884c\u89c4\u8303\u5316\u5904\u7406\uff0c\u5982\u9700\u542f\u52a8\u8be5\u72b6\u6001\u7801\u5904\u7406\uff0c\u53ea\u9700\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Startup.cs")," \u4e2d\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"Configure")," \u4e2d\u542f\u7528\u63a5\u53e3\uff1a"),(0,r.kt)("pre",{parentName:"div"},(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"public void Configure(IApplicationBuilder app, IWebHostEnvironment env)\n{\n if (env.IsDevelopment())\n {\n app.UseDeveloperExceptionPage();\n }\n // \u6dfb\u52a0\u89c4\u8303\u5316\u7ed3\u679c\u72b6\u6001\u7801\uff0c\u9700\u8981\u5728\u8fd9\u91cc\u6ce8\u518c\n app.UseUnifyResultStatusCodes();\n // \u5176\u4ed6\u6ce8\u518c...\n}\n")))),(0,r.kt)("h3",{id:"671-\u6392\u9664\u89c4\u8303\u5316\u5904\u7406"},"6.7.1 \u6392\u9664\u89c4\u8303\u5316\u5904\u7406"),(0,r.kt)("p",null,"\u6709\u4e9b\u65f6\u5019\uff0c\u6211\u4eec\u67d0\u4e9b\u63a5\u53e3\u4e0d\u9700\u8981\u8fdb\u884c\u89c4\u8303\u5316\u5904\u7406\uff0c\u8fd9\u65f6\uff0c\u6211\u4eec\u53ea\u9700\u8981\u5e16 ",(0,r.kt)("inlineCode",{parentName:"p"},"[NonUnify]")," \u7279\u6027\u5373\u53ef\u3002"),(0,r.kt)("h3",{id:"672-\u89c4\u8303\u5316\u7ed3\u679c\u6dfb\u52a0\u989d\u5916\u6570\u636e"},"6.7.2 \u89c4\u8303\u5316\u7ed3\u679c\u6dfb\u52a0\u989d\u5916\u6570\u636e"),(0,r.kt)("p",null,"\u9ed8\u8ba4\u7684\u89c4\u8303\u5316\u7ed3\u679c\u4e2d\u5305\u542b ",(0,r.kt)("inlineCode",{parentName:"p"},"extras")," \u5c5e\u6027\uff0c\u53ef\u4ee5\u914d\u7f6e\u989d\u5916\u6570\u636e\u8fd4\u56de\u5230\u5ba2\u6237\u7aef\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'UnifyContext.Fill(new { Message = "\u64cd\u4f5c\u6210\u529f" });\n')),(0,r.kt)("h3",{id:"673-\u81ea\u5b9a\u4e49\u7279\u522b\u63a5\u53e3\u89c4\u8303\u5316\u7ed3\u679c"},"6.7.3 \u81ea\u5b9a\u4e49\u7279\u522b\u63a5\u53e3\u89c4\u8303\u5316\u7ed3\u679c"),(0,r.kt)("p",null,"\u6709\u4e9b\u65f6\u5019\uff0c\u6211\u4eec\u7279\u5b9a\u63a5\u53e3\u9700\u8fd4\u56de\u7279\u5b9a\u7684\u63a5\u53e3\u7c7b\u578b\uff0c\u65e0\u9700\u89c4\u8303\u5316\u5904\u7406\uff0c\u8fd9\u65f6\u5019\u6211\u4eec\u53ea\u9700\u8981\u8d34 ",(0,r.kt)("inlineCode",{parentName:"p"},"[UnifyResult(typeof(\u7ed3\u679c\u7c7b))]")," \u6216 ",(0,r.kt)("inlineCode",{parentName:"p"},"[ProducesResponseType(typeof(\u7ed3\u679c\u7c7b),200)]"),"\uff0c\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"[UnifyResult(typeof(Person))]\npublic Person GetPerson(int id)\n{\n // ...\n}\n")),(0,r.kt)("h2",{id:"68-\u53cd\u9988\u4e0e\u5efa\u8bae"},"6.8 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,r.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}g.isMDXComponent=!0},6010:function(e,n,t){function a(e){var n,t,i="";if("string"==typeof e||"number"==typeof e)i+=e;else if("object"==typeof e)if(Array.isArray(e))for(n=0;n=0||(l[n]=e[n]);return l}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(l[n]=e[n])}return l}var p=a.createContext({}),m=function(e){var t=a.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},d=function(e){var t=m(e.components);return a.createElement(p.Provider,{value:t},e.children)},k={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},s=a.forwardRef((function(e,t){var n=e.components,l=e.mdxType,r=e.originalType,p=e.parentName,d=i(e,["components","mdxType","originalType","parentName"]),s=m(n),u=l,N=s["".concat(p,".").concat(u)]||s[u]||k[u]||r;return n?a.createElement(N,o(o({ref:t},d),{},{components:n})):a.createElement(N,o({ref:t},d))}));function u(e,t){var n=arguments,l=t&&t.mdxType;if("string"==typeof e||l){var r=n.length,o=new Array(r);o[0]=s;var i={};for(var p in t)hasOwnProperty.call(t,p)&&(i[p]=t[p]);i.originalType=e,i.mdxType="string"==typeof e?e:l,o[1]=i;for(var m=2;mdotnet tools \u5305\u7ba1\u7406\u597d\u5904",id:"3712-dotnet-tools-\u5305\u7ba1\u7406\u597d\u5904",children:[]}]},{value:"37.2 \u4e86\u89e3\u5305\u547d\u4ee4\u8bed\u6cd5",id:"372-\u4e86\u89e3\u5305\u547d\u4ee4\u8bed\u6cd5",children:[{value:"37.2.1 \u77ed\u53c2\u6570\u4f8b\u5b50",id:"3721-\u77ed\u53c2\u6570\u4f8b\u5b50",children:[]},{value:"37.2.2 \u957f\u53c2\u6570\u4f8b\u5b50",id:"3722-\u957f\u53c2\u6570\u4f8b\u5b50",children:[]},{value:"37.2.3 \u6df7\u5408\u53c2\u6570\u4f8b\u5b50",id:"3723-\u6df7\u5408\u53c2\u6570\u4f8b\u5b50",children:[]},{value:"37.2.4 \u591a\u4e2a\u503c\u53c2\u6570",id:"3724-\u591a\u4e2a\u503c\u53c2\u6570",children:[]},{value:"37.2.5 \u64cd\u4f5c\u7b26",id:"3725-\u64cd\u4f5c\u7b26",children:[]}]},{value:"37.3 \u7f16\u5199\u7b2c\u4e00\u4e2a\u5305",id:"373-\u7f16\u5199\u7b2c\u4e00\u4e2a\u5305",children:[{value:"37.3.1 \u521b\u5efa HelloTools \u63a7\u5236\u53f0\u5e94\u7528",id:"3731-\u521b\u5efa-hellotools-\u63a7\u5236\u53f0\u5e94\u7528",children:[]},{value:"37.3.2 \u7f16\u8f91 HelloTools.csproj",id:"3732-\u7f16\u8f91-hellotoolscsproj",children:[]},{value:"37.3.3 \u5b89\u88c5 Furion.Tools.CommandLine \u5305",id:"3733-\u5b89\u88c5-furiontoolscommandline-\u5305",children:[]},{value:"37.3.4 \u7f16\u5199\u903b\u8f91\u4ee3\u7801",id:"3734-\u7f16\u5199\u903b\u8f91\u4ee3\u7801",children:[]},{value:"37.3.5 \u5982\u4f55\u8c03\u8bd5\u5305\u5de5\u5177 \ud83d\udc4f",id:"3735-\u5982\u4f55\u8c03\u8bd5\u5305\u5de5\u5177-",children:[]},{value:"37.3.6 \u6d4b\u8bd5\u5404\u4e2a\u53c2\u6570\u60c5\u51b5",id:"3736-\u6d4b\u8bd5\u5404\u4e2a\u53c2\u6570\u60c5\u51b5",children:[]}]},{value:"37.4 \u6253\u5305\uff08\u672c\u673a\uff09\u6d4b\u8bd5",id:"374-\u6253\u5305\uff08\u672c\u673a\uff09\u6d4b\u8bd5",children:[{value:"37.4.1 \u5168\u5c40\u6253\u5305\u5b89\u88c5",id:"3741-\u5168\u5c40\u6253\u5305\u5b89\u88c5",children:[]},{value:"37.4.2 \u672c\u5730\u6253\u5305\u5b89\u88c5",id:"3742-\u672c\u5730\u6253\u5305\u5b89\u88c5",children:[]}]},{value:"37.5 \u53d1\u5e03\u5230 Nuget \u5e73\u53f0 \ud83d\udc4f",id:"375-\u53d1\u5e03\u5230-nuget-\u5e73\u53f0-",children:[]},{value:"37.6 Cli \u9759\u6001\u7c7b\u8bf4\u660e",id:"376-cli-\u9759\u6001\u7c7b\u8bf4\u660e",children:[{value:"37.6.1 \u6d88\u606f\u7c7b",id:"3761-\u6d88\u606f\u7c7b",children:[]},{value:"37.6.2 \u5de5\u5177\u7c7b",id:"3762-\u5de5\u5177\u7c7b",children:[]},{value:"37.6.2 \u4fe1\u606f\u7c7b",id:"3762-\u4fe1\u606f\u7c7b",children:[]},{value:"37.6.3 \u5176\u4ed6\u7c7b",id:"3763-\u5176\u4ed6\u7c7b",children:[]}]},{value:"37.7 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"377-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],s={toc:k};function u(e){var t=e.components,n=(0,l.Z)(e,i);return(0,r.kt)("wrapper",(0,a.Z)({},s,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"371-\u5173\u4e8e\u5305\u7ba1\u7406\u5de5\u5177"},"37.1 \u5173\u4e8e\u5305\u7ba1\u7406\u5de5\u5177"),(0,r.kt)("p",null,"\u4f7f\u7528\u8fc7 ",(0,r.kt)("inlineCode",{parentName:"p"},"NodeJs")," \u7684\u670b\u53cb\u4e00\u5b9a\u5bf9 ",(0,r.kt)("inlineCode",{parentName:"p"},"npm")," \u547d\u4ee4\u4e0d\u4f1a\u964c\u751f\uff0c\u53ef\u4ee5\u901a\u8fc7 ",(0,r.kt)("inlineCode",{parentName:"p"},"npm")," \u5b89\u88c5\u9879\u76ee\u9700\u8981\u7684\u5305\u6216\u73af\u5883\u9700\u8981\u7684\u5de5\u5177\uff0c\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},".NET Core 2.1+")," \u4e4b\u540e\uff0c\u5fae\u8f6f\u4e5f\u63a8\u51fa\u4e86\u65b0\u7684\u7279\u6027\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"Global/Local Tools"),"\uff0c\u8be5\u7279\u6027\u529f\u80fd\u4e5f\u6b63\u662f\u53d7\u5230 ",(0,r.kt)("inlineCode",{parentName:"p"},"npm")," \u542f\u53d1\u4e0b\u8bde\u751f\u7684\u3002"),(0,r.kt)("p",null,"\u4e0d\u540c\u7684\u662f\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"npm")," \u4e2d\u7684\u5305\u91c7\u7528\u7684\u662f ",(0,r.kt)("inlineCode",{parentName:"p"},"Javascript")," \u7f16\u5199\u5e76\u53d1\u5e03\u5230 ",(0,r.kt)("a",{parentName:"p",href:"https://www.npmjs.com/"},"https://www.npmjs.com/")," \u5e73\u53f0\uff0c\u800c ",(0,r.kt)("inlineCode",{parentName:"p"},"dotnet tools")," \u91c7\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"C#")," \u7f16\u5199\u5e76\u53d1\u5e03\u5230 ",(0,r.kt)("inlineCode",{parentName:"p"},"https://www.nuget.org/")," \u5e73\u53f0\u4f9b\u5b89\u88c5\u4f7f\u7528\u3002"),(0,r.kt)("h3",{id:"3712-dotnet-tools-\u5305\u7ba1\u7406\u597d\u5904"},"37.1.2 ",(0,r.kt)("inlineCode",{parentName:"h3"},"dotnet tools")," \u5305\u7ba1\u7406\u597d\u5904"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u8de8\u5e73\u53f0\uff0c\u652f\u6301 ",(0,r.kt)("inlineCode",{parentName:"li"},"Linux/Mac/Windows")," \u5e73\u53f0\u4f9b\u5b89\u88c5\u4f7f\u7528"),(0,r.kt)("li",{parentName:"ul"},"\u5b8c\u6574\u7684 ",(0,r.kt)("inlineCode",{parentName:"li"},"C#")," \u751f\u6001\u652f\u6301"),(0,r.kt)("li",{parentName:"ul"},"\u4e3a\u6240\u6b32\u4e3a~~~\uff08\u62e5\u6709\u64cd\u4f5c\u7cfb\u7edf\u7684\u6743\u9650\uff09")),(0,r.kt)("h2",{id:"372-\u4e86\u89e3\u5305\u547d\u4ee4\u8bed\u6cd5"},"37.2 \u4e86\u89e3\u5305\u547d\u4ee4\u8bed\u6cd5"),(0,r.kt)("p",null,"\u901a\u5e38\u5305\u547d\u4ee4\u8bed\u6cd5\u90fd\u9075\u5faa\u4ee5\u4e0b\u89c4\u5219\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"<-|--|/>argument-name<=|:| >[\"|']value['|\"] [--] [operand] ... [operand]\n")),(0,r.kt)("p",null,"\u5728\u8fd9\u91cc\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u5c06\u7b80\u5355\u4ecb\u7ecd\u547d\u4ee4\u5e38\u7528\u7684\u77e5\u8bc6\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"\u5de5\u5177\u7b26"),"\uff1a\u901a\u5e38\u6307\u7684\u662f\u4f60\u5de5\u5177\u7684\u552f\u4e00\u540d\u79f0\uff0c\u4e5f\u5c31\u662f\u5173\u952e\u5b57\uff0c\u800c\u4e14\u603b\u662f\u5728\u6700\u5f00\u5934\u7f16\u5199\uff0c\u5982\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"dotnet"),"\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"npm"),"\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"node")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"\u77ed\u53c2\u6570"),"\uff1a\u77ed\u53c2\u6570\u6307\u7684\u662f ",(0,r.kt)("inlineCode",{parentName:"li"},"\u5355\u4e2a\u5b57\u7b26")," \u7684\u5b57\u7b26\u4e32\uff0c\u6211\u4eec\u901a\u5e38\u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"li"},"-")," \u4e00\u4e2a\u6a2a\u6746\u6307\u5b9a\u53c2\u6570\u53ca\u503c\uff0c\u5982\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"-v")," \u6216 ",(0,r.kt)("inlineCode",{parentName:"li"},"-v 0.0.1")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"\u957f\u53c2\u6570"),"\uff1a\u957f\u53c2\u6570\u6307\u7684\u662f\u4e00\u4e2a\u6216\u591a\u4e2a\u5355\u8bcd\u8fde\u63a5\u7684\u5b57\u7b26\u4e32\uff0c\u8be5\u53c2\u6570\u901a\u5e38\u548c ",(0,r.kt)("inlineCode",{parentName:"li"},"\u77ed\u53c2\u6570")," \u540c\u65f6\u5b58\u5728\uff0c\u901a\u5e38\u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"li"},"--")," \u6307\u5b9a\u53c2\u6570\u53ca\u503c\uff0c\u5982\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"--version")," \u6216 ",(0,r.kt)("inlineCode",{parentName:"li"},"--version 0.0.1")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"\u64cd\u4f5c\u7b26"),"\uff1a\u5b57\u7b26\u4e32\u4e2d\u4e0e\u53c2\u6570\u503c\u683c\u5f0f\u4e0d\u5339\u914d\u7684\u4efb\u4f55\u6587\u672c\u90fd\u88ab\u89c6\u4e3a\u64cd\u4f5c\u6570\uff0c\u4efb\u4f55\u51fa\u73b0\u5728\u53cc\u8fde\u5b57\u7b26 ",(0,r.kt)("inlineCode",{parentName:"li"},"--")," \u4e4b\u540e\u4e14\u672a\u5305\u542b\u5728\u5355\u5f15\u53f7\u6216\u53cc\u5f15\u53f7\u4e2d\u4e14\u4e24\u4fa7\u6709\u7a7a\u683c\u7684\u6587\u672c\u90fd\u88ab\u89c6\u4e3a\u64cd\u4f5c\u6570\uff0c\u65e0\u8bba\u5b83\u662f\u5426\u4e0e\u53c2\u6570\u503c\u683c\u5f0f\u5339\u914d\uff0c\u901a\u5e38\u7528\u4e8e\u5f52\u7c7b/\u5206\u7c7b\u4f5c\u7528\u3002")),(0,r.kt)("h3",{id:"3721-\u77ed\u53c2\u6570\u4f8b\u5b50"},"37.2.1 \u77ed\u53c2\u6570\u4f8b\u5b50"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"-a foo"))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"\u77ed\u53c2\u6570"),(0,r.kt)("th",{parentName:"tr",align:null},"\u53c2\u6570\u503c"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"a"),(0,r.kt)("td",{parentName:"tr",align:null},"foo")))),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"-ab"))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"\u77ed\u53c2\u6570"),(0,r.kt)("th",{parentName:"tr",align:null},"\u53c2\u6570\u503c"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"a"),(0,r.kt)("td",{parentName:"tr",align:null})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"b"),(0,r.kt)("td",{parentName:"tr",align:null})))),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"-abc bar"))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"\u77ed\u53c2\u6570"),(0,r.kt)("th",{parentName:"tr",align:null},"\u53c2\u6570\u503c"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"a"),(0,r.kt)("td",{parentName:"tr",align:null})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"b"),(0,r.kt)("td",{parentName:"tr",align:null})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"c"),(0,r.kt)("td",{parentName:"tr",align:null},"bar")))),(0,r.kt)("h3",{id:"3722-\u957f\u53c2\u6570\u4f8b\u5b50"},"37.2.2 \u957f\u53c2\u6570\u4f8b\u5b50"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"--foo bar"))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"\u957f\u53c2\u6570"),(0,r.kt)("th",{parentName:"tr",align:null},"\u53c2\u6570\u503c"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"foo"),(0,r.kt)("td",{parentName:"tr",align:null},"bar")))),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"--foo --bar"))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"\u957f\u53c2\u6570"),(0,r.kt)("th",{parentName:"tr",align:null},"\u53c2\u6570\u503c"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"foo"),(0,r.kt)("td",{parentName:"tr",align:null})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"bar"),(0,r.kt)("td",{parentName:"tr",align:null})))),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"--foo bar --hello world"))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"\u957f\u53c2\u6570"),(0,r.kt)("th",{parentName:"tr",align:null},"\u53c2\u6570\u503c"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"foo"),(0,r.kt)("td",{parentName:"tr",align:null},"bar")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"hello"),(0,r.kt)("td",{parentName:"tr",align:null},"world")))),(0,r.kt)("h3",{id:"3723-\u6df7\u5408\u53c2\u6570\u4f8b\u5b50"},"37.2.3 \u6df7\u5408\u53c2\u6570\u4f8b\u5b50"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},'-abc foo --hello world /new="slashes are ok too"'))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"\u77ed/\u957f\u53c2\u6570"),(0,r.kt)("th",{parentName:"tr",align:null},"\u53c2\u6570\u503c"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"a"),(0,r.kt)("td",{parentName:"tr",align:null})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"b"),(0,r.kt)("td",{parentName:"tr",align:null})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"c"),(0,r.kt)("td",{parentName:"tr",align:null},"foo")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"hello"),(0,r.kt)("td",{parentName:"tr",align:null},"world")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"new"),(0,r.kt)("td",{parentName:"tr",align:null},"slashes are ok too")))),(0,r.kt)("h3",{id:"3724-\u591a\u4e2a\u503c\u53c2\u6570"},"37.2.4 \u591a\u4e2a\u503c\u53c2\u6570"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"--list 1 --list 2 --list 3"))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"\u957f\u53c2\u6570"),(0,r.kt)("th",{parentName:"tr",align:null},"\u53c2\u6570\u503c"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"list"),(0,r.kt)("td",{parentName:"tr",align:null},"1,2,3")))),(0,r.kt)("h3",{id:"3725-\u64cd\u4f5c\u7b26"},"37.2.5 \u64cd\u4f5c\u7b26"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},'-a foo bar "hello world" -b -- -explicit operand'))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"\u77ed\u53c2\u6570"),(0,r.kt)("th",{parentName:"tr",align:null},"\u53c2\u6570\u503c"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"a"),(0,r.kt)("td",{parentName:"tr",align:null},"foo")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"b"),(0,r.kt)("td",{parentName:"tr",align:null})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"\u64cd\u4f5c\u7b26"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"bar")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},'"hello world"')),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"-explicit")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"operand")))),(0,r.kt)("p",null,"\u4e86\u89e3\u66f4\u591a\u5173\u4e8e\u5305\u547d\u4ee4\u8bed\u6cd5\u7684\u5b98\u65b9\u77e5\u8bc6\uff1a",(0,r.kt)("a",{parentName:"p",href:"https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html"},"https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html")),(0,r.kt)("h2",{id:"373-\u7f16\u5199\u7b2c\u4e00\u4e2a\u5305"},"37.3 \u7f16\u5199\u7b2c\u4e00\u4e2a\u5305"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"dotnet tools")," \u5de5\u5177\u5b9e\u9645\u4e0a\u662f\u4e00\u4e2a ",(0,r.kt)("inlineCode",{parentName:"p"},"\u63a7\u5236\u53f0")," \u5e94\u7528\u7a0b\u5e8f\uff0c\u4e0d\u540c\u7684\u662f ",(0,r.kt)("inlineCode",{parentName:"p"},".csproj")," \u9879\u76ee\u6587\u4ef6\u9700\u8981\u6dfb\u52a0\u7279\u5b9a\u914d\u7f6e\u3002\u4e0b\u9762\u5c06\u7ed9\u5927\u5bb6\u7f16\u5199\u4e00\u4e2a ",(0,r.kt)("inlineCode",{parentName:"p"},"HelloTools")," \u5305\u7ba1\u7406\u5de5\u5177\u3002"),(0,r.kt)("h3",{id:"3731-\u521b\u5efa-hellotools-\u63a7\u5236\u53f0\u5e94\u7528"},"37.3.1 \u521b\u5efa ",(0,r.kt)("inlineCode",{parentName:"h3"},"HelloTools")," \u63a7\u5236\u53f0\u5e94\u7528"),(0,r.kt)("img",{src:(0,o.Z)("img/ts1.png")}),(0,r.kt)("h3",{id:"3732-\u7f16\u8f91-hellotoolscsproj"},"37.3.2 \u7f16\u8f91 ",(0,r.kt)("inlineCode",{parentName:"h3"},"HelloTools.csproj")),(0,r.kt)("p",null,"\u5c06\u63a7\u5236\u53f0\u9879\u76ee\u6807\u8bb0\u6210 ",(0,r.kt)("inlineCode",{parentName:"p"},"dotnet tools")," \u9700\u8981\u914d\u7f6e\u4ee5\u4e0b\u8282\u70b9\uff0c\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{6-11}","{6-11}":!0},'\n\n \n Exe\n net5.0\n 0.0.1\n \u7b2c\u4e00\u4e2a dotnet tools \u5de5\u5177\n hello-tools\n true\n true\n ./nupkg\n \n\n\n')),(0,r.kt)("h4",{id:"\u914d\u7f6e\u5173\u952e\u8282\u70b9\u8bf4\u660e"},"\u914d\u7f6e\u5173\u952e\u8282\u70b9\u8bf4\u660e"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Version"),"\uff1a\u5305\u5de5\u5177\u7248\u672c\u53f7"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Description"),"\uff1a\u5305\u5de5\u5177\u4ecb\u7ecd"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"ToolCommandName"),"\uff1a\u5305\u5de5\u5177\u5173\u952e\u5b57\uff0c\u5982 ",(0,r.kt)("inlineCode",{parentName:"li"},"dotnet"),"\u3001",(0,r.kt)("inlineCode",{parentName:"li"},"npm"),"\uff0c\u540e\u7eed\u4f7f\u7528\u90fd\u662f\u901a\u8fc7\u8be5\u5173\u952e\u5b57\u4f7f\u7528"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"PackAsTool"),"\uff1a\u662f\u5426\u58f0\u660e\u4e3a\u5305\u7ba1\u7406\u5de5\u5177\uff0c\u8bbe\u7f6e ",(0,r.kt)("inlineCode",{parentName:"li"},"true")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"GeneratePackageOnBuild"),"\uff1a\u662f\u5426\u7f16\u8bd1\u65f6\u81ea\u52a8\u751f\u6210 ",(0,r.kt)("inlineCode",{parentName:"li"},".nupkg")," \u5305\uff0c\u65b9\u4fbf\u540e\u7eed\u4e0a\u4f20\u5230 ",(0,r.kt)("inlineCode",{parentName:"li"},"Nuget")," \u5e73\u53f0"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"PackageOutputPath"),"\uff1a\u914d\u7f6e ",(0,r.kt)("inlineCode",{parentName:"li"},".nupkg")," \u5305\u5b58\u50a8\u76ee\u5f55\uff0c\u63a8\u8350\u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"li"},"./nupkg"))),(0,r.kt)("h3",{id:"3733-\u5b89\u88c5-furiontoolscommandline-\u5305"},"37.3.3 \u5b89\u88c5 ",(0,r.kt)("inlineCode",{parentName:"h3"},"Furion.Tools.CommandLine")," \u5305"),(0,r.kt)("p",null,"\u4e3a\u4e86\u65b9\u4fbf\u7ba1\u7406\u5de5\u5177\u5305\u5f00\u53d1\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u5b98\u65b9\u7279\u610f\u5f00\u53d1\u4e86 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion.Tools.CommandLine")," \u5305\uff0c\u5e2e\u52a9\u5927\u5bb6\u5feb\u901f\u5f00\u53d1\u7ba1\u7406\u5de5\u5177\u5305\u3002"),(0,r.kt)("img",{src:(0,o.Z)("img/ts2.png")}),(0,r.kt)("h3",{id:"3734-\u7f16\u5199\u903b\u8f91\u4ee3\u7801"},"37.3.4 \u7f16\u5199\u903b\u8f91\u4ee3\u7801"),(0,r.kt)("p",null,"\u6211\u4eec\u5148\u5b9a\u4e49\u51e0\u4e2a\u9700\u6c42\uff0c\u7136\u540e\u7f16\u5199\u903b\u8f91\u4ee3\u7801\uff1a"),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"\u9700\u6c42\u4e00\uff1a\u8f93\u5165 ",(0,r.kt)("inlineCode",{parentName:"p"},"hello-tools")," \u6253\u5370\u4ecb\u7ecd\u4fe1\u606f\uff0c\u53ef\u901a\u8fc7 ",(0,r.kt)("strong",{parentName:"p"},"\ud83d\udc4f",(0,r.kt)("a",{parentName:"strong",href:"http://patorjk.com/software/taag/#p=display&f=Big&t=Furion%20Tools"},"\u751f\u6210\u5b57\u7b26 LOGO"),"\ud83d\udc4f")," \u5de5\u5177\u751f\u6210 ",(0,r.kt)("inlineCode",{parentName:"p"},"Logo")),(0,r.kt)("p",{parentName:"blockquote"},"\u9700\u6c42\u4e8c\uff1a\u8f93\u5165 ",(0,r.kt)("inlineCode",{parentName:"p"},"-n")," \u6216 ",(0,r.kt)("inlineCode",{parentName:"p"},"--name")," \u8f93\u51fa ",(0,r.kt)("inlineCode",{parentName:"p"},"Hello \u540d\u5b57")),(0,r.kt)("p",{parentName:"blockquote"},"\u9700\u6c42\u4e09\uff1a\u8f93\u5165 ",(0,r.kt)("inlineCode",{parentName:"p"},"-v")," \u6216 ",(0,r.kt)("inlineCode",{parentName:"p"},"--version")," \u8f93\u51fa\u5f53\u524d\u7248\u672c"),(0,r.kt)("p",{parentName:"blockquote"},"\u9700\u6c42\u56db\uff1a\u8f93\u5165 ",(0,r.kt)("inlineCode",{parentName:"p"},"-h")," \u6216 ",(0,r.kt)("inlineCode",{parentName:"p"},"--help")," \u8f93\u51fa\u5e2e\u52a9\u6587\u6863")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,10,15-18,26-29,37-40,45}","{1,10,15-18,26-29,37-40,45}":!0},'using Furion.Tools.CommandLine;\nusing System;\nusing System.Collections.Generic;\n\nnamespace HelloTools\n{\n class Program\n {\n // \u901a\u8fc7 Cli.Inject() \u5b8c\u6210\u51c6\u5907\u5de5\u4f5c\n static void Main(string[] args) => Cli.Inject();\n\n /// \n /// \u8f93\u51fa Hello \u540d\u5b57\n /// \n [Argument(\'n\', "name", "\u60a8\u7684\u540d\u5b57")]\n static string Name { get; set; }\n // \u5b9a\u4e49\u53c2\u6570\u5904\u7406\u7a0b\u5e8f\uff0c\u5fc5\u987b [\u5c5e\u6027\u540d]+Handler\n static void NameHandler(ArgumentMetadata argument)\n {\n Console.WriteLine($"Hello {Name}");\n }\n\n /// \n /// \u67e5\u770b\u7248\u672c\n /// \n [Argument(\'v\', "version", "\u5de5\u5177\u7248\u672c\u53f7")]\n static bool Version { get; set; }\n // \u5b9a\u4e49\u53c2\u6570\u5904\u7406\u7a0b\u5e8f\uff0c\u5fc5\u987b [\u5c5e\u6027\u540d]+Handler\n static void VersionHandler(ArgumentMetadata argument)\n {\n Console.WriteLine(Cli.GetVersion());\n }\n\n /// \n /// \u67e5\u770b\u5e2e\u52a9\u6587\u6863\n /// \n [Argument(\'h\', "help", "\u67e5\u770b\u5e2e\u52a9\u6587\u6863")]\n static bool Help { get; set; }\n // \u5b9a\u4e49\u53c2\u6570\u5904\u7406\u7a0b\u5e8f\uff0c\u5fc5\u987b [\u5c5e\u6027\u540d]+Handler\n static void HelpHandler(ArgumentMetadata argument)\n {\n Cli.GetHelpText("hello-tools");\n }\n\n // \u6240\u6709\u672a\u5339\u914d\u7684\u53c2\u6570/\u64cd\u4f5c\u7b26\u5904\u7406\u7a0b\u5e8f\uff0c\u56fa\u5b9a NoMatchesHandler \u65b9\u6cd5\u540d\n static void NoMatchesHandler(bool isEmpty, string[] operands, Dictionary noMatches)\n {\n if (isEmpty)\n {\n Console.WriteLine(@"\n _ _ _ _ _______ _\n | | | | | | | |__ __| | |\n | |__| | ___| | | ___ | | ___ ___ | |___\n | __ |/ _ \\ | |/ _ \\ | |/ _ \\ / _ \\| / __|\n | | | | __/ | | (_) | | | (_) | (_) | \\__ \\\n |_| |_|\\___|_|_|\\___/ |_|\\___/ \\___/|_|___/\n\n\n");\n Console.WriteLine($"\u6b22\u8fce\u4f7f\u7528{Cli.GetDescription()}");\n }\n }\n }\n}\n')),(0,r.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u4ee3\u7801\u8bf4\u660e")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("ul",{parentName:"div"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Furion")," \u5de5\u5177\u5305\u63d0\u4f9b\u4e86\u975e\u5e38\u65b9\u4fbf\u7684 ",(0,r.kt)("inlineCode",{parentName:"li"},"Cli.Inject()")," \u65b9\u6cd5\uff0c\u53ef\u4ee5\u5b9e\u73b0\u4e00\u6b21\u6027\u5b8c\u6210\u6240\u6709\u521d\u59cb\u5316\u5de5\u4f5c\uff0c\u53ea\u9700\u8981\u5728 ",(0,r.kt)("inlineCode",{parentName:"li"},"Main")," \u65b9\u6cd5\u8c03\u7528\u5373\u53ef"),(0,r.kt)("li",{parentName:"ul"},"\u901a\u8fc7 ",(0,r.kt)("inlineCode",{parentName:"li"},"[Argument(\u77ed\u53c2\u6570\uff0c\u957f\u53c2\u6570\uff0c\u63d0\u793a\u6587\u6863)]")," \u5b9a\u4e49\u6bcf\u4e00\u4e2a\u53c2\u6570\u5c5e\u6027\uff0c\u53c2\u6570\u5fc5\u987b\u662f ",(0,r.kt)("inlineCode",{parentName:"li"},"static")," \u9759\u6001"),(0,r.kt)("li",{parentName:"ul"},"\u901a\u8fc7 ",(0,r.kt)("inlineCode",{parentName:"li"},"[\u5c5e\u6027\u540d]Handler")," \u5b9a\u4e49\u6bcf\u4e2a\u53c2\u6570\u5339\u914d\u540e\u7684\u5904\u7406\u7a0b\u5e8f\uff0c\u5982\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"VersionHandler"),"\uff0c\u683c\u5f0f\u4e3a\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"static void \u5c5e\u6027\u540dHandler(ArgumentMetadata argument)")),(0,r.kt)("li",{parentName:"ul"},"\u901a\u8fc7\u56fa\u5b9a\u65b9\u6cd5\u540d ",(0,r.kt)("inlineCode",{parentName:"li"},"NoMatchesHandler")," \u5b9a\u4e49\u672a\u5339\u914d\u7684\u53c2\u6570\u53ca\u64cd\u4f5c\u7b26\uff0c\u8be5\u65b9\u6cd5\u6709\u4e09\u4e2a\u53c2\u6570\uff1a",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"isEmpty"),"\uff1a\u5224\u65ad\u662f\u5426\u6ca1\u6709\u4f20\u9012\u4efb\u4f55\u53c2\u6570\uff0c\u901a\u5e38\u7528\u4e8e\u8f93\u51fa\u4ecb\u7ecd"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"operands"),"\uff1a\u83b7\u53d6\u6240\u6709\u64cd\u4f5c\u7b26\u5217\u8868"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"noMatches"),"\uff1a\u83b7\u53d6\u6240\u6709\u672a\u5339\u914d\u7684\u53c2\u6570\u5b57\u5178")))))),(0,r.kt)("h3",{id:"3735-\u5982\u4f55\u8c03\u8bd5\u5305\u5de5\u5177-"},"37.3.5 \u5982\u4f55\u8c03\u8bd5\u5305\u5de5\u5177 \ud83d\udc4f"),(0,r.kt)("p",null,"\u5305\u7ba1\u7406\u5de5\u5177\u8c03\u8bd5\u6709\u522b\u4e8e\u666e\u901a\u7684\u63a7\u5236\u53f0\uff0c\u4e3b\u8981\u533a\u522b\u662f\u6d4b\u8bd5\u5404\u4e2a\u53c2\u6570\u7684\u4f7f\u7528\uff0c\u4e5f\u5c31\u662f\u5982\u4f55\u4f20\u9012 ",(0,r.kt)("inlineCode",{parentName:"p"},"Main")," \u65b9\u6cd5\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"args")," \u53c2\u6570\u3002\u53ea\u9700\u8981\u4ee5\u4e0b\u4e24\u4e2a\u6b65\u9aa4\u5373\u53ef\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u5728\u9879\u76ee\u6839\u76ee\u5f55\u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"li"},"Properties")," \u76ee\u5f55"),(0,r.kt)("li",{parentName:"ul"},"\u5728 ",(0,r.kt)("inlineCode",{parentName:"li"},"Properties")," \u76ee\u5f55\u4e2d\u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"li"},"launchSettings.json")," \u6587\u4ef6\uff0c\u5e76\u9075\u5faa\u4ee5\u4e0b\u89c4\u5219\uff1a")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json",metastring:"{3,5}","{3,5}":!0},'{\n "profiles": {\n "\u9879\u76ee\u540d\u79f0": {\n "commandName": "Project",\n "commandLineArgs": "\u4f60\u7684\u547d\u4ee4"\n }\n }\n}\n')),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"\u9879\u76ee\u540d\u79f0"),"\uff1a\u5199\u4f60\u7684\u9879\u76ee\u5b9e\u9645\u540d\u79f0\uff0c\u5982\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"HelloTools")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"commandName"),"\uff1a\u56fa\u5b9a\u4e3a ",(0,r.kt)("inlineCode",{parentName:"li"},"Project")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"commandLineArgs"),"\uff1a\u7f16\u5199\u6d4b\u8bd5\u547d\u4ee4\uff0c\u53ea\u9700\u8981\u5199\u53c2\u6570/\u64cd\u4f5c\u7b26\u90e8\u5206\u5373\u53ef\uff0c\u5982\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"-v"),"\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"-v -h --Name Furion"))),(0,r.kt)("p",null,"\u5982\uff0c\u6211\u4eec\u9700\u8981\u6d4b\u8bd5 ",(0,r.kt)("inlineCode",{parentName:"p"},"HelloTools")," \u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"-n")," \u53c2\u6570"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json",metastring:"{3,5}","{3,5}":!0},'{\n "profiles": {\n "HelloTools": {\n "commandName": "Project",\n "commandLineArgs": "-n Furion"\n }\n }\n}\n')),(0,r.kt)("img",{src:(0,o.Z)("img/ts3.png")}),(0,r.kt)("p",null,"\u70b9\u51fb ",(0,r.kt)("inlineCode",{parentName:"p"},"\u8fd0\u884c/\u8c03\u8bd5/F5")," \u542f\u52a8\u8c03\u8bd5"),(0,r.kt)("img",{src:(0,o.Z)("img/ts4.png")}),(0,r.kt)("h3",{id:"3736-\u6d4b\u8bd5\u5404\u4e2a\u53c2\u6570\u60c5\u51b5"},"37.3.6 \u6d4b\u8bd5\u5404\u4e2a\u53c2\u6570\u60c5\u51b5"),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"\u9700\u6c42\u4e00\uff1a\u8f93\u5165 ",(0,r.kt)("inlineCode",{parentName:"p"},"hello-tools")," \u6253\u5370\u4ecb\u7ecd\u4fe1\u606f")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json",metastring:"{5}","{5}":!0},'{\n "profiles": {\n "HelloTools": {\n "commandName": "Project",\n "commandLineArgs": ""\n }\n }\n}\n')),(0,r.kt)("img",{src:(0,o.Z)("img/ts5.png")}),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"\u9700\u6c42\u4e8c\uff1a\u8f93\u5165 ",(0,r.kt)("inlineCode",{parentName:"p"},"-n")," \u6216 ",(0,r.kt)("inlineCode",{parentName:"p"},"--name")," \u8f93\u51fa ",(0,r.kt)("inlineCode",{parentName:"p"},"Hello \u540d\u5b57"))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json",metastring:"{5}","{5}":!0},'{\n "profiles": {\n "HelloTools": {\n "commandName": "Project",\n "commandLineArgs": "-n Furion"\n }\n }\n}\n')),(0,r.kt)("img",{src:(0,o.Z)("img/ts6.png")}),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"\u9700\u6c42\u4e09\uff1a\u8f93\u5165 ",(0,r.kt)("inlineCode",{parentName:"p"},"-v")," \u6216 ",(0,r.kt)("inlineCode",{parentName:"p"},"--version")," \u8f93\u51fa\u5f53\u524d\u7248\u672c")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json",metastring:"{5}","{5}":!0},'{\n "profiles": {\n "HelloTools": {\n "commandName": "Project",\n "commandLineArgs": "--version"\n }\n }\n}\n')),(0,r.kt)("img",{src:(0,o.Z)("img/ts7.png")}),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"\u9700\u6c42\u56db\uff1a\u8f93\u5165 ",(0,r.kt)("inlineCode",{parentName:"p"},"-h")," \u6216 ",(0,r.kt)("inlineCode",{parentName:"p"},"--help")," \u8f93\u51fa\u5e2e\u52a9\u6587\u6863")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json",metastring:"{5}","{5}":!0},'{\n "profiles": {\n "HelloTools": {\n "commandName": "Project",\n "commandLineArgs": "-h"\n }\n }\n}\n')),(0,r.kt)("img",{src:(0,o.Z)("img/ts8.png")}),(0,r.kt)("h2",{id:"374-\u6253\u5305\uff08\u672c\u673a\uff09\u6d4b\u8bd5"},"37.4 \u6253\u5305\uff08\u672c\u673a\uff09\u6d4b\u8bd5"),(0,r.kt)("p",null,"\u521a\u521a\u6211\u4eec\u5df2\u7ecf\u5b66\u4f1a\u8c03\u8bd5\u5305\u5de5\u5177\u4e86\uff0c\u4f46\u662f\u8fd8\u672a\u505a\u5230\u7c7b\u4f3c ",(0,r.kt)("inlineCode",{parentName:"p"},"npm")," \u5305\u4e00\u6837\uff0c\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"cmd/powershell")," \u4e2d\u5b89\u88c5\u4e4b\u540e\u53ef\u5728\u547d\u4ee4\u884c\u5168\u5c40\u6d4b\u8bd5\uff0c\u4e0b\u9762\u5c06\u6559\u5927\u5bb6\u5982\u4f55\u5b9e\u73b0 ",(0,r.kt)("inlineCode",{parentName:"p"},"\u5168\u5c40\u5b89\u88c5")," \u548c ",(0,r.kt)("inlineCode",{parentName:"p"},"\u672c\u5730\u5b89\u88c5"),"\u3002"),(0,r.kt)("h3",{id:"3741-\u5168\u5c40\u6253\u5305\u5b89\u88c5"},"37.4.1 \u5168\u5c40\u6253\u5305\u5b89\u88c5"),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"\u5168\u5c40\u6253\u5305\u5b89\u88c5\u5c31\u662f\u914d\u7f6e\u5728\u7cfb\u7edf\u73af\u5883\u53d8\u91cf\u4e2d\uff0c\u5728\u4efb\u4f55\u5730\u65b9\u90fd\u53ef\u4ee5\u4f7f\u7528\u3002")),(0,r.kt)("p",null,"\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"HelloTools")," \u9879\u76ee\u6839\u76ee\u5f55\u4e0b\u6253\u5f00 ",(0,r.kt)("inlineCode",{parentName:"p"},"cmd/powershell"),"\uff08",(0,r.kt)("strong",{parentName:"p"},"\u5c3d\u91cf\u4f7f\u7528\u7ba1\u7406\u5458\u5de5\u5177"),"\uff09\u6267\u884c\u4ee5\u4e0b\u547d\u4ee4\uff1a"),(0,r.kt)("h4",{id:"-\u5b89\u88c5\u5168\u5c40\u5305"},"\u2714 \u5b89\u88c5\u5168\u5c40\u5305"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"dotnet tool install --global --add-source ./nupkg HelloTools\n")),(0,r.kt)("p",null,"\u5176\u4e2d ",(0,r.kt)("inlineCode",{parentName:"p"},"HelloTools")," \u5c31\u662f ",(0,r.kt)("inlineCode",{parentName:"p"},"\u9879\u76ee\u540d\u79f0"),"\u3002"),(0,r.kt)("img",{src:(0,o.Z)("img/ts9.png")}),(0,r.kt)("p",null,"\u4e4b\u540e\u6211\u4eec\u5c31\u53ef\u4ee5\u901a\u8fc7\u4e4b\u524d ",(0,r.kt)("inlineCode",{parentName:"p"},"HelloTools.csproj")," \u4e2d\u914d\u7f6e\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"hello-tools")," \u4f7f\u7528\u4e86\u3002"),(0,r.kt)("h4",{id:"-\u6d4b\u8bd5\u5168\u5c40\u5305"},"\u2714 \u6d4b\u8bd5\u5168\u5c40\u5305"),(0,r.kt)("img",{src:(0,o.Z)("img/ts10.png")}),(0,r.kt)("h4",{id:"-\u66f4\u65b0\u5168\u5c40\u5305"},"\u2714 \u66f4\u65b0\u5168\u5c40\u5305"),(0,r.kt)("p",null,"\u5982\u679c\u6e90\u7801\u53d1\u751f\u6539\u53d8\uff0c\u53ea\u9700\u8981\u7f16\u8bd1\u9879\u76ee\u540e\u91cd\u65b0\u66f4\u65b0\u5305\u5de5\u5177\u5373\u53ef\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"dotnet tool update --global --add-source ./nupkg HelloTools\n")),(0,r.kt)("h4",{id:"-\u5378\u8f7d\u5168\u5c40\u5305"},"\u2714 \u5378\u8f7d\u5168\u5c40\u5305"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"dotnet tool uninstall --global HelloTools\n")),(0,r.kt)("p",null,"\u60f3\u4e86\u89e3\u66f4\u591a\u5168\u5c40\u6253\u5305\u5b89\u88c5\u77e5\u8bc6\u67e5\u9605\u5b98\u65b9\u6587\u6863\u5373\u53ef\uff1a",(0,r.kt)("a",{parentName:"p",href:"https://docs.microsoft.com/zh-cn/dotnet/core/tools/global-tools-how-to-use"},"https://docs.microsoft.com/zh-cn/dotnet/core/tools/global-tools-how-to-use")),(0,r.kt)("h3",{id:"3742-\u672c\u5730\u6253\u5305\u5b89\u88c5"},"37.4.2 \u672c\u5730\u6253\u5305\u5b89\u88c5"),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"\u672c\u5730\u6253\u5305\u5b89\u88c5\u5c31\u662f\u53ea\u6709\u5728\u9879\u76ee\u6240\u5728\u76ee\u5f55\u53ca\u5b50\u5b59\u76ee\u5f55\u65b9\u53ef\u4f7f\u7528\u3002")),(0,r.kt)("p",null,"\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"HelloTools")," \u9879\u76ee\u6839\u76ee\u5f55\u4e0b\u6253\u5f00 ",(0,r.kt)("inlineCode",{parentName:"p"},"cmd/powershell")," \u6267\u884c\u4ee5\u4e0b\u547d\u4ee4\uff1a"),(0,r.kt)("h4",{id:"-\u521b\u5efa\u672c\u5730\u6e05\u5355\u6587\u4ef6"},"\u2714 \u521b\u5efa\u672c\u5730\u6e05\u5355\u6587\u4ef6"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"dotnet new tool-manifest\n")),(0,r.kt)("p",null,"\u6267\u884c\u8be5\u547d\u4ee4\u540e\u4f1a\u81ea\u52a8\u521b\u5efa ",(0,r.kt)("inlineCode",{parentName:"p"},".config")," \u6587\u4ef6\u5939\u5e76\u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"p"},"dotnet-tools.json")," \u6587\u4ef6\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json"},'{\n "version": 1,\n "isRoot": true,\n "tools": {}\n}\n')),(0,r.kt)("div",{className:"admonition admonition-warning alert alert--danger"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"}))),"\u6ce8\u610f\u4e8b\u9879")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u901a\u5e38\u8be5\u6587\u4ef6\u5185\u5bb9\u4e0d\u9700\u8981\u624b\u52a8\u66f4\u6539\u3002"))),(0,r.kt)("h4",{id:"-\u5b89\u88c5\u672c\u5730\u5305"},"\u2714 \u5b89\u88c5\u672c\u5730\u5305"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"dotnet tool install --add-source ./nupkg HelloTools\n")),(0,r.kt)("img",{src:(0,o.Z)("img/ts11.png")}),(0,r.kt)("h4",{id:"-\u6d4b\u8bd5\u672c\u5730\u5305"},"\u2714 \u6d4b\u8bd5\u672c\u5730\u5305"),(0,r.kt)("p",null,"\u672c\u5730\u5305\u6d4b\u8bd5\u548c\u5168\u5c40\u5305\u4e0d\u4e00\u6837\u7684\u662f\u672c\u5730\u5305\u662f\u901a\u8fc7 ",(0,r.kt)("inlineCode",{parentName:"p"},"dotnet \u5173\u952e\u5b57 \u53c2\u6570")," \u6d4b\u8bd5\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"dotnet hello-tools -n Furion\n")),(0,r.kt)("img",{src:(0,o.Z)("img/ts12.png")}),(0,r.kt)("h4",{id:"-\u66f4\u65b0\u672c\u5730\u5305"},"\u2714 \u66f4\u65b0\u672c\u5730\u5305"),(0,r.kt)("p",null,"\u5982\u679c\u6e90\u7801\u53d1\u751f\u6539\u53d8\uff0c\u53ea\u9700\u8981\u7f16\u8bd1\u9879\u76ee\u540e\u91cd\u65b0\u66f4\u65b0\u5305\u5de5\u5177\u5373\u53ef\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"dotnet tool update --add-source ./nupkg HelloTools\n")),(0,r.kt)("h4",{id:"-\u5378\u8f7d\u672c\u5730\u5305"},"\u2714 \u5378\u8f7d\u672c\u5730\u5305"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"dotnet tool uninstall HelloTools\n")),(0,r.kt)("p",null,"\u60f3\u4e86\u89e3\u66f4\u591a\u672c\u5730\u6253\u5305\u5b89\u88c5\u77e5\u8bc6\u67e5\u9605\u5b98\u65b9\u6587\u6863\u5373\u53ef\uff1a",(0,r.kt)("a",{parentName:"p",href:"https://docs.microsoft.com/zh-cn/dotnet/core/tools/local-tools-how-to-use"},"https://docs.microsoft.com/zh-cn/dotnet/core/tools/local-tools-how-to-use")),(0,r.kt)("h2",{id:"375-\u53d1\u5e03\u5230-nuget-\u5e73\u53f0-"},"37.5 \u53d1\u5e03\u5230 ",(0,r.kt)("inlineCode",{parentName:"h2"},"Nuget")," \u5e73\u53f0 \ud83d\udc4f"),(0,r.kt)("p",null,"\u53d1\u5e03\u5230 ",(0,r.kt)("inlineCode",{parentName:"p"},"Nuget")," \u5e73\u53f0\u975e\u5e38\u7b80\u5355\uff0c\u53ea\u9700\u8981\u4e24\u4e2a\u6b65\u9aa4\u5373\u53ef\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u5207\u6362\u9879\u76ee ",(0,r.kt)("inlineCode",{parentName:"li"},"Debug")," \u6a21\u5f0f\u5230 ",(0,r.kt)("inlineCode",{parentName:"li"},"Release")," \u5e76\u91cd\u65b0\u7f16\u8bd1\u9879\u76ee"),(0,r.kt)("li",{parentName:"ul"},"\u5728 ",(0,r.kt)("inlineCode",{parentName:"li"},"Nuget")," \u5e73\u53f0\u4e0a\u4f20 ",(0,r.kt)("inlineCode",{parentName:"li"},"nupkg")," \u6587\u4ef6\u5939\u5bf9\u5e94 ",(0,r.kt)("inlineCode",{parentName:"li"},"\u9879\u76ee\u540d\u79f0.\u7248\u672c\u53f7.nupkg")," \u6587\u4ef6\u5373\u53ef\uff1a",(0,r.kt)("a",{parentName:"li",href:"https://www.nuget.org/packages/manage/upload"},"https://www.nuget.org/packages/manage/upload"))),(0,r.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u4e0a\u4f20 Nuget \u5e73\u53f0\u8865\u9f50\u4fe1\u606f")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u5efa\u8bae\u4e0a\u4f20\u5230 ",(0,r.kt)("inlineCode",{parentName:"p"},"Nuget")," \u5e73\u53f0\u7f16\u8f91 ",(0,r.kt)("inlineCode",{parentName:"p"},".csproj")," \u6587\u4ef6\u8865\u9f50\u4ee5\u4e0b\u4fe1\u606f\uff1a"),(0,r.kt)("pre",{parentName:"div"},(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{13-21}","{13-21}":!0},'\n\n \n Exe\n net5.0\n 0.0.1\n \u7b2c\u4e00\u4e2a dotnet tools \u5de5\u5177\n hello-tools\n true\n true\n ./nupkg\n\n \u767e\u5c0f\u50e7\n Baiqian Co.,Ltd.\n Furion\n \xa9 2020-2021 \u767e\u5c0f\u50e7, Baiqian Co.,Ltd.\n https://gitee.com/dotnetchina/Furion\n Gitee\n true\n MulanPSL-2.0\n https://furion.pro\n \n\n \n \n \n\n\n')))),(0,r.kt)("img",{src:(0,o.Z)("img/ts13.png")}),(0,r.kt)("img",{src:(0,o.Z)("img/ts14.png")}),(0,r.kt)("p",null,"\u53d1\u5e03\u5230 ",(0,r.kt)("inlineCode",{parentName:"p"},"Nuget")," \u5e73\u53f0\u540e\uff0c\u522b\u4eba\u5c31\u53ef\u4ee5\u901a\u8fc7\uff1a"),(0,r.kt)("h4",{id:"-\u5b89\u88c5-nuget-\u5305\u5230\u672c\u5730"},"\u2714 \u5b89\u88c5 Nuget \u5305\u5230\u672c\u5730"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"dotnet tool install --global \u9879\u76ee\u540d --version \u7248\u672c\u53f7\n")),(0,r.kt)("h2",{id:"376-cli-\u9759\u6001\u7c7b\u8bf4\u660e"},"37.6 ",(0,r.kt)("inlineCode",{parentName:"h2"},"Cli")," \u9759\u6001\u7c7b\u8bf4\u660e"),(0,r.kt)("p",null,"\u4e3a\u4e86\u7b80\u5316\u5305\u5de5\u5177\u7684\u5f00\u53d1\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"Furion.Tools.CommandLine")," \u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"Cli")," \u9759\u6001\u7c7b\u63d0\u4f9b\u4e86\u5f88\u591a\u65b9\u4fbf\u7684\u9759\u6001\u65b9\u6cd5\uff1a"),(0,r.kt)("h3",{id:"3761-\u6d88\u606f\u7c7b"},"37.6.1 \u6d88\u606f\u7c7b"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'// \u8f93\u51fa\u7a7a\u884c\nCli.EmptyLine();\n\n// \u8f93\u51fa\u4e00\u884c\nCli.WriteLine("\u6d88\u606f");\nCli.WriteLine("\u6d88\u606f", ConsoleColor.Blue); // \u5b57\u4f53\u989c\u8272\nCli.WriteLine("\u6d88\u606f", ConsoleColor.Blue, ConsoleColor.White); // \u80cc\u666f\u989c\u8272\nCli.WriteLine("\u6d88\u606f", ConsoleColor.Blue, ConsoleColor.White, fillLine: true); // \u586b\u5145\u6574\u884c\n\n// \u8f93\u51fa\uff08\u4e0d\u6362\u884c\uff09\nCli.Write("\u6d88\u606f");\nCli.Write("\u6d88\u606f", ConsoleColor.Blue); // \u5b57\u4f53\u989c\u8272\nCli.Write("\u6d88\u606f", ConsoleColor.Blue, ConsoleColor.White); // \u80cc\u666f\u989c\u8272\nCli.Write("\u6d88\u606f", ConsoleColor.Blue, ConsoleColor.White, fillLine: true); // \u586b\u5145\u6574\u884c\n\n// \u8f93\u51fa\u63d0\u793a\u6d88\u606f\nCli.Success("\u6210\u529f");\nCli.Warn("\u8b66\u544a");\nCli.Error("\u9519\u8bef");\nCli.Tip("\u63d0\u793a");\n\n// \u6536\u96c6\u7528\u6237\u8f93\u5165\uff08\u652f\u6301\u591a\u884c\uff09\nvar inputs = Cli.ReadInput(); // \u8f93\u5165 exit \u9000\u51fa\u8f93\u5165\n\n// \u9009\u62e9\u6d88\u606f\nvar selectId = Cli.ReadOptions("\u8bf7\u9009\u62e9\u559c\u6b22\u7684\u6c34\u679c\uff1a", new []{ "\u897f\u74dc", "\u82f9\u679c", "\u51e4\u68a8"}); // selectId \u4ece 1 \u5f00\u59cb\n')),(0,r.kt)("h3",{id:"3762-\u5de5\u5177\u7c7b"},"37.6.2 \u5de5\u5177\u7c7b"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'// \u5b8c\u6210\u53c2\u6570\u586b\u5145\u5c5e\u6027\u521d\u59cb\u5316\u64cd\u4f5c\nCli.Inject();\n\n// \u83b7\u53d6\u53c2\u6570\u6240\u6709\u4fe1\u606f\nvar arguments = Cli.ArgumentMetadatas;\n\n// \u624b\u52a8\u68c0\u67e5\u53c2\u6570\u662f\u5426\u5339\u914d\nCli.Check(nameof(\u5c5e\u6027\u540d), argument => {\n // \u5982\u679c\u7528\u6237\u8f93\u5165\u8be5\u53c2\u6570\n if(argument?.IsTransmission == true){\n Cli.WriteLine(argument.Value);\n }\n else {\n Cli.Error("\u7528\u6237\u6ca1\u6709\u8f93\u5165");\n }\n});\n\n// \u53ea\u6709\u53c2\u6570\u5339\u914d\u624d\u8fdb\u5165\nCli.CheckMatch(nameof(\u5c5e\u6027\u540d), argument => {\n Cli.WriteLine(argument.Value);\n})\n\n// \u65e0\u5c5e\u6027\u68c0\u67e5\nCli.Check(new[] {"v", "version"}, (isMatch, value) => {\n // \u5982\u679c\u7528\u6237\u8f93\u5165\u8be5\u53c2\u6570\n if(isMatch){\n Cli.WriteLine(value);\n }\n else {\n Cli.Error("\u7528\u6237\u6ca1\u6709\u8f93\u5165");\n }\n});\n\n// \u65e0\u5c5e\u6027\u5339\u914d\nCli.CheckMatch(new[] {"v", "version"}, value => {\n Cli.WriteLine(value);\n});\n\n// \u6240\u6709\u672a\u5339\u914d\u7684\u53c2\u6570\u3001\u64cd\u4f5c\u7b26\nCli.CheckNoMatches((isEmpty, operands, noMatches) => {\n if (isEmpty) Cli.WriteLine($"\u6b22\u8fce\u4f7f\u7528 {Cli.GetDescription()}");\n if (operands.Length > 0) Cli.Error($"\u672a\u627e\u5230\u8be5\u64cd\u4f5c\u7b26\uff1a{string.Join(",", operands)}");\n if (noMatches.Count > 0) Cli.Error($"\u672a\u627e\u5230\u8be5\u53c2\u6570\uff1a{string.Join(",", noMatches.Keys)}");\n});\n\n// \u89e3\u6790 Main \u65b9\u6cd5\u53c2\u6570\u4fe1\u606f\nvar argumentModel = Cli.Parse();\n\n// \u624b\u52a8\u89e3\u6790\u547d\u4ee4\u5b57\u7b26\u4e32\nvar argumentModel = Cli.Parse("-abc foo --hello world");\n\n// \u7ec8\u6b62\u8f93\u51fa/\u7ed3\u675f\u8f93\u51fa\nCli.Exit();\n')),(0,r.kt)("h3",{id:"3762-\u4fe1\u606f\u7c7b"},"37.6.2 \u4fe1\u606f\u7c7b"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"// \u83b7\u53d6\u5f53\u524d\u5de5\u5177\u5305\u7248\u672c\u53f7\nvar version = Cli.GetVersion();\n\n// \u83b7\u53d6\u5f53\u524d\u5de5\u5177\u5305\u63cf\u8ff0\nvar description = Cli.GetDescription();\n")),(0,r.kt)("h3",{id:"3763-\u5176\u4ed6\u7c7b"},"37.6.3 \u5176\u4ed6\u7c7b"),(0,r.kt)("p",null,"\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7 ",(0,r.kt)("inlineCode",{parentName:"p"},"Environment")," \u83b7\u53d6\u5f53\u524d\u73af\u5883\u66f4\u591a\u4fe1\u606f\uff0c\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"// \u5f53\u524d\u6267\u884c\u547d\u4ee4\u76ee\u5f55\nvar currentDirectory = Environment.CurrentDirectory;\n\n// \u83b7\u53d6\u673a\u5668\u540d\u79f0\nvar machineName = Environment.MachineName;\n\n// \u7b49\u7b49\u3002\u3002\u3002\u3002\u3002\n")),(0,r.kt)("h2",{id:"377-\u53cd\u9988\u4e0e\u5efa\u8bae"},"37.7 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,r.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/adf0697d.31dc847c.js b/handbook/build/assets/js/adf0697d.31dc847c.js deleted file mode 100644 index 3943aa54dda..00000000000 --- a/handbook/build/assets/js/adf0697d.31dc847c.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[7903],{3905:function(e,t,n){n.d(t,{Zo:function(){return d},kt:function(){return u}});var a=n(7294);function l(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t=1;t=0||(l[n]=e[n]);return l}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(l[n]=e[n])}return l}var p=a.createContext({}),m=function(e){var t=a.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},d=function(e){var t=m(e.components);return a.createElement(p.Provider,{value:t},e.children)},k={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},s=a.forwardRef((function(e,t){var n=e.components,l=e.mdxType,r=e.originalType,p=e.parentName,d=i(e,["components","mdxType","originalType","parentName"]),s=m(n),u=l,N=s["".concat(p,".").concat(u)]||s[u]||k[u]||r;return n?a.createElement(N,o(o({ref:t},d),{},{components:n})):a.createElement(N,o({ref:t},d))}));function u(e,t){var n=arguments,l=t&&t.mdxType;if("string"==typeof e||l){var r=n.length,o=new Array(r);o[0]=s;var i={};for(var p in t)hasOwnProperty.call(t,p)&&(i[p]=t[p]);i.originalType=e,i.mdxType="string"==typeof e?e:l,o[1]=i;for(var m=2;mdotnet tools \u5305\u7ba1\u7406\u597d\u5904",id:"3712-dotnet-tools-\u5305\u7ba1\u7406\u597d\u5904",children:[]}]},{value:"37.2 \u4e86\u89e3\u5305\u547d\u4ee4\u8bed\u6cd5",id:"372-\u4e86\u89e3\u5305\u547d\u4ee4\u8bed\u6cd5",children:[{value:"37.2.1 \u77ed\u53c2\u6570\u4f8b\u5b50",id:"3721-\u77ed\u53c2\u6570\u4f8b\u5b50",children:[]},{value:"37.2.2 \u957f\u53c2\u6570\u4f8b\u5b50",id:"3722-\u957f\u53c2\u6570\u4f8b\u5b50",children:[]},{value:"37.2.3 \u6df7\u5408\u53c2\u6570\u4f8b\u5b50",id:"3723-\u6df7\u5408\u53c2\u6570\u4f8b\u5b50",children:[]},{value:"37.2.4 \u591a\u4e2a\u503c\u53c2\u6570",id:"3724-\u591a\u4e2a\u503c\u53c2\u6570",children:[]},{value:"37.2.5 \u64cd\u4f5c\u7b26",id:"3725-\u64cd\u4f5c\u7b26",children:[]}]},{value:"37.3 \u7f16\u5199\u7b2c\u4e00\u4e2a\u5305",id:"373-\u7f16\u5199\u7b2c\u4e00\u4e2a\u5305",children:[{value:"37.3.1 \u521b\u5efa HelloTools \u63a7\u5236\u53f0\u5e94\u7528",id:"3731-\u521b\u5efa-hellotools-\u63a7\u5236\u53f0\u5e94\u7528",children:[]},{value:"37.3.2 \u7f16\u8f91 HelloTools.csproj",id:"3732-\u7f16\u8f91-hellotoolscsproj",children:[]},{value:"37.3.3 \u5b89\u88c5 Furion.Tools.CommandLine \u5305",id:"3733-\u5b89\u88c5-furiontoolscommandline-\u5305",children:[]},{value:"37.3.4 \u7f16\u5199\u903b\u8f91\u4ee3\u7801",id:"3734-\u7f16\u5199\u903b\u8f91\u4ee3\u7801",children:[]},{value:"37.3.5 \u5982\u4f55\u8c03\u8bd5\u5305\u5de5\u5177 \ud83d\udc4f",id:"3735-\u5982\u4f55\u8c03\u8bd5\u5305\u5de5\u5177-",children:[]},{value:"37.3.6 \u6d4b\u8bd5\u5404\u4e2a\u53c2\u6570\u60c5\u51b5",id:"3736-\u6d4b\u8bd5\u5404\u4e2a\u53c2\u6570\u60c5\u51b5",children:[]}]},{value:"37.4 \u6253\u5305\uff08\u672c\u673a\uff09\u6d4b\u8bd5",id:"374-\u6253\u5305\uff08\u672c\u673a\uff09\u6d4b\u8bd5",children:[{value:"37.4.1 \u5168\u5c40\u6253\u5305\u5b89\u88c5",id:"3741-\u5168\u5c40\u6253\u5305\u5b89\u88c5",children:[]},{value:"37.4.2 \u672c\u5730\u6253\u5305\u5b89\u88c5",id:"3742-\u672c\u5730\u6253\u5305\u5b89\u88c5",children:[]}]},{value:"37.5 \u53d1\u5e03\u5230 Nuget \u5e73\u53f0 \ud83d\udc4f",id:"375-\u53d1\u5e03\u5230-nuget-\u5e73\u53f0-",children:[]},{value:"37.6 Cli \u9759\u6001\u7c7b\u8bf4\u660e",id:"376-cli-\u9759\u6001\u7c7b\u8bf4\u660e",children:[{value:"37.6.1 \u6d88\u606f\u7c7b",id:"3761-\u6d88\u606f\u7c7b",children:[]},{value:"37.6.2 \u5de5\u5177\u7c7b",id:"3762-\u5de5\u5177\u7c7b",children:[]},{value:"37.6.2 \u4fe1\u606f\u7c7b",id:"3762-\u4fe1\u606f\u7c7b",children:[]},{value:"37.6.3 \u5176\u4ed6\u7c7b",id:"3763-\u5176\u4ed6\u7c7b",children:[]}]},{value:"37.7 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"377-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],s={toc:k};function u(e){var t=e.components,n=(0,l.Z)(e,i);return(0,r.kt)("wrapper",(0,a.Z)({},s,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"371-\u5173\u4e8e\u5305\u7ba1\u7406\u5de5\u5177"},"37.1 \u5173\u4e8e\u5305\u7ba1\u7406\u5de5\u5177"),(0,r.kt)("p",null,"\u4f7f\u7528\u8fc7 ",(0,r.kt)("inlineCode",{parentName:"p"},"NodeJs")," \u7684\u670b\u53cb\u4e00\u5b9a\u5bf9 ",(0,r.kt)("inlineCode",{parentName:"p"},"npm")," \u547d\u4ee4\u4e0d\u4f1a\u964c\u751f\uff0c\u53ef\u4ee5\u901a\u8fc7 ",(0,r.kt)("inlineCode",{parentName:"p"},"npm")," \u5b89\u88c5\u9879\u76ee\u9700\u8981\u7684\u5305\u6216\u73af\u5883\u9700\u8981\u7684\u5de5\u5177\uff0c\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},".NET Core 2.1+")," \u4e4b\u540e\uff0c\u5fae\u8f6f\u4e5f\u63a8\u51fa\u4e86\u65b0\u7684\u7279\u6027\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"Global/Local Tools"),"\uff0c\u8be5\u7279\u6027\u529f\u80fd\u4e5f\u6b63\u662f\u53d7\u5230 ",(0,r.kt)("inlineCode",{parentName:"p"},"npm")," \u542f\u53d1\u4e0b\u8bde\u751f\u7684\u3002"),(0,r.kt)("p",null,"\u4e0d\u540c\u7684\u662f\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"npm")," \u4e2d\u7684\u5305\u91c7\u7528\u7684\u662f ",(0,r.kt)("inlineCode",{parentName:"p"},"Javascript")," \u7f16\u5199\u5e76\u53d1\u5e03\u5230 ",(0,r.kt)("a",{parentName:"p",href:"https://www.npmjs.com/"},"https://www.npmjs.com/")," \u5e73\u53f0\uff0c\u800c ",(0,r.kt)("inlineCode",{parentName:"p"},"dotnet tools")," \u91c7\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"C#")," \u7f16\u5199\u5e76\u53d1\u5e03\u5230 ",(0,r.kt)("inlineCode",{parentName:"p"},"https://www.nuget.org/")," \u5e73\u53f0\u4f9b\u5b89\u88c5\u4f7f\u7528\u3002"),(0,r.kt)("h3",{id:"3712-dotnet-tools-\u5305\u7ba1\u7406\u597d\u5904"},"37.1.2 ",(0,r.kt)("inlineCode",{parentName:"h3"},"dotnet tools")," \u5305\u7ba1\u7406\u597d\u5904"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u8de8\u5e73\u53f0\uff0c\u652f\u6301 ",(0,r.kt)("inlineCode",{parentName:"li"},"Linux/Mac/Windows")," \u5e73\u53f0\u4f9b\u5b89\u88c5\u4f7f\u7528"),(0,r.kt)("li",{parentName:"ul"},"\u5b8c\u6574\u7684 ",(0,r.kt)("inlineCode",{parentName:"li"},"C#")," \u751f\u6001\u652f\u6301"),(0,r.kt)("li",{parentName:"ul"},"\u4e3a\u6240\u6b32\u4e3a~~~\uff08\u62e5\u6709\u64cd\u4f5c\u7cfb\u7edf\u7684\u6743\u9650\uff09")),(0,r.kt)("h2",{id:"372-\u4e86\u89e3\u5305\u547d\u4ee4\u8bed\u6cd5"},"37.2 \u4e86\u89e3\u5305\u547d\u4ee4\u8bed\u6cd5"),(0,r.kt)("p",null,"\u901a\u5e38\u5305\u547d\u4ee4\u8bed\u6cd5\u90fd\u9075\u5faa\u4ee5\u4e0b\u89c4\u5219\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"<-|--|/>argument-name<=|:| >[\"|']value['|\"] [--] [operand] ... [operand]\n")),(0,r.kt)("p",null,"\u5728\u8fd9\u91cc\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u5c06\u7b80\u5355\u4ecb\u7ecd\u547d\u4ee4\u5e38\u7528\u7684\u77e5\u8bc6\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"\u5de5\u5177\u7b26"),"\uff1a\u901a\u5e38\u6307\u7684\u662f\u4f60\u5de5\u5177\u7684\u552f\u4e00\u540d\u79f0\uff0c\u4e5f\u5c31\u662f\u5173\u952e\u5b57\uff0c\u800c\u4e14\u603b\u662f\u5728\u6700\u5f00\u5934\u7f16\u5199\uff0c\u5982\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"dotnet"),"\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"npm"),"\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"node")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"\u77ed\u53c2\u6570"),"\uff1a\u77ed\u53c2\u6570\u6307\u7684\u662f ",(0,r.kt)("inlineCode",{parentName:"li"},"\u5355\u4e2a\u5b57\u7b26")," \u7684\u5b57\u7b26\u4e32\uff0c\u6211\u4eec\u901a\u5e38\u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"li"},"-")," \u4e00\u4e2a\u6a2a\u6746\u6307\u5b9a\u53c2\u6570\u53ca\u503c\uff0c\u5982\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"-v")," \u6216 ",(0,r.kt)("inlineCode",{parentName:"li"},"-v 0.0.1")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"\u957f\u53c2\u6570"),"\uff1a\u957f\u53c2\u6570\u6307\u7684\u662f\u4e00\u4e2a\u6216\u591a\u4e2a\u5355\u8bcd\u8fde\u63a5\u7684\u5b57\u7b26\u4e32\uff0c\u8be5\u53c2\u6570\u901a\u5e38\u548c ",(0,r.kt)("inlineCode",{parentName:"li"},"\u77ed\u53c2\u6570")," \u540c\u65f6\u5b58\u5728\uff0c\u901a\u5e38\u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"li"},"--")," \u6307\u5b9a\u53c2\u6570\u53ca\u503c\uff0c\u5982\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"--version")," \u6216 ",(0,r.kt)("inlineCode",{parentName:"li"},"--version 0.0.1")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"\u64cd\u4f5c\u7b26"),"\uff1a\u5b57\u7b26\u4e32\u4e2d\u4e0e\u53c2\u6570\u503c\u683c\u5f0f\u4e0d\u5339\u914d\u7684\u4efb\u4f55\u6587\u672c\u90fd\u88ab\u89c6\u4e3a\u64cd\u4f5c\u6570\uff0c\u4efb\u4f55\u51fa\u73b0\u5728\u53cc\u8fde\u5b57\u7b26 ",(0,r.kt)("inlineCode",{parentName:"li"},"--")," \u4e4b\u540e\u4e14\u672a\u5305\u542b\u5728\u5355\u5f15\u53f7\u6216\u53cc\u5f15\u53f7\u4e2d\u4e14\u4e24\u4fa7\u6709\u7a7a\u683c\u7684\u6587\u672c\u90fd\u88ab\u89c6\u4e3a\u64cd\u4f5c\u6570\uff0c\u65e0\u8bba\u5b83\u662f\u5426\u4e0e\u53c2\u6570\u503c\u683c\u5f0f\u5339\u914d\uff0c\u901a\u5e38\u7528\u4e8e\u5f52\u7c7b/\u5206\u7c7b\u4f5c\u7528\u3002")),(0,r.kt)("h3",{id:"3721-\u77ed\u53c2\u6570\u4f8b\u5b50"},"37.2.1 \u77ed\u53c2\u6570\u4f8b\u5b50"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"-a foo"))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"\u77ed\u53c2\u6570"),(0,r.kt)("th",{parentName:"tr",align:null},"\u53c2\u6570\u503c"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"a"),(0,r.kt)("td",{parentName:"tr",align:null},"foo")))),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"-ab"))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"\u77ed\u53c2\u6570"),(0,r.kt)("th",{parentName:"tr",align:null},"\u53c2\u6570\u503c"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"a"),(0,r.kt)("td",{parentName:"tr",align:null})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"b"),(0,r.kt)("td",{parentName:"tr",align:null})))),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"-abc bar"))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"\u77ed\u53c2\u6570"),(0,r.kt)("th",{parentName:"tr",align:null},"\u53c2\u6570\u503c"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"a"),(0,r.kt)("td",{parentName:"tr",align:null})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"b"),(0,r.kt)("td",{parentName:"tr",align:null})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"c"),(0,r.kt)("td",{parentName:"tr",align:null},"bar")))),(0,r.kt)("h3",{id:"3722-\u957f\u53c2\u6570\u4f8b\u5b50"},"37.2.2 \u957f\u53c2\u6570\u4f8b\u5b50"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"--foo bar"))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"\u957f\u53c2\u6570"),(0,r.kt)("th",{parentName:"tr",align:null},"\u53c2\u6570\u503c"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"foo"),(0,r.kt)("td",{parentName:"tr",align:null},"bar")))),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"--foo --bar"))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"\u957f\u53c2\u6570"),(0,r.kt)("th",{parentName:"tr",align:null},"\u53c2\u6570\u503c"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"foo"),(0,r.kt)("td",{parentName:"tr",align:null})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"bar"),(0,r.kt)("td",{parentName:"tr",align:null})))),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"--foo bar --hello world"))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"\u957f\u53c2\u6570"),(0,r.kt)("th",{parentName:"tr",align:null},"\u53c2\u6570\u503c"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"foo"),(0,r.kt)("td",{parentName:"tr",align:null},"bar")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"hello"),(0,r.kt)("td",{parentName:"tr",align:null},"world")))),(0,r.kt)("h3",{id:"3723-\u6df7\u5408\u53c2\u6570\u4f8b\u5b50"},"37.2.3 \u6df7\u5408\u53c2\u6570\u4f8b\u5b50"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},'-abc foo --hello world /new="slashes are ok too"'))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"\u77ed/\u957f\u53c2\u6570"),(0,r.kt)("th",{parentName:"tr",align:null},"\u53c2\u6570\u503c"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"a"),(0,r.kt)("td",{parentName:"tr",align:null})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"b"),(0,r.kt)("td",{parentName:"tr",align:null})),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"c"),(0,r.kt)("td",{parentName:"tr",align:null},"foo")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"hello"),(0,r.kt)("td",{parentName:"tr",align:null},"world")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"new"),(0,r.kt)("td",{parentName:"tr",align:null},"slashes are ok too")))),(0,r.kt)("h3",{id:"3724-\u591a\u4e2a\u503c\u53c2\u6570"},"37.2.4 \u591a\u4e2a\u503c\u53c2\u6570"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"--list 1 --list 2 --list 3"))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"\u957f\u53c2\u6570"),(0,r.kt)("th",{parentName:"tr",align:null},"\u53c2\u6570\u503c"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"list"),(0,r.kt)("td",{parentName:"tr",align:null},"1,2,3")))),(0,r.kt)("h3",{id:"3725-\u64cd\u4f5c\u7b26"},"37.2.5 \u64cd\u4f5c\u7b26"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},'-a foo bar "hello world" -b -- -explicit operand'))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"\u77ed\u53c2\u6570"),(0,r.kt)("th",{parentName:"tr",align:null},"\u53c2\u6570\u503c"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"a"),(0,r.kt)("td",{parentName:"tr",align:null},"foo")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"b"),(0,r.kt)("td",{parentName:"tr",align:null})))),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:null},"\u64cd\u4f5c\u7b26"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"bar")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},'"hello world"')),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"-explicit")),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:null},"operand")))),(0,r.kt)("p",null,"\u4e86\u89e3\u66f4\u591a\u5173\u4e8e\u5305\u547d\u4ee4\u8bed\u6cd5\u7684\u5b98\u65b9\u77e5\u8bc6\uff1a",(0,r.kt)("a",{parentName:"p",href:"https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html"},"https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html")),(0,r.kt)("h2",{id:"373-\u7f16\u5199\u7b2c\u4e00\u4e2a\u5305"},"37.3 \u7f16\u5199\u7b2c\u4e00\u4e2a\u5305"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"dotnet tools")," \u5de5\u5177\u5b9e\u9645\u4e0a\u662f\u4e00\u4e2a ",(0,r.kt)("inlineCode",{parentName:"p"},"\u63a7\u5236\u53f0")," \u5e94\u7528\u7a0b\u5e8f\uff0c\u4e0d\u540c\u7684\u662f ",(0,r.kt)("inlineCode",{parentName:"p"},".csproj")," \u9879\u76ee\u6587\u4ef6\u9700\u8981\u6dfb\u52a0\u7279\u5b9a\u914d\u7f6e\u3002\u4e0b\u9762\u5c06\u7ed9\u5927\u5bb6\u7f16\u5199\u4e00\u4e2a ",(0,r.kt)("inlineCode",{parentName:"p"},"HelloTools")," \u5305\u7ba1\u7406\u5de5\u5177\u3002"),(0,r.kt)("h3",{id:"3731-\u521b\u5efa-hellotools-\u63a7\u5236\u53f0\u5e94\u7528"},"37.3.1 \u521b\u5efa ",(0,r.kt)("inlineCode",{parentName:"h3"},"HelloTools")," \u63a7\u5236\u53f0\u5e94\u7528"),(0,r.kt)("img",{src:(0,o.Z)("img/ts1.png")}),(0,r.kt)("h3",{id:"3732-\u7f16\u8f91-hellotoolscsproj"},"37.3.2 \u7f16\u8f91 ",(0,r.kt)("inlineCode",{parentName:"h3"},"HelloTools.csproj")),(0,r.kt)("p",null,"\u5c06\u63a7\u5236\u53f0\u9879\u76ee\u6807\u8bb0\u6210 ",(0,r.kt)("inlineCode",{parentName:"p"},"dotnet tools")," \u9700\u8981\u914d\u7f6e\u4ee5\u4e0b\u8282\u70b9\uff0c\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{6-11}","{6-11}":!0},'\n\n \n Exe\n net5.0\n 0.0.1\n \u7b2c\u4e00\u4e2a dotnet tools \u5de5\u5177\n hello-tools\n true\n true\n ./nupkg\n \n\n\n')),(0,r.kt)("h4",{id:"\u914d\u7f6e\u5173\u952e\u8282\u70b9\u8bf4\u660e"},"\u914d\u7f6e\u5173\u952e\u8282\u70b9\u8bf4\u660e"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Version"),"\uff1a\u5305\u5de5\u5177\u7248\u672c\u53f7"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Description"),"\uff1a\u5305\u5de5\u5177\u4ecb\u7ecd"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"ToolCommandName"),"\uff1a\u5305\u5de5\u5177\u5173\u952e\u5b57\uff0c\u5982 ",(0,r.kt)("inlineCode",{parentName:"li"},"dotnet"),"\u3001",(0,r.kt)("inlineCode",{parentName:"li"},"npm"),"\uff0c\u540e\u7eed\u4f7f\u7528\u90fd\u662f\u901a\u8fc7\u8be5\u5173\u952e\u5b57\u4f7f\u7528"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"PackAsTool"),"\uff1a\u662f\u5426\u58f0\u660e\u4e3a\u5305\u7ba1\u7406\u5de5\u5177\uff0c\u8bbe\u7f6e ",(0,r.kt)("inlineCode",{parentName:"li"},"true")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"GeneratePackageOnBuild"),"\uff1a\u662f\u5426\u7f16\u8bd1\u65f6\u81ea\u52a8\u751f\u6210 ",(0,r.kt)("inlineCode",{parentName:"li"},".nupkg")," \u5305\uff0c\u65b9\u4fbf\u540e\u7eed\u4e0a\u4f20\u5230 ",(0,r.kt)("inlineCode",{parentName:"li"},"Nuget")," \u5e73\u53f0"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"PackageOutputPath"),"\uff1a\u914d\u7f6e ",(0,r.kt)("inlineCode",{parentName:"li"},".nupkg")," \u5305\u5b58\u50a8\u76ee\u5f55\uff0c\u63a8\u8350\u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"li"},"./nupkg"))),(0,r.kt)("h3",{id:"3733-\u5b89\u88c5-furiontoolscommandline-\u5305"},"37.3.3 \u5b89\u88c5 ",(0,r.kt)("inlineCode",{parentName:"h3"},"Furion.Tools.CommandLine")," \u5305"),(0,r.kt)("p",null,"\u4e3a\u4e86\u65b9\u4fbf\u7ba1\u7406\u5de5\u5177\u5305\u5f00\u53d1\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u5b98\u65b9\u7279\u610f\u5f00\u53d1\u4e86 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion.Tools.CommandLine")," \u5305\uff0c\u5e2e\u52a9\u5927\u5bb6\u5feb\u901f\u5f00\u53d1\u7ba1\u7406\u5de5\u5177\u5305\u3002"),(0,r.kt)("img",{src:(0,o.Z)("img/ts2.png")}),(0,r.kt)("h3",{id:"3734-\u7f16\u5199\u903b\u8f91\u4ee3\u7801"},"37.3.4 \u7f16\u5199\u903b\u8f91\u4ee3\u7801"),(0,r.kt)("p",null,"\u6211\u4eec\u5148\u5b9a\u4e49\u51e0\u4e2a\u9700\u6c42\uff0c\u7136\u540e\u7f16\u5199\u903b\u8f91\u4ee3\u7801\uff1a"),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"\u9700\u6c42\u4e00\uff1a\u8f93\u5165 ",(0,r.kt)("inlineCode",{parentName:"p"},"hello-tools")," \u6253\u5370\u4ecb\u7ecd\u4fe1\u606f\uff0c\u53ef\u901a\u8fc7 ",(0,r.kt)("strong",{parentName:"p"},"\ud83d\udc4f",(0,r.kt)("a",{parentName:"strong",href:"http://patorjk.com/software/taag/#p=display&f=Big&t=Furion%20Tools"},"\u751f\u6210\u5b57\u7b26 LOGO"),"\ud83d\udc4f")," \u5de5\u5177\u751f\u6210 ",(0,r.kt)("inlineCode",{parentName:"p"},"Logo")),(0,r.kt)("p",{parentName:"blockquote"},"\u9700\u6c42\u4e8c\uff1a\u8f93\u5165 ",(0,r.kt)("inlineCode",{parentName:"p"},"-n")," \u6216 ",(0,r.kt)("inlineCode",{parentName:"p"},"--name")," \u8f93\u51fa ",(0,r.kt)("inlineCode",{parentName:"p"},"Hello \u540d\u5b57")),(0,r.kt)("p",{parentName:"blockquote"},"\u9700\u6c42\u4e09\uff1a\u8f93\u5165 ",(0,r.kt)("inlineCode",{parentName:"p"},"-v")," \u6216 ",(0,r.kt)("inlineCode",{parentName:"p"},"--version")," \u8f93\u51fa\u5f53\u524d\u7248\u672c"),(0,r.kt)("p",{parentName:"blockquote"},"\u9700\u6c42\u56db\uff1a\u8f93\u5165 ",(0,r.kt)("inlineCode",{parentName:"p"},"-h")," \u6216 ",(0,r.kt)("inlineCode",{parentName:"p"},"--help")," \u8f93\u51fa\u5e2e\u52a9\u6587\u6863")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,10,15-18,26-29,37-40,45}","{1,10,15-18,26-29,37-40,45}":!0},'using Furion.Tools.CommandLine;\nusing System;\nusing System.Collections.Generic;\n\nnamespace HelloTools\n{\n class Program\n {\n // \u901a\u8fc7 Cli.Inject() \u5b8c\u6210\u51c6\u5907\u5de5\u4f5c\n static void Main(string[] args) => Cli.Inject();\n\n /// \n /// \u8f93\u51fa Hello \u540d\u5b57\n /// \n [Argument(\'n\', "name", "\u60a8\u7684\u540d\u5b57")]\n static string Name { get; set; }\n // \u5b9a\u4e49\u53c2\u6570\u5904\u7406\u7a0b\u5e8f\uff0c\u5fc5\u987b [\u5c5e\u6027\u540d]+Handler\n static void NameHandler(ArgumentMetadata argument)\n {\n Console.WriteLine($"Hello {Name}");\n }\n\n /// \n /// \u67e5\u770b\u7248\u672c\n /// \n [Argument(\'v\', "version", "\u5de5\u5177\u7248\u672c\u53f7")]\n static bool Version { get; set; }\n // \u5b9a\u4e49\u53c2\u6570\u5904\u7406\u7a0b\u5e8f\uff0c\u5fc5\u987b [\u5c5e\u6027\u540d]+Handler\n static void VersionHandler(ArgumentMetadata argument)\n {\n Console.WriteLine(Cli.GetVersion());\n }\n\n /// \n /// \u67e5\u770b\u5e2e\u52a9\u6587\u6863\n /// \n [Argument(\'h\', "help", "\u67e5\u770b\u5e2e\u52a9\u6587\u6863")]\n static bool Help { get; set; }\n // \u5b9a\u4e49\u53c2\u6570\u5904\u7406\u7a0b\u5e8f\uff0c\u5fc5\u987b [\u5c5e\u6027\u540d]+Handler\n static void HelpHandler(ArgumentMetadata argument)\n {\n Cli.GetHelpText("hello-tools");\n }\n\n // \u6240\u6709\u672a\u5339\u914d\u7684\u53c2\u6570/\u64cd\u4f5c\u7b26\u5904\u7406\u7a0b\u5e8f\uff0c\u56fa\u5b9a NoMatchesHandler \u65b9\u6cd5\u540d\n static void NoMatchesHandler(bool isEmpty, string[] operands, Dictionary noMatches)\n {\n if (isEmpty)\n {\n Console.WriteLine(@"\n _ _ _ _ _______ _\n | | | | | | | |__ __| | |\n | |__| | ___| | | ___ | | ___ ___ | |___\n | __ |/ _ \\ | |/ _ \\ | |/ _ \\ / _ \\| / __|\n | | | | __/ | | (_) | | | (_) | (_) | \\__ \\\n |_| |_|\\___|_|_|\\___/ |_|\\___/ \\___/|_|___/\n\n\n");\n Console.WriteLine($"\u6b22\u8fce\u4f7f\u7528{Cli.GetDescription()}");\n }\n }\n }\n}\n')),(0,r.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u4ee3\u7801\u8bf4\u660e")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("ul",{parentName:"div"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Furion")," \u5de5\u5177\u5305\u63d0\u4f9b\u4e86\u975e\u5e38\u65b9\u4fbf\u7684 ",(0,r.kt)("inlineCode",{parentName:"li"},"Cli.Inject()")," \u65b9\u6cd5\uff0c\u53ef\u4ee5\u5b9e\u73b0\u4e00\u6b21\u6027\u5b8c\u6210\u6240\u6709\u521d\u59cb\u5316\u5de5\u4f5c\uff0c\u53ea\u9700\u8981\u5728 ",(0,r.kt)("inlineCode",{parentName:"li"},"Main")," \u65b9\u6cd5\u8c03\u7528\u5373\u53ef"),(0,r.kt)("li",{parentName:"ul"},"\u901a\u8fc7 ",(0,r.kt)("inlineCode",{parentName:"li"},"[Argument(\u77ed\u53c2\u6570\uff0c\u957f\u53c2\u6570\uff0c\u63d0\u793a\u6587\u6863)]")," \u5b9a\u4e49\u6bcf\u4e00\u4e2a\u53c2\u6570\u5c5e\u6027\uff0c\u53c2\u6570\u5fc5\u987b\u662f ",(0,r.kt)("inlineCode",{parentName:"li"},"static")," \u9759\u6001"),(0,r.kt)("li",{parentName:"ul"},"\u901a\u8fc7 ",(0,r.kt)("inlineCode",{parentName:"li"},"[\u5c5e\u6027\u540d]Handler")," \u5b9a\u4e49\u6bcf\u4e2a\u53c2\u6570\u5339\u914d\u540e\u7684\u5904\u7406\u7a0b\u5e8f\uff0c\u5982\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"VersionHandler"),"\uff0c\u683c\u5f0f\u4e3a\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"static void \u5c5e\u6027\u540dHandler(ArgumentMetadata argument)")),(0,r.kt)("li",{parentName:"ul"},"\u901a\u8fc7\u56fa\u5b9a\u65b9\u6cd5\u540d ",(0,r.kt)("inlineCode",{parentName:"li"},"NoMatchesHandler")," \u5b9a\u4e49\u672a\u5339\u914d\u7684\u53c2\u6570\u53ca\u64cd\u4f5c\u7b26\uff0c\u8be5\u65b9\u6cd5\u6709\u4e09\u4e2a\u53c2\u6570\uff1a",(0,r.kt)("ul",{parentName:"li"},(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"isEmpty"),"\uff1a\u5224\u65ad\u662f\u5426\u6ca1\u6709\u4f20\u9012\u4efb\u4f55\u53c2\u6570\uff0c\u901a\u5e38\u7528\u4e8e\u8f93\u51fa\u4ecb\u7ecd"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"operands"),"\uff1a\u83b7\u53d6\u6240\u6709\u64cd\u4f5c\u7b26\u5217\u8868"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"noMatches"),"\uff1a\u83b7\u53d6\u6240\u6709\u672a\u5339\u914d\u7684\u53c2\u6570\u5b57\u5178")))))),(0,r.kt)("h3",{id:"3735-\u5982\u4f55\u8c03\u8bd5\u5305\u5de5\u5177-"},"37.3.5 \u5982\u4f55\u8c03\u8bd5\u5305\u5de5\u5177 \ud83d\udc4f"),(0,r.kt)("p",null,"\u5305\u7ba1\u7406\u5de5\u5177\u8c03\u8bd5\u6709\u522b\u4e8e\u666e\u901a\u7684\u63a7\u5236\u53f0\uff0c\u4e3b\u8981\u533a\u522b\u662f\u6d4b\u8bd5\u5404\u4e2a\u53c2\u6570\u7684\u4f7f\u7528\uff0c\u4e5f\u5c31\u662f\u5982\u4f55\u4f20\u9012 ",(0,r.kt)("inlineCode",{parentName:"p"},"Main")," \u65b9\u6cd5\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"args")," \u53c2\u6570\u3002\u53ea\u9700\u8981\u4ee5\u4e0b\u4e24\u4e2a\u6b65\u9aa4\u5373\u53ef\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u5728\u9879\u76ee\u6839\u76ee\u5f55\u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"li"},"Properties")," \u76ee\u5f55"),(0,r.kt)("li",{parentName:"ul"},"\u5728 ",(0,r.kt)("inlineCode",{parentName:"li"},"Properties")," \u76ee\u5f55\u4e2d\u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"li"},"launchSettings.json")," \u6587\u4ef6\uff0c\u5e76\u9075\u5faa\u4ee5\u4e0b\u89c4\u5219\uff1a")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json",metastring:"{3,5}","{3,5}":!0},'{\n "profiles": {\n "\u9879\u76ee\u540d\u79f0": {\n "commandName": "Project",\n "commandLineArgs": "\u4f60\u7684\u547d\u4ee4"\n }\n }\n}\n')),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"\u9879\u76ee\u540d\u79f0"),"\uff1a\u5199\u4f60\u7684\u9879\u76ee\u5b9e\u9645\u540d\u79f0\uff0c\u5982\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"HelloTools")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"commandName"),"\uff1a\u56fa\u5b9a\u4e3a ",(0,r.kt)("inlineCode",{parentName:"li"},"Project")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"commandLineArgs"),"\uff1a\u7f16\u5199\u6d4b\u8bd5\u547d\u4ee4\uff0c\u53ea\u9700\u8981\u5199\u53c2\u6570/\u64cd\u4f5c\u7b26\u90e8\u5206\u5373\u53ef\uff0c\u5982\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},"-v"),"\uff0c",(0,r.kt)("inlineCode",{parentName:"li"},"-v -h --Name Furion"))),(0,r.kt)("p",null,"\u5982\uff0c\u6211\u4eec\u9700\u8981\u6d4b\u8bd5 ",(0,r.kt)("inlineCode",{parentName:"p"},"HelloTools")," \u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"-n")," \u53c2\u6570"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json",metastring:"{3,5}","{3,5}":!0},'{\n "profiles": {\n "HelloTools": {\n "commandName": "Project",\n "commandLineArgs": "-n Furion"\n }\n }\n}\n')),(0,r.kt)("img",{src:(0,o.Z)("img/ts3.png")}),(0,r.kt)("p",null,"\u70b9\u51fb ",(0,r.kt)("inlineCode",{parentName:"p"},"\u8fd0\u884c/\u8c03\u8bd5/F5")," \u542f\u52a8\u8c03\u8bd5"),(0,r.kt)("img",{src:(0,o.Z)("img/ts4.png")}),(0,r.kt)("h3",{id:"3736-\u6d4b\u8bd5\u5404\u4e2a\u53c2\u6570\u60c5\u51b5"},"37.3.6 \u6d4b\u8bd5\u5404\u4e2a\u53c2\u6570\u60c5\u51b5"),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"\u9700\u6c42\u4e00\uff1a\u8f93\u5165 ",(0,r.kt)("inlineCode",{parentName:"p"},"hello-tools")," \u6253\u5370\u4ecb\u7ecd\u4fe1\u606f")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json",metastring:"{5}","{5}":!0},'{\n "profiles": {\n "HelloTools": {\n "commandName": "Project",\n "commandLineArgs": ""\n }\n }\n}\n')),(0,r.kt)("img",{src:(0,o.Z)("img/ts5.png")}),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"\u9700\u6c42\u4e8c\uff1a\u8f93\u5165 ",(0,r.kt)("inlineCode",{parentName:"p"},"-n")," \u6216 ",(0,r.kt)("inlineCode",{parentName:"p"},"--name")," \u8f93\u51fa ",(0,r.kt)("inlineCode",{parentName:"p"},"Hello \u540d\u5b57"))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json",metastring:"{5}","{5}":!0},'{\n "profiles": {\n "HelloTools": {\n "commandName": "Project",\n "commandLineArgs": "-n Furion"\n }\n }\n}\n')),(0,r.kt)("img",{src:(0,o.Z)("img/ts6.png")}),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"\u9700\u6c42\u4e09\uff1a\u8f93\u5165 ",(0,r.kt)("inlineCode",{parentName:"p"},"-v")," \u6216 ",(0,r.kt)("inlineCode",{parentName:"p"},"--version")," \u8f93\u51fa\u5f53\u524d\u7248\u672c")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json",metastring:"{5}","{5}":!0},'{\n "profiles": {\n "HelloTools": {\n "commandName": "Project",\n "commandLineArgs": "--version"\n }\n }\n}\n')),(0,r.kt)("img",{src:(0,o.Z)("img/ts7.png")}),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"\u9700\u6c42\u56db\uff1a\u8f93\u5165 ",(0,r.kt)("inlineCode",{parentName:"p"},"-h")," \u6216 ",(0,r.kt)("inlineCode",{parentName:"p"},"--help")," \u8f93\u51fa\u5e2e\u52a9\u6587\u6863")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json",metastring:"{5}","{5}":!0},'{\n "profiles": {\n "HelloTools": {\n "commandName": "Project",\n "commandLineArgs": "-h"\n }\n }\n}\n')),(0,r.kt)("img",{src:(0,o.Z)("img/ts8.png")}),(0,r.kt)("h2",{id:"374-\u6253\u5305\uff08\u672c\u673a\uff09\u6d4b\u8bd5"},"37.4 \u6253\u5305\uff08\u672c\u673a\uff09\u6d4b\u8bd5"),(0,r.kt)("p",null,"\u521a\u521a\u6211\u4eec\u5df2\u7ecf\u5b66\u4f1a\u8c03\u8bd5\u5305\u5de5\u5177\u4e86\uff0c\u4f46\u662f\u8fd8\u672a\u505a\u5230\u7c7b\u4f3c ",(0,r.kt)("inlineCode",{parentName:"p"},"npm")," \u5305\u4e00\u6837\uff0c\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"cmd/powershell")," \u4e2d\u5b89\u88c5\u4e4b\u540e\u53ef\u5728\u547d\u4ee4\u884c\u5168\u5c40\u6d4b\u8bd5\uff0c\u4e0b\u9762\u5c06\u6559\u5927\u5bb6\u5982\u4f55\u5b9e\u73b0 ",(0,r.kt)("inlineCode",{parentName:"p"},"\u5168\u5c40\u5b89\u88c5")," \u548c ",(0,r.kt)("inlineCode",{parentName:"p"},"\u672c\u5730\u5b89\u88c5"),"\u3002"),(0,r.kt)("h3",{id:"3741-\u5168\u5c40\u6253\u5305\u5b89\u88c5"},"37.4.1 \u5168\u5c40\u6253\u5305\u5b89\u88c5"),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"\u5168\u5c40\u6253\u5305\u5b89\u88c5\u5c31\u662f\u914d\u7f6e\u5728\u7cfb\u7edf\u73af\u5883\u53d8\u91cf\u4e2d\uff0c\u5728\u4efb\u4f55\u5730\u65b9\u90fd\u53ef\u4ee5\u4f7f\u7528\u3002")),(0,r.kt)("p",null,"\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"HelloTools")," \u9879\u76ee\u6839\u76ee\u5f55\u4e0b\u6253\u5f00 ",(0,r.kt)("inlineCode",{parentName:"p"},"cmd/powershell"),"\uff08",(0,r.kt)("strong",{parentName:"p"},"\u5c3d\u91cf\u4f7f\u7528\u7ba1\u7406\u5458\u5de5\u5177"),"\uff09\u6267\u884c\u4ee5\u4e0b\u547d\u4ee4\uff1a"),(0,r.kt)("h4",{id:"-\u5b89\u88c5\u5168\u5c40\u5305"},"\u2714 \u5b89\u88c5\u5168\u5c40\u5305"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"dotnet tool install --global --add-source ./nupkg HelloTools\n")),(0,r.kt)("p",null,"\u5176\u4e2d ",(0,r.kt)("inlineCode",{parentName:"p"},"HelloTools")," \u5c31\u662f ",(0,r.kt)("inlineCode",{parentName:"p"},"\u9879\u76ee\u540d\u79f0"),"\u3002"),(0,r.kt)("img",{src:(0,o.Z)("img/ts9.png")}),(0,r.kt)("p",null,"\u4e4b\u540e\u6211\u4eec\u5c31\u53ef\u4ee5\u901a\u8fc7\u4e4b\u524d ",(0,r.kt)("inlineCode",{parentName:"p"},"HelloTools.csproj")," \u4e2d\u914d\u7f6e\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"hello-tools")," \u4f7f\u7528\u4e86\u3002"),(0,r.kt)("h4",{id:"-\u6d4b\u8bd5\u5168\u5c40\u5305"},"\u2714 \u6d4b\u8bd5\u5168\u5c40\u5305"),(0,r.kt)("img",{src:(0,o.Z)("img/ts10.png")}),(0,r.kt)("h4",{id:"-\u66f4\u65b0\u5168\u5c40\u5305"},"\u2714 \u66f4\u65b0\u5168\u5c40\u5305"),(0,r.kt)("p",null,"\u5982\u679c\u6e90\u7801\u53d1\u751f\u6539\u53d8\uff0c\u53ea\u9700\u8981\u7f16\u8bd1\u9879\u76ee\u540e\u91cd\u65b0\u66f4\u65b0\u5305\u5de5\u5177\u5373\u53ef\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"dotnet tool update --global --add-source ./nupkg HelloTools\n")),(0,r.kt)("h4",{id:"-\u5378\u8f7d\u5168\u5c40\u5305"},"\u2714 \u5378\u8f7d\u5168\u5c40\u5305"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"dotnet tool uninstall --global HelloTools\n")),(0,r.kt)("p",null,"\u60f3\u4e86\u89e3\u66f4\u591a\u5168\u5c40\u6253\u5305\u5b89\u88c5\u77e5\u8bc6\u67e5\u9605\u5b98\u65b9\u6587\u6863\u5373\u53ef\uff1a",(0,r.kt)("a",{parentName:"p",href:"https://docs.microsoft.com/zh-cn/dotnet/core/tools/global-tools-how-to-use"},"https://docs.microsoft.com/zh-cn/dotnet/core/tools/global-tools-how-to-use")),(0,r.kt)("h3",{id:"3742-\u672c\u5730\u6253\u5305\u5b89\u88c5"},"37.4.2 \u672c\u5730\u6253\u5305\u5b89\u88c5"),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"\u672c\u5730\u6253\u5305\u5b89\u88c5\u5c31\u662f\u53ea\u6709\u5728\u9879\u76ee\u6240\u5728\u76ee\u5f55\u53ca\u5b50\u5b59\u76ee\u5f55\u65b9\u53ef\u4f7f\u7528\u3002")),(0,r.kt)("p",null,"\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"HelloTools")," \u9879\u76ee\u6839\u76ee\u5f55\u4e0b\u6253\u5f00 ",(0,r.kt)("inlineCode",{parentName:"p"},"cmd/powershell")," \u6267\u884c\u4ee5\u4e0b\u547d\u4ee4\uff1a"),(0,r.kt)("h4",{id:"-\u521b\u5efa\u672c\u5730\u6e05\u5355\u6587\u4ef6"},"\u2714 \u521b\u5efa\u672c\u5730\u6e05\u5355\u6587\u4ef6"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"dotnet new tool-manifest\n")),(0,r.kt)("p",null,"\u6267\u884c\u8be5\u547d\u4ee4\u540e\u4f1a\u81ea\u52a8\u521b\u5efa ",(0,r.kt)("inlineCode",{parentName:"p"},".config")," \u6587\u4ef6\u5939\u5e76\u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"p"},"dotnet-tools.json")," \u6587\u4ef6\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json"},'{\n "version": 1,\n "isRoot": true,\n "tools": {}\n}\n')),(0,r.kt)("div",{className:"admonition admonition-warning alert alert--danger"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"}))),"\u6ce8\u610f\u4e8b\u9879")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u901a\u5e38\u8be5\u6587\u4ef6\u5185\u5bb9\u4e0d\u9700\u8981\u624b\u52a8\u66f4\u6539\u3002"))),(0,r.kt)("h4",{id:"-\u5b89\u88c5\u672c\u5730\u5305"},"\u2714 \u5b89\u88c5\u672c\u5730\u5305"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"dotnet tool install --add-source ./nupkg HelloTools\n")),(0,r.kt)("img",{src:(0,o.Z)("img/ts11.png")}),(0,r.kt)("h4",{id:"-\u6d4b\u8bd5\u672c\u5730\u5305"},"\u2714 \u6d4b\u8bd5\u672c\u5730\u5305"),(0,r.kt)("p",null,"\u672c\u5730\u5305\u6d4b\u8bd5\u548c\u5168\u5c40\u5305\u4e0d\u4e00\u6837\u7684\u662f\u672c\u5730\u5305\u662f\u901a\u8fc7 ",(0,r.kt)("inlineCode",{parentName:"p"},"dotnet \u5173\u952e\u5b57 \u53c2\u6570")," \u6d4b\u8bd5\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"dotnet hello-tools -n Furion\n")),(0,r.kt)("img",{src:(0,o.Z)("img/ts12.png")}),(0,r.kt)("h4",{id:"-\u66f4\u65b0\u672c\u5730\u5305"},"\u2714 \u66f4\u65b0\u672c\u5730\u5305"),(0,r.kt)("p",null,"\u5982\u679c\u6e90\u7801\u53d1\u751f\u6539\u53d8\uff0c\u53ea\u9700\u8981\u7f16\u8bd1\u9879\u76ee\u540e\u91cd\u65b0\u66f4\u65b0\u5305\u5de5\u5177\u5373\u53ef\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"dotnet tool update --add-source ./nupkg HelloTools\n")),(0,r.kt)("h4",{id:"-\u5378\u8f7d\u672c\u5730\u5305"},"\u2714 \u5378\u8f7d\u672c\u5730\u5305"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"dotnet tool uninstall HelloTools\n")),(0,r.kt)("p",null,"\u60f3\u4e86\u89e3\u66f4\u591a\u672c\u5730\u6253\u5305\u5b89\u88c5\u77e5\u8bc6\u67e5\u9605\u5b98\u65b9\u6587\u6863\u5373\u53ef\uff1a",(0,r.kt)("a",{parentName:"p",href:"https://docs.microsoft.com/zh-cn/dotnet/core/tools/local-tools-how-to-use"},"https://docs.microsoft.com/zh-cn/dotnet/core/tools/local-tools-how-to-use")),(0,r.kt)("h2",{id:"375-\u53d1\u5e03\u5230-nuget-\u5e73\u53f0-"},"37.5 \u53d1\u5e03\u5230 ",(0,r.kt)("inlineCode",{parentName:"h2"},"Nuget")," \u5e73\u53f0 \ud83d\udc4f"),(0,r.kt)("p",null,"\u53d1\u5e03\u5230 ",(0,r.kt)("inlineCode",{parentName:"p"},"Nuget")," \u5e73\u53f0\u975e\u5e38\u7b80\u5355\uff0c\u53ea\u9700\u8981\u4e24\u4e2a\u6b65\u9aa4\u5373\u53ef\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u5207\u6362\u9879\u76ee ",(0,r.kt)("inlineCode",{parentName:"li"},"Debug")," \u6a21\u5f0f\u5230 ",(0,r.kt)("inlineCode",{parentName:"li"},"Release")," \u5e76\u91cd\u65b0\u7f16\u8bd1\u9879\u76ee"),(0,r.kt)("li",{parentName:"ul"},"\u5728 ",(0,r.kt)("inlineCode",{parentName:"li"},"Nuget")," \u5e73\u53f0\u4e0a\u4f20 ",(0,r.kt)("inlineCode",{parentName:"li"},"nupkg")," \u6587\u4ef6\u5939\u5bf9\u5e94 ",(0,r.kt)("inlineCode",{parentName:"li"},"\u9879\u76ee\u540d\u79f0.\u7248\u672c\u53f7.nupkg")," \u6587\u4ef6\u5373\u53ef\uff1a",(0,r.kt)("a",{parentName:"li",href:"https://www.nuget.org/packages/manage/upload"},"https://www.nuget.org/packages/manage/upload"))),(0,r.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u4e0a\u4f20 Nuget \u5e73\u53f0\u8865\u9f50\u4fe1\u606f")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u5efa\u8bae\u4e0a\u4f20\u5230 ",(0,r.kt)("inlineCode",{parentName:"p"},"Nuget")," \u5e73\u53f0\u7f16\u8f91 ",(0,r.kt)("inlineCode",{parentName:"p"},".csproj")," \u6587\u4ef6\u8865\u9f50\u4ee5\u4e0b\u4fe1\u606f\uff1a"),(0,r.kt)("pre",{parentName:"div"},(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{13-21}","{13-21}":!0},'\n\n \n Exe\n net5.0\n 0.0.1\n \u7b2c\u4e00\u4e2a dotnet tools \u5de5\u5177\n hello-tools\n true\n true\n ./nupkg\n\n \u767e\u5c0f\u50e7\n Baiqian Co.,Ltd.\n Furion\n \xa9 2020-2021 \u767e\u5c0f\u50e7, Baiqian Co.,Ltd.\n https://gitee.com/dotnetchina/Furion\n Gitee\n true\n MulanPSL-2.0\n https://furion.pro\n \n\n \n \n \n\n\n')))),(0,r.kt)("img",{src:(0,o.Z)("img/ts13.png")}),(0,r.kt)("img",{src:(0,o.Z)("img/ts14.png")}),(0,r.kt)("p",null,"\u53d1\u5e03\u5230 ",(0,r.kt)("inlineCode",{parentName:"p"},"Nuget")," \u5e73\u53f0\u540e\uff0c\u522b\u4eba\u5c31\u53ef\u4ee5\u901a\u8fc7\uff1a"),(0,r.kt)("h4",{id:"-\u5b89\u88c5-nuget-\u5305\u5230\u672c\u5730"},"\u2714 \u5b89\u88c5 Nuget \u5305\u5230\u672c\u5730"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-bash"},"dotnet tool install --global \u9879\u76ee\u540d --version \u7248\u672c\u53f7\n")),(0,r.kt)("h2",{id:"376-cli-\u9759\u6001\u7c7b\u8bf4\u660e"},"37.6 ",(0,r.kt)("inlineCode",{parentName:"h2"},"Cli")," \u9759\u6001\u7c7b\u8bf4\u660e"),(0,r.kt)("p",null,"\u4e3a\u4e86\u7b80\u5316\u5305\u5de5\u5177\u7684\u5f00\u53d1\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"Furion.Tools.CommandLine")," \u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"Cli")," \u9759\u6001\u7c7b\u63d0\u4f9b\u4e86\u5f88\u591a\u65b9\u4fbf\u7684\u9759\u6001\u65b9\u6cd5\uff1a"),(0,r.kt)("h3",{id:"3761-\u6d88\u606f\u7c7b"},"37.6.1 \u6d88\u606f\u7c7b"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'// \u8f93\u51fa\u7a7a\u884c\nCli.EmptyLine();\n\n// \u8f93\u51fa\u4e00\u884c\nCli.WriteLine("\u6d88\u606f");\nCli.WriteLine("\u6d88\u606f", ConsoleColor.Blue); // \u5b57\u4f53\u989c\u8272\nCli.WriteLine("\u6d88\u606f", ConsoleColor.Blue, ConsoleColor.White); // \u80cc\u666f\u989c\u8272\nCli.WriteLine("\u6d88\u606f", ConsoleColor.Blue, ConsoleColor.White, fillLine: true); // \u586b\u5145\u6574\u884c\n\n// \u8f93\u51fa\uff08\u4e0d\u6362\u884c\uff09\nCli.Write("\u6d88\u606f");\nCli.Write("\u6d88\u606f", ConsoleColor.Blue); // \u5b57\u4f53\u989c\u8272\nCli.Write("\u6d88\u606f", ConsoleColor.Blue, ConsoleColor.White); // \u80cc\u666f\u989c\u8272\nCli.Write("\u6d88\u606f", ConsoleColor.Blue, ConsoleColor.White, fillLine: true); // \u586b\u5145\u6574\u884c\n\n// \u8f93\u51fa\u63d0\u793a\u6d88\u606f\nCli.Success("\u6210\u529f");\nCli.Warn("\u8b66\u544a");\nCli.Error("\u9519\u8bef");\nCli.Tip("\u63d0\u793a");\n\n// \u6536\u96c6\u7528\u6237\u8f93\u5165\uff08\u652f\u6301\u591a\u884c\uff09\nvar inputs = Cli.ReadInput(); // \u8f93\u5165 exit \u9000\u51fa\u8f93\u5165\n\n// \u9009\u62e9\u6d88\u606f\nvar selectId = Cli.ReadOptions("\u8bf7\u9009\u62e9\u559c\u6b22\u7684\u6c34\u679c\uff1a", new []{ "\u897f\u74dc", "\u82f9\u679c", "\u51e4\u68a8"}); // selectId \u4ece 1 \u5f00\u59cb\n')),(0,r.kt)("h3",{id:"3762-\u5de5\u5177\u7c7b"},"37.6.2 \u5de5\u5177\u7c7b"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'// \u5b8c\u6210\u53c2\u6570\u586b\u5145\u5c5e\u6027\u521d\u59cb\u5316\u64cd\u4f5c\nCli.Inject();\n\n// \u83b7\u53d6\u53c2\u6570\u6240\u6709\u4fe1\u606f\nvar arguments = Cli.ArgumentMetadatas;\n\n// \u624b\u52a8\u68c0\u67e5\u53c2\u6570\u662f\u5426\u5339\u914d\nCli.Check(nameof(\u5c5e\u6027\u540d), argument => {\n // \u5982\u679c\u7528\u6237\u8f93\u5165\u8be5\u53c2\u6570\n if(argument?.IsTransmission == true){\n Cli.WriteLine(argument.Value);\n }\n else {\n Cli.Error("\u7528\u6237\u6ca1\u6709\u8f93\u5165");\n }\n});\n\n// \u53ea\u6709\u53c2\u6570\u5339\u914d\u624d\u8fdb\u5165\nCli.CheckMatch(nameof(\u5c5e\u6027\u540d), argument => {\n Cli.WriteLine(argument.Value);\n})\n\n// \u65e0\u5c5e\u6027\u68c0\u67e5\nCli.Check(new[] {"v", "version"}, (isMatch, value) => {\n // \u5982\u679c\u7528\u6237\u8f93\u5165\u8be5\u53c2\u6570\n if(isMatch){\n Cli.WriteLine(value);\n }\n else {\n Cli.Error("\u7528\u6237\u6ca1\u6709\u8f93\u5165");\n }\n});\n\n// \u65e0\u5c5e\u6027\u5339\u914d\nCli.CheckMatch(new[] {"v", "version"}, value => {\n Cli.WriteLine(value);\n});\n\n// \u6240\u6709\u672a\u5339\u914d\u7684\u53c2\u6570\u3001\u64cd\u4f5c\u7b26\nCli.CheckNoMatches((isEmpty, operands, noMatches) => {\n if (isEmpty) Cli.WriteLine($"\u6b22\u8fce\u4f7f\u7528 {Cli.GetDescription()}");\n if (operands.Length > 0) Cli.Error($"\u672a\u627e\u5230\u8be5\u64cd\u4f5c\u7b26\uff1a{string.Join(",", operands)}");\n if (noMatches.Count > 0) Cli.Error($"\u672a\u627e\u5230\u8be5\u53c2\u6570\uff1a{string.Join(",", noMatches.Keys)}");\n});\n\n// \u89e3\u6790 Main \u65b9\u6cd5\u53c2\u6570\u4fe1\u606f\nvar argumentModel = Cli.Parse();\n\n// \u624b\u52a8\u89e3\u6790\u547d\u4ee4\u5b57\u7b26\u4e32\nvar argumentModel = Cli.Parse("-abc foo --hello world");\n\n// \u7ec8\u6b62\u8f93\u51fa/\u7ed3\u675f\u8f93\u51fa\nCli.Exit();\n')),(0,r.kt)("h3",{id:"3762-\u4fe1\u606f\u7c7b"},"37.6.2 \u4fe1\u606f\u7c7b"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"// \u83b7\u53d6\u5f53\u524d\u5de5\u5177\u5305\u7248\u672c\u53f7\nvar version = Cli.GetVersion();\n\n// \u83b7\u53d6\u5f53\u524d\u5de5\u5177\u5305\u63cf\u8ff0\nvar description = Cli.GetDescription();\n")),(0,r.kt)("h3",{id:"3763-\u5176\u4ed6\u7c7b"},"37.6.3 \u5176\u4ed6\u7c7b"),(0,r.kt)("p",null,"\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7 ",(0,r.kt)("inlineCode",{parentName:"p"},"Environment")," \u83b7\u53d6\u5f53\u524d\u73af\u5883\u66f4\u591a\u4fe1\u606f\uff0c\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"// \u5f53\u524d\u6267\u884c\u547d\u4ee4\u76ee\u5f55\nvar currentDirectory = Environment.CurrentDirectory;\n\n// \u83b7\u53d6\u673a\u5668\u540d\u79f0\nvar machineName = Environment.MachineName;\n\n// \u7b49\u7b49\u3002\u3002\u3002\u3002\u3002\n")),(0,r.kt)("h2",{id:"377-\u53cd\u9988\u4e0e\u5efa\u8bae"},"37.7 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,r.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/afaad682.589fc9d1.js b/handbook/build/assets/js/afaad682.589fc9d1.js new file mode 100644 index 00000000000..374ee5800e2 --- /dev/null +++ b/handbook/build/assets/js/afaad682.589fc9d1.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[7194],{3905:function(e,n,t){t.d(n,{Zo:function(){return p},kt:function(){return m}});var r=t(7294);function o(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function a(e){for(var n=1;n=0||(o[t]=e[t]);return o}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(o[t]=e[t])}return o}var u=r.createContext({}),c=function(e){var n=r.useContext(u),t=n;return e&&(t="function"==typeof e?e(n):a(a({},n),e)),t},p=function(e){var n=c(e.components);return r.createElement(u.Provider,{value:n},e.children)},s={inlineCode:"code",wrapper:function(e){var n=e.children;return r.createElement(r.Fragment,{},n)}},f=r.forwardRef((function(e,n){var t=e.components,o=e.mdxType,i=e.originalType,u=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),f=c(t),m=o,g=f["".concat(u,".").concat(m)]||f[m]||s[m]||i;return t?r.createElement(g,a(a({ref:n},p),{},{components:t})):r.createElement(g,a({ref:n},p))}));function m(e,n){var t=arguments,o=n&&n.mdxType;if("string"==typeof e||o){var i=t.length,a=new Array(i);a[0]=f;var l={};for(var u in n)hasOwnProperty.call(n,u)&&(l[u]=n[u]);l.originalType=e,l.mdxType="string"==typeof e?e:o,a[1]=l;for(var c=2;c();\n Console.WriteLine(helloService.SayHello());\n\n Console.WriteLine("=============");\n\n var baidu = "https://www.baidu.com".GetAsStringAsync().GetAwaiter().GetResult();\n Console.WriteLine(baidu);\n }\n }\n\n public interface IHelloService\n {\n string SayHello();\n }\n public class HelloService : IHelloService, ITransient\n {\n public string SayHello()\n {\n return "Hello Furion.";\n }\n }\n}\n')),(0,i.kt)("p",null,"\u4ee5\u4e0a\u4ee3\u7801\u901a\u8fc7 ",(0,i.kt)("inlineCode",{parentName:"p"},"var services = Inject.Create();")," \u521b\u5efa\u4e00\u4e2a\u670d\u52a1\u96c6\u5408\uff0c\u6700\u540e\u901a\u8fc7 ",(0,i.kt)("inlineCode",{parentName:"p"},"services.Build()")," \u5373\u53ef\u5b8c\u6210\u521d\u59cb\u5316\u3002"))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/afaad682.6de1727a.js b/handbook/build/assets/js/afaad682.6de1727a.js deleted file mode 100644 index 26ec02830d5..00000000000 --- a/handbook/build/assets/js/afaad682.6de1727a.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[7194],{3905:function(e,n,t){t.d(n,{Zo:function(){return p},kt:function(){return m}});var r=t(7294);function o(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function a(e){for(var n=1;n=0||(o[t]=e[t]);return o}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(o[t]=e[t])}return o}var c=r.createContext({}),u=function(e){var n=r.useContext(c),t=n;return e&&(t="function"==typeof e?e(n):a(a({},n),e)),t},p=function(e){var n=u(e.components);return r.createElement(c.Provider,{value:n},e.children)},s={inlineCode:"code",wrapper:function(e){var n=e.children;return r.createElement(r.Fragment,{},n)}},f=r.forwardRef((function(e,n){var t=e.components,o=e.mdxType,i=e.originalType,c=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),f=u(t),m=o,g=f["".concat(c,".").concat(m)]||f[m]||s[m]||i;return t?r.createElement(g,a(a({ref:n},p),{},{components:t})):r.createElement(g,a({ref:n},p))}));function m(e,n){var t=arguments,o=n&&n.mdxType;if("string"==typeof e||o){var i=t.length,a=new Array(i);a[0]=f;var l={};for(var c in n)hasOwnProperty.call(n,c)&&(l[c]=n[c]);l.originalType=e,l.mdxType="string"==typeof e?e:o,a[1]=l;for(var u=2;u();\n Console.WriteLine(helloService.SayHello());\n\n Console.WriteLine("=============");\n\n var baidu = "https://www.baidu.com".GetAsStringAsync().GetAwaiter().GetResult();\n Console.WriteLine(baidu);\n }\n }\n\n public interface IHelloService\n {\n string SayHello();\n }\n public class HelloService : IHelloService, ITransient\n {\n public string SayHello()\n {\n return "Hello Furion.";\n }\n }\n}\n')),(0,i.kt)("p",null,"\u4ee5\u4e0a\u4ee3\u7801\u901a\u8fc7 ",(0,i.kt)("inlineCode",{parentName:"p"},"var services = Inject.Create();")," \u521b\u5efa\u4e00\u4e2a\u670d\u52a1\u96c6\u5408\uff0c\u6700\u540e\u901a\u8fc7 ",(0,i.kt)("inlineCode",{parentName:"p"},"services.Build()")," \u5373\u53ef\u5b8c\u6210\u521d\u59cb\u5316\u3002"))}f.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/b0352e4c.7241b100.js b/handbook/build/assets/js/b0352e4c.87162817.js similarity index 73% rename from handbook/build/assets/js/b0352e4c.7241b100.js rename to handbook/build/assets/js/b0352e4c.87162817.js index 19f8ce0140e..71abd6a84f0 100644 --- a/handbook/build/assets/js/b0352e4c.7241b100.js +++ b/handbook/build/assets/js/b0352e4c.87162817.js @@ -1 +1 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[1912],{3905:function(e,n,t){t.d(n,{Zo:function(){return u},kt:function(){return f}});var r=t(7294);function o(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function c(e){for(var n=1;n=0||(o[t]=e[t]);return o}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(o[t]=e[t])}return o}var p=r.createContext({}),l=function(e){var n=r.useContext(p),t=n;return e&&(t="function"==typeof e?e(n):c(c({},n),e)),t},u=function(e){var n=l(e.components);return r.createElement(p.Provider,{value:n},e.children)},s={inlineCode:"code",wrapper:function(e){var n=e.children;return r.createElement(r.Fragment,{},n)}},d=r.forwardRef((function(e,n){var t=e.components,o=e.mdxType,i=e.originalType,p=e.parentName,u=a(e,["components","mdxType","originalType","parentName"]),d=l(t),f=o,y=d["".concat(p,".").concat(f)]||d[f]||s[f]||i;return t?r.createElement(y,c(c({ref:n},u),{},{components:t})):r.createElement(y,c({ref:n},u))}));function f(e,n){var t=arguments,o=n&&n.mdxType;if("string"==typeof e||o){var i=t.length,c=new Array(i);c[0]=d;var a={};for(var p in n)hasOwnProperty.call(n,p)&&(a[p]=n[p]);a.originalType=e,a.mdxType="string"==typeof e?e:o,c[1]=a;for(var l=2;l=0||(o[t]=e[t]);return o}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(o[t]=e[t])}return o}var p=r.createContext({}),l=function(e){var n=r.useContext(p),t=n;return e&&(t="function"==typeof e?e(n):c(c({},n),e)),t},u=function(e){var n=l(e.components);return r.createElement(p.Provider,{value:n},e.children)},s={inlineCode:"code",wrapper:function(e){var n=e.children;return r.createElement(r.Fragment,{},n)}},d=r.forwardRef((function(e,n){var t=e.components,o=e.mdxType,i=e.originalType,p=e.parentName,u=a(e,["components","mdxType","originalType","parentName"]),d=l(t),f=o,y=d["".concat(p,".").concat(f)]||d[f]||s[f]||i;return t?r.createElement(y,c(c({ref:n},u),{},{components:t})):r.createElement(y,c({ref:n},u))}));function f(e,n){var t=arguments,o=n&&n.mdxType;if("string"==typeof e||o){var i=t.length,c=new Array(i);c[0]=d;var a={};for(var p in n)hasOwnProperty.call(n,p)&&(a[p]=n[p]);a.originalType=e,a.mdxType="string"==typeof e?e:o,c[1]=a;for(var l=2;l=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var d=r.createContext({}),p=function(e){var t=r.useContext(d),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},s=function(e){var t=p(e.components);return r.createElement(d.Provider,{value:t},e.children)},c={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},u=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,i=e.originalType,d=e.parentName,s=o(e,["components","mdxType","originalType","parentName"]),u=p(n),m=a,g=u["".concat(d,".").concat(m)]||u[m]||c[m]||i;return n?r.createElement(g,l(l({ref:t},s),{},{components:n})):r.createElement(g,l({ref:t},s))}));function m(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,l=new Array(i);l[0]=u;var o={};for(var d in t)hasOwnProperty.call(t,d)&&(o[d]=t[d]);o.originalType=e,o.mdxType="string"==typeof e?e:a,l[1]=o;for(var p=2;pSqlSugar \u670d\u52a1",id:"10121-\u6ce8\u518c-sqlsugar-\u670d\u52a1",children:[]}]},{value:"10.1.3 \u57fa\u672c\u4f7f\u7528",id:"1013-\u57fa\u672c\u4f7f\u7528",children:[]},{value:"10.1.4 \u6570\u636e\u5e93\u64cd\u4f5c\u793a\u4f8b",id:"1014-\u6570\u636e\u5e93\u64cd\u4f5c\u793a\u4f8b",children:[]},{value:"10.1.5 SqlSugarClient \u64cd\u4f5c\u793a\u4f8b",id:"1015-sqlsugarclient-\u64cd\u4f5c\u793a\u4f8b",children:[{value:"10.1.5.1 \u57fa\u7840\u67e5\u8be2",id:"10151-\u57fa\u7840\u67e5\u8be2",children:[]},{value:"10.1.5.2 \u8054\u8868\u67e5\u8be2",id:"10152-\u8054\u8868\u67e5\u8be2",children:[]},{value:"10.1.5.3 \u5206\u9875\u67e5\u8be2",id:"10153-\u5206\u9875\u67e5\u8be2",children:[]},{value:"10.1.5.4 \u63d2\u5165",id:"10154-\u63d2\u5165",children:[]},{value:"10.1.5.5 \u66f4\u65b0",id:"10155-\u66f4\u65b0",children:[]},{value:"10.1.5.6 \u5220\u9664",id:"10156-\u5220\u9664",children:[]}]},{value:"10.1.6 Sql \u67e5\u8be2",id:"1016-sql-\u67e5\u8be2",children:[]},{value:"10.1.7 \u6253\u5370 sql \u5230 Swagger",id:"1017-\u6253\u5370-sql-\u5230-swagger",children:[]},{value:"10.1.8 Oracle\u6ce8\u610f\u4e8b\u9879",id:"1018-oracle\u6ce8\u610f\u4e8b\u9879",children:[]},{value:"10.1.9 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"1019-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],c={toc:s};function u(e){var t=e.components,n=(0,a.Z)(e,l);return(0,i.kt)("wrapper",(0,r.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"1011-\u5173\u4e8e-sqlsugar"},"10.1.1 \u5173\u4e8e SqlSugar"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"SqlSugar")," \u662f .NET/C# \u5e73\u53f0\u975e\u5e38\u4f18\u79c0\u7684 ",(0,i.kt)("inlineCode",{parentName:"p"},"ORM")," \u6846\u67b6\uff0c\u76ee\u524d ",(0,i.kt)("inlineCode",{parentName:"p"},"Nuget")," \u603b\u4e0b\u8f7d\u7a81\u7834 700K\uff0cGithub \u5173\u6ce8\u91cf\u4e5f\u9ad8\u8fbe 3.2K\uff0c\u662f\u76ee\u524d\u5f53\u4e4b\u65e0\u6127\u7684\u56fd\u4ea7\u4f18\u79c0 ORM \u6846\u67b6\u4e4b\u4e00\u3002"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"SqlSugar")," \u5b98\u65b9\u5730\u5740\uff1a",(0,i.kt)("a",{parentName:"p",href:"http://www.donet5.com/"},"http://www.donet5.com/")),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"SqlSugar")," \u4e0e EF \u4f18\u52bf\uff1a \u6027\u80fd\u6bd4 EF \u66f4\u5feb\u3001\u8bed\u6cd5\u4e0a\u624b\u66f4\u5bb9\u6613"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"SqlSugar")," \u4e0e Dapper \u4f18\u52bf\uff1a SqlSugar \u529f\u80fd\u66f4\u52a0\u4e30\u5bcc\uff0c\u6027\u80fd\u4e1d\u6beb\u4e0d\u900a\u8272\u4e8e Dapper\uff0c\u5e76\u4e14\u6279\u91cf\u64cd\u4f5c\u6027\u80fd\u66f4\u597d"),(0,i.kt)("h2",{id:"1012-\u5982\u4f55\u96c6\u6210"},"10.1.2 \u5982\u4f55\u96c6\u6210"),(0,i.kt)("p",null,"\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\uff0c\u5df2\u7ecf\u63a8\u51fa ",(0,i.kt)("inlineCode",{parentName:"p"},"SqlSugar")," \u62d3\u5c55\u5305 ",(0,i.kt)("a",{parentName:"p",href:"https://www.nuget.org/packages/Furion.Extras.DatabaseAccessor.SqlSugar"},"Furion.Extras.DatabaseAccessor.SqlSugar"),"\u3002"),(0,i.kt)("h3",{id:"10121-\u6ce8\u518c-sqlsugar-\u670d\u52a1"},"10.1.2.1 \u6ce8\u518c ",(0,i.kt)("inlineCode",{parentName:"h3"},"SqlSugar")," \u670d\u52a1"),(0,i.kt)("p",null,"\u4f7f\u7528\u975e\u5e38\u7b80\u5355\uff0c\u53ea\u9700\u8981\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Startup.cs")," \u4e2d\u6dfb\u52a0 ",(0,i.kt)("inlineCode",{parentName:"p"},"services.AddSqlSugar(config)")," \u5373\u53ef\u3002\u5982\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// =====\u914d\u7f6e\u5355\u5e93=====\nservices.AddSqlSugar(new ConnectionConfig\n{\n ConnectionString = "Server=.xxxxx",//\u8fde\u63a5\u7b26\u5b57\u4e32\n DbType = DbType.SqlServer,\n IsAutoCloseConnection = true,\n InitKeyType = InitKeyType.Attribute//\u4ece\u7279\u6027\u8bfb\u53d6\u4e3b\u952e\u81ea\u589e\u4fe1\u606f\n});\n\n// =====\u914d\u7f6e\u591a\u5e93=====\nList connectConfigList = new List();\n//\u6570\u636e\u5e931\nconnectConfigList.Add(new ConnectionConfig\n{\n ConnectionString = "\u94fe\u63a5\u5b57\u7b26\u4e321",\n DbType = DbType.MySql,\n IsAutoCloseConnection = true,\n InitKeyType = InitKeyType.Attribute,\n ConfigId = "0",\n AopEvents = new AopEvents\n {\n //\u591a\u5e93\u72b6\u6001\u4e0b\u6bcf\u4e2a\u5e93\u5fc5\u987b\u5355\u72ec\u7ed1\u5b9a\u6253\u5370\u4e8b\u4ef6\uff0c\u5426\u5219\u53ea\u4f1a\u6253\u5370\u7b2c\u4e00\u4e2a\u5e93\u7684sql\u65e5\u5fd7\n OnLogExecuting = (sql, pars) =>\n {\n Console.WriteLine(SqlProfiler.ParameterFormat(sql, pars));\n Console.WriteLine();\n }\n }\n});\n//\u6570\u636e\u5e932\nconnectConfigList.Add(new ConnectionConfig\n{\n ConnectionString = "\u94fe\u63a5\u5b57\u7b26\u4e322",\n DbType = DbType.MySql,\n IsAutoCloseConnection = true,\n InitKeyType = InitKeyType.Attribute,\n ConfigId = "1",\n AopEvents = new AopEvents\n {\n //\u591a\u5e93\u72b6\u6001\u4e0b\u6bcf\u4e2a\u5e93\u5fc5\u987b\u5355\u72ec\u7ed1\u5b9a\u6253\u5370\u4e8b\u4ef6\uff0c\u5426\u5219\u53ea\u4f1a\u6253\u5370\u7b2c\u4e00\u4e2a\u5e93\u7684sql\u65e5\u5fd7\n OnLogExecuting = (sql, pars) =>\n {\n Console.WriteLine(SqlProfiler.ParameterFormat(sql, pars));\n Console.WriteLine();\n }\n }\n});\nservices.AddSqlSugar(connectConfigList.ToArray());\n')),(0,i.kt)("p",null,"\u540c\u65f6\u4e5f\u53ef\u4ee5\u6dfb\u52a0\u66f4\u591a\u914d\u7f6e\uff0c\u5982\uff1a\nps\uff1a\u591a\u5e93\u72b6\u6001\u4e0b\u6bcf\u4e2a\u5e93\u5fc5\u987b\u5355\u72ec\u7ed1\u5b9a\u6253\u5370\u4e8b\u4ef6\uff0c\u5426\u5219\u53ea\u4f1a\u6253\u5370\u7b2c\u4e00\u4e2a\u5e93\u7684sql\u65e5\u5fd7\uff08\u53c2\u8003\u4e0a\u9762\u7684\u591a\u5e93\u914d\u7f6e\uff09"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'services.AddSqlSugar(connectConfigList.ToArray(),\ndb =>\n{\n //\u5904\u7406\u65e5\u5fd7\u4e8b\u52a1\n db.Aop.OnLogExecuting = (sql, pars) =>\n {\n Console.WriteLine(sql);\n Console.WriteLine(string.Join(",", pars?.Select(it => it.ParameterName + ":" + it.Value)));\n Console.WriteLine();\n App.PrintToMiniProfiler("SqlSugar", "Info", sql + "\\r\\n" + db.Utilities.SerializeObject(pars.ToDictionary(it => it.ParameterName, it => it.Value)));\n };\n});\n')),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u5b89\u88c5\u62d3\u5c55\u5305\u4f4d\u7f6e")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\uff0c\u63a8\u8350\u5c06\u62d3\u5c55\u5305 ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion.Extras.DatabaseAccessor.SqlSugar")," \u5b89\u88c5\u5230 ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion.Core")," \u5c42\u4e2d\u3002"))),(0,i.kt)("h2",{id:"1013-\u57fa\u672c\u4f7f\u7528"},"10.1.3 \u57fa\u672c\u4f7f\u7528"),(0,i.kt)("p",null,"\u5728\u4f7f\u7528\u4e4b\u524d\uff0c\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7\u6784\u9020\u51fd\u6570\u6ce8\u5165 ",(0,i.kt)("inlineCode",{parentName:"p"},"ISqlSugarRepository")," \u63a5\u53e3\uff0c\u5982\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,6}","{1,6}":!0},"private readonly ISqlSugarRepository repository; // \u4ed3\u50a8\u5bf9\u8c61\uff1a\u5c01\u88c5\u7b80\u5355\u7684CRUD\nprivate readonly SqlSugarClient db; // \u6838\u5fc3\u5bf9\u8c61\uff1a\u62e5\u6709\u5b8c\u6574\u7684SqlSugar\u5168\u90e8\u529f\u80fd\npublic PersonService(ISqlSugarRepository sqlSugarRepository)\n{\n repository = sqlSugarRepository;\n db = repository.Context; // \u63a8\u8350\u64cd\u4f5c\n}\n")),(0,i.kt)("h2",{id:"1014-\u6570\u636e\u5e93\u64cd\u4f5c\u793a\u4f8b"},"10.1.4 \u6570\u636e\u5e93\u64cd\u4f5c\u793a\u4f8b"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// ================== SqlSugarClient ================\n\n//\u67e5\u8be2\u529f\u80fd\nvar data1 =db.Queryable().First(it=>it.Id==1); //db.GetById(1);\n\nvar data2 = db.Queryable().ToList();// db.GetList();\n\n// ================== \u7b80\u5355\u4ed3\u50a8 ================\n\n//\u63d2\u5165\nrepository.Insert(insertObj);\nvar id = repository.InsertReturnIdentity(insertObj);\nrepository.AsInsertable(insertObj).ExecuteCommand();\n\n//\u5220\u9664\nrepository.Delete(insertObj);\nrepository.Delete(it => it.Id == 1);\n\n//\u66f4\u65b0\nrepository.Update(insertObj);\nrepository.Update(it => new Order() { Name = "a", }, it => it.Id == 1);\n\n//\u5f02\u6b65\u65b9\u6cd5\u7528\u6cd5\nrepository.Insert(insertObj);//\u540c\u6b65\nrepository.InsertAsync(insertObj);//\u5f02\u6b65\n\n//\u5207\u6362\u4ed3\u50a8\nvar orderRespository=db.GetSimpleClient();\norderRespository.Insert(Order);\n')),(0,i.kt)("h2",{id:"1015-sqlsugarclient-\u64cd\u4f5c\u793a\u4f8b"},"10.1.5 SqlSugarClient \u64cd\u4f5c\u793a\u4f8b"),(0,i.kt)("h3",{id:"10151-\u57fa\u7840\u67e5\u8be2"},"10.1.5.1 \u57fa\u7840\u67e5\u8be2"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'//\u67e5\u8be2\u6240\u6709\nvar getAll = db.Queryable().ToList();\n//\u67e5\u8be2\u524d10\nvar top10= db.Queryable().Take(10).ToList();\n//\u67e5\u8be2\u5355\u6761\nvar getFirst = db.Queryable().First(it=>it.Id==1);\n//with nolock\nvar getAllNoLock = db.Queryable().With(SqlWith.NoLock).ToList();\n//\u6839\u636e\u4e3b\u952e\u67e5\u8be2\nvar getByPrimaryKey = db.Queryable().InSingle(2);\n//\u67e5\u8be2\u603b\u548c\nvar sum = db.Queryable().Sum(it=>it.Id);\n//\u662f\u5426\u5b58\u5728\nvar isAny = db.Queryable().Where(it=>it.Id==-1).Any();\n//\u6a21\u7cca\u67e5\nvar list2 = db.Queryable().Where(it =>it.Name.Contains("jack")).ToList();\n')),(0,i.kt)("h3",{id:"10152-\u8054\u8868\u67e5\u8be2"},"10.1.5.2 \u8054\u8868\u67e5\u8be2"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"var list = db.Queryable((st, sc) => new JoinQueryInfos(\n JoinType.Left,st.SchoolId==sc.Id))\n .Select((st,sc)=>new{Id=st.Id,Name=st.Name,SchoolName=sc.Name}).ToList();\n\n\u751f\u6210\u7684Sql\u5982\u4e0b:\nSELECT [st].[ID] AS [id] ,\n [st].[Name] AS [name] ,\n [sc].[Name] AS [schoolName] FROM [STudent] st\n Left JOIN School sc ON ( [st].[SchoolId] =[sc].[Id])\n")),(0,i.kt)("h3",{id:"10153-\u5206\u9875\u67e5\u8be2"},"10.1.5.3 \u5206\u9875\u67e5\u8be2"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"}," int pageIndex = 1;\n int pageSize = 20;\n int totalCount=0;\n var page = db.Queryable().ToPageList(pageIndex, pageSize, ref totalCount);\n")),(0,i.kt)("p",null,"\u66f4\u591a\u67e5\u8be2\u7528\u6cd5 \uff1a ",(0,i.kt)("a",{parentName:"p",href:"http://www.donet5.com/Home/Doc?typeId=1185"},"http://www.donet5.com/Home/Doc?typeId=1185")),(0,i.kt)("h3",{id:"10154-\u63d2\u5165"},"10.1.5.4 \u63d2\u5165"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'//\u53ef\u4ee5\u662f \u7c7b \u6216\u8005 List<\u7c7b>\ndb.Insertable(insertObj).ExecuteCommand();\n\n//\u63d2\u5165\u8fd4\u56de\u81ea\u589e\u5217\ndb.Insertable(insertObj).ExecuteReturnIdentity();\n\n//\u53ef\u4ee5\u662f Dictionary \u6216\u8005 List\nvar dc= new Dictionary();\n dt.Add("name", "1");\n dt.Add("CreateTime", null);\ndb.Insertable(dc).AS("student").ExecuteCommand();\n\n//DataTable\u63d2\u5165\nDictionary dc= db.Utilities.DataTableToDictionary(dataTable);//\u8f6c\u6210\u5b57\u5178\u5c31\u53ef\u4ee5\u6309\u4e0a\u9762\u7684\u5b57\u5178\u66f4\u65b0\u4e86\ndb.Insertable(dc).AS("student").ExecuteReturnIdentity();\n\n//\u5b9e\u4f53\u53ef\u4ee5\u914d\u7f6e\u4e3b\u952e\u548c\u81ea\u589e\u5217\npublic class Student\n{\n [SugarColumn(IsPrimaryKey = true, IsIdentity = true)]\n public int Id { get; set; }\n public int? SchoolId { get; set; }\n public string Name { get; set; }\n}\n')),(0,i.kt)("p",null,"\u66f4\u591a\u63d2\u5165\u7528\u6cd5\uff1a ",(0,i.kt)("a",{parentName:"p",href:"http://www.donet5.com/Home/Doc?typeId=1193"},"http://www.donet5.com/Home/Doc?typeId=1193")),(0,i.kt)("h3",{id:"10155-\u66f4\u65b0"},"10.1.5.5 \u66f4\u65b0"),(0,i.kt)("p",null,"\u5b9e\u4f53\u914d\u7f6e\u53c2\u8003\u63d2\u5165\uff0c\u53ea\u9700\u8981\u914d\u7f6e\u4e3b\u952e\u5373\u53ef"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'//\u6839\u636e\u4e3b\u952e\u66f4\u65b0\u5355\u6761 \u53c2\u6570 Class\nvar result= db.Updateable(updateObj).ExecuteCommand();\n//\u4e0d\u66f4\u65b0 Name \u548cTestId\nvar result=db.Updateable(updateObj).IgnoreColumns(it => new { it.CreateTime,it.TestId }).ExecuteCommand()\n//\u53ea\u66f4\u65b0 Name \u548c CreateTime\nvar result=db.Updateable(updateObj).UpdateColumns(it => new { it.Name,it.CreateTime }).ExecuteCommand();\n//\u6839\u636e\u8868\u8fbe\u5f0f\u66f4\u65b0\nvar result71 = db.Updateable()\n .SetColumns(it => it.Name == "a")\n .SetColumnsIF(p!=null ,it => it.CreateTime == p.Value)//\u5f53p\u4e0d\u7b49\u4e8enull\u66f4\u65b0createtime\u5217\n .Where(it => it.Id == 11).ExecuteCommand();\n')),(0,i.kt)("p",null,"\u66f4\u591a\u66f4\u65b0\u7528\u6cd5\uff1a ",(0,i.kt)("a",{parentName:"p",href:"http://www.donet5.com/Home/Doc?typeId=1191"},"http://www.donet5.com/Home/Doc?typeId=1191")),(0,i.kt)("h3",{id:"10156-\u5220\u9664"},"10.1.5.6 \u5220\u9664"),(0,i.kt)("p",null,"\u5b9e\u4f53\u914d\u7f6e\u53c2\u8003\u63d2\u5165\uff0c\u53ea\u9700\u8981\u914d\u7f6e\u4e3b\u952e\u5373\u53ef"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"//\u6839\u636e\u5b9e\u4f53\u5220\u9664\ndb.Deleteable().Where(new Student() { Id = 1 }).ExecuteCommand();\n//\u6839\u636e\u4e3b\u952e\u5220\u9664\ndb.Deleteable().In(1).ExecuteCommand();\n//\u6839\u636e\u8868\u8fbe\u5f0f\u5220\u9664\ndb.Deleteable().Where(it => it.Id == 1).ExecuteCommand();\n")),(0,i.kt)("p",null,"\u66f4\u591a\u5220\u9664\u7528\u6cd5: ",(0,i.kt)("a",{parentName:"p",href:"http://www.donet5.com/Home/Doc?typeId=1195"},"http://www.donet5.com/Home/Doc?typeId=1195")),(0,i.kt)("h2",{id:"1016-sql-\u67e5\u8be2"},"10.1.6 Sql \u67e5\u8be2"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'//sql\u5206\u9875\nvar list = db.SqlQueryable("select * from student").ToPageList(1, 2,ref total);\n\n//\u539f\u751fSql\u7528\u6cd5\nvar dt=db.Ado.GetDataTable("select * from table where id=@id and name=@name",new List(){\n new SugarParameter("@id",1),\n new SugarParameter("@name",2)\n});\n//\u53c2\u65702\nvar dt=db.Ado.GetDataTable("select * from table where id=@id and name=@name",new{id=1,name=2});\n\n//\u5b58\u50a8\u8fc7\u7a0b\u7528\u6cd5\nvar nameP= new SugarParameter("@name", "\u5f20\u4e09");\nvar ageP= new SugarParameter("@age", null, true);//\u8bbe\u7f6e\u4e3aoutput\nvar dt = db.Ado.UseStoredProcedure().GetDataTable("sp_school",nameP,ageP);\n\n')),(0,i.kt)("table",null,(0,i.kt)("thead",{parentName:"table"},(0,i.kt)("tr",{parentName:"thead"},(0,i.kt)("th",{parentName:"tr",align:"center"},"\u65b9\u6cd5\u540d"),(0,i.kt)("th",{parentName:"tr",align:"center"},"\u63cf\u8ff0"),(0,i.kt)("th",{parentName:"tr",align:"center"},"\u8fd4\u56de\u503c"))),(0,i.kt)("tbody",{parentName:"table"},(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:"center"},"SqlQuery< T >"),(0,i.kt)("td",{parentName:"tr",align:"center"},"\u67e5\u8be2\u6240\u6709\u8fd4\u56de\u5b9e\u4f53\u96c6\u5408"),(0,i.kt)("td",{parentName:"tr",align:"center"},"List")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:"center"},"SqlQuery"),(0,i.kt)("td",{parentName:"tr",align:"center"},"\u53ef\u4ee5\u8fd4\u56de 2 \u4e2a\u7ed3\u679c\u96c6"),(0,i.kt)("td",{parentName:"tr",align:"center"},"Tuple")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:"center"},"SqlQuerySingle"),(0,i.kt)("td",{parentName:"tr",align:"center"},"\u67e5\u8be2\u7b2c\u4e00\u6761\u8bb0\u5f55"),(0,i.kt)("td",{parentName:"tr",align:"center"},"T")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:"center"},"GetDataTable"),(0,i.kt)("td",{parentName:"tr",align:"center"},"\u67e5\u8be2\u6240\u6709"),(0,i.kt)("td",{parentName:"tr",align:"center"},"DataTable")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:"center"},"GetDataReader"),(0,i.kt)("td",{parentName:"tr",align:"center"},"\u8bfb\u53d6 DR \u9700\u8981\u624b\u52a8\u91ca\u653e DR"),(0,i.kt)("td",{parentName:"tr",align:"center"},"DataReader")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:"center"},"GetDataSetAll"),(0,i.kt)("td",{parentName:"tr",align:"center"},"\u83b7\u53d6\u591a\u4e2a\u7ed3\u679c\u96c6"),(0,i.kt)("td",{parentName:"tr",align:"center"},"DataSet")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:"center"},"ExecuteCommand"),(0,i.kt)("td",{parentName:"tr",align:"center"},"\u8fd4\u56de\u53d7\u5f71\u54cd\u884c\u6570\uff0c\u4e00\u822c\u7528\u4e8e\u589e\u5220\u6539"),(0,i.kt)("td",{parentName:"tr",align:"center"},"int")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:"center"},"GetScalar"),(0,i.kt)("td",{parentName:"tr",align:"center"},"\u83b7\u53d6\u9996\u884c\u9996\u5217"),(0,i.kt)("td",{parentName:"tr",align:"center"},"object")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:"center"},"GetString"),(0,i.kt)("td",{parentName:"tr",align:"center"},"\u83b7\u53d6\u9996\u884c\u9996\u5217"),(0,i.kt)("td",{parentName:"tr",align:"center"},"string")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:"center"},"GetInt"),(0,i.kt)("td",{parentName:"tr",align:"center"},"\u83b7\u53d6\u9996\u884c\u9996\u5217"),(0,i.kt)("td",{parentName:"tr",align:"center"},"int")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:"center"},"GetLong"),(0,i.kt)("td",{parentName:"tr",align:"center"},"\u83b7\u53d6\u9996\u884c\u9996\u5217"),(0,i.kt)("td",{parentName:"tr",align:"center"},"long")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:"center"},"GetDouble"),(0,i.kt)("td",{parentName:"tr",align:"center"},"\u83b7\u53d6\u9996\u884c\u9996\u5217"),(0,i.kt)("td",{parentName:"tr",align:"center"},"Double")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:"center"},"GetDecimal"),(0,i.kt)("td",{parentName:"tr",align:"center"},"\u83b7\u53d6\u9996\u884c\u9996\u5217"),(0,i.kt)("td",{parentName:"tr",align:"center"},"Decimal")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:"center"},"GetDateTime"),(0,i.kt)("td",{parentName:"tr",align:"center"},"\u83b7\u53d6\u9996\u884c\u9996\u5217"),(0,i.kt)("td",{parentName:"tr",align:"center"},"DateTime")))),(0,i.kt)("p",null,"\u60f3\u4e86\u89e3\u66f4\u591a ",(0,i.kt)("inlineCode",{parentName:"p"},"SqlSugar")," \u77e5\u8bc6\u53ef\u67e5\u9605 ",(0,i.kt)("a",{parentName:"p",href:"http://donet5.com/"},"SqlSugar \u5b98\u7f51"),"\u3002"),(0,i.kt)("h2",{id:"1017-\u6253\u5370-sql-\u5230-swagger"},"10.1.7 \u6253\u5370 ",(0,i.kt)("inlineCode",{parentName:"h2"},"sql")," \u5230 ",(0,i.kt)("inlineCode",{parentName:"h2"},"Swagger")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'services.AddSqlSugar(new ConnectionConfig\n{\n ConnectionString = "Server=.xxxxx",//\u8fde\u63a5\u7b26\u5b57\u4e32\n DbType = DbType.SqlServer,\n IsAutoCloseConnection = true,\n InitKeyType = InitKeyType.Attribute//\u4ece\u7279\u6027\u8bfb\u53d6\u4e3b\u952e\u81ea\u589e\u4fe1\u606f\n},\ndb =>\n{\n db.Aop.OnLogExecuting = (sql, pars) =>\n {\n //\u65b9\u6cd5\u4e00\n App.PrintToMiniProfiler("SqlSugar", "Info", sql + "\\r\\n" +string.Join(",", pars?.Select(it => it.ParameterName + ":" + it.Value)));\n\n //\u65b9\u6cd5\u4e8c:Furion\u5bf9\u4e0a\u8ff0\u7528\u6cd5\u8fdb\u884c\u4e8c\u6b21\u5c01\u88c5 \u5efa\u8bae\u65b9\u5f0f Sql\u53c2\u6570\u4f1a\u76f4\u63a5\u5199\u5165\u5230\u751f\u6210Sql\u4e2d\n App.PrintToMiniProfiler("SqlSugar","Info",SqlProfiler.ParameterFormat(sql,pars));\n };\n});\n')),(0,i.kt)("h2",{id:"1018-oracle\u6ce8\u610f\u4e8b\u9879"},"10.1.8 ",(0,i.kt)("inlineCode",{parentName:"h2"},"Oracle"),"\u6ce8\u610f\u4e8b\u9879"),(0,i.kt)("p",null,"\u6ce8\u610f .NET5 \u7528\u6237\u9700\u8981\u5728 API \u6216\u8005\u9879\u76ee\u89e3\u51b3\u65b9\u6848 ",(0,i.kt)("inlineCode",{parentName:"p"},".csproj")," \u6587\u4ef6\u52a0\u4ee5\u4e0b\u4e00\u884c\u4ee3\u7801\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{3}","{3}":!0},"\n net5.0\n true\n\n")),(0,i.kt)("h2",{id:"1019-\u53cd\u9988\u4e0e\u5efa\u8bae"},"10.1.9 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,i.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/b40312ef.e097c5e3.js b/handbook/build/assets/js/b40312ef.e097c5e3.js deleted file mode 100644 index 899651a9d99..00000000000 --- a/handbook/build/assets/js/b40312ef.e097c5e3.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[5393],{3905:function(e,t,n){n.d(t,{Zo:function(){return s},kt:function(){return m}});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function l(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var d=a.createContext({}),p=function(e){var t=a.useContext(d),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},s=function(e){var t=p(e.components);return a.createElement(d.Provider,{value:t},e.children)},c={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},u=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,d=e.parentName,s=o(e,["components","mdxType","originalType","parentName"]),u=p(n),m=r,g=u["".concat(d,".").concat(m)]||u[m]||c[m]||i;return n?a.createElement(g,l(l({ref:t},s),{},{components:n})):a.createElement(g,l({ref:t},s))}));function m(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,l=new Array(i);l[0]=u;var o={};for(var d in t)hasOwnProperty.call(t,d)&&(o[d]=t[d]);o.originalType=e,o.mdxType="string"==typeof e?e:r,l[1]=o;for(var p=2;pSqlSugar \u670d\u52a1",id:"10121-\u6ce8\u518c-sqlsugar-\u670d\u52a1",children:[]}]},{value:"10.1.3 \u57fa\u672c\u4f7f\u7528",id:"1013-\u57fa\u672c\u4f7f\u7528",children:[]},{value:"10.1.4 \u6570\u636e\u5e93\u64cd\u4f5c\u793a\u4f8b",id:"1014-\u6570\u636e\u5e93\u64cd\u4f5c\u793a\u4f8b",children:[]},{value:"10.1.5 SqlSugarClient \u64cd\u4f5c\u793a\u4f8b",id:"1015-sqlsugarclient-\u64cd\u4f5c\u793a\u4f8b",children:[{value:"10.1.5.1 \u57fa\u7840\u67e5\u8be2",id:"10151-\u57fa\u7840\u67e5\u8be2",children:[]},{value:"10.1.5.2 \u8054\u8868\u67e5\u8be2",id:"10152-\u8054\u8868\u67e5\u8be2",children:[]},{value:"10.1.5.3 \u5206\u9875\u67e5\u8be2",id:"10153-\u5206\u9875\u67e5\u8be2",children:[]},{value:"10.1.5.4 \u63d2\u5165",id:"10154-\u63d2\u5165",children:[]},{value:"10.1.5.5 \u66f4\u65b0",id:"10155-\u66f4\u65b0",children:[]},{value:"10.1.5.6 \u5220\u9664",id:"10156-\u5220\u9664",children:[]}]},{value:"10.1.6 Sql \u67e5\u8be2",id:"1016-sql-\u67e5\u8be2",children:[]},{value:"10.1.7 \u6253\u5370 sql \u5230 Swagger",id:"1017-\u6253\u5370-sql-\u5230-swagger",children:[]},{value:"10.1.8 Oracle\u6ce8\u610f\u4e8b\u9879",id:"1018-oracle\u6ce8\u610f\u4e8b\u9879",children:[]},{value:"10.1.9 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"1019-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],c={toc:s};function u(e){var t=e.components,n=(0,r.Z)(e,l);return(0,i.kt)("wrapper",(0,a.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"1011-\u5173\u4e8e-sqlsugar"},"10.1.1 \u5173\u4e8e SqlSugar"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"SqlSugar")," \u662f .NET/C# \u5e73\u53f0\u975e\u5e38\u4f18\u79c0\u7684 ",(0,i.kt)("inlineCode",{parentName:"p"},"ORM")," \u6846\u67b6\uff0c\u76ee\u524d ",(0,i.kt)("inlineCode",{parentName:"p"},"Nuget")," \u603b\u4e0b\u8f7d\u7a81\u7834 700K\uff0cGithub \u5173\u6ce8\u91cf\u4e5f\u9ad8\u8fbe 3.2K\uff0c\u662f\u76ee\u524d\u5f53\u4e4b\u65e0\u6127\u7684\u56fd\u4ea7\u4f18\u79c0 ORM \u6846\u67b6\u4e4b\u4e00\u3002"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"SqlSugar")," \u5b98\u65b9\u5730\u5740\uff1a",(0,i.kt)("a",{parentName:"p",href:"http://www.donet5.com/"},"http://www.donet5.com/")),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"SqlSugar")," \u4e0e EF \u4f18\u52bf\uff1a \u6027\u80fd\u6bd4 EF \u66f4\u5feb\u3001\u8bed\u6cd5\u4e0a\u624b\u66f4\u5bb9\u6613"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"SqlSugar")," \u4e0e Dapper \u4f18\u52bf\uff1a SqlSugar \u529f\u80fd\u66f4\u52a0\u4e30\u5bcc\uff0c\u6027\u80fd\u4e1d\u6beb\u4e0d\u900a\u8272\u4e8e Dapper\uff0c\u5e76\u4e14\u6279\u91cf\u64cd\u4f5c\u6027\u80fd\u66f4\u597d"),(0,i.kt)("h2",{id:"1012-\u5982\u4f55\u96c6\u6210"},"10.1.2 \u5982\u4f55\u96c6\u6210"),(0,i.kt)("p",null,"\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\uff0c\u5df2\u7ecf\u63a8\u51fa ",(0,i.kt)("inlineCode",{parentName:"p"},"SqlSugar")," \u62d3\u5c55\u5305 ",(0,i.kt)("a",{parentName:"p",href:"https://www.nuget.org/packages/Furion.Extras.DatabaseAccessor.SqlSugar"},"Furion.Extras.DatabaseAccessor.SqlSugar"),"\u3002"),(0,i.kt)("h3",{id:"10121-\u6ce8\u518c-sqlsugar-\u670d\u52a1"},"10.1.2.1 \u6ce8\u518c ",(0,i.kt)("inlineCode",{parentName:"h3"},"SqlSugar")," \u670d\u52a1"),(0,i.kt)("p",null,"\u4f7f\u7528\u975e\u5e38\u7b80\u5355\uff0c\u53ea\u9700\u8981\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Startup.cs")," \u4e2d\u6dfb\u52a0 ",(0,i.kt)("inlineCode",{parentName:"p"},"services.AddSqlSugar(config)")," \u5373\u53ef\u3002\u5982\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// =====\u914d\u7f6e\u5355\u5e93=====\nservices.AddSqlSugar(new ConnectionConfig\n{\n ConnectionString = "Server=.xxxxx",//\u8fde\u63a5\u7b26\u5b57\u4e32\n DbType = DbType.SqlServer,\n IsAutoCloseConnection = true,\n InitKeyType = InitKeyType.Attribute//\u4ece\u7279\u6027\u8bfb\u53d6\u4e3b\u952e\u81ea\u589e\u4fe1\u606f\n});\n\n// =====\u914d\u7f6e\u591a\u5e93=====\nList connectConfigList = new List();\n//\u6570\u636e\u5e931\nconnectConfigList.Add(new ConnectionConfig\n{\n ConnectionString = "\u94fe\u63a5\u5b57\u7b26\u4e321",\n DbType = DbType.MySql,\n IsAutoCloseConnection = true,\n InitKeyType = InitKeyType.Attribute,\n ConfigId = "0"\n});\n//\u6570\u636e\u5e932\nconnectConfigList.Add(new ConnectionConfig\n{\n ConnectionString = "\u94fe\u63a5\u5b57\u7b26\u4e322",\n DbType = DbType.MySql,\n IsAutoCloseConnection = true,\n InitKeyType = InitKeyType.Attribute,\n ConfigId = "1"\n});\nservices.AddSqlSugar(connectConfigList.ToArray());\n')),(0,i.kt)("p",null,"\u540c\u65f6\u4e5f\u53ef\u4ee5\u6dfb\u52a0\u66f4\u591a\u914d\u7f6e\uff0c\u5982\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'services.AddSqlSugar(connectConfigList.ToArray(),\ndb =>\n{\n //\u5904\u7406\u65e5\u5fd7\u4e8b\u52a1\n db.Aop.OnLogExecuting = (sql, pars) =>\n {\n Console.WriteLine(sql);\n Console.WriteLine(string.Join(",", pars?.Select(it => it.ParameterName + ":" + it.Value)));\n Console.WriteLine();\n App.PrintToMiniProfiler("SqlSugar", "Info", sql + "\\r\\n" + db.Utilities.SerializeObject(pars.ToDictionary(it => it.ParameterName, it => it.Value)));\n };\n});\n')),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u5b89\u88c5\u62d3\u5c55\u5305\u4f4d\u7f6e")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\uff0c\u63a8\u8350\u5c06\u62d3\u5c55\u5305 ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion.Extras.DatabaseAccessor.SqlSugar")," \u5b89\u88c5\u5230 ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion.Core")," \u5c42\u4e2d\u3002"))),(0,i.kt)("h2",{id:"1013-\u57fa\u672c\u4f7f\u7528"},"10.1.3 \u57fa\u672c\u4f7f\u7528"),(0,i.kt)("p",null,"\u5728\u4f7f\u7528\u4e4b\u524d\uff0c\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7\u6784\u9020\u51fd\u6570\u6ce8\u5165 ",(0,i.kt)("inlineCode",{parentName:"p"},"ISqlSugarRepository")," \u63a5\u53e3\uff0c\u5982\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,6}","{1,6}":!0},"private readonly ISqlSugarRepository repository; // \u4ed3\u50a8\u5bf9\u8c61\uff1a\u5c01\u88c5\u7b80\u5355\u7684CRUD\nprivate readonly SqlSugarClient db; // \u6838\u5fc3\u5bf9\u8c61\uff1a\u62e5\u6709\u5b8c\u6574\u7684SqlSugar\u5168\u90e8\u529f\u80fd\npublic PersonService(ISqlSugarRepository sqlSugarRepository)\n{\n repository = sqlSugarRepository;\n db = repository.Context; // \u63a8\u8350\u64cd\u4f5c\n}\n")),(0,i.kt)("h2",{id:"1014-\u6570\u636e\u5e93\u64cd\u4f5c\u793a\u4f8b"},"10.1.4 \u6570\u636e\u5e93\u64cd\u4f5c\u793a\u4f8b"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// ================== SqlSugarClient ================\n\n//\u67e5\u8be2\u529f\u80fd\nvar data1 =db.Queryable().First(it=>it.Id==1); //db.GetById(1);\n\nvar data2 = db.Queryable().ToList();// db.GetList();\n\n// ================== \u7b80\u5355\u4ed3\u50a8 ================\n\n//\u63d2\u5165\nrepository.Insert(insertObj);\nvar id = repository.InsertReturnIdentity(insertObj);\nrepository.AsInsertable(insertObj).ExecuteCommand();\n\n//\u5220\u9664\nrepository.Delete(insertObj);\nrepository.Delete(it => it.Id == 1);\n\n//\u66f4\u65b0\nrepository.Update(insertObj);\nrepository.Update(it => new Order() { Name = "a", }, it => it.Id == 1);\n\n//\u5f02\u6b65\u65b9\u6cd5\u7528\u6cd5\nrepository.Insert(insertObj);//\u540c\u6b65\nrepository.InsertAsync(insertObj);//\u5f02\u6b65\n\n//\u5207\u6362\u4ed3\u50a8\nvar orderRespository=db.GetSimpleClient();\norderRespository.Insert(Order);\n')),(0,i.kt)("h2",{id:"1015-sqlsugarclient-\u64cd\u4f5c\u793a\u4f8b"},"10.1.5 SqlSugarClient \u64cd\u4f5c\u793a\u4f8b"),(0,i.kt)("h3",{id:"10151-\u57fa\u7840\u67e5\u8be2"},"10.1.5.1 \u57fa\u7840\u67e5\u8be2"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'//\u67e5\u8be2\u6240\u6709\nvar getAll = db.Queryable().ToList();\n//\u67e5\u8be2\u524d10\nvar top10= db.Queryable().Take(10).ToList();\n//\u67e5\u8be2\u5355\u6761\nvar getFirst = db.Queryable().First(it=>it.Id==1);\n//with nolock\nvar getAllNoLock = db.Queryable().With(SqlWith.NoLock).ToList();\n//\u6839\u636e\u4e3b\u952e\u67e5\u8be2\nvar getByPrimaryKey = db.Queryable().InSingle(2);\n//\u67e5\u8be2\u603b\u548c\nvar sum = db.Queryable().Sum(it=>it.Id);\n//\u662f\u5426\u5b58\u5728\nvar isAny = db.Queryable().Where(it=>it.Id==-1).Any();\n//\u6a21\u7cca\u67e5\nvar list2 = db.Queryable().Where(it =>it.Name.Contains("jack")).ToList();\n')),(0,i.kt)("h3",{id:"10152-\u8054\u8868\u67e5\u8be2"},"10.1.5.2 \u8054\u8868\u67e5\u8be2"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"var list = db.Queryable((st, sc) => new JoinQueryInfos(\n JoinType.Left,st.SchoolId==sc.Id))\n .Select((st,sc)=>new{Id=st.Id,Name=st.Name,SchoolName=sc.Name}).ToList();\n\n\u751f\u6210\u7684Sql\u5982\u4e0b:\nSELECT [st].[ID] AS [id] ,\n [st].[Name] AS [name] ,\n [sc].[Name] AS [schoolName] FROM [STudent] st\n Left JOIN School sc ON ( [st].[SchoolId] =[sc].[Id])\n")),(0,i.kt)("h3",{id:"10153-\u5206\u9875\u67e5\u8be2"},"10.1.5.3 \u5206\u9875\u67e5\u8be2"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"}," int pageIndex = 1;\n int pageSize = 20;\n int totalCount=0;\n var page = db.Queryable().ToPageList(pageIndex, pageSize, ref totalCount);\n")),(0,i.kt)("p",null,"\u66f4\u591a\u67e5\u8be2\u7528\u6cd5 \uff1a ",(0,i.kt)("a",{parentName:"p",href:"http://www.donet5.com/Home/Doc?typeId=1185"},"http://www.donet5.com/Home/Doc?typeId=1185")),(0,i.kt)("h3",{id:"10154-\u63d2\u5165"},"10.1.5.4 \u63d2\u5165"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'//\u53ef\u4ee5\u662f \u7c7b \u6216\u8005 List<\u7c7b>\ndb.Insertable(insertObj).ExecuteCommand();\n\n//\u63d2\u5165\u8fd4\u56de\u81ea\u589e\u5217\ndb.Insertable(insertObj).ExecuteReturnIdentity();\n\n//\u53ef\u4ee5\u662f Dictionary \u6216\u8005 List\nvar dc= new Dictionary();\n dt.Add("name", "1");\n dt.Add("CreateTime", null);\ndb.Insertable(dc).AS("student").ExecuteCommand();\n\n//DataTable\u63d2\u5165\nDictionary dc= db.Utilities.DataTableToDictionary(dataTable);//\u8f6c\u6210\u5b57\u5178\u5c31\u53ef\u4ee5\u6309\u4e0a\u9762\u7684\u5b57\u5178\u66f4\u65b0\u4e86\ndb.Insertable(dc).AS("student").ExecuteReturnIdentity();\n\n//\u5b9e\u4f53\u53ef\u4ee5\u914d\u7f6e\u4e3b\u952e\u548c\u81ea\u589e\u5217\npublic class Student\n{\n [SugarColumn(IsPrimaryKey = true, IsIdentity = true)]\n public int Id { get; set; }\n public int? SchoolId { get; set; }\n public string Name { get; set; }\n}\n')),(0,i.kt)("p",null,"\u66f4\u591a\u63d2\u5165\u7528\u6cd5\uff1a ",(0,i.kt)("a",{parentName:"p",href:"http://www.donet5.com/Home/Doc?typeId=1193"},"http://www.donet5.com/Home/Doc?typeId=1193")),(0,i.kt)("h3",{id:"10155-\u66f4\u65b0"},"10.1.5.5 \u66f4\u65b0"),(0,i.kt)("p",null,"\u5b9e\u4f53\u914d\u7f6e\u53c2\u8003\u63d2\u5165\uff0c\u53ea\u9700\u8981\u914d\u7f6e\u4e3b\u952e\u5373\u53ef"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'//\u6839\u636e\u4e3b\u952e\u66f4\u65b0\u5355\u6761 \u53c2\u6570 Class\nvar result= db.Updateable(updateObj).ExecuteCommand();\n//\u4e0d\u66f4\u65b0 Name \u548cTestId\nvar result=db.Updateable(updateObj).IgnoreColumns(it => new { it.CreateTime,it.TestId }).ExecuteCommand()\n//\u53ea\u66f4\u65b0 Name \u548c CreateTime\nvar result=db.Updateable(updateObj).UpdateColumns(it => new { it.Name,it.CreateTime }).ExecuteCommand();\n//\u6839\u636e\u8868\u8fbe\u5f0f\u66f4\u65b0\nvar result71 = db.Updateable()\n .SetColumns(it => it.Name == "a")\n .SetColumnsIF(p!=null ,it => it.CreateTime == p.Value)//\u5f53p\u4e0d\u7b49\u4e8enull\u66f4\u65b0createtime\u5217\n .Where(it => it.Id == 11).ExecuteCommand();\n')),(0,i.kt)("p",null,"\u66f4\u591a\u66f4\u65b0\u7528\u6cd5\uff1a ",(0,i.kt)("a",{parentName:"p",href:"http://www.donet5.com/Home/Doc?typeId=1191"},"http://www.donet5.com/Home/Doc?typeId=1191")),(0,i.kt)("h3",{id:"10156-\u5220\u9664"},"10.1.5.6 \u5220\u9664"),(0,i.kt)("p",null,"\u5b9e\u4f53\u914d\u7f6e\u53c2\u8003\u63d2\u5165\uff0c\u53ea\u9700\u8981\u914d\u7f6e\u4e3b\u952e\u5373\u53ef"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"//\u6839\u636e\u5b9e\u4f53\u5220\u9664\ndb.Deleteable().Where(new Student() { Id = 1 }).ExecuteCommand();\n//\u6839\u636e\u4e3b\u952e\u5220\u9664\ndb.Deleteable().In(1).ExecuteCommand();\n//\u6839\u636e\u8868\u8fbe\u5f0f\u5220\u9664\ndb.Deleteable().Where(it => it.Id == 1).ExecuteCommand();\n")),(0,i.kt)("p",null,"\u66f4\u591a\u5220\u9664\u7528\u6cd5: ",(0,i.kt)("a",{parentName:"p",href:"http://www.donet5.com/Home/Doc?typeId=1195"},"http://www.donet5.com/Home/Doc?typeId=1195")),(0,i.kt)("h2",{id:"1016-sql-\u67e5\u8be2"},"10.1.6 Sql \u67e5\u8be2"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'//sql\u5206\u9875\nvar list = db.SqlQueryable("select * from student").ToPageList(1, 2,ref total);\n\n//\u539f\u751fSql\u7528\u6cd5\nvar dt=db.Ado.GetDataTable("select * from table where id=@id and name=@name",new List(){\n new SugarParameter("@id",1),\n new SugarParameter("@name",2)\n});\n//\u53c2\u65702\nvar dt=db.Ado.GetDataTable("select * from table where id=@id and name=@name",new{id=1,name=2});\n\n//\u5b58\u50a8\u8fc7\u7a0b\u7528\u6cd5\nvar nameP= new SugarParameter("@name", "\u5f20\u4e09");\nvar ageP= new SugarParameter("@age", null, true);//\u8bbe\u7f6e\u4e3aoutput\nvar dt = db.Ado.UseStoredProcedure().GetDataTable("sp_school",nameP,ageP);\n\n')),(0,i.kt)("table",null,(0,i.kt)("thead",{parentName:"table"},(0,i.kt)("tr",{parentName:"thead"},(0,i.kt)("th",{parentName:"tr",align:"center"},"\u65b9\u6cd5\u540d"),(0,i.kt)("th",{parentName:"tr",align:"center"},"\u63cf\u8ff0"),(0,i.kt)("th",{parentName:"tr",align:"center"},"\u8fd4\u56de\u503c"))),(0,i.kt)("tbody",{parentName:"table"},(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:"center"},"SqlQuery< T >"),(0,i.kt)("td",{parentName:"tr",align:"center"},"\u67e5\u8be2\u6240\u6709\u8fd4\u56de\u5b9e\u4f53\u96c6\u5408"),(0,i.kt)("td",{parentName:"tr",align:"center"},"List")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:"center"},"SqlQuery"),(0,i.kt)("td",{parentName:"tr",align:"center"},"\u53ef\u4ee5\u8fd4\u56de 2 \u4e2a\u7ed3\u679c\u96c6"),(0,i.kt)("td",{parentName:"tr",align:"center"},"Tuple")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:"center"},"SqlQuerySingle"),(0,i.kt)("td",{parentName:"tr",align:"center"},"\u67e5\u8be2\u7b2c\u4e00\u6761\u8bb0\u5f55"),(0,i.kt)("td",{parentName:"tr",align:"center"},"T")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:"center"},"GetDataTable"),(0,i.kt)("td",{parentName:"tr",align:"center"},"\u67e5\u8be2\u6240\u6709"),(0,i.kt)("td",{parentName:"tr",align:"center"},"DataTable")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:"center"},"GetDataReader"),(0,i.kt)("td",{parentName:"tr",align:"center"},"\u8bfb\u53d6 DR \u9700\u8981\u624b\u52a8\u91ca\u653e DR"),(0,i.kt)("td",{parentName:"tr",align:"center"},"DataReader")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:"center"},"GetDataSetAll"),(0,i.kt)("td",{parentName:"tr",align:"center"},"\u83b7\u53d6\u591a\u4e2a\u7ed3\u679c\u96c6"),(0,i.kt)("td",{parentName:"tr",align:"center"},"DataSet")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:"center"},"ExecuteCommand"),(0,i.kt)("td",{parentName:"tr",align:"center"},"\u8fd4\u56de\u53d7\u5f71\u54cd\u884c\u6570\uff0c\u4e00\u822c\u7528\u4e8e\u589e\u5220\u6539"),(0,i.kt)("td",{parentName:"tr",align:"center"},"int")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:"center"},"GetScalar"),(0,i.kt)("td",{parentName:"tr",align:"center"},"\u83b7\u53d6\u9996\u884c\u9996\u5217"),(0,i.kt)("td",{parentName:"tr",align:"center"},"object")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:"center"},"GetString"),(0,i.kt)("td",{parentName:"tr",align:"center"},"\u83b7\u53d6\u9996\u884c\u9996\u5217"),(0,i.kt)("td",{parentName:"tr",align:"center"},"string")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:"center"},"GetInt"),(0,i.kt)("td",{parentName:"tr",align:"center"},"\u83b7\u53d6\u9996\u884c\u9996\u5217"),(0,i.kt)("td",{parentName:"tr",align:"center"},"int")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:"center"},"GetLong"),(0,i.kt)("td",{parentName:"tr",align:"center"},"\u83b7\u53d6\u9996\u884c\u9996\u5217"),(0,i.kt)("td",{parentName:"tr",align:"center"},"long")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:"center"},"GetDouble"),(0,i.kt)("td",{parentName:"tr",align:"center"},"\u83b7\u53d6\u9996\u884c\u9996\u5217"),(0,i.kt)("td",{parentName:"tr",align:"center"},"Double")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:"center"},"GetDecimal"),(0,i.kt)("td",{parentName:"tr",align:"center"},"\u83b7\u53d6\u9996\u884c\u9996\u5217"),(0,i.kt)("td",{parentName:"tr",align:"center"},"Decimal")),(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:"center"},"GetDateTime"),(0,i.kt)("td",{parentName:"tr",align:"center"},"\u83b7\u53d6\u9996\u884c\u9996\u5217"),(0,i.kt)("td",{parentName:"tr",align:"center"},"DateTime")))),(0,i.kt)("p",null,"\u60f3\u4e86\u89e3\u66f4\u591a ",(0,i.kt)("inlineCode",{parentName:"p"},"SqlSugar")," \u77e5\u8bc6\u53ef\u67e5\u9605 ",(0,i.kt)("a",{parentName:"p",href:"http://donet5.com/"},"SqlSugar \u5b98\u7f51"),"\u3002"),(0,i.kt)("h2",{id:"1017-\u6253\u5370-sql-\u5230-swagger"},"10.1.7 \u6253\u5370 ",(0,i.kt)("inlineCode",{parentName:"h2"},"sql")," \u5230 ",(0,i.kt)("inlineCode",{parentName:"h2"},"Swagger")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'services.AddSqlSugar(new ConnectionConfig\n{\n ConnectionString = "Server=.xxxxx",//\u8fde\u63a5\u7b26\u5b57\u4e32\n DbType = DbType.SqlServer,\n IsAutoCloseConnection = true,\n InitKeyType = InitKeyType.Attribute//\u4ece\u7279\u6027\u8bfb\u53d6\u4e3b\u952e\u81ea\u589e\u4fe1\u606f\n},\ndb =>\n{\n db.Aop.OnLogExecuting = (sql, pars) =>\n {\n //\u65b9\u6cd5\u4e00\n App.PrintToMiniProfiler("SqlSugar", "Info", sql + "\\r\\n" +string.Join(",", pars?.Select(it => it.ParameterName + ":" + it.Value)));\n\n //\u65b9\u6cd5\u4e8c:Furion\u5bf9\u4e0a\u8ff0\u7528\u6cd5\u8fdb\u884c\u4e8c\u6b21\u5c01\u88c5 \u5efa\u8bae\u65b9\u5f0f Sql\u53c2\u6570\u4f1a\u76f4\u63a5\u5199\u5165\u5230\u751f\u6210Sql\u4e2d\n App.PrintToMiniProfiler("SqlSugar","Info",SqlProfiler.ParameterFormat(sql,pars));\n };\n});\n')),(0,i.kt)("h2",{id:"1018-oracle\u6ce8\u610f\u4e8b\u9879"},"10.1.8 ",(0,i.kt)("inlineCode",{parentName:"h2"},"Oracle"),"\u6ce8\u610f\u4e8b\u9879"),(0,i.kt)("p",null,"\u6ce8\u610f .NET5 \u7528\u6237\u9700\u8981\u5728 API \u6216\u8005\u9879\u76ee\u89e3\u51b3\u65b9\u6848 ",(0,i.kt)("inlineCode",{parentName:"p"},".csproj")," \u6587\u4ef6\u52a0\u4ee5\u4e0b\u4e00\u884c\u4ee3\u7801\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{3}","{3}":!0},"\n net5.0\n true\n\n")),(0,i.kt)("h2",{id:"1019-\u53cd\u9988\u4e0e\u5efa\u8bae"},"10.1.9 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,i.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/b4685f05.ef2abc52.js b/handbook/build/assets/js/b4685f05.ef2abc52.js deleted file mode 100644 index a65dd3e0ccb..00000000000 --- a/handbook/build/assets/js/b4685f05.ef2abc52.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[9138],{3905:function(e,n,t){t.d(n,{Zo:function(){return p},kt:function(){return u}});var i=t(7294);function r(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function a(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);n&&(i=i.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,i)}return t}function o(e){for(var n=1;n=0||(r[t]=e[t]);return r}(e,n);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var c=i.createContext({}),l=function(e){var n=i.useContext(c),t=n;return e&&(t="function"==typeof e?e(n):o(o({},n),e)),t},p=function(e){var n=l(e.components);return i.createElement(c.Provider,{value:n},e.children)},d={inlineCode:"code",wrapper:function(e){var n=e.children;return i.createElement(i.Fragment,{},n)}},m=i.forwardRef((function(e,n){var t=e.components,r=e.mdxType,a=e.originalType,c=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),m=l(t),u=r,v=m["".concat(c,".").concat(u)]||m[u]||d[u]||a;return t?i.createElement(v,o(o({ref:n},p),{},{components:t})):i.createElement(v,o({ref:n},p))}));function u(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var a=t.length,o=new Array(a);o[0]=m;var s={};for(var c in n)hasOwnProperty.call(n,c)&&(s[c]=n[c]);s.originalType=e,s.mdxType="string"==typeof e?e:r,o[1]=s;for(var l=2;l\u8131\u654f\u8bcd\u6c47\u68c0\u6d4b \u670d\u52a1",id:"3021-\u6ce8\u518c-\u8131\u654f\u8bcd\u6c47\u68c0\u6d4b-\u670d\u52a1",children:[]},{value:"30.2.2 \u521b\u5efa sensitive-words.txt \u6587\u4ef6",id:"3022-\u521b\u5efa-sensitive-wordstxt-\u6587\u4ef6",children:[]},{value:"30.2.3 \u4f7f\u7528\u8131\u654f\u68c0\u6d4b",id:"3023-\u4f7f\u7528\u8131\u654f\u68c0\u6d4b",children:[]},{value:"30.2.3 \u8131\u654f\u8bcd\u6c47\u66ff\u6362",id:"3023-\u8131\u654f\u8bcd\u6c47\u66ff\u6362",children:[]}]},{value:"30.3 \u81ea\u5b9a\u4e49\u8131\u654f\u8bcd\u6c47\u5904\u7406",id:"303-\u81ea\u5b9a\u4e49\u8131\u654f\u8bcd\u6c47\u5904\u7406",children:[{value:"30.3.1 \u81ea\u5b9a\u4e49 ISensitiveDetectionProvider \u7a0b\u5e8f\uff0c\u5982\uff1a",id:"3031-\u81ea\u5b9a\u4e49-isensitivedetectionprovider-\u7a0b\u5e8f\uff0c\u5982\uff1a",children:[]},{value:"30.3.2 \u6ce8\u518c\u81ea\u5b9a\u4e49\u8131\u654f\u63d0\u4f9b\u5668",id:"3032-\u6ce8\u518c\u81ea\u5b9a\u4e49\u8131\u654f\u63d0\u4f9b\u5668",children:[]}]},{value:"30.4 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"304-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],m={toc:d};function u(e){var n=e.components,t=(0,r.Z)(e,s);return(0,a.kt)("wrapper",(0,i.Z)({},m,t,{components:n,mdxType:"MDXLayout"}),(0,a.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,a.kt)("div",{parentName:"div",className:"admonition-heading"},(0,a.kt)("h5",{parentName:"div"},(0,a.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,a.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,a.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7248\u672c\u8bf4\u660e")),(0,a.kt)("div",{parentName:"div",className:"admonition-content"},(0,a.kt)("p",{parentName:"div"},"\u4ee5\u4e0b\u5185\u5bb9\u4ec5\u9650 ",(0,a.kt)("inlineCode",{parentName:"p"},"Furion 2.4.4 +")," \u7248\u672c\u4f7f\u7528\u3002"))),(0,a.kt)("h2",{id:"301-\u5173\u4e8e\u8131\u654f"},"30.1 \u5173\u4e8e\u8131\u654f"),(0,a.kt)("p",null,"\u5f15\u7528\u767e\u5ea6\u767e\u79d1\uff1a"),(0,a.kt)("blockquote",null,(0,a.kt)("p",{parentName:"blockquote"},"\u6570\u636e\u8131\u654f\u662f\u6307\u5bf9\u67d0\u4e9b\u654f\u611f\u4fe1\u606f\u901a\u8fc7\u8131\u654f\u89c4\u5219\u8fdb\u884c\u6570\u636e\u7684\u53d8\u5f62\uff0c\u5b9e\u73b0\u654f\u611f\u9690\u79c1\u6570\u636e\u7684\u53ef\u9760\u4fdd\u62a4\u3002\u5728\u6d89\u53ca\u5ba2\u6237\u5b89\u5168\u6570\u636e\u6216\u8005\u4e00\u4e9b\u5546\u4e1a\u6027\u654f\u611f\u6570\u636e\u7684\u60c5\u51b5\u4e0b\uff0c\u5728\u4e0d\u8fdd\u53cd\u7cfb\u7edf\u89c4\u5219\u6761\u4ef6\u4e0b\uff0c\u5bf9\u771f\u5b9e\u6570\u636e\u8fdb\u884c\u6539\u9020\u5e76\u63d0\u4f9b\u6d4b\u8bd5\u4f7f\u7528\uff0c\u5982\u8eab\u4efd\u8bc1\u53f7\u3001\u624b\u673a\u53f7\u3001\u5361\u53f7\u3001\u5ba2\u6237\u53f7\u7b49\u4e2a\u4eba\u4fe1\u606f\u90fd\u9700\u8981\u8fdb\u884c\u6570\u636e\u8131\u654f\u3002\u6570\u636e\u5b89\u5168\u6280\u672f\u4e4b\u4e00\uff0c\u6570\u636e\u5e93\u5b89\u5168\u6280\u672f\u4e3b\u8981\u5305\u62ec\uff1a\u6570\u636e\u5e93\u6f0f\u626b\u3001\u6570\u636e\u5e93\u52a0\u5bc6\u3001\u6570\u636e\u5e93\u9632\u706b\u5899\u3001\u6570\u636e\u8131\u654f\u3001\u6570\u636e\u5e93\u5b89\u5168\u5ba1\u8ba1\u7cfb\u7edf\u3002")),(0,a.kt)("p",null,"\u5728 ",(0,a.kt)("inlineCode",{parentName:"p"},"Furion")," \u7cfb\u7edf\u4e2d\uff0c",(0,a.kt)("inlineCode",{parentName:"p"},"\u8131\u654f\u5904\u7406")," \u6307\u7684\u662f\u5bf9\u4e0d\u7b26\u5408\u7cfb\u7edf\u5408\u6cd5\u8bcd\u6c47\u68c0\u6d4b\u9a8c\u8bc1\u3002"),(0,a.kt)("h2",{id:"302-\u5982\u4f55\u4f7f\u7528"},"30.2 \u5982\u4f55\u4f7f\u7528"),(0,a.kt)("p",null,(0,a.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u5185\u7f6e\u4e86\u4e00\u5957\u9ed8\u8ba4\u7684\u8131\u654f\u8bcd\u6c47\u8131\u654f\u5904\u7406\u673a\u5236\uff0c\u5e76\u4e14\u63d0\u4f9b\u81ea\u5b9a\u4e49\u64cd\u4f5c\u3002"),(0,a.kt)("h3",{id:"3021-\u6ce8\u518c-\u8131\u654f\u8bcd\u6c47\u68c0\u6d4b-\u670d\u52a1"},"30.2.1 \u6ce8\u518c ",(0,a.kt)("inlineCode",{parentName:"h3"},"\u8131\u654f\u8bcd\u6c47\u68c0\u6d4b")," \u670d\u52a1"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{3}","{3}":!0},"public void ConfigureServices(IServiceCollection services)\n{\n services.AddSensitiveDetection();\n}\n")),(0,a.kt)("h3",{id:"3022-\u521b\u5efa-sensitive-wordstxt-\u6587\u4ef6"},"30.2.2 \u521b\u5efa ",(0,a.kt)("inlineCode",{parentName:"h3"},"sensitive-words.txt")," \u6587\u4ef6"),(0,a.kt)("p",null,"\u5728 ",(0,a.kt)("inlineCode",{parentName:"p"},"Web")," \u542f\u52a8\u5c42\u9879\u76ee\u4e2d\u521b\u5efa ",(0,a.kt)("inlineCode",{parentName:"p"},"sensitive-words.txt")," \u6587\u4ef6\uff0c",(0,a.kt)("strong",{parentName:"p"},"\u786e\u4fdd\u91c7\u7528 ",(0,a.kt)("inlineCode",{parentName:"strong"},"UTF-8")," \u7f16\u7801\u683c\u5f0f\u4e14\u8bbe\u7f6e\u4e3a\u5d4c\u5165\u5f0f\u8d44\u6e90\uff01"),"\ud83c\udf83"),(0,a.kt)("p",null,(0,a.kt)("inlineCode",{parentName:"p"},"sensitive-words.txt")," \u5185\u5bb9\u683c\u5f0f\u4e3a\u6bcf\u4e00\u884c\u6807\u8bc6\u4e00\u4e2a\u8131\u654f\u8bcd\u6c47\uff1a"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},"\u574f\u4eba\n\u65e0\u8bed\n\u6eda\u5f00\n\u516b\u560e\n")),(0,a.kt)("p",null,"\u63a5\u4e0b\u6765\u8bbe\u7f6e\u4e3a\u5d4c\u5165\u5f0f\u8d44\u6e90\uff1a"),(0,a.kt)("img",{src:(0,o.Z)("img/tm.png")}),(0,a.kt)("h3",{id:"3023-\u4f7f\u7528\u8131\u654f\u68c0\u6d4b"},"30.2.3 \u4f7f\u7528\u8131\u654f\u68c0\u6d4b"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("strong",{parentName:"li"},"\u5b9e\u73b0\u6570\u636e\u9a8c\u8bc1\u8131\u654f\u68c0\u6d4b ",(0,a.kt)("inlineCode",{parentName:"strong"},"[SensitiveDetection]")))),(0,a.kt)("p",null,(0,a.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u4e86 ",(0,a.kt)("inlineCode",{parentName:"p"},"[SensitiveDetection]")," \u9a8c\u8bc1\u7279\u6027\uff0c\u53ef\u4ee5\u5bf9\u53c2\u6570\u3001\u5c5e\u6027\u8fdb\u884c\u8131\u654f\u9a8c\u8bc1\uff0c\u7528\u6cd5\u548c ",(0,a.kt)("inlineCode",{parentName:"p"},"[DataValidation]")," \u4e00\u81f4\uff0c\u5982\uff1a"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{4,9}","{4,9}":!0},"// \u5728\u5c5e\u6027\u4e2d\u4f7f\u7528\npublic class Content\n{\n [SensitiveDetection]\n public string Text { get; set; }\n}\n\n// \u5728 \u52a8\u6001API/Controller \u4e2d\u4f7f\u7528\npublic void Test([SensitiveDetection] string text)\n{\n\n}\n")),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("strong",{parentName:"li"},"\u901a\u8fc7 ",(0,a.kt)("inlineCode",{parentName:"strong"},"ISensitiveDetectionProvider")," \u670d\u52a1\u4f7f\u7528"))),(0,a.kt)("p",null,(0,a.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e5f\u63d0\u4f9b\u4e86 ",(0,a.kt)("inlineCode",{parentName:"p"},"ISensitiveDetectionProvider")," \u670d\u52a1\u8fdb\u884c\u624b\u52a8\u8131\u654f\u9a8c\u8bc1\u5904\u7406\uff0c\u5982\uff1a"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{4,15,25,35}","{4,15,25,35}":!0},'public class FurionService\n{\n private readonly ISensitiveDetectionProvider _sensitiveDetectionProvider;\n public FurionService(ISensitiveDetectionProvider sensitiveDetectionProvider)\n {\n _sensitiveDetectionProvider = sensitiveDetectionProvider;\n }\n\n /// \n /// \u83b7\u53d6\u6240\u6709\u8131\u654f\u8bcd\u6c47\n /// \n /// \n public async Task> GetWordsAsync()\n {\n return await _sensitiveDetectionProvider.GetWordsAsync();\n }\n\n /// \n /// \u5224\u65ad\u662f\u5426\u662f\u6b63\u5e38\u7684\u8bcd\u6c47\n /// \n /// \n /// \n public async Task VaildedAsync(string text)\n {\n return await _sensitiveDetectionProvider.VaildedAsync(text);\n }\n\n /// \n /// \u66ff\u6362\u975e\u6b63\u5e38\u8bcd\u6c47\n /// \n /// \n /// \n public async Task ReplaceAsync(string text)\n {\n return await _sensitiveDetectionProvider.ReplaceAsync(text, \'*\');\n }\n}\n')),(0,a.kt)("h3",{id:"3023-\u8131\u654f\u8bcd\u6c47\u66ff\u6362"},"30.2.3 \u8131\u654f\u8bcd\u6c47\u66ff\u6362"),(0,a.kt)("p",null,(0,a.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e5f\u63d0\u4f9b\u4e86\u66ff\u6362\u8131\u654f\u8bcd\u6c47\u7684\u7279\u6027\u652f\u6301\uff0c\u5982\uff1a"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{4}","{4}":!0},"// \u5728\u5c5e\u6027\u4e2d\u4f7f\u7528\npublic class Content\n{\n [SensitiveDetection('*')]\n public string Text { get; set; }\n}\n")),(0,a.kt)("div",{className:"admonition admonition-caution alert alert--warning"},(0,a.kt)("div",{parentName:"div",className:"admonition-heading"},(0,a.kt)("h5",{parentName:"div"},(0,a.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,a.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 16 16"},(0,a.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"}))),"\u7279\u522b\u6ce8\u610f")),(0,a.kt)("div",{parentName:"div",className:"admonition-content"},(0,a.kt)("p",{parentName:"div"},(0,a.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u76ee\u524d\u53ea\u63d0\u4f9b\u7c7b\u4e2d\u4f7f\u7528\u66ff\u6362\u7279\u6027\u652f\u6301\uff0c\u4f46\u672a\u63d0\u4f9b\u65b9\u6cd5\u5355\u4e2a\u503c\u66ff\u6362\u652f\u6301\uff0c\u5982",(0,a.kt)("strong",{parentName:"p"},"\u4ee5\u4e0b\u4ee3\u7801\u4e0d\u53d7\u652f\u6301"),"\uff1a"),(0,a.kt)("pre",{parentName:"div"},(0,a.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1}","{1}":!0},"public void Test([SensitiveDetection('*')] string text)\n{\n}\n")))),(0,a.kt)("h2",{id:"303-\u81ea\u5b9a\u4e49\u8131\u654f\u8bcd\u6c47\u5904\u7406"},"30.3 \u81ea\u5b9a\u4e49\u8131\u654f\u8bcd\u6c47\u5904\u7406"),(0,a.kt)("p",null,(0,a.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u9664\u4e86\u5185\u7f6e\u4e86\u4e00\u5957\u9ed8\u8ba4\u7684 ",(0,a.kt)("inlineCode",{parentName:"p"},"\u8131\u654f\u5904\u7406")," \u7a0b\u5e8f\uff0c\u4e5f\u652f\u6301\u81ea\u5b9a\u4e49\u8131\u654f\u5904\u7406\u7a0b\u5e8f\u3002"),(0,a.kt)("h3",{id:"3031-\u81ea\u5b9a\u4e49-isensitivedetectionprovider-\u7a0b\u5e8f\uff0c\u5982\uff1a"},"30.3.1 \u81ea\u5b9a\u4e49 ",(0,a.kt)("inlineCode",{parentName:"h3"},"ISensitiveDetectionProvider")," \u7a0b\u5e8f\uff0c\u5982\uff1a"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{4,15,25,36}","{4,15,25,36}":!0},'/// \n/// \u81ea\u5b9a\u4e49\u8131\u654f\u8bcd\u6c47\u68c0\u6d4b\u5668\n/// \npublic class YourSensitiveDetectionProvider : ISensitiveDetectionProvider\n{\n // \u652f\u6301\u6784\u9020\u51fd\u6570\u6ce8\u5165\n public YourSensitiveDetectionProvider()\n {\n }\n\n /// \n /// \u8fd4\u56de\u6240\u6709\u8131\u654f\u8bcd\u6c47\n /// \n /// \n public async Task> GetWordsAsync()\n {\n // \u8fd9\u91cc\u5199\u4f60\u8131\u654f\u8bcd\u6c47\u6570\u636e\u7684\u6765\u6e90\uff08\u5982\u4ece\u6570\u636e\u5e93\u8bfb\u53d6\uff09\uff0c\u5efa\u8bae\u505a\u597d\u7f13\u5b58\u64cd\u4f5c\n }\n\n /// \n /// \u5224\u65ad\u8131\u654f\u8bcd\u6c47\u662f\u5426\u6709\u6548\n /// \n /// \n /// \n public async Task VaildedAsync(string text)\n {\n // \u8fd9\u91cc\u5199\u4f60\u5982\u4f55\u5224\u65ad\u662f\u6b63\u5e38\u7684\u5b57\u7b26\uff0c\u8fd4\u56de true \u6b63\u5e38\uff0c\u8fd4\u56de false \u8868\u793a\u662f\u4e2a\u8131\u654f\u8bcd\u6c47\n }\n\n /// \n /// \u66ff\u6362\u8131\u654f\u8bcd\u6c47\n /// \n /// \n /// \n /// \n public async Task ReplaceAsync(string text, char transfer = \'*\')\n {\n // \u8fd9\u91cc\u5199\u4f60\u66ff\u6362\u975e\u6b63\u5e38\u5b57\u7b26\u4e3a\u6307\u5b9a\u5b57\u7b26\n }\n}\n')),(0,a.kt)("h3",{id:"3032-\u6ce8\u518c\u81ea\u5b9a\u4e49\u8131\u654f\u63d0\u4f9b\u5668"},"30.3.2 \u6ce8\u518c\u81ea\u5b9a\u4e49\u8131\u654f\u63d0\u4f9b\u5668"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{3}","{3}":!0},"public void ConfigureServices(IServiceCollection services)\n{\n services.AddSensitiveDetection();\n}\n")),(0,a.kt)("p",null,"\u4e4b\u540e\u7cfb\u7edf\u5c06\u81ea\u52a8\u91c7\u7528\u81ea\u5b9a\u4e49\u7684\u65b9\u5f0f\u8fdb\u884c\u8131\u654f\u5904\u7406\u3002"),(0,a.kt)("h2",{id:"304-\u53cd\u9988\u4e0e\u5efa\u8bae"},"30.4 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,a.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,a.kt)("div",{parentName:"div",className:"admonition-heading"},(0,a.kt)("h5",{parentName:"div"},(0,a.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,a.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,a.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,a.kt)("div",{parentName:"div",className:"admonition-content"},(0,a.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,a.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))),(0,a.kt)("hr",null))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/b4685f05.f1dd4eca.js b/handbook/build/assets/js/b4685f05.f1dd4eca.js new file mode 100644 index 00000000000..b328c789c2c --- /dev/null +++ b/handbook/build/assets/js/b4685f05.f1dd4eca.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[9138],{3905:function(e,n,t){t.d(n,{Zo:function(){return p},kt:function(){return u}});var i=t(7294);function r(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function a(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);n&&(i=i.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,i)}return t}function o(e){for(var n=1;n=0||(r[t]=e[t]);return r}(e,n);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var c=i.createContext({}),l=function(e){var n=i.useContext(c),t=n;return e&&(t="function"==typeof e?e(n):o(o({},n),e)),t},p=function(e){var n=l(e.components);return i.createElement(c.Provider,{value:n},e.children)},d={inlineCode:"code",wrapper:function(e){var n=e.children;return i.createElement(i.Fragment,{},n)}},m=i.forwardRef((function(e,n){var t=e.components,r=e.mdxType,a=e.originalType,c=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),m=l(t),u=r,v=m["".concat(c,".").concat(u)]||m[u]||d[u]||a;return t?i.createElement(v,o(o({ref:n},p),{},{components:t})):i.createElement(v,o({ref:n},p))}));function u(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var a=t.length,o=new Array(a);o[0]=m;var s={};for(var c in n)hasOwnProperty.call(n,c)&&(s[c]=n[c]);s.originalType=e,s.mdxType="string"==typeof e?e:r,o[1]=s;for(var l=2;l\u8131\u654f\u8bcd\u6c47\u68c0\u6d4b \u670d\u52a1",id:"3021-\u6ce8\u518c-\u8131\u654f\u8bcd\u6c47\u68c0\u6d4b-\u670d\u52a1",children:[]},{value:"30.2.2 \u521b\u5efa sensitive-words.txt \u6587\u4ef6",id:"3022-\u521b\u5efa-sensitive-wordstxt-\u6587\u4ef6",children:[]},{value:"30.2.3 \u4f7f\u7528\u8131\u654f\u68c0\u6d4b",id:"3023-\u4f7f\u7528\u8131\u654f\u68c0\u6d4b",children:[]},{value:"30.2.3 \u8131\u654f\u8bcd\u6c47\u66ff\u6362",id:"3023-\u8131\u654f\u8bcd\u6c47\u66ff\u6362",children:[]}]},{value:"30.3 \u81ea\u5b9a\u4e49\u8131\u654f\u8bcd\u6c47\u5904\u7406",id:"303-\u81ea\u5b9a\u4e49\u8131\u654f\u8bcd\u6c47\u5904\u7406",children:[{value:"30.3.1 \u81ea\u5b9a\u4e49 ISensitiveDetectionProvider \u7a0b\u5e8f\uff0c\u5982\uff1a",id:"3031-\u81ea\u5b9a\u4e49-isensitivedetectionprovider-\u7a0b\u5e8f\uff0c\u5982\uff1a",children:[]},{value:"30.3.2 \u6ce8\u518c\u81ea\u5b9a\u4e49\u8131\u654f\u63d0\u4f9b\u5668",id:"3032-\u6ce8\u518c\u81ea\u5b9a\u4e49\u8131\u654f\u63d0\u4f9b\u5668",children:[]}]},{value:"30.4 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"304-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],m={toc:d};function u(e){var n=e.components,t=(0,r.Z)(e,s);return(0,a.kt)("wrapper",(0,i.Z)({},m,t,{components:n,mdxType:"MDXLayout"}),(0,a.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,a.kt)("div",{parentName:"div",className:"admonition-heading"},(0,a.kt)("h5",{parentName:"div"},(0,a.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,a.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,a.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7248\u672c\u8bf4\u660e")),(0,a.kt)("div",{parentName:"div",className:"admonition-content"},(0,a.kt)("p",{parentName:"div"},"\u4ee5\u4e0b\u5185\u5bb9\u4ec5\u9650 ",(0,a.kt)("inlineCode",{parentName:"p"},"Furion 2.4.4 +")," \u7248\u672c\u4f7f\u7528\u3002"))),(0,a.kt)("h2",{id:"301-\u5173\u4e8e\u8131\u654f"},"30.1 \u5173\u4e8e\u8131\u654f"),(0,a.kt)("p",null,"\u5f15\u7528\u767e\u5ea6\u767e\u79d1\uff1a"),(0,a.kt)("blockquote",null,(0,a.kt)("p",{parentName:"blockquote"},"\u6570\u636e\u8131\u654f\u662f\u6307\u5bf9\u67d0\u4e9b\u654f\u611f\u4fe1\u606f\u901a\u8fc7\u8131\u654f\u89c4\u5219\u8fdb\u884c\u6570\u636e\u7684\u53d8\u5f62\uff0c\u5b9e\u73b0\u654f\u611f\u9690\u79c1\u6570\u636e\u7684\u53ef\u9760\u4fdd\u62a4\u3002\u5728\u6d89\u53ca\u5ba2\u6237\u5b89\u5168\u6570\u636e\u6216\u8005\u4e00\u4e9b\u5546\u4e1a\u6027\u654f\u611f\u6570\u636e\u7684\u60c5\u51b5\u4e0b\uff0c\u5728\u4e0d\u8fdd\u53cd\u7cfb\u7edf\u89c4\u5219\u6761\u4ef6\u4e0b\uff0c\u5bf9\u771f\u5b9e\u6570\u636e\u8fdb\u884c\u6539\u9020\u5e76\u63d0\u4f9b\u6d4b\u8bd5\u4f7f\u7528\uff0c\u5982\u8eab\u4efd\u8bc1\u53f7\u3001\u624b\u673a\u53f7\u3001\u5361\u53f7\u3001\u5ba2\u6237\u53f7\u7b49\u4e2a\u4eba\u4fe1\u606f\u90fd\u9700\u8981\u8fdb\u884c\u6570\u636e\u8131\u654f\u3002\u6570\u636e\u5b89\u5168\u6280\u672f\u4e4b\u4e00\uff0c\u6570\u636e\u5e93\u5b89\u5168\u6280\u672f\u4e3b\u8981\u5305\u62ec\uff1a\u6570\u636e\u5e93\u6f0f\u626b\u3001\u6570\u636e\u5e93\u52a0\u5bc6\u3001\u6570\u636e\u5e93\u9632\u706b\u5899\u3001\u6570\u636e\u8131\u654f\u3001\u6570\u636e\u5e93\u5b89\u5168\u5ba1\u8ba1\u7cfb\u7edf\u3002")),(0,a.kt)("p",null,"\u5728 ",(0,a.kt)("inlineCode",{parentName:"p"},"Furion")," \u7cfb\u7edf\u4e2d\uff0c",(0,a.kt)("inlineCode",{parentName:"p"},"\u8131\u654f\u5904\u7406")," \u6307\u7684\u662f\u5bf9\u4e0d\u7b26\u5408\u7cfb\u7edf\u5408\u6cd5\u8bcd\u6c47\u68c0\u6d4b\u9a8c\u8bc1\u3002"),(0,a.kt)("h2",{id:"302-\u5982\u4f55\u4f7f\u7528"},"30.2 \u5982\u4f55\u4f7f\u7528"),(0,a.kt)("p",null,(0,a.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u5185\u7f6e\u4e86\u4e00\u5957\u9ed8\u8ba4\u7684\u8131\u654f\u8bcd\u6c47\u8131\u654f\u5904\u7406\u673a\u5236\uff0c\u5e76\u4e14\u63d0\u4f9b\u81ea\u5b9a\u4e49\u64cd\u4f5c\u3002"),(0,a.kt)("h3",{id:"3021-\u6ce8\u518c-\u8131\u654f\u8bcd\u6c47\u68c0\u6d4b-\u670d\u52a1"},"30.2.1 \u6ce8\u518c ",(0,a.kt)("inlineCode",{parentName:"h3"},"\u8131\u654f\u8bcd\u6c47\u68c0\u6d4b")," \u670d\u52a1"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{3}","{3}":!0},"public void ConfigureServices(IServiceCollection services)\n{\n services.AddSensitiveDetection();\n}\n")),(0,a.kt)("h3",{id:"3022-\u521b\u5efa-sensitive-wordstxt-\u6587\u4ef6"},"30.2.2 \u521b\u5efa ",(0,a.kt)("inlineCode",{parentName:"h3"},"sensitive-words.txt")," \u6587\u4ef6"),(0,a.kt)("p",null,"\u5728 ",(0,a.kt)("inlineCode",{parentName:"p"},"Web")," \u542f\u52a8\u5c42\u9879\u76ee\u4e2d\u521b\u5efa ",(0,a.kt)("inlineCode",{parentName:"p"},"sensitive-words.txt")," \u6587\u4ef6\uff0c",(0,a.kt)("strong",{parentName:"p"},"\u786e\u4fdd\u91c7\u7528 ",(0,a.kt)("inlineCode",{parentName:"strong"},"UTF-8")," \u7f16\u7801\u683c\u5f0f\u4e14\u8bbe\u7f6e\u4e3a\u5d4c\u5165\u5f0f\u8d44\u6e90\uff01"),"\ud83c\udf83"),(0,a.kt)("p",null,(0,a.kt)("inlineCode",{parentName:"p"},"sensitive-words.txt")," \u5185\u5bb9\u683c\u5f0f\u4e3a\u6bcf\u4e00\u884c\u6807\u8bc6\u4e00\u4e2a\u8131\u654f\u8bcd\u6c47\uff1a"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre"},"\u574f\u4eba\n\u65e0\u8bed\n\u6eda\u5f00\n\u516b\u560e\n")),(0,a.kt)("p",null,"\u63a5\u4e0b\u6765\u8bbe\u7f6e\u4e3a\u5d4c\u5165\u5f0f\u8d44\u6e90\uff1a"),(0,a.kt)("img",{src:(0,o.Z)("img/tm.png")}),(0,a.kt)("h3",{id:"3023-\u4f7f\u7528\u8131\u654f\u68c0\u6d4b"},"30.2.3 \u4f7f\u7528\u8131\u654f\u68c0\u6d4b"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("strong",{parentName:"li"},"\u5b9e\u73b0\u6570\u636e\u9a8c\u8bc1\u8131\u654f\u68c0\u6d4b ",(0,a.kt)("inlineCode",{parentName:"strong"},"[SensitiveDetection]")))),(0,a.kt)("p",null,(0,a.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u4e86 ",(0,a.kt)("inlineCode",{parentName:"p"},"[SensitiveDetection]")," \u9a8c\u8bc1\u7279\u6027\uff0c\u53ef\u4ee5\u5bf9\u53c2\u6570\u3001\u5c5e\u6027\u8fdb\u884c\u8131\u654f\u9a8c\u8bc1\uff0c\u7528\u6cd5\u548c ",(0,a.kt)("inlineCode",{parentName:"p"},"[DataValidation]")," \u4e00\u81f4\uff0c\u5982\uff1a"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{4,9}","{4,9}":!0},"// \u5728\u5c5e\u6027\u4e2d\u4f7f\u7528\npublic class Content\n{\n [SensitiveDetection]\n public string Text { get; set; }\n}\n\n// \u5728 \u52a8\u6001API/Controller \u4e2d\u4f7f\u7528\npublic void Test([SensitiveDetection] string text)\n{\n\n}\n")),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("strong",{parentName:"li"},"\u901a\u8fc7 ",(0,a.kt)("inlineCode",{parentName:"strong"},"ISensitiveDetectionProvider")," \u670d\u52a1\u4f7f\u7528"))),(0,a.kt)("p",null,(0,a.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e5f\u63d0\u4f9b\u4e86 ",(0,a.kt)("inlineCode",{parentName:"p"},"ISensitiveDetectionProvider")," \u670d\u52a1\u8fdb\u884c\u624b\u52a8\u8131\u654f\u9a8c\u8bc1\u5904\u7406\uff0c\u5982\uff1a"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{4,15,25,35}","{4,15,25,35}":!0},'public class FurionService\n{\n private readonly ISensitiveDetectionProvider _sensitiveDetectionProvider;\n public FurionService(ISensitiveDetectionProvider sensitiveDetectionProvider)\n {\n _sensitiveDetectionProvider = sensitiveDetectionProvider;\n }\n\n /// \n /// \u83b7\u53d6\u6240\u6709\u8131\u654f\u8bcd\u6c47\n /// \n /// \n public async Task> GetWordsAsync()\n {\n return await _sensitiveDetectionProvider.GetWordsAsync();\n }\n\n /// \n /// \u5224\u65ad\u662f\u5426\u662f\u6b63\u5e38\u7684\u8bcd\u6c47\n /// \n /// \n /// \n public async Task VaildedAsync(string text)\n {\n return await _sensitiveDetectionProvider.VaildedAsync(text);\n }\n\n /// \n /// \u66ff\u6362\u975e\u6b63\u5e38\u8bcd\u6c47\n /// \n /// \n /// \n public async Task ReplaceAsync(string text)\n {\n return await _sensitiveDetectionProvider.ReplaceAsync(text, \'*\');\n }\n}\n')),(0,a.kt)("h3",{id:"3023-\u8131\u654f\u8bcd\u6c47\u66ff\u6362"},"30.2.3 \u8131\u654f\u8bcd\u6c47\u66ff\u6362"),(0,a.kt)("p",null,(0,a.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e5f\u63d0\u4f9b\u4e86\u66ff\u6362\u8131\u654f\u8bcd\u6c47\u7684\u7279\u6027\u652f\u6301\uff0c\u5982\uff1a"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{4}","{4}":!0},"// \u5728\u5c5e\u6027\u4e2d\u4f7f\u7528\npublic class Content\n{\n [SensitiveDetection('*')]\n public string Text { get; set; }\n}\n")),(0,a.kt)("div",{className:"admonition admonition-caution alert alert--warning"},(0,a.kt)("div",{parentName:"div",className:"admonition-heading"},(0,a.kt)("h5",{parentName:"div"},(0,a.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,a.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 16 16"},(0,a.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"}))),"\u7279\u522b\u6ce8\u610f")),(0,a.kt)("div",{parentName:"div",className:"admonition-content"},(0,a.kt)("p",{parentName:"div"},(0,a.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u76ee\u524d\u53ea\u63d0\u4f9b\u7c7b\u4e2d\u4f7f\u7528\u66ff\u6362\u7279\u6027\u652f\u6301\uff0c\u4f46\u672a\u63d0\u4f9b\u65b9\u6cd5\u5355\u4e2a\u503c\u66ff\u6362\u652f\u6301\uff0c\u5982",(0,a.kt)("strong",{parentName:"p"},"\u4ee5\u4e0b\u4ee3\u7801\u4e0d\u53d7\u652f\u6301"),"\uff1a"),(0,a.kt)("pre",{parentName:"div"},(0,a.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1}","{1}":!0},"public void Test([SensitiveDetection('*')] string text)\n{\n}\n")))),(0,a.kt)("h2",{id:"303-\u81ea\u5b9a\u4e49\u8131\u654f\u8bcd\u6c47\u5904\u7406"},"30.3 \u81ea\u5b9a\u4e49\u8131\u654f\u8bcd\u6c47\u5904\u7406"),(0,a.kt)("p",null,(0,a.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u9664\u4e86\u5185\u7f6e\u4e86\u4e00\u5957\u9ed8\u8ba4\u7684 ",(0,a.kt)("inlineCode",{parentName:"p"},"\u8131\u654f\u5904\u7406")," \u7a0b\u5e8f\uff0c\u4e5f\u652f\u6301\u81ea\u5b9a\u4e49\u8131\u654f\u5904\u7406\u7a0b\u5e8f\u3002"),(0,a.kt)("h3",{id:"3031-\u81ea\u5b9a\u4e49-isensitivedetectionprovider-\u7a0b\u5e8f\uff0c\u5982\uff1a"},"30.3.1 \u81ea\u5b9a\u4e49 ",(0,a.kt)("inlineCode",{parentName:"h3"},"ISensitiveDetectionProvider")," \u7a0b\u5e8f\uff0c\u5982\uff1a"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{4,15,25,36}","{4,15,25,36}":!0},'/// \n/// \u81ea\u5b9a\u4e49\u8131\u654f\u8bcd\u6c47\u68c0\u6d4b\u5668\n/// \npublic class YourSensitiveDetectionProvider : ISensitiveDetectionProvider\n{\n // \u652f\u6301\u6784\u9020\u51fd\u6570\u6ce8\u5165\n public YourSensitiveDetectionProvider()\n {\n }\n\n /// \n /// \u8fd4\u56de\u6240\u6709\u8131\u654f\u8bcd\u6c47\n /// \n /// \n public async Task> GetWordsAsync()\n {\n // \u8fd9\u91cc\u5199\u4f60\u8131\u654f\u8bcd\u6c47\u6570\u636e\u7684\u6765\u6e90\uff08\u5982\u4ece\u6570\u636e\u5e93\u8bfb\u53d6\uff09\uff0c\u5efa\u8bae\u505a\u597d\u7f13\u5b58\u64cd\u4f5c\n }\n\n /// \n /// \u5224\u65ad\u8131\u654f\u8bcd\u6c47\u662f\u5426\u6709\u6548\n /// \n /// \n /// \n public async Task VaildedAsync(string text)\n {\n // \u8fd9\u91cc\u5199\u4f60\u5982\u4f55\u5224\u65ad\u662f\u6b63\u5e38\u7684\u5b57\u7b26\uff0c\u8fd4\u56de true \u6b63\u5e38\uff0c\u8fd4\u56de false \u8868\u793a\u662f\u4e2a\u8131\u654f\u8bcd\u6c47\n }\n\n /// \n /// \u66ff\u6362\u8131\u654f\u8bcd\u6c47\n /// \n /// \n /// \n /// \n public async Task ReplaceAsync(string text, char transfer = \'*\')\n {\n // \u8fd9\u91cc\u5199\u4f60\u66ff\u6362\u975e\u6b63\u5e38\u5b57\u7b26\u4e3a\u6307\u5b9a\u5b57\u7b26\n }\n}\n')),(0,a.kt)("h3",{id:"3032-\u6ce8\u518c\u81ea\u5b9a\u4e49\u8131\u654f\u63d0\u4f9b\u5668"},"30.3.2 \u6ce8\u518c\u81ea\u5b9a\u4e49\u8131\u654f\u63d0\u4f9b\u5668"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{3}","{3}":!0},"public void ConfigureServices(IServiceCollection services)\n{\n services.AddSensitiveDetection();\n}\n")),(0,a.kt)("p",null,"\u4e4b\u540e\u7cfb\u7edf\u5c06\u81ea\u52a8\u91c7\u7528\u81ea\u5b9a\u4e49\u7684\u65b9\u5f0f\u8fdb\u884c\u8131\u654f\u5904\u7406\u3002"),(0,a.kt)("h2",{id:"304-\u53cd\u9988\u4e0e\u5efa\u8bae"},"30.4 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,a.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,a.kt)("div",{parentName:"div",className:"admonition-heading"},(0,a.kt)("h5",{parentName:"div"},(0,a.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,a.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,a.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,a.kt)("div",{parentName:"div",className:"admonition-content"},(0,a.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,a.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))),(0,a.kt)("hr",null))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/b6492972.24e75ce0.js b/handbook/build/assets/js/b6492972.24e75ce0.js deleted file mode 100644 index 7d5cd4178af..00000000000 --- a/handbook/build/assets/js/b6492972.24e75ce0.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[7300],{3905:function(e,t,n){n.d(t,{Zo:function(){return p},kt:function(){return u}});var a=n(7294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var s=a.createContext({}),l=function(e){var t=a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},p=function(e){var t=l(e.components);return a.createElement(s.Provider,{value:t},e.children)},c={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var n=e.components,i=e.mdxType,r=e.originalType,s=e.parentName,p=d(e,["components","mdxType","originalType","parentName"]),m=l(n),u=i,k=m["".concat(s,".").concat(u)]||m[u]||c[u]||r;return n?a.createElement(k,o(o({ref:t},p),{},{components:n})):a.createElement(k,o({ref:t},p))}));function u(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var r=n.length,o=new Array(r);o[0]=m;var d={};for(var s in t)hasOwnProperty.call(t,s)&&(d[s]=t[s]);d.originalType=e,d.mdxType="string"==typeof e?e:i,o[1]=d;for(var l=2;lPerson",id:"92021-\u521b\u5efa\u5b9e\u4f53\u6a21\u578b-person",children:[]},{value:"9.20.2.2 \u6253\u5f00 \u7a0b\u5e8f\u5305\u7ba1\u7406\u63a7\u5236\u53f0",id:"92022-\u6253\u5f00-\u7a0b\u5e8f\u5305\u7ba1\u7406\u63a7\u5236\u53f0",children:[]},{value:"9.20.2.3 \u5207\u6362\u9ed8\u8ba4\u9879\u76ee",id:"92023-\u5207\u6362\u9ed8\u8ba4\u9879\u76ee",children:[]},{value:"9.20.2.4 \u521b\u5efa\u6a21\u578b\u7248\u672c",id:"92024-\u521b\u5efa\u6a21\u578b\u7248\u672c",children:[]},{value:"9.20.2.5 \u66f4\u65b0\u5230\u6570\u636e\u5e93",id:"92025-\u66f4\u65b0\u5230\u6570\u636e\u5e93",children:[]}]},{value:"9.20.3 \u66f4\u65b0\u6a21\u578b",id:"9203-\u66f4\u65b0\u6a21\u578b",children:[]},{value:"9.20.4 \u5bfc\u51fa Sql",id:"9204-\u5bfc\u51fa-sql",children:[]},{value:"9.20.5 VS Code/Rider/\u4efb\u4f55IDE/\u64cd\u4f5c\u7cfb\u7edf \u65b9\u5f0f",id:"9205-vs-coderider\u4efb\u4f55ide\u64cd\u4f5c\u7cfb\u7edf-\u65b9\u5f0f",children:[{value:"9.20.5.1 \u5b89\u88c5 dotnet ef",id:"92051-\u5b89\u88c5-dotnet-ef",children:[]},{value:"9.20.5.2 cd \u76ee\u5f55",id:"92052-cd-\u76ee\u5f55",children:[]},{value:"9.20.5.3 \u6267\u884c\u547d\u4ee4",id:"92053-\u6267\u884c\u547d\u4ee4",children:[]}]},{value:"9.20.6 \u5e94\u7528\u542f\u52a8\u65f6\u81ea\u52a8\u751f\u6210\u6570\u636e\u5e93",id:"9206-\u5e94\u7528\u542f\u52a8\u65f6\u81ea\u52a8\u751f\u6210\u6570\u636e\u5e93",children:[{value:"9.20.6.1 \u5bf9\u5df2\u7ecf\u751f\u6210 Migrations \u6587\u4ef6\u60c5\u51b5",id:"92061-\u5bf9\u5df2\u7ecf\u751f\u6210-migrations-\u6587\u4ef6\u60c5\u51b5",children:[]},{value:"9.20.6.2 \u5982\u679c\u6ca1\u6709\u751f\u6210\u8fc7 Migrations \u6587\u4ef6\u60c5\u51b5",id:"92062-\u5982\u679c\u6ca1\u6709\u751f\u6210\u8fc7-migrations-\u6587\u4ef6\u60c5\u51b5",children:[]}]},{value:"9.20.7 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"9207-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],m={toc:c};function u(e){var t=e.components,n=(0,i.Z)(e,d);return(0,r.kt)("wrapper",(0,a.Z)({},m,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u5f00\u59cb\u4e4b\u524d")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},(0,r.kt)("inlineCode",{parentName:"p"},"Fur.Web.Entry")," \u5c42\u9700\u8981\u5b89\u88c5 ",(0,r.kt)("inlineCode",{parentName:"p"},"Microsoft.EntityFrameworkCore.Tools")," \u5305\u3002"))),(0,r.kt)("h2",{id:"9201-\u6570\u636e\u5e93\u5f00\u53d1\u65b9\u5f0f"},"9.20.1 \u6570\u636e\u5e93\u5f00\u53d1\u65b9\u5f0f"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u63d0\u4f9b\u4e24\u79cd\u4e3b\u8981\u65b9\u6cd5\u6765 ",(0,r.kt)("strong",{parentName:"p"},"\u4fdd\u6301\u5b9e\u4f53\u6a21\u578b\u548c\u6570\u636e\u5e93\u67b6\u6784\u540c\u6b65"),"\u3002"),(0,r.kt)("p",null,"\u81f3\u4e8e\u6211\u4eec\u5e94\u8be5\u9009\u7528\u54ea\u4e2a\u65b9\u6cd5\uff0c\u8bf7\u786e\u5b9a\u4f60\u662f\u5e0c\u671b\u4ee5\u5b9e\u4f53\u6a21\u578b\u4e3a\u51c6\u8fd8\u662f\u4ee5\u6570\u636e\u5e93\u4e3a\u51c6\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"\u5982\u679c\u5e0c\u671b ",(0,r.kt)("strong",{parentName:"p"},"\u4ee5\u5b9e\u4f53\u6a21\u578b\u4e3a\u51c6"),"\uff0c\u8bf7\u4f7f\u7528\u6b63\u5411\u5de5\u7a0b\uff08Code First\uff09\u3002 \u5bf9\u5b9e\u4f53\u6a21\u578b\u8fdb\u884c\u66f4\u6539\u65f6\uff0c\u6b64\u65b9\u6cd5\u4f1a\u4ee5\u589e\u91cf\u65b9\u5f0f\u5c06\u76f8\u5e94\u67b6\u6784\u66f4\u6539\u5e94\u7528\u5230\u6570\u636e\u5e93\uff0c\u4ee5\u4f7f\u6570\u636e\u5e93\u4fdd\u6301\u4e0e\u5b9e\u4f53\u6a21\u578b\u517c\u5bb9\u3002")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"\u5982\u679c\u5e0c\u671b ",(0,r.kt)("strong",{parentName:"p"},"\u4ee5\u6570\u636e\u5e93\u67b6\u6784\u4e3a\u51c6"),"\uff0c\u8bf7\u4f7f\u7528\u53cd\u5411\u5de5\u7a0b\uff08Database First\uff09\u3002 \u4f7f\u7528\u6b64\u65b9\u6cd5\uff0c\u53ef\u901a\u8fc7\u5c06\u6570\u636e\u5e93\u67b6\u6784\u53cd\u5411\u5de5\u7a0b\u5230\u5b9e\u4f53\u6a21\u578b\u6765\u751f\u6210\u76f8\u5e94\u7684\u5b9e\u4f53\u7c7b\u578b\u3002"))),(0,r.kt)("p",null,"\u672c\u7ae0\u8282\u662f ",(0,r.kt)("strong",{parentName:"p"},"\u6b63\u5411\u5de5\u7a0b\uff08Code First\uff09")," \u7684\u76f8\u5173\u5185\u5bb9\u3002"),(0,r.kt)("h2",{id:"9202-\u64cd\u4f5c\u6307\u5357"},"9.20.2 \u64cd\u4f5c\u6307\u5357"),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u6ce8\u610f")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u9ed8\u8ba4\u6570\u636e\u8fc1\u79fb\u7684\u7a0b\u5e8f\u96c6\u4e3a\uff1a",(0,r.kt)("inlineCode",{parentName:"p"},"Furion.Database.Migrations"),"\uff0c\u6240\u4ee5\u5982\u679c\u60a8\u6539\u4e86\u7a0b\u5e8f\u96c6\u540d\u79f0\u6216\u901a\u8fc7 ",(0,r.kt)("inlineCode",{parentName:"p"},"Nuget")," \u65b9\u5f0f\u5b89\u88c5\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u5305\uff0c\u5219\u9700\u8981\u914d\u7f6e\u8fc1\u79fb\u7a0b\u5e8f\u96c6\u540d\u79f0\uff1a"),(0,r.kt)("pre",{parentName:"div"},(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{4}","{4}":!0},'services.AddDatabaseAccessor(options =>\n{\n options.AddDbPool(DbProvider.Sqlite);\n}, "\u5b58\u653e\u8fc1\u79fb\u6587\u4ef6\u7684\u9879\u76ee\u540d\u79f0");\n')),(0,r.kt)("p",{parentName:"div"},"\u53e6\u5916\uff0c\u5982\u679c\u5e94\u7528\u4e2d\u914d\u7f6e\u4e86\u591a\u4e2a\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\uff0c\u90a3\u4e48\u6240\u6709\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"\u8fc1\u79fb\u547d\u4ee4")," \u90fd\u9700\u8981\u6307\u5b9a ",(0,r.kt)("inlineCode",{parentName:"p"},"-Context \u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u540d\u79f0")," \u53c2\u6570\u3002\u5982\uff1a"),(0,r.kt)("pre",{parentName:"div"},(0,r.kt)("code",{parentName:"pre",className:"language-shell"},"Add-Migration v1.0.0 -Context FurionDbContext\n")))),(0,r.kt)("h3",{id:"92021-\u521b\u5efa\u5b9e\u4f53\u6a21\u578b-person"},"9.20.2.1 \u521b\u5efa\u5b9e\u4f53\u6a21\u578b ",(0,r.kt)("inlineCode",{parentName:"h3"},"Person")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,6,8}","{1,6,8}":!0},"using Furion.DatabaseAccessor;\nusing System;\nusing System.Collections.Generic;\nusing System.ComponentModel.DataAnnotations;\n\nnamespace Furion.Core\n{\n public class Person : Entity\n {\n /// \n /// \u6784\u9020\u51fd\u6570\n /// \n public Person()\n {\n CreatedTime = DateTime.Now;\n IsDeleted = false;\n }\n\n /// \n /// \u59d3\u540d\n /// \n [MaxLength(32)]\n public string Name { get; set; }\n\n /// \n /// \u5e74\u9f84\n /// \n public int Age { get; set; }\n\n /// \n /// \u4f4f\u5740\n /// \n public string Address { get; set; }\n }\n}\n")),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u5b9e\u4f53\u7ea6\u5b9a")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u6240\u6709\u6570\u636e\u5e93\u5b9e\u4f53\u5fc5\u987b\u76f4\u63a5\u6216\u95f4\u63a5\u7ee7\u627f ",(0,r.kt)("inlineCode",{parentName:"p"},"IEntity")," \u63a5\u53e3\u3002"))),(0,r.kt)("h3",{id:"92022-\u6253\u5f00-\u7a0b\u5e8f\u5305\u7ba1\u7406\u63a7\u5236\u53f0"},"9.20.2.2 \u6253\u5f00 ",(0,r.kt)("inlineCode",{parentName:"h3"},"\u7a0b\u5e8f\u5305\u7ba1\u7406\u63a7\u5236\u53f0")),(0,r.kt)("img",{src:(0,o.Z)("img/dbfirst1.png")}),(0,r.kt)("h3",{id:"92023-\u5207\u6362\u9ed8\u8ba4\u9879\u76ee"},"9.20.2.3 \u5207\u6362\u9ed8\u8ba4\u9879\u76ee"),(0,r.kt)("p",null,"\u5c06 ",(0,r.kt)("inlineCode",{parentName:"p"},"\u7a0b\u5e8f\u5305\u7ba1\u7406\u63a7\u5236\u53f0")," \u9ed8\u8ba4\u9879\u76ee\u8bbe\u7f6e\u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion.Database.Migrations")),(0,r.kt)("img",{src:(0,o.Z)("img/codefirst1.png")}),(0,r.kt)("h3",{id:"92024-\u521b\u5efa\u6a21\u578b\u7248\u672c"},"9.20.2.4 \u521b\u5efa\u6a21\u578b\u7248\u672c"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-shell"},"Add-Migration v1.0.0\n")),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u7279\u522b\u8bf4\u660e")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},(0,r.kt)("strong",{parentName:"p"},"v1.0.0")," \u662f\u6b64\u5904\u6570\u636e\u5e93\u66f4\u6539\u7684\u7248\u672c\u53f7\uff0c\u53ef\u4ee5\u5199\u4efb\u4f55\u5b57\u7b26\u4e32\uff0c\u4f46\u63a8\u8350\u5199\u7248\u672c\u53f7\uff0c\u6bcf\u6b21 ",(0,r.kt)("strong",{parentName:"p"},"+1"),"\u3002"))),(0,r.kt)("p",null,"\u6700\u7ec8\u547d\u4ee4\u5982\u4e0b\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-shell"},"PM> Add-Migration v1.0.0\nBuild started...\nBuild succeeded.\nMicrosoft.EntityFrameworkCore.Model.Validation[10400]\n Sensitive data logging is enabled. Log entries and exception messages may include sensitive application data, this mode should only be enabled during development.\nMicrosoft.EntityFrameworkCore.Infrastructure[10403]\n Entity Framework Core 5.0.0-rc.1.20451.13 initialized 'FurionDbContext' using provider 'Microsoft.EntityFrameworkCore.Sqlite' with options: SensitiveDataLoggingEnabled DetailedErrorsEnabled MaxPoolSize=100 MigrationsAssembly=Furion.Database.Migrations\nTo undo this action, use Remove-Migration.\nPM>\n")),(0,r.kt)("p",null,"\u751f\u6210\u6210\u529f\u540e\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"Furion.Database.Migrations")," \u9879\u76ee\u4e0b\u4f1a\u65b0\u589e ",(0,r.kt)("inlineCode",{parentName:"p"},"Migrations")," \u6587\u4ef6\u5939\uff08\u5982\u679c\u6ca1\u6709\uff09\uff0c\u540c\u65f6\u672c\u6b21\u7684\u67b6\u6784\u751f\u6210\u6587\u4ef6\uff0c\u5982\uff1a"),(0,r.kt)("img",{src:(0,o.Z)("img/codefirst3.png")}),(0,r.kt)("h3",{id:"92025-\u66f4\u65b0\u5230\u6570\u636e\u5e93"},"9.20.2.5 \u66f4\u65b0\u5230\u6570\u636e\u5e93"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-shell"},"Update-Database\n")),(0,r.kt)("p",null,"\u6267\u884c\u8be5\u547d\u4ee4\u540e\uff0c\u6570\u636e\u5e93\u5c31\u4f1a\u81ea\u52a8\u6839\u636e\u6a21\u578b\u751f\u6210\u5bf9\u5e94\u7684\u8868\u3002"),(0,r.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u5c0f\u77e5\u8bc6")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u5982\u679c ",(0,r.kt)("inlineCode",{parentName:"p"},"Update-Database")," \u540e\u9762\u5e26\u5b57\u7b26\u4e32\u53c2\u6570\uff0c\u5219\u4f1a\u81ea\u52a8\u8fd8\u539f\u6570\u636e\u5e93\u5230\u6307\u5b9a\u7248\u672c\uff0c\u5982\uff1a"),(0,r.kt)("pre",{parentName:"div"},(0,r.kt)("code",{parentName:"pre",className:"language-shell"},"Update-Database v0.0.3\n")),(0,r.kt)("p",{parentName:"div"},"\u5c06\u6570\u636e\u5e93\u8fd8\u539f\u5230 ",(0,r.kt)("inlineCode",{parentName:"p"},"v0.0.3")," \u7248\u672c"))),(0,r.kt)("h2",{id:"9203-\u66f4\u65b0\u6a21\u578b"},"9.20.3 \u66f4\u65b0\u6a21\u578b"),(0,r.kt)("p",null,"\u5982\u679c\u6a21\u578b\u6539\u53d8\u4e86\uff0c\u91cd\u590d\u4e0a\u9762\u64cd\u4f5c\u5373\u53ef\uff0c\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-shell"},"Add-Migration v1.0.1\n")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-shell"},"Update-Database\n")),(0,r.kt)("h2",{id:"9204-\u5bfc\u51fa-sql"},"9.20.4 \u5bfc\u51fa ",(0,r.kt)("inlineCode",{parentName:"h2"},"Sql")),(0,r.kt)("p",null,"\u6709\u4e9b\u65f6\u5019\uff0c\u6211\u4eec\u6ca1\u6709\u76f4\u63a5\u66f4\u65b0\u6570\u636e\u5e93\u7684\u6743\u9650\uff0c\u6216\u8005\u6015\u51fa\u95ee\u9898\uff0c\u6211\u4eec\u90fd\u4f1a\u5148\u751f\u6210 ",(0,r.kt)("inlineCode",{parentName:"p"},"Sql")," \u770b\u770b\uff0c\u8fd9\u65f6\u5019\u53ea\u9700\u8981\u901a\u8fc7 ",(0,r.kt)("inlineCode",{parentName:"p"},"Script-Migration")," \u5bfc\u51fa\u5373\u53ef\uff0c\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-shell"},"Script-Migration\n")),(0,r.kt)("img",{src:(0,o.Z)("img/codefirst2.png")}),(0,r.kt)("h2",{id:"9205-vs-coderider\u4efb\u4f55ide\u64cd\u4f5c\u7cfb\u7edf-\u65b9\u5f0f"},"9.20.5 ",(0,r.kt)("inlineCode",{parentName:"h2"},"VS Code/Rider/\u4efb\u4f55IDE/\u64cd\u4f5c\u7cfb\u7edf")," \u65b9\u5f0f"),(0,r.kt)("h3",{id:"92051-\u5b89\u88c5-dotnet-ef"},"9.20.5.1 \u5b89\u88c5 ",(0,r.kt)("inlineCode",{parentName:"h3"},"dotnet ef")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-shell"},"dotnet tool install --global dotnet-ef --version 5.0.0-rc.2.20475.6\n")),(0,r.kt)("h3",{id:"92052-cd-\u76ee\u5f55"},"9.20.5.2 ",(0,r.kt)("inlineCode",{parentName:"h3"},"cd")," \u76ee\u5f55"),(0,r.kt)("p",null,"\u901a\u8fc7 ",(0,r.kt)("inlineCode",{parentName:"p"},"VS Code")," \u6253\u5f00 ",(0,r.kt)("inlineCode",{parentName:"p"},".sln")," \u6240\u5728\u7684\u76ee\u5f55\uff0c\u5982\uff1a",(0,r.kt)("inlineCode",{parentName:"p"},"framework"),"\u3002"),(0,r.kt)("p",null,"\u4e4b\u540e\u8fdb\u5165 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion.Database.Migrations")," \u76ee\u5f55"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-shell"},"cd Furion.Database.Migrations\n")),(0,r.kt)("h3",{id:"92053-\u6267\u884c\u547d\u4ee4"},"9.20.5.3 \u6267\u884c\u547d\u4ee4"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-shell"},'dotnet ef migrations add v1.0.0 -s "../Furion.Web.Entry"\n')),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-shell"},'dotnet ef database update -s "../Furion.Web.Entry"\n')),(0,r.kt)("h2",{id:"9206-\u5e94\u7528\u542f\u52a8\u65f6\u81ea\u52a8\u751f\u6210\u6570\u636e\u5e93"},"9.20.6 \u5e94\u7528\u542f\u52a8\u65f6\u81ea\u52a8\u751f\u6210\u6570\u636e\u5e93"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u5efa\u8bae\u5927\u5bb6\u4f7f\u7528\u547d\u4ee4\u65b9\u5f0f\u64cd\u4f5c\u6570\u636e\u5e93\uff0c",(0,r.kt)("strong",{parentName:"p"},"\u5b8c\u5168\u4e0d\u63a8\u8350\u81ea\u52a8\u5316\u751f\u6210\u6570\u636e\u5e93"),"\uff0c\u4f46\u662f\u6709\u4e9b\u7279\u6b8a\u60c5\u51b5\u4e0b\uff0c\u6709\u8fd9\u4e2a\u5fc5\u8981\uff0c\u6545\u5c06\u6b64\u529f\u80fd\u5199\u51fa\uff1a"),(0,r.kt)("h3",{id:"92061-\u5bf9\u5df2\u7ecf\u751f\u6210-migrations-\u6587\u4ef6\u60c5\u51b5"},"9.20.6.1 \u5bf9\u5df2\u7ecf\u751f\u6210 ",(0,r.kt)("inlineCode",{parentName:"h3"},"Migrations")," \u6587\u4ef6\u60c5\u51b5"),(0,r.kt)("p",null,"\u5982\u679c\u5df2\u7ecf\u751f\u6210 ",(0,r.kt)("inlineCode",{parentName:"p"},"Migrations")," \u6587\u4ef6\uff0c\u90a3\u4e48\u53ef\u4ee5\u76f4\u63a5\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Startup.cs")," \u4ee3\u7801\u4e2d\u5b9e\u73b0\u7a0b\u5e8f\u542f\u52a8\u65f6\u81ea\u52a8\u6267\u884c ",(0,r.kt)("inlineCode",{parentName:"p"},"update-database")," \u547d\u4ee4\uff0c\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,4,6,8-9}","{1,4,6,8-9}":!0},"public void Configure(IApplicationBuilder app, IHostingEnvironment env)\n{\n // \u5224\u65ad\u5f00\u53d1\u73af\u5883\uff01\uff01\uff01\u5fc5\u987b\uff01\uff01\uff01\uff01\n if (env.IsDevelopment())\n {\n Scoped.Create((_, scope) =>\n {\n var context = scope.ServiceProvider.GetRequiredService();\n context.Database.Migrate();\n });\n }\n\n // \u5176\u4ed6\u4ee3\u7801\n}\n")),(0,r.kt)("h3",{id:"92062-\u5982\u679c\u6ca1\u6709\u751f\u6210\u8fc7-migrations-\u6587\u4ef6\u60c5\u51b5"},"9.20.6.2 \u5982\u679c\u6ca1\u6709\u751f\u6210\u8fc7 ",(0,r.kt)("inlineCode",{parentName:"h3"},"Migrations")," \u6587\u4ef6\u60c5\u51b5"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,4,6,8-9}","{1,4,6,8-9}":!0},"public void Configure(IApplicationBuilder app, IHostingEnvironment env)\n{\n // \u5224\u65ad\u5f00\u53d1\u73af\u5883\uff01\uff01\uff01\u5fc5\u987b\uff01\uff01\uff01\uff01\n if (env.IsDevelopment())\n {\n Scoped.Create((_, scope) =>\n {\n var context = scope.ServiceProvider.GetRequiredService();\n context.Database.EnsureCreated();\n });\n }\n\n // \u5176\u4ed6\u4ee3\u7801\n}\n")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"\u5982\u679c\u9700\u8981\u5728\u521b\u5efa\u6570\u636e\u5e93\u4e4b\u524d\u5148\u5220\u9664\u65e7\u7684\uff0c\u53ef\u5148\u8c03\u7528 ",(0,r.kt)("inlineCode",{parentName:"strong"},"context.Database.EnsureDeleted();")," \u4ee3\u7801\u3002\u614e\u91cd\uff01\uff01\uff01\uff01\uff01\uff01\uff01\uff01\uff01\uff01\uff01\uff01")),(0,r.kt)("h2",{id:"9207-\u53cd\u9988\u4e0e\u5efa\u8bae"},"9.20.7 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,r.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))),(0,r.kt)("hr",null),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e86\u89e3\u66f4\u591a")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u60f3\u4e86\u89e3\u66f4\u591a ",(0,r.kt)("inlineCode",{parentName:"p"},"\u6b63\u5411\u5de5\u5382")," \u77e5\u8bc6\u53ef\u67e5\u9605 ",(0,r.kt)("a",{parentName:"p",href:"https://docs.microsoft.com/zh-cn/ef/core/managing-schemas/migrations/?tabs=dotnet-core-cli"},"EF Core - \u7ba1\u7406\u6570\u636e\u5e93\u67b6\u6784")," \u7ae0\u8282\u3002"))))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/b6492972.e39a24bb.js b/handbook/build/assets/js/b6492972.e39a24bb.js new file mode 100644 index 00000000000..e16f66b3ea6 --- /dev/null +++ b/handbook/build/assets/js/b6492972.e39a24bb.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[7300],{3905:function(e,t,n){n.d(t,{Zo:function(){return p},kt:function(){return u}});var a=n(7294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var s=a.createContext({}),l=function(e){var t=a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},p=function(e){var t=l(e.components);return a.createElement(s.Provider,{value:t},e.children)},c={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var n=e.components,i=e.mdxType,r=e.originalType,s=e.parentName,p=d(e,["components","mdxType","originalType","parentName"]),m=l(n),u=i,k=m["".concat(s,".").concat(u)]||m[u]||c[u]||r;return n?a.createElement(k,o(o({ref:t},p),{},{components:n})):a.createElement(k,o({ref:t},p))}));function u(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var r=n.length,o=new Array(r);o[0]=m;var d={};for(var s in t)hasOwnProperty.call(t,s)&&(d[s]=t[s]);d.originalType=e,d.mdxType="string"==typeof e?e:i,o[1]=d;for(var l=2;lPerson",id:"92021-\u521b\u5efa\u5b9e\u4f53\u6a21\u578b-person",children:[]},{value:"9.20.2.2 \u6253\u5f00 \u7a0b\u5e8f\u5305\u7ba1\u7406\u63a7\u5236\u53f0",id:"92022-\u6253\u5f00-\u7a0b\u5e8f\u5305\u7ba1\u7406\u63a7\u5236\u53f0",children:[]},{value:"9.20.2.3 \u5207\u6362\u9ed8\u8ba4\u9879\u76ee",id:"92023-\u5207\u6362\u9ed8\u8ba4\u9879\u76ee",children:[]},{value:"9.20.2.4 \u521b\u5efa\u6a21\u578b\u7248\u672c",id:"92024-\u521b\u5efa\u6a21\u578b\u7248\u672c",children:[]},{value:"9.20.2.5 \u66f4\u65b0\u5230\u6570\u636e\u5e93",id:"92025-\u66f4\u65b0\u5230\u6570\u636e\u5e93",children:[]}]},{value:"9.20.3 \u66f4\u65b0\u6a21\u578b",id:"9203-\u66f4\u65b0\u6a21\u578b",children:[]},{value:"9.20.4 \u5bfc\u51fa Sql",id:"9204-\u5bfc\u51fa-sql",children:[]},{value:"9.20.5 VS Code/Rider/\u4efb\u4f55IDE/\u64cd\u4f5c\u7cfb\u7edf \u65b9\u5f0f",id:"9205-vs-coderider\u4efb\u4f55ide\u64cd\u4f5c\u7cfb\u7edf-\u65b9\u5f0f",children:[{value:"9.20.5.1 \u5b89\u88c5 dotnet ef",id:"92051-\u5b89\u88c5-dotnet-ef",children:[]},{value:"9.20.5.2 cd \u76ee\u5f55",id:"92052-cd-\u76ee\u5f55",children:[]},{value:"9.20.5.3 \u6267\u884c\u547d\u4ee4",id:"92053-\u6267\u884c\u547d\u4ee4",children:[]}]},{value:"9.20.6 \u5e94\u7528\u542f\u52a8\u65f6\u81ea\u52a8\u751f\u6210\u6570\u636e\u5e93",id:"9206-\u5e94\u7528\u542f\u52a8\u65f6\u81ea\u52a8\u751f\u6210\u6570\u636e\u5e93",children:[{value:"9.20.6.1 \u5bf9\u5df2\u7ecf\u751f\u6210 Migrations \u6587\u4ef6\u60c5\u51b5",id:"92061-\u5bf9\u5df2\u7ecf\u751f\u6210-migrations-\u6587\u4ef6\u60c5\u51b5",children:[]},{value:"9.20.6.2 \u5982\u679c\u6ca1\u6709\u751f\u6210\u8fc7 Migrations \u6587\u4ef6\u60c5\u51b5",id:"92062-\u5982\u679c\u6ca1\u6709\u751f\u6210\u8fc7-migrations-\u6587\u4ef6\u60c5\u51b5",children:[]}]},{value:"9.20.7 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"9207-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],m={toc:c};function u(e){var t=e.components,n=(0,i.Z)(e,d);return(0,r.kt)("wrapper",(0,a.Z)({},m,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u5f00\u59cb\u4e4b\u524d")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},(0,r.kt)("inlineCode",{parentName:"p"},"Fur.Web.Entry")," \u5c42\u9700\u8981\u5b89\u88c5 ",(0,r.kt)("inlineCode",{parentName:"p"},"Microsoft.EntityFrameworkCore.Tools")," \u5305\u3002"))),(0,r.kt)("h2",{id:"9201-\u6570\u636e\u5e93\u5f00\u53d1\u65b9\u5f0f"},"9.20.1 \u6570\u636e\u5e93\u5f00\u53d1\u65b9\u5f0f"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u63d0\u4f9b\u4e24\u79cd\u4e3b\u8981\u65b9\u6cd5\u6765 ",(0,r.kt)("strong",{parentName:"p"},"\u4fdd\u6301\u5b9e\u4f53\u6a21\u578b\u548c\u6570\u636e\u5e93\u67b6\u6784\u540c\u6b65"),"\u3002"),(0,r.kt)("p",null,"\u81f3\u4e8e\u6211\u4eec\u5e94\u8be5\u9009\u7528\u54ea\u4e2a\u65b9\u6cd5\uff0c\u8bf7\u786e\u5b9a\u4f60\u662f\u5e0c\u671b\u4ee5\u5b9e\u4f53\u6a21\u578b\u4e3a\u51c6\u8fd8\u662f\u4ee5\u6570\u636e\u5e93\u4e3a\u51c6\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"\u5982\u679c\u5e0c\u671b ",(0,r.kt)("strong",{parentName:"p"},"\u4ee5\u5b9e\u4f53\u6a21\u578b\u4e3a\u51c6"),"\uff0c\u8bf7\u4f7f\u7528\u6b63\u5411\u5de5\u7a0b\uff08Code First\uff09\u3002 \u5bf9\u5b9e\u4f53\u6a21\u578b\u8fdb\u884c\u66f4\u6539\u65f6\uff0c\u6b64\u65b9\u6cd5\u4f1a\u4ee5\u589e\u91cf\u65b9\u5f0f\u5c06\u76f8\u5e94\u67b6\u6784\u66f4\u6539\u5e94\u7528\u5230\u6570\u636e\u5e93\uff0c\u4ee5\u4f7f\u6570\u636e\u5e93\u4fdd\u6301\u4e0e\u5b9e\u4f53\u6a21\u578b\u517c\u5bb9\u3002")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("p",{parentName:"li"},"\u5982\u679c\u5e0c\u671b ",(0,r.kt)("strong",{parentName:"p"},"\u4ee5\u6570\u636e\u5e93\u67b6\u6784\u4e3a\u51c6"),"\uff0c\u8bf7\u4f7f\u7528\u53cd\u5411\u5de5\u7a0b\uff08Database First\uff09\u3002 \u4f7f\u7528\u6b64\u65b9\u6cd5\uff0c\u53ef\u901a\u8fc7\u5c06\u6570\u636e\u5e93\u67b6\u6784\u53cd\u5411\u5de5\u7a0b\u5230\u5b9e\u4f53\u6a21\u578b\u6765\u751f\u6210\u76f8\u5e94\u7684\u5b9e\u4f53\u7c7b\u578b\u3002"))),(0,r.kt)("p",null,"\u672c\u7ae0\u8282\u662f ",(0,r.kt)("strong",{parentName:"p"},"\u6b63\u5411\u5de5\u7a0b\uff08Code First\uff09")," \u7684\u76f8\u5173\u5185\u5bb9\u3002"),(0,r.kt)("h2",{id:"9202-\u64cd\u4f5c\u6307\u5357"},"9.20.2 \u64cd\u4f5c\u6307\u5357"),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u6ce8\u610f")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u9ed8\u8ba4\u6570\u636e\u8fc1\u79fb\u7684\u7a0b\u5e8f\u96c6\u4e3a\uff1a",(0,r.kt)("inlineCode",{parentName:"p"},"Furion.Database.Migrations"),"\uff0c\u6240\u4ee5\u5982\u679c\u60a8\u6539\u4e86\u7a0b\u5e8f\u96c6\u540d\u79f0\u6216\u901a\u8fc7 ",(0,r.kt)("inlineCode",{parentName:"p"},"Nuget")," \u65b9\u5f0f\u5b89\u88c5\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u5305\uff0c\u5219\u9700\u8981\u914d\u7f6e\u8fc1\u79fb\u7a0b\u5e8f\u96c6\u540d\u79f0\uff1a"),(0,r.kt)("pre",{parentName:"div"},(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{4}","{4}":!0},'services.AddDatabaseAccessor(options =>\n{\n options.AddDbPool(DbProvider.Sqlite);\n}, "\u5b58\u653e\u8fc1\u79fb\u6587\u4ef6\u7684\u9879\u76ee\u540d\u79f0");\n')),(0,r.kt)("p",{parentName:"div"},"\u53e6\u5916\uff0c\u5982\u679c\u5e94\u7528\u4e2d\u914d\u7f6e\u4e86\u591a\u4e2a\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\uff0c\u90a3\u4e48\u6240\u6709\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"\u8fc1\u79fb\u547d\u4ee4")," \u90fd\u9700\u8981\u6307\u5b9a ",(0,r.kt)("inlineCode",{parentName:"p"},"-Context \u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u540d\u79f0")," \u53c2\u6570\u3002\u5982\uff1a"),(0,r.kt)("pre",{parentName:"div"},(0,r.kt)("code",{parentName:"pre",className:"language-shell"},"Add-Migration v1.0.0 -Context FurionDbContext\n")))),(0,r.kt)("h3",{id:"92021-\u521b\u5efa\u5b9e\u4f53\u6a21\u578b-person"},"9.20.2.1 \u521b\u5efa\u5b9e\u4f53\u6a21\u578b ",(0,r.kt)("inlineCode",{parentName:"h3"},"Person")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,6,8}","{1,6,8}":!0},"using Furion.DatabaseAccessor;\nusing System;\nusing System.Collections.Generic;\nusing System.ComponentModel.DataAnnotations;\n\nnamespace Furion.Core\n{\n public class Person : Entity\n {\n /// \n /// \u6784\u9020\u51fd\u6570\n /// \n public Person()\n {\n CreatedTime = DateTime.Now;\n IsDeleted = false;\n }\n\n /// \n /// \u59d3\u540d\n /// \n [MaxLength(32)]\n public string Name { get; set; }\n\n /// \n /// \u5e74\u9f84\n /// \n public int Age { get; set; }\n\n /// \n /// \u4f4f\u5740\n /// \n public string Address { get; set; }\n }\n}\n")),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u5b9e\u4f53\u7ea6\u5b9a")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u6240\u6709\u6570\u636e\u5e93\u5b9e\u4f53\u5fc5\u987b\u76f4\u63a5\u6216\u95f4\u63a5\u7ee7\u627f ",(0,r.kt)("inlineCode",{parentName:"p"},"IEntity")," \u63a5\u53e3\u3002"))),(0,r.kt)("h3",{id:"92022-\u6253\u5f00-\u7a0b\u5e8f\u5305\u7ba1\u7406\u63a7\u5236\u53f0"},"9.20.2.2 \u6253\u5f00 ",(0,r.kt)("inlineCode",{parentName:"h3"},"\u7a0b\u5e8f\u5305\u7ba1\u7406\u63a7\u5236\u53f0")),(0,r.kt)("img",{src:(0,o.Z)("img/dbfirst1.png")}),(0,r.kt)("h3",{id:"92023-\u5207\u6362\u9ed8\u8ba4\u9879\u76ee"},"9.20.2.3 \u5207\u6362\u9ed8\u8ba4\u9879\u76ee"),(0,r.kt)("p",null,"\u5c06 ",(0,r.kt)("inlineCode",{parentName:"p"},"\u7a0b\u5e8f\u5305\u7ba1\u7406\u63a7\u5236\u53f0")," \u9ed8\u8ba4\u9879\u76ee\u8bbe\u7f6e\u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion.Database.Migrations")),(0,r.kt)("img",{src:(0,o.Z)("img/codefirst1.png")}),(0,r.kt)("h3",{id:"92024-\u521b\u5efa\u6a21\u578b\u7248\u672c"},"9.20.2.4 \u521b\u5efa\u6a21\u578b\u7248\u672c"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-shell"},"Add-Migration v1.0.0\n")),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u7279\u522b\u8bf4\u660e")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},(0,r.kt)("strong",{parentName:"p"},"v1.0.0")," \u662f\u6b64\u5904\u6570\u636e\u5e93\u66f4\u6539\u7684\u7248\u672c\u53f7\uff0c\u53ef\u4ee5\u5199\u4efb\u4f55\u5b57\u7b26\u4e32\uff0c\u4f46\u63a8\u8350\u5199\u7248\u672c\u53f7\uff0c\u6bcf\u6b21 ",(0,r.kt)("strong",{parentName:"p"},"+1"),"\u3002"))),(0,r.kt)("p",null,"\u6700\u7ec8\u547d\u4ee4\u5982\u4e0b\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-shell"},"PM> Add-Migration v1.0.0\nBuild started...\nBuild succeeded.\nMicrosoft.EntityFrameworkCore.Model.Validation[10400]\n Sensitive data logging is enabled. Log entries and exception messages may include sensitive application data, this mode should only be enabled during development.\nMicrosoft.EntityFrameworkCore.Infrastructure[10403]\n Entity Framework Core 5.0.0-rc.1.20451.13 initialized 'FurionDbContext' using provider 'Microsoft.EntityFrameworkCore.Sqlite' with options: SensitiveDataLoggingEnabled DetailedErrorsEnabled MaxPoolSize=100 MigrationsAssembly=Furion.Database.Migrations\nTo undo this action, use Remove-Migration.\nPM>\n")),(0,r.kt)("p",null,"\u751f\u6210\u6210\u529f\u540e\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"Furion.Database.Migrations")," \u9879\u76ee\u4e0b\u4f1a\u65b0\u589e ",(0,r.kt)("inlineCode",{parentName:"p"},"Migrations")," \u6587\u4ef6\u5939\uff08\u5982\u679c\u6ca1\u6709\uff09\uff0c\u540c\u65f6\u672c\u6b21\u7684\u67b6\u6784\u751f\u6210\u6587\u4ef6\uff0c\u5982\uff1a"),(0,r.kt)("img",{src:(0,o.Z)("img/codefirst3.png")}),(0,r.kt)("h3",{id:"92025-\u66f4\u65b0\u5230\u6570\u636e\u5e93"},"9.20.2.5 \u66f4\u65b0\u5230\u6570\u636e\u5e93"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-shell"},"Update-Database\n")),(0,r.kt)("p",null,"\u6267\u884c\u8be5\u547d\u4ee4\u540e\uff0c\u6570\u636e\u5e93\u5c31\u4f1a\u81ea\u52a8\u6839\u636e\u6a21\u578b\u751f\u6210\u5bf9\u5e94\u7684\u8868\u3002"),(0,r.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u5c0f\u77e5\u8bc6")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u5982\u679c ",(0,r.kt)("inlineCode",{parentName:"p"},"Update-Database")," \u540e\u9762\u5e26\u5b57\u7b26\u4e32\u53c2\u6570\uff0c\u5219\u4f1a\u81ea\u52a8\u8fd8\u539f\u6570\u636e\u5e93\u5230\u6307\u5b9a\u7248\u672c\uff0c\u5982\uff1a"),(0,r.kt)("pre",{parentName:"div"},(0,r.kt)("code",{parentName:"pre",className:"language-shell"},"Update-Database v0.0.3\n")),(0,r.kt)("p",{parentName:"div"},"\u5c06\u6570\u636e\u5e93\u8fd8\u539f\u5230 ",(0,r.kt)("inlineCode",{parentName:"p"},"v0.0.3")," \u7248\u672c"))),(0,r.kt)("h2",{id:"9203-\u66f4\u65b0\u6a21\u578b"},"9.20.3 \u66f4\u65b0\u6a21\u578b"),(0,r.kt)("p",null,"\u5982\u679c\u6a21\u578b\u6539\u53d8\u4e86\uff0c\u91cd\u590d\u4e0a\u9762\u64cd\u4f5c\u5373\u53ef\uff0c\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-shell"},"Add-Migration v1.0.1\n")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-shell"},"Update-Database\n")),(0,r.kt)("h2",{id:"9204-\u5bfc\u51fa-sql"},"9.20.4 \u5bfc\u51fa ",(0,r.kt)("inlineCode",{parentName:"h2"},"Sql")),(0,r.kt)("p",null,"\u6709\u4e9b\u65f6\u5019\uff0c\u6211\u4eec\u6ca1\u6709\u76f4\u63a5\u66f4\u65b0\u6570\u636e\u5e93\u7684\u6743\u9650\uff0c\u6216\u8005\u6015\u51fa\u95ee\u9898\uff0c\u6211\u4eec\u90fd\u4f1a\u5148\u751f\u6210 ",(0,r.kt)("inlineCode",{parentName:"p"},"Sql")," \u770b\u770b\uff0c\u8fd9\u65f6\u5019\u53ea\u9700\u8981\u901a\u8fc7 ",(0,r.kt)("inlineCode",{parentName:"p"},"Script-Migration")," \u5bfc\u51fa\u5373\u53ef\uff0c\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-shell"},"Script-Migration\n")),(0,r.kt)("img",{src:(0,o.Z)("img/codefirst2.png")}),(0,r.kt)("h2",{id:"9205-vs-coderider\u4efb\u4f55ide\u64cd\u4f5c\u7cfb\u7edf-\u65b9\u5f0f"},"9.20.5 ",(0,r.kt)("inlineCode",{parentName:"h2"},"VS Code/Rider/\u4efb\u4f55IDE/\u64cd\u4f5c\u7cfb\u7edf")," \u65b9\u5f0f"),(0,r.kt)("h3",{id:"92051-\u5b89\u88c5-dotnet-ef"},"9.20.5.1 \u5b89\u88c5 ",(0,r.kt)("inlineCode",{parentName:"h3"},"dotnet ef")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-shell"},"dotnet tool install --global dotnet-ef --version 5.0.0-rc.2.20475.6\n")),(0,r.kt)("h3",{id:"92052-cd-\u76ee\u5f55"},"9.20.5.2 ",(0,r.kt)("inlineCode",{parentName:"h3"},"cd")," \u76ee\u5f55"),(0,r.kt)("p",null,"\u901a\u8fc7 ",(0,r.kt)("inlineCode",{parentName:"p"},"VS Code")," \u6253\u5f00 ",(0,r.kt)("inlineCode",{parentName:"p"},".sln")," \u6240\u5728\u7684\u76ee\u5f55\uff0c\u5982\uff1a",(0,r.kt)("inlineCode",{parentName:"p"},"framework"),"\u3002"),(0,r.kt)("p",null,"\u4e4b\u540e\u8fdb\u5165 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion.Database.Migrations")," \u76ee\u5f55"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-shell"},"cd Furion.Database.Migrations\n")),(0,r.kt)("h3",{id:"92053-\u6267\u884c\u547d\u4ee4"},"9.20.5.3 \u6267\u884c\u547d\u4ee4"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-shell"},'dotnet ef migrations add v1.0.0 -s "../Furion.Web.Entry"\n')),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-shell"},'dotnet ef database update -s "../Furion.Web.Entry"\n')),(0,r.kt)("h2",{id:"9206-\u5e94\u7528\u542f\u52a8\u65f6\u81ea\u52a8\u751f\u6210\u6570\u636e\u5e93"},"9.20.6 \u5e94\u7528\u542f\u52a8\u65f6\u81ea\u52a8\u751f\u6210\u6570\u636e\u5e93"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u5efa\u8bae\u5927\u5bb6\u4f7f\u7528\u547d\u4ee4\u65b9\u5f0f\u64cd\u4f5c\u6570\u636e\u5e93\uff0c",(0,r.kt)("strong",{parentName:"p"},"\u5b8c\u5168\u4e0d\u63a8\u8350\u81ea\u52a8\u5316\u751f\u6210\u6570\u636e\u5e93"),"\uff0c\u4f46\u662f\u6709\u4e9b\u7279\u6b8a\u60c5\u51b5\u4e0b\uff0c\u6709\u8fd9\u4e2a\u5fc5\u8981\uff0c\u6545\u5c06\u6b64\u529f\u80fd\u5199\u51fa\uff1a"),(0,r.kt)("h3",{id:"92061-\u5bf9\u5df2\u7ecf\u751f\u6210-migrations-\u6587\u4ef6\u60c5\u51b5"},"9.20.6.1 \u5bf9\u5df2\u7ecf\u751f\u6210 ",(0,r.kt)("inlineCode",{parentName:"h3"},"Migrations")," \u6587\u4ef6\u60c5\u51b5"),(0,r.kt)("p",null,"\u5982\u679c\u5df2\u7ecf\u751f\u6210 ",(0,r.kt)("inlineCode",{parentName:"p"},"Migrations")," \u6587\u4ef6\uff0c\u90a3\u4e48\u53ef\u4ee5\u76f4\u63a5\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Startup.cs")," \u4ee3\u7801\u4e2d\u5b9e\u73b0\u7a0b\u5e8f\u542f\u52a8\u65f6\u81ea\u52a8\u6267\u884c ",(0,r.kt)("inlineCode",{parentName:"p"},"update-database")," \u547d\u4ee4\uff0c\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,4,6,8-9}","{1,4,6,8-9}":!0},"public void Configure(IApplicationBuilder app, IHostingEnvironment env)\n{\n // \u5224\u65ad\u5f00\u53d1\u73af\u5883\uff01\uff01\uff01\u5fc5\u987b\uff01\uff01\uff01\uff01\n if (env.IsDevelopment())\n {\n Scoped.Create((_, scope) =>\n {\n var context = scope.ServiceProvider.GetRequiredService();\n context.Database.Migrate();\n });\n }\n\n // \u5176\u4ed6\u4ee3\u7801\n}\n")),(0,r.kt)("h3",{id:"92062-\u5982\u679c\u6ca1\u6709\u751f\u6210\u8fc7-migrations-\u6587\u4ef6\u60c5\u51b5"},"9.20.6.2 \u5982\u679c\u6ca1\u6709\u751f\u6210\u8fc7 ",(0,r.kt)("inlineCode",{parentName:"h3"},"Migrations")," \u6587\u4ef6\u60c5\u51b5"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,4,6,8-9}","{1,4,6,8-9}":!0},"public void Configure(IApplicationBuilder app, IHostingEnvironment env)\n{\n // \u5224\u65ad\u5f00\u53d1\u73af\u5883\uff01\uff01\uff01\u5fc5\u987b\uff01\uff01\uff01\uff01\n if (env.IsDevelopment())\n {\n Scoped.Create((_, scope) =>\n {\n var context = scope.ServiceProvider.GetRequiredService();\n context.Database.EnsureCreated();\n });\n }\n\n // \u5176\u4ed6\u4ee3\u7801\n}\n")),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"\u5982\u679c\u9700\u8981\u5728\u521b\u5efa\u6570\u636e\u5e93\u4e4b\u524d\u5148\u5220\u9664\u65e7\u7684\uff0c\u53ef\u5148\u8c03\u7528 ",(0,r.kt)("inlineCode",{parentName:"strong"},"context.Database.EnsureDeleted();")," \u4ee3\u7801\u3002\u614e\u91cd\uff01\uff01\uff01\uff01\uff01\uff01\uff01\uff01\uff01\uff01\uff01\uff01")),(0,r.kt)("h2",{id:"9207-\u53cd\u9988\u4e0e\u5efa\u8bae"},"9.20.7 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,r.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))),(0,r.kt)("hr",null),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e86\u89e3\u66f4\u591a")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u60f3\u4e86\u89e3\u66f4\u591a ",(0,r.kt)("inlineCode",{parentName:"p"},"\u6b63\u5411\u5de5\u5382")," \u77e5\u8bc6\u53ef\u67e5\u9605 ",(0,r.kt)("a",{parentName:"p",href:"https://docs.microsoft.com/zh-cn/ef/core/managing-schemas/migrations/?tabs=dotnet-core-cli"},"EF Core - \u7ba1\u7406\u6570\u636e\u5e93\u67b6\u6784")," \u7ae0\u8282\u3002"))))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/b753a5b5.69d79e32.js b/handbook/build/assets/js/b753a5b5.69d79e32.js new file mode 100644 index 00000000000..ec552967cb9 --- /dev/null +++ b/handbook/build/assets/js/b753a5b5.69d79e32.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[4954],{3905:function(e,n,a){a.d(n,{Zo:function(){return c},kt:function(){return m}});var t=a(7294);function r(e,n,a){return n in e?Object.defineProperty(e,n,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[n]=a,e}function i(e,n){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n&&(t=t.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),a.push.apply(a,t)}return a}function o(e){for(var n=1;n=0||(r[a]=e[a]);return r}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(t=0;t=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var s=t.createContext({}),d=function(e){var n=t.useContext(s),a=n;return e&&(a="function"==typeof e?e(n):o(o({},n),e)),a},c=function(e){var n=d(e.components);return t.createElement(s.Provider,{value:n},e.children)},p={inlineCode:"code",wrapper:function(e){var n=e.children;return t.createElement(t.Fragment,{},n)}},u=t.forwardRef((function(e,n){var a=e.components,r=e.mdxType,i=e.originalType,s=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),u=d(a),m=r,N=u["".concat(s,".").concat(m)]||u[m]||p[m]||i;return a?t.createElement(N,o(o({ref:n},c),{},{components:a})):t.createElement(N,o({ref:n},c))}));function m(e,n){var a=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var i=a.length,o=new Array(i);o[0]=u;var l={};for(var s in n)hasOwnProperty.call(n,s)&&(l[s]=n[s]);l.originalType=e,l.mdxType="string"==typeof e?e:r,o[1]=l;for(var d=2;dSql",id:"9151-\u5173\u4e8e-sql",children:[]},{value:"9.15.2 \u61d2\u4eba\u65e0\u654c Sql \ud83d\udc2e",id:"9152-\u61d2\u4eba\u65e0\u654c-sql-",children:[{value:"9.15.2.1 \u8fd4\u56de DataTable",id:"91521-\u8fd4\u56de-datatable",children:[]},{value:"9.15.2.2 \u8fd4\u56de List<T>",id:"91522-\u8fd4\u56de-listt",children:[]},{value:"9.15.2.3 \u8fd4\u56de DataSet",id:"91523-\u8fd4\u56de-dataset",children:[]},{value:"9.15.2.4 \u8fd4\u56de Tuple<T1,...T8>",id:"91524-\u8fd4\u56de-tuplet1t8",children:[]},{value:"9.15.2.5 \u8fd4\u56de \u5355\u884c\u5355\u5217",id:"91525-\u8fd4\u56de-\u5355\u884c\u5355\u5217",children:[]},{value:"9.15.2.6 \u8fd4\u56de \u53d7\u5f71\u54cd\u884c\u6570",id:"91526-\u8fd4\u56de-\u53d7\u5f71\u54cd\u884c\u6570",children:[]}]},{value:"9.15.3 \u61d2\u4eba\u65e0\u654c \u5b58\u50a8\u8fc7\u7a0b \ud83d\udc2e",id:"9153-\u61d2\u4eba\u65e0\u654c-\u5b58\u50a8\u8fc7\u7a0b-",children:[{value:"9.15.3.1 \u8fd4\u56de DataTable",id:"91531-\u8fd4\u56de-datatable",children:[]},{value:"9.15.3.2 \u8fd4\u56de List<T>",id:"91532-\u8fd4\u56de-listt",children:[]},{value:"9.15.3.3 \u8fd4\u56de DataSet",id:"91533-\u8fd4\u56de-dataset",children:[]},{value:"9.15.3.4 \u8fd4\u56de Tuple<T1,...T8>",id:"91534-\u8fd4\u56de-tuplet1t8",children:[]},{value:"9.15.3.5 \u8fd4\u56de \u5355\u884c\u5355\u5217",id:"91535-\u8fd4\u56de-\u5355\u884c\u5355\u5217",children:[]},{value:"9.15.3.6 \u8fd4\u56de \u53d7\u5f71\u54cd\u884c\u6570",id:"91536-\u8fd4\u56de-\u53d7\u5f71\u54cd\u884c\u6570",children:[]},{value:"9.15.3.7 \u5e26 OUTPUT/RETURN \u8fd4\u56de",id:"91537-\u5e26-outputreturn-\u8fd4\u56de",children:[]}]},{value:"9.15.4 \u61d2\u4eba\u65e0\u654c \u51fd\u6570 \ud83d\udc2e",id:"9154-\u61d2\u4eba\u65e0\u654c-\u51fd\u6570-",children:[{value:"9.15.4.1 \u6807\u91cf\u51fd\u6570",id:"91541-\u6807\u91cf\u51fd\u6570",children:[]},{value:"9.15.4.2 \u8868\u503c\u51fd\u6570",id:"91542-\u8868\u503c\u51fd\u6570",children:[]}]},{value:"9.15.5 \u8bbe\u7f6e\u8d85\u65f6\u65f6\u95f4",id:"9155-\u8bbe\u7f6e\u8d85\u65f6\u65f6\u95f4",children:[]},{value:"9.15.6 ISqlRepository \u64cd\u4f5c",id:"9156-isqlrepository-\u64cd\u4f5c",children:[]},{value:"9.15.7 IRepository \u64cd\u4f5c",id:"9157-irepository-\u64cd\u4f5c",children:[]},{value:"9.15.8 IRepository<TEntity> \u64cd\u4f5c",id:"9158-irepositorytentity-\u64cd\u4f5c",children:[]},{value:"9.15.9 \u5173\u4e8e Sql \u53c2\u6570",id:"9159-\u5173\u4e8e-sql-\u53c2\u6570",children:[]},{value:"9.15.10 \u591a\u6570\u636e\u5e93 Sql \u64cd\u4f5c \ud83d\udcaf \ud83d\udc9b",id:"91510-\u591a\u6570\u636e\u5e93-sql-\u64cd\u4f5c--",children:[{value:"9.15.10.1 \u61d2\u4eba\u65e0\u654c \ud83d\udc2e \u65b9\u5f0f",id:"915101-\u61d2\u4eba\u65e0\u654c--\u65b9\u5f0f",children:[]},{value:"9.15.10.2 ISqlRepository \u65b9\u5f0f",id:"915102-isqlrepository-\u65b9\u5f0f",children:[]},{value:"9.15.10.3 IRepository \u65b9\u5f0f",id:"915103-irepository-\u65b9\u5f0f",children:[]},{value:"9.15.10.4 IRepository<TEntity> \u65b9\u5f0f",id:"915104-irepositorytentity-\u65b9\u5f0f",children:[]}]},{value:"9.15.11 \u5207\u6362\u6570\u636e\u5e93",id:"91511-\u5207\u6362\u6570\u636e\u5e93",children:[]},{value:"9.15.12 \u591a\u7ebf\u7a0b\u5171\u4eab\u4f5c\u7528\u57df",id:"91512-\u591a\u7ebf\u7a0b\u5171\u4eab\u4f5c\u7528\u57df",children:[]},{value:"9.15.13 \u9759\u6001 Default \u65b9\u5f0f\u6784\u5efa",id:"91513-\u9759\u6001-default-\u65b9\u5f0f\u6784\u5efa",children:[]},{value:"9.15.14 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"91514-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],p={toc:c};function u(e){var n=e.components,a=(0,r.Z)(e,o);return(0,i.kt)("wrapper",(0,t.Z)({},p,a,{components:n,mdxType:"MDXLayout"}),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u6e29\u99a8\u63d0\u793a")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u63a8\u8350\u4f7f\u7528 \u300a",(0,i.kt)("a",{parentName:"p",href:"/furion/docs/dbcontext-sql-proxy"},"9.17 Sql \u9ad8\u7ea7\u4ee3\u7406"),"\u300b\u4ee3\u66ff\u672c\u7ae0\u8282\u529f\u80fd\u3002",(0,i.kt)("inlineCode",{parentName:"p"},"Sql \u9ad8\u7ea7\u4ee3\u7406")," \u80fd\u591f\u63d0\u4f9b\u66f4\u5bb9\u6613\u4e14\u66f4\u6613\u7ef4\u62a4\u7684\u65b9\u5f0f\u3002"))),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4f8b\u5b50\u8bf4\u660e")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u672c\u7ae0\u8282\u4f8b\u5b50\u5747\u4ee5 ",(0,i.kt)("inlineCode",{parentName:"p"},"sql server")," \u6570\u636e\u5e93\u5199\u7684\u4f8b\u5b50\uff0c\u547d\u4ee4\u53c2\u6570\u7edf\u4e00\u7528 ",(0,i.kt)("inlineCode",{parentName:"p"},"@")," \u7b26\u53f7\uff0c\u4f46\u4e0d\u540c\u6570\u636e\u5e93\u7684\u53c2\u6570\u524d\u7f00\u6709\u6240\u4e0d\u540c\uff0c\u5982\uff1a",(0,i.kt)("inlineCode",{parentName:"p"},"sql server")," \u91c7\u7528 ",(0,i.kt)("inlineCode",{parentName:"p"},"@"),"\uff0coracle \u91c7\u7528 ",(0,i.kt)("inlineCode",{parentName:"p"},":"),"\uff0cmy sql \u91c7\u7528 ",(0,i.kt)("inlineCode",{parentName:"p"},"?"),"\u3002"))),(0,i.kt)("h2",{id:"9151-\u5173\u4e8e-sql"},"9.15.1 \u5173\u4e8e ",(0,i.kt)("inlineCode",{parentName:"h2"},"Sql")),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u975e\u5e38\u591a\u4e14\u7075\u6d3b\u7684 ",(0,i.kt)("inlineCode",{parentName:"p"},"sql")," \u64cd\u4f5c\u65b9\u6cd5\uff0c\u4e14\u6027\u80fd\u4e0d\u8f93\u4e8e ",(0,i.kt)("inlineCode",{parentName:"p"},"dapper"),"\uff0c\u540c\u65f6\u903c\u8fd1 ",(0,i.kt)("inlineCode",{parentName:"p"},"ADO.NET")," \u539f\u751f\u64cd\u4f5c\u3002"),(0,i.kt)("h2",{id:"9152-\u61d2\u4eba\u65e0\u654c-sql-"},"9.15.2 \u61d2\u4eba\u65e0\u654c ",(0,i.kt)("inlineCode",{parentName:"h2"},"Sql")," \ud83d\udc2e"),(0,i.kt)("h3",{id:"91521-\u8fd4\u56de-datatable"},"9.15.2.1 \u8fd4\u56de ",(0,i.kt)("inlineCode",{parentName:"h3"},"DataTable")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// ==== \u540c\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar dataTable = "select * from person".SqlQuery();\n\n// \u793a\u4f8b\u4e8c\nvar dataTable = "select top 10 * from person where id > @id".SqlQuery(new {id = 10});\n\n// \u793a\u4f8b\u4e09\nvar dataTable = "select Id, Name, Age from person where name like @name".SqlQuery(new Dictionary{ {"name", "%Furion%"} });\n\n// \u793a\u4f8b\u56db\nvar dataTable = "select * from person where name=@name limit 1,10".SqlQuery(new []{ new MySqlParameter("name","Furion") });\n\n// \u793a\u4f8b\u4e94\nvar dataTable = "select * from person where id>@id and name like @name".SqlQuery(new YourModel { Id = 1, Name = "%Furion%" });\n\n// \u793a\u4f8b\u516d\nvar dataTable = "exec PROC_GetPerson @id".SqlQuery(new {id = 10});\n\n// \u793a\u4f8b\u4e03\nvar dataTable = "select * from FN_GetPersons(@id)".SqlQuery(new {id = 10});\n\n// \u793a\u4f8b\u516b\nvar dataTable = @"\nselect * from person p\nleft join personDetail pd on p.Id == pd.pid\nwhere p.Id > @id;".SqlQuery(new {id = 10});\n\n// ==== \u5f02\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar dataTable = await "select * from person".SqlQueryAsync();\n\n// \u793a\u4f8b\u4e8c\nvar dataTable = await "select top 10 * from person where id > @id".SqlQueryAsync(new {id = 10});\n\n// \u793a\u4f8b\u4e09\nvar dataTable = await "select Id, Name, Age from person where name like @name".SqlQueryAsync(new Dictionary{ {"name", "%Furion%"} });\n\n// \u793a\u4f8b\u56db\nvar dataTable = await "select * from person where name=@name limit 1,10".SqlQueryAsync(new []{ new MySqlParameter("name","Furion") });\n\n// \u793a\u4f8b\u4e94\nvar dataTable = await "select * from person where id>@id and name like @name".SqlQueryAsync(new YourModel { Id = 1, Name = "%Furion%" });\n\n// \u793a\u4f8b\u516d\nvar dataTable = await "exec PROC_GetPerson @id".SqlQueryAsync(new {id = 10});\n\n// \u793a\u4f8b\u4e03\nvar dataTable = await "select * from FN_GetPersons(@id)".SqlQueryAsync(new {id = 10});\n\n// \u793a\u4f8b\u516b\nvar dataTable = await @"\nselect * from person p\nleft join personDetail pd on p.Id == pd.pid\nwhere p.Id > @id;".SqlQueryAsync(new {id = 10});\n')),(0,i.kt)("h3",{id:"91522-\u8fd4\u56de-listt"},"9.15.2.2 \u8fd4\u56de ",(0,i.kt)("inlineCode",{parentName:"h3"},"List")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// ==== \u540c\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar persons = "select * from person".SqlQuery();\n\n// \u793a\u4f8b\u4e8c\nvar persons = "select top 10 * from person where id > @id".SqlQuery(new {id = 10});\n\n// \u793a\u4f8b\u4e09\nvar persons = "select Id, Name, Age from person where name like @name".SqlQuery(new Dictionary{ {"name", "%Furion%"} });\n\n// \u793a\u4f8b\u56db\nvar persons = "select * from person where name=@name limit 1,10".SqlQuery(new []{ new MySqlParameter("name","Furion") });\n\n// \u793a\u4f8b\u4e94\nvar persons = "select * from person where id>@id and name like @name".SqlQuery(new YourModel { Id = 1, Name = "%Furion%" });\n\n// \u793a\u4f8b\u516d\nvar persons = "exec PROC_GetPerson @id".SqlQuery(new {id = 10});\n\n// \u793a\u4f8b\u4e03\nvar persons = "select * from FN_GetPersons(@id)".SqlQuery(new {id = 10});\n\n// \u793a\u4f8b\u516b\nvar persons = @"\nselect * from person p\nleft join personDetail pd on p.Id == pd.pid\nwhere p.Id > @id;".SqlQuery(new {id = 10});\n\n// ==== \u5f02\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar persons = await "select * from person".SqlQueryAsync();\n\n// \u793a\u4f8b\u4e8c\nvar persons = await "select top 10 * from person where id > @id".SqlQueryAsync(new {id = 10});\n\n// \u793a\u4f8b\u4e09\nvar persons = await "select Id, Name, Age from person where name like @name".SqlQueryAsync(new Dictionary{ {"name", "%Furion%"} });\n\n// \u793a\u4f8b\u56db\nvar persons = await "select * from person where name=@name limit 1,10".SqlQueryAsync(new []{ new MySqlParameter("name","Furion") });\n\n// \u793a\u4f8b\u4e94\nvar persons = await "select * from person where id>@id and name like @name".SqlQueryAsync(new YourModel { Id = 1, Name = "%Furion%" });\n\n// \u793a\u4f8b\u516d\nvar persons = await "exec PROC_GetPerson @id".SqlQueryAsync(new {id = 10});\n\n// \u793a\u4f8b\u4e03\nvar persons = await "select * from FN_GetPersons(@id)".SqlQueryAsync(new {id = 10});\n\n// \u793a\u4f8b\u516b\nvar persons = await @"\nselect * from person p\nleft join personDetail pd on p.Id == pd.pid\nwhere p.Id > @id;".SqlQueryAsync(new {id = 10});\n')),(0,i.kt)("h3",{id:"91523-\u8fd4\u56de-dataset"},"9.15.2.3 \u8fd4\u56de ",(0,i.kt)("inlineCode",{parentName:"h3"},"DataSet")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// ==== \u540c\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar dataSet = @"\nselect * from person;\nselect * from student;".SqlQueries();\n\n// \u793a\u4f8b\u4e8c\nvar dataSet = @"\nselect * from person where Id > @id;\nselect * from student where Name like @name;".SqlQueries(new {id = 1, name = "%furion%"});\n\n// \u793a\u4f8b\u4e09\nvar dataSet = @"\nselect * from person;\nexec PROC_GetStudents(@id);\nselect \'Furion\';\nselect * from FN_GetPerson(@id);".SqlQueries(new {id = 1});\n\n// ==== \u5f02\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar dataSet = await @"\nselect * from person;\nselect * from student;".SqlQueriesAsync();\n\n// \u793a\u4f8b\u4e8c\nvar dataSet = await @"\nselect * from person where Id > @id;\nselect * from student where Name like @name;".SqlQueriesAsync(new {id = 1, name = "%furion%"});\n\n// \u793a\u4f8b\u4e09\nvar dataSet = await @"\nselect * from person;\nexec PROC_GetStudents(@id);\nselect \'Furion\';\nselect * from FN_GetPerson(@id);".SqlQueriesAsync(new {id = 1});\n')),(0,i.kt)("h3",{id:"91524-\u8fd4\u56de-tuplet1t8"},"9.15.2.4 \u8fd4\u56de ",(0,i.kt)("inlineCode",{parentName:"h3"},"Tuple")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// ==== \u540c\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar (persons, students) = @"\nselect * from person;\nselect * from student;".SqlQueries();\n\n// \u793a\u4f8b\u4e8c\nvar (persons, students) = @"\nselect * from person where Id > @id;\nselect * from student where Name like @name;".SqlQueries(new {id = 1, name = "%furion%"});\n\n// \u793a\u4f8b\u4e09\nvar (persons, students, string, PersonDto) = @"\nselect * from person;\nexec PROC_GetStudents(@id);\nselect \'Furion\';\nselect * from FN_GetPerson(@id);".SqlQueries(new {id = 1});\n\n// ==== \u5f02\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar (persons, students) = await @"\nselect * from person;\nselect * from student;".SqlQueriesAsync();\n\n// \u793a\u4f8b\u4e8c\nvar (persons, students) = await @"\nselect * from person where Id > @id;\nselect * from student where Name like @name;".SqlQueriesAsync(new {id = 1, name = "%furion%"});\n\n// \u793a\u4f8b\u4e09\nvar (persons, students, string, PersonDto) = await @"\nselect * from person;\nexec PROC_GetStudents(@id);\nselect \'Furion\';\nselect * from FN_GetPerson(@id);".SqlQueriesAsync(new {id = 1});\n')),(0,i.kt)("h3",{id:"91525-\u8fd4\u56de-\u5355\u884c\u5355\u5217"},"9.15.2.5 \u8fd4\u56de \u5355\u884c\u5355\u5217"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// ==== \u540c\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar value = "select Name from person where id = @id".SqlScalar(new {id = 1});\n\n// \u793a\u4f8b\u4e8c\nvar value = "select Name from person where id = @id".SqlScalar(new {id = 1});\n\n// \u793a\u4f8b\u4e09\nvar value = "select Age from person where id = @id".SqlScalar(new {id = 1});\n\n// ==== \u5f02\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar value = await "select Name from person where id = @id".SqlScalarAsync(new {id = 1});\n\n// \u793a\u4f8b\u4e8c\nvar value = await "select Name from person where id = @id".SqlScalarAsync(new {id = 1});\n\n// \u793a\u4f8b\u4e09\nvar value = await "select Age from person where id = @id".SqlScalarAsync(new {id = 1});\n')),(0,i.kt)("h3",{id:"91526-\u8fd4\u56de-\u53d7\u5f71\u54cd\u884c\u6570"},"9.15.2.6 \u8fd4\u56de \u53d7\u5f71\u54cd\u884c\u6570"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// ==== \u540c\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar rowEffects = "insert into person(Name,Age,Address) values(@name,@age,@address)".SqlNonQuery(person);\n\n// \u793a\u4f8b\u4e8c\nvar rowEffects = @"\ninsert into person(Name,Age,Address) values(@name,@age,@address);\ninsert into person(Name,Age,Address) values(@name,@age,@address);".SqlNonQuery(persons);\n\n// \u793a\u4f8b\u4e09\nvar rowEffects = "update person set name=@name where id=@id".SqlNonQuery(new {id=1, name="\u767e\u5c0f\u50e7"});\n\n// \u793a\u4f8b\u56db\nvar rowEffects = "delete from person where @id > 10".SqlNonQuery(new {id=1});\n\n// ==== \u5f02\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar rowEffects = await "insert into person(Name,Age,Address) values(@name,@age,@address)".SqlNonQueryAsync(person);\n\n// \u793a\u4f8b\u4e8c\nvar rowEffects = @"\ninsert into person(Name,Age,Address) values(@name,@age,@address);\ninsert into person(Name,Age,Address) values(@name,@age,@address);".SqlNonQueryAsync(persons);\n\n// \u793a\u4f8b\u4e09\nvar rowEffects = await "update person set name=@name where id=@id".SqlNonQueryAsync(new {id=1, name="\u767e\u5c0f\u50e7"});\n\n// \u793a\u4f8b\u56db\nvar rowEffects = await "delete from person where @id > 10".SqlNonQueryAsync(new {id=1});\n')),(0,i.kt)("h2",{id:"9153-\u61d2\u4eba\u65e0\u654c-\u5b58\u50a8\u8fc7\u7a0b-"},"9.15.3 \u61d2\u4eba\u65e0\u654c ",(0,i.kt)("inlineCode",{parentName:"h2"},"\u5b58\u50a8\u8fc7\u7a0b")," \ud83d\udc2e"),(0,i.kt)("h3",{id:"91531-\u8fd4\u56de-datatable"},"9.15.3.1 \u8fd4\u56de ",(0,i.kt)("inlineCode",{parentName:"h3"},"DataTable")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// ==== \u540c\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar dataTable = "PROC_Name".SqlProcedureQuery();\n\n// \u793a\u4f8b\u4e8c\nvar dataTable = "PROC_Name".SqlProcedureQuery(new {id = 1});\n\n// \u793a\u4f8b\u4e09\nvar dataTable = "PROC_Name".SqlProcedureQuery(new {id = 1, age = 27});\n\n// ==== \u5f02\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar dataTable = await "PROC_Name".SqlProcedureQueryAsync();\n\n// \u793a\u4f8b\u4e8c\nvar dataTable = await "PROC_Name".SqlProcedureQueryAsync(new {id = 1});\n\n// \u793a\u4f8b\u4e09\nvar dataTable = await "PROC_Name".SqlProcedureQueryAsync(new {id = 1, age = 27});\n')),(0,i.kt)("h3",{id:"91532-\u8fd4\u56de-listt"},"9.15.3.2 \u8fd4\u56de ",(0,i.kt)("inlineCode",{parentName:"h3"},"List")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// ==== \u540c\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar persons = "PROC_Name".SqlProcedureQuery();\n\n// \u793a\u4f8b\u4e8c\nvar persons = "PROC_Name".SqlProcedureQuery(new {id = 1});\n\n// \u793a\u4f8b\u4e09\nvar persons = "PROC_Name".SqlProcedureQuery(new {id = 1, age = 27});\n\n// ==== \u5f02\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar persons = await "PROC_Name".SqlProcedureQueryAsync();\n\n// \u793a\u4f8b\u4e8c\nvar persons = await "PROC_Name".SqlProcedureQueryAsync(new {id = 1});\n\n// \u793a\u4f8b\u4e09\nvar persons = await "PROC_Name".SqlProcedureQueryAsync(new {id = 1, age = 27});\n')),(0,i.kt)("h3",{id:"91533-\u8fd4\u56de-dataset"},"9.15.3.3 \u8fd4\u56de ",(0,i.kt)("inlineCode",{parentName:"h3"},"DataSet")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// ==== \u540c\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar dataSet = "PROC_Name".SqlProcedureQueries();\n\n// \u793a\u4f8b\u4e8c\nvar dataSet = "PROC_Name".SqlProcedureQueries(new {id = 1});\n\n// \u793a\u4f8b\u4e09\nvar dataSet = "PROC_Name".SqlProcedureQueries(new {id = 1, age = 27});\n\n// ==== \u5f02\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar dataSet = await "PROC_Name".SqlProcedureQueriesAsync();\n\n// \u793a\u4f8b\u4e8c\nvar dataSet = await "PROC_Name".SqlProcedureQueriesAsync(new {id = 1});\n\n// \u793a\u4f8b\u4e09\nvar dataSet = await "PROC_Name".SqlProcedureQueriesAsync(new {id = 1, age = 27});\n')),(0,i.kt)("h3",{id:"91534-\u8fd4\u56de-tuplet1t8"},"9.15.3.4 \u8fd4\u56de ",(0,i.kt)("inlineCode",{parentName:"h3"},"Tuple")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// ==== \u540c\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar persons = "PROC_Name".SqlProcedureQueries();\n\n// \u793a\u4f8b\u4e8c\nvar (persons,students) = "PROC_Name".SqlProcedureQueries(new {id = 1});\n\n// \u793a\u4f8b\u4e09\nvar (persons,students,string) = "PROC_Name".SqlProcedureQueries(new {id = 1, age = 27});\n\n// \u793a\u4f8b\u56db\nvar (persons,students,personDetail,string) = "PROC_Name".SqlProcedureQueries(new {id = 1, age = 27});\n\n// ==== \u5f02\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar persons = await "PROC_Name".SqlProcedureQueriesAsync();\n\n// \u793a\u4f8b\u4e8c\nvar (persons,students) = await "PROC_Name".SqlProcedureQueriesAsync(new {id = 1});\n\n// \u793a\u4f8b\u4e09\nvar (persons,students,string) = await "PROC_Name".SqlProcedureQueriesAsync(new {id = 1, age = 27});\n\n// \u793a\u4f8b\u56db\nvar (persons,students,personDetail,string) = await "PROC_Name".SqlProcedureQueriesAsync(new {id = 1, age = 27});\n')),(0,i.kt)("h3",{id:"91535-\u8fd4\u56de-\u5355\u884c\u5355\u5217"},"9.15.3.5 \u8fd4\u56de \u5355\u884c\u5355\u5217"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// ==== \u540c\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar value = "PROC_Name".SqlProcedureScalar(new {id = 1});\n\n// \u793a\u4f8b\u4e8c\nvar value = "PROC_Name".SqlProcedureScalar(new {id = 1, name = "\u65b0\u751f\u5e1d", address ="\u5e7f\u4e1c\u7701\u4e2d\u5c71\u5e02"});\n\n// \u793a\u4f8b\u4e09\nvar value = "PROC_Name".SqlProcedureScalar(new {id = 1, address ="\u5e7f\u4e1c\u7701\u4e2d\u5c71\u5e02"});\n\n// ==== \u5f02\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar value = await "PROC_Name".SqlProcedureScalarAsync(new {id = 1});\n\n// \u793a\u4f8b\u4e8c\nvar value = await "PROC_Name".SqlProcedureScalarAsync(new {id = 1, name = "\u65b0\u751f\u5e1d", address ="\u5e7f\u4e1c\u7701\u4e2d\u5c71\u5e02"});\n\n// \u793a\u4f8b\u4e09\nvar value = await "PROC_Name".SqlProcedureScalarAsync(new {id = 1, address ="\u5e7f\u4e1c\u7701\u4e2d\u5c71\u5e02"});\n')),(0,i.kt)("h3",{id:"91536-\u8fd4\u56de-\u53d7\u5f71\u54cd\u884c\u6570"},"9.15.3.6 \u8fd4\u56de \u53d7\u5f71\u54cd\u884c\u6570"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// ==== \u540c\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar rowEffects = "PROC_Name".SqlProcedureNonQuery(person);\n\n// \u793a\u4f8b\u4e8c\nvar rowEffects = "PROC_Name".SqlProcedureNonQuery(new {id = 1, name = "\u65b0\u751f\u5e1d", address ="\u5e7f\u4e1c\u7701\u4e2d\u5c71\u5e02"});\n\n// \u793a\u4f8b\u4e09\nvar rowEffects = "PROC_Name".SqlProcedureNonQuery(new {id=1, name="\u767e\u5c0f\u50e7"});\n\n// \u793a\u4f8b\u56db\nvar rowEffects = "PROC_Name".SqlProcedureNonQuery(new {id=1});\n\n// ==== \u5f02\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar rowEffects = await "PROC_Name".SqlProcedureNonQueryAsync(person);\n\n// \u793a\u4f8b\u4e8c\nvar rowEffects = await "PROC_Name".SqlProcedureNonQueryAsync(new {id = 1, name = "\u65b0\u751f\u5e1d", address ="\u5e7f\u4e1c\u7701\u4e2d\u5c71\u5e02"});\n\n// \u793a\u4f8b\u4e09\nvar rowEffects = await "PROC_Name".SqlProcedureNonQueryAsync(new {id=1, name="\u767e\u5c0f\u50e7"});\n\n// \u793a\u4f8b\u56db\nvar rowEffects = await "PROC_Name".SqlProcedureNonQueryAsync(new {id=1});\n')),(0,i.kt)("h3",{id:"91537-\u5e26-outputreturn-\u8fd4\u56de"},"9.15.3.7 \u5e26 ",(0,i.kt)("inlineCode",{parentName:"h3"},"OUTPUT/RETURN")," \u8fd4\u56de"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-sql",metastring:"{3,4,10-12,15-17,22}","{3,4,10-12,15-17,22}":!0},"CREATE PROC PROC_Output\n @Id INT, // \u8f93\u5165\u53c2\u6570\n @Name NVARCHAR(32) OUTPUT, // \u8f93\u51fa\u53c2\u6570\uff0c\u8fd8\u5e26\u957f\u5ea6\n @Age INT OUTPUT // \u8f93\u51fa\u53c2\u6570\nAS\nBEGIN\n SET @Name = 'Furion Output';\n\n // \u8f93\u51fa\u7ed3\u679c\u96c6\n SELECT *\n FROM dbo.Test\n WHERE Id > @Id;\n\n // \u8f93\u51fa\u7ed3\u679c\u96c6\n SELECT TOP 10\n *\n FROM dbo.Test;\n\n SET @Age = 27;\n\n // \u5e26 RETURN \u8fd4\u56de\n RETURN 10;\nEND;\n")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,10,13,16}","{1,10,13,16}":!0},"using Furion.DatabaseAccessor;\nusing System.Data;\n\nnamespace Furion.Application\n{\n public class ProcOutputModel\n {\n public int Id { get; set; } // \u8f93\u5165\u53c2\u6570\n\n [DbParameter(ParameterDirection.Output, Size = 32)]\n public string Name { get; set; } // \u8f93\u51fa\u53c2\u6570\n\n [DbParameter(ParameterDirection.Output)]\n public int Age { get; set; } // \u8f93\u51fa\u53c2\u6570\n\n [DbParameter(ParameterDirection.ReturnValue)]\n public int ReturnValue { get; set; } // \u8fd4\u56de\u503c\n }\n}\n")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// ==== \u540c\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nProcedureOutputResult result = "PROC_Name".SqlProcedureOutput(new ProcOutputModel{ Id=1});\n\n// \u793a\u4f8b\u4e8c\nProcedureOutputResult result = "PROC_Name".SqlProcedureOutput(new ProcOutputModel{ Id=1});\n\n// \u793a\u4f8b\u4e09\nProcedureOutputResult<(List, List)> result = "PROC_Name".SqlProcedureOutput<(List, List)>(new ProcOutputModel{ Id=1});\n\n// ==== \u5f02\u6b65\u64cd\u4f5c ====\n// \u793a\u4f8b\u4e00\nProcedureOutputResult result = await "PROC_Name".SqlProcedureOutputAsync(new ProcOutputModel{ Id=1});\n\n// \u793a\u4f8b\u4e8c\nProcedureOutputResult result = await "PROC_Name".SqlProcedureOutputAsync(new ProcOutputModel{ Id=1});\n\n// \u793a\u4f8b\u4e09\nProcedureOutputResult<(List, List)> result = await "PROC_Name".SqlProcedureOutputAsync<(List, List)>(new ProcOutputModel{ Id=1});\n')),(0,i.kt)("h2",{id:"9154-\u61d2\u4eba\u65e0\u654c-\u51fd\u6570-"},"9.15.4 \u61d2\u4eba\u65e0\u654c ",(0,i.kt)("inlineCode",{parentName:"h2"},"\u51fd\u6570")," \ud83d\udc2e"),(0,i.kt)("h3",{id:"91541-\u6807\u91cf\u51fd\u6570"},"9.15.4.1 ",(0,i.kt)("inlineCode",{parentName:"h3"},"\u6807\u91cf\u51fd\u6570")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// ==== \u540c\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar value = "FN_Name".SqlFunctionScalar();\n\n// \u793a\u4f8b\u4e8c\nvar value = "FN_Name".SqlFunctionScalar(new {id = 1});\n\n// \u793a\u4f8b\u4e09\nvar value = "FN_Name".SqlFunctionScalar();\n\n// \u793a\u4f8b\u56db\nvar value = "FN_Name".SqlFunctionScalar(new {id = 1});\n\n// ==== \u5f02\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar value = await "FN_Name".SqlFunctionScalarAsync();\n\n// \u793a\u4f8b\u4e8c\nvar value = await "FN_Name".SqlFunctionScalarAsync(new {id = 1});\n\n// \u793a\u4f8b\u4e09\nvar value = await "FN_Name".SqlFunctionScalarAsync();\n\n// \u793a\u4f8b\u56db\nvar value = await "FN_Name".SqlFunctionScalarAsync(new {id = 1});\n')),(0,i.kt)("h3",{id:"91542-\u8868\u503c\u51fd\u6570"},"9.15.4.2 ",(0,i.kt)("inlineCode",{parentName:"h3"},"\u8868\u503c\u51fd\u6570")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// ==== \u540c\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar dataTable = "FN_Name".SqlFunctionQuery();\n\n// \u793a\u4f8b\u4e8c\nvar dataTable = "FN_Name".SqlFunctionQuery(new {id = 1});\n\n// \u793a\u4f8b\u4e09\nvar persons = "FN_Name".SqlFunctionQuery();\n\n// \u793a\u4f8b\u56db\nvar persons = "FN_Name".SqlFunctionQuery(new {id = 1});\n\n// ==== \u5f02\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar dataTable = await "FN_Name".SqlFunctionQueryAsync();\n\n// \u793a\u4f8b\u4e8c\nvar dataTable = await "FN_Name".SqlFunctionQueryAsync(new {id = 1});\n\n// \u793a\u4f8b\u4e09\nvar persons = await "FN_Name".SqlFunctionQueryAsync();\n\n// \u793a\u4f8b\u56db\nvar persons = await "FN_Name".SqlFunctionQueryAsync(new {id = 1});\n')),(0,i.kt)("h2",{id:"9155-\u8bbe\u7f6e\u8d85\u65f6\u65f6\u95f4"},"9.15.5 \u8bbe\u7f6e\u8d85\u65f6\u65f6\u95f4"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'var data = "select * from table".SetCommandTimeout(100).SqlQuery(); // \u5355\u4f4d\u79d2\n')),(0,i.kt)("h2",{id:"9156-isqlrepository-\u64cd\u4f5c"},"9.15.6 ",(0,i.kt)("inlineCode",{parentName:"h2"},"ISqlRepository")," \u64cd\u4f5c"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"ISqlRepository")," \u4ed3\u50a8\u662f\u4e13\u95e8\u5904\u7406 ",(0,i.kt)("inlineCode",{parentName:"p"},"Sql")," \u64cd\u4f5c\u7684\uff0c\u65e0\u9700\u5b9e\u4f53\u65b9\u5f0f\uff0c\u6240\u6709\u63a5\u53e3\u548c ",(0,i.kt)("inlineCode",{parentName:"p"},"\u61d2\u4eba\u65e0\u654c")," \u65b9\u5f0f\u4e00\u6837\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// \u793a\u4f8b\u4e00\nvar dataTable = sqlRepository.SqlQuery("select * from person");\n\n// \u793a\u4f8b\u4e8c\nvar dataTable = sqlRepository.SqlQuery("select * from person where id > @id", new { id = 10});\n\n// \u793a\u4f8b\u56db\nvar persons = sqlRepository.SqlQuery("select * from person");\n\n// \u793a\u4f8b\u4e94\nvar persons = sqlRepository.SqlQuery("select * from person where id > @id", new { id = 10});\n\n// \u4e0d\u518d\u4e3e\u4f8b\u5b50\u3002\u3002\u3002\n')),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u8865\u5145\u8bf4\u660e")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u4e0d\u7ba1\u662f\u54ea\u79cd\u65b9\u5f0f\u64cd\u4f5c ",(0,i.kt)("inlineCode",{parentName:"p"},"Sql")," \uff0c\u65b9\u6cd5\u540d\u53c2\u6570\u90fd\u662f\u4e00\u81f4\u7684\uff0c\u5982\uff1a"),(0,i.kt)("ul",{parentName:"div"},(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"SqlQuery")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"SqlQueryAsync")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"SqlQueries")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"SqlQueriesAsync")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"SqlNonQuery")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"SqlNonQueryAsync")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"SqlScalar")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"SqlScalarAsync")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"SqlProcedureQuery")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"SqlProcedureQueryAsync")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"SqlProcedureQueries")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"SqlProcedureQueriesAsync")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"SqlProcedureScalar")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"SqlProcedureScalarAsync")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"SqlProcedureNonQuery")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"SqlProcedureNonQueryAsync")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"SqlProcedureOutput")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"SqlProcedureOutputAsync")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"SqlFunctionScalar")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"SqlFunctionScalarAsync")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"SqlFunctionQuery")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"SqlFunctionQuery"))))),(0,i.kt)("h2",{id:"9157-irepository-\u64cd\u4f5c"},"9.15.7 ",(0,i.kt)("inlineCode",{parentName:"h2"},"IRepository")," \u64cd\u4f5c"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"IRepository")," \u4e5f\u80fd\u64cd\u4f5c ",(0,i.kt)("inlineCode",{parentName:"p"},"sql"),"\uff0c\u8c03\u7528\u65b9\u6cd5\u4e5f\u662f\u548c\u4e0a\u9762\u4e00\u81f4\u7684\uff0c\u5982\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'var dataTable = repository.Sql().SqlQuery("select * from person");\n')),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u7279\u522b\u8bf4\u660e")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u7531\u4e8e\u7bc7\u5e45\u6709\u9650\uff0c\u4e0d\u518d\u5217\u4e3e\u6240\u6709\u4f8b\u5b50\u3002"))),(0,i.kt)("h2",{id:"9158-irepositorytentity-\u64cd\u4f5c"},"9.15.8 ",(0,i.kt)("inlineCode",{parentName:"h2"},"IRepository")," \u64cd\u4f5c"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"IRepository")," \u4e5f\u80fd\u64cd\u4f5c ",(0,i.kt)("inlineCode",{parentName:"p"},"sql"),"\uff0c\u8c03\u7528\u65b9\u6cd5\u4e5f\u662f\u548c\u4e0a\u9762\u4e00\u81f4\u7684\uff0c\u5982\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'var dataTable = personRepository.SqlQuery("select * from person");\n')),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u7279\u522b\u8bf4\u660e")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u7531\u4e8e\u7bc7\u5e45\u6709\u9650\uff0c\u4e0d\u518d\u5217\u4e3e\u6240\u6709\u4f8b\u5b50\u3002"))),(0,i.kt)("h2",{id:"9159-\u5173\u4e8e-sql-\u53c2\u6570"},"9.15.9 \u5173\u4e8e ",(0,i.kt)("inlineCode",{parentName:"h2"},"Sql")," \u53c2\u6570"),(0,i.kt)("p",null,"\u6240\u6709 ",(0,i.kt)("inlineCode",{parentName:"p"},"sql"),"\u3001",(0,i.kt)("inlineCode",{parentName:"p"},"\u5b58\u50a8\u8fc7\u7a0b"),"\uff0c",(0,i.kt)("inlineCode",{parentName:"p"},"\u51fd\u6570")," \u53c2\u6570\u90fd\u652f\u6301\u56db\u79cd\u65b9\u5f0f\uff1a"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"DbParameter[]"),"\uff1a\u6570\u7ec4\u7c7b\u578b"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"new {}"),"\uff1a\u533f\u540d\u7c7b\u578b"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"new Class{}"),"\uff1a\u5f3a\u7c7b\u578b\u7c7b\u578b\uff08\u652f\u6301\u590d\u6742\u5b58\u50a8\u8fc7\u7a0b\u53c2\u6570\uff09"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"Dictionary")," \u7c7b\u578b")),(0,i.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u5c0f\u77e5\u8bc6")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u5efa\u8bae\u9664\u4e86\u590d\u6742\u7684\u5b58\u50a8\u8fc7\u7a0b\uff08\u5e26 ",(0,i.kt)("inlineCode",{parentName:"p"},"OUTPUT/RETURN"),"\uff09\u7684\u4ee5\u5916\uff0c\u6240\u6709\u53c2\u6570\u5efa\u8bae\u4f7f\u7528 ",(0,i.kt)("inlineCode",{parentName:"p"},"new {}")," \u533f\u540d\u7c7b\u578b\uff0c\u5982\u679c\u9700\u8981\u52a8\u6001\u53c2\u6570\uff0c\u5219\u53ef\u4ee5\u4f7f\u7528 ",(0,i.kt)("inlineCode",{parentName:"p"},"Dictionary")," \u7c7b\u578b\u3002"))),(0,i.kt)("h2",{id:"91510-\u591a\u6570\u636e\u5e93-sql-\u64cd\u4f5c--"},"9.15.10 \u591a\u6570\u636e\u5e93 ",(0,i.kt)("inlineCode",{parentName:"h2"},"Sql")," \u64cd\u4f5c \ud83d\udcaf \ud83d\udc9b"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u62e5\u6709\u975e\u5e38\u7075\u6d3b\u7684\u591a\u6570\u636e\u5e93\u64cd\u4f5c\u65b9\u5f0f\uff0c\u53ea\u9700\u901a\u8fc7\u591a",(0,i.kt)("strong",{parentName:"p"},"\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u5b9a\u4f4d\u5668"),"\u5373\u53ef\u52a8\u6001\u5207\u6362\u6570\u636e\u5e93\u3002"),(0,i.kt)("h3",{id:"915101-\u61d2\u4eba\u65e0\u654c--\u65b9\u5f0f"},"9.15.10.1 \u61d2\u4eba\u65e0\u654c \ud83d\udc2e \u65b9\u5f0f"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'var dataTable = "select * from person".Change().SqlQuery();\n\nvar persons = "select * from person whre id > @id".Change().SqlQuery();\n')),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u8865\u5145\u8bf4\u660e")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u61d2\u4eba\u65b9\u5f0f \u53ea\u9700\u8981\u901a\u8fc7 ",(0,i.kt)("inlineCode",{parentName:"p"},"Change")," \u65b9\u5f0f\u5373\u53ef\u52a8\u6001\u5207\u6362\u6570\u636e\u5e93\u3002"))),(0,i.kt)("h3",{id:"915102-isqlrepository-\u65b9\u5f0f"},"9.15.10.2 ",(0,i.kt)("inlineCode",{parentName:"h3"},"ISqlRepository")," \u65b9\u5f0f"),(0,i.kt)("p",null,"\u53ea\u9700\u8981\u901a\u8fc7 ",(0,i.kt)("inlineCode",{parentName:"p"},"ISqlRepository")," \u6ce8\u5165\u6216\u901a\u8fc7 ",(0,i.kt)("inlineCode",{parentName:"p"},"sqlRepository.Change()")," \u5207\u6362\u3002"),(0,i.kt)("h3",{id:"915103-irepository-\u65b9\u5f0f"},"9.15.10.3 ",(0,i.kt)("inlineCode",{parentName:"h3"},"IRepository")," \u65b9\u5f0f"),(0,i.kt)("p",null,"\u53ea\u9700\u8981\u901a\u8fc7 ",(0,i.kt)("inlineCode",{parentName:"p"},"repository.Change()")," \u83b7\u53d6\u5373\u53ef\u3002"),(0,i.kt)("h3",{id:"915104-irepositorytentity-\u65b9\u5f0f"},"9.15.10.4 ",(0,i.kt)("inlineCode",{parentName:"h3"},"IRepository")," \u65b9\u5f0f"),(0,i.kt)("p",null,"\u53ea\u9700\u8981\u901a\u8fc7 ",(0,i.kt)("inlineCode",{parentName:"p"},"IRepository")," \u6ce8\u5165\u6216\u901a\u8fc7 ",(0,i.kt)("inlineCode",{parentName:"p"},"personRepository.Change()")," \u5207\u6362\u3002"),(0,i.kt)("h2",{id:"91511-\u5207\u6362\u6570\u636e\u5e93"},"9.15.11 \u5207\u6362\u6570\u636e\u5e93"),(0,i.kt)("p",null,"\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\uff0c\u4e0d\u7ba1\u662f\u61d2\u4eba\u6a21\u5f0f\u8fd8\u662f\u4ed3\u50a8\u6a21\u5f0f\u90fd\u662f\u901a\u8fc7 ",(0,i.kt)("inlineCode",{parentName:"p"},".Change")," \u65b9\u5f0f\u5207\u6362\u6570\u636e\u5e93\uff0c\u5982\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// \u61d2\u4eba\u6a21\u5f0f\nvar data = "select * from table".Change().SqlQuery();\n\n// \u4ed3\u50a8\u65b9\u5f0f\nvar data = req.Change().SqlQuery("select * from table");\n')),(0,i.kt)("h2",{id:"91512-\u591a\u7ebf\u7a0b\u5171\u4eab\u4f5c\u7528\u57df"},"9.15.12 \u591a\u7ebf\u7a0b\u5171\u4eab\u4f5c\u7528\u57df"),(0,i.kt)("p",null,"\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c\u6240\u6709\u7684 ",(0,i.kt)("inlineCode",{parentName:"p"},"\u5b57\u7b26\u4e32")," \u548c ",(0,i.kt)("inlineCode",{parentName:"p"},"\u5b9e\u4f53")," \u62d3\u5c55\u90fd\u6709\u81ea\u5df1\u72ec\u7acb\u7ef4\u62a4\u7684 ",(0,i.kt)("inlineCode",{parentName:"p"},"ServiceProvider")," \u4f5c\u7528\u57df\u3002"),(0,i.kt)("p",null,"\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Web")," \u8bf7\u6c42\u4e2d\uff0c\u9ed8\u8ba4\u662f ",(0,i.kt)("inlineCode",{parentName:"p"},"HttpContext.RequestServices"),"\uff0c\u4f46\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"\u975e Web"),"\uff0c\u5982\u591a\u7ebf\u7a0b\u64cd\u4f5c\uff0c\u540e\u53f0\u4efb\u52a1\uff0c\u4e8b\u4ef6\u603b\u7ebf\u7b49\u573a\u666f\u4e0b\u4f1a\u81ea\u52a8\u521b\u5efa\u65b0\u7684\u4f5c\u7528\u57df\uff0c\u5b9e\u9645\u4e0a\u8fd9\u662f\u975e\u5e38\u4e0d\u5fc5\u8981\u7684\u5185\u5b58\u5f00\u9500\u3002"),(0,i.kt)("p",null,"\u8fd9\u65f6\uff0c\u6211\u4eec\u53ea\u9700\u8981\u901a\u8fc7 ",(0,i.kt)("inlineCode",{parentName:"p"},".SetXXXScoped(service)")," \u5171\u4eab\u5f53\u524d\u670d\u52a1\u63d0\u4f9b\u5668\u4f5c\u7528\u57df\u5373\u53ef\uff0c\u5982\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'Scoped.Create((fac, scope) => {\n "select * from table".SetContextScoped(scope.ServiceProvider).SqlQuery();\n});\n')),(0,i.kt)("h2",{id:"91513-\u9759\u6001-default-\u65b9\u5f0f\u6784\u5efa"},"9.15.13 \u9759\u6001 ",(0,i.kt)("inlineCode",{parentName:"h2"},"Default")," \u65b9\u5f0f\u6784\u5efa"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'SqlExecutePart.Default.SetSqlString("select * from person").SqlQuery();\n')),(0,i.kt)("h2",{id:"91514-\u53cd\u9988\u4e0e\u5efa\u8bae"},"9.15.14 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,i.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/b753a5b5.f4288755.js b/handbook/build/assets/js/b753a5b5.f4288755.js deleted file mode 100644 index 5b527339d81..00000000000 --- a/handbook/build/assets/js/b753a5b5.f4288755.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[4954],{3905:function(e,n,a){a.d(n,{Zo:function(){return c},kt:function(){return m}});var t=a(7294);function r(e,n,a){return n in e?Object.defineProperty(e,n,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[n]=a,e}function i(e,n){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n&&(t=t.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),a.push.apply(a,t)}return a}function o(e){for(var n=1;n=0||(r[a]=e[a]);return r}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(t=0;t=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var s=t.createContext({}),d=function(e){var n=t.useContext(s),a=n;return e&&(a="function"==typeof e?e(n):o(o({},n),e)),a},c=function(e){var n=d(e.components);return t.createElement(s.Provider,{value:n},e.children)},p={inlineCode:"code",wrapper:function(e){var n=e.children;return t.createElement(t.Fragment,{},n)}},u=t.forwardRef((function(e,n){var a=e.components,r=e.mdxType,i=e.originalType,s=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),u=d(a),m=r,N=u["".concat(s,".").concat(m)]||u[m]||p[m]||i;return a?t.createElement(N,o(o({ref:n},c),{},{components:a})):t.createElement(N,o({ref:n},c))}));function m(e,n){var a=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var i=a.length,o=new Array(i);o[0]=u;var l={};for(var s in n)hasOwnProperty.call(n,s)&&(l[s]=n[s]);l.originalType=e,l.mdxType="string"==typeof e?e:r,o[1]=l;for(var d=2;dSql",id:"9151-\u5173\u4e8e-sql",children:[]},{value:"9.15.2 \u61d2\u4eba\u65e0\u654c Sql \ud83d\udc2e",id:"9152-\u61d2\u4eba\u65e0\u654c-sql-",children:[{value:"9.15.2.1 \u8fd4\u56de DataTable",id:"91521-\u8fd4\u56de-datatable",children:[]},{value:"9.15.2.2 \u8fd4\u56de List<T>",id:"91522-\u8fd4\u56de-listt",children:[]},{value:"9.15.2.3 \u8fd4\u56de DataSet",id:"91523-\u8fd4\u56de-dataset",children:[]},{value:"9.15.2.4 \u8fd4\u56de Tuple<T1,...T8>",id:"91524-\u8fd4\u56de-tuplet1t8",children:[]},{value:"9.15.2.5 \u8fd4\u56de \u5355\u884c\u5355\u5217",id:"91525-\u8fd4\u56de-\u5355\u884c\u5355\u5217",children:[]},{value:"9.15.2.6 \u8fd4\u56de \u53d7\u5f71\u54cd\u884c\u6570",id:"91526-\u8fd4\u56de-\u53d7\u5f71\u54cd\u884c\u6570",children:[]}]},{value:"9.15.3 \u61d2\u4eba\u65e0\u654c \u5b58\u50a8\u8fc7\u7a0b \ud83d\udc2e",id:"9153-\u61d2\u4eba\u65e0\u654c-\u5b58\u50a8\u8fc7\u7a0b-",children:[{value:"9.15.3.1 \u8fd4\u56de DataTable",id:"91531-\u8fd4\u56de-datatable",children:[]},{value:"9.15.3.2 \u8fd4\u56de List<T>",id:"91532-\u8fd4\u56de-listt",children:[]},{value:"9.15.3.3 \u8fd4\u56de DataSet",id:"91533-\u8fd4\u56de-dataset",children:[]},{value:"9.15.3.4 \u8fd4\u56de Tuple<T1,...T8>",id:"91534-\u8fd4\u56de-tuplet1t8",children:[]},{value:"9.15.3.5 \u8fd4\u56de \u5355\u884c\u5355\u5217",id:"91535-\u8fd4\u56de-\u5355\u884c\u5355\u5217",children:[]},{value:"9.15.3.6 \u8fd4\u56de \u53d7\u5f71\u54cd\u884c\u6570",id:"91536-\u8fd4\u56de-\u53d7\u5f71\u54cd\u884c\u6570",children:[]},{value:"9.15.3.7 \u5e26 OUTPUT/RETURN \u8fd4\u56de",id:"91537-\u5e26-outputreturn-\u8fd4\u56de",children:[]}]},{value:"9.15.4 \u61d2\u4eba\u65e0\u654c \u51fd\u6570 \ud83d\udc2e",id:"9154-\u61d2\u4eba\u65e0\u654c-\u51fd\u6570-",children:[{value:"9.15.4.1 \u6807\u91cf\u51fd\u6570",id:"91541-\u6807\u91cf\u51fd\u6570",children:[]},{value:"9.15.4.2 \u8868\u503c\u51fd\u6570",id:"91542-\u8868\u503c\u51fd\u6570",children:[]}]},{value:"9.15.5 \u8bbe\u7f6e\u8d85\u65f6\u65f6\u95f4",id:"9155-\u8bbe\u7f6e\u8d85\u65f6\u65f6\u95f4",children:[]},{value:"9.15.6 ISqlRepository \u64cd\u4f5c",id:"9156-isqlrepository-\u64cd\u4f5c",children:[]},{value:"9.15.7 IRepository \u64cd\u4f5c",id:"9157-irepository-\u64cd\u4f5c",children:[]},{value:"9.15.8 IRepository<TEntity> \u64cd\u4f5c",id:"9158-irepositorytentity-\u64cd\u4f5c",children:[]},{value:"9.15.9 \u5173\u4e8e Sql \u53c2\u6570",id:"9159-\u5173\u4e8e-sql-\u53c2\u6570",children:[]},{value:"9.15.10 \u591a\u6570\u636e\u5e93 Sql \u64cd\u4f5c \ud83d\udcaf \ud83d\udc9b",id:"91510-\u591a\u6570\u636e\u5e93-sql-\u64cd\u4f5c--",children:[{value:"9.15.10.1 \u61d2\u4eba\u65e0\u654c \ud83d\udc2e \u65b9\u5f0f",id:"915101-\u61d2\u4eba\u65e0\u654c--\u65b9\u5f0f",children:[]},{value:"9.15.10.2 ISqlRepository \u65b9\u5f0f",id:"915102-isqlrepository-\u65b9\u5f0f",children:[]},{value:"9.15.10.3 IRepository \u65b9\u5f0f",id:"915103-irepository-\u65b9\u5f0f",children:[]},{value:"9.15.10.4 IRepository<TEntity> \u65b9\u5f0f",id:"915104-irepositorytentity-\u65b9\u5f0f",children:[]}]},{value:"9.15.11 \u5207\u6362\u6570\u636e\u5e93",id:"91511-\u5207\u6362\u6570\u636e\u5e93",children:[]},{value:"9.15.12 \u591a\u7ebf\u7a0b\u5171\u4eab\u4f5c\u7528\u57df",id:"91512-\u591a\u7ebf\u7a0b\u5171\u4eab\u4f5c\u7528\u57df",children:[]},{value:"9.15.13 \u9759\u6001 Default \u65b9\u5f0f\u6784\u5efa",id:"91513-\u9759\u6001-default-\u65b9\u5f0f\u6784\u5efa",children:[]},{value:"9.15.14 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"91514-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],p={toc:c};function u(e){var n=e.components,a=(0,r.Z)(e,o);return(0,i.kt)("wrapper",(0,t.Z)({},p,a,{components:n,mdxType:"MDXLayout"}),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u6e29\u99a8\u63d0\u793a")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u63a8\u8350\u4f7f\u7528 \u300a",(0,i.kt)("a",{parentName:"p",href:"/furion/docs/dbcontext-sql-proxy"},"9.17 Sql \u9ad8\u7ea7\u4ee3\u7406"),"\u300b\u4ee3\u66ff\u672c\u7ae0\u8282\u529f\u80fd\u3002",(0,i.kt)("inlineCode",{parentName:"p"},"Sql \u9ad8\u7ea7\u4ee3\u7406")," \u80fd\u591f\u63d0\u4f9b\u66f4\u5bb9\u6613\u4e14\u66f4\u6613\u7ef4\u62a4\u7684\u65b9\u5f0f\u3002"))),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4f8b\u5b50\u8bf4\u660e")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u672c\u7ae0\u8282\u4f8b\u5b50\u5747\u4ee5 ",(0,i.kt)("inlineCode",{parentName:"p"},"sql server")," \u6570\u636e\u5e93\u5199\u7684\u4f8b\u5b50\uff0c\u547d\u4ee4\u53c2\u6570\u7edf\u4e00\u7528 ",(0,i.kt)("inlineCode",{parentName:"p"},"@")," \u7b26\u53f7\uff0c\u4f46\u4e0d\u540c\u6570\u636e\u5e93\u7684\u53c2\u6570\u524d\u7f00\u6709\u6240\u4e0d\u540c\uff0c\u5982\uff1a",(0,i.kt)("inlineCode",{parentName:"p"},"sql server")," \u91c7\u7528 ",(0,i.kt)("inlineCode",{parentName:"p"},"@"),"\uff0coracle \u91c7\u7528 ",(0,i.kt)("inlineCode",{parentName:"p"},":"),"\uff0cmy sql \u91c7\u7528 ",(0,i.kt)("inlineCode",{parentName:"p"},"?"),"\u3002"))),(0,i.kt)("h2",{id:"9151-\u5173\u4e8e-sql"},"9.15.1 \u5173\u4e8e ",(0,i.kt)("inlineCode",{parentName:"h2"},"Sql")),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u975e\u5e38\u591a\u4e14\u7075\u6d3b\u7684 ",(0,i.kt)("inlineCode",{parentName:"p"},"sql")," \u64cd\u4f5c\u65b9\u6cd5\uff0c\u4e14\u6027\u80fd\u4e0d\u8f93\u4e8e ",(0,i.kt)("inlineCode",{parentName:"p"},"dapper"),"\uff0c\u540c\u65f6\u903c\u8fd1 ",(0,i.kt)("inlineCode",{parentName:"p"},"ADO.NET")," \u539f\u751f\u64cd\u4f5c\u3002"),(0,i.kt)("h2",{id:"9152-\u61d2\u4eba\u65e0\u654c-sql-"},"9.15.2 \u61d2\u4eba\u65e0\u654c ",(0,i.kt)("inlineCode",{parentName:"h2"},"Sql")," \ud83d\udc2e"),(0,i.kt)("h3",{id:"91521-\u8fd4\u56de-datatable"},"9.15.2.1 \u8fd4\u56de ",(0,i.kt)("inlineCode",{parentName:"h3"},"DataTable")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// ==== \u540c\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar dataTable = "select * from person".SqlQuery();\n\n// \u793a\u4f8b\u4e8c\nvar dataTable = "select top 10 * from person where id > @id".SqlQuery(new {id = 10});\n\n// \u793a\u4f8b\u4e09\nvar dataTable = "select Id, Name, Age from person where name like @name".SqlQuery(new Dictionary{ {"name", "%Furion%"} });\n\n// \u793a\u4f8b\u56db\nvar dataTable = "select * from person where name=@name limit 1,10".SqlQuery(new []{ new MySqlParameter("name","Furion") });\n\n// \u793a\u4f8b\u4e94\nvar dataTable = "select * from person where id>@id and name like @name".SqlQuery(new YourModel { Id = 1, Name = "%Furion%" });\n\n// \u793a\u4f8b\u516d\nvar dataTable = "exec PROC_GetPerson @id".SqlQuery(new {id = 10});\n\n// \u793a\u4f8b\u4e03\nvar dataTable = "select * from FN_GetPersons(@id)".SqlQuery(new {id = 10});\n\n// \u793a\u4f8b\u516b\nvar dataTable = @"\nselect * from person p\nleft join personDetail pd on p.Id == pd.pid\nwhere p.Id > @id;".SqlQuery(new {id = 10});\n\n// ==== \u5f02\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar dataTable = await "select * from person".SqlQueryAsync();\n\n// \u793a\u4f8b\u4e8c\nvar dataTable = await "select top 10 * from person where id > @id".SqlQueryAsync(new {id = 10});\n\n// \u793a\u4f8b\u4e09\nvar dataTable = await "select Id, Name, Age from person where name like @name".SqlQueryAsync(new Dictionary{ {"name", "%Furion%"} });\n\n// \u793a\u4f8b\u56db\nvar dataTable = await "select * from person where name=@name limit 1,10".SqlQueryAsync(new []{ new MySqlParameter("name","Furion") });\n\n// \u793a\u4f8b\u4e94\nvar dataTable = await "select * from person where id>@id and name like @name".SqlQueryAsync(new YourModel { Id = 1, Name = "%Furion%" });\n\n// \u793a\u4f8b\u516d\nvar dataTable = await "exec PROC_GetPerson @id".SqlQueryAsync(new {id = 10});\n\n// \u793a\u4f8b\u4e03\nvar dataTable = await "select * from FN_GetPersons(@id)".SqlQueryAsync(new {id = 10});\n\n// \u793a\u4f8b\u516b\nvar dataTable = await @"\nselect * from person p\nleft join personDetail pd on p.Id == pd.pid\nwhere p.Id > @id;".SqlQueryAsync(new {id = 10});\n')),(0,i.kt)("h3",{id:"91522-\u8fd4\u56de-listt"},"9.15.2.2 \u8fd4\u56de ",(0,i.kt)("inlineCode",{parentName:"h3"},"List")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// ==== \u540c\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar persons = "select * from person".SqlQuery();\n\n// \u793a\u4f8b\u4e8c\nvar persons = "select top 10 * from person where id > @id".SqlQuery(new {id = 10});\n\n// \u793a\u4f8b\u4e09\nvar persons = "select Id, Name, Age from person where name like @name".SqlQuery(new Dictionary{ {"name", "%Furion%"} });\n\n// \u793a\u4f8b\u56db\nvar persons = "select * from person where name=@name limit 1,10".SqlQuery(new []{ new MySqlParameter("name","Furion") });\n\n// \u793a\u4f8b\u4e94\nvar persons = "select * from person where id>@id and name like @name".SqlQuery(new YourModel { Id = 1, Name = "%Furion%" });\n\n// \u793a\u4f8b\u516d\nvar persons = "exec PROC_GetPerson @id".SqlQuery(new {id = 10});\n\n// \u793a\u4f8b\u4e03\nvar persons = "select * from FN_GetPersons(@id)".SqlQuery(new {id = 10});\n\n// \u793a\u4f8b\u516b\nvar persons = @"\nselect * from person p\nleft join personDetail pd on p.Id == pd.pid\nwhere p.Id > @id;".SqlQuery(new {id = 10});\n\n// ==== \u5f02\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar persons = await "select * from person".SqlQueryAsync();\n\n// \u793a\u4f8b\u4e8c\nvar persons = await "select top 10 * from person where id > @id".SqlQueryAsync(new {id = 10});\n\n// \u793a\u4f8b\u4e09\nvar persons = await "select Id, Name, Age from person where name like @name".SqlQueryAsync(new Dictionary{ {"name", "%Furion%"} });\n\n// \u793a\u4f8b\u56db\nvar persons = await "select * from person where name=@name limit 1,10".SqlQueryAsync(new []{ new MySqlParameter("name","Furion") });\n\n// \u793a\u4f8b\u4e94\nvar persons = await "select * from person where id>@id and name like @name".SqlQueryAsync(new YourModel { Id = 1, Name = "%Furion%" });\n\n// \u793a\u4f8b\u516d\nvar persons = await "exec PROC_GetPerson @id".SqlQueryAsync(new {id = 10});\n\n// \u793a\u4f8b\u4e03\nvar persons = await "select * from FN_GetPersons(@id)".SqlQueryAsync(new {id = 10});\n\n// \u793a\u4f8b\u516b\nvar persons = await @"\nselect * from person p\nleft join personDetail pd on p.Id == pd.pid\nwhere p.Id > @id;".SqlQueryAsync(new {id = 10});\n')),(0,i.kt)("h3",{id:"91523-\u8fd4\u56de-dataset"},"9.15.2.3 \u8fd4\u56de ",(0,i.kt)("inlineCode",{parentName:"h3"},"DataSet")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// ==== \u540c\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar dataSet = @"\nselect * from person;\nselect * from student;".SqlQueries();\n\n// \u793a\u4f8b\u4e8c\nvar dataSet = @"\nselect * from person where Id > @id;\nselect * from student where Name like @name;".SqlQueries(new {id = 1, name = "%furion%"});\n\n// \u793a\u4f8b\u4e09\nvar dataSet = @"\nselect * from person;\nexec PROC_GetStudents(@id);\nselect \'Furion\';\nselect * from FN_GetPerson(@id);".SqlQueries(new {id = 1});\n\n// ==== \u5f02\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar dataSet = await @"\nselect * from person;\nselect * from student;".SqlQueriesAsync();\n\n// \u793a\u4f8b\u4e8c\nvar dataSet = await @"\nselect * from person where Id > @id;\nselect * from student where Name like @name;".SqlQueriesAsync(new {id = 1, name = "%furion%"});\n\n// \u793a\u4f8b\u4e09\nvar dataSet = await @"\nselect * from person;\nexec PROC_GetStudents(@id);\nselect \'Furion\';\nselect * from FN_GetPerson(@id);".SqlQueriesAsync(new {id = 1});\n')),(0,i.kt)("h3",{id:"91524-\u8fd4\u56de-tuplet1t8"},"9.15.2.4 \u8fd4\u56de ",(0,i.kt)("inlineCode",{parentName:"h3"},"Tuple")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// ==== \u540c\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar (persons, students) = @"\nselect * from person;\nselect * from student;".SqlQueries();\n\n// \u793a\u4f8b\u4e8c\nvar (persons, students) = @"\nselect * from person where Id > @id;\nselect * from student where Name like @name;".SqlQueries(new {id = 1, name = "%furion%"});\n\n// \u793a\u4f8b\u4e09\nvar (persons, students, string, PersonDto) = @"\nselect * from person;\nexec PROC_GetStudents(@id);\nselect \'Furion\';\nselect * from FN_GetPerson(@id);".SqlQueries(new {id = 1});\n\n// ==== \u5f02\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar (persons, students) = await @"\nselect * from person;\nselect * from student;".SqlQueriesAsync();\n\n// \u793a\u4f8b\u4e8c\nvar (persons, students) = await @"\nselect * from person where Id > @id;\nselect * from student where Name like @name;".SqlQueriesAsync(new {id = 1, name = "%furion%"});\n\n// \u793a\u4f8b\u4e09\nvar (persons, students, string, PersonDto) = await @"\nselect * from person;\nexec PROC_GetStudents(@id);\nselect \'Furion\';\nselect * from FN_GetPerson(@id);".SqlQueriesAsync(new {id = 1});\n')),(0,i.kt)("h3",{id:"91525-\u8fd4\u56de-\u5355\u884c\u5355\u5217"},"9.15.2.5 \u8fd4\u56de \u5355\u884c\u5355\u5217"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// ==== \u540c\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar value = "select Name from person where id = @id".SqlScalar(new {id = 1});\n\n// \u793a\u4f8b\u4e8c\nvar value = "select Name from person where id = @id".SqlScalar(new {id = 1});\n\n// \u793a\u4f8b\u4e09\nvar value = "select Age from person where id = @id".SqlScalar(new {id = 1});\n\n// ==== \u5f02\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar value = await "select Name from person where id = @id".SqlScalarAsync(new {id = 1});\n\n// \u793a\u4f8b\u4e8c\nvar value = await "select Name from person where id = @id".SqlScalarAsync(new {id = 1});\n\n// \u793a\u4f8b\u4e09\nvar value = await "select Age from person where id = @id".SqlScalarAsync(new {id = 1});\n')),(0,i.kt)("h3",{id:"91526-\u8fd4\u56de-\u53d7\u5f71\u54cd\u884c\u6570"},"9.15.2.6 \u8fd4\u56de \u53d7\u5f71\u54cd\u884c\u6570"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// ==== \u540c\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar rowEffects = "insert into person(Name,Age,Address) values(@name,@age,@address)".SqlNonQuery(person);\n\n// \u793a\u4f8b\u4e8c\nvar rowEffects = @"\ninsert into person(Name,Age,Address) values(@name,@age,@address);\ninsert into person(Name,Age,Address) values(@name,@age,@address);".SqlNonQuery(persons);\n\n// \u793a\u4f8b\u4e09\nvar rowEffects = "update person set name=@name where id=@id".SqlNonQuery(new {id=1, name="\u767e\u5c0f\u50e7"});\n\n// \u793a\u4f8b\u56db\nvar rowEffects = "delete from person where @id > 10".SqlNonQuery(new {id=1});\n\n// ==== \u5f02\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar rowEffects = await "insert into person(Name,Age,Address) values(@name,@age,@address)".SqlNonQueryAsync(person);\n\n// \u793a\u4f8b\u4e8c\nvar rowEffects = @"\ninsert into person(Name,Age,Address) values(@name,@age,@address);\ninsert into person(Name,Age,Address) values(@name,@age,@address);".SqlNonQueryAsync(persons);\n\n// \u793a\u4f8b\u4e09\nvar rowEffects = await "update person set name=@name where id=@id".SqlNonQueryAsync(new {id=1, name="\u767e\u5c0f\u50e7"});\n\n// \u793a\u4f8b\u56db\nvar rowEffects = await "delete from person where @id > 10".SqlNonQueryAsync(new {id=1});\n')),(0,i.kt)("h2",{id:"9153-\u61d2\u4eba\u65e0\u654c-\u5b58\u50a8\u8fc7\u7a0b-"},"9.15.3 \u61d2\u4eba\u65e0\u654c ",(0,i.kt)("inlineCode",{parentName:"h2"},"\u5b58\u50a8\u8fc7\u7a0b")," \ud83d\udc2e"),(0,i.kt)("h3",{id:"91531-\u8fd4\u56de-datatable"},"9.15.3.1 \u8fd4\u56de ",(0,i.kt)("inlineCode",{parentName:"h3"},"DataTable")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// ==== \u540c\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar dataTable = "PROC_Name".SqlProcedureQuery();\n\n// \u793a\u4f8b\u4e8c\nvar dataTable = "PROC_Name".SqlProcedureQuery(new {id = 1});\n\n// \u793a\u4f8b\u4e09\nvar dataTable = "PROC_Name".SqlProcedureQuery(new {id = 1, age = 27});\n\n// ==== \u5f02\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar dataTable = await "PROC_Name".SqlProcedureQueryAsync();\n\n// \u793a\u4f8b\u4e8c\nvar dataTable = await "PROC_Name".SqlProcedureQueryAsync(new {id = 1});\n\n// \u793a\u4f8b\u4e09\nvar dataTable = await "PROC_Name".SqlProcedureQueryAsync(new {id = 1, age = 27});\n')),(0,i.kt)("h3",{id:"91532-\u8fd4\u56de-listt"},"9.15.3.2 \u8fd4\u56de ",(0,i.kt)("inlineCode",{parentName:"h3"},"List")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// ==== \u540c\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar persons = "PROC_Name".SqlProcedureQuery();\n\n// \u793a\u4f8b\u4e8c\nvar persons = "PROC_Name".SqlProcedureQuery(new {id = 1});\n\n// \u793a\u4f8b\u4e09\nvar persons = "PROC_Name".SqlProcedureQuery(new {id = 1, age = 27});\n\n// ==== \u5f02\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar persons = await "PROC_Name".SqlProcedureQueryAsync();\n\n// \u793a\u4f8b\u4e8c\nvar persons = await "PROC_Name".SqlProcedureQueryAsync(new {id = 1});\n\n// \u793a\u4f8b\u4e09\nvar persons = await "PROC_Name".SqlProcedureQueryAsync(new {id = 1, age = 27});\n')),(0,i.kt)("h3",{id:"91533-\u8fd4\u56de-dataset"},"9.15.3.3 \u8fd4\u56de ",(0,i.kt)("inlineCode",{parentName:"h3"},"DataSet")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// ==== \u540c\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar dataSet = "PROC_Name".SqlProcedureQueries();\n\n// \u793a\u4f8b\u4e8c\nvar dataSet = "PROC_Name".SqlProcedureQueries(new {id = 1});\n\n// \u793a\u4f8b\u4e09\nvar dataSet = "PROC_Name".SqlProcedureQueries(new {id = 1, age = 27});\n\n// ==== \u5f02\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar dataSet = await "PROC_Name".SqlProcedureQueriesAsync();\n\n// \u793a\u4f8b\u4e8c\nvar dataSet = await "PROC_Name".SqlProcedureQueriesAsync(new {id = 1});\n\n// \u793a\u4f8b\u4e09\nvar dataSet = await "PROC_Name".SqlProcedureQueriesAsync(new {id = 1, age = 27});\n')),(0,i.kt)("h3",{id:"91534-\u8fd4\u56de-tuplet1t8"},"9.15.3.4 \u8fd4\u56de ",(0,i.kt)("inlineCode",{parentName:"h3"},"Tuple")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// ==== \u540c\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar persons = "PROC_Name".SqlProcedureQueries();\n\n// \u793a\u4f8b\u4e8c\nvar (persons,students) = "PROC_Name".SqlProcedureQueries(new {id = 1});\n\n// \u793a\u4f8b\u4e09\nvar (persons,students,string) = "PROC_Name".SqlProcedureQueries(new {id = 1, age = 27});\n\n// \u793a\u4f8b\u56db\nvar (persons,students,personDetail,string) = "PROC_Name".SqlProcedureQueries(new {id = 1, age = 27});\n\n// ==== \u5f02\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar persons = await "PROC_Name".SqlProcedureQueriesAsync();\n\n// \u793a\u4f8b\u4e8c\nvar (persons,students) = await "PROC_Name".SqlProcedureQueriesAsync(new {id = 1});\n\n// \u793a\u4f8b\u4e09\nvar (persons,students,string) = await "PROC_Name".SqlProcedureQueriesAsync(new {id = 1, age = 27});\n\n// \u793a\u4f8b\u56db\nvar (persons,students,personDetail,string) = await "PROC_Name".SqlProcedureQueriesAsync(new {id = 1, age = 27});\n')),(0,i.kt)("h3",{id:"91535-\u8fd4\u56de-\u5355\u884c\u5355\u5217"},"9.15.3.5 \u8fd4\u56de \u5355\u884c\u5355\u5217"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// ==== \u540c\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar value = "PROC_Name".SqlProcedureScalar(new {id = 1});\n\n// \u793a\u4f8b\u4e8c\nvar value = "PROC_Name".SqlProcedureScalar(new {id = 1, name = "\u65b0\u751f\u5e1d", address ="\u5e7f\u4e1c\u7701\u4e2d\u5c71\u5e02"});\n\n// \u793a\u4f8b\u4e09\nvar value = "PROC_Name".SqlProcedureScalar(new {id = 1, address ="\u5e7f\u4e1c\u7701\u4e2d\u5c71\u5e02"});\n\n// ==== \u5f02\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar value = await "PROC_Name".SqlProcedureScalarAsync(new {id = 1});\n\n// \u793a\u4f8b\u4e8c\nvar value = await "PROC_Name".SqlProcedureScalarAsync(new {id = 1, name = "\u65b0\u751f\u5e1d", address ="\u5e7f\u4e1c\u7701\u4e2d\u5c71\u5e02"});\n\n// \u793a\u4f8b\u4e09\nvar value = await "PROC_Name".SqlProcedureScalarAsync(new {id = 1, address ="\u5e7f\u4e1c\u7701\u4e2d\u5c71\u5e02"});\n')),(0,i.kt)("h3",{id:"91536-\u8fd4\u56de-\u53d7\u5f71\u54cd\u884c\u6570"},"9.15.3.6 \u8fd4\u56de \u53d7\u5f71\u54cd\u884c\u6570"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// ==== \u540c\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar rowEffects = "PROC_Name".SqlProcedureNonQuery(person);\n\n// \u793a\u4f8b\u4e8c\nvar rowEffects = "PROC_Name".SqlProcedureNonQuery(new {id = 1, name = "\u65b0\u751f\u5e1d", address ="\u5e7f\u4e1c\u7701\u4e2d\u5c71\u5e02"});\n\n// \u793a\u4f8b\u4e09\nvar rowEffects = "PROC_Name".SqlProcedureNonQuery(new {id=1, name="\u767e\u5c0f\u50e7"});\n\n// \u793a\u4f8b\u56db\nvar rowEffects = "PROC_Name".SqlProcedureNonQuery(new {id=1});\n\n// ==== \u5f02\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar rowEffects = await "PROC_Name".SqlProcedureNonQueryAsync(person);\n\n// \u793a\u4f8b\u4e8c\nvar rowEffects = await "PROC_Name".SqlProcedureNonQueryAsync(new {id = 1, name = "\u65b0\u751f\u5e1d", address ="\u5e7f\u4e1c\u7701\u4e2d\u5c71\u5e02"});\n\n// \u793a\u4f8b\u4e09\nvar rowEffects = await "PROC_Name".SqlProcedureNonQueryAsync(new {id=1, name="\u767e\u5c0f\u50e7"});\n\n// \u793a\u4f8b\u56db\nvar rowEffects = await "PROC_Name".SqlProcedureNonQueryAsync(new {id=1});\n')),(0,i.kt)("h3",{id:"91537-\u5e26-outputreturn-\u8fd4\u56de"},"9.15.3.7 \u5e26 ",(0,i.kt)("inlineCode",{parentName:"h3"},"OUTPUT/RETURN")," \u8fd4\u56de"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-sql",metastring:"{3,4,10-12,15-17,22}","{3,4,10-12,15-17,22}":!0},"CREATE PROC PROC_Output\n @Id INT, // \u8f93\u5165\u53c2\u6570\n @Name NVARCHAR(32) OUTPUT, // \u8f93\u51fa\u53c2\u6570\uff0c\u8fd8\u5e26\u957f\u5ea6\n @Age INT OUTPUT // \u8f93\u51fa\u53c2\u6570\nAS\nBEGIN\n SET @Name = 'Furion Output';\n\n // \u8f93\u51fa\u7ed3\u679c\u96c6\n SELECT *\n FROM dbo.Test\n WHERE Id > @Id;\n\n // \u8f93\u51fa\u7ed3\u679c\u96c6\n SELECT TOP 10\n *\n FROM dbo.Test;\n\n SET @Age = 27;\n\n // \u5e26 RETURN \u8fd4\u56de\n RETURN 10;\nEND;\n")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,10,13,16}","{1,10,13,16}":!0},"using Furion.DatabaseAccessor;\nusing System.Data;\n\nnamespace Furion.Application\n{\n public class ProcOutputModel\n {\n public int Id { get; set; } // \u8f93\u5165\u53c2\u6570\n\n [DbParameter(ParameterDirection.Output, Size = 32)]\n public string Name { get; set; } // \u8f93\u51fa\u53c2\u6570\n\n [DbParameter(ParameterDirection.Output)]\n public int Age { get; set; } // \u8f93\u51fa\u53c2\u6570\n\n [DbParameter(ParameterDirection.ReturnValue)]\n public int ReturnValue { get; set; } // \u8fd4\u56de\u503c\n }\n}\n")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// ==== \u540c\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nProcedureOutputResult result = "PROC_Name".SqlProcedureOutput(new ProcOutputModel{ Id=1});\n\n// \u793a\u4f8b\u4e8c\nProcedureOutputResult result = "PROC_Name".SqlProcedureOutput(new ProcOutputModel{ Id=1});\n\n// \u793a\u4f8b\u4e09\nProcedureOutputResult<(List, List)> result = "PROC_Name".SqlProcedureOutput<(List, List)>(new ProcOutputModel{ Id=1});\n\n// ==== \u5f02\u6b65\u64cd\u4f5c ====\n// \u793a\u4f8b\u4e00\nProcedureOutputResult result = await "PROC_Name".SqlProcedureOutputAsync(new ProcOutputModel{ Id=1});\n\n// \u793a\u4f8b\u4e8c\nProcedureOutputResult result = await "PROC_Name".SqlProcedureOutputAsync(new ProcOutputModel{ Id=1});\n\n// \u793a\u4f8b\u4e09\nProcedureOutputResult<(List, List)> result = await "PROC_Name".SqlProcedureOutputAsync<(List, List)>(new ProcOutputModel{ Id=1});\n')),(0,i.kt)("h2",{id:"9154-\u61d2\u4eba\u65e0\u654c-\u51fd\u6570-"},"9.15.4 \u61d2\u4eba\u65e0\u654c ",(0,i.kt)("inlineCode",{parentName:"h2"},"\u51fd\u6570")," \ud83d\udc2e"),(0,i.kt)("h3",{id:"91541-\u6807\u91cf\u51fd\u6570"},"9.15.4.1 ",(0,i.kt)("inlineCode",{parentName:"h3"},"\u6807\u91cf\u51fd\u6570")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// ==== \u540c\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar value = "FN_Name".SqlFunctionScalar();\n\n// \u793a\u4f8b\u4e8c\nvar value = "FN_Name".SqlFunctionScalar(new {id = 1});\n\n// \u793a\u4f8b\u4e09\nvar value = "FN_Name".SqlFunctionScalar();\n\n// \u793a\u4f8b\u56db\nvar value = "FN_Name".SqlFunctionScalar(new {id = 1});\n\n// ==== \u5f02\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar value = await "FN_Name".SqlFunctionScalarAsync();\n\n// \u793a\u4f8b\u4e8c\nvar value = await "FN_Name".SqlFunctionScalarAsync(new {id = 1});\n\n// \u793a\u4f8b\u4e09\nvar value = await "FN_Name".SqlFunctionScalarAsync();\n\n// \u793a\u4f8b\u56db\nvar value = await "FN_Name".SqlFunctionScalarAsync(new {id = 1});\n')),(0,i.kt)("h3",{id:"91542-\u8868\u503c\u51fd\u6570"},"9.15.4.2 ",(0,i.kt)("inlineCode",{parentName:"h3"},"\u8868\u503c\u51fd\u6570")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// ==== \u540c\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar dataTable = "FN_Name".SqlFunctionQuery();\n\n// \u793a\u4f8b\u4e8c\nvar dataTable = "FN_Name".SqlFunctionQuery(new {id = 1});\n\n// \u793a\u4f8b\u4e09\nvar persons = "FN_Name".SqlFunctionQuery();\n\n// \u793a\u4f8b\u56db\nvar persons = "FN_Name".SqlFunctionQuery(new {id = 1});\n\n// ==== \u5f02\u6b65\u64cd\u4f5c ====\n\n// \u793a\u4f8b\u4e00\nvar dataTable = await "FN_Name".SqlFunctionQueryAsync();\n\n// \u793a\u4f8b\u4e8c\nvar dataTable = await "FN_Name".SqlFunctionQueryAsync(new {id = 1});\n\n// \u793a\u4f8b\u4e09\nvar persons = await "FN_Name".SqlFunctionQueryAsync();\n\n// \u793a\u4f8b\u56db\nvar persons = await "FN_Name".SqlFunctionQueryAsync(new {id = 1});\n')),(0,i.kt)("h2",{id:"9155-\u8bbe\u7f6e\u8d85\u65f6\u65f6\u95f4"},"9.15.5 \u8bbe\u7f6e\u8d85\u65f6\u65f6\u95f4"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'var data = "select * from table".SetCommandTimeout(100).SqlQuery(); // \u5355\u4f4d\u79d2\n')),(0,i.kt)("h2",{id:"9156-isqlrepository-\u64cd\u4f5c"},"9.15.6 ",(0,i.kt)("inlineCode",{parentName:"h2"},"ISqlRepository")," \u64cd\u4f5c"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"ISqlRepository")," \u4ed3\u50a8\u662f\u4e13\u95e8\u5904\u7406 ",(0,i.kt)("inlineCode",{parentName:"p"},"Sql")," \u64cd\u4f5c\u7684\uff0c\u65e0\u9700\u5b9e\u4f53\u65b9\u5f0f\uff0c\u6240\u6709\u63a5\u53e3\u548c ",(0,i.kt)("inlineCode",{parentName:"p"},"\u61d2\u4eba\u65e0\u654c")," \u65b9\u5f0f\u4e00\u6837\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// \u793a\u4f8b\u4e00\nvar dataTable = sqlRepository.SqlQuery("select * from person");\n\n// \u793a\u4f8b\u4e8c\nvar dataTable = sqlRepository.SqlQuery("select * from person where id > @id", new { id = 10});\n\n// \u793a\u4f8b\u56db\nvar persons = sqlRepository.SqlQuery("select * from person");\n\n// \u793a\u4f8b\u4e94\nvar persons = sqlRepository.SqlQuery("select * from person where id > @id", new { id = 10});\n\n// \u4e0d\u518d\u4e3e\u4f8b\u5b50\u3002\u3002\u3002\n')),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u8865\u5145\u8bf4\u660e")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u4e0d\u7ba1\u662f\u54ea\u79cd\u65b9\u5f0f\u64cd\u4f5c ",(0,i.kt)("inlineCode",{parentName:"p"},"Sql")," \uff0c\u65b9\u6cd5\u540d\u53c2\u6570\u90fd\u662f\u4e00\u81f4\u7684\uff0c\u5982\uff1a"),(0,i.kt)("ul",{parentName:"div"},(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"SqlQuery")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"SqlQueryAsync")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"SqlQueries")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"SqlQueriesAsync")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"SqlNonQuery")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"SqlNonQueryAsync")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"SqlScalar")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"SqlScalarAsync")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"SqlProcedureQuery")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"SqlProcedureQueryAsync")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"SqlProcedureQueries")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"SqlProcedureQueriesAsync")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"SqlProcedureScalar")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"SqlProcedureScalarAsync")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"SqlProcedureNonQuery")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"SqlProcedureNonQueryAsync")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"SqlProcedureOutput")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"SqlProcedureOutputAsync")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"SqlFunctionScalar")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"SqlFunctionScalarAsync")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"SqlFunctionQuery")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"SqlFunctionQuery"))))),(0,i.kt)("h2",{id:"9157-irepository-\u64cd\u4f5c"},"9.15.7 ",(0,i.kt)("inlineCode",{parentName:"h2"},"IRepository")," \u64cd\u4f5c"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"IRepository")," \u4e5f\u80fd\u64cd\u4f5c ",(0,i.kt)("inlineCode",{parentName:"p"},"sql"),"\uff0c\u8c03\u7528\u65b9\u6cd5\u4e5f\u662f\u548c\u4e0a\u9762\u4e00\u81f4\u7684\uff0c\u5982\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'var dataTable = repository.Sql().SqlQuery("select * from person");\n')),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u7279\u522b\u8bf4\u660e")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u7531\u4e8e\u7bc7\u5e45\u6709\u9650\uff0c\u4e0d\u518d\u5217\u4e3e\u6240\u6709\u4f8b\u5b50\u3002"))),(0,i.kt)("h2",{id:"9158-irepositorytentity-\u64cd\u4f5c"},"9.15.8 ",(0,i.kt)("inlineCode",{parentName:"h2"},"IRepository")," \u64cd\u4f5c"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"IRepository")," \u4e5f\u80fd\u64cd\u4f5c ",(0,i.kt)("inlineCode",{parentName:"p"},"sql"),"\uff0c\u8c03\u7528\u65b9\u6cd5\u4e5f\u662f\u548c\u4e0a\u9762\u4e00\u81f4\u7684\uff0c\u5982\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'var dataTable = personRepository.SqlQuery("select * from person");\n')),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u7279\u522b\u8bf4\u660e")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u7531\u4e8e\u7bc7\u5e45\u6709\u9650\uff0c\u4e0d\u518d\u5217\u4e3e\u6240\u6709\u4f8b\u5b50\u3002"))),(0,i.kt)("h2",{id:"9159-\u5173\u4e8e-sql-\u53c2\u6570"},"9.15.9 \u5173\u4e8e ",(0,i.kt)("inlineCode",{parentName:"h2"},"Sql")," \u53c2\u6570"),(0,i.kt)("p",null,"\u6240\u6709 ",(0,i.kt)("inlineCode",{parentName:"p"},"sql"),"\u3001",(0,i.kt)("inlineCode",{parentName:"p"},"\u5b58\u50a8\u8fc7\u7a0b"),"\uff0c",(0,i.kt)("inlineCode",{parentName:"p"},"\u51fd\u6570")," \u53c2\u6570\u90fd\u652f\u6301\u56db\u79cd\u65b9\u5f0f\uff1a"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"DbParameter[]"),"\uff1a\u6570\u7ec4\u7c7b\u578b"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"new {}"),"\uff1a\u533f\u540d\u7c7b\u578b"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"new Class{}"),"\uff1a\u5f3a\u7c7b\u578b\u7c7b\u578b\uff08\u652f\u6301\u590d\u6742\u5b58\u50a8\u8fc7\u7a0b\u53c2\u6570\uff09"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"Dictionary")," \u7c7b\u578b")),(0,i.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u5c0f\u77e5\u8bc6")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u5efa\u8bae\u9664\u4e86\u590d\u6742\u7684\u5b58\u50a8\u8fc7\u7a0b\uff08\u5e26 ",(0,i.kt)("inlineCode",{parentName:"p"},"OUTPUT/RETURN"),"\uff09\u7684\u4ee5\u5916\uff0c\u6240\u6709\u53c2\u6570\u5efa\u8bae\u4f7f\u7528 ",(0,i.kt)("inlineCode",{parentName:"p"},"new {}")," \u533f\u540d\u7c7b\u578b\uff0c\u5982\u679c\u9700\u8981\u52a8\u6001\u53c2\u6570\uff0c\u5219\u53ef\u4ee5\u4f7f\u7528 ",(0,i.kt)("inlineCode",{parentName:"p"},"Dictionary")," \u7c7b\u578b\u3002"))),(0,i.kt)("h2",{id:"91510-\u591a\u6570\u636e\u5e93-sql-\u64cd\u4f5c--"},"9.15.10 \u591a\u6570\u636e\u5e93 ",(0,i.kt)("inlineCode",{parentName:"h2"},"Sql")," \u64cd\u4f5c \ud83d\udcaf \ud83d\udc9b"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u62e5\u6709\u975e\u5e38\u7075\u6d3b\u7684\u591a\u6570\u636e\u5e93\u64cd\u4f5c\u65b9\u5f0f\uff0c\u53ea\u9700\u901a\u8fc7\u591a",(0,i.kt)("strong",{parentName:"p"},"\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u5b9a\u4f4d\u5668"),"\u5373\u53ef\u52a8\u6001\u5207\u6362\u6570\u636e\u5e93\u3002"),(0,i.kt)("h3",{id:"915101-\u61d2\u4eba\u65e0\u654c--\u65b9\u5f0f"},"9.15.10.1 \u61d2\u4eba\u65e0\u654c \ud83d\udc2e \u65b9\u5f0f"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'var dataTable = "select * from person".Change().SqlQuery();\n\nvar persons = "select * from person whre id > @id".Change().SqlQuery();\n')),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u8865\u5145\u8bf4\u660e")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u61d2\u4eba\u65b9\u5f0f \u53ea\u9700\u8981\u901a\u8fc7 ",(0,i.kt)("inlineCode",{parentName:"p"},"Change")," \u65b9\u5f0f\u5373\u53ef\u52a8\u6001\u5207\u6362\u6570\u636e\u5e93\u3002"))),(0,i.kt)("h3",{id:"915102-isqlrepository-\u65b9\u5f0f"},"9.15.10.2 ",(0,i.kt)("inlineCode",{parentName:"h3"},"ISqlRepository")," \u65b9\u5f0f"),(0,i.kt)("p",null,"\u53ea\u9700\u8981\u901a\u8fc7 ",(0,i.kt)("inlineCode",{parentName:"p"},"ISqlRepository")," \u6ce8\u5165\u6216\u901a\u8fc7 ",(0,i.kt)("inlineCode",{parentName:"p"},"sqlRepository.Change()")," \u5207\u6362\u3002"),(0,i.kt)("h3",{id:"915103-irepository-\u65b9\u5f0f"},"9.15.10.3 ",(0,i.kt)("inlineCode",{parentName:"h3"},"IRepository")," \u65b9\u5f0f"),(0,i.kt)("p",null,"\u53ea\u9700\u8981\u901a\u8fc7 ",(0,i.kt)("inlineCode",{parentName:"p"},"repository.Change()")," \u83b7\u53d6\u5373\u53ef\u3002"),(0,i.kt)("h3",{id:"915104-irepositorytentity-\u65b9\u5f0f"},"9.15.10.4 ",(0,i.kt)("inlineCode",{parentName:"h3"},"IRepository")," \u65b9\u5f0f"),(0,i.kt)("p",null,"\u53ea\u9700\u8981\u901a\u8fc7 ",(0,i.kt)("inlineCode",{parentName:"p"},"IRepository")," \u6ce8\u5165\u6216\u901a\u8fc7 ",(0,i.kt)("inlineCode",{parentName:"p"},"personRepository.Change()")," \u5207\u6362\u3002"),(0,i.kt)("h2",{id:"91511-\u5207\u6362\u6570\u636e\u5e93"},"9.15.11 \u5207\u6362\u6570\u636e\u5e93"),(0,i.kt)("p",null,"\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\uff0c\u4e0d\u7ba1\u662f\u61d2\u4eba\u6a21\u5f0f\u8fd8\u662f\u4ed3\u50a8\u6a21\u5f0f\u90fd\u662f\u901a\u8fc7 ",(0,i.kt)("inlineCode",{parentName:"p"},".Change")," \u65b9\u5f0f\u5207\u6362\u6570\u636e\u5e93\uff0c\u5982\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// \u61d2\u4eba\u6a21\u5f0f\nvar data = "select * from table".Change().SqlQuery();\n\n// \u4ed3\u50a8\u65b9\u5f0f\nvar data = req.Change().SqlQuery("select * from table");\n')),(0,i.kt)("h2",{id:"91512-\u591a\u7ebf\u7a0b\u5171\u4eab\u4f5c\u7528\u57df"},"9.15.12 \u591a\u7ebf\u7a0b\u5171\u4eab\u4f5c\u7528\u57df"),(0,i.kt)("p",null,"\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c\u6240\u6709\u7684 ",(0,i.kt)("inlineCode",{parentName:"p"},"\u5b57\u7b26\u4e32")," \u548c ",(0,i.kt)("inlineCode",{parentName:"p"},"\u5b9e\u4f53")," \u62d3\u5c55\u90fd\u6709\u81ea\u5df1\u72ec\u7acb\u7ef4\u62a4\u7684 ",(0,i.kt)("inlineCode",{parentName:"p"},"ServiceProvider")," \u4f5c\u7528\u57df\u3002"),(0,i.kt)("p",null,"\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Web")," \u8bf7\u6c42\u4e2d\uff0c\u9ed8\u8ba4\u662f ",(0,i.kt)("inlineCode",{parentName:"p"},"HttpContext.RequestServices"),"\uff0c\u4f46\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"\u975e Web"),"\uff0c\u5982\u591a\u7ebf\u7a0b\u64cd\u4f5c\uff0c\u540e\u53f0\u4efb\u52a1\uff0c\u4e8b\u4ef6\u603b\u7ebf\u7b49\u573a\u666f\u4e0b\u4f1a\u81ea\u52a8\u521b\u5efa\u65b0\u7684\u4f5c\u7528\u57df\uff0c\u5b9e\u9645\u4e0a\u8fd9\u662f\u975e\u5e38\u4e0d\u5fc5\u8981\u7684\u5185\u5b58\u5f00\u9500\u3002"),(0,i.kt)("p",null,"\u8fd9\u65f6\uff0c\u6211\u4eec\u53ea\u9700\u8981\u901a\u8fc7 ",(0,i.kt)("inlineCode",{parentName:"p"},".SetXXXScoped(service)")," \u5171\u4eab\u5f53\u524d\u670d\u52a1\u63d0\u4f9b\u5668\u4f5c\u7528\u57df\u5373\u53ef\uff0c\u5982\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'Scoped.Create((fac, scope) => {\n "select * from table".SetContextScoped(scope.ServiceProvider).SqlQuery();\n});\n')),(0,i.kt)("h2",{id:"91513-\u9759\u6001-default-\u65b9\u5f0f\u6784\u5efa"},"9.15.13 \u9759\u6001 ",(0,i.kt)("inlineCode",{parentName:"h2"},"Default")," \u65b9\u5f0f\u6784\u5efa"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'SqlExecutePart.Default.SetSqlString("select * from person").SqlQuery();\n')),(0,i.kt)("h2",{id:"91514-\u53cd\u9988\u4e0e\u5efa\u8bae"},"9.15.14 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,i.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/b89c6849.7e5db269.js b/handbook/build/assets/js/b89c6849.7e5db269.js new file mode 100644 index 00000000000..b7d5495831e --- /dev/null +++ b/handbook/build/assets/js/b89c6849.7e5db269.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[5630],{3905:function(e,t,n){n.d(t,{Zo:function(){return p},kt:function(){return m}});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var c=r.createContext({}),s=function(e){var t=r.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},p=function(e){var t=s(e.components);return r.createElement(c.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,c=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),d=s(n),m=a,f=d["".concat(c,".").concat(m)]||d[m]||u[m]||o;return n?r.createElement(f,i(i({ref:t},p),{},{components:n})):r.createElement(f,i({ref:t},p))}));function m(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,i=new Array(o);i[0]=d;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l.mdxType="string"==typeof e?e:a,i[1]=l;for(var s=2;s(str, [options]);\n")),(0,o.kt)("h2",{id:"104-\u83b7\u53d6\u5168\u5c40\u914d\u7f6e"},"10.4 \u83b7\u53d6\u5168\u5c40\u914d\u7f6e"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},"var options = JSON.GetSerializerOptions();\n")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/b89c6849.ccbb1167.js b/handbook/build/assets/js/b89c6849.ccbb1167.js deleted file mode 100644 index 803ca34289b..00000000000 --- a/handbook/build/assets/js/b89c6849.ccbb1167.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[5630],{3905:function(e,t,n){n.d(t,{Zo:function(){return p},kt:function(){return m}});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var c=r.createContext({}),s=function(e){var t=r.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},p=function(e){var t=s(e.components);return r.createElement(c.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,o=e.originalType,c=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),d=s(n),m=a,f=d["".concat(c,".").concat(m)]||d[m]||u[m]||o;return n?r.createElement(f,i(i({ref:t},p),{},{components:n})):r.createElement(f,i({ref:t},p))}));function m(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var o=n.length,i=new Array(o);i[0]=d;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l.mdxType="string"==typeof e?e:a,i[1]=l;for(var s=2;s(str, [options]);\n")),(0,o.kt)("h2",{id:"104-\u83b7\u53d6\u5168\u5c40\u914d\u7f6e"},"10.4 \u83b7\u53d6\u5168\u5c40\u914d\u7f6e"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},"var options = JSON.GetSerializerOptions();\n")))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/bb3cf766.e75fcb8b.js b/handbook/build/assets/js/bb3cf766.e75fcb8b.js new file mode 100644 index 00000000000..40c04236943 --- /dev/null +++ b/handbook/build/assets/js/bb3cf766.e75fcb8b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[4489],{3905:function(e,t,n){n.d(t,{Zo:function(){return p},kt:function(){return f}});var r=n(7294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var s=r.createContext({}),c=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},p=function(e){var t=c(e.components);return r.createElement(s.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,i=e.mdxType,o=e.originalType,s=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),d=c(n),f=i,m=d["".concat(s,".").concat(f)]||d[f]||u[f]||o;return n?r.createElement(m,a(a({ref:t},p),{},{components:n})):r.createElement(m,a({ref:t},p))}));function f(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var o=n.length,a=new Array(o);a[0]=d;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l.mdxType="string"==typeof e?e:i,a[1]=l;for(var c=2;c=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var s=r.createContext({}),c=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},p=function(e){var t=c(e.components);return r.createElement(s.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,i=e.mdxType,o=e.originalType,s=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),d=c(n),f=i,m=d["".concat(s,".").concat(f)]||d[f]||u[f]||o;return n?r.createElement(m,a(a({ref:t},p),{},{components:n})):r.createElement(m,a({ref:t},p))}));function f(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var o=n.length,a=new Array(o);a[0]=d;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l.mdxType="string"==typeof e?e:i,a[1]=l;for(var c=2;c=0||(i[r]=e[r]);return i}(e,n);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(t=0;t=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}var d=t.createContext({}),c=function(e){var n=t.useContext(d),r=n;return e&&(r="function"==typeof e?e(n):o(o({},n),e)),r},p=function(e){var n=c(e.components);return t.createElement(d.Provider,{value:n},e.children)},s={inlineCode:"code",wrapper:function(e){var n=e.children;return t.createElement(t.Fragment,{},n)}},u=t.forwardRef((function(e,n){var r=e.components,i=e.mdxType,a=e.originalType,d=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),u=c(r),v=i,m=u["".concat(d,".").concat(v)]||u[v]||s[v]||a;return r?t.createElement(m,o(o({ref:n},p),{},{components:r})):t.createElement(m,o({ref:n},p))}));function v(e,n){var r=arguments,i=n&&n.mdxType;if("string"==typeof e||i){var a=r.length,o=new Array(a);o[0]=u;var l={};for(var d in n)hasOwnProperty.call(n,d)&&(l[d]=n[d]);l.originalType=e,l.mdxType="string"==typeof e?e:i,o[1]=l;for(var c=2;cIFileProvider \u5b9e\u4f8b",id:"313-\u83b7\u53d6\u6587\u4ef6\u7cfb\u7edf-ifileprovider-\u5b9e\u4f8b",children:[{value:"31.3.1 Func<FileProviderTypes, object, IFileProvider> \u65b9\u5f0f",id:"3131-funcfileprovidertypes-object-ifileprovider-\u65b9\u5f0f",children:[]},{value:"31.3.2 FS \u9759\u6001\u7c7b\u65b9\u5f0f",id:"3132-fs-\u9759\u6001\u7c7b\u65b9\u5f0f",children:[]}]},{value:"31.4 IFileProvider \u5e38\u89c1\u64cd\u4f5c",id:"314-ifileprovider-\u5e38\u89c1\u64cd\u4f5c",children:[{value:"31.4.1 \u8bfb\u53d6\u6587\u4ef6\u5185\u5bb9",id:"3141-\u8bfb\u53d6\u6587\u4ef6\u5185\u5bb9",children:[]},{value:"31.4.2 \u83b7\u53d6\u6587\u4ef6\u76ee\u5f55\u5185\u5bb9\uff08\u9700\u9012\u5f52\u67e5\u627e\uff09",id:"3142-\u83b7\u53d6\u6587\u4ef6\u76ee\u5f55\u5185\u5bb9\uff08\u9700\u9012\u5f52\u67e5\u627e\uff09",children:[]},{value:"31.4.4 \u76d1\u542c\u6587\u4ef6\u53d8\u5316",id:"3144-\u76d1\u542c\u6587\u4ef6\u53d8\u5316",children:[]}]},{value:"31.5 \u6a21\u5757\u5316\u9759\u6001\u8d44\u6e90\u914d\u7f6e",id:"315-\u6a21\u5757\u5316\u9759\u6001\u8d44\u6e90\u914d\u7f6e",children:[]},{value:"31.6 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"316-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],s={toc:p};function u(e){var n=e.components,r=(0,i.Z)(e,o);return(0,a.kt)("wrapper",(0,t.Z)({},s,r,{components:n,mdxType:"MDXLayout"}),(0,a.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,a.kt)("div",{parentName:"div",className:"admonition-heading"},(0,a.kt)("h5",{parentName:"div"},(0,a.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,a.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,a.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7248\u672c\u8bf4\u660e")),(0,a.kt)("div",{parentName:"div",className:"admonition-content"},(0,a.kt)("p",{parentName:"div"},"\u4ee5\u4e0b\u5185\u5bb9\u4ec5\u9650 ",(0,a.kt)("inlineCode",{parentName:"p"},"Furion 2.5.0 +")," \u7248\u672c\u4f7f\u7528\u3002"))),(0,a.kt)("h2",{id:"311-\u5173\u4e8e\u6587\u4ef6\u7cfb\u7edf"},"31.1 \u5173\u4e8e\u6587\u4ef6\u7cfb\u7edf"),(0,a.kt)("p",null,"\u672c\u7ae0\u6240\u8c13\u7684 ",(0,a.kt)("inlineCode",{parentName:"p"},"\u6587\u4ef6\u7cfb\u7edf")," \u6709\u70b9\u540d\u4e0d\u526f\u5b9e\uff0c\u5176\u5b9e\u6839\u672c\u7b97\u4e0d\u4e0a\u4e00\u4e2a\u7cfb\u7edf\uff0c\u5b83\u4ec5\u4ec5\u662f\u5229\u7528\u4e00\u4e2a\u62bd\u8c61\u5316\u7684 ",(0,a.kt)("inlineCode",{parentName:"p"},"IFileProvider")," \u4ee5\u7edf\u4e00\u7684\u65b9\u5f0f\u63d0\u4f9b\u6240\u9700\u7684\u6587\u4ef6\u800c\u5df2\u3002\u901a\u8fc7\u8be5 ",(0,a.kt)("inlineCode",{parentName:"p"},"\u6587\u4ef6\u7cfb\u7edf")," \u53ef\u4ee5\u8bfb\u53d6\u7269\u7406\u6587\u4ef6\u548c\u5d4c\u5165\u8d44\u6e90\u6587\u4ef6\uff0c\u5305\u62ec\u76ee\u5f55\u7ed3\u679c\u8bfb\u53d6\uff0c\u6587\u4ef6\u5185\u5bb9\u8bfb\u53d6\uff0c\u6587\u4ef6\u5185\u5bb9\u76d1\u542c\u7b49\u7b49\u3002"),(0,a.kt)("h3",{id:"3111-\u6587\u4ef6\u7cfb\u7edf\u7c7b\u578b"},"31.1.1 \u6587\u4ef6\u7cfb\u7edf\u7c7b\u578b"),(0,a.kt)("p",null,(0,a.kt)("inlineCode",{parentName:"p"},"Furion")," \u63d0\u4f9b\u4e86\u4e24\u79cd\u6587\u4ef6\u7cfb\u7edf\u7c7b\u578b\uff1a"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"Physical"),"\uff1a\u7269\u7406\u6587\u4ef6\u7cfb\u7edf\u7c7b\u578b\uff0c\u4e5f\u5c31\u662f\u7269\u7406\u673a\u4e2d\u5b9e\u9645\u5b58\u5728\u7684\u6587\u4ef6"),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"Embedded"),"\uff1a\u5d4c\u5165\u8d44\u6e90\u6587\u4ef6\u7cfb\u7edf\u7c7b\u578b\uff0c\u4e5f\u5c31\u662f\u8d44\u6e90\u6587\u4ef6\u5d4c\u5165\u5230\u4e86\u7a0b\u5e8f\u96c6\u4e2d\uff0c\u5e38\u7528\u4e8e\u6a21\u5757\u5316\u5f00\u53d1")),(0,a.kt)("h2",{id:"312-\u6ce8\u518c\u865a\u62df\u6587\u4ef6\u7cfb\u7edf\u670d\u52a1"},"31.2 \u6ce8\u518c\u865a\u62df\u6587\u4ef6\u7cfb\u7edf\u670d\u52a1"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs"},"services.AddVirtualFileServer();\n")),(0,a.kt)("h2",{id:"313-\u83b7\u53d6\u6587\u4ef6\u7cfb\u7edf-ifileprovider-\u5b9e\u4f8b"},"31.3 \u83b7\u53d6\u6587\u4ef6\u7cfb\u7edf ",(0,a.kt)("inlineCode",{parentName:"h2"},"IFileProvider")," \u5b9e\u4f8b"),(0,a.kt)("h3",{id:"3131-funcfileprovidertypes-object-ifileprovider-\u65b9\u5f0f"},"31.3.1 ",(0,a.kt)("inlineCode",{parentName:"h3"},"Func")," \u65b9\u5f0f"),(0,a.kt)("p",null,(0,a.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u4e86 ",(0,a.kt)("inlineCode",{parentName:"p"},"Func")," \u59d4\u6258\u4f9b\u6784\u9020\u51fd\u6570\u6ce8\u5165\u6216\u89e3\u6790\u670d\u52a1\uff0c\u5982\uff1a"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{6,8-9,11-12}","{6,8-9,11-12}":!0},'public class PersonServices\n{\n private readonly IFileProvider _physicalFileProvider;\n private readonly IFileProvider _embeddedFileProvider;\n\n public PersonServices(Func fileProviderResolve)\n {\n // \u89e3\u6790\u7269\u7406\u6587\u4ef6\u7cfb\u7edf\n _physicalFileProvider = fileProviderResolve(FileProviderTypes.Physical, @"c:/test");\n\n // \u89e3\u6790\u5d4c\u5165\u8d44\u6e90\u6587\u4ef6\u7cfb\u7edf\n _embeddedFileProvider = fileProviderResolve(FileProviderTypes.Embedded, Assembly.GetEntryAssembly());\n }\n}\n')),(0,a.kt)("h3",{id:"3132-fs-\u9759\u6001\u7c7b\u65b9\u5f0f"},"31.3.2 ",(0,a.kt)("inlineCode",{parentName:"h3"},"FS")," \u9759\u6001\u7c7b\u65b9\u5f0f"),(0,a.kt)("p",null,(0,a.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e5f\u63d0\u4f9b\u4e86 ",(0,a.kt)("inlineCode",{parentName:"p"},"FS")," \u9759\u6001\u7c7b\u65b9\u5f0f\u521b\u5efa\uff0c\u5982\uff1a"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs"},'// \u89e3\u6790\u7269\u7406\u6587\u4ef6\u7cfb\u7edf\nvar physicalFileProvider = FS.GetPhysicalFileProvider(@"c:/test");\n\n// \u89e3\u6790\u5d4c\u5165\u8d44\u6e90\u6587\u4ef6\u7cfb\u7edf\nvar embeddedFileProvider = FS.GetEmbeddedFileProvider(Assembly.GetEntryAssembly());\n')),(0,a.kt)("h2",{id:"314-ifileprovider-\u5e38\u89c1\u64cd\u4f5c"},"31.4 ",(0,a.kt)("inlineCode",{parentName:"h2"},"IFileProvider")," \u5e38\u89c1\u64cd\u4f5c"),(0,a.kt)("h3",{id:"3141-\u8bfb\u53d6\u6587\u4ef6\u5185\u5bb9"},"31.4.1 \u8bfb\u53d6\u6587\u4ef6\u5185\u5bb9"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs"},'byte[] buffer;\nusing (Stream readStream = _fileProvider.GetFileInfo("\u4f60\u7684\u6587\u4ef6\u8def\u5f84").CreateReadStream())\n{\n buffer = new byte[readStream.Length];\n await readStream.ReadAsync(buffer.AsMemory(0, buffer.Length));\n}\n\n// \u8bfb\u53d6\u6587\u4ef6\u5185\u5bb9\nvar content = Encoding.UTF8.GetString(buffer);\n')),(0,a.kt)("h3",{id:"3142-\u83b7\u53d6\u6587\u4ef6\u76ee\u5f55\u5185\u5bb9\uff08\u9700\u9012\u5f52\u67e5\u627e\uff09"},"31.4.2 \u83b7\u53d6\u6587\u4ef6\u76ee\u5f55\u5185\u5bb9\uff08\u9700\u9012\u5f52\u67e5\u627e\uff09"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs"},'var rootPath = "\u5f53\u524d\u76ee\u5f55\u8def\u5f84";\nvar fileinfos = _fileProvider.GetDirectoryContents(rootPath);\nforeach (var fileinfo in fileinfos)\n{\n if(fileinfo.IsDirectory)\n {\n // \u8fd9\u91cc\u9012\u5f52\u3002\u3002\u3002\n }\n}\n')),(0,a.kt)("h3",{id:"3144-\u76d1\u542c\u6587\u4ef6\u53d8\u5316"},"31.4.4 \u76d1\u542c\u6587\u4ef6\u53d8\u5316"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs"},'ChangeToken.OnChange(() => _fileProvider.Watch("\u76d1\u542c\u7684\u6587\u4ef6"), () =>\n{\n // \u8fd9\u91cc\u5199\u4f60\u7684\u903b\u8f91\n});\n')),(0,a.kt)("h2",{id:"315-\u6a21\u5757\u5316\u9759\u6001\u8d44\u6e90\u914d\u7f6e"},"31.5 \u6a21\u5757\u5316\u9759\u6001\u8d44\u6e90\u914d\u7f6e"),(0,a.kt)("p",null,"\u901a\u5e38\u6211\u4eec\u91c7\u7528\u6a21\u5757\u5316\u5f00\u53d1\uff0c\u9759\u6001\u8d44\u6e90\u90fd\u662f\u5d4c\u5165\u8fdb\u7a0b\u5e8f\u96c6\u4e2d\uff0c\u8fd9\u65f6\u5019\u6211\u4eec\u9700\u8981\u901a\u8fc7\u914d\u7f6e ",(0,a.kt)("inlineCode",{parentName:"p"},"UseFileServer")," \u6307\u5b9a\u6a21\u5757\u9759\u6001\u8d44\u6e90\u8def\u5f84\uff0c\u5982\uff1a"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs"},'// \u9ed8\u8ba4\u9759\u6001\u8d44\u6e90\u8c03\u7528\uff0cwwwroot\napp.UseStaticFiles();\n\n// \u914d\u7f6e\u6a21\u5757\u5316\u9759\u6001\u8d44\u6e90\napp.UseFileServer(new FileServerOptions\n{\n FileProvider = new EmbeddedFileProvider(\u6a21\u5757\u7a0b\u5e8f\u96c6),\n RequestPath = "/\u6a21\u5757\u540d\u79f0", // \u540e\u7eed\u6240\u6709\u8d44\u6e90\u90fd\u662f\u901a\u8fc7 /\u6a21\u5757\u540d\u79f0/xxx.css \u8c03\u7528\n EnableDirectoryBrowsing = true\n});\n')),(0,a.kt)("h2",{id:"316-\u53cd\u9988\u4e0e\u5efa\u8bae"},"31.6 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,a.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,a.kt)("div",{parentName:"div",className:"admonition-heading"},(0,a.kt)("h5",{parentName:"div"},(0,a.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,a.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,a.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,a.kt)("div",{parentName:"div",className:"admonition-content"},(0,a.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,a.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))),(0,a.kt)("hr",null))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/bfaddb57.41dfe26b.js b/handbook/build/assets/js/bfaddb57.41dfe26b.js new file mode 100644 index 00000000000..4d6cce042d1 --- /dev/null +++ b/handbook/build/assets/js/bfaddb57.41dfe26b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[1215],{3905:function(e,n,r){r.d(n,{Zo:function(){return p},kt:function(){return v}});var t=r(7294);function i(e,n,r){return n in e?Object.defineProperty(e,n,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[n]=r,e}function a(e,n){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n&&(t=t.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),r.push.apply(r,t)}return r}function o(e){for(var n=1;n=0||(i[r]=e[r]);return i}(e,n);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(t=0;t=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}var d=t.createContext({}),c=function(e){var n=t.useContext(d),r=n;return e&&(r="function"==typeof e?e(n):o(o({},n),e)),r},p=function(e){var n=c(e.components);return t.createElement(d.Provider,{value:n},e.children)},s={inlineCode:"code",wrapper:function(e){var n=e.children;return t.createElement(t.Fragment,{},n)}},u=t.forwardRef((function(e,n){var r=e.components,i=e.mdxType,a=e.originalType,d=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),u=c(r),v=i,m=u["".concat(d,".").concat(v)]||u[v]||s[v]||a;return r?t.createElement(m,o(o({ref:n},p),{},{components:r})):t.createElement(m,o({ref:n},p))}));function v(e,n){var r=arguments,i=n&&n.mdxType;if("string"==typeof e||i){var a=r.length,o=new Array(a);o[0]=u;var l={};for(var d in n)hasOwnProperty.call(n,d)&&(l[d]=n[d]);l.originalType=e,l.mdxType="string"==typeof e?e:i,o[1]=l;for(var c=2;cIFileProvider \u5b9e\u4f8b",id:"313-\u83b7\u53d6\u6587\u4ef6\u7cfb\u7edf-ifileprovider-\u5b9e\u4f8b",children:[{value:"31.3.1 Func<FileProviderTypes, object, IFileProvider> \u65b9\u5f0f",id:"3131-funcfileprovidertypes-object-ifileprovider-\u65b9\u5f0f",children:[]},{value:"31.3.2 FS \u9759\u6001\u7c7b\u65b9\u5f0f",id:"3132-fs-\u9759\u6001\u7c7b\u65b9\u5f0f",children:[]}]},{value:"31.4 IFileProvider \u5e38\u89c1\u64cd\u4f5c",id:"314-ifileprovider-\u5e38\u89c1\u64cd\u4f5c",children:[{value:"31.4.1 \u8bfb\u53d6\u6587\u4ef6\u5185\u5bb9",id:"3141-\u8bfb\u53d6\u6587\u4ef6\u5185\u5bb9",children:[]},{value:"31.4.2 \u83b7\u53d6\u6587\u4ef6\u76ee\u5f55\u5185\u5bb9\uff08\u9700\u9012\u5f52\u67e5\u627e\uff09",id:"3142-\u83b7\u53d6\u6587\u4ef6\u76ee\u5f55\u5185\u5bb9\uff08\u9700\u9012\u5f52\u67e5\u627e\uff09",children:[]},{value:"31.4.4 \u76d1\u542c\u6587\u4ef6\u53d8\u5316",id:"3144-\u76d1\u542c\u6587\u4ef6\u53d8\u5316",children:[]}]},{value:"31.5 \u6a21\u5757\u5316\u9759\u6001\u8d44\u6e90\u914d\u7f6e",id:"315-\u6a21\u5757\u5316\u9759\u6001\u8d44\u6e90\u914d\u7f6e",children:[]},{value:"31.6 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"316-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],s={toc:p};function u(e){var n=e.components,r=(0,i.Z)(e,o);return(0,a.kt)("wrapper",(0,t.Z)({},s,r,{components:n,mdxType:"MDXLayout"}),(0,a.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,a.kt)("div",{parentName:"div",className:"admonition-heading"},(0,a.kt)("h5",{parentName:"div"},(0,a.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,a.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,a.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7248\u672c\u8bf4\u660e")),(0,a.kt)("div",{parentName:"div",className:"admonition-content"},(0,a.kt)("p",{parentName:"div"},"\u4ee5\u4e0b\u5185\u5bb9\u4ec5\u9650 ",(0,a.kt)("inlineCode",{parentName:"p"},"Furion 2.5.0 +")," \u7248\u672c\u4f7f\u7528\u3002"))),(0,a.kt)("h2",{id:"311-\u5173\u4e8e\u6587\u4ef6\u7cfb\u7edf"},"31.1 \u5173\u4e8e\u6587\u4ef6\u7cfb\u7edf"),(0,a.kt)("p",null,"\u672c\u7ae0\u6240\u8c13\u7684 ",(0,a.kt)("inlineCode",{parentName:"p"},"\u6587\u4ef6\u7cfb\u7edf")," \u6709\u70b9\u540d\u4e0d\u526f\u5b9e\uff0c\u5176\u5b9e\u6839\u672c\u7b97\u4e0d\u4e0a\u4e00\u4e2a\u7cfb\u7edf\uff0c\u5b83\u4ec5\u4ec5\u662f\u5229\u7528\u4e00\u4e2a\u62bd\u8c61\u5316\u7684 ",(0,a.kt)("inlineCode",{parentName:"p"},"IFileProvider")," \u4ee5\u7edf\u4e00\u7684\u65b9\u5f0f\u63d0\u4f9b\u6240\u9700\u7684\u6587\u4ef6\u800c\u5df2\u3002\u901a\u8fc7\u8be5 ",(0,a.kt)("inlineCode",{parentName:"p"},"\u6587\u4ef6\u7cfb\u7edf")," \u53ef\u4ee5\u8bfb\u53d6\u7269\u7406\u6587\u4ef6\u548c\u5d4c\u5165\u8d44\u6e90\u6587\u4ef6\uff0c\u5305\u62ec\u76ee\u5f55\u7ed3\u679c\u8bfb\u53d6\uff0c\u6587\u4ef6\u5185\u5bb9\u8bfb\u53d6\uff0c\u6587\u4ef6\u5185\u5bb9\u76d1\u542c\u7b49\u7b49\u3002"),(0,a.kt)("h3",{id:"3111-\u6587\u4ef6\u7cfb\u7edf\u7c7b\u578b"},"31.1.1 \u6587\u4ef6\u7cfb\u7edf\u7c7b\u578b"),(0,a.kt)("p",null,(0,a.kt)("inlineCode",{parentName:"p"},"Furion")," \u63d0\u4f9b\u4e86\u4e24\u79cd\u6587\u4ef6\u7cfb\u7edf\u7c7b\u578b\uff1a"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"Physical"),"\uff1a\u7269\u7406\u6587\u4ef6\u7cfb\u7edf\u7c7b\u578b\uff0c\u4e5f\u5c31\u662f\u7269\u7406\u673a\u4e2d\u5b9e\u9645\u5b58\u5728\u7684\u6587\u4ef6"),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"Embedded"),"\uff1a\u5d4c\u5165\u8d44\u6e90\u6587\u4ef6\u7cfb\u7edf\u7c7b\u578b\uff0c\u4e5f\u5c31\u662f\u8d44\u6e90\u6587\u4ef6\u5d4c\u5165\u5230\u4e86\u7a0b\u5e8f\u96c6\u4e2d\uff0c\u5e38\u7528\u4e8e\u6a21\u5757\u5316\u5f00\u53d1")),(0,a.kt)("h2",{id:"312-\u6ce8\u518c\u865a\u62df\u6587\u4ef6\u7cfb\u7edf\u670d\u52a1"},"31.2 \u6ce8\u518c\u865a\u62df\u6587\u4ef6\u7cfb\u7edf\u670d\u52a1"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs"},"services.AddVirtualFileServer();\n")),(0,a.kt)("h2",{id:"313-\u83b7\u53d6\u6587\u4ef6\u7cfb\u7edf-ifileprovider-\u5b9e\u4f8b"},"31.3 \u83b7\u53d6\u6587\u4ef6\u7cfb\u7edf ",(0,a.kt)("inlineCode",{parentName:"h2"},"IFileProvider")," \u5b9e\u4f8b"),(0,a.kt)("h3",{id:"3131-funcfileprovidertypes-object-ifileprovider-\u65b9\u5f0f"},"31.3.1 ",(0,a.kt)("inlineCode",{parentName:"h3"},"Func")," \u65b9\u5f0f"),(0,a.kt)("p",null,(0,a.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u4e86 ",(0,a.kt)("inlineCode",{parentName:"p"},"Func")," \u59d4\u6258\u4f9b\u6784\u9020\u51fd\u6570\u6ce8\u5165\u6216\u89e3\u6790\u670d\u52a1\uff0c\u5982\uff1a"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{6,8-9,11-12}","{6,8-9,11-12}":!0},'public class PersonServices\n{\n private readonly IFileProvider _physicalFileProvider;\n private readonly IFileProvider _embeddedFileProvider;\n\n public PersonServices(Func fileProviderResolve)\n {\n // \u89e3\u6790\u7269\u7406\u6587\u4ef6\u7cfb\u7edf\n _physicalFileProvider = fileProviderResolve(FileProviderTypes.Physical, @"c:/test");\n\n // \u89e3\u6790\u5d4c\u5165\u8d44\u6e90\u6587\u4ef6\u7cfb\u7edf\n _embeddedFileProvider = fileProviderResolve(FileProviderTypes.Embedded, Assembly.GetEntryAssembly());\n }\n}\n')),(0,a.kt)("h3",{id:"3132-fs-\u9759\u6001\u7c7b\u65b9\u5f0f"},"31.3.2 ",(0,a.kt)("inlineCode",{parentName:"h3"},"FS")," \u9759\u6001\u7c7b\u65b9\u5f0f"),(0,a.kt)("p",null,(0,a.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e5f\u63d0\u4f9b\u4e86 ",(0,a.kt)("inlineCode",{parentName:"p"},"FS")," \u9759\u6001\u7c7b\u65b9\u5f0f\u521b\u5efa\uff0c\u5982\uff1a"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs"},'// \u89e3\u6790\u7269\u7406\u6587\u4ef6\u7cfb\u7edf\nvar physicalFileProvider = FS.GetPhysicalFileProvider(@"c:/test");\n\n// \u89e3\u6790\u5d4c\u5165\u8d44\u6e90\u6587\u4ef6\u7cfb\u7edf\nvar embeddedFileProvider = FS.GetEmbeddedFileProvider(Assembly.GetEntryAssembly());\n')),(0,a.kt)("h2",{id:"314-ifileprovider-\u5e38\u89c1\u64cd\u4f5c"},"31.4 ",(0,a.kt)("inlineCode",{parentName:"h2"},"IFileProvider")," \u5e38\u89c1\u64cd\u4f5c"),(0,a.kt)("h3",{id:"3141-\u8bfb\u53d6\u6587\u4ef6\u5185\u5bb9"},"31.4.1 \u8bfb\u53d6\u6587\u4ef6\u5185\u5bb9"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs"},'byte[] buffer;\nusing (Stream readStream = _fileProvider.GetFileInfo("\u4f60\u7684\u6587\u4ef6\u8def\u5f84").CreateReadStream())\n{\n buffer = new byte[readStream.Length];\n await readStream.ReadAsync(buffer.AsMemory(0, buffer.Length));\n}\n\n// \u8bfb\u53d6\u6587\u4ef6\u5185\u5bb9\nvar content = Encoding.UTF8.GetString(buffer);\n')),(0,a.kt)("h3",{id:"3142-\u83b7\u53d6\u6587\u4ef6\u76ee\u5f55\u5185\u5bb9\uff08\u9700\u9012\u5f52\u67e5\u627e\uff09"},"31.4.2 \u83b7\u53d6\u6587\u4ef6\u76ee\u5f55\u5185\u5bb9\uff08\u9700\u9012\u5f52\u67e5\u627e\uff09"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs"},'var rootPath = "\u5f53\u524d\u76ee\u5f55\u8def\u5f84";\nvar fileinfos = _fileProvider.GetDirectoryContents(rootPath);\nforeach (var fileinfo in fileinfos)\n{\n if(fileinfo.IsDirectory)\n {\n // \u8fd9\u91cc\u9012\u5f52\u3002\u3002\u3002\n }\n}\n')),(0,a.kt)("h3",{id:"3144-\u76d1\u542c\u6587\u4ef6\u53d8\u5316"},"31.4.4 \u76d1\u542c\u6587\u4ef6\u53d8\u5316"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs"},'ChangeToken.OnChange(() => _fileProvider.Watch("\u76d1\u542c\u7684\u6587\u4ef6"), () =>\n{\n // \u8fd9\u91cc\u5199\u4f60\u7684\u903b\u8f91\n});\n')),(0,a.kt)("h2",{id:"315-\u6a21\u5757\u5316\u9759\u6001\u8d44\u6e90\u914d\u7f6e"},"31.5 \u6a21\u5757\u5316\u9759\u6001\u8d44\u6e90\u914d\u7f6e"),(0,a.kt)("p",null,"\u901a\u5e38\u6211\u4eec\u91c7\u7528\u6a21\u5757\u5316\u5f00\u53d1\uff0c\u9759\u6001\u8d44\u6e90\u90fd\u662f\u5d4c\u5165\u8fdb\u7a0b\u5e8f\u96c6\u4e2d\uff0c\u8fd9\u65f6\u5019\u6211\u4eec\u9700\u8981\u901a\u8fc7\u914d\u7f6e ",(0,a.kt)("inlineCode",{parentName:"p"},"UseFileServer")," \u6307\u5b9a\u6a21\u5757\u9759\u6001\u8d44\u6e90\u8def\u5f84\uff0c\u5982\uff1a"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs"},'// \u9ed8\u8ba4\u9759\u6001\u8d44\u6e90\u8c03\u7528\uff0cwwwroot\napp.UseStaticFiles();\n\n// \u914d\u7f6e\u6a21\u5757\u5316\u9759\u6001\u8d44\u6e90\napp.UseFileServer(new FileServerOptions\n{\n FileProvider = new EmbeddedFileProvider(\u6a21\u5757\u7a0b\u5e8f\u96c6),\n RequestPath = "/\u6a21\u5757\u540d\u79f0", // \u540e\u7eed\u6240\u6709\u8d44\u6e90\u90fd\u662f\u901a\u8fc7 /\u6a21\u5757\u540d\u79f0/xxx.css \u8c03\u7528\n EnableDirectoryBrowsing = true\n});\n')),(0,a.kt)("h2",{id:"316-\u53cd\u9988\u4e0e\u5efa\u8bae"},"31.6 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,a.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,a.kt)("div",{parentName:"div",className:"admonition-heading"},(0,a.kt)("h5",{parentName:"div"},(0,a.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,a.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,a.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,a.kt)("div",{parentName:"div",className:"admonition-content"},(0,a.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,a.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))),(0,a.kt)("hr",null))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/c0812ddb.42a7aa53.js b/handbook/build/assets/js/c0812ddb.42a7aa53.js new file mode 100644 index 00000000000..ecc5caf2bc2 --- /dev/null +++ b/handbook/build/assets/js/c0812ddb.42a7aa53.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[5827],{3905:function(e,t,n){n.d(t,{Zo:function(){return c},kt:function(){return m}});var r=n(7294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var p=r.createContext({}),u=function(e){var t=r.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},c=function(e){var t=u(e.components);return r.createElement(p.Provider,{value:t},e.children)},d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},s=r.forwardRef((function(e,t){var n=e.components,i=e.mdxType,o=e.originalType,p=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),s=u(n),m=i,k=s["".concat(p,".").concat(m)]||s[m]||d[m]||o;return n?r.createElement(k,a(a({ref:t},c),{},{components:n})):r.createElement(k,a({ref:t},c))}));function m(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var o=n.length,a=new Array(o);a[0]=s;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l.mdxType="string"==typeof e?e:i,a[1]=l;for(var u=2;u.NET 6 Preview 6 SDK",id:"\u5b89\u88c5-net-6-preview-6-sdk",children:[]},{value:"\u65e7\u9879\u76ee\u5347\u7ea7",id:"\u65e7\u9879\u76ee\u5347\u7ea7",children:[]},{value:"\u65b0\u9879\u76ee\u4f7f\u7528",id:"\u65b0\u9879\u76ee\u4f7f\u7528",children:[{value:"\u5347\u7ea7 Visual Studio 2019",id:"\u5347\u7ea7-visual-studio-2019",children:[]},{value:"\u7b2c\u4e00\u4e2a\u4f8b\u5b50",id:"\u7b2c\u4e00\u4e2a\u4f8b\u5b50",children:[]},{value:"\u6253\u5f00\u5e76\u542f\u52a8\u9879\u76ee",id:"\u6253\u5f00\u5e76\u542f\u52a8\u9879\u76ee",children:[]}]}],s={toc:d};function m(e){var t=e.components,n=(0,i.Z)(e,a);return(0,o.kt)("wrapper",(0,r.Z)({},s,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"2021 \u5e74 08 \u6708 11 \u65e5\uff0c\u5fae\u8f6f\u53d1\u5e03\u4e86 ",(0,o.kt)("inlineCode",{parentName:"strong"},".NET 6 Preview 7")," \u7248\u672c\uff0c",(0,o.kt)("inlineCode",{parentName:"strong"},"Furion")," \u5728\u5f53\u5929\u7b2c\u4e00\u65f6\u95f4\u9002\u914d\u4e86\u8be5\u7248\u672c\uff0c\u5e76\u53d1\u5e03 ",(0,o.kt)("inlineCode",{parentName:"strong"},"Furion v3.0.0-rc.2")," \u7248\u672c\u3002")),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/tree/3.0.0-rc.2/"},"Furion .NET 6 Preview 7 \u6e90\u7801\u5730\u5740")),(0,o.kt)("h2",{id:"\u5b89\u88c5-net-6-preview-6-sdk"},"\u5b89\u88c5 ",(0,o.kt)("inlineCode",{parentName:"h2"},".NET 6 Preview 6 SDK")),(0,o.kt)("p",null,"\u5c1d\u9c9c\u4e4b\u524d\uff0c\u9996\u5148\u5148\u5b89\u88c5 ",(0,o.kt)("inlineCode",{parentName:"p"},".NET 6 Preview 7 SDK"),"\uff0c\u4e0b\u8f7d\u5730\u5740\uff1a",(0,o.kt)("a",{parentName:"p",href:"https://dotnet.microsoft.com/download/dotnet/6.0"},"https://dotnet.microsoft.com/download/dotnet/6.0")),(0,o.kt)("p",null,"\u4e0b\u8f7d\u5bf9\u5e94\u7cfb\u7edf\u548c\u5904\u7406\u5668\u7248\u672c\u5373\u53ef\u3002"),(0,o.kt)("h2",{id:"\u65e7\u9879\u76ee\u5347\u7ea7"},"\u65e7\u9879\u76ee\u5347\u7ea7"),(0,o.kt)("p",null,"\u7f16\u8f91\u6240\u6709 ",(0,o.kt)("inlineCode",{parentName:"p"},".csproj")," \u9879\u76ee\uff0c\u4fee\u6539 ",(0,o.kt)("inlineCode",{parentName:"p"},"net5.0")," \u4e3a ",(0,o.kt)("inlineCode",{parentName:"p"},"net6.0"),"\u3002"),(0,o.kt)("p",null,"\u540c\u65f6\u5347\u7ea7\u6240\u6709 ",(0,o.kt)("inlineCode",{parentName:"p"},"Microsoft")," \u548c ",(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u5305\u4e3a\u6700\u65b0\u7248\u672c\uff0c",(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u6700\u65b0\u7248\u672c\u4e3a\uff1a",(0,o.kt)("inlineCode",{parentName:"p"},"v3.0.0-rc.1"),"\u3002"),(0,o.kt)("h2",{id:"\u65b0\u9879\u76ee\u4f7f\u7528"},"\u65b0\u9879\u76ee\u4f7f\u7528"),(0,o.kt)("h3",{id:"\u5347\u7ea7-visual-studio-2019"},"\u5347\u7ea7 ",(0,o.kt)("inlineCode",{parentName:"h3"},"Visual Studio 2019")),(0,o.kt)("p",null,"\u76ee\u524d ",(0,o.kt)("inlineCode",{parentName:"p"},".NET 6 Preview 7")," \u652f\u6301\u4f7f\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"Visual Studio 2019 Preview 16.11.0 Preview 4.0")," \u7248\u672c\uff0c",(0,o.kt)("strong",{parentName:"p"},"\u6ce8\u610f\u662f ",(0,o.kt)("inlineCode",{parentName:"strong"},"Preview")," \u6700\u65b0\u7248\u672c"),"\u3002\u4e0b\u8f7d\u5730\u5740\uff1a",(0,o.kt)("a",{parentName:"p",href:"https://visualstudio.microsoft.com/zh-hans/thank-you-downloading-visual-studio/?sku=enterprise&ch=pre&rel=16"},"https://visualstudio.microsoft.com/zh-hans/thank-you-downloading-visual-studio/?sku=enterprise&ch=pre&rel=16")),(0,o.kt)("p",null,"\u5df2\u7ecf\u5b89\u88c5\u4e86 ",(0,o.kt)("inlineCode",{parentName:"p"},"Visual Studio 2019 Preview")," \u7248\u672c\u7684\u670b\u53cb\u76f4\u63a5\u5347\u7ea7\u5230\u6700\u65b0\u7248\u5373\u53ef\u3002"),(0,o.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u7279\u522b\u8bf4\u660e")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u5982\u679c\u4f7f\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"Visual Studio Code")," \u5f00\u53d1\uff0c\u53ef\u5ffd\u7565\u6b64\u9009\u9879\u3002"))),(0,o.kt)("h3",{id:"\u7b2c\u4e00\u4e2a\u4f8b\u5b50"},"\u7b2c\u4e00\u4e2a\u4f8b\u5b50"),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"Furion v3.0.0-rc.2")," \u76ee\u524d\u63d0\u4f9b\u4e86\u6240\u6709\u7c7b\u578b\u7684\u811a\u624b\u67b6\uff0c\u7248\u672c\u53f7\u7edf\u4e00 ",(0,o.kt)("inlineCode",{parentName:"p"},"3.0.0-rc.2"),"\u3002"),(0,o.kt)("p",null,"\u5b89\u88c5\u811a\u624b\u67b6\uff0c\u6253\u5f00 ",(0,o.kt)("inlineCode",{parentName:"p"},"CMD/Powershell")," \u6267\u884c\u4ee5\u4e0b\u547d\u4ee4\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"dotnet new --install Furion.Template.Api::3.0.0-rc.2\n")),(0,o.kt)("p",null,"\u521b\u5efa\u9879\u76ee"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"dotnet new furionapi -n FurionNET6\n")),(0,o.kt)("h3",{id:"\u6253\u5f00\u5e76\u542f\u52a8\u9879\u76ee"},"\u6253\u5f00\u5e76\u542f\u52a8\u9879\u76ee"),(0,o.kt)("p",null,"\u6253\u5f00\u6d4f\u89c8\u5668\u67e5\u770b\u6548\u679c\u5373\u53ef\u3002"))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/c0812ddb.ad8f4a68.js b/handbook/build/assets/js/c0812ddb.ad8f4a68.js deleted file mode 100644 index 26dd660e9ed..00000000000 --- a/handbook/build/assets/js/c0812ddb.ad8f4a68.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[5827],{3905:function(e,t,n){n.d(t,{Zo:function(){return c},kt:function(){return m}});var r=n(7294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var p=r.createContext({}),u=function(e){var t=r.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},c=function(e){var t=u(e.components);return r.createElement(p.Provider,{value:t},e.children)},d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},s=r.forwardRef((function(e,t){var n=e.components,i=e.mdxType,o=e.originalType,p=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),s=u(n),m=i,k=s["".concat(p,".").concat(m)]||s[m]||d[m]||o;return n?r.createElement(k,a(a({ref:t},c),{},{components:n})):r.createElement(k,a({ref:t},c))}));function m(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var o=n.length,a=new Array(o);a[0]=s;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l.mdxType="string"==typeof e?e:i,a[1]=l;for(var u=2;u.NET 6 Preview 6 SDK",id:"\u5b89\u88c5-net-6-preview-6-sdk",children:[]},{value:"\u65e7\u9879\u76ee\u5347\u7ea7",id:"\u65e7\u9879\u76ee\u5347\u7ea7",children:[]},{value:"\u65b0\u9879\u76ee\u4f7f\u7528",id:"\u65b0\u9879\u76ee\u4f7f\u7528",children:[{value:"\u5347\u7ea7 Visual Studio 2019",id:"\u5347\u7ea7-visual-studio-2019",children:[]},{value:"\u7b2c\u4e00\u4e2a\u4f8b\u5b50",id:"\u7b2c\u4e00\u4e2a\u4f8b\u5b50",children:[]},{value:"\u6253\u5f00\u5e76\u542f\u52a8\u9879\u76ee",id:"\u6253\u5f00\u5e76\u542f\u52a8\u9879\u76ee",children:[]}]}],d={toc:c};function s(e){var t=e.components,n=(0,i.Z)(e,a);return(0,o.kt)("wrapper",(0,r.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"2021 \u5e74 08 \u6708 11 \u65e5\uff0c\u5fae\u8f6f\u53d1\u5e03\u4e86 ",(0,o.kt)("inlineCode",{parentName:"strong"},".NET 6 Preview 7")," \u7248\u672c\uff0c",(0,o.kt)("inlineCode",{parentName:"strong"},"Furion")," \u5728\u5f53\u5929\u7b2c\u4e00\u65f6\u95f4\u9002\u914d\u4e86\u8be5\u7248\u672c\uff0c\u5e76\u53d1\u5e03 ",(0,o.kt)("inlineCode",{parentName:"strong"},"Furion v3.0.0-rc.2")," \u7248\u672c\u3002")),(0,o.kt)("p",null,(0,o.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/tree/3.0.0-rc.2/"},"Furion .NET 6 Preview 7 \u6e90\u7801\u5730\u5740")),(0,o.kt)("h2",{id:"\u5b89\u88c5-net-6-preview-6-sdk"},"\u5b89\u88c5 ",(0,o.kt)("inlineCode",{parentName:"h2"},".NET 6 Preview 6 SDK")),(0,o.kt)("p",null,"\u5c1d\u9c9c\u4e4b\u524d\uff0c\u9996\u5148\u5148\u5b89\u88c5 ",(0,o.kt)("inlineCode",{parentName:"p"},".NET 6 Preview 7 SDK"),"\uff0c\u4e0b\u8f7d\u5730\u5740\uff1a",(0,o.kt)("a",{parentName:"p",href:"https://dotnet.microsoft.com/download/dotnet/6.0"},"https://dotnet.microsoft.com/download/dotnet/6.0")),(0,o.kt)("p",null,"\u4e0b\u8f7d\u5bf9\u5e94\u7cfb\u7edf\u548c\u5904\u7406\u5668\u7248\u672c\u5373\u53ef\u3002"),(0,o.kt)("h2",{id:"\u65e7\u9879\u76ee\u5347\u7ea7"},"\u65e7\u9879\u76ee\u5347\u7ea7"),(0,o.kt)("p",null,"\u7f16\u8f91\u6240\u6709 ",(0,o.kt)("inlineCode",{parentName:"p"},".csproj")," \u9879\u76ee\uff0c\u4fee\u6539 ",(0,o.kt)("inlineCode",{parentName:"p"},"net5.0")," \u4e3a ",(0,o.kt)("inlineCode",{parentName:"p"},"net6.0"),"\u3002"),(0,o.kt)("p",null,"\u540c\u65f6\u5347\u7ea7\u6240\u6709 ",(0,o.kt)("inlineCode",{parentName:"p"},"Microsoft")," \u548c ",(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u5305\u4e3a\u6700\u65b0\u7248\u672c\uff0c",(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u6700\u65b0\u7248\u672c\u4e3a\uff1a",(0,o.kt)("inlineCode",{parentName:"p"},"v3.0.0-rc.1"),"\u3002"),(0,o.kt)("h2",{id:"\u65b0\u9879\u76ee\u4f7f\u7528"},"\u65b0\u9879\u76ee\u4f7f\u7528"),(0,o.kt)("h3",{id:"\u5347\u7ea7-visual-studio-2019"},"\u5347\u7ea7 ",(0,o.kt)("inlineCode",{parentName:"h3"},"Visual Studio 2019")),(0,o.kt)("p",null,"\u76ee\u524d ",(0,o.kt)("inlineCode",{parentName:"p"},".NET 6 Preview 7")," \u652f\u6301\u4f7f\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"Visual Studio 2019 Preview 16.11.0 Preview 4.0")," \u7248\u672c\uff0c",(0,o.kt)("strong",{parentName:"p"},"\u6ce8\u610f\u662f ",(0,o.kt)("inlineCode",{parentName:"strong"},"Preview")," \u6700\u65b0\u7248\u672c"),"\u3002\u4e0b\u8f7d\u5730\u5740\uff1a",(0,o.kt)("a",{parentName:"p",href:"https://visualstudio.microsoft.com/zh-hans/thank-you-downloading-visual-studio/?sku=enterprise&ch=pre&rel=16"},"https://visualstudio.microsoft.com/zh-hans/thank-you-downloading-visual-studio/?sku=enterprise&ch=pre&rel=16")),(0,o.kt)("p",null,"\u5df2\u7ecf\u5b89\u88c5\u4e86 ",(0,o.kt)("inlineCode",{parentName:"p"},"Visual Studio 2019 Preview")," \u7248\u672c\u7684\u670b\u53cb\u76f4\u63a5\u5347\u7ea7\u5230\u6700\u65b0\u7248\u5373\u53ef\u3002"),(0,o.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u7279\u522b\u8bf4\u660e")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u5982\u679c\u4f7f\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"Visual Studio Code")," \u5f00\u53d1\uff0c\u53ef\u5ffd\u7565\u6b64\u9009\u9879\u3002"))),(0,o.kt)("h3",{id:"\u7b2c\u4e00\u4e2a\u4f8b\u5b50"},"\u7b2c\u4e00\u4e2a\u4f8b\u5b50"),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"Furion v3.0.0-rc.2")," \u76ee\u524d\u63d0\u4f9b\u4e86\u6240\u6709\u7c7b\u578b\u7684\u811a\u624b\u67b6\uff0c\u7248\u672c\u53f7\u7edf\u4e00 ",(0,o.kt)("inlineCode",{parentName:"p"},"3.0.0-rc.2"),"\u3002"),(0,o.kt)("p",null,"\u5b89\u88c5\u811a\u624b\u67b6\uff0c\u6253\u5f00 ",(0,o.kt)("inlineCode",{parentName:"p"},"CMD/Powershell")," \u6267\u884c\u4ee5\u4e0b\u547d\u4ee4\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"dotnet new --install Furion.Template.Api::3.0.0-rc.2\n")),(0,o.kt)("p",null,"\u521b\u5efa\u9879\u76ee"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-bash"},"dotnet new furionapi -n FurionNET6\n")),(0,o.kt)("h3",{id:"\u6253\u5f00\u5e76\u542f\u52a8\u9879\u76ee"},"\u6253\u5f00\u5e76\u542f\u52a8\u9879\u76ee"),(0,o.kt)("p",null,"\u6253\u5f00\u6d4f\u89c8\u5668\u67e5\u770b\u6548\u679c\u5373\u53ef\u3002"))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/c4b1c400.1d029835.js b/handbook/build/assets/js/c4b1c400.1d029835.js new file mode 100644 index 00000000000..b6fc96363f7 --- /dev/null +++ b/handbook/build/assets/js/c4b1c400.1d029835.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[6931],{3905:function(e,n,t){t.d(n,{Zo:function(){return c},kt:function(){return m}});var a=t(7294);function i(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function r(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function l(e){for(var n=1;n=0||(i[t]=e[t]);return i}(e,n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(i[t]=e[t])}return i}var s=a.createContext({}),p=function(e){var n=a.useContext(s),t=n;return e&&(t="function"==typeof e?e(n):l(l({},n),e)),t},c=function(e){var n=p(e.components);return a.createElement(s.Provider,{value:n},e.children)},d={inlineCode:"code",wrapper:function(e){var n=e.children;return a.createElement(a.Fragment,{},n)}},u=a.forwardRef((function(e,n){var t=e.components,i=e.mdxType,r=e.originalType,s=e.parentName,c=o(e,["components","mdxType","originalType","parentName"]),u=p(t),m=i,k=u["".concat(s,".").concat(m)]||u[m]||d[m]||r;return t?a.createElement(k,l(l({ref:n},c),{},{components:t})):a.createElement(k,l({ref:n},c))}));function m(e,n){var t=arguments,i=n&&n.mdxType;if("string"==typeof e||i){var r=t.length,l=new Array(r);l[0]=u;var o={};for(var s in n)hasOwnProperty.call(n,s)&&(o[s]=n[s]);o.originalType=e,o.mdxType="string"==typeof e?e:i,l[1]=o;for(var p=2;pSignalR",id:"243-\u5173\u4e8e-signalr",children:[{value:"24.3.1 \u5fae\u8f6f\u5b98\u65b9\u4ecb\u7ecd",id:"2431-\u5fae\u8f6f\u5b98\u65b9\u4ecb\u7ecd",children:[]}]},{value:"24.4 \u6ce8\u518c SignalR \u670d\u52a1",id:"244-\u6ce8\u518c-signalr-\u670d\u52a1",children:[]},{value:"24.5 SignalR \u957f\u8fde\u63a5\u548c\u96c6\u7ebf\u5668",id:"245-signalr-\u957f\u8fde\u63a5\u548c\u96c6\u7ebf\u5668",children:[{value:"25.5.1 \u6301\u4e45\u6027\u8fde\u63a5",id:"2551-\u6301\u4e45\u6027\u8fde\u63a5",children:[]},{value:"24.5.2 \u96c6\u7ebf\u5668",id:"2452-\u96c6\u7ebf\u5668",children:[]}]},{value:"24.6 \u96c6\u7ebf\u5668 Hub \u5b9a\u4e49",id:"246-\u96c6\u7ebf\u5668-hub-\u5b9a\u4e49",children:[{value:"24.6.1 \u4e24\u79cd\u5b9a\u4e49\u65b9\u5f0f",id:"2461-\u4e24\u79cd\u5b9a\u4e49\u65b9\u5f0f",children:[]},{value:"24.6.2 [MapHub] \u914d\u7f6e\u8fde\u63a5\u5730\u5740",id:"2462-maphub-\u914d\u7f6e\u8fde\u63a5\u5730\u5740",children:[]},{value:"24.6.3 Hub \u6ce8\u518c\u66f4\u591a\u914d\u7f6e",id:"2463-hub-\u6ce8\u518c\u66f4\u591a\u914d\u7f6e",children:[]}]},{value:"24.7 \u670d\u52a1\u7aef\u548c\u5ba2\u6237\u7aef\u53cc\u5de5\u901a\u4fe1",id:"247-\u670d\u52a1\u7aef\u548c\u5ba2\u6237\u7aef\u53cc\u5de5\u901a\u4fe1",children:[{value:"24.7.1 \u89e6\u53d1\u6240\u6709\u5ba2\u6237\u7aef\u4ee3\u7801",id:"2471-\u89e6\u53d1\u6240\u6709\u5ba2\u6237\u7aef\u4ee3\u7801",children:[]},{value:"24.7.2 \u89e6\u53d1\u8c03\u7528\u8005\u5ba2\u6237\u7aef",id:"2472-\u89e6\u53d1\u8c03\u7528\u8005\u5ba2\u6237\u7aef",children:[]},{value:"24.7.3 \u89e6\u53d1\u9664\u4e86\u8c03\u7528\u8005\u4ee5\u5916\u7684\u5ba2\u6237\u7aef",id:"2473-\u89e6\u53d1\u9664\u4e86\u8c03\u7528\u8005\u4ee5\u5916\u7684\u5ba2\u6237\u7aef",children:[]},{value:"24.7.4 \u89e6\u53d1\u7279\u5b9a\u7528\u6237\u5ba2\u6237\u7aef",id:"2474-\u89e6\u53d1\u7279\u5b9a\u7528\u6237\u5ba2\u6237\u7aef",children:[]},{value:"24.7.5 \u89e6\u53d1\u591a\u4e2a\u7528\u6237\u5ba2\u6237\u7aef",id:"2475-\u89e6\u53d1\u591a\u4e2a\u7528\u6237\u5ba2\u6237\u7aef",children:[]},{value:"24.7.6 \u89e6\u53d1\u5206\u7ec4\u5185\u5ba2\u6237\u7aef",id:"2476-\u89e6\u53d1\u5206\u7ec4\u5185\u5ba2\u6237\u7aef",children:[]},{value:"24.7.7 \u89e6\u53d1\u591a\u4e2a\u5206\u7ec4\u5ba2\u6237\u7aef",id:"2477-\u89e6\u53d1\u591a\u4e2a\u5206\u7ec4\u5ba2\u6237\u7aef",children:[]},{value:"24.7.8 \u89e6\u53d1\u5206\u7ec4\u5916\u7684\u5ba2\u6237\u7aef",id:"2478-\u89e6\u53d1\u5206\u7ec4\u5916\u7684\u5ba2\u6237\u7aef",children:[]}]},{value:"24.8 \u81ea\u5b9a\u4e49\u7528\u6237\u552f\u4e00\u6807\u8bc6",id:"248-\u81ea\u5b9a\u4e49\u7528\u6237\u552f\u4e00\u6807\u8bc6",children:[]},{value:"24.9 \u5206\u7ec4\u7ba1\u7406",id:"249-\u5206\u7ec4\u7ba1\u7406",children:[]},{value:"24.10 \u5404\u4e2a\u5ba2\u6237\u7aef\u8fde\u63a5 API",id:"2410-\u5404\u4e2a\u5ba2\u6237\u7aef\u8fde\u63a5-api",children:[{value:"24.10.1 Javascript \u5ba2\u6237\u7aef",id:"24101-javascript-\u5ba2\u6237\u7aef",children:[]},{value:"24.10.2 Typescript \u5ba2\u6237\u7aef",id:"24102-typescript-\u5ba2\u6237\u7aef",children:[]},{value:"24.10.3 .NET \u5ba2\u6237\u7aef",id:"24103-net-\u5ba2\u6237\u7aef",children:[]},{value:"24.10.4 Java \u5ba2\u6237\u7aef",id:"24104-java-\u5ba2\u6237\u7aef",children:[]}]},{value:"24.11 \u5e38\u89c1\u4f8b\u5b50",id:"2411-\u5e38\u89c1\u4f8b\u5b50",children:[{value:"24.11.1 \u5b9e\u73b0\u6d88\u606f\u5e7f\u64ad\u3001\u63a8\u9001",id:"24111-\u5b9e\u73b0\u6d88\u606f\u5e7f\u64ad\u3001\u63a8\u9001",children:[]},{value:"24.11.2 \u5b9e\u73b0\u804a\u5929\u529f\u80fd",id:"24112-\u5b9e\u73b0\u804a\u5929\u529f\u80fd",children:[]},{value:"24.11.3 \u5b9e\u73b0 \u4f60\u753b\u6211\u6765\u731c",id:"24113-\u5b9e\u73b0-\u4f60\u753b\u6211\u6765\u731c",children:[]}]},{value:"24.12 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"2412-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],d={toc:c};function u(e){var n=e.components,t=(0,i.Z)(e,l);return(0,r.kt)("wrapper",(0,a.Z)({},d,t,{components:n,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"241-\u4ec0\u4e48\u662f\u5373\u65f6\u901a\u8baf"},"24.1 \u4ec0\u4e48\u662f\u5373\u65f6\u901a\u8baf"),(0,r.kt)("p",null,"\u5373\u65f6\u901a\u8baf\uff08Instant messaging\uff0c\u7b80\u79f0 IM\uff09\u901a\u5e38\u662f\u6307\u4e92\u8054\u7f51\u4e0a\u7528\u4ee5\u8fdb\u884c\u5b9e\u65f6\u901a\u8baf\u7684\u7cfb\u7edf\uff0c\u5141\u8bb8\u4e24\u4eba\u6216\u591a\u4eba\u4f7f\u7528\u7f51\u7edc\u5373\u65f6\u7684\u4f20\u9012\u6587\u5b57\u4fe1\u606f\u3001\u6587\u6863\u3001\u8bed\u97f3\u4e0e\u89c6\u9891\u4ea4\u6d41\u3002"),(0,r.kt)("p",null,"\u5373\u65f6\u901a\u8baf\u4e0d\u540c\u4e8e e-mail \u5728\u4e8e\u5b83\u7684\u4ea4\u8c08\u662f\u5b9e\u65f6\u7684\u3002\u5927\u90e8\u5206\u7684\u5373\u65f6\u901a\u8baf\u670d\u52a1\u63d0\u4f9b\u4e86\u72b6\u6001\u4fe1\u606f\u7684\u7279\u6027 \u2500\u2500 \u663e\u793a\u8054\u7edc\u4eba\u540d\u5355\uff0c\u8054\u7edc\u4eba\u662f\u5426\u5728\u7ebf\u4e0a\u4e0e\u80fd\u5426\u4e0e\u8054\u7edc\u4eba\u4ea4\u8c08\u3002"),(0,r.kt)("p",null,"\u5728\u4e92\u8054\u7f51\u4e0a\u76ee\u524d\u4f7f\u7528\u8f83\u5e7f\u7684\u5373\u65f6\u901a\u8baf\u670d\u52a1\u5305\u62ec Windows Live Messenger\u3001AOL Instant Messenger\u3001skype\u3001Yahoo! Messenger\u3001NET Messenger Service\u3001Jabber\u3001ICQ \u4e0e QQ \u7b49\u3002"),(0,r.kt)("h2",{id:"242-\u5373\u65f6\u901a\u8baf\u5e94\u7528\u573a\u666f"},"24.2 \u5373\u65f6\u901a\u8baf\u5e94\u7528\u573a\u666f"),(0,r.kt)("p",null,"\u5373\u65f6\u901a\u8baf\u5e94\u7528\u573a\u666f\u975e\u5e38\u5e7f\u6cdb\uff0c\u9700\u8981\u5b9e\u65f6\u4ea4\u4e92\u6d88\u606f\u7684\u90fd\u9700\u8981\u3002\u5982\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u804a\u5929\u5de5\u5177\uff1aQQ\u3001WeChat\u3001\u5728\u7ebf\u5ba2\u670d\u7b49"),(0,r.kt)("li",{parentName:"ul"},"\u624b\u6e38\u7f51\u6e38\uff1a\u738b\u8005\u8363\u8000\u3001\u9b54\u517d\u7b49"),(0,r.kt)("li",{parentName:"ul"},"\u7f51\u7edc\u76f4\u64ad\uff1a\u817e\u8baf\u8bfe\u5802\u3001\u6296\u97f3\u76f4\u64ad\u7b49"),(0,r.kt)("li",{parentName:"ul"},"\u8ba2\u5355\u63a8\u9001\uff1a\u7f8e\u56e2\u3001\u9910\u996e\u4e0b\u5355\u7cfb\u7edf\u7b49"),(0,r.kt)("li",{parentName:"ul"},"\u534f\u540c\u529e\u516c\uff1a\u516c\u53f8\u5185\u90e8\u6587\u4ef6\u5206\u4eab\u3001\u5de5\u4f5c\u5b89\u6392\u3001\u5728\u7ebf\u4f1a\u8bae\u7b49\u3002")),(0,r.kt)("p",null,"\u4ee5\u4e0a\u53ea\u662f\u5217\u4e3e\u4e86\u6bd4\u8f83\u5e38\u7528\u7684\u5e94\u7528\u573a\u666f\uff0c\u4f46\u5373\u65f6\u901a\u8baf\u7684\u4f5c\u7528\u8fdc\u4e0d\u6b62\u4e8e\u6b64\u3002"),(0,r.kt)("p",null,"\u6587\u6863\u7d27\u6025\u7f16\u5199\u4e2d\uff0c\u53ef\u4ee5\u5148\u770b\u5b98\u65b9\u6587\u6863\uff1a",(0,r.kt)("a",{parentName:"p",href:"https://docs.microsoft.com/zh-cn/aspnet/core/signalr/introduction?view=aspnetcore-5.0"},"https://docs.microsoft.com/zh-cn/aspnet/core/signalr/introduction?view=aspnetcore-5.0")),(0,r.kt)("h2",{id:"243-\u5173\u4e8e-signalr"},"24.3 \u5173\u4e8e ",(0,r.kt)("inlineCode",{parentName:"h2"},"SignalR")),(0,r.kt)("p",null,"\u5373\u65f6\u901a\u8baf\u6280\u672f\u5b9e\u73b0\u662f\u590d\u6742\u4e14\u8fc7\u4e8e\u5e95\u5c42\u5316\uff0c\u6240\u4ee5\u5fae\u8f6f\u4e3a\u4e86\u7b80\u5316\u5373\u65f6\u901a\u8baf\u5e94\u7528\u7a0b\u5e8f\uff0c\u5f00\u53d1\u51fa\u4e86\u4e00\u4e2a\u5f3a\u5927\u4e14\u7b80\u6613\u4f7f\u7528\u7684\u901a\u4fe1\u5e93\uff1a",(0,r.kt)("inlineCode",{parentName:"p"},"SignalR"),"\uff0c\u901a\u8fc7\u8be5\u5e93\u6211\u4eec\u53ef\u4ee5\u8f7b\u677e\u5b9e\u73b0\u7c7b\u4f3c QQ\u3001\u5fae\u4fe1\u8fd9\u7c7b IM \u804a\u5929\u5de5\u5177\uff0c\u4e5f\u80fd\u5feb\u901f\u5b9e\u73b0\u6d88\u606f\u63a8\u9001\u3001\u8ba2\u5355\u63a8\u9001\u8fd9\u6837\u7684\u7cfb\u7edf\u3002"),(0,r.kt)("h3",{id:"2431-\u5fae\u8f6f\u5b98\u65b9\u4ecb\u7ecd"},"24.3.1 \u5fae\u8f6f\u5b98\u65b9\u4ecb\u7ecd"),(0,r.kt)("p",null,"ASP.NET Core SignalR \u662f\u4e00\u79cd\u5f00\u653e\u6e90\u4ee3\u7801\u5e93\uff0c\u53ef\u7b80\u5316\u5c06\u5b9e\u65f6 web \u529f\u80fd\u6dfb\u52a0\u5230\u5e94\u7528\u7a0b\u5e8f\u7684\u529f\u80fd\u3002 \u5b9e\u65f6 web \u529f\u80fd\u4f7f\u670d\u52a1\u5668\u7aef\u4ee3\u7801\u53ef\u4ee5\u7acb\u5373\u5c06\u5185\u5bb9\u63a8\u9001\u5230\u5ba2\u6237\u7aef\u3002"),(0,r.kt)("p",null,"\u9002\u7528\u4e8e SignalR \uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u9700\u8981\u4ece\u670d\u52a1\u5668\u8fdb\u884c\u9ad8\u9891\u7387\u66f4\u65b0\u7684\u5e94\u7528\u3002 \u793a\u4f8b\u5305\u62ec\u6e38\u620f\u3001\u793e\u4ea4\u7f51\u7edc\u3001\u6295\u7968\u3001\u62cd\u5356\u3001\u5730\u56fe\u548c GPS \u5e94\u7528\u3002"),(0,r.kt)("li",{parentName:"ul"},"\u4eea\u8868\u677f\u548c\u76d1\u89c6\u5e94\u7528\u3002 \u793a\u4f8b\u5305\u62ec\u516c\u53f8\u4eea\u8868\u677f\u3001\u5373\u65f6\u9500\u552e\u66f4\u65b0\u6216\u65c5\u884c\u8b66\u62a5\u3002"),(0,r.kt)("li",{parentName:"ul"},"\u534f\u4f5c\u5e94\u7528\u3002 \u534f\u4f5c\u5e94\u7528\u7684\u793a\u4f8b\u5305\u62ec\u767d\u677f\u5e94\u7528\u548c\u56e2\u961f\u4f1a\u8bae\u8f6f\u4ef6\u3002"),(0,r.kt)("li",{parentName:"ul"},"\u9700\u8981\u901a\u77e5\u7684\u5e94\u7528\u3002 \u793e\u4ea4\u7f51\u7edc\u3001\u7535\u5b50\u90ae\u4ef6\u3001\u804a\u5929\u3001\u6e38\u620f\u3001\u65c5\u884c\u8b66\u62a5\u548c\u5f88\u591a\u5176\u4ed6\u5e94\u7528\u90fd\u9700\u4f7f\u7528\u901a\u77e5\u3002")),(0,r.kt)("p",null,"\u76ee\u524d ",(0,r.kt)("inlineCode",{parentName:"p"},"SignalR")," \u5df2\u7ecf\u5185\u7f6e\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},".NET 5 SDK")," \u4e2d\u3002\u540c\u65f6 ",(0,r.kt)("inlineCode",{parentName:"p"},"SignalR")," \u652f\u6301 ",(0,r.kt)("inlineCode",{parentName:"p"},"Web\u3001App\u3001Console\u3001Desktop")," \u7b49\u591a\u4e2a\u5e94\u7528\u5e73\u53f0\u3002"),(0,r.kt)("h2",{id:"244-\u6ce8\u518c-signalr-\u670d\u52a1"},"24.4 \u6ce8\u518c ",(0,r.kt)("inlineCode",{parentName:"h2"},"SignalR")," \u670d\u52a1"),(0,r.kt)("p",null,"\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\uff0c\u4efb\u4f55\u670d\u52a1\u529f\u80fd\u90fd\u9700\u8981\u5148\u6ce8\u518c\u540e\u518d\u4f7f\u7528\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"SignalR")," \u4e5f\u4e0d\u4f8b\u5916\u3002\u53ea\u9700\u8981\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Startup.cs")," \u4e2d\u6dfb\u52a0\u6ce8\u518c\u5373\u53ef\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,15,22,25}","{1,15,22,25}":!0},'using Microsoft.AspNetCore.Builder;\nusing Microsoft.AspNetCore.Hosting;\nusing Microsoft.Extensions.DependencyInjection;\nusing Microsoft.Extensions.Hosting;\n\nnamespace Furion.Web.Core\n{\n public sealed class Startup : AppStartup\n {\n public void ConfigureServices(IServiceCollection services)\n {\n // \u5176\u4ed6\u4ee3\u7801...\n\n // \u6dfb\u52a0\u5373\u65f6\u901a\u8baf\n services.AddSignalR();\n }\n\n public void Configure(IApplicationBuilder app, IWebHostEnvironment env)\n {\n // \u5176\u4ed6\u4ee3\u7801...\n\n app.UseEndpoints(endpoints =>\n {\n // \u6ce8\u518c\u96c6\u7ebf\u5668\n endpoints.MapHubs();\n\n endpoints.MapControllerRoute(\n name: "default",\n pattern: "{controller=Home}/{action=Index}/{id?}");\n });\n }\n }\n}\n')),(0,r.kt)("h2",{id:"245-signalr-\u957f\u8fde\u63a5\u548c\u96c6\u7ebf\u5668"},"24.5 ",(0,r.kt)("inlineCode",{parentName:"h2"},"SignalR")," \u957f\u8fde\u63a5\u548c\u96c6\u7ebf\u5668"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"SignalR")," \u5305\u542b\u4e24\u79cd\u7528\u4e8e\u5728\u5ba2\u6237\u7aef\u548c\u670d\u52a1\u5668\u4e4b\u95f4\u8fdb\u884c\u901a\u4fe1\u7684\u6a21\u578b\uff1a",(0,r.kt)("inlineCode",{parentName:"p"},"\u6301\u4e45\u6027\u8fde\u63a5"),"\u548c ",(0,r.kt)("inlineCode",{parentName:"p"},"\u96c6\u7ebf\u5668")," \u4e2d\u5fc3\u3002"),(0,r.kt)("h3",{id:"2551-\u6301\u4e45\u6027\u8fde\u63a5"},"25.5.1 \u6301\u4e45\u6027\u8fde\u63a5"),(0,r.kt)("p",null,"\u8fde\u63a5\u8868\u793a\u7528\u4e8e\u53d1\u9001\u5355\u63a5\u6536\u65b9\u3001\u5206\u7ec4\u6216\u5e7f\u64ad\u6d88\u606f\u7684\u7b80\u5355\u7ec8\u7ed3\u70b9\u3002 ",(0,r.kt)("inlineCode",{parentName:"p"},"\u6301\u4e45\u6027\u8fde\u63a5")," (\u5728 .NET \u4ee3\u7801\u4e2d\u7531 PersistentConnection \u7c7b\u8868\u793a) \u4f7f\u5f00\u53d1\u4eba\u5458\u80fd\u591f\u76f4\u63a5\u8bbf\u95ee ",(0,r.kt)("inlineCode",{parentName:"p"},"SignalR")," \u516c\u5f00\u7684\u4f4e\u7ea7\u522b\u901a\u4fe1\u534f\u8bae\u3002 \u4f7f\u7528\u57fa\u4e8e\u8fde\u63a5\u7684 Api \uff08\u5982 Windows Communication Foundation\uff09\u7684\u5f00\u53d1\u4eba\u5458\u5c06\u5bf9\u4f7f\u7528\u8fde\u63a5\u901a\u4fe1\u6a21\u578b\u975e\u5e38\u719f\u6089\u3002"),(0,r.kt)("h3",{id:"2452-\u96c6\u7ebf\u5668"},"24.5.2 \u96c6\u7ebf\u5668"),(0,r.kt)("p",null,"\u96c6\u7ebf\u5668\u662f\u4e00\u79cd\u57fa\u4e8e\u8fde\u63a5 API \u6784\u5efa\u7684\u66f4\u9ad8\u7ea7\u522b\u7ba1\u9053\uff0c",(0,r.kt)("strong",{parentName:"p"},"\u5b83\u5141\u8bb8\u5ba2\u6237\u7aef\u548c\u670d\u52a1\u5668\u76f4\u63a5\u8c03\u7528\u65b9\u6cd5"),"\u3002 ",(0,r.kt)("inlineCode",{parentName:"p"},"SignalR")," \u5c31\u50cf\u9b54\u672f\u4e00\u6837\u5904\u7406\u8de8\u673a\u5668\u8fb9\u754c\u7684\u8c03\u5ea6\uff0c\u4f7f\u5ba2\u6237\u7aef\u80fd\u591f\u50cf\u672c\u5730\u65b9\u6cd5\u4e00\u6837\u8f7b\u677e\u5730\u8c03\u7528\u670d\u52a1\u5668\u4e0a\u7684\u65b9\u6cd5\uff0c\u53cd\u4e4b\u4ea6\u7136\u3002 \u5982\u679c\u5f00\u53d1\u4eba\u5458\u5df2\u4f7f\u7528\u8fdc\u7a0b\u8c03\u7528 \uff08\u5982 .NET \u8fdc\u7a0b\u5904\u7406\uff09\uff0c\u5219\u5c06\u5bf9\u4f7f\u7528\u4e2d\u5fc3\u901a\u4fe1\u6a21\u578b\u975e\u5e38\u719f\u6089\u3002 \u4f7f\u7528\u96c6\u7ebf\u5668\u8fd8\u53ef\u4ee5\u5c06\u5f3a\u7c7b\u578b\u53c2\u6570\u4f20\u9012\u7ed9\u65b9\u6cd5\uff0c\u4ece\u800c\u542f\u7528\u6a21\u578b\u7ed1\u5b9a\u3002"),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u5c0f\u77e5\u8bc6")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u60f3\u4e86\u89e3\u66f4\u591a\u5173\u4e8e ",(0,r.kt)("inlineCode",{parentName:"p"},"\u6301\u4e45\u6027\u8fde\u63a5")," \u548c ",(0,r.kt)("inlineCode",{parentName:"p"},"\u96c6\u7ebf\u5668\u4e2d\u5fc3")," \u53ef\u67e5\u9605 ",(0,r.kt)("a",{parentName:"p",href:"https://docs.microsoft.com/zh-cn/aspnet/signalr/overview/getting-started/introduction-to-signalr#connections-and-hubs"},"SignalR \u5b98\u65b9\u6587\u6863")))),(0,r.kt)("h2",{id:"246-\u96c6\u7ebf\u5668-hub-\u5b9a\u4e49"},"24.6 \u96c6\u7ebf\u5668 ",(0,r.kt)("inlineCode",{parentName:"h2"},"Hub")," \u5b9a\u4e49"),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"\u5728\u672c\u7ae0\u8282\u4e2d\u4e3b\u8981\u63a8\u8350\u4f7f\u7528\u96c6\u7ebf\u5668\u901a\u4fe1\u6a21\u578b\u65b9\u5f0f\u3002"),"\u8fd9\u91cc\u4e3b\u8981\u8bf4\u660e ",(0,r.kt)("inlineCode",{parentName:"p"},"Hub")," \u5b9a\u4e49\uff0c\u5982\u679c\u65e0\u6cd5\u7406\u89e3\u8be5\u901a\u4fe1\u6a21\u578b\u7684\u4f5c\u7528\u4e5f\u6ca1\u5173\u7cfb\uff0c\u63a5\u4e0b\u6765\u7684\u4f8b\u5b50\u4f1a\u5e26\u5927\u5bb6\u6162\u6162\u719f\u6089\u5e76\u4f7f\u7528\u3002"),(0,r.kt)("h3",{id:"2461-\u4e24\u79cd\u5b9a\u4e49\u65b9\u5f0f"},"24.6.1 \u4e24\u79cd\u5b9a\u4e49\u65b9\u5f0f"),(0,r.kt)("p",null,"\u5b9a\u4e49\u96c6\u7ebf\u5668\u53ea\u9700\u8981\u7ee7\u627f ",(0,r.kt)("inlineCode",{parentName:"p"},"Hub")," \u6216 ",(0,r.kt)("inlineCode",{parentName:"p"},"Hub")," \u6cdb\u578b\u57fa\u7c7b\u5373\u53ef\uff0c\u5982\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Hub")," \u65b9\u5f0f")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{9}","{9}":!0},'using Furion.InstantMessaging;\nusing Microsoft.AspNetCore.SignalR;\n\nnamespace Furion.Core\n{\n /// \n /// \u804a\u5929\u96c6\u7ebf\u5668\n /// \n public class ChatHub : Hub\n {\n // \u5b9a\u4e49\u4e00\u4e2a\u65b9\u6cd5\u4f9b\u5ba2\u6237\u7aef\u8c03\u7528\n public Task SendMessage(string user, string message)\n {\n // \u89e6\u53d1\u5ba2\u6237\u7aef\u5b9a\u4e49\u76d1\u542c\u7684\u65b9\u6cd5\n return Clients.All.SendAsync("ReceiveMessage", user, message);\n }\n }\n}\n')),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Hub")," \u7c7b\u578b\u65b9\u5f0f")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"public interface IChatClient\n{\n Task ReceiveMessage(string user, string message);\n}\n")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1}","{1}":!0},"public class StronglyTypedChatHub : Hub\n{\n // \u5b9a\u4e49\u4e00\u4e2a\u65b9\u6cd5\u4f9b\u5ba2\u6237\u7aef\u8c03\u7528\n public async Task SendMessage(string user, string message)\n {\n // \u89e6\u53d1\u5ba2\u6237\u7aef\u5b9a\u4e49\u76d1\u542c\u7684\u65b9\u6cd5\n await Clients.All.ReceiveMessage(user, message);\n }\n}\n")),(0,r.kt)("p",null,"\u901a\u8fc7\u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"Hub")," \u53ef\u4ee5\u5bf9\u5ba2\u6237\u7aef\u65b9\u6cd5\u8fdb\u884c\u7f16\u8bd1\u65f6\u68c0\u67e5\u3002 \u8fd9\u53ef\u4ee5\u9632\u6b62\u7531\u4e8e\u4f7f\u7528\u795e\u5947\u5b57\u7b26\u4e32\u800c\u5bfc\u81f4\u7684\u95ee\u9898\uff0c\u56e0\u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"Hub")," \u53ea\u80fd\u63d0\u4f9b\u5bf9\u5728\u63a5\u53e3\u4e2d\u5b9a\u4e49\u7684\u65b9\u6cd5\u7684\u8bbf\u95ee\u3002"),(0,r.kt)("h3",{id:"2462-maphub-\u914d\u7f6e\u8fde\u63a5\u5730\u5740"},"24.6.2 ",(0,r.kt)("inlineCode",{parentName:"h3"},"[MapHub]")," \u914d\u7f6e\u8fde\u63a5\u5730\u5740"),(0,r.kt)("p",null,"\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"SignalR")," \u5e93\u4e2d\u8981\u6c42\u6bcf\u4e00\u4e2a\u516c\u5f00\u7684\u96c6\u7ebf\u5668\u90fd\u9700\u8981\u914d\u7f6e\u5ba2\u6237\u7aef\u8fde\u63a5\u5730\u5740\uff0c\u6240\u4ee5\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u4e86\u66f4\u52a0 ",(0,r.kt)("inlineCode",{parentName:"p"},"[MapHub]")," \u914d\u7f6e\uff0c\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,11}","{1,11}":!0},'using Furion.InstantMessaging;\nusing Microsoft.AspNetCore.SignalR;\nusing System;\nusing System.Threading.Tasks;\n\nnamespace Furion.Core\n{\n /// \n /// \u804a\u5929\u96c6\u7ebf\u5668\n /// \n [MapHub("/hubs/chathub")]\n public class ChatHub : Hub\n {\n // ...\n }\n}\n')),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),(0,r.kt)("inlineCode",{parentName:"h5"},"SignalR")," \u539f\u751f\u914d\u7f6e\u65b9\u5f0f")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u4e2d\u63a8\u8350\u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"[MapHub]")," \u65b9\u5f0f\u914d\u7f6e\u96c6\u7ebf\u5668\u5ba2\u6237\u7aef\u8fde\u63a5\u5730\u5740\uff0c\u5f53\u7136\u4e5f\u53ef\u4ee5\u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"SignalR")," \u63d0\u4f9b\u7684\u65b9\u5f0f\uff0c\u5982\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Startup.cs")," \u914d\u7f6e\uff1a"),(0,r.kt)("pre",{parentName:"div"},(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{10}","{10}":!0},'public sealed class Startup : AppStartup\n{\n // \u5176\u4ed6\u4ee3\u7801\n public void Configure(IApplicationBuilder app, IWebHostEnvironment env)\n {\n // \u5176\u4ed6\u4ee3\u7801...\n app.UseEndpoints(endpoints =>\n {\n // \u6ce8\u518c\u96c6\u7ebf\u5668\n endpoints.MapHub("/hubs/chathub");\n });\n }\n}\n')))),(0,r.kt)("h3",{id:"2463-hub-\u6ce8\u518c\u66f4\u591a\u914d\u7f6e"},"24.6.3 ",(0,r.kt)("inlineCode",{parentName:"h3"},"Hub")," \u6ce8\u518c\u66f4\u591a\u914d\u7f6e"),(0,r.kt)("p",null,"\u6709\u4e9b\u65f6\u5019\uff0c\u6211\u4eec\u9700\u8981\u6ce8\u518c ",(0,r.kt)("inlineCode",{parentName:"p"},"Hub")," \u65f6\u914d\u7f6e\u66f4\u591a\u53c2\u6570\uff0c\u6bd4\u5982\u6743\u9650\u3001\u8de8\u57df\u7b49\uff0c\u8fd9\u65f6\u53ea\u9700\u8981\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Hub")," \u6d3e\u751f\u7c7b\u4e2d\u7f16\u5199\u4ee5\u4e0b\u9759\u6001\u65b9\u6cd5\u5373\u53ef\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,8,13,18}","{1,8,13,18}":!0},'using Furion.InstantMessaging;\nusing Microsoft.AspNetCore.SignalR;\nusing System;\nusing System.Threading.Tasks;\n\nnamespace Furion.Core\n{\n [MapHub("/hubs/chathub")]\n public class ChatHub : Hub\n {\n // \u5176\u4ed6\u4ee3\u7801\n\n public static void HttpConnectionDispatcherOptionsSettings(HttpConnectionDispatcherOptions options)\n {\n // \u914d\u7f6e\n }\n\n public static void HubEndpointConventionBuilderSettings(HubEndpointConventionBuilder Builder)\n {\n // \u914d\u7f6e\n }\n }\n}\n')),(0,r.kt)("p",null,"\u4ee5\u4e0a\u914d\u7f6e\u7b49\u4ef7\u4e8e ",(0,r.kt)("inlineCode",{parentName:"p"},"SignalR")," \u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Startup.cs")," \u4e2d\u7684\u914d\u7f6e\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'app.UseEndpoints(endpoints =>\n{\n var builder = endpoints.MapHub("/hubs/chathub", options =>\n {\n // \u914d\u7f6e\n });\n});\n')),(0,r.kt)("h2",{id:"247-\u670d\u52a1\u7aef\u548c\u5ba2\u6237\u7aef\u53cc\u5de5\u901a\u4fe1"},"24.7 \u670d\u52a1\u7aef\u548c\u5ba2\u6237\u7aef\u53cc\u5de5\u901a\u4fe1"),(0,r.kt)("h3",{id:"2471-\u89e6\u53d1\u6240\u6709\u5ba2\u6237\u7aef\u4ee3\u7801"},"24.7.1 \u89e6\u53d1\u6240\u6709\u5ba2\u6237\u7aef\u4ee3\u7801"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"Clients.All.\u5ba2\u6237\u7aef\u65b9\u6cd5(\u53c2\u6570);\n")),(0,r.kt)("h3",{id:"2472-\u89e6\u53d1\u8c03\u7528\u8005\u5ba2\u6237\u7aef"},"24.7.2 \u89e6\u53d1\u8c03\u7528\u8005\u5ba2\u6237\u7aef"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"Clients.Caller.\u5ba2\u6237\u7aef\u65b9\u6cd5(\u53c2\u6570);\n")),(0,r.kt)("h3",{id:"2473-\u89e6\u53d1\u9664\u4e86\u8c03\u7528\u8005\u4ee5\u5916\u7684\u5ba2\u6237\u7aef"},"24.7.3 \u89e6\u53d1\u9664\u4e86\u8c03\u7528\u8005\u4ee5\u5916\u7684\u5ba2\u6237\u7aef"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"Clients.Others.\u5ba2\u6237\u7aef\u65b9\u6cd5(\u53c2\u6570);\n")),(0,r.kt)("h3",{id:"2474-\u89e6\u53d1\u7279\u5b9a\u7528\u6237\u5ba2\u6237\u7aef"},"24.7.4 \u89e6\u53d1\u7279\u5b9a\u7528\u6237\u5ba2\u6237\u7aef"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'Clients.User("\u7528\u6237").\u5ba2\u6237\u7aef\u65b9\u6cd5(\u53c2\u6570);\n')),(0,r.kt)("h3",{id:"2475-\u89e6\u53d1\u591a\u4e2a\u7528\u6237\u5ba2\u6237\u7aef"},"24.7.5 \u89e6\u53d1\u591a\u4e2a\u7528\u6237\u5ba2\u6237\u7aef"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'Clients.Users("\u7528\u6237","\u7528\u62372",...).\u5ba2\u6237\u7aef\u65b9\u6cd5(\u53c2\u6570);\n')),(0,r.kt)("h3",{id:"2476-\u89e6\u53d1\u5206\u7ec4\u5185\u5ba2\u6237\u7aef"},"24.7.6 \u89e6\u53d1\u5206\u7ec4\u5185\u5ba2\u6237\u7aef"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'Clients.Group("\u5206\u7ec4").\u5ba2\u6237\u7aef\u65b9\u6cd5(\u53c2\u6570);\n')),(0,r.kt)("h3",{id:"2477-\u89e6\u53d1\u591a\u4e2a\u5206\u7ec4\u5ba2\u6237\u7aef"},"24.7.7 \u89e6\u53d1\u591a\u4e2a\u5206\u7ec4\u5ba2\u6237\u7aef"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'Clients.Groups("\u5206\u7ec4","\u5206\u7ec42",...).\u5ba2\u6237\u7aef\u65b9\u6cd5(\u53c2\u6570);\n')),(0,r.kt)("h3",{id:"2478-\u89e6\u53d1\u5206\u7ec4\u5916\u7684\u5ba2\u6237\u7aef"},"24.7.8 \u89e6\u53d1\u5206\u7ec4\u5916\u7684\u5ba2\u6237\u7aef"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'Clients.GroupExcept("\u5206\u7ec4").\u5ba2\u6237\u7aef\u65b9\u6cd5(\u53c2\u6570);\n')),(0,r.kt)("h2",{id:"248-\u81ea\u5b9a\u4e49\u7528\u6237\u552f\u4e00\u6807\u8bc6"},"24.8 \u81ea\u5b9a\u4e49\u7528\u6237\u552f\u4e00\u6807\u8bc6"),(0,r.kt)("h2",{id:"249-\u5206\u7ec4\u7ba1\u7406"},"24.9 \u5206\u7ec4\u7ba1\u7406"),(0,r.kt)("h2",{id:"2410-\u5404\u4e2a\u5ba2\u6237\u7aef\u8fde\u63a5-api"},"24.10 \u5404\u4e2a\u5ba2\u6237\u7aef\u8fde\u63a5 API"),(0,r.kt)("h3",{id:"24101-javascript-\u5ba2\u6237\u7aef"},"24.10.1 ",(0,r.kt)("inlineCode",{parentName:"h3"},"Javascript")," \u5ba2\u6237\u7aef"),(0,r.kt)("h3",{id:"24102-typescript-\u5ba2\u6237\u7aef"},"24.10.2 ",(0,r.kt)("inlineCode",{parentName:"h3"},"Typescript")," \u5ba2\u6237\u7aef"),(0,r.kt)("h3",{id:"24103-net-\u5ba2\u6237\u7aef"},"24.10.3 ",(0,r.kt)("inlineCode",{parentName:"h3"},".NET")," \u5ba2\u6237\u7aef"),(0,r.kt)("h3",{id:"24104-java-\u5ba2\u6237\u7aef"},"24.10.4 ",(0,r.kt)("inlineCode",{parentName:"h3"},"Java")," \u5ba2\u6237\u7aef"),(0,r.kt)("h2",{id:"2411-\u5e38\u89c1\u4f8b\u5b50"},"24.11 \u5e38\u89c1\u4f8b\u5b50"),(0,r.kt)("h3",{id:"24111-\u5b9e\u73b0\u6d88\u606f\u5e7f\u64ad\u3001\u63a8\u9001"},"24.11.1 \u5b9e\u73b0\u6d88\u606f\u5e7f\u64ad\u3001\u63a8\u9001"),(0,r.kt)("p",null,"\u6574\u7406\u4e2d..."),(0,r.kt)("h3",{id:"24112-\u5b9e\u73b0\u804a\u5929\u529f\u80fd"},"24.11.2 \u5b9e\u73b0\u804a\u5929\u529f\u80fd"),(0,r.kt)("p",null,"\u6574\u7406\u4e2d..."),(0,r.kt)("h3",{id:"24113-\u5b9e\u73b0-\u4f60\u753b\u6211\u6765\u731c"},"24.11.3 \u5b9e\u73b0 ",(0,r.kt)("inlineCode",{parentName:"h3"},"\u4f60\u753b\u6211\u6765\u731c")),(0,r.kt)("p",null,"\u6574\u7406\u4e2d..."),(0,r.kt)("h2",{id:"2412-\u53cd\u9988\u4e0e\u5efa\u8bae"},"24.12 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,r.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))),(0,r.kt)("hr",null),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e86\u89e3\u66f4\u591a")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u60f3\u4e86\u89e3\u66f4\u591a ",(0,r.kt)("inlineCode",{parentName:"p"},"SignalR")," \u77e5\u8bc6\u53ef\u67e5\u9605 ",(0,r.kt)("a",{parentName:"p",href:"https://docs.microsoft.com/zh-cn/aspnet/signalr/"},"SignalR \u5b98\u65b9\u6587\u6863")," \u6216 ",(0,r.kt)("a",{parentName:"p",href:"https://docs.microsoft.com/zh-cn/aspnet/core/signalr/introduction?view=aspnetcore-5.0"},"ASP.NET Core SignalR")," \u7ae0\u8282\u3002"))))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/c4b1c400.af6a19c3.js b/handbook/build/assets/js/c4b1c400.af6a19c3.js deleted file mode 100644 index 1d32d449436..00000000000 --- a/handbook/build/assets/js/c4b1c400.af6a19c3.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[6931],{3905:function(e,n,t){t.d(n,{Zo:function(){return c},kt:function(){return m}});var a=t(7294);function i(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function r(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function l(e){for(var n=1;n=0||(i[t]=e[t]);return i}(e,n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(i[t]=e[t])}return i}var s=a.createContext({}),p=function(e){var n=a.useContext(s),t=n;return e&&(t="function"==typeof e?e(n):l(l({},n),e)),t},c=function(e){var n=p(e.components);return a.createElement(s.Provider,{value:n},e.children)},d={inlineCode:"code",wrapper:function(e){var n=e.children;return a.createElement(a.Fragment,{},n)}},u=a.forwardRef((function(e,n){var t=e.components,i=e.mdxType,r=e.originalType,s=e.parentName,c=o(e,["components","mdxType","originalType","parentName"]),u=p(t),m=i,k=u["".concat(s,".").concat(m)]||u[m]||d[m]||r;return t?a.createElement(k,l(l({ref:n},c),{},{components:t})):a.createElement(k,l({ref:n},c))}));function m(e,n){var t=arguments,i=n&&n.mdxType;if("string"==typeof e||i){var r=t.length,l=new Array(r);l[0]=u;var o={};for(var s in n)hasOwnProperty.call(n,s)&&(o[s]=n[s]);o.originalType=e,o.mdxType="string"==typeof e?e:i,l[1]=o;for(var p=2;pSignalR",id:"243-\u5173\u4e8e-signalr",children:[{value:"24.3.1 \u5fae\u8f6f\u5b98\u65b9\u4ecb\u7ecd",id:"2431-\u5fae\u8f6f\u5b98\u65b9\u4ecb\u7ecd",children:[]}]},{value:"24.4 \u6ce8\u518c SignalR \u670d\u52a1",id:"244-\u6ce8\u518c-signalr-\u670d\u52a1",children:[]},{value:"24.5 SignalR \u957f\u8fde\u63a5\u548c\u96c6\u7ebf\u5668",id:"245-signalr-\u957f\u8fde\u63a5\u548c\u96c6\u7ebf\u5668",children:[{value:"25.5.1 \u6301\u4e45\u6027\u8fde\u63a5",id:"2551-\u6301\u4e45\u6027\u8fde\u63a5",children:[]},{value:"24.5.2 \u96c6\u7ebf\u5668",id:"2452-\u96c6\u7ebf\u5668",children:[]}]},{value:"24.6 \u96c6\u7ebf\u5668 Hub \u5b9a\u4e49",id:"246-\u96c6\u7ebf\u5668-hub-\u5b9a\u4e49",children:[{value:"24.6.1 \u4e24\u79cd\u5b9a\u4e49\u65b9\u5f0f",id:"2461-\u4e24\u79cd\u5b9a\u4e49\u65b9\u5f0f",children:[]},{value:"24.6.2 [MapHub] \u914d\u7f6e\u8fde\u63a5\u5730\u5740",id:"2462-maphub-\u914d\u7f6e\u8fde\u63a5\u5730\u5740",children:[]},{value:"24.6.3 Hub \u6ce8\u518c\u66f4\u591a\u914d\u7f6e",id:"2463-hub-\u6ce8\u518c\u66f4\u591a\u914d\u7f6e",children:[]}]},{value:"24.7 \u670d\u52a1\u7aef\u548c\u5ba2\u6237\u7aef\u53cc\u5de5\u901a\u4fe1",id:"247-\u670d\u52a1\u7aef\u548c\u5ba2\u6237\u7aef\u53cc\u5de5\u901a\u4fe1",children:[{value:"24.7.1 \u89e6\u53d1\u6240\u6709\u5ba2\u6237\u7aef\u4ee3\u7801",id:"2471-\u89e6\u53d1\u6240\u6709\u5ba2\u6237\u7aef\u4ee3\u7801",children:[]},{value:"24.7.2 \u89e6\u53d1\u8c03\u7528\u8005\u5ba2\u6237\u7aef",id:"2472-\u89e6\u53d1\u8c03\u7528\u8005\u5ba2\u6237\u7aef",children:[]},{value:"24.7.3 \u89e6\u53d1\u9664\u4e86\u8c03\u7528\u8005\u4ee5\u5916\u7684\u5ba2\u6237\u7aef",id:"2473-\u89e6\u53d1\u9664\u4e86\u8c03\u7528\u8005\u4ee5\u5916\u7684\u5ba2\u6237\u7aef",children:[]},{value:"24.7.4 \u89e6\u53d1\u7279\u5b9a\u7528\u6237\u5ba2\u6237\u7aef",id:"2474-\u89e6\u53d1\u7279\u5b9a\u7528\u6237\u5ba2\u6237\u7aef",children:[]},{value:"24.7.5 \u89e6\u53d1\u591a\u4e2a\u7528\u6237\u5ba2\u6237\u7aef",id:"2475-\u89e6\u53d1\u591a\u4e2a\u7528\u6237\u5ba2\u6237\u7aef",children:[]},{value:"24.7.6 \u89e6\u53d1\u5206\u7ec4\u5185\u5ba2\u6237\u7aef",id:"2476-\u89e6\u53d1\u5206\u7ec4\u5185\u5ba2\u6237\u7aef",children:[]},{value:"24.7.7 \u89e6\u53d1\u591a\u4e2a\u5206\u7ec4\u5ba2\u6237\u7aef",id:"2477-\u89e6\u53d1\u591a\u4e2a\u5206\u7ec4\u5ba2\u6237\u7aef",children:[]},{value:"24.7.8 \u89e6\u53d1\u5206\u7ec4\u5916\u7684\u5ba2\u6237\u7aef",id:"2478-\u89e6\u53d1\u5206\u7ec4\u5916\u7684\u5ba2\u6237\u7aef",children:[]}]},{value:"24.8 \u81ea\u5b9a\u4e49\u7528\u6237\u552f\u4e00\u6807\u8bc6",id:"248-\u81ea\u5b9a\u4e49\u7528\u6237\u552f\u4e00\u6807\u8bc6",children:[]},{value:"24.9 \u5206\u7ec4\u7ba1\u7406",id:"249-\u5206\u7ec4\u7ba1\u7406",children:[]},{value:"24.10 \u5404\u4e2a\u5ba2\u6237\u7aef\u8fde\u63a5 API",id:"2410-\u5404\u4e2a\u5ba2\u6237\u7aef\u8fde\u63a5-api",children:[{value:"24.10.1 Javascript \u5ba2\u6237\u7aef",id:"24101-javascript-\u5ba2\u6237\u7aef",children:[]},{value:"24.10.2 Typescript \u5ba2\u6237\u7aef",id:"24102-typescript-\u5ba2\u6237\u7aef",children:[]},{value:"24.10.3 .NET \u5ba2\u6237\u7aef",id:"24103-net-\u5ba2\u6237\u7aef",children:[]},{value:"24.10.4 Java \u5ba2\u6237\u7aef",id:"24104-java-\u5ba2\u6237\u7aef",children:[]}]},{value:"24.11 \u5e38\u89c1\u4f8b\u5b50",id:"2411-\u5e38\u89c1\u4f8b\u5b50",children:[{value:"24.11.1 \u5b9e\u73b0\u6d88\u606f\u5e7f\u64ad\u3001\u63a8\u9001",id:"24111-\u5b9e\u73b0\u6d88\u606f\u5e7f\u64ad\u3001\u63a8\u9001",children:[]},{value:"24.11.2 \u5b9e\u73b0\u804a\u5929\u529f\u80fd",id:"24112-\u5b9e\u73b0\u804a\u5929\u529f\u80fd",children:[]},{value:"24.11.3 \u5b9e\u73b0 \u4f60\u753b\u6211\u6765\u731c",id:"24113-\u5b9e\u73b0-\u4f60\u753b\u6211\u6765\u731c",children:[]}]},{value:"24.12 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"2412-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],d={toc:c};function u(e){var n=e.components,t=(0,i.Z)(e,l);return(0,r.kt)("wrapper",(0,a.Z)({},d,t,{components:n,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"241-\u4ec0\u4e48\u662f\u5373\u65f6\u901a\u8baf"},"24.1 \u4ec0\u4e48\u662f\u5373\u65f6\u901a\u8baf"),(0,r.kt)("p",null,"\u5373\u65f6\u901a\u8baf\uff08Instant messaging\uff0c\u7b80\u79f0 IM\uff09\u901a\u5e38\u662f\u6307\u4e92\u8054\u7f51\u4e0a\u7528\u4ee5\u8fdb\u884c\u5b9e\u65f6\u901a\u8baf\u7684\u7cfb\u7edf\uff0c\u5141\u8bb8\u4e24\u4eba\u6216\u591a\u4eba\u4f7f\u7528\u7f51\u7edc\u5373\u65f6\u7684\u4f20\u9012\u6587\u5b57\u4fe1\u606f\u3001\u6587\u6863\u3001\u8bed\u97f3\u4e0e\u89c6\u9891\u4ea4\u6d41\u3002"),(0,r.kt)("p",null,"\u5373\u65f6\u901a\u8baf\u4e0d\u540c\u4e8e e-mail \u5728\u4e8e\u5b83\u7684\u4ea4\u8c08\u662f\u5b9e\u65f6\u7684\u3002\u5927\u90e8\u5206\u7684\u5373\u65f6\u901a\u8baf\u670d\u52a1\u63d0\u4f9b\u4e86\u72b6\u6001\u4fe1\u606f\u7684\u7279\u6027 \u2500\u2500 \u663e\u793a\u8054\u7edc\u4eba\u540d\u5355\uff0c\u8054\u7edc\u4eba\u662f\u5426\u5728\u7ebf\u4e0a\u4e0e\u80fd\u5426\u4e0e\u8054\u7edc\u4eba\u4ea4\u8c08\u3002"),(0,r.kt)("p",null,"\u5728\u4e92\u8054\u7f51\u4e0a\u76ee\u524d\u4f7f\u7528\u8f83\u5e7f\u7684\u5373\u65f6\u901a\u8baf\u670d\u52a1\u5305\u62ec Windows Live Messenger\u3001AOL Instant Messenger\u3001skype\u3001Yahoo! Messenger\u3001NET Messenger Service\u3001Jabber\u3001ICQ \u4e0e QQ \u7b49\u3002"),(0,r.kt)("h2",{id:"242-\u5373\u65f6\u901a\u8baf\u5e94\u7528\u573a\u666f"},"24.2 \u5373\u65f6\u901a\u8baf\u5e94\u7528\u573a\u666f"),(0,r.kt)("p",null,"\u5373\u65f6\u901a\u8baf\u5e94\u7528\u573a\u666f\u975e\u5e38\u5e7f\u6cdb\uff0c\u9700\u8981\u5b9e\u65f6\u4ea4\u4e92\u6d88\u606f\u7684\u90fd\u9700\u8981\u3002\u5982\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u804a\u5929\u5de5\u5177\uff1aQQ\u3001WeChat\u3001\u5728\u7ebf\u5ba2\u670d\u7b49"),(0,r.kt)("li",{parentName:"ul"},"\u624b\u6e38\u7f51\u6e38\uff1a\u738b\u8005\u8363\u8000\u3001\u9b54\u517d\u7b49"),(0,r.kt)("li",{parentName:"ul"},"\u7f51\u7edc\u76f4\u64ad\uff1a\u817e\u8baf\u8bfe\u5802\u3001\u6296\u97f3\u76f4\u64ad\u7b49"),(0,r.kt)("li",{parentName:"ul"},"\u8ba2\u5355\u63a8\u9001\uff1a\u7f8e\u56e2\u3001\u9910\u996e\u4e0b\u5355\u7cfb\u7edf\u7b49"),(0,r.kt)("li",{parentName:"ul"},"\u534f\u540c\u529e\u516c\uff1a\u516c\u53f8\u5185\u90e8\u6587\u4ef6\u5206\u4eab\u3001\u5de5\u4f5c\u5b89\u6392\u3001\u5728\u7ebf\u4f1a\u8bae\u7b49\u3002")),(0,r.kt)("p",null,"\u4ee5\u4e0a\u53ea\u662f\u5217\u4e3e\u4e86\u6bd4\u8f83\u5e38\u7528\u7684\u5e94\u7528\u573a\u666f\uff0c\u4f46\u5373\u65f6\u901a\u8baf\u7684\u4f5c\u7528\u8fdc\u4e0d\u6b62\u4e8e\u6b64\u3002"),(0,r.kt)("p",null,"\u6587\u6863\u7d27\u6025\u7f16\u5199\u4e2d\uff0c\u53ef\u4ee5\u5148\u770b\u5b98\u65b9\u6587\u6863\uff1a",(0,r.kt)("a",{parentName:"p",href:"https://docs.microsoft.com/zh-cn/aspnet/core/signalr/introduction?view=aspnetcore-5.0"},"https://docs.microsoft.com/zh-cn/aspnet/core/signalr/introduction?view=aspnetcore-5.0")),(0,r.kt)("h2",{id:"243-\u5173\u4e8e-signalr"},"24.3 \u5173\u4e8e ",(0,r.kt)("inlineCode",{parentName:"h2"},"SignalR")),(0,r.kt)("p",null,"\u5373\u65f6\u901a\u8baf\u6280\u672f\u5b9e\u73b0\u662f\u590d\u6742\u4e14\u8fc7\u4e8e\u5e95\u5c42\u5316\uff0c\u6240\u4ee5\u5fae\u8f6f\u4e3a\u4e86\u7b80\u5316\u5373\u65f6\u901a\u8baf\u5e94\u7528\u7a0b\u5e8f\uff0c\u5f00\u53d1\u51fa\u4e86\u4e00\u4e2a\u5f3a\u5927\u4e14\u7b80\u6613\u4f7f\u7528\u7684\u901a\u4fe1\u5e93\uff1a",(0,r.kt)("inlineCode",{parentName:"p"},"SignalR"),"\uff0c\u901a\u8fc7\u8be5\u5e93\u6211\u4eec\u53ef\u4ee5\u8f7b\u677e\u5b9e\u73b0\u7c7b\u4f3c QQ\u3001\u5fae\u4fe1\u8fd9\u7c7b IM \u804a\u5929\u5de5\u5177\uff0c\u4e5f\u80fd\u5feb\u901f\u5b9e\u73b0\u6d88\u606f\u63a8\u9001\u3001\u8ba2\u5355\u63a8\u9001\u8fd9\u6837\u7684\u7cfb\u7edf\u3002"),(0,r.kt)("h3",{id:"2431-\u5fae\u8f6f\u5b98\u65b9\u4ecb\u7ecd"},"24.3.1 \u5fae\u8f6f\u5b98\u65b9\u4ecb\u7ecd"),(0,r.kt)("p",null,"ASP.NET Core SignalR \u662f\u4e00\u79cd\u5f00\u653e\u6e90\u4ee3\u7801\u5e93\uff0c\u53ef\u7b80\u5316\u5c06\u5b9e\u65f6 web \u529f\u80fd\u6dfb\u52a0\u5230\u5e94\u7528\u7a0b\u5e8f\u7684\u529f\u80fd\u3002 \u5b9e\u65f6 web \u529f\u80fd\u4f7f\u670d\u52a1\u5668\u7aef\u4ee3\u7801\u53ef\u4ee5\u7acb\u5373\u5c06\u5185\u5bb9\u63a8\u9001\u5230\u5ba2\u6237\u7aef\u3002"),(0,r.kt)("p",null,"\u9002\u7528\u4e8e SignalR \uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u9700\u8981\u4ece\u670d\u52a1\u5668\u8fdb\u884c\u9ad8\u9891\u7387\u66f4\u65b0\u7684\u5e94\u7528\u3002 \u793a\u4f8b\u5305\u62ec\u6e38\u620f\u3001\u793e\u4ea4\u7f51\u7edc\u3001\u6295\u7968\u3001\u62cd\u5356\u3001\u5730\u56fe\u548c GPS \u5e94\u7528\u3002"),(0,r.kt)("li",{parentName:"ul"},"\u4eea\u8868\u677f\u548c\u76d1\u89c6\u5e94\u7528\u3002 \u793a\u4f8b\u5305\u62ec\u516c\u53f8\u4eea\u8868\u677f\u3001\u5373\u65f6\u9500\u552e\u66f4\u65b0\u6216\u65c5\u884c\u8b66\u62a5\u3002"),(0,r.kt)("li",{parentName:"ul"},"\u534f\u4f5c\u5e94\u7528\u3002 \u534f\u4f5c\u5e94\u7528\u7684\u793a\u4f8b\u5305\u62ec\u767d\u677f\u5e94\u7528\u548c\u56e2\u961f\u4f1a\u8bae\u8f6f\u4ef6\u3002"),(0,r.kt)("li",{parentName:"ul"},"\u9700\u8981\u901a\u77e5\u7684\u5e94\u7528\u3002 \u793e\u4ea4\u7f51\u7edc\u3001\u7535\u5b50\u90ae\u4ef6\u3001\u804a\u5929\u3001\u6e38\u620f\u3001\u65c5\u884c\u8b66\u62a5\u548c\u5f88\u591a\u5176\u4ed6\u5e94\u7528\u90fd\u9700\u4f7f\u7528\u901a\u77e5\u3002")),(0,r.kt)("p",null,"\u76ee\u524d ",(0,r.kt)("inlineCode",{parentName:"p"},"SignalR")," \u5df2\u7ecf\u5185\u7f6e\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},".NET 5 SDK")," \u4e2d\u3002\u540c\u65f6 ",(0,r.kt)("inlineCode",{parentName:"p"},"SignalR")," \u652f\u6301 ",(0,r.kt)("inlineCode",{parentName:"p"},"Web\u3001App\u3001Console\u3001Desktop")," \u7b49\u591a\u4e2a\u5e94\u7528\u5e73\u53f0\u3002"),(0,r.kt)("h2",{id:"244-\u6ce8\u518c-signalr-\u670d\u52a1"},"24.4 \u6ce8\u518c ",(0,r.kt)("inlineCode",{parentName:"h2"},"SignalR")," \u670d\u52a1"),(0,r.kt)("p",null,"\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\uff0c\u4efb\u4f55\u670d\u52a1\u529f\u80fd\u90fd\u9700\u8981\u5148\u6ce8\u518c\u540e\u518d\u4f7f\u7528\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"SignalR")," \u4e5f\u4e0d\u4f8b\u5916\u3002\u53ea\u9700\u8981\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Startup.cs")," \u4e2d\u6dfb\u52a0\u6ce8\u518c\u5373\u53ef\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,15,22,25}","{1,15,22,25}":!0},'using Microsoft.AspNetCore.Builder;\nusing Microsoft.AspNetCore.Hosting;\nusing Microsoft.Extensions.DependencyInjection;\nusing Microsoft.Extensions.Hosting;\n\nnamespace Furion.Web.Core\n{\n public sealed class Startup : AppStartup\n {\n public void ConfigureServices(IServiceCollection services)\n {\n // \u5176\u4ed6\u4ee3\u7801...\n\n // \u6dfb\u52a0\u5373\u65f6\u901a\u8baf\n services.AddSignalR();\n }\n\n public void Configure(IApplicationBuilder app, IWebHostEnvironment env)\n {\n // \u5176\u4ed6\u4ee3\u7801...\n\n app.UseEndpoints(endpoints =>\n {\n // \u6ce8\u518c\u96c6\u7ebf\u5668\n endpoints.MapHubs();\n\n endpoints.MapControllerRoute(\n name: "default",\n pattern: "{controller=Home}/{action=Index}/{id?}");\n });\n }\n }\n}\n')),(0,r.kt)("h2",{id:"245-signalr-\u957f\u8fde\u63a5\u548c\u96c6\u7ebf\u5668"},"24.5 ",(0,r.kt)("inlineCode",{parentName:"h2"},"SignalR")," \u957f\u8fde\u63a5\u548c\u96c6\u7ebf\u5668"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"SignalR")," \u5305\u542b\u4e24\u79cd\u7528\u4e8e\u5728\u5ba2\u6237\u7aef\u548c\u670d\u52a1\u5668\u4e4b\u95f4\u8fdb\u884c\u901a\u4fe1\u7684\u6a21\u578b\uff1a",(0,r.kt)("inlineCode",{parentName:"p"},"\u6301\u4e45\u6027\u8fde\u63a5"),"\u548c ",(0,r.kt)("inlineCode",{parentName:"p"},"\u96c6\u7ebf\u5668")," \u4e2d\u5fc3\u3002"),(0,r.kt)("h3",{id:"2551-\u6301\u4e45\u6027\u8fde\u63a5"},"25.5.1 \u6301\u4e45\u6027\u8fde\u63a5"),(0,r.kt)("p",null,"\u8fde\u63a5\u8868\u793a\u7528\u4e8e\u53d1\u9001\u5355\u63a5\u6536\u65b9\u3001\u5206\u7ec4\u6216\u5e7f\u64ad\u6d88\u606f\u7684\u7b80\u5355\u7ec8\u7ed3\u70b9\u3002 ",(0,r.kt)("inlineCode",{parentName:"p"},"\u6301\u4e45\u6027\u8fde\u63a5")," (\u5728 .NET \u4ee3\u7801\u4e2d\u7531 PersistentConnection \u7c7b\u8868\u793a) \u4f7f\u5f00\u53d1\u4eba\u5458\u80fd\u591f\u76f4\u63a5\u8bbf\u95ee ",(0,r.kt)("inlineCode",{parentName:"p"},"SignalR")," \u516c\u5f00\u7684\u4f4e\u7ea7\u522b\u901a\u4fe1\u534f\u8bae\u3002 \u4f7f\u7528\u57fa\u4e8e\u8fde\u63a5\u7684 Api \uff08\u5982 Windows Communication Foundation\uff09\u7684\u5f00\u53d1\u4eba\u5458\u5c06\u5bf9\u4f7f\u7528\u8fde\u63a5\u901a\u4fe1\u6a21\u578b\u975e\u5e38\u719f\u6089\u3002"),(0,r.kt)("h3",{id:"2452-\u96c6\u7ebf\u5668"},"24.5.2 \u96c6\u7ebf\u5668"),(0,r.kt)("p",null,"\u96c6\u7ebf\u5668\u662f\u4e00\u79cd\u57fa\u4e8e\u8fde\u63a5 API \u6784\u5efa\u7684\u66f4\u9ad8\u7ea7\u522b\u7ba1\u9053\uff0c",(0,r.kt)("strong",{parentName:"p"},"\u5b83\u5141\u8bb8\u5ba2\u6237\u7aef\u548c\u670d\u52a1\u5668\u76f4\u63a5\u8c03\u7528\u65b9\u6cd5"),"\u3002 ",(0,r.kt)("inlineCode",{parentName:"p"},"SignalR")," \u5c31\u50cf\u9b54\u672f\u4e00\u6837\u5904\u7406\u8de8\u673a\u5668\u8fb9\u754c\u7684\u8c03\u5ea6\uff0c\u4f7f\u5ba2\u6237\u7aef\u80fd\u591f\u50cf\u672c\u5730\u65b9\u6cd5\u4e00\u6837\u8f7b\u677e\u5730\u8c03\u7528\u670d\u52a1\u5668\u4e0a\u7684\u65b9\u6cd5\uff0c\u53cd\u4e4b\u4ea6\u7136\u3002 \u5982\u679c\u5f00\u53d1\u4eba\u5458\u5df2\u4f7f\u7528\u8fdc\u7a0b\u8c03\u7528 \uff08\u5982 .NET \u8fdc\u7a0b\u5904\u7406\uff09\uff0c\u5219\u5c06\u5bf9\u4f7f\u7528\u4e2d\u5fc3\u901a\u4fe1\u6a21\u578b\u975e\u5e38\u719f\u6089\u3002 \u4f7f\u7528\u96c6\u7ebf\u5668\u8fd8\u53ef\u4ee5\u5c06\u5f3a\u7c7b\u578b\u53c2\u6570\u4f20\u9012\u7ed9\u65b9\u6cd5\uff0c\u4ece\u800c\u542f\u7528\u6a21\u578b\u7ed1\u5b9a\u3002"),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u5c0f\u77e5\u8bc6")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u60f3\u4e86\u89e3\u66f4\u591a\u5173\u4e8e ",(0,r.kt)("inlineCode",{parentName:"p"},"\u6301\u4e45\u6027\u8fde\u63a5")," \u548c ",(0,r.kt)("inlineCode",{parentName:"p"},"\u96c6\u7ebf\u5668\u4e2d\u5fc3")," \u53ef\u67e5\u9605 ",(0,r.kt)("a",{parentName:"p",href:"https://docs.microsoft.com/zh-cn/aspnet/signalr/overview/getting-started/introduction-to-signalr#connections-and-hubs"},"SignalR \u5b98\u65b9\u6587\u6863")))),(0,r.kt)("h2",{id:"246-\u96c6\u7ebf\u5668-hub-\u5b9a\u4e49"},"24.6 \u96c6\u7ebf\u5668 ",(0,r.kt)("inlineCode",{parentName:"h2"},"Hub")," \u5b9a\u4e49"),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"\u5728\u672c\u7ae0\u8282\u4e2d\u4e3b\u8981\u63a8\u8350\u4f7f\u7528\u96c6\u7ebf\u5668\u901a\u4fe1\u6a21\u578b\u65b9\u5f0f\u3002"),"\u8fd9\u91cc\u4e3b\u8981\u8bf4\u660e ",(0,r.kt)("inlineCode",{parentName:"p"},"Hub")," \u5b9a\u4e49\uff0c\u5982\u679c\u65e0\u6cd5\u7406\u89e3\u8be5\u901a\u4fe1\u6a21\u578b\u7684\u4f5c\u7528\u4e5f\u6ca1\u5173\u7cfb\uff0c\u63a5\u4e0b\u6765\u7684\u4f8b\u5b50\u4f1a\u5e26\u5927\u5bb6\u6162\u6162\u719f\u6089\u5e76\u4f7f\u7528\u3002"),(0,r.kt)("h3",{id:"2461-\u4e24\u79cd\u5b9a\u4e49\u65b9\u5f0f"},"24.6.1 \u4e24\u79cd\u5b9a\u4e49\u65b9\u5f0f"),(0,r.kt)("p",null,"\u5b9a\u4e49\u96c6\u7ebf\u5668\u53ea\u9700\u8981\u7ee7\u627f ",(0,r.kt)("inlineCode",{parentName:"p"},"Hub")," \u6216 ",(0,r.kt)("inlineCode",{parentName:"p"},"Hub")," \u6cdb\u578b\u57fa\u7c7b\u5373\u53ef\uff0c\u5982\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Hub")," \u65b9\u5f0f")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{9}","{9}":!0},'using Furion.InstantMessaging;\nusing Microsoft.AspNetCore.SignalR;\n\nnamespace Furion.Core\n{\n /// \n /// \u804a\u5929\u96c6\u7ebf\u5668\n /// \n public class ChatHub : Hub\n {\n // \u5b9a\u4e49\u4e00\u4e2a\u65b9\u6cd5\u4f9b\u5ba2\u6237\u7aef\u8c03\u7528\n public Task SendMessage(string user, string message)\n {\n // \u89e6\u53d1\u5ba2\u6237\u7aef\u5b9a\u4e49\u76d1\u542c\u7684\u65b9\u6cd5\n return Clients.All.SendAsync("ReceiveMessage", user, message);\n }\n }\n}\n')),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Hub")," \u7c7b\u578b\u65b9\u5f0f")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"public interface IChatClient\n{\n Task ReceiveMessage(string user, string message);\n}\n")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1}","{1}":!0},"public class StronglyTypedChatHub : Hub\n{\n // \u5b9a\u4e49\u4e00\u4e2a\u65b9\u6cd5\u4f9b\u5ba2\u6237\u7aef\u8c03\u7528\n public async Task SendMessage(string user, string message)\n {\n // \u89e6\u53d1\u5ba2\u6237\u7aef\u5b9a\u4e49\u76d1\u542c\u7684\u65b9\u6cd5\n await Clients.All.ReceiveMessage(user, message);\n }\n}\n")),(0,r.kt)("p",null,"\u901a\u8fc7\u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"Hub")," \u53ef\u4ee5\u5bf9\u5ba2\u6237\u7aef\u65b9\u6cd5\u8fdb\u884c\u7f16\u8bd1\u65f6\u68c0\u67e5\u3002 \u8fd9\u53ef\u4ee5\u9632\u6b62\u7531\u4e8e\u4f7f\u7528\u795e\u5947\u5b57\u7b26\u4e32\u800c\u5bfc\u81f4\u7684\u95ee\u9898\uff0c\u56e0\u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"Hub")," \u53ea\u80fd\u63d0\u4f9b\u5bf9\u5728\u63a5\u53e3\u4e2d\u5b9a\u4e49\u7684\u65b9\u6cd5\u7684\u8bbf\u95ee\u3002"),(0,r.kt)("h3",{id:"2462-maphub-\u914d\u7f6e\u8fde\u63a5\u5730\u5740"},"24.6.2 ",(0,r.kt)("inlineCode",{parentName:"h3"},"[MapHub]")," \u914d\u7f6e\u8fde\u63a5\u5730\u5740"),(0,r.kt)("p",null,"\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"SignalR")," \u5e93\u4e2d\u8981\u6c42\u6bcf\u4e00\u4e2a\u516c\u5f00\u7684\u96c6\u7ebf\u5668\u90fd\u9700\u8981\u914d\u7f6e\u5ba2\u6237\u7aef\u8fde\u63a5\u5730\u5740\uff0c\u6240\u4ee5\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u4e86\u66f4\u52a0 ",(0,r.kt)("inlineCode",{parentName:"p"},"[MapHub]")," \u914d\u7f6e\uff0c\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,11}","{1,11}":!0},'using Furion.InstantMessaging;\nusing Microsoft.AspNetCore.SignalR;\nusing System;\nusing System.Threading.Tasks;\n\nnamespace Furion.Core\n{\n /// \n /// \u804a\u5929\u96c6\u7ebf\u5668\n /// \n [MapHub("/hubs/chathub")]\n public class ChatHub : Hub\n {\n // ...\n }\n}\n')),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),(0,r.kt)("inlineCode",{parentName:"h5"},"SignalR")," \u539f\u751f\u914d\u7f6e\u65b9\u5f0f")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u4e2d\u63a8\u8350\u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"[MapHub]")," \u65b9\u5f0f\u914d\u7f6e\u96c6\u7ebf\u5668\u5ba2\u6237\u7aef\u8fde\u63a5\u5730\u5740\uff0c\u5f53\u7136\u4e5f\u53ef\u4ee5\u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"SignalR")," \u63d0\u4f9b\u7684\u65b9\u5f0f\uff0c\u5982\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Startup.cs")," \u914d\u7f6e\uff1a"),(0,r.kt)("pre",{parentName:"div"},(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{10}","{10}":!0},'public sealed class Startup : AppStartup\n{\n // \u5176\u4ed6\u4ee3\u7801\n public void Configure(IApplicationBuilder app, IWebHostEnvironment env)\n {\n // \u5176\u4ed6\u4ee3\u7801...\n app.UseEndpoints(endpoints =>\n {\n // \u6ce8\u518c\u96c6\u7ebf\u5668\n endpoints.MapHub("/hubs/chathub");\n });\n }\n}\n')))),(0,r.kt)("h3",{id:"2463-hub-\u6ce8\u518c\u66f4\u591a\u914d\u7f6e"},"24.6.3 ",(0,r.kt)("inlineCode",{parentName:"h3"},"Hub")," \u6ce8\u518c\u66f4\u591a\u914d\u7f6e"),(0,r.kt)("p",null,"\u6709\u4e9b\u65f6\u5019\uff0c\u6211\u4eec\u9700\u8981\u6ce8\u518c ",(0,r.kt)("inlineCode",{parentName:"p"},"Hub")," \u65f6\u914d\u7f6e\u66f4\u591a\u53c2\u6570\uff0c\u6bd4\u5982\u6743\u9650\u3001\u8de8\u57df\u7b49\uff0c\u8fd9\u65f6\u53ea\u9700\u8981\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Hub")," \u6d3e\u751f\u7c7b\u4e2d\u7f16\u5199\u4ee5\u4e0b\u9759\u6001\u65b9\u6cd5\u5373\u53ef\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,8,13,18}","{1,8,13,18}":!0},'using Furion.InstantMessaging;\nusing Microsoft.AspNetCore.SignalR;\nusing System;\nusing System.Threading.Tasks;\n\nnamespace Furion.Core\n{\n [MapHub("/hubs/chathub")]\n public class ChatHub : Hub\n {\n // \u5176\u4ed6\u4ee3\u7801\n\n public static void HttpConnectionDispatcherOptionsSettings(HttpConnectionDispatcherOptions options)\n {\n // \u914d\u7f6e\n }\n\n public static void HubEndpointConventionBuilderSettings(HubEndpointConventionBuilder Builder)\n {\n // \u914d\u7f6e\n }\n }\n}\n')),(0,r.kt)("p",null,"\u4ee5\u4e0a\u914d\u7f6e\u7b49\u4ef7\u4e8e ",(0,r.kt)("inlineCode",{parentName:"p"},"SignalR")," \u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Startup.cs")," \u4e2d\u7684\u914d\u7f6e\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'app.UseEndpoints(endpoints =>\n{\n var builder = endpoints.MapHub("/hubs/chathub", options =>\n {\n // \u914d\u7f6e\n });\n});\n')),(0,r.kt)("h2",{id:"247-\u670d\u52a1\u7aef\u548c\u5ba2\u6237\u7aef\u53cc\u5de5\u901a\u4fe1"},"24.7 \u670d\u52a1\u7aef\u548c\u5ba2\u6237\u7aef\u53cc\u5de5\u901a\u4fe1"),(0,r.kt)("h3",{id:"2471-\u89e6\u53d1\u6240\u6709\u5ba2\u6237\u7aef\u4ee3\u7801"},"24.7.1 \u89e6\u53d1\u6240\u6709\u5ba2\u6237\u7aef\u4ee3\u7801"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"Clients.All.\u5ba2\u6237\u7aef\u65b9\u6cd5(\u53c2\u6570);\n")),(0,r.kt)("h3",{id:"2472-\u89e6\u53d1\u8c03\u7528\u8005\u5ba2\u6237\u7aef"},"24.7.2 \u89e6\u53d1\u8c03\u7528\u8005\u5ba2\u6237\u7aef"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"Clients.Caller.\u5ba2\u6237\u7aef\u65b9\u6cd5(\u53c2\u6570);\n")),(0,r.kt)("h3",{id:"2473-\u89e6\u53d1\u9664\u4e86\u8c03\u7528\u8005\u4ee5\u5916\u7684\u5ba2\u6237\u7aef"},"24.7.3 \u89e6\u53d1\u9664\u4e86\u8c03\u7528\u8005\u4ee5\u5916\u7684\u5ba2\u6237\u7aef"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"Clients.Others.\u5ba2\u6237\u7aef\u65b9\u6cd5(\u53c2\u6570);\n")),(0,r.kt)("h3",{id:"2474-\u89e6\u53d1\u7279\u5b9a\u7528\u6237\u5ba2\u6237\u7aef"},"24.7.4 \u89e6\u53d1\u7279\u5b9a\u7528\u6237\u5ba2\u6237\u7aef"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'Clients.User("\u7528\u6237").\u5ba2\u6237\u7aef\u65b9\u6cd5(\u53c2\u6570);\n')),(0,r.kt)("h3",{id:"2475-\u89e6\u53d1\u591a\u4e2a\u7528\u6237\u5ba2\u6237\u7aef"},"24.7.5 \u89e6\u53d1\u591a\u4e2a\u7528\u6237\u5ba2\u6237\u7aef"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'Clients.Users("\u7528\u6237","\u7528\u62372",...).\u5ba2\u6237\u7aef\u65b9\u6cd5(\u53c2\u6570);\n')),(0,r.kt)("h3",{id:"2476-\u89e6\u53d1\u5206\u7ec4\u5185\u5ba2\u6237\u7aef"},"24.7.6 \u89e6\u53d1\u5206\u7ec4\u5185\u5ba2\u6237\u7aef"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'Clients.Group("\u5206\u7ec4").\u5ba2\u6237\u7aef\u65b9\u6cd5(\u53c2\u6570);\n')),(0,r.kt)("h3",{id:"2477-\u89e6\u53d1\u591a\u4e2a\u5206\u7ec4\u5ba2\u6237\u7aef"},"24.7.7 \u89e6\u53d1\u591a\u4e2a\u5206\u7ec4\u5ba2\u6237\u7aef"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'Clients.Groups("\u5206\u7ec4","\u5206\u7ec42",...).\u5ba2\u6237\u7aef\u65b9\u6cd5(\u53c2\u6570);\n')),(0,r.kt)("h3",{id:"2478-\u89e6\u53d1\u5206\u7ec4\u5916\u7684\u5ba2\u6237\u7aef"},"24.7.8 \u89e6\u53d1\u5206\u7ec4\u5916\u7684\u5ba2\u6237\u7aef"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'Clients.GroupExcept("\u5206\u7ec4").\u5ba2\u6237\u7aef\u65b9\u6cd5(\u53c2\u6570);\n')),(0,r.kt)("h2",{id:"248-\u81ea\u5b9a\u4e49\u7528\u6237\u552f\u4e00\u6807\u8bc6"},"24.8 \u81ea\u5b9a\u4e49\u7528\u6237\u552f\u4e00\u6807\u8bc6"),(0,r.kt)("h2",{id:"249-\u5206\u7ec4\u7ba1\u7406"},"24.9 \u5206\u7ec4\u7ba1\u7406"),(0,r.kt)("h2",{id:"2410-\u5404\u4e2a\u5ba2\u6237\u7aef\u8fde\u63a5-api"},"24.10 \u5404\u4e2a\u5ba2\u6237\u7aef\u8fde\u63a5 API"),(0,r.kt)("h3",{id:"24101-javascript-\u5ba2\u6237\u7aef"},"24.10.1 ",(0,r.kt)("inlineCode",{parentName:"h3"},"Javascript")," \u5ba2\u6237\u7aef"),(0,r.kt)("h3",{id:"24102-typescript-\u5ba2\u6237\u7aef"},"24.10.2 ",(0,r.kt)("inlineCode",{parentName:"h3"},"Typescript")," \u5ba2\u6237\u7aef"),(0,r.kt)("h3",{id:"24103-net-\u5ba2\u6237\u7aef"},"24.10.3 ",(0,r.kt)("inlineCode",{parentName:"h3"},".NET")," \u5ba2\u6237\u7aef"),(0,r.kt)("h3",{id:"24104-java-\u5ba2\u6237\u7aef"},"24.10.4 ",(0,r.kt)("inlineCode",{parentName:"h3"},"Java")," \u5ba2\u6237\u7aef"),(0,r.kt)("h2",{id:"2411-\u5e38\u89c1\u4f8b\u5b50"},"24.11 \u5e38\u89c1\u4f8b\u5b50"),(0,r.kt)("h3",{id:"24111-\u5b9e\u73b0\u6d88\u606f\u5e7f\u64ad\u3001\u63a8\u9001"},"24.11.1 \u5b9e\u73b0\u6d88\u606f\u5e7f\u64ad\u3001\u63a8\u9001"),(0,r.kt)("p",null,"\u6574\u7406\u4e2d..."),(0,r.kt)("h3",{id:"24112-\u5b9e\u73b0\u804a\u5929\u529f\u80fd"},"24.11.2 \u5b9e\u73b0\u804a\u5929\u529f\u80fd"),(0,r.kt)("p",null,"\u6574\u7406\u4e2d..."),(0,r.kt)("h3",{id:"24113-\u5b9e\u73b0-\u4f60\u753b\u6211\u6765\u731c"},"24.11.3 \u5b9e\u73b0 ",(0,r.kt)("inlineCode",{parentName:"h3"},"\u4f60\u753b\u6211\u6765\u731c")),(0,r.kt)("p",null,"\u6574\u7406\u4e2d..."),(0,r.kt)("h2",{id:"2412-\u53cd\u9988\u4e0e\u5efa\u8bae"},"24.12 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,r.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))),(0,r.kt)("hr",null),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e86\u89e3\u66f4\u591a")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u60f3\u4e86\u89e3\u66f4\u591a ",(0,r.kt)("inlineCode",{parentName:"p"},"SignalR")," \u77e5\u8bc6\u53ef\u67e5\u9605 ",(0,r.kt)("a",{parentName:"p",href:"https://docs.microsoft.com/zh-cn/aspnet/signalr/"},"SignalR \u5b98\u65b9\u6587\u6863")," \u6216 ",(0,r.kt)("a",{parentName:"p",href:"https://docs.microsoft.com/zh-cn/aspnet/core/signalr/introduction?view=aspnetcore-5.0"},"ASP.NET Core SignalR")," \u7ae0\u8282\u3002"))))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/c4f5d8e4.4fc49c0e.js b/handbook/build/assets/js/c4f5d8e4.4fc49c0e.js new file mode 100644 index 00000000000..64c55e08146 --- /dev/null +++ b/handbook/build/assets/js/c4f5d8e4.4fc49c0e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[4195,613],{161:function(t,A,e){e.r(A),e.d(A,{default:function(){return mt}});var a,o,r,s=e(7462),i=e(3366),g=e(6742),l=e(4996),n=e(2263),c=e(5350),h=e(4328),p=e(906),m=e(7294),u=[{author:"\u767e\u5c0f\u50e7",link:"https://gitee.com/monksoul",photo:"https://portrait.gitee.com/uploads/avatars/user/324/974299_monksoul_1578937227.png!avatar200",extra:"Furion\u3001Layx \u4f5c\u8005\uff0cdotNET China MIP"},{author:"YaChengMu",link:"https://gitee.com/YaChengMu",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAYAAAA4TnrqAAADuklEQVR4Xu3YeUgUYRgG8GdtPSqSsEzRki4j7LBIKyQoAqOTsLJLUqMM2kpFPMkDa7NSEzXcIovUsEONiFJCSQosLIPUyAJLSTAsS6Iyr203ZmQHWaX2xZyxePc/2efbeefn883OrMprXaAR/LJIQMVYFjmJIcay3IqxCFaMxVgUAUKWr1mMRRAgRLlZjEUQIES5WYxFECBEuVmMRRAgRLlZjEUQIES5WYxFECBEuVmMRRAgRLlZjEUQIES5WYxFECBER7xZM9xccSYxDNNcnKSxGptaEHsyBy2tbYRR+6Nurs44FXcI7jPdpLU1dQ2IPJaFH13d5M+jLBhxLGGYnZt9oQnyx1g7W3E2g8GAm2WVSNVdocwqZqM1e7B1/WpYWVmJf7d//gJt1iU8flZP/izqAlmwhKEyksKxYukiqFQqccav3zpxWleA8ofVFs+8ZuVyxGgCYT9hvLimt7cPhbfuQZdfYvFnDCcoG9aCubOgjT4IF2dHad66hkaEJqRbtH3GjbVD9vFIeHq4i+uNRiNqahsQpc22aP1wkExrZcMSDhi8fSP2794MWxsb8fh6/U/cuFOBzNxrfzyX8JBd2LHJF2r1GDH78VMHTmRflmX7KYIlHPSsNgrLFs+TtqMl1xwfr4WID9sHx0kTFdl+imF5e3ogKSIETo4OUpt+920mbL/0xDAI60zb78nzlzgSn/bHNv7tgKzb0DT8gQA/BPlvgI2NtdSU/OJSXCi8Nej8NEHbEOC3Vsp+aO9AckYuBGC5X4pgDbUdh0Iwb2FPby8uXr2NvKK7cjuJx1MMS7gOHQ3diymT+7ej8O1W9bQWEcmZEsTA242h3pdbTDEs4UTNt9j3zi7k5BWhpLRy0I3s+7Z2xKeew4vXb+U2ko6nKJb5xVuY6lVjM5LO5CIlVoPZ06eKg3Z190CXX4zrtysUg1J0G5rO2vy2oE+vR33DGyyeP0d8pBG23/2qGsSdzFEUalRgCUMcCvZHwJa1sFarB4E0vWsVH7qbW1oZSxAwf5QxqQy8hikupeS3ofnJr/JZgrjDwXCYaC++ZTAaUf6gGglp50eDk7K3DkMJ6FJi4L2o/05d+G3qdE4ByiofMRZjDbMD3CwCIGMxFkGAEOVmMRZBgBDlZjEWQYAQ5WYxFkHgP4oq+uPfv+bIWIT/GGMxFkGAEOVmMRZBgBDlZjEWQYAQ5WYxFkGAEOVmMRZBgBDlZjEWQYAQ5WYxFkGAEOVmMRZBgBDlZjEWQYAQ5WYxFkGAEOVmEbB+Af6T8DmYf9viAAAAAElFTkSuQmCC"},{author:"zuohuaijun",link:"https://gitee.com/zuohuaijun",photo:"https://portrait.gitee.com/uploads/avatars/user/20/61753_zuohuaijun_1617100931.png!avatar200",extra:"Admin.NET \u4f5c\u8005"},{author:"\u96fe\u5f71\u5bd2\u51b0",link:"https://gitee.com/wyhb",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAYAAAA4TnrqAAAGuElEQVR4Xu2aeVBVVRzHv6wPZBMXNCWQRRBCXFAJBRTEhTB1lGzBnEbRbFIzdXTUGbcxM5dySS1FGMsRNQMdC8rQMTTRVEYR2RERjUBAQRDQeDS/M8MbZHnc87gXoznnH2a433PP+X3u9/7O+Z379Dz8p9ZDNEkE9AQsSZyYSMCSzkrA4mAlYAlYPAQ4tCJnCVgcBDikwlkCFgcBDqlwloDFQYBDKpwlYHEQ4JAKZwlYHAQ4pMJZAhYHAQ6pcJaAxUGAQyqc9V+BdfLQLjj1e5VjOu2TXrmegvAla9t3Ey29FXWWgMXx3Px9vGBlYSG5h6WFGcJnhqJHt64oKXuMiMMnUPGkSnL/4pJSXEm+JVnPK1TUWbyT8R46EJtWfwKbHt1Bga/6bKeiwfPOT3ZY65d/jGkhQbzzkF0f83MC1m7ZI+t9BSwOnIrBev78H8TEJeBmaqbk6bQ3Z40ZNRzjx4xk43UqZxGsyCMx+OH0GQz1dIOhgaFWaHn37sOsi2mznEWdKIdpazW1tbh09QaWL5itSQGdElb+/UKs/nQeA6GtUXBxCYnNYM2dGQpvL0+tfRsWgzeC/Ds3rJT0LHw4awZMVMZaA05IvIzklLRmsCYG+sLT3UVr37LH5di5/zDemjyhc8P6OjJacs5q79ah8UrcKV7DKcGBoKDr6upw7uKf7G9HOcvJwY6NTY02p6fiz0l+UFKEsq+GTQd9c/yYDstZSu7eKS7FYfXq2b3DVsOqp9VSDKKzRnFYTWe2MDwMYdND2OpYWfUUB74/gcjoWJ0D6MiOHQaLVrQl82dhqKc79PT0oFbXo7CoGHK5oab2Gb797jgSk64rxk9xWOSgReFhmDwxAOZmXRQLhKB/9tV+nD5zXrExFINFkMLDprN9TzdrqxcCIFfl3r2HrNx8qOvVXMHp6+nDsZ8tXBztYWBgwPrSins7Mxdf7D6IlLQsrvvxiGWHRQn9ow/eRqCfN6ytLNlc6uvrkZqRg6zcu5gQMErjMMpZSdduIjomDldvpGqdd+ikcQgO8oOnmwtMTFRMSyVVevYdRB6JxdkLl3ni1kkrO6xFc8Mwa8YUqIyNGKQHhcU4ejIeh46dYhMkmIvnvY8A3xGaEkitVqPgwd9sbxQbl8DA0nF08Fg/+AwbBGcHO3QxNdGAf1JZxbRSIOtEpZVOssOicbatW4YRQway/LE36miLSZyghU2fhAkBI9Hbpgf09fU1MGprn0GlMmYLQYMzCVBaVi5+PfcHTvz0m5wMJN9LEVitjU55bOTwwXBzcYSjvS3sbfswp9H/G2C11JdyUkVlFUrLHqOk7BEelj7Cnfz7KCouRZ1ajcycPOTeLZActK5C2WA1gDBRqeDu6gQrS3P0faUXrCzM0bO7NVTGxswtrTVyU1FJKdKz7iAjJ48Vz+4uTrDuagljIyOd4svJu4dl67bJBlI2WBTN7s9XYbTPMM3r01KElMcIDH2QIDfcuJ3B8hUBac0lHgOcMcTTHR6uTnCws2WrKx0U0oNpeFWbjlX77Dm+OXQMEYd/1Al0S51khTXW73WsWTqfBUOvTnVNLXt1CosfIievAClpmUhOSUfRw9IX5hLx5Xp2ZvW0ugabd0UgNu6s5ABpIXB1doC5mSlec3WGkZEhLM3NYWCgj827DyK/4C/J92pLKCssGox26OUVT7isHxO1A/0d7VH2qJx9ZDh/6Wpb834p12WH1TiKBbPfxez3prGnrXRT+ms0zf9/A0uJw76mD1hRWG25iQ7qNqxYgD69baBLQm44GaXy6dipX7Bpx/62hmzX9ZcGa9SIIVixcA4c7PqyAG5n5mDO4jVcpxAbVy7ClIkBrOyhL0k8R9i6UOtwWMMHeyAsNAS+3l6sJKJGq+O6rXtx8Uqy5BhoXxe1ayPc+jsywEqfOCiesxoiHzfaB4G+3vAa5M527I1Lm4zsPGzdE6UppOn6O1OD2Xajurq2RXimpiqEBPljsMcAdq+O+l2E7M6iU1AKgkoZm57d0NXSQnOU0hA5bUzJTdGx8ez1adqOH9jOSiIpje71e9I1LFy5SYq8XRrZYTU+dWg6M9p0pmZkIz7hgtZieOvapaDvhW01ylV0xLNh+75mG922+upyXXZYlEv2bVkDT/f+rPilI5pb6dk4m5gk+edDVN5QWUPN0NCA1ZqNv2iXV1S2Wg3oAkFqH9lhSR24M+oELI6nJmAJWBwEOKTCWQIWBwEOqXCWgMVBgEMqnCVgcRDgkApnCVgcBDikwlkCFgcBDqlwloDFQYBDKpwlYHEQ4JAKZ3HA+hfRMWCs1kpPgQAAAABJRU5ErkJggg=="},{author:"lindexi",link:"https://gitee.com/lindexi",photo:"https://portrait.gitee.com/uploads/avatars/user/262/787628_lindexi_1600869623.png!avatar200",extra:"WPF\u6210\u5458\uff0c\u5fae\u8f6f MVP"},{author:"Mr'hu",link:"https://gitee.com/hgflydream",photo:"https://portrait.gitee.com/uploads/avatars/user/100/302533_hgflydream_1578919799.png!avatar200"},{author:"Argo",link:"https://gitee.com/Longbow",photo:"https://portrait.gitee.com/uploads/avatars/user/184/554725_Longbow_1578927507.png!avatar200",extra:"BootstrapAdmin\u3001BootstrapBlazor \u4f5c\u8005\uff0c\u5fae\u8f6f MVP"},{author:"\u5939\u5361\u5939\u5361\u9171\u9171\u5939\u5361\u9171\u5939\u5361\u9171",link:"https://gitee.com/vincywindy",photo:"https://portrait.gitee.com/uploads/avatars/user/313/939875_vincywindy_1602575487.png!avatar200"},{author:"Kane",link:"https://gitee.com/KaneLeung",photo:"https://portrait.gitee.com/uploads/avatars/user/483/1449079_KaneLeung_1600227210.png!avatar200"},{author:"Jerry",link:"https://gitee.com/JerryFox",photo:"https://portrait.gitee.com/uploads/avatars/user/24/73073_JerryFox_1608471117.png!avatar200"},{author:"\u975e\u51e1\u4eba\u751f",link:"https://gitee.com/ffrs",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAB90lEQVRoQ2MUW9D6n2EEAcZRDw/z2B6N4WEewQyjMTwaw8MsBEaT9DCLUAzvjMbwaAwPsxAYTdLDLEJHCy26JOmd3okMKvzCDHc+vmVw3zofJdTxydEitdHFw4f90xjUBEQYbn14w2C7cRaKP/DJjXqYCiEwGsOkBuJ8x2AGBV5BvNpkefgZeFnZ8Sbpz79/Mjz+8hGvOQ8+v2dI3L+WVCeiqKc4hmF5kBhX4MvD5OonRh+yGoo9POJimJgQHi2lkUJptFoiJslQoIbiPEyM3aNJeign6XxdK4ZMbXMGViZmnJHNwcLCwMLIhLce/vP/H8OPP3/wJphVdy8zVJ7cSUyiwqmG4iRdbmDHkKtridfDMNsprYeX3b7IUHhs68B62ENWjcFDTg0cg7iAraQCgwQXD94YfvHtC8Ph5w/weubIiwcMK+5cGlgPE2P7aKE1lAut0RjGEgKjSXqoJul2c3eGMGVdgqmaWvUwyCJK62KK6uF+K2+GKFV9gh6mVj0MMofSupgiD0eo6DHYSCgQ9DC16mGQRZTWxRR5mKBPoQpGC62hWmiNxjCOEBhN0sM9SY+4uSVi8zo91NGlWqKHR4i1Y9TDxIbUUFU3GsNDNeaIdfdoDBMbUkNV3WgMD9WYI9bdozFMbEgNVXWjMTxUY45Yd4+4GAYAu+YF8y0FaaoAAAAASUVORK5CYII="},{author:"sunkaixuan",link:"https://gitee.com/sunkaixuan",photo:"https://portrait.gitee.com/uploads/avatars/user/131/393772_sunkaixuan_1578922542.png!avatar200",extra:"SqlSugar \u4f5c\u8005\uff0cdotNET China MIP"},{author:"wangbl",link:"https://gitee.com/blwang",photo:"https://portrait.gitee.com/uploads/avatars/user/1744/5233096_blwang_1602572569.png!avatar200"},{author:"yzyk126",link:"https://gitee.com/yzyk126",photo:"https://portrait.gitee.com/uploads/avatars/user/237/711378_yzyk126_1600742932.png!avatar200"},{author:"Awxtggg",link:"https://gitee.com/awxtggg",photo:"https://portrait.gitee.com/uploads/avatars/user/115/345036_awxtggg_1578920749.png!avatar200"},{author:"Rayom",link:"https://gitee.com/Rayom",photo:"https://portrait.gitee.com/uploads/avatars/user/698/2094938_MartinYl_1578966088.png!avatar200"},{author:"rockn",link:"https://gitee.com/rockn",photo:"https://portrait.gitee.com/uploads/avatars/user/163/489708_rockn_1578925472.png!avatar200"},{author:"\u5fae\u7b11",link:"https://gitee.com/z.smile",photo:"https://portrait.gitee.com/uploads/avatars/user/193/580831_z.smile_1578928256.png!avatar200"},{author:"db300",link:"https://gitee.com/hawkleng",photo:"https://portrait.gitee.com/uploads/avatars/user/159/479406_hawkleng_1578925163.jpg!avatar200"},{author:"frisktale",link:"https://gitee.com/frisktale",photo:"https://portrait.gitee.com/uploads/avatars/user/404/1214273_frisktale_1607680117.png!avatar200"},{author:"\u4e09\u5bf8\u4eba\u95f4",link:"https://gitee.com/zhouhuasheng2020",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAABiUlEQVRoQ+2YsUoDQRRF78BKstlFv8ZCEYKFCJIihRgkiIiVjUUav8HGwsZKRCRIxCKFCGIhNlr4IdbKJpvgwop2okJ2dnwPxpt63rtzzxlSrHluLOT4Rz/Dwp7bpmHPBYOGadgzAnzSngn9VoeGadgzAnzSngnlnxafNJ+0ZwScPOmZ3T2ES40/RZPeXuHlcL90BgvbIIzXt1Cdr9uMTjwzerhHcn4y8fnfDjoxXPoWggtYWBC2ShQNq2AXDKVhQdgqUc4Mh4vLmN7pwIQ1p0XydIjXowOkdzdO9rKwLcbK7Bzi1iZMpWq74se5fDxC0jvF+OnRyV5nhp3cRmAJCwtAVo2gYVX8AuE0LABZNYKGi+CP1jYQNVswwVSRMeuzefaGQb+HwcWZ9Y5ShuP2NqLVtmzhyy6S7rFO4dpK8/PzrAkC6wsUGcyzDB+fa4fX/SJjX86WMmydqjjIworwRaJpWASzYggNK8IXiaZhEcyKITSsCF8kmoZFMCuG0LAifJFoGhbBrBjyDtay2gX6ZzdZAAAAAElFTkSuQmCC"},{author:"\u5ff5\u820a",link:"https://gitee.com/miss_you",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAGH0lEQVRoQ+2Ze1DUVRTHv7/dZRFfvFRggQVhgeWdTyYx1LJsqhk1yymtcTJTi+ll5iNNs/JVZjH5mEr9o5qScappxkonBx9hiBIqIsjyXJRFROX9WPdBc+6wO4iL4v5+v50d/N0/2Xvv737O99xzzzlwqiN7uvAADU4CHuBqSwoPcIEhKSwpPMAsILn0ABP0DhxJYUnhAWYByaUHmKBS0HK5S6+IGIcFIbFQyGT456YBiwqOuNSpXAr8crAWH2gmYLhCySBrjW1YU5KDw/V6l0G7DPjV0HgsjxjLYDutFgY4SCZHnbEdG8vO4JerZS6BdgnwyshxWBgaj6FyDzSbb2FbRT68FUosCUtkf2syG7GjqgC79AWiQ4sKTDBbtKl4ZtRoeMhkaDQZsb3yLPZevsjASPVlo8fAx8MTJquVqbxedwqtFpNo4KIBP+wbhI+iUhA/zB9c933dXJaH6o4WXOlsZfeXxpxADVZrxiPIcwiom1ja1ogNpbk4duOKKNCCA5OqKyPH4/kgDYYplAziXHM91ulOYXZAJF5URSOv6RqLzjYlx3qPwhrNBKT4BDLjGK0WHKrX45PS03bDCEUvKDDBvBmeDLXXcHZwCk77DSUgZQkuI24KZgdGsrP/drUcbxcdt3PYDDVXFcXuNY0W8y38Va/Hbn0BdG2NgjALAvxcoAavqRMQO9QPco7r0zWjh/hgV8I0No9U/Ka6EFvL824DmeofglWR45HQfRXoxw6LmXlFZq2OGYrP4AVMii4KTUDUEB8GalPlQG0ZA3EUfB71D8FnsZPZnaXovF6XiwO1pXcwpIclYbE6ASOUXvbfLF1d2G/QYcWlbKeZeQHTXV2iToCnTM4UowTiy8qz93Q/WrcgRMvUsrm7IwJybXq75wRp4OcxCCVtDVh6Ieue+9/NGryA6UB7k6YzF86oOoechlrMGBmGGSPVkHOyu6qg4DiYuxz/l8fSZcXh+mp7BkbfWRgah4r2Zhy8Vum0urSQF7CjL78fMRbpYcns3XV20Ju8U38en1fkO7tFn+sEB34rPBmL1YlOAVOqqeBkLLp/UZEvSuYlOLCzkswMiMCmmEks6zrffB1z8/8UJeNyC2C6o/uSpyPVV4V2ixlbyvPs6aezBuxrnUuBKaBN8w9BRuW52zKo99i9T4JSJseJmzWYd/aQ0Jz2/VwG/IIqGms1E5nLUqq5rOgEe14ordwZPxVqr2G4fqsDqy6dZNmVWEM0YEosJvoEQMZxuNhyAy1mEzLi0zDJV8VYiltvIr3wKOYFa/GSKoYFuX2Xi1jhQIO84ZWQOHxbfQFZAhYSggA/PkKNrdpUNJqN+LHmEjs4pZsbtZPgycntTwzd1T1J0zHZT8VybYJ+o/AoM8ZTo8KRadCxQEVr10WlwF85yD7HrXJpattQxkWDat2PS087BKbfSXmb0j2hewP9NOZJpPkFsz2zu3tfQtTJgij867inWWlHd3B5cTb+vl7dJzAB9CwiGkxGfFp2muXI1BmZr9Iip7EWPxt0WKuZwAoNyqF7V1fO3nHewFQMbI9Lw0ilF3Ibr+LZ//5gZ3Hk0j0PSeuWhiUi01Bq72dti32E1ctUFq4u+RdNJqO90KBkhPL0HVXnnWVl63gDUwtnvioGVnSxcm9T2Zl+ATs6NbnxFL9gXO5sZUUCRXPbk0UFCnVJVhRn8wpivIAjBnvju8THoB3qy9o2rxceRX7TtduAB8sU+L6mmLVj7zZorx8eegLhXsOR11SHmXkH7dO/jp+KWQER4DgOB+sqsbQwy2mVeQFTd+Pd0WNYwvB7XTnSC4/ZD0KNO4rc9O5WtjdjrS6nzz4VRe/N2lRQekmBrLeB6M7TtaGovkGXyyvl5AX8VVwaZgVEot1qYgr27kbYgtn9yGHobMM7RSdwssFwP8v6PZcXMH2FMqUUnwDs1l+446PUufxQM5G1a2wdkb5ORpVxVXszC0xiNuV5A/fHtOSyU/yD4SVTOJzeYTXj+I0aXq7an3MIEqX7+yF3mecShd0FVlLYnZQQ6yySS4tlWXfZV1LYXZQQ6xySwmJZ1l32lRR2FyXEOoeksFiWdZd9HziF/wczEAPmEWi9EgAAAABJRU5ErkJggg=="},{author:"\u84dd\u8272\u5929\u7a7a",link:"https://gitee.com/lds2013",photo:"https://portrait.gitee.com/uploads/avatars/user/114/342448_lds2013_1578920663.jpg!avatar200"},{author:"1024",link:"https://gitee.com/co1024",photo:"https://portrait.gitee.com/uploads/avatars/user/627/1883684_co1024_1600418760.png!avatar200"},{author:"\u5f90\u5fd7\u52c7",link:"https://gitee.com/xuzhiyong",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAFCklEQVRoQ+2YSSitfxjHv655FguLK8MCRckCUZIhC8MCKTOFhCQZkmSIuKQQrmS8ZIrMhG5XshCRRIbFzQqFhQWFuPx7fnVOB+ccrvd9ne75v7+ycc77nt/n+T6zBoAn/I+Ohgis5mqLCqu5wBAVFhVWMwuILq1mgr7CERUWFVYzC4gurWaCiklLEJcOCgpCXV0dlpaWUFxcjKurK4WO4+TkBFdXV2hqauLw8BAbGxuCOpkgwIuLiwgMDMSfP3/Q1NSEvLw8hRCzs7MICQnB09MTRkdHERUV9W8Bl5eXo7CwEHp6etjc3IS/v79ChbOzs1FdXQ1DQ0MGeXl5ifz8fHR3dwsGzavC5Mrt7e2wsrLC+fk50tPTMTExIffy5MojIyNwdnbG2dkZ7u7uYG1tjZ2dHcTExGB/f18QaN6ACWBoaAguLi64vb1FfX09i19FR+L2BErfJWhS28DAAL9+/UJERITS2P+oNXgBNjY2xvj4OAICAvD4+IiBgQEkJSUpvFNtbS3InXV1dZ/B9fb2Ii4ujj23sLDAlFaW8D4CzRlYFpYu8JY6VVVVyM3NZTH+0n1fvmtlZQWZmZm8ujcnYHLjtrY2eHt7M2MTQGxsLLsglSUbGxvmrmtra+zzmpoapqy+vj6Oj4+RlpaG+fn5Z0LRO3t6euDu7g4NDQ0cHR2hrKwM/f39HxGU38aDElRycjKrobJqUWbu6+vD169f8fv3b2YESmDx8fHQ0dHB6ekpy+SKIGQNSdCUEyYnJ1FQUMAMxeVwVpiy8M3NjVRZusz09DRCQ0NZ5m1sbISXlxd8fHyYYm/BSmDIvbu6uhAeHg4tLS1p2RobG2Mh8dHY5gRMt/D19WUlSFJGZGvr+vo6U5nKFB0yDCU1+nvv2draYp2Yqakpe44qAXnKRw9nYNkfJlck17O3t5fW4ejoaERGRuLg4AA/f/5kSYjc+r2HVO7s7ERDQwODpndxqdG8Aktq68PDA5qbm1lLSUYICwtjMW1iYiLtmyXAdnZ2LDaNjIxYazkzM/PMFnz317wBy5abk5MTJCYmsuHhrZOQkIDv379DErOpqalvPcLpc16AKQN/+/YNZmZm7DJqDSzbP0tMr7bAsrBUK7e3t+Hp6flK4b29PRbLXA8lMK4uz8ml5+bmEBwczOZe6p/v7++RkpKivsBUYqhdpHpL0w2VDnnAypT9p5IWZdacnBzW+1LLR/VSGTC1kxYWFqisrJR2SoqAqaTRyMhXDy0xOieXfqmcMmCK7cHBQdja2mJ1dVU6cMgD7ujoYGXt+vqazdQ0oPB1Pg34x48fIDhqSmgeLi0tZQzygGVrOrWtRUVFvK19PgWY2ktqLszNzV/tuRS5dEtLCwsPmpspXLKysjA1NcVZaMGBKc6p43Jzc5O7pFOWtCQbEBo/Fc3Pf2sBwYFl1zbyVj/KgGU3IDRa0gBClWF5eflvOaXfFxTYwcFB2nIq2kZSlqeYpeWdvMaCRksymp+fHy4uLjjHs6DAjo6OLDnRsk6yb6blgIeHBys5X758YWsgUpKWBbS1rKioeKUedWklJSUYHh7mHMeCAlPsUjmytLSUXlRSul5SCb2P/vQ6LPnBjIwMln21tbXZv2iLsbu7i9bWVumy78MB+o4HeVX4Hb+n8q+IwCqXQOALiAoLbGCVv15UWOUSCHwBUWGBDazy14sKq1wCgS8gKiywgVX+elFhlUsg8AX+A5BcJC4Cp1g9AAAAAElFTkSuQmCC"},{author:"Coco-wangLI",link:"https://gitee.com/coco-wangli",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAADjklEQVRoQ+2YW0hUQRjH/3tz3Yu7ul5YXZUSK8vKRE0JtaBStLKXCoKigiLoQkQPIQbVW9KViNR6iogg6KnAisSH7OLlQTIo0UgyNVtX19va7upuzGwrkaln84wH1zngkzNzvt/3+87MfiPLrGzzYhE9Mg4c5La54SAXDG6YGw6yDPCSDjKhU3C4YW44yDLASzrIhPJNi5c0L+kgy8C8lfSmpTpsW2bAWnMojGo5FHIZTaVrwgubYwINXQ48eG/HlwEX0xQzB86I0+BUThRWRKnxm3FaoBGXB09ah3DtTR8zaKbAJSkGHF8fCZNGMWmztc+Jpu4xdNhdUMplyIzT0L8onRLEuccLVLcN40JtLxNoZsAbErQo2xiDGJ0S5Fr0o9WJK6+taOn9OQVEq5KjNC8aBclhtApImd9rHsCdpn7RoZkAE4DKHRasjFbTgNtsLpTVfJ/x+yRzLheakWXRUtOdg26ced4j+jfNBPhgegSOZJgQopBhyDmB8jorXrSPzGqrIFmPs7nRMKgVcHt8lqsaxbXMBPj2dguyLBoKWPd1FKere2aF9Q+oKrEg2RSCDrsbLz+P4GGLXfBcIQNFB14VrcalrWbEhqmYWRICNt0Y0YGLl4fRsiTfJDlmyl9Z8ax9eC4xijpXdODDGSYcSo+g3691dBzna3vR2DUmatBzWUx04KNZJhxYFwGVnAPPRYxoc0U3vGe1ESeyI6FRyhdHSW9J0qM033eWLopNK9Gowo2iOCQYfcfS/WY7KhptgkuSbHp71xhpB1Xf5UBFQz8cbo/g+bMNFL2kyQuvFsYif4mOvpvs0Meeds0Wx+T/rxfFIjfRN/dTnxP7H3cKnitkIBPgXalGnMyOpGdxID8tSc9cmhdDu6txj5f2x7fqhVeHZMAE9GZxHNLMof/dPHQPu3Gupvef3ZUQsHn7peV/0Z+NAGkP22xOauttp2NKLKSFJK1kTrx2YbaHfiLSMe1LC6elTR6yibXbXHj3zUEvAMJDFbT5T4/VQB/iGzPh8aK6fQQXF9oFgB96Z4oBpF20GFS0z53pIcfYow+DAe3qgZY3k03r7yCI4d2pRmxO0iPeqIJOJZ+83/Jf4pEj6G5TP36MjgfKEND4eQEOKCLGgzkw4wRLvjw3LLkCxgFww4wTLPny3LDkChgHwA0zTrDky3PDkitgHAA3zDjBki/PDUuugHEA3DDjBEu+/C+g49U0Ph0CkwAAAABJRU5ErkJggg=="},{author:"Executor-Cheng",link:"https://gitee.com/Executor-Cheng",photo:"https://portrait.gitee.com/uploads/avatars/user/2178/6536098_Executor-Cheng_1612117301.png!avatar200"},{author:"Halley",link:"https://gitee.com/Halleyxx",photo:"https://portrait.gitee.com/uploads/avatars/user/2770/8312251_Halleyxx_1606922761.png!avatar200"},{author:"zergmk2",link:"https://gitee.com/zergmk2",photo:"https://portrait.gitee.com/uploads/avatars/user/745/2236354_zergmk2_1614155445.png!avatar200"},{author:"MR.Zh3",link:"https://gitee.com/www111",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAACtUlEQVRoQ+2YT0gUURzHv+M6M8SuqIUVRMeIEFpIKiKv3bxVEIoQRdeIDlvBIiaC4aljHYoklKC8de1UEBUSe5AKob+WVtAG7tbOzG4T79msM+Oor9iQ3/O3t2XfMu/z+37e+715xlxPt48N9DEYWPO0OWHNAwYnzAlrVgFWWrNAl+FwwpywZhVgpTULlDctVpqV1qwCDVW69ewFbDrSUy+RX/VQvjeO0vgNpbKZu/ag7eIQUlu3y/F/+3+Vh/xXYDEBtzCFb/lzKnNB+mgvMr2nYFg2XeDal3l8Hx2E92p6Tej2/Ajsg93/bMiaDwAaewEQVtr3PBimCd91UbpzC+W7t1edT0Rn/xdgNNFSujr7Tq5Foafz7DGKQ7lVgQOdAQO1r5/RvGMnLWB3uoBUxzYJraJ1+8Ao7P2H5FgBbHVmiQEXpuBXfso16bsOShM3UZ6cSEzZ3N2JttygLI6wwbAsWNkuesDO86f1Xdd58gjF4UuJwOnj/cicOCl/E+vdznbRBF4Yu17vq1LrKwPwZl4sgw7rLHb0lv4zNIFF/w1azUpax3UWm9vm4at0gQNdxbpM0jqus2hfpIHDCdbmZlG8nEP144e61nGdxQGFNLAgC6D8SgULY9fw4/6kBI7oHNrUyAOHta48fCCPmuKzpLMfaVvkgVfSOqJzaAcnD5yktTfzcumwEevRWgDXtTZNCK29t6//HDaiOoviaAEc1rr6/g1q859gHzi8eM6OHUi0AI5o7TrytbEp05LYm7UBzvSdRvpYH4xmc/FGI9amguasDbC1dx9az+eR2tIh2ZIOItqs4Xh64nu4J4ffKMgkrHKntN5jGnprud4wKs9nYJUqUR7DCVNOT2XunLBKlSiP4YQpp6cyd05YpUqUx3DClNNTmTsnrFIlymM4Ycrpqcx9wyX8GxhQyiMyPuNfAAAAAElFTkSuQmCC"},{author:"Robin",link:"https://gitee.com/robinloveyou",photo:"https://portrait.gitee.com/uploads/avatars/user/2730/8192517_robinloveyou_1614528468.png!avatar200"},{author:"Scrmy",link:"https://gitee.com/scrmy",photo:"https://portrait.gitee.com/uploads/avatars/user/2190/6571533_scrmy_1602348016.png!avatar200"},{author:"ThinkCoder",link:"https://gitee.com/ThinkCoder",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAABDklEQVRoQ+2YsQ2DQBAEl2LIKIAcOqEHiqAGSoEKSAnoxpaIbIxI/OuzniEF9ridvZOeQtJDN7oKGs6cNoQzBywIQzgzB4h0ZkA/2oEwhDNzgEhnBpSlRaSJdGYOWCI9TZOapvnKqnme1bbtVxpnL9NwCkv7vldVVadSZVmqruv93rZtWpbl9Ll1XTUMQ4rPedOwEL76ynEc1XXd/ogrtlf1aTh5hg6CEDZsYiL94gAzzAwndoClxdJKHKmDHEvL66/EDDPD3owxw15/mWHLbxwODxwe3IP7R/o/39LRvdNwNAF3fQi7HY7Wh3A0AXd9CLsdjtaHcDQBd30Iux2O1odwNAF3fQi7HY7Wvx3hJ/NRxgHWkOqQAAAAAElFTkSuQmCC"},{author:"ZHAOs",link:"https://gitee.com/festone",photo:"https://portrait.gitee.com/uploads/avatars/user/127/383015_festone_1578922155.png!avatar200"},{author:"\u7ea2\u767d\u73ab\u7470",link:"https://gitee.com/kgsl",photo:"https://portrait.gitee.com/uploads/avatars/user/255/765748_kgsl_1606196628.png!avatar200"},{author:"harryckl",link:"https://gitee.com/jack_ckl",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAABLElEQVRoQ+2YMQoCQQxFZ2sLwVbBWizEg2jjhQTv4F28gHgJsVestLFSkC0EcZ2EDGSzb+uZbPLfz0x2q8l690wdeioKDk4bwsEBJwhDOJgCWDoY0K9yIAzhYApg6WBAObSwNJYOpkARS2+W07SaD99SHS/3tNjus2TT7ssKXi+iYIlav9ZqSWn3SXKGsEQtCNcKaK2p3SeBhKUlamFpLK33i2RgkbyleA9Lkvlc29qCz7dHOpyuWXWPB700G/XFI2lWcEZLiUx/1mrvU+0+SerFe1jSixSc+VkJ4QYFsLTEHoyWjJb802rsmNZeSxbnQKkYRU7pUslaxKVgCxU9x4CwZzoWuUHYQkXPMSDsmY5FbhC2UNFzDAh7pmORG4QtVPQcA8Ke6Vjk1jnCL6gtiwgepIm4AAAAAElFTkSuQmCC"},{author:"jixinyu4",link:"https://gitee.com/jixinyu4",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAACLUlEQVRoQ+2UPUhbcRTFz1MXrVR00TREpeJHNdQ66GCgtJNjOolDFQdBUBEqxUGKVgstNvUTGw1IgghGQVJFVMggDlJwqQ4Ojn5VKaWDxe/E90qyFFF4hveuf/h733z/l3PO79yn2J+/0nCPPoUNS06bCUsOGEyYCUuWAFdaMqDX7DBhJixZAlxpyYDyT4srzZWWLAHhlZ4ZG0ROtg2hUBjeiQCGvH7SiNkwabw3LGfCXGlzO8c3bG6e+tv4hvmG9VsSywTfcCxpmTHLN8w3bEaP/u/gGzY3T/1tUt3wiKsdxUX50DQNnwZGMRdcvpaAVIYDvn7kPs7C6dkZ+jzj8AcWrhjOsj2Cu/sdMq0WnJ9fwO2bhNf/Tb8WBiZIb9jzpQPlpc+gqhqm54L40DtyReqL8lJ0tjYiLTUFh3+P0NUzjODydwN29J+SGn5TX42aSicSEuLx6/cfvHe5sbL6I6rqQVIiOt42oOKlA3FxCrZ2fqKp7SO2d/f1VRuYIDX8tDAPn9tbYLWkRyVGKK5vbEYr/iQvB5nWDCiKgnD4EhOBebi++gxYud1TUsMRCZXOCjTXvUbKw+QbFamqipXVNbR29eD45PR2qg1MkRuOaHOUlaC2ygl7QW60yhGqF6EQdvYOMLO4hLGpWQMWYnt6J4Zjk0Q7zYZp8xW/nQmLZ0CrgAnT5it+OxMWz4BWAROmzVf8diYsngGtAiZMm6/47UxYPANaBUyYNl/x2/8BvCtgqNy/NWQAAAAASUVORK5CYII="},{author:"kusaki",link:"https://gitee.com/kusaki",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAACqklEQVRoQ+2azWsTQRiHf5uEbFrE1mNTVMQPBP8HxYNH/wHpTQ+Fgl/0UFARFbEIFXsQPw6eelCEnsSLJ6UHQdCLYmmbtmnsh4bapqbZ2a+M7KyNtlsKwszusL57Dm/meZ/fzrwTYtTGOjj+o8cg4JTbJsMpFwwyTIZT1gGKdMqERnDIMBlOWQco0ikTSpsWRZoinbIOKIl0ruM42o48hpHvAvfrYNP9cL8/27F1uT2nUDh4Dxlzr/gc99dgV4bgzA9LbbkWwBFYrwZ77g6cxUdSYYNiiQNHYVdgl2/BWXoqHTZx4AisWwUr34D7bUQJbKLAEVhnCWz2Otzqc2WwiQEL2EPDyOSLAq7pLICV+uH9eKUUNhHgCKxdAStdhrfyWjls7MARWKsENjMQG2yswNxd3hxjNg02dR5ebSwWsxtfEsuxZFfuIl/sbb2z4YvLYM/fhz03mC5gcAe8yWBkdwfzE7jfgJFtD0aAcLOaupCuSP/Rx+Gvf4bzdQjmgdst217tLawvZ8QIGsejPNIhBIdf/wBrsg/NxjjM/ddgFvuATAHgLpzFJ2AzV+LgVT9aCti1d7BKlwSs2Cmzu9B2dAS5zhMi2txbBZu9qnTCinXT2u62tPWICuJuTZxtNUWVbuWR3ul6uDnaPtzqC1iTvapYw3Sp+AfAv9yH24+NItd5Moy234BdvqnkWph4pDcWEDSncPghMmb37+O5DGviHPyf75WYTtxwQGXuG4DZfTHctcHhrb6BNd6j5KjSAjiA/jvaYgpbeCB+CJD9aAO8NdrcrYqjzFt+KZVZG+BotAG//hGNT6elRlsJsFQlkosRsOSGaleODGunRPKCyLDkhmpXjgxrp0Tygsiw5IZqV44Ma6dE8oLIsOSGaleODGunRPKCyLDkhmpX7hfFUiwPmyFfswAAAABJRU5ErkJggg=="},{author:"qd98zhq",link:"https://gitee.com/qd98zhq",photo:"https://portrait.gitee.com/uploads/avatars/user/205/617984_qd98zhq_1600045204.png!avatar200"},{author:"sitax",link:"https://gitee.com/sitax",photo:"https://portrait.gitee.com/uploads/avatars/user/2891/8675744_sitax_1612664137.png!avatar200"},{author:"snowfox",link:"https://gitee.com/thesnow",photo:"https://portrait.gitee.com/uploads/avatars/user/569/1709119_thesnow_1608992211.png!avatar200"},{author:"sourcehome",link:"https://gitee.com/sourcehome",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAADjUlEQVRoQ+1ZyVJaQRQ9gIKMIsggCoIgjrFMJZW/zyqLVGVjVaIlCoJMMggyROYpdVshlhMotHmS7g2L7tfvnHtO3773Ifv67XsP/9GQCcJTrrZQeMoFhlBYKDxlERCWnjJBH9ARCguFpywCwtJTJqhIWsLSwtJTFoE3sbTDboXdaoFWo8aMQgGZTMbC2O120Wy1cFUsIZ5MoVKtcQ8vV8IGvQ7+NTfod9hotztIpNIIR+PDlo41z40wqbmzsQ6dVsMA9no91BtNVKpVEDkSWaNWQ6NRQyGXDxSPJVNcSXMj7Pe6sWy3Mfs2mk1EoglcZLIP1FGplNhe92HBaGBzZPGTUASX+auxlHzqYW6Ev3zcY+rSOY3Ekogmkk8SIDfsbvrZGaeRuczh6CT0fgiTWtt+H1RKJVqtNgKh8FDFfJ5VOB125ojrShU/Dn6+H8JGg56dX7Jrp9PF2XmMJaTnht26iA2vhxGuNxo4DoZRKv+eOGlulv60t4N5g54BrtXrCEaiyOULEyfw0g25EV5dccDjWoH8NgNTlq7VGyiUSsjm8igUyy/FOpH13AgTuk3fGuw2C+S3hcZdxJ1uF/V6A8VyGan0JcrX1xMhNGwTroTp5Q6bFa4VBzTquWex0LlNpjKIJi6GYR5rnjvhPjrzghE2yyLmDTrMqVSD8vI++mKpjJOzCLcy880I3yWmUChgNZtgNhlZ2UnXV7++pnVUW/86PkWn0xlLzcce/ieE7wOxmE3wuJah02rZFBENnceYxSc9JEGYSN2vti7SWVawTHpwIfx5fxdajQbUBEZiiZET0eb6GktyNArFEg4OjyfNl8+/h/u7WzAZ5xnYTC6Po0BwJOBbfi+WrBa2lhqNQPCdKOx1u+BaXmKJqN1u4+w8jmT6+fNIlv6wtcGur5uGY3RnjBTN20VcLE2gqfvp98JEms5kJJ58NPOaFozwuZ2DpEXNw2HgFNVa/SVcRlrLhTC9eclmhdfthHJ2dgCEsi+Vl5VaDb1uDzMzCnbW51R/r6VWu43wCI4Yid0ji7gRpneRct5VJ/S6m+tm2KAmg6yczuaGLX31PFfCfVT0Ec+6aGYWp494/Yaif+eS6tT0J1IZLsXG3ei8CeFXy8HhQUGYQ1AltaVQWFJycAAjFOYQVEltKRSWlBwcwAiFOQRVUlsKhSUlBwcwQmEOQZXUlkJhScnBAYxQmENQJbXlH5Zf8LRFMPwyAAAAAElFTkSuQmCC"},{author:"wnyuc",link:"https://gitee.com/wnyuc",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAEgElEQVRoQ+1Za2hURxg9d5/ZbLLbxM3GmERFi8YQgqUGUTQSqogQRRELIq2IoBBaLFgKisVKpS1VQUF8oYj2h9BiFY2IqIjPtqj4QCRqK1FjzKsbE7N57OPeMjfMOu7du9ndO6buOvdPyGa+ued85zvzfbORpux5pOA9eiRBOMPVFgpnuMAQCguFMywDoqQzTFANHaGwUDjDMiBKOsMEFYeWKGlR0hmWAVHSyQiabTXh4KISjMuzISwrOHKvCzv+6NDdorzAjp/mjERRrlVd4+sLY/PFNlx+4teNWV2Vj+WT82A1SXjcGcCKY03oDcrJwHxjrWGFt80tQvVYp7rppUY/1p55oQvm0wo3vpg6Ag6LSV0TlBUcut2Jvdd9ujE/zB6JOeNz1L+f/acH68+1pEyWBBomzCrQ+DKA5b/rK/DtLC/ml7kgMZCHStKRJaPxYb4toeQkkgnDhGeOcWLDLC/yHeYhS/SXxaUo89jR7g+p2AqcFjzrCuKr08142hXU4E1m70TIclGYbEJVCIQVHLzVif03tSXKgr/R3KfimzLKAX9AxtZrHah/0K3B/PnkPKz6OB92i4SGjgF8dvRZorx01xlWmOzM+qz+4StsutCqeSEtfbMk4ej9LvXvi8vd6k/y+89X2jUxG2sKUTshF+Q/BScbuvH9xbZ3gzCrxN3Wfqw83qQBRg83qihZ8PV0D5w2E/RiqAX6QjJ2/vUvfr03mCgjDxeFp5Zk47saLzzZFrT5Q9hwvhW3XgyWLXlGu63YPm8USt3WiGfJ5/Qz4umNF1px/fnrmKpiBzbVFKo+j7VnqqS5ECYvp2qQHrntWgdONLz2ZO1EV0RN9lSmqg+EFOy76cPh250RHmwL06uAVEhzI0xbjqJoPfnNjALVr2Hlzb7LtrToHru+2ouFk1yItV8qRGkMN8Ksj/9s6sWXp5ojuA4sLEFlYZambbEnd/QURWPineKpEOdGmPUc21s/KnJg8yeF8Dot+NsXwNLfnkZwsqNp90AYP15qx7nHPWBH0Hh9+n8lTF5OVWHBs16MNRrSlsbO4gvKXFg73QOSkOhqSYUkG8NNYbIp9V2QGUCotwMxDiYSw1qBHmjU84oy9IUk2QRwJRxLTXacjG49BCxrBTqLb51bpH7OVkqyxPTWcyXMeo+Mgvtu+CJzdrzWwh5qW662o65qhNqzeVwHo4lzJUw23z2/WJ2RybBQ/+AVllV+AKt5cJyMNT6SGFrCxApkXe3EXLjsZi7XwbdOmILvD8m409KPaaXZcS8IBBC1QpbFhLst/Sj32iHL0AwjPMqau8J0qrJZJPQGZLizzHGvgIQEa4WegIwcm2nIq2aq5LkTjv4ahwAjM3Jd/fO4GHfVFqsHFX14XQffekmTF7DgE/mui8SsmebB0go3zCaJ63VwWAiz4BNtLbPH5WBddYF6WPG8Dg4L4VT9NRxx3D08HKCNvEMQNpK9dIgVCqeDSkYwCoWNZC8dYoXC6aCSEYxCYSPZS4dYoXA6qGQEo1DYSPbSIVYonA4qGcH4H5hd4UNLnYN8AAAAAElFTkSuQmCC"},{author:"zhoujiawu",link:"https://gitee.com/jgszjw",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAACgElEQVRoQ+2YS0hUYRTH/7fRScxqgtR0QLQnaRhMkSg+JsQWRS9mU27EVSG4UFpELVzpKmjRxtqUi0QxKRKHWohPBmoxlJhgaRNBKpFYKJPvG/eCMCjFN/K9up67Pt+55///nfPd77tG2pNGE9voMUiww2kTYYcDBhEmwg5zgFraYUA3ySHCRNhhDlBLOwwobVrU0tTSDnNAWEvfL7qAyiMnt2TX/PISbr95hY6JkS2t/9ciEszL0muH81F8IJspnWEAhelZ8O7aY8fPLv5GfSiI4NcxpvXxBAkjHE8RD4ovInDwBFyGgcXVFTSPvkVTuC+eFMyxygXf8flxM/cMdroSYP0vHpyKoLq3E9Yci3iUCi73HsK9ovPITN5taxud/Y4bAy/w8ecPEVrtnMoEH/Xsx8PSK8jdl2YXMh2dR32oGz3fJoSJVSr4UdlVXMo+DgMQPrexDiohHDu3q6aJzs8jqB3qEkp2Pbl0wdZhpOF0OTzuJLuGdzNTCLx+KmyT2uiiVMEb53YyOodboaDwuVXS0imJbjw+G0BJRo49t7+WFtAY7kPLWFhKK0tvaWtua/IKkLjDBWtu28eHURfqlipW2i5ddcyHuz4/9rqTpBwulFwe1l96KtWL5tLLyErxSDtcKBOsy9xK27RkXgpYNwNhn6XYuV0zTTyPfEDN4EvWuoTFCRGs4lLA6pAQwe0V1+HPzLFriK4so38yEvdJamj6C9rGh1l1MMcJEfzsXCVKMtj+dvyt0tZP74V8p0kwc2/8p4FCCOvsBQnWmQ6P2ogwDxd1zkGEdabDozYizMNFnXMQYZ3p8KiNCPNwUeccRFhnOjxqI8I8XNQ5x7Yj/AezvE3kLX/VvwAAAABJRU5ErkJggg=="},{author:"zxyyyg",link:"https://gitee.com/zxyyyg",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAACgElEQVRoQ+2YS0hUYRTH/7fRScxqgtR0QLQnaRhMkSg+JsQWRS9mU27EVSG4UFpELVzpKmjRxtqUi0QxKRKHWohPBmoxlJhgaRNBKpFYKJPvG/eCMCjFN/K9up67Pt+55///nfPd77tG2pNGE9voMUiww2kTYYcDBhEmwg5zgFraYUA3ySHCRNhhDlBLOwwobVrU0tTSDnNAWEvfL7qAyiMnt2TX/PISbr95hY6JkS2t/9ciEszL0muH81F8IJspnWEAhelZ8O7aY8fPLv5GfSiI4NcxpvXxBAkjHE8RD4ovInDwBFyGgcXVFTSPvkVTuC+eFMyxygXf8flxM/cMdroSYP0vHpyKoLq3E9Yci3iUCi73HsK9ovPITN5taxud/Y4bAy/w8ecPEVrtnMoEH/Xsx8PSK8jdl2YXMh2dR32oGz3fJoSJVSr4UdlVXMo+DgMQPrexDiohHDu3q6aJzs8jqB3qEkp2Pbl0wdZhpOF0OTzuJLuGdzNTCLx+KmyT2uiiVMEb53YyOodboaDwuVXS0imJbjw+G0BJRo49t7+WFtAY7kPLWFhKK0tvaWtua/IKkLjDBWtu28eHURfqlipW2i5ddcyHuz4/9rqTpBwulFwe1l96KtWL5tLLyErxSDtcKBOsy9xK27RkXgpYNwNhn6XYuV0zTTyPfEDN4EvWuoTFCRGs4lLA6pAQwe0V1+HPzLFriK4so38yEvdJamj6C9rGh1l1MMcJEfzsXCVKMtj+dvyt0tZP74V8p0kwc2/8p4FCCOvsBQnWmQ6P2ogwDxd1zkGEdabDozYizMNFnXMQYZ3p8KiNCPNwUeccRFhnOjxqI8I8XNQ5x7Yj/AezvE3kLX/VvwAAAABJRU5ErkJggg=="},{author:"\u4e09\u91cd\u95e8",link:"https://gitee.com/zero530",photo:"https://portrait.gitee.com/uploads/avatars/user/574/1722306_zero530_1578958528.png!avatar200"},{author:"\u5353\u601d\u79d1\u6280",link:"https://gitee.com/joricetech",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAACmElEQVRoQ2NUX5fwn2EEAcZRDw/z2B6N4WEewQyjMTwaw8MsBEaT9DCLUAzvjMbwaAwPsxAYTdLDLEJHCy26J+nVDnUMSrySDPc+P2cIPdBE9wRFdw9vcWllUOGVYrjz+RmDz57qkePhL3++Mzz9+oZoDz/6+ooh9+QUotXjUjhgMUyqy6mVIgbMw69+fGA4/uoa0f5+8eM9Q//VNUSrH3QxTK0YIzUEqBrDEpyCDMbCagwsTMw43ZGl7scgzyPO8PDLS4ZpNzfhde/f//8Ybnx4BC7gqAWo6mF/OSuGOv1YBm4WDqq47/e/Pwyzb21jmHR9PVXMAxlCEw9zsbAz/Pz7mwEUQ+QAZkYmBnZmVoY///4ODQ+zMbFQ5NA8zUCGVDUvcFgNiRgecR7mYGZjOPXmBsOr7x/ISdEMYpwCDGYiGgz//v8bGjE84gotTmZ2hiffXjN8//OTrBjmZGFnkOESZfj7f7TQIisAkTXRpFoacYXWiEvSI67QAiXpNQ8PM1x4dwcjzzlKGDB4SJsyfPvzk2Hu7e3gwg0dGAipMITI2w7+hges88DIyIiz0d9ilMgQIm/H8PXPD4ami4sZNj46huFh0IiIhoAcWHxQdx6IKUKJ8TAx5pCrhqJSOlLRkSFEwY6BhRF3dxDdYXxs3AySnELgjgFo2AbUIyIF7H52lmHKjY2kaEFRS5GHYY18ViYWsh1AqsY1Dw8x1JybT6o2uHqKPAzLa6DuHLGAmEILn1mg4d3L7+8Tax2GOoo8TI6tQzoPj3qYiBAYjWEs9TAR4Ua2ktE8THbQDRGNdI/hgQ6XUQ8PdAzQ2v7RGKZ1CA+0+aMxPNAxQGv7R2OY1iE80OaPxvBAxwCt7R+NYVqH8ECbP+JiGACoDs58DBFpzwAAAABJRU5ErkJggg=="},{author:"\u537f\u8317",link:"https://gitee.com/didsent",photo:"https://portrait.gitee.com/uploads/avatars/user/2861/8583669_didsent_1610900095.png!avatar200"},{author:"\u5415\u4f73\u80fd",link:"https://gitee.com/lv-canon",photo:"https://portrait.gitee.com/uploads/avatars/user/2897/8693867_lv-canon_1613531760.png!avatar200"},{author:"\u5475\u5475",link:"https://gitee.com/mfk23881",photo:"https://portrait.gitee.com/uploads/avatars/user/2893/8679972_mfk23881_1612761436.png!avatar200"},{author:"\u591c\u4e0d\u5f52\u5bbf",link:"https://gitee.com/ucx15934",photo:"https://portrait.gitee.com/uploads/avatars/user/2894/8682053_ucx15934_1612833258.png!avatar200",extra:"\u5fae\u8f6f MVP"},{author:"\u5c31\u662f\u90a3\u4e2a\u4ee3\u7801\u72d7",link:"https://gitee.com/itgeorge",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAGBElEQVRoQ+2Ze2xTVRzHv313Yw9atnVtYR0bIMjDEIFEEY0TBYwwIGQEFsA5JEwQFZVtxBAYKEN5yBgPA1NEHhGIPAwgCATQRMMMRh4aeY6tY7Sz21iH67qt15yz3GvbtbDu3rVs3PNfb+65v/P5fX/nd37nV8mlKWDwGA2JCNzF1RYV7uICQ1RYVLiLeUAM6S4maCscUWFR4S7mATGku5igwUta0rBIyMKj0WgzP1I+7JCQNszZguhn0+C8ewO3lqXAVW/3C91twCgY5m6FQmNAzdkduFM0v0Md1CHAPedtR/cXZoBxNcN2bAPufv2+f+BBKej59g4otEZUny5C+ebZUPV8EuH9R6L65FbB4TsEmCzYtOgglPq+cFpvwbx+Ov69+qvPxXdjgTV6VB3fDNvxTej17h6oEwbj/l8/wbIr2+/c9nijQ4DJQnTp+dCOfhP2C0dh2Z3rdy+zwPKoWFQeXIW6349Cn1GAsORhgERC55H5Ned2todP2KQVNzUPsROzIZErA15MY1U5zBtm0nkkpFlg67dLQBKeMasIUSMmQSKT0xxgO1YAy56PArbjPYGXwkIAk71rmL0REoWKKkyA2aGbtgI9xi2ARK5A9akiQRIaL2De7gbQ/fkZfoHJ97WvZEERmwDLrlwhzIW+4/EwYEEo3T4iiMIxqYugThjUprUxzU1w3LyA6FHpkKrC6f5XxidDIpXRjO5y3Pf7HaflBko/m9wmO/5eEgQ4cclJRAx+qU0LYZqcqDn3DaKfSaPJKZDRYP4T194bGMgUYbM0+zUW2FVfC6e1xOeCiIIKXRJVkhQU6qSnPRQmk0hlptAaIA2LQlNtJZqqKzy+9cgp/CAFvM9bNhuT7RCXthRobsKdbfMQOymHVlp1l06hJG80LzV9TRY0pNsDzB5tTGPD4wFMztqYCR+i2W6DuXAW9Bmfdx6FnRXXYN2/3GcYyiI0iJ2UC1mE1qPAMGZtgyYlk5aQpOYmN61OE9Jt2XAkS7tXVGzCY7dD33VXOg8wOWMZZz3llijDWupg8ru5iV4EyDO4mjlgciwlrzwPlbE/6v44gZIVY9ApgNnCo+Vms5gCswvn7rj6ftCOfYseOfbiQ6gtPoTIYeNhnLsN8qgYejUkl/9OAUwAe4ydD7nWgKrjm+h+dAe+98s+6KYuh8N8BeUbM/6/HKTnI2b8QpAwt+zMge2Hws4BTEIzadlZqHsPRf31YtzIHeEBLFGo0f25aXA1NqByXx4qD+ZTaHb/OitLULY2jc71p7DaNKSl9HxAu6gtOUSQc7jHqwugm/4JrYv/+X4tLLtyPIDJs4SFe6HqNRCNtjKYC1+HVKGCcd5XkEfrYL9wBLdXvuaxFbwLD+IIudaI2vMHPKKkLZDu7/AGJuomLj5Ge1Du7RzvPcw6RaoMR93FH+G03IT25Tk0nK1E9QMrHwosxHHFG5hTV6FG9Ykt3CXdG5jQmLIPI3zAKNSc2Y7I4alQxvVGw52/UZo/AQ0VV/0Cq/T9YFp8BMr4PrD/dhi3V6UGKiz3Pi9gspBeC/dCnfhUq2adL2ClLokajpuypKWryTAeTnLP7u4hzTX63Dqb7SXmBRw/aw1twQBMq3asL2CySE3KG4ifuRqybhqQyuz2pxNBig52+EpaZI4+Yz3NEd5toEDBeQETY6SJF/7ESJQVpHMZlLZpcw5DqUvmes3kXfKctmBNQ8A0OloWv3epx5r7rLlIW7TOu9dh3jCDHnGGOV8gcug4uBx2VHz5DqrPbA+UU5iQdrdqyj0C8i8CHVIZpKSqAsMVFCS5JXzwHdcoICFbunpyq2PGlE0Kkgk+gRyll1C2egq339tDzVth1qghsxDaMVmARMqtg5yv5Zsycf/yadDkNu1jSNUR3NFEnnsPoqR+9kYoYxNpOUoHw8BpvUmjgW9/WjDgqOGpNPOS+pkMR+ll3Pt5t0cDngBrXsyAdX8eqk5saY9AvOcIBsx7JUH6gAgcJEeHzIyocMhcHyTDosJBcnTIzIgKh8z1QTIsKhwkR4fMjKhwyFwfJMOiwkFydMjM/AeWN15SG0VzBAAAAABJRU5ErkJggg=="},{author:"\u5fc3\u82e5\u5411\u9633",link:"https://gitee.com/mabo192",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAESElEQVRoQ+2ZbYhUVRjH//f9znVaHd3SfbdWcZ0U2SCoT36I0KBI6kNKSFJZWpIvYFZUbIX1RawQKaJUotgkPxSCIn1SJJPEsFJ33V3ZtpwdF3Xdt7lz79yXOCccdozZ2Z1z7oyO936duWee3/N77nmec0cYOj7dxx10CSFwhdsODVe4YISGQ8MVloGwpCtM6P9wQsOh4QrLQFjSFSb01ti0xMg8eGZ3WXJb0pJW6zZAnfMiBFGD2f0anMGfSg5dUmD93u1Qa14CBBnOtSNInV9Z2cCklI2WryEacfjuMKze92AnvyopdEkNEzKtfjO0hm2AqMMd/Q2pP5+A746WDLrkwIIUhbHoIKRoK+DbsP75BFbfh7c/sKjWQqp6GBAV+FYCztCxLJRasw5a07sQJAOe2YNUx7PwUh0lgQ7MsHLPSuj37QAx6lw/itTZJ7NA1HL8AKSqhwDfhZ3cg/TFrZULTMhyLFt/w+x8Hu7Ir4FDczNMSpjsvDc2oIkMEypqefEhSEYcztBxWH3bs8DkXrX2FQhSFcwLa7kmghuwsbAdcuxReGYX0r1tEJRY3pK+oVGe8QjgWxR4/BVZsBdK9QoAPjID+2F2redmnhtwtPVn2l89OwGz8wWIelNB4HwU8qzHEWn+GIJyN3y7H+aFl3M2PRZ6LsDyzOWIzNtFA3RHTmLs92UoVNKFgg7KMhdgtW4j9MY36TCRGWinJcgKrFQ/Db15BwQ5xtUyF+DIgj1Qqp8CvDTSfR/BvvQpMzCpACO+H3JsGQAPdnIf0j1bChVGwc+5AE9bchRSdEmOCVbDtHXNfg7a3PchyNPhcWpdzMA5z+/oGYydWUqzzAOYrDNt8eH/JjZOAwozsNb4FrT6TYCgIHP5W5jdG7gCa/VboDW8TvcH0vJS51cxvTxgBjbu/xHyjKXw3RSsv9pg93/BFZgeKRe2Q4zMB/wMrEu76e8UezEBS3c9CLJhiVoDPKsPZscauKOnuQKTxfTmnVDnrCHzGdzhkxj7Y3mxvGz/Ho4vN2fwCFLnnskGwvIMG/HvIag1cK4cgN3/JX2GtaZ34Fw9CDvxGdP5mclwdjggpXbTuZYFONr6C0SjBb4ziHTPZmSu/FC00ZtvZAImi5ExUJn5GO2T4087xQJL0QcQadkHUWvMjqnu8IlbBzhfJMUC52tzvIiZDfMGJm81taY2+jbEuXaYtiGeV3DA1SugkxOPHJv0lETOyJGWb2ibo4NG4nOke9/mycu2S08USU7/JCdbOwl35FTeHZbAitFWiFotbT9+ZgBm16vcX9YHZpgkQ2t8A1rdJjolTeny0rASZMD4YEq3TebLgQLTmXr2aqg1ayHqcwGIE8fkO/DMTtjJvcgMfDeZ+Kf8ncCBpxxRwDeEwAEnuOzLh4bLriDgAELDASe47MuHhsuuIOAAQsMBJ7jsy4eGy64g4ABCwwEnuOzL33GG/wUT+oIP6lWw9QAAAABJRU5ErkJggg=="},{author:"\u6587\u5e7f",link:"https://gitee.com/warren9527",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAFIklEQVRoQ+2YeVDVVRTHv4/tsYTsKCj7LiSBiZDkVo6JFpOBLVJCmUUlTWSjNeU4lCVTWo1jaGbogEmlzWAC2SJFJXvFlvCQEHgZq2zCA4FHc371GB6ib/nx+73p9fu9/+Dee87nfM+959wr8vsifhz/o08kAOu52oLCei4wBIUFhfUsAkJK65mg1+EICgsK61kEhJTWM0GFQ4vXlPa2dMYTvmuwdPYCnG4pRGpVFu8JxSvwo16rkBz4AMwMxWgf6sGrv6SjoK2SV2hegYksLeJ5LJ8TzEB+31qBxML39Rt4lfNC7LrtMdiJZ0E2Nox9NaeQ0fANb9C8K0xkexc9DQIv65TgYN2XKOms/W8AP+W3Dgneq2FsYKSRwwYiEeg3Ni7XaN7g6BD2VGUhR1qs0bzJg1kpnBRwP570jdIYWFtvB0aHkFKRgezm89ouwe7Fg8qMv7UrDEUGSg486L4coXY+6BzqxSFJDvpGBtRy0F5shS2+a2FlYgFJnxRH6vOU5o3Kx1DeJUGrrFut9aYbxErhG1lNCdmEWPdlkI1ew+7K4zjV9KNaDm72icJzAdEwNTRBrrQEyaVpas3TZBAnwBs978K2oFiIDUxwovEcXq/IVMun3aGPY71bJEbkYzhUdwYHarPVmqfJIE6Ab7XxwHthz2CuuT1+72nC+vxdKn2yMDJFxp07MN/aDV3DfXi5/AgnTQknwET3QXgSVjqFMPs3pSITZ1qKbgq9ziUcO4PjMMvYAmVdEsQVvKUySNoM4Az4Ec+V2Ba4AWZG/+zHF0sP3tQ/qs1R88IwJpcj/eJZ7K35XBselXM4A56com2ybmwvP4yijgvTOhRs64V3FyXC2dwOlwe78EJpGiquNKh0XpsBnAGTM4o6bSgyRI60CC+VfTitj68Fx+EhjxVMM3K65Tx2lH+kDYtaczgFJpWPRW5HkI07s5dTqz69rkTRVfGN0AQ4mlpDVSaoRaRiEKfAZPthjxVIDoyFpbEZ6npbmL18sf8y4xYF5EB4EsIdAkBNRcYf33J+R+YcmMDevn0L1s4Lh0gEFLZfwNbi/aA2cc/CzbjXJYLp1Kq7L2HTT6nM37n8eAGmFpROYT8rF+bCkCstRsdQL6hBERsaM63izl+PclJ3pwaPF2AySns1JSQec8xsME6/cYBuTX0jg9hXcxJZjflcCjuxNm/AZJEUTQ6MYfYufSPyURxr+BrvVHNTc6eLIG/AdHg96x8Ne1MrJT+6r13Fx/V5OCzJ1Q+FI2cHIXl+DAKsXZk6Sx9dG+lTwFOKSwc68UnjOaTXf8UpOGcKR7vegTjPu5nLgOK+TAdWcUct3qw8zkC9smAjFjv4T/yfwK8M9yO/9TccrT87Ub5mMgIzCkwHEj3FrpkbBidz2wlFCaT5ajuTtiebCpT8j3FbyryauN7iODFesb8b+v9C3p8lyG7+mdWlf7JB1sAEGe26hIH0snRSeu4h0JaBDpxozFeZqgk+9zBNiouFgxI4OUuZ0TzQzjz6UcDY9NmsgOnEjfdeDZMpj3jkIHVVVGo+u/SDRhm5wX0Z81oyeSsoFpjaqWm08L+DWQFTedm/eCsiHAMYVfpHZCjsqEFmw3esn17D7P0R474USxwDYSu2RJusZ0aaE1bAFDTqohL970N1dyOjJhetIT0O0MHH5rVSkQ2sgbVJK13OEYB1GX0+bAsK8xFlXdoQFNZl9PmwLSjMR5R1aUNQWJfR58O2oDAfUdalDUFhXUafD9t/AxgYN4u7xFR/AAAAAElFTkSuQmCC"},{author:"\u65b0\u65e0\u6b62\u7ade",link:"https://gitee.com/huiwei13",photo:"https://portrait.gitee.com/uploads/avatars/user/114/343543_huiwei13_1607412231.png!avatar200"},{author:"JsonLei",link:"https://gitee.com/jsonlei",photo:"https://portrait.gitee.com/uploads/avatars/user/175/526488_jsonlei_1601085009.png!avatar200"},{author:"\u6728\u6728Woody",link:"https://gitee.com/lkicesky",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAADsklEQVRoQ+2YyU/TQRTHvz8WRRZBdiibLYuIBcJmIFCJ4WKIejAa9GJMDOHixZMH/wVN1ING1HhEJTGEaExEZdUoIGXfaglKAVGWyFZLac2MASkWWvh1fg1l5to3783nfd+beb8K5edfmrGLlsCBXVxtrrCLCwyuMFfYxTLAS9rFBP0PhyvMFXaxDPCSdjFB+aUleUmnn1ZAWXyQZr7zxRDUVV8kLSrJgTPPJiDtpJxCtldr0fpskAOzzABXmGV2iW9e0juthxNVMkSmBNldGN4HvBCeHEjtx3unsDCtt3vvaPckBup1dttbMxTdwwWlSiQVRok6hL2b+2tH0HC/015zq3YcWFT6bGw+VpaK+IJICIJALc0mM3prvuL94x6WYS18i1bY3pMqciOQdykFe309LbbMT+pRd68DpD+lWJIAe3p5oPh6DoLl/pidWIBPoBdlm5/Swy/EG9qPY3h7Wy0FrzR/06pKlUhQyWBYMGLo0zjIzU7WYIMOcTnhcPdwQ/OTfnS/GmYOzVzh5KIYZJckgqg8WK/D/LTeYpb2j/CB/GgEZn8u4t0dNSY0M0yhmQJHp4cg//IRWsLTI3N4c6sNirwIC+CxnimQy4zY6LonUXPzM5b0RmbQzIADZL44fiUdgTF+MCwsobligN7I1kbLjDMJSDslh5u7AE3TKOruduwsYFK+RVczIEsJgtlstoDYaJY+cS0bMmUwTMsm2tsN5V1MoB2uMIElykalBUNwE+hz8/rGvzLdCHhtRZiM7KAdCkxgVWVKxGWFUVjy7DQ+6MI39Y9VtTb7Wlrb86ZlM7QfxtD0qNuhPe0wYHLpqMpSaRlDAH7PLaHl6d++XbtsfR6u3Op7vD0BMzDWN0WhZ3RzDilxhwCHxgcg9+JhhMj9KezaS2r9KW0BE3sLaIAOK62Vg9A0joqGFg0cnx+J7JKk1emJDBfkj7mOaq3Vw9kDvAKddS5xdRRdXjLRoaXpobgSFwWcc+EQkoui6VBBFlGWKLHZxGQvMPG3PplGwzLaq7Roe67ZttKigBMLo6i6+/bvweIvA5or+jFQO7LpYbYCTByttAt5zzWN4p8rUcArpafIi0Rr5QDI1GRrbRWY+CMVFBTnh/G+aVvubf4uGthmhHUG2wHeaozN7DmwI7NpzdeuUzg2MwyxWaE0F8MtExhu/c46xxb+JS9pSemsBOPAzlaAdXyuMOsMO9s/V9jZCrCOzxVmnWFn++cKO1sB1vG5wqwz7Gz/XGFnK8A6/h+uii/35Wl8zwAAAABJRU5ErkJggg=="},{author:"\u674e\u6c38\u6ce2",link:"https://gitee.com/softbuilder",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAEdElEQVRoQ+2aa2ibVRjH/28uTdq0uadr2q6j2tZ6K1Nqq6sDnY6Nors43GSgH6bODVRQ2BcFPygKXpg3tDpxAwVhjilbx9axDR1SXWexMKidq0xa03YxF5umiclyeeUcaXAuS07ek2QmOwfyJXmec57f83/e55z3EKlj+DkZ19CQBHCZqy0ULnOBIRQWCpdZBkRJl5mgl+EIhYXCZZYBUdJlJqhoWkUv6dXW27CjcS3N/JuuAxjwjxS1qIoO/ICtEy8s3kAhX/t9Pw75hgVwITPArfASvQObHD0wqauY4qxS69BjvJHaDs6NIZyIMvkFEmHs9QxiIuJhsr+SETdwV00rXm3ejFqtiSuQbM5/xAJ48bcvcDo4ns004+/cwDcbmvBsfS+s2uqMC2kkNRoqbNCpNJfYBeJhEBgZme8S/bF5vDd9GKOhyasLzLL6veZb8HzjGjTp7IjJCaghUbcEZGgkFc6Gp/CW6yCGg7+yTMdlw61wttV3LF6HdbYuVKv18Mfnsd9zCptrl1O3r7ynsMZ2B0yaKswnIuj3/Yj3pw8jxPhcZ1s73e8FA15hvhVbnSvRXtUACRImo17sdB2EQa2/ZFsKJSIp9UlZu6J+fHrhOL72DinhyeqTd+BlxnY84bwPSw3NUEsqJOQkfpj7BS9P7oP74izS7cOLKsx4qelh3GW8gfoQ8PN/uWlXJp98jrwBb7DfiY2OHrRVOqGSVDRGUsK7L5zA5+6TqZgzHTzW27vxeN39aNRZaVUQcE9sDoOBs/jM/S3OR9zc7FzAnTUteMjeTZWxaAw0SDLI83h89gw+nB6gqv57ZDtpGdQ6bHeuxoO2Tpg1hpRrUk5S+CN/juBtV79icC7gZxp68WjtPamthjSbk4FRfDJz7IpqdBiWYK29iwZ8wHsaZ0ITaYMn4ETtXuvtqKsw02SSRL47dQhfer6/OsAkqHeu34KWSieO+kewx/0N2irrabPSq7SKgyKOJBGvTOyjc5AGuNGxDFMX/anvlE7OpXC6RRdKliSDZwwFx7H1XB/PFGl98w683HRTzgqTcrVqqmHT1qSCJJ192/jH/3/gXCPcUrcCmxx3Y1GFiT6ns/EQjvh/oo/HfxternOns8+7wqxBpQPt9w2jb2agNE9amcA/aHkSPab2lKLFAF2Ih0vhhS1GL+XWkckbVrO+Ft5YEEPBc5Bltn9dRORYxq2Mpbq4gPPVkVkCJTZkn+e9FuICVtKRSeAOrREWTTXIiwPZW1lHJBnDrplj+C7wM6vLZXZcwEpX3dW2Hd01rfQ0tn70daXTKPITwIrSlqPTNaUwOXLubnuaXgyUXUl/1PoUfZnwxYOpGjCo9KjXWegePBZ24ZGxnTnWB595QZ/hN657DKssS9NGGE3Gscd9An3TR/kIcvQuKPA25yqstHTArjVCK/1zPZtAEq6oj56XyS1GsUdBgYsNw7KeAGbJUinbCIVLWT2W2IXCLFkqZRuhcCmrxxK7UJglS6VsIxQuZfVYYhcKs2SplG3+BnvhGjPFQ5ViAAAAAElFTkSuQmCC"},{author:"\u6d41\u901d\u7684\u4ef2\u590f\u591c\u4e4b\u68a6",link:"https://gitee.com/richieofdear",photo:"https://portrait.gitee.com/uploads/avatars/user/775/2325174_richieofdear_1615363157.png!avatar200"},{author:"\u6d6e\u4e91\u5f02\u68a6",link:"https://gitee.com/chendx136",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAFzElEQVRoQ+1YbVCUVRR+dpFdFARkBQIRJBw1RCJFGT8SHRMaI7Uk8wsNBl1FRfmqQQXFAkSBUUTQRIRRJBxZhgktU0rTJIiSSEtN0yEQwUFD+QjWlebeejeIdUHe27Ru7/sHdu695z7Pec4999wjcpk6twP/o08kENZztQWF9VxgCAoLCuuZB4SQ1jNBu9ERFBYU1jMPCCGtZ4IKSYtJSNvZWlNPVt+u0/kA4U14isdYRIWthJFEgrSDHyGv8FOtpI0H9Mek8W4wkkrV85xHOsHM1IT+tpQNgoW5GcRiMWQW5pAYGsLQsB9aW9uwNSkdn525wMupvAlHBgfirdneFFRbWzvyi04hPiWDgkqJi8T0yRN4AeQWtyuV2H/oGPZmH+VljzdhsnuI3A+L5/lAKpVApVKh+FwpohNSsW6FH96e8yrEYpFGkMRBj1QqOkbW3W24T/8+7uhATW0dWlp/h1L5CJevXkdTcyuuXr+JG7d+/e8JEwQBC9/Acj9fmBgPQEdHB0rKv8fODw/B0d4OBmIxBXmzqhqXrlyn/5PQ9l8wFw2/NSJXcUIjiYjV/vCePhkfnzyDjJx8NLe08iJLFjNRmEMxf443ggOXwEgqQVZeIQ7mFiA4cDGmTZmAzBxFl/Odk54AV+cRVMl3tyaj8sdrXciQse3RoRhiY40HD5uQmJaFghPFukWYoPHx8oSpiQmOKI7DadhQ7IqNhIOdTTdii+e9hnUriHOkNBGFb0nsQiZxSzi8pk2i0VJ06iw2xqXwJstcYU2IOhM7W1KOtZFx6mkZyTHwGOeKxgdNiN25D58Un6dj3Jr+Rka4duMWjQC+Z5fblFdIk3NIQpZk0KT07CcqsDt+AzwnuqO9XYn07DwcyFHQub4+MxG6ahkGmhij9NtKBIZu7hIVD5uaaR44WniSibq8FY7dEAyfmZ4UTNnFH7At5YBGJTzGjkHcxnWwlFmg4tJVLF0TqSaQlrAJZqYD6R3+VdlF/FuhzERhcl5D5EthNdiC2quqqaXJ5YvzZd0UCfJfQDMzIaYt23JR4+hgh5CoBCaZuTMYXiFNDI13c8GG9ctpKIpEIppRSchm5hbQfUg4kzl8vptVNVgoj+BjQr2WN2FiiZCNDluJl8a8QA2XfleJ9Zv+VIdLTHzQkoQ1d1kwHxNsCRNrJBQTokIxWGZOrxAuq5KCZPjz9k8FVjbIHONcnWnlRj5SrOiUwk/FRstka0sZtkQEYaL7izAwMEBbuxKfnytFUnoW6u42MNmGSUizQBKw6E0smz8bFoPMaLFRXVuHjMP5UBw/zcI8+5Du65uYlJBrAxfRxMapevpsCd5P3ss8Q/O+hzu7/oPIYMya8TJ++vkXWuhrupo0SbUmYCGIuv36GaCq5g4N396u7Yv0zEL60J54uLmMQlNzC7anZmKE0zD1o14bMCuZBdzdRtMp5RWXUd9wTyuPuvoG7Np/uC9c6RomhF1GDUdSTARsn7OixceO1IOICpPDarCsz8CetJDvFcWE8KxXpiIqVE7fwqQmTsvKQ0xEECz/qsC0sSZvZe76IQ0B1ePHWp3EtwhhQjg86B0s8fWhQA8fK6LlZW8/7gyT+ZlHFEjNzO3t0j7NY0KY612Rlsy2lIyneqg/c4QdhtqCvHjsh9jg9p16hG3eoW7j9EaCZ44w6UpEh62iGbni0hX4rf776aeXhLnzS/rIpEUbk5jeG57qOVGhK+H7uhftVj4TZzh7dyzGujrTnjR563LPwn+yJnNI5ialI9eOlUok9CojPW3S5mHRaO/J27ySFtfJIPftvfuN2Lx9D85c+EbjnuQ1lbtvBxzth3Qb59q68vCYnvDyHudFmOxOSHtNmwzTgcaIiEnSCmjre2sweqRTlzlNLa0o/vJrehxY9J178ghvwj1toGvjAmFdU4Q1HkFh1h7VNXuCwrqmCGs8gsKsPapr9gSFdU0R1ngEhVl7VNfsCQrrmiKs8fwBquKMt/orq2EAAAAASUVORK5CYII="},{author:"\u738b\u7801\u4e91",link:"https://gitee.com/wangmayun2",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAByklEQVRoQ+1WPU8CQRR8dwhGQkvQIASlMCbaoXYk8gP8d/4E/QEWlqh0Ir2xIBLiRQ8oyRlBDnMXC9TE/XhryJ6z9cy+92bmbdY5PTuf0z86DgZOuNtwOOEGExyGwwlTAJFOmKE/xoHDcDhhCiDSCTMUjxYijUhLKFAsFCiXXZNA6kPGwSt5vq9/wSfTSKRPGg3aXC+wm/ntgqcXny6aTXYNDMyWUHDB8dEh7VarMeq+26Wr2/Zfl/xyvxGHVTrGwHBYJS/qWERaXTM1BnYYO6yWGFW0sR0+2N+j7VJJWH81k6FcNhvjxkFAb5OJkOOPRnTdvhPiZADGBl7cTZnCKhhT38qoprGB67Ua7WxVhHM4rksrqVSMe5/NaB6GQo43GNDlTUuIkwEYG1imWITBK41XWjYrejhEWk83eRZ2GDssnxYdJHZYRbXoi7iRz5PrOtK0SrFI1XI5xnf7fep5njQ3DOf0PBzGX1Ldw3I4+llFP6x0Oq1bX4k3nU6p1enQw2NPibcIxsAq0ulEWuX+79ilR5rT/LK4rEgvq2lOXQzMUc8GLhy2wSVOj3CYo54NXDhsg0ucHuEwRz0buHDYBpc4PcJhjno2cD8AXstmkMxShZUAAAAASUVORK5CYII="},{author:"\u7530\u601d\u51ef",link:"https://gitee.com/tian-sikai",photo:"https://portrait.gitee.com/uploads/avatars/user/2900/8702061_tian-sikai_1613787170.png!avatar200"},{author:"\u79e6\u98de\u5b87",link:"https://gitee.com/qin-feiyu",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAFS0lEQVRoQ+1Ya0yTVxh+2tIbBUqp3MqAcQ2Kug25ZHNxRDJxsA0J2/ixmIyYEM0yli1xy4yJLku2GDMTt8RsZhdj4hxZFBy6OK9MZQFlMQ5Exxwo5VpbaOXW0tIu52xtFFr48Dt0Xf3Ov/Z7z3ve533e2zmila3vuPAILZEAOMjZFhgOcoIhMCwwHGQeEEI6yAidBUdgWGA4yDwghHSQESoULb+H9IvaXGxLrIBCLMUhwwV82vujX4PK74Df1K1HVVwRXHDhq4Ez+HLg1P8PcH54BmJkak6Gr1EvwzrNE5h0TuHA4Hn0TQ1z2tdtNeD6eA8n2bmEmDC8P3MLCsIzeBszl4I6Ywt23qnlfQYTwJ+lb0JuWPq8xohEgEIkhVgkxpTLAbtzet49boGG4Sv4pOcoZ3lfgkwAc7WiJCoHHyRVIFyiwDHjZexgwBjXs91yfgW8PekVVEQ/DZvTjr19x3HYcGmh9vKWZwq4Lvt9pCpieRt1v4LxaRs+1h/BcVMrE70CYCZunKFEJZFjX3o1ngxLgcUxQRk7OXx1MY6aVydThn2dtkVXjKrYIsjEElywdKDm1tfzGrZYArwBb44vRpFmxZz2xck0iJAoMe1yQm8z0pb0MOvsSBu+GPj5YbZ69vAGvDO5EuVLCngZwXUzi+GDN+BsVRJSFDGzbCYDxuuxa2jVdrqcOGP+Hb9YOrxiK9fmY1V4Gh03vzc04S/roFc5FuMlb8DeLFupSsb25FeRqYynn1vu/Yl3u74FaTHe1rPqpSA9Ol6mwbBjDHv7TqDe2MKV+AXJMQdcGrUKbyeUIlYWSW9EbeM9OGJshsP14BipCVEhQ6mDBCI6apIoeVwRA6VYRh1TZ2rBbn39gsBwEWYGmLSemoRSlGsLIBdLaRj/MdlPgSjEMi624JLlBtKUcZRp4qzOyQEcHGpkNnQQI5gAfiYiC1sTyyg4EUR0dDxqbMapkWvYkfwaoqX/XB3tLgftwwnyKPpbbzPB7BhHn81Ef5OrIgH9XuIGLFclUV3Ecbdtd9FguoLau00+04KTR/kCJrlaHb8O5D4sF4fQM3ttJuzrP4kTw795tcH94kE++hoZSbS8pSvBS9o8hEkUHj0TThvOm9uxrfsQV3yz5Hgx/GFyJV7W5tEcJD220dKOXfp6DE2ZfRrEBbB780yHkoL20Z0fcM7c9t8AJkzsSa2CTh6FbwbPwmgfRXX88/S9yteSikKQKNd6QpqEua9lddqxf+A0Dfk34tai12akv/ksXgzPPNjNHnEEi8X6psSsaLnBkVb0VFgKQkSSB/CKIcJz6mwURmZ7vpF8nO9Ni7Syq2Pdc6bIQh3LlGFvh5MKXpNQgqzQBDhdLjSPdlKnuFzARUsH1CGhNCdJkfM1mCwU1FzyiwaYjJSbdcUoVC+nFZyA+c5wEbdtBvouTf4jDLp7tM3poN+aLDfQYGpFl3WIJU6PLuaASWXdGFuI1RFZILlMBggyA+/WH8Ov927CnefkQa/W0ISloY9hmSqRvnORvksW6b2DdjOaLDdRZ7rM5HnWjZgJYAKsMno11kfl0MuC9N8cHpu20oHh8/6fPOHqqy2RebpMm0d7Ognz+8G3T+hpO+qc7OfNOhPABOSu1I3IVOqoQVbnFBrN17Gnr2FWweHSh9dGrkCZNh+54Wk0Sk6PXMPWroO8wTKt0huWFGBTXBGtqgcGz/nMQS6A3cgI2Bc0OXS0bB29FViAmVjjByVMQtoPdjI7QgDMzJUBqkhgOECJYWaWwDAzVwaoIoHhACWGmVkCw8xcGaCKBIYDlBhmZj1yDP8NFryEM+eMai4AAAAASUVORK5CYII="},{author:"\u901a\u4e50",link:"https://gitee.com/TL27758_admin",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAE4klEQVRoQ+2YaUxUVxTH/8ybBUZWrSwKgsNWYQSVKGAHMEZbGmsLUZvWL41JW5uUpktq0yWpbRrTljQxVT9QW5MmpqZf2pJaGmyrlkXQDimCSlkUAYEZQXEiOMCszbkWMs8ZWeZNZqbDu59g3rv33N/5n3fOvSco+tsDdiygESQCB7jaosIBLjBEhUWFA8wDYkgHmKBOOKLCosIB5gExpANMUDFpeSykixPSmDerb3T6dZAIBg6VyVGeV4ynEh/Ftbsj2FtbiU7DrWno51KyoIlNEuQEi92G6r5OjzhTMDCRHC0qxdNJqxhUne469pz9AWNmE/v/4MZt2J2aLQjYbLPi8KVGfH6xVtA6NNkjwGmRj+CrwhJkREXDbLPhWLsW+7Wn2ebezi7AtsT0eW00mJMiMSwKXFAQm3fPYkJ5cx0q2i7Max1XL3sEmBZ+IX0dPli3CRHyYBhME/i46TROdLXwbFL4VxSWYJFMjkOtDTg72M17nrN0Od5dW4j8mBWQSThQKGuH+vGli3fdJfcYMG3gsGY7dqjUTJm2O0NO3/O+NQUoU+eDFKQw1Q4PMPC75km8mpmHLfHJUHBSBtp6W4/y5lonp7gLOjXPo8AU2t8UlSItcin+Hh7AGw1VvARGRjfGJqJMnQdNbCKDs9rtsNltTFH6+8rITRxsPYdf+zqEsrmc71FgsrBTpUZKxBIcudzIEtcyZRg2xCRAJpHwNhClUKJ0ZQayl8SxiLDZ7bh4W4fvr7bCaLmf8ByHzjiGel2PYCd4HPjBHe1KVuOz3GLQ9ytk1Ol6sPO3E0KWYHO9BqyUytA3ZoDRYuZtmpLc8kXhmLBa0Dt6h4W140gIjUCYTAG/AH5Yyanq7cAXLXVs31MKKzjOZS2dqtM64yjK6k86hW3dMy+DcoNfAD/sUEHl6M2GqsADdlSYEg8dFqjkuAIOlkrRqO+D3jjGC1lVeBSo/lLtrhm8DpPVynteEJeEWGWofyjsuDNNXBKOaLYjThnmEjjgktZswAGRtOajcEAkLRF4hm94wYX0gkta9A1/19WCpuF+Xtl5PD6VNQ+Gxu/h0KUGGEzjvOdvZWmgCl/8/ytLYtL6T8eZjpZ0IDlaWIL40AhU9rRhb02l/1weqG+1P2czIhUhLg8ec1H4nL4XT65Iw9T9QSqRsJMbNQS+btPio6b7bSMhwyO3JWrvvL+2iMHS6DAM48Wan9jlf7bLw6e5T+DZ5NXQG0fxS287XsnMZZCOw1X3xF1owcAvrVoPat3QNY/aNnSRl3NSdBlu4UPtH6x983xKFqQSbtZWK4UwvRvMyaZ52g1D+LH7CgaNo+4y8uYJAqZWzeurH0O4XIFJqwUVbX8hVhmGHapMSIMk7LfLIzdx6kYX61n/Odg93b6d6+7paqheHDPdwRTa+RAEfHzzLmxNSIXJamEl570LpxjHJ+u3YHfqGsFdjgedQtFzvLMZ75yvnqu/nN4TBFyyMgMHNmzFmYFuvFZ/krc4heee9BzkxyQgOiQUco5ze5NTEw2T49h3vho/9/zj9lqCgMkqHRrODFybd6jSyWvTMhVCpPwENROJYXICv/dfdRuWJgoGFmTdB5NFYB843asmRYW96m4fGBMV9oHTvWpSVNir7vaBMVFhHzjdqyZFhb3qbh8YExX2gdO9avJfgwwTApX/UA8AAAAASUVORK5CYII="},{author:"\u9b4f\u5927\u6002",link:"https://gitee.com/wei-dasong",photo:"https://portrait.gitee.com/uploads/avatars/user/2719/8157681_wei-dasong_1605249338.png!avatar200"},{author:"\u9ec4\u539a\u9547",link:"https://gitee.com/houzhenhuang",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAADoklEQVRoQ+1YSyi8URT/jVdek2zHoySFJjsNq6lJspEoG3kkNl4LC9kpsxGyEUkoj6IoFhbklZQoCxuJLGzIwgLJM8y/c+vTH3eY77uXvpnv3ppm8Z1z7/md3++ee++xAfDBQsOmAIc424rhECcYimHFcIhlQEk6xAj9AkcxrBgOsQwoSYcYoapo/aqkvV4v2tvb8fT0hKamJkxNTXEFVFVVhcHBQdjtdoyNjaG+vv7XhKYA601tbm4uMjMzuW75+fmoq6vD8/Mzent7cXp6yrVLS0tDW1sb4uPjMTc3h8XFRa7d0dER9vb29Ib4wV6Y4dHRUQbqL4YMuQsDHhgYQHV1NRdveHg4YmJi2Lf7+3u8vb1x7cLCwhAbGwubzYaHhwe8vLxw7SYnJ9Hc3CyUW2HA362uilawV+mSkhLQLyIigku0w+GA2+1mEl1eXsbt7S3Xjo6joqIiREdHY3d3FycnJ36Fs7GxgfHxccOyFpK0JtmoqCjDAeh1FC1cQoAbGhpYhY6MjAw47ri4ONAxRIOOqbu7u4B9yXB+fh6dnZ26fP43FgJsZFVNFeTb3d2Njo4OI9MY9lGAjabO4/GAzsmkpCSjU3D9zs/P2TlPxUrGkMawpQGvr6+joKCAS0ige1i7sgYFw5YDvL29jeHhYS7D2guKPtKZurOzw7UrLi5GeXk5goJhGcVFmyMoAF9eXuLi4oKLO9CLR2JiIlJSUoKDYcvtYcsBtpykLVe0PjfbqIXj8/nYjzfoPf25rZORkYG8vDzzFi16xBcWFrLeFB0ldPctLS1FY2MjXC4XFhYWUFNT8wUv2QwNDbHe1+HhIdbW1jAzMwOq5tQNpV7YysqK3+aBXjVJu0trC2dnZ6O2tpZdGlJTU1ljjsbV1RVaW1sxMTHxIcaenh7WmNOaffTx9fWVJW1rawvT09NYWlrSi8uvvRTA9HAggPSfnp4O6lZq4+bmhrFG3c3NzU1uIMnJyaioqGCKcDqdrD+tDdoG19fXrB9NyaIEiAwhwDk5OSwAYlVjkoJ5fHzEwcEBk+bIyIguOdLWqKysRFlZGajJn5CQ8I5vf3+f9cj89cYCSYQQYFqgr68PLS0tTIbHx8eYnZ1l7+Kzs7NA1v/RhpinvU/J7e/vR1dX148+3xkIAyY5ZmVlYXV1VSiQv3IWBvxXgcpaRwGWlUmzzqMYNiszsuJSDMvKpFnnUQyblRlZcSmGZWXSrPMohs3KjKy4LMfwP1/YKB94OL8jAAAAAElFTkSuQmCC"},{author:"Voe",link:"https://gitee.com/vvjiangziwei",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAADtElEQVRoQ+2aaUhUURTH/290XDP3vcbcK8EWqAiLAiH9IES7RBhmEZJkQbSQVERhRUWJES0m2GpkYUjoByNLCSwsAjPLdXLLrcx11JmJ92jiZS739uZNw3Tno3POu//f+Z97z32DXOTrvXr8Rx+OAVu428xhCzcYzGHmsIVVgLW0hRn6Bw5zmDlsYRVgLW1hhrJDi7U0a2kLqwBraSmGBth5IiM4CbPsvKCHHoXdb3Cw/hbVI9NU67HOcykU4FA10IT4qvNU+VMFG91hsWC1phMpNdfQONQxlQ7he0crW9wMT0WwvQ9G9VrkfCnBxeYColzSIKMDr3KdhzTVBjhbO2BQNywIvtteSqRnk2cU9syIg4PCFq3DX7G/Lgfv+huJckmDjA7ML5wdnoKF04IEDc++VSK1NotIz6nALYh1WwAOHF70vEdKzXWiPJogWYB3+cUi0ScaSs4KLcPd2FeXg8p+9aS6IhxVOBuUAD8bNwzoNLjQVIDcjjIaFqJYWYAjHQNwJigBvjau0OhGcaW1CFltxZMKSvKJxk7fGNgqrNEw1I7dtVnEe5+I9GeQLMD8s3ngGNf5wjIk7ZkZsh3LnedCBz3yOl7ihPoBDQdxrGzA4gOofaQHh+vvoLz307jCFjuF4mTgZngpndE92odjDbko6akkhqAJlA2YHzE3wlIw28EfI3otstuKcamlcFxtqf5xSPBeAWvOChV9dUiszqRhoIqVDZhXIZ7Jk4EYTnXS/U5FOCZYVuBlznNwPCAe7kondI304kjjPZT2VP0mQTy35Zq94gVlBRbP5IluToYu4IC/uorSui07sHjcvO1rwNbqjF8axfu8XzuE058fIb/rFS0DVbzswOILxdgTeLX7IhyYuQaOVnb4MNCMbR8z0a/VUAHQBssOzAsyXBn5fzW431GGdPVDQafh7zq9Hrfbn+Nc02Na/dTxJgEez0kP5XRkhuyAytZjwgONmoYgwSTA4r36XTuIdHUevG1ckCxcJZVENzECFqIQkwDzSg6p1mKjZ5Qgim9rH6UrVrpEQKMbweXWImS3PSUSLDXIZMDimVw92AJ7hY3QznK+KIxXHJMB84tfDUvGEqdQ4Q3KmlNAwXHI7yzH0cZcqcYR55sUWDyTeYWG/fyku4JYsNRAkwLzP/IZTmZeuNwvCv+8paW6Y4x8kzpsDMFSn8GApVbQ3POZw+bukFR9zGGpFTT3fOawuTskVR9zWGoFzT2fOWzuDknVxxyWWkFzz2cOm7tDUvX9APeTziQX3ucvAAAAAElFTkSuQmCC"},{author:"dotNET China",link:"https://gitee.com/chinadotnet",photo:"https://portrait.gitee.com/uploads/avatars/user/2685/8055741_chinadotnet_1606890988.png!avatar200",extra:"dotNET China \u521b\u59cb\u4eba"},{author:"\u6c34\u871c\u6843",link:"https://gitee.com/andyliuqiurong",photo:"https://portrait.gitee.com/uploads/avatars/user/19/58386_andyliuqiurong_1600142677.png!avatar200"},{author:"\u6653\u98ce",link:"https://gitee.com/2103625",photo:"https://portrait.gitee.com/uploads/avatars/user/120/360653_2103625_1578921473.png!avatar200"},{author:"\u75de\u5b50\u518d",link:"https://gitee.com/washala",photo:"https://portrait.gitee.com/uploads/avatars/user/368/1106699_washala_1578940434.png!avatar200"},{author:"AiGlory",link:"https://gitee.com/aiglory",photo:"https://portrait.gitee.com/uploads/avatars/user/2538/7614116_aiglory_1619504557.png!avatar200"},{author:"kingling",link:"https://gitee.com/kinglinglive",photo:"https://portrait.gitee.com/uploads/avatars/user/1674/5022588_kinglinglive_1578978642.png!avatar200"},{author:"\u4e0b\u4e00\u7ad9",link:"https://gitee.com/HolyGuo",photo:"https://portrait.gitee.com/uploads/avatars/user/737/2212002_HolyGuo_1614572017.png!avatar200"},{author:"engallon",link:"https://gitee.com/engallon",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAYAAAA4TnrqAAABn0lEQVR4Xu3XMUrDYByG8X+hvZGXKG4FR3UUegRv4BE6iqPQTVcP0MUugSIoBJxEPIAllVoXFeV7kpIvpU/nJ+Hrjzel6R0MT1bhJ0mgJ1aS02ckVrqVWMBKLLGIAGj9zRILCIDUZYkFBEDqssQCAiB1WWIBAZC6LLGAAEhdllhAAKQuSywgAFKXJRYQAKnLEgsIgLTVZZ0dj+L06DAG/T444t/p7L6I8fnFVu6VchOxUpS+GrF2BWtePMT09g4c93v68voWs3lR+3p6YdZltf2bQ3F+9mIBQbHEAgIgdVliAQGQuqxdwQLn/JXm+NuRdVli/SOwzRfpvVtWk9edtl911hvI+hjmWEeTR18soCeWWEAApC5LLCAAUpclFhAAadZlNflTuv6OVVXF4rGMp/IZfOX6aVas+sfeXPm+XMbl9U1MrqZNb5V0vVhJTJtIrK5igXN1Mm11WZ0UAIcSSywgAFKXJRYQAKnLEgsIgNRliQUEQOqyxAICIHVZYgEBkLossYAASF2WWEAApC5LLCAAUpclFhAAqcsSCwiA9AMCyEs5dUftBAAAAABJRU5ErkJggg=="},{author:"shuisen",link:"https://gitee.com/shuisen",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAYAAAA4TnrqAAAEcElEQVR4Xu2by1daSRDGPwQBM1EU5CGKqAQ1Jpn5/xezmsXsssjkpQblKe+oPIXwmFMdLyOeZOhSTl9nTvWGBV9fun73675VdQ+O3//4cwwZWgQcAkuLkxIJLH1WAovBSmAJLA4BhlbOLIHFIMCQirMEFoMAQyrOElgMAgypOEtgMQgwpOIsgcUgwJCKswQWgwBDKs4SWAwCDKk4S2AxCDCk4iyBxSDAkNrqLKfTic1ICMGAH8+WluByOeFwOCbLHw5H6H/r47rRQrFcweV1gxHa/KW2wUruxbERCsLlcmlFNR6P0Wp3kMrk8PXySmvOvEXGYZGbXh8k4V/zTblIN7BvgwHOs3nkL0q6U+amMw5rP7GDzUh4CtRgMESz3cZ1o4lOt6uCcy444VtZxsrycyx5PVN6AnaSOke5Wp8bCJ0LGYW1trqCo/0X8Ljdam20tWr1S3w8TWE4HP50vdFwCLvbW/B4vs+jcdVo4u27Dzoxzk1jFNZePIbtrSgWbg/xy6sG3n06/ldQVqThYAD7iV0s3p5xg8EAx6k0ytXa3GDMupBRWIfJPZBLaIxGI3X2ZPIXs9Y4+f63o0ME/KsTV+YuSvhyntGe/1ihbbAoLUils8gX9Q9qy5kYj9UWLlaqOEmlH8tAe75RWOpw34jAyqQqtTrefz7VXqzdQqOwwsF1HCR2JrnVaDxGuVLDWTaHXq9vN4uZv28UFq3m9WESofXA1MKGoxHa7Q6q9a8oVWtPFpxxWPT4f5lMwL/q++GdpLNoMByi0+mq8oZSi0arNfOumxAYh0VBURafiMcQCa1rlTuUJjRabRSKZeU+u4YtsKxgyWVUH9K2fLbkxcLCwkwOzVbbtvrQVlj3yQTX/QisrcK3vAyv1wPnT+BRtp8tFFWeZnI8KVj3AydwBJDON6/HM/U1bc1UOodCqWyM15OGdZcCZf7x2KYqqq1BW/LtXx+1yqV5EP3PwKJgyWlUMlmFOHUrjlX3wUx9aAzWr0cHWPOtqFYLpQcnZxnV/eSOV4dJhG/zNEpqs/kLnGVy3Ms8SG8M1t0imv7/UiiWHlTXTRXj/1dY8a2o6klZ6UG708X7zyegT86423l4SDHO+a37WmPOoo7nq4Pk5IDWbfzdXTB1WBM7sUkie9PrqUK80TST4RuDRUG/2I0jFo1MtYjpiZbOFWZm5uTM7c0oFhe/v+CgrVyqVPHpJPUYs7DmGoVFZc6bl/s/rAtven00Wy00mm30+j0VhMftgW/luUpSLUhWdPSm58PxKXsbs+jcExuFpQDMKKR1gul0b3B6lkbd8Csx47AsGLStYtENuN2LOnyUhlo51IX4ks7Y0saxDZZFKBoJqUL6F/VG2gWn859imh4CBIgag+Qiysu4T0/tO6EhtB2WxhqfjERgMW6FwBJYDAIMqThLYDEIMKTiLIHFIMCQirMEFoMAQyrOElgMAgypOEtgMQgwpOIsgcUgwJCKswQWgwBDKs4SWAwCDKk4S2AxCDCk4iyBxSDAkP4NsOR57KVJ+UoAAAAASUVORK5CYII="},{author:"\u534dKEN\u534d",link:"https://gitee.com/kenkenwu",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAACC0lEQVRoQ+2Yy0sCURTGP19RUkpQYoJkYVmrrDYVtGrX2o1/Q5uIWrV2VUQEbaK9EK1bFS2iaFMpLXpJWYaJvbDCHj6KJDHQsZlxhjtOx+2cczzf9zv3cGc0tvXlT/yjn4YEq5w2EVY5YBBhIqwyB2ikVQa0SA4RJsIqc4BGWmVAaWkpeqRHmuwYd7hRp9NjLR7G3MVBxQOoaMEeqxO+riHU6wzwR08xebTFVrDPNQhPS4eoJlLZLJauDrEQDnLmK07wbPcwvLZO0YIXL4OYOd+vHsFuUzOcRrMgwf1mC7w2Vy6n6gQLUvoTPNXeh7HWHhJcyjzFnWEizMMBGulq2tI8gBaFEGEiXBgKxW7pibZejFocvCbcqNPDXtuQi428PSOZSXPmGTRaOIwm6DVaZdyl851WcsXk5RKgTMHv2Qw276/xkklx6rDWGDHQaM09332MIfaR5KV5+yGKlZszXrHlgiR5PcwT/hY6fbyD1ViI8z+FbOmK1ZUoQILFuEqEaaQLc0NnuMxNS8zx+iuHltZfDpV6TkuL59LyR0+wl4gL8jiUTCDwdCso53cws5E2aLWimq70+zQJFmO7kDMspr6UOZIQzr8evmbSmA8HsHEXkbJHSWtJIljSjmQuRoJlNph5eSLMHIHMDRBhmQ1mXp4IM0cgcwNEWGaDmZcnwswRyNwAEZbZYOblvwBgwAzXJivf5AAAAABJRU5ErkJggg=="},{author:"SamWangCoder",link:"https://gitee.com/samwangcoder",photo:"https://portrait.gitee.com/uploads/avatars/user/2779/8339555_samwangcoder_1615271865.png!avatar200"},{author:"maolc",link:"https://gitee.com/maolc",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAACtUlEQVRoQ+2YT0gUURzHv+M6M8SuqIUVRMeIEFpIKiKv3bxVEIoQRdeIDlvBIiaC4aljHYoklKC8de1UEBUSe5AKob+WVtAG7tbOzG4T79msM+Oor9iQ3/O3t2XfMu/z+37e+715xlxPt48N9DEYWPO0OWHNAwYnzAlrVgFWWrNAl+FwwpywZhVgpTULlDctVpqV1qwCDVW69ewFbDrSUy+RX/VQvjeO0vgNpbKZu/ag7eIQUlu3y/F/+3+Vh/xXYDEBtzCFb/lzKnNB+mgvMr2nYFg2XeDal3l8Hx2E92p6Tej2/Ajsg93/bMiaDwAaewEQVtr3PBimCd91UbpzC+W7t1edT0Rn/xdgNNFSujr7Tq5Foafz7DGKQ7lVgQOdAQO1r5/RvGMnLWB3uoBUxzYJraJ1+8Ao7P2H5FgBbHVmiQEXpuBXfso16bsOShM3UZ6cSEzZ3N2JttygLI6wwbAsWNkuesDO86f1Xdd58gjF4UuJwOnj/cicOCl/E+vdznbRBF4Yu17vq1LrKwPwZl4sgw7rLHb0lv4zNIFF/w1azUpax3UWm9vm4at0gQNdxbpM0jqus2hfpIHDCdbmZlG8nEP144e61nGdxQGFNLAgC6D8SgULY9fw4/6kBI7oHNrUyAOHta48fCCPmuKzpLMfaVvkgVfSOqJzaAcnD5yktTfzcumwEevRWgDXtTZNCK29t6//HDaiOoviaAEc1rr6/g1q859gHzi8eM6OHUi0AI5o7TrytbEp05LYm7UBzvSdRvpYH4xmc/FGI9amguasDbC1dx9az+eR2tIh2ZIOItqs4Xh64nu4J4ffKMgkrHKntN5jGnprud4wKs9nYJUqUR7DCVNOT2XunLBKlSiP4YQpp6cyd05YpUqUx3DClNNTmTsnrFIlymM4Ycrpqcx9wyX8GxhQyiMyPuNfAAAAAElFTkSuQmCC"},{author:"MonsterUncle",link:"https://gitee.com/qian_wei_hong",photo:"https://portrait.gitee.com/uploads/avatars/user/2451/7353672_qian_wei_hong_1603769171.png!avatar200",extra:"WaterCloud \u4f5c\u8005"},{author:"Mapsterx",link:"https://gitee.com/mapsterx",photo:"https://portrait.gitee.com/uploads/avatars/user/2932/8796990_mapsterx_1615537463.png!avatar200"},{author:"yitter",link:"https://gitee.com/yitter",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAYAAAA4TnrqAAADuklEQVR4Xu3YeUgUYRgG8GdtPSqSsEzRki4j7LBIKyQoAqOTsLJLUqMM2kpFPMkDa7NSEzXcIovUsEONiFJCSQosLIPUyAJLSTAsS6Iyr203ZmQHWaX2xZyxePc/2efbeefn883OrMprXaAR/LJIQMVYFjmJIcay3IqxCFaMxVgUAUKWr1mMRRAgRLlZjEUQIES5WYxFECBEuVmMRRAgRLlZjEUQIES5WYxFECBEuVmMRRAgRLlZjEUQIES5WYxFECBER7xZM9xccSYxDNNcnKSxGptaEHsyBy2tbYRR+6Nurs44FXcI7jPdpLU1dQ2IPJaFH13d5M+jLBhxLGGYnZt9oQnyx1g7W3E2g8GAm2WVSNVdocwqZqM1e7B1/WpYWVmJf7d//gJt1iU8flZP/izqAlmwhKEyksKxYukiqFQqccav3zpxWleA8ofVFs+8ZuVyxGgCYT9hvLimt7cPhbfuQZdfYvFnDCcoG9aCubOgjT4IF2dHad66hkaEJqRbtH3GjbVD9vFIeHq4i+uNRiNqahsQpc22aP1wkExrZcMSDhi8fSP2794MWxsb8fh6/U/cuFOBzNxrfzyX8JBd2LHJF2r1GDH78VMHTmRflmX7KYIlHPSsNgrLFs+TtqMl1xwfr4WID9sHx0kTFdl+imF5e3ogKSIETo4OUpt+920mbL/0xDAI60zb78nzlzgSn/bHNv7tgKzb0DT8gQA/BPlvgI2NtdSU/OJSXCi8Nej8NEHbEOC3Vsp+aO9AckYuBGC5X4pgDbUdh0Iwb2FPby8uXr2NvKK7cjuJx1MMS7gOHQ3diymT+7ej8O1W9bQWEcmZEsTA242h3pdbTDEs4UTNt9j3zi7k5BWhpLRy0I3s+7Z2xKeew4vXb+U2ko6nKJb5xVuY6lVjM5LO5CIlVoPZ06eKg3Z190CXX4zrtysUg1J0G5rO2vy2oE+vR33DGyyeP0d8pBG23/2qGsSdzFEUalRgCUMcCvZHwJa1sFarB4E0vWsVH7qbW1oZSxAwf5QxqQy8hikupeS3ofnJr/JZgrjDwXCYaC++ZTAaUf6gGglp50eDk7K3DkMJ6FJi4L2o/05d+G3qdE4ByiofMRZjDbMD3CwCIGMxFkGAEOVmMRZBgBDlZjEWQYAQ5WYxFkHgP4oq+uPfv+bIWIT/GGMxFkGAEOVmMRZBgBDlZjEWQYAQ5WYxFkGAEOVmMRZBgBDlZjEWQYAQ5WYxFkGAEOVmMRZBgBDlZjEWQYAQ5WYxFkGAEOVmEbB+Af6T8DmYf9viAAAAAElFTkSuQmCC",extra:"idgenerator \u4f5c\u8005"},{author:"\u7f57\u666f\u5cf0",link:"https://gitee.com/luo-fengjing",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHgAAAB4CAYAAAA5ZDbSAAAIKElEQVR4Xu2d2VNURxTGP0DGhW0QijEsChLZZJNVEtBEU1oxVXnKS/6w/AlJXvKUqpgylTJGXNlHBEaQRRxkExBEBoGB1LmVwVnuDPfOneHeOZx5tbvvPd+vv77dp7sx6aeff9mD/NgqkCSA2bJVAhPAvPkKYOZ8BbAA5q4A8/jkGyyAmSvAPDxxsABmrgDz8MTBApi5AszDEwcLYOYKMA9PHCyAmSvAPDxxsABmrgDz8MTBApi5AszDEwcLYOYKMA9PHCyAmSvAPDxxsABmrgDz8MTBApi5AszDEwcLYOYKMA9PHCyAmSvAPDxxsABmrgDz8Czj4O+vXUPhGQcLuT9sePD348eYmZ83PR4BHAcEAlhFVHFwHHqalf6EgwA+YoD1DHMFDge+aWtD2qmT+yq55+bx+927mlT7urUFlaWl+2W3t7dxv6cHLyanNNX/8btbyM7K2i+r5901PcBAIct+g/WIJIDD9wABDEAcbGCI0Fo1+BssDtaqXORy4mBxcGx60kGtiIMPUii6fxcHi4Oj6zl6a4mD9Sqmrbw4WBysracYLSUONqqgen1xsDg4Pj0ruNVgB3/c2sLruTl4vbsHvkBKSjKKzpzBcZttv+zK2hoWlpYPrEsF7BnpcOTm7pf1er2Ynp3F1vaOpvq0zZl28lOaVM8aXtMDDBSyrIMNxGR6VQGsgkB2k+LTL8XBcdBVHKzBwTteL9bW17G3p+3/DDmWkqKU9e4e/M2ONdOMtDTYUlP3mxXAGgDrEels/mf4qqVFmei8W1vDyMQEBkZcseYYtj3ZD9Yg9a2rV1CQl/fJBR4P/unqwuzCYsTa9owM3GhvR262PaDchseDrsFBDL8c1/B0Y0V+uHkT2ZkZut/d2FO11bbMN1jb64aWut52GWXFxUhKSgr4R/fcHP7sfAA6nXGUfwkNuLWuFvUVFUhJSQlguPr+PW7f78TK6upRZqvEnrCAL174HJfr6gKSGxQQJUieOJ0YGnt55OEmLOBwcLe2t9E7NIT+4RGB+78CCedg34w5/dSpEIi0RNr1ek2Bu7L2Hr/duWPKsyM9NKEAR4JrtrL0vf/1j9tmv0bI8xMGcElhITqaGqHmXCuoKoANUKBlUNul+oAdGwPNxaWqAI5S1tryMjTX1ITMlqk5ur3nmpiIsuXoquXnOVBeUozk5OSABmhrUr7BOjWldW5tWRlS/fK81ATlnGm/9q+Hjw41kRFpaXa/uwdjr17pjDD+xS35DSag11pbUFJUhOSgDBXBJSH/7e45VLjhJnh0OGDA5cJT57P404riCZYDTCcrOhobkZdzOiSc3d1duCYnce9pl+LqK01NeLuyAqcrvhsLBPdqczNo1yj4Z/WUqKUAV1+4gOaaapw8cSJESMopPxsdVZxCM2nKQdOls929PUy53XjQ24f1jY0o+njkKgWOPFxpbkZ2ZmZIwaV375TPhJVTopYATMBollxKQ3LQ5IVU9WxuonvwOZ6PjSnXNK9fbkVeTk6A4JR/ftQ/gEm3O2aQI8GlznSvqwvTb2Zj9rx4NGQ6YLqX23CxClnp6arxBYOj/HNteTmOHQvcYKDK/i43Kpay7m5sRHpaaMbsg8eDx/0DGJ3Sdn/Y6LsYqW8q4BvtX+K8ykTKF9CbhQVlMhU8BFKnoKFcLelBkzBaPnX29kU9dEb6VCTaZoapgMNt99Fkim7XP+jrCztTpslYe2MDHEFDta9z0HGfrmeDul1G2TLqQHQEKPhHnwraqRoZP9y1d8I6mF48eMN+8+NH9A4Na5oZ00y6vaFBNfGgd8imb3tHY4MycQs+PEBt0Tf3yYBTd4cxAicWdU11MAVAkL7taFeEpVnpw74+zMwv6IrtUlUlGqqqVLNdNGS/np1TJkThZtl1FRVoqKpUnb3TiyyvrqKzp0f3e+kKIk6FTQdMcZF76DzWi6mpqJMXNCn64lI9sjI+nY3y10wNEg3zrbU1yHc4QhIqVFdL54gTl5g1awnAsYqGOsrV5ibk+x3e82/bN/yPT08rji8rKQ447upflo7tjoyPo7OnN1avZ0o7rAD7hvxwaU76d0ot0sEA/3PMwcqvrq+jO4oJmikED3goO8C+eNvq61BD62WV2XA4TQj+hNutrHHjkRUzowOwBUxittTWoL6iUjUpEiz24vIKnjqdyi4Vpx87wJT8KC8pQVnxOdgzM1WXPP4ANzY34XS9QP/wMCeu+7GwAOyDWnr2rHLDIPictBo5mnBRMoVuP3A+HJ+QgGntfL6oECUFhcq2It1JUktOqIElx7rGJ9A7PMwarC/2hABMSRC6RU9pydN2O04cP666bg03xtJ61oxLaVYY8y0F+Fx+PnKy7ci1Z8OemaFsJthsNl0w/UWljQH3/Dyej44mZBYqFh3EVMC0a9NUfRG2VJumma6WgLd3drCwtKQc6zmMm4Va3snMMqYCpqufdG2UZrtGfrTLM7v4FuOvpzE2Zb2Db0ZiM1rXVMC+tSqlDdVOcoQLjoZe+is69Ee/yalWPjJjFJDR+qYDJhff7GhHjj3wArcvsJ0dLzY2PcqOztziW0zOzAhQHdRNB0zv2lRdjbqKcuXqJx2HoRnv/NIyZhcXBaYOmGpFLQHYYAxSPYICAph59xDAApi5AszDEwcLYOYKMA9PHCyAmSvAPDxxsABmrgDz8MTBApi5AszDEwcLYOYKMA9PHCyAmSvAPDxxsABmrgDz8MTBApi5AszDEwcLYOYKMA9PHCyAmSvAPDxxsABmrgDz8MTBApi5AszDEwcLYOYKMA/vP6WwoEyTY1VFAAAAAElFTkSuQmCC"},{author:"Herbert",link:"https://gitee.com/mxj_3306",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAABLElEQVRoQ+2YMQoCQQxFZ2sLwVbBWizEg2jjhQTv4F28gHgJsVestLFSkC0EcZ2EDGSzb+uZbPLfz0x2q8l690wdeioKDk4bwsEBJwhDOJgCWDoY0K9yIAzhYApg6WBAObSwNJYOpkARS2+W07SaD99SHS/3tNjus2TT7ssKXi+iYIlav9ZqSWn3SXKGsEQtCNcKaK2p3SeBhKUlamFpLK33i2RgkbyleA9Lkvlc29qCz7dHOpyuWXWPB700G/XFI2lWcEZLiUx/1mrvU+0+SerFe1jSixSc+VkJ4QYFsLTEHoyWjJb802rsmNZeSxbnQKkYRU7pUslaxKVgCxU9x4CwZzoWuUHYQkXPMSDsmY5FbhC2UNFzDAh7pmORG4QtVPQcA8Ke6Vjk1jnCL6gtiwgepIm4AAAAAElFTkSuQmCC"},{author:"Doson",link:"https://gitee.com/doson",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAACu0lEQVRoQ+2Y3UtTYRzHv3vLOYcu1F5URClcbyuQ0l4QuwgKKYzoxgi6E/oPoovooiKIboooqosKIuo6THqRSaXkkmq6rQ2WOnRD59ZMR1t7OfGckUW2Fj7n5DmPz7k+v2e/z+/zfXbOczS3OroELKNLw4EZt80NMy4Y3DA3zNgEeKQZE7oAhxvmhhmbAI80Y0L5nxaPNI80YxOQJdItnTZY99YUHFUmlUUqkUZk5As8LwIYdUwWrKG9YUmBf20+mxEQ8kTRf9eN2MQcLVfeetmBY8E4pv2xBQ1o9VqUrS2BubIYRSYDoMndEg3Moufqe9mgZQcODkfQdWEg78QNRj2ajlnR0FoDnUELCMDE0DSeXHTIYnnJgX9Q7TqxCRv31UKr0yCdzMDx0AtX95jk0IoBJqYPnNqO1Q0rRchCyVjsJBQDTAC2ta9D45H1YrTj0QR6rzsRdEUWy/bHOkUBV9sq0HpyK0yWIjHWAw+8cD+VNtaKAiZKjl5qgaXaDPKYcnWP4s39j+waJmSHzu6c38de+zhe3hxiG7jtdBOqtpSLkBxYAteK28OHz+9BRX3p8jBMnsXt53bDUlWCbDoL5+MRvH3kk8DrzyUUZbi2cRXISau4dAVSiQz677nhs4+zC7yjwwpbW734ejkb/oqeK+8Q9s+wCUzifPBMM8rrcvt3bHAKzy4PSgpLFlNMpJuPb8Dm/XWi3WQ8hb47bvhfB9kD/v14KAgC/H0h2K99kBz2vxjO9wFAb9SjbI0J5koTDEZdDk4Awp9m0HvDqd4PAP+qibw7k4P/q9vD4klJrkv2Pfy3xtPfMkjOpTDp+wzP8wBC7qhcnPPrygIse9cUP8CBKYanilJuWBWaKJrkhimGp4pSblgVmiia5IYphqeKUm5YFZoomuSGKYanilJuWBWaKJrkhimGp4rS7/oF0OgLpe3RAAAAAElFTkSuQmCC"},{author:"\u7f85\u99ac",link:"https://gitee.com/romanlcc",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAFmklEQVRoQ+1YeWyTZRx+2rVru/s+2rGjGzsYbGy4CQ4dww2BGNCQKGqMRzQSNApRhIjRCIkwj0RBvILEiJqgMfKHExYRwg7RARu7B7Ns3bKr27q127peX2veF75lhZ392qSb3/vn973H7/k9v1sgP3fcjv/REvCAFznbPMOLnGDwDPMMLzIN8Ca9yAi9Cw7PMM/wItMAb9KLjFA+aPEm7YxJF6fmYVVghDNH53zmqk6DvS2Vc94/3UaXMHwqaxPWhsg5CzPTBRXabjxec4bzGy4FPJVQecFyHEnPR6hYimPqWnx4s9pB6I/S7scT8mT0mgx4tfEiKoe6Hf5fWL0Nyb5B4AE7yTXPsDOKY3140GyExmxwuEIoECBOFgBvgRCdxhEYGKvD/0CRBHKpL4w2BupxPWx2xyFqjNQf/iKxZ5q0M8qa6xmP8uFvM4uwJjgal4Z6UKy6CsZuw42x4Wmx+HmJcTBlDfRWM37tVeGavp/ufTkuAyHeUhxsrZo4W5KzBUm+QfTuZ2v/mKt+pt3nEh9mbyfR9MsV66GUBaJ0QI2X6s9P+fAzMWnYn5QDAQQ4rLqCbzob8Up8JnYnZFGTZr9xRjfFBS4FfDR9HR6JVEJrMWJfSyXO9KuxLjQGJhtDGWLXd5kb8GDYEtTqB/BY9e8YZSz0F7GUwrBY9BjHsKup7K4U5QoFuAzw04pUvJWUA4nQC191NKBYdQXrQ2PwQdpahIllON2noiCeUqTg7aRcSIVe+KH7Oq7pbpkzWf4ib+yMy4B6fAQlmjaMWM0OGIesJvw50MkJt0sAE1M+kVGEeJ8AlGm78GTNWRA/PZ5RSCuwXtMY3myuQNVwH75f+RBygiKdEprEhYK/f3HqLHuIM2AC9nBqHnKDotAyqsXOhgs0YO1LvAc7YlfABjuOqevw8c1qvLv0Xjy/ZBlEAiH6TAaU31FVKWUByA6MgM5qQtlgN0x2xgEcMXXi31wWZ8A/Z2+mEZosI2MFAzvNud5CLzB2O43CrzVdBGvyASJvuncqtmYrM7kAdRnD7yzNxXMxy2CxEy4BIQSQeYno/SR3vlB3jhYWny8vQJpfyITMCxbwZK1P9lvWvDP8wxAslmBXQhZI1dVlHKXA52vSJLeX9negtF/NiWjOJs2+TsAeSs3D1kglLS9JkNouT8bmiARUaruhMY/T9LRE6udUK2mx2abstuaL3iWAJ4MdYyx4/9/LONnVQk2dpCqLncH+65eoP7N1d5tBj0/aahzkLQqPxcMRCVQ5n7XXQmcxTfwnsaFxZHDGCm4u4DkDjpb40lybH6LAuM2KU903UKcfQLTUF6l+wXggRIFgsZR+f725fALwgvXhT9PzsS0qCYJZ1Ksy6GgtfCjlPmrSCxYwa7YigYAy3Ge65attBh3MdhvMNgabwuOhMgzjvdYq7FWuooCtdhttCScvkp9JBUbSmdFmpVGfXcSHv+6ox5H22rlY7rR7OJv0bK+T8pIA/E3TjmqdZsKkZzt353+PClo/Zm1EXnA0SjTttNoinU/zqBa7m8ppQxAn86f1NQlmbNBasCat9AnEyZUboJD40bTRaRzFgeTV0FpM2FF/Hi/GpmNrZCIaRgaxser0wgfM+rCBseCN5graLZE5NVlkjhzuLXNITdujkxd20PpieQG2RCpRf5tBdiwbJJbQhuGvoR46FFBIfGk7mCALcKrwIAqcbpQ7n3jAKWiRzoYAlt8GQ5p+ssgsWekTQCcZB1qrcCKjkDL9U08rLSymi9KzCU7K0T3NFfhnuHe2re6L0o9GJdKpxllNO51wkLVHmY1hqxmXh/sm5lWsBDMFLadRzOMgJ4bn8Y7HbOUBewwVbhKEZ9hNivWYa3mGPYYKNwnCM+wmxXrMtTzDHkOFmwThGXaTYj3mWp5hj6HCTYL8B5MLc+arI2xAAAAAAElFTkSuQmCC"},{author:"Proud_Cat",link:"https://gitee.com/proud_cat",photo:"https://portrait.gitee.com/uploads/avatars/user/2661/7985226_proud_cat_1616052121.png!avatar200"},{author:"\u672c\u5fc3",link:"https://gitee.com/benxinyinghuochong",photo:"https://portrait.gitee.com/uploads/avatars/user/427/1283569_benxinyinghuochong_1616052536.png!avatar200"},{author:"\u6211\u4e56\u7684\u9614\u7231",link:"https://gitee.com/my_99599",photo:"https://portrait.gitee.com/uploads/avatars/user/2727/8181734_my_99599_1619689375.png!avatar200"},{author:"lu xu",link:"https://gitee.com/xgluxv",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAADoUlEQVRoQ+2YfUhTYRTGnztn2xzb/KCPP1NSKjAjkEiEsMQC09IwSqmIIgkiIRVKIhDCgjQQo1IKFMIiSUkhyOxDFCP6QJJItLIiLA3d5jbd9417zbHN6e7cpb2td/8N3vvuec7vnLNzLjN6PoHFf/RhqOEwp00JhzlgUMKUcJhFgKZ0mAGdZ4cSpoTDLAI0pcMMKG1aNKVpSodZBJaU0oqUPGiyK8HIlHBMjUHXWgrryAvBoVFllkGZdgxMRCRYuwWmvlswPKnx+7x8XRY0ORcgUcYF9Jz7xSExzAUqZv91yOLTAIaB0zQBfcc5mD90LmhaunwNogtqEblyLcCysIz0QXv3BFiLyW+gQm6YEyBL3ApNbhUi1Kt4PbbRAUw0Fi1oIKawAfKkbXyA7BNfoL1TDPuvjwGZ5Q6HhPCcSlVGCZTpxWCkMsDpwMy7dujayuaZUG0vhTLtKH/OaZ6Coesypl81B2w25IY5Ae7kfJmJ2lQAVdZZSBSaRYMi1H1ICXMiudqMOVAPadxqXrN9fBjaeyf5dPWoWwDWb28weftIwHVLRA27i4hKLYI6sxyMXMU3JPPQU2ibjyP2UCNkCel83TqmfkLfXgHLcLdQmD7PhZzwnKrovGooNuQCkgiw1mmYBx9Dvn4nX7f8X1dvPQzPaoMyS0QNzznwTl+XM9aJmYEO6O6fDtosUYY5MR4N6o8929ggdC0lS/oL8hUhYlLaldr5NVCk7OG/snYrjD3XYHxeJwpd4ggrkndBnV0JiSLaZVCsZjV3ITGEF67hpY+RRKd09N4rUCTnAIwEzhkdrF9fQ56UMdu1HTaY+m7C0FUddGoTQdh7xJzub+UNupYFQNCCISQaITfsvUS4T1PeXdvfgkG8YW5NjD1Qj2XxW3itvhqUekcFlJsPAxFSfpbm6OsfnBHijbxJS7P7EqI25s/W6QLTlHdQ/tltKSq1EKrMckjk6tn5+f1DaFtO+aTinfbuC0agqIOuYeeMHtZPvWAdVr+/bR8fgrG3Yd6GJGSa8mhsfgK0mJCgDft16XbA8rkPk00HPbYgLmCGzouYftvi9yr33Zm1mWHsroOx54bf59wP/HXDtu/9rrcXcNhhetmEqUdVgkTzu/O+q5CuSJxtcvof0LWVB/QCcUmGBakj9BA1TCgY0WRRwqKFktCLKGFCwYgmixIWLZSEXkQJEwpGNFmUsGihJPQiSphQMKLJooRFCyWhF1HChIIRTdZvRr2xh5MWYPkAAAAASUVORK5CYII="},{author:"\u5929\u9645\u5c42\u4e91",link:"https://gitee.com/zhangjun1024",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHgAAAB4CAYAAAA5ZDbSAAAH10lEQVR4Xu2caWxVRRTH/48CpVDWUroA3enOYgEBgbJERMQEDRpDDMagEbUSNAgofkAhrAKJKAgGSdQQ5IOKCYlGEEFBtlIsdKOlhRYoZelGN7qbc5MH772+1/dK3/Tenp77EebOzPn/5j9zZub2mQKP7GmGPGwVMAlgtmy1wAQwb74CmDlfASyAuSvAPD5ZgwUwcwWYhycOFsDMFWAenjhYADNXgHl44mABzFwB5uGJgwUwcwWYhycOFsDMFWAenjhYADNXgHl44mABzFwB5uGJgwUwcwWYhycOFsDMFWAenjhYADNXgHl44mABzFwB5uGJgwUwcwWYhycOFsDMFWAenjhYAHeMAsvDEpAUPBo9unXrmAYVtnKipBCvXPhNYQuuV20YBwtg16G1paQAbotaLpYVB9sRShzs4uhpYzHDOHi2bzBm+wbBw+TeNdjT5IFEn0D07+5pJU1K+R3k1dxvo1yuFb9cWYqd+RddK6y4lGEAq4pz8sBAbI+bBn/P3lZN7C/MxoeZ/6hq1jD1CmDDoFDTEQGsRlfD1CqADYNCTUcEsBpdDVOrADYMCjUdEcBqdDVMrQLYMCjUdEQAq9HVMLV2ScD0C+j7bmZhZdZJw4BQ1ZEuCbi+qQk78lPxeV6KKl0NUy97wImDhuKL2EQMsTiqFMCGGX/t78hL/hFYF/0UvD16PKxMALdfV5dqoIuAAJtLAJdebEOh4V598U7wSPSxAby/8DLOl99pQ02PV/RWbTVOlhY+3stueEvXKfrAE3MwZVCgG8IwbhV6X/4LYMVjQwCLg5UOMXGwUnmBLu1g1UmWyWTCB6FjEOzVrwXG6sYG7C64hGvVaj7bMTfYpZMsxebBrMFB2BIzBYN7erVoik6zDhRmYxnzz3Z0naJVA14VMR6Lg+LR3cGHfLnV5Xg99TDyqstVd0W3+lkD/nnsXEwY4O9Q3KrGeqy7cg7f3cjUDYDqhtkCnukzDNtiE+FrMT03NTejCc1Wjv7z3nW8lvqHap11q58t4I3Rk/FqYBS6mUwPxb3+oBJVDfWI9h748N/K6mux6vK/+PV2nm4QVDbMEnBknwHYO2oWQntbZ8/k1qyqUqt1mZKtQ7ev4u20oyp11q1uloBXj5iARcNjrabiB02N2JqXgtNlRfg6fgaG9fLuEi5mBzih/xDsiJuOIK++Vq6xzJh3xE/HPL9wPJq8oV0ILEo9gsrGet3cpqJhdoC/jJuOF/zCrNbehuYm7L2egc9yzmgazvENBq3Rlvvj2qZG7Mi/qLmc08MK8MKh0aC9b7/uPa0YFdRUICn9GOgPzszPrviZeN4v1MrFhQ+q8H7G37pe77l7cLEBTInVrpEzEdXnUYZMYtm61yygvW0UJVx0dvzmRT5TNQvA9LXGnlFPa3fLlusqwcyoLMHiS0ftnlati5qEhUNj4GGxlWpsbsYvRblYmnHc3WbSpT4WgL+InYYX/cOtQJGaFQ11WJ+bjO8dnFSR63fGz0CM9yAr8Wk93l2Qhk25ybpAcWejnR7wJxHj8cbwOHh287DShU6tDt7Ow5L0Y63q5Wjdvt9Qhy15Kfj2ero79e7wujo1YEdwScXMyhK8m/YXsqvKnIq6NWYqXg4Y0WIG4AC50wKm9XNBYFQL5xLNW7VVWJF5AkeLbziFSwVaW8NpX7w7/xK2Xb3gUl1GK9TpABOMrbFT8axvsN1rQHLd+ivn8MPNrDZp7Wg9pkroM9ufiq5gdfbpTncQ0qkA0ykVTct0BWibLROI9iZHtHXaHDMFAZ59WgwO2kKdKSvSrhct99NtGkU6FO40gBcERmJZWIJd8c1wKSEiAO155vtHaIPIz8H32vfqarQTr28K0trTTIe9a3jANCVviJ6MuUNC7K637oRrVt0ZZDo8OVVahM155w3vZkMDJtcuCRmNIK9+dqdkAqIqCaLf7VobORFDLW6dbG1HS8Lvd/OxNuesltgZ8TEkYFprV4SNxaSB/g6/pyIxabrckJuMHwuzlWhL/dgUPVk7CLG35psbpUF2+G4Btl/7z6VtmZLOOqjUUIApufk4YhzIPZZ/LGbbd0p40iuK8WnOGZwqvaVUL+rTmsiJeMY3qNXBZs62k8vvYF9hlnbcaYTHEIBJxOXhCXjONwR9bW6CbEWiLcuhO1fxUdbJDt2yLA0do30JYvuTiPYg0gAsrqvB8ZKbOFiU6/J+XMWA0BUwTYEk2nSfYa061hw4rXN0X0s/Q6jH42ybZq9P5Q21WJNzVtky4kwH3QDP8wvD2shJ8OnZy1kftf2tkZKZpOBReCso3u4H9ZbBtHdf7lQYFwroBpj6tjJ8nOZg24sCc79pqkurKMbG3GQcc/HY0YWY3VKEcgTq//yAcLvTtlGuHXUFTErbu+ojsHfrarCnIE07VDDyY84f6OjUvD4b6cMB3QHbHvTT1ofW2K+upXZoEtXeQURxvBcyWruXpvPwJBdvstrbrrP3dQdMHaTkZfWIJ7XToc4G1pnAev+/IQDrLQLn9gUwZ7oABLAAZq4A8/DEwQKYuQLMwxMHC2DmCjAPTxwsgJkrwDw8cbAAZq4A8/DEwQKYuQLMwxMHC2DmCjAPTxwsgJkrwDw8cbAAZq4A8/DEwQKYuQLMwxMHC2DmCjAPTxwsgJkrwDw8cbAAZq4A8/DEwQKYuQLMwxMHMwf8PyLb4J53+FkbAAAAAElFTkSuQmCC"},{author:"caro",link:"https://gitee.com/caro-pro",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAYAAAA4TnrqAAAEtElEQVR4Xu2Za2xTZRjH/2PturZbu7GurDSTSyDAnI7ohk4cmEwCxHuWSIwQPpioqFESjIrxix9QEqOJUZbFb8YYv4i3YaYJhohEs6FRkdsAFdkFt+5C13Vd17U1z2l7FhbXnKft3urynI/b/33PeX79v7f/W1DfdjEOeQwRKBBYhjhpIoFlnJXAYrASWAKLQ4ChlTlLYDEIMKTiLIHFIMCQirMEFoMAQyrOElgMAgypOEtgMQgwpOIsgcUgwJCKswQWgwBDKs4SWAwCDKk4S2AxCDCk/wln3bXCjntWO1DjtsBhKYTFVICCZBHh6TiCkRjOD4XRcSGAry4FGOXlVppXWDtvLkPLjU54HWYdTrry6Da41x/B+7+M4vPzY7klYaC3vMBaUV6E5ze6UL/UhkUpCxn42JRkKhrHlxcCeO34IKNV9lLlsAjUgeYlWFVh0d1EjhkNRdHZO4ETV4I48dcEJiIxuO0mNFbbsGmZHfVeK2zmRXrF0VgcHZfG8eqxgewpGOxBKSwq9o2tVWjw2nRQBKW9O4DWrmEN0FzPTUuK8eztLtRVFettx6diONQ5jI/P+g2Wm51MKawX7qxES41TH3qBZLGHDRZLTju4pQoELvWc84XxZHtfWtDZIZpprQwWFXiguQqeUpP29kgsjg9/vYZDXcOsWmjl3N/kxmJrodaO3PgOuevM/LtLGazZruoeCuPxLzJzxFvbPLjFY8UVfwSnBydxpHsMZ31hFvRMxMpgfdBSjbUui/aNNDl/dNqPt38YyuSb89ZGCaymZXa8snlm6IyFo3j9uA9H/xjPW+GZvFgJrIdrnXjmtgpYTYml//K1Kez+pFfJpJwJlLnaKIH1RMNi7F5fDnNyB/pjfwh72vtyWYeSvpTAenmTGw+uc+j7o5N9ITx1RGD96y9M89UDax36/wRWmoGwp6ECu9aX6cNQYKWBNXvOOjUwicc+61Uyz+TyJUrmrG2rSvFiUyVKihKrYY8/gr0d/dqm8v/0KIFVU2nRznSeUrPGJtt91t0rS7BvowuhSBx0Evj2clBJKKgEFgFqvdeLBq81Jzv45xpdeKTWicLkVoRS1F2He+bdpMpgzZ63Mj0bUszz3v1erEkenWJx4NNzfhz8zrdwYFHo9+ZWD6qdiaGYaerw9IYKPFo3s7KOhKJaAPh9z8TCgUWV7G10YUetE6bk8OHmWdtXl2p9pOIZSli/+X0c+4/+Pe+g6AXKhiG9jIZQ231erKtMpA/0GE1K6bi0s64MZcWJHCu1qu77+ir+HJ1aeLCoojuqbXipya2HgPS3uTJ4WkWbV5aAUovl5UXX3QDRitraNQKjKWsuaCp1VuqDb11qBYWBNI9lcLmDweA03u0cRsdFtXeIeYFF0ChPp9hm83L7dbc26RxAi8LPV0NoOzmC3wYmc2EWVh95g5X6SoL2UI0DG7w23OA0a+CKChN+o+FJN9K+4LQWH9PF6k/9IVaBuRTnHVYui5nvvgQWg7DAElgMAgypOEtgMQgwpOIsgcUgwJCKswQWgwBDKs4SWAwCDKk4S2AxCDCk4iyBxSDAkIqzBBaDAEMqzhJYDAIMqThLYDEIMKTiLIHFIMCQ/gPZzjwMvobRwQAAAABJRU5ErkJggg=="},{author:"\u6811\u888b\u718a\u7684\u6811\uff08Mars\uff09",link:"https://gitee.com/marsgitee",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAYAAAA4TnrqAAAHKElEQVR4Xu2aeXAURRTGvz2SzZ1s7mNzcaMioEIpQmFFue8qECGICMgZoBLOoAZNKQkWCEgwnGIAw2VhFCKGIxYIaGkpCqiAiIGcS25zkM2xY3VTO+xulmQaE3G2ev5KZr/pTP/yvdevX6/i0ngI4JckAgoOSxInKuKwpLPisBhYcVgcFgsBBi3PWRwWAwEGKXcWh8VAgEHKncVhMRBgkHJncVgMBBik3FkcFgMBBil3FofFQIBByp31f4Hl3KkPAiathtrTH42Vt6HftxJ3rv/A8HrSpNrnpsG1RxQV1926jJLP35P2IKOqXZ3l+lgUdAt2w8E7BA1l+cjbNBU1l7MZX7F1ecjcHdBGzaDC6kunkJP4QusPPYCCw2KAxmHJAVbwjBR4DZwq+VUrTu9Gwc4Ym3q7D0PzCUohVp69E/mpMzksDgvAv10NO7xzDi5d+0FoakTplxtRtHuJ/Tir8/pfodE9IsUokkoJ03hCgwHlX++CR58xUDq5NR9fpYbS0ZneJ1qhsZ7+bKyrRmFaHCrP7Zf0Tq2J2nQ1bEtYrt0HQLcoHQ4+OhjvVKEkcz18R8RC6eze2pzEz8lzBTvmo+LMHsnPtCRsU1hhSw/DMaCj+PcUDhr6u0KlhrH+Dhr0NyAYm+jnrVX0ns9MQPCsLVC5eVMXlmSsgd+4ePtxlvV/JXDqWvgMX0Rh3a+C9x21mIZO6VcpFo/7DI1BwJRkKDWuMORfwZ/xfanDbF12UTpEJJyEW4/n6fysYbl0eRpB0zfBucOTqC/OQd7Gyai99p3IgtRh3kPmAgplq1sY2cMim+jQuINw9IuwCYssBGFxB6EJfRQQjKg4uw95H0wRYUW8kQW3noMBQUDZqe0o2Dr7vulE9rDMw8iWs8g9v7Er4Dchga5kTdVlNBmTlYsk8Y5J30MT0g1GQw30e1fQMPXoO46GdOW3hyzAyR5WaOx+ePabKE6KhGHl+QM07Aq2z4Mh7zf6mXmo1l45h5zVw+Dea6hFci9Ki4Pv6KVwiuyN+qLruJU8GobCa+LYsoalCeqC8JWZcAzsJE5IaGog352jzqi7dQkFW2fRHOX57EsInrmZrnpCQx2KM9bQFc+0MNRePY+cd4eiw9unKSxSQxHN7QMJ9gGLLPH+ExIApRowNkLh4ITGSj2aqsuhCe4KKBSou3kRuRsmUYfpFu6FV/9JNJnXF/6BpppyOHfqS3NZWVYq3UD7T0yE39jlUKgdKezcteNFd8naWZGJZ0CKyobSXChUDlB7BdLVsHDnAvi/+Bacwh+nrjABU7l40ALU0T+SJnRBMEKhVFFohTtiUHE2HcStYSu+oLCJA28fSkTxZ0l0HNnC8uo/GUEzU6By1aL64klodN0tOqVKBw2CZ2+DWhtEk3nB9rm0fgp8ZR18hi2gcE1X3V8XcGPVQLG+Cn4tFd6DZlEHmvIbeVa2sEIXpdM8ZKyvpVW3dtDsZm1lbdR0OAZ1hv6TeBEMcU7okk/hFNbj7j2zEDSJ3HsPQ8j8XVB7BtB9X9He5SjL+lCesMwnYyi4iqI9S0HcILUHHxCdDN9RcdRdRkMt9PteR2nmBosyITz+KNyfGEHvVf2UiZtJI+UJKzT2AMieDhBQdmIbrYekHliQ2ipyVTacOz51LwytEjn5wHvIPARGJ6Hx72Ka/EuOrJMfLPMSgKx8+ZtfhbHBIBmWeYFqokXKjdJjm1CUtlgESKA6R/RCze/fyLd0EBO7ixeqfjyKm2tGS27+ka1P+LIMmsfI1VRTAZWLJy0xyIqalzKtxSM0WSZ40tkkWxTTtkVqp1QXkwbPAdFiuVBy5H34joylhSopJUg4566/txuw3iTKElZAdBLUHv7IT7174CkFlvfgOQiYnASVq5cFGDH/KRQW+0ZrULKus8wn0xosi84DaeOYhZz5s2TMlk6aZeks6/96S7BIog5bcvhuv0uhoFU5CT9SLpgu3fyP4TXwZVqEkk5rManaM5KbmcvuYZnnKZKXqi+eQM47QyxAkAahuA2iX/qw3BOaxHYNiziGJnSVms7XfFNtbRvSMdUOnkMrdnIqTZxn3V62W1gk7EjfnRxmkKuhNI+2a6ouHLOVu+nRGuk2kM109c9ZNjV2C0uorxVDi9RT+vR4lB3fYhOClJsk95EajeRHuhD8crxZOEsZR4qmTY/CpCZ4Uq37DF+IkswNTF88I0dtTuE9aUiaLpW7Dxy0wXSRsLX5lgJBquahwCIvR7oM5q1hKS9sfuJjSy+l2pfyd+6neWiwHuSlfccso81D01G9OIYgoLGiEPr9b6I8+6MHGVrSM7KCRY7yXbr1t2gQklmSkyHSrmnvq11htffL/9fjc1gMxDksDouBAIOUO4vDYiDAIOXO4rAYCDBIubM4LAYCDFLuLA6LgQCDlDuLw2IgwCDlzuKwGAgwSLmzOCwGAgxS7iwGWP8AtDDqqnW6nQsAAAAASUVORK5CYII="},{author:"\u5e9f\u5f03\u7684bug",link:"https://gitee.com/abandoned-bugs",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAFBUlEQVRoQ+1Z13JiRxA9iCBQBCVAQoByXG1ZL/56P/nBZT94yxskkQQIREaEVSDjOlN12SuB1oR7KQrfedkqdmZunz7dp3taut9+/6ON/9HSaYCnnG2N4SknGBrDGsNT5gEtpKeM0C44GsMaw1PmAS2kp4zQyRGt2VkTGo0mms3mWH089pAm0H2vB2urNmTzD7jyBacbsF6vx+WHUywuzKPVauHuPonbaGxsoMfOMJGt2qw4PtjFrMmEaq2Gm8At8oXiWEArBvh4fxdLiwt9G200GgTgZrOFSrWCdp+DJqZB+C7e93feblQM8C/nJ7BZl4c2pN+DiXRGRMSwS3HAjUYDD8USWq0+KRvQ8kKphGQ6O+CpH9sVB8ycvPIHUSiWexo1ZzHD63YJwco/FIVSy9eO2yUELRK7R/n749DA3juoKuA9rxsupwOVahWRWBzpbB4r1mWcHu7DZDIincvj202gY5vHtQkCnpmZETU6lckiFI0pWqtVBXx5cQbr0iKeXyr4cu3D0/MLnPYNHO56BKhYIoVgOPqKjF3PtnCSwaAXv/NsMBJFLl9QhG3VAJuMJhzteaE3GJBIpeELhoXB+zsebG86RI6HIneIJ1NdQGzLS2IfQ5uaEIrEcJ9KTzbgTfsG7Otros7Kc/ri9AhrKzbUanXxOwWu12KDsufZRq1eF/ms1FKF4cBtFPteN8zmWaXsFPew7/aFwkhlckPfqwpghioFi42FkmtiAb9XlihIbtcm2FaxW4rGE0r6o6+7VGH4PcBSN/Zftbovy4fcpDhglp4///6nW3mtS6L+MsxZagZpKkbtruTGjA0wc9q95YROpxuYm1H7Z1UA/3r5EfNzFjw+PeOvT59fgZK/gaX/YFjX6413wfOMpPL3yRT8ocjAjup1QBGG2R9/PDuGxWxGoVjCp6/Xr74lbxkr1RrMsya8VKr45gv0DG067vz4UDjwZ/uG8YAigOX9cTKTxbU/1LFFzi6biHA0Dq97S+Ry7qGAz1e+LrvPjw+wsbYqHhhU8lHev28vVwTwz/pjqRTN6HQdgFJ72W63u0Y8HCQ47OtgpqezOVzJnDcMo6oAPtzzYsvpQKvZhP82imQ6I77DCcjZ0QEs5lnRIrKf5nOQrH84ORQvJ7LIRwSbFd7DlpQPC7acX679ir6UaJMiDEv1tVKp4utNAOXHx1egyCSbf7nwMD/pjIX5ObTabfAsHUMVp/Axv1nilF4jA7bJ6qtcsEQobzkFWwTw9cYv6q98ycVJ+r1U/o6b4K0qYBVhWKqvvIwjV4YmVdnj2hJv2nqjAX8oLB7/8rVis8Lr2sTy0uKr2swQL5TKuIsnxL9Kr5EYZjnic2/OYhFTDYYz83bX7YLBYOiaOzN3HRtrcNrXsTg/3wH6UqmIMS2V2WQ0CowM8+fnF2RyeVD5q9WaIthHAizEymEXhlNRg5E7XJwcdYbs7JDuk2nx/l1fXRF1laClRSGjwEViCSFO8r9K6GdmOvuoAazfj09PAvwo04+RAEt5yrCVHgwcsjPMi+WyECl5LksIGA10kAT0LXUEvrPtEo7i7OvHuRquA+8PCPsJgZEA8wOsmwTM3O21pBJENS6WymLEOshfGehATk447mG09BoJ9QNU2jMy4EE+Ngl7NcCTwIKaNmgMq+ndSbhbY3gSWFDTBo1hNb07CXdrDE8CC2raoDGspncn4W6N4UlgQU0b/gULyF/S80DPdQAAAABJRU5ErkJggg=="},{author:"felixsuccess",link:"https://gitee.com/felixsuccess",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAABQUlEQVRoQ+2XPQrCQBBGJzewEI/gdbyFldewsPYAegeb1BpIJQg2EhAkFrESUYngTyIWqQQzC5Nl3P3SOjvMvPdtMEFnOizJoyfAwo7bhmHHBRMMw7BjBBBpx4R+rQPDMOwYAUTaMaF4aSHSiLRjBBqN9KLXp26rbYwsyy80iGYUZTvjs3UHsHAdIZPfK8PPsqD4kNIhv7KOn+43mmyWtD0fWfUmRVYMP4oXjdcxjVZzk9kaqcXCklirSMOwJFXDXoi0IbCf5d5GmgvRxl23EmnvFub+8fjUhWlC4T7hMjKus2LYRlS5m2NhLilOnbdvaUSaE4+GanCHJcHiDuN7WDJPvF64wzxO/1vVqGGNWLCwRiuSM8GwJE2NvWBYoxXJmWBYkqbGXjCs0YrkTDAsSVNjLxjWaEVyJhiWpKmxl3eG3xxIXeTQaqK1AAAAAElFTkSuQmCC"},{author:"Lu sharp",link:"https://gitee.com/xieyonghao1989",photo:"https://portrait.gitee.com/uploads/avatars/user/1601/4805222_xieyonghao1989_1627135464.png!avatar200"},{author:"happy1836",link:"https://gitee.com/happy1836",photo:"https://portrait.gitee.com/uploads/avatars/user/320/962909_happy1836_1617418156.jpeg!avatar200"},{author:"cxlong89",link:"https://gitee.com/cxlong07",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAADjklEQVRoQ+2YW0hUQRjH/3tz3Yu7ul5YXZUSK8vKRE0JtaBStLKXCoKigiLoQkQPIQbVW9KViNR6iogg6KnAisSH7OLlQTIo0UgyNVtX19va7upuzGwrkaln84wH1zngkzNzvt/3+87MfiPLrGzzYhE9Mg4c5La54SAXDG6YGw6yDPCSDjKhU3C4YW44yDLASzrIhPJNi5c0L+kgy8C8lfSmpTpsW2bAWnMojGo5FHIZTaVrwgubYwINXQ48eG/HlwEX0xQzB86I0+BUThRWRKnxm3FaoBGXB09ah3DtTR8zaKbAJSkGHF8fCZNGMWmztc+Jpu4xdNhdUMplyIzT0L8onRLEuccLVLcN40JtLxNoZsAbErQo2xiDGJ0S5Fr0o9WJK6+taOn9OQVEq5KjNC8aBclhtApImd9rHsCdpn7RoZkAE4DKHRasjFbTgNtsLpTVfJ/x+yRzLheakWXRUtOdg26ced4j+jfNBPhgegSOZJgQopBhyDmB8jorXrSPzGqrIFmPs7nRMKgVcHt8lqsaxbXMBPj2dguyLBoKWPd1FKere2aF9Q+oKrEg2RSCDrsbLz+P4GGLXfBcIQNFB14VrcalrWbEhqmYWRICNt0Y0YGLl4fRsiTfJDlmyl9Z8ax9eC4xijpXdODDGSYcSo+g3691dBzna3vR2DUmatBzWUx04KNZJhxYFwGVnAPPRYxoc0U3vGe1ESeyI6FRyhdHSW9J0qM033eWLopNK9Gowo2iOCQYfcfS/WY7KhptgkuSbHp71xhpB1Xf5UBFQz8cbo/g+bMNFL2kyQuvFsYif4mOvpvs0Meeds0Wx+T/rxfFIjfRN/dTnxP7H3cKnitkIBPgXalGnMyOpGdxID8tSc9cmhdDu6txj5f2x7fqhVeHZMAE9GZxHNLMof/dPHQPu3Gupvef3ZUQsHn7peV/0Z+NAGkP22xOauttp2NKLKSFJK1kTrx2YbaHfiLSMe1LC6elTR6yibXbXHj3zUEvAMJDFbT5T4/VQB/iGzPh8aK6fQQXF9oFgB96Z4oBpF20GFS0z53pIcfYow+DAe3qgZY3k03r7yCI4d2pRmxO0iPeqIJOJZ+83/Jf4pEj6G5TP36MjgfKEND4eQEOKCLGgzkw4wRLvjw3LLkCxgFww4wTLPny3LDkChgHwA0zTrDky3PDkitgHAA3zDjBki/PDUuugHEA3DDjBEu+/C+g49U0Ph0CkwAAAABJRU5ErkJggg=="},{author:"\u4ee3\u7801\u5c0f\u9752\u5e74-\u5c0f\u5b8b",link:"https://gitee.com/java_sxd",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAFEklEQVRoQ+2ZaWhcVRTH/2+beS8zzdKmaWqqMU6SVluX6JcqqFiQIqIIbhQVi5WKFCzGjUKhFTeU2tqKTRWXigoNLiiKxQVFEVQEt2JtszZpmqRJmq2Zefu7cm/MmMk6mXkzbxjfhfkwM/fNPb/zP/ecc+9wIz8UEfyPBucD57navsJ5LjB8hX2F88wDfkjnmaDTcHyFfYXzzAN+SOeZoH7SykhI80o1lJVvA8SA2dcIo+dAgqeFwiuhVO8DF1gOR21C9I91WQusjAAHV9QjeO7jAC/DHv0R0SM3JACJRddAqX11HDh2DGO/rWXf8wWroNS+BmKNQmt7lH3n9sgIcMFFjRBL1gOOBv3kC9C7dicFXHDhIYiL1wPg4Ght0Nq3wxr83FVm14HFkuuh1LwCTiqDozYj9vcGOGpLUsBM4QtehFB0FYMm1jD0rj0wTu11Ddp1YDmyG4HyjcxAo/cgtNb66ZlSCCN06TfgldqEkKYTOSEMuWY/pMU30jfjUdJ9AHrHTlegXQWmChWseg+8EgExeqA2PQBr5PsZDQ3X/cT2rGN0Qz2+ie31yUOpaYC09HaAE0GsQWht22D2N6YN7SqwXPUMAss3MyPN/g+hNt0/q4ETwHM5hkLTLaKf3DUt06dK7hpwgrp2FFr7EzBPvzurXQVrPoVYdDWI0Qu1+UFYw9/OOJeWuKk5IFVYtmXcuqb9T10JxB5jZcXsOzQ78OpPIBZfmzCX7l+xeB04qRRCuA6cWAJOrgQnLGKfEXMAWstDs26TZBzhCjCtq3JNA/hgBVtzJuCpMHy4DkJoDZ0NYqvg+ADbCnMNYg1Ba30Y5sDHybDNOMcVYGXlW5BKb2GlZDKwEL4MUtld4HhlXphE6wiIowGOzkKeOtDR2tnL7D3IEl2qI23gQPkmBM/fAU4oBODQfimuMB+sBO26wAcn2TeuKDgOHC8zJ9lnf2FhSuu2E2uCPfZrqjzzPpcW8Hgr+AaE0GpWL+2x3yEUro0DO2orU5hYZ1i9taNH4u2itOxuyFXPgxNCMAc+gnr8vnmNdWNCWsC075WW3sZUsoa/A9G7QEGSSVpi8XWgZYcLlMM++zOif9KWMvMjZWCahEKXfB1vHrSWrZCW3Axp2T1JAbPnJ7otvRPqsY0ZDeUJV6YMTH+AtpFS2QYY3fuhdzwFpfrlpIHp8/FabI9Ca30EZv/7GZc4LWBajoRFV7AGn46FAsuRlxAovxcgJvRT+6B3PJ3bwFOtWyhwoGIr5PO2sXOzNXiYnawyPdJSOF3ghIsArQ2xo3e42kbO5DxPgalBoYsPg175EDsKvWMHjJ7XMyqy58DByp0IVmwBOAnW0BeIHb1zGrAQvpydsc2hL2Gd+Swth3gOPPmGhJh9UJu3wBr6KgGKtq1yZA84sZjV+9hftI1NbXgOzMpT/C6LwOz/AGrT5gSayckt3a4sJ4Cl0lshR3ax4yCxRqB3PAmj9804tJvlKyeAWQ2Pt6k8HO0EtLbH4qHtZoOSM8AJBxF67jK6oXc+x46HtL7Tnpte3aZbunIGmKpME5hcvRd84Jx/w5kAxGIZnI7ZsvhC0ldOAcehq54FvcuauFCgn9M7au3E9jnvyZIBzzlgajQ9SQVW1ENachP7O4bondC7G2CeficZpjnnuAqctjVZ+AEfOAtO9nQJX2FP3Z+FxX2Fs+BkT5fwFfbU/VlY3Fc4C072dAlfYU/dn4XFfYWz4GRPl/gH3yAvHhm9fPcAAAAASUVORK5CYII="},{author:"\u82df\u5229\u56fd",link:"https://gitee.com/guo_li_guo",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAYAAAA4TnrqAAAEI0lEQVR4Xu2aWVMaQRSFD6KIiGzu+wKiUcuq5P/nKQ+pVCqb0bjiQlBAWQRxWFxIdbsUGoeZiz0o1r2vnOnl43T3ndtj+/jpcxUcpgjYGJYpTlLEsMyzYlgEVgyLYVEIELS8ZzEsAgGClJ3FsAgECFJ2FsMiECBI2VkMi0CAIGVnMSwCAYKUncWwCAQIUnZWK8DyuN1wuZxyqJpWQr5Q0B12Z6cDPk8PbDYbLi4vkc6cEqaoTvpizpqfncHI4ICcyVHyGBvbu7qzGhrow1xwGna7HedaEV++/1JHgNASw2JYBAIEqVJnLS/Mwe/1mOpe7D9tbW1Se319jWq13o2cDXb7jVbohN5MZHN5rPzZNCM1pVEK6/3SO/h9XlMdN0OUPc3hx+q6sq6UwmJnKftfHjbEp2EdsAG/DzYA6exNjsSwdGC5upxYmg/D3e1CsVTCQexIbtR+783+ls3lEE+e6KL29LhlTiYOhHKljMj+X4v8Xr9ZpXuWXleh6UmMjwzJDPzy8gqRgygO48kXmfBzOrUcVn9vAHOhaTg6OuQ4zzUNZwXtOWOu+6xw7Ekmg1Q6q7wPS2HVLj/lI9dp8LpaRTR2hN0D9UvVUlgL4SAG+/vk8mtWtCSsmclxTIwOy01ZLo10BqmM+qUh/oT29nZMjY3C4eiQ2f1eNCYPEdVhibNqQYkBZ05z+L2+haurK9Xjl+35fR4shEPodDhkH5uRPSSOU8r7Ug5remJMOkqUU0QUzjWsbW7L0opV0ZKwglMTMkW4e0EulcvY3Nm7T0QZ1i0B4aSluVkE/F65oZfLFWzs7MpEtNvlehYnUR09jCegFUtPttOSzhLAFmaDcLtd2IrsS0epqESUKxX82dpB9jT/dmA9NROGRVhUtbCOU2nT6UOX03l/UBg5q7ZG31Kn4WOOtbCMLiZqn60FwLAM3MmwDK68VDhLVDVEUpo8aYGk9KWXodGSJWy3/0mVZ/AM6xl/R7NPwzfjrEaZGwEQ76OTYyO3Zef6CWyjYxDPNXUZNjpQI1iyyiFgidcsg2y/0TE0HVb+rKD7fldvEkbvhuHgFEaHh+TtkVYs4uvPVUvKQU11FiUppTjgw/Ki/CRJRC5/hm8ra5THTWsthzUfmoG4yhIhqqWiiqkyHlRkxedLiaQsC1kRlsNqdNB9vX70BwJy2Yq7wsdhb7NjoK8XXm+P3KtEVC4usL4Vsax+9mphjQ0PQRQT776eMYIuau/Rw7gltzp3fb9aWAGfV9bVxSWEUYhXnFg8YSmoppyGRhPV+10UEhfDITidnTqSKoqlMsQJmzhJycqs1fFqnWX1xBtpn2ERqDEshkUgQJCysxgWgQBBys5iWAQCBCk7i2ERCBCk7CyGRSBAkLKzGBaBAEHKzmJYBAIEKTuLYREIEKTsLAKsf8ksXvuBkt22AAAAAElFTkSuQmCC"},{author:"Protear",link:"https://gitee.com/Protear",photo:"https://portrait.gitee.com/uploads/avatars/user/399/1199412_Protear_1578945941.jpg!avatar200"},{author:"Hawkins",link:"https://gitee.com/hawkinsyeah",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAABLElEQVRoQ+2YMQoCQQxFZ2sLwVbBWizEg2jjhQTv4F28gHgJsVestLFSkC0EcZ2EDGSzb+uZbPLfz0x2q8l690wdeioKDk4bwsEBJwhDOJgCWDoY0K9yIAzhYApg6WBAObSwNJYOpkARS2+W07SaD99SHS/3tNjus2TT7ssKXi+iYIlav9ZqSWn3SXKGsEQtCNcKaK2p3SeBhKUlamFpLK33i2RgkbyleA9Lkvlc29qCz7dHOpyuWXWPB700G/XFI2lWcEZLiUx/1mrvU+0+SerFe1jSixSc+VkJ4QYFsLTEHoyWjJb802rsmNZeSxbnQKkYRU7pUslaxKVgCxU9x4CwZzoWuUHYQkXPMSDsmY5FbhC2UNFzDAh7pmORG4QtVPQcA8Ke6Vjk1jnCL6gtiwgepIm4AAAAAElFTkSuQmCC"},{author:"q1a0mu",link:"https://gitee.com/jvkwb",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAEJklEQVRoQ+2YfUxTVxjGn9svCkWBIhTBD2SL28KyzZkscTNG8Stq/AyQyKLLNr/YshFJdMYsKMagqDEa59zATTRoFP9RY0KY82vTLYsj23SOOVxCQ6FNmS1IW2hpe5dzFBQVem9yD7mW03/vue95nvf39pz3vcKtXIgYRj+BG45y2pxwlAMGJ8wJR1kGeElHGdCn7HDCnHCUZYCXdJQB5YcWL2le0lGWgSEp6ZFvLUXSrNWIzXoT2vhkCFodTaPY40fwfht8d36C67tD8N6+wjy9TA3HvzEXluVliJ0wCRCEQc2IwQA1bK9aD7/tL2bGmRlOnv8pUvO2QBtvfkAzGEC39SZ8d66j6996CDo94l56G6ZXpsGQ9mJfQgL2RtiPFKHzt1omppkYNs9ZB0vBDmhNiYAootv6BxzHN8Hze90zTZjnFCI1fyt0Can0OUlM877lTEgrbjhm9ESMLa6BMfN1atZ7+zJsX7yHnnu2QYmNmDQP6WsroE8eQ9/rrD8Pa/kixSkrbtjy7k6MWlgMQatHj6sFtgMr4f3zkiThKUs2ISWvBBpDLELedjiqN8L9faWkd6UuUtzwC+X19DSGGIbrQgVaKwulaoEmdgSySq/CSA45AJ2/noO1fLHk96UsVNRwwpQ8pK/5ih5U4a77sH9bBPeVKik6+takrdyD5PlF9OoKOO7CWrYAfvs/smIMtlhRw6m5JUhZthmCPgaBtiY0781H190bssQm5XyA0e/vh8YYj5DHhdaKdej4+bSsGENmOH3t1zDPXE2vGHKXNq7Pli3U9GoOxnxyDHpzBsKBLjhrtuK/s7tkxxnoBUUJZxQeRlLOh3Qvz62LaNo2S7bQxw2Tu7vtTDmcp0pkx+GGH2ZAUcLDrqSVOLQSp61A+qqD9IoK+Tpgr/wI7ddOqLOkh921RDA8ajxEdFw/ieb9BZLpEKqZm2sR9/I7z0fjQVQ+3loG3a1oObTqmZNP5ud1MI5/jfbMztOltNcmE5aloAyaGBPC3R44qj+Dq+5LyQmTslDRQ4ts2G94GGDyIYNCxsdHoEuwUI0hrxvuy1Ugf4ne4cFz8wKats+V4kHWGsUNk92fnHz8LQ2wHy3uNx4mTi1A0uw1iJs4BYLO0E/0czUe9ionLSKZiXtnXNJE+G0N8P19Db7GXx59AMieAYMlq88wWdf+QzWcNVsijpSy0LK4h58UYMqejrQVu+n0I2i0g+oTQ0EgHKJ9eG+Zd944h3t1B2X340PWSw+00UAf8UivHOpwwtvwI9yXvqFmLfmlMGZNfvChT5R/0keizuQ/HGnTSM9JgkYt3ghDyjg4jm1Qb+MRyYganquSMMvEcMMss6uG2JywGiiw1MAJs8yuGmJzwmqgwFIDJ8wyu2qIzQmrgQJLDZwwy+yqITYnrAYKLDX8D5ShE0NvnoCPAAAAAElFTkSuQmCC"},{author:"\u56fe\u7075",link:"https://gitee.com/toling",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHgAAAB4CAYAAAA5ZDbSAAAJn0lEQVR4Xu2de1BU1x3Hv8hT5C1RQBEEqlF8ECk+ooImMaHOtKGp7bTpTGMnbcc/kmbS2mTSOm2m1rRNM2mn6UwezSTpmEen1TStGYI4BuuDKCKiCEGQl4C8H8obF+j8brPLLuzde+/uns3Jnd/9kz33d37n97nfc37n3HMufgveOjAFvkwbAT8GbFq2SsMYsLn5MmCT82XADNjsETB5+3gMZsAmj4DJm8cKZsAmj4DJm8cKZsAmj4DJm8cKZsAmj4DJm8cKZsAmj4DJm8cKZsAmj4DJm8cKZsAmj4DJm8cKZsAmj4DJm8cKZsAmj4DJm8cKZsAmj4DJm8cKZsAmj4DJm8cKZsAmj4DJm8cKZsAmj4DJm8cKZsDiI7BjcRqeXLMZcwMCxVfmgxoaB/rw/aLDPqhJuwopFPzN1FX43YZchAUGaXv8BShR09+Nrf9+TQpPGbAADAx4RlBZwQKess9MSqvgntFhdIwMimu5Fy0nhkUiPDDYZpEVrEPBp9oasavwXbcwvLDpK6i71YuXK8+5db/Rm049+CMsi4plwGqBc9ZFuwv45+u2Yc/K9QjyD0DXyBDeu3YJf64oxuDtcaPcdJdnwBqh8hbgexel4oW7dyIhNNxW48TUFN6oLsW+kmO6gRktyIB9AJi6yFez87AyeoFDbafbGvFI0SFWsNGn1pvlvaHg13K+jq8lr4CfnWM3hgewtzgfx1vrvOnuLFusYMEKfvHunfhW6moEzvG31TQ5NYWWoZteVW736BAOlJ1AeXebQ4sYsEDA1qQq2D9AqErJeNvwAB47fQTU7dtfDFgQ4MdWbcQTqzcjImh6DiqSMgN2M7rujME/XJGFn2VsRWRQiJu1Gr+NARuPmXKHUcBqyr01PoYDZUV462qZm55AeeHx/MZc5C1Nh7/fdMpG063D9Vfw+OkjnGQZja4RwPsyt4PUG6Iy5loToXdrLxl1wyXcDxoq8dTZAqdJG4/BXhiDSVn7s3YoarfPlulr5hNTkwjwm2OrhaZHz5w9ioLmGt2Qyf4r2Xm4Z1HqLOV+3FqHPSc/UM3IGbCHgGkR4/cbc7Fp4RKHeS7BPdXWgILrtXj6rmyH8bh9eBD7L3yMQ/VXNCFn3rEIz62/H2tj4x3sU7f80fWreOLMhy6nWwzYA8C7UlbhqYxsJIVHOViZGXxnSVf/+CheqijGX66cVfVg9/J1SrIWGzLPocztyQn8o64CPynO13xAGLAHgJ0lVGMTFrxTewnPnDvqYNlZWcvUJI5er8W+kkJQ1229aL2a1q1zEpY6dO/0O72YeP3T8/jtxf9qwqUCDNgDwHSrPTgtVZKS967dgqjguQ61Ng30408VZ0DJ1+OrNmFP+vpZqqUbqNzz5Sd1de3WChiwh4CtkL+atAJ/vHxGM3nKTVyGZ7PuxdLw6Fnd+rBlHGGBwQ5jLRUipRe3N+EXJcdAL+yNXAzYC4CNBJzKqiVmzuzQ1OqVyhK8dOUTo9Uo5Rnw5wA4IzYeu5dnYueSZS5XuyhZq+nvwr8aqvDPugqHcVovbQbsI8Ck2u+krcEDicuQHB7tMJ/VA4tg0z6wip52nGxrQH7TVV3AGbBAwLSL46GUdGWOHBca7hIqZd8tQ7eUHR96NtnTPPvm2AgaB/pR3d+F0q5WnOtsnjVGM2AvAqaul5KtrfHJSImIdpow2VdHkHpGh1DYfA0vV51T4BDgH6zIQu4S95Q+PjGBQcsYGm714Q/lp/DrrPt4050rxmpr0buLDuG+xWnIiV8KAkvbU51lwM5sj1huo6z7Bt5vqMTbNeWq1VvH6uz4ZM0eYKaRsx3NeLDgICdZWuOfGuDKvg48emcWAudMrzO7skVd8KeUMNVX4e3ai4Z3cxDsh9PWYnNcEpaERSHIf3qHyMx6hyzj2F9ahDevXmDA7gImBR9+4LvImB+vaoICXd3Xhf80VrsFVc0wvXygZVJ6+bAuNgExIaEO43tFbwfyCg4qDxGPwR6MwT9evQk/XbvV9nrQmumWd9/AkaZqvF9fabP+dEY29qRvwPjkBDqHB9E02A866UfJUUlHs66MWM1VGrcpmaOlTcrQaVr1XNkJngdrqZd+d/U+mJT0t+27QHuuCltqUdBcq7rSdOj+h5Xky9lFydao5Tb6xkfRPNiPupu9yhjtLCvW47N9GVawBwrWG2waP1/PeUhJxIxeoxMW9I6NKOCr+jpxoasVZ9qadCueAfsA8KN3fhm02yPUC4fIaenyyeJ8FDbX6npWGLAPAFMV1J1vS0jBmvlx+FLkfKRExChTH/q7/Y4PLWqXe9qx48M3tIrZfmfAPgLsqpot8cnIjE1Q5tMEPiE0AuFBs98q0Yb5gzUXlf1Xei8GLAFgZy6QsmkhZUtcEtJjFiJxXqQy5/5V6XH8/dplvXx5mqQVKSO7KsnW9oQUZapCR1OOtVzTMi/8d1awlxX8ak4e8pJXKlat0x9acKCN6fUDvajq7VSyYV/BZ8BeBEzdav7OR7A86g5NZRJ8WpOmg+DtIwMKdDo4RvNfo7s2XFXGgL0I+Ntpa/Cb9TscvomhSdpJAevct314QIFNCx4nWut1z315ocNA1I2Mwb/MvAffW36X7rdKBtywdfedI0NoGuzDxe42nO9s0ezqWcFeVLC9KZr6pEcvwOqYOKRG/n/OGxM8V/VYixHY9mXpiz+0P1rtpAQDFgRYzSy9GNgcnwQ6sUCfdEgMi/IIvNbCBwP2MWC16mjP1oYFidi4MFFJ0hbPi0BEUIjLbT60nfavVefxbOlx1VYwYEkAay12UFdPR2TsoVMGTmeTXH3ngwFLDNiZa9TFb1uUouzssExOKoB5muRuBuPGAXAPqhJyKyvYDQXX3uyZ9TUbIXS8YJQ2GcSFhtks8bcqZwSVvzbrhadMxYS0X5sV12TxllnBrGDxT9lnNUirYDo9QLsjvwhXSECAw44RVrAOBbv7OeHP44HgLNqNLJoBe+dRlaKLdvZvdWjr6t5PPvJOKwVbeXP7N5QdJtaL/62O4ICz+ekISKFgBiIuAgxYXGylsMyApcAgzgkGLC62UlhmwFJgEOcEAxYXWyksM2ApMIhzggGLi60UlhmwFBjEOcGAxcVWCssMWAoM4pxgwOJiK4VlBiwFBnFOMGBxsZXCMgOWAoM4JxiwuNhKYZkBS4FBnBMMWFxspbDMgKXAIM4JBiwutlJYZsBSYBDnBAMWF1spLDNgKTCIc4IBi4utFJYZsBQYxDnBgMXFVgrLDFgKDOKcYMDiYiuFZQYsBQZxTjBgcbGVwvL/APSrQgOy/FIvAAAAAElFTkSuQmCC"},{author:"lschen",link:"https://gitee.com/lschen",photo:"https://portrait.gitee.com/uploads/avatars/user/108/324352_lschen_1605073049.png!avatar200"},{author:"\u4f60\u660e\u660e\u5f88\u5b64\u5355\uff0c\u5374\u603b\u8bf4\u4e00\u4e2a\u4eba\u5f88\u597d\u3002",link:"https://gitee.com/heinan",photo:"https://portrait.gitee.com/uploads/avatars/user/378/1136157_heinan_1578941539.png!avatar200"},{author:"jovercao",link:"https://gitee.com/jovercao",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAACLUlEQVRoQ+2UPUhbcRTFz1MXrVR00TREpeJHNdQ66GCgtJNjOolDFQdBUBEqxUGKVgstNvUTGw1IgghGQVJFVMggDlJwqQ4Ojn5VKaWDxe/E90qyFFF4hveuf/h733z/l3PO79yn2J+/0nCPPoUNS06bCUsOGEyYCUuWAFdaMqDX7DBhJixZAlxpyYDyT4srzZWWLAHhlZ4ZG0ROtg2hUBjeiQCGvH7SiNkwabw3LGfCXGlzO8c3bG6e+tv4hvmG9VsSywTfcCxpmTHLN8w3bEaP/u/gGzY3T/1tUt3wiKsdxUX50DQNnwZGMRdcvpaAVIYDvn7kPs7C6dkZ+jzj8AcWrhjOsj2Cu/sdMq0WnJ9fwO2bhNf/Tb8WBiZIb9jzpQPlpc+gqhqm54L40DtyReqL8lJ0tjYiLTUFh3+P0NUzjODydwN29J+SGn5TX42aSicSEuLx6/cfvHe5sbL6I6rqQVIiOt42oOKlA3FxCrZ2fqKp7SO2d/f1VRuYIDX8tDAPn9tbYLWkRyVGKK5vbEYr/iQvB5nWDCiKgnD4EhOBebi++gxYud1TUsMRCZXOCjTXvUbKw+QbFamqipXVNbR29eD45PR2qg1MkRuOaHOUlaC2ygl7QW60yhGqF6EQdvYOMLO4hLGpWQMWYnt6J4Zjk0Q7zYZp8xW/nQmLZ0CrgAnT5it+OxMWz4BWAROmzVf8diYsngGtAiZMm6/47UxYPANaBUyYNl/x2/8BvCtgqNy/NWQAAAAASUVORK5CYII="},{author:"Lsl686",link:"https://gitee.com/lsl1686",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAABFklEQVRoQ+2UwQ0BYRCFZ08iDnrQgEKcFKAKd4k23DSgig09SHCTcBBEIjbWKsBhZ2UwZr89v53MvO+9P9mOOoXU6Es4ODhtCAcHLBCGcDAHiHQwoC/nQBjCwRwg0sGA8mgRaSIdzIGPRrrZ7Uu7N5ak0ZL8vJPjbCjZZvFTCznY0n4IE2nLPOlm0WGdTzoVHabDuqRYquiwpZt0mA5b5kk3iw7rfNKp6DAd1iXFUkWHLd2sdYcf15Nkq1SKPCv19L5fyiWdlOreEXwt0lWWu63ncpgOqvyi1nKw2qo/FX6UsEdPONgjFcudIGzppsdZEPZIxXInCFu66XEWhD1SsdwJwpZuepwFYY9ULHeCsKWbHmfVjvATUOxdeMexngcAAAAASUVORK5CYII="},{author:"\u5f13\u957f\u5f20",link:"https://gitee.com/zhd571",photo:"https://portrait.gitee.com/uploads/avatars/user/2878/8635946_zhd571_1619772181.png!avatar200"},{author:"Admin",link:"https://gitee.com/realsouce_m17621995364",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHgAAAB4CAYAAAA5ZDbSAAAGQklEQVR4Xu2caWhcVRTH/5PFxKRtWprUOCSpTdqmaVNHU6KUuFZShLqggv0guCCuRcENxEI/FCoKLqCICkq16BfBrVIEa+tCS7Gh1pA0i22qNGlMbdIYM0mzTSI3wjSv827mncybYc7hzLdk7nlzzv/3zn3n3nNnAsHvP5iCvsQqEFDAYtlOB6aAZfNVwML5KmAFLF0B4fHpM1gBC1dAeHiawQpYuALCw9MMVsDCFRAenmawAhaugPDwNIMVsHAFhIenGayAhSsgPDzNYAUsXAHh4WkGK2DhCggPTzNYAQtXQHh4msEKWLgCwsPTDFbAwhUQHp5msAIWroDw8DSDFbBwBYSHpxmsgIUrIDw8zWAFLFwB4eFpBitg4QoID090BtcULMG71TejJHdeDMaO4QE82LgXJ4cHRCMWDfiF8hpsWRpCdkZGDMTRyQje/OMo3v6zUQFzVeCLdZtw7cJiq/u//NODu4/s4RqeJ7/FZvBdxRXYUbkeBVk5ViEGJkaxtf0Qvuzp8CQWx0FiAb+yqg73BSuREQhEuUxOTTn+Nj/x9/WZDmxp/pEjO08+iwRcnleAj0L1qMgriIowNhlBS/gcQguKcAE50DUSxhPNP+DXgb89CcZtkEjATy69Es+V1yA3IzPKo3fsPD453YZHy9YiLzMr+v+JqUm8f6oZL59o4MbOk78iAe8KbcQthaUOAdrC/XikaV9MZptBzYN9uOfIHoQj455E4zRIHOANi0vwxuobUHTJpVEOM5+171TfhDsvq3BM00ORcew40YCPu1o5sfPkqzjA21Zcg4dL1yArcGHtOxyZmJ6Cd3a14IGSKmxdXov8zGyHQLvPnJx+Fkt7iQI8LzMbn6/bhOr5ix2cOkfCeLxpP3779yzMmN21t6Myf5FjjNRiSxTgey9fge0r12N+1uzZ6baEklpsiQLs9flaX1iG16quQ+GM57TUYksMYFtjoX2oH3c0fBNTIbttY0ostsQAfuqKEJ5ZdjVyZqx9zc7Vp93teLHtYEzt5DbeDNrX24n7G78TU2uJAeyWkWZz4/nWA9jbeyoG2FULivDe2g0ovaiVeHbsPJ5t+Rn7+7pEQBYB+LYly/DqqjoszHY2FuJ1i9ye2bNlPUfiIgC7VcVe+r22qlvSYQD2gN0aCybTvKxrbetmLzcHl2xmD/ihktV4aXmto4FAaQO67XwZePGmdwWcIgXcGguU5Y7b3rVxXUqxxTqDbXCo3SG3m0RKscUasJmaHyurdjQWDJhdp1unj+J4fbn1j42thGKLLWBbgTSXqdVWqEkottgCti1xDpzrxuaj33pN3ui416uux+bgSkefWEKxxRaw2yYFmaoHA+4nL1kCtm0zeuBFHkJZcpEvngIDloBtjYJk6eVl0yRZn53odVkCjveNhURFudie82EAdoBtzXrzrOweGUqYrfkmRDA3P+Y61LV1wo74dAF2gN0aC34+J22H8gYnxrHt90P47K/jPkmfmsuwAmxbr/opvu1Qnp83UWrQ/v8prADbssvv6dNtljBicSy2WAFO1Z6x7TnPsdhiA7huURBvrbkRxTl5jhkuWRsRtkrd79ki2dM1G8BujQUjTtNgH249/JXvOtl+HYDSivTdqTlckAVgW2PBTJkfdh7D9uOH5xD67Caz/b4Hp5OXLADbvq0/l84R5U7YGarHxsKyGJNkfy7Fx3hjWQC2NRaSfazGVrVzOgyQ9oBtjYVUVLS2NbHJGi6HAdIesK2x0DM6jKeP/YSD/d3xZqmE3retibkcBkh7wLblSqoKHduhenPXpMqHRO7QtAZsO1SX6uyx3WQciq20BpzInau2DPeiFRpdAc1gumasLBQwK1x0ZxUwXTNWFgqYFS66swqYrhkrCwXMChfdWQVM14yVhQJmhYvurAKma8bKQgGzwkV3VgHTNWNloYBZ4aI7q4DpmrGyUMCscNGdVcB0zVhZKGBWuOjOKmC6ZqwsFDArXHRnFTBdM1YWCpgVLrqzCpiuGSsLBcwKF91ZBUzXjJWFAmaFi+6sAqZrxspCAbPCRXdWAdM1Y2WhgFnhojurgOmasbJQwKxw0Z1VwHTNWFkoYFa46M4qYLpmrCwUMCtcdGcVMF0zVhYKmBUuurMKmK4ZK4v/AJpbnp4nrI3pAAAAAElFTkSuQmCC"},{author:"wuweilie",link:"https://gitee.com/wuweilie",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAEgElEQVRoQ+1Za2hURxg9d5/ZbLLbxM3GmERFi8YQgqUGUTQSqogQRRELIq2IoBBaLFgKisVKpS1VQUF8oYj2h9BiFY2IqIjPtqj4QCRqK1FjzKsbE7N57OPeMjfMOu7du9ndO6buOvdPyGa+ued85zvzfbORpux5pOA9eiRBOMPVFgpnuMAQCguFMywDoqQzTFANHaGwUDjDMiBKOsMEFYeWKGlR0hmWAVHSyQiabTXh4KISjMuzISwrOHKvCzv+6NDdorzAjp/mjERRrlVd4+sLY/PFNlx+4teNWV2Vj+WT82A1SXjcGcCKY03oDcrJwHxjrWGFt80tQvVYp7rppUY/1p55oQvm0wo3vpg6Ag6LSV0TlBUcut2Jvdd9ujE/zB6JOeNz1L+f/acH68+1pEyWBBomzCrQ+DKA5b/rK/DtLC/ml7kgMZCHStKRJaPxYb4toeQkkgnDhGeOcWLDLC/yHeYhS/SXxaUo89jR7g+p2AqcFjzrCuKr08142hXU4E1m70TIclGYbEJVCIQVHLzVif03tSXKgr/R3KfimzLKAX9AxtZrHah/0K3B/PnkPKz6OB92i4SGjgF8dvRZorx01xlWmOzM+qz+4StsutCqeSEtfbMk4ej9LvXvi8vd6k/y+89X2jUxG2sKUTshF+Q/BScbuvH9xbZ3gzCrxN3Wfqw83qQBRg83qihZ8PV0D5w2E/RiqAX6QjJ2/vUvfr03mCgjDxeFp5Zk47saLzzZFrT5Q9hwvhW3XgyWLXlGu63YPm8USt3WiGfJ5/Qz4umNF1px/fnrmKpiBzbVFKo+j7VnqqS5ECYvp2qQHrntWgdONLz2ZO1EV0RN9lSmqg+EFOy76cPh250RHmwL06uAVEhzI0xbjqJoPfnNjALVr2Hlzb7LtrToHru+2ouFk1yItV8qRGkMN8Ksj/9s6sWXp5ojuA4sLEFlYZambbEnd/QURWPineKpEOdGmPUc21s/KnJg8yeF8Dot+NsXwNLfnkZwsqNp90AYP15qx7nHPWBH0Hh9+n8lTF5OVWHBs16MNRrSlsbO4gvKXFg73QOSkOhqSYUkG8NNYbIp9V2QGUCotwMxDiYSw1qBHmjU84oy9IUk2QRwJRxLTXacjG49BCxrBTqLb51bpH7OVkqyxPTWcyXMeo+Mgvtu+CJzdrzWwh5qW662o65qhNqzeVwHo4lzJUw23z2/WJ2RybBQ/+AVllV+AKt5cJyMNT6SGFrCxApkXe3EXLjsZi7XwbdOmILvD8m409KPaaXZcS8IBBC1QpbFhLst/Sj32iHL0AwjPMqau8J0qrJZJPQGZLizzHGvgIQEa4WegIwcm2nIq2aq5LkTjv4ahwAjM3Jd/fO4GHfVFqsHFX14XQffekmTF7DgE/mui8SsmebB0go3zCaJ63VwWAiz4BNtLbPH5WBddYF6WPG8Dg4L4VT9NRxx3D08HKCNvEMQNpK9dIgVCqeDSkYwCoWNZC8dYoXC6aCSEYxCYSPZS4dYoXA6qGQEo1DYSPbSIVYonA4qGcH4H5hd4UNLnYN8AAAAAElFTkSuQmCC"},{author:"Allen",link:"https://gitee.com/xiaoxiongcn",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAC2UlEQVRoQ+2ZX0hTURzHv3fO1sI5QWUirTQLoxYz1CKCCANfLCR66CGIoofwoaB6KAp6M3qqhygKgsjooYeCwAi0P1hJkJYsltOwLJ0jTaVLtlpzd3EvTY4JNun+fhdu5zzt4YzfPt/v73x/5zCl9MHVNP6jpUhgm7stHba5wZAOS4dtpoBsaZsZOgdHOiwdtpkCsqVtZqgMLdnSsqVtpgBrS+8sqUBz5SZ4nS5Dxofjw9gbamOVlBX4YmArGn0VUH4jfv75HUd7n+DRRJQNmg14xRIvblTVo8ydj2+pJNwOpwF5M9aPE32d9gM+VBbEkfL1cDly0DE5gqCnCAW5LoS/TmDXy3uYSiVZoNkcbgnWY1uRH0lNw6WPr43PAU+h4XbzQBeuRyP2Aa4rXIpza7ageJEbnxJxHH7TgR2+cuwprYRDUVjDi8Xh06s24IB/LZyKA88mY9jdcx9iYnOGFzlwXk4ublc3GO2b0FI4P9iDCx9CRvverdmOGq8PWjrNFl7kwKKT0R9TaAo/xit1zAA+ubIWB5cFDOe5woscWJy9beND2B9qnwkn8WxzhRcpsDh746lpnBnowrVo76w0zqQ3182LFFicve/iKvaF2vE+rs4CFvdwhBcpcMY9/f/YW7G3OBZ5OmfWil2gh1fLSASn+p+TzWQyYPF8LuTXU4cXGbA4excCTB1eJMDi7NXb9IU6Cn0kzbdqvT4sd3vIn40kwOLs/ZJM4HhfJ1rHBucFPrt688xVkzK8SIDF2dutjqKxu/WvXS2eecrwMh1YTN3ptIYrQ2Fj/maz7lQ3YGNBibGVKrxMB/6XuSp+lyq8TAcWb06Zl1E27up7qvKLcXldHfyL88jCy1Rg8Rz++TLKFlo8/xThZSpwtlBW7pPAVqrPUVs6zKGylTWkw1aqz1FbOsyhspU1pMNWqs9RWzrMobKVNaTDVqrPUVs6zKGylTWkw1aqz1H7F/cNyMim1YwnAAAAAElFTkSuQmCC"},{author:"Harbor",link:"https://gitee.com/ZHarbor",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAABLElEQVRoQ+2YMQoCQQxFZ2sLwVbBWizEg2jjhQTv4F28gHgJsVestLFSkC0EcZ2EDGSzb+uZbPLfz0x2q8l690wdeioKDk4bwsEBJwhDOJgCWDoY0K9yIAzhYApg6WBAObSwNJYOpkARS2+W07SaD99SHS/3tNjus2TT7ssKXi+iYIlav9ZqSWn3SXKGsEQtCNcKaK2p3SeBhKUlamFpLK33i2RgkbyleA9Lkvlc29qCz7dHOpyuWXWPB700G/XFI2lWcEZLiUx/1mrvU+0+SerFe1jSixSc+VkJ4QYFsLTEHoyWjJb802rsmNZeSxbnQKkYRU7pUslaxKVgCxU9x4CwZzoWuUHYQkXPMSDsmY5FbhC2UNFzDAh7pmORG4QtVPQcA8Ke6Vjk1jnCL6gtiwgepIm4AAAAAElFTkSuQmCC"},{author:"zgrjhwei",link:"https://gitee.com/JawsMan",photo:"https://portrait.gitee.com/uploads/avatars/user/321/963438_JawsMan_1578936905.png!avatar200"},{author:"lzh6hao0",link:"https://gitee.com/lzh6hao0",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAABFklEQVRoQ+2UwQ0BYRCFZ08iDnrQgEKcFKAKd4k23DSgig09SHCTcBBEIjbWKsBhZ2UwZr89v53MvO+9P9mOOoXU6Es4ODhtCAcHLBCGcDAHiHQwoC/nQBjCwRwg0sGA8mgRaSIdzIGPRrrZ7Uu7N5ak0ZL8vJPjbCjZZvFTCznY0n4IE2nLPOlm0WGdTzoVHabDuqRYquiwpZt0mA5b5kk3iw7rfNKp6DAd1iXFUkWHLd2sdYcf15Nkq1SKPCv19L5fyiWdlOreEXwt0lWWu63ncpgOqvyi1nKw2qo/FX6UsEdPONgjFcudIGzppsdZEPZIxXInCFu66XEWhD1SsdwJwpZuepwFYY9ULHeCsKWbHmfVjvATUOxdeMexngcAAAAASUVORK5CYII="},{author:"Quber",link:"https://gitee.com/quber",photo:"https://portrait.gitee.com/uploads/avatars/user/43/131042_quber_1578918939.png!avatar200"},{author:"\u8a79\u6960",link:"https://gitee.com/zhannan",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAE/0lEQVRoQ+2Yf1BUVRTHv7sL7PJL5IeSMlnmaIoRamDAhOwAAhEMOiFjOpg4ZAmmRRtG47SBglmSIOZkTJK/JlOkjB9SLCKK6MBIEkliMaACUSg5jgbL7kJzr7M7K6Ds7ntv2Fnf/ffdc975nO+55/4Q+Ly8agiP0RDwwBauNq+whQsMXmFeYQvLAF/SFiboCBxeYV5hC8sAX9IWJijftDgr6enTPPBJWjKeecoDvbfvYNvub3C69uK4FxAnwHa2Eny2eQN853lCpVLj8Pfl2LO/cNxhSQCsAxNYecobkPovgFAoNBmy/lIzkj7cbrL9wwxZBSawmZuSEODjRf/X2d2DfuWAQUELBAJMdXcD8TE0NETLPzUzzyBbYyaxBuw1ewZkb8Vjzsyn7wd8vgHpn+fjv77+MePRTxSxraq9iC05XxtkO6bzYRNYAY59JRiJK5bA1dkJKrUapZXnkJm7z6BYSHOTv5sIz1nTMaBS4Yfyauz48pBBtqZMYgQ82c0FsjdXYpHffIhEIlP+b5QNSeb+Y6XYe7DIKDv9yYyA02VrESH1p82p59a/sJVI4GBviwGVGmq1etSgRCIhNJrBUb+RdUxK+mFD2/ELviseH2Dt2iN/P1aiwOaNazDJ1RnDOyyZtywqBEsipJgy2RVFJ6vw6Z6DDwQdFuSH1HXxEAgFaL7ahlJFDcpPnzcZjPMu7evtCaK4PjABDJf64blnZ0AitqExkK59oaEJRWVVNAGODnaQZeRiaYQU8bGRcJk4AURpMu7e68NvLa04XnaKtUMLo5LWz6I+8K+//4FJLs6Y4u5Gp5Ay7e65BcWZOhz5sQL/3OzF6rgoJK6IgUgoogeT3QVH6VxpwAuIDg3EAq/ZdHmQQdbuoeMnWTm8cAJMSrq9owvhQf64dPkqihVnRyhEynzXFhm8PWfiWsdfSEnPwfXObl0OyffI4ABEL15E9+aMnfloutLKuMQ5AX5U09KPmDQ7sY21rtQf1bDIJLKn78z/Fj9XXzAZnBNgk6MZw5AAb//iAMpOnTP5F5wAc3UONplSz5AT4BJFDSpr6rBmeYyuOzMJlnT2fUdOoKaukYkbassJ8ImfqtHQ1IJNyatow2E62ChlbQysAYcGLkTa+tV0XyXn4ay8AqacnNizBhwXHYr1CXGwshLR825tfSPdUsTi+12YyVAqVSiuOGNe29LGxOV4LSYMygEVsvcehlqtseySzv7oHXprutl7Gx9n56PtRhfmzZ0FKxZuUWqNhh5gyAmN6WClpKd5PIGc9BQ8OdUdV/5sR/wGOaIWB8LXew7T+HT2re0dOFBYxtgfK8CxUSF4OyEOthIxiivO0tcKcnOKCQ9iHKDWAVt7OyvAW1PXISzoRfT1K5FXcBSFJZU64Dt376Hul8v0NcPYYWNtjYXz52KCg/2IK6exvljblgJ8noc8JREuE53Q0noNa1Oz6JlXqzB5GJDv+Ar1jc1GxzjaldNoJ8MMGCu8LS0ZIS/50lcM/WueRQK/GhmM5IRlcLS3w42uv/FeRi7arnfSnGqBBwcHDX6qHU098nBAblVmsYaTXo/FyqUR9Flm+OOaRQITRbI+SIKTowPe37rrgXdkiyxpAkwuBw72dqwcCpg2JEPsGTctQ35iTnN4YHNSg4tYeIW5yKo5+eQVNic1uIiFV5iLrJqTT15hc1KDi1h4hbnIqjn5fOwU/h+CknBz3oUTtgAAAABJRU5ErkJggg=="},{author:"\u7f04\u9ed8",link:"https://gitee.com/alianyone",photo:"https://portrait.gitee.com/uploads/avatars/user/394/1184966_alianyone_1622020310.png!avatar200",extra:"\u6700\u4f73\u8d21\u732e\u8005"},{author:"Vict0r-Chen",link:"https://gitee.com/Victor-Chen",photo:"https://portrait.gitee.com/uploads/avatars/user/2734/8203800_Victor-Chen_1614760866.png!avatar200"},{author:"\u84dd\u9cb8",link:"https://gitee.com/weiruan666",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAADvklEQVRoQ+1ZS0wTURQ9taVU0hpA678o+KEFpWj8ix8ETTAqC41Rg58YFxrjxoUL48qdn6AGY0w0bnRlYmLE+AniB4mKIZZvABsBqVWwlIK2tIV2MDPahpYWO9MZx7Tvbefeuffcc+a9d+9ISgvvjSCOloQAjnG2CcMxTjAIw4ThGKsAkXSMEToGDmGYMBxjFSCSjjFCyaYluKQP3CzE5DmT0GX4jnunqkMKaPPJpVhUNBdDgx48L6tDy7MuwYRGALMprX57BrKL5kIqlYR1mzQ9CfKkBDgH3HBYXSHtElVyqNQTQXko9H9zgBqmwr7PWP0V7263sEkzwDYqhtcczMKyPQshlU3gnABbx6bHnago/cDWzW8fFeC4YziSMsfdppW+cjoUKjnsvU6Y6iwBNUqZrYSuIA22L3ZAAlBeCuYmK+wWZyS15GQTlaRHR8zeMgeaJWq4fg6h/kH7bxAAfN+5d4gac+TkFs9D3pFsyBKlaCjvYJ4LvXgD7DtLaSafnKv1szke4K2nlyNzowYu+xAqLxvwscosNF7+ZlpsAdNyLj67GikaFSjvCDxu71/BOqxOVFwywNzY+1fbcAaiMbxibyZWlmghk0sjTj5YPRE7jjIUDfDu0vWYtXgKBm1uPL1Yi873PVzyZ+0jCmDtJg3yT+RCoUxAR0037p95g5xt6VhzKAuWTwN4ea0B1s8/WIOJxEEUwDvP5yFtyVS47MN4UVaH1ucm7LqwDhq9mjmeHH0u1NxpRX15eyQYWNn8c8AKVQLWHs5GgkIW0EHJk2TYcDQH2gIN8117PRSMVWZUXjEwXRRf658D1u/IwAxdKtz2Yby+0YjGR50BWOg2cfV+HZTqicAI0GO04dllA74b+3nBzBvgVft1WJA3E4P9blTfakZPmy3kxcNUb8HGYznMMUSf16EWXZD843qo5yczcn96PrQdlwrwBphL8PF8aInT186Wyq7/U9J08vuu5jMXCT7XsMuDV9cb0PbiCy+v5ZVhX2fES2Z/XsL32EcQwF+brWh42OHHPSMrlZlZ0ZOM2rtGDHQ7/M9WlWiRPEvJ3KPb334b4xOq6YimoIIADh7YjddA+FQRPMkYz4cAZlEBwjCLYo0xDTfOiRlJT8tMQeqoY8i3AfG5aQVvdH2mn/5LDRdyopK0r+nnEpirj6hj2k0ncqErTOOaOyc/+jdMNLOvqBjmlLHITgSwyAQIHp4wLHiJRQ5AGBaZAMHDE4YFL7HIAQjDIhMgeHjCsOAlFjkAYVhkAgQPH3cM/wL75RLydwN+BQAAAABJRU5ErkJggg=="},{author:"qintaie",link:"https://gitee.com/qintaie",photo:"https://portrait.gitee.com/uploads/avatars/user/2505/7516847_qintaie_1622905215.png!avatar200"},{author:"tong-soul",link:"https://gitee.com/tongsoul",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAABDklEQVRoQ+2YsQ2DQBAEl2LIKIAcOqEHiqAGSoEKSAnoxpaIbIxI/OuzniEF9ridvZOeQtJDN7oKGs6cNoQzBywIQzgzB4h0ZkA/2oEwhDNzgEhnBpSlRaSJdGYOWCI9TZOapvnKqnme1bbtVxpnL9NwCkv7vldVVadSZVmqruv93rZtWpbl9Ll1XTUMQ4rPedOwEL76ynEc1XXd/ogrtlf1aTh5hg6CEDZsYiL94gAzzAwndoClxdJKHKmDHEvL66/EDDPD3owxw15/mWHLbxwODxwe3IP7R/o/39LRvdNwNAF3fQi7HY7Wh3A0AXd9CLsdjtaHcDQBd30Iux2O1odwNAF3fQi7HY7Wvx3hJ/NRxgHWkOqQAAAAAElFTkSuQmCC"},{author:"\u9773\u654f\u6770",link:"https://gitee.com/jmj1991",photo:"https://portrait.gitee.com/uploads/avatars/user/2545/7636803_jmj1991_1596199057.png!avatar200"},{author:"\u51b7\u822a",link:"https://gitee.com/yiweichuangxiang_18053232080",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHgAAAB4CAYAAAA5ZDbSAAAKsUlEQVR4Xu2d+VMUSRbHHyKKooLIpbTcRwPN3U2DnHMRM8z+NBETG/uH7Z+w+8vGbsRO7DGrq6IiyH2NDR4IIggIg7KguCKy8a2N7qnurqqu7IPKrMn8EbOz3nuffHm8zJcm/f4PfzwiWWxrgSQJ2LZsFcUkYHvzlYBtzlcCloDtbgGb6yfnYAnY5hawuXrSgyVgm1vA5upJD5aAbW4Bm6snPVgCtrkFbK6e9GAJ2OYWsLl60oMlYJtbwObqSQ+WgG1uAZurJz1YAra5BWyunvRgCdjmFrC5etKDJWCbW8Dm6kkPloBtbgGbqyc9WAK2uQVsrp70YAnYvhbIzcqi1vo6Sj19OkjJF2vrNDg5aQvFf9Ue3O3xUHVZKSUlJQVgfjg4oKGpKXr45KkELLIF8nNz6cu2Nko7eyZIjaOjIwXu3bExkdULyP6r9eDejnYqKyjQhLj//j3dGR2lZy9WhIfMBeCCK5epvamJ/rO3R9fvD9LBwUFCDVtVWkLXGhvp9KlTut9ZWV+nf94bSLgsCVWUhwz/iqIiamtsoLQz/x8q115tUv/oKL3e2UmI7hnnz1NvRwdlXcwItI9h+dPRESWfOBH42+HhIU3Nz9Pw9ExC5DiuRi31YHhSa309nUlNDdJ36/UbZYjc2NqKux0+83rJWVIctLDCyLG0+pJc5WV0QgV579076h8ZoeWXa3GX47gatBRwXWUFeWprNYfKnd1dujc+Hlfj1pSXKR1KPTR/+vSJpubmadzno9/0dNPl7Owg269tbtLf+u8IO1RbChiWNIK8+/at4snx8KCL6enU19VJ6efP6wIsLyykLo87qANg+H68tEQ3hx4cl9PF9TuWA4Y2jdVV1FxTQ6dSUsKUwzB5b2ycFleiX9GmpKTQN50d5MjLC2pfa7Xc3tRItRUVQUO1yPMxF4BhdU+tixqcTgKM0BIr5C/aWgmLOXVAQw+aXmf474cP9GB6WrgACDeAAdVbX6dATk5OjhvkHm8LOYuLgzwSjRttg7Bt62lpoXNnz4Z5PCDPLTyL6zCayMa4AgxFu9xuwupaDzLLqratoUGZ40Pb+vnNG2W/bbQV01qQQb63+/s0NDmlzMsiFO4Aw2haQ6rfmPC8H27djmhbvY7CsvXRG1Ewd4viyVwC1poHsZpdXlszFenSG5ajmUf1OhuibQiEjM7+FLGzWVmBS8AwCLY1ve3X6FJGBmGvOr+4SP3DI4a2QsfAbwouXw5aUOFHOCUaf/iQJn1zShto3+2qUeZiozkVbX7e6qUShyOsTcj1aHGJBiYmuN0ncwvYD6Hb46bVjY2InoKz3c7mZsq5lBnWCUK9zVVeTu5aF51NTSUzQ7ZRx8HHXv28rQRlEhF5i9X7uQZsVjkAwzYrNOSJ34fChTdiy6QOSZpZdEWCjBFi9vFj7mLXQgPGNqajuYmKHA46oTq093cMzLmjs7M08+hxoK8gNNpUXRW2sjZzegTIGFHKCgs1v4ePII4+PT+nDN08FGEBV5WWKl4bulf1G9VoO6O1cGIJSXa6mwnfP6mxX8f3cTK1ub1NozOzysLQyiIcYCygmmqqKS87W9eLtnd26N7YGK1uvNK0rV60iiUkifBqU3W14ZkyOg2G/5+ePCHf0wVLOAsDGKvelrpaKrpyRTMIAuvBoLgwh2AIFk9GRe/wgWUrlZ+bQ51uN2Wmpxt+y8zwnyj6wgDW8zq/YT4eHtLcwoJyMGG26EWrcD58Y3DI1KoYcvV4PFRacDUsHAo5zCzgzMobTT1hAPu3Tf69sVpZABmZmY0qfKh1eoS2Wb0OczKmjvRz5wKimdmCRQON5TdCAYZi6oMALGaWVlZoYHwi4pCsZxS9kYFl0eVvG23hnnVlcbEyXfBw+iQcYBgTMeJih4Om5x8pw3KsBVdosbJWr8hj2dci6II7XzzcrRYScKxAtX6PUydvfT2lnDxJm9uvaXByQncVnojvJ6pNCVhlWVzdRRmZneU2tszaEbgFjG3MhbQ0ev7yJatOsr7KAtwCxp63saqK9vb3lSABggWJvhBvx57BLeDe9nYqK/wlteTg40dl64J9rj+IgSuwaSHXaqyEdHj4keaeLZraPx+XnNwC/m3fN8pZsLqsb23RX67fCPzpd9/2Kee6vBSMMEha4+WgAXbhEnBRfj595m0JOv7TyvqTgCN3bS4Bu10uanbVBOUKYV+KgMb8s19uNErAggIOnX+hBlJZ/t5/h97s7sohOjLXQA0uPVhr/l1aWaV/3L3LoFpiquIEqcvjoYsXLoR9AIf9NwaNr+MmRir9VrkDrDX/4nLbhM+nHChYWRCC7GnxhC3+IJPVp0Z6duEOMPa/OEhX35nCPeTbwyO0tLpqGV/1Lc9QIQC3fyQx6a6xKswd4L6uLipy5Afphdjwn378MVZdo/494H517VpQ0ri/sUSkuUYtqMYPuQKM7Ptve7rDUjxxb/n28HA89TbdlhHceKa3mhaIsSJXgMuLCglPG6nTSBHBejA1rVxJPe4CuF+0einn0qWwT/NwmG/GHlwBRj4RrtGo0zzhJf8aGFAul5spuGmJToGs/ViKHeBCf64Af9f7FeVlZQVxWVnfoB9u3TLFSv16Dq7x4IAiGtBGcGV2oSkU4ZW0HibDlZyZ+UemnhXUej0HX2EFbQRXpKxCv4W58WDcM0bWgfoyOa6wYvuxsLwcsdtovZ6j/hFWu7jiA6/WK0ZwWa7TRhT2GCtwA1grPIkL7H++fsPUOXB3i0d5uc7ocTPYFW1q3eWyI1xu5mAMr33dXZQREv57+nyZrt+/b7q/49IcAiUlV69qPuiibkidQ2S0FRLVc7kaop0lJUoSmXp7hIvsSBzz5/Oapkyk3I5sbain4vx8zUdd/G1hjt/afk0pJ5M1z5W1ktdY5OChLhdDtNazvm/f7dO/h4aU3OBoCzzT43JRsSNfN91Fr+3QhPFoZbD6d1wA/v7rryk782KQLeIZnsQhgbeulq7k5Giml4RCsAtcLubg0oIC5YQmdHGUiPAkMhM9dbWUnZmpm5kIo+DqzeLqqhJBi5TEZrWHRvq+5R6MZ33rnJVBBk90eBJ5RPXOyohZgZiD8VzSg+kZUyv5SMa24t8tB6wVvWINT0ZruMbqampwVmo+/aBu893798rWatLni/ZTlv3OUsBIJPu8tVV5DEVdWMKTsVpOnTCm9Vamuv2dvT2aeOiLSz5UrHKb/b2lgCEkrsC4Kiroal6esk2y6v9MwEIMzyo5cnMjrrjxcsBfb940a2NL61kO2K89PAmv5SCDH+HEJ8+fW2IYLMSQhBa6qvcLw/LMgyUKhHyUG8A8GEMtg978zJoYbrVeErABgdDQJ7ZMeBg8luDLcQOXgE1YHPNzY5WTXqyvc5HUbULkQBUJmMVaAtaVgAWExiKyBMxiLQHrSsACQmMRWQJmsZaAdSVgAaGxiCwBs1hLwLoSsIDQWESWgFmsJWBdCVhAaCwiS8As1hKwrgQsIDQWkSVgFmsJWFcCFhAai8gSMIu1BKwrAQsIjUVkCZjFWgLWlYAFhMYisgTMYi0B60rAAkJjEVkCZrGWgHUlYAGhsYgsAbNYS8C6ErCA0FhEloBZrCVgXQlYQGgsIkvALNYSsK4ELCA0FpElYBZrCVhXAhYQGovI/wPS9vpMRiSt0AAAAABJRU5ErkJggg=="},{author:"\u98ce\u96e8\u58f0",link:"https://gitee.com/jojonb",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAYAAAA4TnrqAAAFn0lEQVR4Xu2caY/bVBSGX2/xkmQ6ZZFYRVnKUg1SS1nECDq0LP2ABH+Rv4AEYqcLVQtSgSLaIkBQoGUpUNrEiZ3EGzrXdmJ7nDhX8VSQ3PtlRpMT5/rJe899z7nWSH+/0YkgxlwEJAFrLk4sSMCan5WAxcFKwBKweAhwxIqcJWBxEOAIFcoSsDgIcIQKZQlYHAQ4QoWyBCwOAhyhQlkCFgcBjlChLAGLgwBHqFCWgMVBgCNUKOu/AEu9TYGyS+aYygKhEeD/EyC4ES5wkeq37piyWpsm9L1a9QzqiAgB9+shnHPDOq429RoCFgfemwIrdCJ4v/sc06oOlRRAu0uF1JCAZVIW5ZIbb/aqCXBEaHeqaD1nQrYErBw2Y18DSlOGe2GE0ImT+ErAkjQJ1hM6ZEtG75SLyJv99ICyJqN9xGI7azSK4J4fsWS+9LCUdRm0S6q3K0AEDL4dof/ZYObiaz5lwHi0AchgsCh++KO3/LBIVe3DJrtRGnTzzhdDBq1sENT2IRNyK/Zroys+7I+c1VmG2t0qWpsGW4Y0gusB7JNuqaFsPmPAeKQBSEA0TFR1yVsdWHSn1n4dxoYO2v6ZYn7yYJ9wc+LK5aSSmKXPWVkalLQb9ybLMQAG5/MOPPt6OIjQP+Ni9MvEq60ULEr27S0L9JMGWYLe6QG8X30YDzdgHdRjwxmBJXTaObNjpWDRjVM+IhvBoADM5fdODdA+YkK9NV6jYS9kOc3/K1htWHT35ML1BzSWxKls8f7wod2hMqvAypgLQ7ZjFsfKKYsAsOV4yISyO8n2GSr+tQDd95xS47qSsIgNtXKaTxrj5Tj2YJ8PMfiu3IOtLCyC03zWgLE39lQsf/3mo/tBbEDLxlLBWnvZYi0UGv6fATrv9KfeOFuKhy1QHZiOKne/XLBescZlDe1y3fenq6S9ZaKxZ3tXlVo79gmn1N2vJCzjscQ+qPH6I78lm3K8HMljXfLQ+yTvsShuqWCtv94aG86ycoZuuFgoh/3YmJL3Sn3WtOW4NLCou7Dr1eb4dGf4vYfe6bw6tnUgMiWPfr8GKqIlPVZb0A1hH8svx6WBlbuRCHAvjuCczfetSD3GvkwxfdmH/fEkr2U7DgSsqM5psGiToNdGl/1xV3XqzsL5wo4cWOgPJsrQJERBfEzlfjVx4UVfVZbISXlrR63JcvST3tc3se+aBiv9O6kyuBagf3awrVTiZDQO3xFY1gEd5oa+rbtZ5thnWYRtUDPLcZp6qZPR3DQhGxLrgfU+HTBV1jF2BFauvULdhJMuvKsBinlqntYyO6x9KKkdC8sxu4mkeTGrajqCo25FXcdwtcNiBwwvWVDascHMGtJc0Zx0Gexjsw8t6HqtLRPqLXHtGGWW4/prLSi7k5ZzkvOYGp82IKkSgk6Iztv9ykOReVVXOyxzowFzvxF3QTOHEsV2TNkON23SxfdSgd15q4+1jPFNvxTqwpqPxykgjZsXRlVc7bDaL1po3DM5kEhPY6yD1E/X2FKsKmXKJt163oS+R4N31Yfz5ZAl7ezzFIEdwv7QAZnctG9fVV9WwSm+Xiss6ksxf5Q08+jJlu67kxYLJV/rgIHRFa+0RzVr8lQ/KutKLllnVZwuT6pH0y+LOhb9M7OP2niA1Qorm9hvxvMHxQqAlj0b1I0my3JuwA5l6xq1wcpu2cx1Xw9hH3eY+97JUTSv6WdNa0cvMpfaYNEkUldOvxdPaxaZ5Kz3MjvygjluB7Edk0qni+Xt6EXmUSssmgh7ssWUYB+vfo5hkYln30vAKKk37lMRuhFGP3sY/lCPEc19jvhXBfN/ZbUra/6P/v9FClgc35mAJWBxEOAIFcoSsDgIcIQKZQlYHAQ4QoWyBCwOAhyhQlkCFgcBjlChLAGLgwBHqFCWgMVBgCNUKEvA4iDAEfov7p5m3OXy0b4AAAAASUVORK5CYII="},{author:"\u5c0f\u54e5\u65e0\u9152",link:"https://gitee.com/licongnet",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAADs0lEQVRoQ+2ZbUiTURTH/5vb3Jxzc7LmC9mHLBBT0zKh9IMYokKBUKFEFEIv9PKhSAwKRAiqLxUSIdKHiIJeiMKgF0EkikpCErMsFDJrjaXOzaFzU7e4Txgzp8/mc/csnu79urt77u/8zzn33PvINjb3+/EfDRkDlrjaTGGJCwymMFNYYh5gIS0xQRfgMIWZwhLzAAtpiQnKipboIV2UrkVtfiLUCjks49Ooa7OKGlSiA1eu1aG+yIQ4pRxfxrzYdXeIAUfSA0zhSHqXrM1CWgo5vEKrgFb1uyj9PSSp8L68RO7ocbhn0frZhWtd9j/ciwGTql2TbUBVZgI8s36cfGYN6jChKReRotWyPQ15KRrM+Py41ePAlc7RkICbKlORm6zm/nen14nLr0eE8kW+09q8Mg4NJWYYNTEYnphBQ4cNby1uXmAyYUeWHscKk7gz+odrGmfabXhvm6IKTV3hU8UmVGXqIZcBL4cmcPzJ/E6KL4fnosPnBx73u9DYYft3gdP1SlwsT8EqgwqeGT9auuy40T02b8N8wIEqB4sQofRUFSbFav8GI1QxMnx1eHHiqRVDzumwgMnkOZXJR6+2ARcX2rQGVeDAcHzQ58T5F8PLOpaq1xlwuNAIjUIOu3uWC+tX3yapMFMDLs/Qoa7IhITYpTfJF9KEihSt5m1pyDTFgrbK1IDPlppRlqGDDMGL1Zw8oQCTuYHpQVNlKsCBR5HL60PTmxE87BsPGoKhApMCeKEsBRlGFVWVqQAHqvvO6saBVsui+RYqMFngaGESducYoJDLqOWyYOCCNA0aS8wwaRVwz/hwtdOO270OKsDZZjWIM1N1SmoqCwY+tzUZpavjudztG/bg0CMLJqd9VIDJIoGNDI1cFgRclhHPPdckxMZwjQa5JFz/q9EQelsKrA80ui9BwEc2JaE62wC1QhaSust9ALhUkYIt6VoMjnnR+mkcN3sWTxm+w1oQMFmc5NmeXAM6v7tx/6OTz96yXjyIDXIZeT44wbs+3wTBwHwGhIZ0uOvzzWfAfB4K9feKNTokamLgmJrlLvTd1imuiajNNyInWc1V9QG7FzX3JPIufbDAiL3rE6EkF+Mgg3aPHKoQEQtpcpmoLzYhXiVfsBcCOzDqwel2W0TerZaCjxgw6YV3Zum5Mzpw+Px+fPjp4V4zlmpQQlUs3HkRAw53I2LNZ8BieTpadpjC0fK8WHaZwmJ5Olp2mMLR8rxYdpnCYnk6WnaYwtHyvFh2mcJieTpadn4Bs2tnQ6e4X1MAAAAASUVORK5CYII="},{author:"\u5c0f\u8f89\u8f89",link:"https://gitee.com/MrXhh",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAADs0lEQVRoQ+2ZbUiTURTH/5vb3Jxzc7LmC9mHLBBT0zKh9IMYokKBUKFEFEIv9PKhSAwKRAiqLxUSIdKHiIJeiMKgF0EkikpCErMsFDJrjaXOzaFzU7e4Txgzp8/mc/csnu79urt77u/8zzn33PvINjb3+/EfDRkDlrjaTGGJCwymMFNYYh5gIS0xQRfgMIWZwhLzAAtpiQnKipboIV2UrkVtfiLUCjks49Ooa7OKGlSiA1eu1aG+yIQ4pRxfxrzYdXeIAUfSA0zhSHqXrM1CWgo5vEKrgFb1uyj9PSSp8L68RO7ocbhn0frZhWtd9j/ciwGTql2TbUBVZgI8s36cfGYN6jChKReRotWyPQ15KRrM+Py41ePAlc7RkICbKlORm6zm/nen14nLr0eE8kW+09q8Mg4NJWYYNTEYnphBQ4cNby1uXmAyYUeWHscKk7gz+odrGmfabXhvm6IKTV3hU8UmVGXqIZcBL4cmcPzJ/E6KL4fnosPnBx73u9DYYft3gdP1SlwsT8EqgwqeGT9auuy40T02b8N8wIEqB4sQofRUFSbFav8GI1QxMnx1eHHiqRVDzumwgMnkOZXJR6+2ARcX2rQGVeDAcHzQ58T5F8PLOpaq1xlwuNAIjUIOu3uWC+tX3yapMFMDLs/Qoa7IhITYpTfJF9KEihSt5m1pyDTFgrbK1IDPlppRlqGDDMGL1Zw8oQCTuYHpQVNlKsCBR5HL60PTmxE87BsPGoKhApMCeKEsBRlGFVWVqQAHqvvO6saBVsui+RYqMFngaGESducYoJDLqOWyYOCCNA0aS8wwaRVwz/hwtdOO270OKsDZZjWIM1N1SmoqCwY+tzUZpavjudztG/bg0CMLJqd9VIDJIoGNDI1cFgRclhHPPdckxMZwjQa5JFz/q9EQelsKrA80ui9BwEc2JaE62wC1QhaSust9ALhUkYIt6VoMjnnR+mkcN3sWTxm+w1oQMFmc5NmeXAM6v7tx/6OTz96yXjyIDXIZeT44wbs+3wTBwHwGhIZ0uOvzzWfAfB4K9feKNTokamLgmJrlLvTd1imuiajNNyInWc1V9QG7FzX3JPIufbDAiL3rE6EkF+Mgg3aPHKoQEQtpcpmoLzYhXiVfsBcCOzDqwel2W0TerZaCjxgw6YV3Zum5Mzpw+Px+fPjp4V4zlmpQQlUs3HkRAw53I2LNZ8BieTpadpjC0fK8WHaZwmJ5Olp2mMLR8rxYdpnCYnk6WnaYwtHyvFh2mcJieTpadn4Bs2tnQ6e4X1MAAAAASUVORK5CYII="},{author:"Monn",link:"https://gitee.com/ie81",photo:"https://portrait.gitee.com/uploads/avatars/user/125/377013_ie81_1578921988.jpg!avatar200"},{author:"jumpmayday",link:"https://gitee.com/jumpmayday",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJYAAACWCAYAAAA8AXHiAAAGDUlEQVR4Xu3de2iVdRzH8e/ZmruaZXQTY6lrM1sm6ZIlbESTYA5aG1iptZIVy2xY2dAVjE03g9xmSuamlmimybLEsWJJ2bouyshIKBJvGHTxn2o3187iOWBF52ztXD7QOc/7/P08H9n7efk7xyOoJzuveNh4USDCBTzAinBR5nwFgAUESQFgSbIyCiwMSAoAS5KVUWBhQFIAWJKsjAILA5ICwJJkZRRYGJAUAJYkK6PAwoCkALAkWRkFFgYkBYAlycoosDAgKQAsSVZGgYUBSQFgSbIyCiwMSAoAS5KVUWBhQFIAWJKsjAILA5ICwJJkZRRYGJAUAJYkK6PAwoCkALAkWRkFFgYkBYAlycoosDAgKQAsSVZGgYUBSQFgSbIyCiwMSAoAS5KVUWBhQFIAWJKsjAILA5ICwJJkZRRYGJAUAJYkK6PAwoCkALAkWRkFFgYkBYAVZtblS++1pYtKLCHhIr+lnt4+q29utYOdh8P8VaLvdmCF+cyAFTggsIAVZgFgSQJyYgELWJICwJJk5cQCFrAkBYAlycqJBSxgSQoAS5KVEwtYwJIUAJYkKycWsIAlKQAsSVZOLGABS1IAWJKsnFjAApakALAkWTmxgAUsSQFgSbJyYgELWJICwJJk5cQCFrAkBYAlycqJBSxgSQoAS5KVEwtYwJIUAJYkKycWsIAlKQAsSVZOLGABS1IAWJKsnFjAApakALAkWTmxgAUsSQFgSbJyYgELWJICwJJk5cRyOay5N99oWRlTbPp1Uyx98iSbeMkEm3jpBBsYOG9rm1us8/DHIcEDlsthbWuqtbmzZ/pVCPefzB4N1u89vbamqcU6DnWFhDaab3LNv5o8EiznxNr88l57ac8bIT3H0WD99Ms5q65/3rqPfB3SdjTf5BpYLetr7NacWX7PamhoyF5pa7f1m3eE9BxrVj5ipUXzzePx+N3/48/nrKquyY4cPRbSdjTf5BpYtVWPWsmCgoDP6r2PPrPK6nUhPceNDavttnm3BLz3+MkzVlxWGdJutN/kGliPlS+2B+8pDvhfk3x/4rQtWbbKnM9bwb72bW206zOnBryt+4ujVv5ETbCTMXG9a2DdVXi7raost5TkJL8H19vXb81bdtreN98K6qEWFuTZ0ysesovHp/nd5/UO22sH3raGDa1BbcbKxa6BlT09wxprn7JJV10RsdNl07pqy8+dE/DzVV9/vzW37LI9+ztixUpQP4drYDlVXnj2GcvLnR0w0MD5Qdv9ervv5BrL6/GK+21xaZEljksIePnJ02dteXWDnTrzw1jmYu4aV8EqX1JqFWV3j4hhcPAPO9T1qTW+uMOcP9EFek279hpbuewBy51zk8XHxwe8xnkbbDvYaWuatsQcmLH+QK6ClZqSbNs31NkNWRmj9nG+2Dz23XH76ptv7cSps75rZ2RNs5kzMi1zarolJSWOer+bv7+6EMZVsJwfeuGdd9iKh++z8WmpY/3NF9R1zlvqzn0HbOPW3UHdF2sXuw6W8wDrqyutaH6+xcXFRfR5er1e31vpkzXPRXQ3GsdcCct5UGtXO7jyRvycFOzDdFB92P2lVdU1hvR9WLC/3v/9etfCch6M86XpopJCS0tNCes5OZ/JXt3fYZu2ufvt758RXQ3LCeF8IK8oW2g5s7L/80P5v/U5oLo++dxad7WZ89c3vP4u4HpYF1JceflltqAgz/Ln5Vj65KstNTnZEhPH/fXl5/DwsPUPDNivv/X4EL37Qbe1v/M+b3sj/G4CFseMpACwJFkZBRYGJAWAJcnKKLAwICkALElWRoGFAUkBYEmyMgosDEgKAEuSlVFgYUBSAFiSrIwCCwOSAsCSZGUUWBiQFACWJCujwMKApACwJFkZBRYGJAWAJcnKKLAwICkALElWRoGFAUkBYEmyMgosDEgKAEuSlVFgYUBSAFiSrIwCCwOSAsCSZGUUWBiQFACWJCujwMKApACwJFkZBRYGJAWAJcnKKLAwICkALElWRoGFAUkBYEmyMgosDEgKAEuSlVFgYUBSAFiSrIwCCwOSAsCSZGUUWBiQFACWJCujfwJ3bWEqQBCK7QAAAABJRU5ErkJggg=="},{author:"\u98ce\u96e8\u58f0",link:"https://gitee.com/jojonb",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJYAAACWCAYAAAA8AXHiAAAMHElEQVR4Xu2d+ZMkRRXHX59VfcywCF6giAqogCHKiqDIxioqPxj6L/IvEIFhqCAsoXgrBMvKyqWoeKEw09P3Zbwchu2uyszKyqqszk6+9eNEdh7vfSYz6/teZtXeevRoTXhggZItUANYJVsU1QkLACyA4MQCAMuJWVEpwAIDTiwAsJyYFZUCLDDgxAIAy4lZUSnAAgNOLACwnJgVlQIsMODEAgDLiVlRKcACA04sALCcmBWVAiww4MQCAMuJWVEpwAIDTiwAsJyYFZUCLDDgxAIAy4lZUSnAAgNOLACwnJgVlQIsMODEAgDLiVlRKcACA04sALCcmBWVAiww4MQCAMuJWVEpwAIDTiwAsJyYFZUCLDDgxAIAy4lZUSnAAgNOLACwnJgVlQIsMODEAgDLiVlRKcACA04sALCcmBWVAiww4MQCAMuJWVEpwAIDTiwAsJyYFZUCLDDgxAJ7CVbvKzFFn245McguK12N1jT8xZjm/1rushultL2XYPW/2qHo9jDBOvnZmOb/WJTi3F1WArB2af1E2zxjAawdOgQz1g6Nb9g0ZixDQ1VRDDNWFVbWtKGasdbzNa1OVjvunUHz9Ro1DupE9e2yAMvAdi6LqMBavrOidx47cdl0KXXzGy2/2dZata36AFYp5rWvBGDZ266qXwa1x8KMVRU22e0ArGwbGZfo3hPRarymydWZ9jdYCo1NWm1BH5fC6JPv7puiGi0HK5pendH4RTlgAKtaXoxbswWr+8WIojvaNH15RqPfT43bMyl48I0utT/e3N6MD1c0eWlO48vbbQEsE4vuoExesBrn6tS7L6bWR5pENaLV5DQmN3ujnNDJ5my1ZY410eRPMxr+crL1Z4C1A2hMmswDVvSpFnXuiU51o41n8b8lnVwa0/K4uO51+O0utT66PVtxU6ypDZ4Z0+I/20FlgGXi5R2UMQWr3q3TwTc71PxAI93LNdH0tbmIzRV54jva1L03olp7W5MixWzFbQGsIhZ3+FtTsIQTNzbVyS6tF2ux15r8Uf8WpxoKC5yHD3ep+aE0uKrZCmA5BKNo1XnA4ra6X4qoc1eUCqGI5Wq4opOfT6xSVTqfj6jzhYhqSa54tro6o+GvtvdWZ+PGjFWUAEe/zwsWzywHFzvSfRB3kfOfBk+NiWONpo+YrR7pSpdZ3WyFGcvUwjsolxcs7iJvrvtfi6neS0R+xbRFNH5xmkuCYDGUZ6xkIJnrmrw0o+Fv5LMVwNoBMKZN2oDFdcefa4tlsdZMbLSZrRwSBMsXBxe71DhMQ7o8WtHgpyPt2yaWQlNPV1zOFizuZv/rHbGhZz0r+ZhKEP0HO8QyRqoOnvlemNLoOb34CrAqBsa0uSJgidnmoQ41rreTINq3NKn3QIfqcZrMxX+XdPyjUeZeDWCZerrickXAEnuc21vUOx+ntSciWs/elSAUgWRZ6IbrzCNdAKyKgTFtrihY3A4n2sWfaUuXRFbjB0+NiNNwNh/dHo3fLI9/PDIaAsAyMlP1hcoASyduCgnizQUd/+QaKKL8d7rUvCG9hK6na6FZTV+fGxkDYBmZqfpCZYAlJIibm8R11bvp/dJ6STS5ck2C6H05pvizbanIOvvznAaXzENDAKt6ZoxaLAssbozlh/hOiXrOEsRoRSfPToTOpdLAbPLUAZaRm6svVCZYJqo8z17tj6WzF0zEUJl1AFb1zBi1WCZYYknUqfLilY/km/y3VzR4Wi+GAiwjl/pRqGyweFTKgLJiyHnkhWQVmLH84CjVCxdgcSMHFzrUvtXsspHkW2MeUwGsPNaqsKwrsHQxwM3hiQ37s2Oa/90utRlgVQhLnqZUYOURKVXtsWgqAtXJjNCzH2TkWpmMA2CZWGkHZVyCJZbEi13imKDs4cRAkcf+b/vL0QDWDqAxaVJ1eKGMGetUNI2J8+VVz+yvC5EaY/sALFvLOf6dK7CyNK33VsMl0fj5qUiRsXkAlo3VKviNK7B0KnxyWEVy5QFWBZDYNMHBYHH4NPFMX56LtzWbx2QJTNZrKzkALBsPVfCbc9/vE0sDZYGVuQQqlPdkoNp06ADL1FIVlysbLG0gergSJ5nbn5CnM58FqvNoWgCrYmBMmmt9uEH9hzjVJXnPolm+ebINk9SZ6Stz6l9QnKi2OD4GsEw8XXEZETB+UJJDZXiQYbO7uuQ9Lre5h9KlM+c9PgawKobGpDk+HSPu70wo4xwUHv56QryBN32Up20UJ6S15XOEeVRgcb69yER9zXwMpmOtutze3ejHWZziEo7E2UA+xSyc8qqZU3ShG96Uy3Qq7QmfHEuiEqycY6galjzt7R1YqhPIfEWj+KrDm9mB4axgs05Z18YSDU5Bs3MAVh5EKyqrihOK+xIujWnxlj6GlyUt8MmcwaX0CZ3N4WmXRIMT1XnB4uzV9i0tsUTO/5n9j1ORK7TN7N2MdfitLrVuSoujpjcm66SFrDOFZ5YUM96FrlRL4zIcoD5+Qn1wVblPVCyF7y3/jZq4HWf6lwVNX5mljqf5ANRZH/YOrHPf61Pj+rQ4ahKA1i5jOS9iK7Ikqt5sVftE6fK/Jpq9MafB03aRBtcQ7hVYPFMJqaGTPq7Fm3bd7XxZG++sWUbmCN09ELpLRvJKJqp9ZdEsC5dw7RVYqjdCoSNdntLoD/Jsg6x9lY16zk7JeglQwZoXLNWp7SKxUZdQcd17BZby40wZGpbuOL2I9zGUGTfEqByhO3avOx4mDUuticZXZjT67fbdWtJxK8q6Bsa0/r0C67rv9qRH3MWM84z8k7dl7qtURlVdFMLlVUtinnineAtNfKpYaG0vTIXe5uOzN2Dx5fw9Pg6vuD7o6PFhyr5ZqTDLt5cizTh5+UdeRzU/2BBXI9X78qxT2ZKoSv2R7Ztk+Wd5BeG8Yypafm/AYrW9c6f8glrZxj1rs267r1IZnDfY8d3yo/qyJVElm7BOxXdsbT4yCPMIwkUhsfn93oB1+EiPOLMh+Ygl4bkJjS9fu1I7a7OuCtnYGHALAIXGJlsSlUfYjlZ09IPh1uVtsmXTVBAuOibb3+8FWHyItH9/TLVIcneoRHHXKeN8XL6MDwfIDK5beoX4+vyUJldO/wFMQ1PNGxviIG1ymTUVhG3BKPq7vQCrd39M/AUI2b2hs78taPDktaWDZzW+yrFxnXy/Y3P1dh4jy+6U5zATZ15sfvpEpOHcF6eD6fxRg99Nxc3L/Ki0OxNBOE+/yy7rPVg6rUi1pPFSyDBGfFx+gy/VTX1lGnVzGeZZipMEZVdzKxMWEwdiVXHFLEG4zDHZ1OU9WLpNO38XcPCE+rYXlhr4A038JmkaB7QxYvI3fNg1uq0tZh1dtoVKPuG3yKMfnr7l8qfwOncnXloyBOEyxlC0Dq/B4nvUWSNSLWt8NSPrV7qHT/N0z0fCwWV/o7Co8XWCL+tTk6tz6bd6xE03G8tl0X64+L3XYOmuZ8xz4b8Lw5VRpxBvz8s/aMASBWtV0heWHLlnZfTTpg5vwcoSHZObdpvB7/o3WTn3qv7xffIyQXjX49ls31uwdJkDIeWGa2ONMlJKuO2mCgC9BUuXkOdzuoiN03SxxmR9WV8Ws2nfxW+8BUu8Ed0biw8rbX4PMO+d6i6MVnadWeGns/ZsT16X3V+T+rwGiwewpaI7VM1NjOWyDO8pWXuTfmaYG16ROIFkezeFy77L6vYerE3BsQqBs2oHbG14WzUR6mEdTHxXsXb6jR4O37AmZnq0bZdjOGvbe7C4o7xU9B/oEL8J2t5J5YOx30992Auw3k8OCWWsACsUT3o2DoDlmUNC6Q7ACsWTno0DYHnmkFC6A7BC8aRn4wBYnjkklO4ArFA86dk4AJZnDgmlOwArFE96Ng6A5ZlDQukOwArFk56NA2B55pBQugOwQvGkZ+MAWJ45JJTuAKxQPOnZOACWZw4JpTsAKxRPejYOgOWZQ0LpDsAKxZOejQNgeeaQULoDsELxpGfjAFieOSSU7gCsUDzp2TgAlmcOCaU7ACsUT3o2DoDlmUNC6Q7ACsWTno0DYHnmkFC6A7BC8aRn4wBYnjkklO4ArFA86dk4AJZnDgmlOwArFE96Ng6A5ZlDQukOwArFk56NA2B55pBQugOwQvGkZ+MAWJ45JJTu/B8FayrGxGEsfAAAAABJRU5ErkJggg=="},{author:"Answer_\u96ea\u83dc",link:"https://gitee.com/Answer_SeTsuNa",photo:"https://portrait.gitee.com/uploads/avatars/user/1809/5428600_Answer_SeTsuNa_1591148786.png!avatar200"},{author:"\u592d\u4e1c\u51c9\u4e1d",link:"https://gitee.com/ydls",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHgAAAB4CAYAAAA5ZDbSAAAJH0lEQVR4Xu2de1TVVRbHv0CipRLgo0zz0WNQV2RhNtCYmo0GDma+rQQkyxlhApdTkmlDVDpm5koTLXvgY5wlYi/xFYbK+MDG1BxnOTrmktJ8gOALUIELs/axe+PqBZL7+/E7d7fPP94Hd5+zv5/fPr/9Oy+9HoiIroIUtgp4CWC2bJVjApg3XwHMnK8AFsDcFWDun9yDBTBzBZi7JxEsgJkrwNw9iWABzFwB5u5JBAtg5gowd08iWAAzV4C5exLBApi5AszdkwgWwMwVYO6eRLAAZq4Ac/ckggUwcwWYuycRLICZK8DcPYlgAcxcAebuSQQLYOYKMHdPIlgAM1eAuXsSwQKYuQIGude6ZSDatG6BvfsPGWTRGDMSwS507NS+LYLuaA9vb2+0bhmATu1vU3/VMsAfAf5+8Pb2QouAm+HbqBF8fLzR2NdXfX/guzxEJSQbQ8YgK+wA93ywG/yaNXPI0+XujvBr3lS9b3TDDbj9tlvg4+Oj3rcI8EOTxo3V6+qg6qvt0eOnMCF5Nn748WR9TRj+O20AUxf31ODHEHBzcxU57dq0dkSG3evqQOgzLy8vNGnsq/7VoRSdPY835nyMLV/v0aE5qg3aAKbGLJ2bgs53ddRGnOttyMVLlzEvbQVWZH51vT817e+1Ajz9pTj06/Vb05w10rDNZsPlsnJl8sy5Cyi9eAnl5RVIX7UBazduM7Iqt2xpBXh89FBEDRug7pVml6qqKgWosrJSVVVcUopzF0rU65LSizh+qkC9Li29hP9+l4eKChvOFxdj67/2mt00Q+1rBTi8TxiS4mPQrOmNLp28XFYGm+0KkOqRY39/sqAQF4qvQKq0VeJQ3lEFcMyIgSrrrV6++DJH3S+5F60A33RjE4SG3OPIbPOOHcf+/x1xi0GPbl2R8sI4tGoRIIDdUlLTHwtg5kcZCmABrGnfY0yztLoHG+OSsxWJYIlgM64rbWxKBGuDwpyG/CoB0yDH5+tzMP3dNHNU1cgqe8AD+v4OSfHRoGdseymvqMDijDV4f+mnGqEwpykC2BxdtbEqgLVBYU5DBLA5umpjVQBrg8KchlgKOLLfw+jRrYs5nv1ktVVgAEKCgxzLdOhjmsvdve8gCorOmFo3GT+cdwxLVq41vZ6aKrAU8NTEZzDosd6WOd8QFe/8dj/iXn6zIapyWYcANll6ASwRbOolJhFsqrzArzqCu/6mEzq2u7Ko3IxCi9Zjhke6XAJUWVWFrJwdyP1mnxlVO2wWFJ7Bzr37Ta2jNuOWRrDZXic+OwpPDurvlEFXr/Pg4e8xbtJ0tSKSa2ENeP70JPS4r2uN7Gj15Kz3l2H1hi1c+eq18N1IlR964F4kT3wWgf4/r6akWST6r1a9f9oJQe+zcr7G1JkLjKxaK1tsI/ilP8dgcMQjDpik+qmCIlTYbGh7aysHhKKz55Ay+0Ns/+bfWoExqjEsAbdveytmJ09Ah3ZtnHSiReunThc6gadka232NqTM/sAoTbWywxLwH6OGIGb4H5x2SJSVleODf3yOk/mFeDEuCn7Nruw4pEKZbvKshZZmu2ZdFewA097et/+aqLaJVi/fHzuBiSnvqK2dVydfdC/O3roTk/+WapbOltllB/iVCWMR+fueaguqvVA3/Nm6TZgxb7H6aFjko3g+doTTKo/ikotIXbQCK9dstAyGGRWzAty/dyiS4qIdG77tgrlKpBbOfBn33xPkpOmhI0cx5c0FOPLDj2ZobYlNNoCpa56WNB53d7rdSciakqgnwvsgYexING96k1OkZ23egVfees8SGGZUygbwq38Zh4hHwpy6ZhLs+MkC9Zy778Dha/SjTLvng/c5nRBAydiyz9Zj/uKVZujd4DZZAI6LGYanB4fD17eRk4C0enLZp+uRuijDpbC06yF54nO4pVWg0/cXSkqRmpaBT9Z6/v3Y4wE/9/QTGD0kwilhstOiQf4XXptT61hzTRdH/ukizJy/FDk7djd41BlZoUcDjh42ALEjH3c5W0SAps1Nq3OEitZLvzU1QY1ZX32YCwfIHgu4tsi93i6WErQZk+NxR4e21wRPQeFZvJuWjnUbtxsZWA1myyMBT4qLwqD+va+555Jq9U2Shg7oi/jY4U5ZtZ0CPSOnpa+ydPFcfa8IjwJMZ2lNSYhVxzxUH8hwDGhUVmLdply8+vbCeukxalA/jBs9xCVkWom5afsuvP7ORx41f+wxgHuHhoAm8OmANFcHn9FhK5tzd6tJA3cm8GtKuuiKoSHNYyfyMefD5R6TfGkPmJIgEn1gv4ddZsokvFFw7WH/p6ihGD00/JqT9uzf021gc+4uzPkoHZSI6Vy0BhzWPVjBDbqzQ43HFdKz7prsbZhm8JFItSVxPw+BnseqrH8iLT3TrV7DzAtES8B0r00cOxJ9wrq7TKTsglBXvPyLLCxY8okpGj3evxfixwxHoL9fjfap26YzKjM3bNEStFaA7d1xRN+HnOZrXalLXeO8RRmmP750v7czJo2PVkcK13XoKWXbW3d+i4+XZ2ozYaEFYAIbO3IgKGJqixZ7orPnPwcxI3VJg4lI7Zv8/Bg82rPHLzpmkXICmn/O2bEHGauzLb1PWwqYumK61/UJC4G/X/M6u1mKkBWZG0zrkutqAO2jGjMiUq3pqiua7bbooNJZ7/1drcG2olgGmA7unpLwDFoG+tfpN0XErn0HsGDxSpezQnUaMPAP7PlBr9AQdVZ1baW+gy4GNtfaZbM0IkUjSK4GLezdcf7pM8hY/ZU6U0OnEtz5TtDj1P3BQS67bboo3Rl0McpXyyKYHKhtoJ+64zXZW9W8rDsDF0YJVZMdepSjbju4y10O0JRZ056kF9+Ya3nbLQVMol29EoNg5uTuVhmy7oMI1aFTRD81OByhIcE4kX9am6U/lgMmkWgXQuLYUaC9Qp4G1uwewl37WgB21wn5fc0KCGDmV4cAFsDMFWDunkSwAGauAHP3JIIFMHMFmLsnESyAmSvA3D2JYAHMXAHm7kkEC2DmCjB3TyJYADNXgLl7EsECmLkCzN2TCBbAzBVg7p5EsABmrgBz9ySCBTBzBZi7JxEsgJkrwNw9iWABzFwB5u5JBAtg5gowd08imDng/wMV5g/lafM2ywAAAABJRU5ErkJggg=="},{author:"helloLuo",link:"https://gitee.com/lhw516678532",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAYAAAA4TnrqAAABc0lEQVR4Xu3YoWqCURyG8b+KlyAGi2EgajIvmWwW72BYdw8DL8FqMnoHSybB8LErEBQ0y/rYHHxbmaCcxyA4H5PhUQ4/X4TvFJovr4fwlSRQECvJKY/ESrcSC1iJJRYRAK3/WWIBAZC6LLGAAEhdllhAAKQuSywgAFKXJRYQAKnLEgsIgNRliQUEQOqyxAICIHVZYgEBkF5tWc/dhxg+1qNcKubHW6738TTNwFF/0lG/HYNOLX//8fkVk8UmxvMV/p5LPiAWUBNLLCAAUpclFhAAqcsSCwiA1GWJBQRA6rJuAQuc8WR6N487Yp0ROH6QFgtgvW3fY5btsFm3UYleq+qtQ4qcVzQpSr+NWGL9FfCmFCxCLLGAAEhdllhAAKQuSywgAFKXJRYQuLP0ajel/8FVLPAriiUWEACpyxILCIDUZYkFBEDqssQCAiB1WWIBAZC6LLGAAEhdllhAAKQuSywgAFKXJRYQAKnLEgsIgNRlAaxvcIg11R/kE4cAAAAASUVORK5CYII="},{author:"Wogoo",link:"https://gitee.com/my58164020",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAYAAAA4TnrqAAAFWElEQVR4Xu2abWibVRTH/0nb1K4vobVdt76oTHFlDClsQ526MdgQoRvKQNgHpyIoiqIwEXWTMRTfBwridCCi+zBwDIVVVNYx9sJ01JfqRpk6h25d2zRdu7TNmvfIfbrE07s8eZ6T5kkMnOdj+N97z/PL/5577klcyz/6Mwl5bBFwCSxbnAyRwLLPSmAxWAksgcUhwNBKzhJYDAIMqThLYDEIMKTiLIHFIMCQirMEFoMAQyrOElgMAgypOEtgMQgwpOIsgcUgwJCKswQWgwBDKs4SWAwCDKk4S2AxCDCkeXXWPTdWY9vq+WioKjNCGJqM4sWDw+j3hy1DWtJUiTfXLcDC2oq01h+MYfthH3ovTrPHc9a2nPyqIK+w1Jx7Nrajo7HSmD4YSeDdE6Po/n3CMp4Hl3rx9O3Xo6rcndaGY0ns/mkMn/eNs8crwE91X7QcxxHkHdb2Nc3ourXWiCGeSGLv6QDe/37UMqbX1y7AuptrrtEd/GsKL/cMW45/4e4mbFzihdvFW9dyYiLIO6zNnfV4fFkDKstdxjI/DFzBM18PZo1pXoUbnz7QhkX1HkN3JZqA+kw958YjePTLAeOzbM8n97fhtubrDMlEOI43jvrRc26Kw8JSm3dYK1qrsGNNM5qqy43FLwSieO6bQZwPRE2DWbuoBi+takJdZRki8SR+HQ5hWUuV4ZKJcALvHPfj27OTpuP1fGdnTUsyGQR5h6XW4H7Lz97ZiE1LvShzuzA2HcfeU5fxSGc9qj1uJJLA/v4A3j7uN32/DR112LKyMe3Go38HseW7oVx4ZB3jCCyaP6KJJPb0Xcau3kumgXzY1QrlSPWcGQ1ja88w3ruvBe3emZPxN18Ij301YDpeX++zvnF83DtWGrD0bzpbkqZbSP2r7sCZCbx6ZAQ7712IVTdVGy9sVULsWt+K5S0zsJUzXzsygmP/BEsDlp5Dzo5FsGnf+YzB05JhOpbABycv4YvTATyxogEPd9ajwu1CthJCX0s586H9F/IOSk3oyDZUE9Otle3bfmX1fKzvqIM6O2khqRe4Zu6kLqbOdIKWY7Bo0jZzhioPdm9oxeKrRaxeSNIC16yEoPmKOrOkYNFyQAXe/cckdhz2zXoHqslUwFLXmdVO1MFOXHFowI45Sy80M51o1H2ZYNB8lgmmnq+cuOIUBJZahJ5oI8EYth3y4Zeh/y7F1BWZtpkOQwfetbgOz69sNOoxztUq1y3qmLNUQPRE0/OJDsIsgVOgeglB85VTV5yCOYueaHolTrdYttIgWwlh5cxcHWQ2zlFnqUXpifbj4DSePDDTNpldMsSw9dAwTvlC18RJgdPS4AZvxawq3253Yi4AHYdlVkdRiFaJmWpTRSfNV5y+1/8aFm3ZTEUSeOuYH8FoIt1RtZOYKfDUQaGuQqnLt9V1aC6ACpaz1EK0ZZMCE4ol0lcZO4mZ5jfV19p5YtRoFN7RNs94F6uLdsnAUoHSlo1qn4TjyXRX1E5zj56cCvi+/gDuaq82uhJ2WjglBYse8epSrZ5bGma6onYTMz35fh6aNsarZiGnzz9XaI4neBUgTcaBUBxutwu1HnfWboL+YnqDsMbjhqfMZasTO1dIqfEFgaUf86nFOYlZv2um5nCqK5oJcEFgqYXpNkoFwknM+l1TzaG6sE51RYsKi24jFUguiVn/uczJrmhRYenbKJfErP/M5mRXtKiw8pVkizlPwXJWMV8yX2sLLAZJgSWwGAQYUnGWwGIQYEjFWQKLQYAhFWcJLAYBhlScJbAYBBhScZbAYhBgSMVZAotBgCEVZwksBgGGVJwlsBgEGFJxFgPWv3FFqxt2LjGzAAAAAElFTkSuQmCC"},{author:"\u9676\u6ce5",link:"https://gitee.com/ncs48620",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJYAAACWCAYAAAA8AXHiAAAMFklEQVR4Xu2daZPkRhGGs3v6UB+zuxzmxgaDORYTLLAExrFgrgBDEPAX+QsQQAABOBZ8AQvYrDHYxPrAYIMx3p3p+5BEZPX0dKtUJZVayp5Wz6sP82VKKenV01WprKysyhvfPwoJBxQoWIEKwCpYUZhTCgAsgCCiAMASkRVGARYYEFEAYInICqMACwyIKACwRGSFUYAFBkQUAFgissIowAIDIgoALBFZYRRggQERBQCWiKwwCrDAgIgCAEtEVhgFWGBARAGAJSIrjAIsMCCiAMASkRVGARYYEFEAYInICqMACwyIKACwRGSFUYAFBkQUAFgissIowAIDIgoALBFZYRRggQERBQCWiKwwCrDAgIgCAEtEVhgFWGBARAGAJSIrjAIsMCCiAMASkRVGARYYEFEAYInICqMAy8JApV4h72MNmv/Xp9m/5yAlowIAyyJY8946dT7vUaVRoWAU0uy1OU1emNHsX4DMhTGAZVGp84BH3kcaRJVog/n/fDr60cBF23PdBmAZXj8Pgxe/3aGDS9Xof0Oi8fNTGjw5PtfQuDx8KcCqvf2A2p9pUtXTug+XJzS0mbw8p9HTE+vZ3kcb1L7apEotej0eEvuPjTAcOuheCrDq765R91qLqu2CwPr7jPqPj6zyHH61TY3312L/n/5zTr1fDh1kRROApTFQu+uADr/Uomo3OgyG85CGNyY0fm4KahwUAFiaSO3PNql1uUmkuVfzN306/umQwhn2tHLgqhx76WxrKGSn/cLDbaq99SDmtE9uzXYinhXOiWavznce8FL3WME4pHAUWH9ADEq1U42FDCYWH6v1ySa1PtWkisaVyy90W238XkC9XwzJP7Y/97buJek6pQaLg5bHP7c704cPtajxgXrk+UOfaHRzYvwqvPBwh+rv3GGqiMi/E9CdH/R3gZ3Ee9hrsC59t0sHb4k6S9zLDR4f0fSVaASdg6HsX3GkfZcPgFXg27H5WEk9Vv09JyGKVhQUfjFHPxnEfJTDr7Wp8b54iKHAxyjEFMAqRMaFkU3Aat3foNYVL+YvcU/V+1V0+FyfFyzwtkVMAawCZd0ErO6DLWreF/WvKCAaPTOh4Z+iUXdbb6Umnm/NCnwSd1McT/Pua8TCHgDLXcPUlpuAdfFbHaq9I+qIh5OQ+k+OafrSChabbxVOQxr8dqwyGs7iaF9pEn+l6vE0/3ZAd34I572Qd5IVLP6y63L0vB113P2jgI5+vPKvVNzq6+0YgHzT69M33I57v/nrPs3f8At5pjQjNrDSvoTT7G7r/3v5VcgJeuoLT5tE1v0rW9yKezbVW7246K3WJ6X5q5IBm9ya0vQfcrlZ7asetS7H03YAVoE/jaw9FifoMQyRXKqQaPTslIY3FikvBxeqdPjldiwcoXorzcE3+WA6fAU+rjJl9BGJVMJhUuyu6PvY1N5e9lgu/pURPiJSca4nRqe9UePuGnW+0Iql7EhnOgCsTZHOcF6WHotztzjirmcnrE+F2GChkJSz3n90lVJjjN5vIdMBYGUAZNOmWcBK86/YET/8SkvFxvQj6AfU+/VILaDgwwbg7D+c6SCbngywNqUlw3lZwErzrzgT1btsmGjmGNdfJjT84yrGZUr447nG8d+m5N/O/3WYlKlgA4vjaus9agYZt9p073ysJP+Kc6m6D3qxMAQrzoskjn+2yrfaxtxhMAwVJOyQ64cVrJTs163Sk3CxvQIrKX7FX1Lda55xCFTB0Btj4nQaPlR865ttqr1NNtMhEaxrLWp+SJs5IFL3mJRWDbAyKOA6FCb5V/6Rb8wMVQ77izPq/2blsHc+56nFqnrUO8MtOzVNAuvCN9rGHwHAcpLWrZErWNb5wZsTGj8/UytvGnfXIxPTPPfWuz5UeU581N9bUzGkohZuJD0hwHJ7/2KtXMG6+J1ObPjS86949Q1HtTlAykMgO+vLBRKJUzyvzGn68mrekFNs9CRCXh7GSYRs1+VIct7RY7komLONC1gMTId7Gm3toWnlMs8h8krncBxG/BVeYsYpNPrqZz0MwY9j6h2TeqCsEhjB0mYPstrcZvu9cd6t+Vcvzah33b6GcCm2dd6QwwucavNUNNXmTMDikMjN+L1sExjXa+0NWN0vnvQ22pPzsq3+9VHi4oOFX2UOQ3AooPfIKJZxCrCSEdsbsDitpXN1UR0mcnC9heemKlvBdCRBFQwC6j82do4zFTkUmuJxKlERPZZrp5nezsXHOvV7PmzwkbSJ5fUrcs/TuDf6pcj/Vyuf2bH/q3nls3SPdel73XhREoCVDkuWFq5gcXWYw4fa8RdiSIVZvz4vvOCpntOAqGEyWr9fgHVOhsJUJ1xL3jPJ0rq/Sd4nGmoe0ORX6T2dnlNf5FBo6rFUL/qHiZqr3PVjb3yspdBpsSh9hY7+gjgUwXOKaTUazqLH4ntSma1ntMAjC8x7BxY/fJb6VrykvnlP9vWE/JGglu+vHZz5EPQCotAtQBo5N1jMAy6DtcYeC2BlYTu9rauPtW7JuFze8IVoyyJIv6uCW2iOOcAqWF9jSMBSeC0p/9v7eEM55PqCCr0c0S6CZfshYSgsGLZNeixbSSJ9bSHAKvhlnZjbSx9rKZWx8rE238YZp6a8p1S5q5V4uaOQKPT5T+rZ8QYqg3WqAqC2H5KqgcqJga/KLTvb4M6Np+w1WJx90H3Ao0ozGo0vYgmV5FehFayEjNOigCjKzl6DZSurXUTxMoB1zgKk+uOaFkTYamRl+bUCrHMOlmmpuimCbYpn+b2Qeo+YKwZmBYtjaxypr6yFvhhwno/U60Gwz6e2W6lrdeYxFGb57ae33eSrcGnVmAdvKGdkAiWpZFBWsExFPmxTQFaweN3j9dHWCpOkvxl7i732sfixbUXV9EUJZQCrLLWxWPe9B8vW2+mFPwBWnv4pfu65BUsPOQAsgHWqgEs8ytU/2yWwbPn7GAqLhX+j4rbLW7Ct3tnlHqvsZSLPhY/lWj15l3qsspeJPBdg2Soiqw0tn1gtsABYxQ4ze+28e5cb1Oa9cbSVO2rbk6fGNHpmleILsADWqQK8lJ0d2vltX5Uh4uVRqhtuVtRGlrW7asYNl0yByV0Cq+xF10o/FHJulZ654PK7M9UPNYJ1HNDoz+YtfrPWbjBtCGCLvNvAMu2q4fK8Z9Gm1EMhZ4MeHFZjc2pJQtqqHZ9Fwl9WsMpSwqj0PRbXAj3oVGKFbG1gqTKPz0bLQS7b7hJYpoK6fJ8Aq+C+NynIyZcyFarVb4H9MV6Pp++js4tglb2EUfl7rNfmxNuYxDYLWKOKgeJUXt48YFkN2cT9LvVYpjpftg2mCv4NF2au1D4WR88Hvxsv9nCukCpaywXV+CuRa1+xD7as1JemGNeHP7io7TCedlLO/5sKr1lX6CTsDJvzNkROLz1YZdj+I8ubs9bpOuPdyLI8w14MhfsEVlK1ZlVVsCRJfgAr689QsD1DxcvVmh+Ml2Hiy7pkcgjeXmbTGAozS7Y6gbNTK16FgsHiAyGtkIjtUvV31ah1pUlcp950qCmopydqzWFZDoCV4021P90kLn10Wg+e16rOFwtWeaEE8eLVkx3FOBiqH1zymz8Yqq1qrKDuelv+8uUqOf7xyZxVjnve1qkAK4fS29ikXAV1DcV1c9z2Vk4FWDlktm1hl8Nk7FRbcd0iryFhC2DlVNVYhDanzeXpDFX/0TEFw/IMgct7B1g5IbDN6+Uxy8Pf9IUZDX4/3viDIM/1izgXYOVU0bYp+CZmXaefNrG97XMAVk7FeRpJhQnWZoO4+nKs3rztOiEtEhVf90uxwtlVrlKAxfN/vFRef1n+HT+SXuz60Ggnr0ApwJKXAVcoWgGAVbSisKcUAFgAQUQBgCUiK4wCLDAgogDAEpEVRgEWGBBRAGCJyAqjAAsMiCgAsERkhVGABQZEFABYIrLCKMACAyIKACwRWWEUYIEBEQUAloisMAqwwICIAgBLRFYYBVhgQEQBgCUiK4wCLDAgogDAEpEVRgEWGBBRAGCJyAqjAAsMiCgAsERkhVGABQZEFABYIrLCKMACAyIKACwRWWEUYIEBEQUAloisMAqwwICIAgBLRFYYBVhgQEQBgCUiK4wCLDAgogDAEpEVRgEWGBBR4P9yM3fVhKh4WgAAAABJRU5ErkJggg=="},{author:"think",link:"https://gitee.com/mo_zhenshuang",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJYAAACWCAYAAAA8AXHiAAAJmElEQVR4Xu2de2wc1RXGP9tr79rrXcdPnBincUhIMAkEEhJKiZLwEI+2olKriPxDkAhCAiEkBFURSBESUFUqqgQtqtpKfSIoSAiQeEooBKVJE5SGEiBPiJNg4vidtXdt78vobuTArGdf3jk7d3a++dMz89073/ntuXfOHc9UrPnjsWlwowMWO1BBsCx2lHIpBwgWQRBxgGCJ2EpRgkUGRBwgWCK2UpRgkQERBwiWiK0UJVhkQMQBgiViK0UJFhkQcYBgidhKUYJFBkQcIFgitlKUYJEBEQcIloitFCVYZEDEAYIlYitFCRYZEHGAYInYSlGCRQZEHCBYIrZSlGCRAREHCJaIrRQlWGRAxAGCJWIrRQkWGRBxgGCJ2EpRgkUGRBwgWCK2UpRgkQERBwiWiK0UJVhkQMQBgiViK0UJFhkQcYBgidhKUYJFBkQcIFgitlLUVWDVVVfi2s46+DwVhsiHJpPYdSpsCQ3XL/Qj6Ks0aE3Gp/Hf0xFEYklL2nCCiKvAuqajFk9uugitfo8hNidGotj8yilL4vXK5oXoaqwxaA2E49i+4yw+7p2wpA0niBAsAATLelQJFsGyniq3veedQ6EIQ6aizFjMWCK0ESyC5U6w7l3dhE1d9ZZcfFUl0BGohjet3BCOJvHNWNySNhYEPPDXGMsNU/Fp9I7FkLCo2rDjxDj+vH/Ykv5KiWifsZ7Y0IY7lgelrt+Rum8cDuGpnf1a951gaR0e884RLAuCxow120SCRbAscIBgiZjY3erForQlkrk2FKypwt1XNaK5rsogcfpcDH/5nzWT4W1XN6GzodqgPxRJ4G8HRhCKJubadcN5PSNRfDEwZYmWlIj2cywrL5wFUivdzK5FsFjHEqGNYBEsglWsA2q+9sC6ZjT6jI/N9IZiePT9M8XKp87nYzPnbXRVxrKEHIrk5YDjwXpgbTPa0h7cy+vKNT6oPxzHH/YNadzD3F1zPFhmQ0/uy9b7CCsfPLTrSgmWXc5naZdgaRAUZiwNgmDSBWYsDePCjKVBUDLd3jvhP2Jqqiqw9uI6BL3G57cIlqZgOSUwpVhisitEZTkUEiy7cPquXYJlYwyYsWw0P1fTZnMsZqxcrsnvZ8aS9zhjC8xYNpqfq2mzjGXlg3u52i9mf6YHD52ScbNde1lmrGKCrcO5BEuDKLDyrkEQWHnXMwjpvWLG0iBOzFgaBMEtGUu96IxLOvYCV5aTd6cMJSw32At/1tZZINUzOMxYNsaFGctG83M1zYyVyyF79jNj2eN7qlVmLBvNz9U0l3RyOWTP/rLMWPZYaV2rTrmr5VqhdTEviRLBKonN2Rth5V2DILil8q6n1fn3ihkrf6/EjjTLWFa+BVms4wAyvcWZYEm6nqc261h5GlXiw8ryrtCqX/y21U3YsrIBnkrjZ+j2fzOBh98t/rVHrGOVmPZCmjN724xVb2t55qZ23HyJ8eMF0wBePxTCMx8V/571Unw/sRAvrTzW8RnLSjPStf75804sb/Ea/qy+MvGn/cP4xycjkk07XptgZQjh+h/4od4x31RrfMOyGz9qORfKCVYG1+67pglbVzWiOm1+9enZSdzz+tdz8dpV52gNFr9KkZlFq25QpGgnWFLOCusSrCIMZsZixioCn8ynEiyCJQLWL69vxY8vDYhom4lWVAA+TyWM5dDzR6oyg6dSLcPM3htNTCOeVBWu0m09ozFsfe106RossCWt51gFXktRh3c11uCx9a1YNb92FlgT8SRe2DuMpc01+MmyINLZisSS+Nf/R7X/6mlRBhV4MsECoKDavrEN3W2+WVCpPLTrZDi1hKMq5c/dvgBXtvtm2RxLTuOdo2N4dvcgFGhu31wP1m1LA7hvTRM6gsZPwc2AcWwoisc/6IO6C1PbdZ11eHxDm+lHCxSERwen8Ls9g1DriW7eXAuW+prFQ9e2YGOXH+ols2abWnN8emc/dp+OGHZvWOSHmv9l+iLGeDSJt46O4YV9Q67NXq4DSw1nW1bOw+YVDbOWa75Pj1q6eX7vEN45NmYKncp0D65rRmuWz60MTyTw5uEQ/npgxHWAuQYslV3uWtWYelqhsbbK9M5vhqC+8Th++58B7OwJZx3NVOZSWS/9i6rpJ41OJlJaL346emFILfdhsuzB+tllQdyyJIAVbT74POZD3kyQ1Rzp0MBUCqqDZyfzir2a+P9qfSuuMrmbTBdIJKdx8lwMH50M4+2jY2UNWdmBpYa625cGsGmxH92tPtTXGF/On4kWVad680gIv987t3nRw9e14KfLgnm3p8peg5E4Dg9MYV9vBDtOhKHmdOWyOR4sBdINXX78aKEfy1q8WBDwmBYxMwVMZakjg1OpifaetEl6oUH+YWcd7l/bjEubvbNqXbm0VD8mYkkMRhLoG4/h1GgMhwanMBxJYNep7ENyLm079jsKLDXsrGr34YqLfFjc5EVHwIOAt6rgICqjVSD7x+N49fNz+LvFD+3dsTyYeuTm4obqrHO5QgKu+quyanL6fIVfVfpfPnhO26KstmCpu65NXf5UfamlzgN/dSW8OeZI+QRKhaVvLI43Dofw0sFR0bs1Nb/7RXcDls4hg2W7FnUNH/dG8Oh7faL9z8fPTMdoC5bKTs/eMj/nHVe+F6/W844PR/Hvz0ZTE+dSbqsX1GLz5Q1Y01GHgNd8LbKQ/mSqrxWiIX2stmCpC79zxTzcv64JtWr1dw7bhbuwnnBqyNNhcnzrkgBuXFyPK9p9OcseZpesfiCqbKHmhDpvWoOljPv1Te248ZL6vOcqap3uy+EoPuwJ491jY1rAlAmA7lYvNnbVQ2W0RfOqU/PF7AURNQRO4JH3zmg7BM5cq/ZgZfrfu5kJuPqvZ/Ulis/6J7HjxLgjXmqbCTRVxF3TUYuVbT4saT5/h6uGzplHeUJTCfxm1wDePz6uc7JK9U17sFQn1bqcutNS2ejseBxfjURx4MwEPumbLOsi4/fpUdnNX1PpmB+OI8DS/ufJDs5ygGARChEHCJaIrRQlWGRAxAGCJWIrRQkWGRBxgGCJ2EpRgkUGRBwgWCK2UpRgkQERBwiWiK0UJVhkQMQBgiViK0UJFhkQcYBgidhKUYJFBkQcIFgitlKUYJEBEQcIloitFCVYZEDEAYIlYitFCRYZEHGAYInYSlGCRQZEHCBYIrZSlGCRAREHCJaIrRQlWGRAxAGCJWIrRQkWGRBxgGCJ2EpRgkUGRBwgWCK2UpRgkQERBwiWiK0UJVhkQMQBgiViK0UJFhkQcYBgidhK0W8B15VUJpZXA9AAAAAASUVORK5CYII="},{author:"lanhuxing",link:"https://gitee.com/lanhuxing",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAABFklEQVRoQ+2UwQ0BYRCFZ08iDnrQgEKcFKAKd4k23DSgig09SHCTcBBEIjbWKsBhZ2UwZr89v53MvO+9P9mOOoXU6Es4ODhtCAcHLBCGcDAHiHQwoC/nQBjCwRwg0sGA8mgRaSIdzIGPRrrZ7Uu7N5ak0ZL8vJPjbCjZZvFTCznY0n4IE2nLPOlm0WGdTzoVHabDuqRYquiwpZt0mA5b5kk3iw7rfNKp6DAd1iXFUkWHLd2sdYcf15Nkq1SKPCv19L5fyiWdlOreEXwt0lWWu63ncpgOqvyi1nKw2qo/FX6UsEdPONgjFcudIGzppsdZEPZIxXInCFu66XEWhD1SsdwJwpZuepwFYY9ULHeCsKWbHmfVjvATUOxdeMexngcAAAAASUVORK5CYII="},{author:"Q1",link:"https://gitee.com/yqyx",photo:"https://portrait.gitee.com/uploads/avatars/user/458/1374721_yqyx_1602561388.png!avatar200"},{author:"nodyang",link:"https://gitee.com/nodyang",photo:"https://portrait.gitee.com/uploads/avatars/user/24/73305_nodyang_1615357247.png!avatar200"},{author:"PublicUser",link:"https://gitee.com/publiczsy",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFoAAABaCAYAAAA4qEECAAAAAXNSR0IArs4c6QAAA2BJREFUeF7t209IFFEABvBvdt11JVCKSPIQRP8oEDqIhJSdhAKhYx2iS9AhvJTULejQqUPloU4dutghqAjSQDpUZF6CLIL+kJgUEiGYZu3O7MxOzIJ/Ug/PnZ1vp+mb83vv2/nNt29ndtX6eXODDx2RC1iCjty4HCBojrOgSc6CFjRLgJSjPVrQJAFSjBotaJIAKUaNFjRJgBSjRguaJECKUaMFTRIgxajRgiYJkGLUaEGTBEgxarSgSQKkGDVa0CQBUowaLWiSAClGjRY0SYAUo0b/T9ANh+8j3dJZ2Sn7Hny3ADgzKP34AHdiEO6nO/CLc5WtF9GsWDQ6FPQqMH5+CsW3N+C86YuIbe3LJhK6zOB75Xbbz3pi0e54Qpdc+F7BqDaWlQbqcsEfxq4c73sovrsFe+S80VpRDooldLDX/r7bYXze1roWZHYeR2b3SVgNG/+aF2wj9vBZuBMDxutFMTAR0PMw6U1tqN9/Fan1e5ZY+XDH7qHw5FQUfsZrJgo6OOvMrhPItl+ElW1aQCjNjqMwdBSlmTFjmGoPTBx0ANTQ/Qjp5vYFK9+ehj3cC3f8QbX9jNdLJHSu8zrqdhxbhC7OwX5xrnx/XasjkdD1B/rKH47zR/DwIujgrb7syXCtdx3LW5rr6kfdlkOCXg5TTehU0zbkum4j1bR9EfrXZPmuw/s2UqudIx7/LFRN6GzbBWRbTwOp7AJqAJwf6K4ZchCcqD06u7cXmdYeWNnGRVTPhvPqMpzX1wRdaaODJ8J08z6kN3cg3XIQqcatKx7FS1OjyA8eqfn3HbFsdLWq5wd78/Mz8L4+rtaSFa+TWGg//x3Oy0sofuyvGKeaExMH7Tuz8L4MwRm9Uv4hIC5HPKHX8DUpnFn4hSmUpt/DnXwK7/PDmu/Hq13cWEKHfWCJS4uXvg5Bk66KoAVt/gsLySpUjBodis98sqDNrUKNFHQoPvPJgja3CjVS0KH4zCcL2twq1EhBh+Iznyxoc6tQIwUdis98ciygzV/uvztS0KRrJ2hBkwRIMWq0oEkCpBg1WtAkAVKMGi1okgApRo0WNEmAFKNGC5okQIpRowVNEiDFqNGCJgmQYtRoQZMESDFqtKBJAqQYNVrQJAFSjBotaJIAKUaNFjRJgBSjRpOg/wCZ8kG5zPIi+gAAAABJRU5ErkJggg=="},{author:"\u8303\u4e50\u5929",link:"https://gitee.com/fan-letian",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAYAAAA4TnrqAAAAAXNSR0IArs4c6QAABjxJREFUeF7tmmlbU0cUx/8hBNmDLLJpQAMoS4PKrijg1hbbvuibPv1g/Qht3/RFN3lqHxEhtmwBjCCLCCKyGFCRLQFCSJ8zmttgAvfO5d4oPjMvk//MnPnlzJwzZ2L44cef/BBNEQGDgKWIExMJWMpZCVgcrAQsAYuHAIdWnFkCFgcBDqnwLAGLgwCHVHiWgMVBgEMqPEvA4iDAIRWeJWBxEOCQCs8SsDgIcEiFZ33ssBqrq5CZns7MdL18iXs9vbImq+kjOyin4IN41jdXruB4ViYzdeaFC7/fvStrtpo+soNyCgQsDmAC1oeC9cWlSzAnJcpOHx8Xh7gjR5jOs7kJt8ejS5/l1TX8ZbfLjq1UoKlnfX+zGUfNZqVz665bWl7Gz7daNJtHwOJAqSkspfOqiWxq+ii1R6lOwFJKKhIv0rmZx5CcmIiRiUnJLDVeoqYPBwdFUl09iw77GxcvINVsxqzLBXtfP+jQzc3MRGJ8HDNwze1h38k1NX3kxuT9XldYn9fXw2o5Idm05najd3AIIxMTvHZ+FHpdYSXGx6OxuhonsrNgMBjYgn0+H8ampvBP/wC8Xi/7rDAvDxfPn4MpOvpAUBaXlvDrndYDjbFfZ11hBSauKbfBVlQEk8kk2TK3sID2XgfblqdP5uNyZeWu79WsWOk9U83Y1CcisGiiYusp1JaXIy42ltm6ubWFLqcTj8af7ILl9/ux7fMBfmX/sYsyGmGMimJjHjpYdKhHGQx49eZNyA9oycnGpYoK0PZ8MDqKbudDpgn2rHW3B3c6OxUd+tQ3OEpOzcyipaNDrePI9tPUswLRz5yUhNGJSXQ6ndK5FLCENBQdJ6anJeO0gkWBo627R3bRagWawrpRfxEFFotki+vVK9zv62cFvv3aQWAF30cPFayi/HxU2z5jSWiguTc24BgcwtD4+J68tIC1s7ODgZERaWur9Z6IRsNw6QId2PSr2x19YW1RCyslKQk3GxtA255g9Q8Po+fhoB6c2JiabsNgKykVoAhoNBrZx6vr6+zgnl9YDFmMWliU1V+rq0NCfByLoL2DgxgYHjl8sMjicyXFOF9SwowPpAnhVqIWltViAT1kHImJYYGkw+HA2NOpwwmLrKYFxZii2UU6LSUFK+vrIRFSLaxrF+pY9k+3A96UQw1R3bbh+8bQlrlaV4t1jyckQu4F69SJ46ivqEC00Qi3ZwN++LHl9cKzsYm0oykwBwWSZ3NzuHWvXQ0DxX0iButqbS2KTuYzL6DsnRLSQITcC9axtFTQZTwpIWHfBdF4/w4M7CoDKSbAIYwILPKQhqoq6aqzvLqKlg47uxdS228bfnvjOrLePciGWxd5at/QIwl8Xk4OCyzT8/MYfqJtdSMisJobLiM/N5etlaIW5V0U5gNtP1ilhQXISs8I4bSz48OMy4XxqWe7vqssK0NFWSm7LxJIu8OByeczHP6zt1R3WCUFVtSdPcsiFrX5xUX8ea991yGv9oAPtyxKiikCRxEsznumHFFdYVFJ5qvGBmRnvPUMOls6HzwI2R5awmqqqUax1crmW1pZwS+3/w6JvnJQ9vpeV1jBvzIZMDU7i5b20KqAlrC+bmpixUZqVK7+rVX+fxRK4ekGi/4lc/1CnXRP3G9LaAnru+YvWT5HbWzyKVq7upSykNXpBiv4UKeCHhX5KMMO14Jh0ValvyAFl3BkV/FOQPWyK7W1iI+NZXdFrS/WusCynS5CTXm5VFOnQuBt+328WV0Nu+7C/DyWWsSYTCCwtF3p0k0PHEobPblV22zS+UjJK5WHRif/f4JTOlbEzqz3t593exvdTicejj3e01aqHpAnpiQnS5odvx++7W1F6zMYohAd/fbCHmgLr1+z8yrwKKJoIBmR5p51uaoSJVYrC93Uns+/wB9tbbK2VpSW4nxJ8YEfLWgiqnC09/Ziem5edl4egeawaPLyM2fYwsk72rq7FRttyc5mfTNSj0qPEEoXQ88blIRSHkdJL88WVjqHLrBocqq1JyckgC64n0rTDdanAih4HQIWx68qYAlYHAQ4pMKzBCwOAhxS4VkCFgcBDqnwLAGLgwCHVHiWgMVBgEMqPEvA4iDAIRWeJWBxEOCQCs8SsDgIcEiFZ3HA+g/L89DOrnKSJQAAAABJRU5ErkJggg=="},{author:"Postive\u4e36seche",link:"https://gitee.com/chezige",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAYAAAA4TnrqAAAAAXNSR0IArs4c6QAAAsVJREFUeF7t2T9oE3EcBfCXXKwn/kEUC6ZDoSCOgoiLEi3o5OTmIE6OpeIidHVxF+wgBUU6uImDVLCgJJYOFf+AUFRQrJJK6lCwmrvkLj/5pZJIh+Ze7khy8G5K4P1+3PeTl8sdyfyaOWCgI5JARliRnJohYUW3EhZhJSxhMQJEVtcsYRECRFTNEhYhQETVLGERAkRUzRIWIUBE1SxhEQJEVM0SFiFARNUsYRECRFTNEhYhQETVLGERAkS0p80aOj6FoWOTQHYo+imaECbwYKoVNCpLqH+cRbi6EH19gsnBx9o6bCNAWH4B7+V1mN/lBCk6b5U+rOZMBuHaG/jFCTTWP3SeMqFEX7GCL48RrDzddpSMexDO8Ek4h0/Bvm4dJkT900P4pcmEKDpv01cse/3xS9c6n6X963x3Hm5hGk7+tH232a/qGrziBMLv85H2iBtKDZYd1Bk+gZ1n7yK7d3Rz7kYdtffTqC3djOsQaX2qsOxE7vgMcmMXW8MFK3Pwnl2ONGzcUOqwtt5+hOUiqnNtvLgg260XFqGbOiy3cAe5I5faX8PPj+A9v0qM3H00VVjZ/Ufhnp9Fdt/Yvwt8DbV3t1F7fat7AWJlarAyO/bAPfcATr7QvnXY+NZsVVh5RYzcfXSgsSyQMzIOZ+QMcqMXkNl1qAUFe1O6fB/+4o3upydX9hWLPNf/4gb2V9CbvwJT3+h+G3Jl+rDsg/SPBfiLUz19LrSuKcEyMP46Gj/for58D8HXJ2Qnkon3FSvKg7T5s4qwXEpm2pi79BWLeZCOOWciy4VFMApLWIQAEVWzhEUIEFE1S1iEABFVs4RFCBDRnjaLOK+BjAqL+FiEJSxCgIiqWcIiBIiomiUsQoCIqlnCIgSIqJolLEKAiKpZwiIEiKiaJSxCgIiqWcIiBIiomiUsQoCIqlnCIgSIqJolLEKAiP4FngzbO1HJ6+8AAAAASUVORK5CYII="},{author:"BaY",link:"https://gitee.com/baiyanzhao",photo:"https://portrait.gitee.com/uploads/avatars/user/1631/4893177_baiyanzhao_1578976572.png!avatar200"},{author:"helloLuo",link:"https://gitee.com/lhw516678532",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAYAAAA4TnrqAAAAAXNSR0IArs4c6QAAAXNJREFUeF7t2KFqglEchvG/ipcgBothIGoyL5lsFu9gWHcPAy/BajJ6B0smwfCxKxAUNMv62Bx8W5mgnMcgOB+T4VEOP1+E7xSaL6+H8JUkUBArySmPxEq3EgtYiSUWEQCt/1liAQGQuiyxgABIXZZYQACkLkssIABSlyUWEACpyxILCIDUZYkFBEDqssQCAiB1WWIBAZBebVnP3YcYPtajXCrmx1uu9/E0zcBRf9JRvx2DTi1///H5FZPFJsbzFf6eSz4gFlATSywgAFKXJRYQAKnLEgsIgNRliQUEQOqybgELnPFkejePO2KdETh+kBYLYL1t32OW7bBZt1GJXqvqrUOKnFc0KUq/jVhi/RXwphQsQiyxgABIXZZYQACkLkssIABSlyUWELiz9Go3pf/BVSzwK4olFhAAqcsSCwiA1GWJBQRA6rLEAgIgdVliAQGQuiyxgABIXZZYQACkLkssIABSlyUWEACpyxILCIDUZQGsb3CINdUf5BOHAAAAAElFTkSuQmCC"},{author:"Penkar",link:"https://gitee.com/Penkar",photo:"https://portrait.gitee.com/uploads/avatars/user/3146/9440009_Penkar_1626239976.png!avatar200"},{author:"NL",link:"https://gitee.com/Cxq513975",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAYAAAA4TnrqAAAAAXNSR0IArs4c6QAAArZJREFUeF7t2m1r01AcBfCTNmmSdg58QJCJoCgKvhNFFEEEwa/p9xAUBOc7Uab7AqIDH5DZrmlsHuRmXdPabN5jYSve09dnIfnt/HOT23rfnu6W0MdKwBOWlVMVEpa9lbAIK2EJixEgsrpnCYsQIKJqlrAIASKqZgmLECCiapawCAEiqmYJixAgomqWsAgBIqpmCYsQIKJqlrAIASKqZgmLECCix9astfsxwmvB9NSKQYH+ywTZ15w4XWDuOAWQbKUYvk2pY/xr+MSwzAn/+pih/3xInbuzWGUOJO/Sqh22H2exDFCxV2DwaoTxTmbl5TSWERp/zvDzmd04uollfo7i7ZfJjOPovd2N2j2sAsi+5/DPtadgtuPoJFaynaKz4aN9uj29V9mMo5tYWymKpET3Vgivsz+P1Thupxi+OXx1dBbLPEyuPYgRXgnqcRwWGGyOMP7UvDo6jdVeb2HtYQz/zMw47mTov0hQjhd/lOg0lhk/8xrUux1ZjaPzWAasQrj693EUFgDbcRTW5OEhvBygdzeCF06eVs2uwof51VFYM2+FBiu63plZHUsMNpPp6iisGSwv8LD+pAv/bPPqKKw/9huOGkdhNWzOLIzjqMTe6wSdi0G94+rETqnFRVbj+LgL/3w9jtmXHPluIaymnb/OJR+9ezFaUb06Zj/y+n5mgW61o2gZOpk9eOIie3ciRDc6QKvhiojjWHocGVt5rKZxrL8icuHbHbIRwYZfvQ61upNxPNAij7Nsu1a+WQcXaPa94pvh/DgKq/n/b8bx1KMYwQW/Dgjr8GFZGMf/FWvZ+8Uq/P2x3bNW4WKXPQdhEYLCEhYhQETVLGERAkRUzRIWIUBE1SxhEQJEVM0SFiFARNUsYRECRFTNEhYhQETVLGERAkRUzRIWIUBE1SxhEQJEVM0isH4DaUPxvgdE4AQAAAAASUVORK5CYII="},{author:"sgg",link:"https://gitee.com/padoo_cn",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAAAXNSR0IArs4c6QAAA49JREFUaEPtWWlTGkEQfYCCnHLIgqgIcnjGMpVU/n0+5UOq8sWqRMsLRRDkEBSIci6Q6hGI5QUKY1Yy83V7Z9/r96anG1Rfv31v4z9aKkF4zNUWCo+5wBAKC4XHLAPC0mMm6AM6QmGh8JhlQFh6zAQVRUtYWlh6zDLwJpb2uCW4JSeMBj0mNBqoVCqWxlarhXqjgctCEWfJFG7KFe7p5Up42mxCaMkHi9nUl4gsN5FIpXESO+sbO0wAN8Kk5vpyCCajgeFrt9uo1uq4KZdB5Ehkg14Pg0EPjVrdUzyeTHElzY1wOODDnNvF7Fur1xGNJXCeyT4QR6fTYi0UgM06zZ6RxQ8iUVzkL4cR8sl3uRH+8nGTqUvnNBpPIpZIPgmC3LCxEmZnnFbmIofdg8j7IWyzWrAWDkKn1aLRkLEfOemrWNC/iAWPmzni+qaMH9s/3w9hq8XMzi/Ztdls4fg0zgrSc8stzWA54GeEq7Ua9o5OUCz9Hjlpbpb+tLmOaYuZAa5UqziKxpDLX42cwEs35EZ4cd4Dv3ce6k4FpipdqdZwVSwim8vjqlB6KdaRxHMjTOhWgktwu5xQdxqNu4ibrRaq1RoKpRJS6QuUrq9HQqjfJlwJ08c9LgneeQ8M+qlnsdC5TaYyiCXO+2Ee6jl3wl10DpsVLucMpi0mTOl0vfbyPvpCsYSD4yi3NvPNCN8lptFoIDnscNitrO2k66vbX1Mc9da/9g7RbDaHUvOxl/8J4ftAnA47/N45mIxG9oiIRk7jzOKjXoogTKTud1vn6SxrWEa9uBD+vLUBo8EAGgKj8cTAhWgltMSKHK2rQhHbO3uj5svn38OtjVXYO8NAJpfH7v7RQMBXwwHMSk4WS4PG/tE7UTjg88I7N8sKkSzLOD49QzL9/HkkS39YXWbX1+3AMbgzBspmJ4iLpQk0TT/dWZhI05mMniUfrbx2mxVB30KvaNHwsLN/iHKl+hIuA8VyIUxfnnVJCPgWoJ2c7AGh6kvt5U2lgnarjYkJDTvrU7q/11JDlnEygCMGYvdIEDfC9C1SLrC4ALPp9rrpt2jIICuns7l+oa9+zpVwFxX9iCfNOJjF6Ue87kDRvXNJdRr6E6kMl2bjbnbehPCr5eDwoiDMIamK2lIorCg5OIARCnNIqqK2FAorSg4OYITCHJKqqC2FwoqSgwMYoTCHpCpqS6GwouTgAEYozCGpitryD5Zf8LQzwCRUAAAAAElFTkSuQmCC"},{author:"smengcong",link:"https://gitee.com/smengcong",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAYAAAA4TnrqAAAAAXNSR0IArs4c6QAABHZJREFUeF7tm9tXIkcQxj8EATcqCnIRRVQWdc0m+f8f8pSHvO3DZt1VXJSr3FXuwnLJqVmHiMcNXcrpMTnVLz7w9UzXb77uqao52n7/488xZCgRsAksJU6GSGCpsxJYDFYCS2BxCDC0cmYJLAYBhlScJbAYBBhScZbAYhBgSMVZAotBgCEVZwksBgGGVJwlsBgEGFJxlsBiEGBIxVkCi0GAIRVnCSwGAYbUUmfZ7XZshQLw+7x4s7QEh8MOm802Wf5wOEL/Wx/1RguFUhk39QYjtPlLLYMV349iM+CHw+FQimo8HqPV7iCZzuL65lZpzrxF2mGRm94fxuFd90y5SDWwb4MBLjM55K6KqlPmptMO6yC2i61QcArUYDBEs91GvdFEp9s1grMv2OFZXcHqyjKW3K4pPQFLJC9RqtTmBkLlQlphra+t4vjgLVxOp7E22lrV2g0+nycxHA5/uN5wMIC9nW24XN/n0bhtNPHh44lKjHPTaIW1H41gZzuMhftD/Oa2jo9fEv8Kyow06PfhILaHxfszbjAY4CyZQqlSnRuMWRfSCusovg9yCY3RaGScPenc1aw1Tn7/7fgIPu/axJXZqyK+XqaV579UaBksSguSqQxyBfWD2nQmxmNjCxfKFSSSqZcyUJ6vFZZxuG+GYGZS5WoNn07PlRdrtVArrKB/A4ex3UluNRqPUSpXcZHJotfrW81i5v21wqLVvD+KI7Dhm1rYcDQyEs5q7RrFSvXVgtMOi17/7+IxeNc8Tz5JOosGwyE6na5R3lBq0Wi1Zj51HQLtsCgoyuJj0QhCgQ2lcofShEarjXyhhErtWgeXJ+9hCSxzJeQyqg9pW75ZcmNhYWEmiGarbVl9aCmsx2T8G1741tfgWVmB2+2C/QfwKNvP5AtGnqZzvCpYjwMncASQzje3yzX1M23NZCqLfLGkjderhvWQAmX+0ciWUVSbg7bkh78+K5VL8yD6n4FFwZLTqGQyC3HqVpwZ3Qc99aE2WL8eH2Lds2q0Wig9SFykje4nd/x8FEfwPk+jpDaTu8JFOsu9zLP02mA9LKLp/1/yheKz6rqpYvz/Ciu6HTZ6UmZ60O508ek0AfrLGQ87D88pxjn3eqzV5izPyjKOD+OTA1q18fdwwdRhje1GJonsXa+Hk9Nz1Jt6MnxtsCjot3tRRMKhqRYxvdFS2fzMzJycubMVxuLi9w8ctJWL5Qq+JJIvMQtrrlZYVOb88u7gybrwrtdHs9VCo9lGr98zgnA5XfCsLhtJqgnJjI4K75Ozc/Y2ZtF5JNYKywAwo5BWCabTvcP5RQo1zZ/EtMMyYdC2ioQ34XQuqvAxNNTKoS7E11TakjaOZbBMQuFQwCikfzK+SDtgt/9TTNNLgABRY5BcRHkZ9+2p/CQUhJbDUljjq5EILMajEFgCi0GAIRVnCSwGAYZUnCWwGAQYUnGWwGIQYEjFWQKLQYAhFWcJLAYBhlScJbAYBBhScZbAYhBgSMVZAotBgCEVZwksBgGGVJwlsBgEGNK/AbDkeexTOAtZAAAAAElFTkSuQmCC"},{author:"\u3002\u6728\u9c7c",link:"https://gitee.com/muyu_shh",photo:"https://portrait.gitee.com/uploads/avatars/user/1722/5166920_muyu_shh_1578981594.png!avatar200"}],E=[{url:"https://www.oschina.net/",text:"\u5f00\u6e90\u4e2d\u56fd",title:""},{url:"https://gitee.com/",text:"Gitee",title:""},{url:"https://gitee.com/dotnetchina",text:"dotNET China",title:""},{url:"https://github.com/sunkaixuan/SqlSugar",text:"SqlSugar",title:""},{url:"http://www.thinkphp.cn/",text:"ThinkPHP",title:""},{url:"https://hutool.cn/",text:"Hutool",title:""},{url:"https://www.tiocloud.com/2/index.html",text:"t-io",title:""},{url:"https://gitee.com/LongbowEnterprise/BootstrapBlazor",text:"BootstrapBlazor",title:""},{url:"https://gitee.com/LongbowEnterprise/BootstrapAdmin",text:"BootstrapAdmin",title:""},{url:"https://gitee.com/monksoul/LayX",text:"Layx",title:""},{url:"https://gitee.com/dotnetchina/IoTSharp",text:"IoTSharp",title:""},{url:"https://www.eova.cn/",text:"Eova",title:""},{url:"http://www.pearadmin.com/",text:"PearAdmin",title:""},{url:"https://github.com/mengshukeji/Luckysheet",text:"Luckysheet",title:""},{url:"https://blog.lindexi.com/",text:"\u6797\u5fb7\u7199\u535a\u5ba2",title:""},{url:"http://www.easyson.com.cn",text:"\u6613\u80dc\u79d1\u6280",title:""},{url:"https://gitee.com/pig0224/ExamKing",text:"\u8003\u8bd5\u541b",title:""},{url:"https://gitee.com/veal98/Echo",text:"Echo",title:""},{url:"https://gitee.com/opencc/ccflow",text:"\u9a70\u9a8b\u5de5\u4f5c\u6d41",title:""},{url:"https://gitee.com/dotnetchina/weaving-socket",text:"weaving-socket",title:""},{url:"https://gitee.com/dotnetchina/SiMayRemoteMonitorOS",text:"SiMayRemoteMonitorOS",title:""},{url:"https://gitee.com/zuohuaijun/Admin.NET",text:"Admin.NET",title:""},{url:"https://gitee.com/dotnetchina/RRQMSocket",text:"RRQMSocket",title:""},{url:"https://gitee.com/dotnetchina/anno.core",text:"Anno.Core",title:""},{url:"https://gitee.com/dotnetchina/DBCHM",text:"DBCHM",title:""},{url:"https://gitee.com/dotnetchina/OpenAuth.Net",text:"OpenAuth.Net",title:""},{url:"https://dotnet9.com/",text:"Dotnet9",title:""},{url:"https://gitee.com/yhuse/SunnyUI",text:"SunnyUI",title:""},{url:"https://gitee.com/dotnetchina/MiniExcel",text:"MiniExcel",title:""},{url:"https://gitee.com/handyorg/HandyControl",text:"HandyControl",title:""},{url:"https://shopxo.net/",text:"ShopXO \u5f00\u6e90\u5546\u57ce",title:"ShopXO \u4f01\u4e1a\u7ea7\u514d\u8d39\u5f00\u6e90\u5546\u57ce"},{url:"https://gitee.com/ntdgg/tpflow",text:"tpflow",title:""},{url:"https://gitee.com/CoreUnion/CoreShop",text:"CoreShop",title:""},{url:"https://gitee.com/dromara/TLog",text:"TLog",title:""},{url:"https://gitee.com/dromara/liteFlow",text:"LiteFlow",title:""}],w=["title","titleId"];function C(){return(C=Object.assign||function(t){for(var A=1;A=0||(o[e]=t[e]);return o}(t,A);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(t,e)&&(o[e]=t[e])}return o}var B,Y,Q=function(t){var A=t.title,e=t.titleId,s=d(t,w);return m.createElement("svg",C({className:"docker_svg__icon",viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg",width:200,height:200,"aria-labelledby":e},s),A?m.createElement("title",{id:e},A):null,a||(a=m.createElement("defs",null,m.createElement("style",null))),o||(o=m.createElement("path",{d:"M944.9 471.64a141.947 141.947 0 00-105.047-9.506 139.64 139.64 0 00-56.784-88.959l-11.25-8.86-9.535 10.688a117.675 117.675 0 00-22.218 84.656 108.59 108.59 0 0021.206 56.87 164.925 164.925 0 01-30.544 13.443 204.272 204.272 0 01-62.972 10.153H73.925l-1.266 13.303a248.428 248.428 0 0020.897 129.375l8.128 16.116.928 1.519c55.829 92.193 167.204 139.95 274.05 139.95 206.888 0 364.191-98.747 442.575-288.479 52.37 2.672 105.947-12.403 131.57-61.003l6.524-12.403-12.431-6.975zM246.978 711.689a46.434 46.434 0 1147.813-46.435 47.166 47.166 0 01-47.813 46.434z",fill:"#1296db"})),r||(r=m.createElement("path",{d:"M246.978 640.7a24.44 24.44 0 1025.144 24.469 24.806 24.806 0 00-25.144-24.469M118.25 427.625h84.375V512H118.25zm112.5 0h84.375V512H230.75zm0-112.5h84.375V399.5H230.75zm112.5 0h84.375V399.5H343.25zm0 112.5h84.375V512H343.25zm112.5 0h84.375V512H455.75zm112.5 0h84.375V512H568.25zm-112.5-112.5h84.375V399.5H455.75zm0-112.5h84.375V287H455.75z",fill:"#1296db"})))},F=["title","titleId"];function V(){return(V=Object.assign||function(t){for(var A=1;A=0||(o[e]=t[e]);return o}(t,A);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(t,e)&&(o[e]=t[e])}return o}var v,K,k,R,S,U,x,W,b,N,O,L,G,y,M,I=function(t){var A=t.title,e=t.titleId,a=D(t,F);return m.createElement("svg",V({className:"kubernetes_svg__icon",viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg",width:200,height:200,"aria-labelledby":e},a),A?m.createElement("title",{id:e},A):null,B||(B=m.createElement("defs",null,m.createElement("style",null))),Y||(Y=m.createElement("path",{d:"M444.65 600.125l.262.375-37.462 90.487a193.912 193.912 0 01-77.813-97.387l96.676-16.388.15.188a16.5 16.5 0 0118.15 22.725zm-31.238-79.838a16.5 16.5 0 006.488-28.35l.075-.412-73.537-65.775a192.863 192.863 0 00-27.375 122.063l94.275-27.188.074-.338zm42.938-74.25a16.5 16.5 0 0026.213-12.637l.374-.188 5.625-98.25a192.9 192.9 0 00-112.874 54.076L456.2 446.15l.15-.075zm28.5 103.126l27.112 13.087 27.076-13.013 6.75-29.25-18.75-23.362h-30.15l-18.75 23.362 6.712 29.213zM541.1 433.1a16.5 16.5 0 0026.25 12.6l.3.112 80.025-56.737A194.55 194.55 0 00535.475 335l5.55 98.063.075.037zm407.85 223.875L732.462 926.263a60 60 0 01-46.8 22.275l-347.287.112a60 60 0 01-46.763-22.35l-216.6-269.25A59.362 59.362 0 0163.5 606.8l77.25-335.813c4.05-17.625 15.937-32.4 32.362-40.237L485.938 81.238a60.225 60.225 0 0151.937 0l312.937 149.437c16.425 7.838 28.313 22.65 32.363 40.238L960.5 606.725a59.041 59.041 0 01-11.55 50.25zm-123.338-77.138c-1.575-.375-3.862-.974-5.437-1.275-6.525-1.237-11.812-.937-17.963-1.425-13.124-1.387-23.924-2.512-33.562-5.55-3.937-1.5-6.75-6.187-8.1-8.1l-7.537-2.212a241.875 241.875 0 00-3.938-87.45 242.438 242.438 0 00-35.1-81.113c1.95-1.762 5.625-4.987 6.638-5.962.3-3.375.037-6.863 3.524-10.575 7.388-6.937 16.65-12.675 27.863-19.575 5.325-3.15 10.238-5.137 15.562-9.075 1.2-.9 2.85-2.325 4.126-3.337 9-7.163 11.062-19.5 4.612-27.6-6.45-8.1-18.975-8.85-27.937-1.688-1.276 1.013-3 2.325-4.163 3.3-5.025 4.35-8.138 8.625-12.375 13.125-9.225 9.375-16.875 17.175-25.238 22.838-3.637 2.1-8.962 1.387-11.362 1.237l-7.125 5.063a245.437 245.437 0 00-155.475-75.113l-.45-8.362c-2.437-2.325-5.362-4.313-6.112-9.376-.826-10.05.562-20.887 2.137-33.937.862-6.113 2.288-11.175 2.55-17.813.037-1.5-.038-3.712-.037-5.324 0-11.475-8.4-20.813-18.75-20.813-10.313 0-18.713 9.338-18.713 20.813l.037.525c0 1.537-.074 3.45 0 4.8.225 6.637 1.65 11.7 2.513 17.812 1.575 13.05 2.925 23.888 2.1 33.975a20.437 20.437 0 01-6.075 9.675l-.45 7.913A240.9 240.9 0 00335.15 360.35a313.988 313.988 0 01-6.75-4.8c-3.375.45-6.75 1.5-11.137-1.088-8.363-5.625-16.013-13.425-25.238-22.8-4.237-4.5-7.313-8.774-12.337-13.087a100.912 100.912 0 00-4.163-3.3 22.275 22.275 0 00-13.05-4.95 18.038 18.038 0 00-14.925 6.6c-6.45 8.1-4.387 20.475 4.613 27.637l.262.188 3.9 3.113c5.325 3.937 10.2 5.962 15.525 9.074 11.213 6.938 20.475 12.675 27.863 19.575 2.85 3.076 3.375 8.476 3.75 10.8l6 5.363a242.325 242.325 0 00-38.25 168.975l-7.8 2.25c-2.063 2.7-4.988 6.9-8.063 8.137-9.637 3.038-20.475 4.125-33.562 5.513-6.15.525-11.438.225-18 1.462-1.388.263-3.375.75-4.988 1.125l-.15.076-.262.075c-11.063 2.662-18.15 12.825-15.863 22.8 2.288 10.012 13.088 16.087 24.188 13.687l.262-.037.375-.113 4.838-1.087c6.374-1.725 11.025-4.238 16.8-6.45 12.375-4.426 22.65-8.138 32.625-9.6 4.2-.338 8.625 2.587 10.8 3.787l8.137-1.387a243.75 243.75 0 00108 134.85l-3.375 8.175c1.237 3.15 2.587 7.462 1.65 10.575-3.637 9.45-9.862 19.387-16.95 30.487-3.413 5.1-6.937 9.075-10.05 14.963-.75 1.387-1.687 3.562-2.4 5.025-4.8 10.312-1.275 22.162 7.988 26.624 9.3 4.5 20.85-.262 25.875-10.575v-.074c.75-1.463 1.725-3.375 2.324-4.763 2.626-6.075 3.526-11.288 5.4-17.175 4.95-12.45 7.688-25.5 14.513-33.637 1.875-2.25 4.875-3.076 8.063-3.938l4.237-7.688a241.988 241.988 0 00172.838.45l3.974 7.2c3.225 1.05 6.75 1.575 9.6 5.813 5.1 8.7 8.588 19.013 12.826 31.5 1.874 5.85 2.774 11.063 5.437 17.137.6 1.388 1.613 3.375 2.325 4.838 4.988 10.35 16.575 15.075 25.875 10.575 9.263-4.425 12.787-16.313 7.988-26.625-.75-1.462-1.688-3.6-2.438-5.025-3.112-5.85-6.637-9.787-10.05-14.925-7.125-11.1-12.975-20.288-16.612-29.737-1.5-4.875.262-7.875 1.425-11.025-.675-.825-2.213-5.4-3.113-7.575a243.713 243.713 0 00108-135.826c2.4.376 6.6 1.125 7.988 1.426 2.812-1.875 5.4-4.275 10.5-3.9 9.974 1.462 20.25 5.174 32.624 9.6 5.776 2.25 10.388 4.8 16.8 6.487 1.35.375 3.3.713 4.876 1.05l.337.113.262.037c11.138 2.4 21.9-3.675 24.188-13.688 2.25-9.974-4.8-20.137-15.863-22.8zM677 425.787l-73.125 65.475v.188a16.5 16.5 0 006.488 28.387l.112.376 94.725 27.3a194.963 194.963 0 00-4.05-62.776A195.3 195.3 0 00677 425.75zM526.512 625.475a16.387 16.387 0 00-15.15-8.7 16.5 16.5 0 00-13.95 8.738h-.075l-47.55 85.95a193.65 193.65 0 00124.725.112l-47.624-86.1h-.375zm70.8-48.488a16.5 16.5 0 00-10.124 1.35 16.5 16.5 0 00-8.025 21.45l-.113.15 37.875 91.426a193.125 193.125 0 0078.038-98.063l-97.5-16.5-.15.187z",fill:"#0092ff"})))},z=["title","titleId"];function Z(){return(Z=Object.assign||function(t){for(var A=1;A=0||(o[e]=t[e]);return o}(t,A);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(t,e)&&(o[e]=t[e])}return o}var f,J,j=function(t){var A=t.title,e=t.titleId,a=q(t,z);return m.createElement("svg",Z({className:"linux_svg__icon",viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg",width:200,height:200,"aria-labelledby":e},a),A?m.createElement("title",{id:e},A):null,v||(v=m.createElement("defs",null,m.createElement("style",null))),K||(K=m.createElement("path",{d:"M524.375 217.906c-8.063 5.25-14.25 12.938-17.719 21.938-3.562 11.625-3 24 1.406 35.344A59.437 59.437 0 00528.875 305a37.347 37.347 0 0017.063 6.563c6.187.75 12.375-.282 17.906-3.094a35.218 35.218 0 0014.906-16.219c3-6.938 4.688-14.344 4.875-21.844a73.847 73.847 0 00-3.563-28.219c-3.28-9.937-9.656-18.468-18.28-24.28-4.407-2.813-9.282-4.688-14.438-5.438a30.339 30.339 0 00-15.282 1.687 41.666 41.666 0 00-7.78 4.219",fill:"#FFF"})),k||(k=m.createElement("path",{d:"M791.563 600.594a395.632 395.632 0 00-22.313-77.438c-6.844-18.562-16.125-36.187-27.656-52.312-11.625-15.469-26.344-28.5-37.688-44.156-6-8.157-11.062-17.25-17.343-25.22-2.532-5.25-4.97-10.5-7.407-15.75-7.5-16.406-14.343-33.187-23.25-48.75-1.406-2.437-2.906-4.874-4.312-7.218-1.125-15-2.719-30-3.563-45a425.74 425.74 0 00-7.593-89.906c-3.938-14.156-9.938-27.75-17.813-40.125-9.188-14.625-21-27.375-34.875-37.594a134.301 134.301 0 00-77.25-24.75c-20.344-.469-40.5 4.125-58.594 13.5-19.031 10.406-34.406 26.438-44.062 45.844a153.998 153.998 0 00-14.063 62.344c-.75 21.187 1.219 42.187 2.063 63.375.844 21.937.375 43.968 2.156 65.906.563 7.031 1.406 14.062 1.406 21.187 0 3.563-.187 7.125-.281 10.594l-.281.75a450.215 450.215 0 01-31.688 46.781c-8.062 10.219-16.125 20.344-24.281 30.375-10.594 11.906-19.594 25.125-26.719 39.375-4.781 12.375-8.625 25.125-11.625 38.063l-.281 1.031a296.022 296.022 0 01-16.875 43.313 142.935 142.935 0 00-1.875 3.937c-4.031 8.344-8.25 16.688-12.656 24.844l-5.063 9.468a159.66 159.66 0 00-8.437 17.625c-1.406 3.657-2.531 7.407-3.188 11.25-1.219 8.157-.656 16.407 1.5 24.282.469 1.968 1.125 3.937 1.781 5.906 2.063 5.813 4.5 11.531 7.407 16.969 1.312 2.531 2.719 4.968 4.031 7.5l1.219 1.781a169.016 169.016 0 004.125 6.938l.187.28c1.594 2.626 3.375 5.157 5.063 7.688l.281.375c1.781 2.438 3.563 4.969 5.438 7.407 6.937 27.093 19.687 52.312 37.218 74.062-2.719 4.781-5.156 9.469-7.875 14.156A216.887 216.887 0 00293 853.72c-2.531 8.062-3.188 16.593-1.781 24.937 1.312 8.438 5.625 16.032 12.187 21.563 4.406 3.375 9.469 5.718 14.813 6.843 5.344 1.125 10.875 1.688 16.406 1.407 20.813-1.594 41.438-5.719 61.313-12.094 12-3.188 24-6 36.187-8.438 12.656-2.906 25.5-4.687 38.438-5.25 3.187.094 6.375-.093 9.468-.28 8.813.937 17.625 1.312 26.531.937l3.282-.188c2.25.282 4.594.375 6.937.563a480.306 480.306 0 0146.407 4.781c13.5 2.063 27 4.688 40.312 7.969 20.531 6.187 41.625 10.312 63.094 12.093 5.625.282 11.25-.187 16.875-1.312 5.531-1.125 10.781-3.563 15.281-6.938 6.563-5.437 10.875-13.03 12.281-21.468 1.407-8.344.75-16.875-1.781-24.938-6.188-15.656-14.156-30.562-23.906-44.343-3.375-5.72-6.563-11.625-9.938-17.344a307.557 307.557 0 0038.157-52.969c6.562.375 13.03-.375 19.312-2.438a81.136 81.136 0 0040.594-30.468c3-4.219 5.343-8.907 6.75-13.875a89.449 89.449 0 0012.937-33.094c3-19.5 2.532-39.469-1.406-58.781h-.188zm0 0",fill:"#020204"})),R||(R=m.createElement("path",{d:"M431 335a32.58 32.58 0 00-6 12.75c-1.031 4.594-1.688 9.375-1.781 14.063.281 9.468-.469 18.937-2.344 28.218-3.281 9.656-8.25 18.563-14.625 26.531-10.969 13.782-19.594 29.25-25.5 45.75-3 10.22-4.031 20.907-2.906 31.594a337.236 337.236 0 00-29.344 53.156c-12.563 28.032-20.625 57.938-23.906 88.5-4.031 37.594 1.5 75.563 15.937 110.438a182.552 182.552 0 0047.156 65.719c10.5 9.093 22.032 16.781 34.407 22.875 43.781 21.375 95.062 20.906 138.375-1.313a267.942 267.942 0 0058.687-46.406c11.157-10.125 21.094-21.469 29.813-33.844 14.531-25.218 23.062-53.531 24.843-82.593 9-50.25 3.47-102-15.843-149.25-7.594-15.75-17.625-30.188-29.813-42.75a236.719 236.719 0 00-18.937-63.75c-6.75-14.532-14.907-28.407-21.188-43.313-2.531-6.094-4.781-12.281-7.593-18.188-2.72-6-6.47-11.53-11.063-16.218-4.969-4.594-10.875-8.063-17.344-10.031a71.82 71.82 0 00-19.875-3.375c-13.5-.657-27.093 1.03-40.406.562-10.781-.469-21.375-2.344-32.156-1.688-5.344.282-10.688 1.313-15.656 3.282A31.379 31.379 0 00431 335.094m4.313-117.281c-5.063.375-9.844 2.53-13.5 6-3.657 3.468-6.375 7.875-7.875 12.656-2.532 9.75-3.188 19.969-1.782 30 .188 9.094 1.781 18.187 4.781 26.812 1.688 4.219 4.125 8.156 7.313 11.438 3.188 3.281 7.219 5.719 11.625 6.844a23.2 23.2 0 0012.656-.47c4.031-1.312 7.781-3.562 10.781-6.562 4.407-4.5 7.594-10.031 9.188-16.031a64.942 64.942 0 002.156-18.563c0-7.78-1.219-15.562-3.562-23.062s-6.375-14.344-11.813-20.063c-2.625-2.718-5.625-5.062-9-6.75-3.469-1.593-7.219-2.437-10.969-2.25m89.063 0c-8.063 5.25-14.25 12.938-17.719 21.938-3.562 11.625-3 24 1.406 35.344a59.437 59.437 0 0020.813 29.812 37.347 37.347 0 0017.063 6.563c6.187.75 12.375-.281 17.906-3.094a35.218 35.218 0 0014.906-16.219c3-6.937 4.688-14.344 4.875-21.844a73.847 73.847 0 00-3.563-28.218c-3.28-9.938-9.656-18.469-18.28-24.281-4.407-2.813-9.282-4.688-14.438-5.438a30.339 30.339 0 00-15.282 1.688 41.666 41.666 0 00-7.78 4.218",fill:"#FFF"})),S||(S=m.createElement("path",{d:"M542.469 241.625c-3 .188-5.813 1.125-8.344 2.719s-4.688 3.75-6.375 6.187a32.028 32.028 0 00-5.063 16.781c-.28 4.407.375 8.907 1.782 13.125s4.031 7.97 7.406 10.782a21.713 21.713 0 0012.469 4.875c4.593.187 9.093-1.031 12.843-3.656 3-2.157 5.438-4.875 7.125-8.157 1.688-3.187 2.72-6.75 3.188-10.312.938-6.375-.188-12.938-3-18.656-2.906-5.813-7.875-10.22-13.875-12.563-2.625-1.031-5.344-1.406-8.156-1.313",fill:"#020204"})),U||(U=m.createElement("path",{d:"M435.313 217.906c-5.063.375-9.844 2.531-13.5 6-3.657 3.469-6.375 7.875-7.875 12.656-2.532 9.75-3.188 19.97-1.782 30 .188 9.094 1.781 18.188 4.781 26.813 1.688 4.313 4.125 8.156 7.313 11.438 3.188 3.28 7.219 5.718 11.625 6.843a23.2 23.2 0 0012.656-.469c4.031-1.312 7.781-3.562 10.781-6.562 4.407-4.5 7.594-10.031 9.188-16.031a64.942 64.942 0 002.156-18.563c0-7.781-1.219-15.562-3.562-23.062s-6.375-14.344-11.813-20.063c-2.625-2.719-5.625-5.062-9-6.75-3.469-1.594-7.219-2.437-10.969-2.25",fill:"#FFF"})),x||(x=m.createElement("path",{d:"M423.219 259.625c-1.219 6.281-.938 12.844 1.031 18.938 1.5 4.03 3.75 7.687 6.75 10.78 1.875 2.063 4.031 3.844 6.563 5.063 2.53 1.313 5.343 1.688 8.156 1.031 2.531-.656 4.687-2.156 6.281-4.218 1.594-2.063 2.719-4.406 3.469-6.844 2.156-7.313 1.969-15.094-.375-22.406-1.5-5.344-4.406-10.219-8.531-13.875-1.97-1.688-4.407-3-6.938-3.656-2.625-.657-5.344-.47-7.875.656a13.685 13.685 0 00-6.094 6.094 26.075 26.075 0 00-2.531 8.343",fill:"#020204"})),W||(W=m.createElement("path",{d:"M411.313 338.469c.187.844.468 1.687.937 2.344a10.342 10.342 0 003.188 3.187c1.218.844 2.437 1.594 3.656 2.344 6.469 4.406 12.187 9.844 16.781 16.219C441.5 371.375 448.531 379.25 456.5 386c6.094 4.219 13.219 6.75 20.625 7.406 8.625.656 17.344-.375 25.688-3 7.687-2.25 15.093-5.437 22.03-9.656 11.907-9.563 24.657-18 38.157-25.031 3.188-1.125 6.375-1.969 9.375-3.375 3.094-1.313 5.719-3.563 7.313-6.563 1.03-3 1.687-6.187 1.78-9.375.47-3.375 1.595-6.656 2.157-10.031.75-3.375.469-6.844-.75-10.125a13.816 13.816 0 00-5.906-5.906c-2.532-1.219-5.344-1.969-8.157-2.063-5.718.188-11.343.75-16.875 1.688-7.5.656-15-.281-22.5 0-9.28.281-18.562 2.344-27.937 2.719-10.688.562-21.281-1.125-31.969-1.594-4.594-.281-9.281-.094-13.875.656-4.594.656-9 2.344-12.844 4.969-3.562 2.812-6.843 5.812-10.03 9a27.829 27.829 0 01-5.532 3.844c-2.063 1.03-4.219 1.593-6.563 1.5a10.766 10.766 0 00-3.468 0c-.656.28-1.313.656-1.781 1.125l-1.407 1.687c-.937 1.406-1.781 2.906-2.437 4.406",fill:"#D99A03"})),b||(b=m.createElement("path",{d:"M434.844 314.844c-3.75 2.25-7.406 4.687-11.063 7.219a14.568 14.568 0 00-4.781 4.78 10.16 10.16 0 00-.844 4.688 40.676 40.676 0 010 4.781c-.094 1.032-.469 2.157-.469 3.282 0 .562 0 1.125.188 1.594.188.562.375 1.03.75 1.406.469.469 1.125.844 1.875 1.031.656.188 1.406.281 2.156.469 3.281.937 6.281 2.719 8.719 5.062 2.531 2.25 4.781 4.875 7.5 7.031 7.5 5.625 16.594 8.532 25.875 8.438 9.281-.188 18.469-1.5 27.375-3.844 7.031-1.5 13.969-3.375 20.719-5.719 10.5-3.937 20.156-9.656 28.5-17.062a94.798 94.798 0 0111.625-9.656c3.75-2.344 8.156-3.938 11.906-6.188.375-.187.656-.469 1.031-.656.282-.281.563-.563.75-.938a2.626 2.626 0 000-2.062c-.187-.656-.468-1.219-.843-1.688a12.797 12.797 0 00-1.594-1.593 26.443 26.443 0 00-14.813-5.156c-5.437-.375-10.593 0-15.843-1.032-4.875-1.031-9.657-2.437-14.344-4.125a103.68 103.68 0 00-15.282-3.656c-12.187-1.969-24.562-1.688-36.656.938-11.344 2.53-22.312 6.843-32.437 12.656",fill:"#604405"})),N||(N=m.createElement("path",{d:"M433.625 302.094c-5.438 3.656-10.313 8.156-14.531 13.219a31.347 31.347 0 00-5.719 9.656c-.844 2.812-1.406 5.719-1.875 8.625-.281 1.031-.469 2.156-.469 3.281 0 .563.094 1.125.281 1.594a3.53 3.53 0 00.844 1.406c.656.656 1.5 1.031 2.438 1.219.844.187 1.781.187 2.719.281 4.125.656 7.968 2.344 11.343 4.781 3.375 2.344 6.563 5.063 10.031 7.313 7.875 4.687 16.875 7.219 26.063 7.406 9.188.188 18.281-.75 27.188-2.719a118.662 118.662 0 0021-5.906 125.554 125.554 0 0028.5-17.063c4.03-3 7.968-6.187 11.625-9.656 1.218-1.219 2.437-2.437 3.75-3.562a13.827 13.827 0 014.406-2.531c2.531-.657 5.156-.75 7.781-.094 1.875.469 3.844.656 5.813.656 1.03 0 1.968-.188 2.906-.469.937-.375 1.781-.937 2.343-1.687.844-1.031 1.22-2.25 1.22-3.563s-.376-2.531-1.032-3.656c-1.406-2.156-3.563-3.844-5.906-4.781-3.282-1.313-6.657-2.344-10.125-3a142.883 142.883 0 01-30.657-11.156c-4.875-2.438-9.468-5.063-14.343-7.594-4.875-2.719-9.938-5.063-15.188-6.75-12.094-3.281-24.937-2.719-36.656 1.687-13.125 4.594-24.844 12.563-33.844 23.156",fill:"#F5BD0C"})),O||(O=m.createElement("path",{d:"M494.656 287.188c.656 2.156 4.031 1.78 6 2.718 1.969.938 3.094 2.719 4.969 2.906 1.969.188 4.688-.656 4.969-2.437.375-2.438-3.188-3.938-5.438-4.781-3-1.406-6.375-1.5-9.375-.188-.656.281-1.312 1.125-1.125 1.781zm-32.25-1.125c-2.531-.844-6.656 3.562-5.437 5.906.375.656 1.5 1.406 2.25 1.031s2.156-2.906 3.375-3.75c.937-.75.75-2.906-.188-3.188zm0 0",fill:"#CD8907"})),L||(L=m.createElement("path",{d:"M864.219 809.938c-1.875 4.875-4.594 9.375-7.969 13.406-7.875 8.437-17.438 15.187-27.938 19.875-17.812 8.25-35.156 17.437-52.03 27.468a215.954 215.954 0 00-30.657 24.75c-7.781 8.157-16.125 15.657-24.938 22.688-9.187 6.75-19.78 11.344-31.03 13.125-13.782 1.781-27.75-.375-40.407-6.094-9.094-3.468-16.969-9.562-22.5-17.625-4.688-8.625-6.844-18.281-6.375-28.031a293.704 293.704 0 016.188-51.094c2.437-14.062 4.875-28.125 6.375-42.281 2.625-25.875 2.906-51.844.937-77.719a60.554 60.554 0 010-13.031c.563-8.813 7.969-15.563 16.875-15.469 4.031-.093 8.063.282 12 1.032 9.375 1.125 18.75 2.718 27.938 4.875 5.718 1.5 11.437 3.562 17.156 5.156 9.562 2.812 19.687 3.656 29.625 2.718 10.406-2.437 21-4.03 31.687-4.968 4.407.187 8.813.937 12.938 2.25 4.312 1.218 8.343 3.375 11.625 6.468 2.343 2.532 4.218 5.438 5.437 8.625 1.782 4.782 2.907 9.75 3.282 14.813.187 4.5.562 9 1.125 13.5 1.593 7.219 5.062 13.969 9.937 19.594 4.969 5.437 10.313 10.5 16.125 15a173.108 173.108 0 0017.438 13.5c2.906 1.968 5.812 3.75 8.53 5.906 2.813 2.063 5.157 4.688 6.938 7.688 2.25 4.125 3 8.906 1.875 13.5",fill:"#F5BD0C"})),G||(G=m.createElement("path",{d:"M864.219 809.938c-1.875 4.875-4.594 9.375-7.969 13.406-7.875 8.437-17.438 15.187-27.938 19.875-17.812 8.25-35.156 17.437-52.03 27.468a215.954 215.954 0 00-30.657 24.75c-7.781 8.157-16.125 15.657-24.938 22.688-9.187 6.75-19.78 11.344-31.03 13.125-13.782 1.781-27.75-.375-40.407-6.094-9.094-3.468-16.969-9.562-22.5-17.625-4.688-8.625-6.844-18.281-6.375-28.031a293.704 293.704 0 016.188-51.094c2.437-14.062 4.875-28.125 6.375-42.281 2.625-25.875 2.906-51.844.937-77.719a60.554 60.554 0 010-13.031c.563-8.813 7.969-15.563 16.875-15.469 4.031-.093 8.063.282 12 1.032 9.375 1.125 18.75 2.718 27.938 4.875 5.718 1.5 11.437 3.562 17.156 5.156 9.562 2.812 19.687 3.656 29.625 2.718 10.406-2.437 21-4.03 31.687-4.968 4.407.187 8.813.937 12.938 2.25 4.312 1.218 8.343 3.375 11.625 6.468 2.343 2.532 4.218 5.438 5.437 8.625 1.782 4.782 2.907 9.75 3.282 14.813.187 4.5.562 9 1.125 13.5 1.593 7.219 5.062 13.969 9.937 19.594 4.969 5.437 10.313 10.5 16.125 15a173.108 173.108 0 0017.438 13.5c2.906 1.968 5.812 3.75 8.53 5.906 2.813 2.063 5.157 4.688 6.938 7.688 2.25 4.125 3 8.906 1.875 13.5M275.188 666.03a26.145 26.145 0 0114.437-1.312 35.242 35.242 0 0113.5 5.718c7.781 5.907 14.531 13.22 19.875 21.375 13.219 18.188 25.875 36.75 37.406 56.063 9.375 15.656 17.906 31.781 28.688 46.5 7.031 9.563 15 18.469 22.125 28.031 7.406 9.375 13.031 20.063 16.5 31.407 4.125 15.093 2.437 31.125-4.594 45.093-5.063 9.75-12.656 17.907-21.938 23.532-9.375 5.625-20.156 8.437-31.125 8.156-17.25-2.344-33.937-7.594-49.312-15.563-32.719-13.031-68.25-17.156-102-27.281-10.406-3.094-20.531-6.844-31.031-9.656-4.688-1.125-9.281-2.532-13.781-4.407-4.407-1.875-8.25-5.062-10.782-9.093a20.743 20.743 0 01-2.719-10.782c.094-3.75.844-7.406 2.157-10.78 2.531-7.032 6.656-13.313 9.375-20.25a84.632 84.632 0 004.687-35.813c-.562-12.094-2.719-24.188-3.375-36.282a58.715 58.715 0 01.563-16.218c1.406-10.688 9.75-19.219 20.531-20.813 4.969-.843 9.938-1.218 14.906-.937 4.969.281 10.031.281 15 0 4.969-.282 9.938-1.688 14.344-4.032 4.031-2.437 7.594-5.812 10.313-9.75a124.125 124.125 0 007.406-12.187c2.25-4.219 4.781-8.156 7.781-11.906 2.813-3.844 6.656-6.75 11.063-8.813",fill:"#F5BD0C"})),y||(y=m.createElement("path",{d:"M275.188 666.125a26.145 26.145 0 0114.437-1.313 35.242 35.242 0 0113.5 5.72c7.781 5.905 14.531 13.218 19.875 21.374 13.219 18.188 25.875 36.75 37.406 56.063 9.375 15.656 17.906 31.781 28.688 46.5 7.031 9.562 15 18.468 22.125 28.031 7.406 9.375 13.031 20.063 16.5 31.406 4.125 15.094 2.437 31.125-4.594 45.094-5.063 9.75-12.656 17.906-21.938 23.531-9.375 5.625-20.156 8.438-31.125 8.157-17.25-2.344-33.937-7.594-49.312-15.563-32.719-13.031-68.25-17.156-102-27.281-10.406-3.094-20.531-6.844-31.031-9.657-4.688-1.125-9.281-2.53-13.781-4.406-4.407-1.875-8.25-5.062-10.782-9.093a20.743 20.743 0 01-2.719-10.782c.094-3.75.844-7.406 2.157-10.781 2.531-7.031 6.656-13.313 9.375-20.25a84.632 84.632 0 004.687-35.813c-.562-12.093-2.719-24.093-3.375-36.28a58.715 58.715 0 01.563-16.22c1.406-10.687 9.75-19.218 20.531-20.812 4.969-.844 9.938-1.219 14.906-.938 4.969.282 10.031.282 15 0 4.969-.28 9.938-1.687 14.344-4.03 4.031-2.438 7.594-5.813 10.313-9.75a124.125 124.125 0 007.406-12.188c2.25-4.219 4.781-8.157 7.781-11.907 2.813-3.843 6.656-6.843 11.063-8.812",fill:"#F5BD0C"})),M||(M=m.createElement("path",{d:"M282.406 674c4.125-1.594 8.719-1.875 13.031-.844s8.344 3 11.813 5.813c6.656 5.812 12.281 12.75 16.5 20.531 11.25 18.188 22.219 36.563 32.438 55.313a370.55 370.55 0 0024.937 41.437c6.375 8.625 13.688 16.5 20.25 24.938 6.844 8.343 12 17.812 15.188 28.03 3.75 13.407 2.156 27.75-4.22 40.22-4.687 8.812-11.718 16.218-20.343 21.187a51.593 51.593 0 01-28.5 7.031 163.06 163.06 0 01-45.188-13.968c-28.5-10.407-59.53-11.72-88.78-19.875-10.5-2.813-20.72-6.657-31.313-9.282-4.688-1.031-9.375-2.343-13.875-4.031-4.5-1.688-8.438-4.875-11.063-8.906-1.687-3.188-2.531-6.75-2.344-10.313a33.95 33.95 0 012.25-10.5c2.532-6.656 6.563-12.75 9.094-19.406 3.563-10.313 4.781-21.188 3.656-32.063-.75-10.78-2.718-21.468-3.28-32.343-.376-4.782-.188-9.657.655-14.438.844-4.781 3.094-9.187 6.47-12.75 3.937-3.562 8.812-5.906 14.062-6.562 5.25-.657 10.5-.657 15.656 0 5.25.656 10.5.843 15.75.75 10.313 0 19.688-6 24.094-15.375a98.75 98.75 0 005.531-13.032c1.594-4.5 3.75-8.718 6.281-12.75 2.625-4.03 6.375-7.218 10.781-9.093",fill:"#F5BD0C"})))},H=["title","titleId"];function T(){return(T=Object.assign||function(t){for(var A=1;A=0||(o[e]=t[e]);return o}(t,A);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(t,e)&&(o[e]=t[e])}return o}var X,_,$=function(t){var A=t.title,e=t.titleId,a=P(t,H);return m.createElement("svg",T({className:"macos_svg__icon",viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg",width:200,height:200,"aria-labelledby":e},a),A?m.createElement("title",{id:e},A):null,f||(f=m.createElement("defs",null,m.createElement("style",null))),J||(J=m.createElement("path",{d:"M878.3 721.7c-1.35 3.6-18.9 65.25-62.1 128.25-37.8 54.9-76.5 109.8-137.7 110.7-60.3.9-79.65-36-148.5-36s-90.45 35.1-147.6 36.9c-58.95 2.25-104.4-59.85-142.2-114.3C163.25 736.55 103.85 531.8 183.5 395c39.15-68.4 109.8-112.05 186.3-113.4 57.6-.9 112.95 39.15 148.05 39.15 36 0 102.6-48.6 172.8-41.4 29.25 1.35 111.6 12.15 164.25 89.1-4.05 2.7-98.1 58.5-97.2 171.45.9 136.35 119.25 181.35 120.6 181.8m-234-515.25c31.5-38.7 52.65-91.8 46.8-144.45-45 1.8-100.35 30.15-132.75 68.4-28.8 33.3-54.45 87.3-47.25 139.5 49.95 2.7 101.7-26.55 133.2-63.45",fill:"#fff"})))},tt=["title","titleId"];function At(){return(At=Object.assign||function(t){for(var A=1;A=0||(o[e]=t[e]);return o}(t,A);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(t,e)&&(o[e]=t[e])}return o}var at=function(t){var A=t.title,e=t.titleId,a=et(t,tt);return m.createElement("svg",At({className:"windows_svg__icon",viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg",width:200,height:200,"aria-labelledby":e},a),A?m.createElement("title",{id:e},A):null,X||(X=m.createElement("defs",null,m.createElement("style",null))),_||(_=m.createElement("path",{d:"M459.5 485.75V182.094l-314.906 67.5V485.75H459.5zm52.5 0h367.313V92.187L512 170.938V485.75zm-52.5 52.5H144.687v236.156l314.907 67.5V538.25zm52.5 0v314.906l367.313 78.75V538.25H512z",fill:"#00adef"})))},ot=["children","className"];function rt(){return m.createElement("div",{className:"furion-banner"},m.createElement("div",{className:"furion-banner-container"},m.createElement("div",{className:"furion-banner-item"},m.createElement("div",{className:"furion-banner-project"},"Furion"," ",m.createElement("span",{style:{fontSize:14,fontWeight:"normal",color:"#8759ff"}},"[fu:r\u026a\u0259n]")),m.createElement("div",{className:"furion-banner-description"},"\u8ba9 .NET \u5f00\u53d1\u66f4\u7b80\u5355\uff0c\u66f4\u901a\u7528\uff0c\u66f4\u6d41\u884c\u3002"),m.createElement("ul",{className:"furion-banner-spec"},m.createElement("li",null,"\u57fa\u4e8e .NET5/6 \u5e73\u53f0\uff0c\u6ca1\u6709\u5386\u53f2\u5305\u88b1"),m.createElement("li",null,"\u6781\u5c11\u4f9d\u8d56\uff0c\u53ea\u4f9d\u8d56\u4e24\u4e2a\u7b2c\u4e09\u65b9\u5305"),m.createElement("li",null,"\u6781\u901f\u4e0a\u624b\uff0c\u4e00\u4e2a Inject() \u5b8c\u6210\u914d\u7f6e"),m.createElement("li",null,"\u4ee3\u7801\u65e0\u4fb5\u5165\u6027\uff0c100% \u517c\u5bb9\u539f\u751f\u5199\u6cd5")),m.createElement("div",{className:"furion-support-platform"},"\u53d7\u652f\u6301\u5e73\u53f0\uff1a"),m.createElement("div",{className:"furion-support-icons"},m.createElement("span",null,m.createElement(at,{height:"39",width:"39"})),m.createElement("span",null,m.createElement(j,{height:"39",width:"39"})),m.createElement("span",null,m.createElement($,{height:"39",width:"39"})),m.createElement("span",null,m.createElement(Q,{height:"39",width:"39"})),m.createElement("span",null,m.createElement(I,{height:"39",width:"39"}))),m.createElement("div",{className:"furion-get-start-btn"},m.createElement(g.Z,{className:"furion-get-start",to:(0,l.Z)("docs/get-start")},"\u4e00\u5206\u949f\u4e0a\u624b"),m.createElement("div",{className:"furion-version"},"v2.19.0"))),m.createElement("div",{className:"furion-banner-item"},m.createElement(pt,{style:{float:"right"}},m.createElement(ht,{language:"cs",source:'\npublic class FurionAppService : IDynamicApiController\n{\n private readonly IRepository _userRepository;\n public AppService(IRepository userRepository)\n {\n _userRepository = userRepository;\n }\n\n [IfException(1000, "\u7528\u6237ID: {0} \u4e0d\u5b58\u5728")]\n public async Task GetUser([Range(1, int.MaxValue)] int userId)\n {\n var user = await _userRepository.FindOrDefaultAsync(userId);\n _ = user ?? throw Oops.Oh(1000, userId);\n return user.Adapt();\n }\n\n public async Task GetRemote(string id)\n {\n var data = await $"https://www.furion.pro/data?id={id}".GetAsAsync();\n return data;\n }\n}\n'})))))}function st(){var t=(0,c.Z)(),A=t.isDarkTheme;t.setLightTheme,t.setDarkTheme;return m.createElement("div",{className:"furion-content"},m.createElement("p",{className:"furion-small-title"+(A?" dark":"")},"\u5b8c\u5168\u5f00\u6e90\u514d\u8d39"),m.createElement("h1",{className:"furion-big-title"+(A?" dark":"")},"\u2b50\ufe0f Gitee \u5e73\u53f0 C# \u8bed\u8a00\u6700\u9ad8\u661f\u9879\u76ee \u2b50\ufe0f"),m.createElement("div",{className:"furion-gitee-log"},m.createElement("div",{className:"furion-log-item",style:{border:"6px solid #723cff"}},m.createElement("div",{className:"furion-log-jiao"+(A?" dark":"")}),m.createElement("div",{className:"furion-log-number"},m.createElement("div",{style:{color:"#723cff"}},"7200 +"),m.createElement("span",{className:A?" dark":""},"Stars"))),m.createElement("div",{className:"furion-log-item",style:{border:"6px solid #3fbbfe"}},m.createElement("div",{className:"furion-log-jiao"+(A?" dark":"")}),m.createElement("div",{className:"furion-log-number"},m.createElement("div",{style:{color:"#3fbbfe"}},"3100 +"),m.createElement("span",{className:A?" dark":""},"Forks"))),m.createElement("div",{className:"furion-log-item",style:{border:"6px solid #1fd898"}},m.createElement("div",{className:"furion-log-jiao"+(A?" dark":"")}),m.createElement("div",{className:"furion-log-number"},m.createElement("div",{style:{color:"#1fd898"}},"1,076,150"),m.createElement("span",{className:A?" dark":""},"Downloads")))))}function it(){var t=(0,c.Z)(),A=t.isDarkTheme;t.setLightTheme,t.setDarkTheme;return m.createElement("div",{className:"furion-content"},m.createElement("p",{className:"furion-small-title"+(A?" dark":"")},"\u5927\u91cf\u4f7f\u7528\u8005\u6d4b\u8bc4"),m.createElement("h1",{className:"furion-big-title"+(A?" dark":"")},"\u6765\u542c\u542c\u4ed6\u4eec\u662f\u600e\u4e48\u8bf4\u7684"),m.createElement("div",{className:"furion-remark"},m.createElement("div",{className:"furion-remark-item"},m.createElement("div",{className:"furion-remark-p"},m.createElement("h1",null,"\u7406\u60f3\u548c\u73b0\u5b9e"),m.createElement("p",{className:A?" dark":void 0},"\u4f5c\u8005\u7684\u6280\u672f\u662f\u6211\u63a5\u89e6.NET\u7a0b\u5e8f\u5458\u4e2d\u6700\u597d\u7684\u4e00\u4e2a\uff0c\u4ee3\u7801\u7684\u8d28\u91cf\uff0c\u6587\u6863\u7684\u8d28\u91cf\u90fd\u662f\u4e00\u7b49\u4e00\u7684\u3002")),m.createElement("div",{className:"furion-remark-p"},m.createElement("h1",null,"kesshei"),m.createElement("p",{className:A?" dark":void 0},"\u5f3a\u70c8\u652f\u6301\uff0c\u56e0\u4e3a\u6709\u4f60\u4eec\uff0c.net \u4f1a\u8d70\u7684\u66f4\u8fdc\u3002")),m.createElement("div",{className:"furion-remark-p"},m.createElement("h1",null,"\u9006\u5929\u7684\u8748\u8748"),m.createElement("p",{className:A?" dark":void 0},"\u975e\u5e38\u4f18\u79c0\u7684\u5f00\u6e90\u4f5c\u54c1\uff0c\u70b9\u8d5e\u652f\u6301"))),m.createElement("div",{className:"furion-remark-item"},m.createElement("div",{className:"furion-remark-p"},m.createElement("h1",null,"\u5f20\u82b8\u6eaa"),m.createElement("p",{className:A?" dark":void 0},"\u5927\u6982\u770b\u4e86\u4e00\u4e0b\uff0c\u89c9\u5f97\u9879\u76ee\u975e\u5e38\u68d2\u3002core\u751f\u6001\u4e00\u5b9a\u80fd\u706b")),m.createElement("div",{className:"furion-remark-p"},m.createElement("h1",null,"\u8d56\u76ae\u5c0f\u9cc4\u9c7c"),m.createElement("p",{className:A?" dark":void 0},"\u4f5c\u8005\u597d\u68d2\uff0c\u652f\u6301\u56fd\u5185.net\uff01")),m.createElement("div",{className:"furion-remark-p"},m.createElement("h1",null,"gudufy"),m.createElement("p",{className:A?" dark":void 0},"\u505a\u5f97\u975e\u5e38\u68d2\uff0c\u6253\u7b97\u57fa\u4e8e\u4f60\u7684\u6846\u67b6\u505a\u4e00\u4e2a\u57fa\u672c\u7684\u540e\u53f0\u7ba1\u7406\u51fa\u6765\uff0c\u4f9b\u5927\u5bb6\u5feb\u901f\u5f00\u53d1\u4e2d\u5c0f\u578b\u9879\u76ee\u3002"))),m.createElement("div",{className:"furion-remark-item"},m.createElement("div",{className:"furion-remark-p"},m.createElement("h1",null,"ThinkCoder"),m.createElement("p",{className:A?" dark":void 0},"\u6587\u6863\u5199\u7684\u771f\u4e0d\u9519\uff0c\u4ee3\u7801\u8d28\u91cf\u4e5f\u975e\u5e38\u9ad8\uff0c\u6ce8\u91ca\u975e\u5e38\u5b8c\u5584\uff0c\u8d5e\u4e00\u4e2a\u3002")),m.createElement("div",{className:"furion-remark-p"},m.createElement("h1",null,"liuina"),m.createElement("p",{className:A?" dark":void 0},"\u671f\u5f85\u6587\u6863\u5199\u5b8c\u7684\u90a3\u4e00\u5929\uff0c\u7edd\u5bf9\u60ca\u8273\u56db\u5ea7\u3002")),m.createElement("div",{className:"furion-remark-p"},m.createElement("h1",null,"weiyu.xiao"),m.createElement("p",{className:A?" dark":void 0},"\u5f88\u4e0d\u9519\u7684\u9879\u76ee\uff0c\u5bf9\u5feb\u901f\u642d\u5efa\u5065\u58ee\u7684\u6280\u672f\u67b6\u6784\uff0c\u5e2e\u52a9\u4e1a\u52a1\u6210\u529f\u5f88\u6709\u5e2e\u52a9\u3002")))),m.createElement("div",null,m.createElement("a",{href:"https://gitee.com/dotnetchina/Furion#-%E8%B4%A1%E7%8C%AE%E4%BB%A3%E7%A0%81",target:"_blank",className:"furion-get-start",style:{margin:0}},"\u60f3\u770b\u66f4\u591a\u8bc4\u8bba\uff1f")))}function gt(){return m.createElement("div",{className:"furion-whouse"},m.createElement("div",{className:"furion-who-custom"},m.createElement("div",{className:"furion-custom-img"},m.createElement("a",{href:"https://gitee.com/dotnetchina",target:"_blank"},m.createElement("img",{src:(0,l.Z)("img/chinadotnet.png"),id:"dotnet-china"}))),m.createElement("div",{className:"furion-custom-img"},m.createElement("img",{src:(0,l.Z)("img/custom1.png"),height:"100"})),m.createElement("div",{className:"furion-custom-img"},m.createElement("img",{src:(0,l.Z)("img/custom2.png"),height:"100"})),m.createElement("div",{className:"furion-custom-img"},m.createElement("img",{src:(0,l.Z)("img/custom3.png"),height:"100"})),m.createElement("div",{className:"furion-custom-img"},m.createElement("img",{src:(0,l.Z)("img/custom4.jpg"),height:"100"})),m.createElement("div",{className:"furion-custom-img"},m.createElement("a",{href:"http://www.hezongsoft.net",target:"_blank"},m.createElement("img",{src:(0,l.Z)("img/custom5.png"),height:"100"}))),m.createElement("div",{className:"furion-custom-img"},m.createElement("a",{href:"http://www.dilon.vip/",target:"_blank"},m.createElement("img",{src:(0,l.Z)("img/custom6.png"),height:"100"}))),m.createElement("div",{className:"furion-custom-img"},m.createElement("img",{src:(0,l.Z)("img/c10.jpg"),height:"100"})),m.createElement("div",{className:"furion-custom-img"},m.createElement("img",{src:(0,l.Z)("img/jjd.png"),height:"100"})),m.createElement("div",{className:"furion-custom-img"},m.createElement("a",{href:"http://www.samfeng.cn/",target:"_blank"},m.createElement("img",{src:(0,l.Z)("img/custom10.png"),height:"100"}))),m.createElement("div",{className:"furion-custom-img"},m.createElement("a",{href:"http://www.ketaisoft.com/",target:"_blank"},m.createElement("img",{src:(0,l.Z)("img/custom11.png"),height:"100"})))),m.createElement("div",{className:"furion-who-des"},m.createElement("div",{style:{maxWidth:350}},m.createElement("div",null),m.createElement("h1",null,"\u4ed6\u4eec\u90fd\u5728\u7528"),m.createElement("p",null,"Furion \u5df2\u5728\u5168\u7403\u591a\u4e2a\u9879\u76ee\u4e2d\u4f7f\u7528\u3002\u4ece\u5c0f\u578b\u4f01\u4e1a\u5230\u4f01\u4e1a\u7684\u89e3\u51b3\u65b9\u6848\u53ca\u77e5\u540d\u4f01\u4e1a\u3002\u4ed6\u4eec\u5728\u7b80\u5355\u8f6f\u4ef6\u548c\u590d\u6742\u7ba1\u7406\u7cfb\u7edf\u7684\u5f00\u53d1\u65b9\u9762\u90fd\u4fe1\u4efb\u6211\u4eec\u3002"),m.createElement(g.Z,{className:"furion-get-start",to:"mailto:monksoul@outlook.com"},"\u7acb\u5373\u6dfb\u52a0\u60a8\u7684\u516c\u53f8"))))}function lt(){var t=(0,c.Z)(),A=t.isDarkTheme;t.setLightTheme,t.setDarkTheme;return m.createElement("div",{className:"furion-links"},m.createElement("p",{className:"furion-small-title"+(A?" dark":"")},"\u53cb\u60c5\u94fe\u63a5"),m.createElement("h1",{className:"furion-big-title"+(A?" dark":"")},"\u5b83\u4eec\u4e00\u6837\u662f\u4f18\u79c0\u7684\u9879\u76ee/\u7f51\u7ad9"),m.createElement("div",{className:"furion-links-content"},E.map((function(t,A){return m.createElement("a",{href:t.url,key:A,target:"_blank",title:t.title},t.text)}))))}function nt(){var t=(0,c.Z)(),A=t.isDarkTheme;t.setLightTheme,t.setDarkTheme;return m.createElement("div",{className:"furion-contributors"},m.createElement("p",{className:"furion-small-title"+(A?" dark":"")},"\u6846\u67b6\u8d21\u732e\u8005"),m.createElement("h1",{className:"furion-big-title"+(A?" dark":"")},"\u6b63\u662f\u4ed6\u4eec\u6210\u5c31\u4e86 Furion \u4e0d\u51e1"),m.createElement("div",{className:"furion-contributors-list"},u.map((function(t,e){return m.createElement("div",{className:"furion-contributor-item"+(A?" dark":""),key:e},t.extra?m.createElement("div",{className:"furion-contributor-extra"},t.extra):"",m.createElement("a",{href:t.link,target:"_blank",title:"\u70b9\u51fb\u67e5\u770b "+t.author+" \u5f00\u6e90\u4e3b\u9875"},m.createElement("img",{src:t.photo,alt:t.author+" \u5934\u50cf",title:"\u70b9\u51fb\u67e5\u770b "+t.author+" \u5f00\u6e90\u4e3b\u9875"}),m.createElement("div",null,t.author)))}))))}function ct(){var t=(0,c.Z)(),A=t.isDarkTheme;t.setLightTheme,t.setDarkTheme;return m.createElement("div",{className:"furion-proccesson"},m.createElement("p",{className:"furion-small-title"+(A?" dark":"")},"\u529f\u80fd\u6a21\u5757"),m.createElement("h1",{className:"furion-big-title"+(A?" dark":"")},"\u9ebb\u96c0\u867d\u5c0f\u4e94\u810f\u4ff1\u5168"),m.createElement("div",{className:"furion-proccesson-content"},m.createElement("iframe",{id:"embed_dom",name:"embed_dom",frameBorder:"0",style:{display:"block",width:"100%",height:"600px"},src:"https://www.processon.com/embed/60a7489f6376891bafa2d353"})))}function ht(t){var A=t.language,e=t.replace,a=(t.section,t.source);if(a=a.replace(/\/\/ <.*?\n/g,""),e)for(var o=0,r=Object.entries(e);o0&&r.createElement("div",{className:"row footer__links"},o.map((function(t,A){return r.createElement("div",{key:A,className:"col footer__col"},null!=t.title?r.createElement("h4",{className:"footer__title"},t.title):null,null!=t.items&&Array.isArray(t.items)&&t.items.length>0?r.createElement("ul",{className:"footer__items"},t.items.map((function(t,A){return t.html?r.createElement("li",{key:A,className:"footer__item",dangerouslySetInnerHTML:{__html:t.html}}):r.createElement("li",{key:t.href||t.to,className:"footer__item"},r.createElement(h,t))}))):null)}))),(c||e)&&r.createElement("div",{className:"footer__bottom text--center"},c&&c.src&&r.createElement("div",{className:"margin-bottom--sm"},c.href?r.createElement("a",{href:c.href,target:"_blank",rel:"noopener noreferrer",className:n},r.createElement(p,{alt:c.alt,url:m})):r.createElement(p,{alt:c.alt,url:m})),e?r.createElement("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:e}}):null))):null}}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/c4f5d8e4.e21666e3.js b/handbook/build/assets/js/c4f5d8e4.e21666e3.js deleted file mode 100644 index 2bfe242d23e..00000000000 --- a/handbook/build/assets/js/c4f5d8e4.e21666e3.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[4195,5965],{161:function(t,A,e){e.r(A),e.d(A,{default:function(){return mt}});var a,o,r,s=e(7462),i=e(3366),g=e(6742),l=e(4996),n=e(2263),c=e(5350),h=e(6199),p=e(4848),m=e(7294),u=[{author:"\u767e\u5c0f\u50e7",link:"https://gitee.com/monksoul",photo:"https://portrait.gitee.com/uploads/avatars/user/324/974299_monksoul_1578937227.png!avatar200",extra:"Furion\u3001Layx \u4f5c\u8005\uff0cdotNET China MIP"},{author:"YaChengMu",link:"https://gitee.com/YaChengMu",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAYAAAA4TnrqAAADuklEQVR4Xu3YeUgUYRgG8GdtPSqSsEzRki4j7LBIKyQoAqOTsLJLUqMM2kpFPMkDa7NSEzXcIovUsEONiFJCSQosLIPUyAJLSTAsS6Iyr203ZmQHWaX2xZyxePc/2efbeefn883OrMprXaAR/LJIQMVYFjmJIcay3IqxCFaMxVgUAUKWr1mMRRAgRLlZjEUQIES5WYxFECBEuVmMRRAgRLlZjEUQIES5WYxFECBEuVmMRRAgRLlZjEUQIES5WYxFECBER7xZM9xccSYxDNNcnKSxGptaEHsyBy2tbYRR+6Nurs44FXcI7jPdpLU1dQ2IPJaFH13d5M+jLBhxLGGYnZt9oQnyx1g7W3E2g8GAm2WVSNVdocwqZqM1e7B1/WpYWVmJf7d//gJt1iU8flZP/izqAlmwhKEyksKxYukiqFQqccav3zpxWleA8ofVFs+8ZuVyxGgCYT9hvLimt7cPhbfuQZdfYvFnDCcoG9aCubOgjT4IF2dHad66hkaEJqRbtH3GjbVD9vFIeHq4i+uNRiNqahsQpc22aP1wkExrZcMSDhi8fSP2794MWxsb8fh6/U/cuFOBzNxrfzyX8JBd2LHJF2r1GDH78VMHTmRflmX7KYIlHPSsNgrLFs+TtqMl1xwfr4WID9sHx0kTFdl+imF5e3ogKSIETo4OUpt+920mbL/0xDAI60zb78nzlzgSn/bHNv7tgKzb0DT8gQA/BPlvgI2NtdSU/OJSXCi8Nej8NEHbEOC3Vsp+aO9AckYuBGC5X4pgDbUdh0Iwb2FPby8uXr2NvKK7cjuJx1MMS7gOHQ3diymT+7ej8O1W9bQWEcmZEsTA242h3pdbTDEs4UTNt9j3zi7k5BWhpLRy0I3s+7Z2xKeew4vXb+U2ko6nKJb5xVuY6lVjM5LO5CIlVoPZ06eKg3Z190CXX4zrtysUg1J0G5rO2vy2oE+vR33DGyyeP0d8pBG23/2qGsSdzFEUalRgCUMcCvZHwJa1sFarB4E0vWsVH7qbW1oZSxAwf5QxqQy8hikupeS3ofnJr/JZgrjDwXCYaC++ZTAaUf6gGglp50eDk7K3DkMJ6FJi4L2o/05d+G3qdE4ByiofMRZjDbMD3CwCIGMxFkGAEOVmMRZBgBDlZjEWQYAQ5WYxFkHgP4oq+uPfv+bIWIT/GGMxFkGAEOVmMRZBgBDlZjEWQYAQ5WYxFkGAEOVmMRZBgBDlZjEWQYAQ5WYxFkGAEOVmMRZBgBDlZjEWQYAQ5WYxFkGAEOVmEbB+Af6T8DmYf9viAAAAAElFTkSuQmCC"},{author:"zuohuaijun",link:"https://gitee.com/zuohuaijun",photo:"https://portrait.gitee.com/uploads/avatars/user/20/61753_zuohuaijun_1617100931.png!avatar200",extra:"Admin.NET \u4f5c\u8005"},{author:"\u96fe\u5f71\u5bd2\u51b0",link:"https://gitee.com/wyhb",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAYAAAA4TnrqAAAGuElEQVR4Xu2aeVBVVRzHv6wPZBMXNCWQRRBCXFAJBRTEhTB1lGzBnEbRbFIzdXTUGbcxM5dySS1FGMsRNQMdC8rQMTTRVEYR2RERjUBAQRDQeDS/M8MbZHnc87gXoznnH2a433PP+X3u9/7O+Z379Dz8p9ZDNEkE9AQsSZyYSMCSzkrA4mAlYAlYPAQ4tCJnCVgcBDikwlkCFgcBDqlwloDFQYBDKpwlYHEQ4JAKZwlYHAQ4pMJZAhYHAQ6pcJaAxUGAQyqc9V+BdfLQLjj1e5VjOu2TXrmegvAla9t3Ey29FXWWgMXx3Px9vGBlYSG5h6WFGcJnhqJHt64oKXuMiMMnUPGkSnL/4pJSXEm+JVnPK1TUWbyT8R46EJtWfwKbHt1Bga/6bKeiwfPOT3ZY65d/jGkhQbzzkF0f83MC1m7ZI+t9BSwOnIrBev78H8TEJeBmaqbk6bQ3Z40ZNRzjx4xk43UqZxGsyCMx+OH0GQz1dIOhgaFWaHn37sOsi2mznEWdKIdpazW1tbh09QaWL5itSQGdElb+/UKs/nQeA6GtUXBxCYnNYM2dGQpvL0+tfRsWgzeC/Ds3rJT0LHw4awZMVMZaA05IvIzklLRmsCYG+sLT3UVr37LH5di5/zDemjyhc8P6OjJacs5q79ah8UrcKV7DKcGBoKDr6upw7uKf7G9HOcvJwY6NTY02p6fiz0l+UFKEsq+GTQd9c/yYDstZSu7eKS7FYfXq2b3DVsOqp9VSDKKzRnFYTWe2MDwMYdND2OpYWfUUB74/gcjoWJ0D6MiOHQaLVrQl82dhqKc79PT0oFbXo7CoGHK5oab2Gb797jgSk64rxk9xWOSgReFhmDwxAOZmXRQLhKB/9tV+nD5zXrExFINFkMLDprN9TzdrqxcCIFfl3r2HrNx8qOvVXMHp6+nDsZ8tXBztYWBgwPrSins7Mxdf7D6IlLQsrvvxiGWHRQn9ow/eRqCfN6ytLNlc6uvrkZqRg6zcu5gQMErjMMpZSdduIjomDldvpGqdd+ikcQgO8oOnmwtMTFRMSyVVevYdRB6JxdkLl3ni1kkrO6xFc8Mwa8YUqIyNGKQHhcU4ejIeh46dYhMkmIvnvY8A3xGaEkitVqPgwd9sbxQbl8DA0nF08Fg/+AwbBGcHO3QxNdGAf1JZxbRSIOtEpZVOssOicbatW4YRQway/LE36miLSZyghU2fhAkBI9Hbpgf09fU1MGprn0GlMmYLQYMzCVBaVi5+PfcHTvz0m5wMJN9LEVitjU55bOTwwXBzcYSjvS3sbfswp9H/G2C11JdyUkVlFUrLHqOk7BEelj7Cnfz7KCouRZ1ajcycPOTeLZActK5C2WA1gDBRqeDu6gQrS3P0faUXrCzM0bO7NVTGxswtrTVyU1FJKdKz7iAjJ48Vz+4uTrDuagljIyOd4svJu4dl67bJBlI2WBTN7s9XYbTPMM3r01KElMcIDH2QIDfcuJ3B8hUBac0lHgOcMcTTHR6uTnCws2WrKx0U0oNpeFWbjlX77Dm+OXQMEYd/1Al0S51khTXW73WsWTqfBUOvTnVNLXt1CosfIievAClpmUhOSUfRw9IX5hLx5Xp2ZvW0ugabd0UgNu6s5ABpIXB1doC5mSlec3WGkZEhLM3NYWCgj827DyK/4C/J92pLKCssGox26OUVT7isHxO1A/0d7VH2qJx9ZDh/6Wpb834p12WH1TiKBbPfxez3prGnrXRT+ms0zf9/A0uJw76mD1hRWG25iQ7qNqxYgD69baBLQm44GaXy6dipX7Bpx/62hmzX9ZcGa9SIIVixcA4c7PqyAG5n5mDO4jVcpxAbVy7ClIkBrOyhL0k8R9i6UOtwWMMHeyAsNAS+3l6sJKJGq+O6rXtx8Uqy5BhoXxe1ayPc+jsywEqfOCiesxoiHzfaB4G+3vAa5M527I1Lm4zsPGzdE6UppOn6O1OD2Xajurq2RXimpiqEBPljsMcAdq+O+l2E7M6iU1AKgkoZm57d0NXSQnOU0hA5bUzJTdGx8ez1adqOH9jOSiIpje71e9I1LFy5SYq8XRrZYTU+dWg6M9p0pmZkIz7hgtZieOvapaDvhW01ylV0xLNh+75mG922+upyXXZYlEv2bVkDT/f+rPilI5pb6dk4m5gk+edDVN5QWUPN0NCA1ZqNv2iXV1S2Wg3oAkFqH9lhSR24M+oELI6nJmAJWBwEOKTCWQIWBwEOqXCWgMVBgEMqnCVgcRDgkApnCVgcBDikwlkCFgcBDqlwloDFQYBDKpwlYHEQ4JAKZ3HA+hfRMWCs1kpPgQAAAABJRU5ErkJggg=="},{author:"lindexi",link:"https://gitee.com/lindexi",photo:"https://portrait.gitee.com/uploads/avatars/user/262/787628_lindexi_1600869623.png!avatar200",extra:"WPF\u6210\u5458\uff0c\u5fae\u8f6f MVP"},{author:"Mr'hu",link:"https://gitee.com/hgflydream",photo:"https://portrait.gitee.com/uploads/avatars/user/100/302533_hgflydream_1578919799.png!avatar200"},{author:"Argo",link:"https://gitee.com/Longbow",photo:"https://portrait.gitee.com/uploads/avatars/user/184/554725_Longbow_1578927507.png!avatar200",extra:"BootstrapAdmin\u3001BootstrapBlazor \u4f5c\u8005\uff0c\u5fae\u8f6f MVP"},{author:"\u5939\u5361\u5939\u5361\u9171\u9171\u5939\u5361\u9171\u5939\u5361\u9171",link:"https://gitee.com/vincywindy",photo:"https://portrait.gitee.com/uploads/avatars/user/313/939875_vincywindy_1602575487.png!avatar200"},{author:"Kane",link:"https://gitee.com/KaneLeung",photo:"https://portrait.gitee.com/uploads/avatars/user/483/1449079_KaneLeung_1600227210.png!avatar200"},{author:"Jerry",link:"https://gitee.com/JerryFox",photo:"https://portrait.gitee.com/uploads/avatars/user/24/73073_JerryFox_1608471117.png!avatar200"},{author:"\u975e\u51e1\u4eba\u751f",link:"https://gitee.com/ffrs",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAB90lEQVRoQ2MUW9D6n2EEAcZRDw/z2B6N4WEewQyjMTwaw8MsBEaT9DCLUAzvjMbwaAwPsxAYTdLDLEJHCy26JOmd3okMKvzCDHc+vmVw3zofJdTxydEitdHFw4f90xjUBEQYbn14w2C7cRaKP/DJjXqYCiEwGsOkBuJ8x2AGBV5BvNpkefgZeFnZ8Sbpz79/Mjz+8hGvOQ8+v2dI3L+WVCeiqKc4hmF5kBhX4MvD5OonRh+yGoo9POJimJgQHi2lkUJptFoiJslQoIbiPEyM3aNJeign6XxdK4ZMbXMGViZmnJHNwcLCwMLIhLce/vP/H8OPP3/wJphVdy8zVJ7cSUyiwqmG4iRdbmDHkKtridfDMNsprYeX3b7IUHhs68B62ENWjcFDTg0cg7iAraQCgwQXD94YfvHtC8Ph5w/weubIiwcMK+5cGlgPE2P7aKE1lAut0RjGEgKjSXqoJul2c3eGMGVdgqmaWvUwyCJK62KK6uF+K2+GKFV9gh6mVj0MMofSupgiD0eo6DHYSCgQ9DC16mGQRZTWxRR5mKBPoQpGC62hWmiNxjCOEBhN0sM9SY+4uSVi8zo91NGlWqKHR4i1Y9TDxIbUUFU3GsNDNeaIdfdoDBMbUkNV3WgMD9WYI9bdozFMbEgNVXWjMTxUY45Yd4+4GAYAu+YF8y0FaaoAAAAASUVORK5CYII="},{author:"sunkaixuan",link:"https://gitee.com/sunkaixuan",photo:"https://portrait.gitee.com/uploads/avatars/user/131/393772_sunkaixuan_1578922542.png!avatar200",extra:"SqlSugar \u4f5c\u8005\uff0cdotNET China MIP"},{author:"wangbl",link:"https://gitee.com/blwang",photo:"https://portrait.gitee.com/uploads/avatars/user/1744/5233096_blwang_1602572569.png!avatar200"},{author:"yzyk126",link:"https://gitee.com/yzyk126",photo:"https://portrait.gitee.com/uploads/avatars/user/237/711378_yzyk126_1600742932.png!avatar200"},{author:"Awxtggg",link:"https://gitee.com/awxtggg",photo:"https://portrait.gitee.com/uploads/avatars/user/115/345036_awxtggg_1578920749.png!avatar200"},{author:"Rayom",link:"https://gitee.com/Rayom",photo:"https://portrait.gitee.com/uploads/avatars/user/698/2094938_MartinYl_1578966088.png!avatar200"},{author:"rockn",link:"https://gitee.com/rockn",photo:"https://portrait.gitee.com/uploads/avatars/user/163/489708_rockn_1578925472.png!avatar200"},{author:"\u5fae\u7b11",link:"https://gitee.com/z.smile",photo:"https://portrait.gitee.com/uploads/avatars/user/193/580831_z.smile_1578928256.png!avatar200"},{author:"db300",link:"https://gitee.com/hawkleng",photo:"https://portrait.gitee.com/uploads/avatars/user/159/479406_hawkleng_1578925163.jpg!avatar200"},{author:"frisktale",link:"https://gitee.com/frisktale",photo:"https://portrait.gitee.com/uploads/avatars/user/404/1214273_frisktale_1607680117.png!avatar200"},{author:"\u4e09\u5bf8\u4eba\u95f4",link:"https://gitee.com/zhouhuasheng2020",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAABiUlEQVRoQ+2YsUoDQRRF78BKstlFv8ZCEYKFCJIihRgkiIiVjUUav8HGwsZKRCRIxCKFCGIhNlr4IdbKJpvgwop2okJ2dnwPxpt63rtzzxlSrHluLOT4Rz/Dwp7bpmHPBYOGadgzAnzSngn9VoeGadgzAnzSngnlnxafNJ+0ZwScPOmZ3T2ES40/RZPeXuHlcL90BgvbIIzXt1Cdr9uMTjwzerhHcn4y8fnfDjoxXPoWggtYWBC2ShQNq2AXDKVhQdgqUc4Mh4vLmN7pwIQ1p0XydIjXowOkdzdO9rKwLcbK7Bzi1iZMpWq74se5fDxC0jvF+OnRyV5nhp3cRmAJCwtAVo2gYVX8AuE0LABZNYKGi+CP1jYQNVswwVSRMeuzefaGQb+HwcWZ9Y5ShuP2NqLVtmzhyy6S7rFO4dpK8/PzrAkC6wsUGcyzDB+fa4fX/SJjX86WMmydqjjIworwRaJpWASzYggNK8IXiaZhEcyKITSsCF8kmoZFMCuG0LAifJFoGhbBrBjyDtay2gX6ZzdZAAAAAElFTkSuQmCC"},{author:"\u5ff5\u820a",link:"https://gitee.com/miss_you",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAGH0lEQVRoQ+2Ze1DUVRTHv7/dZRFfvFRggQVhgeWdTyYx1LJsqhk1yymtcTJTi+ll5iNNs/JVZjH5mEr9o5qScappxkonBx9hiBIqIsjyXJRFROX9WPdBc+6wO4iL4v5+v50d/N0/2Xvv737O99xzzzlwqiN7uvAADU4CHuBqSwoPcIEhKSwpPMAsILn0ABP0DhxJYUnhAWYByaUHmKBS0HK5S6+IGIcFIbFQyGT456YBiwqOuNSpXAr8crAWH2gmYLhCySBrjW1YU5KDw/V6l0G7DPjV0HgsjxjLYDutFgY4SCZHnbEdG8vO4JerZS6BdgnwyshxWBgaj6FyDzSbb2FbRT68FUosCUtkf2syG7GjqgC79AWiQ4sKTDBbtKl4ZtRoeMhkaDQZsb3yLPZevsjASPVlo8fAx8MTJquVqbxedwqtFpNo4KIBP+wbhI+iUhA/zB9c933dXJaH6o4WXOlsZfeXxpxADVZrxiPIcwiom1ja1ogNpbk4duOKKNCCA5OqKyPH4/kgDYYplAziXHM91ulOYXZAJF5URSOv6RqLzjYlx3qPwhrNBKT4BDLjGK0WHKrX45PS03bDCEUvKDDBvBmeDLXXcHZwCk77DSUgZQkuI24KZgdGsrP/drUcbxcdt3PYDDVXFcXuNY0W8y38Va/Hbn0BdG2NgjALAvxcoAavqRMQO9QPco7r0zWjh/hgV8I0No9U/Ka6EFvL824DmeofglWR45HQfRXoxw6LmXlFZq2OGYrP4AVMii4KTUDUEB8GalPlQG0ZA3EUfB71D8FnsZPZnaXovF6XiwO1pXcwpIclYbE6ASOUXvbfLF1d2G/QYcWlbKeZeQHTXV2iToCnTM4UowTiy8qz93Q/WrcgRMvUsrm7IwJybXq75wRp4OcxCCVtDVh6Ieue+9/NGryA6UB7k6YzF86oOoechlrMGBmGGSPVkHOyu6qg4DiYuxz/l8fSZcXh+mp7BkbfWRgah4r2Zhy8Vum0urSQF7CjL78fMRbpYcns3XV20Ju8U38en1fkO7tFn+sEB34rPBmL1YlOAVOqqeBkLLp/UZEvSuYlOLCzkswMiMCmmEks6zrffB1z8/8UJeNyC2C6o/uSpyPVV4V2ixlbyvPs6aezBuxrnUuBKaBN8w9BRuW52zKo99i9T4JSJseJmzWYd/aQ0Jz2/VwG/IIqGms1E5nLUqq5rOgEe14ordwZPxVqr2G4fqsDqy6dZNmVWEM0YEosJvoEQMZxuNhyAy1mEzLi0zDJV8VYiltvIr3wKOYFa/GSKoYFuX2Xi1jhQIO84ZWQOHxbfQFZAhYSggA/PkKNrdpUNJqN+LHmEjs4pZsbtZPgycntTwzd1T1J0zHZT8VybYJ+o/AoM8ZTo8KRadCxQEVr10WlwF85yD7HrXJpattQxkWDat2PS087BKbfSXmb0j2hewP9NOZJpPkFsz2zu3tfQtTJgij867inWWlHd3B5cTb+vl7dJzAB9CwiGkxGfFp2muXI1BmZr9Iip7EWPxt0WKuZwAoNyqF7V1fO3nHewFQMbI9Lw0ilF3Ibr+LZ//5gZ3Hk0j0PSeuWhiUi01Bq72dti32E1ctUFq4u+RdNJqO90KBkhPL0HVXnnWVl63gDUwtnvioGVnSxcm9T2Zl+ATs6NbnxFL9gXO5sZUUCRXPbk0UFCnVJVhRn8wpivIAjBnvju8THoB3qy9o2rxceRX7TtduAB8sU+L6mmLVj7zZorx8eegLhXsOR11SHmXkH7dO/jp+KWQER4DgOB+sqsbQwy2mVeQFTd+Pd0WNYwvB7XTnSC4/ZD0KNO4rc9O5WtjdjrS6nzz4VRe/N2lRQekmBrLeB6M7TtaGovkGXyyvl5AX8VVwaZgVEot1qYgr27kbYgtn9yGHobMM7RSdwssFwP8v6PZcXMH2FMqUUnwDs1l+446PUufxQM5G1a2wdkb5ORpVxVXszC0xiNuV5A/fHtOSyU/yD4SVTOJzeYTXj+I0aXq7an3MIEqX7+yF3mecShd0FVlLYnZQQ6yySS4tlWXfZV1LYXZQQ6xySwmJZ1l32lRR2FyXEOoeksFiWdZd9HziF/wczEAPmEWi9EgAAAABJRU5ErkJggg=="},{author:"\u84dd\u8272\u5929\u7a7a",link:"https://gitee.com/lds2013",photo:"https://portrait.gitee.com/uploads/avatars/user/114/342448_lds2013_1578920663.jpg!avatar200"},{author:"1024",link:"https://gitee.com/co1024",photo:"https://portrait.gitee.com/uploads/avatars/user/627/1883684_co1024_1600418760.png!avatar200"},{author:"\u5f90\u5fd7\u52c7",link:"https://gitee.com/xuzhiyong",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAFCklEQVRoQ+2YSSitfxjHv655FguLK8MCRckCUZIhC8MCKTOFhCQZkmSIuKQQrmS8ZIrMhG5XshCRRIbFzQqFhQWFuPx7fnVOB+ccrvd9ne75v7+ycc77nt/n+T6zBoAn/I+Ohgis5mqLCqu5wBAVFhVWMwuILq1mgr7CERUWFVYzC4gurWaCiklLEJcOCgpCXV0dlpaWUFxcjKurK4WO4+TkBFdXV2hqauLw8BAbGxuCOpkgwIuLiwgMDMSfP3/Q1NSEvLw8hRCzs7MICQnB09MTRkdHERUV9W8Bl5eXo7CwEHp6etjc3IS/v79ChbOzs1FdXQ1DQ0MGeXl5ifz8fHR3dwsGzavC5Mrt7e2wsrLC+fk50tPTMTExIffy5MojIyNwdnbG2dkZ7u7uYG1tjZ2dHcTExGB/f18QaN6ACWBoaAguLi64vb1FfX09i19FR+L2BErfJWhS28DAAL9+/UJERITS2P+oNXgBNjY2xvj4OAICAvD4+IiBgQEkJSUpvFNtbS3InXV1dZ/B9fb2Ii4ujj23sLDAlFaW8D4CzRlYFpYu8JY6VVVVyM3NZTH+0n1fvmtlZQWZmZm8ujcnYHLjtrY2eHt7M2MTQGxsLLsglSUbGxvmrmtra+zzmpoapqy+vj6Oj4+RlpaG+fn5Z0LRO3t6euDu7g4NDQ0cHR2hrKwM/f39HxGU38aDElRycjKrobJqUWbu6+vD169f8fv3b2YESmDx8fHQ0dHB6ekpy+SKIGQNSdCUEyYnJ1FQUMAMxeVwVpiy8M3NjVRZusz09DRCQ0NZ5m1sbISXlxd8fHyYYm/BSmDIvbu6uhAeHg4tLS1p2RobG2Mh8dHY5gRMt/D19WUlSFJGZGvr+vo6U5nKFB0yDCU1+nvv2draYp2Yqakpe44qAXnKRw9nYNkfJlck17O3t5fW4ejoaERGRuLg4AA/f/5kSYjc+r2HVO7s7ERDQwODpndxqdG8Aktq68PDA5qbm1lLSUYICwtjMW1iYiLtmyXAdnZ2LDaNjIxYazkzM/PMFnz317wBy5abk5MTJCYmsuHhrZOQkIDv379DErOpqalvPcLpc16AKQN/+/YNZmZm7DJqDSzbP0tMr7bAsrBUK7e3t+Hp6flK4b29PRbLXA8lMK4uz8ml5+bmEBwczOZe6p/v7++RkpKivsBUYqhdpHpL0w2VDnnAypT9p5IWZdacnBzW+1LLR/VSGTC1kxYWFqisrJR2SoqAqaTRyMhXDy0xOieXfqmcMmCK7cHBQdja2mJ1dVU6cMgD7ujoYGXt+vqazdQ0oPB1Pg34x48fIDhqSmgeLi0tZQzygGVrOrWtRUVFvK19PgWY2ktqLszNzV/tuRS5dEtLCwsPmpspXLKysjA1NcVZaMGBKc6p43Jzc5O7pFOWtCQbEBo/Fc3Pf2sBwYFl1zbyVj/KgGU3IDRa0gBClWF5eflvOaXfFxTYwcFB2nIq2kZSlqeYpeWdvMaCRksymp+fHy4uLjjHs6DAjo6OLDnRsk6yb6blgIeHBys5X758YWsgUpKWBbS1rKioeKUedWklJSUYHh7mHMeCAlPsUjmytLSUXlRSul5SCb2P/vQ6LPnBjIwMln21tbXZv2iLsbu7i9bWVumy78MB+o4HeVX4Hb+n8q+IwCqXQOALiAoLbGCVv15UWOUSCHwBUWGBDazy14sKq1wCgS8gKiywgVX+elFhlUsg8AX+A5BcJC4Cp1g9AAAAAElFTkSuQmCC"},{author:"Coco-wangLI",link:"https://gitee.com/coco-wangli",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAADjklEQVRoQ+2YW0hUQRjH/3tz3Yu7ul5YXZUSK8vKRE0JtaBStLKXCoKigiLoQkQPIQbVW9KViNR6iogg6KnAisSH7OLlQTIo0UgyNVtX19va7upuzGwrkaln84wH1zngkzNzvt/3+87MfiPLrGzzYhE9Mg4c5La54SAXDG6YGw6yDPCSDjKhU3C4YW44yDLASzrIhPJNi5c0L+kgy8C8lfSmpTpsW2bAWnMojGo5FHIZTaVrwgubYwINXQ48eG/HlwEX0xQzB86I0+BUThRWRKnxm3FaoBGXB09ah3DtTR8zaKbAJSkGHF8fCZNGMWmztc+Jpu4xdNhdUMplyIzT0L8onRLEuccLVLcN40JtLxNoZsAbErQo2xiDGJ0S5Fr0o9WJK6+taOn9OQVEq5KjNC8aBclhtApImd9rHsCdpn7RoZkAE4DKHRasjFbTgNtsLpTVfJ/x+yRzLheakWXRUtOdg26ced4j+jfNBPhgegSOZJgQopBhyDmB8jorXrSPzGqrIFmPs7nRMKgVcHt8lqsaxbXMBPj2dguyLBoKWPd1FKere2aF9Q+oKrEg2RSCDrsbLz+P4GGLXfBcIQNFB14VrcalrWbEhqmYWRICNt0Y0YGLl4fRsiTfJDlmyl9Z8ax9eC4xijpXdODDGSYcSo+g3691dBzna3vR2DUmatBzWUx04KNZJhxYFwGVnAPPRYxoc0U3vGe1ESeyI6FRyhdHSW9J0qM033eWLopNK9Gowo2iOCQYfcfS/WY7KhptgkuSbHp71xhpB1Xf5UBFQz8cbo/g+bMNFL2kyQuvFsYif4mOvpvs0Meeds0Wx+T/rxfFIjfRN/dTnxP7H3cKnitkIBPgXalGnMyOpGdxID8tSc9cmhdDu6txj5f2x7fqhVeHZMAE9GZxHNLMof/dPHQPu3Gupvef3ZUQsHn7peV/0Z+NAGkP22xOauttp2NKLKSFJK1kTrx2YbaHfiLSMe1LC6elTR6yibXbXHj3zUEvAMJDFbT5T4/VQB/iGzPh8aK6fQQXF9oFgB96Z4oBpF20GFS0z53pIcfYow+DAe3qgZY3k03r7yCI4d2pRmxO0iPeqIJOJZ+83/Jf4pEj6G5TP36MjgfKEND4eQEOKCLGgzkw4wRLvjw3LLkCxgFww4wTLPny3LDkChgHwA0zTrDky3PDkitgHAA3zDjBki/PDUuugHEA3DDjBEu+/C+g49U0Ph0CkwAAAABJRU5ErkJggg=="},{author:"Executor-Cheng",link:"https://gitee.com/Executor-Cheng",photo:"https://portrait.gitee.com/uploads/avatars/user/2178/6536098_Executor-Cheng_1612117301.png!avatar200"},{author:"Halley",link:"https://gitee.com/Halleyxx",photo:"https://portrait.gitee.com/uploads/avatars/user/2770/8312251_Halleyxx_1606922761.png!avatar200"},{author:"zergmk2",link:"https://gitee.com/zergmk2",photo:"https://portrait.gitee.com/uploads/avatars/user/745/2236354_zergmk2_1614155445.png!avatar200"},{author:"MR.Zh3",link:"https://gitee.com/www111",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAACtUlEQVRoQ+2YT0gUURzHv+M6M8SuqIUVRMeIEFpIKiKv3bxVEIoQRdeIDlvBIiaC4aljHYoklKC8de1UEBUSe5AKob+WVtAG7tbOzG4T79msM+Oor9iQ3/O3t2XfMu/z+37e+715xlxPt48N9DEYWPO0OWHNAwYnzAlrVgFWWrNAl+FwwpywZhVgpTULlDctVpqV1qwCDVW69ewFbDrSUy+RX/VQvjeO0vgNpbKZu/ag7eIQUlu3y/F/+3+Vh/xXYDEBtzCFb/lzKnNB+mgvMr2nYFg2XeDal3l8Hx2E92p6Tej2/Ajsg93/bMiaDwAaewEQVtr3PBimCd91UbpzC+W7t1edT0Rn/xdgNNFSujr7Tq5Foafz7DGKQ7lVgQOdAQO1r5/RvGMnLWB3uoBUxzYJraJ1+8Ao7P2H5FgBbHVmiQEXpuBXfso16bsOShM3UZ6cSEzZ3N2JttygLI6wwbAsWNkuesDO86f1Xdd58gjF4UuJwOnj/cicOCl/E+vdznbRBF4Yu17vq1LrKwPwZl4sgw7rLHb0lv4zNIFF/w1azUpax3UWm9vm4at0gQNdxbpM0jqus2hfpIHDCdbmZlG8nEP144e61nGdxQGFNLAgC6D8SgULY9fw4/6kBI7oHNrUyAOHta48fCCPmuKzpLMfaVvkgVfSOqJzaAcnD5yktTfzcumwEevRWgDXtTZNCK29t6//HDaiOoviaAEc1rr6/g1q859gHzi8eM6OHUi0AI5o7TrytbEp05LYm7UBzvSdRvpYH4xmc/FGI9amguasDbC1dx9az+eR2tIh2ZIOItqs4Xh64nu4J4ffKMgkrHKntN5jGnprud4wKs9nYJUqUR7DCVNOT2XunLBKlSiP4YQpp6cyd05YpUqUx3DClNNTmTsnrFIlymM4Ycrpqcx9wyX8GxhQyiMyPuNfAAAAAElFTkSuQmCC"},{author:"Robin",link:"https://gitee.com/robinloveyou",photo:"https://portrait.gitee.com/uploads/avatars/user/2730/8192517_robinloveyou_1614528468.png!avatar200"},{author:"Scrmy",link:"https://gitee.com/scrmy",photo:"https://portrait.gitee.com/uploads/avatars/user/2190/6571533_scrmy_1602348016.png!avatar200"},{author:"ThinkCoder",link:"https://gitee.com/ThinkCoder",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAABDklEQVRoQ+2YsQ2DQBAEl2LIKIAcOqEHiqAGSoEKSAnoxpaIbIxI/OuzniEF9ridvZOeQtJDN7oKGs6cNoQzBywIQzgzB4h0ZkA/2oEwhDNzgEhnBpSlRaSJdGYOWCI9TZOapvnKqnme1bbtVxpnL9NwCkv7vldVVadSZVmqruv93rZtWpbl9Ll1XTUMQ4rPedOwEL76ynEc1XXd/ogrtlf1aTh5hg6CEDZsYiL94gAzzAwndoClxdJKHKmDHEvL66/EDDPD3owxw15/mWHLbxwODxwe3IP7R/o/39LRvdNwNAF3fQi7HY7Wh3A0AXd9CLsdjtaHcDQBd30Iux2O1odwNAF3fQi7HY7Wvx3hJ/NRxgHWkOqQAAAAAElFTkSuQmCC"},{author:"ZHAOs",link:"https://gitee.com/festone",photo:"https://portrait.gitee.com/uploads/avatars/user/127/383015_festone_1578922155.png!avatar200"},{author:"\u7ea2\u767d\u73ab\u7470",link:"https://gitee.com/kgsl",photo:"https://portrait.gitee.com/uploads/avatars/user/255/765748_kgsl_1606196628.png!avatar200"},{author:"harryckl",link:"https://gitee.com/jack_ckl",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAABLElEQVRoQ+2YMQoCQQxFZ2sLwVbBWizEg2jjhQTv4F28gHgJsVestLFSkC0EcZ2EDGSzb+uZbPLfz0x2q8l690wdeioKDk4bwsEBJwhDOJgCWDoY0K9yIAzhYApg6WBAObSwNJYOpkARS2+W07SaD99SHS/3tNjus2TT7ssKXi+iYIlav9ZqSWn3SXKGsEQtCNcKaK2p3SeBhKUlamFpLK33i2RgkbyleA9Lkvlc29qCz7dHOpyuWXWPB700G/XFI2lWcEZLiUx/1mrvU+0+SerFe1jSixSc+VkJ4QYFsLTEHoyWjJb802rsmNZeSxbnQKkYRU7pUslaxKVgCxU9x4CwZzoWuUHYQkXPMSDsmY5FbhC2UNFzDAh7pmORG4QtVPQcA8Ke6Vjk1jnCL6gtiwgepIm4AAAAAElFTkSuQmCC"},{author:"jixinyu4",link:"https://gitee.com/jixinyu4",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAACLUlEQVRoQ+2UPUhbcRTFz1MXrVR00TREpeJHNdQ66GCgtJNjOolDFQdBUBEqxUGKVgstNvUTGw1IgghGQVJFVMggDlJwqQ4Ojn5VKaWDxe/E90qyFFF4hveuf/h733z/l3PO79yn2J+/0nCPPoUNS06bCUsOGEyYCUuWAFdaMqDX7DBhJixZAlxpyYDyT4srzZWWLAHhlZ4ZG0ROtg2hUBjeiQCGvH7SiNkwabw3LGfCXGlzO8c3bG6e+tv4hvmG9VsSywTfcCxpmTHLN8w3bEaP/u/gGzY3T/1tUt3wiKsdxUX50DQNnwZGMRdcvpaAVIYDvn7kPs7C6dkZ+jzj8AcWrhjOsj2Cu/sdMq0WnJ9fwO2bhNf/Tb8WBiZIb9jzpQPlpc+gqhqm54L40DtyReqL8lJ0tjYiLTUFh3+P0NUzjODydwN29J+SGn5TX42aSicSEuLx6/cfvHe5sbL6I6rqQVIiOt42oOKlA3FxCrZ2fqKp7SO2d/f1VRuYIDX8tDAPn9tbYLWkRyVGKK5vbEYr/iQvB5nWDCiKgnD4EhOBebi++gxYud1TUsMRCZXOCjTXvUbKw+QbFamqipXVNbR29eD45PR2qg1MkRuOaHOUlaC2ygl7QW60yhGqF6EQdvYOMLO4hLGpWQMWYnt6J4Zjk0Q7zYZp8xW/nQmLZ0CrgAnT5it+OxMWz4BWAROmzVf8diYsngGtAiZMm6/47UxYPANaBUyYNl/x2/8BvCtgqNy/NWQAAAAASUVORK5CYII="},{author:"kusaki",link:"https://gitee.com/kusaki",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAACqklEQVRoQ+2azWsTQRiHf5uEbFrE1mNTVMQPBP8HxYNH/wHpTQ+Fgl/0UFARFbEIFXsQPw6eelCEnsSLJ6UHQdCLYmmbtmnsh4bapqbZ2a+M7KyNtlsKwszusL57Dm/meZ/fzrwTYtTGOjj+o8cg4JTbJsMpFwwyTIZT1gGKdMqERnDIMBlOWQco0ikTSpsWRZoinbIOKIl0ruM42o48hpHvAvfrYNP9cL8/27F1uT2nUDh4Dxlzr/gc99dgV4bgzA9LbbkWwBFYrwZ77g6cxUdSYYNiiQNHYVdgl2/BWXoqHTZx4AisWwUr34D7bUQJbKLAEVhnCWz2Otzqc2WwiQEL2EPDyOSLAq7pLICV+uH9eKUUNhHgCKxdAStdhrfyWjls7MARWKsENjMQG2yswNxd3hxjNg02dR5ebSwWsxtfEsuxZFfuIl/sbb2z4YvLYM/fhz03mC5gcAe8yWBkdwfzE7jfgJFtD0aAcLOaupCuSP/Rx+Gvf4bzdQjmgdst217tLawvZ8QIGsejPNIhBIdf/wBrsg/NxjjM/ddgFvuATAHgLpzFJ2AzV+LgVT9aCti1d7BKlwSs2Cmzu9B2dAS5zhMi2txbBZu9qnTCinXT2u62tPWICuJuTZxtNUWVbuWR3ul6uDnaPtzqC1iTvapYw3Sp+AfAv9yH24+NItd5Moy234BdvqnkWph4pDcWEDSncPghMmb37+O5DGviHPyf75WYTtxwQGXuG4DZfTHctcHhrb6BNd6j5KjSAjiA/jvaYgpbeCB+CJD9aAO8NdrcrYqjzFt+KZVZG+BotAG//hGNT6elRlsJsFQlkosRsOSGaleODGunRPKCyLDkhmpXjgxrp0Tygsiw5IZqV44Ma6dE8oLIsOSGaleODGunRPKCyLDkhmpX7hfFUiwPmyFfswAAAABJRU5ErkJggg=="},{author:"qd98zhq",link:"https://gitee.com/qd98zhq",photo:"https://portrait.gitee.com/uploads/avatars/user/205/617984_qd98zhq_1600045204.png!avatar200"},{author:"sitax",link:"https://gitee.com/sitax",photo:"https://portrait.gitee.com/uploads/avatars/user/2891/8675744_sitax_1612664137.png!avatar200"},{author:"snowfox",link:"https://gitee.com/thesnow",photo:"https://portrait.gitee.com/uploads/avatars/user/569/1709119_thesnow_1608992211.png!avatar200"},{author:"sourcehome",link:"https://gitee.com/sourcehome",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAADjUlEQVRoQ+1ZyVJaQRQ9gIKMIsggCoIgjrFMJZW/zyqLVGVjVaIlCoJMMggyROYpdVshlhMotHmS7g2L7tfvnHtO3773Ifv67XsP/9GQCcJTrrZQeMoFhlBYKDxlERCWnjJBH9ARCguFpywCwtJTJqhIWsLSwtJTFoE3sbTDboXdaoFWo8aMQgGZTMbC2O120Wy1cFUsIZ5MoVKtcQ8vV8IGvQ7+NTfod9hotztIpNIIR+PDlo41z40wqbmzsQ6dVsMA9no91BtNVKpVEDkSWaNWQ6NRQyGXDxSPJVNcSXMj7Pe6sWy3Mfs2mk1EoglcZLIP1FGplNhe92HBaGBzZPGTUASX+auxlHzqYW6Ev3zcY+rSOY3Ekogmkk8SIDfsbvrZGaeRuczh6CT0fgiTWtt+H1RKJVqtNgKh8FDFfJ5VOB125ojrShU/Dn6+H8JGg56dX7Jrp9PF2XmMJaTnht26iA2vhxGuNxo4DoZRKv+eOGlulv60t4N5g54BrtXrCEaiyOULEyfw0g25EV5dccDjWoH8NgNTlq7VGyiUSsjm8igUyy/FOpH13AgTuk3fGuw2C+S3hcZdxJ1uF/V6A8VyGan0JcrX1xMhNGwTroTp5Q6bFa4VBzTquWex0LlNpjKIJi6GYR5rnjvhPjrzghE2yyLmDTrMqVSD8vI++mKpjJOzCLcy880I3yWmUChgNZtgNhlZ2UnXV7++pnVUW/86PkWn0xlLzcce/ieE7wOxmE3wuJah02rZFBENnceYxSc9JEGYSN2vti7SWVawTHpwIfx5fxdajQbUBEZiiZET0eb6GktyNArFEg4OjyfNl8+/h/u7WzAZ5xnYTC6Po0BwJOBbfi+WrBa2lhqNQPCdKOx1u+BaXmKJqN1u4+w8jmT6+fNIlv6wtcGur5uGY3RnjBTN20VcLE2gqfvp98JEms5kJJ58NPOaFozwuZ2DpEXNw2HgFNVa/SVcRlrLhTC9eclmhdfthHJ2dgCEsi+Vl5VaDb1uDzMzCnbW51R/r6VWu43wCI4Yid0ji7gRpneRct5VJ/S6m+tm2KAmg6yczuaGLX31PFfCfVT0Ec+6aGYWp494/Yaif+eS6tT0J1IZLsXG3ei8CeFXy8HhQUGYQ1AltaVQWFJycAAjFOYQVEltKRSWlBwcwAiFOQRVUlsKhSUlBwcwQmEOQZXUlkJhScnBAYxQmENQJbXlH5Zf8LRFMPwyAAAAAElFTkSuQmCC"},{author:"wnyuc",link:"https://gitee.com/wnyuc",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAEgElEQVRoQ+1Za2hURxg9d5/ZbLLbxM3GmERFi8YQgqUGUTQSqogQRRELIq2IoBBaLFgKisVKpS1VQUF8oYj2h9BiFY2IqIjPtqj4QCRqK1FjzKsbE7N57OPeMjfMOu7du9ndO6buOvdPyGa+ued85zvzfbORpux5pOA9eiRBOMPVFgpnuMAQCguFMywDoqQzTFANHaGwUDjDMiBKOsMEFYeWKGlR0hmWAVHSyQiabTXh4KISjMuzISwrOHKvCzv+6NDdorzAjp/mjERRrlVd4+sLY/PFNlx+4teNWV2Vj+WT82A1SXjcGcCKY03oDcrJwHxjrWGFt80tQvVYp7rppUY/1p55oQvm0wo3vpg6Ag6LSV0TlBUcut2Jvdd9ujE/zB6JOeNz1L+f/acH68+1pEyWBBomzCrQ+DKA5b/rK/DtLC/ml7kgMZCHStKRJaPxYb4toeQkkgnDhGeOcWLDLC/yHeYhS/SXxaUo89jR7g+p2AqcFjzrCuKr08142hXU4E1m70TIclGYbEJVCIQVHLzVif03tSXKgr/R3KfimzLKAX9AxtZrHah/0K3B/PnkPKz6OB92i4SGjgF8dvRZorx01xlWmOzM+qz+4StsutCqeSEtfbMk4ej9LvXvi8vd6k/y+89X2jUxG2sKUTshF+Q/BScbuvH9xbZ3gzCrxN3Wfqw83qQBRg83qihZ8PV0D5w2E/RiqAX6QjJ2/vUvfr03mCgjDxeFp5Zk47saLzzZFrT5Q9hwvhW3XgyWLXlGu63YPm8USt3WiGfJ5/Qz4umNF1px/fnrmKpiBzbVFKo+j7VnqqS5ECYvp2qQHrntWgdONLz2ZO1EV0RN9lSmqg+EFOy76cPh250RHmwL06uAVEhzI0xbjqJoPfnNjALVr2Hlzb7LtrToHru+2ouFk1yItV8qRGkMN8Ksj/9s6sWXp5ojuA4sLEFlYZambbEnd/QURWPineKpEOdGmPUc21s/KnJg8yeF8Dot+NsXwNLfnkZwsqNp90AYP15qx7nHPWBH0Hh9+n8lTF5OVWHBs16MNRrSlsbO4gvKXFg73QOSkOhqSYUkG8NNYbIp9V2QGUCotwMxDiYSw1qBHmjU84oy9IUk2QRwJRxLTXacjG49BCxrBTqLb51bpH7OVkqyxPTWcyXMeo+Mgvtu+CJzdrzWwh5qW662o65qhNqzeVwHo4lzJUw23z2/WJ2RybBQ/+AVllV+AKt5cJyMNT6SGFrCxApkXe3EXLjsZi7XwbdOmILvD8m409KPaaXZcS8IBBC1QpbFhLst/Sj32iHL0AwjPMqau8J0qrJZJPQGZLizzHGvgIQEa4WegIwcm2nIq2aq5LkTjv4ahwAjM3Jd/fO4GHfVFqsHFX14XQffekmTF7DgE/mui8SsmebB0go3zCaJ63VwWAiz4BNtLbPH5WBddYF6WPG8Dg4L4VT9NRxx3D08HKCNvEMQNpK9dIgVCqeDSkYwCoWNZC8dYoXC6aCSEYxCYSPZS4dYoXA6qGQEo1DYSPbSIVYonA4qGcH4H5hd4UNLnYN8AAAAAElFTkSuQmCC"},{author:"zhoujiawu",link:"https://gitee.com/jgszjw",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAACgElEQVRoQ+2YS0hUYRTH/7fRScxqgtR0QLQnaRhMkSg+JsQWRS9mU27EVSG4UFpELVzpKmjRxtqUi0QxKRKHWohPBmoxlJhgaRNBKpFYKJPvG/eCMCjFN/K9up67Pt+55///nfPd77tG2pNGE9voMUiww2kTYYcDBhEmwg5zgFraYUA3ySHCRNhhDlBLOwwobVrU0tTSDnNAWEvfL7qAyiMnt2TX/PISbr95hY6JkS2t/9ciEszL0muH81F8IJspnWEAhelZ8O7aY8fPLv5GfSiI4NcxpvXxBAkjHE8RD4ovInDwBFyGgcXVFTSPvkVTuC+eFMyxygXf8flxM/cMdroSYP0vHpyKoLq3E9Yci3iUCi73HsK9ovPITN5taxud/Y4bAy/w8ecPEVrtnMoEH/Xsx8PSK8jdl2YXMh2dR32oGz3fJoSJVSr4UdlVXMo+DgMQPrexDiohHDu3q6aJzs8jqB3qEkp2Pbl0wdZhpOF0OTzuJLuGdzNTCLx+KmyT2uiiVMEb53YyOodboaDwuVXS0imJbjw+G0BJRo49t7+WFtAY7kPLWFhKK0tvaWtua/IKkLjDBWtu28eHURfqlipW2i5ddcyHuz4/9rqTpBwulFwe1l96KtWL5tLLyErxSDtcKBOsy9xK27RkXgpYNwNhn6XYuV0zTTyPfEDN4EvWuoTFCRGs4lLA6pAQwe0V1+HPzLFriK4so38yEvdJamj6C9rGh1l1MMcJEfzsXCVKMtj+dvyt0tZP74V8p0kwc2/8p4FCCOvsBQnWmQ6P2ogwDxd1zkGEdabDozYizMNFnXMQYZ3p8KiNCPNwUeccRFhnOjxqI8I8XNQ5x7Yj/AezvE3kLX/VvwAAAABJRU5ErkJggg=="},{author:"zxyyyg",link:"https://gitee.com/zxyyyg",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAACgElEQVRoQ+2YS0hUYRTH/7fRScxqgtR0QLQnaRhMkSg+JsQWRS9mU27EVSG4UFpELVzpKmjRxtqUi0QxKRKHWohPBmoxlJhgaRNBKpFYKJPvG/eCMCjFN/K9up67Pt+55///nfPd77tG2pNGE9voMUiww2kTYYcDBhEmwg5zgFraYUA3ySHCRNhhDlBLOwwobVrU0tTSDnNAWEvfL7qAyiMnt2TX/PISbr95hY6JkS2t/9ciEszL0muH81F8IJspnWEAhelZ8O7aY8fPLv5GfSiI4NcxpvXxBAkjHE8RD4ovInDwBFyGgcXVFTSPvkVTuC+eFMyxygXf8flxM/cMdroSYP0vHpyKoLq3E9Yci3iUCi73HsK9ovPITN5taxud/Y4bAy/w8ecPEVrtnMoEH/Xsx8PSK8jdl2YXMh2dR32oGz3fJoSJVSr4UdlVXMo+DgMQPrexDiohHDu3q6aJzs8jqB3qEkp2Pbl0wdZhpOF0OTzuJLuGdzNTCLx+KmyT2uiiVMEb53YyOodboaDwuVXS0imJbjw+G0BJRo49t7+WFtAY7kPLWFhKK0tvaWtua/IKkLjDBWtu28eHURfqlipW2i5ddcyHuz4/9rqTpBwulFwe1l96KtWL5tLLyErxSDtcKBOsy9xK27RkXgpYNwNhn6XYuV0zTTyPfEDN4EvWuoTFCRGs4lLA6pAQwe0V1+HPzLFriK4so38yEvdJamj6C9rGh1l1MMcJEfzsXCVKMtj+dvyt0tZP74V8p0kwc2/8p4FCCOvsBQnWmQ6P2ogwDxd1zkGEdabDozYizMNFnXMQYZ3p8KiNCPNwUeccRFhnOjxqI8I8XNQ5x7Yj/AezvE3kLX/VvwAAAABJRU5ErkJggg=="},{author:"\u4e09\u91cd\u95e8",link:"https://gitee.com/zero530",photo:"https://portrait.gitee.com/uploads/avatars/user/574/1722306_zero530_1578958528.png!avatar200"},{author:"\u5353\u601d\u79d1\u6280",link:"https://gitee.com/joricetech",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAACmElEQVRoQ2NUX5fwn2EEAcZRDw/z2B6N4WEewQyjMTwaw8MsBEaT9DCLUAzvjMbwaAwPsxAYTdLDLEJHCy26J+nVDnUMSrySDPc+P2cIPdBE9wRFdw9vcWllUOGVYrjz+RmDz57qkePhL3++Mzz9+oZoDz/6+ooh9+QUotXjUjhgMUyqy6mVIgbMw69+fGA4/uoa0f5+8eM9Q//VNUSrH3QxTK0YIzUEqBrDEpyCDMbCagwsTMw43ZGl7scgzyPO8PDLS4ZpNzfhde/f//8Ybnx4BC7gqAWo6mF/OSuGOv1YBm4WDqq47/e/Pwyzb21jmHR9PVXMAxlCEw9zsbAz/Pz7mwEUQ+QAZkYmBnZmVoY///4ODQ+zMbFQ5NA8zUCGVDUvcFgNiRgecR7mYGZjOPXmBsOr7x/ISdEMYpwCDGYiGgz//v8bGjE84gotTmZ2hiffXjN8//OTrBjmZGFnkOESZfj7f7TQIisAkTXRpFoacYXWiEvSI67QAiXpNQ8PM1x4dwcjzzlKGDB4SJsyfPvzk2Hu7e3gwg0dGAipMITI2w7+hges88DIyIiz0d9ilMgQIm/H8PXPD4ami4sZNj46huFh0IiIhoAcWHxQdx6IKUKJ8TAx5pCrhqJSOlLRkSFEwY6BhRF3dxDdYXxs3AySnELgjgFo2AbUIyIF7H52lmHKjY2kaEFRS5GHYY18ViYWsh1AqsY1Dw8x1JybT6o2uHqKPAzLa6DuHLGAmEILn1mg4d3L7+8Tax2GOoo8TI6tQzoPj3qYiBAYjWEs9TAR4Ua2ktE8THbQDRGNdI/hgQ6XUQ8PdAzQ2v7RGKZ1CA+0+aMxPNAxQGv7R2OY1iE80OaPxvBAxwCt7R+NYVqH8ECbP+JiGACoDs58DBFpzwAAAABJRU5ErkJggg=="},{author:"\u537f\u8317",link:"https://gitee.com/didsent",photo:"https://portrait.gitee.com/uploads/avatars/user/2861/8583669_didsent_1610900095.png!avatar200"},{author:"\u5415\u4f73\u80fd",link:"https://gitee.com/lv-canon",photo:"https://portrait.gitee.com/uploads/avatars/user/2897/8693867_lv-canon_1613531760.png!avatar200"},{author:"\u5475\u5475",link:"https://gitee.com/mfk23881",photo:"https://portrait.gitee.com/uploads/avatars/user/2893/8679972_mfk23881_1612761436.png!avatar200"},{author:"\u591c\u4e0d\u5f52\u5bbf",link:"https://gitee.com/ucx15934",photo:"https://portrait.gitee.com/uploads/avatars/user/2894/8682053_ucx15934_1612833258.png!avatar200",extra:"\u5fae\u8f6f MVP"},{author:"\u5c31\u662f\u90a3\u4e2a\u4ee3\u7801\u72d7",link:"https://gitee.com/itgeorge",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAGBElEQVRoQ+2Ze2xTVRzHv313Yw9atnVtYR0bIMjDEIFEEY0TBYwwIGQEFsA5JEwQFZVtxBAYKEN5yBgPA1NEHhGIPAwgCATQRMMMRh4aeY6tY7Sz21iH67qt15yz3GvbtbDu3rVs3PNfb+65v/P5fX/nd37nV8mlKWDwGA2JCNzF1RYV7uICQ1RYVLiLeUAM6S4maCscUWFR4S7mATGku5igwUta0rBIyMKj0WgzP1I+7JCQNszZguhn0+C8ewO3lqXAVW/3C91twCgY5m6FQmNAzdkduFM0v0Md1CHAPedtR/cXZoBxNcN2bAPufv2+f+BBKej59g4otEZUny5C+ebZUPV8EuH9R6L65FbB4TsEmCzYtOgglPq+cFpvwbx+Ov69+qvPxXdjgTV6VB3fDNvxTej17h6oEwbj/l8/wbIr2+/c9nijQ4DJQnTp+dCOfhP2C0dh2Z3rdy+zwPKoWFQeXIW6349Cn1GAsORhgERC55H5Ned2todP2KQVNzUPsROzIZErA15MY1U5zBtm0nkkpFlg67dLQBKeMasIUSMmQSKT0xxgO1YAy56PArbjPYGXwkIAk71rmL0REoWKKkyA2aGbtgI9xi2ARK5A9akiQRIaL2De7gbQ/fkZfoHJ97WvZEERmwDLrlwhzIW+4/EwYEEo3T4iiMIxqYugThjUprUxzU1w3LyA6FHpkKrC6f5XxidDIpXRjO5y3Pf7HaflBko/m9wmO/5eEgQ4cclJRAx+qU0LYZqcqDn3DaKfSaPJKZDRYP4T194bGMgUYbM0+zUW2FVfC6e1xOeCiIIKXRJVkhQU6qSnPRQmk0hlptAaIA2LQlNtJZqqKzy+9cgp/CAFvM9bNhuT7RCXthRobsKdbfMQOymHVlp1l06hJG80LzV9TRY0pNsDzB5tTGPD4wFMztqYCR+i2W6DuXAW9Bmfdx6FnRXXYN2/3GcYyiI0iJ2UC1mE1qPAMGZtgyYlk5aQpOYmN61OE9Jt2XAkS7tXVGzCY7dD33VXOg8wOWMZZz3llijDWupg8ru5iV4EyDO4mjlgciwlrzwPlbE/6v44gZIVY9ApgNnCo+Vms5gCswvn7rj6ftCOfYseOfbiQ6gtPoTIYeNhnLsN8qgYejUkl/9OAUwAe4ydD7nWgKrjm+h+dAe+98s+6KYuh8N8BeUbM/6/HKTnI2b8QpAwt+zMge2Hws4BTEIzadlZqHsPRf31YtzIHeEBLFGo0f25aXA1NqByXx4qD+ZTaHb/OitLULY2jc71p7DaNKSl9HxAu6gtOUSQc7jHqwugm/4JrYv/+X4tLLtyPIDJs4SFe6HqNRCNtjKYC1+HVKGCcd5XkEfrYL9wBLdXvuaxFbwLD+IIudaI2vMHPKKkLZDu7/AGJuomLj5Ge1Du7RzvPcw6RaoMR93FH+G03IT25Tk0nK1E9QMrHwosxHHFG5hTV6FG9Ykt3CXdG5jQmLIPI3zAKNSc2Y7I4alQxvVGw52/UZo/AQ0VV/0Cq/T9YFp8BMr4PrD/dhi3V6UGKiz3Pi9gspBeC/dCnfhUq2adL2ClLokajpuypKWryTAeTnLP7u4hzTX63Dqb7SXmBRw/aw1twQBMq3asL2CySE3KG4ifuRqybhqQyuz2pxNBig52+EpaZI4+Yz3NEd5toEDBeQETY6SJF/7ESJQVpHMZlLZpcw5DqUvmes3kXfKctmBNQ8A0OloWv3epx5r7rLlIW7TOu9dh3jCDHnGGOV8gcug4uBx2VHz5DqrPbA+UU5iQdrdqyj0C8i8CHVIZpKSqAsMVFCS5JXzwHdcoICFbunpyq2PGlE0Kkgk+gRyll1C2egq339tDzVth1qghsxDaMVmARMqtg5yv5Zsycf/yadDkNu1jSNUR3NFEnnsPoqR+9kYoYxNpOUoHw8BpvUmjgW9/WjDgqOGpNPOS+pkMR+ll3Pt5t0cDngBrXsyAdX8eqk5saY9AvOcIBsx7JUH6gAgcJEeHzIyocMhcHyTDosJBcnTIzIgKh8z1QTIsKhwkR4fMjKhwyFwfJMOiwkFydMjM/AeWN15SG0VzBAAAAABJRU5ErkJggg=="},{author:"\u5fc3\u82e5\u5411\u9633",link:"https://gitee.com/mabo192",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAESElEQVRoQ+2ZbYhUVRjH//f9znVaHd3SfbdWcZ0U2SCoT36I0KBI6kNKSFJZWpIvYFZUbIX1RawQKaJUotgkPxSCIn1SJJPEsFJ33V3ZtpwdF3Xdt7lz79yXOCccdozZ2Z1z7oyO936duWee3/N77nmec0cYOj7dxx10CSFwhdsODVe4YISGQ8MVloGwpCtM6P9wQsOh4QrLQFjSFSb01ti0xMg8eGZ3WXJb0pJW6zZAnfMiBFGD2f0anMGfSg5dUmD93u1Qa14CBBnOtSNInV9Z2cCklI2WryEacfjuMKze92AnvyopdEkNEzKtfjO0hm2AqMMd/Q2pP5+A746WDLrkwIIUhbHoIKRoK+DbsP75BFbfh7c/sKjWQqp6GBAV+FYCztCxLJRasw5a07sQJAOe2YNUx7PwUh0lgQ7MsHLPSuj37QAx6lw/itTZJ7NA1HL8AKSqhwDfhZ3cg/TFrZULTMhyLFt/w+x8Hu7Ir4FDczNMSpjsvDc2oIkMEypqefEhSEYcztBxWH3bs8DkXrX2FQhSFcwLa7kmghuwsbAdcuxReGYX0r1tEJRY3pK+oVGe8QjgWxR4/BVZsBdK9QoAPjID+2F2redmnhtwtPVn2l89OwGz8wWIelNB4HwU8qzHEWn+GIJyN3y7H+aFl3M2PRZ6LsDyzOWIzNtFA3RHTmLs92UoVNKFgg7KMhdgtW4j9MY36TCRGWinJcgKrFQ/Db15BwQ5xtUyF+DIgj1Qqp8CvDTSfR/BvvQpMzCpACO+H3JsGQAPdnIf0j1bChVGwc+5AE9bchRSdEmOCVbDtHXNfg7a3PchyNPhcWpdzMA5z+/oGYydWUqzzAOYrDNt8eH/JjZOAwozsNb4FrT6TYCgIHP5W5jdG7gCa/VboDW8TvcH0vJS51cxvTxgBjbu/xHyjKXw3RSsv9pg93/BFZgeKRe2Q4zMB/wMrEu76e8UezEBS3c9CLJhiVoDPKsPZscauKOnuQKTxfTmnVDnrCHzGdzhkxj7Y3mxvGz/Ho4vN2fwCFLnnskGwvIMG/HvIag1cK4cgN3/JX2GtaZ34Fw9CDvxGdP5mclwdjggpXbTuZYFONr6C0SjBb4ziHTPZmSu/FC00ZtvZAImi5ExUJn5GO2T4087xQJL0QcQadkHUWvMjqnu8IlbBzhfJMUC52tzvIiZDfMGJm81taY2+jbEuXaYtiGeV3DA1SugkxOPHJv0lETOyJGWb2ibo4NG4nOke9/mycu2S08USU7/JCdbOwl35FTeHZbAitFWiFotbT9+ZgBm16vcX9YHZpgkQ2t8A1rdJjolTeny0rASZMD4YEq3TebLgQLTmXr2aqg1ayHqcwGIE8fkO/DMTtjJvcgMfDeZ+Kf8ncCBpxxRwDeEwAEnuOzLh4bLriDgAELDASe47MuHhsuuIOAAQsMBJ7jsy4eGy64g4ABCwwEnuOzL33GG/wUT+oIP6lWw9QAAAABJRU5ErkJggg=="},{author:"\u6587\u5e7f",link:"https://gitee.com/warren9527",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAFIklEQVRoQ+2YeVDVVRTHv4/tsYTsKCj7LiSBiZDkVo6JFpOBLVJCmUUlTWSjNeU4lCVTWo1jaGbogEmlzWAC2SJFJXvFlvCQEHgZq2zCA4FHc371GB6ib/nx+73p9fu9/+Dee87nfM+959wr8vsifhz/o08kAOu52oLCei4wBIUFhfUsAkJK65mg1+EICgsK61kEhJTWM0GFQ4vXlPa2dMYTvmuwdPYCnG4pRGpVFu8JxSvwo16rkBz4AMwMxWgf6sGrv6SjoK2SV2hegYksLeJ5LJ8TzEB+31qBxML39Rt4lfNC7LrtMdiJZ0E2Nox9NaeQ0fANb9C8K0xkexc9DQIv65TgYN2XKOms/W8AP+W3Dgneq2FsYKSRwwYiEeg3Ni7XaN7g6BD2VGUhR1qs0bzJg1kpnBRwP570jdIYWFtvB0aHkFKRgezm89ouwe7Fg8qMv7UrDEUGSg486L4coXY+6BzqxSFJDvpGBtRy0F5shS2+a2FlYgFJnxRH6vOU5o3Kx1DeJUGrrFut9aYbxErhG1lNCdmEWPdlkI1ew+7K4zjV9KNaDm72icJzAdEwNTRBrrQEyaVpas3TZBAnwBs978K2oFiIDUxwovEcXq/IVMun3aGPY71bJEbkYzhUdwYHarPVmqfJIE6Ab7XxwHthz2CuuT1+72nC+vxdKn2yMDJFxp07MN/aDV3DfXi5/AgnTQknwET3QXgSVjqFMPs3pSITZ1qKbgq9ziUcO4PjMMvYAmVdEsQVvKUySNoM4Az4Ec+V2Ba4AWZG/+zHF0sP3tQ/qs1R88IwJpcj/eJZ7K35XBselXM4A56com2ybmwvP4yijgvTOhRs64V3FyXC2dwOlwe78EJpGiquNKh0XpsBnAGTM4o6bSgyRI60CC+VfTitj68Fx+EhjxVMM3K65Tx2lH+kDYtaczgFJpWPRW5HkI07s5dTqz69rkTRVfGN0AQ4mlpDVSaoRaRiEKfAZPthjxVIDoyFpbEZ6npbmL18sf8y4xYF5EB4EsIdAkBNRcYf33J+R+YcmMDevn0L1s4Lh0gEFLZfwNbi/aA2cc/CzbjXJYLp1Kq7L2HTT6nM37n8eAGmFpROYT8rF+bCkCstRsdQL6hBERsaM63izl+PclJ3pwaPF2AySns1JSQec8xsME6/cYBuTX0jg9hXcxJZjflcCjuxNm/AZJEUTQ6MYfYufSPyURxr+BrvVHNTc6eLIG/AdHg96x8Ne1MrJT+6r13Fx/V5OCzJ1Q+FI2cHIXl+DAKsXZk6Sx9dG+lTwFOKSwc68UnjOaTXf8UpOGcKR7vegTjPu5nLgOK+TAdWcUct3qw8zkC9smAjFjv4T/yfwK8M9yO/9TccrT87Ub5mMgIzCkwHEj3FrpkbBidz2wlFCaT5ajuTtiebCpT8j3FbyryauN7iODFesb8b+v9C3p8lyG7+mdWlf7JB1sAEGe26hIH0snRSeu4h0JaBDpxozFeZqgk+9zBNiouFgxI4OUuZ0TzQzjz6UcDY9NmsgOnEjfdeDZMpj3jkIHVVVGo+u/SDRhm5wX0Z81oyeSsoFpjaqWm08L+DWQFTedm/eCsiHAMYVfpHZCjsqEFmw3esn17D7P0R474USxwDYSu2RJusZ0aaE1bAFDTqohL970N1dyOjJhetIT0O0MHH5rVSkQ2sgbVJK13OEYB1GX0+bAsK8xFlXdoQFNZl9PmwLSjMR5R1aUNQWJfR58O2oDAfUdalDUFhXUafD9t/AxgYN4u7xFR/AAAAAElFTkSuQmCC"},{author:"\u65b0\u65e0\u6b62\u7ade",link:"https://gitee.com/huiwei13",photo:"https://portrait.gitee.com/uploads/avatars/user/114/343543_huiwei13_1607412231.png!avatar200"},{author:"JsonLei",link:"https://gitee.com/jsonlei",photo:"https://portrait.gitee.com/uploads/avatars/user/175/526488_jsonlei_1601085009.png!avatar200"},{author:"\u6728\u6728Woody",link:"https://gitee.com/lkicesky",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAADsklEQVRoQ+2YyU/TQRTHvz8WRRZBdiibLYuIBcJmIFCJ4WKIejAa9GJMDOHixZMH/wVN1ING1HhEJTGEaExEZdUoIGXfaglKAVGWyFZLac2MASkWWvh1fg1l5to3783nfd+beb8K5edfmrGLlsCBXVxtrrCLCwyuMFfYxTLAS9rFBP0PhyvMFXaxDPCSdjFB+aUleUmnn1ZAWXyQZr7zxRDUVV8kLSrJgTPPJiDtpJxCtldr0fpskAOzzABXmGV2iW9e0juthxNVMkSmBNldGN4HvBCeHEjtx3unsDCtt3vvaPckBup1dttbMxTdwwWlSiQVRok6hL2b+2tH0HC/015zq3YcWFT6bGw+VpaK+IJICIJALc0mM3prvuL94x6WYS18i1bY3pMqciOQdykFe309LbbMT+pRd68DpD+lWJIAe3p5oPh6DoLl/pidWIBPoBdlm5/Swy/EG9qPY3h7Wy0FrzR/06pKlUhQyWBYMGLo0zjIzU7WYIMOcTnhcPdwQ/OTfnS/GmYOzVzh5KIYZJckgqg8WK/D/LTeYpb2j/CB/GgEZn8u4t0dNSY0M0yhmQJHp4cg//IRWsLTI3N4c6sNirwIC+CxnimQy4zY6LonUXPzM5b0RmbQzIADZL44fiUdgTF+MCwsobligN7I1kbLjDMJSDslh5u7AE3TKOruduwsYFK+RVczIEsJgtlstoDYaJY+cS0bMmUwTMsm2tsN5V1MoB2uMIElykalBUNwE+hz8/rGvzLdCHhtRZiM7KAdCkxgVWVKxGWFUVjy7DQ+6MI39Y9VtTb7Wlrb86ZlM7QfxtD0qNuhPe0wYHLpqMpSaRlDAH7PLaHl6d++XbtsfR6u3Op7vD0BMzDWN0WhZ3RzDilxhwCHxgcg9+JhhMj9KezaS2r9KW0BE3sLaIAOK62Vg9A0joqGFg0cnx+J7JKk1emJDBfkj7mOaq3Vw9kDvAKddS5xdRRdXjLRoaXpobgSFwWcc+EQkoui6VBBFlGWKLHZxGQvMPG3PplGwzLaq7Roe67ZttKigBMLo6i6+/bvweIvA5or+jFQO7LpYbYCTByttAt5zzWN4p8rUcArpafIi0Rr5QDI1GRrbRWY+CMVFBTnh/G+aVvubf4uGthmhHUG2wHeaozN7DmwI7NpzdeuUzg2MwyxWaE0F8MtExhu/c46xxb+JS9pSemsBOPAzlaAdXyuMOsMO9s/V9jZCrCOzxVmnWFn++cKO1sB1vG5wqwz7Gz/XGFnK8A6/h+uii/35Wl8zwAAAABJRU5ErkJggg=="},{author:"\u674e\u6c38\u6ce2",link:"https://gitee.com/softbuilder",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAEdElEQVRoQ+2aa2ibVRjH/28uTdq0uadr2q6j2tZ6K1Nqq6sDnY6Nors43GSgH6bODVRQ2BcFPygKXpg3tDpxAwVhjilbx9axDR1SXWexMKidq0xa03YxF5umiclyeeUcaXAuS07ek2QmOwfyJXmec57f83/e55z3EKlj+DkZ19CQBHCZqy0ULnOBIRQWCpdZBkRJl5mgl+EIhYXCZZYBUdJlJqhoWkUv6dXW27CjcS3N/JuuAxjwjxS1qIoO/ICtEy8s3kAhX/t9Pw75hgVwITPArfASvQObHD0wqauY4qxS69BjvJHaDs6NIZyIMvkFEmHs9QxiIuJhsr+SETdwV00rXm3ejFqtiSuQbM5/xAJ48bcvcDo4ns004+/cwDcbmvBsfS+s2uqMC2kkNRoqbNCpNJfYBeJhEBgZme8S/bF5vDd9GKOhyasLzLL6veZb8HzjGjTp7IjJCaghUbcEZGgkFc6Gp/CW6yCGg7+yTMdlw61wttV3LF6HdbYuVKv18Mfnsd9zCptrl1O3r7ynsMZ2B0yaKswnIuj3/Yj3pw8jxPhcZ1s73e8FA15hvhVbnSvRXtUACRImo17sdB2EQa2/ZFsKJSIp9UlZu6J+fHrhOL72DinhyeqTd+BlxnY84bwPSw3NUEsqJOQkfpj7BS9P7oP74izS7cOLKsx4qelh3GW8gfoQ8PN/uWlXJp98jrwBb7DfiY2OHrRVOqGSVDRGUsK7L5zA5+6TqZgzHTzW27vxeN39aNRZaVUQcE9sDoOBs/jM/S3OR9zc7FzAnTUteMjeTZWxaAw0SDLI83h89gw+nB6gqv57ZDtpGdQ6bHeuxoO2Tpg1hpRrUk5S+CN/juBtV79icC7gZxp68WjtPamthjSbk4FRfDJz7IpqdBiWYK29iwZ8wHsaZ0ITaYMn4ETtXuvtqKsw02SSRL47dQhfer6/OsAkqHeu34KWSieO+kewx/0N2irrabPSq7SKgyKOJBGvTOyjc5AGuNGxDFMX/anvlE7OpXC6RRdKliSDZwwFx7H1XB/PFGl98w683HRTzgqTcrVqqmHT1qSCJJ192/jH/3/gXCPcUrcCmxx3Y1GFiT6ns/EQjvh/oo/HfxternOns8+7wqxBpQPt9w2jb2agNE9amcA/aHkSPab2lKLFAF2Ih0vhhS1GL+XWkckbVrO+Ft5YEEPBc5Bltn9dRORYxq2Mpbq4gPPVkVkCJTZkn+e9FuICVtKRSeAOrREWTTXIiwPZW1lHJBnDrplj+C7wM6vLZXZcwEpX3dW2Hd01rfQ0tn70daXTKPITwIrSlqPTNaUwOXLubnuaXgyUXUl/1PoUfZnwxYOpGjCo9KjXWegePBZ24ZGxnTnWB595QZ/hN657DKssS9NGGE3Gscd9An3TR/kIcvQuKPA25yqstHTArjVCK/1zPZtAEq6oj56XyS1GsUdBgYsNw7KeAGbJUinbCIVLWT2W2IXCLFkqZRuhcCmrxxK7UJglS6VsIxQuZfVYYhcKs2SplG3+BnvhGjPFQ5ViAAAAAElFTkSuQmCC"},{author:"\u6d41\u901d\u7684\u4ef2\u590f\u591c\u4e4b\u68a6",link:"https://gitee.com/richieofdear",photo:"https://portrait.gitee.com/uploads/avatars/user/775/2325174_richieofdear_1615363157.png!avatar200"},{author:"\u6d6e\u4e91\u5f02\u68a6",link:"https://gitee.com/chendx136",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAFzElEQVRoQ+1YbVCUVRR+dpFdFARkBQIRJBw1RCJFGT8SHRMaI7Uk8wsNBl1FRfmqQQXFAkSBUUTQRIRRJBxZhgktU0rTJIiSSEtN0yEQwUFD+QjWlebeejeIdUHe27Ru7/sHdu695z7Pec4999wjcpk6twP/o08kENZztQWF9VxgCAoLCuuZB4SQ1jNBu9ERFBYU1jMPCCGtZ4IKSYtJSNvZWlNPVt+u0/kA4U14isdYRIWthJFEgrSDHyGv8FOtpI0H9Mek8W4wkkrV85xHOsHM1IT+tpQNgoW5GcRiMWQW5pAYGsLQsB9aW9uwNSkdn525wMupvAlHBgfirdneFFRbWzvyi04hPiWDgkqJi8T0yRN4AeQWtyuV2H/oGPZmH+VljzdhsnuI3A+L5/lAKpVApVKh+FwpohNSsW6FH96e8yrEYpFGkMRBj1QqOkbW3W24T/8+7uhATW0dWlp/h1L5CJevXkdTcyuuXr+JG7d+/e8JEwQBC9/Acj9fmBgPQEdHB0rKv8fODw/B0d4OBmIxBXmzqhqXrlyn/5PQ9l8wFw2/NSJXcUIjiYjV/vCePhkfnzyDjJx8NLe08iJLFjNRmEMxf443ggOXwEgqQVZeIQ7mFiA4cDGmTZmAzBxFl/Odk54AV+cRVMl3tyaj8sdrXciQse3RoRhiY40HD5uQmJaFghPFukWYoPHx8oSpiQmOKI7DadhQ7IqNhIOdTTdii+e9hnUriHOkNBGFb0nsQiZxSzi8pk2i0VJ06iw2xqXwJstcYU2IOhM7W1KOtZFx6mkZyTHwGOeKxgdNiN25D58Un6dj3Jr+Rka4duMWjQC+Z5fblFdIk3NIQpZk0KT07CcqsDt+AzwnuqO9XYn07DwcyFHQub4+MxG6ahkGmhij9NtKBIZu7hIVD5uaaR44WniSibq8FY7dEAyfmZ4UTNnFH7At5YBGJTzGjkHcxnWwlFmg4tJVLF0TqSaQlrAJZqYD6R3+VdlF/FuhzERhcl5D5EthNdiC2quqqaXJ5YvzZd0UCfJfQDMzIaYt23JR4+hgh5CoBCaZuTMYXiFNDI13c8GG9ctpKIpEIppRSchm5hbQfUg4kzl8vptVNVgoj+BjQr2WN2FiiZCNDluJl8a8QA2XfleJ9Zv+VIdLTHzQkoQ1d1kwHxNsCRNrJBQTokIxWGZOrxAuq5KCZPjz9k8FVjbIHONcnWnlRj5SrOiUwk/FRstka0sZtkQEYaL7izAwMEBbuxKfnytFUnoW6u42MNmGSUizQBKw6E0smz8bFoPMaLFRXVuHjMP5UBw/zcI8+5Du65uYlJBrAxfRxMapevpsCd5P3ss8Q/O+hzu7/oPIYMya8TJ++vkXWuhrupo0SbUmYCGIuv36GaCq5g4N396u7Yv0zEL60J54uLmMQlNzC7anZmKE0zD1o14bMCuZBdzdRtMp5RWXUd9wTyuPuvoG7Np/uC9c6RomhF1GDUdSTARsn7OixceO1IOICpPDarCsz8CetJDvFcWE8KxXpiIqVE7fwqQmTsvKQ0xEECz/qsC0sSZvZe76IQ0B1ePHWp3EtwhhQjg86B0s8fWhQA8fK6LlZW8/7gyT+ZlHFEjNzO3t0j7NY0KY612Rlsy2lIyneqg/c4QdhtqCvHjsh9jg9p16hG3eoW7j9EaCZ44w6UpEh62iGbni0hX4rf776aeXhLnzS/rIpEUbk5jeG57qOVGhK+H7uhftVj4TZzh7dyzGujrTnjR563LPwn+yJnNI5ialI9eOlUok9CojPW3S5mHRaO/J27ySFtfJIPftvfuN2Lx9D85c+EbjnuQ1lbtvBxzth3Qb59q68vCYnvDyHudFmOxOSHtNmwzTgcaIiEnSCmjre2sweqRTlzlNLa0o/vJrehxY9J178ghvwj1toGvjAmFdU4Q1HkFh1h7VNXuCwrqmCGs8gsKsPapr9gSFdU0R1ngEhVl7VNfsCQrrmiKs8fwBquKMt/orq2EAAAAASUVORK5CYII="},{author:"\u738b\u7801\u4e91",link:"https://gitee.com/wangmayun2",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAByklEQVRoQ+1WPU8CQRR8dwhGQkvQIASlMCbaoXYk8gP8d/4E/QEWlqh0Ir2xIBLiRQ8oyRlBDnMXC9TE/XhryJ6z9cy+92bmbdY5PTuf0z86DgZOuNtwOOEGExyGwwlTAJFOmKE/xoHDcDhhCiDSCTMUjxYijUhLKFAsFCiXXZNA6kPGwSt5vq9/wSfTSKRPGg3aXC+wm/ntgqcXny6aTXYNDMyWUHDB8dEh7VarMeq+26Wr2/Zfl/xyvxGHVTrGwHBYJS/qWERaXTM1BnYYO6yWGFW0sR0+2N+j7VJJWH81k6FcNhvjxkFAb5OJkOOPRnTdvhPiZADGBl7cTZnCKhhT38qoprGB67Ua7WxVhHM4rksrqVSMe5/NaB6GQo43GNDlTUuIkwEYG1imWITBK41XWjYrejhEWk83eRZ2GDssnxYdJHZYRbXoi7iRz5PrOtK0SrFI1XI5xnf7fep5njQ3DOf0PBzGX1Ldw3I4+llFP6x0Oq1bX4k3nU6p1enQw2NPibcIxsAq0ulEWuX+79ilR5rT/LK4rEgvq2lOXQzMUc8GLhy2wSVOj3CYo54NXDhsg0ucHuEwRz0buHDYBpc4PcJhjno2cD8AXstmkMxShZUAAAAASUVORK5CYII="},{author:"\u7530\u601d\u51ef",link:"https://gitee.com/tian-sikai",photo:"https://portrait.gitee.com/uploads/avatars/user/2900/8702061_tian-sikai_1613787170.png!avatar200"},{author:"\u79e6\u98de\u5b87",link:"https://gitee.com/qin-feiyu",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAFS0lEQVRoQ+1Ya0yTVxh+2tIbBUqp3MqAcQ2Kug25ZHNxRDJxsA0J2/ixmIyYEM0yli1xy4yJLku2GDMTt8RsZhdj4hxZFBy6OK9MZQFlMQ5Exxwo5VpbaOXW0tIu52xtFFr48Dt0Xf3Ov/Z7z3ve533e2zmila3vuPAILZEAOMjZFhgOcoIhMCwwHGQeEEI6yAidBUdgWGA4yDwghHSQESoULb+H9IvaXGxLrIBCLMUhwwV82vujX4PK74Df1K1HVVwRXHDhq4Ez+HLg1P8PcH54BmJkak6Gr1EvwzrNE5h0TuHA4Hn0TQ1z2tdtNeD6eA8n2bmEmDC8P3MLCsIzeBszl4I6Ywt23qnlfQYTwJ+lb0JuWPq8xohEgEIkhVgkxpTLAbtzet49boGG4Sv4pOcoZ3lfgkwAc7WiJCoHHyRVIFyiwDHjZexgwBjXs91yfgW8PekVVEQ/DZvTjr19x3HYcGmh9vKWZwq4Lvt9pCpieRt1v4LxaRs+1h/BcVMrE70CYCZunKFEJZFjX3o1ngxLgcUxQRk7OXx1MY6aVydThn2dtkVXjKrYIsjEElywdKDm1tfzGrZYArwBb44vRpFmxZz2xck0iJAoMe1yQm8z0pb0MOvsSBu+GPj5YbZ69vAGvDO5EuVLCngZwXUzi+GDN+BsVRJSFDGzbCYDxuuxa2jVdrqcOGP+Hb9YOrxiK9fmY1V4Gh03vzc04S/roFc5FuMlb8DeLFupSsb25FeRqYynn1vu/Yl3u74FaTHe1rPqpSA9Ol6mwbBjDHv7TqDe2MKV+AXJMQdcGrUKbyeUIlYWSW9EbeM9OGJshsP14BipCVEhQ6mDBCI6apIoeVwRA6VYRh1TZ2rBbn39gsBwEWYGmLSemoRSlGsLIBdLaRj/MdlPgSjEMi624JLlBtKUcZRp4qzOyQEcHGpkNnQQI5gAfiYiC1sTyyg4EUR0dDxqbMapkWvYkfwaoqX/XB3tLgftwwnyKPpbbzPB7BhHn81Ef5OrIgH9XuIGLFclUV3Ecbdtd9FguoLau00+04KTR/kCJrlaHb8O5D4sF4fQM3ttJuzrP4kTw795tcH94kE++hoZSbS8pSvBS9o8hEkUHj0TThvOm9uxrfsQV3yz5Hgx/GFyJV7W5tEcJD220dKOXfp6DE2ZfRrEBbB780yHkoL20Z0fcM7c9t8AJkzsSa2CTh6FbwbPwmgfRXX88/S9yteSikKQKNd6QpqEua9lddqxf+A0Dfk34tai12akv/ksXgzPPNjNHnEEi8X6psSsaLnBkVb0VFgKQkSSB/CKIcJz6mwURmZ7vpF8nO9Ni7Syq2Pdc6bIQh3LlGFvh5MKXpNQgqzQBDhdLjSPdlKnuFzARUsH1CGhNCdJkfM1mCwU1FzyiwaYjJSbdcUoVC+nFZyA+c5wEbdtBvouTf4jDLp7tM3poN+aLDfQYGpFl3WIJU6PLuaASWXdGFuI1RFZILlMBggyA+/WH8Ov927CnefkQa/W0ISloY9hmSqRvnORvksW6b2DdjOaLDdRZ7rM5HnWjZgJYAKsMno11kfl0MuC9N8cHpu20oHh8/6fPOHqqy2RebpMm0d7Ognz+8G3T+hpO+qc7OfNOhPABOSu1I3IVOqoQVbnFBrN17Gnr2FWweHSh9dGrkCZNh+54Wk0Sk6PXMPWroO8wTKt0huWFGBTXBGtqgcGz/nMQS6A3cgI2Bc0OXS0bB29FViAmVjjByVMQtoPdjI7QgDMzJUBqkhgOECJYWaWwDAzVwaoIoHhACWGmVkCw8xcGaCKBIYDlBhmZj1yDP8NFryEM+eMai4AAAAASUVORK5CYII="},{author:"\u901a\u4e50",link:"https://gitee.com/TL27758_admin",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAE4klEQVRoQ+2YaUxUVxTH/8ybBUZWrSwKgsNWYQSVKGAHMEZbGmsLUZvWL41JW5uUpktq0yWpbRrTljQxVT9QW5MmpqZf2pJaGmyrlkXQDimCSlkUAYEZQXEiOMCszbkWMs8ZWeZNZqbDu59g3rv33N/5n3fOvSco+tsDdiygESQCB7jaosIBLjBEhUWFA8wDYkgHmKBOOKLCosIB5gExpANMUDFpeSykixPSmDerb3T6dZAIBg6VyVGeV4ynEh/Ftbsj2FtbiU7DrWno51KyoIlNEuQEi92G6r5OjzhTMDCRHC0qxdNJqxhUne469pz9AWNmE/v/4MZt2J2aLQjYbLPi8KVGfH6xVtA6NNkjwGmRj+CrwhJkREXDbLPhWLsW+7Wn2ebezi7AtsT0eW00mJMiMSwKXFAQm3fPYkJ5cx0q2i7Max1XL3sEmBZ+IX0dPli3CRHyYBhME/i46TROdLXwbFL4VxSWYJFMjkOtDTg72M17nrN0Od5dW4j8mBWQSThQKGuH+vGli3fdJfcYMG3gsGY7dqjUTJm2O0NO3/O+NQUoU+eDFKQw1Q4PMPC75km8mpmHLfHJUHBSBtp6W4/y5lonp7gLOjXPo8AU2t8UlSItcin+Hh7AGw1VvARGRjfGJqJMnQdNbCKDs9rtsNltTFH6+8rITRxsPYdf+zqEsrmc71FgsrBTpUZKxBIcudzIEtcyZRg2xCRAJpHwNhClUKJ0ZQayl8SxiLDZ7bh4W4fvr7bCaLmf8ByHzjiGel2PYCd4HPjBHe1KVuOz3GLQ9ytk1Ol6sPO3E0KWYHO9BqyUytA3ZoDRYuZtmpLc8kXhmLBa0Dt6h4W140gIjUCYTAG/AH5Yyanq7cAXLXVs31MKKzjOZS2dqtM64yjK6k86hW3dMy+DcoNfAD/sUEHl6M2GqsADdlSYEg8dFqjkuAIOlkrRqO+D3jjGC1lVeBSo/lLtrhm8DpPVynteEJeEWGWofyjsuDNNXBKOaLYjThnmEjjgktZswAGRtOajcEAkLRF4hm94wYX0gkta9A1/19WCpuF+Xtl5PD6VNQ+Gxu/h0KUGGEzjvOdvZWmgCl/8/ytLYtL6T8eZjpZ0IDlaWIL40AhU9rRhb02l/1weqG+1P2czIhUhLg8ec1H4nL4XT65Iw9T9QSqRsJMbNQS+btPio6b7bSMhwyO3JWrvvL+2iMHS6DAM48Wan9jlf7bLw6e5T+DZ5NXQG0fxS287XsnMZZCOw1X3xF1owcAvrVoPat3QNY/aNnSRl3NSdBlu4UPtH6x983xKFqQSbtZWK4UwvRvMyaZ52g1D+LH7CgaNo+4y8uYJAqZWzeurH0O4XIFJqwUVbX8hVhmGHapMSIMk7LfLIzdx6kYX61n/Odg93b6d6+7paqheHDPdwRTa+RAEfHzzLmxNSIXJamEl570LpxjHJ+u3YHfqGsFdjgedQtFzvLMZ75yvnqu/nN4TBFyyMgMHNmzFmYFuvFZ/krc4heee9BzkxyQgOiQUco5ze5NTEw2T49h3vho/9/zj9lqCgMkqHRrODFybd6jSyWvTMhVCpPwENROJYXICv/dfdRuWJgoGFmTdB5NFYB843asmRYW96m4fGBMV9oHTvWpSVNir7vaBMVFhHzjdqyZFhb3qbh8YExX2gdO9avJfgwwTApX/UA8AAAAASUVORK5CYII="},{author:"\u9b4f\u5927\u6002",link:"https://gitee.com/wei-dasong",photo:"https://portrait.gitee.com/uploads/avatars/user/2719/8157681_wei-dasong_1605249338.png!avatar200"},{author:"\u9ec4\u539a\u9547",link:"https://gitee.com/houzhenhuang",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAADoklEQVRoQ+1YSyi8URT/jVdek2zHoySFJjsNq6lJspEoG3kkNl4LC9kpsxGyEUkoj6IoFhbklZQoCxuJLGzIwgLJM8y/c+vTH3eY77uXvpnv3ppm8Z1z7/md3++ee++xAfDBQsOmAIc424rhECcYimHFcIhlQEk6xAj9AkcxrBgOsQwoSYcYoapo/aqkvV4v2tvb8fT0hKamJkxNTXEFVFVVhcHBQdjtdoyNjaG+vv7XhKYA601tbm4uMjMzuW75+fmoq6vD8/Mzent7cXp6yrVLS0tDW1sb4uPjMTc3h8XFRa7d0dER9vb29Ib4wV6Y4dHRUQbqL4YMuQsDHhgYQHV1NRdveHg4YmJi2Lf7+3u8vb1x7cLCwhAbGwubzYaHhwe8vLxw7SYnJ9Hc3CyUW2HA362uilawV+mSkhLQLyIigku0w+GA2+1mEl1eXsbt7S3Xjo6joqIiREdHY3d3FycnJ36Fs7GxgfHxccOyFpK0JtmoqCjDAeh1FC1cQoAbGhpYhY6MjAw47ri4ONAxRIOOqbu7u4B9yXB+fh6dnZ26fP43FgJsZFVNFeTb3d2Njo4OI9MY9lGAjabO4/GAzsmkpCSjU3D9zs/P2TlPxUrGkMawpQGvr6+joKCAS0ige1i7sgYFw5YDvL29jeHhYS7D2guKPtKZurOzw7UrLi5GeXk5goJhGcVFmyMoAF9eXuLi4oKLO9CLR2JiIlJSUoKDYcvtYcsBtpykLVe0PjfbqIXj8/nYjzfoPf25rZORkYG8vDzzFi16xBcWFrLeFB0ldPctLS1FY2MjXC4XFhYWUFNT8wUv2QwNDbHe1+HhIdbW1jAzMwOq5tQNpV7YysqK3+aBXjVJu0trC2dnZ6O2tpZdGlJTU1ljjsbV1RVaW1sxMTHxIcaenh7WmNOaffTx9fWVJW1rawvT09NYWlrSi8uvvRTA9HAggPSfnp4O6lZq4+bmhrFG3c3NzU1uIMnJyaioqGCKcDqdrD+tDdoG19fXrB9NyaIEiAwhwDk5OSwAYlVjkoJ5fHzEwcEBk+bIyIguOdLWqKysRFlZGajJn5CQ8I5vf3+f9cj89cYCSYQQYFqgr68PLS0tTIbHx8eYnZ1l7+Kzs7NA1v/RhpinvU/J7e/vR1dX148+3xkIAyY5ZmVlYXV1VSiQv3IWBvxXgcpaRwGWlUmzzqMYNiszsuJSDMvKpFnnUQyblRlZcSmGZWXSrPMohs3KjKy4LMfwP1/YKB94OL8jAAAAAElFTkSuQmCC"},{author:"Voe",link:"https://gitee.com/vvjiangziwei",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAADtElEQVRoQ+2aaUhUURTH/290XDP3vcbcK8EWqAiLAiH9IES7RBhmEZJkQbSQVERhRUWJES0m2GpkYUjoByNLCSwsAjPLdXLLrcx11JmJ92jiZS739uZNw3Tno3POu//f+Z97z32DXOTrvXr8Rx+OAVu428xhCzcYzGHmsIVVgLW0hRn6Bw5zmDlsYRVgLW1hhrJDi7U0a2kLqwBraSmGBth5IiM4CbPsvKCHHoXdb3Cw/hbVI9NU67HOcykU4FA10IT4qvNU+VMFG91hsWC1phMpNdfQONQxlQ7he0crW9wMT0WwvQ9G9VrkfCnBxeYColzSIKMDr3KdhzTVBjhbO2BQNywIvtteSqRnk2cU9syIg4PCFq3DX7G/Lgfv+huJckmDjA7ML5wdnoKF04IEDc++VSK1NotIz6nALYh1WwAOHF70vEdKzXWiPJogWYB3+cUi0ScaSs4KLcPd2FeXg8p+9aS6IhxVOBuUAD8bNwzoNLjQVIDcjjIaFqJYWYAjHQNwJigBvjau0OhGcaW1CFltxZMKSvKJxk7fGNgqrNEw1I7dtVnEe5+I9GeQLMD8s3ngGNf5wjIk7ZkZsh3LnedCBz3yOl7ihPoBDQdxrGzA4gOofaQHh+vvoLz307jCFjuF4mTgZngpndE92odjDbko6akkhqAJlA2YHzE3wlIw28EfI3otstuKcamlcFxtqf5xSPBeAWvOChV9dUiszqRhoIqVDZhXIZ7Jk4EYTnXS/U5FOCZYVuBlznNwPCAe7kondI304kjjPZT2VP0mQTy35Zq94gVlBRbP5IluToYu4IC/uorSui07sHjcvO1rwNbqjF8axfu8XzuE058fIb/rFS0DVbzswOILxdgTeLX7IhyYuQaOVnb4MNCMbR8z0a/VUAHQBssOzAsyXBn5fzW431GGdPVDQafh7zq9Hrfbn+Nc02Na/dTxJgEez0kP5XRkhuyAytZjwgONmoYgwSTA4r36XTuIdHUevG1ckCxcJZVENzECFqIQkwDzSg6p1mKjZ5Qgim9rH6UrVrpEQKMbweXWImS3PSUSLDXIZMDimVw92AJ7hY3QznK+KIxXHJMB84tfDUvGEqdQ4Q3KmlNAwXHI7yzH0cZcqcYR55sUWDyTeYWG/fyku4JYsNRAkwLzP/IZTmZeuNwvCv+8paW6Y4x8kzpsDMFSn8GApVbQ3POZw+bukFR9zGGpFTT3fOawuTskVR9zWGoFzT2fOWzuDknVxxyWWkFzz2cOm7tDUvX9APeTziQX3ucvAAAAAElFTkSuQmCC"},{author:"dotNET China",link:"https://gitee.com/chinadotnet",photo:"https://portrait.gitee.com/uploads/avatars/user/2685/8055741_chinadotnet_1606890988.png!avatar200",extra:"dotNET China \u521b\u59cb\u4eba"},{author:"\u6c34\u871c\u6843",link:"https://gitee.com/andyliuqiurong",photo:"https://portrait.gitee.com/uploads/avatars/user/19/58386_andyliuqiurong_1600142677.png!avatar200"},{author:"\u6653\u98ce",link:"https://gitee.com/2103625",photo:"https://portrait.gitee.com/uploads/avatars/user/120/360653_2103625_1578921473.png!avatar200"},{author:"\u75de\u5b50\u518d",link:"https://gitee.com/washala",photo:"https://portrait.gitee.com/uploads/avatars/user/368/1106699_washala_1578940434.png!avatar200"},{author:"AiGlory",link:"https://gitee.com/aiglory",photo:"https://portrait.gitee.com/uploads/avatars/user/2538/7614116_aiglory_1619504557.png!avatar200"},{author:"kingling",link:"https://gitee.com/kinglinglive",photo:"https://portrait.gitee.com/uploads/avatars/user/1674/5022588_kinglinglive_1578978642.png!avatar200"},{author:"\u4e0b\u4e00\u7ad9",link:"https://gitee.com/HolyGuo",photo:"https://portrait.gitee.com/uploads/avatars/user/737/2212002_HolyGuo_1614572017.png!avatar200"},{author:"engallon",link:"https://gitee.com/engallon",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAYAAAA4TnrqAAABn0lEQVR4Xu3XMUrDYByG8X+hvZGXKG4FR3UUegRv4BE6iqPQTVcP0MUugSIoBJxEPIAllVoXFeV7kpIvpU/nJ+Hrjzel6R0MT1bhJ0mgJ1aS02ckVrqVWMBKLLGIAGj9zRILCIDUZYkFBEDqssQCAiB1WWIBAZC6LLGAAEhdllhAAKQuSywgAFKXJRYQAKnLEgsIgLTVZZ0dj+L06DAG/T444t/p7L6I8fnFVu6VchOxUpS+GrF2BWtePMT09g4c93v68voWs3lR+3p6YdZltf2bQ3F+9mIBQbHEAgIgdVliAQGQuqxdwQLn/JXm+NuRdVli/SOwzRfpvVtWk9edtl911hvI+hjmWEeTR18soCeWWEAApC5LLCAAUpclFhAAadZlNflTuv6OVVXF4rGMp/IZfOX6aVas+sfeXPm+XMbl9U1MrqZNb5V0vVhJTJtIrK5igXN1Mm11WZ0UAIcSSywgAFKXJRYQAKnLEgsIgNRliQUEQOqyxAICIHVZYgEBkLossYAASF2WWEAApC5LLCAAUpclFhAAqcsSCwiA9AMCyEs5dUftBAAAAABJRU5ErkJggg=="},{author:"shuisen",link:"https://gitee.com/shuisen",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAYAAAA4TnrqAAAEcElEQVR4Xu2by1daSRDGPwQBM1EU5CGKqAQ1Jpn5/xezmsXsssjkpQblKe+oPIXwmFMdLyOeZOhSTl9nTvWGBV9fun73675VdQ+O3//4cwwZWgQcAkuLkxIJLH1WAovBSmAJLA4BhlbOLIHFIMCQirMEFoMAQyrOElgMAgypOEtgMQgwpOIsgcUgwJCKswQWgwBDKs4SWAwCDKk4S2AxCDCk4iyBxSDAkNrqLKfTic1ICMGAH8+WluByOeFwOCbLHw5H6H/r47rRQrFcweV1gxHa/KW2wUruxbERCsLlcmlFNR6P0Wp3kMrk8PXySmvOvEXGYZGbXh8k4V/zTblIN7BvgwHOs3nkL0q6U+amMw5rP7GDzUh4CtRgMESz3cZ1o4lOt6uCcy444VtZxsrycyx5PVN6AnaSOke5Wp8bCJ0LGYW1trqCo/0X8Ljdam20tWr1S3w8TWE4HP50vdFwCLvbW/B4vs+jcdVo4u27Dzoxzk1jFNZePIbtrSgWbg/xy6sG3n06/ldQVqThYAD7iV0s3p5xg8EAx6k0ytXa3GDMupBRWIfJPZBLaIxGI3X2ZPIXs9Y4+f63o0ME/KsTV+YuSvhyntGe/1ihbbAoLUils8gX9Q9qy5kYj9UWLlaqOEmlH8tAe75RWOpw34jAyqQqtTrefz7VXqzdQqOwwsF1HCR2JrnVaDxGuVLDWTaHXq9vN4uZv28UFq3m9WESofXA1MKGoxHa7Q6q9a8oVWtPFpxxWPT4f5lMwL/q++GdpLNoMByi0+mq8oZSi0arNfOumxAYh0VBURafiMcQCa1rlTuUJjRabRSKZeU+u4YtsKxgyWVUH9K2fLbkxcLCwkwOzVbbtvrQVlj3yQTX/QisrcK3vAyv1wPnT+BRtp8tFFWeZnI8KVj3AydwBJDON6/HM/U1bc1UOodCqWyM15OGdZcCZf7x2KYqqq1BW/LtXx+1yqV5EP3PwKJgyWlUMlmFOHUrjlX3wUx9aAzWr0cHWPOtqFYLpQcnZxnV/eSOV4dJhG/zNEpqs/kLnGVy3Ms8SG8M1t0imv7/UiiWHlTXTRXj/1dY8a2o6klZ6UG708X7zyegT86423l4SDHO+a37WmPOoo7nq4Pk5IDWbfzdXTB1WBM7sUkie9PrqUK80TST4RuDRUG/2I0jFo1MtYjpiZbOFWZm5uTM7c0oFhe/v+CgrVyqVPHpJPUYs7DmGoVFZc6bl/s/rAtven00Wy00mm30+j0VhMftgW/luUpSLUhWdPSm58PxKXsbs+jcExuFpQDMKKR1gul0b3B6lkbd8Csx47AsGLStYtENuN2LOnyUhlo51IX4ks7Y0saxDZZFKBoJqUL6F/VG2gWn859imh4CBIgag+Qiysu4T0/tO6EhtB2WxhqfjERgMW6FwBJYDAIMqThLYDEIMKTiLIHFIMCQirMEFoMAQyrOElgMAgypOEtgMQgwpOIsgcUgwJCKswQWgwBDKs4SWAwCDKk4S2AxCDCk4iyBxSDAkP4NsOR57KVJ+UoAAAAASUVORK5CYII="},{author:"\u534dKEN\u534d",link:"https://gitee.com/kenkenwu",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAACC0lEQVRoQ+2Yy0sCURTGP19RUkpQYoJkYVmrrDYVtGrX2o1/Q5uIWrV2VUQEbaK9EK1bFS2iaFMpLXpJWYaJvbDCHj6KJDHQsZlxhjtOx+2cczzf9zv3cGc0tvXlT/yjn4YEq5w2EVY5YBBhIqwyB2ikVQa0SA4RJsIqc4BGWmVAaWkpeqRHmuwYd7hRp9NjLR7G3MVBxQOoaMEeqxO+riHU6wzwR08xebTFVrDPNQhPS4eoJlLZLJauDrEQDnLmK07wbPcwvLZO0YIXL4OYOd+vHsFuUzOcRrMgwf1mC7w2Vy6n6gQLUvoTPNXeh7HWHhJcyjzFnWEizMMBGulq2tI8gBaFEGEiXBgKxW7pibZejFocvCbcqNPDXtuQi428PSOZSXPmGTRaOIwm6DVaZdyl851WcsXk5RKgTMHv2Qw276/xkklx6rDWGDHQaM09332MIfaR5KV5+yGKlZszXrHlgiR5PcwT/hY6fbyD1ViI8z+FbOmK1ZUoQILFuEqEaaQLc0NnuMxNS8zx+iuHltZfDpV6TkuL59LyR0+wl4gL8jiUTCDwdCso53cws5E2aLWimq70+zQJFmO7kDMspr6UOZIQzr8evmbSmA8HsHEXkbJHSWtJIljSjmQuRoJlNph5eSLMHIHMDRBhmQ1mXp4IM0cgcwNEWGaDmZcnwswRyNwAEZbZYOblvwBgwAzXJivf5AAAAABJRU5ErkJggg=="},{author:"SamWangCoder",link:"https://gitee.com/samwangcoder",photo:"https://portrait.gitee.com/uploads/avatars/user/2779/8339555_samwangcoder_1615271865.png!avatar200"},{author:"maolc",link:"https://gitee.com/maolc",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAACtUlEQVRoQ+2YT0gUURzHv+M6M8SuqIUVRMeIEFpIKiKv3bxVEIoQRdeIDlvBIiaC4aljHYoklKC8de1UEBUSe5AKob+WVtAG7tbOzG4T79msM+Oor9iQ3/O3t2XfMu/z+37e+715xlxPt48N9DEYWPO0OWHNAwYnzAlrVgFWWrNAl+FwwpywZhVgpTULlDctVpqV1qwCDVW69ewFbDrSUy+RX/VQvjeO0vgNpbKZu/ag7eIQUlu3y/F/+3+Vh/xXYDEBtzCFb/lzKnNB+mgvMr2nYFg2XeDal3l8Hx2E92p6Tej2/Ajsg93/bMiaDwAaewEQVtr3PBimCd91UbpzC+W7t1edT0Rn/xdgNNFSujr7Tq5Foafz7DGKQ7lVgQOdAQO1r5/RvGMnLWB3uoBUxzYJraJ1+8Ao7P2H5FgBbHVmiQEXpuBXfso16bsOShM3UZ6cSEzZ3N2JttygLI6wwbAsWNkuesDO86f1Xdd58gjF4UuJwOnj/cicOCl/E+vdznbRBF4Yu17vq1LrKwPwZl4sgw7rLHb0lv4zNIFF/w1azUpax3UWm9vm4at0gQNdxbpM0jqus2hfpIHDCdbmZlG8nEP144e61nGdxQGFNLAgC6D8SgULY9fw4/6kBI7oHNrUyAOHta48fCCPmuKzpLMfaVvkgVfSOqJzaAcnD5yktTfzcumwEevRWgDXtTZNCK29t6//HDaiOoviaAEc1rr6/g1q859gHzi8eM6OHUi0AI5o7TrytbEp05LYm7UBzvSdRvpYH4xmc/FGI9amguasDbC1dx9az+eR2tIh2ZIOItqs4Xh64nu4J4ffKMgkrHKntN5jGnprud4wKs9nYJUqUR7DCVNOT2XunLBKlSiP4YQpp6cyd05YpUqUx3DClNNTmTsnrFIlymM4Ycrpqcx9wyX8GxhQyiMyPuNfAAAAAElFTkSuQmCC"},{author:"MonsterUncle",link:"https://gitee.com/qian_wei_hong",photo:"https://portrait.gitee.com/uploads/avatars/user/2451/7353672_qian_wei_hong_1603769171.png!avatar200",extra:"WaterCloud \u4f5c\u8005"},{author:"Mapsterx",link:"https://gitee.com/mapsterx",photo:"https://portrait.gitee.com/uploads/avatars/user/2932/8796990_mapsterx_1615537463.png!avatar200"},{author:"yitter",link:"https://gitee.com/yitter",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAYAAAA4TnrqAAADuklEQVR4Xu3YeUgUYRgG8GdtPSqSsEzRki4j7LBIKyQoAqOTsLJLUqMM2kpFPMkDa7NSEzXcIovUsEONiFJCSQosLIPUyAJLSTAsS6Iyr203ZmQHWaX2xZyxePc/2efbeefn883OrMprXaAR/LJIQMVYFjmJIcay3IqxCFaMxVgUAUKWr1mMRRAgRLlZjEUQIES5WYxFECBEuVmMRRAgRLlZjEUQIES5WYxFECBEuVmMRRAgRLlZjEUQIES5WYxFECBER7xZM9xccSYxDNNcnKSxGptaEHsyBy2tbYRR+6Nurs44FXcI7jPdpLU1dQ2IPJaFH13d5M+jLBhxLGGYnZt9oQnyx1g7W3E2g8GAm2WVSNVdocwqZqM1e7B1/WpYWVmJf7d//gJt1iU8flZP/izqAlmwhKEyksKxYukiqFQqccav3zpxWleA8ofVFs+8ZuVyxGgCYT9hvLimt7cPhbfuQZdfYvFnDCcoG9aCubOgjT4IF2dHad66hkaEJqRbtH3GjbVD9vFIeHq4i+uNRiNqahsQpc22aP1wkExrZcMSDhi8fSP2794MWxsb8fh6/U/cuFOBzNxrfzyX8JBd2LHJF2r1GDH78VMHTmRflmX7KYIlHPSsNgrLFs+TtqMl1xwfr4WID9sHx0kTFdl+imF5e3ogKSIETo4OUpt+920mbL/0xDAI60zb78nzlzgSn/bHNv7tgKzb0DT8gQA/BPlvgI2NtdSU/OJSXCi8Nej8NEHbEOC3Vsp+aO9AckYuBGC5X4pgDbUdh0Iwb2FPby8uXr2NvKK7cjuJx1MMS7gOHQ3diymT+7ej8O1W9bQWEcmZEsTA242h3pdbTDEs4UTNt9j3zi7k5BWhpLRy0I3s+7Z2xKeew4vXb+U2ko6nKJb5xVuY6lVjM5LO5CIlVoPZ06eKg3Z190CXX4zrtysUg1J0G5rO2vy2oE+vR33DGyyeP0d8pBG23/2qGsSdzFEUalRgCUMcCvZHwJa1sFarB4E0vWsVH7qbW1oZSxAwf5QxqQy8hikupeS3ofnJr/JZgrjDwXCYaC++ZTAaUf6gGglp50eDk7K3DkMJ6FJi4L2o/05d+G3qdE4ByiofMRZjDbMD3CwCIGMxFkGAEOVmMRZBgBDlZjEWQYAQ5WYxFkHgP4oq+uPfv+bIWIT/GGMxFkGAEOVmMRZBgBDlZjEWQYAQ5WYxFkGAEOVmMRZBgBDlZjEWQYAQ5WYxFkGAEOVmMRZBgBDlZjEWQYAQ5WYxFkGAEOVmEbB+Af6T8DmYf9viAAAAAElFTkSuQmCC",extra:"idgenerator \u4f5c\u8005"},{author:"\u7f57\u666f\u5cf0",link:"https://gitee.com/luo-fengjing",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHgAAAB4CAYAAAA5ZDbSAAAIKElEQVR4Xu2d2VNURxTGP0DGhW0QijEsChLZZJNVEtBEU1oxVXnKS/6w/AlJXvKUqpgylTJGXNlHBEaQRRxkExBEBoGB1LmVwVnuDPfOneHeOZx5tbvvPd+vv77dp7sx6aeff9mD/NgqkCSA2bJVAhPAvPkKYOZ8BbAA5q4A8/jkGyyAmSvAPDxxsABmrgDz8MTBApi5AszDEwcLYOYKMA9PHCyAmSvAPDxxsABmrgDz8MTBApi5AszDEwcLYOYKMA9PHCyAmSvAPDxxsABmrgDz8MTBApi5AszDEwcLYOYKMA9PHCyAmSvAPDxxsABmrgDz8Czj4O+vXUPhGQcLuT9sePD348eYmZ83PR4BHAcEAlhFVHFwHHqalf6EgwA+YoD1DHMFDge+aWtD2qmT+yq55+bx+927mlT7urUFlaWl+2W3t7dxv6cHLyanNNX/8btbyM7K2i+r5901PcBAIct+g/WIJIDD9wABDEAcbGCI0Fo1+BssDtaqXORy4mBxcGx60kGtiIMPUii6fxcHi4Oj6zl6a4mD9Sqmrbw4WBysracYLSUONqqgen1xsDg4Pj0ruNVgB3/c2sLruTl4vbsHvkBKSjKKzpzBcZttv+zK2hoWlpYPrEsF7BnpcOTm7pf1er2Ynp3F1vaOpvq0zZl28lOaVM8aXtMDDBSyrIMNxGR6VQGsgkB2k+LTL8XBcdBVHKzBwTteL9bW17G3p+3/DDmWkqKU9e4e/M2ONdOMtDTYUlP3mxXAGgDrEels/mf4qqVFmei8W1vDyMQEBkZcseYYtj3ZD9Yg9a2rV1CQl/fJBR4P/unqwuzCYsTa9owM3GhvR262PaDchseDrsFBDL8c1/B0Y0V+uHkT2ZkZut/d2FO11bbMN1jb64aWut52GWXFxUhKSgr4R/fcHP7sfAA6nXGUfwkNuLWuFvUVFUhJSQlguPr+PW7f78TK6upRZqvEnrCAL174HJfr6gKSGxQQJUieOJ0YGnt55OEmLOBwcLe2t9E7NIT+4RGB+78CCedg34w5/dSpEIi0RNr1ek2Bu7L2Hr/duWPKsyM9NKEAR4JrtrL0vf/1j9tmv0bI8xMGcElhITqaGqHmXCuoKoANUKBlUNul+oAdGwPNxaWqAI5S1tryMjTX1ITMlqk5ur3nmpiIsuXoquXnOVBeUozk5OSABmhrUr7BOjWldW5tWRlS/fK81ATlnGm/9q+Hjw41kRFpaXa/uwdjr17pjDD+xS35DSag11pbUFJUhOSgDBXBJSH/7e45VLjhJnh0OGDA5cJT57P404riCZYDTCcrOhobkZdzOiSc3d1duCYnce9pl+LqK01NeLuyAqcrvhsLBPdqczNo1yj4Z/WUqKUAV1+4gOaaapw8cSJESMopPxsdVZxCM2nKQdOls929PUy53XjQ24f1jY0o+njkKgWOPFxpbkZ2ZmZIwaV375TPhJVTopYATMBollxKQ3LQ5IVU9WxuonvwOZ6PjSnXNK9fbkVeTk6A4JR/ftQ/gEm3O2aQI8GlznSvqwvTb2Zj9rx4NGQ6YLqX23CxClnp6arxBYOj/HNteTmOHQvcYKDK/i43Kpay7m5sRHpaaMbsg8eDx/0DGJ3Sdn/Y6LsYqW8q4BvtX+K8ykTKF9CbhQVlMhU8BFKnoKFcLelBkzBaPnX29kU9dEb6VCTaZoapgMNt99Fkim7XP+jrCztTpslYe2MDHEFDta9z0HGfrmeDul1G2TLqQHQEKPhHnwraqRoZP9y1d8I6mF48eMN+8+NH9A4Na5oZ00y6vaFBNfGgd8imb3tHY4MycQs+PEBt0Tf3yYBTd4cxAicWdU11MAVAkL7taFeEpVnpw74+zMwv6IrtUlUlGqqqVLNdNGS/np1TJkThZtl1FRVoqKpUnb3TiyyvrqKzp0f3e+kKIk6FTQdMcZF76DzWi6mpqJMXNCn64lI9sjI+nY3y10wNEg3zrbU1yHc4QhIqVFdL54gTl5g1awnAsYqGOsrV5ibk+x3e82/bN/yPT08rji8rKQ447upflo7tjoyPo7OnN1avZ0o7rAD7hvxwaU76d0ot0sEA/3PMwcqvrq+jO4oJmikED3goO8C+eNvq61BD62WV2XA4TQj+hNutrHHjkRUzowOwBUxittTWoL6iUjUpEiz24vIKnjqdyi4Vpx87wJT8KC8pQVnxOdgzM1WXPP4ANzY34XS9QP/wMCeu+7GwAOyDWnr2rHLDIPictBo5mnBRMoVuP3A+HJ+QgGntfL6oECUFhcq2It1JUktOqIElx7rGJ9A7PMwarC/2hABMSRC6RU9pydN2O04cP666bg03xtJ61oxLaVYY8y0F+Fx+PnKy7ci1Z8OemaFsJthsNl0w/UWljQH3/Dyej44mZBYqFh3EVMC0a9NUfRG2VJumma6WgLd3drCwtKQc6zmMm4Va3snMMqYCpqufdG2UZrtGfrTLM7v4FuOvpzE2Zb2Db0ZiM1rXVMC+tSqlDdVOcoQLjoZe+is69Ee/yalWPjJjFJDR+qYDJhff7GhHjj3wArcvsJ0dLzY2PcqOztziW0zOzAhQHdRNB0zv2lRdjbqKcuXqJx2HoRnv/NIyZhcXBaYOmGpFLQHYYAxSPYICAph59xDAApi5AszDEwcLYOYKMA9PHCyAmSvAPDxxsABmrgDz8MTBApi5AszDEwcLYOYKMA9PHCyAmSvAPDxxsABmrgDz8MTBApi5AszDEwcLYOYKMA9PHCyAmSvAPDxxsABmrgDz8MTBApi5AszDEwcLYOYKMA/vP6WwoEyTY1VFAAAAAElFTkSuQmCC"},{author:"Herbert",link:"https://gitee.com/mxj_3306",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAABLElEQVRoQ+2YMQoCQQxFZ2sLwVbBWizEg2jjhQTv4F28gHgJsVestLFSkC0EcZ2EDGSzb+uZbPLfz0x2q8l690wdeioKDk4bwsEBJwhDOJgCWDoY0K9yIAzhYApg6WBAObSwNJYOpkARS2+W07SaD99SHS/3tNjus2TT7ssKXi+iYIlav9ZqSWn3SXKGsEQtCNcKaK2p3SeBhKUlamFpLK33i2RgkbyleA9Lkvlc29qCz7dHOpyuWXWPB700G/XFI2lWcEZLiUx/1mrvU+0+SerFe1jSixSc+VkJ4QYFsLTEHoyWjJb802rsmNZeSxbnQKkYRU7pUslaxKVgCxU9x4CwZzoWuUHYQkXPMSDsmY5FbhC2UNFzDAh7pmORG4QtVPQcA8Ke6Vjk1jnCL6gtiwgepIm4AAAAAElFTkSuQmCC"},{author:"Doson",link:"https://gitee.com/doson",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAACu0lEQVRoQ+2Y3UtTYRzHv3vLOYcu1F5URClcbyuQ0l4QuwgKKYzoxgi6E/oPoovooiKIboooqosKIuo6THqRSaXkkmq6rQ2WOnRD59ZMR1t7OfGckUW2Fj7n5DmPz7k+v2e/z+/zfXbOczS3OroELKNLw4EZt80NMy4Y3DA3zNgEeKQZE7oAhxvmhhmbAI80Y0L5nxaPNI80YxOQJdItnTZY99YUHFUmlUUqkUZk5As8LwIYdUwWrKG9YUmBf20+mxEQ8kTRf9eN2MQcLVfeetmBY8E4pv2xBQ1o9VqUrS2BubIYRSYDoMndEg3Moufqe9mgZQcODkfQdWEg78QNRj2ajlnR0FoDnUELCMDE0DSeXHTIYnnJgX9Q7TqxCRv31UKr0yCdzMDx0AtX95jk0IoBJqYPnNqO1Q0rRchCyVjsJBQDTAC2ta9D45H1YrTj0QR6rzsRdEUWy/bHOkUBV9sq0HpyK0yWIjHWAw+8cD+VNtaKAiZKjl5qgaXaDPKYcnWP4s39j+waJmSHzu6c38de+zhe3hxiG7jtdBOqtpSLkBxYAteK28OHz+9BRX3p8jBMnsXt53bDUlWCbDoL5+MRvH3kk8DrzyUUZbi2cRXISau4dAVSiQz677nhs4+zC7yjwwpbW734ejkb/oqeK+8Q9s+wCUzifPBMM8rrcvt3bHAKzy4PSgpLFlNMpJuPb8Dm/XWi3WQ8hb47bvhfB9kD/v14KAgC/H0h2K99kBz2vxjO9wFAb9SjbI0J5koTDEZdDk4Awp9m0HvDqd4PAP+qibw7k4P/q9vD4klJrkv2Pfy3xtPfMkjOpTDp+wzP8wBC7qhcnPPrygIse9cUP8CBKYanilJuWBWaKJrkhimGp4pSblgVmiia5IYphqeKUm5YFZoomuSGKYanilJuWBWaKJrkhimGp4rS7/oF0OgLpe3RAAAAAElFTkSuQmCC"},{author:"\u7f85\u99ac",link:"https://gitee.com/romanlcc",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAFmklEQVRoQ+1YeWyTZRx+2rVru/s+2rGjGzsYbGy4CQ4dww2BGNCQKGqMRzQSNApRhIjRCIkwj0RBvILEiJqgMfKHExYRwg7RARu7B7Ns3bKr27q127peX2veF75lhZ392qSb3/vn973H7/k9v1sgP3fcjv/REvCAFznbPMOLnGDwDPMMLzIN8Ca9yAi9Cw7PMM/wItMAb9KLjFA+aPEm7YxJF6fmYVVghDNH53zmqk6DvS2Vc94/3UaXMHwqaxPWhsg5CzPTBRXabjxec4bzGy4FPJVQecFyHEnPR6hYimPqWnx4s9pB6I/S7scT8mT0mgx4tfEiKoe6Hf5fWL0Nyb5B4AE7yTXPsDOKY3140GyExmxwuEIoECBOFgBvgRCdxhEYGKvD/0CRBHKpL4w2BupxPWx2xyFqjNQf/iKxZ5q0M8qa6xmP8uFvM4uwJjgal4Z6UKy6CsZuw42x4Wmx+HmJcTBlDfRWM37tVeGavp/ufTkuAyHeUhxsrZo4W5KzBUm+QfTuZ2v/mKt+pt3nEh9mbyfR9MsV66GUBaJ0QI2X6s9P+fAzMWnYn5QDAQQ4rLqCbzob8Up8JnYnZFGTZr9xRjfFBS4FfDR9HR6JVEJrMWJfSyXO9KuxLjQGJhtDGWLXd5kb8GDYEtTqB/BY9e8YZSz0F7GUwrBY9BjHsKup7K4U5QoFuAzw04pUvJWUA4nQC191NKBYdQXrQ2PwQdpahIllON2noiCeUqTg7aRcSIVe+KH7Oq7pbpkzWf4ib+yMy4B6fAQlmjaMWM0OGIesJvw50MkJt0sAE1M+kVGEeJ8AlGm78GTNWRA/PZ5RSCuwXtMY3myuQNVwH75f+RBygiKdEprEhYK/f3HqLHuIM2AC9nBqHnKDotAyqsXOhgs0YO1LvAc7YlfABjuOqevw8c1qvLv0Xjy/ZBlEAiH6TAaU31FVKWUByA6MgM5qQtlgN0x2xgEcMXXi31wWZ8A/Z2+mEZosI2MFAzvNud5CLzB2O43CrzVdBGvyASJvuncqtmYrM7kAdRnD7yzNxXMxy2CxEy4BIQSQeYno/SR3vlB3jhYWny8vQJpfyITMCxbwZK1P9lvWvDP8wxAslmBXQhZI1dVlHKXA52vSJLeX9negtF/NiWjOJs2+TsAeSs3D1kglLS9JkNouT8bmiARUaruhMY/T9LRE6udUK2mx2abstuaL3iWAJ4MdYyx4/9/LONnVQk2dpCqLncH+65eoP7N1d5tBj0/aahzkLQqPxcMRCVQ5n7XXQmcxTfwnsaFxZHDGCm4u4DkDjpb40lybH6LAuM2KU903UKcfQLTUF6l+wXggRIFgsZR+f725fALwgvXhT9PzsS0qCYJZ1Ksy6GgtfCjlPmrSCxYwa7YigYAy3Ge65attBh3MdhvMNgabwuOhMgzjvdYq7FWuooCtdhttCScvkp9JBUbSmdFmpVGfXcSHv+6ox5H22rlY7rR7OJv0bK+T8pIA/E3TjmqdZsKkZzt353+PClo/Zm1EXnA0SjTttNoinU/zqBa7m8ppQxAn86f1NQlmbNBasCat9AnEyZUboJD40bTRaRzFgeTV0FpM2FF/Hi/GpmNrZCIaRgaxser0wgfM+rCBseCN5graLZE5NVlkjhzuLXNITdujkxd20PpieQG2RCpRf5tBdiwbJJbQhuGvoR46FFBIfGk7mCALcKrwIAqcbpQ7n3jAKWiRzoYAlt8GQ5p+ssgsWekTQCcZB1qrcCKjkDL9U08rLSymi9KzCU7K0T3NFfhnuHe2re6L0o9GJdKpxllNO51wkLVHmY1hqxmXh/sm5lWsBDMFLadRzOMgJ4bn8Y7HbOUBewwVbhKEZ9hNivWYa3mGPYYKNwnCM+wmxXrMtTzDHkOFmwThGXaTYj3mWp5hj6HCTYL8B5MLc+arI2xAAAAAAElFTkSuQmCC"},{author:"Proud_Cat",link:"https://gitee.com/proud_cat",photo:"https://portrait.gitee.com/uploads/avatars/user/2661/7985226_proud_cat_1616052121.png!avatar200"},{author:"\u672c\u5fc3",link:"https://gitee.com/benxinyinghuochong",photo:"https://portrait.gitee.com/uploads/avatars/user/427/1283569_benxinyinghuochong_1616052536.png!avatar200"},{author:"\u6211\u4e56\u7684\u9614\u7231",link:"https://gitee.com/my_99599",photo:"https://portrait.gitee.com/uploads/avatars/user/2727/8181734_my_99599_1619689375.png!avatar200"},{author:"lu xu",link:"https://gitee.com/xgluxv",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAADoUlEQVRoQ+2YfUhTYRTGnztn2xzb/KCPP1NSKjAjkEiEsMQC09IwSqmIIgkiIRVKIhDCgjQQo1IKFMIiSUkhyOxDFCP6QJJItLIiLA3d5jbd9417zbHN6e7cpb2td/8N3vvuec7vnLNzLjN6PoHFf/RhqOEwp00JhzlgUMKUcJhFgKZ0mAGdZ4cSpoTDLAI0pcMMKG1aNKVpSodZBJaU0oqUPGiyK8HIlHBMjUHXWgrryAvBoVFllkGZdgxMRCRYuwWmvlswPKnx+7x8XRY0ORcgUcYF9Jz7xSExzAUqZv91yOLTAIaB0zQBfcc5mD90LmhaunwNogtqEblyLcCysIz0QXv3BFiLyW+gQm6YEyBL3ApNbhUi1Kt4PbbRAUw0Fi1oIKawAfKkbXyA7BNfoL1TDPuvjwGZ5Q6HhPCcSlVGCZTpxWCkMsDpwMy7dujayuaZUG0vhTLtKH/OaZ6Coesypl81B2w25IY5Ae7kfJmJ2lQAVdZZSBSaRYMi1H1ICXMiudqMOVAPadxqXrN9fBjaeyf5dPWoWwDWb28weftIwHVLRA27i4hKLYI6sxyMXMU3JPPQU2ibjyP2UCNkCel83TqmfkLfXgHLcLdQmD7PhZzwnKrovGooNuQCkgiw1mmYBx9Dvn4nX7f8X1dvPQzPaoMyS0QNzznwTl+XM9aJmYEO6O6fDtosUYY5MR4N6o8929ggdC0lS/oL8hUhYlLaldr5NVCk7OG/snYrjD3XYHxeJwpd4ggrkndBnV0JiSLaZVCsZjV3ITGEF67hpY+RRKd09N4rUCTnAIwEzhkdrF9fQ56UMdu1HTaY+m7C0FUddGoTQdh7xJzub+UNupYFQNCCISQaITfsvUS4T1PeXdvfgkG8YW5NjD1Qj2XxW3itvhqUekcFlJsPAxFSfpbm6OsfnBHijbxJS7P7EqI25s/W6QLTlHdQ/tltKSq1EKrMckjk6tn5+f1DaFtO+aTinfbuC0agqIOuYeeMHtZPvWAdVr+/bR8fgrG3Yd6GJGSa8mhsfgK0mJCgDft16XbA8rkPk00HPbYgLmCGzouYftvi9yr33Zm1mWHsroOx54bf59wP/HXDtu/9rrcXcNhhetmEqUdVgkTzu/O+q5CuSJxtcvof0LWVB/QCcUmGBakj9BA1TCgY0WRRwqKFktCLKGFCwYgmixIWLZSEXkQJEwpGNFmUsGihJPQiSphQMKLJooRFCyWhF1HChIIRTdZvRr2xh5MWYPkAAAAASUVORK5CYII="},{author:"\u5929\u9645\u5c42\u4e91",link:"https://gitee.com/zhangjun1024",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHgAAAB4CAYAAAA5ZDbSAAAH10lEQVR4Xu2caWxVRRTH/48CpVDWUroA3enOYgEBgbJERMQEDRpDDMagEbUSNAgofkAhrAKJKAgGSdQQ5IOKCYlGEEFBtlIsdKOlhRYoZelGN7qbc5MH772+1/dK3/Tenp77EebOzPn/5j9zZub2mQKP7GmGPGwVMAlgtmy1wAQwb74CmDlfASyAuSvAPD5ZgwUwcwWYhycOFsDMFWAenjhYADNXgHl44mABzFwB5uGJgwUwcwWYhycOFsDMFWAenjhYADNXgHl44mABzFwB5uGJgwUwcwWYhycOFsDMFWAenjhYADNXgHl44mABzFwB5uGJgwUwcwWYhycOFsDMFWAenjhYAHeMAsvDEpAUPBo9unXrmAYVtnKipBCvXPhNYQuuV20YBwtg16G1paQAbotaLpYVB9sRShzs4uhpYzHDOHi2bzBm+wbBw+TeNdjT5IFEn0D07+5pJU1K+R3k1dxvo1yuFb9cWYqd+RddK6y4lGEAq4pz8sBAbI+bBn/P3lZN7C/MxoeZ/6hq1jD1CmDDoFDTEQGsRlfD1CqADYNCTUcEsBpdDVOrADYMCjUdEcBqdDVMrQLYMCjUdEQAq9HVMLV2ScD0C+j7bmZhZdZJw4BQ1ZEuCbi+qQk78lPxeV6KKl0NUy97wImDhuKL2EQMsTiqFMCGGX/t78hL/hFYF/0UvD16PKxMALdfV5dqoIuAAJtLAJdebEOh4V598U7wSPSxAby/8DLOl99pQ02PV/RWbTVOlhY+3stueEvXKfrAE3MwZVCgG8IwbhV6X/4LYMVjQwCLg5UOMXGwUnmBLu1g1UmWyWTCB6FjEOzVrwXG6sYG7C64hGvVaj7bMTfYpZMsxebBrMFB2BIzBYN7erVoik6zDhRmYxnzz3Z0naJVA14VMR6Lg+LR3cGHfLnV5Xg99TDyqstVd0W3+lkD/nnsXEwY4O9Q3KrGeqy7cg7f3cjUDYDqhtkCnukzDNtiE+FrMT03NTejCc1Wjv7z3nW8lvqHap11q58t4I3Rk/FqYBS6mUwPxb3+oBJVDfWI9h748N/K6mux6vK/+PV2nm4QVDbMEnBknwHYO2oWQntbZ8/k1qyqUqt1mZKtQ7ev4u20oyp11q1uloBXj5iARcNjrabiB02N2JqXgtNlRfg6fgaG9fLuEi5mBzih/xDsiJuOIK++Vq6xzJh3xE/HPL9wPJq8oV0ILEo9gsrGet3cpqJhdoC/jJuOF/zCrNbehuYm7L2egc9yzmgazvENBq3Rlvvj2qZG7Mi/qLmc08MK8MKh0aC9b7/uPa0YFdRUICn9GOgPzszPrviZeN4v1MrFhQ+q8H7G37pe77l7cLEBTInVrpEzEdXnUYZMYtm61yygvW0UJVx0dvzmRT5TNQvA9LXGnlFPa3fLlusqwcyoLMHiS0ftnlati5qEhUNj4GGxlWpsbsYvRblYmnHc3WbSpT4WgL+InYYX/cOtQJGaFQ11WJ+bjO8dnFSR63fGz0CM9yAr8Wk93l2Qhk25ybpAcWejnR7wJxHj8cbwOHh287DShU6tDt7Ow5L0Y63q5Wjdvt9Qhy15Kfj2ero79e7wujo1YEdwScXMyhK8m/YXsqvKnIq6NWYqXg4Y0WIG4AC50wKm9XNBYFQL5xLNW7VVWJF5AkeLbziFSwVaW8NpX7w7/xK2Xb3gUl1GK9TpABOMrbFT8axvsN1rQHLd+ivn8MPNrDZp7Wg9pkroM9ufiq5gdfbpTncQ0qkA0ykVTct0BWibLROI9iZHtHXaHDMFAZ59WgwO2kKdKSvSrhct99NtGkU6FO40gBcERmJZWIJd8c1wKSEiAO155vtHaIPIz8H32vfqarQTr28K0trTTIe9a3jANCVviJ6MuUNC7K637oRrVt0ZZDo8OVVahM155w3vZkMDJtcuCRmNIK9+dqdkAqIqCaLf7VobORFDLW6dbG1HS8Lvd/OxNuesltgZ8TEkYFprV4SNxaSB/g6/pyIxabrckJuMHwuzlWhL/dgUPVk7CLG35psbpUF2+G4Btl/7z6VtmZLOOqjUUIApufk4YhzIPZZ/LGbbd0p40iuK8WnOGZwqvaVUL+rTmsiJeMY3qNXBZs62k8vvYF9hlnbcaYTHEIBJxOXhCXjONwR9bW6CbEWiLcuhO1fxUdbJDt2yLA0do30JYvuTiPYg0gAsrqvB8ZKbOFiU6/J+XMWA0BUwTYEk2nSfYa061hw4rXN0X0s/Q6jH42ybZq9P5Q21WJNzVtky4kwH3QDP8wvD2shJ8OnZy1kftf2tkZKZpOBReCso3u4H9ZbBtHdf7lQYFwroBpj6tjJ8nOZg24sCc79pqkurKMbG3GQcc/HY0YWY3VKEcgTq//yAcLvTtlGuHXUFTErbu+ojsHfrarCnIE07VDDyY84f6OjUvD4b6cMB3QHbHvTT1ofW2K+upXZoEtXeQURxvBcyWruXpvPwJBdvstrbrrP3dQdMHaTkZfWIJ7XToc4G1pnAev+/IQDrLQLn9gUwZ7oABLAAZq4A8/DEwQKYuQLMwxMHC2DmCjAPTxwsgJkrwDw8cbAAZq4A8/DEwQKYuQLMwxMHC2DmCjAPTxwsgJkrwDw8cbAAZq4A8/DEwQKYuQLMwxMHC2DmCjAPTxwsgJkrwDw8cbAAZq4A8/DEwQKYuQLMwxMHMwf8PyLb4J53+FkbAAAAAElFTkSuQmCC"},{author:"caro",link:"https://gitee.com/caro-pro",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAYAAAA4TnrqAAAEtElEQVR4Xu2Za2xTZRjH/2PturZbu7GurDSTSyDAnI7ohk4cmEwCxHuWSIwQPpioqFESjIrxix9QEqOJUZbFb8YYv4i3YaYJhohEs6FRkdsAFdkFt+5C13Vd17U1z2l7FhbXnKft3urynI/b/33PeX79v7f/W1DfdjEOeQwRKBBYhjhpIoFlnJXAYrASWAKLQ4ChlTlLYDEIMKTiLIHFIMCQirMEFoMAQyrOElgMAgypOEtgMQgwpOIsgcUgwJCKswQWgwBDKs4SWAwCDKk4S2AxCDCk/wln3bXCjntWO1DjtsBhKYTFVICCZBHh6TiCkRjOD4XRcSGAry4FGOXlVppXWDtvLkPLjU54HWYdTrry6Da41x/B+7+M4vPzY7klYaC3vMBaUV6E5ze6UL/UhkUpCxn42JRkKhrHlxcCeO34IKNV9lLlsAjUgeYlWFVh0d1EjhkNRdHZO4ETV4I48dcEJiIxuO0mNFbbsGmZHfVeK2zmRXrF0VgcHZfG8eqxgewpGOxBKSwq9o2tVWjw2nRQBKW9O4DWrmEN0FzPTUuK8eztLtRVFettx6diONQ5jI/P+g2Wm51MKawX7qxES41TH3qBZLGHDRZLTju4pQoELvWc84XxZHtfWtDZIZpprQwWFXiguQqeUpP29kgsjg9/vYZDXcOsWmjl3N/kxmJrodaO3PgOuevM/LtLGazZruoeCuPxLzJzxFvbPLjFY8UVfwSnBydxpHsMZ31hFvRMxMpgfdBSjbUui/aNNDl/dNqPt38YyuSb89ZGCaymZXa8snlm6IyFo3j9uA9H/xjPW+GZvFgJrIdrnXjmtgpYTYml//K1Kez+pFfJpJwJlLnaKIH1RMNi7F5fDnNyB/pjfwh72vtyWYeSvpTAenmTGw+uc+j7o5N9ITx1RGD96y9M89UDax36/wRWmoGwp6ECu9aX6cNQYKWBNXvOOjUwicc+61Uyz+TyJUrmrG2rSvFiUyVKihKrYY8/gr0d/dqm8v/0KIFVU2nRznSeUrPGJtt91t0rS7BvowuhSBx0Evj2clBJKKgEFgFqvdeLBq81Jzv45xpdeKTWicLkVoRS1F2He+bdpMpgzZ63Mj0bUszz3v1erEkenWJx4NNzfhz8zrdwYFHo9+ZWD6qdiaGYaerw9IYKPFo3s7KOhKJaAPh9z8TCgUWV7G10YUetE6bk8OHmWdtXl2p9pOIZSli/+X0c+4/+Pe+g6AXKhiG9jIZQ231erKtMpA/0GE1K6bi0s64MZcWJHCu1qu77+ir+HJ1aeLCoojuqbXipya2HgPS3uTJ4WkWbV5aAUovl5UXX3QDRitraNQKjKWsuaCp1VuqDb11qBYWBNI9lcLmDweA03u0cRsdFtXeIeYFF0ChPp9hm83L7dbc26RxAi8LPV0NoOzmC3wYmc2EWVh95g5X6SoL2UI0DG7w23OA0a+CKChN+o+FJN9K+4LQWH9PF6k/9IVaBuRTnHVYui5nvvgQWg7DAElgMAgypOEtgMQgwpOIsgcUgwJCKswQWgwBDKs4SWAwCDKk4S2AxCDCk4iyBxSDAkIqzBBaDAEMqzhJYDAIMqThLYDEIMKTiLIHFIMCQ/gPZzjwMvobRwQAAAABJRU5ErkJggg=="},{author:"\u6811\u888b\u718a\u7684\u6811\uff08Mars\uff09",link:"https://gitee.com/marsgitee",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAYAAAA4TnrqAAAHKElEQVR4Xu2aeXAURRTGvz2SzZ1s7mNzcaMioEIpQmFFue8qECGICMgZoBLOoAZNKQkWCEgwnGIAw2VhFCKGIxYIaGkpCqiAiIGcS25zkM2xY3VTO+xulmQaE3G2ev5KZr/pTP/yvdevX6/i0ngI4JckAgoOSxInKuKwpLPisBhYcVgcFgsBBi3PWRwWAwEGKXcWh8VAgEHKncVhMRBgkHJncVgMBBik3FkcFgMBBil3FofFQIBByp31f4Hl3KkPAiathtrTH42Vt6HftxJ3rv/A8HrSpNrnpsG1RxQV1926jJLP35P2IKOqXZ3l+lgUdAt2w8E7BA1l+cjbNBU1l7MZX7F1ecjcHdBGzaDC6kunkJP4QusPPYCCw2KAxmHJAVbwjBR4DZwq+VUrTu9Gwc4Ym3q7D0PzCUohVp69E/mpMzksDgvAv10NO7xzDi5d+0FoakTplxtRtHuJ/Tir8/pfodE9IsUokkoJ03hCgwHlX++CR58xUDq5NR9fpYbS0ZneJ1qhsZ7+bKyrRmFaHCrP7Zf0Tq2J2nQ1bEtYrt0HQLcoHQ4+OhjvVKEkcz18R8RC6eze2pzEz8lzBTvmo+LMHsnPtCRsU1hhSw/DMaCj+PcUDhr6u0KlhrH+Dhr0NyAYm+jnrVX0ns9MQPCsLVC5eVMXlmSsgd+4ePtxlvV/JXDqWvgMX0Rh3a+C9x21mIZO6VcpFo/7DI1BwJRkKDWuMORfwZ/xfanDbF12UTpEJJyEW4/n6fysYbl0eRpB0zfBucOTqC/OQd7Gyai99p3IgtRh3kPmAgplq1sY2cMim+jQuINw9IuwCYssBGFxB6EJfRQQjKg4uw95H0wRYUW8kQW3noMBQUDZqe0o2Dr7vulE9rDMw8iWs8g9v7Er4Dchga5kTdVlNBmTlYsk8Y5J30MT0g1GQw30e1fQMPXoO46GdOW3hyzAyR5WaOx+ePabKE6KhGHl+QM07Aq2z4Mh7zf6mXmo1l45h5zVw+Dea6hFci9Ki4Pv6KVwiuyN+qLruJU8GobCa+LYsoalCeqC8JWZcAzsJE5IaGog352jzqi7dQkFW2fRHOX57EsInrmZrnpCQx2KM9bQFc+0MNRePY+cd4eiw9unKSxSQxHN7QMJ9gGLLPH+ExIApRowNkLh4ITGSj2aqsuhCe4KKBSou3kRuRsmUYfpFu6FV/9JNJnXF/6BpppyOHfqS3NZWVYq3UD7T0yE39jlUKgdKezcteNFd8naWZGJZ0CKyobSXChUDlB7BdLVsHDnAvi/+Bacwh+nrjABU7l40ALU0T+SJnRBMEKhVFFohTtiUHE2HcStYSu+oLCJA28fSkTxZ0l0HNnC8uo/GUEzU6By1aL64klodN0tOqVKBw2CZ2+DWhtEk3nB9rm0fgp8ZR18hi2gcE1X3V8XcGPVQLG+Cn4tFd6DZlEHmvIbeVa2sEIXpdM8ZKyvpVW3dtDsZm1lbdR0OAZ1hv6TeBEMcU7okk/hFNbj7j2zEDSJ3HsPQ8j8XVB7BtB9X9He5SjL+lCesMwnYyi4iqI9S0HcILUHHxCdDN9RcdRdRkMt9PteR2nmBosyITz+KNyfGEHvVf2UiZtJI+UJKzT2AMieDhBQdmIbrYekHliQ2ipyVTacOz51LwytEjn5wHvIPARGJ6Hx72Ka/EuOrJMfLPMSgKx8+ZtfhbHBIBmWeYFqokXKjdJjm1CUtlgESKA6R/RCze/fyLd0EBO7ixeqfjyKm2tGS27+ka1P+LIMmsfI1VRTAZWLJy0xyIqalzKtxSM0WSZ40tkkWxTTtkVqp1QXkwbPAdFiuVBy5H34joylhSopJUg4566/txuw3iTKElZAdBLUHv7IT7174CkFlvfgOQiYnASVq5cFGDH/KRQW+0ZrULKus8wn0xosi84DaeOYhZz5s2TMlk6aZeks6/96S7BIog5bcvhuv0uhoFU5CT9SLpgu3fyP4TXwZVqEkk5rManaM5KbmcvuYZnnKZKXqi+eQM47QyxAkAahuA2iX/qw3BOaxHYNiziGJnSVms7XfFNtbRvSMdUOnkMrdnIqTZxn3V62W1gk7EjfnRxmkKuhNI+2a6ouHLOVu+nRGuk2kM109c9ZNjV2C0uorxVDi9RT+vR4lB3fYhOClJsk95EajeRHuhD8crxZOEsZR4qmTY/CpCZ4Uq37DF+IkswNTF88I0dtTuE9aUiaLpW7Dxy0wXSRsLX5lgJBquahwCIvR7oM5q1hKS9sfuJjSy+l2pfyd+6neWiwHuSlfccso81D01G9OIYgoLGiEPr9b6I8+6MHGVrSM7KCRY7yXbr1t2gQklmSkyHSrmnvq11htffL/9fjc1gMxDksDouBAIOUO4vDYiDAIOXO4rAYCDBIubM4LAYCDFLuLA6LgQCDlDuLw2IgwCDlzuKwGAgwSLmzOCwGAgxS7iwGWP8AtDDqqnW6nQsAAAAASUVORK5CYII="},{author:"\u5e9f\u5f03\u7684bug",link:"https://gitee.com/abandoned-bugs",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAFBUlEQVRoQ+1Z13JiRxA9iCBQBCVAQoByXG1ZL/56P/nBZT94yxskkQQIREaEVSDjOlN12SuB1oR7KQrfedkqdmZunz7dp3taut9+/6ON/9HSaYCnnG2N4SknGBrDGsNT5gEtpKeM0C44GsMaw1PmAS2kp4zQyRGt2VkTGo0mms3mWH089pAm0H2vB2urNmTzD7jyBacbsF6vx+WHUywuzKPVauHuPonbaGxsoMfOMJGt2qw4PtjFrMmEaq2Gm8At8oXiWEArBvh4fxdLiwt9G200GgTgZrOFSrWCdp+DJqZB+C7e93feblQM8C/nJ7BZl4c2pN+DiXRGRMSwS3HAjUYDD8USWq0+KRvQ8kKphGQ6O+CpH9sVB8ycvPIHUSiWexo1ZzHD63YJwco/FIVSy9eO2yUELRK7R/n749DA3juoKuA9rxsupwOVahWRWBzpbB4r1mWcHu7DZDIincvj202gY5vHtQkCnpmZETU6lckiFI0pWqtVBXx5cQbr0iKeXyr4cu3D0/MLnPYNHO56BKhYIoVgOPqKjF3PtnCSwaAXv/NsMBJFLl9QhG3VAJuMJhzteaE3GJBIpeELhoXB+zsebG86RI6HIneIJ1NdQGzLS2IfQ5uaEIrEcJ9KTzbgTfsG7Otros7Kc/ri9AhrKzbUanXxOwWu12KDsufZRq1eF/ms1FKF4cBtFPteN8zmWaXsFPew7/aFwkhlckPfqwpghioFi42FkmtiAb9XlihIbtcm2FaxW4rGE0r6o6+7VGH4PcBSN/Zftbovy4fcpDhglp4///6nW3mtS6L+MsxZagZpKkbtruTGjA0wc9q95YROpxuYm1H7Z1UA/3r5EfNzFjw+PeOvT59fgZK/gaX/YFjX6413wfOMpPL3yRT8ocjAjup1QBGG2R9/PDuGxWxGoVjCp6/Xr74lbxkr1RrMsya8VKr45gv0DG067vz4UDjwZ/uG8YAigOX9cTKTxbU/1LFFzi6biHA0Dq97S+Ry7qGAz1e+LrvPjw+wsbYqHhhU8lHev28vVwTwz/pjqRTN6HQdgFJ72W63u0Y8HCQ47OtgpqezOVzJnDcMo6oAPtzzYsvpQKvZhP82imQ6I77DCcjZ0QEs5lnRIrKf5nOQrH84ORQvJ7LIRwSbFd7DlpQPC7acX679ir6UaJMiDEv1tVKp4utNAOXHx1egyCSbf7nwMD/pjIX5ObTabfAsHUMVp/Axv1nilF4jA7bJ6qtcsEQobzkFWwTw9cYv6q98ycVJ+r1U/o6b4K0qYBVhWKqvvIwjV4YmVdnj2hJv2nqjAX8oLB7/8rVis8Lr2sTy0uKr2swQL5TKuIsnxL9Kr5EYZjnic2/OYhFTDYYz83bX7YLBYOiaOzN3HRtrcNrXsTg/3wH6UqmIMS2V2WQ0CowM8+fnF2RyeVD5q9WaIthHAizEymEXhlNRg5E7XJwcdYbs7JDuk2nx/l1fXRF1laClRSGjwEViCSFO8r9K6GdmOvuoAazfj09PAvwo04+RAEt5yrCVHgwcsjPMi+WyECl5LksIGA10kAT0LXUEvrPtEo7i7OvHuRquA+8PCPsJgZEA8wOsmwTM3O21pBJENS6WymLEOshfGehATk447mG09BoJ9QNU2jMy4EE+Ngl7NcCTwIKaNmgMq+ndSbhbY3gSWFDTBo1hNb07CXdrDE8CC2raoDGspncn4W6N4UlgQU0b/gULyF/S80DPdQAAAABJRU5ErkJggg=="},{author:"felixsuccess",link:"https://gitee.com/felixsuccess",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAABQUlEQVRoQ+2XPQrCQBBGJzewEI/gdbyFldewsPYAegeb1BpIJQg2EhAkFrESUYngTyIWqQQzC5Nl3P3SOjvMvPdtMEFnOizJoyfAwo7bhmHHBRMMw7BjBBBpx4R+rQPDMOwYAUTaMaF4aSHSiLRjBBqN9KLXp26rbYwsyy80iGYUZTvjs3UHsHAdIZPfK8PPsqD4kNIhv7KOn+43mmyWtD0fWfUmRVYMP4oXjdcxjVZzk9kaqcXCklirSMOwJFXDXoi0IbCf5d5GmgvRxl23EmnvFub+8fjUhWlC4T7hMjKus2LYRlS5m2NhLilOnbdvaUSaE4+GanCHJcHiDuN7WDJPvF64wzxO/1vVqGGNWLCwRiuSM8GwJE2NvWBYoxXJmWBYkqbGXjCs0YrkTDAsSVNjLxjWaEVyJhiWpKmxl3eG3xxIXeTQaqK1AAAAAElFTkSuQmCC"},{author:"Lu sharp",link:"https://gitee.com/xieyonghao1989",photo:"https://portrait.gitee.com/uploads/avatars/user/1601/4805222_xieyonghao1989_1627135464.png!avatar200"},{author:"happy1836",link:"https://gitee.com/happy1836",photo:"https://portrait.gitee.com/uploads/avatars/user/320/962909_happy1836_1617418156.jpeg!avatar200"},{author:"cxlong89",link:"https://gitee.com/cxlong07",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAADjklEQVRoQ+2YW0hUQRjH/3tz3Yu7ul5YXZUSK8vKRE0JtaBStLKXCoKigiLoQkQPIQbVW9KViNR6iogg6KnAisSH7OLlQTIo0UgyNVtX19va7upuzGwrkaln84wH1zngkzNzvt/3+87MfiPLrGzzYhE9Mg4c5La54SAXDG6YGw6yDPCSDjKhU3C4YW44yDLASzrIhPJNi5c0L+kgy8C8lfSmpTpsW2bAWnMojGo5FHIZTaVrwgubYwINXQ48eG/HlwEX0xQzB86I0+BUThRWRKnxm3FaoBGXB09ah3DtTR8zaKbAJSkGHF8fCZNGMWmztc+Jpu4xdNhdUMplyIzT0L8onRLEuccLVLcN40JtLxNoZsAbErQo2xiDGJ0S5Fr0o9WJK6+taOn9OQVEq5KjNC8aBclhtApImd9rHsCdpn7RoZkAE4DKHRasjFbTgNtsLpTVfJ/x+yRzLheakWXRUtOdg26ced4j+jfNBPhgegSOZJgQopBhyDmB8jorXrSPzGqrIFmPs7nRMKgVcHt8lqsaxbXMBPj2dguyLBoKWPd1FKere2aF9Q+oKrEg2RSCDrsbLz+P4GGLXfBcIQNFB14VrcalrWbEhqmYWRICNt0Y0YGLl4fRsiTfJDlmyl9Z8ax9eC4xijpXdODDGSYcSo+g3691dBzna3vR2DUmatBzWUx04KNZJhxYFwGVnAPPRYxoc0U3vGe1ESeyI6FRyhdHSW9J0qM033eWLopNK9Gowo2iOCQYfcfS/WY7KhptgkuSbHp71xhpB1Xf5UBFQz8cbo/g+bMNFL2kyQuvFsYif4mOvpvs0Meeds0Wx+T/rxfFIjfRN/dTnxP7H3cKnitkIBPgXalGnMyOpGdxID8tSc9cmhdDu6txj5f2x7fqhVeHZMAE9GZxHNLMof/dPHQPu3Gupvef3ZUQsHn7peV/0Z+NAGkP22xOauttp2NKLKSFJK1kTrx2YbaHfiLSMe1LC6elTR6yibXbXHj3zUEvAMJDFbT5T4/VQB/iGzPh8aK6fQQXF9oFgB96Z4oBpF20GFS0z53pIcfYow+DAe3qgZY3k03r7yCI4d2pRmxO0iPeqIJOJZ+83/Jf4pEj6G5TP36MjgfKEND4eQEOKCLGgzkw4wRLvjw3LLkCxgFww4wTLPny3LDkChgHwA0zTrDky3PDkitgHAA3zDjBki/PDUuugHEA3DDjBEu+/C+g49U0Ph0CkwAAAABJRU5ErkJggg=="},{author:"\u4ee3\u7801\u5c0f\u9752\u5e74-\u5c0f\u5b8b",link:"https://gitee.com/java_sxd",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAFEklEQVRoQ+2ZaWhcVRTH/2+beS8zzdKmaWqqMU6SVluX6JcqqFiQIqIIbhQVi5WKFCzGjUKhFTeU2tqKTRWXigoNLiiKxQVFEVQEt2JtszZpmqRJmq2Zefu7cm/MmMk6mXkzbxjfhfkwM/fNPb/zP/ecc+9wIz8UEfyPBucD57navsJ5LjB8hX2F88wDfkjnmaDTcHyFfYXzzAN+SOeZoH7SykhI80o1lJVvA8SA2dcIo+dAgqeFwiuhVO8DF1gOR21C9I91WQusjAAHV9QjeO7jAC/DHv0R0SM3JACJRddAqX11HDh2DGO/rWXf8wWroNS+BmKNQmt7lH3n9sgIcMFFjRBL1gOOBv3kC9C7dicFXHDhIYiL1wPg4Ght0Nq3wxr83FVm14HFkuuh1LwCTiqDozYj9vcGOGpLUsBM4QtehFB0FYMm1jD0rj0wTu11Ddp1YDmyG4HyjcxAo/cgtNb66ZlSCCN06TfgldqEkKYTOSEMuWY/pMU30jfjUdJ9AHrHTlegXQWmChWseg+8EgExeqA2PQBr5PsZDQ3X/cT2rGN0Qz2+ie31yUOpaYC09HaAE0GsQWht22D2N6YN7SqwXPUMAss3MyPN/g+hNt0/q4ETwHM5hkLTLaKf3DUt06dK7hpwgrp2FFr7EzBPvzurXQVrPoVYdDWI0Qu1+UFYw9/OOJeWuKk5IFVYtmXcuqb9T10JxB5jZcXsOzQ78OpPIBZfmzCX7l+xeB04qRRCuA6cWAJOrgQnLGKfEXMAWstDs26TZBzhCjCtq3JNA/hgBVtzJuCpMHy4DkJoDZ0NYqvg+ADbCnMNYg1Ba30Y5sDHybDNOMcVYGXlW5BKb2GlZDKwEL4MUtld4HhlXphE6wiIowGOzkKeOtDR2tnL7D3IEl2qI23gQPkmBM/fAU4oBODQfimuMB+sBO26wAcn2TeuKDgOHC8zJ9lnf2FhSuu2E2uCPfZrqjzzPpcW8Hgr+AaE0GpWL+2x3yEUro0DO2orU5hYZ1i9taNH4u2itOxuyFXPgxNCMAc+gnr8vnmNdWNCWsC075WW3sZUsoa/A9G7QEGSSVpi8XWgZYcLlMM++zOif9KWMvMjZWCahEKXfB1vHrSWrZCW3Axp2T1JAbPnJ7otvRPqsY0ZDeUJV6YMTH+AtpFS2QYY3fuhdzwFpfrlpIHp8/FabI9Ca30EZv/7GZc4LWBajoRFV7AGn46FAsuRlxAovxcgJvRT+6B3PJ3bwFOtWyhwoGIr5PO2sXOzNXiYnawyPdJSOF3ghIsArQ2xo3e42kbO5DxPgalBoYsPg175EDsKvWMHjJ7XMyqy58DByp0IVmwBOAnW0BeIHb1zGrAQvpydsc2hL2Gd+Swth3gOPPmGhJh9UJu3wBr6KgGKtq1yZA84sZjV+9hftI1NbXgOzMpT/C6LwOz/AGrT5gSayckt3a4sJ4Cl0lshR3ax4yCxRqB3PAmj9804tJvlKyeAWQ2Pt6k8HO0EtLbH4qHtZoOSM8AJBxF67jK6oXc+x46HtL7Tnpte3aZbunIGmKpME5hcvRd84Jx/w5kAxGIZnI7ZsvhC0ldOAcehq54FvcuauFCgn9M7au3E9jnvyZIBzzlgajQ9SQVW1ENachP7O4bondC7G2CeficZpjnnuAqctjVZ+AEfOAtO9nQJX2FP3Z+FxX2Fs+BkT5fwFfbU/VlY3Fc4C072dAlfYU/dn4XFfYWz4GRPl/gH3yAvHhm9fPcAAAAASUVORK5CYII="},{author:"\u82df\u5229\u56fd",link:"https://gitee.com/guo_li_guo",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAYAAAA4TnrqAAAEI0lEQVR4Xu2aWVMaQRSFD6KIiGzu+wKiUcuq5P/nKQ+pVCqb0bjiQlBAWQRxWFxIdbsUGoeZiz0o1r2vnOnl43T3ndtj+/jpcxUcpgjYGJYpTlLEsMyzYlgEVgyLYVEIELS8ZzEsAgGClJ3FsAgECFJ2FsMiECBI2VkMi0CAIGVnMSwCAYKUncWwCAQIUnZWK8DyuN1wuZxyqJpWQr5Q0B12Z6cDPk8PbDYbLi4vkc6cEqaoTvpizpqfncHI4ICcyVHyGBvbu7qzGhrow1xwGna7HedaEV++/1JHgNASw2JYBAIEqVJnLS/Mwe/1mOpe7D9tbW1Se319jWq13o2cDXb7jVbohN5MZHN5rPzZNCM1pVEK6/3SO/h9XlMdN0OUPc3hx+q6sq6UwmJnKftfHjbEp2EdsAG/DzYA6exNjsSwdGC5upxYmg/D3e1CsVTCQexIbtR+783+ls3lEE+e6KL29LhlTiYOhHKljMj+X4v8Xr9ZpXuWXleh6UmMjwzJDPzy8gqRgygO48kXmfBzOrUcVn9vAHOhaTg6OuQ4zzUNZwXtOWOu+6xw7Ekmg1Q6q7wPS2HVLj/lI9dp8LpaRTR2hN0D9UvVUlgL4SAG+/vk8mtWtCSsmclxTIwOy01ZLo10BqmM+qUh/oT29nZMjY3C4eiQ2f1eNCYPEdVhibNqQYkBZ05z+L2+haurK9Xjl+35fR4shEPodDhkH5uRPSSOU8r7Ug5remJMOkqUU0QUzjWsbW7L0opV0ZKwglMTMkW4e0EulcvY3Nm7T0QZ1i0B4aSluVkE/F65oZfLFWzs7MpEtNvlehYnUR09jCegFUtPttOSzhLAFmaDcLtd2IrsS0epqESUKxX82dpB9jT/dmA9NROGRVhUtbCOU2nT6UOX03l/UBg5q7ZG31Kn4WOOtbCMLiZqn60FwLAM3MmwDK68VDhLVDVEUpo8aYGk9KWXodGSJWy3/0mVZ/AM6xl/R7NPwzfjrEaZGwEQ76OTYyO3Zef6CWyjYxDPNXUZNjpQI1iyyiFgidcsg2y/0TE0HVb+rKD7fldvEkbvhuHgFEaHh+TtkVYs4uvPVUvKQU11FiUppTjgw/Ki/CRJRC5/hm8ra5THTWsthzUfmoG4yhIhqqWiiqkyHlRkxedLiaQsC1kRlsNqdNB9vX70BwJy2Yq7wsdhb7NjoK8XXm+P3KtEVC4usL4Vsax+9mphjQ0PQRQT776eMYIuau/Rw7gltzp3fb9aWAGfV9bVxSWEUYhXnFg8YSmoppyGRhPV+10UEhfDITidnTqSKoqlMsQJmzhJycqs1fFqnWX1xBtpn2ERqDEshkUgQJCysxgWgQBBys5iWAQCBCk7i2ERCBCk7CyGRSBAkLKzGBaBAEHKzmJYBAIEKTuLYREIEKTsLAKsf8ksXvuBkt22AAAAAElFTkSuQmCC"},{author:"Protear",link:"https://gitee.com/Protear",photo:"https://portrait.gitee.com/uploads/avatars/user/399/1199412_Protear_1578945941.jpg!avatar200"},{author:"Hawkins",link:"https://gitee.com/hawkinsyeah",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAABLElEQVRoQ+2YMQoCQQxFZ2sLwVbBWizEg2jjhQTv4F28gHgJsVestLFSkC0EcZ2EDGSzb+uZbPLfz0x2q8l690wdeioKDk4bwsEBJwhDOJgCWDoY0K9yIAzhYApg6WBAObSwNJYOpkARS2+W07SaD99SHS/3tNjus2TT7ssKXi+iYIlav9ZqSWn3SXKGsEQtCNcKaK2p3SeBhKUlamFpLK33i2RgkbyleA9Lkvlc29qCz7dHOpyuWXWPB700G/XFI2lWcEZLiUx/1mrvU+0+SerFe1jSixSc+VkJ4QYFsLTEHoyWjJb802rsmNZeSxbnQKkYRU7pUslaxKVgCxU9x4CwZzoWuUHYQkXPMSDsmY5FbhC2UNFzDAh7pmORG4QtVPQcA8Ke6Vjk1jnCL6gtiwgepIm4AAAAAElFTkSuQmCC"},{author:"q1a0mu",link:"https://gitee.com/jvkwb",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAEJklEQVRoQ+2YfUxTVxjGn9svCkWBIhTBD2SL28KyzZkscTNG8Stq/AyQyKLLNr/YshFJdMYsKMagqDEa59zATTRoFP9RY0KY82vTLYsj23SOOVxCQ6FNmS1IW2hpe5dzFBQVem9yD7mW03/vue95nvf39pz3vcKtXIgYRj+BG45y2pxwlAMGJ8wJR1kGeElHGdCn7HDCnHCUZYCXdJQB5YcWL2le0lGWgSEp6ZFvLUXSrNWIzXoT2vhkCFodTaPY40fwfht8d36C67tD8N6+wjy9TA3HvzEXluVliJ0wCRCEQc2IwQA1bK9aD7/tL2bGmRlOnv8pUvO2QBtvfkAzGEC39SZ8d66j6996CDo94l56G6ZXpsGQ9mJfQgL2RtiPFKHzt1omppkYNs9ZB0vBDmhNiYAootv6BxzHN8Hze90zTZjnFCI1fyt0Can0OUlM877lTEgrbjhm9ESMLa6BMfN1atZ7+zJsX7yHnnu2QYmNmDQP6WsroE8eQ9/rrD8Pa/kixSkrbtjy7k6MWlgMQatHj6sFtgMr4f3zkiThKUs2ISWvBBpDLELedjiqN8L9faWkd6UuUtzwC+X19DSGGIbrQgVaKwulaoEmdgSySq/CSA45AJ2/noO1fLHk96UsVNRwwpQ8pK/5ih5U4a77sH9bBPeVKik6+takrdyD5PlF9OoKOO7CWrYAfvs/smIMtlhRw6m5JUhZthmCPgaBtiY0781H190bssQm5XyA0e/vh8YYj5DHhdaKdej4+bSsGENmOH3t1zDPXE2vGHKXNq7Pli3U9GoOxnxyDHpzBsKBLjhrtuK/s7tkxxnoBUUJZxQeRlLOh3Qvz62LaNo2S7bQxw2Tu7vtTDmcp0pkx+GGH2ZAUcLDrqSVOLQSp61A+qqD9IoK+Tpgr/wI7ddOqLOkh921RDA8ajxEdFw/ieb9BZLpEKqZm2sR9/I7z0fjQVQ+3loG3a1oObTqmZNP5ud1MI5/jfbMztOltNcmE5aloAyaGBPC3R44qj+Dq+5LyQmTslDRQ4ts2G94GGDyIYNCxsdHoEuwUI0hrxvuy1Ugf4ne4cFz8wKats+V4kHWGsUNk92fnHz8LQ2wHy3uNx4mTi1A0uw1iJs4BYLO0E/0czUe9ionLSKZiXtnXNJE+G0N8P19Db7GXx59AMieAYMlq88wWdf+QzWcNVsijpSy0LK4h58UYMqejrQVu+n0I2i0g+oTQ0EgHKJ9eG+Zd944h3t1B2X340PWSw+00UAf8UivHOpwwtvwI9yXvqFmLfmlMGZNfvChT5R/0keizuQ/HGnTSM9JgkYt3ghDyjg4jm1Qb+MRyYganquSMMvEcMMss6uG2JywGiiw1MAJs8yuGmJzwmqgwFIDJ8wyu2qIzQmrgQJLDZwwy+yqITYnrAYKLDX8D5ShE0NvnoCPAAAAAElFTkSuQmCC"},{author:"\u56fe\u7075",link:"https://gitee.com/toling",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHgAAAB4CAYAAAA5ZDbSAAAJn0lEQVR4Xu2de1BU1x3Hv8hT5C1RQBEEqlF8ECk+ooImMaHOtKGp7bTpTGMnbcc/kmbS2mTSOm2m1rRNM2mn6UwezSTpmEen1TStGYI4BuuDKCKiCEGQl4C8H8obF+j8brPLLuzde+/uns3Jnd/9kz33d37n97nfc37n3HMufgveOjAFvkwbAT8GbFq2SsMYsLn5MmCT82XADNjsETB5+3gMZsAmj4DJm8cKZsAmj4DJm8cKZsAmj4DJm8cKZsAmj4DJm8cKZsAmj4DJm8cKZsAmj4DJm8cKZsAmj4DJm8cKZsAmj4DJm8cKZsAmj4DJm8cKZsAmj4DJm8cKZsAmj4DJm8cKZsAmj4DJm8cKZsAmj4DJm8cKZsDiI7BjcRqeXLMZcwMCxVfmgxoaB/rw/aLDPqhJuwopFPzN1FX43YZchAUGaXv8BShR09+Nrf9+TQpPGbAADAx4RlBZwQKess9MSqvgntFhdIwMimu5Fy0nhkUiPDDYZpEVrEPBp9oasavwXbcwvLDpK6i71YuXK8+5db/Rm049+CMsi4plwGqBc9ZFuwv45+u2Yc/K9QjyD0DXyBDeu3YJf64oxuDtcaPcdJdnwBqh8hbgexel4oW7dyIhNNxW48TUFN6oLsW+kmO6gRktyIB9AJi6yFez87AyeoFDbafbGvFI0SFWsNGn1pvlvaHg13K+jq8lr4CfnWM3hgewtzgfx1vrvOnuLFusYMEKfvHunfhW6moEzvG31TQ5NYWWoZteVW736BAOlJ1AeXebQ4sYsEDA1qQq2D9AqErJeNvwAB47fQTU7dtfDFgQ4MdWbcQTqzcjImh6DiqSMgN2M7rujME/XJGFn2VsRWRQiJu1Gr+NARuPmXKHUcBqyr01PoYDZUV462qZm55AeeHx/MZc5C1Nh7/fdMpG063D9Vfw+OkjnGQZja4RwPsyt4PUG6Iy5loToXdrLxl1wyXcDxoq8dTZAqdJG4/BXhiDSVn7s3YoarfPlulr5hNTkwjwm2OrhaZHz5w9ioLmGt2Qyf4r2Xm4Z1HqLOV+3FqHPSc/UM3IGbCHgGkR4/cbc7Fp4RKHeS7BPdXWgILrtXj6rmyH8bh9eBD7L3yMQ/VXNCFn3rEIz62/H2tj4x3sU7f80fWreOLMhy6nWwzYA8C7UlbhqYxsJIVHOViZGXxnSVf/+CheqijGX66cVfVg9/J1SrIWGzLPocztyQn8o64CPynO13xAGLAHgJ0lVGMTFrxTewnPnDvqYNlZWcvUJI5er8W+kkJQ1229aL2a1q1zEpY6dO/0O72YeP3T8/jtxf9qwqUCDNgDwHSrPTgtVZKS967dgqjguQ61Ng30408VZ0DJ1+OrNmFP+vpZqqUbqNzz5Sd1de3WChiwh4CtkL+atAJ/vHxGM3nKTVyGZ7PuxdLw6Fnd+rBlHGGBwQ5jLRUipRe3N+EXJcdAL+yNXAzYC4CNBJzKqiVmzuzQ1OqVyhK8dOUTo9Uo5Rnw5wA4IzYeu5dnYueSZS5XuyhZq+nvwr8aqvDPugqHcVovbQbsI8Ck2u+krcEDicuQHB7tMJ/VA4tg0z6wip52nGxrQH7TVV3AGbBAwLSL46GUdGWOHBca7hIqZd8tQ7eUHR96NtnTPPvm2AgaB/pR3d+F0q5WnOtsnjVGM2AvAqaul5KtrfHJSImIdpow2VdHkHpGh1DYfA0vV51T4BDgH6zIQu4S95Q+PjGBQcsYGm714Q/lp/DrrPt4050rxmpr0buLDuG+xWnIiV8KAkvbU51lwM5sj1huo6z7Bt5vqMTbNeWq1VvH6uz4ZM0eYKaRsx3NeLDgICdZWuOfGuDKvg48emcWAudMrzO7skVd8KeUMNVX4e3ai4Z3cxDsh9PWYnNcEpaERSHIf3qHyMx6hyzj2F9ahDevXmDA7gImBR9+4LvImB+vaoICXd3Xhf80VrsFVc0wvXygZVJ6+bAuNgExIaEO43tFbwfyCg4qDxGPwR6MwT9evQk/XbvV9nrQmumWd9/AkaZqvF9fabP+dEY29qRvwPjkBDqHB9E02A866UfJUUlHs66MWM1VGrcpmaOlTcrQaVr1XNkJngdrqZd+d/U+mJT0t+27QHuuCltqUdBcq7rSdOj+h5Xky9lFydao5Tb6xkfRPNiPupu9yhjtLCvW47N9GVawBwrWG2waP1/PeUhJxIxeoxMW9I6NKOCr+jpxoasVZ9qadCueAfsA8KN3fhm02yPUC4fIaenyyeJ8FDbX6npWGLAPAFMV1J1vS0jBmvlx+FLkfKRExChTH/q7/Y4PLWqXe9qx48M3tIrZfmfAPgLsqpot8cnIjE1Q5tMEPiE0AuFBs98q0Yb5gzUXlf1Xei8GLAFgZy6QsmkhZUtcEtJjFiJxXqQy5/5V6XH8/dplvXx5mqQVKSO7KsnW9oQUZapCR1OOtVzTMi/8d1awlxX8ak4e8pJXKlat0x9acKCN6fUDvajq7VSyYV/BZ8BeBEzdav7OR7A86g5NZRJ8WpOmg+DtIwMKdDo4RvNfo7s2XFXGgL0I+Ntpa/Cb9TscvomhSdpJAevct314QIFNCx4nWut1z315ocNA1I2Mwb/MvAffW36X7rdKBtywdfedI0NoGuzDxe42nO9s0ezqWcFeVLC9KZr6pEcvwOqYOKRG/n/OGxM8V/VYixHY9mXpiz+0P1rtpAQDFgRYzSy9GNgcnwQ6sUCfdEgMi/IIvNbCBwP2MWC16mjP1oYFidi4MFFJ0hbPi0BEUIjLbT60nfavVefxbOlx1VYwYEkAay12UFdPR2TsoVMGTmeTXH3ngwFLDNiZa9TFb1uUouzssExOKoB5muRuBuPGAXAPqhJyKyvYDQXX3uyZ9TUbIXS8YJQ2GcSFhtks8bcqZwSVvzbrhadMxYS0X5sV12TxllnBrGDxT9lnNUirYDo9QLsjvwhXSECAw44RVrAOBbv7OeHP44HgLNqNLJoBe+dRlaKLdvZvdWjr6t5PPvJOKwVbeXP7N5QdJtaL/62O4ICz+ekISKFgBiIuAgxYXGylsMyApcAgzgkGLC62UlhmwFJgEOcEAxYXWyksM2ApMIhzggGLi60UlhmwFBjEOcGAxcVWCssMWAoM4pxgwOJiK4VlBiwFBnFOMGBxsZXCMgOWAoM4JxiwuNhKYZkBS4FBnBMMWFxspbDMgKXAIM4JBiwutlJYZsBSYBDnBAMWF1spLDNgKTCIc4IBi4utFJYZsBQYxDnBgMXFVgrLDFgKDOKcYMDiYiuFZQYsBQZxTjBgcbGVwvL/APSrQgOy/FIvAAAAAElFTkSuQmCC"},{author:"lschen",link:"https://gitee.com/lschen",photo:"https://portrait.gitee.com/uploads/avatars/user/108/324352_lschen_1605073049.png!avatar200"},{author:"\u4f60\u660e\u660e\u5f88\u5b64\u5355\uff0c\u5374\u603b\u8bf4\u4e00\u4e2a\u4eba\u5f88\u597d\u3002",link:"https://gitee.com/heinan",photo:"https://portrait.gitee.com/uploads/avatars/user/378/1136157_heinan_1578941539.png!avatar200"},{author:"jovercao",link:"https://gitee.com/jovercao",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAACLUlEQVRoQ+2UPUhbcRTFz1MXrVR00TREpeJHNdQ66GCgtJNjOolDFQdBUBEqxUGKVgstNvUTGw1IgghGQVJFVMggDlJwqQ4Ojn5VKaWDxe/E90qyFFF4hveuf/h733z/l3PO79yn2J+/0nCPPoUNS06bCUsOGEyYCUuWAFdaMqDX7DBhJixZAlxpyYDyT4srzZWWLAHhlZ4ZG0ROtg2hUBjeiQCGvH7SiNkwabw3LGfCXGlzO8c3bG6e+tv4hvmG9VsSywTfcCxpmTHLN8w3bEaP/u/gGzY3T/1tUt3wiKsdxUX50DQNnwZGMRdcvpaAVIYDvn7kPs7C6dkZ+jzj8AcWrhjOsj2Cu/sdMq0WnJ9fwO2bhNf/Tb8WBiZIb9jzpQPlpc+gqhqm54L40DtyReqL8lJ0tjYiLTUFh3+P0NUzjODydwN29J+SGn5TX42aSicSEuLx6/cfvHe5sbL6I6rqQVIiOt42oOKlA3FxCrZ2fqKp7SO2d/f1VRuYIDX8tDAPn9tbYLWkRyVGKK5vbEYr/iQvB5nWDCiKgnD4EhOBebi++gxYud1TUsMRCZXOCjTXvUbKw+QbFamqipXVNbR29eD45PR2qg1MkRuOaHOUlaC2ygl7QW60yhGqF6EQdvYOMLO4hLGpWQMWYnt6J4Zjk0Q7zYZp8xW/nQmLZ0CrgAnT5it+OxMWz4BWAROmzVf8diYsngGtAiZMm6/47UxYPANaBUyYNl/x2/8BvCtgqNy/NWQAAAAASUVORK5CYII="},{author:"Lsl686",link:"https://gitee.com/lsl1686",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAABFklEQVRoQ+2UwQ0BYRCFZ08iDnrQgEKcFKAKd4k23DSgig09SHCTcBBEIjbWKsBhZ2UwZr89v53MvO+9P9mOOoXU6Es4ODhtCAcHLBCGcDAHiHQwoC/nQBjCwRwg0sGA8mgRaSIdzIGPRrrZ7Uu7N5ak0ZL8vJPjbCjZZvFTCznY0n4IE2nLPOlm0WGdTzoVHabDuqRYquiwpZt0mA5b5kk3iw7rfNKp6DAd1iXFUkWHLd2sdYcf15Nkq1SKPCv19L5fyiWdlOreEXwt0lWWu63ncpgOqvyi1nKw2qo/FX6UsEdPONgjFcudIGzppsdZEPZIxXInCFu66XEWhD1SsdwJwpZuepwFYY9ULHeCsKWbHmfVjvATUOxdeMexngcAAAAASUVORK5CYII="},{author:"\u5f13\u957f\u5f20",link:"https://gitee.com/zhd571",photo:"https://portrait.gitee.com/uploads/avatars/user/2878/8635946_zhd571_1619772181.png!avatar200"},{author:"Admin",link:"https://gitee.com/realsouce_m17621995364",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHgAAAB4CAYAAAA5ZDbSAAAGQklEQVR4Xu2caWhcVRTH/5PFxKRtWprUOCSpTdqmaVNHU6KUuFZShLqggv0guCCuRcENxEI/FCoKLqCICkq16BfBrVIEa+tCS7Gh1pA0i22qNGlMbdIYM0mzTSI3wjSv827mncybYc7hzLdk7nlzzv/3zn3n3nNnAsHvP5iCvsQqEFDAYtlOB6aAZfNVwML5KmAFLF0B4fHpM1gBC1dAeHiawQpYuALCw9MMVsDCFRAenmawAhaugPDwNIMVsHAFhIenGayAhSsgPDzNYAUsXAHh4WkGK2DhCggPTzNYAQtXQHh4msEKWLgCwsPTDFbAwhUQHp5msAIWroDw8DSDFbBwBYSHpxmsgIUrIDw8zWAFLFwB4eFpBitg4QoID090BtcULMG71TejJHdeDMaO4QE82LgXJ4cHRCMWDfiF8hpsWRpCdkZGDMTRyQje/OMo3v6zUQFzVeCLdZtw7cJiq/u//NODu4/s4RqeJ7/FZvBdxRXYUbkeBVk5ViEGJkaxtf0Qvuzp8CQWx0FiAb+yqg73BSuREQhEuUxOTTn+Nj/x9/WZDmxp/pEjO08+iwRcnleAj0L1qMgriIowNhlBS/gcQguKcAE50DUSxhPNP+DXgb89CcZtkEjATy69Es+V1yA3IzPKo3fsPD453YZHy9YiLzMr+v+JqUm8f6oZL59o4MbOk78iAe8KbcQthaUOAdrC/XikaV9MZptBzYN9uOfIHoQj455E4zRIHOANi0vwxuobUHTJpVEOM5+171TfhDsvq3BM00ORcew40YCPu1o5sfPkqzjA21Zcg4dL1yArcGHtOxyZmJ6Cd3a14IGSKmxdXov8zGyHQLvPnJx+Fkt7iQI8LzMbn6/bhOr5ix2cOkfCeLxpP3779yzMmN21t6Myf5FjjNRiSxTgey9fge0r12N+1uzZ6baEklpsiQLs9flaX1iG16quQ+GM57TUYksMYFtjoX2oH3c0fBNTIbttY0ostsQAfuqKEJ5ZdjVyZqx9zc7Vp93teLHtYEzt5DbeDNrX24n7G78TU2uJAeyWkWZz4/nWA9jbeyoG2FULivDe2g0ovaiVeHbsPJ5t+Rn7+7pEQBYB+LYly/DqqjoszHY2FuJ1i9ye2bNlPUfiIgC7VcVe+r22qlvSYQD2gN0aCybTvKxrbetmLzcHl2xmD/ihktV4aXmto4FAaQO67XwZePGmdwWcIgXcGguU5Y7b3rVxXUqxxTqDbXCo3SG3m0RKscUasJmaHyurdjQWDJhdp1unj+J4fbn1j42thGKLLWBbgTSXqdVWqEkottgCti1xDpzrxuaj33pN3ui416uux+bgSkefWEKxxRaw2yYFmaoHA+4nL1kCtm0zeuBFHkJZcpEvngIDloBtjYJk6eVl0yRZn53odVkCjveNhURFudie82EAdoBtzXrzrOweGUqYrfkmRDA3P+Y61LV1wo74dAF2gN0aC34+J22H8gYnxrHt90P47K/jPkmfmsuwAmxbr/opvu1Qnp83UWrQ/v8prADbssvv6dNtljBicSy2WAFO1Z6x7TnPsdhiA7huURBvrbkRxTl5jhkuWRsRtkrd79ki2dM1G8BujQUjTtNgH249/JXvOtl+HYDSivTdqTlckAVgW2PBTJkfdh7D9uOH5xD67Caz/b4Hp5OXLADbvq0/l84R5U7YGarHxsKyGJNkfy7Fx3hjWQC2NRaSfazGVrVzOgyQ9oBtjYVUVLS2NbHJGi6HAdIesK2x0DM6jKeP/YSD/d3xZqmE3retibkcBkh7wLblSqoKHduhenPXpMqHRO7QtAZsO1SX6uyx3WQciq20BpzInau2DPeiFRpdAc1gumasLBQwK1x0ZxUwXTNWFgqYFS66swqYrhkrCwXMChfdWQVM14yVhQJmhYvurAKma8bKQgGzwkV3VgHTNWNloYBZ4aI7q4DpmrGyUMCscNGdVcB0zVhZKGBWuOjOKmC6ZqwsFDArXHRnFTBdM1YWCpgVLrqzCpiuGSsLBcwKF91ZBUzXjJWFAmaFi+6sAqZrxspCAbPCRXdWAdM1Y2WhgFnhojurgOmasbJQwKxw0Z1VwHTNWFkoYFa46M4qYLpmrCwUMCtcdGcVMF0zVhYKmBUuurMKmK4ZK4v/AJpbnp4nrI3pAAAAAElFTkSuQmCC"},{author:"wuweilie",link:"https://gitee.com/wuweilie",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAEgElEQVRoQ+1Za2hURxg9d5/ZbLLbxM3GmERFi8YQgqUGUTQSqogQRRELIq2IoBBaLFgKisVKpS1VQUF8oYj2h9BiFY2IqIjPtqj4QCRqK1FjzKsbE7N57OPeMjfMOu7du9ndO6buOvdPyGa+ued85zvzfbORpux5pOA9eiRBOMPVFgpnuMAQCguFMywDoqQzTFANHaGwUDjDMiBKOsMEFYeWKGlR0hmWAVHSyQiabTXh4KISjMuzISwrOHKvCzv+6NDdorzAjp/mjERRrlVd4+sLY/PFNlx+4teNWV2Vj+WT82A1SXjcGcCKY03oDcrJwHxjrWGFt80tQvVYp7rppUY/1p55oQvm0wo3vpg6Ag6LSV0TlBUcut2Jvdd9ujE/zB6JOeNz1L+f/acH68+1pEyWBBomzCrQ+DKA5b/rK/DtLC/ml7kgMZCHStKRJaPxYb4toeQkkgnDhGeOcWLDLC/yHeYhS/SXxaUo89jR7g+p2AqcFjzrCuKr08142hXU4E1m70TIclGYbEJVCIQVHLzVif03tSXKgr/R3KfimzLKAX9AxtZrHah/0K3B/PnkPKz6OB92i4SGjgF8dvRZorx01xlWmOzM+qz+4StsutCqeSEtfbMk4ej9LvXvi8vd6k/y+89X2jUxG2sKUTshF+Q/BScbuvH9xbZ3gzCrxN3Wfqw83qQBRg83qihZ8PV0D5w2E/RiqAX6QjJ2/vUvfr03mCgjDxeFp5Zk47saLzzZFrT5Q9hwvhW3XgyWLXlGu63YPm8USt3WiGfJ5/Qz4umNF1px/fnrmKpiBzbVFKo+j7VnqqS5ECYvp2qQHrntWgdONLz2ZO1EV0RN9lSmqg+EFOy76cPh250RHmwL06uAVEhzI0xbjqJoPfnNjALVr2Hlzb7LtrToHru+2ouFk1yItV8qRGkMN8Ksj/9s6sWXp5ojuA4sLEFlYZambbEnd/QURWPineKpEOdGmPUc21s/KnJg8yeF8Dot+NsXwNLfnkZwsqNp90AYP15qx7nHPWBH0Hh9+n8lTF5OVWHBs16MNRrSlsbO4gvKXFg73QOSkOhqSYUkG8NNYbIp9V2QGUCotwMxDiYSw1qBHmjU84oy9IUk2QRwJRxLTXacjG49BCxrBTqLb51bpH7OVkqyxPTWcyXMeo+Mgvtu+CJzdrzWwh5qW662o65qhNqzeVwHo4lzJUw23z2/WJ2RybBQ/+AVllV+AKt5cJyMNT6SGFrCxApkXe3EXLjsZi7XwbdOmILvD8m409KPaaXZcS8IBBC1QpbFhLst/Sj32iHL0AwjPMqau8J0qrJZJPQGZLizzHGvgIQEa4WegIwcm2nIq2aq5LkTjv4ahwAjM3Jd/fO4GHfVFqsHFX14XQffekmTF7DgE/mui8SsmebB0go3zCaJ63VwWAiz4BNtLbPH5WBddYF6WPG8Dg4L4VT9NRxx3D08HKCNvEMQNpK9dIgVCqeDSkYwCoWNZC8dYoXC6aCSEYxCYSPZS4dYoXA6qGQEo1DYSPbSIVYonA4qGcH4H5hd4UNLnYN8AAAAAElFTkSuQmCC"},{author:"Allen",link:"https://gitee.com/xiaoxiongcn",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAC2UlEQVRoQ+2ZX0hTURzHv3fO1sI5QWUirTQLoxYz1CKCCANfLCR66CGIoofwoaB6KAp6M3qqhygKgsjooYeCwAi0P1hJkJYsltOwLJ0jTaVLtlpzd3EvTY4JNun+fhdu5zzt4YzfPt/v73x/5zCl9MHVNP6jpUhgm7stHba5wZAOS4dtpoBsaZsZOgdHOiwdtpkCsqVtZqgMLdnSsqVtpgBrS+8sqUBz5SZ4nS5Dxofjw9gbamOVlBX4YmArGn0VUH4jfv75HUd7n+DRRJQNmg14xRIvblTVo8ydj2+pJNwOpwF5M9aPE32d9gM+VBbEkfL1cDly0DE5gqCnCAW5LoS/TmDXy3uYSiVZoNkcbgnWY1uRH0lNw6WPr43PAU+h4XbzQBeuRyP2Aa4rXIpza7ageJEbnxJxHH7TgR2+cuwprYRDUVjDi8Xh06s24IB/LZyKA88mY9jdcx9iYnOGFzlwXk4ublc3GO2b0FI4P9iDCx9CRvverdmOGq8PWjrNFl7kwKKT0R9TaAo/xit1zAA+ubIWB5cFDOe5woscWJy9beND2B9qnwkn8WxzhRcpsDh746lpnBnowrVo76w0zqQ3182LFFicve/iKvaF2vE+rs4CFvdwhBcpcMY9/f/YW7G3OBZ5OmfWil2gh1fLSASn+p+TzWQyYPF8LuTXU4cXGbA4excCTB1eJMDi7NXb9IU6Cn0kzbdqvT4sd3vIn40kwOLs/ZJM4HhfJ1rHBucFPrt688xVkzK8SIDF2dutjqKxu/WvXS2eecrwMh1YTN3ptIYrQ2Fj/maz7lQ3YGNBibGVKrxMB/6XuSp+lyq8TAcWb06Zl1E27up7qvKLcXldHfyL88jCy1Rg8Rz++TLKFlo8/xThZSpwtlBW7pPAVqrPUVs6zKGylTWkw1aqz1FbOsyhspU1pMNWqs9RWzrMobKVNaTDVqrPUVs6zKGylTWkw1aqz1H7F/cNyMim1YwnAAAAAElFTkSuQmCC"},{author:"Harbor",link:"https://gitee.com/ZHarbor",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAABLElEQVRoQ+2YMQoCQQxFZ2sLwVbBWizEg2jjhQTv4F28gHgJsVestLFSkC0EcZ2EDGSzb+uZbPLfz0x2q8l690wdeioKDk4bwsEBJwhDOJgCWDoY0K9yIAzhYApg6WBAObSwNJYOpkARS2+W07SaD99SHS/3tNjus2TT7ssKXi+iYIlav9ZqSWn3SXKGsEQtCNcKaK2p3SeBhKUlamFpLK33i2RgkbyleA9Lkvlc29qCz7dHOpyuWXWPB700G/XFI2lWcEZLiUx/1mrvU+0+SerFe1jSixSc+VkJ4QYFsLTEHoyWjJb802rsmNZeSxbnQKkYRU7pUslaxKVgCxU9x4CwZzoWuUHYQkXPMSDsmY5FbhC2UNFzDAh7pmORG4QtVPQcA8Ke6Vjk1jnCL6gtiwgepIm4AAAAAElFTkSuQmCC"},{author:"zgrjhwei",link:"https://gitee.com/JawsMan",photo:"https://portrait.gitee.com/uploads/avatars/user/321/963438_JawsMan_1578936905.png!avatar200"},{author:"lzh6hao0",link:"https://gitee.com/lzh6hao0",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAABFklEQVRoQ+2UwQ0BYRCFZ08iDnrQgEKcFKAKd4k23DSgig09SHCTcBBEIjbWKsBhZ2UwZr89v53MvO+9P9mOOoXU6Es4ODhtCAcHLBCGcDAHiHQwoC/nQBjCwRwg0sGA8mgRaSIdzIGPRrrZ7Uu7N5ak0ZL8vJPjbCjZZvFTCznY0n4IE2nLPOlm0WGdTzoVHabDuqRYquiwpZt0mA5b5kk3iw7rfNKp6DAd1iXFUkWHLd2sdYcf15Nkq1SKPCv19L5fyiWdlOreEXwt0lWWu63ncpgOqvyi1nKw2qo/FX6UsEdPONgjFcudIGzppsdZEPZIxXInCFu66XEWhD1SsdwJwpZuepwFYY9ULHeCsKWbHmfVjvATUOxdeMexngcAAAAASUVORK5CYII="},{author:"Quber",link:"https://gitee.com/quber",photo:"https://portrait.gitee.com/uploads/avatars/user/43/131042_quber_1578918939.png!avatar200"},{author:"\u8a79\u6960",link:"https://gitee.com/zhannan",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAE/0lEQVRoQ+2Yf1BUVRTHv7sL7PJL5IeSMlnmaIoRamDAhOwAAhEMOiFjOpg4ZAmmRRtG47SBglmSIOZkTJK/JlOkjB9SLCKK6MBIEkliMaACUSg5jgbL7kJzr7M7K6Ds7ntv2Fnf/ffdc975nO+55/4Q+Ly8agiP0RDwwBauNq+whQsMXmFeYQvLAF/SFiboCBxeYV5hC8sAX9IWJijftDgr6enTPPBJWjKeecoDvbfvYNvub3C69uK4FxAnwHa2Eny2eQN853lCpVLj8Pfl2LO/cNxhSQCsAxNYecobkPovgFAoNBmy/lIzkj7cbrL9wwxZBSawmZuSEODjRf/X2d2DfuWAQUELBAJMdXcD8TE0NETLPzUzzyBbYyaxBuw1ewZkb8Vjzsyn7wd8vgHpn+fjv77+MePRTxSxraq9iC05XxtkO6bzYRNYAY59JRiJK5bA1dkJKrUapZXnkJm7z6BYSHOTv5sIz1nTMaBS4Yfyauz48pBBtqZMYgQ82c0FsjdXYpHffIhEIlP+b5QNSeb+Y6XYe7DIKDv9yYyA02VrESH1p82p59a/sJVI4GBviwGVGmq1etSgRCIhNJrBUb+RdUxK+mFD2/ELviseH2Dt2iN/P1aiwOaNazDJ1RnDOyyZtywqBEsipJgy2RVFJ6vw6Z6DDwQdFuSH1HXxEAgFaL7ahlJFDcpPnzcZjPMu7evtCaK4PjABDJf64blnZ0AitqExkK59oaEJRWVVNAGODnaQZeRiaYQU8bGRcJk4AURpMu7e68NvLa04XnaKtUMLo5LWz6I+8K+//4FJLs6Y4u5Gp5Ay7e65BcWZOhz5sQL/3OzF6rgoJK6IgUgoogeT3QVH6VxpwAuIDg3EAq/ZdHmQQdbuoeMnWTm8cAJMSrq9owvhQf64dPkqihVnRyhEynzXFhm8PWfiWsdfSEnPwfXObl0OyffI4ABEL15E9+aMnfloutLKuMQ5AX5U09KPmDQ7sY21rtQf1bDIJLKn78z/Fj9XXzAZnBNgk6MZw5AAb//iAMpOnTP5F5wAc3UONplSz5AT4BJFDSpr6rBmeYyuOzMJlnT2fUdOoKaukYkbassJ8ImfqtHQ1IJNyatow2E62ChlbQysAYcGLkTa+tV0XyXn4ay8AqacnNizBhwXHYr1CXGwshLR825tfSPdUsTi+12YyVAqVSiuOGNe29LGxOV4LSYMygEVsvcehlqtseySzv7oHXprutl7Gx9n56PtRhfmzZ0FKxZuUWqNhh5gyAmN6WClpKd5PIGc9BQ8OdUdV/5sR/wGOaIWB8LXew7T+HT2re0dOFBYxtgfK8CxUSF4OyEOthIxiivO0tcKcnOKCQ9iHKDWAVt7OyvAW1PXISzoRfT1K5FXcBSFJZU64Dt376Hul8v0NcPYYWNtjYXz52KCg/2IK6exvljblgJ8noc8JREuE53Q0noNa1Oz6JlXqzB5GJDv+Ar1jc1GxzjaldNoJ8MMGCu8LS0ZIS/50lcM/WueRQK/GhmM5IRlcLS3w42uv/FeRi7arnfSnGqBBwcHDX6qHU098nBAblVmsYaTXo/FyqUR9Flm+OOaRQITRbI+SIKTowPe37rrgXdkiyxpAkwuBw72dqwcCpg2JEPsGTctQ35iTnN4YHNSg4tYeIW5yKo5+eQVNic1uIiFV5iLrJqTT15hc1KDi1h4hbnIqjn5fOwU/h+CknBz3oUTtgAAAABJRU5ErkJggg=="},{author:"\u7f04\u9ed8",link:"https://gitee.com/alianyone",photo:"https://portrait.gitee.com/uploads/avatars/user/394/1184966_alianyone_1622020310.png!avatar200",extra:"\u6700\u4f73\u8d21\u732e\u8005"},{author:"Vict0r-Chen",link:"https://gitee.com/Victor-Chen",photo:"https://portrait.gitee.com/uploads/avatars/user/2734/8203800_Victor-Chen_1614760866.png!avatar200"},{author:"\u84dd\u9cb8",link:"https://gitee.com/weiruan666",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAADvklEQVRoQ+1ZS0wTURQ9taVU0hpA678o+KEFpWj8ix8ETTAqC41Rg58YFxrjxoUL48qdn6AGY0w0bnRlYmLE+AniB4mKIZZvABsBqVWwlIK2tIV2MDPahpYWO9MZx7Tvbefeuffcc+a9d+9ISgvvjSCOloQAjnG2CcMxTjAIw4ThGKsAkXSMEToGDmGYMBxjFSCSjjFCyaYluKQP3CzE5DmT0GX4jnunqkMKaPPJpVhUNBdDgx48L6tDy7MuwYRGALMprX57BrKL5kIqlYR1mzQ9CfKkBDgH3HBYXSHtElVyqNQTQXko9H9zgBqmwr7PWP0V7263sEkzwDYqhtcczMKyPQshlU3gnABbx6bHnago/cDWzW8fFeC4YziSMsfdppW+cjoUKjnsvU6Y6iwBNUqZrYSuIA22L3ZAAlBeCuYmK+wWZyS15GQTlaRHR8zeMgeaJWq4fg6h/kH7bxAAfN+5d4gac+TkFs9D3pFsyBKlaCjvYJ4LvXgD7DtLaSafnKv1szke4K2nlyNzowYu+xAqLxvwscosNF7+ZlpsAdNyLj67GikaFSjvCDxu71/BOqxOVFwywNzY+1fbcAaiMbxibyZWlmghk0sjTj5YPRE7jjIUDfDu0vWYtXgKBm1uPL1Yi873PVzyZ+0jCmDtJg3yT+RCoUxAR0037p95g5xt6VhzKAuWTwN4ea0B1s8/WIOJxEEUwDvP5yFtyVS47MN4UVaH1ucm7LqwDhq9mjmeHH0u1NxpRX15eyQYWNn8c8AKVQLWHs5GgkIW0EHJk2TYcDQH2gIN8117PRSMVWZUXjEwXRRf658D1u/IwAxdKtz2Yby+0YjGR50BWOg2cfV+HZTqicAI0GO04dllA74b+3nBzBvgVft1WJA3E4P9blTfakZPmy3kxcNUb8HGYznMMUSf16EWXZD843qo5yczcn96PrQdlwrwBphL8PF8aInT186Wyq7/U9J08vuu5jMXCT7XsMuDV9cb0PbiCy+v5ZVhX2fES2Z/XsL32EcQwF+brWh42OHHPSMrlZlZ0ZOM2rtGDHQ7/M9WlWiRPEvJ3KPb334b4xOq6YimoIIADh7YjddA+FQRPMkYz4cAZlEBwjCLYo0xDTfOiRlJT8tMQeqoY8i3AfG5aQVvdH2mn/5LDRdyopK0r+nnEpirj6hj2k0ncqErTOOaOyc/+jdMNLOvqBjmlLHITgSwyAQIHp4wLHiJRQ5AGBaZAMHDE4YFL7HIAQjDIhMgeHjCsOAlFjkAYVhkAgQPH3cM/wL75RLydwN+BQAAAABJRU5ErkJggg=="},{author:"qintaie",link:"https://gitee.com/qintaie",photo:"https://portrait.gitee.com/uploads/avatars/user/2505/7516847_qintaie_1622905215.png!avatar200"},{author:"tong-soul",link:"https://gitee.com/tongsoul",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAABDklEQVRoQ+2YsQ2DQBAEl2LIKIAcOqEHiqAGSoEKSAnoxpaIbIxI/OuzniEF9ridvZOeQtJDN7oKGs6cNoQzBywIQzgzB4h0ZkA/2oEwhDNzgEhnBpSlRaSJdGYOWCI9TZOapvnKqnme1bbtVxpnL9NwCkv7vldVVadSZVmqruv93rZtWpbl9Ll1XTUMQ4rPedOwEL76ynEc1XXd/ogrtlf1aTh5hg6CEDZsYiL94gAzzAwndoClxdJKHKmDHEvL66/EDDPD3owxw15/mWHLbxwODxwe3IP7R/o/39LRvdNwNAF3fQi7HY7Wh3A0AXd9CLsdjtaHcDQBd30Iux2O1odwNAF3fQi7HY7Wvx3hJ/NRxgHWkOqQAAAAAElFTkSuQmCC"},{author:"\u9773\u654f\u6770",link:"https://gitee.com/jmj1991",photo:"https://portrait.gitee.com/uploads/avatars/user/2545/7636803_jmj1991_1596199057.png!avatar200"},{author:"\u51b7\u822a",link:"https://gitee.com/yiweichuangxiang_18053232080",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHgAAAB4CAYAAAA5ZDbSAAAKsUlEQVR4Xu2d+VMUSRbHHyKKooLIpbTcRwPN3U2DnHMRM8z+NBETG/uH7Z+w+8vGbsRO7DGrq6IiyH2NDR4IIggIg7KguCKy8a2N7qnurqqu7IPKrMn8EbOz3nuffHm8zJcm/f4PfzwiWWxrgSQJ2LZsFcUkYHvzlYBtzlcCloDtbgGb6yfnYAnY5hawuXrSgyVgm1vA5upJD5aAbW4Bm6snPVgCtrkFbK6e9GAJ2OYWsLl60oMlYJtbwObqSQ+WgG1uAZurJz1YAra5BWyunvRgCdjmFrC5etKDJWCbW8Dm6kkPloBtbgGbqyc9WAK2uQVsrp70YAnYvhbIzcqi1vo6Sj19OkjJF2vrNDg5aQvFf9Ue3O3xUHVZKSUlJQVgfjg4oKGpKXr45KkELLIF8nNz6cu2Nko7eyZIjaOjIwXu3bExkdULyP6r9eDejnYqKyjQhLj//j3dGR2lZy9WhIfMBeCCK5epvamJ/rO3R9fvD9LBwUFCDVtVWkLXGhvp9KlTut9ZWV+nf94bSLgsCVWUhwz/iqIiamtsoLQz/x8q115tUv/oKL3e2UmI7hnnz1NvRwdlXcwItI9h+dPRESWfOBH42+HhIU3Nz9Pw9ExC5DiuRi31YHhSa309nUlNDdJ36/UbZYjc2NqKux0+83rJWVIctLDCyLG0+pJc5WV0QgV579076h8ZoeWXa3GX47gatBRwXWUFeWprNYfKnd1dujc+Hlfj1pSXKR1KPTR/+vSJpubmadzno9/0dNPl7Owg269tbtLf+u8IO1RbChiWNIK8+/at4snx8KCL6enU19VJ6efP6wIsLyykLo87qANg+H68tEQ3hx4cl9PF9TuWA4Y2jdVV1FxTQ6dSUsKUwzB5b2ycFleiX9GmpKTQN50d5MjLC2pfa7Xc3tRItRUVQUO1yPMxF4BhdU+tixqcTgKM0BIr5C/aWgmLOXVAQw+aXmf474cP9GB6WrgACDeAAdVbX6dATk5OjhvkHm8LOYuLgzwSjRttg7Bt62lpoXNnz4Z5PCDPLTyL6zCayMa4AgxFu9xuwupaDzLLqratoUGZ40Pb+vnNG2W/bbQV01qQQb63+/s0NDmlzMsiFO4Aw2haQ6rfmPC8H27djmhbvY7CsvXRG1Ewd4viyVwC1poHsZpdXlszFenSG5ajmUf1OhuibQiEjM7+FLGzWVmBS8AwCLY1ve3X6FJGBmGvOr+4SP3DI4a2QsfAbwouXw5aUOFHOCUaf/iQJn1zShto3+2qUeZiozkVbX7e6qUShyOsTcj1aHGJBiYmuN0ncwvYD6Hb46bVjY2InoKz3c7mZsq5lBnWCUK9zVVeTu5aF51NTSUzQ7ZRx8HHXv28rQRlEhF5i9X7uQZsVjkAwzYrNOSJ34fChTdiy6QOSZpZdEWCjBFi9vFj7mLXQgPGNqajuYmKHA46oTq093cMzLmjs7M08+hxoK8gNNpUXRW2sjZzegTIGFHKCgs1v4ePII4+PT+nDN08FGEBV5WWKl4bulf1G9VoO6O1cGIJSXa6mwnfP6mxX8f3cTK1ub1NozOzysLQyiIcYCygmmqqKS87W9eLtnd26N7YGK1uvNK0rV60iiUkifBqU3W14ZkyOg2G/5+ePCHf0wVLOAsDGKvelrpaKrpyRTMIAuvBoLgwh2AIFk9GRe/wgWUrlZ+bQ51uN2Wmpxt+y8zwnyj6wgDW8zq/YT4eHtLcwoJyMGG26EWrcD58Y3DI1KoYcvV4PFRacDUsHAo5zCzgzMobTT1hAPu3Tf69sVpZABmZmY0qfKh1eoS2Wb0OczKmjvRz5wKimdmCRQON5TdCAYZi6oMALGaWVlZoYHwi4pCsZxS9kYFl0eVvG23hnnVlcbEyXfBw+iQcYBgTMeJih4Om5x8pw3KsBVdosbJWr8hj2dci6II7XzzcrRYScKxAtX6PUydvfT2lnDxJm9uvaXByQncVnojvJ6pNCVhlWVzdRRmZneU2tszaEbgFjG3MhbQ0ev7yJatOsr7KAtwCxp63saqK9vb3lSABggWJvhBvx57BLeDe9nYqK/wlteTg40dl64J9rj+IgSuwaSHXaqyEdHj4keaeLZraPx+XnNwC/m3fN8pZsLqsb23RX67fCPzpd9/2Kee6vBSMMEha4+WgAXbhEnBRfj595m0JOv7TyvqTgCN3bS4Bu10uanbVBOUKYV+KgMb8s19uNErAggIOnX+hBlJZ/t5/h97s7sohOjLXQA0uPVhr/l1aWaV/3L3LoFpiquIEqcvjoYsXLoR9AIf9NwaNr+MmRir9VrkDrDX/4nLbhM+nHChYWRCC7GnxhC3+IJPVp0Z6duEOMPa/OEhX35nCPeTbwyO0tLpqGV/1Lc9QIQC3fyQx6a6xKswd4L6uLipy5Afphdjwn378MVZdo/494H517VpQ0ri/sUSkuUYtqMYPuQKM7Ptve7rDUjxxb/n28HA89TbdlhHceKa3mhaIsSJXgMuLCglPG6nTSBHBejA1rVxJPe4CuF+0einn0qWwT/NwmG/GHlwBRj4RrtGo0zzhJf8aGFAul5spuGmJToGs/ViKHeBCf64Af9f7FeVlZQVxWVnfoB9u3TLFSv16Dq7x4IAiGtBGcGV2oSkU4ZW0HibDlZyZ+UemnhXUej0HX2EFbQRXpKxCv4W58WDcM0bWgfoyOa6wYvuxsLwcsdtovZ6j/hFWu7jiA6/WK0ZwWa7TRhT2GCtwA1grPIkL7H++fsPUOXB3i0d5uc7ocTPYFW1q3eWyI1xu5mAMr33dXZQREv57+nyZrt+/b7q/49IcAiUlV69qPuiibkidQ2S0FRLVc7kaop0lJUoSmXp7hIvsSBzz5/Oapkyk3I5sbain4vx8zUdd/G1hjt/afk0pJ5M1z5W1ktdY5OChLhdDtNazvm/f7dO/h4aU3OBoCzzT43JRsSNfN91Fr+3QhPFoZbD6d1wA/v7rryk782KQLeIZnsQhgbeulq7k5Giml4RCsAtcLubg0oIC5YQmdHGUiPAkMhM9dbWUnZmpm5kIo+DqzeLqqhJBi5TEZrWHRvq+5R6MZ33rnJVBBk90eBJ5RPXOyohZgZiD8VzSg+kZUyv5SMa24t8tB6wVvWINT0ZruMbqampwVmo+/aBu893798rWatLni/ZTlv3OUsBIJPu8tVV5DEVdWMKTsVpOnTCm9Vamuv2dvT2aeOiLSz5UrHKb/b2lgCEkrsC4Kiroal6esk2y6v9MwEIMzyo5cnMjrrjxcsBfb940a2NL61kO2K89PAmv5SCDH+HEJ8+fW2IYLMSQhBa6qvcLw/LMgyUKhHyUG8A8GEMtg978zJoYbrVeErABgdDQJ7ZMeBg8luDLcQOXgE1YHPNzY5WTXqyvc5HUbULkQBUJmMVaAtaVgAWExiKyBMxiLQHrSsACQmMRWQJmsZaAdSVgAaGxiCwBs1hLwLoSsIDQWESWgFmsJWBdCVhAaCwiS8As1hKwrgQsIDQWkSVgFmsJWFcCFhAai8gSMIu1BKwrAQsIjUVkCZjFWgLWlYAFhMYisgTMYi0B60rAAkJjEVkCZrGWgHUlYAGhsYgsAbNYS8C6ErCA0FhEloBZrCVgXQlYQGgsIkvALNYSsK4ELCA0FpElYBZrCVhXAhYQGovI/wPS9vpMRiSt0AAAAABJRU5ErkJggg=="},{author:"\u98ce\u96e8\u58f0",link:"https://gitee.com/jojonb",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAYAAAA4TnrqAAAFn0lEQVR4Xu2caY/bVBSGX2/xkmQ6ZZFYRVnKUg1SS1nECDq0LP2ABH+Rv4AEYqcLVQtSgSLaIkBQoGUpUNrEiZ3EGzrXdmJ7nDhX8VSQ3PtlRpMT5/rJe899z7nWSH+/0YkgxlwEJAFrLk4sSMCan5WAxcFKwBKweAhwxIqcJWBxEOAIFcoSsDgIcIQKZQlYHAQ4QoWyBCwOAhyhQlkCFgcBjlChLAGLgwBHqFCWgMVBgCNUKOu/AEu9TYGyS+aYygKhEeD/EyC4ES5wkeq37piyWpsm9L1a9QzqiAgB9+shnHPDOq429RoCFgfemwIrdCJ4v/sc06oOlRRAu0uF1JCAZVIW5ZIbb/aqCXBEaHeqaD1nQrYErBw2Y18DSlOGe2GE0ImT+ErAkjQJ1hM6ZEtG75SLyJv99ICyJqN9xGI7azSK4J4fsWS+9LCUdRm0S6q3K0AEDL4dof/ZYObiaz5lwHi0AchgsCh++KO3/LBIVe3DJrtRGnTzzhdDBq1sENT2IRNyK/Zroys+7I+c1VmG2t0qWpsGW4Y0gusB7JNuqaFsPmPAeKQBSEA0TFR1yVsdWHSn1n4dxoYO2v6ZYn7yYJ9wc+LK5aSSmKXPWVkalLQb9ybLMQAG5/MOPPt6OIjQP+Ni9MvEq60ULEr27S0L9JMGWYLe6QG8X30YDzdgHdRjwxmBJXTaObNjpWDRjVM+IhvBoADM5fdODdA+YkK9NV6jYS9kOc3/K1htWHT35ML1BzSWxKls8f7wod2hMqvAypgLQ7ZjFsfKKYsAsOV4yISyO8n2GSr+tQDd95xS47qSsIgNtXKaTxrj5Tj2YJ8PMfiu3IOtLCyC03zWgLE39lQsf/3mo/tBbEDLxlLBWnvZYi0UGv6fATrv9KfeOFuKhy1QHZiOKne/XLBescZlDe1y3fenq6S9ZaKxZ3tXlVo79gmn1N2vJCzjscQ+qPH6I78lm3K8HMljXfLQ+yTvsShuqWCtv94aG86ycoZuuFgoh/3YmJL3Sn3WtOW4NLCou7Dr1eb4dGf4vYfe6bw6tnUgMiWPfr8GKqIlPVZb0A1hH8svx6WBlbuRCHAvjuCczfetSD3GvkwxfdmH/fEkr2U7DgSsqM5psGiToNdGl/1xV3XqzsL5wo4cWOgPJsrQJERBfEzlfjVx4UVfVZbISXlrR63JcvST3tc3se+aBiv9O6kyuBagf3awrVTiZDQO3xFY1gEd5oa+rbtZ5thnWYRtUDPLcZp6qZPR3DQhGxLrgfU+HTBV1jF2BFauvULdhJMuvKsBinlqntYyO6x9KKkdC8sxu4mkeTGrajqCo25FXcdwtcNiBwwvWVDascHMGtJc0Zx0Gexjsw8t6HqtLRPqLXHtGGWW4/prLSi7k5ZzkvOYGp82IKkSgk6Iztv9ykOReVVXOyxzowFzvxF3QTOHEsV2TNkON23SxfdSgd15q4+1jPFNvxTqwpqPxykgjZsXRlVc7bDaL1po3DM5kEhPY6yD1E/X2FKsKmXKJt163oS+R4N31Yfz5ZAl7ezzFIEdwv7QAZnctG9fVV9WwSm+Xiss6ksxf5Q08+jJlu67kxYLJV/rgIHRFa+0RzVr8lQ/KutKLllnVZwuT6pH0y+LOhb9M7OP2niA1Qorm9hvxvMHxQqAlj0b1I0my3JuwA5l6xq1wcpu2cx1Xw9hH3eY+97JUTSv6WdNa0cvMpfaYNEkUldOvxdPaxaZ5Kz3MjvygjluB7Edk0qni+Xt6EXmUSssmgh7ssWUYB+vfo5hkYln30vAKKk37lMRuhFGP3sY/lCPEc19jvhXBfN/ZbUra/6P/v9FClgc35mAJWBxEOAIFcoSsDgIcIQKZQlYHAQ4QoWyBCwOAhyhQlkCFgcBjlChLAGLgwBHqFCWgMVBgCNUKEvA4iDAEfov7p5m3OXy0b4AAAAASUVORK5CYII="},{author:"\u5c0f\u54e5\u65e0\u9152",link:"https://gitee.com/licongnet",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAADs0lEQVRoQ+2ZbUiTURTH/5vb3Jxzc7LmC9mHLBBT0zKh9IMYokKBUKFEFEIv9PKhSAwKRAiqLxUSIdKHiIJeiMKgF0EkikpCErMsFDJrjaXOzaFzU7e4Txgzp8/mc/csnu79urt77u/8zzn33PvINjb3+/EfDRkDlrjaTGGJCwymMFNYYh5gIS0xQRfgMIWZwhLzAAtpiQnKipboIV2UrkVtfiLUCjks49Ooa7OKGlSiA1eu1aG+yIQ4pRxfxrzYdXeIAUfSA0zhSHqXrM1CWgo5vEKrgFb1uyj9PSSp8L68RO7ocbhn0frZhWtd9j/ciwGTql2TbUBVZgI8s36cfGYN6jChKReRotWyPQ15KRrM+Py41ePAlc7RkICbKlORm6zm/nen14nLr0eE8kW+09q8Mg4NJWYYNTEYnphBQ4cNby1uXmAyYUeWHscKk7gz+odrGmfabXhvm6IKTV3hU8UmVGXqIZcBL4cmcPzJ/E6KL4fnosPnBx73u9DYYft3gdP1SlwsT8EqgwqeGT9auuy40T02b8N8wIEqB4sQofRUFSbFav8GI1QxMnx1eHHiqRVDzumwgMnkOZXJR6+2ARcX2rQGVeDAcHzQ58T5F8PLOpaq1xlwuNAIjUIOu3uWC+tX3yapMFMDLs/Qoa7IhITYpTfJF9KEihSt5m1pyDTFgrbK1IDPlppRlqGDDMGL1Zw8oQCTuYHpQVNlKsCBR5HL60PTmxE87BsPGoKhApMCeKEsBRlGFVWVqQAHqvvO6saBVsui+RYqMFngaGESducYoJDLqOWyYOCCNA0aS8wwaRVwz/hwtdOO270OKsDZZjWIM1N1SmoqCwY+tzUZpavjudztG/bg0CMLJqd9VIDJIoGNDI1cFgRclhHPPdckxMZwjQa5JFz/q9EQelsKrA80ui9BwEc2JaE62wC1QhaSust9ALhUkYIt6VoMjnnR+mkcN3sWTxm+w1oQMFmc5NmeXAM6v7tx/6OTz96yXjyIDXIZeT44wbs+3wTBwHwGhIZ0uOvzzWfAfB4K9feKNTokamLgmJrlLvTd1imuiajNNyInWc1V9QG7FzX3JPIufbDAiL3rE6EkF+Mgg3aPHKoQEQtpcpmoLzYhXiVfsBcCOzDqwel2W0TerZaCjxgw6YV3Zum5Mzpw+Px+fPjp4V4zlmpQQlUs3HkRAw53I2LNZ8BieTpadpjC0fK8WHaZwmJ5Olp2mMLR8rxYdpnCYnk6WnaYwtHyvFh2mcJieTpadn4Bs2tnQ6e4X1MAAAAASUVORK5CYII="},{author:"\u5c0f\u8f89\u8f89",link:"https://gitee.com/MrXhh",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAADs0lEQVRoQ+2ZbUiTURTH/5vb3Jxzc7LmC9mHLBBT0zKh9IMYokKBUKFEFEIv9PKhSAwKRAiqLxUSIdKHiIJeiMKgF0EkikpCErMsFDJrjaXOzaFzU7e4Txgzp8/mc/csnu79urt77u/8zzn33PvINjb3+/EfDRkDlrjaTGGJCwymMFNYYh5gIS0xQRfgMIWZwhLzAAtpiQnKipboIV2UrkVtfiLUCjks49Ooa7OKGlSiA1eu1aG+yIQ4pRxfxrzYdXeIAUfSA0zhSHqXrM1CWgo5vEKrgFb1uyj9PSSp8L68RO7ocbhn0frZhWtd9j/ciwGTql2TbUBVZgI8s36cfGYN6jChKReRotWyPQ15KRrM+Py41ePAlc7RkICbKlORm6zm/nen14nLr0eE8kW+09q8Mg4NJWYYNTEYnphBQ4cNby1uXmAyYUeWHscKk7gz+odrGmfabXhvm6IKTV3hU8UmVGXqIZcBL4cmcPzJ/E6KL4fnosPnBx73u9DYYft3gdP1SlwsT8EqgwqeGT9auuy40T02b8N8wIEqB4sQofRUFSbFav8GI1QxMnx1eHHiqRVDzumwgMnkOZXJR6+2ARcX2rQGVeDAcHzQ58T5F8PLOpaq1xlwuNAIjUIOu3uWC+tX3yapMFMDLs/Qoa7IhITYpTfJF9KEihSt5m1pyDTFgrbK1IDPlppRlqGDDMGL1Zw8oQCTuYHpQVNlKsCBR5HL60PTmxE87BsPGoKhApMCeKEsBRlGFVWVqQAHqvvO6saBVsui+RYqMFngaGESducYoJDLqOWyYOCCNA0aS8wwaRVwz/hwtdOO270OKsDZZjWIM1N1SmoqCwY+tzUZpavjudztG/bg0CMLJqd9VIDJIoGNDI1cFgRclhHPPdckxMZwjQa5JFz/q9EQelsKrA80ui9BwEc2JaE62wC1QhaSust9ALhUkYIt6VoMjnnR+mkcN3sWTxm+w1oQMFmc5NmeXAM6v7tx/6OTz96yXjyIDXIZeT44wbs+3wTBwHwGhIZ0uOvzzWfAfB4K9feKNTokamLgmJrlLvTd1imuiajNNyInWc1V9QG7FzX3JPIufbDAiL3rE6EkF+Mgg3aPHKoQEQtpcpmoLzYhXiVfsBcCOzDqwel2W0TerZaCjxgw6YV3Zum5Mzpw+Px+fPjp4V4zlmpQQlUs3HkRAw53I2LNZ8BieTpadpjC0fK8WHaZwmJ5Olp2mMLR8rxYdpnCYnk6WnaYwtHyvFh2mcJieTpadn4Bs2tnQ6e4X1MAAAAASUVORK5CYII="},{author:"Monn",link:"https://gitee.com/ie81",photo:"https://portrait.gitee.com/uploads/avatars/user/125/377013_ie81_1578921988.jpg!avatar200"},{author:"jumpmayday",link:"https://gitee.com/jumpmayday",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJYAAACWCAYAAAA8AXHiAAAGDUlEQVR4Xu3de2iVdRzH8e/ZmruaZXQTY6lrM1sm6ZIlbESTYA5aG1iptZIVy2xY2dAVjE03g9xmSuamlmimybLEsWJJ2bouyshIKBJvGHTxn2o3187iOWBF52ztXD7QOc/7/P08H9n7efk7xyOoJzuveNh4USDCBTzAinBR5nwFgAUESQFgSbIyCiwMSAoAS5KVUWBhQFIAWJKsjAILA5ICwJJkZRRYGJAUAJYkK6PAwoCkALAkWRkFFgYkBYAlycoosDAgKQAsSVZGgYUBSQFgSbIyCiwMSAoAS5KVUWBhQFIAWJKsjAILA5ICwJJkZRRYGJAUAJYkK6PAwoCkALAkWRkFFgYkBYAlycoosDAgKQAsSVZGgYUBSQFgSbIyCiwMSAoAS5KVUWBhQFIAWJKsjAILA5ICwJJkZRRYGJAUAJYkK6PAwoCkALAkWRkFFgYkBYAVZtblS++1pYtKLCHhIr+lnt4+q29utYOdh8P8VaLvdmCF+cyAFTggsIAVZgFgSQJyYgELWJICwJJk5cQCFrAkBYAlycqJBSxgSQoAS5KVEwtYwJIUAJYkKycWsIAlKQAsSVZOLGABS1IAWJKsnFjAApakALAkWTmxgAUsSQFgSbJyYgELWJICwJJk5cQCFrAkBYAlycqJBSxgSQoAS5KVEwtYwJIUAJYkKycWsIAlKQAsSVZOLGABS1IAWJKsnFjAApakALAkWTmxgAUsSQFgSbJyYgELWJICwJJk5cRyOay5N99oWRlTbPp1Uyx98iSbeMkEm3jpBBsYOG9rm1us8/DHIcEDlsthbWuqtbmzZ/pVCPefzB4N1u89vbamqcU6DnWFhDaab3LNv5o8EiznxNr88l57ac8bIT3H0WD99Ms5q65/3rqPfB3SdjTf5BpYLetr7NacWX7PamhoyF5pa7f1m3eE9BxrVj5ipUXzzePx+N3/48/nrKquyY4cPRbSdjTf5BpYtVWPWsmCgoDP6r2PPrPK6nUhPceNDavttnm3BLz3+MkzVlxWGdJutN/kGliPlS+2B+8pDvhfk3x/4rQtWbbKnM9bwb72bW206zOnBryt+4ujVv5ETbCTMXG9a2DdVXi7raost5TkJL8H19vXb81bdtreN98K6qEWFuTZ0ysesovHp/nd5/UO22sH3raGDa1BbcbKxa6BlT09wxprn7JJV10RsdNl07pqy8+dE/DzVV9/vzW37LI9+ztixUpQP4drYDlVXnj2GcvLnR0w0MD5Qdv9ervv5BrL6/GK+21xaZEljksIePnJ02dteXWDnTrzw1jmYu4aV8EqX1JqFWV3j4hhcPAPO9T1qTW+uMOcP9EFek279hpbuewBy51zk8XHxwe8xnkbbDvYaWuatsQcmLH+QK6ClZqSbNs31NkNWRmj9nG+2Dz23XH76ptv7cSps75rZ2RNs5kzMi1zarolJSWOer+bv7+6EMZVsJwfeuGdd9iKh++z8WmpY/3NF9R1zlvqzn0HbOPW3UHdF2sXuw6W8wDrqyutaH6+xcXFRfR5er1e31vpkzXPRXQ3GsdcCct5UGtXO7jyRvycFOzDdFB92P2lVdU1hvR9WLC/3v/9etfCch6M86XpopJCS0tNCes5OZ/JXt3fYZu2ufvt758RXQ3LCeF8IK8oW2g5s7L/80P5v/U5oLo++dxad7WZ89c3vP4u4HpYF1JceflltqAgz/Ln5Vj65KstNTnZEhPH/fXl5/DwsPUPDNivv/X4EL37Qbe1v/M+b3sj/G4CFseMpACwJFkZBRYGJAWAJcnKKLAwICkALElWRoGFAUkBYEmyMgosDEgKAEuSlVFgYUBSAFiSrIwCCwOSAsCSZGUUWBiQFACWJCujwMKApACwJFkZBRYGJAWAJcnKKLAwICkALElWRoGFAUkBYEmyMgosDEgKAEuSlVFgYUBSAFiSrIwCCwOSAsCSZGUUWBiQFACWJCujwMKApACwJFkZBRYGJAWAJcnKKLAwICkALElWRoGFAUkBYEmyMgosDEgKAEuSlVFgYUBSAFiSrIwCCwOSAsCSZGUUWBiQFACWJCujfwJ3bWEqQBCK7QAAAABJRU5ErkJggg=="},{author:"\u98ce\u96e8\u58f0",link:"https://gitee.com/jojonb",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJYAAACWCAYAAAA8AXHiAAAMHElEQVR4Xu2d+ZMkRRXHX59VfcywCF6giAqogCHKiqDIxioqPxj6L/IvEIFhqCAsoXgrBMvKyqWoeKEw09P3Zbwchu2uyszKyqqszk6+9eNEdh7vfSYz6/teZtXeevRoTXhggZItUANYJVsU1QkLACyA4MQCAMuJWVEpwAIDTiwAsJyYFZUCLDDgxAIAy4lZUSnAAgNOLACwnJgVlQIsMODEAgDLiVlRKcACA04sALCcmBWVAiww4MQCAMuJWVEpwAIDTiwAsJyYFZUCLDDgxAIAy4lZUSnAAgNOLACwnJgVlQIsMODEAgDLiVlRKcACA04sALCcmBWVAiww4MQCAMuJWVEpwAIDTiwAsJyYFZUCLDDgxAIAy4lZUSnAAgNOLACwnJgVlQIsMODEAgDLiVlRKcACA04sALCcmBWVAiww4MQCAMuJWVEpwAIDTiwAsJyYFZUCLDDgxAJ7CVbvKzFFn245McguK12N1jT8xZjm/1rushultL2XYPW/2qHo9jDBOvnZmOb/WJTi3F1WArB2af1E2zxjAawdOgQz1g6Nb9g0ZixDQ1VRDDNWFVbWtKGasdbzNa1OVjvunUHz9Ro1DupE9e2yAMvAdi6LqMBavrOidx47cdl0KXXzGy2/2dZata36AFYp5rWvBGDZ266qXwa1x8KMVRU22e0ArGwbGZfo3hPRarymydWZ9jdYCo1NWm1BH5fC6JPv7puiGi0HK5pendH4RTlgAKtaXoxbswWr+8WIojvaNH15RqPfT43bMyl48I0utT/e3N6MD1c0eWlO48vbbQEsE4vuoExesBrn6tS7L6bWR5pENaLV5DQmN3ujnNDJ5my1ZY410eRPMxr+crL1Z4C1A2hMmswDVvSpFnXuiU51o41n8b8lnVwa0/K4uO51+O0utT66PVtxU6ypDZ4Z0+I/20FlgGXi5R2UMQWr3q3TwTc71PxAI93LNdH0tbmIzRV54jva1L03olp7W5MixWzFbQGsIhZ3+FtTsIQTNzbVyS6tF2ux15r8Uf8WpxoKC5yHD3ep+aE0uKrZCmA5BKNo1XnA4ra6X4qoc1eUCqGI5Wq4opOfT6xSVTqfj6jzhYhqSa54tro6o+GvtvdWZ+PGjFWUAEe/zwsWzywHFzvSfRB3kfOfBk+NiWONpo+YrR7pSpdZ3WyFGcvUwjsolxcs7iJvrvtfi6neS0R+xbRFNH5xmkuCYDGUZ6xkIJnrmrw0o+Fv5LMVwNoBMKZN2oDFdcefa4tlsdZMbLSZrRwSBMsXBxe71DhMQ7o8WtHgpyPt2yaWQlNPV1zOFizuZv/rHbGhZz0r+ZhKEP0HO8QyRqoOnvlemNLoOb34CrAqBsa0uSJgidnmoQ41rreTINq3NKn3QIfqcZrMxX+XdPyjUeZeDWCZerrickXAEnuc21vUOx+ntSciWs/elSAUgWRZ6IbrzCNdAKyKgTFtrihY3A4n2sWfaUuXRFbjB0+NiNNwNh/dHo3fLI9/PDIaAsAyMlP1hcoASyduCgnizQUd/+QaKKL8d7rUvCG9hK6na6FZTV+fGxkDYBmZqfpCZYAlJIibm8R11bvp/dJ6STS5ck2C6H05pvizbanIOvvznAaXzENDAKt6ZoxaLAssbozlh/hOiXrOEsRoRSfPToTOpdLAbPLUAZaRm6svVCZYJqo8z17tj6WzF0zEUJl1AFb1zBi1WCZYYknUqfLilY/km/y3VzR4Wi+GAiwjl/pRqGyweFTKgLJiyHnkhWQVmLH84CjVCxdgcSMHFzrUvtXsspHkW2MeUwGsPNaqsKwrsHQxwM3hiQ37s2Oa/90utRlgVQhLnqZUYOURKVXtsWgqAtXJjNCzH2TkWpmMA2CZWGkHZVyCJZbEi13imKDs4cRAkcf+b/vL0QDWDqAxaVJ1eKGMGetUNI2J8+VVz+yvC5EaY/sALFvLOf6dK7CyNK33VsMl0fj5qUiRsXkAlo3VKviNK7B0KnxyWEVy5QFWBZDYNMHBYHH4NPFMX56LtzWbx2QJTNZrKzkALBsPVfCbc9/vE0sDZYGVuQQqlPdkoNp06ADL1FIVlysbLG0gergSJ5nbn5CnM58FqvNoWgCrYmBMmmt9uEH9hzjVJXnPolm+ebINk9SZ6Stz6l9QnKi2OD4GsEw8XXEZETB+UJJDZXiQYbO7uuQ9Lre5h9KlM+c9PgawKobGpDk+HSPu70wo4xwUHv56QryBN32Up20UJ6S15XOEeVRgcb69yER9zXwMpmOtutze3ejHWZziEo7E2UA+xSyc8qqZU3ShG96Uy3Qq7QmfHEuiEqycY6galjzt7R1YqhPIfEWj+KrDm9mB4axgs05Z18YSDU5Bs3MAVh5EKyqrihOK+xIujWnxlj6GlyUt8MmcwaX0CZ3N4WmXRIMT1XnB4uzV9i0tsUTO/5n9j1ORK7TN7N2MdfitLrVuSoujpjcm66SFrDOFZ5YUM96FrlRL4zIcoD5+Qn1wVblPVCyF7y3/jZq4HWf6lwVNX5mljqf5ANRZH/YOrHPf61Pj+rQ4ahKA1i5jOS9iK7Ikqt5sVftE6fK/Jpq9MafB03aRBtcQ7hVYPFMJqaGTPq7Fm3bd7XxZG++sWUbmCN09ELpLRvJKJqp9ZdEsC5dw7RVYqjdCoSNdntLoD/Jsg6x9lY16zk7JeglQwZoXLNWp7SKxUZdQcd17BZby40wZGpbuOL2I9zGUGTfEqByhO3avOx4mDUuticZXZjT67fbdWtJxK8q6Bsa0/r0C67rv9qRH3MWM84z8k7dl7qtURlVdFMLlVUtinnineAtNfKpYaG0vTIXe5uOzN2Dx5fw9Pg6vuD7o6PFhyr5ZqTDLt5cizTh5+UdeRzU/2BBXI9X78qxT2ZKoSv2R7Ztk+Wd5BeG8Yypafm/AYrW9c6f8glrZxj1rs267r1IZnDfY8d3yo/qyJVElm7BOxXdsbT4yCPMIwkUhsfn93oB1+EiPOLMh+Ygl4bkJjS9fu1I7a7OuCtnYGHALAIXGJlsSlUfYjlZ09IPh1uVtsmXTVBAuOibb3+8FWHyItH9/TLVIcneoRHHXKeN8XL6MDwfIDK5beoX4+vyUJldO/wFMQ1PNGxviIG1ymTUVhG3BKPq7vQCrd39M/AUI2b2hs78taPDktaWDZzW+yrFxnXy/Y3P1dh4jy+6U5zATZ15sfvpEpOHcF6eD6fxRg99Nxc3L/Ki0OxNBOE+/yy7rPVg6rUi1pPFSyDBGfFx+gy/VTX1lGnVzGeZZipMEZVdzKxMWEwdiVXHFLEG4zDHZ1OU9WLpNO38XcPCE+rYXlhr4A038JmkaB7QxYvI3fNg1uq0tZh1dtoVKPuG3yKMfnr7l8qfwOncnXloyBOEyxlC0Dq/B4nvUWSNSLWt8NSPrV7qHT/N0z0fCwWV/o7Co8XWCL+tTk6tz6bd6xE03G8tl0X64+L3XYOmuZ8xz4b8Lw5VRpxBvz8s/aMASBWtV0heWHLlnZfTTpg5vwcoSHZObdpvB7/o3WTn3qv7xffIyQXjX49ls31uwdJkDIeWGa2ONMlJKuO2mCgC9BUuXkOdzuoiN03SxxmR9WV8Ws2nfxW+8BUu8Ed0biw8rbX4PMO+d6i6MVnadWeGns/ZsT16X3V+T+rwGiwewpaI7VM1NjOWyDO8pWXuTfmaYG16ROIFkezeFy77L6vYerE3BsQqBs2oHbG14WzUR6mEdTHxXsXb6jR4O37AmZnq0bZdjOGvbe7C4o7xU9B/oEL8J2t5J5YOx30992Auw3k8OCWWsACsUT3o2DoDlmUNC6Q7ACsWTno0DYHnmkFC6A7BC8aRn4wBYnjkklO4ArFA86dk4AJZnDgmlOwArFE96Ng6A5ZlDQukOwArFk56NA2B55pBQugOwQvGkZ+MAWJ45JJTuAKxQPOnZOACWZw4JpTsAKxRPejYOgOWZQ0LpDsAKxZOejQNgeeaQULoDsELxpGfjAFieOSSU7gCsUDzp2TgAlmcOCaU7ACsUT3o2DoDlmUNC6Q7ACsWTno0DYHnmkFC6A7BC8aRn4wBYnjkklO4ArFA86dk4AJZnDgmlOwArFE96Ng6A5ZlDQukOwArFk56NA2B55pBQugOwQvGkZ+MAWJ45JJTu/B8FayrGxGEsfAAAAABJRU5ErkJggg=="},{author:"Answer_\u96ea\u83dc",link:"https://gitee.com/Answer_SeTsuNa",photo:"https://portrait.gitee.com/uploads/avatars/user/1809/5428600_Answer_SeTsuNa_1591148786.png!avatar200"},{author:"\u592d\u4e1c\u51c9\u4e1d",link:"https://gitee.com/ydls",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHgAAAB4CAYAAAA5ZDbSAAAJH0lEQVR4Xu2de1TVVRbHv0CipRLgo0zz0WNQV2RhNtCYmo0GDma+rQQkyxlhApdTkmlDVDpm5koTLXvgY5wlYi/xFYbK+MDG1BxnOTrmktJ8gOALUIELs/axe+PqBZL7+/E7d7fPP94Hd5+zv5/fPr/9Oy+9HoiIroIUtgp4CWC2bJVjApg3XwHMnK8AFsDcFWDun9yDBTBzBZi7JxEsgJkrwNw9iWABzFwB5u5JBAtg5gowd08iWAAzV4C5exLBApi5AszdkwgWwMwVYO6eRLAAZq4Ac/ckggUwcwWYuycRLICZK8DcPYlgAcxcAebuSQQLYOYKMHdPIlgAM1eAuXsSwQKYuQIGude6ZSDatG6BvfsPGWTRGDMSwS507NS+LYLuaA9vb2+0bhmATu1vU3/VMsAfAf5+8Pb2QouAm+HbqBF8fLzR2NdXfX/guzxEJSQbQ8YgK+wA93ywG/yaNXPI0+XujvBr3lS9b3TDDbj9tlvg4+Oj3rcI8EOTxo3V6+qg6qvt0eOnMCF5Nn748WR9TRj+O20AUxf31ODHEHBzcxU57dq0dkSG3evqQOgzLy8vNGnsq/7VoRSdPY835nyMLV/v0aE5qg3aAKbGLJ2bgs53ddRGnOttyMVLlzEvbQVWZH51vT817e+1Ajz9pTj06/Vb05w10rDNZsPlsnJl8sy5Cyi9eAnl5RVIX7UBazduM7Iqt2xpBXh89FBEDRug7pVml6qqKgWosrJSVVVcUopzF0rU65LSizh+qkC9Li29hP9+l4eKChvOFxdj67/2mt00Q+1rBTi8TxiS4mPQrOmNLp28XFYGm+0KkOqRY39/sqAQF4qvQKq0VeJQ3lEFcMyIgSrrrV6++DJH3S+5F60A33RjE4SG3OPIbPOOHcf+/x1xi0GPbl2R8sI4tGoRIIDdUlLTHwtg5kcZCmABrGnfY0yztLoHG+OSsxWJYIlgM64rbWxKBGuDwpyG/CoB0yDH5+tzMP3dNHNU1cgqe8AD+v4OSfHRoGdseymvqMDijDV4f+mnGqEwpykC2BxdtbEqgLVBYU5DBLA5umpjVQBrg8KchlgKOLLfw+jRrYs5nv1ktVVgAEKCgxzLdOhjmsvdve8gCorOmFo3GT+cdwxLVq41vZ6aKrAU8NTEZzDosd6WOd8QFe/8dj/iXn6zIapyWYcANll6ASwRbOolJhFsqrzArzqCu/6mEzq2u7Ko3IxCi9Zjhke6XAJUWVWFrJwdyP1mnxlVO2wWFJ7Bzr37Ta2jNuOWRrDZXic+OwpPDurvlEFXr/Pg4e8xbtJ0tSKSa2ENeP70JPS4r2uN7Gj15Kz3l2H1hi1c+eq18N1IlR964F4kT3wWgf4/r6akWST6r1a9f9oJQe+zcr7G1JkLjKxaK1tsI/ilP8dgcMQjDpik+qmCIlTYbGh7aysHhKKz55Ay+0Ns/+bfWoExqjEsAbdveytmJ09Ah3ZtnHSiReunThc6gadka232NqTM/sAoTbWywxLwH6OGIGb4H5x2SJSVleODf3yOk/mFeDEuCn7Nruw4pEKZbvKshZZmu2ZdFewA097et/+aqLaJVi/fHzuBiSnvqK2dVydfdC/O3roTk/+WapbOltllB/iVCWMR+fueaguqvVA3/Nm6TZgxb7H6aFjko3g+doTTKo/ikotIXbQCK9dstAyGGRWzAty/dyiS4qIdG77tgrlKpBbOfBn33xPkpOmhI0cx5c0FOPLDj2ZobYlNNoCpa56WNB53d7rdSciakqgnwvsgYexING96k1OkZ23egVfees8SGGZUygbwq38Zh4hHwpy6ZhLs+MkC9Zy778Dha/SjTLvng/c5nRBAydiyz9Zj/uKVZujd4DZZAI6LGYanB4fD17eRk4C0enLZp+uRuijDpbC06yF54nO4pVWg0/cXSkqRmpaBT9Z6/v3Y4wE/9/QTGD0kwilhstOiQf4XXptT61hzTRdH/ukizJy/FDk7djd41BlZoUcDjh42ALEjH3c5W0SAps1Nq3OEitZLvzU1QY1ZX32YCwfIHgu4tsi93i6WErQZk+NxR4e21wRPQeFZvJuWjnUbtxsZWA1myyMBT4qLwqD+va+555Jq9U2Shg7oi/jY4U5ZtZ0CPSOnpa+ydPFcfa8IjwJMZ2lNSYhVxzxUH8hwDGhUVmLdply8+vbCeukxalA/jBs9xCVkWom5afsuvP7ORx41f+wxgHuHhoAm8OmANFcHn9FhK5tzd6tJA3cm8GtKuuiKoSHNYyfyMefD5R6TfGkPmJIgEn1gv4ddZsokvFFw7WH/p6ihGD00/JqT9uzf021gc+4uzPkoHZSI6Vy0BhzWPVjBDbqzQ43HFdKz7prsbZhm8JFItSVxPw+BnseqrH8iLT3TrV7DzAtES8B0r00cOxJ9wrq7TKTsglBXvPyLLCxY8okpGj3evxfixwxHoL9fjfap26YzKjM3bNEStFaA7d1xRN+HnOZrXalLXeO8RRmmP750v7czJo2PVkcK13XoKWXbW3d+i4+XZ2ozYaEFYAIbO3IgKGJqixZ7orPnPwcxI3VJg4lI7Zv8/Bg82rPHLzpmkXICmn/O2bEHGauzLb1PWwqYumK61/UJC4G/X/M6u1mKkBWZG0zrkutqAO2jGjMiUq3pqiua7bbooNJZ7/1drcG2olgGmA7unpLwDFoG+tfpN0XErn0HsGDxSpezQnUaMPAP7PlBr9AQdVZ1baW+gy4GNtfaZbM0IkUjSK4GLezdcf7pM8hY/ZU6U0OnEtz5TtDj1P3BQS67bboo3Rl0McpXyyKYHKhtoJ+64zXZW9W8rDsDF0YJVZMdepSjbju4y10O0JRZ056kF9+Ya3nbLQVMol29EoNg5uTuVhmy7oMI1aFTRD81OByhIcE4kX9am6U/lgMmkWgXQuLYUaC9Qp4G1uwewl37WgB21wn5fc0KCGDmV4cAFsDMFWDunkSwAGauAHP3JIIFMHMFmLsnESyAmSvA3D2JYAHMXAHm7kkEC2DmCjB3TyJYADNXgLl7EsECmLkCzN2TCBbAzBVg7p5EsABmrgBz9ySCBTBzBZi7JxEsgJkrwNw9iWABzFwB5u5JBAtg5gowd08imDng/wMV5g/lafM2ywAAAABJRU5ErkJggg=="},{author:"helloLuo",link:"https://gitee.com/lhw516678532",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAYAAAA4TnrqAAABc0lEQVR4Xu3YoWqCURyG8b+KlyAGi2EgajIvmWwW72BYdw8DL8FqMnoHSybB8LErEBQ0y/rYHHxbmaCcxyA4H5PhUQ4/X4TvFJovr4fwlSRQECvJKY/ESrcSC1iJJRYRAK3/WWIBAZC6LLGAAEhdllhAAKQuSywgAFKXJRYQAKnLEgsIgNRliQUEQOqyxAICIHVZYgEBkF5tWc/dhxg+1qNcKubHW6738TTNwFF/0lG/HYNOLX//8fkVk8UmxvMV/p5LPiAWUBNLLCAAUpclFhAAqcsSCwiA1GWJBQRA6rJuAQuc8WR6N487Yp0ROH6QFgtgvW3fY5btsFm3UYleq+qtQ4qcVzQpSr+NWGL9FfCmFCxCLLGAAEhdllhAAKQuSywgAFKXJRYQuLP0ajel/8FVLPAriiUWEACpyxILCIDUZYkFBEDqssQCAiB1WWIBAZC6LLGAAEhdllhAAKQuSywgAFKXJRYQAKnLEgsIgNRlAaxvcIg11R/kE4cAAAAASUVORK5CYII="},{author:"Wogoo",link:"https://gitee.com/my58164020",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAYAAAA4TnrqAAAFWElEQVR4Xu2abWibVRTH/0nb1K4vobVdt76oTHFlDClsQ526MdgQoRvKQNgHpyIoiqIwEXWTMRTfBwridCCi+zBwDIVVVNYx9sJ01JfqRpk6h25d2zRdu7TNmvfIfbrE07s8eZ6T5kkMnOdj+N97z/PL/5577klcyz/6Mwl5bBFwCSxbnAyRwLLPSmAxWAksgcUhwNBKzhJYDAIMqThLYDEIMKTiLIHFIMCQirMEFoMAQyrOElgMAgypOEtgMQgwpOIsgcUgwJCKswQWgwBDKs4SWAwCDKk4S2AxCDCkeXXWPTdWY9vq+WioKjNCGJqM4sWDw+j3hy1DWtJUiTfXLcDC2oq01h+MYfthH3ovTrPHc9a2nPyqIK+w1Jx7Nrajo7HSmD4YSeDdE6Po/n3CMp4Hl3rx9O3Xo6rcndaGY0ns/mkMn/eNs8crwE91X7QcxxHkHdb2Nc3ourXWiCGeSGLv6QDe/37UMqbX1y7AuptrrtEd/GsKL/cMW45/4e4mbFzihdvFW9dyYiLIO6zNnfV4fFkDKstdxjI/DFzBM18PZo1pXoUbnz7QhkX1HkN3JZqA+kw958YjePTLAeOzbM8n97fhtubrDMlEOI43jvrRc26Kw8JSm3dYK1qrsGNNM5qqy43FLwSieO6bQZwPRE2DWbuoBi+takJdZRki8SR+HQ5hWUuV4ZKJcALvHPfj27OTpuP1fGdnTUsyGQR5h6XW4H7Lz97ZiE1LvShzuzA2HcfeU5fxSGc9qj1uJJLA/v4A3j7uN32/DR112LKyMe3Go38HseW7oVx4ZB3jCCyaP6KJJPb0Xcau3kumgXzY1QrlSPWcGQ1ja88w3ruvBe3emZPxN18Ij301YDpeX++zvnF83DtWGrD0bzpbkqZbSP2r7sCZCbx6ZAQ7712IVTdVGy9sVULsWt+K5S0zsJUzXzsygmP/BEsDlp5Dzo5FsGnf+YzB05JhOpbABycv4YvTATyxogEPd9ajwu1CthJCX0s586H9F/IOSk3oyDZUE9Otle3bfmX1fKzvqIM6O2khqRe4Zu6kLqbOdIKWY7Bo0jZzhioPdm9oxeKrRaxeSNIC16yEoPmKOrOkYNFyQAXe/cckdhz2zXoHqslUwFLXmdVO1MFOXHFowI45Sy80M51o1H2ZYNB8lgmmnq+cuOIUBJZahJ5oI8EYth3y4Zeh/y7F1BWZtpkOQwfetbgOz69sNOoxztUq1y3qmLNUQPRE0/OJDsIsgVOgeglB85VTV5yCOYueaHolTrdYttIgWwlh5cxcHWQ2zlFnqUXpifbj4DSePDDTNpldMsSw9dAwTvlC18RJgdPS4AZvxawq3253Yi4AHYdlVkdRiFaJmWpTRSfNV5y+1/8aFm3ZTEUSeOuYH8FoIt1RtZOYKfDUQaGuQqnLt9V1aC6ACpaz1EK0ZZMCE4ol0lcZO4mZ5jfV19p5YtRoFN7RNs94F6uLdsnAUoHSlo1qn4TjyXRX1E5zj56cCvi+/gDuaq82uhJ2WjglBYse8epSrZ5bGma6onYTMz35fh6aNsarZiGnzz9XaI4neBUgTcaBUBxutwu1HnfWboL+YnqDsMbjhqfMZasTO1dIqfEFgaUf86nFOYlZv2um5nCqK5oJcEFgqYXpNkoFwknM+l1TzaG6sE51RYsKi24jFUguiVn/uczJrmhRYenbKJfErP/M5mRXtKiw8pVkizlPwXJWMV8yX2sLLAZJgSWwGAQYUnGWwGIQYEjFWQKLQYAhFWcJLAYBhlScJbAYBBhScZbAYhBgSMVZAotBgCEVZwksBgGGVJwlsBgEGFJxFgPWv3FFqxt2LjGzAAAAAElFTkSuQmCC"},{author:"\u9676\u6ce5",link:"https://gitee.com/ncs48620",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJYAAACWCAYAAAA8AXHiAAAMFklEQVR4Xu2daZPkRhGGs3v6UB+zuxzmxgaDORYTLLAExrFgrgBDEPAX+QsQQAABOBZ8AQvYrDHYxPrAYIMx3p3p+5BEZPX0dKtUJZVayp5Wz6sP82VKKenV01WprKysyhvfPwoJBxQoWIEKwCpYUZhTCgAsgCCiAMASkRVGARYYEFEAYInICqMACwyIKACwRGSFUYAFBkQUAFgissIowAIDIgoALBFZYRRggQERBQCWiKwwCrDAgIgCAEtEVhgFWGBARAGAJSIrjAIsMCCiAMASkRVGARYYEFEAYInICqMACwyIKACwRGSFUYAFBkQUAFgissIowAIDIgoALBFZYRRggQERBQCWiKwwCrDAgIgCAEtEVhgFWGBARAGAJSIrjAIsMCCiAMASkRVGARYYEFEAYInICqMAy8JApV4h72MNmv/Xp9m/5yAlowIAyyJY8946dT7vUaVRoWAU0uy1OU1emNHsX4DMhTGAZVGp84BH3kcaRJVog/n/fDr60cBF23PdBmAZXj8Pgxe/3aGDS9Xof0Oi8fNTGjw5PtfQuDx8KcCqvf2A2p9pUtXTug+XJzS0mbw8p9HTE+vZ3kcb1L7apEotej0eEvuPjTAcOuheCrDq765R91qLqu2CwPr7jPqPj6zyHH61TY3312L/n/5zTr1fDh1kRROApTFQu+uADr/Uomo3OgyG85CGNyY0fm4KahwUAFiaSO3PNql1uUmkuVfzN306/umQwhn2tHLgqhx76WxrKGSn/cLDbaq99SDmtE9uzXYinhXOiWavznce8FL3WME4pHAUWH9ADEq1U42FDCYWH6v1ySa1PtWkisaVyy90W238XkC9XwzJP7Y/97buJek6pQaLg5bHP7c704cPtajxgXrk+UOfaHRzYvwqvPBwh+rv3GGqiMi/E9CdH/R3gZ3Ee9hrsC59t0sHb4k6S9zLDR4f0fSVaASdg6HsX3GkfZcPgFXg27H5WEk9Vv09JyGKVhQUfjFHPxnEfJTDr7Wp8b54iKHAxyjEFMAqRMaFkU3Aat3foNYVL+YvcU/V+1V0+FyfFyzwtkVMAawCZd0ErO6DLWreF/WvKCAaPTOh4Z+iUXdbb6Umnm/NCnwSd1McT/Pua8TCHgDLXcPUlpuAdfFbHaq9I+qIh5OQ+k+OafrSChabbxVOQxr8dqwyGs7iaF9pEn+l6vE0/3ZAd34I572Qd5IVLP6y63L0vB113P2jgI5+vPKvVNzq6+0YgHzT69M33I57v/nrPs3f8At5pjQjNrDSvoTT7G7r/3v5VcgJeuoLT5tE1v0rW9yKezbVW7246K3WJ6X5q5IBm9ya0vQfcrlZ7asetS7H03YAVoE/jaw9FifoMQyRXKqQaPTslIY3FikvBxeqdPjldiwcoXorzcE3+WA6fAU+rjJl9BGJVMJhUuyu6PvY1N5e9lgu/pURPiJSca4nRqe9UePuGnW+0Iql7EhnOgCsTZHOcF6WHotztzjirmcnrE+F2GChkJSz3n90lVJjjN5vIdMBYGUAZNOmWcBK86/YET/8SkvFxvQj6AfU+/VILaDgwwbg7D+c6SCbngywNqUlw3lZwErzrzgT1btsmGjmGNdfJjT84yrGZUr447nG8d+m5N/O/3WYlKlgA4vjaus9agYZt9p073ysJP+Kc6m6D3qxMAQrzoskjn+2yrfaxtxhMAwVJOyQ64cVrJTs163Sk3CxvQIrKX7FX1Lda55xCFTB0Btj4nQaPlR865ttqr1NNtMhEaxrLWp+SJs5IFL3mJRWDbAyKOA6FCb5V/6Rb8wMVQ77izPq/2blsHc+56nFqnrUO8MtOzVNAuvCN9rGHwHAcpLWrZErWNb5wZsTGj8/UytvGnfXIxPTPPfWuz5UeU581N9bUzGkohZuJD0hwHJ7/2KtXMG6+J1ObPjS86949Q1HtTlAykMgO+vLBRKJUzyvzGn68mrekFNs9CRCXh7GSYRs1+VIct7RY7komLONC1gMTId7Gm3toWnlMs8h8krncBxG/BVeYsYpNPrqZz0MwY9j6h2TeqCsEhjB0mYPstrcZvu9cd6t+Vcvzah33b6GcCm2dd6QwwucavNUNNXmTMDikMjN+L1sExjXa+0NWN0vnvQ22pPzsq3+9VHi4oOFX2UOQ3AooPfIKJZxCrCSEdsbsDitpXN1UR0mcnC9heemKlvBdCRBFQwC6j82do4zFTkUmuJxKlERPZZrp5nezsXHOvV7PmzwkbSJ5fUrcs/TuDf6pcj/Vyuf2bH/q3nls3SPdel73XhREoCVDkuWFq5gcXWYw4fa8RdiSIVZvz4vvOCpntOAqGEyWr9fgHVOhsJUJ1xL3jPJ0rq/Sd4nGmoe0ORX6T2dnlNf5FBo6rFUL/qHiZqr3PVjb3yspdBpsSh9hY7+gjgUwXOKaTUazqLH4ntSma1ntMAjC8x7BxY/fJb6VrykvnlP9vWE/JGglu+vHZz5EPQCotAtQBo5N1jMAy6DtcYeC2BlYTu9rauPtW7JuFze8IVoyyJIv6uCW2iOOcAqWF9jSMBSeC0p/9v7eEM55PqCCr0c0S6CZfshYSgsGLZNeixbSSJ9bSHAKvhlnZjbSx9rKZWx8rE238YZp6a8p1S5q5V4uaOQKPT5T+rZ8QYqg3WqAqC2H5KqgcqJga/KLTvb4M6Np+w1WJx90H3Ao0ozGo0vYgmV5FehFayEjNOigCjKzl6DZSurXUTxMoB1zgKk+uOaFkTYamRl+bUCrHMOlmmpuimCbYpn+b2Qeo+YKwZmBYtjaxypr6yFvhhwno/U60Gwz6e2W6lrdeYxFGb57ae33eSrcGnVmAdvKGdkAiWpZFBWsExFPmxTQFaweN3j9dHWCpOkvxl7i732sfixbUXV9EUJZQCrLLWxWPe9B8vW2+mFPwBWnv4pfu65BUsPOQAsgHWqgEs8ytU/2yWwbPn7GAqLhX+j4rbLW7Ct3tnlHqvsZSLPhY/lWj15l3qsspeJPBdg2Soiqw0tn1gtsABYxQ4ze+28e5cb1Oa9cbSVO2rbk6fGNHpmleILsADWqQK8lJ0d2vltX5Uh4uVRqhtuVtRGlrW7asYNl0yByV0Cq+xF10o/FHJulZ654PK7M9UPNYJ1HNDoz+YtfrPWbjBtCGCLvNvAMu2q4fK8Z9Gm1EMhZ4MeHFZjc2pJQtqqHZ9Fwl9WsMpSwqj0PRbXAj3oVGKFbG1gqTKPz0bLQS7b7hJYpoK6fJ8Aq+C+NynIyZcyFarVb4H9MV6Pp++js4tglb2EUfl7rNfmxNuYxDYLWKOKgeJUXt48YFkN2cT9LvVYpjpftg2mCv4NF2au1D4WR88Hvxsv9nCukCpaywXV+CuRa1+xD7as1JemGNeHP7io7TCedlLO/5sKr1lX6CTsDJvzNkROLz1YZdj+I8ubs9bpOuPdyLI8w14MhfsEVlK1ZlVVsCRJfgAr689QsD1DxcvVmh+Ml2Hiy7pkcgjeXmbTGAozS7Y6gbNTK16FgsHiAyGtkIjtUvV31ah1pUlcp950qCmopydqzWFZDoCV4021P90kLn10Wg+e16rOFwtWeaEE8eLVkx3FOBiqH1zymz8Yqq1qrKDuelv+8uUqOf7xyZxVjnve1qkAK4fS29ikXAV1DcV1c9z2Vk4FWDlktm1hl8Nk7FRbcd0iryFhC2DlVNVYhDanzeXpDFX/0TEFw/IMgct7B1g5IbDN6+Uxy8Pf9IUZDX4/3viDIM/1izgXYOVU0bYp+CZmXaefNrG97XMAVk7FeRpJhQnWZoO4+nKs3rztOiEtEhVf90uxwtlVrlKAxfN/vFRef1n+HT+SXuz60Ggnr0ApwJKXAVcoWgGAVbSisKcUAFgAQUQBgCUiK4wCLDAgogDAEpEVRgEWGBBRAGCJyAqjAAsMiCgAsERkhVGABQZEFABYIrLCKMACAyIKACwRWWEUYIEBEQUAloisMAqwwICIAgBLRFYYBVhgQEQBgCUiK4wCLDAgogDAEpEVRgEWGBBRAGCJyAqjAAsMiCgAsERkhVGABQZEFABYIrLCKMACAyIKACwRWWEUYIEBEQUAloisMAqwwICIAgBLRFYYBVhgQEQBgCUiK4wCLDAgogDAEpEVRgEWGBBR4P9yM3fVhKh4WgAAAABJRU5ErkJggg=="},{author:"think",link:"https://gitee.com/mo_zhenshuang",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJYAAACWCAYAAAA8AXHiAAAJmElEQVR4Xu2de2wc1RXGP9tr79rrXcdPnBincUhIMAkEEhJKiZLwEI+2olKriPxDkAhCAiEkBFURSBESUFUqqgQtqtpKfSIoSAiQeEooBKVJE5SGEiBPiJNg4vidtXdt78vobuTArGdf3jk7d3a++dMz89073/ntuXfOHc9UrPnjsWlwowMWO1BBsCx2lHIpBwgWQRBxgGCJ2EpRgkUGRBwgWCK2UpRgkQERBwiWiK0UJVhkQMQBgiViK0UJFhkQcYBgidhKUYJFBkQcIFgitlKUYJEBEQcIloitFCVYZEDEAYIlYitFCRYZEHGAYInYSlGCRQZEHCBYIrZSlGCRAREHCJaIrRQlWGRAxAGCJWIrRQkWGRBxgGCJ2EpRgkUGRBwgWCK2UpRgkQERBwiWiK0UJVhkQMQBgiViK0UJFhkQcYBgidhKUYJFBkQcIFgitlLUVWDVVVfi2s46+DwVhsiHJpPYdSpsCQ3XL/Qj6Ks0aE3Gp/Hf0xFEYklL2nCCiKvAuqajFk9uugitfo8hNidGotj8yilL4vXK5oXoaqwxaA2E49i+4yw+7p2wpA0niBAsAATLelQJFsGyniq3veedQ6EIQ6aizFjMWCK0ESyC5U6w7l3dhE1d9ZZcfFUl0BGohjet3BCOJvHNWNySNhYEPPDXGMsNU/Fp9I7FkLCo2rDjxDj+vH/Ykv5KiWifsZ7Y0IY7lgelrt+Rum8cDuGpnf1a951gaR0e884RLAuCxow120SCRbAscIBgiZjY3erForQlkrk2FKypwt1XNaK5rsogcfpcDH/5nzWT4W1XN6GzodqgPxRJ4G8HRhCKJubadcN5PSNRfDEwZYmWlIj2cywrL5wFUivdzK5FsFjHEqGNYBEsglWsA2q+9sC6ZjT6jI/N9IZiePT9M8XKp87nYzPnbXRVxrKEHIrk5YDjwXpgbTPa0h7cy+vKNT6oPxzHH/YNadzD3F1zPFhmQ0/uy9b7CCsfPLTrSgmWXc5naZdgaRAUZiwNgmDSBWYsDePCjKVBUDLd3jvhP2Jqqiqw9uI6BL3G57cIlqZgOSUwpVhisitEZTkUEiy7cPquXYJlYwyYsWw0P1fTZnMsZqxcrsnvZ8aS9zhjC8xYNpqfq2mzjGXlg3u52i9mf6YHD52ScbNde1lmrGKCrcO5BEuDKLDyrkEQWHnXMwjpvWLG0iBOzFgaBMEtGUu96IxLOvYCV5aTd6cMJSw32At/1tZZINUzOMxYNsaFGctG83M1zYyVyyF79jNj2eN7qlVmLBvNz9U0l3RyOWTP/rLMWPZYaV2rTrmr5VqhdTEviRLBKonN2Rth5V2DILil8q6n1fn3ihkrf6/EjjTLWFa+BVms4wAyvcWZYEm6nqc261h5GlXiw8ryrtCqX/y21U3YsrIBnkrjZ+j2fzOBh98t/rVHrGOVmPZCmjN724xVb2t55qZ23HyJ8eMF0wBePxTCMx8V/571Unw/sRAvrTzW8RnLSjPStf75804sb/Ea/qy+MvGn/cP4xycjkk07XptgZQjh+h/4od4x31RrfMOyGz9qORfKCVYG1+67pglbVzWiOm1+9enZSdzz+tdz8dpV52gNFr9KkZlFq25QpGgnWFLOCusSrCIMZsZixioCn8ynEiyCJQLWL69vxY8vDYhom4lWVAA+TyWM5dDzR6oyg6dSLcPM3htNTCOeVBWu0m09ozFsfe106RossCWt51gFXktRh3c11uCx9a1YNb92FlgT8SRe2DuMpc01+MmyINLZisSS+Nf/R7X/6mlRBhV4MsECoKDavrEN3W2+WVCpPLTrZDi1hKMq5c/dvgBXtvtm2RxLTuOdo2N4dvcgFGhu31wP1m1LA7hvTRM6gsZPwc2AcWwoisc/6IO6C1PbdZ11eHxDm+lHCxSERwen8Ls9g1DriW7eXAuW+prFQ9e2YGOXH+ols2abWnN8emc/dp+OGHZvWOSHmv9l+iLGeDSJt46O4YV9Q67NXq4DSw1nW1bOw+YVDbOWa75Pj1q6eX7vEN45NmYKncp0D65rRmuWz60MTyTw5uEQ/npgxHWAuQYslV3uWtWYelqhsbbK9M5vhqC+8Th++58B7OwJZx3NVOZSWS/9i6rpJ41OJlJaL346emFILfdhsuzB+tllQdyyJIAVbT74POZD3kyQ1Rzp0MBUCqqDZyfzir2a+P9qfSuuMrmbTBdIJKdx8lwMH50M4+2jY2UNWdmBpYa625cGsGmxH92tPtTXGF/On4kWVad680gIv987t3nRw9e14KfLgnm3p8peg5E4Dg9MYV9vBDtOhKHmdOWyOR4sBdINXX78aKEfy1q8WBDwmBYxMwVMZakjg1OpifaetEl6oUH+YWcd7l/bjEubvbNqXbm0VD8mYkkMRhLoG4/h1GgMhwanMBxJYNep7ENyLm079jsKLDXsrGr34YqLfFjc5EVHwIOAt6rgICqjVSD7x+N49fNz+LvFD+3dsTyYeuTm4obqrHO5QgKu+quyanL6fIVfVfpfPnhO26KstmCpu65NXf5UfamlzgN/dSW8OeZI+QRKhaVvLI43Dofw0sFR0bs1Nb/7RXcDls4hg2W7FnUNH/dG8Oh7faL9z8fPTMdoC5bKTs/eMj/nHVe+F6/W844PR/Hvz0ZTE+dSbqsX1GLz5Q1Y01GHgNd8LbKQ/mSqrxWiIX2stmCpC79zxTzcv64JtWr1dw7bhbuwnnBqyNNhcnzrkgBuXFyPK9p9OcseZpesfiCqbKHmhDpvWoOljPv1Te248ZL6vOcqap3uy+EoPuwJ491jY1rAlAmA7lYvNnbVQ2W0RfOqU/PF7AURNQRO4JH3zmg7BM5cq/ZgZfrfu5kJuPqvZ/Ulis/6J7HjxLgjXmqbCTRVxF3TUYuVbT4saT5/h6uGzplHeUJTCfxm1wDePz6uc7JK9U17sFQn1bqcutNS2ejseBxfjURx4MwEPumbLOsi4/fpUdnNX1PpmB+OI8DS/ufJDs5ygGARChEHCJaIrRQlWGRAxAGCJWIrRQkWGRBxgGCJ2EpRgkUGRBwgWCK2UpRgkQERBwiWiK0UJVhkQMQBgiViK0UJFhkQcYBgidhKUYJFBkQcIFgitlKUYJEBEQcIloitFCVYZEDEAYIlYitFCRYZEHGAYInYSlGCRQZEHCBYIrZSlGCRAREHCJaIrRQlWGRAxAGCJWIrRQkWGRBxgGCJ2EpRgkUGRBwgWCK2UpRgkQERBwiWiK0UJVhkQMQBgiViK0UJFhkQcYBgidhK0W8B15VUJpZXA9AAAAAASUVORK5CYII="},{author:"lanhuxing",link:"https://gitee.com/lanhuxing",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAABFklEQVRoQ+2UwQ0BYRCFZ08iDnrQgEKcFKAKd4k23DSgig09SHCTcBBEIjbWKsBhZ2UwZr89v53MvO+9P9mOOoXU6Es4ODhtCAcHLBCGcDAHiHQwoC/nQBjCwRwg0sGA8mgRaSIdzIGPRrrZ7Uu7N5ak0ZL8vJPjbCjZZvFTCznY0n4IE2nLPOlm0WGdTzoVHabDuqRYquiwpZt0mA5b5kk3iw7rfNKp6DAd1iXFUkWHLd2sdYcf15Nkq1SKPCv19L5fyiWdlOreEXwt0lWWu63ncpgOqvyi1nKw2qo/FX6UsEdPONgjFcudIGzppsdZEPZIxXInCFu66XEWhD1SsdwJwpZuepwFYY9ULHeCsKWbHmfVjvATUOxdeMexngcAAAAASUVORK5CYII="},{author:"Q1",link:"https://gitee.com/yqyx",photo:"https://portrait.gitee.com/uploads/avatars/user/458/1374721_yqyx_1602561388.png!avatar200"},{author:"nodyang",link:"https://gitee.com/nodyang",photo:"https://portrait.gitee.com/uploads/avatars/user/24/73305_nodyang_1615357247.png!avatar200"},{author:"PublicUser",link:"https://gitee.com/publiczsy",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFoAAABaCAYAAAA4qEECAAAAAXNSR0IArs4c6QAAA2BJREFUeF7t209IFFEABvBvdt11JVCKSPIQRP8oEDqIhJSdhAKhYx2iS9AhvJTULejQqUPloU4dutghqAjSQDpUZF6CLIL+kJgUEiGYZu3O7MxOzIJ/Ug/PnZ1vp+mb83vv2/nNt29ndtX6eXODDx2RC1iCjty4HCBojrOgSc6CFjRLgJSjPVrQJAFSjBotaJIAKUaNFjRJgBSjRguaJECKUaMFTRIgxajRgiYJkGLUaEGTBEgxarSgSQKkGDVa0CQBUowaLWiSAClGjRY0SYAUo0b/T9ANh+8j3dJZ2Sn7Hny3ADgzKP34AHdiEO6nO/CLc5WtF9GsWDQ6FPQqMH5+CsW3N+C86YuIbe3LJhK6zOB75Xbbz3pi0e54Qpdc+F7BqDaWlQbqcsEfxq4c73sovrsFe+S80VpRDooldLDX/r7bYXze1roWZHYeR2b3SVgNG/+aF2wj9vBZuBMDxutFMTAR0PMw6U1tqN9/Fan1e5ZY+XDH7qHw5FQUfsZrJgo6OOvMrhPItl+ElW1aQCjNjqMwdBSlmTFjmGoPTBx0ANTQ/Qjp5vYFK9+ehj3cC3f8QbX9jNdLJHSu8zrqdhxbhC7OwX5xrnx/XasjkdD1B/rKH47zR/DwIujgrb7syXCtdx3LW5rr6kfdlkOCXg5TTehU0zbkum4j1bR9EfrXZPmuw/s2UqudIx7/LFRN6GzbBWRbTwOp7AJqAJwf6K4ZchCcqD06u7cXmdYeWNnGRVTPhvPqMpzX1wRdaaODJ8J08z6kN3cg3XIQqcatKx7FS1OjyA8eqfn3HbFsdLWq5wd78/Mz8L4+rtaSFa+TWGg//x3Oy0sofuyvGKeaExMH7Tuz8L4MwRm9Uv4hIC5HPKHX8DUpnFn4hSmUpt/DnXwK7/PDmu/Hq13cWEKHfWCJS4uXvg5Bk66KoAVt/gsLySpUjBodis98sqDNrUKNFHQoPvPJgja3CjVS0KH4zCcL2twq1EhBh+Iznyxoc6tQIwUdis98ciygzV/uvztS0KRrJ2hBkwRIMWq0oEkCpBg1WtAkAVKMGi1okgApRo0WNEmAFKNGC5okQIpRowVNEiDFqNGCJgmQYtRoQZMESDFqtKBJAqQYNVrQJAFSjBotaJIAKUaNFjRJgBSjRpOg/wCZ8kG5zPIi+gAAAABJRU5ErkJggg=="},{author:"\u8303\u4e50\u5929",link:"https://gitee.com/fan-letian",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAYAAAA4TnrqAAAAAXNSR0IArs4c6QAABjxJREFUeF7tmmlbU0cUx/8hBNmDLLJpQAMoS4PKrijg1hbbvuibPv1g/Qht3/RFN3lqHxEhtmwBjCCLCCKyGFCRLQFCSJ8zmttgAvfO5d4oPjMvk//MnPnlzJwzZ2L44cef/BBNEQGDgKWIExMJWMpZCVgcrAQsAYuHAIdWnFkCFgcBDqnwLAGLgwCHVHiWgMVBgEMqPEvA4iDAIRWeJWBxEOCQCs8SsDgIcEiFZ33ssBqrq5CZns7MdL18iXs9vbImq+kjOyin4IN41jdXruB4ViYzdeaFC7/fvStrtpo+soNyCgQsDmAC1oeC9cWlSzAnJcpOHx8Xh7gjR5jOs7kJt8ejS5/l1TX8ZbfLjq1UoKlnfX+zGUfNZqVz665bWl7Gz7daNJtHwOJAqSkspfOqiWxq+ii1R6lOwFJKKhIv0rmZx5CcmIiRiUnJLDVeoqYPBwdFUl09iw77GxcvINVsxqzLBXtfP+jQzc3MRGJ8HDNwze1h38k1NX3kxuT9XldYn9fXw2o5Idm05najd3AIIxMTvHZ+FHpdYSXGx6OxuhonsrNgMBjYgn0+H8ampvBP/wC8Xi/7rDAvDxfPn4MpOvpAUBaXlvDrndYDjbFfZ11hBSauKbfBVlQEk8kk2TK3sID2XgfblqdP5uNyZeWu79WsWOk9U83Y1CcisGiiYusp1JaXIy42ltm6ubWFLqcTj8af7ILl9/ux7fMBfmX/sYsyGmGMimJjHjpYdKhHGQx49eZNyA9oycnGpYoK0PZ8MDqKbudDpgn2rHW3B3c6OxUd+tQ3OEpOzcyipaNDrePI9tPUswLRz5yUhNGJSXQ6ndK5FLCENBQdJ6anJeO0gkWBo627R3bRagWawrpRfxEFFotki+vVK9zv62cFvv3aQWAF30cPFayi/HxU2z5jSWiguTc24BgcwtD4+J68tIC1s7ODgZERaWur9Z6IRsNw6QId2PSr2x19YW1RCyslKQk3GxtA255g9Q8Po+fhoB6c2JiabsNgKykVoAhoNBrZx6vr6+zgnl9YDFmMWliU1V+rq0NCfByLoL2DgxgYHjl8sMjicyXFOF9SwowPpAnhVqIWltViAT1kHImJYYGkw+HA2NOpwwmLrKYFxZii2UU6LSUFK+vrIRFSLaxrF+pY9k+3A96UQw1R3bbh+8bQlrlaV4t1jyckQu4F69SJ46ivqEC00Qi3ZwN++LHl9cKzsYm0oykwBwWSZ3NzuHWvXQ0DxX0iButqbS2KTuYzL6DsnRLSQITcC9axtFTQZTwpIWHfBdF4/w4M7CoDKSbAIYwILPKQhqoq6aqzvLqKlg47uxdS228bfnvjOrLePciGWxd5at/QIwl8Xk4OCyzT8/MYfqJtdSMisJobLiM/N5etlaIW5V0U5gNtP1ilhQXISs8I4bSz48OMy4XxqWe7vqssK0NFWSm7LxJIu8OByeczHP6zt1R3WCUFVtSdPcsiFrX5xUX8ea991yGv9oAPtyxKiikCRxEsznumHFFdYVFJ5qvGBmRnvPUMOls6HzwI2R5awmqqqUax1crmW1pZwS+3/w6JvnJQ9vpeV1jBvzIZMDU7i5b20KqAlrC+bmpixUZqVK7+rVX+fxRK4ekGi/4lc/1CnXRP3G9LaAnru+YvWT5HbWzyKVq7upSykNXpBiv4UKeCHhX5KMMO14Jh0ValvyAFl3BkV/FOQPWyK7W1iI+NZXdFrS/WusCynS5CTXm5VFOnQuBt+328WV0Nu+7C/DyWWsSYTCCwtF3p0k0PHEobPblV22zS+UjJK5WHRif/f4JTOlbEzqz3t593exvdTicejj3e01aqHpAnpiQnS5odvx++7W1F6zMYohAd/fbCHmgLr1+z8yrwKKJoIBmR5p51uaoSJVYrC93Uns+/wB9tbbK2VpSW4nxJ8YEfLWgiqnC09/Ziem5edl4egeawaPLyM2fYwsk72rq7FRttyc5mfTNSj0qPEEoXQ88blIRSHkdJL88WVjqHLrBocqq1JyckgC64n0rTDdanAih4HQIWx68qYAlYHAQ4pMKzBCwOAhxS4VkCFgcBDqnwLAGLgwCHVHiWgMVBgEMqPEvA4iDAIRWeJWBxEOCQCs8SsDgIcEiFZ3HA+g/L89DOrnKSJQAAAABJRU5ErkJggg=="},{author:"Postive\u4e36seche",link:"https://gitee.com/chezige",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAYAAAA4TnrqAAAAAXNSR0IArs4c6QAAAsVJREFUeF7t2T9oE3EcBfCXXKwn/kEUC6ZDoSCOgoiLEi3o5OTmIE6OpeIidHVxF+wgBUU6uImDVLCgJJYOFf+AUFRQrJJK6lCwmrvkLj/5pZJIh+Ze7khy8G5K4P1+3PeTl8sdyfyaOWCgI5JARliRnJohYUW3EhZhJSxhMQJEVtcsYRECRFTNEhYhQETVLGERAkRUzRIWIUBE1SxhEQJEVM0SFiFARNUsYRECRFTNEhYhQETVLGERAkS0p80aOj6FoWOTQHYo+imaECbwYKoVNCpLqH+cRbi6EH19gsnBx9o6bCNAWH4B7+V1mN/lBCk6b5U+rOZMBuHaG/jFCTTWP3SeMqFEX7GCL48RrDzddpSMexDO8Ek4h0/Bvm4dJkT900P4pcmEKDpv01cse/3xS9c6n6X963x3Hm5hGk7+tH232a/qGrziBMLv85H2iBtKDZYd1Bk+gZ1n7yK7d3Rz7kYdtffTqC3djOsQaX2qsOxE7vgMcmMXW8MFK3Pwnl2ONGzcUOqwtt5+hOUiqnNtvLgg260XFqGbOiy3cAe5I5faX8PPj+A9v0qM3H00VVjZ/Ufhnp9Fdt/Yvwt8DbV3t1F7fat7AWJlarAyO/bAPfcATr7QvnXY+NZsVVh5RYzcfXSgsSyQMzIOZ+QMcqMXkNl1qAUFe1O6fB/+4o3upydX9hWLPNf/4gb2V9CbvwJT3+h+G3Jl+rDsg/SPBfiLUz19LrSuKcEyMP46Gj/for58D8HXJ2Qnkon3FSvKg7T5s4qwXEpm2pi79BWLeZCOOWciy4VFMApLWIQAEVWzhEUIEFE1S1iEABFVs4RFCBDRnjaLOK+BjAqL+FiEJSxCgIiqWcIiBIiomiUsQoCIqlnCIgSIqJolLEKAiKpZwiIEiKiaJSxCgIiqWcIiBIiomiUsQoCIqlnCIgSIqJolLEKAiP4FngzbO1HJ6+8AAAAASUVORK5CYII="},{author:"BaY",link:"https://gitee.com/baiyanzhao",photo:"https://portrait.gitee.com/uploads/avatars/user/1631/4893177_baiyanzhao_1578976572.png!avatar200"},{author:"helloLuo",link:"https://gitee.com/lhw516678532",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAYAAAA4TnrqAAAAAXNSR0IArs4c6QAAAXNJREFUeF7t2KFqglEchvG/ipcgBothIGoyL5lsFu9gWHcPAy/BajJ6B0smwfCxKxAUNMv62Bx8W5mgnMcgOB+T4VEOP1+E7xSaL6+H8JUkUBArySmPxEq3EgtYiSUWEQCt/1liAQGQuiyxgABIXZZYQACkLkssIABSlyUWEACpyxILCIDUZYkFBEDqssQCAiB1WWIBAZBebVnP3YcYPtajXCrmx1uu9/E0zcBRf9JRvx2DTi1///H5FZPFJsbzFf6eSz4gFlATSywgAFKXJRYQAKnLEgsIgNRliQUEQOqybgELnPFkejePO2KdETh+kBYLYL1t32OW7bBZt1GJXqvqrUOKnFc0KUq/jVhi/RXwphQsQiyxgABIXZZYQACkLkssIABSlyUWELiz9Go3pf/BVSzwK4olFhAAqcsSCwiA1GWJBQRA6rLEAgIgdVliAQGQuiyxgABIXZZYQACkLkssIABSlyUWEACpyxILCIDUZQGsb3CINdUf5BOHAAAAAElFTkSuQmCC"},{author:"Penkar",link:"https://gitee.com/Penkar",photo:"https://portrait.gitee.com/uploads/avatars/user/3146/9440009_Penkar_1626239976.png!avatar200"},{author:"NL",link:"https://gitee.com/Cxq513975",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAYAAAA4TnrqAAAAAXNSR0IArs4c6QAAArZJREFUeF7t2m1r01AcBfCTNmmSdg58QJCJoCgKvhNFFEEEwa/p9xAUBOc7Uab7AqIDH5DZrmlsHuRmXdPabN5jYSve09dnIfnt/HOT23rfnu6W0MdKwBOWlVMVEpa9lbAIK2EJixEgsrpnCYsQIKJqlrAIASKqZgmLECCiapawCAEiqmYJixAgomqWsAgBIqpmCYsQIKJqlrAIASKqZgmLECCix9astfsxwmvB9NSKQYH+ywTZ15w4XWDuOAWQbKUYvk2pY/xr+MSwzAn/+pih/3xInbuzWGUOJO/Sqh22H2exDFCxV2DwaoTxTmbl5TSWERp/zvDzmd04uollfo7i7ZfJjOPovd2N2j2sAsi+5/DPtadgtuPoJFaynaKz4aN9uj29V9mMo5tYWymKpET3Vgivsz+P1Thupxi+OXx1dBbLPEyuPYgRXgnqcRwWGGyOMP7UvDo6jdVeb2HtYQz/zMw47mTov0hQjhd/lOg0lhk/8xrUux1ZjaPzWAasQrj693EUFgDbcRTW5OEhvBygdzeCF06eVs2uwof51VFYM2+FBiu63plZHUsMNpPp6iisGSwv8LD+pAv/bPPqKKw/9huOGkdhNWzOLIzjqMTe6wSdi0G94+rETqnFRVbj+LgL/3w9jtmXHPluIaymnb/OJR+9ezFaUb06Zj/y+n5mgW61o2gZOpk9eOIie3ciRDc6QKvhiojjWHocGVt5rKZxrL8icuHbHbIRwYZfvQ61upNxPNAij7Nsu1a+WQcXaPa94pvh/DgKq/n/b8bx1KMYwQW/Dgjr8GFZGMf/FWvZ+8Uq/P2x3bNW4WKXPQdhEYLCEhYhQETVLGERAkRUzRIWIUBE1SxhEQJEVM0SFiFARNUsYRECRFTNEhYhQETVLGERAkRUzRIWIUBE1SxhEQJEVM0isH4DaUPxvgdE4AQAAAAASUVORK5CYII="},{author:"sgg",link:"https://gitee.com/padoo_cn",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAAAXNSR0IArs4c6QAAA49JREFUaEPtWWlTGkEQfYCCnHLIgqgIcnjGMpVU/n0+5UOq8sWqRMsLRRDkEBSIci6Q6hGI5QUKY1Yy83V7Z9/r96anG1Rfv31v4z9aKkF4zNUWCo+5wBAKC4XHLAPC0mMm6AM6QmGh8JhlQFh6zAQVRUtYWlh6zDLwJpb2uCW4JSeMBj0mNBqoVCqWxlarhXqjgctCEWfJFG7KFe7p5Up42mxCaMkHi9nUl4gsN5FIpXESO+sbO0wAN8Kk5vpyCCajgeFrt9uo1uq4KZdB5Ehkg14Pg0EPjVrdUzyeTHElzY1wOODDnNvF7Fur1xGNJXCeyT4QR6fTYi0UgM06zZ6RxQ8iUVzkL4cR8sl3uRH+8nGTqUvnNBpPIpZIPgmC3LCxEmZnnFbmIofdg8j7IWyzWrAWDkKn1aLRkLEfOemrWNC/iAWPmzni+qaMH9s/3w9hq8XMzi/Ztdls4fg0zgrSc8stzWA54GeEq7Ua9o5OUCz9Hjlpbpb+tLmOaYuZAa5UqziKxpDLX42cwEs35EZ4cd4Dv3ce6k4FpipdqdZwVSwim8vjqlB6KdaRxHMjTOhWgktwu5xQdxqNu4ibrRaq1RoKpRJS6QuUrq9HQqjfJlwJ08c9LgneeQ8M+qlnsdC5TaYyiCXO+2Ee6jl3wl10DpsVLucMpi0mTOl0vfbyPvpCsYSD4yi3NvPNCN8lptFoIDnscNitrO2k66vbX1Mc9da/9g7RbDaHUvOxl/8J4ftAnA47/N45mIxG9oiIRk7jzOKjXoogTKTud1vn6SxrWEa9uBD+vLUBo8EAGgKj8cTAhWgltMSKHK2rQhHbO3uj5svn38OtjVXYO8NAJpfH7v7RQMBXwwHMSk4WS4PG/tE7UTjg88I7N8sKkSzLOD49QzL9/HkkS39YXWbX1+3AMbgzBspmJ4iLpQk0TT/dWZhI05mMniUfrbx2mxVB30KvaNHwsLN/iHKl+hIuA8VyIUxfnnVJCPgWoJ2c7AGh6kvt5U2lgnarjYkJDTvrU7q/11JDlnEygCMGYvdIEDfC9C1SLrC4ALPp9rrpt2jIICuns7l+oa9+zpVwFxX9iCfNOJjF6Ue87kDRvXNJdRr6E6kMl2bjbnbehPCr5eDwoiDMIamK2lIorCg5OIARCnNIqqK2FAorSg4OYITCHJKqqC2FwoqSgwMYoTCHpCpqS6GwouTgAEYozCGpitryD5Zf8LQzwCRUAAAAAElFTkSuQmCC"},{author:"smengcong",link:"https://gitee.com/smengcong",photo:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAABLCAYAAAA4TnrqAAAAAXNSR0IArs4c6QAABHZJREFUeF7tm9tXIkcQxj8EATcqCnIRRVQWdc0m+f8f8pSHvO3DZt1VXJSr3FXuwnLJqVmHiMcNXcrpMTnVLz7w9UzXb77uqao52n7/488xZCgRsAksJU6GSGCpsxJYDFYCS2BxCDC0cmYJLAYBhlScJbAYBBhScZbAYhBgSMVZAotBgCEVZwksBgGGVJwlsBgEGFJxlsBiEGBIxVkCi0GAIRVnCSwGAYbUUmfZ7XZshQLw+7x4s7QEh8MOm802Wf5wOEL/Wx/1RguFUhk39QYjtPlLLYMV349iM+CHw+FQimo8HqPV7iCZzuL65lZpzrxF2mGRm94fxuFd90y5SDWwb4MBLjM55K6KqlPmptMO6yC2i61QcArUYDBEs91GvdFEp9s1grMv2OFZXcHqyjKW3K4pPQFLJC9RqtTmBkLlQlphra+t4vjgLVxOp7E22lrV2g0+nycxHA5/uN5wMIC9nW24XN/n0bhtNPHh44lKjHPTaIW1H41gZzuMhftD/Oa2jo9fEv8Kyow06PfhILaHxfszbjAY4CyZQqlSnRuMWRfSCusovg9yCY3RaGScPenc1aw1Tn7/7fgIPu/axJXZqyK+XqaV579UaBksSguSqQxyBfWD2nQmxmNjCxfKFSSSqZcyUJ6vFZZxuG+GYGZS5WoNn07PlRdrtVArrKB/A4ex3UluNRqPUSpXcZHJotfrW81i5v21wqLVvD+KI7Dhm1rYcDQyEs5q7RrFSvXVgtMOi17/7+IxeNc8Tz5JOosGwyE6na5R3lBq0Wi1Zj51HQLtsCgoyuJj0QhCgQ2lcofShEarjXyhhErtWgeXJ+9hCSxzJeQyqg9pW75ZcmNhYWEmiGarbVl9aCmsx2T8G1741tfgWVmB2+2C/QfwKNvP5AtGnqZzvCpYjwMncASQzje3yzX1M23NZCqLfLGkjderhvWQAmX+0ciWUVSbg7bkh78+K5VL8yD6n4FFwZLTqGQyC3HqVpwZ3Qc99aE2WL8eH2Lds2q0Wig9SFykje4nd/x8FEfwPk+jpDaTu8JFOsu9zLP02mA9LKLp/1/yheKz6rqpYvz/Ciu6HTZ6UmZ60O508ek0AfrLGQ87D88pxjn3eqzV5izPyjKOD+OTA1q18fdwwdRhje1GJonsXa+Hk9Nz1Jt6MnxtsCjot3tRRMKhqRYxvdFS2fzMzJycubMVxuLi9w8ctJWL5Qq+JJIvMQtrrlZYVOb88u7gybrwrtdHs9VCo9lGr98zgnA5XfCsLhtJqgnJjI4K75Ozc/Y2ZtF5JNYKywAwo5BWCabTvcP5RQo1zZ/EtMMyYdC2ioQ34XQuqvAxNNTKoS7E11TakjaOZbBMQuFQwCikfzK+SDtgt/9TTNNLgABRY5BcRHkZ9+2p/CQUhJbDUljjq5EILMajEFgCi0GAIRVnCSwGAYZUnCWwGAQYUnGWwGIQYEjFWQKLQYAhFWcJLAYBhlScJbAYBBhScZbAYhBgSMVZAotBgCEVZwksBgGGVJwlsBgEGNK/AbDkeexTOAtZAAAAAElFTkSuQmCC"},{author:"\u3002\u6728\u9c7c",link:"https://gitee.com/muyu_shh",photo:"https://portrait.gitee.com/uploads/avatars/user/1722/5166920_muyu_shh_1578981594.png!avatar200"}],E=[{url:"https://www.oschina.net/",text:"\u5f00\u6e90\u4e2d\u56fd",title:""},{url:"https://gitee.com/",text:"Gitee",title:""},{url:"https://gitee.com/dotnetchina",text:"dotNET China",title:""},{url:"https://github.com/sunkaixuan/SqlSugar",text:"SqlSugar",title:""},{url:"http://www.thinkphp.cn/",text:"ThinkPHP",title:""},{url:"https://hutool.cn/",text:"Hutool",title:""},{url:"https://www.tiocloud.com/2/index.html",text:"t-io",title:""},{url:"https://gitee.com/LongbowEnterprise/BootstrapBlazor",text:"BootstrapBlazor",title:""},{url:"https://gitee.com/LongbowEnterprise/BootstrapAdmin",text:"BootstrapAdmin",title:""},{url:"https://gitee.com/monksoul/LayX",text:"Layx",title:""},{url:"https://gitee.com/dotnetchina/IoTSharp",text:"IoTSharp",title:""},{url:"https://www.eova.cn/",text:"Eova",title:""},{url:"http://www.pearadmin.com/",text:"PearAdmin",title:""},{url:"https://github.com/mengshukeji/Luckysheet",text:"Luckysheet",title:""},{url:"https://blog.lindexi.com/",text:"\u6797\u5fb7\u7199\u535a\u5ba2",title:""},{url:"http://www.easyson.com.cn",text:"\u6613\u80dc\u79d1\u6280",title:""},{url:"https://gitee.com/pig0224/ExamKing",text:"\u8003\u8bd5\u541b",title:""},{url:"https://gitee.com/veal98/Echo",text:"Echo",title:""},{url:"https://gitee.com/opencc/ccflow",text:"\u9a70\u9a8b\u5de5\u4f5c\u6d41",title:""},{url:"https://gitee.com/dotnetchina/weaving-socket",text:"weaving-socket",title:""},{url:"https://gitee.com/dotnetchina/SiMayRemoteMonitorOS",text:"SiMayRemoteMonitorOS",title:""},{url:"https://gitee.com/zuohuaijun/Admin.NET",text:"Admin.NET",title:""},{url:"https://gitee.com/dotnetchina/RRQMSocket",text:"RRQMSocket",title:""},{url:"https://gitee.com/dotnetchina/anno.core",text:"Anno.Core",title:""},{url:"https://gitee.com/dotnetchina/DBCHM",text:"DBCHM",title:""},{url:"https://gitee.com/dotnetchina/OpenAuth.Net",text:"OpenAuth.Net",title:""},{url:"https://dotnet9.com/",text:"Dotnet9",title:""},{url:"https://gitee.com/yhuse/SunnyUI",text:"SunnyUI",title:""},{url:"https://gitee.com/dotnetchina/MiniExcel",text:"MiniExcel",title:""},{url:"https://gitee.com/handyorg/HandyControl",text:"HandyControl",title:""},{url:"https://shopxo.net/",text:"ShopXO \u5f00\u6e90\u5546\u57ce",title:"ShopXO \u4f01\u4e1a\u7ea7\u514d\u8d39\u5f00\u6e90\u5546\u57ce"},{url:"https://gitee.com/ntdgg/tpflow",text:"tpflow",title:""},{url:"https://gitee.com/CoreUnion/CoreShop",text:"CoreShop",title:""},{url:"https://gitee.com/dromara/TLog",text:"TLog",title:""},{url:"https://gitee.com/dromara/liteFlow",text:"LiteFlow",title:""}],w=["title","titleId"];function C(){return(C=Object.assign||function(t){for(var A=1;A=0||(o[e]=t[e]);return o}(t,A);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(t,e)&&(o[e]=t[e])}return o}var B,Y,Q=function(t){var A=t.title,e=t.titleId,s=d(t,w);return m.createElement("svg",C({className:"docker_svg__icon",viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg",width:200,height:200,"aria-labelledby":e},s),A?m.createElement("title",{id:e},A):null,a||(a=m.createElement("defs",null,m.createElement("style",null))),o||(o=m.createElement("path",{d:"M944.9 471.64a141.947 141.947 0 00-105.047-9.506 139.64 139.64 0 00-56.784-88.959l-11.25-8.86-9.535 10.688a117.675 117.675 0 00-22.218 84.656 108.59 108.59 0 0021.206 56.87 164.925 164.925 0 01-30.544 13.443 204.272 204.272 0 01-62.972 10.153H73.925l-1.266 13.303a248.428 248.428 0 0020.897 129.375l8.128 16.116.928 1.519c55.829 92.193 167.204 139.95 274.05 139.95 206.888 0 364.191-98.747 442.575-288.479 52.37 2.672 105.947-12.403 131.57-61.003l6.524-12.403-12.431-6.975zM246.978 711.689a46.434 46.434 0 1147.813-46.435 47.166 47.166 0 01-47.813 46.434z",fill:"#1296db"})),r||(r=m.createElement("path",{d:"M246.978 640.7a24.44 24.44 0 1025.144 24.469 24.806 24.806 0 00-25.144-24.469M118.25 427.625h84.375V512H118.25zm112.5 0h84.375V512H230.75zm0-112.5h84.375V399.5H230.75zm112.5 0h84.375V399.5H343.25zm0 112.5h84.375V512H343.25zm112.5 0h84.375V512H455.75zm112.5 0h84.375V512H568.25zm-112.5-112.5h84.375V399.5H455.75zm0-112.5h84.375V287H455.75z",fill:"#1296db"})))},F=["title","titleId"];function V(){return(V=Object.assign||function(t){for(var A=1;A=0||(o[e]=t[e]);return o}(t,A);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(t,e)&&(o[e]=t[e])}return o}var v,K,k,R,S,U,x,W,b,N,O,L,G,y,M,I=function(t){var A=t.title,e=t.titleId,a=D(t,F);return m.createElement("svg",V({className:"kubernetes_svg__icon",viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg",width:200,height:200,"aria-labelledby":e},a),A?m.createElement("title",{id:e},A):null,B||(B=m.createElement("defs",null,m.createElement("style",null))),Y||(Y=m.createElement("path",{d:"M444.65 600.125l.262.375-37.462 90.487a193.912 193.912 0 01-77.813-97.387l96.676-16.388.15.188a16.5 16.5 0 0118.15 22.725zm-31.238-79.838a16.5 16.5 0 006.488-28.35l.075-.412-73.537-65.775a192.863 192.863 0 00-27.375 122.063l94.275-27.188.074-.338zm42.938-74.25a16.5 16.5 0 0026.213-12.637l.374-.188 5.625-98.25a192.9 192.9 0 00-112.874 54.076L456.2 446.15l.15-.075zm28.5 103.126l27.112 13.087 27.076-13.013 6.75-29.25-18.75-23.362h-30.15l-18.75 23.362 6.712 29.213zM541.1 433.1a16.5 16.5 0 0026.25 12.6l.3.112 80.025-56.737A194.55 194.55 0 00535.475 335l5.55 98.063.075.037zm407.85 223.875L732.462 926.263a60 60 0 01-46.8 22.275l-347.287.112a60 60 0 01-46.763-22.35l-216.6-269.25A59.362 59.362 0 0163.5 606.8l77.25-335.813c4.05-17.625 15.937-32.4 32.362-40.237L485.938 81.238a60.225 60.225 0 0151.937 0l312.937 149.437c16.425 7.838 28.313 22.65 32.363 40.238L960.5 606.725a59.041 59.041 0 01-11.55 50.25zm-123.338-77.138c-1.575-.375-3.862-.974-5.437-1.275-6.525-1.237-11.812-.937-17.963-1.425-13.124-1.387-23.924-2.512-33.562-5.55-3.937-1.5-6.75-6.187-8.1-8.1l-7.537-2.212a241.875 241.875 0 00-3.938-87.45 242.438 242.438 0 00-35.1-81.113c1.95-1.762 5.625-4.987 6.638-5.962.3-3.375.037-6.863 3.524-10.575 7.388-6.937 16.65-12.675 27.863-19.575 5.325-3.15 10.238-5.137 15.562-9.075 1.2-.9 2.85-2.325 4.126-3.337 9-7.163 11.062-19.5 4.612-27.6-6.45-8.1-18.975-8.85-27.937-1.688-1.276 1.013-3 2.325-4.163 3.3-5.025 4.35-8.138 8.625-12.375 13.125-9.225 9.375-16.875 17.175-25.238 22.838-3.637 2.1-8.962 1.387-11.362 1.237l-7.125 5.063a245.437 245.437 0 00-155.475-75.113l-.45-8.362c-2.437-2.325-5.362-4.313-6.112-9.376-.826-10.05.562-20.887 2.137-33.937.862-6.113 2.288-11.175 2.55-17.813.037-1.5-.038-3.712-.037-5.324 0-11.475-8.4-20.813-18.75-20.813-10.313 0-18.713 9.338-18.713 20.813l.037.525c0 1.537-.074 3.45 0 4.8.225 6.637 1.65 11.7 2.513 17.812 1.575 13.05 2.925 23.888 2.1 33.975a20.437 20.437 0 01-6.075 9.675l-.45 7.913A240.9 240.9 0 00335.15 360.35a313.988 313.988 0 01-6.75-4.8c-3.375.45-6.75 1.5-11.137-1.088-8.363-5.625-16.013-13.425-25.238-22.8-4.237-4.5-7.313-8.774-12.337-13.087a100.912 100.912 0 00-4.163-3.3 22.275 22.275 0 00-13.05-4.95 18.038 18.038 0 00-14.925 6.6c-6.45 8.1-4.387 20.475 4.613 27.637l.262.188 3.9 3.113c5.325 3.937 10.2 5.962 15.525 9.074 11.213 6.938 20.475 12.675 27.863 19.575 2.85 3.076 3.375 8.476 3.75 10.8l6 5.363a242.325 242.325 0 00-38.25 168.975l-7.8 2.25c-2.063 2.7-4.988 6.9-8.063 8.137-9.637 3.038-20.475 4.125-33.562 5.513-6.15.525-11.438.225-18 1.462-1.388.263-3.375.75-4.988 1.125l-.15.076-.262.075c-11.063 2.662-18.15 12.825-15.863 22.8 2.288 10.012 13.088 16.087 24.188 13.687l.262-.037.375-.113 4.838-1.087c6.374-1.725 11.025-4.238 16.8-6.45 12.375-4.426 22.65-8.138 32.625-9.6 4.2-.338 8.625 2.587 10.8 3.787l8.137-1.387a243.75 243.75 0 00108 134.85l-3.375 8.175c1.237 3.15 2.587 7.462 1.65 10.575-3.637 9.45-9.862 19.387-16.95 30.487-3.413 5.1-6.937 9.075-10.05 14.963-.75 1.387-1.687 3.562-2.4 5.025-4.8 10.312-1.275 22.162 7.988 26.624 9.3 4.5 20.85-.262 25.875-10.575v-.074c.75-1.463 1.725-3.375 2.324-4.763 2.626-6.075 3.526-11.288 5.4-17.175 4.95-12.45 7.688-25.5 14.513-33.637 1.875-2.25 4.875-3.076 8.063-3.938l4.237-7.688a241.988 241.988 0 00172.838.45l3.974 7.2c3.225 1.05 6.75 1.575 9.6 5.813 5.1 8.7 8.588 19.013 12.826 31.5 1.874 5.85 2.774 11.063 5.437 17.137.6 1.388 1.613 3.375 2.325 4.838 4.988 10.35 16.575 15.075 25.875 10.575 9.263-4.425 12.787-16.313 7.988-26.625-.75-1.462-1.688-3.6-2.438-5.025-3.112-5.85-6.637-9.787-10.05-14.925-7.125-11.1-12.975-20.288-16.612-29.737-1.5-4.875.262-7.875 1.425-11.025-.675-.825-2.213-5.4-3.113-7.575a243.713 243.713 0 00108-135.826c2.4.376 6.6 1.125 7.988 1.426 2.812-1.875 5.4-4.275 10.5-3.9 9.974 1.462 20.25 5.174 32.624 9.6 5.776 2.25 10.388 4.8 16.8 6.487 1.35.375 3.3.713 4.876 1.05l.337.113.262.037c11.138 2.4 21.9-3.675 24.188-13.688 2.25-9.974-4.8-20.137-15.863-22.8zM677 425.787l-73.125 65.475v.188a16.5 16.5 0 006.488 28.387l.112.376 94.725 27.3a194.963 194.963 0 00-4.05-62.776A195.3 195.3 0 00677 425.75zM526.512 625.475a16.387 16.387 0 00-15.15-8.7 16.5 16.5 0 00-13.95 8.738h-.075l-47.55 85.95a193.65 193.65 0 00124.725.112l-47.624-86.1h-.375zm70.8-48.488a16.5 16.5 0 00-10.124 1.35 16.5 16.5 0 00-8.025 21.45l-.113.15 37.875 91.426a193.125 193.125 0 0078.038-98.063l-97.5-16.5-.15.187z",fill:"#0092ff"})))},z=["title","titleId"];function Z(){return(Z=Object.assign||function(t){for(var A=1;A=0||(o[e]=t[e]);return o}(t,A);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(t,e)&&(o[e]=t[e])}return o}var f,J,j=function(t){var A=t.title,e=t.titleId,a=q(t,z);return m.createElement("svg",Z({className:"linux_svg__icon",viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg",width:200,height:200,"aria-labelledby":e},a),A?m.createElement("title",{id:e},A):null,v||(v=m.createElement("defs",null,m.createElement("style",null))),K||(K=m.createElement("path",{d:"M524.375 217.906c-8.063 5.25-14.25 12.938-17.719 21.938-3.562 11.625-3 24 1.406 35.344A59.437 59.437 0 00528.875 305a37.347 37.347 0 0017.063 6.563c6.187.75 12.375-.282 17.906-3.094a35.218 35.218 0 0014.906-16.219c3-6.938 4.688-14.344 4.875-21.844a73.847 73.847 0 00-3.563-28.219c-3.28-9.937-9.656-18.468-18.28-24.28-4.407-2.813-9.282-4.688-14.438-5.438a30.339 30.339 0 00-15.282 1.687 41.666 41.666 0 00-7.78 4.219",fill:"#FFF"})),k||(k=m.createElement("path",{d:"M791.563 600.594a395.632 395.632 0 00-22.313-77.438c-6.844-18.562-16.125-36.187-27.656-52.312-11.625-15.469-26.344-28.5-37.688-44.156-6-8.157-11.062-17.25-17.343-25.22-2.532-5.25-4.97-10.5-7.407-15.75-7.5-16.406-14.343-33.187-23.25-48.75-1.406-2.437-2.906-4.874-4.312-7.218-1.125-15-2.719-30-3.563-45a425.74 425.74 0 00-7.593-89.906c-3.938-14.156-9.938-27.75-17.813-40.125-9.188-14.625-21-27.375-34.875-37.594a134.301 134.301 0 00-77.25-24.75c-20.344-.469-40.5 4.125-58.594 13.5-19.031 10.406-34.406 26.438-44.062 45.844a153.998 153.998 0 00-14.063 62.344c-.75 21.187 1.219 42.187 2.063 63.375.844 21.937.375 43.968 2.156 65.906.563 7.031 1.406 14.062 1.406 21.187 0 3.563-.187 7.125-.281 10.594l-.281.75a450.215 450.215 0 01-31.688 46.781c-8.062 10.219-16.125 20.344-24.281 30.375-10.594 11.906-19.594 25.125-26.719 39.375-4.781 12.375-8.625 25.125-11.625 38.063l-.281 1.031a296.022 296.022 0 01-16.875 43.313 142.935 142.935 0 00-1.875 3.937c-4.031 8.344-8.25 16.688-12.656 24.844l-5.063 9.468a159.66 159.66 0 00-8.437 17.625c-1.406 3.657-2.531 7.407-3.188 11.25-1.219 8.157-.656 16.407 1.5 24.282.469 1.968 1.125 3.937 1.781 5.906 2.063 5.813 4.5 11.531 7.407 16.969 1.312 2.531 2.719 4.968 4.031 7.5l1.219 1.781a169.016 169.016 0 004.125 6.938l.187.28c1.594 2.626 3.375 5.157 5.063 7.688l.281.375c1.781 2.438 3.563 4.969 5.438 7.407 6.937 27.093 19.687 52.312 37.218 74.062-2.719 4.781-5.156 9.469-7.875 14.156A216.887 216.887 0 00293 853.72c-2.531 8.062-3.188 16.593-1.781 24.937 1.312 8.438 5.625 16.032 12.187 21.563 4.406 3.375 9.469 5.718 14.813 6.843 5.344 1.125 10.875 1.688 16.406 1.407 20.813-1.594 41.438-5.719 61.313-12.094 12-3.188 24-6 36.187-8.438 12.656-2.906 25.5-4.687 38.438-5.25 3.187.094 6.375-.093 9.468-.28 8.813.937 17.625 1.312 26.531.937l3.282-.188c2.25.282 4.594.375 6.937.563a480.306 480.306 0 0146.407 4.781c13.5 2.063 27 4.688 40.312 7.969 20.531 6.187 41.625 10.312 63.094 12.093 5.625.282 11.25-.187 16.875-1.312 5.531-1.125 10.781-3.563 15.281-6.938 6.563-5.437 10.875-13.03 12.281-21.468 1.407-8.344.75-16.875-1.781-24.938-6.188-15.656-14.156-30.562-23.906-44.343-3.375-5.72-6.563-11.625-9.938-17.344a307.557 307.557 0 0038.157-52.969c6.562.375 13.03-.375 19.312-2.438a81.136 81.136 0 0040.594-30.468c3-4.219 5.343-8.907 6.75-13.875a89.449 89.449 0 0012.937-33.094c3-19.5 2.532-39.469-1.406-58.781h-.188zm0 0",fill:"#020204"})),R||(R=m.createElement("path",{d:"M431 335a32.58 32.58 0 00-6 12.75c-1.031 4.594-1.688 9.375-1.781 14.063.281 9.468-.469 18.937-2.344 28.218-3.281 9.656-8.25 18.563-14.625 26.531-10.969 13.782-19.594 29.25-25.5 45.75-3 10.22-4.031 20.907-2.906 31.594a337.236 337.236 0 00-29.344 53.156c-12.563 28.032-20.625 57.938-23.906 88.5-4.031 37.594 1.5 75.563 15.937 110.438a182.552 182.552 0 0047.156 65.719c10.5 9.093 22.032 16.781 34.407 22.875 43.781 21.375 95.062 20.906 138.375-1.313a267.942 267.942 0 0058.687-46.406c11.157-10.125 21.094-21.469 29.813-33.844 14.531-25.218 23.062-53.531 24.843-82.593 9-50.25 3.47-102-15.843-149.25-7.594-15.75-17.625-30.188-29.813-42.75a236.719 236.719 0 00-18.937-63.75c-6.75-14.532-14.907-28.407-21.188-43.313-2.531-6.094-4.781-12.281-7.593-18.188-2.72-6-6.47-11.53-11.063-16.218-4.969-4.594-10.875-8.063-17.344-10.031a71.82 71.82 0 00-19.875-3.375c-13.5-.657-27.093 1.03-40.406.562-10.781-.469-21.375-2.344-32.156-1.688-5.344.282-10.688 1.313-15.656 3.282A31.379 31.379 0 00431 335.094m4.313-117.281c-5.063.375-9.844 2.53-13.5 6-3.657 3.468-6.375 7.875-7.875 12.656-2.532 9.75-3.188 19.969-1.782 30 .188 9.094 1.781 18.187 4.781 26.812 1.688 4.219 4.125 8.156 7.313 11.438 3.188 3.281 7.219 5.719 11.625 6.844a23.2 23.2 0 0012.656-.47c4.031-1.312 7.781-3.562 10.781-6.562 4.407-4.5 7.594-10.031 9.188-16.031a64.942 64.942 0 002.156-18.563c0-7.78-1.219-15.562-3.562-23.062s-6.375-14.344-11.813-20.063c-2.625-2.718-5.625-5.062-9-6.75-3.469-1.593-7.219-2.437-10.969-2.25m89.063 0c-8.063 5.25-14.25 12.938-17.719 21.938-3.562 11.625-3 24 1.406 35.344a59.437 59.437 0 0020.813 29.812 37.347 37.347 0 0017.063 6.563c6.187.75 12.375-.281 17.906-3.094a35.218 35.218 0 0014.906-16.219c3-6.937 4.688-14.344 4.875-21.844a73.847 73.847 0 00-3.563-28.218c-3.28-9.938-9.656-18.469-18.28-24.281-4.407-2.813-9.282-4.688-14.438-5.438a30.339 30.339 0 00-15.282 1.688 41.666 41.666 0 00-7.78 4.218",fill:"#FFF"})),S||(S=m.createElement("path",{d:"M542.469 241.625c-3 .188-5.813 1.125-8.344 2.719s-4.688 3.75-6.375 6.187a32.028 32.028 0 00-5.063 16.781c-.28 4.407.375 8.907 1.782 13.125s4.031 7.97 7.406 10.782a21.713 21.713 0 0012.469 4.875c4.593.187 9.093-1.031 12.843-3.656 3-2.157 5.438-4.875 7.125-8.157 1.688-3.187 2.72-6.75 3.188-10.312.938-6.375-.188-12.938-3-18.656-2.906-5.813-7.875-10.22-13.875-12.563-2.625-1.031-5.344-1.406-8.156-1.313",fill:"#020204"})),U||(U=m.createElement("path",{d:"M435.313 217.906c-5.063.375-9.844 2.531-13.5 6-3.657 3.469-6.375 7.875-7.875 12.656-2.532 9.75-3.188 19.97-1.782 30 .188 9.094 1.781 18.188 4.781 26.813 1.688 4.313 4.125 8.156 7.313 11.438 3.188 3.28 7.219 5.718 11.625 6.843a23.2 23.2 0 0012.656-.469c4.031-1.312 7.781-3.562 10.781-6.562 4.407-4.5 7.594-10.031 9.188-16.031a64.942 64.942 0 002.156-18.563c0-7.781-1.219-15.562-3.562-23.062s-6.375-14.344-11.813-20.063c-2.625-2.719-5.625-5.062-9-6.75-3.469-1.594-7.219-2.437-10.969-2.25",fill:"#FFF"})),x||(x=m.createElement("path",{d:"M423.219 259.625c-1.219 6.281-.938 12.844 1.031 18.938 1.5 4.03 3.75 7.687 6.75 10.78 1.875 2.063 4.031 3.844 6.563 5.063 2.53 1.313 5.343 1.688 8.156 1.031 2.531-.656 4.687-2.156 6.281-4.218 1.594-2.063 2.719-4.406 3.469-6.844 2.156-7.313 1.969-15.094-.375-22.406-1.5-5.344-4.406-10.219-8.531-13.875-1.97-1.688-4.407-3-6.938-3.656-2.625-.657-5.344-.47-7.875.656a13.685 13.685 0 00-6.094 6.094 26.075 26.075 0 00-2.531 8.343",fill:"#020204"})),W||(W=m.createElement("path",{d:"M411.313 338.469c.187.844.468 1.687.937 2.344a10.342 10.342 0 003.188 3.187c1.218.844 2.437 1.594 3.656 2.344 6.469 4.406 12.187 9.844 16.781 16.219C441.5 371.375 448.531 379.25 456.5 386c6.094 4.219 13.219 6.75 20.625 7.406 8.625.656 17.344-.375 25.688-3 7.687-2.25 15.093-5.437 22.03-9.656 11.907-9.563 24.657-18 38.157-25.031 3.188-1.125 6.375-1.969 9.375-3.375 3.094-1.313 5.719-3.563 7.313-6.563 1.03-3 1.687-6.187 1.78-9.375.47-3.375 1.595-6.656 2.157-10.031.75-3.375.469-6.844-.75-10.125a13.816 13.816 0 00-5.906-5.906c-2.532-1.219-5.344-1.969-8.157-2.063-5.718.188-11.343.75-16.875 1.688-7.5.656-15-.281-22.5 0-9.28.281-18.562 2.344-27.937 2.719-10.688.562-21.281-1.125-31.969-1.594-4.594-.281-9.281-.094-13.875.656-4.594.656-9 2.344-12.844 4.969-3.562 2.812-6.843 5.812-10.03 9a27.829 27.829 0 01-5.532 3.844c-2.063 1.03-4.219 1.593-6.563 1.5a10.766 10.766 0 00-3.468 0c-.656.28-1.313.656-1.781 1.125l-1.407 1.687c-.937 1.406-1.781 2.906-2.437 4.406",fill:"#D99A03"})),b||(b=m.createElement("path",{d:"M434.844 314.844c-3.75 2.25-7.406 4.687-11.063 7.219a14.568 14.568 0 00-4.781 4.78 10.16 10.16 0 00-.844 4.688 40.676 40.676 0 010 4.781c-.094 1.032-.469 2.157-.469 3.282 0 .562 0 1.125.188 1.594.188.562.375 1.03.75 1.406.469.469 1.125.844 1.875 1.031.656.188 1.406.281 2.156.469 3.281.937 6.281 2.719 8.719 5.062 2.531 2.25 4.781 4.875 7.5 7.031 7.5 5.625 16.594 8.532 25.875 8.438 9.281-.188 18.469-1.5 27.375-3.844 7.031-1.5 13.969-3.375 20.719-5.719 10.5-3.937 20.156-9.656 28.5-17.062a94.798 94.798 0 0111.625-9.656c3.75-2.344 8.156-3.938 11.906-6.188.375-.187.656-.469 1.031-.656.282-.281.563-.563.75-.938a2.626 2.626 0 000-2.062c-.187-.656-.468-1.219-.843-1.688a12.797 12.797 0 00-1.594-1.593 26.443 26.443 0 00-14.813-5.156c-5.437-.375-10.593 0-15.843-1.032-4.875-1.031-9.657-2.437-14.344-4.125a103.68 103.68 0 00-15.282-3.656c-12.187-1.969-24.562-1.688-36.656.938-11.344 2.53-22.312 6.843-32.437 12.656",fill:"#604405"})),N||(N=m.createElement("path",{d:"M433.625 302.094c-5.438 3.656-10.313 8.156-14.531 13.219a31.347 31.347 0 00-5.719 9.656c-.844 2.812-1.406 5.719-1.875 8.625-.281 1.031-.469 2.156-.469 3.281 0 .563.094 1.125.281 1.594a3.53 3.53 0 00.844 1.406c.656.656 1.5 1.031 2.438 1.219.844.187 1.781.187 2.719.281 4.125.656 7.968 2.344 11.343 4.781 3.375 2.344 6.563 5.063 10.031 7.313 7.875 4.687 16.875 7.219 26.063 7.406 9.188.188 18.281-.75 27.188-2.719a118.662 118.662 0 0021-5.906 125.554 125.554 0 0028.5-17.063c4.03-3 7.968-6.187 11.625-9.656 1.218-1.219 2.437-2.437 3.75-3.562a13.827 13.827 0 014.406-2.531c2.531-.657 5.156-.75 7.781-.094 1.875.469 3.844.656 5.813.656 1.03 0 1.968-.188 2.906-.469.937-.375 1.781-.937 2.343-1.687.844-1.031 1.22-2.25 1.22-3.563s-.376-2.531-1.032-3.656c-1.406-2.156-3.563-3.844-5.906-4.781-3.282-1.313-6.657-2.344-10.125-3a142.883 142.883 0 01-30.657-11.156c-4.875-2.438-9.468-5.063-14.343-7.594-4.875-2.719-9.938-5.063-15.188-6.75-12.094-3.281-24.937-2.719-36.656 1.687-13.125 4.594-24.844 12.563-33.844 23.156",fill:"#F5BD0C"})),O||(O=m.createElement("path",{d:"M494.656 287.188c.656 2.156 4.031 1.78 6 2.718 1.969.938 3.094 2.719 4.969 2.906 1.969.188 4.688-.656 4.969-2.437.375-2.438-3.188-3.938-5.438-4.781-3-1.406-6.375-1.5-9.375-.188-.656.281-1.312 1.125-1.125 1.781zm-32.25-1.125c-2.531-.844-6.656 3.562-5.437 5.906.375.656 1.5 1.406 2.25 1.031s2.156-2.906 3.375-3.75c.937-.75.75-2.906-.188-3.188zm0 0",fill:"#CD8907"})),L||(L=m.createElement("path",{d:"M864.219 809.938c-1.875 4.875-4.594 9.375-7.969 13.406-7.875 8.437-17.438 15.187-27.938 19.875-17.812 8.25-35.156 17.437-52.03 27.468a215.954 215.954 0 00-30.657 24.75c-7.781 8.157-16.125 15.657-24.938 22.688-9.187 6.75-19.78 11.344-31.03 13.125-13.782 1.781-27.75-.375-40.407-6.094-9.094-3.468-16.969-9.562-22.5-17.625-4.688-8.625-6.844-18.281-6.375-28.031a293.704 293.704 0 016.188-51.094c2.437-14.062 4.875-28.125 6.375-42.281 2.625-25.875 2.906-51.844.937-77.719a60.554 60.554 0 010-13.031c.563-8.813 7.969-15.563 16.875-15.469 4.031-.093 8.063.282 12 1.032 9.375 1.125 18.75 2.718 27.938 4.875 5.718 1.5 11.437 3.562 17.156 5.156 9.562 2.812 19.687 3.656 29.625 2.718 10.406-2.437 21-4.03 31.687-4.968 4.407.187 8.813.937 12.938 2.25 4.312 1.218 8.343 3.375 11.625 6.468 2.343 2.532 4.218 5.438 5.437 8.625 1.782 4.782 2.907 9.75 3.282 14.813.187 4.5.562 9 1.125 13.5 1.593 7.219 5.062 13.969 9.937 19.594 4.969 5.437 10.313 10.5 16.125 15a173.108 173.108 0 0017.438 13.5c2.906 1.968 5.812 3.75 8.53 5.906 2.813 2.063 5.157 4.688 6.938 7.688 2.25 4.125 3 8.906 1.875 13.5",fill:"#F5BD0C"})),G||(G=m.createElement("path",{d:"M864.219 809.938c-1.875 4.875-4.594 9.375-7.969 13.406-7.875 8.437-17.438 15.187-27.938 19.875-17.812 8.25-35.156 17.437-52.03 27.468a215.954 215.954 0 00-30.657 24.75c-7.781 8.157-16.125 15.657-24.938 22.688-9.187 6.75-19.78 11.344-31.03 13.125-13.782 1.781-27.75-.375-40.407-6.094-9.094-3.468-16.969-9.562-22.5-17.625-4.688-8.625-6.844-18.281-6.375-28.031a293.704 293.704 0 016.188-51.094c2.437-14.062 4.875-28.125 6.375-42.281 2.625-25.875 2.906-51.844.937-77.719a60.554 60.554 0 010-13.031c.563-8.813 7.969-15.563 16.875-15.469 4.031-.093 8.063.282 12 1.032 9.375 1.125 18.75 2.718 27.938 4.875 5.718 1.5 11.437 3.562 17.156 5.156 9.562 2.812 19.687 3.656 29.625 2.718 10.406-2.437 21-4.03 31.687-4.968 4.407.187 8.813.937 12.938 2.25 4.312 1.218 8.343 3.375 11.625 6.468 2.343 2.532 4.218 5.438 5.437 8.625 1.782 4.782 2.907 9.75 3.282 14.813.187 4.5.562 9 1.125 13.5 1.593 7.219 5.062 13.969 9.937 19.594 4.969 5.437 10.313 10.5 16.125 15a173.108 173.108 0 0017.438 13.5c2.906 1.968 5.812 3.75 8.53 5.906 2.813 2.063 5.157 4.688 6.938 7.688 2.25 4.125 3 8.906 1.875 13.5M275.188 666.03a26.145 26.145 0 0114.437-1.312 35.242 35.242 0 0113.5 5.718c7.781 5.907 14.531 13.22 19.875 21.375 13.219 18.188 25.875 36.75 37.406 56.063 9.375 15.656 17.906 31.781 28.688 46.5 7.031 9.563 15 18.469 22.125 28.031 7.406 9.375 13.031 20.063 16.5 31.407 4.125 15.093 2.437 31.125-4.594 45.093-5.063 9.75-12.656 17.907-21.938 23.532-9.375 5.625-20.156 8.437-31.125 8.156-17.25-2.344-33.937-7.594-49.312-15.563-32.719-13.031-68.25-17.156-102-27.281-10.406-3.094-20.531-6.844-31.031-9.656-4.688-1.125-9.281-2.532-13.781-4.407-4.407-1.875-8.25-5.062-10.782-9.093a20.743 20.743 0 01-2.719-10.782c.094-3.75.844-7.406 2.157-10.78 2.531-7.032 6.656-13.313 9.375-20.25a84.632 84.632 0 004.687-35.813c-.562-12.094-2.719-24.188-3.375-36.282a58.715 58.715 0 01.563-16.218c1.406-10.688 9.75-19.219 20.531-20.813 4.969-.843 9.938-1.218 14.906-.937 4.969.281 10.031.281 15 0 4.969-.282 9.938-1.688 14.344-4.032 4.031-2.437 7.594-5.812 10.313-9.75a124.125 124.125 0 007.406-12.187c2.25-4.219 4.781-8.156 7.781-11.906 2.813-3.844 6.656-6.75 11.063-8.813",fill:"#F5BD0C"})),y||(y=m.createElement("path",{d:"M275.188 666.125a26.145 26.145 0 0114.437-1.313 35.242 35.242 0 0113.5 5.72c7.781 5.905 14.531 13.218 19.875 21.374 13.219 18.188 25.875 36.75 37.406 56.063 9.375 15.656 17.906 31.781 28.688 46.5 7.031 9.562 15 18.468 22.125 28.031 7.406 9.375 13.031 20.063 16.5 31.406 4.125 15.094 2.437 31.125-4.594 45.094-5.063 9.75-12.656 17.906-21.938 23.531-9.375 5.625-20.156 8.438-31.125 8.157-17.25-2.344-33.937-7.594-49.312-15.563-32.719-13.031-68.25-17.156-102-27.281-10.406-3.094-20.531-6.844-31.031-9.657-4.688-1.125-9.281-2.53-13.781-4.406-4.407-1.875-8.25-5.062-10.782-9.093a20.743 20.743 0 01-2.719-10.782c.094-3.75.844-7.406 2.157-10.781 2.531-7.031 6.656-13.313 9.375-20.25a84.632 84.632 0 004.687-35.813c-.562-12.093-2.719-24.093-3.375-36.28a58.715 58.715 0 01.563-16.22c1.406-10.687 9.75-19.218 20.531-20.812 4.969-.844 9.938-1.219 14.906-.938 4.969.282 10.031.282 15 0 4.969-.28 9.938-1.687 14.344-4.03 4.031-2.438 7.594-5.813 10.313-9.75a124.125 124.125 0 007.406-12.188c2.25-4.219 4.781-8.157 7.781-11.907 2.813-3.843 6.656-6.843 11.063-8.812",fill:"#F5BD0C"})),M||(M=m.createElement("path",{d:"M282.406 674c4.125-1.594 8.719-1.875 13.031-.844s8.344 3 11.813 5.813c6.656 5.812 12.281 12.75 16.5 20.531 11.25 18.188 22.219 36.563 32.438 55.313a370.55 370.55 0 0024.937 41.437c6.375 8.625 13.688 16.5 20.25 24.938 6.844 8.343 12 17.812 15.188 28.03 3.75 13.407 2.156 27.75-4.22 40.22-4.687 8.812-11.718 16.218-20.343 21.187a51.593 51.593 0 01-28.5 7.031 163.06 163.06 0 01-45.188-13.968c-28.5-10.407-59.53-11.72-88.78-19.875-10.5-2.813-20.72-6.657-31.313-9.282-4.688-1.031-9.375-2.343-13.875-4.031-4.5-1.688-8.438-4.875-11.063-8.906-1.687-3.188-2.531-6.75-2.344-10.313a33.95 33.95 0 012.25-10.5c2.532-6.656 6.563-12.75 9.094-19.406 3.563-10.313 4.781-21.188 3.656-32.063-.75-10.78-2.718-21.468-3.28-32.343-.376-4.782-.188-9.657.655-14.438.844-4.781 3.094-9.187 6.47-12.75 3.937-3.562 8.812-5.906 14.062-6.562 5.25-.657 10.5-.657 15.656 0 5.25.656 10.5.843 15.75.75 10.313 0 19.688-6 24.094-15.375a98.75 98.75 0 005.531-13.032c1.594-4.5 3.75-8.718 6.281-12.75 2.625-4.03 6.375-7.218 10.781-9.093",fill:"#F5BD0C"})))},H=["title","titleId"];function T(){return(T=Object.assign||function(t){for(var A=1;A=0||(o[e]=t[e]);return o}(t,A);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(t,e)&&(o[e]=t[e])}return o}var X,_,$=function(t){var A=t.title,e=t.titleId,a=P(t,H);return m.createElement("svg",T({className:"macos_svg__icon",viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg",width:200,height:200,"aria-labelledby":e},a),A?m.createElement("title",{id:e},A):null,f||(f=m.createElement("defs",null,m.createElement("style",null))),J||(J=m.createElement("path",{d:"M878.3 721.7c-1.35 3.6-18.9 65.25-62.1 128.25-37.8 54.9-76.5 109.8-137.7 110.7-60.3.9-79.65-36-148.5-36s-90.45 35.1-147.6 36.9c-58.95 2.25-104.4-59.85-142.2-114.3C163.25 736.55 103.85 531.8 183.5 395c39.15-68.4 109.8-112.05 186.3-113.4 57.6-.9 112.95 39.15 148.05 39.15 36 0 102.6-48.6 172.8-41.4 29.25 1.35 111.6 12.15 164.25 89.1-4.05 2.7-98.1 58.5-97.2 171.45.9 136.35 119.25 181.35 120.6 181.8m-234-515.25c31.5-38.7 52.65-91.8 46.8-144.45-45 1.8-100.35 30.15-132.75 68.4-28.8 33.3-54.45 87.3-47.25 139.5 49.95 2.7 101.7-26.55 133.2-63.45",fill:"#fff"})))},tt=["title","titleId"];function At(){return(At=Object.assign||function(t){for(var A=1;A=0||(o[e]=t[e]);return o}(t,A);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(t,e)&&(o[e]=t[e])}return o}var at=function(t){var A=t.title,e=t.titleId,a=et(t,tt);return m.createElement("svg",At({className:"windows_svg__icon",viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg",width:200,height:200,"aria-labelledby":e},a),A?m.createElement("title",{id:e},A):null,X||(X=m.createElement("defs",null,m.createElement("style",null))),_||(_=m.createElement("path",{d:"M459.5 485.75V182.094l-314.906 67.5V485.75H459.5zm52.5 0h367.313V92.187L512 170.938V485.75zm-52.5 52.5H144.687v236.156l314.907 67.5V538.25zm52.5 0v314.906l367.313 78.75V538.25H512z",fill:"#00adef"})))},ot=["children","className"];function rt(){return m.createElement("div",{className:"furion-banner"},m.createElement("div",{className:"furion-banner-container"},m.createElement("div",{className:"furion-banner-item"},m.createElement("div",{className:"furion-banner-project"},"Furion"," ",m.createElement("span",{style:{fontSize:14,fontWeight:"normal",color:"#8759ff"}},"[fu:r\u026a\u0259n]")),m.createElement("div",{className:"furion-banner-description"},"\u8ba9 .NET \u5f00\u53d1\u66f4\u7b80\u5355\uff0c\u66f4\u901a\u7528\uff0c\u66f4\u6d41\u884c\u3002"),m.createElement("ul",{className:"furion-banner-spec"},m.createElement("li",null,"\u57fa\u4e8e .NET5/6 \u5e73\u53f0\uff0c\u6ca1\u6709\u5386\u53f2\u5305\u88b1"),m.createElement("li",null,"\u6781\u5c11\u4f9d\u8d56\uff0c\u53ea\u4f9d\u8d56\u4e24\u4e2a\u7b2c\u4e09\u65b9\u5305"),m.createElement("li",null,"\u6781\u901f\u4e0a\u624b\uff0c\u4e00\u4e2a Inject() \u5b8c\u6210\u914d\u7f6e"),m.createElement("li",null,"\u4ee3\u7801\u65e0\u4fb5\u5165\u6027\uff0c100% \u517c\u5bb9\u539f\u751f\u5199\u6cd5")),m.createElement("div",{className:"furion-support-platform"},"\u53d7\u652f\u6301\u5e73\u53f0\uff1a"),m.createElement("div",{className:"furion-support-icons"},m.createElement("span",null,m.createElement(at,{height:"39",width:"39"})),m.createElement("span",null,m.createElement(j,{height:"39",width:"39"})),m.createElement("span",null,m.createElement($,{height:"39",width:"39"})),m.createElement("span",null,m.createElement(Q,{height:"39",width:"39"})),m.createElement("span",null,m.createElement(I,{height:"39",width:"39"}))),m.createElement("div",{className:"furion-get-start-btn"},m.createElement(g.Z,{className:"furion-get-start",to:(0,l.Z)("docs/get-start")},"\u4e00\u5206\u949f\u4e0a\u624b"),m.createElement("div",{className:"furion-version"},"v2.18.7"))),m.createElement("div",{className:"furion-banner-item"},m.createElement(pt,{style:{float:"right"}},m.createElement(ht,{language:"cs",source:'\npublic class FurionAppService : IDynamicApiController\n{\n private readonly IRepository _userRepository;\n public AppService(IRepository userRepository)\n {\n _userRepository = userRepository;\n }\n\n [IfException(1000, "\u7528\u6237ID: {0} \u4e0d\u5b58\u5728")]\n public async Task GetUser([Range(1, int.MaxValue)] int userId)\n {\n var user = await _userRepository.FindOrDefaultAsync(userId);\n _ = user ?? throw Oops.Oh(1000, userId);\n return user.Adapt();\n }\n\n public async Task GetRemote(string id)\n {\n var data = await $"https://www.furion.pro/data?id={id}".GetAsAsync();\n return data;\n }\n}\n'})))))}function st(){var t=(0,c.Z)(),A=t.isDarkTheme;t.setLightTheme,t.setDarkTheme;return m.createElement("div",{className:"furion-content"},m.createElement("p",{className:"furion-small-title"+(A?" dark":"")},"\u5b8c\u5168\u5f00\u6e90\u514d\u8d39"),m.createElement("h1",{className:"furion-big-title"+(A?" dark":"")},"\u2b50\ufe0f Gitee \u5e73\u53f0 C# \u8bed\u8a00\u6700\u9ad8\u661f\u9879\u76ee \u2b50\ufe0f"),m.createElement("div",{className:"furion-gitee-log"},m.createElement("div",{className:"furion-log-item",style:{border:"6px solid #723cff"}},m.createElement("div",{className:"furion-log-jiao"+(A?" dark":"")}),m.createElement("div",{className:"furion-log-number"},m.createElement("div",{style:{color:"#723cff"}},"7000 +"),m.createElement("span",{className:A?" dark":""},"Stars"))),m.createElement("div",{className:"furion-log-item",style:{border:"6px solid #3fbbfe"}},m.createElement("div",{className:"furion-log-jiao"+(A?" dark":"")}),m.createElement("div",{className:"furion-log-number"},m.createElement("div",{style:{color:"#3fbbfe"}},"3050 +"),m.createElement("span",{className:A?" dark":""},"Forks"))),m.createElement("div",{className:"furion-log-item",style:{border:"6px solid #1fd898"}},m.createElement("div",{className:"furion-log-jiao"+(A?" dark":"")}),m.createElement("div",{className:"furion-log-number"},m.createElement("div",{style:{color:"#1fd898"}},"1,034,455"),m.createElement("span",{className:A?" dark":""},"Downloads")))))}function it(){var t=(0,c.Z)(),A=t.isDarkTheme;t.setLightTheme,t.setDarkTheme;return m.createElement("div",{className:"furion-content"},m.createElement("p",{className:"furion-small-title"+(A?" dark":"")},"\u5927\u91cf\u4f7f\u7528\u8005\u6d4b\u8bc4"),m.createElement("h1",{className:"furion-big-title"+(A?" dark":"")},"\u6765\u542c\u542c\u4ed6\u4eec\u662f\u600e\u4e48\u8bf4\u7684"),m.createElement("div",{className:"furion-remark"},m.createElement("div",{className:"furion-remark-item"},m.createElement("div",{className:"furion-remark-p"},m.createElement("h1",null,"\u7406\u60f3\u548c\u73b0\u5b9e"),m.createElement("p",{className:A?" dark":void 0},"\u4f5c\u8005\u7684\u6280\u672f\u662f\u6211\u63a5\u89e6.NET\u7a0b\u5e8f\u5458\u4e2d\u6700\u597d\u7684\u4e00\u4e2a\uff0c\u4ee3\u7801\u7684\u8d28\u91cf\uff0c\u6587\u6863\u7684\u8d28\u91cf\u90fd\u662f\u4e00\u7b49\u4e00\u7684\u3002")),m.createElement("div",{className:"furion-remark-p"},m.createElement("h1",null,"kesshei"),m.createElement("p",{className:A?" dark":void 0},"\u5f3a\u70c8\u652f\u6301\uff0c\u56e0\u4e3a\u6709\u4f60\u4eec\uff0c.net \u4f1a\u8d70\u7684\u66f4\u8fdc\u3002")),m.createElement("div",{className:"furion-remark-p"},m.createElement("h1",null,"\u9006\u5929\u7684\u8748\u8748"),m.createElement("p",{className:A?" dark":void 0},"\u975e\u5e38\u4f18\u79c0\u7684\u5f00\u6e90\u4f5c\u54c1\uff0c\u70b9\u8d5e\u652f\u6301"))),m.createElement("div",{className:"furion-remark-item"},m.createElement("div",{className:"furion-remark-p"},m.createElement("h1",null,"\u5f20\u82b8\u6eaa"),m.createElement("p",{className:A?" dark":void 0},"\u5927\u6982\u770b\u4e86\u4e00\u4e0b\uff0c\u89c9\u5f97\u9879\u76ee\u975e\u5e38\u68d2\u3002core\u751f\u6001\u4e00\u5b9a\u80fd\u706b")),m.createElement("div",{className:"furion-remark-p"},m.createElement("h1",null,"\u8d56\u76ae\u5c0f\u9cc4\u9c7c"),m.createElement("p",{className:A?" dark":void 0},"\u4f5c\u8005\u597d\u68d2\uff0c\u652f\u6301\u56fd\u5185.net\uff01")),m.createElement("div",{className:"furion-remark-p"},m.createElement("h1",null,"gudufy"),m.createElement("p",{className:A?" dark":void 0},"\u505a\u5f97\u975e\u5e38\u68d2\uff0c\u6253\u7b97\u57fa\u4e8e\u4f60\u7684\u6846\u67b6\u505a\u4e00\u4e2a\u57fa\u672c\u7684\u540e\u53f0\u7ba1\u7406\u51fa\u6765\uff0c\u4f9b\u5927\u5bb6\u5feb\u901f\u5f00\u53d1\u4e2d\u5c0f\u578b\u9879\u76ee\u3002"))),m.createElement("div",{className:"furion-remark-item"},m.createElement("div",{className:"furion-remark-p"},m.createElement("h1",null,"ThinkCoder"),m.createElement("p",{className:A?" dark":void 0},"\u6587\u6863\u5199\u7684\u771f\u4e0d\u9519\uff0c\u4ee3\u7801\u8d28\u91cf\u4e5f\u975e\u5e38\u9ad8\uff0c\u6ce8\u91ca\u975e\u5e38\u5b8c\u5584\uff0c\u8d5e\u4e00\u4e2a\u3002")),m.createElement("div",{className:"furion-remark-p"},m.createElement("h1",null,"liuina"),m.createElement("p",{className:A?" dark":void 0},"\u671f\u5f85\u6587\u6863\u5199\u5b8c\u7684\u90a3\u4e00\u5929\uff0c\u7edd\u5bf9\u60ca\u8273\u56db\u5ea7\u3002")),m.createElement("div",{className:"furion-remark-p"},m.createElement("h1",null,"weiyu.xiao"),m.createElement("p",{className:A?" dark":void 0},"\u5f88\u4e0d\u9519\u7684\u9879\u76ee\uff0c\u5bf9\u5feb\u901f\u642d\u5efa\u5065\u58ee\u7684\u6280\u672f\u67b6\u6784\uff0c\u5e2e\u52a9\u4e1a\u52a1\u6210\u529f\u5f88\u6709\u5e2e\u52a9\u3002")))),m.createElement("div",null,m.createElement("a",{href:"https://gitee.com/dotnetchina/Furion#-%E8%B4%A1%E7%8C%AE%E4%BB%A3%E7%A0%81",target:"_blank",className:"furion-get-start",style:{margin:0}},"\u60f3\u770b\u66f4\u591a\u8bc4\u8bba\uff1f")))}function gt(){return m.createElement("div",{className:"furion-whouse"},m.createElement("div",{className:"furion-who-custom"},m.createElement("div",{className:"furion-custom-img"},m.createElement("a",{href:"https://gitee.com/dotnetchina",target:"_blank"},m.createElement("img",{src:(0,l.Z)("img/chinadotnet.png"),id:"dotnet-china"}))),m.createElement("div",{className:"furion-custom-img"},m.createElement("img",{src:(0,l.Z)("img/custom1.png"),height:"100"})),m.createElement("div",{className:"furion-custom-img"},m.createElement("img",{src:(0,l.Z)("img/custom2.png"),height:"100"})),m.createElement("div",{className:"furion-custom-img"},m.createElement("img",{src:(0,l.Z)("img/custom3.png"),height:"100"})),m.createElement("div",{className:"furion-custom-img"},m.createElement("img",{src:(0,l.Z)("img/custom4.jpg"),height:"100"})),m.createElement("div",{className:"furion-custom-img"},m.createElement("a",{href:"http://www.hezongsoft.net",target:"_blank"},m.createElement("img",{src:(0,l.Z)("img/custom5.png"),height:"100"}))),m.createElement("div",{className:"furion-custom-img"},m.createElement("a",{href:"http://www.dilon.vip/",target:"_blank"},m.createElement("img",{src:(0,l.Z)("img/custom6.png"),height:"100"}))),m.createElement("div",{className:"furion-custom-img"},m.createElement("img",{src:(0,l.Z)("img/c10.jpg"),height:"100"})),m.createElement("div",{className:"furion-custom-img"},m.createElement("img",{src:(0,l.Z)("img/jjd.png"),height:"100"})),m.createElement("div",{className:"furion-custom-img"},m.createElement("a",{href:"http://www.samfeng.cn/",target:"_blank"},m.createElement("img",{src:(0,l.Z)("img/custom10.png"),height:"100"}))),m.createElement("div",{className:"furion-custom-img"},m.createElement("a",{href:"http://www.ketaisoft.com/",target:"_blank"},m.createElement("img",{src:(0,l.Z)("img/custom11.png"),height:"100"})))),m.createElement("div",{className:"furion-who-des"},m.createElement("div",{style:{maxWidth:350}},m.createElement("div",null),m.createElement("h1",null,"\u4ed6\u4eec\u90fd\u5728\u7528"),m.createElement("p",null,"Furion \u5df2\u5728\u5168\u7403\u591a\u4e2a\u9879\u76ee\u4e2d\u4f7f\u7528\u3002\u4ece\u5c0f\u578b\u4f01\u4e1a\u5230\u4f01\u4e1a\u7684\u89e3\u51b3\u65b9\u6848\u53ca\u77e5\u540d\u4f01\u4e1a\u3002\u4ed6\u4eec\u5728\u7b80\u5355\u8f6f\u4ef6\u548c\u590d\u6742\u7ba1\u7406\u7cfb\u7edf\u7684\u5f00\u53d1\u65b9\u9762\u90fd\u4fe1\u4efb\u6211\u4eec\u3002"),m.createElement(g.Z,{className:"furion-get-start",to:"mailto:monksoul@outlook.com"},"\u7acb\u5373\u6dfb\u52a0\u60a8\u7684\u516c\u53f8"))))}function lt(){var t=(0,c.Z)(),A=t.isDarkTheme;t.setLightTheme,t.setDarkTheme;return m.createElement("div",{className:"furion-links"},m.createElement("p",{className:"furion-small-title"+(A?" dark":"")},"\u53cb\u60c5\u94fe\u63a5"),m.createElement("h1",{className:"furion-big-title"+(A?" dark":"")},"\u5b83\u4eec\u4e00\u6837\u662f\u4f18\u79c0\u7684\u9879\u76ee/\u7f51\u7ad9"),m.createElement("div",{className:"furion-links-content"},E.map((function(t,A){return m.createElement("a",{href:t.url,key:A,target:"_blank",title:t.title},t.text)}))))}function nt(){var t=(0,c.Z)(),A=t.isDarkTheme;t.setLightTheme,t.setDarkTheme;return m.createElement("div",{className:"furion-contributors"},m.createElement("p",{className:"furion-small-title"+(A?" dark":"")},"\u6846\u67b6\u8d21\u732e\u8005"),m.createElement("h1",{className:"furion-big-title"+(A?" dark":"")},"\u6b63\u662f\u4ed6\u4eec\u6210\u5c31\u4e86 Furion \u4e0d\u51e1"),m.createElement("div",{className:"furion-contributors-list"},u.map((function(t,e){return m.createElement("div",{className:"furion-contributor-item"+(A?" dark":""),key:e},t.extra?m.createElement("div",{className:"furion-contributor-extra"},t.extra):"",m.createElement("a",{href:t.link,target:"_blank",title:"\u70b9\u51fb\u67e5\u770b "+t.author+" \u5f00\u6e90\u4e3b\u9875"},m.createElement("img",{src:t.photo,alt:t.author+" \u5934\u50cf",title:"\u70b9\u51fb\u67e5\u770b "+t.author+" \u5f00\u6e90\u4e3b\u9875"}),m.createElement("div",null,t.author)))}))))}function ct(){var t=(0,c.Z)(),A=t.isDarkTheme;t.setLightTheme,t.setDarkTheme;return m.createElement("div",{className:"furion-proccesson"},m.createElement("p",{className:"furion-small-title"+(A?" dark":"")},"\u529f\u80fd\u6a21\u5757"),m.createElement("h1",{className:"furion-big-title"+(A?" dark":"")},"\u9ebb\u96c0\u867d\u5c0f\u4e94\u810f\u4ff1\u5168"),m.createElement("div",{className:"furion-proccesson-content"},m.createElement("iframe",{id:"embed_dom",name:"embed_dom",frameBorder:"0",style:{display:"block",width:"100%",height:"600px"},src:"https://www.processon.com/embed/60a7489f6376891bafa2d353"})))}function ht(t){var A=t.language,e=t.replace,a=(t.section,t.source);if(a=a.replace(/\/\/ <.*?\n/g,""),e)for(var o=0,r=Object.entries(e);o0&&r.createElement("div",{className:"row footer__links"},o.map((function(t,A){return r.createElement("div",{key:A,className:"col footer__col"},null!=t.title?r.createElement("h4",{className:"footer__title"},t.title):null,null!=t.items&&Array.isArray(t.items)&&t.items.length>0?r.createElement("ul",{className:"footer__items"},t.items.map((function(t,A){return t.html?r.createElement("li",{key:A,className:"footer__item",dangerouslySetInnerHTML:{__html:t.html}}):r.createElement("li",{key:t.href||t.to,className:"footer__item"},r.createElement(h,t))}))):null)}))),(c||e)&&r.createElement("div",{className:"footer__bottom text--center"},c&&c.src&&r.createElement("div",{className:"margin-bottom--sm"},c.href?r.createElement("a",{href:c.href,target:"_blank",rel:"noopener noreferrer",className:n},r.createElement(p,{alt:c.alt,url:m})):r.createElement(p,{alt:c.alt,url:m})),e?r.createElement("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:e}}):null))):null}}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/c601aa1c.bc5b1255.js b/handbook/build/assets/js/c601aa1c.bc5b1255.js new file mode 100644 index 00000000000..2f72a0365b2 --- /dev/null +++ b/handbook/build/assets/js/c601aa1c.bc5b1255.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[2379],{3905:function(e,n,t){t.d(n,{Zo:function(){return d},kt:function(){return u}});var a=t(7294);function i(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function r(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function o(e){for(var n=1;n=0||(i[t]=e[t]);return i}(e,n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(i[t]=e[t])}return i}var p=a.createContext({}),s=function(e){var n=a.useContext(p),t=n;return e&&(t="function"==typeof e?e(n):o(o({},n),e)),t},d=function(e){var n=s(e.components);return a.createElement(p.Provider,{value:n},e.children)},c={inlineCode:"code",wrapper:function(e){var n=e.children;return a.createElement(a.Fragment,{},n)}},m=a.forwardRef((function(e,n){var t=e.components,i=e.mdxType,r=e.originalType,p=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),m=s(t),u=i,k=m["".concat(p,".").concat(u)]||m[u]||c[u]||r;return t?a.createElement(k,o(o({ref:n},d),{},{components:t})):a.createElement(k,o({ref:n},d))}));function u(e,n){var t=arguments,i=n&&n.mdxType;if("string"==typeof e||i){var r=t.length,o=new Array(r);o[0]=m;var l={};for(var p in n)hasOwnProperty.call(n,p)&&(l[p]=n[p]);l.originalType=e,l.mdxType="string"==typeof e?e:i,o[1]=l;for(var s=2;sCookie \u8eab\u4efd\u9a8c\u8bc1",id:"1521-\u6dfb\u52a0-cookie-\u8eab\u4efd\u9a8c\u8bc1",children:[]},{value:"15.2.2 \u6dfb\u52a0 Jwt \u8eab\u4efd\u9a8c\u8bc1",id:"1522-\u6dfb\u52a0-jwt-\u8eab\u4efd\u9a8c\u8bc1",children:[]},{value:"15.2.3 \u6df7\u5408\u8eab\u4efd\u9a8c\u8bc1",id:"1523-\u6df7\u5408\u8eab\u4efd\u9a8c\u8bc1",children:[]}]},{value:"15.3 \u9ad8\u7ea7\u81ea\u5b9a\u4e49\u6388\u6743",id:"153-\u9ad8\u7ea7\u81ea\u5b9a\u4e49\u6388\u6743",children:[{value:"15.3.1 AppAuthorizeHandler",id:"1531-appauthorizehandler",children:[]},{value:"15.3.2 \u5b8c\u5168\u81ea\u5b9a\u4e49\u6388\u6743",id:"1532-\u5b8c\u5168\u81ea\u5b9a\u4e49\u6388\u6743",children:[]}]},{value:"15.4 \u6388\u6743\u7279\u6027\u53ca\u5168\u5c40\u6388\u6743",id:"154-\u6388\u6743\u7279\u6027\u53ca\u5168\u5c40\u6388\u6743",children:[{value:"15.4.1 \u5168\u5c40\u6388\u6743",id:"1541-\u5168\u5c40\u6388\u6743",children:[]},{value:"15.4.2 \u533f\u540d\u8bbf\u95ee",id:"1542-\u533f\u540d\u8bbf\u95ee",children:[]}]},{value:"15.5 \u81ea\u52a8\u5237\u65b0 Token",id:"155-\u81ea\u52a8\u5237\u65b0-token",children:[{value:"15.5.1 \u540e\u7aef\u767b\u5f55\u90e8\u5206",id:"1551-\u540e\u7aef\u767b\u5f55\u90e8\u5206",children:[]},{value:"15.5.2 \u540e\u7aef\u6388\u6743 Handler \u90e8\u5206",id:"1552-\u540e\u7aef\u6388\u6743-handler-\u90e8\u5206",children:[]},{value:"15.5.3 \u5ba2\u6237\u7aef\u90e8\u5206",id:"1553-\u5ba2\u6237\u7aef\u90e8\u5206",children:[]}]},{value:"15.6 \u83b7\u53d6 Jwt \u5b58\u50a8\u7684\u4fe1\u606f",id:"156-\u83b7\u53d6-jwt-\u5b58\u50a8\u7684\u4fe1\u606f",children:[]},{value:"15.7 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"157-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],c={toc:d};function m(e){var n=e.components,t=(0,i.Z)(e,o);return(0,r.kt)("wrapper",(0,a.Z)({},c,t,{components:n,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"151-\u4ec0\u4e48\u662f\u9274\u6743"},"15.1 \u4ec0\u4e48\u662f\u9274\u6743"),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"\u9274\u6743\u5b9e\u9645\u4e0a\u5c31\u662f\u4e00\u79cd\u8eab\u4efd\u8ba4\u8bc1"),"\u3002"),(0,r.kt)("p",null,"\u7531\u7528\u6237\u63d0\u4f9b\u51ed\u636e\uff0c\u7136\u540e\u5c06\u5176\u4e0e\u5b58\u50a8\u5728\u64cd\u4f5c\u7cfb\u7edf\u3001\u6570\u636e\u5e93\u3001\u5e94\u7528\u6216\u8d44\u6e90\u4e2d\u7684\u51ed\u636e\u8fdb\u884c\u6bd4\u8f83\u3002 \u5728\u6388\u6743\u8fc7\u7a0b\u4e2d\uff0c\u5982\u679c\u51ed\u636e\u5339\u914d\uff0c\u5219\u7528\u6237\u8eab\u4efd\u9a8c\u8bc1\u6210\u529f\uff0c\u53ef\u6267\u884c\u5df2\u5411\u5176\u6388\u6743\u7684\u64cd\u4f5c\u3002 \u6388\u6743\u6307\u5224\u65ad\u5141\u8bb8\u7528\u6237\u6267\u884c\u7684\u64cd\u4f5c\u7684\u8fc7\u7a0b\u3002\n\u4e5f\u53ef\u4ee5\u5c06\u8eab\u4efd\u9a8c\u8bc1\u7406\u89e3\u4e3a\u8fdb\u5165\u7a7a\u95f4\uff08\u4f8b\u5982\u670d\u52a1\u5668\u3001\u6570\u636e\u5e93\u3001\u5e94\u7528\u6216\u8d44\u6e90\uff09\u7684\u4e00\u79cd\u65b9\u5f0f\uff0c\u800c\u6388\u6743\u662f\u7528\u6237\u53ef\u4ee5\u5bf9\u8be5\u7a7a\u95f4\uff08\u670d\u52a1\u5668\u3001\u6570\u636e\u5e93\u6216\u5e94\u7528\uff09\u5185\u7684\u54ea\u4e9b\u5bf9\u8c61\u6267\u884c\u54ea\u4e9b\u64cd\u4f5c\u3002"),(0,r.kt)("h3",{id:"1511-\u5e38\u89c1\u7684\u9274\u6743\u65b9\u5f0f"},"15.1.1 \u5e38\u89c1\u7684\u9274\u6743\u65b9\u5f0f"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"HTTP Basic Authentication"))),(0,r.kt)("p",null,"\u8fd9\u662f ",(0,r.kt)("inlineCode",{parentName:"p"},"HTTP")," \u534f\u8bae\u5b9e\u73b0\u7684\u57fa\u672c\u8ba4\u8bc1\u65b9\u5f0f\uff0c\u6211\u4eec\u5728\u6d4f\u89c8\u7f51\u9875\u65f6\uff0c\u4ece\u6d4f\u89c8\u5668\u6b63\u4e0a\u65b9\u5f39\u51fa\u7684\u5bf9\u8bdd\u6846\u8981\u6c42\u6211\u4eec\u8f93\u5165\u8d26\u53f7\u5bc6\u7801\uff0c\u6b63\u662f\u4f7f\u7528\u4e86\u8fd9\u79cd\u8ba4\u8bc1\u65b9\u5f0f"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Session + Cookie"))),(0,r.kt)("p",null,"\u5229\u7528\u670d\u52a1\u5668\u7aef\u7684 session\uff08\u4f1a\u8bdd\uff09\u548c\u6d4f\u89c8\u5668\u7aef\u7684 cookie \u6765\u5b9e\u73b0\u524d\u540e\u7aef\u7684\u8ba4\u8bc1\uff0c\u7531\u4e8e http \u8bf7\u6c42\u65f6\u662f\u65e0\u72b6\u6001\u7684\uff0c\u670d\u52a1\u5668\u6b63\u5e38\u60c5\u51b5\u4e0b\u662f\u4e0d\u77e5\u9053\u5f53\u524d\u8bf7\u6c42\u4e4b\u524d\u6709\u6ca1\u6709\u6765\u8fc7\uff0c\u8fd9\u4e2a\u65f6\u5019\u6211\u4eec\u5982\u679c\u8981\u8bb0\u5f55\u72b6\u6001\uff0c\u5c31\u9700\u8981\u5728\u670d\u52a1\u5668\u7aef\u521b\u5efa\u4e00\u4e2a\u4f1a\u8bdd(session),\u5c06\u540c\u4e00\u4e2a\u5ba2\u6237\u7aef\u7684\u8bf7\u6c42\u90fd\u7ef4\u62a4\u5728\u5404\u81ea\u7684\u4f1a\u8bdd\u4e2d\uff0c\u6bcf\u5f53\u8bf7\u6c42\u5230\u8fbe\u670d\u52a1\u5668\u7aef\u7684\u65f6\u5019\uff0c\u5148\u53bb\u67e5\u4e00\u4e0b\u8be5\u5ba2\u6237\u7aef\u6709\u6ca1\u6709\u5728\u670d\u52a1\u5668\u7aef\u521b\u5efa session\uff0c\u5982\u679c\u6709\u5219\u5df2\u7ecf\u8ba4\u8bc1\u6210\u529f\u4e86\uff0c\u5426\u5219\u5c31\u6ca1\u6709\u8ba4\u8bc1\u3002"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Token"))),(0,r.kt)("p",null,"\u5ba2\u6237\u7aef\u5728\u9996\u6b21\u767b\u9646\u4ee5\u540e\uff0c\u670d\u52a1\u7aef\u518d\u6b21\u63a5\u6536 ",(0,r.kt)("inlineCode",{parentName:"p"},"HTTP")," \u8bf7\u6c42\u7684\u65f6\u5019\uff0c\u5c31\u53ea\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"p"},"Token")," \u4e86\uff0c\u8bf7\u6c42\u53ea\u8981\u6bcf\u6b21\u628a ",(0,r.kt)("inlineCode",{parentName:"p"},"Token")," \u5e26\u4e0a\u5c31\u884c\u4e86\uff0c\u670d\u52a1\u5668\u7aef\u4f1a\u62e6\u622a\u6240\u6709\u7684\u8bf7\u6c42\uff0c\u7136\u540e\u6821\u9a8c ",(0,r.kt)("inlineCode",{parentName:"p"},"Token")," \u7684\u5408\u6cd5\u6027\uff0c\u5408\u6cd5\u5c31\u653e\u884c\uff0c\u4e0d\u5408\u6cd5\u5c31\u8fd4\u56de 401\uff08\u9274\u6743\u5931\u8d25\uff09"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Token"),"\u9a8c\u8bc1\u6bd4\u8f83\u7075\u6d3b\uff0c\u9002\u7528\u4e8e\u5927\u90e8\u5206\u573a\u666f\u3002\u5e38\u7528\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"Token")," \u9274\u6743\u65b9\u5f0f\u7684\u89e3\u51b3\u65b9\u6848\u662f ",(0,r.kt)("inlineCode",{parentName:"p"},"JWT"),"\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"JWT")," \u662f\u901a\u8fc7\u5bf9\u5e26\u6709\u76f8\u5173\u7528\u6237\u4fe1\u606f\u7684\u8fdb\u884c\u52a0\u5bc6\uff0c\u52a0\u5bc6\u7684\u65b9\u5f0f\u6bd4\u8f83\u7075\u6d3b\uff0c\u53ef\u4ee5\u6839\u636e\u9700\u6c42\u5177\u4f53\u8bbe\u8ba1\u3002"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"OAuth"))),(0,r.kt)("p",null,"OAuth\uff08\u5f00\u653e\u6388\u6743\uff09\u662f\u4e00\u4e2a\u5f00\u653e\u6807\u51c6\uff0c\u5141\u8bb8\u7528\u6237\u6388\u6743\u7b2c\u4e09\u65b9\u7f51\u7ad9\u8bbf\u95ee\u4ed6\u4eec\u5b58\u50a8\u5728\u53e6\u5916\u7684\u670d\u52a1\u63d0\u4f9b\u8005\u4e0a\u7684\u4fe1\u606f\uff0c\u800c\u4e0d\u9700\u8981\u5c06\u7528\u6237\u540d\u548c\u5bc6\u7801\u63d0\u4f9b\u7ed9\u7b2c\u4e09\u65b9\u7f51\u7ad9\u6216\u5206\u4eab\u4ed6\u4eec\u6570\u636e\u7684\u6240\u6709\u5185\u5bb9\uff0c\u4e3a\u4e86\u4fdd\u62a4\u7528\u6237\u6570\u636e\u7684\u5b89\u5168\u548c\u9690\u79c1\uff0c\u7b2c\u4e09\u65b9\u7f51\u7ad9\u8bbf\u95ee\u7528\u6237\u6570\u636e\u524d\u90fd\u9700\u8981\u663e\u5f0f\u7684\u5411\u7528\u6237\u5f81\u6c42\u6388\u6743\u3002\u6211\u4eec\u5e38\u89c1\u7684\u63d0\u4f9b OAuth \u8ba4\u8bc1\u670d\u52a1\u7684\u5382\u5546\u6709\u652f\u4ed8\u5b9d\u3001QQ \u548c\u5fae\u4fe1\u3002"),(0,r.kt)("p",null,"OAuth \u534f\u8bae\u53c8\u6709 1.0 \u548c 2.0 \u4e24\u4e2a\u7248\u672c\u3002\u76f8\u6bd4\u8f83 1.0 \u7248\uff0c2.0 \u7248\u6574\u4e2a\u6388\u6743\u9a8c\u8bc1\u6d41\u7a0b\u66f4\u7b80\u5355\u66f4\u5b89\u5168\uff0c\u4e5f\u662f\u76ee\u524d\u6700\u4e3b\u8981\u7684\u7528\u6237\u8eab\u4efd\u9a8c\u8bc1\u548c\u6388\u6743\u65b9\u5f0f\u3002"),(0,r.kt)("h2",{id:"152-\u5982\u4f55\u4f7f\u7528"},"15.2 \u5982\u4f55\u4f7f\u7528"),(0,r.kt)("div",{className:"admonition admonition-info alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u914d\u7f6e\u4e4b\u524d")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u5728\u6dfb\u52a0\u6388\u6743\u670d\u52a1\u4e4b\u524d\uff0c\u8bf7\u5148\u786e\u4fdd ",(0,r.kt)("inlineCode",{parentName:"p"},"Startup.cs")," \u4e2d ",(0,r.kt)("inlineCode",{parentName:"p"},"Configure")," \u662f\u5426\u6dfb\u52a0\u4e86\u4ee5\u4e0b\u4e24\u4e2a\u4e2d\u95f4\u4ef6\uff1a"),(0,r.kt)("pre",{parentName:"div"},(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"app.UseAuthentication();\napp.UseAuthorization();\n")))),(0,r.kt)("h3",{id:"1521-\u6dfb\u52a0-cookie-\u8eab\u4efd\u9a8c\u8bc1"},"15.2.1 \u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"h3"},"Cookie")," \u8eab\u4efd\u9a8c\u8bc1"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'// Cookies\u5355\u72ec\u8eab\u4efd\u9a8c\u8bc1\nservices.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)\n .AddCookie(CookieAuthenticationDefaults.AuthenticationScheme, b =>\n {\n b.LoginPath = "/Home/Login";\n });\n')),(0,r.kt)("h3",{id:"1522-\u6dfb\u52a0-jwt-\u8eab\u4efd\u9a8c\u8bc1"},"15.2.2 \u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"h3"},"Jwt")," \u8eab\u4efd\u9a8c\u8bc1"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"services.AddJwt();\n")),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u6ce8\u610f")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},(0,r.kt)("inlineCode",{parentName:"p"},"JWT")," \u9274\u6743\u5e76\u672a\u5305\u542b\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\uff0c\u9700\u8981\u5b89\u88c5 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion.Extras.Authentication.JwtBearer")," \u62d3\u5c55\u5305\u3002"),(0,r.kt)("p",{parentName:"div"},"\u53e6\u5916 ",(0,r.kt)("inlineCode",{parentName:"p"},".AddJwt()")," \u5fc5\u987b\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},".AddControllers()")," \u4e4b\u524d\u6ce8\u518c\u3002\ud83d\udca1"))),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u81ea\u5b9a\u4e49 ",(0,r.kt)("inlineCode",{parentName:"li"},"Jwt")," \u914d\u7f6e\uff08\u9ed8\u8ba4\u65e0\u9700\u914d\u7f6e\uff09")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json",metastring:"{4,6,8}","{4,6,8}":!0},'{\n "JWTSettings": {\n "ValidateIssuerSigningKey": true, // \u662f\u5426\u9a8c\u8bc1\u5bc6\u94a5\uff0cbool \u7c7b\u578b\uff0c\u9ed8\u8ba4true\n "IssuerSigningKey": "\u4f60\u7684\u5bc6\u94a5", // \u5bc6\u94a5\uff0cstring \u7c7b\u578b\uff0c\u5fc5\u987b\u662f\u590d\u6742\u5bc6\u94a5\uff0c\u957f\u5ea6\u5927\u4e8e16\n "ValidateIssuer": true, // \u662f\u5426\u9a8c\u8bc1\u7b7e\u53d1\u65b9\uff0cbool \u7c7b\u578b\uff0c\u9ed8\u8ba4true\n "ValidIssuer": "\u7b7e\u53d1\u65b9", // \u7b7e\u53d1\u65b9\uff0cstring \u7c7b\u578b\n "ValidateAudience": true, // \u662f\u5426\u9a8c\u8bc1\u7b7e\u6536\u65b9\uff0cbool \u7c7b\u578b\uff0c\u9ed8\u8ba4true\n "ValidAudience": "\u7b7e\u6536\u65b9", // \u7b7e\u6536\u65b9\uff0cstring \u7c7b\u578b\n "ValidateLifetime": true, // \u662f\u5426\u9a8c\u8bc1\u8fc7\u671f\u65f6\u95f4\uff0cbool \u7c7b\u578b\uff0c\u9ed8\u8ba4true\uff0c\u5efa\u8baetrue\n "ExpiredTime": 20, // \u8fc7\u671f\u65f6\u95f4\uff0clong \u7c7b\u578b\uff0c\u5355\u4f4d\u5206\u949f\uff0c\u9ed8\u8ba420\u5206\u949f\n "ClockSkew": 5, // \u8fc7\u671f\u65f6\u95f4\u5bb9\u9519\u503c\uff0clong \u7c7b\u578b\uff0c\u5355\u4f4d\u79d2\uff0c\u9ed8\u8ba4 5\u79d2\n "Algorithm": "HS256" // \u52a0\u5bc6\u7b97\u6cd5\uff0cstring \u7c7b\u578b\uff0c\u9ed8\u8ba4 SecurityAlgorithms.HmacSha256\n }\n}\n')),(0,r.kt)("div",{className:"admonition admonition-warning alert alert--danger"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"}))),"\u7cfb\u7edf\u5b89\u5168\u6ce8\u610f\u4e8b\u9879")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e3a\u4e86\u65b9\u4fbf\u5f00\u53d1\uff0c\u5df2\u7ecf\u81ea\u52a8\u6dfb\u52a0\u4e86 ",(0,r.kt)("inlineCode",{parentName:"p"},"Jwt")," \u9ed8\u8ba4\u914d\u7f6e\u3002\u5efa\u8bae\u6bcf\u4e2a\u9879\u76ee\u90fd\u5e94\u8be5\u5355\u72ec\u914d\u7f6e ",(0,r.kt)("inlineCode",{parentName:"p"},"IssuerSigningKey"),"\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"ValidIssuer"),"\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"ValidAudience")," \u8fd9\u4e09\u4e2a\u3002\u5426\u5219\u540c\u6837\u7528\u4e86 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u751f\u6210\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"Token")," \u53ef\u80fd\u5b58\u5728\u76f8\u4e92\u8bbf\u95ee\u5404\u81ea\u7cfb\u7edf\u7684\u98ce\u9669\u3002"))),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u6e29\u99a8\u63d0\u793a")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u76ee\u524d\u652f\u6301\u7684",(0,r.kt)("inlineCode",{parentName:"p"},"\u52a0\u5bc6\u7b97\u6cd5"),"\uff0c\u8be6\u60c5\u8bf7\u67e5\u9605",(0,r.kt)("a",{parentName:"p",href:"https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/blob/dev/src/Microsoft.IdentityModel.Tokens/SecurityAlgorithms.cs"},"SecurityAlgorithms")))),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u751f\u6210 ",(0,r.kt)("inlineCode",{parentName:"li"},"Token"))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'// \u751f\u6210 token\nvar accessToken = JWTEncryption.Encrypt(new Dictionary()\n {\n { "UserId", user.Id }, // \u5b58\u50a8Id\n { "Account",user.Account }, // \u5b58\u50a8\u7528\u6237\u540d\n });\n')),(0,r.kt)("h3",{id:"1523-\u6df7\u5408\u8eab\u4efd\u9a8c\u8bc1"},"15.2.3 \u6df7\u5408\u8eab\u4efd\u9a8c\u8bc1"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'// JWT \u548c Cookies \u6df7\u5408\u8eab\u4efd\u9a8c\u8bc1\nservices.AddJwt(options =>\n{\n options.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;\n options.DefaultChallengeScheme = CookieAuthenticationDefaults.AuthenticationScheme;\n})\n.AddCookie(CookieAuthenticationDefaults.AuthenticationScheme, options =>\n{\n options.LoginPath = "/Home/Login";\n});\n')),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u6ce8\u610f")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u5982\u679c\u542f\u7528\u4e86\u6df7\u5408\u8eab\u4efd\u9a8c\u8bc1\u540e\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"WebApi")," \u9700\u5728\u63a7\u5236\u5668/Action \u4e2d\u6307\u5b9a ",(0,r.kt)("inlineCode",{parentName:"p"},"Scheme")," \u7c7b\u578b\u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"JwtBearerDefaults.AuthenticationScheme"),"\uff0c\u5982\uff1a"),(0,r.kt)("pre",{parentName:"div"},(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1}","{1}":!0},"[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]\npublic class ApiServices : IDynamicApiController\n{\n}\n")),(0,r.kt)("p",{parentName:"div"},"\u5982\u679c\u4e0d\u8bbe\u7f6e ",(0,r.kt)("inlineCode",{parentName:"p"},"Scheme")," \u90a3\u4e48\u5728\u6df7\u5408\u6388\u6743\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"Swagger")," \u4e2d\u5c06\u9ed8\u8ba4\u91c7\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"Cookie")," \u65b9\u5f0f\uff0c\u4e5f\u5c31\u662f\u6388\u6743\u5931\u8d25\u4f1a\u5c06\u6574\u4e2a ",(0,r.kt)("inlineCode",{parentName:"p"},"\u767b\u5f55\u9875\u9762")," \u5185\u5bb9\u8fd4\u56de\u3002"))),(0,r.kt)("h2",{id:"153-\u9ad8\u7ea7\u81ea\u5b9a\u4e49\u6388\u6743"},"15.3 \u9ad8\u7ea7\u81ea\u5b9a\u4e49\u6388\u6743"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u4e86\u975e\u5e38\u7075\u6d3b\u7684\u9ad8\u7ea7\u7b56\u7565\u9274\u6743\u548c\u6388\u6743\u65b9\u5f0f\uff0c\u901a\u8fc7\u8be5\u7b56\u7565\u6388\u6743\u65b9\u5f0f\u53ef\u4ee5\u5b9e\u73b0\u4efb\u4f55\u81ea\u5b9a\u4e49\u6388\u6743\u3002"),(0,r.kt)("h3",{id:"1531-appauthorizehandler"},"15.3.1 ",(0,r.kt)("inlineCode",{parentName:"h3"},"AppAuthorizeHandler")),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u4e86 ",(0,r.kt)("inlineCode",{parentName:"p"},"AppAuthorizeHandler")," \u7b56\u7565\u6388\u6743\u5904\u7406\u7a0b\u5e8f\u63d0\u4f9b\u57fa\u7c7b\uff0c\u53ea\u9700\u8981\u521b\u5efa\u81ea\u5df1\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"Handler")," \u7ee7\u627f\u5b83\u5373\u53ef\u3002\u5982\uff1a",(0,r.kt)("inlineCode",{parentName:"p"},"JwtHandler"),"\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{20,12}","{20,12}":!0},'using Furion.Authorization;\nusing Furion.Core;\nusing Microsoft.AspNetCore.Authorization;\nusing Microsoft.AspNetCore.Http;\nusing Microsoft.IdentityModel.JsonWebTokens;\n\nnamespace Furion.Web.Core\n{\n /// \n /// JWT \u6388\u6743\u81ea\u5b9a\u4e49\u5904\u7406\u7a0b\u5e8f\n /// \n public class JwtHandler : AppAuthorizeHandler\n {\n /// \n /// \u8bf7\u6c42\u7ba1\u9053\n /// \n /// \n /// \n /// \n public override Task PipelineAsync(AuthorizationHandlerContext context, DefaultHttpContext httpContext)\n {\n // \u6b64\u5904\u5df2\u7ecf\u81ea\u52a8\u9a8c\u8bc1 Jwt token\u7684\u6709\u6548\u6027\u4e86\uff0c\u65e0\u9700\u624b\u52a8\u9a8c\u8bc1\n\n // \u68c0\u67e5\u6743\u9650\uff0c\u5982\u679c\u65b9\u6cd5\u662f\u5f02\u6b65\u7684\u5c31\u4e0d\u7528 Task.FromResult \u5305\u88f9\uff0c\u76f4\u63a5\u4f7f\u7528 async/await \u5373\u53ef\n return Task.FromResult(CheckAuthorzie(httpContext));\n }\n\n /// \n /// \u68c0\u67e5\u6743\u9650\n /// \n /// \n /// \n private static bool CheckAuthorzie(DefaultHttpContext httpContext)\n {\n // \u83b7\u53d6\u6743\u9650\u7279\u6027\n var securityDefineAttribute = httpContext.GetMetadata();\n if (securityDefineAttribute == null) return true;\n\n return "\u67e5\u8be2\u6570\u636e\u5e93\u8fd4\u56de\u662f\u5426\u6709\u6743\u9650";\n }\n }\n}\n')),(0,r.kt)("p",null,"\u4e4b\u540e\u6ce8\u518c ",(0,r.kt)("inlineCode",{parentName:"p"},"JwtHandler")," \u5373\u53ef\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"services.AddJwt();\n")),(0,r.kt)("h3",{id:"1532-\u5b8c\u5168\u81ea\u5b9a\u4e49\u6388\u6743"},"15.3.2 \u5b8c\u5168\u81ea\u5b9a\u4e49\u6388\u6743"),(0,r.kt)("p",null,"\u6709\u4e9b\u65f6\u5019\u53ef\u80fd\u9488\u5bf9\u4e0d\u540c\u7684\u5e73\u53f0\u91c7\u7528\u4e0d\u4e00\u6837\u7684\u6388\u6743\u65b9\u5f0f\uff0c\u6bd4\u5982\u5408\u4f5c\u4fe1\u4efb\u7684\u7b2c\u4e09\u65b9\u673a\u6784\u53ef\u4ee5\u514d\u6388\u6743\uff0c\u8fd9\u65f6\u5019\u6211\u4eec\u53ea\u9700\u8981\u91cd\u5199 ",(0,r.kt)("inlineCode",{parentName:"p"},"HandleAsync")," \u65b9\u6cd5\u5373\u53ef\u3002\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{11-25}","{11-25}":!0},"using Furion.Authorization;\nusing Furion.Core;\nusing Microsoft.AspNetCore.Authorization;\nusing Microsoft.AspNetCore.Http;\nusing System.Threading.Tasks;\n\nnamespace Furion.Web.Core\n{\n public class JwtHandler : AppAuthorizeHandler\n {\n public override async Task HandleAsync(AuthorizationHandlerContext context)\n {\n // \u5e38\u89c4\u6388\u6743\uff08\u53ef\u4ee5\u5224\u65ad\u662f\u4e0d\u662f\u7b2c\u4e09\u65b9\uff09\n var isAuthenticated = context.User.Identity.IsAuthenticated;\n\n // \u7b2c\u4e09\u65b9\u6388\u6743\u81ea\u5b9a\u4e49\n if(\u662f\u7b2c\u4e09\u65b9){\n foreach (var requirement in pendingRequirements)\n {\n // \u6388\u6743\u6210\u529f\n context.Succeed(requirement);\n }\n }\n // \u6388\u6743\u5931\u8d25\n else context.Fail();\n }\n }\n}\n")),(0,r.kt)("h2",{id:"154-\u6388\u6743\u7279\u6027\u53ca\u5168\u5c40\u6388\u6743"},"15.4 \u6388\u6743\u7279\u6027\u53ca\u5168\u5c40\u6388\u6743"),(0,r.kt)("p",null,"\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c\u6240\u6709\u7684\u8def\u7531\u90fd\u662f\u5141\u8bb8\u533f\u540d\u8bbf\u95ee\u7684\uff0c\u6240\u4ee5\u5982\u679c\u9700\u8981\u5bf9\u67d0\u4e2a ",(0,r.kt)("inlineCode",{parentName:"p"},"Action")," \u6216 ",(0,r.kt)("inlineCode",{parentName:"p"},"Controller")," \u8bbe\u5b9a\u6388\u6743\u8bbf\u95ee\uff0c\u53ea\u9700\u8981\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Action")," \u6216 ",(0,r.kt)("inlineCode",{parentName:"p"},"Controller")," \u8d34 ",(0,r.kt)("inlineCode",{parentName:"p"},"[AppAuthorize]")," \u6216 ",(0,r.kt)("inlineCode",{parentName:"p"},"[Authorize]")," \u7279\u6027\u5373\u53ef\u3002"),(0,r.kt)("p",null,"\u5982\u679c\u9700\u8981\u5bf9\u7279\u5b9a\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"Action")," \u6216 ",(0,r.kt)("inlineCode",{parentName:"p"},"Controller")," \u5141\u8bb8\u533f\u540d\u8bbf\u95ee\uff0c\u5219\u8d34 ",(0,r.kt)("inlineCode",{parentName:"p"},"[AllowAnonymous]")," \u5373\u53ef\u3002"),(0,r.kt)("h3",{id:"1541-\u5168\u5c40\u6388\u6743"},"15.4.1 \u5168\u5c40\u6388\u6743"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"services.AddJwt(enableGlobalAuthorize:true);\n")),(0,r.kt)("h3",{id:"1542-\u533f\u540d\u8bbf\u95ee"},"15.4.2 \u533f\u540d\u8bbf\u95ee"),(0,r.kt)("p",null,"\u5982\u679c\u9700\u8981\u5bf9\u7279\u5b9a\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"Action")," \u6216 ",(0,r.kt)("inlineCode",{parentName:"p"},"Controller")," \u5141\u8bb8\u533f\u540d\u8bbf\u95ee\uff0c\u5219\u8d34 ",(0,r.kt)("inlineCode",{parentName:"p"},"[AllowAnonymous]")," \u5373\u53ef\u3002"),(0,r.kt)("h2",{id:"155-\u81ea\u52a8\u5237\u65b0-token"},"15.5 \u81ea\u52a8\u5237\u65b0 Token"),(0,r.kt)("h3",{id:"1551-\u540e\u7aef\u767b\u5f55\u90e8\u5206"},"15.5.1 \u540e\u7aef\u767b\u5f55\u90e8\u5206"),(0,r.kt)("p",null,"\u5f53\u7528\u6237\u767b\u5f55\u6210\u529f\u4e4b\u540e\uff0c\u8fd4\u56de ",(0,r.kt)("inlineCode",{parentName:"p"},"accessToken")," \u5b57\u7b26\u4e32\uff0c\u4e4b\u540e\u901a\u8fc7 ",(0,r.kt)("inlineCode",{parentName:"p"},"JWTEncryption.GenerateRefreshToken()")," \u83b7\u53d6 ",(0,r.kt)("inlineCode",{parentName:"p"},"\u5237\u65b0Token"),"\uff0c\u5e76\u901a\u8fc7\u54cd\u5e94\u62a5\u6587\u5934\u8fd4\u56de\uff0c\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{9}","{9}":!0},'// token\nvar accessToken = JWTEncryption.Encrypt(new Dictionary()\n {\n { "UserId", user.Id }, // \u5b58\u50a8Id\n { "Account",user.Account }, // \u5b58\u50a8\u7528\u6237\u540d\n });\n\n// \u83b7\u53d6\u5237\u65b0 token\nvar refreshToken = JWTEncryption.GenerateRefreshToken(accessToken, 43200); // \u7b2c\u4e8c\u4e2a\u53c2\u6570\u662f\u5237\u65b0 token \u7684\u6709\u6548\u671f\uff08\u5206\u949f\uff09\uff0c\u9ed8\u8ba4\u4e09\u5341\u5929\n\n// \u8bbe\u7f6e\u54cd\u5e94\u62a5\u6587\u5934\nhttpContextAccessor.HttpContext.Response.Headers["access-token"] = accessToken;\nhttpContextAccessor.HttpContext.Response.Headers["x-access-token"] = refreshToken;\n')),(0,r.kt)("p",null,"\u7528\u6237\u767b\u5f55\u6210\u529f\u4e4b\u540e\u628a ",(0,r.kt)("inlineCode",{parentName:"p"},"accessToken")," \u548c ",(0,r.kt)("inlineCode",{parentName:"p"},"refreshToken")," \u4e00\u8d77\u8fd4\u56de\u7ed9\u5ba2\u6237\u7aef\u5b58\u50a8\u8d77\u6765\u3002"),(0,r.kt)("h3",{id:"1552-\u540e\u7aef\u6388\u6743-handler-\u90e8\u5206"},"15.5.2 \u540e\u7aef\u6388\u6743 ",(0,r.kt)("inlineCode",{parentName:"h3"},"Handler")," \u90e8\u5206"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{16-28}","{16-28}":!0},'using Furion.Authorization;\nusing Furion.Core;\nusing Furion.DataEncryption;\nusing Microsoft.AspNetCore.Authorization;\nusing Microsoft.AspNetCore.Http;\nusing Microsoft.Extensions.DependencyInjection;\nusing System.Threading.Tasks;\n\nnamespace Furion.Web.Core\n{\n /// \n /// JWT \u6388\u6743\u81ea\u5b9a\u4e49\u5904\u7406\u7a0b\u5e8f\n /// \n public class JwtHandler : AppAuthorizeHandler\n {\n /// \n /// \u91cd\u5199 Handler \u6dfb\u52a0\u81ea\u52a8\u5237\u65b0\u6536\u53d6\u903b\u8f91\n /// \n /// \n /// \n public override async Task HandleAsync(AuthorizationHandlerContext context)\n {\n // \u81ea\u52a8\u5237\u65b0 token\n if (JWTEncryption.AutoRefreshToken(context, context.GetCurrentHttpContext()))\n {\n await AuthorizeHandleAsync(context);\n }\n else context.Fail(); // \u6388\u6743\u5931\u8d25\n }\n\n /// \n /// \u9a8c\u8bc1\u7ba1\u9053\uff0c\u4e5f\u5c31\u662f\u9a8c\u8bc1\u6838\u5fc3\u4ee3\u7801\n /// \n /// \n /// \n /// \n public override Task PipelineAsync(AuthorizationHandlerContext context, DefaultHttpContext httpContext)\n {\n // \u68c0\u67e5\u6743\u9650\uff0c\u5982\u679c\u65b9\u6cd5\u65f6\u5f02\u6b65\u7684\u5c31\u4e0d\u7528 Task.FromResult \u5305\u88f9\uff0c\u76f4\u63a5\u4f7f\u7528 async/await \u5373\u53ef\n return Task.FromResult(true);\n }\n }\n}\n')),(0,r.kt)("h3",{id:"1553-\u5ba2\u6237\u7aef\u90e8\u5206"},"15.5.3 \u5ba2\u6237\u7aef\u90e8\u5206"),(0,r.kt)("p",null,"\u5ba2\u6237\u7aef\u6bcf\u6b21\u8bf7\u6c42\u9700\u5c06 ",(0,r.kt)("inlineCode",{parentName:"p"},"accessToken")," \u548c ",(0,r.kt)("inlineCode",{parentName:"p"},"refreshToken")," \u653e\u5230\u8bf7\u6c42\u62a5\u6587\u5934\u4e2d\u4f20\u9001\u5230\u670d\u52a1\u7aef\uff0c\u683c\u5f0f\u4e3a\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"Authorization: Bearer \u4f60\u7684token\nX-Authorization: Bearer \u4f60\u7684\u5237\u65b0token\n")),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u6ce8\u610f")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u5728\u6b63\u5e38\u5f00\u53d1\u4e2d\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"refreshToken")," \u65e0\u9700\u6bcf\u6b21\u8bf7\u6c42\u643a\u5e26\uff0c\u800c\u662f ",(0,r.kt)("inlineCode",{parentName:"p"},"accessToken")," \u5373\u5c06\u8fc7\u671f\u4e4b\u540e\u643a\u5e26\u5373\u53ef\u3002\u53ef\u4ee5\u5728\u5ba2\u6237\u7aef\u81ea\u884c\u5224\u65ad ",(0,r.kt)("inlineCode",{parentName:"p"},"accessToken")," \u662f\u5426\u5373\u5c06\u8fc7\u671f\u3002"))),(0,r.kt)("p",null,"\u5982\u679c ",(0,r.kt)("inlineCode",{parentName:"p"},"Token")," \u8fc7\u671f\uff0c\u90a3\u4e48 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u5c06\u81ea\u52a8\u6839\u636e\u6709\u6548\u671f\u5185\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"refreshToken")," \u81ea\u52a8\u751f\u6210\u65b0\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"AccessToken"),"\uff0c\u5e76\u5728 ",(0,r.kt)("strong",{parentName:"p"},"\u54cd\u5e94\u62a5\u6587\u5934")," \u4e2d\u8fd4\u56de\uff0c\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"access-token: \u65b0\u7684token\nx-access-token: \u65b0\u7684\u5237\u65b0token\n")),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u5b58\u50a8\u65b0\u7684 Token")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u524d\u7aef\u9700\u8981\u83b7\u53d6 ",(0,r.kt)("strong",{parentName:"p"},"\u54cd\u5e94\u62a5\u6587\u5934")," \u65b0\u7684 token \u548c\u5237\u65b0 token \u66ff\u6362\u4e4b\u524d\u5728\u5ba2\u6237\u5904\u5b58\u50a8\u65e7\u7684 token \u548c\u5237\u65b0 token\u3002"))),(0,r.kt)("h2",{id:"156-\u83b7\u53d6-jwt-\u5b58\u50a8\u7684\u4fe1\u606f"},"15.6 \u83b7\u53d6 ",(0,r.kt)("inlineCode",{parentName:"h2"},"Jwt")," \u5b58\u50a8\u7684\u4fe1\u606f"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'// \u83b7\u53d6 `Jwt` \u5b58\u50a8\u7684\u4fe1\u606f\nvar userId = App.User?.FindFirstValue("\u952e");\n')),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"\u6ce8\u610f\u5f15\u5165 ",(0,r.kt)("inlineCode",{parentName:"strong"},"System.Security.Claims")," \u547d\u540d\u7a7a\u95f4")),(0,r.kt)("h2",{id:"157-\u53cd\u9988\u4e0e\u5efa\u8bae"},"15.7 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,r.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))),(0,r.kt)("hr",null),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e86\u89e3\u66f4\u591a")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u60f3\u4e86\u89e3\u66f4\u591a ",(0,r.kt)("inlineCode",{parentName:"p"},"\u9274\u6743\u6388\u6743")," \u77e5\u8bc6\u53ef\u67e5\u9605 ",(0,r.kt)("a",{parentName:"p",href:"https://docs.microsoft.com/zh-cn/aspnet/core/security/?view=aspnetcore-5.0"},"ASP.NET Core - \u5b89\u5168\u548c\u6807\u8bc6")," \u7ae0\u8282\u3002"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/c601aa1c.dba6bff0.js b/handbook/build/assets/js/c601aa1c.dba6bff0.js deleted file mode 100644 index 46f393c76f4..00000000000 --- a/handbook/build/assets/js/c601aa1c.dba6bff0.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[2379],{3905:function(e,n,t){t.d(n,{Zo:function(){return d},kt:function(){return u}});var a=t(7294);function i(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function r(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function o(e){for(var n=1;n=0||(i[t]=e[t]);return i}(e,n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(i[t]=e[t])}return i}var p=a.createContext({}),s=function(e){var n=a.useContext(p),t=n;return e&&(t="function"==typeof e?e(n):o(o({},n),e)),t},d=function(e){var n=s(e.components);return a.createElement(p.Provider,{value:n},e.children)},c={inlineCode:"code",wrapper:function(e){var n=e.children;return a.createElement(a.Fragment,{},n)}},m=a.forwardRef((function(e,n){var t=e.components,i=e.mdxType,r=e.originalType,p=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),m=s(t),u=i,k=m["".concat(p,".").concat(u)]||m[u]||c[u]||r;return t?a.createElement(k,o(o({ref:n},d),{},{components:t})):a.createElement(k,o({ref:n},d))}));function u(e,n){var t=arguments,i=n&&n.mdxType;if("string"==typeof e||i){var r=t.length,o=new Array(r);o[0]=m;var l={};for(var p in n)hasOwnProperty.call(n,p)&&(l[p]=n[p]);l.originalType=e,l.mdxType="string"==typeof e?e:i,o[1]=l;for(var s=2;sCookie \u8eab\u4efd\u9a8c\u8bc1",id:"1521-\u6dfb\u52a0-cookie-\u8eab\u4efd\u9a8c\u8bc1",children:[]},{value:"15.2.2 \u6dfb\u52a0 Jwt \u8eab\u4efd\u9a8c\u8bc1",id:"1522-\u6dfb\u52a0-jwt-\u8eab\u4efd\u9a8c\u8bc1",children:[]},{value:"15.2.3 \u6df7\u5408\u8eab\u4efd\u9a8c\u8bc1",id:"1523-\u6df7\u5408\u8eab\u4efd\u9a8c\u8bc1",children:[]}]},{value:"15.3 \u9ad8\u7ea7\u81ea\u5b9a\u4e49\u6388\u6743",id:"153-\u9ad8\u7ea7\u81ea\u5b9a\u4e49\u6388\u6743",children:[{value:"15.3.1 AppAuthorizeHandler",id:"1531-appauthorizehandler",children:[]},{value:"15.3.2 \u5b8c\u5168\u81ea\u5b9a\u4e49\u6388\u6743",id:"1532-\u5b8c\u5168\u81ea\u5b9a\u4e49\u6388\u6743",children:[]}]},{value:"15.4 \u6388\u6743\u7279\u6027\u53ca\u5168\u5c40\u6388\u6743",id:"154-\u6388\u6743\u7279\u6027\u53ca\u5168\u5c40\u6388\u6743",children:[{value:"15.4.1 \u5168\u5c40\u6388\u6743",id:"1541-\u5168\u5c40\u6388\u6743",children:[]},{value:"15.4.2 \u533f\u540d\u8bbf\u95ee",id:"1542-\u533f\u540d\u8bbf\u95ee",children:[]}]},{value:"15.5 \u81ea\u52a8\u5237\u65b0 Token",id:"155-\u81ea\u52a8\u5237\u65b0-token",children:[{value:"15.5.1 \u540e\u7aef\u767b\u5f55\u90e8\u5206",id:"1551-\u540e\u7aef\u767b\u5f55\u90e8\u5206",children:[]},{value:"15.5.2 \u540e\u7aef\u6388\u6743 Handler \u90e8\u5206",id:"1552-\u540e\u7aef\u6388\u6743-handler-\u90e8\u5206",children:[]},{value:"15.5.3 \u5ba2\u6237\u7aef\u90e8\u5206",id:"1553-\u5ba2\u6237\u7aef\u90e8\u5206",children:[]}]},{value:"15.6 \u83b7\u53d6 Jwt \u5b58\u50a8\u7684\u4fe1\u606f",id:"156-\u83b7\u53d6-jwt-\u5b58\u50a8\u7684\u4fe1\u606f",children:[]},{value:"15.7 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"157-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],c={toc:d};function m(e){var n=e.components,t=(0,i.Z)(e,o);return(0,r.kt)("wrapper",(0,a.Z)({},c,t,{components:n,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"151-\u4ec0\u4e48\u662f\u9274\u6743"},"15.1 \u4ec0\u4e48\u662f\u9274\u6743"),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"\u9274\u6743\u5b9e\u9645\u4e0a\u5c31\u662f\u4e00\u79cd\u8eab\u4efd\u8ba4\u8bc1"),"\u3002"),(0,r.kt)("p",null,"\u7531\u7528\u6237\u63d0\u4f9b\u51ed\u636e\uff0c\u7136\u540e\u5c06\u5176\u4e0e\u5b58\u50a8\u5728\u64cd\u4f5c\u7cfb\u7edf\u3001\u6570\u636e\u5e93\u3001\u5e94\u7528\u6216\u8d44\u6e90\u4e2d\u7684\u51ed\u636e\u8fdb\u884c\u6bd4\u8f83\u3002 \u5728\u6388\u6743\u8fc7\u7a0b\u4e2d\uff0c\u5982\u679c\u51ed\u636e\u5339\u914d\uff0c\u5219\u7528\u6237\u8eab\u4efd\u9a8c\u8bc1\u6210\u529f\uff0c\u53ef\u6267\u884c\u5df2\u5411\u5176\u6388\u6743\u7684\u64cd\u4f5c\u3002 \u6388\u6743\u6307\u5224\u65ad\u5141\u8bb8\u7528\u6237\u6267\u884c\u7684\u64cd\u4f5c\u7684\u8fc7\u7a0b\u3002\n\u4e5f\u53ef\u4ee5\u5c06\u8eab\u4efd\u9a8c\u8bc1\u7406\u89e3\u4e3a\u8fdb\u5165\u7a7a\u95f4\uff08\u4f8b\u5982\u670d\u52a1\u5668\u3001\u6570\u636e\u5e93\u3001\u5e94\u7528\u6216\u8d44\u6e90\uff09\u7684\u4e00\u79cd\u65b9\u5f0f\uff0c\u800c\u6388\u6743\u662f\u7528\u6237\u53ef\u4ee5\u5bf9\u8be5\u7a7a\u95f4\uff08\u670d\u52a1\u5668\u3001\u6570\u636e\u5e93\u6216\u5e94\u7528\uff09\u5185\u7684\u54ea\u4e9b\u5bf9\u8c61\u6267\u884c\u54ea\u4e9b\u64cd\u4f5c\u3002"),(0,r.kt)("h3",{id:"1511-\u5e38\u89c1\u7684\u9274\u6743\u65b9\u5f0f"},"15.1.1 \u5e38\u89c1\u7684\u9274\u6743\u65b9\u5f0f"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"HTTP Basic Authentication"))),(0,r.kt)("p",null,"\u8fd9\u662f ",(0,r.kt)("inlineCode",{parentName:"p"},"HTTP")," \u534f\u8bae\u5b9e\u73b0\u7684\u57fa\u672c\u8ba4\u8bc1\u65b9\u5f0f\uff0c\u6211\u4eec\u5728\u6d4f\u89c8\u7f51\u9875\u65f6\uff0c\u4ece\u6d4f\u89c8\u5668\u6b63\u4e0a\u65b9\u5f39\u51fa\u7684\u5bf9\u8bdd\u6846\u8981\u6c42\u6211\u4eec\u8f93\u5165\u8d26\u53f7\u5bc6\u7801\uff0c\u6b63\u662f\u4f7f\u7528\u4e86\u8fd9\u79cd\u8ba4\u8bc1\u65b9\u5f0f"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Session + Cookie"))),(0,r.kt)("p",null,"\u5229\u7528\u670d\u52a1\u5668\u7aef\u7684 session\uff08\u4f1a\u8bdd\uff09\u548c\u6d4f\u89c8\u5668\u7aef\u7684 cookie \u6765\u5b9e\u73b0\u524d\u540e\u7aef\u7684\u8ba4\u8bc1\uff0c\u7531\u4e8e http \u8bf7\u6c42\u65f6\u662f\u65e0\u72b6\u6001\u7684\uff0c\u670d\u52a1\u5668\u6b63\u5e38\u60c5\u51b5\u4e0b\u662f\u4e0d\u77e5\u9053\u5f53\u524d\u8bf7\u6c42\u4e4b\u524d\u6709\u6ca1\u6709\u6765\u8fc7\uff0c\u8fd9\u4e2a\u65f6\u5019\u6211\u4eec\u5982\u679c\u8981\u8bb0\u5f55\u72b6\u6001\uff0c\u5c31\u9700\u8981\u5728\u670d\u52a1\u5668\u7aef\u521b\u5efa\u4e00\u4e2a\u4f1a\u8bdd(session),\u5c06\u540c\u4e00\u4e2a\u5ba2\u6237\u7aef\u7684\u8bf7\u6c42\u90fd\u7ef4\u62a4\u5728\u5404\u81ea\u7684\u4f1a\u8bdd\u4e2d\uff0c\u6bcf\u5f53\u8bf7\u6c42\u5230\u8fbe\u670d\u52a1\u5668\u7aef\u7684\u65f6\u5019\uff0c\u5148\u53bb\u67e5\u4e00\u4e0b\u8be5\u5ba2\u6237\u7aef\u6709\u6ca1\u6709\u5728\u670d\u52a1\u5668\u7aef\u521b\u5efa session\uff0c\u5982\u679c\u6709\u5219\u5df2\u7ecf\u8ba4\u8bc1\u6210\u529f\u4e86\uff0c\u5426\u5219\u5c31\u6ca1\u6709\u8ba4\u8bc1\u3002"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Token"))),(0,r.kt)("p",null,"\u5ba2\u6237\u7aef\u5728\u9996\u6b21\u767b\u9646\u4ee5\u540e\uff0c\u670d\u52a1\u7aef\u518d\u6b21\u63a5\u6536 ",(0,r.kt)("inlineCode",{parentName:"p"},"HTTP")," \u8bf7\u6c42\u7684\u65f6\u5019\uff0c\u5c31\u53ea\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"p"},"Token")," \u4e86\uff0c\u8bf7\u6c42\u53ea\u8981\u6bcf\u6b21\u628a ",(0,r.kt)("inlineCode",{parentName:"p"},"Token")," \u5e26\u4e0a\u5c31\u884c\u4e86\uff0c\u670d\u52a1\u5668\u7aef\u4f1a\u62e6\u622a\u6240\u6709\u7684\u8bf7\u6c42\uff0c\u7136\u540e\u6821\u9a8c ",(0,r.kt)("inlineCode",{parentName:"p"},"Token")," \u7684\u5408\u6cd5\u6027\uff0c\u5408\u6cd5\u5c31\u653e\u884c\uff0c\u4e0d\u5408\u6cd5\u5c31\u8fd4\u56de 401\uff08\u9274\u6743\u5931\u8d25\uff09"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Token"),"\u9a8c\u8bc1\u6bd4\u8f83\u7075\u6d3b\uff0c\u9002\u7528\u4e8e\u5927\u90e8\u5206\u573a\u666f\u3002\u5e38\u7528\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"Token")," \u9274\u6743\u65b9\u5f0f\u7684\u89e3\u51b3\u65b9\u6848\u662f ",(0,r.kt)("inlineCode",{parentName:"p"},"JWT"),"\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"JWT")," \u662f\u901a\u8fc7\u5bf9\u5e26\u6709\u76f8\u5173\u7528\u6237\u4fe1\u606f\u7684\u8fdb\u884c\u52a0\u5bc6\uff0c\u52a0\u5bc6\u7684\u65b9\u5f0f\u6bd4\u8f83\u7075\u6d3b\uff0c\u53ef\u4ee5\u6839\u636e\u9700\u6c42\u5177\u4f53\u8bbe\u8ba1\u3002"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"OAuth"))),(0,r.kt)("p",null,"OAuth\uff08\u5f00\u653e\u6388\u6743\uff09\u662f\u4e00\u4e2a\u5f00\u653e\u6807\u51c6\uff0c\u5141\u8bb8\u7528\u6237\u6388\u6743\u7b2c\u4e09\u65b9\u7f51\u7ad9\u8bbf\u95ee\u4ed6\u4eec\u5b58\u50a8\u5728\u53e6\u5916\u7684\u670d\u52a1\u63d0\u4f9b\u8005\u4e0a\u7684\u4fe1\u606f\uff0c\u800c\u4e0d\u9700\u8981\u5c06\u7528\u6237\u540d\u548c\u5bc6\u7801\u63d0\u4f9b\u7ed9\u7b2c\u4e09\u65b9\u7f51\u7ad9\u6216\u5206\u4eab\u4ed6\u4eec\u6570\u636e\u7684\u6240\u6709\u5185\u5bb9\uff0c\u4e3a\u4e86\u4fdd\u62a4\u7528\u6237\u6570\u636e\u7684\u5b89\u5168\u548c\u9690\u79c1\uff0c\u7b2c\u4e09\u65b9\u7f51\u7ad9\u8bbf\u95ee\u7528\u6237\u6570\u636e\u524d\u90fd\u9700\u8981\u663e\u5f0f\u7684\u5411\u7528\u6237\u5f81\u6c42\u6388\u6743\u3002\u6211\u4eec\u5e38\u89c1\u7684\u63d0\u4f9b OAuth \u8ba4\u8bc1\u670d\u52a1\u7684\u5382\u5546\u6709\u652f\u4ed8\u5b9d\u3001QQ \u548c\u5fae\u4fe1\u3002"),(0,r.kt)("p",null,"OAuth \u534f\u8bae\u53c8\u6709 1.0 \u548c 2.0 \u4e24\u4e2a\u7248\u672c\u3002\u76f8\u6bd4\u8f83 1.0 \u7248\uff0c2.0 \u7248\u6574\u4e2a\u6388\u6743\u9a8c\u8bc1\u6d41\u7a0b\u66f4\u7b80\u5355\u66f4\u5b89\u5168\uff0c\u4e5f\u662f\u76ee\u524d\u6700\u4e3b\u8981\u7684\u7528\u6237\u8eab\u4efd\u9a8c\u8bc1\u548c\u6388\u6743\u65b9\u5f0f\u3002"),(0,r.kt)("h2",{id:"152-\u5982\u4f55\u4f7f\u7528"},"15.2 \u5982\u4f55\u4f7f\u7528"),(0,r.kt)("div",{className:"admonition admonition-info alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u914d\u7f6e\u4e4b\u524d")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u5728\u6dfb\u52a0\u6388\u6743\u670d\u52a1\u4e4b\u524d\uff0c\u8bf7\u5148\u786e\u4fdd ",(0,r.kt)("inlineCode",{parentName:"p"},"Startup.cs")," \u4e2d ",(0,r.kt)("inlineCode",{parentName:"p"},"Configure")," \u662f\u5426\u6dfb\u52a0\u4e86\u4ee5\u4e0b\u4e24\u4e2a\u4e2d\u95f4\u4ef6\uff1a"),(0,r.kt)("pre",{parentName:"div"},(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"app.UseAuthentication();\napp.UseAuthorization();\n")))),(0,r.kt)("h3",{id:"1521-\u6dfb\u52a0-cookie-\u8eab\u4efd\u9a8c\u8bc1"},"15.2.1 \u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"h3"},"Cookie")," \u8eab\u4efd\u9a8c\u8bc1"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'// Cookies\u5355\u72ec\u8eab\u4efd\u9a8c\u8bc1\nservices.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)\n .AddCookie(CookieAuthenticationDefaults.AuthenticationScheme, b =>\n {\n b.LoginPath = "/Home/Login";\n });\n')),(0,r.kt)("h3",{id:"1522-\u6dfb\u52a0-jwt-\u8eab\u4efd\u9a8c\u8bc1"},"15.2.2 \u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"h3"},"Jwt")," \u8eab\u4efd\u9a8c\u8bc1"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"services.AddJwt();\n")),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u6ce8\u610f")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},(0,r.kt)("inlineCode",{parentName:"p"},"JWT")," \u9274\u6743\u5e76\u672a\u5305\u542b\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\uff0c\u9700\u8981\u5b89\u88c5 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion.Extras.Authentication.JwtBearer")," \u62d3\u5c55\u5305\u3002"),(0,r.kt)("p",{parentName:"div"},"\u53e6\u5916 ",(0,r.kt)("inlineCode",{parentName:"p"},".AddJwt()")," \u5fc5\u987b\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},".AddControllers()")," \u4e4b\u524d\u6ce8\u518c\u3002\ud83d\udca1"))),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u81ea\u5b9a\u4e49 ",(0,r.kt)("inlineCode",{parentName:"li"},"Jwt")," \u914d\u7f6e\uff08\u9ed8\u8ba4\u65e0\u9700\u914d\u7f6e\uff09")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-json",metastring:"{4,6,8}","{4,6,8}":!0},'{\n "JWTSettings": {\n "ValidateIssuerSigningKey": true, // \u662f\u5426\u9a8c\u8bc1\u5bc6\u94a5\uff0cbool \u7c7b\u578b\uff0c\u9ed8\u8ba4true\n "IssuerSigningKey": "\u4f60\u7684\u5bc6\u94a5", // \u5bc6\u94a5\uff0cstring \u7c7b\u578b\uff0c\u5fc5\u987b\u662f\u590d\u6742\u5bc6\u94a5\uff0c\u957f\u5ea6\u5927\u4e8e16\n "ValidateIssuer": true, // \u662f\u5426\u9a8c\u8bc1\u7b7e\u53d1\u65b9\uff0cbool \u7c7b\u578b\uff0c\u9ed8\u8ba4true\n "ValidIssuer": "\u7b7e\u53d1\u65b9", // \u7b7e\u53d1\u65b9\uff0cstring \u7c7b\u578b\n "ValidateAudience": true, // \u662f\u5426\u9a8c\u8bc1\u7b7e\u6536\u65b9\uff0cbool \u7c7b\u578b\uff0c\u9ed8\u8ba4true\n "ValidAudience": "\u7b7e\u6536\u65b9", // \u7b7e\u6536\u65b9\uff0cstring \u7c7b\u578b\n "ValidateLifetime": true, // \u662f\u5426\u9a8c\u8bc1\u8fc7\u671f\u65f6\u95f4\uff0cbool \u7c7b\u578b\uff0c\u9ed8\u8ba4true\uff0c\u5efa\u8baetrue\n "ExpiredTime": 20, // \u8fc7\u671f\u65f6\u95f4\uff0clong \u7c7b\u578b\uff0c\u5355\u4f4d\u5206\u949f\uff0c\u9ed8\u8ba420\u5206\u949f\n "ClockSkew": 5, // \u8fc7\u671f\u65f6\u95f4\u5bb9\u9519\u503c\uff0clong \u7c7b\u578b\uff0c\u5355\u4f4d\u79d2\uff0c\u9ed8\u8ba4 5\u79d2\n "Algorithm": "HS256" // \u52a0\u5bc6\u7b97\u6cd5\uff0cstring \u7c7b\u578b\uff0c\u9ed8\u8ba4 SecurityAlgorithms.HmacSha256\n }\n}\n')),(0,r.kt)("div",{className:"admonition admonition-warning alert alert--danger"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"}))),"\u7cfb\u7edf\u5b89\u5168\u6ce8\u610f\u4e8b\u9879")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e3a\u4e86\u65b9\u4fbf\u5f00\u53d1\uff0c\u5df2\u7ecf\u81ea\u52a8\u6dfb\u52a0\u4e86 ",(0,r.kt)("inlineCode",{parentName:"p"},"Jwt")," \u9ed8\u8ba4\u914d\u7f6e\u3002\u5efa\u8bae\u6bcf\u4e2a\u9879\u76ee\u90fd\u5e94\u8be5\u5355\u72ec\u914d\u7f6e ",(0,r.kt)("inlineCode",{parentName:"p"},"IssuerSigningKey"),"\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"ValidIssuer"),"\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"ValidAudience")," \u8fd9\u4e09\u4e2a\u3002\u5426\u5219\u540c\u6837\u7528\u4e86 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u751f\u6210\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"Token")," \u53ef\u80fd\u5b58\u5728\u76f8\u4e92\u8bbf\u95ee\u5404\u81ea\u7cfb\u7edf\u7684\u98ce\u9669\u3002"))),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u6e29\u99a8\u63d0\u793a")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u76ee\u524d\u652f\u6301\u7684",(0,r.kt)("inlineCode",{parentName:"p"},"\u52a0\u5bc6\u7b97\u6cd5"),"\uff0c\u8be6\u60c5\u8bf7\u67e5\u9605",(0,r.kt)("a",{parentName:"p",href:"https://github.com/AzureAD/azure-activedirectory-identitymodel-extensions-for-dotnet/blob/dev/src/Microsoft.IdentityModel.Tokens/SecurityAlgorithms.cs"},"SecurityAlgorithms")))),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u751f\u6210 ",(0,r.kt)("inlineCode",{parentName:"li"},"Token"))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'// \u751f\u6210 token\nvar accessToken = JWTEncryption.Encrypt(new Dictionary()\n {\n { "UserId", user.Id }, // \u5b58\u50a8Id\n { "Account",user.Account }, // \u5b58\u50a8\u7528\u6237\u540d\n });\n')),(0,r.kt)("h3",{id:"1523-\u6df7\u5408\u8eab\u4efd\u9a8c\u8bc1"},"15.2.3 \u6df7\u5408\u8eab\u4efd\u9a8c\u8bc1"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'// JWT \u548c Cookies \u6df7\u5408\u8eab\u4efd\u9a8c\u8bc1\nservices.AddJwt(options =>\n{\n options.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;\n options.DefaultChallengeScheme = CookieAuthenticationDefaults.AuthenticationScheme;\n})\n.AddCookie(CookieAuthenticationDefaults.AuthenticationScheme, options =>\n{\n options.LoginPath = "/Home/Login";\n});\n')),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u6ce8\u610f")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u5982\u679c\u542f\u7528\u4e86\u6df7\u5408\u8eab\u4efd\u9a8c\u8bc1\u540e\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"WebApi")," \u9700\u5728\u63a7\u5236\u5668/Action \u4e2d\u6307\u5b9a ",(0,r.kt)("inlineCode",{parentName:"p"},"Scheme")," \u7c7b\u578b\u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"JwtBearerDefaults.AuthenticationScheme"),"\uff0c\u5982\uff1a"),(0,r.kt)("pre",{parentName:"div"},(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1}","{1}":!0},"[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]\npublic class ApiServices : IDynamicApiController\n{\n}\n")),(0,r.kt)("p",{parentName:"div"},"\u5982\u679c\u4e0d\u8bbe\u7f6e ",(0,r.kt)("inlineCode",{parentName:"p"},"Scheme")," \u90a3\u4e48\u5728\u6df7\u5408\u6388\u6743\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"Swagger")," \u4e2d\u5c06\u9ed8\u8ba4\u91c7\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"Cookie")," \u65b9\u5f0f\uff0c\u4e5f\u5c31\u662f\u6388\u6743\u5931\u8d25\u4f1a\u5c06\u6574\u4e2a ",(0,r.kt)("inlineCode",{parentName:"p"},"\u767b\u5f55\u9875\u9762")," \u5185\u5bb9\u8fd4\u56de\u3002"))),(0,r.kt)("h2",{id:"153-\u9ad8\u7ea7\u81ea\u5b9a\u4e49\u6388\u6743"},"15.3 \u9ad8\u7ea7\u81ea\u5b9a\u4e49\u6388\u6743"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u4e86\u975e\u5e38\u7075\u6d3b\u7684\u9ad8\u7ea7\u7b56\u7565\u9274\u6743\u548c\u6388\u6743\u65b9\u5f0f\uff0c\u901a\u8fc7\u8be5\u7b56\u7565\u6388\u6743\u65b9\u5f0f\u53ef\u4ee5\u5b9e\u73b0\u4efb\u4f55\u81ea\u5b9a\u4e49\u6388\u6743\u3002"),(0,r.kt)("h3",{id:"1531-appauthorizehandler"},"15.3.1 ",(0,r.kt)("inlineCode",{parentName:"h3"},"AppAuthorizeHandler")),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u4e86 ",(0,r.kt)("inlineCode",{parentName:"p"},"AppAuthorizeHandler")," \u7b56\u7565\u6388\u6743\u5904\u7406\u7a0b\u5e8f\u63d0\u4f9b\u57fa\u7c7b\uff0c\u53ea\u9700\u8981\u521b\u5efa\u81ea\u5df1\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"Handler")," \u7ee7\u627f\u5b83\u5373\u53ef\u3002\u5982\uff1a",(0,r.kt)("inlineCode",{parentName:"p"},"JwtHandler"),"\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{20,12}","{20,12}":!0},'using Furion.Authorization;\nusing Furion.Core;\nusing Microsoft.AspNetCore.Authorization;\nusing Microsoft.AspNetCore.Http;\nusing Microsoft.IdentityModel.JsonWebTokens;\n\nnamespace Furion.Web.Core\n{\n /// \n /// JWT \u6388\u6743\u81ea\u5b9a\u4e49\u5904\u7406\u7a0b\u5e8f\n /// \n public class JwtHandler : AppAuthorizeHandler\n {\n /// \n /// \u8bf7\u6c42\u7ba1\u9053\n /// \n /// \n /// \n /// \n public override Task PipelineAsync(AuthorizationHandlerContext context, DefaultHttpContext httpContext)\n {\n // \u6b64\u5904\u5df2\u7ecf\u81ea\u52a8\u9a8c\u8bc1 Jwt token\u7684\u6709\u6548\u6027\u4e86\uff0c\u65e0\u9700\u624b\u52a8\u9a8c\u8bc1\n\n // \u68c0\u67e5\u6743\u9650\uff0c\u5982\u679c\u65b9\u6cd5\u662f\u5f02\u6b65\u7684\u5c31\u4e0d\u7528 Task.FromResult \u5305\u88f9\uff0c\u76f4\u63a5\u4f7f\u7528 async/await \u5373\u53ef\n return Task.FromResult(CheckAuthorzie(httpContext));\n }\n\n /// \n /// \u68c0\u67e5\u6743\u9650\n /// \n /// \n /// \n private static bool CheckAuthorzie(DefaultHttpContext httpContext)\n {\n // \u83b7\u53d6\u6743\u9650\u7279\u6027\n var securityDefineAttribute = httpContext.GetMetadata();\n if (securityDefineAttribute == null) return true;\n\n return "\u67e5\u8be2\u6570\u636e\u5e93\u8fd4\u56de\u662f\u5426\u6709\u6743\u9650";\n }\n }\n}\n')),(0,r.kt)("p",null,"\u4e4b\u540e\u6ce8\u518c ",(0,r.kt)("inlineCode",{parentName:"p"},"JwtHandler")," \u5373\u53ef\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"services.AddJwt();\n")),(0,r.kt)("h3",{id:"1532-\u5b8c\u5168\u81ea\u5b9a\u4e49\u6388\u6743"},"15.3.2 \u5b8c\u5168\u81ea\u5b9a\u4e49\u6388\u6743"),(0,r.kt)("p",null,"\u6709\u4e9b\u65f6\u5019\u53ef\u80fd\u9488\u5bf9\u4e0d\u540c\u7684\u5e73\u53f0\u91c7\u7528\u4e0d\u4e00\u6837\u7684\u6388\u6743\u65b9\u5f0f\uff0c\u6bd4\u5982\u5408\u4f5c\u4fe1\u4efb\u7684\u7b2c\u4e09\u65b9\u673a\u6784\u53ef\u4ee5\u514d\u6388\u6743\uff0c\u8fd9\u65f6\u5019\u6211\u4eec\u53ea\u9700\u8981\u91cd\u5199 ",(0,r.kt)("inlineCode",{parentName:"p"},"HandleAsync")," \u65b9\u6cd5\u5373\u53ef\u3002\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{11-25}","{11-25}":!0},"using Furion.Authorization;\nusing Furion.Core;\nusing Microsoft.AspNetCore.Authorization;\nusing Microsoft.AspNetCore.Http;\nusing System.Threading.Tasks;\n\nnamespace Furion.Web.Core\n{\n public class JwtHandler : AppAuthorizeHandler\n {\n public override async Task HandleAsync(AuthorizationHandlerContext context)\n {\n // \u5e38\u89c4\u6388\u6743\uff08\u53ef\u4ee5\u5224\u65ad\u662f\u4e0d\u662f\u7b2c\u4e09\u65b9\uff09\n var isAuthenticated = context.User.Identity.IsAuthenticated;\n\n // \u7b2c\u4e09\u65b9\u6388\u6743\u81ea\u5b9a\u4e49\n if(\u662f\u7b2c\u4e09\u65b9){\n foreach (var requirement in pendingRequirements)\n {\n // \u6388\u6743\u6210\u529f\n context.Succeed(requirement);\n }\n }\n // \u6388\u6743\u5931\u8d25\n else context.Fail();\n }\n }\n}\n")),(0,r.kt)("h2",{id:"154-\u6388\u6743\u7279\u6027\u53ca\u5168\u5c40\u6388\u6743"},"15.4 \u6388\u6743\u7279\u6027\u53ca\u5168\u5c40\u6388\u6743"),(0,r.kt)("p",null,"\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c\u6240\u6709\u7684\u8def\u7531\u90fd\u662f\u5141\u8bb8\u533f\u540d\u8bbf\u95ee\u7684\uff0c\u6240\u4ee5\u5982\u679c\u9700\u8981\u5bf9\u67d0\u4e2a ",(0,r.kt)("inlineCode",{parentName:"p"},"Action")," \u6216 ",(0,r.kt)("inlineCode",{parentName:"p"},"Controller")," \u8bbe\u5b9a\u6388\u6743\u8bbf\u95ee\uff0c\u53ea\u9700\u8981\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Action")," \u6216 ",(0,r.kt)("inlineCode",{parentName:"p"},"Controller")," \u8d34 ",(0,r.kt)("inlineCode",{parentName:"p"},"[AppAuthorize]")," \u6216 ",(0,r.kt)("inlineCode",{parentName:"p"},"[Authorize]")," \u7279\u6027\u5373\u53ef\u3002"),(0,r.kt)("p",null,"\u5982\u679c\u9700\u8981\u5bf9\u7279\u5b9a\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"Action")," \u6216 ",(0,r.kt)("inlineCode",{parentName:"p"},"Controller")," \u5141\u8bb8\u533f\u540d\u8bbf\u95ee\uff0c\u5219\u8d34 ",(0,r.kt)("inlineCode",{parentName:"p"},"[AllowAnonymous]")," \u5373\u53ef\u3002"),(0,r.kt)("h3",{id:"1541-\u5168\u5c40\u6388\u6743"},"15.4.1 \u5168\u5c40\u6388\u6743"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"services.AddJwt(enableGlobalAuthorize:true);\n")),(0,r.kt)("h3",{id:"1542-\u533f\u540d\u8bbf\u95ee"},"15.4.2 \u533f\u540d\u8bbf\u95ee"),(0,r.kt)("p",null,"\u5982\u679c\u9700\u8981\u5bf9\u7279\u5b9a\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"Action")," \u6216 ",(0,r.kt)("inlineCode",{parentName:"p"},"Controller")," \u5141\u8bb8\u533f\u540d\u8bbf\u95ee\uff0c\u5219\u8d34 ",(0,r.kt)("inlineCode",{parentName:"p"},"[AllowAnonymous]")," \u5373\u53ef\u3002"),(0,r.kt)("h2",{id:"155-\u81ea\u52a8\u5237\u65b0-token"},"15.5 \u81ea\u52a8\u5237\u65b0 Token"),(0,r.kt)("h3",{id:"1551-\u540e\u7aef\u767b\u5f55\u90e8\u5206"},"15.5.1 \u540e\u7aef\u767b\u5f55\u90e8\u5206"),(0,r.kt)("p",null,"\u5f53\u7528\u6237\u767b\u5f55\u6210\u529f\u4e4b\u540e\uff0c\u8fd4\u56de ",(0,r.kt)("inlineCode",{parentName:"p"},"accessToken")," \u5b57\u7b26\u4e32\uff0c\u4e4b\u540e\u901a\u8fc7 ",(0,r.kt)("inlineCode",{parentName:"p"},"JWTEncryption.GenerateRefreshToken()")," \u83b7\u53d6 ",(0,r.kt)("inlineCode",{parentName:"p"},"\u5237\u65b0Token"),"\uff0c\u5e76\u901a\u8fc7\u54cd\u5e94\u62a5\u6587\u5934\u8fd4\u56de\uff0c\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{9}","{9}":!0},'// token\nvar accessToken = JWTEncryption.Encrypt(new Dictionary()\n {\n { "UserId", user.Id }, // \u5b58\u50a8Id\n { "Account",user.Account }, // \u5b58\u50a8\u7528\u6237\u540d\n });\n\n// \u83b7\u53d6\u5237\u65b0 token\nvar refreshToken = JWTEncryption.GenerateRefreshToken(accessToken, 43200); // \u7b2c\u4e8c\u4e2a\u53c2\u6570\u662f\u5237\u65b0 token \u7684\u6709\u6548\u671f\uff08\u5206\u949f\uff09\uff0c\u9ed8\u8ba4\u4e09\u5341\u5929\n\n// \u8bbe\u7f6e\u54cd\u5e94\u62a5\u6587\u5934\nhttpContextAccessor.HttpContext.Response.Headers["access-token"] = accessToken;\nhttpContextAccessor.HttpContext.Response.Headers["x-access-token"] = refreshToken;\n')),(0,r.kt)("p",null,"\u7528\u6237\u767b\u5f55\u6210\u529f\u4e4b\u540e\u628a ",(0,r.kt)("inlineCode",{parentName:"p"},"accessToken")," \u548c ",(0,r.kt)("inlineCode",{parentName:"p"},"refreshToken")," \u4e00\u8d77\u8fd4\u56de\u7ed9\u5ba2\u6237\u7aef\u5b58\u50a8\u8d77\u6765\u3002"),(0,r.kt)("h3",{id:"1552-\u540e\u7aef\u6388\u6743-handler-\u90e8\u5206"},"15.5.2 \u540e\u7aef\u6388\u6743 ",(0,r.kt)("inlineCode",{parentName:"h3"},"Handler")," \u90e8\u5206"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{16-28}","{16-28}":!0},'using Furion.Authorization;\nusing Furion.Core;\nusing Furion.DataEncryption;\nusing Microsoft.AspNetCore.Authorization;\nusing Microsoft.AspNetCore.Http;\nusing Microsoft.Extensions.DependencyInjection;\nusing System.Threading.Tasks;\n\nnamespace Furion.Web.Core\n{\n /// \n /// JWT \u6388\u6743\u81ea\u5b9a\u4e49\u5904\u7406\u7a0b\u5e8f\n /// \n public class JwtHandler : AppAuthorizeHandler\n {\n /// \n /// \u91cd\u5199 Handler \u6dfb\u52a0\u81ea\u52a8\u5237\u65b0\u6536\u53d6\u903b\u8f91\n /// \n /// \n /// \n public override async Task HandleAsync(AuthorizationHandlerContext context)\n {\n // \u81ea\u52a8\u5237\u65b0 token\n if (JWTEncryption.AutoRefreshToken(context, context.GetCurrentHttpContext()))\n {\n await AuthorizeHandleAsync(context);\n }\n else context.Fail(); // \u6388\u6743\u5931\u8d25\n }\n\n /// \n /// \u9a8c\u8bc1\u7ba1\u9053\uff0c\u4e5f\u5c31\u662f\u9a8c\u8bc1\u6838\u5fc3\u4ee3\u7801\n /// \n /// \n /// \n /// \n public override Task PipelineAsync(AuthorizationHandlerContext context, DefaultHttpContext httpContext)\n {\n // \u68c0\u67e5\u6743\u9650\uff0c\u5982\u679c\u65b9\u6cd5\u65f6\u5f02\u6b65\u7684\u5c31\u4e0d\u7528 Task.FromResult \u5305\u88f9\uff0c\u76f4\u63a5\u4f7f\u7528 async/await \u5373\u53ef\n return Task.FromResult(true);\n }\n }\n}\n')),(0,r.kt)("h3",{id:"1553-\u5ba2\u6237\u7aef\u90e8\u5206"},"15.5.3 \u5ba2\u6237\u7aef\u90e8\u5206"),(0,r.kt)("p",null,"\u5ba2\u6237\u7aef\u6bcf\u6b21\u8bf7\u6c42\u9700\u5c06 ",(0,r.kt)("inlineCode",{parentName:"p"},"accessToken")," \u548c ",(0,r.kt)("inlineCode",{parentName:"p"},"refreshToken")," \u653e\u5230\u8bf7\u6c42\u62a5\u6587\u5934\u4e2d\u4f20\u9001\u5230\u670d\u52a1\u7aef\uff0c\u683c\u5f0f\u4e3a\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"Authorization: Bearer \u4f60\u7684token\nX-Authorization: Bearer \u4f60\u7684\u5237\u65b0token\n")),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u6ce8\u610f")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u5728\u6b63\u5e38\u5f00\u53d1\u4e2d\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"refreshToken")," \u65e0\u9700\u6bcf\u6b21\u8bf7\u6c42\u643a\u5e26\uff0c\u800c\u662f ",(0,r.kt)("inlineCode",{parentName:"p"},"accessToken")," \u5373\u5c06\u8fc7\u671f\u4e4b\u540e\u643a\u5e26\u5373\u53ef\u3002\u53ef\u4ee5\u5728\u5ba2\u6237\u7aef\u81ea\u884c\u5224\u65ad ",(0,r.kt)("inlineCode",{parentName:"p"},"accessToken")," \u662f\u5426\u5373\u5c06\u8fc7\u671f\u3002"))),(0,r.kt)("p",null,"\u5982\u679c ",(0,r.kt)("inlineCode",{parentName:"p"},"Token")," \u8fc7\u671f\uff0c\u90a3\u4e48 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u5c06\u81ea\u52a8\u6839\u636e\u6709\u6548\u671f\u5185\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"refreshToken")," \u81ea\u52a8\u751f\u6210\u65b0\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"AccessToken"),"\uff0c\u5e76\u5728 ",(0,r.kt)("strong",{parentName:"p"},"\u54cd\u5e94\u62a5\u6587\u5934")," \u4e2d\u8fd4\u56de\uff0c\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre"},"access-token: \u65b0\u7684token\nx-access-token: \u65b0\u7684\u5237\u65b0token\n")),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u5b58\u50a8\u65b0\u7684 Token")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u524d\u7aef\u9700\u8981\u83b7\u53d6 ",(0,r.kt)("strong",{parentName:"p"},"\u54cd\u5e94\u62a5\u6587\u5934")," \u65b0\u7684 token \u548c\u5237\u65b0 token \u66ff\u6362\u4e4b\u524d\u5728\u5ba2\u6237\u5904\u5b58\u50a8\u65e7\u7684 token \u548c\u5237\u65b0 token\u3002"))),(0,r.kt)("h2",{id:"156-\u83b7\u53d6-jwt-\u5b58\u50a8\u7684\u4fe1\u606f"},"15.6 \u83b7\u53d6 ",(0,r.kt)("inlineCode",{parentName:"h2"},"Jwt")," \u5b58\u50a8\u7684\u4fe1\u606f"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'// \u83b7\u53d6 `Jwt` \u5b58\u50a8\u7684\u4fe1\u606f\nvar userId = App.User?.FindFirstValue("\u952e");\n')),(0,r.kt)("p",null,(0,r.kt)("strong",{parentName:"p"},"\u6ce8\u610f\u5f15\u5165 ",(0,r.kt)("inlineCode",{parentName:"strong"},"System.Security.Claims")," \u547d\u540d\u7a7a\u95f4")),(0,r.kt)("h2",{id:"157-\u53cd\u9988\u4e0e\u5efa\u8bae"},"15.7 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,r.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))),(0,r.kt)("hr",null),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e86\u89e3\u66f4\u591a")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u60f3\u4e86\u89e3\u66f4\u591a ",(0,r.kt)("inlineCode",{parentName:"p"},"\u9274\u6743\u6388\u6743")," \u77e5\u8bc6\u53ef\u67e5\u9605 ",(0,r.kt)("a",{parentName:"p",href:"https://docs.microsoft.com/zh-cn/aspnet/core/security/?view=aspnetcore-5.0"},"ASP.NET Core - \u5b89\u5168\u548c\u6807\u8bc6")," \u7ae0\u8282\u3002"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/c7a9ad89.7cc1fd09.js b/handbook/build/assets/js/c7a9ad89.7cc1fd09.js deleted file mode 100644 index 341dbf5ca37..00000000000 --- a/handbook/build/assets/js/c7a9ad89.7cc1fd09.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[9706],{3905:function(e,t,n){n.d(t,{Zo:function(){return p},kt:function(){return u}});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var s=a.createContext({}),d=function(e){var t=a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},p=function(e){var t=d(e.components);return a.createElement(s.Provider,{value:t},e.children)},c={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,s=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),m=d(n),u=r,k=m["".concat(s,".").concat(u)]||m[u]||c[u]||o;return n?a.createElement(k,i(i({ref:t},p),{},{components:n})):a.createElement(k,i({ref:t},p))}));function u(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,i=new Array(o);i[0]=m;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l.mdxType="string"==typeof e?e:r,i[1]=l;for(var d=2;d=0&&o<=d&&r<=l&&a>=0)||(t.scrollIntoView({block:"center",behavior:"smooth"}),t.classList.add(s),setTimeout((function(){return t.classList.remove(s)}),2e3))}),150))},D=function(e){var t,n;switch(e.keyCode){case p:var a=y.indexOf(e.target)+1;n=y[a]||y[0];break;case d:var r=y.indexOf(e.target)-1;n=y[r]||y[y.length-1]}null==(t=n)||t.focus()};return a.createElement("div",{className:"tabs-container"},a.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.Z)("tabs",{"tabs--block":n},u)},c.map((function(e){var t=e.value,n=e.label;return a.createElement("li",{role:"tab",tabIndex:C===t?0:-1,"aria-selected":C===t,className:(0,i.Z)("tabs__item",l,{"tabs__item--active":C===t}),key:t,ref:function(e){return y.push(e)},onKeyDown:D,onFocus:S,onClick:S},n)}))),t?(0,a.cloneElement)(g.filter((function(e){return e.props.value===C}))[0],{className:"margin-vert--md"}):a.createElement("div",{className:"margin-vert--md"},g.map((function(e,t){return(0,a.cloneElement)(e,{key:t,hidden:e.props.value!==C})}))))}},9443:function(e,t,n){var a=(0,n(7294).createContext)(void 0);t.Z=a},9116:function(e,t,n){n.r(t),n.d(t,{frontMatter:function(){return l},contentTitle:function(){return s},metadata:function(){return d},toc:function(){return p},default:function(){return m}});var a=n(7462),r=n(3366),o=(n(7294),n(3905)),i=(n(4996),n(5064),n(8215),["components"]),l={id:"dbcontext-multi-database",title:"9.18 \u591a\u79cd\u6570\u636e\u5e93\u64cd\u4f5c",sidebar_label:"9.18 \u591a\u79cd\u6570\u636e\u5e93\u64cd\u4f5c \u2728"},s=void 0,d={unversionedId:"dbcontext-multi-database",id:"dbcontext-multi-database",isDocsHomePage:!1,title:"9.18 \u591a\u79cd\u6570\u636e\u5e93\u64cd\u4f5c",description:"\u5982\u679c\u8fde\u63a5\u5b57\u7b26\u4e32\u662f\u914d\u7f6e\u5728\u81ea\u5b9a\u4e49\u7684 .json \u6587\u4ef6\u4e2d\uff0c\u90a3\u4e48\u5fc5\u987b\u5728 Visual Studio \u4e2d\u914d\u7f6e .json \u53f3\u952e\u5c5e\u6027\uff0c\u8bbe\u7f6e \u590d\u5236 \u8f93\u51fa\u76ee\u5f55\u4e3a \u5982\u679c\u8f83\u65b0\u5219\u590d\u5236\uff0c\u751f\u6210\u64cd\u4f5c\u4e3a \u5185\u5bb9\u3002",source:"@site/docs/dbcontext-multi-database.mdx",sourceDirName:".",slug:"/dbcontext-multi-database",permalink:"/furion/docs/dbcontext-multi-database",editUrl:"https://gitee.com/dotnetchina/Furion/tree/master/handbook/docs/dbcontext-multi-database.mdx",version:"current",lastUpdatedBy:"Monk",lastUpdatedAt:1625214683,formattedLastUpdatedAt:"7/2/2021",frontMatter:{id:"dbcontext-multi-database",title:"9.18 \u591a\u79cd\u6570\u636e\u5e93\u64cd\u4f5c",sidebar_label:"9.18 \u591a\u79cd\u6570\u636e\u5e93\u64cd\u4f5c \u2728"},sidebar:"docs",previous:{title:"9.17 Sql \u9ad8\u7ea7\u4ee3\u7406",permalink:"/furion/docs/dbcontext-sql-proxy"},next:{title:"9.19 \u6570\u636e\u5e93\u751f\u6210\u6a21\u578b (Db First)",permalink:"/furion/docs/dbcontext-db-first"}},p=[{value:"9.18.1 Furion \u652f\u6301\u6570\u636e\u5e93\u63d0\u4f9b\u5668",id:"9181-furion-\u652f\u6301\u6570\u636e\u5e93\u63d0\u4f9b\u5668",children:[{value:"9.18.1.1 \u6570\u636e\u5e93\u63d0\u4f9b\u5668\u5bf9\u5e94\u5305",id:"91811-\u6570\u636e\u5e93\u63d0\u4f9b\u5668\u5bf9\u5e94\u5305",children:[]}]},{value:"9.18.2 \u591a\u6570\u636e\u5e93\u670d\u52a1\u6ce8\u518c",id:"9182-\u591a\u6570\u636e\u5e93\u670d\u52a1\u6ce8\u518c",children:[]},{value:"9.18.3 \u5404\u7c7b\u6570\u636e\u5e93\u8fde\u63a5\u5b57\u7b26\u4e32\u914d\u7f6e\u793a\u4f8b",id:"9183-\u5404\u7c7b\u6570\u636e\u5e93\u8fde\u63a5\u5b57\u7b26\u4e32\u914d\u7f6e\u793a\u4f8b",children:[]},{value:"9.18.4 \u591a\u6570\u636e\u5e93\u4f7f\u7528\u65b9\u5f0f",id:"9184-\u591a\u6570\u636e\u5e93\u4f7f\u7528\u65b9\u5f0f",children:[{value:"9.18.4.1 \u5b9e\u4f53\u4ed3\u50a8\u65b9\u5f0f",id:"91841-\u5b9e\u4f53\u4ed3\u50a8\u65b9\u5f0f",children:[]},{value:"9.18.4.2 \u975e\u6cdb\u578b\u4ed3\u50a8\u65b9\u5f0f",id:"91842-\u975e\u6cdb\u578b\u4ed3\u50a8\u65b9\u5f0f",children:[]},{value:"9.18.4.3 Sql \u4ed3\u50a8\u65b9\u5f0f",id:"91843-sql-\u4ed3\u50a8\u65b9\u5f0f",children:[]},{value:"9.18.4.4 \u5b9e\u4f53\u5b9a\u4e49\u65b9\u5f0f",id:"91844-\u5b9e\u4f53\u5b9a\u4e49\u65b9\u5f0f",children:[]},{value:"9.18.4.5 Linq \u51fd\u6570\u65b9\u5f0f",id:"91845-linq-\u51fd\u6570\u65b9\u5f0f",children:[]}]},{value:"9.18.5 SqlServer \u4f4e\u7248\u672c\u652f\u6301\u52a8\u6001\u914d\u7f6e",id:"9185-sqlserver-\u4f4e\u7248\u672c\u652f\u6301\u52a8\u6001\u914d\u7f6e",children:[]},{value:"9.18.6 MySql \u65f6\u533a\u95ee\u9898/\u5c11 8 \u5c0f\u65f6\u95ee\u9898",id:"9186-mysql-\u65f6\u533a\u95ee\u9898\u5c11-8-\u5c0f\u65f6\u95ee\u9898",children:[]},{value:"9.18.7 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"9187-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],c={toc:p};function m(e){var t=e.components,n=(0,r.Z)(e,i);return(0,o.kt)("wrapper",(0,a.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("div",{className:"admonition admonition-warning alert alert--danger"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"}))),"\u8fde\u63a5\u5b57\u7b26\u4e32\u914d\u7f6e\u6ce8\u610f\u4e8b\u9879")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u5982\u679c\u8fde\u63a5\u5b57\u7b26\u4e32\u662f\u914d\u7f6e\u5728\u81ea\u5b9a\u4e49\u7684 ",(0,o.kt)("inlineCode",{parentName:"p"},".json")," \u6587\u4ef6\u4e2d\uff0c\u90a3\u4e48\u5fc5\u987b\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"Visual Studio")," \u4e2d\u914d\u7f6e ",(0,o.kt)("inlineCode",{parentName:"p"},".json")," \u53f3\u952e\u5c5e\u6027\uff0c\u8bbe\u7f6e ",(0,o.kt)("inlineCode",{parentName:"p"},"\u590d\u5236")," \u8f93\u51fa\u76ee\u5f55\u4e3a ",(0,o.kt)("inlineCode",{parentName:"p"},"\u5982\u679c\u8f83\u65b0\u5219\u590d\u5236"),"\uff0c\u751f\u6210\u64cd\u4f5c\u4e3a ",(0,o.kt)("inlineCode",{parentName:"p"},"\u5185\u5bb9"),"\u3002"),(0,o.kt)("p",{parentName:"div"},"\u5426\u5219\u5c31\u4f1a\u63d0\u793a\u627e\u4e0d\u5230\u914d\u7f6e\u6216\u8fde\u63a5\u5b57\u7b26\u4e32\u7684\u9519\u8bef\u3002"))),(0,o.kt)("h2",{id:"9181-furion-\u652f\u6301\u6570\u636e\u5e93\u63d0\u4f9b\u5668"},"9.18.1 ",(0,o.kt)("inlineCode",{parentName:"h2"},"Furion")," \u652f\u6301\u6570\u636e\u5e93\u63d0\u4f9b\u5668"),(0,o.kt)("table",null,(0,o.kt)("thead",{parentName:"table"},(0,o.kt)("tr",{parentName:"thead"},(0,o.kt)("th",{parentName:"tr",align:null},"SqlServer"),(0,o.kt)("th",{parentName:"tr",align:null},"Sqlite"),(0,o.kt)("th",{parentName:"tr",align:null},"Cosmos"),(0,o.kt)("th",{parentName:"tr",align:null},"InMemoryDatabase"),(0,o.kt)("th",{parentName:"tr",align:null},"MySql"),(0,o.kt)("th",{parentName:"tr",align:null},"PostgreSQL"),(0,o.kt)("th",{parentName:"tr",align:null},"Oracle"),(0,o.kt)("th",{parentName:"tr",align:null},"Firebird"),(0,o.kt)("th",{parentName:"tr",align:null},"Dm"))),(0,o.kt)("tbody",{parentName:"table"},(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"\u2714"),(0,o.kt)("td",{parentName:"tr",align:null},"\u2714"),(0,o.kt)("td",{parentName:"tr",align:null},"\u2714"),(0,o.kt)("td",{parentName:"tr",align:null},"\u2714"),(0,o.kt)("td",{parentName:"tr",align:null},"\u2714"),(0,o.kt)("td",{parentName:"tr",align:null},"\u2714"),(0,o.kt)("td",{parentName:"tr",align:null},"\u2714"),(0,o.kt)("td",{parentName:"tr",align:null},"\u2714"),(0,o.kt)("td",{parentName:"tr",align:null},"\u2714")))),(0,o.kt)("h3",{id:"91811-\u6570\u636e\u5e93\u63d0\u4f9b\u5668\u5bf9\u5e94\u5305"},"9.18.1.1 \u6570\u636e\u5e93\u63d0\u4f9b\u5668\u5bf9\u5e94\u5305"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"SqlServer"),"\uff1a",(0,o.kt)("inlineCode",{parentName:"li"},"Microsoft.EntityFrameworkCore.SqlServer")," (\u652f\u6301 SqlServer 2005 +)"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"Sqlite"),"\uff1a",(0,o.kt)("inlineCode",{parentName:"li"},"Microsoft.EntityFrameworkCore.Sqlite")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"Cosmos"),"\uff1a",(0,o.kt)("inlineCode",{parentName:"li"},"Microsoft.EntityFrameworkCore.Cosmos")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"InMemoryDatabase"),"\uff1a",(0,o.kt)("inlineCode",{parentName:"li"},"Microsoft.EntityFrameworkCore.InMemory")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"MySql"),(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"Pomelo.EntityFrameworkCore.MySql"),"\uff1a(\u652f\u6301 MySql 5.x +)"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"MySql.EntityFrameworkCore"),"\uff1a\u652f\u6301 (MySql 8.x +)"))),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"PostgreSQL"),"\uff1a",(0,o.kt)("inlineCode",{parentName:"li"},"Npgsql.EntityFrameworkCore.PostgreSQL")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"Oracle"),"\uff1a",(0,o.kt)("inlineCode",{parentName:"li"},"Oracle.EntityFrameworkCore")," \uff08\u652f\u6301 Oracle 10 +\uff09"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"Firebird"),"\uff1a",(0,o.kt)("inlineCode",{parentName:"li"},"FirebirdSql.EntityFrameworkCore.Firebird")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"Dm"),"\uff1a",(0,o.kt)("inlineCode",{parentName:"li"},"Microsoft.EntityFrameworkCore.Dm"))),(0,o.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u5c0f\u77e5\u8bc6")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u8fd9\u4e9b\u6570\u636e\u5e93\u5305\u5e94\u8be5\u5b89\u88c5\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"Furion.EntityFramework.Core")," \u5c42\u3002\u7279\u6b8a\u60c5\u51b5\u9700\u5b89\u88c5\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"Furion.Core")," \u5c42\u4e2d\uff0c\u5982 ",(0,o.kt)("inlineCode",{parentName:"p"},"Mysql")," ",(0,o.kt)("inlineCode",{parentName:"p"},"HasCharset()")," \u914d\u7f6e\u3002"))),(0,o.kt)("h2",{id:"9182-\u591a\u6570\u636e\u5e93\u670d\u52a1\u6ce8\u518c"},"9.18.2 \u591a\u6570\u636e\u5e93\u670d\u52a1\u6ce8\u518c"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},'// \u6ce8\u518c SqlServer\noptions.AddDbPool(DbProvider.SqlServer);\noptions.AddDbPool($"{DbProvider.SqlServer}@2005"); // \u652f\u6301 2005 \u6570\u636e\u5e93\noptions.AddDbPool($"{DbProvider.SqlServer}@2008"); // \u652f\u6301 2008 \u6570\u636e\u5e93\n\n// \u6ce8\u518c Sqlite\noptions.AddDbPool(DbProvider.Sqlite);\n\n// \u6ce8\u518c Cosmos\noptions.AddDbPool(DbProvider.Cosmos);\n\n// \u6ce8\u518c InMemoryDatabase\noptions.AddDbPool(DbProvider.InMemoryDatabase);\n\n// \u6ce8\u518c MySql\noptions.AddDbPool(DbProvider.MySql);\noptions.AddDbPool($"{DbProvider.MySql}@8.0.22"); // \u53ef\u4ee5\u6307\u5b9a\u7248\u672c\u53f7\noptions.AddDbPool(DbProvider.MySqlOfficial); // \u4f7f\u7528 MySql \u5b98\u65b9\u5305\uff08MySql.EntityFrameworkCore\uff09\n\n// \u6ce8\u518c PostgreSQL\noptions.AddDbPool(DbProvider.Npgsql);\n\n// \u6ce8\u518c Oracle\noptions.AddDbPool(DbProvider.Oracle);\noptions.AddDbPool($"{DbProvider.Oracle}@11"); // \u652f\u6301 Oracle 11 \u7248\u672c\n\n// \u6ce8\u518c Firebird\noptions.AddDbPool(DbProvider.Firebird);\n\n// \u6ce8\u518c Dm\noptions.AddDbPool(DbProvider.Dm);\n')),(0,o.kt)("div",{className:"admonition admonition-caution alert alert--warning"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 16 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"}))),"\u65b0\u7248 SqlServer/MySQL/Oracle \u6ce8\u610f")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},(0,o.kt)("inlineCode",{parentName:"p"},"SqlServer")," \u517c\u5bb9 ",(0,o.kt)("inlineCode",{parentName:"p"},"2005-2008")," \u5199\u6cd5\uff1a"),(0,o.kt)("pre",{parentName:"div"},(0,o.kt)("code",{parentName:"pre",className:"language-cs"},'services.AddDatabaseAccessor(options =>\n{\n options.AddDbPool($"{DbProvider.SqlServer}@2005"); // \u652f\u6301 2005 \u6570\u636e\u5e93\n options.AddDbPool($"{DbProvider.SqlServer}@2008"); // \u652f\u6301 2008 \u6570\u636e\u5e93\n});\n')),(0,o.kt)("p",{parentName:"div"},(0,o.kt)("inlineCode",{parentName:"p"},"MySQL")," \u517c\u5bb9\u65e7\u7248\u672c\uff08\u5e26\u7248\u672c\u53f7\uff09\u5199\u6cd5\uff1a"),(0,o.kt)("pre",{parentName:"div"},(0,o.kt)("code",{parentName:"pre",className:"language-cs"},'services.AddDatabaseAccessor(options =>\n{\n options.AddDbPool($"{DbProvider.MySql}@8.0.22");\n});\n')),(0,o.kt)("p",{parentName:"div"},"\u5982\u679c\u4f7f\u7528\u4e86 ",(0,o.kt)("inlineCode",{parentName:"p"},"MySql.EntityFrameworkCore")," \u5305\uff0c\u5219\u9700\u6539\u4e3a\u4ee5\u4e0b\u6ce8\u518c\uff1a"),(0,o.kt)("pre",{parentName:"div"},(0,o.kt)("code",{parentName:"pre",className:"language-cs"},"services.AddDatabaseAccessor(options =>\n{\n options.AddDbPool(DbProvider.MySqlOfficial);\n});\n")),(0,o.kt)("p",{parentName:"div"},(0,o.kt)("inlineCode",{parentName:"p"},"Oracle")," \u517c\u5bb9 ",(0,o.kt)("inlineCode",{parentName:"p"},"11")," \u7248\u672c"),(0,o.kt)("pre",{parentName:"div"},(0,o.kt)("code",{parentName:"pre",className:"language-cs"},'services.AddDatabaseAccessor(options =>\n{\n options.AddDbPool($"{DbProvider.Oracle}@11");\n});\n')))),(0,o.kt)("h2",{id:"9183-\u5404\u7c7b\u6570\u636e\u5e93\u8fde\u63a5\u5b57\u7b26\u4e32\u914d\u7f6e\u793a\u4f8b"},"9.18.3 \u5404\u7c7b\u6570\u636e\u5e93\u8fde\u63a5\u5b57\u7b26\u4e32\u914d\u7f6e\u793a\u4f8b"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"Sqlite"),"\uff1a",(0,o.kt)("inlineCode",{parentName:"li"},"Data Source=./Furion.db")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"MySql"),"\uff1a",(0,o.kt)("inlineCode",{parentName:"li"},"Data Source=localhost;Database=Furion;User ID=root;Password=000000;pooling=true;port=3306;sslmode=none;CharSet=utf8;")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"SqlServer"),"\uff1a",(0,o.kt)("inlineCode",{parentName:"li"},"Server=localhost;Database=Furion;User=sa;Password=000000;MultipleActiveResultSets=True;")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"Oracle"),"\uff1a",(0,o.kt)("inlineCode",{parentName:"li"},"User Id=orcl;Password=orcl;Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=orcl)))")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"PostgreSQL"),"\uff1a",(0,o.kt)("inlineCode",{parentName:"li"},"PORT=5432;DATABASE=postgres;HOST=127.0.0.1;PASSWORD=postgres;USER ID=postgres;"))),(0,o.kt)("h2",{id:"9184-\u591a\u6570\u636e\u5e93\u4f7f\u7528\u65b9\u5f0f"},"9.18.4 \u591a\u6570\u636e\u5e93\u4f7f\u7528\u65b9\u5f0f"),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u901a\u8fc7\u72ec\u521b\u7684 ",(0,o.kt)("inlineCode",{parentName:"p"},"\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u5b9a\u4f4d\u5668")," \u5b9e\u73b0\u591a\u6570\u636e\u5e93\u7075\u6d3b\u64cd\u4f5c\u5207\u6362\u3002\u53ea\u9700\u8981\u4e3a\u6bcf\u4e00\u79cd\u6570\u636e\u5e93\u7ed1\u5b9a\u552f\u4e00\u7684\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u5b9a\u4f4d\u5668\u5373\u53ef\u3002"),(0,o.kt)("p",null,"\u4ee5\u4e0b\u662f ",(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u652f\u6301\u591a\u6570\u636e\u5e93\u64cd\u4f5c\u7684\u5b9e\u4f8b\uff1a"),(0,o.kt)("h3",{id:"91841-\u5b9e\u4f53\u4ed3\u50a8\u65b9\u5f0f"},"9.18.4.1 \u5b9e\u4f53\u4ed3\u50a8\u65b9\u5f0f"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},"// \u5207\u6362\u5230 MSSQL \u64cd\u4f5c Person\u8868\nvar mssqlRepository = personRepository.Change();\n\n// \u5207\u6362\u5230 MySql \u64cd\u4f5c Person\u8868\nvar mysqlRepository = personRepository.Change();\n\n// \u5207\u6362\u5230 Sqlite \u64cd\u4f5c Person\u8868\nvar sqliteRepository = personRepository.Change();\n\n")),(0,o.kt)("h3",{id:"91842-\u975e\u6cdb\u578b\u4ed3\u50a8\u65b9\u5f0f"},"9.18.4.2 \u975e\u6cdb\u578b\u4ed3\u50a8\u65b9\u5f0f"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},"// \u5207\u6362\u5230 MSSQL \u64cd\u4f5c Person\u8868\nvar mssqlRepository = repository.Change();\n\n// \u5207\u6362\u5230 MySql \u64cd\u4f5c Person\u8868\nvar mysqlRepository = repository.Change();\n\n// \u5207\u6362\u5230 Sqlite \u64cd\u4f5c Person\u8868\nvar sqliteRepository = repository.Change();\n")),(0,o.kt)("h3",{id:"91843-sql-\u4ed3\u50a8\u65b9\u5f0f"},"9.18.4.3 ",(0,o.kt)("inlineCode",{parentName:"h3"},"Sql")," \u4ed3\u50a8\u65b9\u5f0f"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},"// \u5207\u6362\u5230 MSSQL \u64cd\u4f5c Person\u8868\nvar mssqlRepository = sqlRepository.Change();\n\n// \u5207\u6362\u5230 MySql \u64cd\u4f5c Person\u8868\nvar mysqlRepository = sqlRepository.Change();\n\n// \u5207\u6362\u5230 Sqlite \u64cd\u4f5c Person\u8868\nvar sqliteRepository = sqlRepository.Change();\n")),(0,o.kt)("h3",{id:"91844-\u5b9e\u4f53\u5b9a\u4e49\u65b9\u5f0f"},"9.18.4.4 \u5b9e\u4f53\u5b9a\u4e49\u65b9\u5f0f"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},"\n// \u652f\u6301\u4e00\u4e2a\u6570\u636e\u5e93\npublic class Person: IEntity\n{\n // ....\n}\n\n// \u652f\u6301\u591a\u4e2a\u6570\u636e\u5e93\npublic class Person: IEntity\n{\n // ....\n}\n")),(0,o.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u5c0f\u77e5\u8bc6")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u6240\u6709\u7684 ",(0,o.kt)("inlineCode",{parentName:"p"},"\u5b9e\u4f53\u4f9d\u8d56\u63a5\u53e3\u6216\u62bd\u8c61\u7c7b")," \u90fd\u652f\u6301\u6cdb\u578b\u65b9\u5f0f \u6307\u5b9a \u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u5b9a\u4f4d\u5668\uff0c\u6700\u591a\u652f\u6301 ",(0,o.kt)("inlineCode",{parentName:"p"},"8")," \u4e2a\u3002"))),(0,o.kt)("h3",{id:"91845-linq-\u51fd\u6570\u65b9\u5f0f"},"9.18.4.5 Linq \u51fd\u6570\u65b9\u5f0f"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},'public static class QueryFunctions\n{\n [QueryableFunction("FN_GetId", "dbo", typeof(MySqlDbContextLocator), typeof(SqliteDbContextLocator))]\n public static int GetId(int id) => throw new NotSupportedException();\n}\n')),(0,o.kt)("h2",{id:"9185-sqlserver-\u4f4e\u7248\u672c\u652f\u6301\u52a8\u6001\u914d\u7f6e"},"9.18.5 ",(0,o.kt)("inlineCode",{parentName:"h2"},"SqlServer")," \u4f4e\u7248\u672c\u652f\u6301\u52a8\u6001\u914d\u7f6e"),(0,o.kt)("p",null,"\u6b63\u5e38\u60c5\u51b5\u4e0b\uff0c\u53ea\u9700\u8981\u5728\u6ce8\u518c\u7684\u65f6\u5019\u6307\u5b9a ",(0,o.kt)("inlineCode",{parentName:"p"},"@2008")," \u6570\u636e\u5e93\u5373\u53ef\uff0c\u6709\u4e9b\u65f6\u5019\u6211\u4eec\u53ef\u80fd\u9700\u8981\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"DbContext")," \u7684 ",(0,o.kt)("inlineCode",{parentName:"p"},"OnConfigure")," \u4e2d\u914d\u7f6e\uff0c\u8fd9\u4e2a\u65f6\u5019\u5c31\u9700\u8981\u6dfb\u52a0\u4ee5\u4e0b\u4ee3\u7801\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{4}","{4}":!0},"protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)\n{\n optionsBuilder.UseSqlServer(DbProvider.GetConnectionString())\n .ReplaceService();\n base.OnConfiguring(optionsBuilder);\n}\n")),(0,o.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u5c0f\u77e5\u8bc6")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},(0,o.kt)("inlineCode",{parentName:"p"},"DbProvider.GetConnectionString()")," \u662f\u83b7\u53d6\u5bf9\u5e94\u4e0a\u4e0b\u6587\u914d\u7f6e\u7684\u6570\u636e\u5e93\u94fe\u63a5\u5b57\u7b26\u4e32\u3002"))),(0,o.kt)("h2",{id:"9186-mysql-\u65f6\u533a\u95ee\u9898\u5c11-8-\u5c0f\u65f6\u95ee\u9898"},"9.18.6 ",(0,o.kt)("inlineCode",{parentName:"h2"},"MySql")," \u65f6\u533a\u95ee\u9898/\u5c11 8 \u5c0f\u65f6\u95ee\u9898"),(0,o.kt)("p",null,"\u53ef\u67e5\u9605\u76f8\u5173 ",(0,o.kt)("inlineCode",{parentName:"p"},"Issue"),"\uff1a",(0,o.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/I3RSCO"},"https://gitee.com/dotnetchina/Furion/issues/I3RSCO")),(0,o.kt)("h2",{id:"9187-\u53cd\u9988\u4e0e\u5efa\u8bae"},"9.18.7 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,o.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,o.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}m.isMDXComponent=!0},6010:function(e,t,n){function a(e){var t,n,r="";if("string"==typeof e||"number"==typeof e)r+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var s=a.createContext({}),d=function(e){var t=a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},p=function(e){var t=d(e.components);return a.createElement(s.Provider,{value:t},e.children)},c={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,o=e.originalType,s=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),m=d(n),u=r,v=m["".concat(s,".").concat(u)]||m[u]||c[u]||o;return n?a.createElement(v,i(i({ref:t},p),{},{components:n})):a.createElement(v,i({ref:t},p))}));function u(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=n.length,i=new Array(o);i[0]=m;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l.mdxType="string"==typeof e?e:r,i[1]=l;for(var d=2;d=0&&o<=d&&r<=l&&a>=0)||(t.scrollIntoView({block:"center",behavior:"smooth"}),t.classList.add(s),setTimeout((function(){return t.classList.remove(s)}),2e3))}),150))},q=function(e){var t,n=null;switch(e.key){case"ArrowRight":var a=f.indexOf(e.target)+1;n=f[a]||f[0];break;case"ArrowLeft":var r=f.indexOf(e.target)-1;n=f[r]||f[f.length-1]}null==(t=n)||t.focus()};return a.createElement("div",{className:"tabs-container"},a.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.Z)("tabs",{"tabs--block":r},m)},v.map((function(e){var t=e.value,n=e.label;return a.createElement("li",{role:"tab",tabIndex:g===t?0:-1,"aria-selected":g===t,className:(0,i.Z)("tabs__item",l,{"tabs__item--active":g===t}),key:t,ref:function(e){return f.push(e)},onKeyDown:q,onFocus:D,onClick:D},null!=n?n:t)}))),n?(0,a.cloneElement)(u.filter((function(e){return e.props.value===g}))[0],{className:"margin-vert--md"}):a.createElement("div",{className:"margin-vert--md"},u.map((function(e,t){return(0,a.cloneElement)(e,{key:t,hidden:e.props.value!==g})}))))}},9443:function(e,t,n){var a=(0,n(7294).createContext)(void 0);t.Z=a},7963:function(e,t,n){n.r(t),n.d(t,{frontMatter:function(){return l},contentTitle:function(){return s},metadata:function(){return d},toc:function(){return p},default:function(){return m}});var a=n(7462),r=n(3366),o=(n(7294),n(3905)),i=(n(4996),n(5064),n(8215),["components"]),l={id:"dbcontext-multi-database",title:"9.18 \u591a\u79cd\u6570\u636e\u5e93\u64cd\u4f5c",sidebar_label:"9.18 \u591a\u79cd\u6570\u636e\u5e93\u64cd\u4f5c \u2728"},s=void 0,d={unversionedId:"dbcontext-multi-database",id:"dbcontext-multi-database",isDocsHomePage:!1,title:"9.18 \u591a\u79cd\u6570\u636e\u5e93\u64cd\u4f5c",description:"\u5982\u679c\u8fde\u63a5\u5b57\u7b26\u4e32\u662f\u914d\u7f6e\u5728\u81ea\u5b9a\u4e49\u7684 .json \u6587\u4ef6\u4e2d\uff0c\u90a3\u4e48\u5fc5\u987b\u5728 Visual Studio \u4e2d\u914d\u7f6e .json \u53f3\u952e\u5c5e\u6027\uff0c\u8bbe\u7f6e \u590d\u5236 \u8f93\u51fa\u76ee\u5f55\u4e3a \u5982\u679c\u8f83\u65b0\u5219\u590d\u5236\uff0c\u751f\u6210\u64cd\u4f5c\u4e3a \u5185\u5bb9\u3002",source:"@site/docs/dbcontext-multi-database.mdx",sourceDirName:".",slug:"/dbcontext-multi-database",permalink:"/furion/docs/dbcontext-multi-database",editUrl:"https://gitee.com/dotnetchina/Furion/tree/master/handbook/docs/dbcontext-multi-database.mdx",tags:[],version:"current",lastUpdatedBy:"Monk",lastUpdatedAt:1625214683,formattedLastUpdatedAt:"7/2/2021",frontMatter:{id:"dbcontext-multi-database",title:"9.18 \u591a\u79cd\u6570\u636e\u5e93\u64cd\u4f5c",sidebar_label:"9.18 \u591a\u79cd\u6570\u636e\u5e93\u64cd\u4f5c \u2728"},sidebar:"docs",previous:{title:"9.17 Sql \u9ad8\u7ea7\u4ee3\u7406",permalink:"/furion/docs/dbcontext-sql-proxy"},next:{title:"9.19 \u6570\u636e\u5e93\u751f\u6210\u6a21\u578b (Db First)",permalink:"/furion/docs/dbcontext-db-first"}},p=[{value:"9.18.1 Furion \u652f\u6301\u6570\u636e\u5e93\u63d0\u4f9b\u5668",id:"9181-furion-\u652f\u6301\u6570\u636e\u5e93\u63d0\u4f9b\u5668",children:[{value:"9.18.1.1 \u6570\u636e\u5e93\u63d0\u4f9b\u5668\u5bf9\u5e94\u5305",id:"91811-\u6570\u636e\u5e93\u63d0\u4f9b\u5668\u5bf9\u5e94\u5305",children:[]}]},{value:"9.18.2 \u591a\u6570\u636e\u5e93\u670d\u52a1\u6ce8\u518c",id:"9182-\u591a\u6570\u636e\u5e93\u670d\u52a1\u6ce8\u518c",children:[]},{value:"9.18.3 \u5404\u7c7b\u6570\u636e\u5e93\u8fde\u63a5\u5b57\u7b26\u4e32\u914d\u7f6e\u793a\u4f8b",id:"9183-\u5404\u7c7b\u6570\u636e\u5e93\u8fde\u63a5\u5b57\u7b26\u4e32\u914d\u7f6e\u793a\u4f8b",children:[]},{value:"9.18.4 \u591a\u6570\u636e\u5e93\u4f7f\u7528\u65b9\u5f0f",id:"9184-\u591a\u6570\u636e\u5e93\u4f7f\u7528\u65b9\u5f0f",children:[{value:"9.18.4.1 \u5b9e\u4f53\u4ed3\u50a8\u65b9\u5f0f",id:"91841-\u5b9e\u4f53\u4ed3\u50a8\u65b9\u5f0f",children:[]},{value:"9.18.4.2 \u975e\u6cdb\u578b\u4ed3\u50a8\u65b9\u5f0f",id:"91842-\u975e\u6cdb\u578b\u4ed3\u50a8\u65b9\u5f0f",children:[]},{value:"9.18.4.3 Sql \u4ed3\u50a8\u65b9\u5f0f",id:"91843-sql-\u4ed3\u50a8\u65b9\u5f0f",children:[]},{value:"9.18.4.4 \u5b9e\u4f53\u5b9a\u4e49\u65b9\u5f0f",id:"91844-\u5b9e\u4f53\u5b9a\u4e49\u65b9\u5f0f",children:[]},{value:"9.18.4.5 Linq \u51fd\u6570\u65b9\u5f0f",id:"91845-linq-\u51fd\u6570\u65b9\u5f0f",children:[]}]},{value:"9.18.5 SqlServer \u4f4e\u7248\u672c\u652f\u6301\u52a8\u6001\u914d\u7f6e",id:"9185-sqlserver-\u4f4e\u7248\u672c\u652f\u6301\u52a8\u6001\u914d\u7f6e",children:[]},{value:"9.18.6 MySql \u65f6\u533a\u95ee\u9898/\u5c11 8 \u5c0f\u65f6\u95ee\u9898",id:"9186-mysql-\u65f6\u533a\u95ee\u9898\u5c11-8-\u5c0f\u65f6\u95ee\u9898",children:[]},{value:"9.18.7 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"9187-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],c={toc:p};function m(e){var t=e.components,n=(0,r.Z)(e,i);return(0,o.kt)("wrapper",(0,a.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("div",{className:"admonition admonition-warning alert alert--danger"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"}))),"\u8fde\u63a5\u5b57\u7b26\u4e32\u914d\u7f6e\u6ce8\u610f\u4e8b\u9879")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u5982\u679c\u8fde\u63a5\u5b57\u7b26\u4e32\u662f\u914d\u7f6e\u5728\u81ea\u5b9a\u4e49\u7684 ",(0,o.kt)("inlineCode",{parentName:"p"},".json")," \u6587\u4ef6\u4e2d\uff0c\u90a3\u4e48\u5fc5\u987b\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"Visual Studio")," \u4e2d\u914d\u7f6e ",(0,o.kt)("inlineCode",{parentName:"p"},".json")," \u53f3\u952e\u5c5e\u6027\uff0c\u8bbe\u7f6e ",(0,o.kt)("inlineCode",{parentName:"p"},"\u590d\u5236")," \u8f93\u51fa\u76ee\u5f55\u4e3a ",(0,o.kt)("inlineCode",{parentName:"p"},"\u5982\u679c\u8f83\u65b0\u5219\u590d\u5236"),"\uff0c\u751f\u6210\u64cd\u4f5c\u4e3a ",(0,o.kt)("inlineCode",{parentName:"p"},"\u5185\u5bb9"),"\u3002"),(0,o.kt)("p",{parentName:"div"},"\u5426\u5219\u5c31\u4f1a\u63d0\u793a\u627e\u4e0d\u5230\u914d\u7f6e\u6216\u8fde\u63a5\u5b57\u7b26\u4e32\u7684\u9519\u8bef\u3002"))),(0,o.kt)("h2",{id:"9181-furion-\u652f\u6301\u6570\u636e\u5e93\u63d0\u4f9b\u5668"},"9.18.1 ",(0,o.kt)("inlineCode",{parentName:"h2"},"Furion")," \u652f\u6301\u6570\u636e\u5e93\u63d0\u4f9b\u5668"),(0,o.kt)("table",null,(0,o.kt)("thead",{parentName:"table"},(0,o.kt)("tr",{parentName:"thead"},(0,o.kt)("th",{parentName:"tr",align:null},"SqlServer"),(0,o.kt)("th",{parentName:"tr",align:null},"Sqlite"),(0,o.kt)("th",{parentName:"tr",align:null},"Cosmos"),(0,o.kt)("th",{parentName:"tr",align:null},"InMemoryDatabase"),(0,o.kt)("th",{parentName:"tr",align:null},"MySql"),(0,o.kt)("th",{parentName:"tr",align:null},"PostgreSQL"),(0,o.kt)("th",{parentName:"tr",align:null},"Oracle"),(0,o.kt)("th",{parentName:"tr",align:null},"Firebird"),(0,o.kt)("th",{parentName:"tr",align:null},"Dm"))),(0,o.kt)("tbody",{parentName:"table"},(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"\u2714"),(0,o.kt)("td",{parentName:"tr",align:null},"\u2714"),(0,o.kt)("td",{parentName:"tr",align:null},"\u2714"),(0,o.kt)("td",{parentName:"tr",align:null},"\u2714"),(0,o.kt)("td",{parentName:"tr",align:null},"\u2714"),(0,o.kt)("td",{parentName:"tr",align:null},"\u2714"),(0,o.kt)("td",{parentName:"tr",align:null},"\u2714"),(0,o.kt)("td",{parentName:"tr",align:null},"\u2714"),(0,o.kt)("td",{parentName:"tr",align:null},"\u2714")))),(0,o.kt)("h3",{id:"91811-\u6570\u636e\u5e93\u63d0\u4f9b\u5668\u5bf9\u5e94\u5305"},"9.18.1.1 \u6570\u636e\u5e93\u63d0\u4f9b\u5668\u5bf9\u5e94\u5305"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"SqlServer"),"\uff1a",(0,o.kt)("inlineCode",{parentName:"li"},"Microsoft.EntityFrameworkCore.SqlServer")," (\u652f\u6301 SqlServer 2005 +)"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"Sqlite"),"\uff1a",(0,o.kt)("inlineCode",{parentName:"li"},"Microsoft.EntityFrameworkCore.Sqlite")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"Cosmos"),"\uff1a",(0,o.kt)("inlineCode",{parentName:"li"},"Microsoft.EntityFrameworkCore.Cosmos")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"InMemoryDatabase"),"\uff1a",(0,o.kt)("inlineCode",{parentName:"li"},"Microsoft.EntityFrameworkCore.InMemory")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"MySql"),(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"Pomelo.EntityFrameworkCore.MySql"),"\uff1a(\u652f\u6301 MySql 5.x +)"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"MySql.EntityFrameworkCore"),"\uff1a\u652f\u6301 (MySql 8.x +)"))),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"PostgreSQL"),"\uff1a",(0,o.kt)("inlineCode",{parentName:"li"},"Npgsql.EntityFrameworkCore.PostgreSQL")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"Oracle"),"\uff1a",(0,o.kt)("inlineCode",{parentName:"li"},"Oracle.EntityFrameworkCore")," \uff08\u652f\u6301 Oracle 10 +\uff09"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"Firebird"),"\uff1a",(0,o.kt)("inlineCode",{parentName:"li"},"FirebirdSql.EntityFrameworkCore.Firebird")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"Dm"),"\uff1a",(0,o.kt)("inlineCode",{parentName:"li"},"Microsoft.EntityFrameworkCore.Dm"))),(0,o.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u5c0f\u77e5\u8bc6")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u8fd9\u4e9b\u6570\u636e\u5e93\u5305\u5e94\u8be5\u5b89\u88c5\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"Furion.EntityFramework.Core")," \u5c42\u3002\u7279\u6b8a\u60c5\u51b5\u9700\u5b89\u88c5\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"Furion.Core")," \u5c42\u4e2d\uff0c\u5982 ",(0,o.kt)("inlineCode",{parentName:"p"},"Mysql")," ",(0,o.kt)("inlineCode",{parentName:"p"},"HasCharset()")," \u914d\u7f6e\u3002"))),(0,o.kt)("h2",{id:"9182-\u591a\u6570\u636e\u5e93\u670d\u52a1\u6ce8\u518c"},"9.18.2 \u591a\u6570\u636e\u5e93\u670d\u52a1\u6ce8\u518c"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},'// \u6ce8\u518c SqlServer\noptions.AddDbPool(DbProvider.SqlServer);\noptions.AddDbPool($"{DbProvider.SqlServer}@2005"); // \u652f\u6301 2005 \u6570\u636e\u5e93\noptions.AddDbPool($"{DbProvider.SqlServer}@2008"); // \u652f\u6301 2008 \u6570\u636e\u5e93\n\n// \u6ce8\u518c Sqlite\noptions.AddDbPool(DbProvider.Sqlite);\n\n// \u6ce8\u518c Cosmos\noptions.AddDbPool(DbProvider.Cosmos);\n\n// \u6ce8\u518c InMemoryDatabase\noptions.AddDbPool(DbProvider.InMemoryDatabase);\n\n// \u6ce8\u518c MySql\noptions.AddDbPool(DbProvider.MySql);\noptions.AddDbPool($"{DbProvider.MySql}@8.0.22"); // \u53ef\u4ee5\u6307\u5b9a\u7248\u672c\u53f7\noptions.AddDbPool(DbProvider.MySqlOfficial); // \u4f7f\u7528 MySql \u5b98\u65b9\u5305\uff08MySql.EntityFrameworkCore\uff09\n\n// \u6ce8\u518c PostgreSQL\noptions.AddDbPool(DbProvider.Npgsql);\n\n// \u6ce8\u518c Oracle\noptions.AddDbPool(DbProvider.Oracle);\noptions.AddDbPool($"{DbProvider.Oracle}@11"); // \u652f\u6301 Oracle 11 \u7248\u672c\n\n// \u6ce8\u518c Firebird\noptions.AddDbPool(DbProvider.Firebird);\n\n// \u6ce8\u518c Dm\noptions.AddDbPool(DbProvider.Dm);\n')),(0,o.kt)("div",{className:"admonition admonition-caution alert alert--warning"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 16 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"}))),"\u65b0\u7248 SqlServer/MySQL/Oracle \u6ce8\u610f")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},(0,o.kt)("inlineCode",{parentName:"p"},"SqlServer")," \u517c\u5bb9 ",(0,o.kt)("inlineCode",{parentName:"p"},"2005-2008")," \u5199\u6cd5\uff1a"),(0,o.kt)("pre",{parentName:"div"},(0,o.kt)("code",{parentName:"pre",className:"language-cs"},'services.AddDatabaseAccessor(options =>\n{\n options.AddDbPool($"{DbProvider.SqlServer}@2005"); // \u652f\u6301 2005 \u6570\u636e\u5e93\n options.AddDbPool($"{DbProvider.SqlServer}@2008"); // \u652f\u6301 2008 \u6570\u636e\u5e93\n});\n')),(0,o.kt)("p",{parentName:"div"},(0,o.kt)("inlineCode",{parentName:"p"},"MySQL")," \u517c\u5bb9\u65e7\u7248\u672c\uff08\u5e26\u7248\u672c\u53f7\uff09\u5199\u6cd5\uff1a"),(0,o.kt)("pre",{parentName:"div"},(0,o.kt)("code",{parentName:"pre",className:"language-cs"},'services.AddDatabaseAccessor(options =>\n{\n options.AddDbPool($"{DbProvider.MySql}@8.0.22");\n});\n')),(0,o.kt)("p",{parentName:"div"},"\u5982\u679c\u4f7f\u7528\u4e86 ",(0,o.kt)("inlineCode",{parentName:"p"},"MySql.EntityFrameworkCore")," \u5305\uff0c\u5219\u9700\u6539\u4e3a\u4ee5\u4e0b\u6ce8\u518c\uff1a"),(0,o.kt)("pre",{parentName:"div"},(0,o.kt)("code",{parentName:"pre",className:"language-cs"},"services.AddDatabaseAccessor(options =>\n{\n options.AddDbPool(DbProvider.MySqlOfficial);\n});\n")),(0,o.kt)("p",{parentName:"div"},(0,o.kt)("inlineCode",{parentName:"p"},"Oracle")," \u517c\u5bb9 ",(0,o.kt)("inlineCode",{parentName:"p"},"11")," \u7248\u672c"),(0,o.kt)("pre",{parentName:"div"},(0,o.kt)("code",{parentName:"pre",className:"language-cs"},'services.AddDatabaseAccessor(options =>\n{\n options.AddDbPool($"{DbProvider.Oracle}@11");\n});\n')))),(0,o.kt)("h2",{id:"9183-\u5404\u7c7b\u6570\u636e\u5e93\u8fde\u63a5\u5b57\u7b26\u4e32\u914d\u7f6e\u793a\u4f8b"},"9.18.3 \u5404\u7c7b\u6570\u636e\u5e93\u8fde\u63a5\u5b57\u7b26\u4e32\u914d\u7f6e\u793a\u4f8b"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"Sqlite"),"\uff1a",(0,o.kt)("inlineCode",{parentName:"li"},"Data Source=./Furion.db")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"MySql"),"\uff1a",(0,o.kt)("inlineCode",{parentName:"li"},"Data Source=localhost;Database=Furion;User ID=root;Password=000000;pooling=true;port=3306;sslmode=none;CharSet=utf8;")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"SqlServer"),"\uff1a",(0,o.kt)("inlineCode",{parentName:"li"},"Server=localhost;Database=Furion;User=sa;Password=000000;MultipleActiveResultSets=True;")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"Oracle"),"\uff1a",(0,o.kt)("inlineCode",{parentName:"li"},"User Id=orcl;Password=orcl;Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=orcl)))")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"PostgreSQL"),"\uff1a",(0,o.kt)("inlineCode",{parentName:"li"},"PORT=5432;DATABASE=postgres;HOST=127.0.0.1;PASSWORD=postgres;USER ID=postgres;"))),(0,o.kt)("h2",{id:"9184-\u591a\u6570\u636e\u5e93\u4f7f\u7528\u65b9\u5f0f"},"9.18.4 \u591a\u6570\u636e\u5e93\u4f7f\u7528\u65b9\u5f0f"),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u901a\u8fc7\u72ec\u521b\u7684 ",(0,o.kt)("inlineCode",{parentName:"p"},"\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u5b9a\u4f4d\u5668")," \u5b9e\u73b0\u591a\u6570\u636e\u5e93\u7075\u6d3b\u64cd\u4f5c\u5207\u6362\u3002\u53ea\u9700\u8981\u4e3a\u6bcf\u4e00\u79cd\u6570\u636e\u5e93\u7ed1\u5b9a\u552f\u4e00\u7684\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u5b9a\u4f4d\u5668\u5373\u53ef\u3002"),(0,o.kt)("p",null,"\u4ee5\u4e0b\u662f ",(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u652f\u6301\u591a\u6570\u636e\u5e93\u64cd\u4f5c\u7684\u5b9e\u4f8b\uff1a"),(0,o.kt)("h3",{id:"91841-\u5b9e\u4f53\u4ed3\u50a8\u65b9\u5f0f"},"9.18.4.1 \u5b9e\u4f53\u4ed3\u50a8\u65b9\u5f0f"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},"// \u5207\u6362\u5230 MSSQL \u64cd\u4f5c Person\u8868\nvar mssqlRepository = personRepository.Change();\n\n// \u5207\u6362\u5230 MySql \u64cd\u4f5c Person\u8868\nvar mysqlRepository = personRepository.Change();\n\n// \u5207\u6362\u5230 Sqlite \u64cd\u4f5c Person\u8868\nvar sqliteRepository = personRepository.Change();\n\n")),(0,o.kt)("h3",{id:"91842-\u975e\u6cdb\u578b\u4ed3\u50a8\u65b9\u5f0f"},"9.18.4.2 \u975e\u6cdb\u578b\u4ed3\u50a8\u65b9\u5f0f"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},"// \u5207\u6362\u5230 MSSQL \u64cd\u4f5c Person\u8868\nvar mssqlRepository = repository.Change();\n\n// \u5207\u6362\u5230 MySql \u64cd\u4f5c Person\u8868\nvar mysqlRepository = repository.Change();\n\n// \u5207\u6362\u5230 Sqlite \u64cd\u4f5c Person\u8868\nvar sqliteRepository = repository.Change();\n")),(0,o.kt)("h3",{id:"91843-sql-\u4ed3\u50a8\u65b9\u5f0f"},"9.18.4.3 ",(0,o.kt)("inlineCode",{parentName:"h3"},"Sql")," \u4ed3\u50a8\u65b9\u5f0f"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},"// \u5207\u6362\u5230 MSSQL \u64cd\u4f5c Person\u8868\nvar mssqlRepository = sqlRepository.Change();\n\n// \u5207\u6362\u5230 MySql \u64cd\u4f5c Person\u8868\nvar mysqlRepository = sqlRepository.Change();\n\n// \u5207\u6362\u5230 Sqlite \u64cd\u4f5c Person\u8868\nvar sqliteRepository = sqlRepository.Change();\n")),(0,o.kt)("h3",{id:"91844-\u5b9e\u4f53\u5b9a\u4e49\u65b9\u5f0f"},"9.18.4.4 \u5b9e\u4f53\u5b9a\u4e49\u65b9\u5f0f"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},"\n// \u652f\u6301\u4e00\u4e2a\u6570\u636e\u5e93\npublic class Person: IEntity\n{\n // ....\n}\n\n// \u652f\u6301\u591a\u4e2a\u6570\u636e\u5e93\npublic class Person: IEntity\n{\n // ....\n}\n")),(0,o.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u5c0f\u77e5\u8bc6")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u6240\u6709\u7684 ",(0,o.kt)("inlineCode",{parentName:"p"},"\u5b9e\u4f53\u4f9d\u8d56\u63a5\u53e3\u6216\u62bd\u8c61\u7c7b")," \u90fd\u652f\u6301\u6cdb\u578b\u65b9\u5f0f \u6307\u5b9a \u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u5b9a\u4f4d\u5668\uff0c\u6700\u591a\u652f\u6301 ",(0,o.kt)("inlineCode",{parentName:"p"},"8")," \u4e2a\u3002"))),(0,o.kt)("h3",{id:"91845-linq-\u51fd\u6570\u65b9\u5f0f"},"9.18.4.5 Linq \u51fd\u6570\u65b9\u5f0f"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},'public static class QueryFunctions\n{\n [QueryableFunction("FN_GetId", "dbo", typeof(MySqlDbContextLocator), typeof(SqliteDbContextLocator))]\n public static int GetId(int id) => throw new NotSupportedException();\n}\n')),(0,o.kt)("h2",{id:"9185-sqlserver-\u4f4e\u7248\u672c\u652f\u6301\u52a8\u6001\u914d\u7f6e"},"9.18.5 ",(0,o.kt)("inlineCode",{parentName:"h2"},"SqlServer")," \u4f4e\u7248\u672c\u652f\u6301\u52a8\u6001\u914d\u7f6e"),(0,o.kt)("p",null,"\u6b63\u5e38\u60c5\u51b5\u4e0b\uff0c\u53ea\u9700\u8981\u5728\u6ce8\u518c\u7684\u65f6\u5019\u6307\u5b9a ",(0,o.kt)("inlineCode",{parentName:"p"},"@2008")," \u6570\u636e\u5e93\u5373\u53ef\uff0c\u6709\u4e9b\u65f6\u5019\u6211\u4eec\u53ef\u80fd\u9700\u8981\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"DbContext")," \u7684 ",(0,o.kt)("inlineCode",{parentName:"p"},"OnConfigure")," \u4e2d\u914d\u7f6e\uff0c\u8fd9\u4e2a\u65f6\u5019\u5c31\u9700\u8981\u6dfb\u52a0\u4ee5\u4e0b\u4ee3\u7801\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{4}","{4}":!0},"protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)\n{\n optionsBuilder.UseSqlServer(DbProvider.GetConnectionString())\n .ReplaceService();\n base.OnConfiguring(optionsBuilder);\n}\n")),(0,o.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u5c0f\u77e5\u8bc6")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},(0,o.kt)("inlineCode",{parentName:"p"},"DbProvider.GetConnectionString()")," \u662f\u83b7\u53d6\u5bf9\u5e94\u4e0a\u4e0b\u6587\u914d\u7f6e\u7684\u6570\u636e\u5e93\u94fe\u63a5\u5b57\u7b26\u4e32\u3002"))),(0,o.kt)("h2",{id:"9186-mysql-\u65f6\u533a\u95ee\u9898\u5c11-8-\u5c0f\u65f6\u95ee\u9898"},"9.18.6 ",(0,o.kt)("inlineCode",{parentName:"h2"},"MySql")," \u65f6\u533a\u95ee\u9898/\u5c11 8 \u5c0f\u65f6\u95ee\u9898"),(0,o.kt)("p",null,"\u53ef\u67e5\u9605\u76f8\u5173 ",(0,o.kt)("inlineCode",{parentName:"p"},"Issue"),"\uff1a",(0,o.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/I3RSCO"},"https://gitee.com/dotnetchina/Furion/issues/I3RSCO")),(0,o.kt)("h2",{id:"9187-\u53cd\u9988\u4e0e\u5efa\u8bae"},"9.18.7 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,o.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,o.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}m.isMDXComponent=!0},6010:function(e,t,n){function a(e){var t,n,r="";if("string"==typeof e||"number"==typeof e)r+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;t=0||(i[t]=e[t]);return i}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(i[t]=e[t])}return i}var l=a.createContext({}),s=function(e){var n=a.useContext(l),t=n;return e&&(t="function"==typeof e?e(n):r(r({},n),e)),t},m=function(e){var n=s(e.components);return a.createElement(l.Provider,{value:n},e.children)},d={inlineCode:"code",wrapper:function(e){var n=e.children;return a.createElement(a.Fragment,{},n)}},c=a.forwardRef((function(e,n){var t=e.components,i=e.mdxType,o=e.originalType,l=e.parentName,m=p(e,["components","mdxType","originalType","parentName"]),c=s(t),u=i,k=c["".concat(l,".").concat(u)]||c[u]||d[u]||o;return t?a.createElement(k,r(r({ref:n},m),{},{components:t})):a.createElement(k,r({ref:n},m))}));function u(e,n){var t=arguments,i=n&&n.mdxType;if("string"==typeof e||i){var o=t.length,r=new Array(o);r[0]=c;var p={};for(var l in n)hasOwnProperty.call(n,l)&&(p[l]=n[l]);p.originalType=e,p.mdxType="string"==typeof e?e:i,r[1]=p;for(var s=2;s=0&&o<=s&&i<=p&&a>=0)||(n.scrollIntoView({block:"center",behavior:"smooth"}),n.classList.add(l),setTimeout((function(){return n.classList.remove(l)}),2e3))}),150))},x=function(e){var n,t;switch(e.keyCode){case m:var a=w.indexOf(e.target)+1;t=w[a]||w[0];break;case s:var i=w.indexOf(e.target)-1;t=w[i]||w[w.length-1]}null==(n=t)||n.focus()};return a.createElement("div",{className:"tabs-container"},a.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,r.Z)("tabs",{"tabs--block":t},u)},d.map((function(e){var n=e.value,t=e.label;return a.createElement("li",{role:"tab",tabIndex:f===n?0:-1,"aria-selected":f===n,className:(0,r.Z)("tabs__item",p,{"tabs__item--active":f===n}),key:n,ref:function(e){return w.push(e)},onKeyDown:x,onFocus:b,onClick:b},t)}))),n?(0,a.cloneElement)(C.filter((function(e){return e.props.value===f}))[0],{className:"margin-vert--md"}):a.createElement("div",{className:"margin-vert--md"},C.map((function(e,n){return(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==f})}))))}},9443:function(e,n,t){var a=(0,t(7294).createContext)(void 0);n.Z=a},9763:function(e,n,t){t.r(n),t.d(n,{frontMatter:function(){return s},contentTitle:function(){return m},metadata:function(){return d},toc:function(){return c},default:function(){return k}});var a=t(7462),i=t(3366),o=(t(7294),t(3905)),r=(t(4996),t(5064)),p=t(8215),l=["components"],s={id:"configuration",title:"4.1 \u914d\u7f6e",sidebar_label:"4.1 \u914d\u7f6e"},m=void 0,d={unversionedId:"configuration",id:"configuration",isDocsHomePage:!1,title:"4.1 \u914d\u7f6e",description:"\u63a8\u8350\u4f7f\u7528 \u300a4.2 \u9009\u9879\u300b\u4ee3\u66ff\u672c\u7ae0\u8282\u529f\u80fd\u3002\uff08\u4e3a\u4ec0\u4e48\uff09\uff1f",source:"@site/docs/configuration.mdx",sourceDirName:".",slug:"/configuration",permalink:"/furion/docs/configuration",editUrl:"https://gitee.com/dotnetchina/Furion/tree/master/handbook/docs/configuration.mdx",version:"current",lastUpdatedBy:"\u83ab\u51e1",lastUpdatedAt:1628228447,formattedLastUpdatedAt:"8/6/2021",frontMatter:{id:"configuration",title:"4.1 \u914d\u7f6e",sidebar_label:"4.1 \u914d\u7f6e"},sidebar:"docs",previous:{title:"3. \u5e94\u7528\u542f\u52a8 Startup",permalink:"/furion/docs/appstartup"},next:{title:"4.2 \u9009\u9879",permalink:"/furion/docs/options"}},c=[{value:"4.1.1 \u4ec0\u4e48\u662f\u914d\u7f6e",id:"411-\u4ec0\u4e48\u662f\u914d\u7f6e",children:[]},{value:"4.1.2 \u914d\u7f6e\u7684\u4f7f\u7528",id:"412-\u914d\u7f6e\u7684\u4f7f\u7528",children:[{value:"4.1.2.1 \u914d\u7f6e appsettings.json \u4fe1\u606f",id:"4121-\u914d\u7f6e-appsettingsjson-\u4fe1\u606f",children:[]},{value:"4.1.2.2 \u8bfb\u53d6 appsettings.json \u4fe1\u606f",id:"4122-\u8bfb\u53d6-appsettingsjson-\u4fe1\u606f",children:[]},{value:"4.1.2.3 \u5982\u4f55\u9009\u62e9\u8bfb\u53d6\u65b9\u5f0f",id:"4123-\u5982\u4f55\u9009\u62e9\u8bfb\u53d6\u65b9\u5f0f",children:[]}]},{value:"4.1.3 \u8def\u5f84\u7b26 \u67e5\u627e\u8282\u70b9",id:"413-\u8def\u5f84\u7b26-\u67e5\u627e\u8282\u70b9",children:[{value:"4.1.3.1 \u67e5\u627e\u6570\u7ec4\u8282\u70b9",id:"4131-\u67e5\u627e\u6570\u7ec4\u8282\u70b9",children:[]}]},{value:"4.1.4 \u81ea\u5b9a\u4e49\u914d\u7f6e\u6587\u4ef6",id:"414-\u81ea\u5b9a\u4e49\u914d\u7f6e\u6587\u4ef6",children:[{value:"4.1.4.1 \u8bfb\u53d6 emailsetting.json \u914d\u7f6e",id:"4141-\u8bfb\u53d6-emailsettingjson-\u914d\u7f6e",children:[]},{value:"4.1.4.2 \u6392\u9664\u7279\u5b9a\u914d\u7f6e\u6587\u4ef6",id:"4142-\u6392\u9664\u7279\u5b9a\u914d\u7f6e\u6587\u4ef6",children:[]}]},{value:"4.1.5 \u4e0d\u540c\u73af\u5883\u8bfb\u53d6",id:"415-\u4e0d\u540c\u73af\u5883\u8bfb\u53d6",children:[]},{value:"4.1.6 \u914d\u7f6e\u66f4\u6539\u901a\u77e5\uff08\u70ed\u66f4\u65b0\uff09",id:"416-\u914d\u7f6e\u66f4\u6539\u901a\u77e5\uff08\u70ed\u66f4\u65b0\uff09",children:[]},{value:"4.1.7 \u624b\u52a8\u6dfb\u52a0\u914d\u7f6e\u6587\u4ef6",id:"417-\u624b\u52a8\u6dfb\u52a0\u914d\u7f6e\u6587\u4ef6",children:[]},{value:"4.1.8 \u914d\u7f6e\u7684\u4f18\u7f3a\u70b9",id:"418-\u914d\u7f6e\u7684\u4f18\u7f3a\u70b9",children:[]},{value:"4.1.9 \u914d\u7f6e\u4f7f\u7528\u573a\u666f",id:"419-\u914d\u7f6e\u4f7f\u7528\u573a\u666f",children:[]},{value:"4.1.10 \u5b9e\u73b0\u914d\u7f6e\u4e2d\u5fc3",id:"4110-\u5b9e\u73b0\u914d\u7f6e\u4e2d\u5fc3",children:[]},{value:"4.1.11 \u91cd\u8f7d\u914d\u7f6e",id:"4111-\u91cd\u8f7d\u914d\u7f6e",children:[]},{value:"4.1.12 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"4112-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],u={toc:c};function k(e){var n=e.components,t=(0,i.Z)(e,l);return(0,o.kt)("wrapper",(0,a.Z)({},u,t,{components:n,mdxType:"MDXLayout"}),(0,o.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u6e29\u99a8\u63d0\u793a")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u63a8\u8350\u4f7f\u7528 \u300a",(0,o.kt)("a",{parentName:"p",href:"/furion/docs/options"},"4.2 \u9009\u9879"),"\u300b\u4ee3\u66ff\u672c\u7ae0\u8282\u529f\u80fd\u3002\uff08",(0,o.kt)("a",{parentName:"p",href:"#418-%E9%85%8D%E7%BD%AE%E7%9A%84%E4%BC%98%E7%BC%BA%E7%82%B9"},"\u4e3a\u4ec0\u4e48"),"\uff09\uff1f"))),(0,o.kt)("div",{className:"admonition admonition-caution alert alert--warning"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 16 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"}))),"\u81ea\u5b9a\u4e49\u914d\u7f6e\u7279\u522b\u6ce8\u610f")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u5982\uff1a",(0,o.kt)("inlineCode",{parentName:"p"},"xxxx.json"),"\uff0c\u5fc5\u987b\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"VS Studio")," \u4e2d\u53f3\u952e\u5c5e\u6027\u8bbe\u7f6e ",(0,o.kt)("inlineCode",{parentName:"p"},"\u590d\u5236"),"\u8f93\u51fa\u76ee\u5f55\u4e3a",(0,o.kt)("inlineCode",{parentName:"p"},"\u5982\u679c\u8f83\u65b0\u5219\u590d\u5236"),"\uff0c\u751f\u6210\u64cd\u4f5c\u4e3a\uff1a",(0,o.kt)("inlineCode",{parentName:"p"},"\u5185\u5bb9"),"\u3002"),(0,o.kt)("p",{parentName:"div"},"\u5982\u679c ",(0,o.kt)("inlineCode",{parentName:"p"},".json")," \u6587\u4ef6\u914d\u7f6e\u5728\u591a\u4e2a\u9879\u76ee\u5c42\uff0c\u4e5f\u5fc5\u987b\u4fdd\u8bc1\u547d\u540d\u552f\u4e00\uff0c\u4e0d\u7136\u7f16\u8bd1\u540e\u51fa\u73b0\u76f8\u4e92\u8986\u76d6\u7684\u60c5\u51b5\u3002"))),(0,o.kt)("h2",{id:"411-\u4ec0\u4e48\u662f\u914d\u7f6e"},"4.1.1 \u4ec0\u4e48\u662f\u914d\u7f6e"),(0,o.kt)("p",null,"\u7b80\u5355\u6765\u8bf4\uff0c\u914d\u7f6e\u5c06\u7cfb\u7edf\u5e94\u7528\u53ef\u52a8\u6001\u8c03\u914d\u7684\u9009\u9879\u653e\u5728\u7edf\u4e00\u5730\u65b9\u7ba1\u7406\uff0c\u901a\u8fc7\u4e0d\u540c\u7684\u914d\u7f6e\u8ba9\u7cfb\u7edf\u505a\u51fa\u52a8\u6001\u8c03\u6574\u3002"),(0,o.kt)("p",null,"\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"ASP.NET Core")," \u5e94\u7528\u7a0b\u5e8f\u542f\u52a8\u65f6\u9ed8\u8ba4\u52a0\u8f7d ",(0,o.kt)("inlineCode",{parentName:"p"},"\u542f\u52a8\u9879\u76ee")," \u4e0b\u7684 ",(0,o.kt)("inlineCode",{parentName:"p"},"appsettings.json")," \u4f5c\u4e3a\u5e94\u7528\u914d\u7f6e\u3002\u540c\u65f6\u8fd8\u652f\u6301",(0,o.kt)("strong",{parentName:"p"},"\u4e0d\u540c\u7684\u8fd0\u884c\u73af\u5883"),"\u52a0\u8f7d\u5bf9\u5e94\u7684\u914d\u7f6e\u6587\u4ef6\uff0c\u5982\uff1a"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"Development"),"\uff1a\u52a0\u8f7d ",(0,o.kt)("inlineCode",{parentName:"li"},"appsettings.Development.json")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"Staging"),"\uff1a\u52a0\u8f7d ",(0,o.kt)("inlineCode",{parentName:"li"},"appsettings.Staging.json")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"{Environment}"),"\uff1a",(0,o.kt)("inlineCode",{parentName:"li"},"appsettings.{Environment}.json"))),(0,o.kt)("h2",{id:"412-\u914d\u7f6e\u7684\u4f7f\u7528"},"4.1.2 \u914d\u7f6e\u7684\u4f7f\u7528"),(0,o.kt)("p",null,"\u5047\u8bbe\u6211\u4eec\u9700\u8981\u5728\u7cfb\u7edf\u8fd0\u884c\u65f6\u83b7\u53d6",(0,o.kt)("strong",{parentName:"p"},"\u7cfb\u7edf\u540d\u79f0\u3001\u7248\u672c\u53f7\u53ca\u7248\u6743\u4fe1\u606f"),"\uff0c\u8fd9\u4e9b\u4fe1\u606f\u53ef\u80fd\u968f\u65f6\u53d8\u5316\u800c\u4e14\u9700\u8981\u5728\u591a\u4e2a\u5730\u65b9\u4f7f\u7528\u3002\u8fd9\u65f6\u5c31\u9700\u8981\u5c06\u8fd9\u4e9b\u4fe1\u606f\u914d\u7f6e\u8d77\u6765\u3002\u5177\u4f53\u6b65\u9aa4\u5982\u4e0b\uff1a"),(0,o.kt)("h3",{id:"4121-\u914d\u7f6e-appsettingsjson-\u4fe1\u606f"},"4.1.2.1 \u914d\u7f6e ",(0,o.kt)("inlineCode",{parentName:"h3"},"appsettings.json")," \u4fe1\u606f"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-json",metastring:"{2-6}","{2-6}":!0},'{\n "AppInfo": {\n "Name": "Furion",\n "Version": "1.0.0",\n "Company": "Baiqian"\n }\n}\n')),(0,o.kt)("div",{className:"admonition admonition-caution alert alert--warning"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 16 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"}))),"\u7279\u522b\u6ce8\u610f")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},(0,o.kt)("inlineCode",{parentName:"p"},"appsettings.json")," \u590d\u5236\u8f93\u51fa\u76ee\u5f55\u4e3a",(0,o.kt)("inlineCode",{parentName:"p"},"\u5982\u679c\u8f83\u65b0\u5219\u590d\u5236"),"\uff0c\u751f\u6210\u64cd\u4f5c\u4e3a\uff1a",(0,o.kt)("inlineCode",{parentName:"p"},"\u5185\u5bb9"),"\u3002"),(0,o.kt)("p",{parentName:"div"},"\u53e6\u5916\uff0c\u67d0\u4e9b ",(0,o.kt)("inlineCode",{parentName:"p"},"linux")," \u7cfb\u7edf\u4e0d\u652f\u6301\u8bfb\u53d6\u5e26 ",(0,o.kt)("inlineCode",{parentName:"p"},"\u6ce8\u91ca")," \u7684 json \u6587\u4ef6\uff0c\u76f4\u63a5\u8bfb\u53d6\u5c06\u4f1a\u62a5\u9519\u3002\u9700\u8981\u5c06 ",(0,o.kt)("inlineCode",{parentName:"p"},"json")," \u5185\u7684\u6ce8\u91ca\u5168\u90e8 ",(0,o.kt)("inlineCode",{parentName:"p"},"\u5220\u9664")," \u624d\u80fd\u6b63\u5e38\u8bfb\u53d6\u3002"))),(0,o.kt)("h3",{id:"4122-\u8bfb\u53d6-appsettingsjson-\u4fe1\u606f"},"4.1.2.2 \u8bfb\u53d6 ",(0,o.kt)("inlineCode",{parentName:"h3"},"appsettings.json")," \u4fe1\u606f"),(0,o.kt)("p",null,"\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\uff0c\u63d0\u4f9b\u4e86\u4e24\u79cd\u8bfb\u53d6\u65b9\u5f0f\uff1a"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"\u4f9d\u8d56\u6ce8\u5165 ",(0,o.kt)("inlineCode",{parentName:"li"},"IConfiguration")," \u5bf9\u8c61\u8bfb\u53d6"),(0,o.kt)("li",{parentName:"ul"},"\u901a\u8fc7 ",(0,o.kt)("inlineCode",{parentName:"li"},"App.Configuration[path]")," \u8bfb\u53d6")),(0,o.kt)(r.Z,{defaultValue:"App.Configuration[path]",values:[{label:"App.Configuration[path]",value:"App.Configuration[path]"},{label:"\u4f9d\u8d56\u6ce8\u5165\u65b9\u5f0f",value:"\u4f9d\u8d56\u6ce8\u5165\u65b9\u5f0f"}],mdxType:"Tabs"},(0,o.kt)(p.Z,{value:"App.Configuration[path]",mdxType:"TabItem"},(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{11-13}","{11-13}":!0},'using Microsoft.AspNetCore.Mvc;\n\nnamespace Furion.Web.Entry.Controllers\n{\n [Route("api/[controller]")]\n public class DefaultController : ControllerBase\n {\n [HttpGet]\n public string Get()\n {\n return $@"\u540d\u79f0\uff1a{App.Configuration["AppInfo:Name"]}\uff0c\n \u7248\u672c\uff1a{App.Configuration["AppInfo:Version"]}\uff0c\n \u516c\u53f8\uff1a{App.Configuration["AppInfo:Company"]}";\n }\n }\n}\n'))),(0,o.kt)(p.Z,{value:"\u4f9d\u8d56\u6ce8\u5165\u65b9\u5f0f",mdxType:"TabItem"},(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{2,10-15}","{2,10-15}":!0},'using Microsoft.AspNetCore.Mvc;\nusing Microsoft.Extensions.Configuration;\n\nnamespace Furion.Web.Entry.Controllers\n{\n [Route("api/[controller]")]\n public class DefaultController : ControllerBase\n {\n [HttpGet]\n public string Get([FromServices] IConfiguration configuration)\n {\n return $@"\u540d\u79f0\uff1a{configuration["AppInfo:Name"]}\uff0c\n \u7248\u672c\uff1a{configuration["AppInfo:Version"]}\uff0c\n \u516c\u53f8\uff1a{configuration["AppInfo:Company"]}";\n }\n }\n}\n')))),(0,o.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u4f9d\u8d56\u6ce8\u5165\u7684\u65b9\u5f0f")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u901a\u8fc7\u4f9d\u8d56\u6ce8\u5165\u6ce8\u5165\u5b9e\u4f8b\u6709\u51e0\u79cd\u65b9\u5f0f\uff1a"),(0,o.kt)("ul",{parentName:"div"},(0,o.kt)("li",{parentName:"ul"},"\u6784\u9020\u51fd\u6570\u6ce8\u5165\u65b9\u5f0f")),(0,o.kt)("pre",{parentName:"div"},(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{2}","{2}":!0},"private readonly IConfiguration _configuration;\npublic DefaultController(IConfiguration configuration)\n{\n _configuration = configuration;\n}\n")),(0,o.kt)("ul",{parentName:"div"},(0,o.kt)("li",{parentName:"ul"},"\u53c2\u6570\u6ce8\u5165\u65b9\u5f0f ",(0,o.kt)("inlineCode",{parentName:"li"},"[FromServices]"))),(0,o.kt)("pre",{parentName:"div"},(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1}","{1}":!0},"public string Get([FromServices] IConfiguration configuration)\n{\n}\n")),(0,o.kt)("ul",{parentName:"div"},(0,o.kt)("li",{parentName:"ul"},"\u5c5e\u6027\u6ce8\u5165\u65b9\u5f0f")),(0,o.kt)("pre",{parentName:"div"},(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1}","{1}":!0},"public IConfiguration Configuration { get; set; }\n")),(0,o.kt)("p",{parentName:"div"},"\u60f3\u4e86\u89e3\u66f4\u591a\u5173\u4e8e\u300a",(0,o.kt)("a",{parentName:"p",href:"https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/dependency-injection?view=aspnetcore-3.1"},"ASP.NET Core - \u4f9d\u8d56\u6ce8\u5165"),"\u300b \u77e5\u8bc6"))),(0,o.kt)("h3",{id:"4123-\u5982\u4f55\u9009\u62e9\u8bfb\u53d6\u65b9\u5f0f"},"4.1.2.3 \u5982\u4f55\u9009\u62e9\u8bfb\u53d6\u65b9\u5f0f"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"\u5728\u53ef\u4f9d\u8d56\u6ce8\u5165\u7c7b\u4e2d\uff0c\u4f9d\u8d56\u6ce8\u5165 ",(0,o.kt)("inlineCode",{parentName:"li"},"IConfiguration")," \u8bfb\u53d6"),(0,o.kt)("li",{parentName:"ul"},"\u5728\u9759\u6001\u7c7b/\u975e\u4f9d\u8d56\u6ce8\u5165\u7c7b\u4e2d\uff0c\u9009\u62e9 ",(0,o.kt)("inlineCode",{parentName:"li"},"App.Configuration[path]")," \u8bfb\u53d6")),(0,o.kt)("h2",{id:"413-\u8def\u5f84\u7b26-\u67e5\u627e\u8282\u70b9"},"4.1.3 ",(0,o.kt)("inlineCode",{parentName:"h2"},"\u8def\u5f84\u7b26")," \u67e5\u627e\u8282\u70b9"),(0,o.kt)("p",null,"\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"ASP.NET Core")," \u4e2d\uff0c\u914d\u7f6e\u91c7\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},":")," \u5206\u9694\u7b26\u6765\u8bfb\u53d6\u5206\u5c42\u914d\u7f6e\u6570\u636e\u3002\u5982\u4e0a\u8ff0\u4f8b\u5b50\u4e2d\u7684 ",(0,o.kt)("inlineCode",{parentName:"p"},"AppInfo:Name"),"\u3002\u5982\u6709\u66f4\u591a\u5c42\u7ea7\u6570\u636e\u5219\u53ea\u9700\u8981\u901a\u8fc7 ",(0,o.kt)("inlineCode",{parentName:"p"},":")," \u8fdb\u5165\u4e0b\u4e00\u5c42\u8282\u70b9\u5373\u53ef\u3002"),(0,o.kt)("p",null,"\u5047\u8bbe\u6211\u4eec\u6709\u4ee5\u4e0b\u914d\u7f6e\u4fe1\u606f\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-json",metastring:"{5-12}","{5-12}":!0},'{\n "AppInfo": {\n "Name": "Furion",\n "Version": "1.0.0",\n "Company": {\n "Name": "Baiqian",\n "Address": {\n "City": "\u4e2d\u56fd",\n "Province": "\u5e7f\u4e1c\u7701",\n "Detail": "\u4e2d\u5c71\u5e02\u4e1c\u533a\u7d2b\u9a6c\u516c\u56ed\u897f\u95e8"\n }\n }\n }\n}\n')),(0,o.kt)(r.Z,{defaultValue:"two",values:[{label:"\u8bfb\u53d6\u7b2c\u4e8c\u5c42",value:"two"},{label:"\u8bfb\u53d6\u7b2c\u4e09\u5c42",value:"three"},{label:"\u8bfb\u53d6\u7b2c\u56db\u5c42",value:"four"},{label:"\u8bfb\u53d6\u7b2cN\u5c42",value:"n"}],mdxType:"Tabs"},(0,o.kt)(p.Z,{value:"two",mdxType:"TabItem"},(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},'var companyName = App.Configuration["AppInfo:Name"]; // => Furion\n'))),(0,o.kt)(p.Z,{value:"three",mdxType:"TabItem"},(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},'var companyName = App.Configuration["AppInfo:Company:Name"]; // => Baiqian\n'))),(0,o.kt)(p.Z,{value:"four",mdxType:"TabItem"},(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},'var companyName = App.Configuration["AppInfo:Company:Address:Detail"]; // => \u4e2d\u5c71\u5e02\u4e1c\u533a\u7d2b\u9a6c\u516c\u56ed\u897f\u95e8\n'))),(0,o.kt)(p.Z,{value:"n",mdxType:"TabItem"},(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},'var companyName = App.Configuration["AppInfo:Tier2:Tier3:Tier4...Tiern1:Tiern3..."]; // => \u4e2d\u5c71\u5e02\u4e1c\u533a\u7d2b\u9a6c\u516c\u56ed\u897f\u95e8\n')))),(0,o.kt)("h3",{id:"4131-\u67e5\u627e\u6570\u7ec4\u8282\u70b9"},"4.1.3.1 \u67e5\u627e\u6570\u7ec4\u8282\u70b9"),(0,o.kt)("p",null,"\u6709\u4e9b\u65f6\u5019\u6211\u4eec\u9700\u8981\u6216\u8005\u6570\u7ec4\u7279\u5b9a\u7684\u67d0\u4e9b\uff0c\u53ef\u4ee5\u901a\u8fc7 ",(0,o.kt)("inlineCode",{parentName:"p"},'App.Configuration["array:0"]')," \u83b7\u53d6\uff0c",(0,o.kt)("inlineCode",{parentName:"p"},"0")," \u662f\u7d22\u5f15\u6570\u5b57\u3002"),(0,o.kt)("h2",{id:"414-\u81ea\u5b9a\u4e49\u914d\u7f6e\u6587\u4ef6"},"4.1.4 \u81ea\u5b9a\u4e49\u914d\u7f6e\u6587\u4ef6"),(0,o.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"XML \u914d\u7f6e\u8bf4\u660e")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},(0,o.kt)("inlineCode",{parentName:"p"},"Furion v2.8.0")," \u7248\u672c\u79fb\u9664\u4e86 ",(0,o.kt)("inlineCode",{parentName:"p"},".xml")," \u6587\u4ef6\u81ea\u52a8\u626b\u63cf\u914d\u7f6e\u4e86\uff0c\u6539\u4e3a\u624b\u52a8\u6dfb\u52a0\u914d\u7f6e\u3002"))),(0,o.kt)("p",null,"\u5927\u591a\u60c5\u51b5\u4e0b\uff0c\u6211\u4eec\u7684\u914d\u7f6e\u53ea\u9700\u8981\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"appsettings.json")," \u4e2d\u914d\u7f6e\u5373\u53ef\uff0c\u4f46\u4e00\u4e9b\u7279\u6b8a\u60c5\u51b5\u4e0b\uff0c\u6211\u4eec\u5e0c\u671b\u67d0\u4e9b\u7ec4\u4ef6\u6216\u529f\u80fd\u62e5\u6709\u72ec\u7acb\u7684\u914d\u7f6e\uff0c\u8fd9\u4e2a\u65f6\u5019\u5c31\u9700\u8981\u7528\u5230\u81ea\u5b9a\u4e49\u914d\u7f6e\uff0c",(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u76ee\u524d\u652f\u6301 ",(0,o.kt)("inlineCode",{parentName:"p"},".json")," \u548c ",(0,o.kt)("inlineCode",{parentName:"p"},".xml")," \u4e24\u79cd\u65b9\u5f0f\u914d\u7f6e\uff0c\u5982\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-json",metastring:'{2-13} title="Furion.Web.Entry/emailsetting.json"',"{2-13}":!0,title:'"Furion.Web.Entry/emailsetting.json"'},'{\n "outlook": {\n "smtp": {\n "server": "smtp.office365.com",\n "port": "587",\n "ssl": "STARTTLS"\n },\n "pop": {\n "server": "outlook.office365.com",\n "port": "995",\n "ssl": "TLS"\n }\n }\n}\n')),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-xml"},'\n\n MyXMLFile Value\n \n Title from MyXMLFile\n Name from MyXMLFile\n \n \n \n Information\n Warning\n \n \n\n')),(0,o.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"xml \u914d\u7f6e\u4e8b\u9879")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u5982\u679c\u91c7\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"xml")," \u914d\u7f6e\uff0c\u90a3\u4e48\u6587\u4ef6\u540d\u5fc5\u987b\u4ee5 ",(0,o.kt)("inlineCode",{parentName:"p"},".config.xml")," \u7ed3\u5c3e\uff08\u4e0d\u533a\u5206\u5927\u5c0f\u5199\uff09\u3002"))),(0,o.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u8bf4\u660e")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4f1a\u5728\u542f\u52a8\u65f6\u81ea\u52a8\u626b\u63cf\u6bcf\u4e00\u4e2a\u9879\u76ee\u5c42\u6839\u76ee\u5f55\u4e0b\u7684 ",(0,o.kt)("inlineCode",{parentName:"p"},"*.json")," \u6587\u4ef6\u52a0\u5165\u914d\u7f6e\u4e2d\uff0c\u6240\u4ee5\u65e0\u9700\u624b\u5de5\u914d\u7f6e\u3002"),(0,o.kt)("p",{parentName:"div"},"\u65b0\u589e ",(0,o.kt)("inlineCode",{parentName:"p"},"*.json")," \u6587\u4ef6\u7684\u5c5e\u6027 ",(0,o.kt)("inlineCode",{parentName:"p"},"\u590d\u5236\u5230\u8f93\u51fa\u76ee\u5f55")," \u8bbe\u7f6e\u4e3a\u59cb\u7ec8\u590d\u5236\u6216\u8f83\u65b0\u590d\u5236\uff0c\u5426\u5219\u4e0d\u4f1a\u8f7d\u5165\u3002\u53e6\u5916\u914d\u7f6e\u6587\u4ef6\u4e0d\u80fd\u51fa\u73b0\u91cd\u540d\uff0c\u4e5f\u5c31\u662f\u4fdd\u8bc1\u6574\u4e2a\u9879\u76ee\u4e2d\u914d\u7f6e\u6587\u4ef6\u540d\u5b57\u552f\u4e00\u3002\u6bd4\u5982\u4e0d\u80fd\u5728\u975e ",(0,o.kt)("inlineCode",{parentName:"p"},"Web")," \u5176\u4ed6\u5c42\u5b9a\u4e49 ",(0,o.kt)("inlineCode",{parentName:"p"},"appsettings.json")," \u6587\u4ef6\u3002"),(0,o.kt)("p",{parentName:"div"},"\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"v2.16.7+")," \u7248\u672c\u7248\u672c\u4e4b\u540e\uff0c\u652f\u6301\u81ea\u5b9a\u4e49\u914d\u7f6e\u626b\u63cf\u76ee\u5f55\uff1a"),(0,o.kt)("pre",{parentName:"div"},(0,o.kt)("code",{parentName:"pre",className:"language-json"},'{\n "ConfigurationScanDirectories": ["\u76ee\u5f551\u540d\u79f0", "\u76ee\u5f551\u540d\u79f0/\u5b50\u76ee\u5f55\u540d\u79f0"]\n}\n')))),(0,o.kt)("p",null,"\u540c\u65f6 ",(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u63d0\u4f9b\u4e86\u975e\u5e38\u7075\u6d3b\u7684\u65b9\u5f0f\u652f\u6301\u81ea\u5b9a\u4e49\u914d\u7f6e\u6587\u4ef6\u8bfb\u53d6\uff0c\u5982\uff1a"),(0,o.kt)("h3",{id:"4141-\u8bfb\u53d6-emailsettingjson-\u914d\u7f6e"},"4.1.4.1 \u8bfb\u53d6 ",(0,o.kt)("inlineCode",{parentName:"h3"},"emailsetting.json")," \u914d\u7f6e"),(0,o.kt)("p",null,"\u8bfb\u53d6\u81ea\u5b9a\u4e49\u914d\u7f6e\u6587\u4ef6\u548c\u8bfb\u53d6 ",(0,o.kt)("inlineCode",{parentName:"p"},"appsettings.json")," \u4e00\u81f4\uff0c\u7cfb\u7edf\u4f1a\u81ea\u52a8\u4ece\u591a\u4e2a\u914d\u7f6e\u6587\u4ef6\u4e2d\u8bfb\u53d6\u8f93\u5165\uff0c\u5982\uff1a"),(0,o.kt)(r.Z,{defaultValue:"jtl",values:[{label:"App.Configuration[path]",value:"jtl"},{label:"\u4f9d\u8d56\u6ce8\u5165\u65b9\u5f0f",value:"ylzr"}],mdxType:"Tabs"},(0,o.kt)(p.Z,{value:"jtl",mdxType:"TabItem"},(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},'var smtpServer = App.Configuration["outlook:smtp:server"]; // => smtp.office365.com\n'))),(0,o.kt)(p.Z,{value:"ylzr",mdxType:"TabItem"},(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},'var smtpServer = _configuration["outlook:smtp:server"]; // => smtp.office365.com\n')))),(0,o.kt)("h3",{id:"4142-\u6392\u9664\u7279\u5b9a\u914d\u7f6e\u6587\u4ef6"},"4.1.4.2 \u6392\u9664\u7279\u5b9a\u914d\u7f6e\u6587\u4ef6"),(0,o.kt)("p",null,"\u6709\u4e9b\u65f6\u5019\uff0c\u6211\u4eec\u4e0d\u9700\u8981 ",(0,o.kt)("inlineCode",{parentName:"p"},".json")," \u6216 ",(0,o.kt)("inlineCode",{parentName:"p"},".xml")," \u81ea\u52a8\u8f7d\u5165\u914d\u7f6e\u4e2d\uff0c\u6211\u4eec\u53ea\u9700\u8981\u5728\u542f\u52a8\u5c42 ",(0,o.kt)("inlineCode",{parentName:"p"},"appsettings.json")," \u4e2d\u6dfb\u52a0 ",(0,o.kt)("inlineCode",{parentName:"p"},"IgnoreConfigurationFiles")," \u8282\u70b9\u5373\u53ef\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-json"},'{\n "IgnoreConfigurationFiles": ["runtime.json"]\n}\n')),(0,o.kt)("h2",{id:"415-\u4e0d\u540c\u73af\u5883\u8bfb\u53d6"},"4.1.5 \u4e0d\u540c\u73af\u5883\u8bfb\u53d6"),(0,o.kt)("p",null,"\u5728\u5b9e\u9645\u5e94\u7528\u5f00\u53d1\u4e2d\uff0c\u6211\u4eec\u53ef\u80fd\u4f1a\u6839\u636e\u4e0d\u540c\u7684\u73af\u5883\u52a0\u8f7d\u4e0d\u540c\u7684\u914d\u7f6e\u6587\u4ef6\uff0c\u5982 ",(0,o.kt)("inlineCode",{parentName:"p"},"\u6570\u636e\u5e93\u8fde\u63a5\u5b57\u7b26\u4e32"),"\u3002"),(0,o.kt)("p",null,"\u8fd9\u65f6\u6211\u4eec\u53ea\u9700\u8981\u9075\u5faa\u7279\u5b9a\u547d\u540d\u89c4\u8303 ",(0,o.kt)("inlineCode",{parentName:"p"},"{name}.{Environment}.json")," \u5373\u53ef\u3002\u5982\uff1a"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"appsettings.Development.json")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"appsettings.Staging.json")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"appsettings.Production.json")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"emailsetting.Development.json")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"emailsetting.Staging.json")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"emailsetting.Production.json"))),(0,o.kt)("p",null,"\u8fd9\u65f6\uff0c",(0,o.kt)("inlineCode",{parentName:"p"},"ASP.NET Core")," \u4f1a\u5728\u5e94\u7528\u542f\u52a8\u65f6\u81ea\u52a8\u52a0\u8f7d\u4e0d\u540c\u73af\u5883\u7684\u914d\u7f6e\u6587\u4ef6\u3002"),(0,o.kt)("h2",{id:"416-\u914d\u7f6e\u66f4\u6539\u901a\u77e5\uff08\u70ed\u66f4\u65b0\uff09"},"4.1.6 \u914d\u7f6e\u66f4\u6539\u901a\u77e5\uff08",(0,o.kt)("inlineCode",{parentName:"h2"},"\u70ed\u66f4\u65b0"),"\uff09"),(0,o.kt)("p",null,"\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},".NET Core")," \u5e94\u7528\u7a0b\u5e8f\u4e2d\uff0c\u914d\u7f6e\u652f\u6301\u66f4\u6539\u901a\u77e5\uff0c\u4e5f\u5c31\u662f\u70ed\u66f4\u65b0\u64cd\u4f5c\u3002",(0,o.kt)("strong",{parentName:"p"},"\u4e00\u65e6\u76d1\u542c\u5230 ",(0,o.kt)("inlineCode",{parentName:"strong"},"appsetting.json")," \u6216\u81ea\u5b9a\u4e49\u914d\u7f6e\u6587\u4ef6\u53d1\u751f\u53d8\u52a8\uff0c\u5c31\u4f1a\u89e6\u53d1 ",(0,o.kt)("inlineCode",{parentName:"strong"},"OnChange")," \u65b9\u6cd5"),"\u3002\u4ee3\u7801\u5982\u4e0b\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{2,4-5}","{2,4-5}":!0},'var appInfoConfiguration = App.Configuration.GetSection("AppInfo");\nChangeToken.OnChange(() => App.Configuration.GetReloadToken(), () =>\n{\n var name = appInfoConfiguration["Name"]; // \u5b9e\u65f6\u7684\u6700\u65b0\u503c\n var version = appInfoConfiguration["Version"]; // \u5b9e\u65f6\u7684\u6700\u65b0\u503c\n});\n')),(0,o.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u76d1\u542c\u5bf9\u8c61")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u5982\u679c\u76d1\u542c\u5168\u5c40\u914d\u7f6e\u6587\u4ef6\u4f20\u5165 ",(0,o.kt)("inlineCode",{parentName:"p"},"App.Configuration.GetReloadToken()"),"\uff0c\u5982\u679c\u53ea\u9700\u8981\u76d1\u542c\u7279\u5b9a\u8282\u70b9\uff0c\u4f20\u5165 ",(0,o.kt)("inlineCode",{parentName:"p"},'App.Configuration.GetSection("AppInfo")')))),(0,o.kt)("h2",{id:"417-\u624b\u52a8\u6dfb\u52a0\u914d\u7f6e\u6587\u4ef6"},"4.1.7 \u624b\u52a8\u6dfb\u52a0\u914d\u7f6e\u6587\u4ef6"),(0,o.kt)("p",null,"\u6709\u4e9b\u65f6\u5019\uff0c\u6211\u4eec\u7684\u914d\u7f6e\u6587\u4ef6\u6ca1\u6709\u653e\u5728\u9879\u76ee\u7684\u6839\u76ee\u5f55\u4e0b\uff0c\u8fd9\u65f6\u5019\u6211\u4eec\u9700\u8981\u624b\u52a8\u8f7d\u5165\u81ea\u5b9a\u4e49\u914d\u7f6e\u6587\u4ef6\uff0c\u53ea\u9700\u8981\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"Program.cs")," \u4e2d\u52a0\u8f7d\u5373\u53ef\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{10,13}","{10,13}":!0},'public class Program\n{\n public static void Main(string[] args)\n {\n CreateHostBuilder(args).Build().Run();\n }\n\n public static IHostBuilder CreateHostBuilder(string[] args) =>\n Host.CreateDefaultBuilder(args)\n .ConfigureAppConfiguration((hostingContext, config) =>\n {\n // \u52a0\u8f7d\u81ea\u5b9a\u4e49\u914d\u7f6e\n config.AddJsonFile("MyConfig.json", optional: true, reloadOnChange: true);\n })\n .ConfigureWebHostDefaults(webBuilder =>\n {\n webBuilder.UseStartup();\n });\n}\n')),(0,o.kt)("div",{className:"admonition admonition-info alert alert--info"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u8865\u5145\u8bf4\u660e")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("ul",{parentName:"div"},(0,o.kt)("li",{parentName:"ul"},"\u83b7\u53d6\u9879\u76ee\u76ee\u5f55\uff1a",(0,o.kt)("inlineCode",{parentName:"li"},"AppContext.BaseDirectory")),(0,o.kt)("li",{parentName:"ul"},"\u83b7\u53d6\u7f51\u7ad9\u6839\u76ee\u5f55\uff1a",(0,o.kt)("inlineCode",{parentName:"li"},"Directory.GetCurrentDirectory()"))))),(0,o.kt)("h2",{id:"418-\u914d\u7f6e\u7684\u4f18\u7f3a\u70b9"},"4.1.8 \u914d\u7f6e\u7684\u4f18\u7f3a\u70b9"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},"\u4f18\u70b9"),(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"\u80fd\u591f\u5728\u7cfb\u7edf\u8fd0\u884c\u65f6\u5feb\u901f\u8bfb\u53d6"),(0,o.kt)("li",{parentName:"ul"},"\u65e0\u9700\u989d\u5916\u914d\u7f6e"))),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},"\u7f3a\u70b9"),(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"\u5b58\u5728\u91cd\u590d\u8bfb\u53d6"),(0,o.kt)("li",{parentName:"ul"},"\u901a\u8fc7\u786c\u7f16\u7801\u5b57\u7b26\u4e32\u8bfb\u53d6\uff0c\u5bb9\u6613\u51fa\u9519"),(0,o.kt)("li",{parentName:"ul"},"\u4e0d\u80fd\u8bbe\u7f6e\u9ed8\u8ba4\u503c"),(0,o.kt)("li",{parentName:"ul"},"\u4e0d\u80fd\u5728\u8fd0\u884c\u73af\u5883\u4e2d\u52a8\u6001\u914d\u7f6e"),(0,o.kt)("li",{parentName:"ul"},"\u4e0d\u80fd\u9a8c\u8bc1\u914d\u7f6e\u6709\u6548\u6027"),(0,o.kt)("li",{parentName:"ul"},"\u4e0d\u652f\u6301\u66f4\u6539\u901a\u77e5")))),(0,o.kt)("h2",{id:"419-\u914d\u7f6e\u4f7f\u7528\u573a\u666f"},"4.1.9 \u914d\u7f6e\u4f7f\u7528\u573a\u666f"),(0,o.kt)("p",null,"\u5982\u679c\u53ea\u9700\u8981",(0,o.kt)("strong",{parentName:"p"},"\u4e00\u6b21\u6027\u8bfb\u53d6"),"\u914d\u7f6e\u4fe1\u606f\uff0c\u5219\u4f7f\u7528\u914d\u7f6e\uff0c\u5426\u5219\u5e94\u8be5\u4f7f\u7528 \u300a",(0,o.kt)("a",{parentName:"p",href:"/furion/docs/options"},"4.2 \u9009\u9879"),"\u300b\u4ee3\u66ff\u3002"),(0,o.kt)("h2",{id:"4110-\u5b9e\u73b0\u914d\u7f6e\u4e2d\u5fc3"},"4.1.10 \u5b9e\u73b0\u914d\u7f6e\u4e2d\u5fc3"),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"ASP.NET Core")," \u9664\u4e86\u901a\u8fc7\u914d\u7f6e\u6587\u4ef6\u8bfb\u53d6\u914d\u7f6e\u4fe1\u606f\u5916\uff0c\u8fd8\u652f\u6301\u81ea\u5b9a\u4e49 ",(0,o.kt)("inlineCode",{parentName:"p"},"\u914d\u7f6e\u63d0\u4f9b\u7a0b\u5e8f"),"\uff0c\u901a\u8fc7 ",(0,o.kt)("inlineCode",{parentName:"p"},"\u914d\u7f6e\u63d0\u4f9b\u7a0b\u5e8f")," \u53ef\u4ee5\u5b9e\u73b0\u914d\u7f6e\u4e2d\u5fc3\uff0c\u6bd4\u5982\u901a\u8fc7\u6570\u636e\u5e93\u63d0\u4f9b\u914d\u7f6e\u3002"),(0,o.kt)("p",null,"\u5177\u4f53\u5b9e\u73b0\u67e5\u770b\u5fae\u8f6f\u5b98\u65b9\u6587\u6863\uff1a",(0,o.kt)("a",{parentName:"p",href:"https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/configuration/?view=aspnetcore-5.0#custom-configuration-provider"},"https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/configuration/?view=aspnetcore-5.0#custom-configuration-provider")),(0,o.kt)("p",null,"\u91c7\u7528\u8be5\u65b9\u5f0f\u540e\uff0c\u5982\u679c\u6570\u636e\u53d1\u751f\u6539\u53d8\u53ef\u8c03\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"App.Configuration.Reload()")," \u5237\u65b0\u5373\u53ef\u3002"),(0,o.kt)("h2",{id:"4111-\u91cd\u8f7d\u914d\u7f6e"},"4.1.11 \u91cd\u8f7d\u914d\u7f6e"),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u4f1a\u5728\u5e94\u7528\u542f\u52a8\u7684\u65f6\u5019\u5bf9 ",(0,o.kt)("inlineCode",{parentName:"p"},"IConfiguration")," \u8fdb\u884c\u9759\u6001\u7f13\u5b58\uff0c\u5982\u679c\u4f7f\u7528\u4e86 ",(0,o.kt)("inlineCode",{parentName:"p"},"App.Configuration")," \u9759\u6001\u5c5e\u6027\u4e14\u914d\u7f6e\u6570\u636e\u5df2\u53d1\u751f\u53d8\u66f4\uff0c\u5219\u8c03\u7528\u4ee5\u4e0b\u65b9\u6cd5\u5237\u65b0\u5373\u53ef\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},"App.Configuration.Reload();\n")),(0,o.kt)("h2",{id:"4112-\u53cd\u9988\u4e0e\u5efa\u8bae"},"4.1.12 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,o.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,o.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))),(0,o.kt)("hr",null),(0,o.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e86\u89e3\u66f4\u591a")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u60f3\u4e86\u89e3\u66f4\u591a ",(0,o.kt)("inlineCode",{parentName:"p"},"\u914d\u7f6e")," \u77e5\u8bc6\u53ef\u67e5\u9605 ",(0,o.kt)("a",{parentName:"p",href:"https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/configuration/?view=aspnetcore-5.0"},"ASP.NET Core - \u914d\u7f6e")," \u7ae0\u8282\u3002"))))}k.isMDXComponent=!0},6010:function(e,n,t){function a(e){var n,t,i="";if("string"==typeof e||"number"==typeof e)i+=e;else if("object"==typeof e)if(Array.isArray(e))for(n=0;n=0||(i[t]=e[t]);return i}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(i[t]=e[t])}return i}var p=a.createContext({}),s=function(e){var n=a.useContext(p),t=n;return e&&(t="function"==typeof e?e(n):r(r({},n),e)),t},m=function(e){var n=s(e.components);return a.createElement(p.Provider,{value:n},e.children)},d={inlineCode:"code",wrapper:function(e){var n=e.children;return a.createElement(a.Fragment,{},n)}},c=a.forwardRef((function(e,n){var t=e.components,i=e.mdxType,o=e.originalType,p=e.parentName,m=l(e,["components","mdxType","originalType","parentName"]),c=s(t),u=i,k=c["".concat(p,".").concat(u)]||c[u]||d[u]||o;return t?a.createElement(k,r(r({ref:n},m),{},{components:t})):a.createElement(k,r({ref:n},m))}));function u(e,n){var t=arguments,i=n&&n.mdxType;if("string"==typeof e||i){var o=t.length,r=new Array(o);r[0]=c;var l={};for(var p in n)hasOwnProperty.call(n,p)&&(l[p]=n[p]);l.originalType=e,l.mdxType="string"==typeof e?e:i,r[1]=l;for(var s=2;s=0&&o<=s&&i<=l&&a>=0)||(n.scrollIntoView({block:"center",behavior:"smooth"}),n.classList.add(p),setTimeout((function(){return n.classList.remove(p)}),2e3))}),150))},x=function(e){var n,t=null;switch(e.key){case"ArrowRight":var a=b.indexOf(e.target)+1;t=b[a]||b[0];break;case"ArrowLeft":var i=b.indexOf(e.target)-1;t=b[i]||b[b.length-1]}null==(n=t)||n.focus()};return a.createElement("div",{className:"tabs-container"},a.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,r.Z)("tabs",{"tabs--block":i},c)},k.map((function(e){var n=e.value,t=e.label;return a.createElement("li",{role:"tab",tabIndex:C===n?0:-1,"aria-selected":C===n,className:(0,r.Z)("tabs__item",l,{"tabs__item--active":C===n}),key:n,ref:function(e){return b.push(e)},onKeyDown:x,onFocus:A,onClick:A},null!=t?t:n)}))),t?(0,a.cloneElement)(u.filter((function(e){return e.props.value===C}))[0],{className:"margin-vert--md"}):a.createElement("div",{className:"margin-vert--md"},u.map((function(e,n){return(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==C})}))))}},9443:function(e,n,t){var a=(0,t(7294).createContext)(void 0);n.Z=a},9326:function(e,n,t){t.r(n),t.d(n,{frontMatter:function(){return s},contentTitle:function(){return m},metadata:function(){return d},toc:function(){return c},default:function(){return k}});var a=t(7462),i=t(3366),o=(t(7294),t(3905)),r=(t(4996),t(5064)),l=t(8215),p=["components"],s={id:"configuration",title:"4.1 \u914d\u7f6e",sidebar_label:"4.1 \u914d\u7f6e"},m=void 0,d={unversionedId:"configuration",id:"configuration",isDocsHomePage:!1,title:"4.1 \u914d\u7f6e",description:"\u63a8\u8350\u4f7f\u7528 \u300a4.2 \u9009\u9879\u300b\u4ee3\u66ff\u672c\u7ae0\u8282\u529f\u80fd\u3002\uff08\u4e3a\u4ec0\u4e48\uff09\uff1f",source:"@site/docs/configuration.mdx",sourceDirName:".",slug:"/configuration",permalink:"/furion/docs/configuration",editUrl:"https://gitee.com/dotnetchina/Furion/tree/master/handbook/docs/configuration.mdx",tags:[],version:"current",lastUpdatedBy:"\u83ab\u51e1",lastUpdatedAt:1628228447,formattedLastUpdatedAt:"8/6/2021",frontMatter:{id:"configuration",title:"4.1 \u914d\u7f6e",sidebar_label:"4.1 \u914d\u7f6e"},sidebar:"docs",previous:{title:"3. \u5e94\u7528\u542f\u52a8 Startup",permalink:"/furion/docs/appstartup"},next:{title:"4.2 \u9009\u9879",permalink:"/furion/docs/options"}},c=[{value:"4.1.1 \u4ec0\u4e48\u662f\u914d\u7f6e",id:"411-\u4ec0\u4e48\u662f\u914d\u7f6e",children:[]},{value:"4.1.2 \u914d\u7f6e\u7684\u4f7f\u7528",id:"412-\u914d\u7f6e\u7684\u4f7f\u7528",children:[{value:"4.1.2.1 \u914d\u7f6e appsettings.json \u4fe1\u606f",id:"4121-\u914d\u7f6e-appsettingsjson-\u4fe1\u606f",children:[]},{value:"4.1.2.2 \u8bfb\u53d6 appsettings.json \u4fe1\u606f",id:"4122-\u8bfb\u53d6-appsettingsjson-\u4fe1\u606f",children:[]},{value:"4.1.2.3 \u5982\u4f55\u9009\u62e9\u8bfb\u53d6\u65b9\u5f0f",id:"4123-\u5982\u4f55\u9009\u62e9\u8bfb\u53d6\u65b9\u5f0f",children:[]}]},{value:"4.1.3 \u8def\u5f84\u7b26 \u67e5\u627e\u8282\u70b9",id:"413-\u8def\u5f84\u7b26-\u67e5\u627e\u8282\u70b9",children:[{value:"4.1.3.1 \u67e5\u627e\u6570\u7ec4\u8282\u70b9",id:"4131-\u67e5\u627e\u6570\u7ec4\u8282\u70b9",children:[]}]},{value:"4.1.4 \u81ea\u5b9a\u4e49\u914d\u7f6e\u6587\u4ef6",id:"414-\u81ea\u5b9a\u4e49\u914d\u7f6e\u6587\u4ef6",children:[{value:"4.1.4.1 \u8bfb\u53d6 emailsetting.json \u914d\u7f6e",id:"4141-\u8bfb\u53d6-emailsettingjson-\u914d\u7f6e",children:[]},{value:"4.1.4.2 \u6392\u9664\u7279\u5b9a\u914d\u7f6e\u6587\u4ef6",id:"4142-\u6392\u9664\u7279\u5b9a\u914d\u7f6e\u6587\u4ef6",children:[]}]},{value:"4.1.5 \u4e0d\u540c\u73af\u5883\u8bfb\u53d6",id:"415-\u4e0d\u540c\u73af\u5883\u8bfb\u53d6",children:[]},{value:"4.1.6 \u914d\u7f6e\u66f4\u6539\u901a\u77e5\uff08\u70ed\u66f4\u65b0\uff09",id:"416-\u914d\u7f6e\u66f4\u6539\u901a\u77e5\uff08\u70ed\u66f4\u65b0\uff09",children:[]},{value:"4.1.7 \u624b\u52a8\u6dfb\u52a0\u914d\u7f6e\u6587\u4ef6",id:"417-\u624b\u52a8\u6dfb\u52a0\u914d\u7f6e\u6587\u4ef6",children:[]},{value:"4.1.8 \u914d\u7f6e\u7684\u4f18\u7f3a\u70b9",id:"418-\u914d\u7f6e\u7684\u4f18\u7f3a\u70b9",children:[]},{value:"4.1.9 \u914d\u7f6e\u4f7f\u7528\u573a\u666f",id:"419-\u914d\u7f6e\u4f7f\u7528\u573a\u666f",children:[]},{value:"4.1.10 \u5b9e\u73b0\u914d\u7f6e\u4e2d\u5fc3",id:"4110-\u5b9e\u73b0\u914d\u7f6e\u4e2d\u5fc3",children:[]},{value:"4.1.11 \u91cd\u8f7d\u914d\u7f6e",id:"4111-\u91cd\u8f7d\u914d\u7f6e",children:[]},{value:"4.1.12 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"4112-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],u={toc:c};function k(e){var n=e.components,t=(0,i.Z)(e,p);return(0,o.kt)("wrapper",(0,a.Z)({},u,t,{components:n,mdxType:"MDXLayout"}),(0,o.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u6e29\u99a8\u63d0\u793a")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u63a8\u8350\u4f7f\u7528 \u300a",(0,o.kt)("a",{parentName:"p",href:"/furion/docs/options"},"4.2 \u9009\u9879"),"\u300b\u4ee3\u66ff\u672c\u7ae0\u8282\u529f\u80fd\u3002\uff08",(0,o.kt)("a",{parentName:"p",href:"#418-%E9%85%8D%E7%BD%AE%E7%9A%84%E4%BC%98%E7%BC%BA%E7%82%B9"},"\u4e3a\u4ec0\u4e48"),"\uff09\uff1f"))),(0,o.kt)("div",{className:"admonition admonition-caution alert alert--warning"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 16 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"}))),"\u81ea\u5b9a\u4e49\u914d\u7f6e\u7279\u522b\u6ce8\u610f")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u5982\uff1a",(0,o.kt)("inlineCode",{parentName:"p"},"xxxx.json"),"\uff0c\u5fc5\u987b\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"VS Studio")," \u4e2d\u53f3\u952e\u5c5e\u6027\u8bbe\u7f6e ",(0,o.kt)("inlineCode",{parentName:"p"},"\u590d\u5236"),"\u8f93\u51fa\u76ee\u5f55\u4e3a",(0,o.kt)("inlineCode",{parentName:"p"},"\u5982\u679c\u8f83\u65b0\u5219\u590d\u5236"),"\uff0c\u751f\u6210\u64cd\u4f5c\u4e3a\uff1a",(0,o.kt)("inlineCode",{parentName:"p"},"\u5185\u5bb9"),"\u3002"),(0,o.kt)("p",{parentName:"div"},"\u5982\u679c ",(0,o.kt)("inlineCode",{parentName:"p"},".json")," \u6587\u4ef6\u914d\u7f6e\u5728\u591a\u4e2a\u9879\u76ee\u5c42\uff0c\u4e5f\u5fc5\u987b\u4fdd\u8bc1\u547d\u540d\u552f\u4e00\uff0c\u4e0d\u7136\u7f16\u8bd1\u540e\u51fa\u73b0\u76f8\u4e92\u8986\u76d6\u7684\u60c5\u51b5\u3002"))),(0,o.kt)("h2",{id:"411-\u4ec0\u4e48\u662f\u914d\u7f6e"},"4.1.1 \u4ec0\u4e48\u662f\u914d\u7f6e"),(0,o.kt)("p",null,"\u7b80\u5355\u6765\u8bf4\uff0c\u914d\u7f6e\u5c06\u7cfb\u7edf\u5e94\u7528\u53ef\u52a8\u6001\u8c03\u914d\u7684\u9009\u9879\u653e\u5728\u7edf\u4e00\u5730\u65b9\u7ba1\u7406\uff0c\u901a\u8fc7\u4e0d\u540c\u7684\u914d\u7f6e\u8ba9\u7cfb\u7edf\u505a\u51fa\u52a8\u6001\u8c03\u6574\u3002"),(0,o.kt)("p",null,"\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"ASP.NET Core")," \u5e94\u7528\u7a0b\u5e8f\u542f\u52a8\u65f6\u9ed8\u8ba4\u52a0\u8f7d ",(0,o.kt)("inlineCode",{parentName:"p"},"\u542f\u52a8\u9879\u76ee")," \u4e0b\u7684 ",(0,o.kt)("inlineCode",{parentName:"p"},"appsettings.json")," \u4f5c\u4e3a\u5e94\u7528\u914d\u7f6e\u3002\u540c\u65f6\u8fd8\u652f\u6301",(0,o.kt)("strong",{parentName:"p"},"\u4e0d\u540c\u7684\u8fd0\u884c\u73af\u5883"),"\u52a0\u8f7d\u5bf9\u5e94\u7684\u914d\u7f6e\u6587\u4ef6\uff0c\u5982\uff1a"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"Development"),"\uff1a\u52a0\u8f7d ",(0,o.kt)("inlineCode",{parentName:"li"},"appsettings.Development.json")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"Staging"),"\uff1a\u52a0\u8f7d ",(0,o.kt)("inlineCode",{parentName:"li"},"appsettings.Staging.json")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"{Environment}"),"\uff1a",(0,o.kt)("inlineCode",{parentName:"li"},"appsettings.{Environment}.json"))),(0,o.kt)("h2",{id:"412-\u914d\u7f6e\u7684\u4f7f\u7528"},"4.1.2 \u914d\u7f6e\u7684\u4f7f\u7528"),(0,o.kt)("p",null,"\u5047\u8bbe\u6211\u4eec\u9700\u8981\u5728\u7cfb\u7edf\u8fd0\u884c\u65f6\u83b7\u53d6",(0,o.kt)("strong",{parentName:"p"},"\u7cfb\u7edf\u540d\u79f0\u3001\u7248\u672c\u53f7\u53ca\u7248\u6743\u4fe1\u606f"),"\uff0c\u8fd9\u4e9b\u4fe1\u606f\u53ef\u80fd\u968f\u65f6\u53d8\u5316\u800c\u4e14\u9700\u8981\u5728\u591a\u4e2a\u5730\u65b9\u4f7f\u7528\u3002\u8fd9\u65f6\u5c31\u9700\u8981\u5c06\u8fd9\u4e9b\u4fe1\u606f\u914d\u7f6e\u8d77\u6765\u3002\u5177\u4f53\u6b65\u9aa4\u5982\u4e0b\uff1a"),(0,o.kt)("h3",{id:"4121-\u914d\u7f6e-appsettingsjson-\u4fe1\u606f"},"4.1.2.1 \u914d\u7f6e ",(0,o.kt)("inlineCode",{parentName:"h3"},"appsettings.json")," \u4fe1\u606f"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-json",metastring:"{2-6}","{2-6}":!0},'{\n "AppInfo": {\n "Name": "Furion",\n "Version": "1.0.0",\n "Company": "Baiqian"\n }\n}\n')),(0,o.kt)("div",{className:"admonition admonition-caution alert alert--warning"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 16 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"}))),"\u7279\u522b\u6ce8\u610f")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},(0,o.kt)("inlineCode",{parentName:"p"},"appsettings.json")," \u590d\u5236\u8f93\u51fa\u76ee\u5f55\u4e3a",(0,o.kt)("inlineCode",{parentName:"p"},"\u5982\u679c\u8f83\u65b0\u5219\u590d\u5236"),"\uff0c\u751f\u6210\u64cd\u4f5c\u4e3a\uff1a",(0,o.kt)("inlineCode",{parentName:"p"},"\u5185\u5bb9"),"\u3002"),(0,o.kt)("p",{parentName:"div"},"\u53e6\u5916\uff0c\u67d0\u4e9b ",(0,o.kt)("inlineCode",{parentName:"p"},"linux")," \u7cfb\u7edf\u4e0d\u652f\u6301\u8bfb\u53d6\u5e26 ",(0,o.kt)("inlineCode",{parentName:"p"},"\u6ce8\u91ca")," \u7684 json \u6587\u4ef6\uff0c\u76f4\u63a5\u8bfb\u53d6\u5c06\u4f1a\u62a5\u9519\u3002\u9700\u8981\u5c06 ",(0,o.kt)("inlineCode",{parentName:"p"},"json")," \u5185\u7684\u6ce8\u91ca\u5168\u90e8 ",(0,o.kt)("inlineCode",{parentName:"p"},"\u5220\u9664")," \u624d\u80fd\u6b63\u5e38\u8bfb\u53d6\u3002"))),(0,o.kt)("h3",{id:"4122-\u8bfb\u53d6-appsettingsjson-\u4fe1\u606f"},"4.1.2.2 \u8bfb\u53d6 ",(0,o.kt)("inlineCode",{parentName:"h3"},"appsettings.json")," \u4fe1\u606f"),(0,o.kt)("p",null,"\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\uff0c\u63d0\u4f9b\u4e86\u4e24\u79cd\u8bfb\u53d6\u65b9\u5f0f\uff1a"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"\u4f9d\u8d56\u6ce8\u5165 ",(0,o.kt)("inlineCode",{parentName:"li"},"IConfiguration")," \u5bf9\u8c61\u8bfb\u53d6"),(0,o.kt)("li",{parentName:"ul"},"\u901a\u8fc7 ",(0,o.kt)("inlineCode",{parentName:"li"},"App.Configuration[path]")," \u8bfb\u53d6")),(0,o.kt)(r.Z,{defaultValue:"App.Configuration[path]",values:[{label:"App.Configuration[path]",value:"App.Configuration[path]"},{label:"\u4f9d\u8d56\u6ce8\u5165\u65b9\u5f0f",value:"\u4f9d\u8d56\u6ce8\u5165\u65b9\u5f0f"}],mdxType:"Tabs"},(0,o.kt)(l.Z,{value:"App.Configuration[path]",mdxType:"TabItem"},(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{11-13}","{11-13}":!0},'using Microsoft.AspNetCore.Mvc;\n\nnamespace Furion.Web.Entry.Controllers\n{\n [Route("api/[controller]")]\n public class DefaultController : ControllerBase\n {\n [HttpGet]\n public string Get()\n {\n return $@"\u540d\u79f0\uff1a{App.Configuration["AppInfo:Name"]}\uff0c\n \u7248\u672c\uff1a{App.Configuration["AppInfo:Version"]}\uff0c\n \u516c\u53f8\uff1a{App.Configuration["AppInfo:Company"]}";\n }\n }\n}\n'))),(0,o.kt)(l.Z,{value:"\u4f9d\u8d56\u6ce8\u5165\u65b9\u5f0f",mdxType:"TabItem"},(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{2,10-15}","{2,10-15}":!0},'using Microsoft.AspNetCore.Mvc;\nusing Microsoft.Extensions.Configuration;\n\nnamespace Furion.Web.Entry.Controllers\n{\n [Route("api/[controller]")]\n public class DefaultController : ControllerBase\n {\n [HttpGet]\n public string Get([FromServices] IConfiguration configuration)\n {\n return $@"\u540d\u79f0\uff1a{configuration["AppInfo:Name"]}\uff0c\n \u7248\u672c\uff1a{configuration["AppInfo:Version"]}\uff0c\n \u516c\u53f8\uff1a{configuration["AppInfo:Company"]}";\n }\n }\n}\n')))),(0,o.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u4f9d\u8d56\u6ce8\u5165\u7684\u65b9\u5f0f")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u901a\u8fc7\u4f9d\u8d56\u6ce8\u5165\u6ce8\u5165\u5b9e\u4f8b\u6709\u51e0\u79cd\u65b9\u5f0f\uff1a"),(0,o.kt)("ul",{parentName:"div"},(0,o.kt)("li",{parentName:"ul"},"\u6784\u9020\u51fd\u6570\u6ce8\u5165\u65b9\u5f0f")),(0,o.kt)("pre",{parentName:"div"},(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{2}","{2}":!0},"private readonly IConfiguration _configuration;\npublic DefaultController(IConfiguration configuration)\n{\n _configuration = configuration;\n}\n")),(0,o.kt)("ul",{parentName:"div"},(0,o.kt)("li",{parentName:"ul"},"\u53c2\u6570\u6ce8\u5165\u65b9\u5f0f ",(0,o.kt)("inlineCode",{parentName:"li"},"[FromServices]"))),(0,o.kt)("pre",{parentName:"div"},(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1}","{1}":!0},"public string Get([FromServices] IConfiguration configuration)\n{\n}\n")),(0,o.kt)("ul",{parentName:"div"},(0,o.kt)("li",{parentName:"ul"},"\u5c5e\u6027\u6ce8\u5165\u65b9\u5f0f")),(0,o.kt)("pre",{parentName:"div"},(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1}","{1}":!0},"public IConfiguration Configuration { get; set; }\n")),(0,o.kt)("p",{parentName:"div"},"\u60f3\u4e86\u89e3\u66f4\u591a\u5173\u4e8e\u300a",(0,o.kt)("a",{parentName:"p",href:"https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/dependency-injection?view=aspnetcore-3.1"},"ASP.NET Core - \u4f9d\u8d56\u6ce8\u5165"),"\u300b \u77e5\u8bc6"))),(0,o.kt)("h3",{id:"4123-\u5982\u4f55\u9009\u62e9\u8bfb\u53d6\u65b9\u5f0f"},"4.1.2.3 \u5982\u4f55\u9009\u62e9\u8bfb\u53d6\u65b9\u5f0f"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"\u5728\u53ef\u4f9d\u8d56\u6ce8\u5165\u7c7b\u4e2d\uff0c\u4f9d\u8d56\u6ce8\u5165 ",(0,o.kt)("inlineCode",{parentName:"li"},"IConfiguration")," \u8bfb\u53d6"),(0,o.kt)("li",{parentName:"ul"},"\u5728\u9759\u6001\u7c7b/\u975e\u4f9d\u8d56\u6ce8\u5165\u7c7b\u4e2d\uff0c\u9009\u62e9 ",(0,o.kt)("inlineCode",{parentName:"li"},"App.Configuration[path]")," \u8bfb\u53d6")),(0,o.kt)("h2",{id:"413-\u8def\u5f84\u7b26-\u67e5\u627e\u8282\u70b9"},"4.1.3 ",(0,o.kt)("inlineCode",{parentName:"h2"},"\u8def\u5f84\u7b26")," \u67e5\u627e\u8282\u70b9"),(0,o.kt)("p",null,"\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"ASP.NET Core")," \u4e2d\uff0c\u914d\u7f6e\u91c7\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},":")," \u5206\u9694\u7b26\u6765\u8bfb\u53d6\u5206\u5c42\u914d\u7f6e\u6570\u636e\u3002\u5982\u4e0a\u8ff0\u4f8b\u5b50\u4e2d\u7684 ",(0,o.kt)("inlineCode",{parentName:"p"},"AppInfo:Name"),"\u3002\u5982\u6709\u66f4\u591a\u5c42\u7ea7\u6570\u636e\u5219\u53ea\u9700\u8981\u901a\u8fc7 ",(0,o.kt)("inlineCode",{parentName:"p"},":")," \u8fdb\u5165\u4e0b\u4e00\u5c42\u8282\u70b9\u5373\u53ef\u3002"),(0,o.kt)("p",null,"\u5047\u8bbe\u6211\u4eec\u6709\u4ee5\u4e0b\u914d\u7f6e\u4fe1\u606f\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-json",metastring:"{5-12}","{5-12}":!0},'{\n "AppInfo": {\n "Name": "Furion",\n "Version": "1.0.0",\n "Company": {\n "Name": "Baiqian",\n "Address": {\n "City": "\u4e2d\u56fd",\n "Province": "\u5e7f\u4e1c\u7701",\n "Detail": "\u4e2d\u5c71\u5e02\u4e1c\u533a\u7d2b\u9a6c\u516c\u56ed\u897f\u95e8"\n }\n }\n }\n}\n')),(0,o.kt)(r.Z,{defaultValue:"two",values:[{label:"\u8bfb\u53d6\u7b2c\u4e8c\u5c42",value:"two"},{label:"\u8bfb\u53d6\u7b2c\u4e09\u5c42",value:"three"},{label:"\u8bfb\u53d6\u7b2c\u56db\u5c42",value:"four"},{label:"\u8bfb\u53d6\u7b2cN\u5c42",value:"n"}],mdxType:"Tabs"},(0,o.kt)(l.Z,{value:"two",mdxType:"TabItem"},(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},'var companyName = App.Configuration["AppInfo:Name"]; // => Furion\n'))),(0,o.kt)(l.Z,{value:"three",mdxType:"TabItem"},(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},'var companyName = App.Configuration["AppInfo:Company:Name"]; // => Baiqian\n'))),(0,o.kt)(l.Z,{value:"four",mdxType:"TabItem"},(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},'var companyName = App.Configuration["AppInfo:Company:Address:Detail"]; // => \u4e2d\u5c71\u5e02\u4e1c\u533a\u7d2b\u9a6c\u516c\u56ed\u897f\u95e8\n'))),(0,o.kt)(l.Z,{value:"n",mdxType:"TabItem"},(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},'var companyName = App.Configuration["AppInfo:Tier2:Tier3:Tier4...Tiern1:Tiern3..."]; // => \u4e2d\u5c71\u5e02\u4e1c\u533a\u7d2b\u9a6c\u516c\u56ed\u897f\u95e8\n')))),(0,o.kt)("h3",{id:"4131-\u67e5\u627e\u6570\u7ec4\u8282\u70b9"},"4.1.3.1 \u67e5\u627e\u6570\u7ec4\u8282\u70b9"),(0,o.kt)("p",null,"\u6709\u4e9b\u65f6\u5019\u6211\u4eec\u9700\u8981\u6216\u8005\u6570\u7ec4\u7279\u5b9a\u7684\u67d0\u4e9b\uff0c\u53ef\u4ee5\u901a\u8fc7 ",(0,o.kt)("inlineCode",{parentName:"p"},'App.Configuration["array:0"]')," \u83b7\u53d6\uff0c",(0,o.kt)("inlineCode",{parentName:"p"},"0")," \u662f\u7d22\u5f15\u6570\u5b57\u3002"),(0,o.kt)("h2",{id:"414-\u81ea\u5b9a\u4e49\u914d\u7f6e\u6587\u4ef6"},"4.1.4 \u81ea\u5b9a\u4e49\u914d\u7f6e\u6587\u4ef6"),(0,o.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"XML \u914d\u7f6e\u8bf4\u660e")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},(0,o.kt)("inlineCode",{parentName:"p"},"Furion v2.8.0")," \u7248\u672c\u79fb\u9664\u4e86 ",(0,o.kt)("inlineCode",{parentName:"p"},".xml")," \u6587\u4ef6\u81ea\u52a8\u626b\u63cf\u914d\u7f6e\u4e86\uff0c\u6539\u4e3a\u624b\u52a8\u6dfb\u52a0\u914d\u7f6e\u3002"))),(0,o.kt)("p",null,"\u5927\u591a\u60c5\u51b5\u4e0b\uff0c\u6211\u4eec\u7684\u914d\u7f6e\u53ea\u9700\u8981\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"appsettings.json")," \u4e2d\u914d\u7f6e\u5373\u53ef\uff0c\u4f46\u4e00\u4e9b\u7279\u6b8a\u60c5\u51b5\u4e0b\uff0c\u6211\u4eec\u5e0c\u671b\u67d0\u4e9b\u7ec4\u4ef6\u6216\u529f\u80fd\u62e5\u6709\u72ec\u7acb\u7684\u914d\u7f6e\uff0c\u8fd9\u4e2a\u65f6\u5019\u5c31\u9700\u8981\u7528\u5230\u81ea\u5b9a\u4e49\u914d\u7f6e\uff0c",(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u76ee\u524d\u652f\u6301 ",(0,o.kt)("inlineCode",{parentName:"p"},".json")," \u548c ",(0,o.kt)("inlineCode",{parentName:"p"},".xml")," \u4e24\u79cd\u65b9\u5f0f\u914d\u7f6e\uff0c\u5982\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-json",metastring:'{2-13} title="Furion.Web.Entry/emailsetting.json"',"{2-13}":!0,title:'"Furion.Web.Entry/emailsetting.json"'},'{\n "outlook": {\n "smtp": {\n "server": "smtp.office365.com",\n "port": "587",\n "ssl": "STARTTLS"\n },\n "pop": {\n "server": "outlook.office365.com",\n "port": "995",\n "ssl": "TLS"\n }\n }\n}\n')),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-xml"},'\n\n MyXMLFile Value\n \n Title from MyXMLFile\n Name from MyXMLFile\n \n \n \n Information\n Warning\n \n \n\n')),(0,o.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"xml \u914d\u7f6e\u4e8b\u9879")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u5982\u679c\u91c7\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"xml")," \u914d\u7f6e\uff0c\u90a3\u4e48\u6587\u4ef6\u540d\u5fc5\u987b\u4ee5 ",(0,o.kt)("inlineCode",{parentName:"p"},".config.xml")," \u7ed3\u5c3e\uff08\u4e0d\u533a\u5206\u5927\u5c0f\u5199\uff09\u3002"))),(0,o.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u8bf4\u660e")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4f1a\u5728\u542f\u52a8\u65f6\u81ea\u52a8\u626b\u63cf\u6bcf\u4e00\u4e2a\u9879\u76ee\u5c42\u6839\u76ee\u5f55\u4e0b\u7684 ",(0,o.kt)("inlineCode",{parentName:"p"},"*.json")," \u6587\u4ef6\u52a0\u5165\u914d\u7f6e\u4e2d\uff0c\u6240\u4ee5\u65e0\u9700\u624b\u5de5\u914d\u7f6e\u3002"),(0,o.kt)("p",{parentName:"div"},"\u65b0\u589e ",(0,o.kt)("inlineCode",{parentName:"p"},"*.json")," \u6587\u4ef6\u7684\u5c5e\u6027 ",(0,o.kt)("inlineCode",{parentName:"p"},"\u590d\u5236\u5230\u8f93\u51fa\u76ee\u5f55")," \u8bbe\u7f6e\u4e3a\u59cb\u7ec8\u590d\u5236\u6216\u8f83\u65b0\u590d\u5236\uff0c\u5426\u5219\u4e0d\u4f1a\u8f7d\u5165\u3002\u53e6\u5916\u914d\u7f6e\u6587\u4ef6\u4e0d\u80fd\u51fa\u73b0\u91cd\u540d\uff0c\u4e5f\u5c31\u662f\u4fdd\u8bc1\u6574\u4e2a\u9879\u76ee\u4e2d\u914d\u7f6e\u6587\u4ef6\u540d\u5b57\u552f\u4e00\u3002\u6bd4\u5982\u4e0d\u80fd\u5728\u975e ",(0,o.kt)("inlineCode",{parentName:"p"},"Web")," \u5176\u4ed6\u5c42\u5b9a\u4e49 ",(0,o.kt)("inlineCode",{parentName:"p"},"appsettings.json")," \u6587\u4ef6\u3002"),(0,o.kt)("p",{parentName:"div"},"\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"v2.16.7+")," \u7248\u672c\u7248\u672c\u4e4b\u540e\uff0c\u652f\u6301\u81ea\u5b9a\u4e49\u914d\u7f6e\u626b\u63cf\u76ee\u5f55\uff1a"),(0,o.kt)("pre",{parentName:"div"},(0,o.kt)("code",{parentName:"pre",className:"language-json"},'{\n "ConfigurationScanDirectories": ["\u76ee\u5f551\u540d\u79f0", "\u76ee\u5f551\u540d\u79f0/\u5b50\u76ee\u5f55\u540d\u79f0"]\n}\n')))),(0,o.kt)("p",null,"\u540c\u65f6 ",(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u63d0\u4f9b\u4e86\u975e\u5e38\u7075\u6d3b\u7684\u65b9\u5f0f\u652f\u6301\u81ea\u5b9a\u4e49\u914d\u7f6e\u6587\u4ef6\u8bfb\u53d6\uff0c\u5982\uff1a"),(0,o.kt)("h3",{id:"4141-\u8bfb\u53d6-emailsettingjson-\u914d\u7f6e"},"4.1.4.1 \u8bfb\u53d6 ",(0,o.kt)("inlineCode",{parentName:"h3"},"emailsetting.json")," \u914d\u7f6e"),(0,o.kt)("p",null,"\u8bfb\u53d6\u81ea\u5b9a\u4e49\u914d\u7f6e\u6587\u4ef6\u548c\u8bfb\u53d6 ",(0,o.kt)("inlineCode",{parentName:"p"},"appsettings.json")," \u4e00\u81f4\uff0c\u7cfb\u7edf\u4f1a\u81ea\u52a8\u4ece\u591a\u4e2a\u914d\u7f6e\u6587\u4ef6\u4e2d\u8bfb\u53d6\u8f93\u5165\uff0c\u5982\uff1a"),(0,o.kt)(r.Z,{defaultValue:"jtl",values:[{label:"App.Configuration[path]",value:"jtl"},{label:"\u4f9d\u8d56\u6ce8\u5165\u65b9\u5f0f",value:"ylzr"}],mdxType:"Tabs"},(0,o.kt)(l.Z,{value:"jtl",mdxType:"TabItem"},(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},'var smtpServer = App.Configuration["outlook:smtp:server"]; // => smtp.office365.com\n'))),(0,o.kt)(l.Z,{value:"ylzr",mdxType:"TabItem"},(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},'var smtpServer = _configuration["outlook:smtp:server"]; // => smtp.office365.com\n')))),(0,o.kt)("h3",{id:"4142-\u6392\u9664\u7279\u5b9a\u914d\u7f6e\u6587\u4ef6"},"4.1.4.2 \u6392\u9664\u7279\u5b9a\u914d\u7f6e\u6587\u4ef6"),(0,o.kt)("p",null,"\u6709\u4e9b\u65f6\u5019\uff0c\u6211\u4eec\u4e0d\u9700\u8981 ",(0,o.kt)("inlineCode",{parentName:"p"},".json")," \u6216 ",(0,o.kt)("inlineCode",{parentName:"p"},".xml")," \u81ea\u52a8\u8f7d\u5165\u914d\u7f6e\u4e2d\uff0c\u6211\u4eec\u53ea\u9700\u8981\u5728\u542f\u52a8\u5c42 ",(0,o.kt)("inlineCode",{parentName:"p"},"appsettings.json")," \u4e2d\u6dfb\u52a0 ",(0,o.kt)("inlineCode",{parentName:"p"},"IgnoreConfigurationFiles")," \u8282\u70b9\u5373\u53ef\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-json"},'{\n "IgnoreConfigurationFiles": ["runtime.json"]\n}\n')),(0,o.kt)("h2",{id:"415-\u4e0d\u540c\u73af\u5883\u8bfb\u53d6"},"4.1.5 \u4e0d\u540c\u73af\u5883\u8bfb\u53d6"),(0,o.kt)("p",null,"\u5728\u5b9e\u9645\u5e94\u7528\u5f00\u53d1\u4e2d\uff0c\u6211\u4eec\u53ef\u80fd\u4f1a\u6839\u636e\u4e0d\u540c\u7684\u73af\u5883\u52a0\u8f7d\u4e0d\u540c\u7684\u914d\u7f6e\u6587\u4ef6\uff0c\u5982 ",(0,o.kt)("inlineCode",{parentName:"p"},"\u6570\u636e\u5e93\u8fde\u63a5\u5b57\u7b26\u4e32"),"\u3002"),(0,o.kt)("p",null,"\u8fd9\u65f6\u6211\u4eec\u53ea\u9700\u8981\u9075\u5faa\u7279\u5b9a\u547d\u540d\u89c4\u8303 ",(0,o.kt)("inlineCode",{parentName:"p"},"{name}.{Environment}.json")," \u5373\u53ef\u3002\u5982\uff1a"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"appsettings.Development.json")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"appsettings.Staging.json")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"appsettings.Production.json")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"emailsetting.Development.json")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"emailsetting.Staging.json")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"emailsetting.Production.json"))),(0,o.kt)("p",null,"\u8fd9\u65f6\uff0c",(0,o.kt)("inlineCode",{parentName:"p"},"ASP.NET Core")," \u4f1a\u5728\u5e94\u7528\u542f\u52a8\u65f6\u81ea\u52a8\u52a0\u8f7d\u4e0d\u540c\u73af\u5883\u7684\u914d\u7f6e\u6587\u4ef6\u3002"),(0,o.kt)("h2",{id:"416-\u914d\u7f6e\u66f4\u6539\u901a\u77e5\uff08\u70ed\u66f4\u65b0\uff09"},"4.1.6 \u914d\u7f6e\u66f4\u6539\u901a\u77e5\uff08",(0,o.kt)("inlineCode",{parentName:"h2"},"\u70ed\u66f4\u65b0"),"\uff09"),(0,o.kt)("p",null,"\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},".NET Core")," \u5e94\u7528\u7a0b\u5e8f\u4e2d\uff0c\u914d\u7f6e\u652f\u6301\u66f4\u6539\u901a\u77e5\uff0c\u4e5f\u5c31\u662f\u70ed\u66f4\u65b0\u64cd\u4f5c\u3002",(0,o.kt)("strong",{parentName:"p"},"\u4e00\u65e6\u76d1\u542c\u5230 ",(0,o.kt)("inlineCode",{parentName:"strong"},"appsetting.json")," \u6216\u81ea\u5b9a\u4e49\u914d\u7f6e\u6587\u4ef6\u53d1\u751f\u53d8\u52a8\uff0c\u5c31\u4f1a\u89e6\u53d1 ",(0,o.kt)("inlineCode",{parentName:"strong"},"OnChange")," \u65b9\u6cd5"),"\u3002\u4ee3\u7801\u5982\u4e0b\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{2,4-5}","{2,4-5}":!0},'var appInfoConfiguration = App.Configuration.GetSection("AppInfo");\nChangeToken.OnChange(() => App.Configuration.GetReloadToken(), () =>\n{\n var name = appInfoConfiguration["Name"]; // \u5b9e\u65f6\u7684\u6700\u65b0\u503c\n var version = appInfoConfiguration["Version"]; // \u5b9e\u65f6\u7684\u6700\u65b0\u503c\n});\n')),(0,o.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u76d1\u542c\u5bf9\u8c61")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u5982\u679c\u76d1\u542c\u5168\u5c40\u914d\u7f6e\u6587\u4ef6\u4f20\u5165 ",(0,o.kt)("inlineCode",{parentName:"p"},"App.Configuration.GetReloadToken()"),"\uff0c\u5982\u679c\u53ea\u9700\u8981\u76d1\u542c\u7279\u5b9a\u8282\u70b9\uff0c\u4f20\u5165 ",(0,o.kt)("inlineCode",{parentName:"p"},'App.Configuration.GetSection("AppInfo")')))),(0,o.kt)("h2",{id:"417-\u624b\u52a8\u6dfb\u52a0\u914d\u7f6e\u6587\u4ef6"},"4.1.7 \u624b\u52a8\u6dfb\u52a0\u914d\u7f6e\u6587\u4ef6"),(0,o.kt)("p",null,"\u6709\u4e9b\u65f6\u5019\uff0c\u6211\u4eec\u7684\u914d\u7f6e\u6587\u4ef6\u6ca1\u6709\u653e\u5728\u9879\u76ee\u7684\u6839\u76ee\u5f55\u4e0b\uff0c\u8fd9\u65f6\u5019\u6211\u4eec\u9700\u8981\u624b\u52a8\u8f7d\u5165\u81ea\u5b9a\u4e49\u914d\u7f6e\u6587\u4ef6\uff0c\u53ea\u9700\u8981\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"Program.cs")," \u4e2d\u52a0\u8f7d\u5373\u53ef\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{10,13}","{10,13}":!0},'public class Program\n{\n public static void Main(string[] args)\n {\n CreateHostBuilder(args).Build().Run();\n }\n\n public static IHostBuilder CreateHostBuilder(string[] args) =>\n Host.CreateDefaultBuilder(args)\n .ConfigureAppConfiguration((hostingContext, config) =>\n {\n // \u52a0\u8f7d\u81ea\u5b9a\u4e49\u914d\u7f6e\n config.AddJsonFile("MyConfig.json", optional: true, reloadOnChange: true);\n })\n .ConfigureWebHostDefaults(webBuilder =>\n {\n webBuilder.UseStartup();\n });\n}\n')),(0,o.kt)("div",{className:"admonition admonition-info alert alert--info"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u8865\u5145\u8bf4\u660e")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("ul",{parentName:"div"},(0,o.kt)("li",{parentName:"ul"},"\u83b7\u53d6\u9879\u76ee\u76ee\u5f55\uff1a",(0,o.kt)("inlineCode",{parentName:"li"},"AppContext.BaseDirectory")),(0,o.kt)("li",{parentName:"ul"},"\u83b7\u53d6\u7f51\u7ad9\u6839\u76ee\u5f55\uff1a",(0,o.kt)("inlineCode",{parentName:"li"},"Directory.GetCurrentDirectory()"))))),(0,o.kt)("h2",{id:"418-\u914d\u7f6e\u7684\u4f18\u7f3a\u70b9"},"4.1.8 \u914d\u7f6e\u7684\u4f18\u7f3a\u70b9"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},"\u4f18\u70b9"),(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"\u80fd\u591f\u5728\u7cfb\u7edf\u8fd0\u884c\u65f6\u5feb\u901f\u8bfb\u53d6"),(0,o.kt)("li",{parentName:"ul"},"\u65e0\u9700\u989d\u5916\u914d\u7f6e"))),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},"\u7f3a\u70b9"),(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"\u5b58\u5728\u91cd\u590d\u8bfb\u53d6"),(0,o.kt)("li",{parentName:"ul"},"\u901a\u8fc7\u786c\u7f16\u7801\u5b57\u7b26\u4e32\u8bfb\u53d6\uff0c\u5bb9\u6613\u51fa\u9519"),(0,o.kt)("li",{parentName:"ul"},"\u4e0d\u80fd\u8bbe\u7f6e\u9ed8\u8ba4\u503c"),(0,o.kt)("li",{parentName:"ul"},"\u4e0d\u80fd\u5728\u8fd0\u884c\u73af\u5883\u4e2d\u52a8\u6001\u914d\u7f6e"),(0,o.kt)("li",{parentName:"ul"},"\u4e0d\u80fd\u9a8c\u8bc1\u914d\u7f6e\u6709\u6548\u6027"),(0,o.kt)("li",{parentName:"ul"},"\u4e0d\u652f\u6301\u66f4\u6539\u901a\u77e5")))),(0,o.kt)("h2",{id:"419-\u914d\u7f6e\u4f7f\u7528\u573a\u666f"},"4.1.9 \u914d\u7f6e\u4f7f\u7528\u573a\u666f"),(0,o.kt)("p",null,"\u5982\u679c\u53ea\u9700\u8981",(0,o.kt)("strong",{parentName:"p"},"\u4e00\u6b21\u6027\u8bfb\u53d6"),"\u914d\u7f6e\u4fe1\u606f\uff0c\u5219\u4f7f\u7528\u914d\u7f6e\uff0c\u5426\u5219\u5e94\u8be5\u4f7f\u7528 \u300a",(0,o.kt)("a",{parentName:"p",href:"/furion/docs/options"},"4.2 \u9009\u9879"),"\u300b\u4ee3\u66ff\u3002"),(0,o.kt)("h2",{id:"4110-\u5b9e\u73b0\u914d\u7f6e\u4e2d\u5fc3"},"4.1.10 \u5b9e\u73b0\u914d\u7f6e\u4e2d\u5fc3"),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"ASP.NET Core")," \u9664\u4e86\u901a\u8fc7\u914d\u7f6e\u6587\u4ef6\u8bfb\u53d6\u914d\u7f6e\u4fe1\u606f\u5916\uff0c\u8fd8\u652f\u6301\u81ea\u5b9a\u4e49 ",(0,o.kt)("inlineCode",{parentName:"p"},"\u914d\u7f6e\u63d0\u4f9b\u7a0b\u5e8f"),"\uff0c\u901a\u8fc7 ",(0,o.kt)("inlineCode",{parentName:"p"},"\u914d\u7f6e\u63d0\u4f9b\u7a0b\u5e8f")," \u53ef\u4ee5\u5b9e\u73b0\u914d\u7f6e\u4e2d\u5fc3\uff0c\u6bd4\u5982\u901a\u8fc7\u6570\u636e\u5e93\u63d0\u4f9b\u914d\u7f6e\u3002"),(0,o.kt)("p",null,"\u5177\u4f53\u5b9e\u73b0\u67e5\u770b\u5fae\u8f6f\u5b98\u65b9\u6587\u6863\uff1a",(0,o.kt)("a",{parentName:"p",href:"https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/configuration/?view=aspnetcore-5.0#custom-configuration-provider"},"https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/configuration/?view=aspnetcore-5.0#custom-configuration-provider")),(0,o.kt)("p",null,"\u91c7\u7528\u8be5\u65b9\u5f0f\u540e\uff0c\u5982\u679c\u6570\u636e\u53d1\u751f\u6539\u53d8\u53ef\u8c03\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"App.Configuration.Reload()")," \u5237\u65b0\u5373\u53ef\u3002"),(0,o.kt)("h2",{id:"4111-\u91cd\u8f7d\u914d\u7f6e"},"4.1.11 \u91cd\u8f7d\u914d\u7f6e"),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u4f1a\u5728\u5e94\u7528\u542f\u52a8\u7684\u65f6\u5019\u5bf9 ",(0,o.kt)("inlineCode",{parentName:"p"},"IConfiguration")," \u8fdb\u884c\u9759\u6001\u7f13\u5b58\uff0c\u5982\u679c\u4f7f\u7528\u4e86 ",(0,o.kt)("inlineCode",{parentName:"p"},"App.Configuration")," \u9759\u6001\u5c5e\u6027\u4e14\u914d\u7f6e\u6570\u636e\u5df2\u53d1\u751f\u53d8\u66f4\uff0c\u5219\u8c03\u7528\u4ee5\u4e0b\u65b9\u6cd5\u5237\u65b0\u5373\u53ef\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},"App.Configuration.Reload();\n")),(0,o.kt)("h2",{id:"4112-\u53cd\u9988\u4e0e\u5efa\u8bae"},"4.1.12 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,o.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,o.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))),(0,o.kt)("hr",null),(0,o.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e86\u89e3\u66f4\u591a")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u60f3\u4e86\u89e3\u66f4\u591a ",(0,o.kt)("inlineCode",{parentName:"p"},"\u914d\u7f6e")," \u77e5\u8bc6\u53ef\u67e5\u9605 ",(0,o.kt)("a",{parentName:"p",href:"https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/configuration/?view=aspnetcore-5.0"},"ASP.NET Core - \u914d\u7f6e")," \u7ae0\u8282\u3002"))))}k.isMDXComponent=!0},6010:function(e,n,t){function a(e){var n,t,i="";if("string"==typeof e||"number"==typeof e)i+=e;else if("object"==typeof e)if(Array.isArray(e))for(n=0;n=0||(n[a]=e[a]);return n}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var c=r.createContext({}),s=function(e){var t=r.useContext(c),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},m=function(e){var t=s(e.components);return r.createElement(c.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var a=e.components,n=e.mdxType,l=e.originalType,c=e.parentName,m=i(e,["components","mdxType","originalType","parentName"]),d=s(a),f=n,p=d["".concat(c,".").concat(f)]||d[f]||u[f]||l;return a?r.createElement(p,o(o({ref:t},m),{},{components:a})):r.createElement(p,o({ref:t},m))}));function f(e,t){var a=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var l=a.length,o=new Array(l);o[0]=d;var i={};for(var c in t)hasOwnProperty.call(t,c)&&(i[c]=t[c]);i.originalType=e,i.mdxType="string"==typeof e?e:n,o[1]=i;for(var s=2;s0;return n.createElement(o.Z,c,n.createElement("div",{className:"container margin-vert--lg"},n.createElement("div",{className:"row"},s&&n.createElement("aside",{className:"col col--3"},n.createElement(g,{sidebar:t})),n.createElement("main",{className:(0,l.Z)("col",{"col--7":s,"col--9 col--offset-1":!s})},i),a&&n.createElement("div",{className:"col col--2"},n.createElement(v.Z,{toc:a})))))}},3146:function(e,t,a){a.d(t,{Z:function(){return g}});var r=a(7294),n=a(6010),l=a(3905),o=a(4973),i=a(6742),c=a(3018),s=a(4848),m=a(1217),u=a(6146),d="blogPostTitle_GeHD",f="blogPostData_291c",p="blogPostDetailsFull_3kfx";var g=function(e){var t,a,g,v=(a=(0,c.c2)().selectMessage,function(e){var t=Math.ceil(e);return a(t,(0,o.I)({id:"theme.blog.post.readingTime.plurals",description:'Pluralized label for "{readingTime} min read". Use as much plural forms (separated by "|") as your language support (see https://www.unicode.org/cldr/cldr-aux/charts/34/supplemental/language_plural_rules.html)',message:"One min read|{readingTime} min read"},{readingTime:t}))}),b=e.children,E=e.frontMatter,h=e.metadata,_=e.truncated,N=e.isBlogPostPage,y=void 0!==N&&N,k=h.date,Z=h.formattedDate,O=h.permalink,w=h.tags,T=h.readingTime,P=h.title,x=h.editUrl,I=E.author,L=E.image,C=E.keywords,j=E.author_url||E.authorURL,M=E.author_title||E.authorTitle,A=E.author_image_url||E.authorImageURL;return r.createElement(r.Fragment,null,r.createElement(m.Z,{keywords:C,image:L}),r.createElement("article",{className:y?void 0:"margin-bottom--xl"},(g=y?"h1":"h2",r.createElement("header",null,r.createElement(g,{className:d},y?P:r.createElement(i.Z,{to:O},P)),r.createElement("div",{className:(0,n.Z)(f,"margin-vert--md")},r.createElement("time",{dateTime:k},Z),T&&r.createElement(r.Fragment,null," \xb7 ",v(T))),r.createElement("div",{className:"avatar margin-vert--md"},A&&r.createElement(i.Z,{className:"avatar__photo-link avatar__photo",href:j},r.createElement("img",{src:A,alt:I})),r.createElement("div",{className:"avatar__intro"},I&&r.createElement(r.Fragment,null,r.createElement("div",{className:"avatar__name"},r.createElement(i.Z,{href:j},I)),r.createElement("small",{className:"avatar__subtitle"},M)))))),r.createElement("div",{className:"markdown"},r.createElement(l.Zo,{components:s.Z},b)),(w.length>0||_)&&r.createElement("footer",{className:(0,n.Z)("row docusaurus-mt-lg",(t={},t[p]=y,t))},w.length>0&&r.createElement("div",{className:"col"},r.createElement("b",null,r.createElement(o.Z,{id:"theme.tags.tagsListLabel",description:"The label alongside a tag list"},"Tags:")),w.map((function(e){var t=e.label,a=e.permalink;return r.createElement(i.Z,{key:a,className:"margin-horiz--sm",to:a},t)}))),y&&x&&r.createElement("div",{className:"col margin-top--sm"},r.createElement(u.Z,{editUrl:x})),!y&&_&&r.createElement("div",{className:"col text--right"},r.createElement(i.Z,{to:h.permalink,"aria-label":"Read more about "+P},r.createElement("b",null,r.createElement(o.Z,{id:"theme.blog.post.readMore",description:"The label used in blog post item excerpts to link to full blog posts"},"Read More")))))))}},4147:function(e,t,a){a.r(t),a.d(t,{default:function(){return m}});var r=a(7294),n=a(6165),l=a(3146),o=a(4973),i=a(6742);var c=function(e){var t=e.nextItem,a=e.prevItem;return r.createElement("nav",{className:"pagination-nav docusaurus-mt-lg","aria-label":(0,o.I)({id:"theme.blog.post.paginator.navAriaLabel",message:"Blog post page navigation",description:"The ARIA label for the blog posts pagination"})},r.createElement("div",{className:"pagination-nav__item"},a&&r.createElement(i.Z,{className:"pagination-nav__link",to:a.permalink},r.createElement("div",{className:"pagination-nav__sublabel"},r.createElement(o.Z,{id:"theme.blog.post.paginator.newerPost",description:"The blog post button label to navigate to the newer/previous post"},"Newer Post")),r.createElement("div",{className:"pagination-nav__label"},"\xab ",a.title))),r.createElement("div",{className:"pagination-nav__item pagination-nav__item--next"},t&&r.createElement(i.Z,{className:"pagination-nav__link",to:t.permalink},r.createElement("div",{className:"pagination-nav__sublabel"},r.createElement(o.Z,{id:"theme.blog.post.paginator.olderPost",description:"The blog post button label to navigate to the older/next post"},"Older Post")),r.createElement("div",{className:"pagination-nav__label"},t.title," \xbb"))))},s=a(3018);var m=function(e){var t=e.content,a=e.sidebar,o=t.frontMatter,i=t.metadata,m=i.title,u=i.description,d=i.nextItem,f=i.prevItem,p=o.hide_table_of_contents;return r.createElement(n.Z,{title:m,description:u,wrapperClassName:s.kM.wrapper.blogPages,pageClassName:s.kM.page.blogPostPage,sidebar:a,toc:!p&&t.toc?t.toc:void 0},r.createElement(l.Z,{frontMatter:o,metadata:i,isBlogPostPage:!0},r.createElement(t,null)),(d||f)&&r.createElement(c,{nextItem:d,prevItem:f}))}},6146:function(e,t,a){a.d(t,{Z:function(){return u}});var r=a(7294),n=a(4973),l=a(7462),o=a(3366),i=a(6010),c="iconEdit_2_ui",s=["className"],m=function(e){var t=e.className,a=(0,o.Z)(e,s);return r.createElement("svg",(0,l.Z)({fill:"currentColor",height:"20",width:"20",viewBox:"0 0 40 40",className:(0,i.Z)(c,t),"aria-hidden":"true"},a),r.createElement("g",null,r.createElement("path",{d:"m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"})))};function u(e){var t=e.editUrl;return r.createElement("a",{href:t,target:"_blank",rel:"noreferrer noopener"},r.createElement(m,null),r.createElement(n.Z,{id:"theme.common.editThisPage",description:"The link label to edit the current page"},"Edit this page"))}},571:function(e,t,a){a.d(t,{r:function(){return c},Z:function(){return s}});var r=a(7294),n=a(6010);var l=function(e,t,a){var n=(0,r.useState)(void 0),l=n[0],o=n[1];(0,r.useEffect)((function(){function r(){var r=function(){var e=Array.from(document.getElementsByClassName("anchor")),t=e.find((function(e){return e.getBoundingClientRect().top>=a}));if(t){if(t.getBoundingClientRect().top>=a){var r=e[e.indexOf(t)-1];return null!=r?r:t}return t}return e[e.length-1]}();if(r)for(var n=0,i=!1,c=document.getElementsByClassName(e);n0&&l.createElement("div",{className:"row footer__links"},n.map((function(e,t){return l.createElement("div",{key:t,className:"col footer__col"},null!=e.title?l.createElement("h4",{className:"footer__title"},e.title):null,null!=e.items&&Array.isArray(e.items)&&e.items.length>0?l.createElement("ul",{className:"footer__items"},e.items.map((function(e,t){return e.html?l.createElement("li",{key:t,className:"footer__item",dangerouslySetInnerHTML:{__html:e.html}}):l.createElement("li",{key:e.href||e.to,className:"footer__item"},l.createElement(d,e))}))):null)}))),(u||a)&&l.createElement("div",{className:"footer__bottom text--center"},u&&u.src&&l.createElement("div",{className:"margin-bottom--sm"},u.href?l.createElement("a",{href:u.href,target:"_blank",rel:"noopener noreferrer",className:m},l.createElement(f,{alt:u.alt,url:p})):l.createElement(f,{alt:u.alt,url:p})),a?l.createElement("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:a}}):null))):null}}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/ccc49370.c45822d0.js b/handbook/build/assets/js/ccc49370.c45822d0.js new file mode 100644 index 00000000000..399ee731c5d --- /dev/null +++ b/handbook/build/assets/js/ccc49370.c45822d0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[6103,613],{4147:function(e,t,a){a.r(t),a.d(t,{default:function(){return p}});var r=a(7294),n=a(1217),l=a(6165),o=a(4884),i=a(4973),s=a(6742);var m=function(e){var t=e.nextItem,a=e.prevItem;return r.createElement("nav",{className:"pagination-nav docusaurus-mt-lg","aria-label":(0,i.I)({id:"theme.blog.post.paginator.navAriaLabel",message:"Blog post page navigation",description:"The ARIA label for the blog posts pagination"})},r.createElement("div",{className:"pagination-nav__item"},a&&r.createElement(s.Z,{className:"pagination-nav__link",to:a.permalink},r.createElement("div",{className:"pagination-nav__sublabel"},r.createElement(i.Z,{id:"theme.blog.post.paginator.newerPost",description:"The blog post button label to navigate to the newer/previous post"},"Newer Post")),r.createElement("div",{className:"pagination-nav__label"},"\xab ",a.title))),r.createElement("div",{className:"pagination-nav__item pagination-nav__item--next"},t&&r.createElement(s.Z,{className:"pagination-nav__link",to:t.permalink},r.createElement("div",{className:"pagination-nav__sublabel"},r.createElement(i.Z,{id:"theme.blog.post.paginator.olderPost",description:"The blog post button label to navigate to the older/next post"},"Older Post")),r.createElement("div",{className:"pagination-nav__label"},t.title," \xbb"))))},c=a(941);var p=function(e){var t,a=e.content,i=e.sidebar,s=a.frontMatter,p=a.assets,u=a.metadata,g=u.title,f=u.description,d=u.nextItem,_=u.prevItem,v=u.date,E=u.tags,b=u.authors,h=s.hide_table_of_contents,N=s.keywords,k=null!=(t=p.image)?t:s.image;return r.createElement(l.Z,{wrapperClassName:c.kM.wrapper.blogPages,pageClassName:c.kM.page.blogPostPage,sidebar:i,toc:!h&&a.toc?a.toc:void 0},r.createElement(n.Z,{title:g,description:f,keywords:N,image:k},r.createElement("meta",{property:"og:type",content:"article"}),r.createElement("meta",{property:"article:published_time",content:v}),b.some((function(e){return e.url}))&&r.createElement("meta",{property:"article:author",content:b.map((function(e){return e.url})).filter(Boolean).join(",")}),E.length>0&&r.createElement("meta",{property:"article:tag",content:E.map((function(e){return e.label})).join(",")})),r.createElement(o.Z,{frontMatter:s,assets:p,metadata:u,isBlogPostPage:!0},r.createElement(a,null)),(d||_)&&r.createElement(m,{nextItem:d,prevItem:_}))}},546:function(e,t,a){a.d(t,{Z:function(){return f}});var r=a(7462),n=a(3366),l=a(7294),o=a(6010),i=a(6742),s=a(941),m=a(4996),c="footerLogoLink_qW4Z",p=["to","href","label","prependBaseUrlToHref"];function u(e){var t=e.to,a=e.href,o=e.label,s=e.prependBaseUrlToHref,c=(0,n.Z)(e,p),u=(0,m.Z)(t),g=(0,m.Z)(a,{forcePrependBaseUrl:!0});return l.createElement(i.Z,(0,r.Z)({className:"footer__link-item"},a?{target:"_blank",rel:"noopener noreferrer",href:s?g:a}:{to:u},c),o)}var g=function(e){var t=e.url,a=e.alt;return l.createElement("img",{className:"footer__logo",alt:a,src:t,style:{background:"#fff",padding:"5px 10px"}})};var f=function(){var e=(0,s.LU)().footer,t=e||{},a=t.copyright,r=t.links,n=void 0===r?[]:r,i=t.logo,p=void 0===i?{}:i,f=(0,m.Z)(p.src);return e?l.createElement("footer",{className:(0,o.Z)("footer",{"footer--dark":"dark"===e.style})},l.createElement("div",{className:"container"},n&&n.length>0&&l.createElement("div",{className:"row footer__links"},n.map((function(e,t){return l.createElement("div",{key:t,className:"col footer__col"},null!=e.title?l.createElement("h4",{className:"footer__title"},e.title):null,null!=e.items&&Array.isArray(e.items)&&e.items.length>0?l.createElement("ul",{className:"footer__items"},e.items.map((function(e,t){return e.html?l.createElement("li",{key:t,className:"footer__item",dangerouslySetInnerHTML:{__html:e.html}}):l.createElement("li",{key:e.href||e.to,className:"footer__item"},l.createElement(u,e))}))):null)}))),(p||a)&&l.createElement("div",{className:"footer__bottom text--center"},p&&p.src&&l.createElement("div",{className:"margin-bottom--sm"},p.href?l.createElement("a",{href:p.href,target:"_blank",rel:"noopener noreferrer",className:c},l.createElement(g,{alt:p.alt,url:f})):l.createElement(g,{alt:p.alt,url:f})),a?l.createElement("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:a}}):null))):null}}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/cd54e801.317568dd.js b/handbook/build/assets/js/cd54e801.317568dd.js deleted file mode 100644 index 0cbfc923779..00000000000 --- a/handbook/build/assets/js/cd54e801.317568dd.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[599],{3905:function(e,t,n){n.d(t,{Zo:function(){return p},kt:function(){return m}});var r=n(7294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var c=r.createContext({}),u=function(e){var t=r.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},p=function(e){var t=u(e.components);return r.createElement(c.Provider,{value:t},e.children)},s={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,i=e.mdxType,o=e.originalType,c=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),d=u(n),m=i,f=d["".concat(c,".").concat(m)]||d[m]||s[m]||o;return n?r.createElement(f,a(a({ref:t},p),{},{components:n})):r.createElement(f,a({ref:t},p))}));function m(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var o=n.length,a=new Array(o);a[0]=d;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l.mdxType="string"==typeof e?e:i,a[1]=l;for(var u=2;u=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var c=r.createContext({}),u=function(e){var t=r.useContext(c),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},p=function(e){var t=u(e.components);return r.createElement(c.Provider,{value:t},e.children)},s={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,i=e.mdxType,o=e.originalType,c=e.parentName,p=l(e,["components","mdxType","originalType","parentName"]),d=u(n),m=i,f=d["".concat(c,".").concat(m)]||d[m]||s[m]||o;return n?r.createElement(f,a(a({ref:t},p),{},{components:n})):r.createElement(f,a({ref:t},p))}));function m(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var o=n.length,a=new Array(o);a[0]=d;var l={};for(var c in t)hasOwnProperty.call(t,c)&&(l[c]=t[c]);l.originalType=e,l.mdxType="string"==typeof e?e:i,a[1]=l;for(var u=2;u=0||(l[a]=e[a]);return l}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(l[a]=e[a])}return l}var u=n.createContext({}),m=function(e){var t=n.useContext(u),a=t;return e&&(a="function"==typeof e?e(t):r(r({},t),e)),a},o=function(e){var t=m(e.components);return n.createElement(u.Provider,{value:t},e.children)},k={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},N=n.forwardRef((function(e,t){var a=e.components,l=e.mdxType,i=e.originalType,u=e.parentName,o=p(e,["components","mdxType","originalType","parentName"]),N=m(a),s=l,d=N["".concat(u,".").concat(s)]||N[s]||k[s]||i;return a?n.createElement(d,r(r({ref:t},o),{},{components:a})):n.createElement(d,r({ref:t},o))}));function s(e,t){var a=arguments,l=t&&t.mdxType;if("string"==typeof e||l){var i=a.length,r=new Array(i);r[0]=N;var p={};for(var u in t)hasOwnProperty.call(t,u)&&(p[u]=t[u]);p.originalType=e,p.mdxType="string"==typeof e?e:l,r[1]=p;for(var m=2;mLocalizationSettings",id:"2131-\u914d\u7f6e-localizationsettings",children:[]},{value:"21.3.2 \u521b\u5efa Resources \u6587\u4ef6\u5939",id:"2132-\u521b\u5efa-resources-\u6587\u4ef6\u5939",children:[]}]},{value:"21.4 L \u9759\u6001\u7c7b",id:"214-l-\u9759\u6001\u7c7b",children:[]},{value:"21.5 \u4f7f\u7528\u4f8b\u5b50",id:"215-\u4f7f\u7528\u4f8b\u5b50",children:[{value:"21.5.1 \u5728\u7c7b\u4e2d\u4f7f\u7528",id:"2151-\u5728\u7c7b\u4e2d\u4f7f\u7528",children:[]},{value:"21.5.2 \u5728\u89c6\u56fe\u4e2d\u4f7f\u7528",id:"2152-\u5728\u89c6\u56fe\u4e2d\u4f7f\u7528",children:[]},{value:"21.5.3 \u5728\u9a8c\u8bc1\u7279\u6027\u4e2d\u4f7f\u7528",id:"2153-\u5728\u9a8c\u8bc1\u7279\u6027\u4e2d\u4f7f\u7528",children:[]},{value:"21.5.4 \u5728\u5f02\u5e38\u6d88\u606f\u4e2d\u4f7f\u7528",id:"2154-\u5728\u5f02\u5e38\u6d88\u606f\u4e2d\u4f7f\u7528",children:[]}]},{value:"21.6 \u521b\u5efa\u8bed\u8a00\u7ffb\u8bd1\u6587\u4ef6",id:"216-\u521b\u5efa\u8bed\u8a00\u7ffb\u8bd1\u6587\u4ef6",children:[{value:"21.6.1 \u5728 Resources \u6587\u4ef6\u5939\u4e2d\u521b\u5efa\u8bed\u8a00\u6587\u4ef6",id:"2161-\u5728-resources-\u6587\u4ef6\u5939\u4e2d\u521b\u5efa\u8bed\u8a00\u6587\u4ef6",children:[]}]},{value:"21.7 \u5207\u6362\u8bed\u8a00",id:"217-\u5207\u6362\u8bed\u8a00",children:[{value:"21.7.1 URL \u53c2\u6570 \u65b9\u5f0f",id:"2171-url-\u53c2\u6570-\u65b9\u5f0f",children:[]},{value:"21.7.2 Cookies \u65b9\u5f0f",id:"2172-cookies-\u65b9\u5f0f",children:[]},{value:"21.7.3 \u5ba2\u6237\u7aef\u6d4f\u89c8\u5668\u8bed\u8a00\u81ea\u52a8\u5207\u6362",id:"2173-\u5ba2\u6237\u7aef\u6d4f\u89c8\u5668\u8bed\u8a00\u81ea\u52a8\u5207\u6362",children:[]}]},{value:"21.8 \u4f9d\u8d56\u6ce8\u5165\u65b9\u5f0f\u4f7f\u7528",id:"218-\u4f9d\u8d56\u6ce8\u5165\u65b9\u5f0f\u4f7f\u7528",children:[]},{value:"21.9 LocalizationSettings \u914d\u7f6e",id:"219-localizationsettings-\u914d\u7f6e",children:[]},{value:"21.10 \u533a\u57df\u7801\u5217\u8868",id:"2110-\u533a\u57df\u7801\u5217\u8868",children:[]},{value:"21.11 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"2111-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],N={toc:k};function s(e){var t=e.components,a=(0,l.Z)(e,p);return(0,i.kt)("wrapper",(0,n.Z)({},N,a,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"211-\u5168\u7403\u5316\u548c\u672c\u5730\u5316"},"21.1 \u5168\u7403\u5316\u548c\u672c\u5730\u5316"),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"\u5168\u7403\u5316")," \u662f\u8bbe\u8ba1\u652f\u6301\u4e0d\u540c\u533a\u57df\u6027\u7684\u5e94\u7528\u7a0b\u5e8f\u7684\u8fc7\u7a0b\u3002 \u5168\u7403\u5316\u6dfb\u52a0\u4e86\u5bf9\u4e00\u7ec4\u6709\u5173\u7279\u5b9a\u5730\u7406\u533a\u57df\u7684\u5df2\u5b9a\u4e49\u8bed\u8a00\u811a\u672c\u7684\u8f93\u5165\u3001\u663e\u793a\u548c\u8f93\u51fa\u652f\u6301\u3002"),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"\u672c\u5730\u5316")," \u662f\u5c06\u5df2\u7ecf\u9488\u5bf9\u53ef\u672c\u5730\u5316\u6027\u8fdb\u884c\u5904\u7406\u7684\u5168\u7403\u5316\u5e94\u7528\u8c03\u6574\u4e3a\u7279\u5b9a\u7684\u533a\u57df\u6027/\u533a\u57df\u8bbe\u7f6e\u7684\u8fc7\u7a0b\u3002"),(0,i.kt)("p",null,"\u901a\u4fd7\u6765\u8bf4\uff0c\u5c31\u662f\u4f7f\u5e94\u7528\u6216\u7cfb\u7edf\u652f\u6301\u591a\u8bed\u8a00\u5207\u6362\u3002",(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u4e86\u5b8c\u6574\u652f\u6301\u591a\u8bed\u8a00\u5904\u7406\u7684\u670d\u52a1\u3002"),(0,i.kt)("h2",{id:"212-\u6ce8\u518c\u670d\u52a1"},"21.2 \u6ce8\u518c\u670d\u52a1"),(0,i.kt)("p",null,"\u5728\u4f7f\u7528\u591a\u8bed\u8a00\u670d\u52a1\u4e4b\u524d\uff0c\u5fc5\u987b\u5148\u6ce8\u518c\u670d\u52a1\uff0c\u5982\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{4,14-15}","{4,14-15}":!0},"public void ConfigureServices(IServiceCollection services)\n{\n services.AddControllersWithViews()\n .AddAppLocalization(); // \u6ce8\u518c\u591a\u8bed\u8a00\n}\n\npublic void Configure(IApplicationBuilder app, IWebHostEnvironment env)\n{\n if (env.IsDevelopment())\n {\n app.UseDeveloperExceptionPage();\n }\n\n // \u914d\u7f6e\u591a\u8bed\u8a00\uff0c\u5fc5\u987b\u5728 \u8def\u7531\u6ce8\u518c\u4e4b\u524d\n app.UseAppLocalization();\n\n app.UseStaticFiles();\n app.UseRouting();\n\n // \u5176\u4ed6\u4e2d\u95f4\u4ef6\n}\n")),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u6ce8\u610f")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},(0,i.kt)("inlineCode",{parentName:"p"},"app.UseAppLocalization();")," \u5fc5\u987b\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"app.UseRouting();")," \u4e4b\u524d\u6ce8\u518c\u3002"))),(0,i.kt)("h2",{id:"213-\u5982\u4f55\u4f7f\u7528"},"21.3 \u5982\u4f55\u4f7f\u7528"),(0,i.kt)("h3",{id:"2131-\u914d\u7f6e-localizationsettings"},"21.3.1 \u914d\u7f6e ",(0,i.kt)("inlineCode",{parentName:"h3"},"LocalizationSettings")),(0,i.kt)("p",null,"\u6dfb\u52a0 ",(0,i.kt)("inlineCode",{parentName:"p"},"LocalizationSettings")," \u914d\u7f6e\u9009\u9879\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-json",metastring:"{2,3}","{2,3}":!0},'{\n "LocalizationSettings": {\n "SupportedCultures": ["zh-CN", "en-US"], // \u914d\u7f6e\u652f\u6301\u7684\u8bed\u8a00\u5217\u8868\n "DefaultCulture": "zh-CN" // \u914d\u7f6e\u9ed8\u8ba4\u8bed\u8a00\uff0c\u5982\u679c\u4e0d\u914d\u7f6e\uff0c\u53d6 SupportedCultures \u7684\u7b2c\u4e00\u9879\n }\n}\n')),(0,i.kt)("h3",{id:"2132-\u521b\u5efa-resources-\u6587\u4ef6\u5939"},"21.3.2 \u521b\u5efa ",(0,i.kt)("inlineCode",{parentName:"h3"},"Resources")," \u6587\u4ef6\u5939"),(0,i.kt)("p",null,"\u63a5\u4e0b\u6765\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Web\u542f\u52a8\u9879\u76ee\u5c42")," \u6dfb\u52a0 ",(0,i.kt)("inlineCode",{parentName:"p"},"Resources")," \u6587\u4ef6\u5939\uff0c\u5982\u56fe\uff1a\uff08",(0,i.kt)("strong",{parentName:"p"},"\u53ef\u914d\u7f6e\u653e\u7f6e\u4efb\u610f\u5c42\uff0c\u89c1\u914d\u7f6e ",(0,i.kt)("inlineCode",{parentName:"strong"},"AssemblyName")),"\uff09"),(0,i.kt)("img",{src:(0,r.Z)("img/lang1.png")}),(0,i.kt)("h2",{id:"214-l-\u9759\u6001\u7c7b"},"21.4 ",(0,i.kt)("inlineCode",{parentName:"h2"},"L")," \u9759\u6001\u7c7b"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e3b\u8981\u901a\u8fc7 ",(0,i.kt)("inlineCode",{parentName:"p"},"L")," \u9759\u6001\u7c7b\u5b8c\u6574\u591a\u8bed\u8a00\u8f6c\u6362\uff0c\u8be5\u9759\u6001\u7c7b\u6709\u4ee5\u4e0b\u5c5e\u6027\u548c\u65b9\u6cd5\uff1a"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"L.Text[\u6587\u672c]"),"\uff1a\u8f6c\u6362\u6587\u672c\u591a\u8bed\u8a00"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"L.Html[HTML\u4ee3\u7801, \u683c\u5f0f\u5316]"),"\uff1a\u8f6c\u6362 ",(0,i.kt)("inlineCode",{parentName:"li"},"Html")," \u591a\u8bed\u8a00"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"L.SetCulture(\u533a\u57df\u7801)"),"\uff1a\u8bbe\u7f6e\u5f53\u524d\u8bed\u8a00\u533a\u57df"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"L.GetSelectCulture()"),"\uff1a\u83b7\u53d6\u5f53\u524d\u7684\u8bed\u8a00\u533a\u57df"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"L.GetCultures()"),"\uff1a\u83b7\u53d6\u7cfb\u7edf\u652f\u6301\u7684\u591a\u8bed\u8a00\u5217\u8868")),(0,i.kt)("h2",{id:"215-\u4f7f\u7528\u4f8b\u5b50"},"21.5 \u4f7f\u7528\u4f8b\u5b50"),(0,i.kt)("p",null,"\u901a\u8fc7\u4e0a\u9762\u7684\u914d\u7f6e\u6b65\u9aa4\u4e4b\u540e\uff0c\u6211\u4eec\u5c31\u53ef\u4ee5\u901a\u8fc7 ",(0,i.kt)("inlineCode",{parentName:"p"},"L")," \u9759\u6001\u7c7b\u5728\u4ee3\u7801\u4efb\u4f55\u4f4d\u7f6e\u4f7f\u7528\u4e86\uff0c\u5982\uff1a"),(0,i.kt)("h3",{id:"2151-\u5728\u7c7b\u4e2d\u4f7f\u7528"},"21.5.1 \u5728\u7c7b\u4e2d\u4f7f\u7528"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// \u6587\u672c\u591a\u8bed\u8a00\nvar apiInterface = L.Text["API \u63a5\u53e3"];\nvar sourceCode = L.Text["\u6e90\u7801\u5730\u5740"];\n\n// HTML \u6807\u8bb0\u591a\u8bed\u8a00\nvar name = L.Html["Hello {0}", name];\n')),(0,i.kt)("h3",{id:"2152-\u5728\u89c6\u56fe\u4e2d\u4f7f\u7528"},"21.5.2 \u5728\u89c6\u56fe\u4e2d\u4f7f\u7528"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-html",metastring:"{1,6,9}","{1,6,9}":!0},'@using Furion.Localization\n\n
\n

\u8ba9 .NET \u5f00\u53d1\u66f4\u7b80\u5355\uff0c\u66f4\u901a\u7528\uff0c\u66f4\u6d41\u884c\u3002

\n

\n @L.Text["API \u63a5\u53e3"]      @L.Text["\u6e90\u7801\u5730\u5740"]\n

\n
\n')),(0,i.kt)("h3",{id:"2153-\u5728\u9a8c\u8bc1\u7279\u6027\u4e2d\u4f7f\u7528"},"21.5.3 \u5728\u9a8c\u8bc1\u7279\u6027\u4e2d\u4f7f\u7528"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'[Required(ErrorMessage = "\u5fc5\u586b\u6d88\u606f")]\n')),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"\u6240\u6709\u9a8c\u8bc1\u7279\u6027\u5df2\u7ecf\u81ea\u52a8\u652f\u6301\u591a\u8bed\u8a00\u914d\u7f6e\u4e86\uff0c\u65e0\u9700\u901a\u8fc7 ",(0,i.kt)("inlineCode",{parentName:"strong"},"L.Text[]")," \u8c03\u7528\u3002")),(0,i.kt)("h3",{id:"2154-\u5728\u5f02\u5e38\u6d88\u606f\u4e2d\u4f7f\u7528"},"21.5.4 \u5728\u5f02\u5e38\u6d88\u606f\u4e2d\u4f7f\u7528"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{8}","{8}":!0},'using Furion.FriendlyException;\n\nnamespace Furion.Application\n{\n [ErrorCodeType]\n public enum ErrorCodes\n {\n [ErrorCodeItemMetadata("\u7528\u6237\u540d\u4e0d\u80fd\u4e3a\u7a7a")]\n z1000\n }\n}\n')),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"\u6240\u6709\u5f02\u5e38\u6d88\u606f\u7279\u6027\u5df2\u7ecf\u81ea\u52a8\u652f\u6301\u591a\u8bed\u8a00\u914d\u7f6e\u4e86\uff0c\u65e0\u9700\u901a\u8fc7 ",(0,i.kt)("inlineCode",{parentName:"strong"},"L.Text[]")," \u8c03\u7528\u3002")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"throw Oops.Oh(ErrorCodes.z1000); // \u81ea\u52a8\u5e94\u7528\u591a\u8bed\u8a00\n")),(0,i.kt)("h2",{id:"216-\u521b\u5efa\u8bed\u8a00\u7ffb\u8bd1\u6587\u4ef6"},"21.6 \u521b\u5efa\u8bed\u8a00\u7ffb\u8bd1\u6587\u4ef6"),(0,i.kt)("p",null,"\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\uff0c\u5982\u679c\u6ca1\u627e\u5230\u5bf9\u5e94\u7684\u8bed\u8a00\u7ffb\u8bd1\u6587\u4ef6\uff0c\u5219\u81ea\u52a8\u663e\u793a\u5b57\u7b26\u4e32\u6587\u672c\uff0c\u5982\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'L.Text["\u6ca1\u627e\u5230"]; // => \u5982\u679c\u8bbe\u7f6e\u4e3a\u82f1\u6587\uff0c\u4f46\u662f\u6ca1\u6709\u6587\u4ef6\uff0c\u5219\u76f4\u63a5\u8f93\u51fa \u201c\u6ca1\u627e\u5230\u201d\n')),(0,i.kt)("h3",{id:"2161-\u5728-resources-\u6587\u4ef6\u5939\u4e2d\u521b\u5efa\u8bed\u8a00\u6587\u4ef6"},"21.6.1 \u5728 ",(0,i.kt)("inlineCode",{parentName:"h3"},"Resources")," \u6587\u4ef6\u5939\u4e2d\u521b\u5efa\u8bed\u8a00\u6587\u4ef6"),(0,i.kt)("p",null,"\u63a5\u4e0b\u6765\uff0c\u6211\u4eec\u53ea\u9700\u8981\u5728\u521a\u521a\u7684 ",(0,i.kt)("inlineCode",{parentName:"p"},"Resources")," \u6587\u4ef6\u5939\u4e2d\u6dfb\u52a0 ",(0,i.kt)("inlineCode",{parentName:"p"},"\u8d44\u6e90\u6587\u4ef6")," \u5373\u53ef\uff0c\u8d44\u6e90\u6587\u4ef6\u547d\u540d\u89c4\u5219\uff1a",(0,i.kt)("inlineCode",{parentName:"p"},"Lang.\u533a\u57df\u7801.resx"),"\uff0c\u5982\uff1a",(0,i.kt)("inlineCode",{parentName:"p"},"Lang.en-US.resx"),"\u3002"),(0,i.kt)("img",{src:(0,r.Z)("img/lang2.png")}),(0,i.kt)("img",{src:(0,r.Z)("img/lang3.png")}),(0,i.kt)("p",null),(0,i.kt)("p",null,"\u63a5\u4e0b\u6765\uff0c\u53ea\u9700\u8981\u628a\u5bf9\u5e94\u8bed\u8a00\u7248\u672c\u7684\u952e\u503c\u5bf9\u586b\u5199\u5373\u53ef\u3002"),(0,i.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u81ea\u5b9a\u4e49\u8d44\u6e90\u6587\u4ef6\u540d\u6216\u5b58\u653e\u7a0b\u5e8f\u96c6")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c\u8d44\u6e90\u6587\u4ef6\u540d\u5fc5\u987b\u4ee5 ",(0,i.kt)("inlineCode",{parentName:"p"},"Lang")," \u5f00\u5934\uff0c\u4e14\u53ea\u80fd\u653e\u5728\u542f\u52a8\u5c42\uff0c\u5982\u679c\u9700\u8981\u81ea\u5b9a\u4e49\uff0c\u6dfb\u52a0\u914d\u7f6e\u6587\u4ef6\u5373\u53ef"),(0,i.kt)("pre",{parentName:"div"},(0,i.kt)("code",{parentName:"pre",className:"language-json"},'{\n "LocalizationSettings": {\n "LanguageFilePrefix": "MyLang"\n // "AssemblyName": "\u4f60\u7684\u5176\u4ed6\u5c42\u7a0b\u5e8f\u96c6\u540d\u79f0"\n }\n}\n')),(0,i.kt)("p",{parentName:"div"},"\u4e4b\u540e\uff0c\u5c31\u53ef\u4ee5\uff1a",(0,i.kt)("inlineCode",{parentName:"p"},"MyLang.\u533a\u57df\u7801.resx"),"\u3002"))),(0,i.kt)("h2",{id:"217-\u5207\u6362\u8bed\u8a00"},"21.7 \u5207\u6362\u8bed\u8a00"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u63d0\u4f9b\u4e86\u4e09\u79cd\u8bed\u8a00\u5207\u6362\u65b9\u5f0f\u8fdb\u884c\u5207\u6362\u8bed\u8a00\uff1a"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"URL \u53c2\u6570")," \u65b9\u5f0f\uff1a ",(0,i.kt)("inlineCode",{parentName:"li"},"?culture=en-US"),"\uff0c",(0,i.kt)("strong",{parentName:"li"},"\u6b64\u65b9\u5f0f\u4f18\u5148\u7ea7\u6700\u9ad8"),"\uff0c\u683c\u5f0f\u4e3a\uff1a",(0,i.kt)("inlineCode",{parentName:"li"},"culture=\u533a\u57df\u7801")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"Cookies")," \u65b9\u5f0f\uff1a\u8c03\u7528 ",(0,i.kt)("inlineCode",{parentName:"li"},"L.SetCulture(\u533a\u57df\u7801)")," \u65b9\u5f0f\u5207\u6362"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"\u5ba2\u6237\u7aef\u6d4f\u89c8\u5668\u8bed\u8a00\u81ea\u52a8\u5339\u914d"),"\uff1a\u5982\u679c\u524d\u9762\u4e24\u79cd\u65b9\u5f0f\u90fd\u6ca1\u6709\u8bbe\u7f6e\uff0c",(0,i.kt)("strong",{parentName:"li"},"\u652f\u6301\u81ea\u52a8\u6839\u636e\u5ba2\u6237\u7aef\u6d4f\u89c8\u5668\u8bed\u8a00\u8fdb\u884c\u5339\u914d\u3002"))),(0,i.kt)("h3",{id:"2171-url-\u53c2\u6570-\u65b9\u5f0f"},"21.7.1 ",(0,i.kt)("inlineCode",{parentName:"h3"},"URL \u53c2\u6570")," \u65b9\u5f0f"),(0,i.kt)("img",{src:(0,r.Z)("img/lang4.gif")}),(0,i.kt)("h3",{id:"2172-cookies-\u65b9\u5f0f"},"21.7.2 ",(0,i.kt)("inlineCode",{parentName:"h3"},"Cookies")," \u65b9\u5f0f"),(0,i.kt)("p",null,"\u6b64\u65b9\u5f0f\u53ea\u9700\u8981\u63d0\u4f9b\u4e00\u4e2a ",(0,i.kt)("inlineCode",{parentName:"p"},"api")," \u6216\u8bbe\u7f6e\u4ee3\u7801\u5373\u53ef\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'L.SetCulture("en-US"); // en-US \u4e5f\u53ef\u4ee5\u901a\u8fc7\u524d\u7aef\u4f20\u9012\u8fc7\u6765\uff0c\u8fd9\u6837\u5c31\u53ef\u4ee5\u4e0d\u7528 `culture` \u53c2\u6570\u4e86\uff0c\u53ef\u4ee5\u81ea\u5b9a\u4e49\u53c2\u6570\u3002\n')),(0,i.kt)("p",null,"\u8fd9\u6837\u5c31\u53ef\u4ee5\u76f4\u63a5\u6839\u636e\u5ba2\u6237\u7aef\u5b58\u50a8\u7684 ",(0,i.kt)("inlineCode",{parentName:"p"},"cookies")," \u81ea\u52a8\u5207\u6362\u4e86\u3002"),(0,i.kt)("h3",{id:"2173-\u5ba2\u6237\u7aef\u6d4f\u89c8\u5668\u8bed\u8a00\u81ea\u52a8\u5207\u6362"},"21.7.3 ",(0,i.kt)("inlineCode",{parentName:"h3"},"\u5ba2\u6237\u7aef\u6d4f\u89c8\u5668\u8bed\u8a00\u81ea\u52a8\u5207\u6362")),(0,i.kt)("p",null,"\u63a8\u8350\u6b64\u65b9\u5f0f\uff0c\u53ef\u4ee5\u81ea\u52a8\u6839\u636e\u6d4f\u89c8\u5668\u7684\u8bed\u8a00\u81ea\u52a8\u914d\u7f6e\uff1a"),(0,i.kt)("img",{src:(0,r.Z)("img/lang5.gif")}),(0,i.kt)("h2",{id:"218-\u4f9d\u8d56\u6ce8\u5165\u65b9\u5f0f\u4f7f\u7528"},"21.8 \u4f9d\u8d56\u6ce8\u5165\u65b9\u5f0f\u4f7f\u7528"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e5f\u517c\u5bb9 ",(0,i.kt)("inlineCode",{parentName:"p"},".NET Core")," \u81ea\u5e26\u7684\u4f9d\u8d56\u6ce8\u5165\u65b9\u5f0f\uff0c\u5982\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{3,5,7,12}","{3,5,7,12}":!0},' public class TestController : Controller\n {\n private readonly IStringLocalizer _localizer;\n\n public TestController(IStringLocalizerFactory factory)\n {\n _localizer = factory.Create();\n }\n\n public IActionResult About()\n {\n ViewData["Message"] = _localizer["Your application description page."];\n }\n }\n')),(0,i.kt)("h2",{id:"219-localizationsettings-\u914d\u7f6e"},"21.9 ",(0,i.kt)("inlineCode",{parentName:"h2"},"LocalizationSettings")," \u914d\u7f6e"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"LocalizationSettings")," \u591a\u8bed\u8a00\u914d\u7f6e\u6839\u8282\u70b9",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"ResourcesPath"),"\uff1a\u8d44\u6e90\u76ee\u5f55\uff0c",(0,i.kt)("inlineCode",{parentName:"li"},"string")," \u7c7b\u578b\uff0c\u9ed8\u8ba4 ",(0,i.kt)("inlineCode",{parentName:"li"},"Resources")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"SupportedCultures"),"\uff1a\u652f\u6301\u7684\u8bed\u8a00\u533a\u57df\u7801\u7c7b\u522b\uff0c",(0,i.kt)("inlineCode",{parentName:"li"},"string[]")," \u7c7b\u578b"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"DefaultCulture"),"\uff1a\u9ed8\u8ba4\u8bed\u8a00\u533a\u57df\u7801\uff0c\u5982\u679c\u4e3a\u7a7a\uff0c\u5219\u53d6 ",(0,i.kt)("inlineCode",{parentName:"li"},"SupportedCultures")," \u7b2c\u4e00\u9879"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"LanguageFilePrefix"),"\uff1a\u914d\u7f6e\u8d44\u6e90\u6587\u4ef6\u524d\u7f00\uff0c",(0,i.kt)("inlineCode",{parentName:"li"},"string")," \u7c7b\u578b\uff0c\u9ed8\u8ba4 ",(0,i.kt)("inlineCode",{parentName:"li"},"Lang")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"AssemblyName"),"\uff1a\u914d\u7f6e\u8d44\u6e90\u6587\u4ef6\u5b58\u653e\u7a0b\u5e8f\u96c6\u540d\uff0c",(0,i.kt)("inlineCode",{parentName:"li"},"string")," \u7c7b\u578b\uff0c\u9ed8\u8ba4 ",(0,i.kt)("inlineCode",{parentName:"li"},"\u542f\u52a8\u5c42")," \u540d\u79f0")))),(0,i.kt)("h2",{id:"2110-\u533a\u57df\u7801\u5217\u8868"},"21.10 \u533a\u57df\u7801\u5217\u8868"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"af \u516c\u7528\u8377\u5170\u8bed"),(0,i.kt)("li",{parentName:"ul"},"af-ZA \u516c\u7528\u8377\u5170\u8bed - \u5357\u975e"),(0,i.kt)("li",{parentName:"ul"},"sq \u963f\u5c14\u5df4\u5c3c\u4e9a"),(0,i.kt)("li",{parentName:"ul"},"sq-AL \u963f\u5c14\u5df4\u5c3c\u4e9a -\u963f\u5c14\u5df4\u5c3c\u4e9a"),(0,i.kt)("li",{parentName:"ul"},"ar \u963f\u62c9\u4f2f\u8bed"),(0,i.kt)("li",{parentName:"ul"},"ar-DZ \u963f\u62c9\u4f2f\u8bed -\u963f\u5c14\u53ca\u5229\u4e9a"),(0,i.kt)("li",{parentName:"ul"},"ar-BH \u963f\u62c9\u4f2f\u8bed -\u5df4\u6797"),(0,i.kt)("li",{parentName:"ul"},"ar-EG \u963f\u62c9\u4f2f\u8bed -\u57c3\u53ca"),(0,i.kt)("li",{parentName:"ul"},"ar-IQ \u963f\u62c9\u4f2f\u8bed -\u4f0a\u62c9\u514b"),(0,i.kt)("li",{parentName:"ul"},"ar-JO \u963f\u62c9\u4f2f\u8bed -\u7ea6\u65e6"),(0,i.kt)("li",{parentName:"ul"},"ar-KW \u963f\u62c9\u4f2f\u8bed -\u79d1\u5a01\u7279"),(0,i.kt)("li",{parentName:"ul"},"ar-LB \u963f\u62c9\u4f2f\u8bed -\u9ece\u5df4\u5ae9"),(0,i.kt)("li",{parentName:"ul"},"ar-LY \u963f\u62c9\u4f2f\u8bed -\u5229\u6bd4\u4e9a"),(0,i.kt)("li",{parentName:"ul"},"ar-MA \u963f\u62c9\u4f2f\u8bed -\u6469\u6d1b\u54e5"),(0,i.kt)("li",{parentName:"ul"},"ar-OM \u963f\u62c9\u4f2f\u8bed -\u963f\u66fc"),(0,i.kt)("li",{parentName:"ul"},"ar-QA \u963f\u62c9\u4f2f\u8bed -\u5361\u5854\u5c14"),(0,i.kt)("li",{parentName:"ul"},"ar-SA \u963f\u62c9\u4f2f\u8bed - \u6c99\u7279\u963f\u62c9\u4f2f"),(0,i.kt)("li",{parentName:"ul"},"ar-SY \u963f\u62c9\u4f2f\u8bed -\u53d9\u5229\u4e9a\u5171\u548c\u56fd"),(0,i.kt)("li",{parentName:"ul"},"ar-TN \u963f\u62c9\u4f2f\u8bed -\u5317\u975e\u7684\u5171\u548c\u56fd"),(0,i.kt)("li",{parentName:"ul"},"ar-AE \u963f\u62c9\u4f2f\u8bed - \u963f\u62c9\u4f2f\u8054\u5408\u914b\u957f\u56fd"),(0,i.kt)("li",{parentName:"ul"},"ar-YE \u963f\u62c9\u4f2f\u8bed -\u4e5f\u95e8"),(0,i.kt)("li",{parentName:"ul"},"hy \u4e9a\u7f8e\u5c3c\u4e9a"),(0,i.kt)("li",{parentName:"ul"},"hy-AM \u4e9a\u7f8e\u5c3c\u4e9a\u7684 -\u4e9a\u7f8e\u5c3c\u4e9a"),(0,i.kt)("li",{parentName:"ul"},"az Azeri"),(0,i.kt)("li",{parentName:"ul"},"az-AZ-Cyrl Azeri-(\u897f\u91cc\u5c14\u5b57\u6bcd\u7684) \u963f\u585e\u62dc\u7586"),(0,i.kt)("li",{parentName:"ul"},"az-AZ-Latn Azeri(\u62c9\u4e01\u6587)- \u963f\u585e\u62dc\u7586"),(0,i.kt)("li",{parentName:"ul"},"eu \u5df4\u65af\u514b"),(0,i.kt)("li",{parentName:"ul"},"eu-ES \u5df4\u65af\u514b -\u5df4\u65af\u514b"),(0,i.kt)("li",{parentName:"ul"},"be Belarusian"),(0,i.kt)("li",{parentName:"ul"},"be-BY Belarusian-\u767d\u4fc4\u7f57\u65af"),(0,i.kt)("li",{parentName:"ul"},"bg \u4fdd\u52a0\u5229\u4e9a"),(0,i.kt)("li",{parentName:"ul"},"bg-BG \u4fdd\u52a0\u5229\u4e9a -\u4fdd\u52a0\u5229\u4e9a"),(0,i.kt)("li",{parentName:"ul"},"ca \u5609\u6cf0\u7f57\u5c3c\u4e9a"),(0,i.kt)("li",{parentName:"ul"},"ca-ES \u5609\u6cf0\u7f57\u5c3c\u4e9a -\u5609\u6cf0\u7f57\u5c3c\u4e9a"),(0,i.kt)("li",{parentName:"ul"},"zh-HK \u534e - \u9999\u6e2f\u7684 SAR"),(0,i.kt)("li",{parentName:"ul"},"zh-MO \u534e - \u6fb3\u95e8\u7684 SAR"),(0,i.kt)("li",{parentName:"ul"},"zh-CN \u534e -\u4e2d\u56fd"),(0,i.kt)("li",{parentName:"ul"},"zh-CHS \u534e (\u5355\u4e00\u5316)"),(0,i.kt)("li",{parentName:"ul"},"zh-SG \u534e -\u65b0\u52a0\u5761"),(0,i.kt)("li",{parentName:"ul"},"zh-TW \u534e -\u53f0\u6e7e"),(0,i.kt)("li",{parentName:"ul"},"zh-CHT \u534e (\u4f20\u7edf\u7684)"),(0,i.kt)("li",{parentName:"ul"},"hr \u514b\u7f57\u57c3\u897f\u4e9a"),(0,i.kt)("li",{parentName:"ul"},"hr-HR \u514b\u7f57\u57c3\u897f\u4e9a -\u514b\u7f57\u57c3\u897f\u4e9a"),(0,i.kt)("li",{parentName:"ul"},"cs \u6377\u514b"),(0,i.kt)("li",{parentName:"ul"},"cs-CZ \u6377\u514b - \u6377\u514b"),(0,i.kt)("li",{parentName:"ul"},"da \u4e39\u9ea6\u6587"),(0,i.kt)("li",{parentName:"ul"},"da-DK \u4e39\u9ea6\u6587 -\u4e39\u9ea6"),(0,i.kt)("li",{parentName:"ul"},"div Dhivehi"),(0,i.kt)("li",{parentName:"ul"},"div-MV Dhivehi-\u9a6c\u5c14\u4ee3\u592b"),(0,i.kt)("li",{parentName:"ul"},"nl \u8377\u5170"),(0,i.kt)("li",{parentName:"ul"},"nl-BE \u8377\u5170 -\u6bd4\u5229\u65f6"),(0,i.kt)("li",{parentName:"ul"},"nl-NL \u8377\u5170 - \u8377\u5170"),(0,i.kt)("li",{parentName:"ul"},"en \u82f1\u56fd"),(0,i.kt)("li",{parentName:"ul"},"en-AU \u82f1\u56fd -\u6fb3\u6d32"),(0,i.kt)("li",{parentName:"ul"},"en-BZ \u82f1\u56fd -\u4f2f\u5229\u5179"),(0,i.kt)("li",{parentName:"ul"},"en-CA \u82f1\u56fd -\u52a0\u62ff\u5927"),(0,i.kt)("li",{parentName:"ul"},"en-CB \u82f1\u56fd -\u52a0\u52d2\u6bd4\u6d77"),(0,i.kt)("li",{parentName:"ul"},"en-IE \u82f1\u56fd -\u7231\u5c14\u5170"),(0,i.kt)("li",{parentName:"ul"},"en-JM \u82f1\u56fd -\u7259\u4e70\u52a0"),(0,i.kt)("li",{parentName:"ul"},"en-NZ \u82f1\u56fd - \u65b0\u897f\u5170"),(0,i.kt)("li",{parentName:"ul"},"en-PH \u82f1\u56fd -\u83f2\u5f8b\u5bbe\u5171\u548c\u56fd"),(0,i.kt)("li",{parentName:"ul"},"en-ZA \u82f1\u56fd - \u5357\u975e"),(0,i.kt)("li",{parentName:"ul"},"en-TT \u82f1\u56fd - \u5343\u91cc\u8fbe\u6258\u8d1d\u54e5\u5171\u548c\u56fd"),(0,i.kt)("li",{parentName:"ul"},"en-GB \u82f1\u56fd - \u82f1\u56fd"),(0,i.kt)("li",{parentName:"ul"},"en-US \u82f1\u56fd - \u7f8e\u56fd"),(0,i.kt)("li",{parentName:"ul"},"en-ZW \u82f1\u56fd -\u6d25\u5df4\u5e03\u97e6"),(0,i.kt)("li",{parentName:"ul"},"et \u7231\u6c99\u5c3c\u4e9a"),(0,i.kt)("li",{parentName:"ul"},"et-EE \u7231\u6c99\u5c3c\u4e9a\u7684 -\u7231\u6c99\u5c3c\u4e9a"),(0,i.kt)("li",{parentName:"ul"},"fo Faroese"),(0,i.kt)("li",{parentName:"ul"},"fo-FO Faroese- \u6cd5\u7f57\u7fa4\u5c9b"),(0,i.kt)("li",{parentName:"ul"},"fa \u6ce2\u65af\u8bed"),(0,i.kt)("li",{parentName:"ul"},"fa-IR \u6ce2\u65af\u8bed -\u4f0a\u6717\u738b\u56fd"),(0,i.kt)("li",{parentName:"ul"},"fi \u82ac\u5170\u8bed"),(0,i.kt)("li",{parentName:"ul"},"fi-FI \u82ac\u5170\u8bed -\u82ac\u5170"),(0,i.kt)("li",{parentName:"ul"},"fr \u6cd5\u56fd"),(0,i.kt)("li",{parentName:"ul"},"fr-BE \u6cd5\u56fd -\u6bd4\u5229\u65f6"),(0,i.kt)("li",{parentName:"ul"},"fr-CA \u6cd5\u56fd -\u52a0\u62ff\u5927"),(0,i.kt)("li",{parentName:"ul"},"fr-FR \u6cd5\u56fd -\u6cd5\u56fd"),(0,i.kt)("li",{parentName:"ul"},"fr-LU \u6cd5\u56fd -\u5362\u68ee\u5821"),(0,i.kt)("li",{parentName:"ul"},"fr-MC \u6cd5\u56fd -\u6469\u7eb3\u54e5"),(0,i.kt)("li",{parentName:"ul"},"fr-CH \u6cd5\u56fd -\u745e\u58eb"),(0,i.kt)("li",{parentName:"ul"},"gl \u52a0\u5229\u897f\u4e9a"),(0,i.kt)("li",{parentName:"ul"},"gl-ES \u52a0\u5229\u897f\u4e9a -\u52a0\u5229\u897f\u4e9a"),(0,i.kt)("li",{parentName:"ul"},"ka \u683c\u9c81\u5409\u4e9a\u5dde"),(0,i.kt)("li",{parentName:"ul"},"ka-GE \u683c\u9c81\u5409\u4e9a\u5dde -\u683c\u9c81\u5409\u4e9a\u5dde"),(0,i.kt)("li",{parentName:"ul"},"de \u5fb7\u56fd"),(0,i.kt)("li",{parentName:"ul"},"de-AT \u5fb7\u56fd -\u5965\u5730\u5229"),(0,i.kt)("li",{parentName:"ul"},"de-DE \u5fb7\u56fd -\u5fb7\u56fd"),(0,i.kt)("li",{parentName:"ul"},"de-LI \u5fb7\u56fd -\u5217\u652f\u6566\u58eb\u767b"),(0,i.kt)("li",{parentName:"ul"},"de-LU \u5fb7\u56fd -\u5362\u68ee\u5821"),(0,i.kt)("li",{parentName:"ul"},"de-CH \u5fb7\u56fd -\u745e\u58eb"),(0,i.kt)("li",{parentName:"ul"},"el \u5e0c\u814a"),(0,i.kt)("li",{parentName:"ul"},"el-GR \u5e0c\u814a -\u5e0c\u814a"),(0,i.kt)("li",{parentName:"ul"},"gu Gujarati"),(0,i.kt)("li",{parentName:"ul"},"gu-IN Gujarati-\u5370\u5ea6"),(0,i.kt)("li",{parentName:"ul"},"he \u5e0c\u4f2f\u6765"),(0,i.kt)("li",{parentName:"ul"},"he-IL \u5e0c\u4f2f\u6765 -\u4ee5\u8272\u5217"),(0,i.kt)("li",{parentName:"ul"},"hi \u5317\u5370\u5ea6\u8bed"),(0,i.kt)("li",{parentName:"ul"},"hi-IN \u5317\u5370\u5ea6\u7684 -\u5370\u5ea6"),(0,i.kt)("li",{parentName:"ul"},"hu \u5308\u7259\u5229"),(0,i.kt)("li",{parentName:"ul"},"hu-HU \u5308\u7259\u5229\u7684 -\u5308\u7259\u5229"),(0,i.kt)("li",{parentName:"ul"},"is \u51b0\u5c9b\u8bed"),(0,i.kt)("li",{parentName:"ul"},"is-IS \u51b0\u5c9b\u7684 -\u51b0\u5c9b"),(0,i.kt)("li",{parentName:"ul"},"id \u5370\u5c3c"),(0,i.kt)("li",{parentName:"ul"},"id-ID \u5370\u5c3c -\u5370\u5c3c"),(0,i.kt)("li",{parentName:"ul"},"it \u610f\u5927\u5229"),(0,i.kt)("li",{parentName:"ul"},"it-IT \u610f\u5927\u5229 -\u610f\u5927\u5229"),(0,i.kt)("li",{parentName:"ul"},"it-CH \u610f\u5927\u5229 -\u745e\u58eb"),(0,i.kt)("li",{parentName:"ul"},"ja \u65e5\u672c"),(0,i.kt)("li",{parentName:"ul"},"ja-JP \u65e5\u672c -\u65e5\u672c"),(0,i.kt)("li",{parentName:"ul"},"kn \u5361\u7eb3\u8fbe\u8bed"),(0,i.kt)("li",{parentName:"ul"},"kn-IN \u5361\u7eb3\u8fbe\u8bed -\u5370\u5ea6"),(0,i.kt)("li",{parentName:"ul"},"kk Kazakh"),(0,i.kt)("li",{parentName:"ul"},"kk-KZ Kazakh-\u54c8\u8428\u514b"),(0,i.kt)("li",{parentName:"ul"},"kok Konkani"),(0,i.kt)("li",{parentName:"ul"},"kok-IN Konkani-\u5370\u5ea6"),(0,i.kt)("li",{parentName:"ul"},"ko \u97e9\u56fd"),(0,i.kt)("li",{parentName:"ul"},"ko-KR \u97e9\u56fd -\u97e9\u56fd"),(0,i.kt)("li",{parentName:"ul"},"ky Kyrgyz"),(0,i.kt)("li",{parentName:"ul"},"ky-KZ Kyrgyz-\u54c8\u8428\u514b"),(0,i.kt)("li",{parentName:"ul"},"lv \u62c9\u8131\u7ef4\u4e9a"),(0,i.kt)("li",{parentName:"ul"},"lv-LV \u62c9\u8131\u7ef4\u4e9a\u7684 -\u62c9\u8131\u7ef4\u4e9a"),(0,i.kt)("li",{parentName:"ul"},"lt \u7acb\u9676\u5b9b"),(0,i.kt)("li",{parentName:"ul"},"lt-LT \u7acb\u9676\u5b9b -\u7acb\u9676\u5b9b"),(0,i.kt)("li",{parentName:"ul"},"mk \u9a6c\u5176\u987f"),(0,i.kt)("li",{parentName:"ul"},"mk-MK \u9a6c\u5176\u987f -FYROM"),(0,i.kt)("li",{parentName:"ul"},"ms \u9a6c\u6765"),(0,i.kt)("li",{parentName:"ul"},"ms-BN \u9a6c\u6765 -\u6c76\u83b1"),(0,i.kt)("li",{parentName:"ul"},"ms-MY \u9a6c\u6765 -\u9a6c\u6765\u897f\u4e9a"),(0,i.kt)("li",{parentName:"ul"},"mr \u9a6c\u62c9\u5730\u8bed"),(0,i.kt)("li",{parentName:"ul"},"mr-IN \u9a6c\u62c9\u5730\u8bed -\u5370\u5ea6"),(0,i.kt)("li",{parentName:"ul"},"mn \u8499\u53e4"),(0,i.kt)("li",{parentName:"ul"},"mn-MN \u8499\u53e4 -\u8499\u53e4"),(0,i.kt)("li",{parentName:"ul"},"no \u632a\u5a01"),(0,i.kt)("li",{parentName:"ul"},"nb-NO \u632a\u5a01 (Bokm?l) - \u632a\u5a01"),(0,i.kt)("li",{parentName:"ul"},"nn-NO \u632a\u5a01 (Nynorsk)- \u632a\u5a01"),(0,i.kt)("li",{parentName:"ul"},"pl \u6ce2\u5170"),(0,i.kt)("li",{parentName:"ul"},"pl-PL \u6ce2\u5170 -\u6ce2\u5170"),(0,i.kt)("li",{parentName:"ul"},"pt \u8461\u8404\u7259"),(0,i.kt)("li",{parentName:"ul"},"pt-BR \u8461\u8404\u7259 -\u5df4\u897f"),(0,i.kt)("li",{parentName:"ul"},"pt-PT \u8461\u8404\u7259 -\u8461\u8404\u7259"),(0,i.kt)("li",{parentName:"ul"},"pa Punjab \u8bed"),(0,i.kt)("li",{parentName:"ul"},"pa-IN Punjab \u8bed -\u5370\u5ea6"),(0,i.kt)("li",{parentName:"ul"},"ro \u7f57\u9a6c\u5c3c\u4e9a\u8bed"),(0,i.kt)("li",{parentName:"ul"},"ro-RO \u7f57\u9a6c\u5c3c\u4e9a\u8bed -\u7f57\u9a6c\u5c3c\u4e9a"),(0,i.kt)("li",{parentName:"ul"},"ru \u4fc4\u56fd"),(0,i.kt)("li",{parentName:"ul"},"ru-RU \u4fc4\u56fd -\u4fc4\u56fd"),(0,i.kt)("li",{parentName:"ul"},"sa \u68b5\u6587"),(0,i.kt)("li",{parentName:"ul"},"sa-IN \u68b5\u6587 -\u5370\u5ea6"),(0,i.kt)("li",{parentName:"ul"},"sr-SP-Cyrl \u585e\u5c14\u7ef4\u4e9a -(\u897f\u91cc\u5c14\u5b57\u6bcd\u7684) \u585e\u5c14\u7ef4\u4e9a\u5171\u548c\u56fd"),(0,i.kt)("li",{parentName:"ul"},"sr-SP-Latn \u585e\u5c14\u7ef4\u4e9a (\u62c9\u4e01\u6587)- \u585e\u5c14\u7ef4\u4e9a\u5171\u548c\u56fd"),(0,i.kt)("li",{parentName:"ul"},"sk \u65af\u6d1b\u4f10\u514b"),(0,i.kt)("li",{parentName:"ul"},"sk-SK \u65af\u6d1b\u4f10\u514b -\u65af\u6d1b\u4f10\u514b"),(0,i.kt)("li",{parentName:"ul"},"sl \u65af\u6d1b\u6587\u5c3c\u4e9a"),(0,i.kt)("li",{parentName:"ul"},"sl-SI \u65af\u6d1b\u6587\u5c3c\u4e9a -\u65af\u6d1b\u6587\u5c3c\u4e9a"),(0,i.kt)("li",{parentName:"ul"},"es \u897f\u73ed\u7259"),(0,i.kt)("li",{parentName:"ul"},"es-AR \u897f\u73ed\u7259 -\u963f\u6839\u5ef7"),(0,i.kt)("li",{parentName:"ul"},"es-BO \u897f\u73ed\u7259 -\u73bb\u5229\u7ef4\u4e9a"),(0,i.kt)("li",{parentName:"ul"},"es-CL \u897f\u73ed\u7259 -\u667a\u5229"),(0,i.kt)("li",{parentName:"ul"},"es-CO \u897f\u73ed\u7259 -\u54e5\u4f26\u6bd4\u4e9a"),(0,i.kt)("li",{parentName:"ul"},"es-CR \u897f\u73ed\u7259 - \u54e5\u65af\u8fbe\u9ece\u52a0"),(0,i.kt)("li",{parentName:"ul"},"es-DO \u897f\u73ed\u7259 - \u591a\u7c73\u5c3c\u52a0\u5171\u548c\u56fd"),(0,i.kt)("li",{parentName:"ul"},"es-EC \u897f\u73ed\u7259 -\u5384\u74dc\u591a\u5c14"),(0,i.kt)("li",{parentName:"ul"},"es-SV \u897f\u73ed\u7259 - \u8428\u5c14\u74e6\u591a"),(0,i.kt)("li",{parentName:"ul"},"es-GT \u897f\u73ed\u7259 -\u5371\u5730\u9a6c\u62c9"),(0,i.kt)("li",{parentName:"ul"},"es-HN \u897f\u73ed\u7259 -\u6d2a\u90fd\u62c9\u65af"),(0,i.kt)("li",{parentName:"ul"},"es-MX \u897f\u73ed\u7259 -\u58a8\u897f\u54e5"),(0,i.kt)("li",{parentName:"ul"},"es-NI \u897f\u73ed\u7259 -\u5c3c\u52a0\u62c9\u74dc"),(0,i.kt)("li",{parentName:"ul"},"es-PA \u897f\u73ed\u7259 -\u5df4\u62ff\u9a6c"),(0,i.kt)("li",{parentName:"ul"},"es-PY \u897f\u73ed\u7259 -\u5df4\u62c9\u572d"),(0,i.kt)("li",{parentName:"ul"},"es-PE \u897f\u73ed\u7259 -\u79d8\u9c81"),(0,i.kt)("li",{parentName:"ul"},"es-PR \u897f\u73ed\u7259 - \u6ce2\u591a\u9ece\u5404"),(0,i.kt)("li",{parentName:"ul"},"es-ES \u897f\u73ed\u7259 -\u897f\u73ed\u7259"),(0,i.kt)("li",{parentName:"ul"},"es-UY \u897f\u73ed\u7259 -\u4e4c\u62c9\u572d"),(0,i.kt)("li",{parentName:"ul"},"es-VE \u897f\u73ed\u7259 -\u59d4\u5185\u745e\u62c9"),(0,i.kt)("li",{parentName:"ul"},"sw Swahili"),(0,i.kt)("li",{parentName:"ul"},"sw-KE Swahili-\u80af\u5c3c\u4e9a"),(0,i.kt)("li",{parentName:"ul"},"sv \u745e\u5178"),(0,i.kt)("li",{parentName:"ul"},"sv-FI \u745e\u5178 -\u82ac\u5170"),(0,i.kt)("li",{parentName:"ul"},"sv-SE \u745e\u5178 -\u745e\u5178"),(0,i.kt)("li",{parentName:"ul"},"syr Syriac"),(0,i.kt)("li",{parentName:"ul"},"syr-SY Syriac-\u53d9\u5229\u4e9a\u5171\u548c\u56fd"),(0,i.kt)("li",{parentName:"ul"},"ta \u5766\u7c73\u5c14"),(0,i.kt)("li",{parentName:"ul"},"ta-IN \u5766\u7c73\u5c14 -\u5370\u5ea6"),(0,i.kt)("li",{parentName:"ul"},"tt Tatar"),(0,i.kt)("li",{parentName:"ul"},"tt-RU Tatar-\u4fc4\u56fd"),(0,i.kt)("li",{parentName:"ul"},"te Telugu"),(0,i.kt)("li",{parentName:"ul"},"te-IN Telugu-\u5370\u5ea6"),(0,i.kt)("li",{parentName:"ul"},"th \u6cf0\u56fd"),(0,i.kt)("li",{parentName:"ul"},"th-TH \u6cf0\u56fd -\u6cf0\u56fd"),(0,i.kt)("li",{parentName:"ul"},"tr \u571f\u8033\u5176\u8bed"),(0,i.kt)("li",{parentName:"ul"},"tr-TR \u571f\u8033\u5176\u8bed -\u571f\u8033\u5176"),(0,i.kt)("li",{parentName:"ul"},"uk \u4e4c\u514b\u5170"),(0,i.kt)("li",{parentName:"ul"},"uk-UA \u4e4c\u514b\u5170 -\u4e4c\u514b\u5170"),(0,i.kt)("li",{parentName:"ul"},"ur Urdu"),(0,i.kt)("li",{parentName:"ul"},"ur-PK Urdu-\u5df4\u57fa\u65af\u5766"),(0,i.kt)("li",{parentName:"ul"},"uz Uzbek"),(0,i.kt)("li",{parentName:"ul"},"uz-UZ-Cyrl Uzbek-(\u897f\u91cc\u5c14\u5b57\u6bcd\u7684) \u4e4c\u5179\u522b\u514b\u65af\u5766"),(0,i.kt)("li",{parentName:"ul"},"uz-UZ-Latn Uzbek(\u62c9\u4e01\u6587)- \u4e4c\u5179\u522b\u514b\u65af\u5766"),(0,i.kt)("li",{parentName:"ul"},"vi \u8d8a\u5357"),(0,i.kt)("li",{parentName:"ul"},"vi-VN \u8d8a\u5357 -\u8d8a\u5357")),(0,i.kt)("h2",{id:"2111-\u53cd\u9988\u4e0e\u5efa\u8bae"},"21.11 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,i.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))),(0,i.kt)("hr",null),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e86\u89e3\u66f4\u591a")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u60f3\u4e86\u89e3\u66f4\u591a ",(0,i.kt)("inlineCode",{parentName:"p"},"\u591a\u8bed\u8a00")," \u77e5\u8bc6\u53ef\u67e5\u9605 ",(0,i.kt)("a",{parentName:"p",href:"https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/localization?view=aspnetcore-5.0"},"ASP.NET Core - \u5168\u5c40\u5316\u548c\u672c\u5730\u5316")," \u7ae0\u8282\u3002"))))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/d0a6dadf.ddb5d685.js b/handbook/build/assets/js/d0a6dadf.ddb5d685.js new file mode 100644 index 00000000000..9b01a3dbb84 --- /dev/null +++ b/handbook/build/assets/js/d0a6dadf.ddb5d685.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[8850],{3905:function(e,t,a){a.d(t,{Zo:function(){return o},kt:function(){return s}});var n=a(7294);function l(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function r(e){for(var t=1;t=0||(l[a]=e[a]);return l}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(l[a]=e[a])}return l}var u=n.createContext({}),m=function(e){var t=n.useContext(u),a=t;return e&&(a="function"==typeof e?e(t):r(r({},t),e)),a},o=function(e){var t=m(e.components);return n.createElement(u.Provider,{value:t},e.children)},k={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},N=n.forwardRef((function(e,t){var a=e.components,l=e.mdxType,i=e.originalType,u=e.parentName,o=p(e,["components","mdxType","originalType","parentName"]),N=m(a),s=l,d=N["".concat(u,".").concat(s)]||N[s]||k[s]||i;return a?n.createElement(d,r(r({ref:t},o),{},{components:a})):n.createElement(d,r({ref:t},o))}));function s(e,t){var a=arguments,l=t&&t.mdxType;if("string"==typeof e||l){var i=a.length,r=new Array(i);r[0]=N;var p={};for(var u in t)hasOwnProperty.call(t,u)&&(p[u]=t[u]);p.originalType=e,p.mdxType="string"==typeof e?e:l,r[1]=p;for(var m=2;mLocalizationSettings",id:"2131-\u914d\u7f6e-localizationsettings",children:[]},{value:"21.3.2 \u521b\u5efa Resources \u6587\u4ef6\u5939",id:"2132-\u521b\u5efa-resources-\u6587\u4ef6\u5939",children:[]}]},{value:"21.4 L \u9759\u6001\u7c7b",id:"214-l-\u9759\u6001\u7c7b",children:[]},{value:"21.5 \u4f7f\u7528\u4f8b\u5b50",id:"215-\u4f7f\u7528\u4f8b\u5b50",children:[{value:"21.5.1 \u5728\u7c7b\u4e2d\u4f7f\u7528",id:"2151-\u5728\u7c7b\u4e2d\u4f7f\u7528",children:[]},{value:"21.5.2 \u5728\u89c6\u56fe\u4e2d\u4f7f\u7528",id:"2152-\u5728\u89c6\u56fe\u4e2d\u4f7f\u7528",children:[]},{value:"21.5.3 \u5728\u9a8c\u8bc1\u7279\u6027\u4e2d\u4f7f\u7528",id:"2153-\u5728\u9a8c\u8bc1\u7279\u6027\u4e2d\u4f7f\u7528",children:[]},{value:"21.5.4 \u5728\u5f02\u5e38\u6d88\u606f\u4e2d\u4f7f\u7528",id:"2154-\u5728\u5f02\u5e38\u6d88\u606f\u4e2d\u4f7f\u7528",children:[]}]},{value:"21.6 \u521b\u5efa\u8bed\u8a00\u7ffb\u8bd1\u6587\u4ef6",id:"216-\u521b\u5efa\u8bed\u8a00\u7ffb\u8bd1\u6587\u4ef6",children:[{value:"21.6.1 \u5728 Resources \u6587\u4ef6\u5939\u4e2d\u521b\u5efa\u8bed\u8a00\u6587\u4ef6",id:"2161-\u5728-resources-\u6587\u4ef6\u5939\u4e2d\u521b\u5efa\u8bed\u8a00\u6587\u4ef6",children:[]}]},{value:"21.7 \u5207\u6362\u8bed\u8a00",id:"217-\u5207\u6362\u8bed\u8a00",children:[{value:"21.7.1 URL \u53c2\u6570 \u65b9\u5f0f",id:"2171-url-\u53c2\u6570-\u65b9\u5f0f",children:[]},{value:"21.7.2 Cookies \u65b9\u5f0f",id:"2172-cookies-\u65b9\u5f0f",children:[]},{value:"21.7.3 \u5ba2\u6237\u7aef\u6d4f\u89c8\u5668\u8bed\u8a00\u81ea\u52a8\u5207\u6362",id:"2173-\u5ba2\u6237\u7aef\u6d4f\u89c8\u5668\u8bed\u8a00\u81ea\u52a8\u5207\u6362",children:[]}]},{value:"21.8 \u4f9d\u8d56\u6ce8\u5165\u65b9\u5f0f\u4f7f\u7528",id:"218-\u4f9d\u8d56\u6ce8\u5165\u65b9\u5f0f\u4f7f\u7528",children:[]},{value:"21.9 LocalizationSettings \u914d\u7f6e",id:"219-localizationsettings-\u914d\u7f6e",children:[]},{value:"21.10 \u533a\u57df\u7801\u5217\u8868",id:"2110-\u533a\u57df\u7801\u5217\u8868",children:[]},{value:"21.11 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"2111-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],N={toc:k};function s(e){var t=e.components,a=(0,l.Z)(e,p);return(0,i.kt)("wrapper",(0,n.Z)({},N,a,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"211-\u5168\u7403\u5316\u548c\u672c\u5730\u5316"},"21.1 \u5168\u7403\u5316\u548c\u672c\u5730\u5316"),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"\u5168\u7403\u5316")," \u662f\u8bbe\u8ba1\u652f\u6301\u4e0d\u540c\u533a\u57df\u6027\u7684\u5e94\u7528\u7a0b\u5e8f\u7684\u8fc7\u7a0b\u3002 \u5168\u7403\u5316\u6dfb\u52a0\u4e86\u5bf9\u4e00\u7ec4\u6709\u5173\u7279\u5b9a\u5730\u7406\u533a\u57df\u7684\u5df2\u5b9a\u4e49\u8bed\u8a00\u811a\u672c\u7684\u8f93\u5165\u3001\u663e\u793a\u548c\u8f93\u51fa\u652f\u6301\u3002"),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"\u672c\u5730\u5316")," \u662f\u5c06\u5df2\u7ecf\u9488\u5bf9\u53ef\u672c\u5730\u5316\u6027\u8fdb\u884c\u5904\u7406\u7684\u5168\u7403\u5316\u5e94\u7528\u8c03\u6574\u4e3a\u7279\u5b9a\u7684\u533a\u57df\u6027/\u533a\u57df\u8bbe\u7f6e\u7684\u8fc7\u7a0b\u3002"),(0,i.kt)("p",null,"\u901a\u4fd7\u6765\u8bf4\uff0c\u5c31\u662f\u4f7f\u5e94\u7528\u6216\u7cfb\u7edf\u652f\u6301\u591a\u8bed\u8a00\u5207\u6362\u3002",(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u4e86\u5b8c\u6574\u652f\u6301\u591a\u8bed\u8a00\u5904\u7406\u7684\u670d\u52a1\u3002"),(0,i.kt)("h2",{id:"212-\u6ce8\u518c\u670d\u52a1"},"21.2 \u6ce8\u518c\u670d\u52a1"),(0,i.kt)("p",null,"\u5728\u4f7f\u7528\u591a\u8bed\u8a00\u670d\u52a1\u4e4b\u524d\uff0c\u5fc5\u987b\u5148\u6ce8\u518c\u670d\u52a1\uff0c\u5982\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{4,14-15}","{4,14-15}":!0},"public void ConfigureServices(IServiceCollection services)\n{\n services.AddControllersWithViews()\n .AddAppLocalization(); // \u6ce8\u518c\u591a\u8bed\u8a00\n}\n\npublic void Configure(IApplicationBuilder app, IWebHostEnvironment env)\n{\n if (env.IsDevelopment())\n {\n app.UseDeveloperExceptionPage();\n }\n\n // \u914d\u7f6e\u591a\u8bed\u8a00\uff0c\u5fc5\u987b\u5728 \u8def\u7531\u6ce8\u518c\u4e4b\u524d\n app.UseAppLocalization();\n\n app.UseStaticFiles();\n app.UseRouting();\n\n // \u5176\u4ed6\u4e2d\u95f4\u4ef6\n}\n")),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u6ce8\u610f")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},(0,i.kt)("inlineCode",{parentName:"p"},"app.UseAppLocalization();")," \u5fc5\u987b\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"app.UseRouting();")," \u4e4b\u524d\u6ce8\u518c\u3002"))),(0,i.kt)("h2",{id:"213-\u5982\u4f55\u4f7f\u7528"},"21.3 \u5982\u4f55\u4f7f\u7528"),(0,i.kt)("h3",{id:"2131-\u914d\u7f6e-localizationsettings"},"21.3.1 \u914d\u7f6e ",(0,i.kt)("inlineCode",{parentName:"h3"},"LocalizationSettings")),(0,i.kt)("p",null,"\u6dfb\u52a0 ",(0,i.kt)("inlineCode",{parentName:"p"},"LocalizationSettings")," \u914d\u7f6e\u9009\u9879\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-json",metastring:"{2,3}","{2,3}":!0},'{\n "LocalizationSettings": {\n "SupportedCultures": ["zh-CN", "en-US"], // \u914d\u7f6e\u652f\u6301\u7684\u8bed\u8a00\u5217\u8868\n "DefaultCulture": "zh-CN" // \u914d\u7f6e\u9ed8\u8ba4\u8bed\u8a00\uff0c\u5982\u679c\u4e0d\u914d\u7f6e\uff0c\u53d6 SupportedCultures \u7684\u7b2c\u4e00\u9879\n }\n}\n')),(0,i.kt)("h3",{id:"2132-\u521b\u5efa-resources-\u6587\u4ef6\u5939"},"21.3.2 \u521b\u5efa ",(0,i.kt)("inlineCode",{parentName:"h3"},"Resources")," \u6587\u4ef6\u5939"),(0,i.kt)("p",null,"\u63a5\u4e0b\u6765\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Web\u542f\u52a8\u9879\u76ee\u5c42")," \u6dfb\u52a0 ",(0,i.kt)("inlineCode",{parentName:"p"},"Resources")," \u6587\u4ef6\u5939\uff0c\u5982\u56fe\uff1a\uff08",(0,i.kt)("strong",{parentName:"p"},"\u53ef\u914d\u7f6e\u653e\u7f6e\u4efb\u610f\u5c42\uff0c\u89c1\u914d\u7f6e ",(0,i.kt)("inlineCode",{parentName:"strong"},"AssemblyName")),"\uff09"),(0,i.kt)("img",{src:(0,r.Z)("img/lang1.png")}),(0,i.kt)("h2",{id:"214-l-\u9759\u6001\u7c7b"},"21.4 ",(0,i.kt)("inlineCode",{parentName:"h2"},"L")," \u9759\u6001\u7c7b"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e3b\u8981\u901a\u8fc7 ",(0,i.kt)("inlineCode",{parentName:"p"},"L")," \u9759\u6001\u7c7b\u5b8c\u6574\u591a\u8bed\u8a00\u8f6c\u6362\uff0c\u8be5\u9759\u6001\u7c7b\u6709\u4ee5\u4e0b\u5c5e\u6027\u548c\u65b9\u6cd5\uff1a"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"L.Text[\u6587\u672c]"),"\uff1a\u8f6c\u6362\u6587\u672c\u591a\u8bed\u8a00"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"L.Html[HTML\u4ee3\u7801, \u683c\u5f0f\u5316]"),"\uff1a\u8f6c\u6362 ",(0,i.kt)("inlineCode",{parentName:"li"},"Html")," \u591a\u8bed\u8a00"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"L.SetCulture(\u533a\u57df\u7801)"),"\uff1a\u8bbe\u7f6e\u5f53\u524d\u8bed\u8a00\u533a\u57df"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"L.GetSelectCulture()"),"\uff1a\u83b7\u53d6\u5f53\u524d\u7684\u8bed\u8a00\u533a\u57df"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"L.GetCultures()"),"\uff1a\u83b7\u53d6\u7cfb\u7edf\u652f\u6301\u7684\u591a\u8bed\u8a00\u5217\u8868")),(0,i.kt)("h2",{id:"215-\u4f7f\u7528\u4f8b\u5b50"},"21.5 \u4f7f\u7528\u4f8b\u5b50"),(0,i.kt)("p",null,"\u901a\u8fc7\u4e0a\u9762\u7684\u914d\u7f6e\u6b65\u9aa4\u4e4b\u540e\uff0c\u6211\u4eec\u5c31\u53ef\u4ee5\u901a\u8fc7 ",(0,i.kt)("inlineCode",{parentName:"p"},"L")," \u9759\u6001\u7c7b\u5728\u4ee3\u7801\u4efb\u4f55\u4f4d\u7f6e\u4f7f\u7528\u4e86\uff0c\u5982\uff1a"),(0,i.kt)("h3",{id:"2151-\u5728\u7c7b\u4e2d\u4f7f\u7528"},"21.5.1 \u5728\u7c7b\u4e2d\u4f7f\u7528"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// \u6587\u672c\u591a\u8bed\u8a00\nvar apiInterface = L.Text["API \u63a5\u53e3"];\nvar sourceCode = L.Text["\u6e90\u7801\u5730\u5740"];\n\n// HTML \u6807\u8bb0\u591a\u8bed\u8a00\nvar name = L.Html["Hello {0}", name];\n')),(0,i.kt)("h3",{id:"2152-\u5728\u89c6\u56fe\u4e2d\u4f7f\u7528"},"21.5.2 \u5728\u89c6\u56fe\u4e2d\u4f7f\u7528"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-html",metastring:"{1,6,9}","{1,6,9}":!0},'@using Furion.Localization\n\n
\n

\u8ba9 .NET \u5f00\u53d1\u66f4\u7b80\u5355\uff0c\u66f4\u901a\u7528\uff0c\u66f4\u6d41\u884c\u3002

\n

\n @L.Text["API \u63a5\u53e3"]      @L.Text["\u6e90\u7801\u5730\u5740"]\n

\n
\n')),(0,i.kt)("h3",{id:"2153-\u5728\u9a8c\u8bc1\u7279\u6027\u4e2d\u4f7f\u7528"},"21.5.3 \u5728\u9a8c\u8bc1\u7279\u6027\u4e2d\u4f7f\u7528"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'[Required(ErrorMessage = "\u5fc5\u586b\u6d88\u606f")]\n')),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"\u6240\u6709\u9a8c\u8bc1\u7279\u6027\u5df2\u7ecf\u81ea\u52a8\u652f\u6301\u591a\u8bed\u8a00\u914d\u7f6e\u4e86\uff0c\u65e0\u9700\u901a\u8fc7 ",(0,i.kt)("inlineCode",{parentName:"strong"},"L.Text[]")," \u8c03\u7528\u3002")),(0,i.kt)("h3",{id:"2154-\u5728\u5f02\u5e38\u6d88\u606f\u4e2d\u4f7f\u7528"},"21.5.4 \u5728\u5f02\u5e38\u6d88\u606f\u4e2d\u4f7f\u7528"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{8}","{8}":!0},'using Furion.FriendlyException;\n\nnamespace Furion.Application\n{\n [ErrorCodeType]\n public enum ErrorCodes\n {\n [ErrorCodeItemMetadata("\u7528\u6237\u540d\u4e0d\u80fd\u4e3a\u7a7a")]\n z1000\n }\n}\n')),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},"\u6240\u6709\u5f02\u5e38\u6d88\u606f\u7279\u6027\u5df2\u7ecf\u81ea\u52a8\u652f\u6301\u591a\u8bed\u8a00\u914d\u7f6e\u4e86\uff0c\u65e0\u9700\u901a\u8fc7 ",(0,i.kt)("inlineCode",{parentName:"strong"},"L.Text[]")," \u8c03\u7528\u3002")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"throw Oops.Oh(ErrorCodes.z1000); // \u81ea\u52a8\u5e94\u7528\u591a\u8bed\u8a00\n")),(0,i.kt)("h2",{id:"216-\u521b\u5efa\u8bed\u8a00\u7ffb\u8bd1\u6587\u4ef6"},"21.6 \u521b\u5efa\u8bed\u8a00\u7ffb\u8bd1\u6587\u4ef6"),(0,i.kt)("p",null,"\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\uff0c\u5982\u679c\u6ca1\u627e\u5230\u5bf9\u5e94\u7684\u8bed\u8a00\u7ffb\u8bd1\u6587\u4ef6\uff0c\u5219\u81ea\u52a8\u663e\u793a\u5b57\u7b26\u4e32\u6587\u672c\uff0c\u5982\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'L.Text["\u6ca1\u627e\u5230"]; // => \u5982\u679c\u8bbe\u7f6e\u4e3a\u82f1\u6587\uff0c\u4f46\u662f\u6ca1\u6709\u6587\u4ef6\uff0c\u5219\u76f4\u63a5\u8f93\u51fa \u201c\u6ca1\u627e\u5230\u201d\n')),(0,i.kt)("h3",{id:"2161-\u5728-resources-\u6587\u4ef6\u5939\u4e2d\u521b\u5efa\u8bed\u8a00\u6587\u4ef6"},"21.6.1 \u5728 ",(0,i.kt)("inlineCode",{parentName:"h3"},"Resources")," \u6587\u4ef6\u5939\u4e2d\u521b\u5efa\u8bed\u8a00\u6587\u4ef6"),(0,i.kt)("p",null,"\u63a5\u4e0b\u6765\uff0c\u6211\u4eec\u53ea\u9700\u8981\u5728\u521a\u521a\u7684 ",(0,i.kt)("inlineCode",{parentName:"p"},"Resources")," \u6587\u4ef6\u5939\u4e2d\u6dfb\u52a0 ",(0,i.kt)("inlineCode",{parentName:"p"},"\u8d44\u6e90\u6587\u4ef6")," \u5373\u53ef\uff0c\u8d44\u6e90\u6587\u4ef6\u547d\u540d\u89c4\u5219\uff1a",(0,i.kt)("inlineCode",{parentName:"p"},"Lang.\u533a\u57df\u7801.resx"),"\uff0c\u5982\uff1a",(0,i.kt)("inlineCode",{parentName:"p"},"Lang.en-US.resx"),"\u3002"),(0,i.kt)("img",{src:(0,r.Z)("img/lang2.png")}),(0,i.kt)("img",{src:(0,r.Z)("img/lang3.png")}),(0,i.kt)("p",null),(0,i.kt)("p",null,"\u63a5\u4e0b\u6765\uff0c\u53ea\u9700\u8981\u628a\u5bf9\u5e94\u8bed\u8a00\u7248\u672c\u7684\u952e\u503c\u5bf9\u586b\u5199\u5373\u53ef\u3002"),(0,i.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u81ea\u5b9a\u4e49\u8d44\u6e90\u6587\u4ef6\u540d\u6216\u5b58\u653e\u7a0b\u5e8f\u96c6")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c\u8d44\u6e90\u6587\u4ef6\u540d\u5fc5\u987b\u4ee5 ",(0,i.kt)("inlineCode",{parentName:"p"},"Lang")," \u5f00\u5934\uff0c\u4e14\u53ea\u80fd\u653e\u5728\u542f\u52a8\u5c42\uff0c\u5982\u679c\u9700\u8981\u81ea\u5b9a\u4e49\uff0c\u6dfb\u52a0\u914d\u7f6e\u6587\u4ef6\u5373\u53ef"),(0,i.kt)("pre",{parentName:"div"},(0,i.kt)("code",{parentName:"pre",className:"language-json"},'{\n "LocalizationSettings": {\n "LanguageFilePrefix": "MyLang"\n // "AssemblyName": "\u4f60\u7684\u5176\u4ed6\u5c42\u7a0b\u5e8f\u96c6\u540d\u79f0"\n }\n}\n')),(0,i.kt)("p",{parentName:"div"},"\u4e4b\u540e\uff0c\u5c31\u53ef\u4ee5\uff1a",(0,i.kt)("inlineCode",{parentName:"p"},"MyLang.\u533a\u57df\u7801.resx"),"\u3002"))),(0,i.kt)("h2",{id:"217-\u5207\u6362\u8bed\u8a00"},"21.7 \u5207\u6362\u8bed\u8a00"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u63d0\u4f9b\u4e86\u4e09\u79cd\u8bed\u8a00\u5207\u6362\u65b9\u5f0f\u8fdb\u884c\u5207\u6362\u8bed\u8a00\uff1a"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"URL \u53c2\u6570")," \u65b9\u5f0f\uff1a ",(0,i.kt)("inlineCode",{parentName:"li"},"?culture=en-US"),"\uff0c",(0,i.kt)("strong",{parentName:"li"},"\u6b64\u65b9\u5f0f\u4f18\u5148\u7ea7\u6700\u9ad8"),"\uff0c\u683c\u5f0f\u4e3a\uff1a",(0,i.kt)("inlineCode",{parentName:"li"},"culture=\u533a\u57df\u7801")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"Cookies")," \u65b9\u5f0f\uff1a\u8c03\u7528 ",(0,i.kt)("inlineCode",{parentName:"li"},"L.SetCulture(\u533a\u57df\u7801)")," \u65b9\u5f0f\u5207\u6362"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"\u5ba2\u6237\u7aef\u6d4f\u89c8\u5668\u8bed\u8a00\u81ea\u52a8\u5339\u914d"),"\uff1a\u5982\u679c\u524d\u9762\u4e24\u79cd\u65b9\u5f0f\u90fd\u6ca1\u6709\u8bbe\u7f6e\uff0c",(0,i.kt)("strong",{parentName:"li"},"\u652f\u6301\u81ea\u52a8\u6839\u636e\u5ba2\u6237\u7aef\u6d4f\u89c8\u5668\u8bed\u8a00\u8fdb\u884c\u5339\u914d\u3002"))),(0,i.kt)("h3",{id:"2171-url-\u53c2\u6570-\u65b9\u5f0f"},"21.7.1 ",(0,i.kt)("inlineCode",{parentName:"h3"},"URL \u53c2\u6570")," \u65b9\u5f0f"),(0,i.kt)("img",{src:(0,r.Z)("img/lang4.gif")}),(0,i.kt)("h3",{id:"2172-cookies-\u65b9\u5f0f"},"21.7.2 ",(0,i.kt)("inlineCode",{parentName:"h3"},"Cookies")," \u65b9\u5f0f"),(0,i.kt)("p",null,"\u6b64\u65b9\u5f0f\u53ea\u9700\u8981\u63d0\u4f9b\u4e00\u4e2a ",(0,i.kt)("inlineCode",{parentName:"p"},"api")," \u6216\u8bbe\u7f6e\u4ee3\u7801\u5373\u53ef\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'L.SetCulture("en-US"); // en-US \u4e5f\u53ef\u4ee5\u901a\u8fc7\u524d\u7aef\u4f20\u9012\u8fc7\u6765\uff0c\u8fd9\u6837\u5c31\u53ef\u4ee5\u4e0d\u7528 `culture` \u53c2\u6570\u4e86\uff0c\u53ef\u4ee5\u81ea\u5b9a\u4e49\u53c2\u6570\u3002\n')),(0,i.kt)("p",null,"\u8fd9\u6837\u5c31\u53ef\u4ee5\u76f4\u63a5\u6839\u636e\u5ba2\u6237\u7aef\u5b58\u50a8\u7684 ",(0,i.kt)("inlineCode",{parentName:"p"},"cookies")," \u81ea\u52a8\u5207\u6362\u4e86\u3002"),(0,i.kt)("h3",{id:"2173-\u5ba2\u6237\u7aef\u6d4f\u89c8\u5668\u8bed\u8a00\u81ea\u52a8\u5207\u6362"},"21.7.3 ",(0,i.kt)("inlineCode",{parentName:"h3"},"\u5ba2\u6237\u7aef\u6d4f\u89c8\u5668\u8bed\u8a00\u81ea\u52a8\u5207\u6362")),(0,i.kt)("p",null,"\u63a8\u8350\u6b64\u65b9\u5f0f\uff0c\u53ef\u4ee5\u81ea\u52a8\u6839\u636e\u6d4f\u89c8\u5668\u7684\u8bed\u8a00\u81ea\u52a8\u914d\u7f6e\uff1a"),(0,i.kt)("img",{src:(0,r.Z)("img/lang5.gif")}),(0,i.kt)("h2",{id:"218-\u4f9d\u8d56\u6ce8\u5165\u65b9\u5f0f\u4f7f\u7528"},"21.8 \u4f9d\u8d56\u6ce8\u5165\u65b9\u5f0f\u4f7f\u7528"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e5f\u517c\u5bb9 ",(0,i.kt)("inlineCode",{parentName:"p"},".NET Core")," \u81ea\u5e26\u7684\u4f9d\u8d56\u6ce8\u5165\u65b9\u5f0f\uff0c\u5982\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{3,5,7,12}","{3,5,7,12}":!0},' public class TestController : Controller\n {\n private readonly IStringLocalizer _localizer;\n\n public TestController(IStringLocalizerFactory factory)\n {\n _localizer = factory.Create();\n }\n\n public IActionResult About()\n {\n ViewData["Message"] = _localizer["Your application description page."];\n }\n }\n')),(0,i.kt)("h2",{id:"219-localizationsettings-\u914d\u7f6e"},"21.9 ",(0,i.kt)("inlineCode",{parentName:"h2"},"LocalizationSettings")," \u914d\u7f6e"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"LocalizationSettings")," \u591a\u8bed\u8a00\u914d\u7f6e\u6839\u8282\u70b9",(0,i.kt)("ul",{parentName:"li"},(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"ResourcesPath"),"\uff1a\u8d44\u6e90\u76ee\u5f55\uff0c",(0,i.kt)("inlineCode",{parentName:"li"},"string")," \u7c7b\u578b\uff0c\u9ed8\u8ba4 ",(0,i.kt)("inlineCode",{parentName:"li"},"Resources")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"SupportedCultures"),"\uff1a\u652f\u6301\u7684\u8bed\u8a00\u533a\u57df\u7801\u7c7b\u522b\uff0c",(0,i.kt)("inlineCode",{parentName:"li"},"string[]")," \u7c7b\u578b"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"DefaultCulture"),"\uff1a\u9ed8\u8ba4\u8bed\u8a00\u533a\u57df\u7801\uff0c\u5982\u679c\u4e3a\u7a7a\uff0c\u5219\u53d6 ",(0,i.kt)("inlineCode",{parentName:"li"},"SupportedCultures")," \u7b2c\u4e00\u9879"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"LanguageFilePrefix"),"\uff1a\u914d\u7f6e\u8d44\u6e90\u6587\u4ef6\u524d\u7f00\uff0c",(0,i.kt)("inlineCode",{parentName:"li"},"string")," \u7c7b\u578b\uff0c\u9ed8\u8ba4 ",(0,i.kt)("inlineCode",{parentName:"li"},"Lang")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"AssemblyName"),"\uff1a\u914d\u7f6e\u8d44\u6e90\u6587\u4ef6\u5b58\u653e\u7a0b\u5e8f\u96c6\u540d\uff0c",(0,i.kt)("inlineCode",{parentName:"li"},"string")," \u7c7b\u578b\uff0c\u9ed8\u8ba4 ",(0,i.kt)("inlineCode",{parentName:"li"},"\u542f\u52a8\u5c42")," \u540d\u79f0")))),(0,i.kt)("h2",{id:"2110-\u533a\u57df\u7801\u5217\u8868"},"21.10 \u533a\u57df\u7801\u5217\u8868"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"af \u516c\u7528\u8377\u5170\u8bed"),(0,i.kt)("li",{parentName:"ul"},"af-ZA \u516c\u7528\u8377\u5170\u8bed - \u5357\u975e"),(0,i.kt)("li",{parentName:"ul"},"sq \u963f\u5c14\u5df4\u5c3c\u4e9a"),(0,i.kt)("li",{parentName:"ul"},"sq-AL \u963f\u5c14\u5df4\u5c3c\u4e9a -\u963f\u5c14\u5df4\u5c3c\u4e9a"),(0,i.kt)("li",{parentName:"ul"},"ar \u963f\u62c9\u4f2f\u8bed"),(0,i.kt)("li",{parentName:"ul"},"ar-DZ \u963f\u62c9\u4f2f\u8bed -\u963f\u5c14\u53ca\u5229\u4e9a"),(0,i.kt)("li",{parentName:"ul"},"ar-BH \u963f\u62c9\u4f2f\u8bed -\u5df4\u6797"),(0,i.kt)("li",{parentName:"ul"},"ar-EG \u963f\u62c9\u4f2f\u8bed -\u57c3\u53ca"),(0,i.kt)("li",{parentName:"ul"},"ar-IQ \u963f\u62c9\u4f2f\u8bed -\u4f0a\u62c9\u514b"),(0,i.kt)("li",{parentName:"ul"},"ar-JO \u963f\u62c9\u4f2f\u8bed -\u7ea6\u65e6"),(0,i.kt)("li",{parentName:"ul"},"ar-KW \u963f\u62c9\u4f2f\u8bed -\u79d1\u5a01\u7279"),(0,i.kt)("li",{parentName:"ul"},"ar-LB \u963f\u62c9\u4f2f\u8bed -\u9ece\u5df4\u5ae9"),(0,i.kt)("li",{parentName:"ul"},"ar-LY \u963f\u62c9\u4f2f\u8bed -\u5229\u6bd4\u4e9a"),(0,i.kt)("li",{parentName:"ul"},"ar-MA \u963f\u62c9\u4f2f\u8bed -\u6469\u6d1b\u54e5"),(0,i.kt)("li",{parentName:"ul"},"ar-OM \u963f\u62c9\u4f2f\u8bed -\u963f\u66fc"),(0,i.kt)("li",{parentName:"ul"},"ar-QA \u963f\u62c9\u4f2f\u8bed -\u5361\u5854\u5c14"),(0,i.kt)("li",{parentName:"ul"},"ar-SA \u963f\u62c9\u4f2f\u8bed - \u6c99\u7279\u963f\u62c9\u4f2f"),(0,i.kt)("li",{parentName:"ul"},"ar-SY \u963f\u62c9\u4f2f\u8bed -\u53d9\u5229\u4e9a\u5171\u548c\u56fd"),(0,i.kt)("li",{parentName:"ul"},"ar-TN \u963f\u62c9\u4f2f\u8bed -\u5317\u975e\u7684\u5171\u548c\u56fd"),(0,i.kt)("li",{parentName:"ul"},"ar-AE \u963f\u62c9\u4f2f\u8bed - \u963f\u62c9\u4f2f\u8054\u5408\u914b\u957f\u56fd"),(0,i.kt)("li",{parentName:"ul"},"ar-YE \u963f\u62c9\u4f2f\u8bed -\u4e5f\u95e8"),(0,i.kt)("li",{parentName:"ul"},"hy \u4e9a\u7f8e\u5c3c\u4e9a"),(0,i.kt)("li",{parentName:"ul"},"hy-AM \u4e9a\u7f8e\u5c3c\u4e9a\u7684 -\u4e9a\u7f8e\u5c3c\u4e9a"),(0,i.kt)("li",{parentName:"ul"},"az Azeri"),(0,i.kt)("li",{parentName:"ul"},"az-AZ-Cyrl Azeri-(\u897f\u91cc\u5c14\u5b57\u6bcd\u7684) \u963f\u585e\u62dc\u7586"),(0,i.kt)("li",{parentName:"ul"},"az-AZ-Latn Azeri(\u62c9\u4e01\u6587)- \u963f\u585e\u62dc\u7586"),(0,i.kt)("li",{parentName:"ul"},"eu \u5df4\u65af\u514b"),(0,i.kt)("li",{parentName:"ul"},"eu-ES \u5df4\u65af\u514b -\u5df4\u65af\u514b"),(0,i.kt)("li",{parentName:"ul"},"be Belarusian"),(0,i.kt)("li",{parentName:"ul"},"be-BY Belarusian-\u767d\u4fc4\u7f57\u65af"),(0,i.kt)("li",{parentName:"ul"},"bg \u4fdd\u52a0\u5229\u4e9a"),(0,i.kt)("li",{parentName:"ul"},"bg-BG \u4fdd\u52a0\u5229\u4e9a -\u4fdd\u52a0\u5229\u4e9a"),(0,i.kt)("li",{parentName:"ul"},"ca \u5609\u6cf0\u7f57\u5c3c\u4e9a"),(0,i.kt)("li",{parentName:"ul"},"ca-ES \u5609\u6cf0\u7f57\u5c3c\u4e9a -\u5609\u6cf0\u7f57\u5c3c\u4e9a"),(0,i.kt)("li",{parentName:"ul"},"zh-HK \u534e - \u9999\u6e2f\u7684 SAR"),(0,i.kt)("li",{parentName:"ul"},"zh-MO \u534e - \u6fb3\u95e8\u7684 SAR"),(0,i.kt)("li",{parentName:"ul"},"zh-CN \u534e -\u4e2d\u56fd"),(0,i.kt)("li",{parentName:"ul"},"zh-CHS \u534e (\u5355\u4e00\u5316)"),(0,i.kt)("li",{parentName:"ul"},"zh-SG \u534e -\u65b0\u52a0\u5761"),(0,i.kt)("li",{parentName:"ul"},"zh-TW \u534e -\u53f0\u6e7e"),(0,i.kt)("li",{parentName:"ul"},"zh-CHT \u534e (\u4f20\u7edf\u7684)"),(0,i.kt)("li",{parentName:"ul"},"hr \u514b\u7f57\u57c3\u897f\u4e9a"),(0,i.kt)("li",{parentName:"ul"},"hr-HR \u514b\u7f57\u57c3\u897f\u4e9a -\u514b\u7f57\u57c3\u897f\u4e9a"),(0,i.kt)("li",{parentName:"ul"},"cs \u6377\u514b"),(0,i.kt)("li",{parentName:"ul"},"cs-CZ \u6377\u514b - \u6377\u514b"),(0,i.kt)("li",{parentName:"ul"},"da \u4e39\u9ea6\u6587"),(0,i.kt)("li",{parentName:"ul"},"da-DK \u4e39\u9ea6\u6587 -\u4e39\u9ea6"),(0,i.kt)("li",{parentName:"ul"},"div Dhivehi"),(0,i.kt)("li",{parentName:"ul"},"div-MV Dhivehi-\u9a6c\u5c14\u4ee3\u592b"),(0,i.kt)("li",{parentName:"ul"},"nl \u8377\u5170"),(0,i.kt)("li",{parentName:"ul"},"nl-BE \u8377\u5170 -\u6bd4\u5229\u65f6"),(0,i.kt)("li",{parentName:"ul"},"nl-NL \u8377\u5170 - \u8377\u5170"),(0,i.kt)("li",{parentName:"ul"},"en \u82f1\u56fd"),(0,i.kt)("li",{parentName:"ul"},"en-AU \u82f1\u56fd -\u6fb3\u6d32"),(0,i.kt)("li",{parentName:"ul"},"en-BZ \u82f1\u56fd -\u4f2f\u5229\u5179"),(0,i.kt)("li",{parentName:"ul"},"en-CA \u82f1\u56fd -\u52a0\u62ff\u5927"),(0,i.kt)("li",{parentName:"ul"},"en-CB \u82f1\u56fd -\u52a0\u52d2\u6bd4\u6d77"),(0,i.kt)("li",{parentName:"ul"},"en-IE \u82f1\u56fd -\u7231\u5c14\u5170"),(0,i.kt)("li",{parentName:"ul"},"en-JM \u82f1\u56fd -\u7259\u4e70\u52a0"),(0,i.kt)("li",{parentName:"ul"},"en-NZ \u82f1\u56fd - \u65b0\u897f\u5170"),(0,i.kt)("li",{parentName:"ul"},"en-PH \u82f1\u56fd -\u83f2\u5f8b\u5bbe\u5171\u548c\u56fd"),(0,i.kt)("li",{parentName:"ul"},"en-ZA \u82f1\u56fd - \u5357\u975e"),(0,i.kt)("li",{parentName:"ul"},"en-TT \u82f1\u56fd - \u5343\u91cc\u8fbe\u6258\u8d1d\u54e5\u5171\u548c\u56fd"),(0,i.kt)("li",{parentName:"ul"},"en-GB \u82f1\u56fd - \u82f1\u56fd"),(0,i.kt)("li",{parentName:"ul"},"en-US \u82f1\u56fd - \u7f8e\u56fd"),(0,i.kt)("li",{parentName:"ul"},"en-ZW \u82f1\u56fd -\u6d25\u5df4\u5e03\u97e6"),(0,i.kt)("li",{parentName:"ul"},"et \u7231\u6c99\u5c3c\u4e9a"),(0,i.kt)("li",{parentName:"ul"},"et-EE \u7231\u6c99\u5c3c\u4e9a\u7684 -\u7231\u6c99\u5c3c\u4e9a"),(0,i.kt)("li",{parentName:"ul"},"fo Faroese"),(0,i.kt)("li",{parentName:"ul"},"fo-FO Faroese- \u6cd5\u7f57\u7fa4\u5c9b"),(0,i.kt)("li",{parentName:"ul"},"fa \u6ce2\u65af\u8bed"),(0,i.kt)("li",{parentName:"ul"},"fa-IR \u6ce2\u65af\u8bed -\u4f0a\u6717\u738b\u56fd"),(0,i.kt)("li",{parentName:"ul"},"fi \u82ac\u5170\u8bed"),(0,i.kt)("li",{parentName:"ul"},"fi-FI \u82ac\u5170\u8bed -\u82ac\u5170"),(0,i.kt)("li",{parentName:"ul"},"fr \u6cd5\u56fd"),(0,i.kt)("li",{parentName:"ul"},"fr-BE \u6cd5\u56fd -\u6bd4\u5229\u65f6"),(0,i.kt)("li",{parentName:"ul"},"fr-CA \u6cd5\u56fd -\u52a0\u62ff\u5927"),(0,i.kt)("li",{parentName:"ul"},"fr-FR \u6cd5\u56fd -\u6cd5\u56fd"),(0,i.kt)("li",{parentName:"ul"},"fr-LU \u6cd5\u56fd -\u5362\u68ee\u5821"),(0,i.kt)("li",{parentName:"ul"},"fr-MC \u6cd5\u56fd -\u6469\u7eb3\u54e5"),(0,i.kt)("li",{parentName:"ul"},"fr-CH \u6cd5\u56fd -\u745e\u58eb"),(0,i.kt)("li",{parentName:"ul"},"gl \u52a0\u5229\u897f\u4e9a"),(0,i.kt)("li",{parentName:"ul"},"gl-ES \u52a0\u5229\u897f\u4e9a -\u52a0\u5229\u897f\u4e9a"),(0,i.kt)("li",{parentName:"ul"},"ka \u683c\u9c81\u5409\u4e9a\u5dde"),(0,i.kt)("li",{parentName:"ul"},"ka-GE \u683c\u9c81\u5409\u4e9a\u5dde -\u683c\u9c81\u5409\u4e9a\u5dde"),(0,i.kt)("li",{parentName:"ul"},"de \u5fb7\u56fd"),(0,i.kt)("li",{parentName:"ul"},"de-AT \u5fb7\u56fd -\u5965\u5730\u5229"),(0,i.kt)("li",{parentName:"ul"},"de-DE \u5fb7\u56fd -\u5fb7\u56fd"),(0,i.kt)("li",{parentName:"ul"},"de-LI \u5fb7\u56fd -\u5217\u652f\u6566\u58eb\u767b"),(0,i.kt)("li",{parentName:"ul"},"de-LU \u5fb7\u56fd -\u5362\u68ee\u5821"),(0,i.kt)("li",{parentName:"ul"},"de-CH \u5fb7\u56fd -\u745e\u58eb"),(0,i.kt)("li",{parentName:"ul"},"el \u5e0c\u814a"),(0,i.kt)("li",{parentName:"ul"},"el-GR \u5e0c\u814a -\u5e0c\u814a"),(0,i.kt)("li",{parentName:"ul"},"gu Gujarati"),(0,i.kt)("li",{parentName:"ul"},"gu-IN Gujarati-\u5370\u5ea6"),(0,i.kt)("li",{parentName:"ul"},"he \u5e0c\u4f2f\u6765"),(0,i.kt)("li",{parentName:"ul"},"he-IL \u5e0c\u4f2f\u6765 -\u4ee5\u8272\u5217"),(0,i.kt)("li",{parentName:"ul"},"hi \u5317\u5370\u5ea6\u8bed"),(0,i.kt)("li",{parentName:"ul"},"hi-IN \u5317\u5370\u5ea6\u7684 -\u5370\u5ea6"),(0,i.kt)("li",{parentName:"ul"},"hu \u5308\u7259\u5229"),(0,i.kt)("li",{parentName:"ul"},"hu-HU \u5308\u7259\u5229\u7684 -\u5308\u7259\u5229"),(0,i.kt)("li",{parentName:"ul"},"is \u51b0\u5c9b\u8bed"),(0,i.kt)("li",{parentName:"ul"},"is-IS \u51b0\u5c9b\u7684 -\u51b0\u5c9b"),(0,i.kt)("li",{parentName:"ul"},"id \u5370\u5c3c"),(0,i.kt)("li",{parentName:"ul"},"id-ID \u5370\u5c3c -\u5370\u5c3c"),(0,i.kt)("li",{parentName:"ul"},"it \u610f\u5927\u5229"),(0,i.kt)("li",{parentName:"ul"},"it-IT \u610f\u5927\u5229 -\u610f\u5927\u5229"),(0,i.kt)("li",{parentName:"ul"},"it-CH \u610f\u5927\u5229 -\u745e\u58eb"),(0,i.kt)("li",{parentName:"ul"},"ja \u65e5\u672c"),(0,i.kt)("li",{parentName:"ul"},"ja-JP \u65e5\u672c -\u65e5\u672c"),(0,i.kt)("li",{parentName:"ul"},"kn \u5361\u7eb3\u8fbe\u8bed"),(0,i.kt)("li",{parentName:"ul"},"kn-IN \u5361\u7eb3\u8fbe\u8bed -\u5370\u5ea6"),(0,i.kt)("li",{parentName:"ul"},"kk Kazakh"),(0,i.kt)("li",{parentName:"ul"},"kk-KZ Kazakh-\u54c8\u8428\u514b"),(0,i.kt)("li",{parentName:"ul"},"kok Konkani"),(0,i.kt)("li",{parentName:"ul"},"kok-IN Konkani-\u5370\u5ea6"),(0,i.kt)("li",{parentName:"ul"},"ko \u97e9\u56fd"),(0,i.kt)("li",{parentName:"ul"},"ko-KR \u97e9\u56fd -\u97e9\u56fd"),(0,i.kt)("li",{parentName:"ul"},"ky Kyrgyz"),(0,i.kt)("li",{parentName:"ul"},"ky-KZ Kyrgyz-\u54c8\u8428\u514b"),(0,i.kt)("li",{parentName:"ul"},"lv \u62c9\u8131\u7ef4\u4e9a"),(0,i.kt)("li",{parentName:"ul"},"lv-LV \u62c9\u8131\u7ef4\u4e9a\u7684 -\u62c9\u8131\u7ef4\u4e9a"),(0,i.kt)("li",{parentName:"ul"},"lt \u7acb\u9676\u5b9b"),(0,i.kt)("li",{parentName:"ul"},"lt-LT \u7acb\u9676\u5b9b -\u7acb\u9676\u5b9b"),(0,i.kt)("li",{parentName:"ul"},"mk \u9a6c\u5176\u987f"),(0,i.kt)("li",{parentName:"ul"},"mk-MK \u9a6c\u5176\u987f -FYROM"),(0,i.kt)("li",{parentName:"ul"},"ms \u9a6c\u6765"),(0,i.kt)("li",{parentName:"ul"},"ms-BN \u9a6c\u6765 -\u6c76\u83b1"),(0,i.kt)("li",{parentName:"ul"},"ms-MY \u9a6c\u6765 -\u9a6c\u6765\u897f\u4e9a"),(0,i.kt)("li",{parentName:"ul"},"mr \u9a6c\u62c9\u5730\u8bed"),(0,i.kt)("li",{parentName:"ul"},"mr-IN \u9a6c\u62c9\u5730\u8bed -\u5370\u5ea6"),(0,i.kt)("li",{parentName:"ul"},"mn \u8499\u53e4"),(0,i.kt)("li",{parentName:"ul"},"mn-MN \u8499\u53e4 -\u8499\u53e4"),(0,i.kt)("li",{parentName:"ul"},"no \u632a\u5a01"),(0,i.kt)("li",{parentName:"ul"},"nb-NO \u632a\u5a01 (Bokm?l) - \u632a\u5a01"),(0,i.kt)("li",{parentName:"ul"},"nn-NO \u632a\u5a01 (Nynorsk)- \u632a\u5a01"),(0,i.kt)("li",{parentName:"ul"},"pl \u6ce2\u5170"),(0,i.kt)("li",{parentName:"ul"},"pl-PL \u6ce2\u5170 -\u6ce2\u5170"),(0,i.kt)("li",{parentName:"ul"},"pt \u8461\u8404\u7259"),(0,i.kt)("li",{parentName:"ul"},"pt-BR \u8461\u8404\u7259 -\u5df4\u897f"),(0,i.kt)("li",{parentName:"ul"},"pt-PT \u8461\u8404\u7259 -\u8461\u8404\u7259"),(0,i.kt)("li",{parentName:"ul"},"pa Punjab \u8bed"),(0,i.kt)("li",{parentName:"ul"},"pa-IN Punjab \u8bed -\u5370\u5ea6"),(0,i.kt)("li",{parentName:"ul"},"ro \u7f57\u9a6c\u5c3c\u4e9a\u8bed"),(0,i.kt)("li",{parentName:"ul"},"ro-RO \u7f57\u9a6c\u5c3c\u4e9a\u8bed -\u7f57\u9a6c\u5c3c\u4e9a"),(0,i.kt)("li",{parentName:"ul"},"ru \u4fc4\u56fd"),(0,i.kt)("li",{parentName:"ul"},"ru-RU \u4fc4\u56fd -\u4fc4\u56fd"),(0,i.kt)("li",{parentName:"ul"},"sa \u68b5\u6587"),(0,i.kt)("li",{parentName:"ul"},"sa-IN \u68b5\u6587 -\u5370\u5ea6"),(0,i.kt)("li",{parentName:"ul"},"sr-SP-Cyrl \u585e\u5c14\u7ef4\u4e9a -(\u897f\u91cc\u5c14\u5b57\u6bcd\u7684) \u585e\u5c14\u7ef4\u4e9a\u5171\u548c\u56fd"),(0,i.kt)("li",{parentName:"ul"},"sr-SP-Latn \u585e\u5c14\u7ef4\u4e9a (\u62c9\u4e01\u6587)- \u585e\u5c14\u7ef4\u4e9a\u5171\u548c\u56fd"),(0,i.kt)("li",{parentName:"ul"},"sk \u65af\u6d1b\u4f10\u514b"),(0,i.kt)("li",{parentName:"ul"},"sk-SK \u65af\u6d1b\u4f10\u514b -\u65af\u6d1b\u4f10\u514b"),(0,i.kt)("li",{parentName:"ul"},"sl \u65af\u6d1b\u6587\u5c3c\u4e9a"),(0,i.kt)("li",{parentName:"ul"},"sl-SI \u65af\u6d1b\u6587\u5c3c\u4e9a -\u65af\u6d1b\u6587\u5c3c\u4e9a"),(0,i.kt)("li",{parentName:"ul"},"es \u897f\u73ed\u7259"),(0,i.kt)("li",{parentName:"ul"},"es-AR \u897f\u73ed\u7259 -\u963f\u6839\u5ef7"),(0,i.kt)("li",{parentName:"ul"},"es-BO \u897f\u73ed\u7259 -\u73bb\u5229\u7ef4\u4e9a"),(0,i.kt)("li",{parentName:"ul"},"es-CL \u897f\u73ed\u7259 -\u667a\u5229"),(0,i.kt)("li",{parentName:"ul"},"es-CO \u897f\u73ed\u7259 -\u54e5\u4f26\u6bd4\u4e9a"),(0,i.kt)("li",{parentName:"ul"},"es-CR \u897f\u73ed\u7259 - \u54e5\u65af\u8fbe\u9ece\u52a0"),(0,i.kt)("li",{parentName:"ul"},"es-DO \u897f\u73ed\u7259 - \u591a\u7c73\u5c3c\u52a0\u5171\u548c\u56fd"),(0,i.kt)("li",{parentName:"ul"},"es-EC \u897f\u73ed\u7259 -\u5384\u74dc\u591a\u5c14"),(0,i.kt)("li",{parentName:"ul"},"es-SV \u897f\u73ed\u7259 - \u8428\u5c14\u74e6\u591a"),(0,i.kt)("li",{parentName:"ul"},"es-GT \u897f\u73ed\u7259 -\u5371\u5730\u9a6c\u62c9"),(0,i.kt)("li",{parentName:"ul"},"es-HN \u897f\u73ed\u7259 -\u6d2a\u90fd\u62c9\u65af"),(0,i.kt)("li",{parentName:"ul"},"es-MX \u897f\u73ed\u7259 -\u58a8\u897f\u54e5"),(0,i.kt)("li",{parentName:"ul"},"es-NI \u897f\u73ed\u7259 -\u5c3c\u52a0\u62c9\u74dc"),(0,i.kt)("li",{parentName:"ul"},"es-PA \u897f\u73ed\u7259 -\u5df4\u62ff\u9a6c"),(0,i.kt)("li",{parentName:"ul"},"es-PY \u897f\u73ed\u7259 -\u5df4\u62c9\u572d"),(0,i.kt)("li",{parentName:"ul"},"es-PE \u897f\u73ed\u7259 -\u79d8\u9c81"),(0,i.kt)("li",{parentName:"ul"},"es-PR \u897f\u73ed\u7259 - \u6ce2\u591a\u9ece\u5404"),(0,i.kt)("li",{parentName:"ul"},"es-ES \u897f\u73ed\u7259 -\u897f\u73ed\u7259"),(0,i.kt)("li",{parentName:"ul"},"es-UY \u897f\u73ed\u7259 -\u4e4c\u62c9\u572d"),(0,i.kt)("li",{parentName:"ul"},"es-VE \u897f\u73ed\u7259 -\u59d4\u5185\u745e\u62c9"),(0,i.kt)("li",{parentName:"ul"},"sw Swahili"),(0,i.kt)("li",{parentName:"ul"},"sw-KE Swahili-\u80af\u5c3c\u4e9a"),(0,i.kt)("li",{parentName:"ul"},"sv \u745e\u5178"),(0,i.kt)("li",{parentName:"ul"},"sv-FI \u745e\u5178 -\u82ac\u5170"),(0,i.kt)("li",{parentName:"ul"},"sv-SE \u745e\u5178 -\u745e\u5178"),(0,i.kt)("li",{parentName:"ul"},"syr Syriac"),(0,i.kt)("li",{parentName:"ul"},"syr-SY Syriac-\u53d9\u5229\u4e9a\u5171\u548c\u56fd"),(0,i.kt)("li",{parentName:"ul"},"ta \u5766\u7c73\u5c14"),(0,i.kt)("li",{parentName:"ul"},"ta-IN \u5766\u7c73\u5c14 -\u5370\u5ea6"),(0,i.kt)("li",{parentName:"ul"},"tt Tatar"),(0,i.kt)("li",{parentName:"ul"},"tt-RU Tatar-\u4fc4\u56fd"),(0,i.kt)("li",{parentName:"ul"},"te Telugu"),(0,i.kt)("li",{parentName:"ul"},"te-IN Telugu-\u5370\u5ea6"),(0,i.kt)("li",{parentName:"ul"},"th \u6cf0\u56fd"),(0,i.kt)("li",{parentName:"ul"},"th-TH \u6cf0\u56fd -\u6cf0\u56fd"),(0,i.kt)("li",{parentName:"ul"},"tr \u571f\u8033\u5176\u8bed"),(0,i.kt)("li",{parentName:"ul"},"tr-TR \u571f\u8033\u5176\u8bed -\u571f\u8033\u5176"),(0,i.kt)("li",{parentName:"ul"},"uk \u4e4c\u514b\u5170"),(0,i.kt)("li",{parentName:"ul"},"uk-UA \u4e4c\u514b\u5170 -\u4e4c\u514b\u5170"),(0,i.kt)("li",{parentName:"ul"},"ur Urdu"),(0,i.kt)("li",{parentName:"ul"},"ur-PK Urdu-\u5df4\u57fa\u65af\u5766"),(0,i.kt)("li",{parentName:"ul"},"uz Uzbek"),(0,i.kt)("li",{parentName:"ul"},"uz-UZ-Cyrl Uzbek-(\u897f\u91cc\u5c14\u5b57\u6bcd\u7684) \u4e4c\u5179\u522b\u514b\u65af\u5766"),(0,i.kt)("li",{parentName:"ul"},"uz-UZ-Latn Uzbek(\u62c9\u4e01\u6587)- \u4e4c\u5179\u522b\u514b\u65af\u5766"),(0,i.kt)("li",{parentName:"ul"},"vi \u8d8a\u5357"),(0,i.kt)("li",{parentName:"ul"},"vi-VN \u8d8a\u5357 -\u8d8a\u5357")),(0,i.kt)("h2",{id:"2111-\u53cd\u9988\u4e0e\u5efa\u8bae"},"21.11 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,i.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))),(0,i.kt)("hr",null),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e86\u89e3\u66f4\u591a")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u60f3\u4e86\u89e3\u66f4\u591a ",(0,i.kt)("inlineCode",{parentName:"p"},"\u591a\u8bed\u8a00")," \u77e5\u8bc6\u53ef\u67e5\u9605 ",(0,i.kt)("a",{parentName:"p",href:"https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/localization?view=aspnetcore-5.0"},"ASP.NET Core - \u5168\u5c40\u5316\u548c\u672c\u5730\u5316")," \u7ae0\u8282\u3002"))))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/d22033f9.09b22578.js b/handbook/build/assets/js/d22033f9.09b22578.js new file mode 100644 index 00000000000..5114f5421c5 --- /dev/null +++ b/handbook/build/assets/js/d22033f9.09b22578.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[3371],{3905:function(t,n,a){a.d(n,{Zo:function(){return i},kt:function(){return g}});var e=a(7294);function r(t,n,a){return n in t?Object.defineProperty(t,n,{value:a,enumerable:!0,configurable:!0,writable:!0}):t[n]=a,t}function l(t,n){var a=Object.keys(t);if(Object.getOwnPropertySymbols){var e=Object.getOwnPropertySymbols(t);n&&(e=e.filter((function(n){return Object.getOwnPropertyDescriptor(t,n).enumerable}))),a.push.apply(a,e)}return a}function p(t){for(var n=1;n=0||(r[a]=t[a]);return r}(t,n);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(t);for(e=0;e=0||Object.prototype.propertyIsEnumerable.call(t,a)&&(r[a]=t[a])}return r}var m=e.createContext({}),k=function(t){var n=e.useContext(m),a=n;return t&&(a="function"==typeof t?t(n):p(p({},n),t)),a},i=function(t){var n=k(t.components);return e.createElement(m.Provider,{value:n},t.children)},N={inlineCode:"code",wrapper:function(t){var n=t.children;return e.createElement(e.Fragment,{},n)}},u=e.forwardRef((function(t,n){var a=t.components,r=t.mdxType,l=t.originalType,m=t.parentName,i=d(t,["components","mdxType","originalType","parentName"]),u=k(a),g=r,o=u["".concat(m,".").concat(g)]||u[g]||N[g]||l;return a?e.createElement(o,p(p({ref:n},i),{},{components:a})):e.createElement(o,p({ref:n},i))}));function g(t,n){var a=arguments,r=n&&n.mdxType;if("string"==typeof t||r){var l=a.length,p=new Array(l);p[0]=u;var d={};for(var m in n)hasOwnProperty.call(n,m)&&(d[m]=n[m]);d.originalType=t,d.mdxType="string"==typeof t?t:r,p[1]=d;for(var k=2;k=0||(r[a]=t[a]);return r}(t,n);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(t);for(e=0;e=0||Object.prototype.propertyIsEnumerable.call(t,a)&&(r[a]=t[a])}return r}var m=e.createContext({}),k=function(t){var n=e.useContext(m),a=n;return t&&(a="function"==typeof t?t(n):p(p({},n),t)),a},i=function(t){var n=k(t.components);return e.createElement(m.Provider,{value:n},t.children)},N={inlineCode:"code",wrapper:function(t){var n=t.children;return e.createElement(e.Fragment,{},n)}},u=e.forwardRef((function(t,n){var a=t.components,r=t.mdxType,l=t.originalType,m=t.parentName,i=d(t,["components","mdxType","originalType","parentName"]),u=k(a),g=r,o=u["".concat(m,".").concat(g)]||u[g]||N[g]||l;return a?e.createElement(o,p(p({ref:n},i),{},{components:a})):e.createElement(o,p({ref:n},i))}));function g(t,n){var a=arguments,r=n&&n.mdxType;if("string"==typeof t||r){var l=a.length,p=new Array(l);p[0]=u;var d={};for(var m in n)hasOwnProperty.call(n,m)&&(d[m]=n[m]);d.originalType=t,d.mdxType="string"==typeof t?t:r,p[1]=d;for(var k=2;k=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var s=r.createContext({}),u=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},c=function(e){var t=u(e.components);return r.createElement(s.Provider,{value:t},e.children)},p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,i=e.mdxType,a=e.originalType,s=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),d=u(n),m=i,f=d["".concat(s,".").concat(m)]||d[m]||p[m]||a;return n?r.createElement(f,o(o({ref:t},c),{},{components:n})):r.createElement(f,o({ref:t},c))}));function m(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var a=n.length,o=new Array(a);o[0]=d;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l.mdxType="string"==typeof e?e:i,o[1]=l;for(var u=2;u=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var s=r.createContext({}),u=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},c=function(e){var t=u(e.components);return r.createElement(s.Provider,{value:t},e.children)},p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,i=e.mdxType,a=e.originalType,s=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),d=u(n),m=i,f=d["".concat(s,".").concat(m)]||d[m]||p[m]||a;return n?r.createElement(f,o(o({ref:t},c),{},{components:n})):r.createElement(f,o({ref:t},c))}));function m(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var a=n.length,o=new Array(a);o[0]=d;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l.mdxType="string"==typeof e?e:i,o[1]=l;for(var u=2;u=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var l=r.createContext({}),c=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},p=function(e){var t=c(e.components);return r.createElement(l.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,i=e.mdxType,a=e.originalType,l=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),d=c(n),m=i,f=d["".concat(l,".").concat(m)]||d[m]||u[m]||a;return n?r.createElement(f,o(o({ref:t},p),{},{components:n})):r.createElement(f,o({ref:t},p))}));function m(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var a=n.length,o=new Array(a);o[0]=d;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s.mdxType="string"==typeof e?e:i,o[1]=s;for(var c=2;caxios \u524d\u7aef\u6ce8\u610f\u4e8b\u9879",id:"24-\u4f7f\u7528-axios-\u524d\u7aef\u6ce8\u610f\u4e8b\u9879",children:[]}],u={toc:p};function d(e){var t=e.components,n=(0,i.Z)(e,o);return(0,a.kt)("wrapper",(0,r.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"21-\u5173\u4e8e\u914d\u7f6e"},"2.1 \u5173\u4e8e\u914d\u7f6e"),(0,a.kt)("p",null,"\u8de8\u57df\u914d\u7f6e\u6307\u7684\u662f ",(0,a.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u5ba2\u6237\u7aef\u8de8\u57df\u914d\u7f6e\u9009\u9879\u3002"),(0,a.kt)("h2",{id:"22-\u914d\u7f6e\u4fe1\u606f"},"2.2 \u914d\u7f6e\u4fe1\u606f"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"CorsAccessorSettings"),"\uff1a\u914d\u7f6e\u6839\u8282\u70b9",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"PolicyName"),"\uff1a\u8de8\u57df\u7b56\u7565\u540d\uff0c",(0,a.kt)("inlineCode",{parentName:"li"},"string")," \u7c7b\u578b\uff0c\u5fc5\u586b\uff0c\u9ed8\u8ba4 ",(0,a.kt)("inlineCode",{parentName:"li"},"FurCorsAccessor")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"WithOrigins"),"\uff1a\u5141\u8bb8\u8de8\u57df\u7684\u57df\u540d\u5217\u8868\uff0c",(0,a.kt)("inlineCode",{parentName:"li"},"string[]")," \u7c7b\u578b\uff0c\u9ed8\u8ba4 ",(0,a.kt)("inlineCode",{parentName:"li"},'[ "http://localhost:4200" ]')),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"WithHeaders"),"\uff1a\u8bf7\u6c42\u8868\u5934\uff0c\u6ca1\u6709\u914d\u7f6e\u5219\u5141\u8bb8\u6240\u6709\u8868\u5934\uff0c",(0,a.kt)("inlineCode",{parentName:"li"},"string[]")," \u7c7b\u578b"),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"WithExposedHeaders"),"\uff1a\u54cd\u5e94\u6807\u5934\uff0c",(0,a.kt)("inlineCode",{parentName:"li"},"string[]")," \u7c7b\u578b"),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"WithMethods"),"\uff1a\u8bbe\u7f6e\u8de8\u57df\u5141\u8bb8\u8bf7\u6c42\u8c13\u8bcd\uff0c\u6ca1\u6709\u914d\u7f6e\u5219\u5141\u8bb8\u6240\u6709\uff0c",(0,a.kt)("inlineCode",{parentName:"li"},"string[]")," \u7c7b\u578b"),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"AllowCredentials"),"\uff1a\u8de8\u57df\u8bf7\u6c42\u4e2d\u7684\u51ed\u636e\uff0c",(0,a.kt)("inlineCode",{parentName:"li"},"bool")," \u7c7b\u578b"),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"SetPreflightMaxAge"),"\uff1a\u8bbe\u7f6e\u9884\u68c0\u8fc7\u671f\u65f6\u95f4\uff0c",(0,a.kt)("inlineCode",{parentName:"li"},"int")," \u7c7b\u578b")))),(0,a.kt)("h2",{id:"23-\u914d\u7f6e\u793a\u4f8b"},"2.3 \u914d\u7f6e\u793a\u4f8b"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-json"},'{\n "CorsAccessorSettings": {\n "PolicyName": "MyPolicy",\n "WithOrigins": ["http://localhost:4200", "https://furion.pro"]\n }\n}\n')),(0,a.kt)("h2",{id:"24-\u4f7f\u7528-axios-\u524d\u7aef\u6ce8\u610f\u4e8b\u9879"},"2.4 \u4f7f\u7528 ",(0,a.kt)("inlineCode",{parentName:"h2"},"axios")," \u524d\u7aef\u6ce8\u610f\u4e8b\u9879"),(0,a.kt)("p",null,"\u7531\u4e8e ",(0,a.kt)("inlineCode",{parentName:"p"},"axios")," \u5bf9\u8de8\u57df\u6709\u7279\u5b9a\u7684\u9700\u8981\uff0c\u9700\u8981\u54cd\u5e94\u62a5\u6587\u4e2d\u6dfb\u52a0\u7279\u5b9a ",(0,a.kt)("inlineCode",{parentName:"p"},"Header")," \u624d\u80fd\u653e\u884c\uff0c\u5982\uff1a",(0,a.kt)("inlineCode",{parentName:"p"},"Access-Control-Expose-Headers: xxxxx"),"\uff0c\u6240\u4ee5\uff0c\u5982\u679c\u524d\u7aef\u4f7f\u7528\u4e86 ",(0,a.kt)("inlineCode",{parentName:"p"},"axios")," \u8bf7\u6c42\uff0c\u9700\u8981\u6dfb\u52a0\u4ee5\u4e0b\u914d\u7f6e\uff1a"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs"},'{\n "CorsAccessorSettings": {\n "WithExposedHeaders": ["X-Pagination","access-token","x-access-token"]\n }\n}\n')))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/d71de838.ba1661a0.js b/handbook/build/assets/js/d71de838.ba1661a0.js new file mode 100644 index 00000000000..63e45628c3e --- /dev/null +++ b/handbook/build/assets/js/d71de838.ba1661a0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[263],{3905:function(e,t,n){n.d(t,{Zo:function(){return p},kt:function(){return m}});var r=n(7294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function o(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var l=r.createContext({}),c=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},p=function(e){var t=c(e.components);return r.createElement(l.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,i=e.mdxType,a=e.originalType,l=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),d=c(n),m=i,f=d["".concat(l,".").concat(m)]||d[m]||u[m]||a;return n?r.createElement(f,o(o({ref:t},p),{},{components:n})):r.createElement(f,o({ref:t},p))}));function m(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var a=n.length,o=new Array(a);o[0]=d;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s.mdxType="string"==typeof e?e:i,o[1]=s;for(var c=2;caxios \u524d\u7aef\u6ce8\u610f\u4e8b\u9879",id:"24-\u4f7f\u7528-axios-\u524d\u7aef\u6ce8\u610f\u4e8b\u9879",children:[]}],u={toc:p};function d(e){var t=e.components,n=(0,i.Z)(e,o);return(0,a.kt)("wrapper",(0,r.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"21-\u5173\u4e8e\u914d\u7f6e"},"2.1 \u5173\u4e8e\u914d\u7f6e"),(0,a.kt)("p",null,"\u8de8\u57df\u914d\u7f6e\u6307\u7684\u662f ",(0,a.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u5ba2\u6237\u7aef\u8de8\u57df\u914d\u7f6e\u9009\u9879\u3002"),(0,a.kt)("h2",{id:"22-\u914d\u7f6e\u4fe1\u606f"},"2.2 \u914d\u7f6e\u4fe1\u606f"),(0,a.kt)("ul",null,(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"CorsAccessorSettings"),"\uff1a\u914d\u7f6e\u6839\u8282\u70b9",(0,a.kt)("ul",{parentName:"li"},(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"PolicyName"),"\uff1a\u8de8\u57df\u7b56\u7565\u540d\uff0c",(0,a.kt)("inlineCode",{parentName:"li"},"string")," \u7c7b\u578b\uff0c\u5fc5\u586b\uff0c\u9ed8\u8ba4 ",(0,a.kt)("inlineCode",{parentName:"li"},"FurCorsAccessor")),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"WithOrigins"),"\uff1a\u5141\u8bb8\u8de8\u57df\u7684\u57df\u540d\u5217\u8868\uff0c",(0,a.kt)("inlineCode",{parentName:"li"},"string[]")," \u7c7b\u578b\uff0c\u9ed8\u8ba4 ",(0,a.kt)("inlineCode",{parentName:"li"},'[ "http://localhost:4200" ]')),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"WithHeaders"),"\uff1a\u8bf7\u6c42\u8868\u5934\uff0c\u6ca1\u6709\u914d\u7f6e\u5219\u5141\u8bb8\u6240\u6709\u8868\u5934\uff0c",(0,a.kt)("inlineCode",{parentName:"li"},"string[]")," \u7c7b\u578b"),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"WithExposedHeaders"),"\uff1a\u54cd\u5e94\u6807\u5934\uff0c",(0,a.kt)("inlineCode",{parentName:"li"},"string[]")," \u7c7b\u578b"),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"WithMethods"),"\uff1a\u8bbe\u7f6e\u8de8\u57df\u5141\u8bb8\u8bf7\u6c42\u8c13\u8bcd\uff0c\u6ca1\u6709\u914d\u7f6e\u5219\u5141\u8bb8\u6240\u6709\uff0c",(0,a.kt)("inlineCode",{parentName:"li"},"string[]")," \u7c7b\u578b"),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"AllowCredentials"),"\uff1a\u8de8\u57df\u8bf7\u6c42\u4e2d\u7684\u51ed\u636e\uff0c",(0,a.kt)("inlineCode",{parentName:"li"},"bool")," \u7c7b\u578b"),(0,a.kt)("li",{parentName:"ul"},(0,a.kt)("inlineCode",{parentName:"li"},"SetPreflightMaxAge"),"\uff1a\u8bbe\u7f6e\u9884\u68c0\u8fc7\u671f\u65f6\u95f4\uff0c",(0,a.kt)("inlineCode",{parentName:"li"},"int")," \u7c7b\u578b")))),(0,a.kt)("h2",{id:"23-\u914d\u7f6e\u793a\u4f8b"},"2.3 \u914d\u7f6e\u793a\u4f8b"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-json"},'{\n "CorsAccessorSettings": {\n "PolicyName": "MyPolicy",\n "WithOrigins": ["http://localhost:4200", "https://furion.pro"]\n }\n}\n')),(0,a.kt)("h2",{id:"24-\u4f7f\u7528-axios-\u524d\u7aef\u6ce8\u610f\u4e8b\u9879"},"2.4 \u4f7f\u7528 ",(0,a.kt)("inlineCode",{parentName:"h2"},"axios")," \u524d\u7aef\u6ce8\u610f\u4e8b\u9879"),(0,a.kt)("p",null,"\u7531\u4e8e ",(0,a.kt)("inlineCode",{parentName:"p"},"axios")," \u5bf9\u8de8\u57df\u6709\u7279\u5b9a\u7684\u9700\u8981\uff0c\u9700\u8981\u54cd\u5e94\u62a5\u6587\u4e2d\u6dfb\u52a0\u7279\u5b9a ",(0,a.kt)("inlineCode",{parentName:"p"},"Header")," \u624d\u80fd\u653e\u884c\uff0c\u5982\uff1a",(0,a.kt)("inlineCode",{parentName:"p"},"Access-Control-Expose-Headers: xxxxx"),"\uff0c\u6240\u4ee5\uff0c\u5982\u679c\u524d\u7aef\u4f7f\u7528\u4e86 ",(0,a.kt)("inlineCode",{parentName:"p"},"axios")," \u8bf7\u6c42\uff0c\u9700\u8981\u6dfb\u52a0\u4ee5\u4e0b\u914d\u7f6e\uff1a"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-cs"},'{\n "CorsAccessorSettings": {\n "WithExposedHeaders": ["X-Pagination","access-token","x-access-token"]\n }\n}\n')))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/d8865cb1.3a298910.js b/handbook/build/assets/js/d8865cb1.3a298910.js new file mode 100644 index 00000000000..0e77c6925aa --- /dev/null +++ b/handbook/build/assets/js/d8865cb1.3a298910.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[6594],{3905:function(e,n,t){t.d(n,{Zo:function(){return p},kt:function(){return u}});var o=t(7294);function a(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function r(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);n&&(o=o.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,o)}return t}function i(e){for(var n=1;n=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var l=o.createContext({}),s=function(e){var n=o.useContext(l),t=n;return e&&(t="function"==typeof e?e(n):i(i({},n),e)),t},p=function(e){var n=s(e.components);return o.createElement(l.Provider,{value:n},e.children)},d={inlineCode:"code",wrapper:function(e){var n=e.children;return o.createElement(o.Fragment,{},n)}},m=o.forwardRef((function(e,n){var t=e.components,a=e.mdxType,r=e.originalType,l=e.parentName,p=c(e,["components","mdxType","originalType","parentName"]),m=s(t),u=a,g=m["".concat(l,".").concat(u)]||m[u]||d[u]||r;return t?o.createElement(g,i(i({ref:n},p),{},{components:t})):o.createElement(g,i({ref:n},p))}));function u(e,n){var t=arguments,a=n&&n.mdxType;if("string"==typeof e||a){var r=t.length,i=new Array(r);i[0]=m;var c={};for(var l in n)hasOwnProperty.call(n,l)&&(c[l]=n[l]);c.originalType=e,c.mdxType="string"==typeof e?e:a,i[1]=c;for(var s=2;sMongoDB \u670d\u52a1",id:"10321-\u6ce8\u518c-mongodb-\u670d\u52a1",children:[]}]},{value:"10.3.3 \u57fa\u672c\u4f7f\u7528",id:"1033-\u57fa\u672c\u4f7f\u7528",children:[{value:"10.3.3.1 \u5e38\u89c1\u4f8b\u5b50",id:"10331-\u5e38\u89c1\u4f8b\u5b50",children:[]},{value:"10.3.3.2 \u83b7\u53d6 MongoClient \u5bf9\u8c61",id:"10332-\u83b7\u53d6-mongoclient-\u5bf9\u8c61",children:[]}]},{value:"10.3.4 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"1034-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],d={toc:p};function m(e){var n=e.components,t=(0,a.Z)(e,i);return(0,r.kt)("wrapper",(0,o.Z)({},d,t,{components:n,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"1031-\u5173\u4e8e-mongodb"},"10.3.1 \u5173\u4e8e MongoDB"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"MongoDB")," \u662f\u4e00\u4e2a\u57fa\u4e8e\u5206\u5e03\u5f0f\u6587\u4ef6\u5b58\u50a8\u7684\u6570\u636e\u5e93\u3002\u7531 ",(0,r.kt)("inlineCode",{parentName:"p"},"C++")," \u8bed\u8a00\u7f16\u5199\u3002\u65e8\u5728\u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"WEB")," \u5e94\u7528\u63d0\u4f9b\u53ef\u6269\u5c55\u7684\u9ad8\u6027\u80fd\u6570\u636e\u5b58\u50a8\u89e3\u51b3\u65b9\u6848\u3002"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"MongoDB")," \u662f\u4e00\u4e2a\u4ecb\u4e8e\u5173\u7cfb\u6570\u636e\u5e93\u548c\u975e\u5173\u7cfb\u6570\u636e\u5e93\u4e4b\u95f4\u7684\u4ea7\u54c1\uff0c\u662f\u975e\u5173\u7cfb\u6570\u636e\u5e93\u5f53\u4e2d\u529f\u80fd\u6700\u4e30\u5bcc\uff0c\u6700\u50cf\u5173\u7cfb\u6570\u636e\u5e93\u7684\u3002"),(0,r.kt)("h2",{id:"1032-\u5982\u4f55\u96c6\u6210"},"10.3.2 \u5982\u4f55\u96c6\u6210"),(0,r.kt)("p",null,"\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\uff0c\u5df2\u7ecf\u63a8\u51fa ",(0,r.kt)("inlineCode",{parentName:"p"},"MongoDB")," \u62d3\u5c55\u5305 ",(0,r.kt)("a",{parentName:"p",href:"https://www.nuget.org/packages/Furion.Extras.DatabaseAccessor.MongoDB"},"Furion.Extras.DatabaseAccessor.MongoDB"),"\u3002"),(0,r.kt)("h3",{id:"10321-\u6ce8\u518c-mongodb-\u670d\u52a1"},"10.3.2.1 \u6ce8\u518c ",(0,r.kt)("inlineCode",{parentName:"h3"},"MongoDB")," \u670d\u52a1"),(0,r.kt)("p",null,"\u4f7f\u7528\u975e\u5e38\u7b80\u5355\uff0c\u53ea\u9700\u8981\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Startup.cs")," \u4e2d\u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"p"},"services.AddMongoDB(connectionString)")," \u5373\u53ef\u3002\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'// \u65b9\u5f0f\u4e00\nservices.AddMongoDB("mongodb://localhost:27017");\n\n// \u65b9\u5f0f\u4e8c\nservices.AddMongoDB(new MongoClientSettings {});\n\n// \u65b9\u5f0f\u4e09\nservices.AddMongoDB(new MongoUrl {});\n')),(0,r.kt)("h2",{id:"1033-\u57fa\u672c\u4f7f\u7528"},"10.3.3 \u57fa\u672c\u4f7f\u7528"),(0,r.kt)("p",null,"\u5728\u4f7f\u7528\u4e4b\u524d\uff0c\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7\u6784\u9020\u51fd\u6570\u6ce8\u5165 ",(0,r.kt)("inlineCode",{parentName:"p"},"IMongoDBRepository")," \u63a5\u53e3\uff0c\u5982\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u975e\u6cdb\u578b\u7248\u672c")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"private readonly IMongoDBRepository _mongoRepository;\npublic PersonService(IMongoDBRepository mongoRepository)\n{\n _mongoRepository = mongoRepository;\n}\n")),(0,r.kt)("h3",{id:"10331-\u5e38\u89c1\u4f8b\u5b50"},"10.3.3.1 \u5e38\u89c1\u4f8b\u5b50"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'var database = _mongoRepository.Context.GetDatabase("foo");\nvar collection = database.GetCollection("bar");\n\nawait collection.InsertOneAsync(new BsonDocument("Name", "Jack"));\n\nvar list = await collection.Find(new BsonDocument("Name", "Jack"))\n .ToListAsync();\n\nforeach(var document in list)\n{\n Console.WriteLine(document["Name"]);\n}\n')),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'public class Person\n{\n public ObjectId Id { get; set; }\n public string Name { get; set; }\n}\n\nvar database = _mongoRepository.Context.GetDatabase("foo");\nvar collection = database.GetCollection("bar");\n\nawait collection.InsertOneAsync(new Person { Name = "Jack" });\n\nvar list = await collection.Find(x => x.Name == "Jack")\n .ToListAsync();\n\nforeach(var person in list)\n{\n Console.WriteLine(person.Name);\n}\n')),(0,r.kt)("h3",{id:"10332-\u83b7\u53d6-mongoclient-\u5bf9\u8c61"},"10.3.3.2 \u83b7\u53d6 ",(0,r.kt)("inlineCode",{parentName:"h3"},"MongoClient")," \u5bf9\u8c61"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"IMongoDBRepository")," \u53ea\u5c01\u88c5\u4e86 ",(0,r.kt)("inlineCode",{parentName:"p"},"MongoDB")," \u57fa\u7840\u529f\u80fd\uff0c\u5982\u9700\u83b7\u53d6\u66f4\u591a\u64cd\u4f5c\u53ef\u901a\u8fc7 ",(0,r.kt)("inlineCode",{parentName:"p"},".Context")," \u5c5e\u6027\u83b7\u53d6 ",(0,r.kt)("inlineCode",{parentName:"p"},"MongoClient")," \u5bf9\u8c61\uff0c\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"var client = _mongoRepository.Context;\n")),(0,r.kt)("h2",{id:"1034-\u53cd\u9988\u4e0e\u5efa\u8bae"},"10.3.4 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,r.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))),(0,r.kt)("hr",null),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e86\u89e3\u66f4\u591a")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u60f3\u4e86\u89e3\u66f4\u591a ",(0,r.kt)("inlineCode",{parentName:"p"},"MongoDB")," \u77e5\u8bc6\u53ef\u67e5\u9605 ",(0,r.kt)("a",{parentName:"p",href:"https://hub.fastgit.org/mongodb/mongo-csharp-driver"},"MongoDB \u4ed3\u5e93"),"\u3002"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/d8865cb1.60802b53.js b/handbook/build/assets/js/d8865cb1.60802b53.js deleted file mode 100644 index a09937173a5..00000000000 --- a/handbook/build/assets/js/d8865cb1.60802b53.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[6594],{3905:function(e,n,t){t.d(n,{Zo:function(){return p},kt:function(){return u}});var o=t(7294);function a(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function r(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);n&&(o=o.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,o)}return t}function i(e){for(var n=1;n=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var l=o.createContext({}),s=function(e){var n=o.useContext(l),t=n;return e&&(t="function"==typeof e?e(n):i(i({},n),e)),t},p=function(e){var n=s(e.components);return o.createElement(l.Provider,{value:n},e.children)},d={inlineCode:"code",wrapper:function(e){var n=e.children;return o.createElement(o.Fragment,{},n)}},m=o.forwardRef((function(e,n){var t=e.components,a=e.mdxType,r=e.originalType,l=e.parentName,p=c(e,["components","mdxType","originalType","parentName"]),m=s(t),u=a,g=m["".concat(l,".").concat(u)]||m[u]||d[u]||r;return t?o.createElement(g,i(i({ref:n},p),{},{components:t})):o.createElement(g,i({ref:n},p))}));function u(e,n){var t=arguments,a=n&&n.mdxType;if("string"==typeof e||a){var r=t.length,i=new Array(r);i[0]=m;var c={};for(var l in n)hasOwnProperty.call(n,l)&&(c[l]=n[l]);c.originalType=e,c.mdxType="string"==typeof e?e:a,i[1]=c;for(var s=2;sMongoDB \u670d\u52a1",id:"10321-\u6ce8\u518c-mongodb-\u670d\u52a1",children:[]}]},{value:"10.3.3 \u57fa\u672c\u4f7f\u7528",id:"1033-\u57fa\u672c\u4f7f\u7528",children:[{value:"10.3.3.1 \u5e38\u89c1\u4f8b\u5b50",id:"10331-\u5e38\u89c1\u4f8b\u5b50",children:[]},{value:"10.3.3.2 \u83b7\u53d6 MongoClient \u5bf9\u8c61",id:"10332-\u83b7\u53d6-mongoclient-\u5bf9\u8c61",children:[]}]},{value:"10.3.4 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"1034-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],d={toc:p};function m(e){var n=e.components,t=(0,a.Z)(e,i);return(0,r.kt)("wrapper",(0,o.Z)({},d,t,{components:n,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"1031-\u5173\u4e8e-mongodb"},"10.3.1 \u5173\u4e8e MongoDB"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"MongoDB")," \u662f\u4e00\u4e2a\u57fa\u4e8e\u5206\u5e03\u5f0f\u6587\u4ef6\u5b58\u50a8\u7684\u6570\u636e\u5e93\u3002\u7531 ",(0,r.kt)("inlineCode",{parentName:"p"},"C++")," \u8bed\u8a00\u7f16\u5199\u3002\u65e8\u5728\u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"WEB")," \u5e94\u7528\u63d0\u4f9b\u53ef\u6269\u5c55\u7684\u9ad8\u6027\u80fd\u6570\u636e\u5b58\u50a8\u89e3\u51b3\u65b9\u6848\u3002"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"MongoDB")," \u662f\u4e00\u4e2a\u4ecb\u4e8e\u5173\u7cfb\u6570\u636e\u5e93\u548c\u975e\u5173\u7cfb\u6570\u636e\u5e93\u4e4b\u95f4\u7684\u4ea7\u54c1\uff0c\u662f\u975e\u5173\u7cfb\u6570\u636e\u5e93\u5f53\u4e2d\u529f\u80fd\u6700\u4e30\u5bcc\uff0c\u6700\u50cf\u5173\u7cfb\u6570\u636e\u5e93\u7684\u3002"),(0,r.kt)("h2",{id:"1032-\u5982\u4f55\u96c6\u6210"},"10.3.2 \u5982\u4f55\u96c6\u6210"),(0,r.kt)("p",null,"\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\uff0c\u5df2\u7ecf\u63a8\u51fa ",(0,r.kt)("inlineCode",{parentName:"p"},"MongoDB")," \u62d3\u5c55\u5305 ",(0,r.kt)("a",{parentName:"p",href:"https://www.nuget.org/packages/Furion.Extras.DatabaseAccessor.MongoDB"},"Furion.Extras.DatabaseAccessor.MongoDB"),"\u3002"),(0,r.kt)("h3",{id:"10321-\u6ce8\u518c-mongodb-\u670d\u52a1"},"10.3.2.1 \u6ce8\u518c ",(0,r.kt)("inlineCode",{parentName:"h3"},"MongoDB")," \u670d\u52a1"),(0,r.kt)("p",null,"\u4f7f\u7528\u975e\u5e38\u7b80\u5355\uff0c\u53ea\u9700\u8981\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"Startup.cs")," \u4e2d\u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"p"},"services.AddMongoDB(connectionString)")," \u5373\u53ef\u3002\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'// \u65b9\u5f0f\u4e00\nservices.AddMongoDB("mongodb://localhost:27017");\n\n// \u65b9\u5f0f\u4e8c\nservices.AddMongoDB(new MongoClientSettings {});\n\n// \u65b9\u5f0f\u4e09\nservices.AddMongoDB(new MongoUrl {});\n')),(0,r.kt)("h2",{id:"1033-\u57fa\u672c\u4f7f\u7528"},"10.3.3 \u57fa\u672c\u4f7f\u7528"),(0,r.kt)("p",null,"\u5728\u4f7f\u7528\u4e4b\u524d\uff0c\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7\u6784\u9020\u51fd\u6570\u6ce8\u5165 ",(0,r.kt)("inlineCode",{parentName:"p"},"IMongoDBRepository")," \u63a5\u53e3\uff0c\u5982\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u975e\u6cdb\u578b\u7248\u672c")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"private readonly IMongoDBRepository _mongoRepository;\npublic PersonService(IMongoDBRepository mongoRepository)\n{\n _mongoRepository = mongoRepository;\n}\n")),(0,r.kt)("h3",{id:"10331-\u5e38\u89c1\u4f8b\u5b50"},"10.3.3.1 \u5e38\u89c1\u4f8b\u5b50"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'var database = _mongoRepository.Context.GetDatabase("foo");\nvar collection = database.GetCollection("bar");\n\nawait collection.InsertOneAsync(new BsonDocument("Name", "Jack"));\n\nvar list = await collection.Find(new BsonDocument("Name", "Jack"))\n .ToListAsync();\n\nforeach(var document in list)\n{\n Console.WriteLine(document["Name"]);\n}\n')),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'public class Person\n{\n public ObjectId Id { get; set; }\n public string Name { get; set; }\n}\n\nvar database = _mongoRepository.Context.GetDatabase("foo");\nvar collection = database.GetCollection("bar");\n\nawait collection.InsertOneAsync(new Person { Name = "Jack" });\n\nvar list = await collection.Find(x => x.Name == "Jack")\n .ToListAsync();\n\nforeach(var person in list)\n{\n Console.WriteLine(person.Name);\n}\n')),(0,r.kt)("h3",{id:"10332-\u83b7\u53d6-mongoclient-\u5bf9\u8c61"},"10.3.3.2 \u83b7\u53d6 ",(0,r.kt)("inlineCode",{parentName:"h3"},"MongoClient")," \u5bf9\u8c61"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"IMongoDBRepository")," \u53ea\u5c01\u88c5\u4e86 ",(0,r.kt)("inlineCode",{parentName:"p"},"MongoDB")," \u57fa\u7840\u529f\u80fd\uff0c\u5982\u9700\u83b7\u53d6\u66f4\u591a\u64cd\u4f5c\u53ef\u901a\u8fc7 ",(0,r.kt)("inlineCode",{parentName:"p"},".Context")," \u5c5e\u6027\u83b7\u53d6 ",(0,r.kt)("inlineCode",{parentName:"p"},"MongoClient")," \u5bf9\u8c61\uff0c\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"var client = _mongoRepository.Context;\n")),(0,r.kt)("h2",{id:"1034-\u53cd\u9988\u4e0e\u5efa\u8bae"},"10.3.4 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,r.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))),(0,r.kt)("hr",null),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e86\u89e3\u66f4\u591a")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u60f3\u4e86\u89e3\u66f4\u591a ",(0,r.kt)("inlineCode",{parentName:"p"},"MongoDB")," \u77e5\u8bc6\u53ef\u67e5\u9605 ",(0,r.kt)("a",{parentName:"p",href:"https://hub.fastgit.org/mongodb/mongo-csharp-driver"},"MongoDB \u4ed3\u5e93"),"\u3002"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/d894cce0.06600e6b.js b/handbook/build/assets/js/d894cce0.06600e6b.js deleted file mode 100644 index 4a33f238815..00000000000 --- a/handbook/build/assets/js/d894cce0.06600e6b.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[5869],{3905:function(e,n,t){t.d(n,{Zo:function(){return s},kt:function(){return c}});var a=t(7294);function i(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function l(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function r(e){for(var n=1;n=0||(i[t]=e[t]);return i}(e,n);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(i[t]=e[t])}return i}var p=a.createContext({}),d=function(e){var n=a.useContext(p),t=n;return e&&(t="function"==typeof e?e(n):r(r({},n),e)),t},s=function(e){var n=d(e.components);return a.createElement(p.Provider,{value:n},e.children)},m={inlineCode:"code",wrapper:function(e){var n=e.children;return a.createElement(a.Fragment,{},n)}},u=a.forwardRef((function(e,n){var t=e.components,i=e.mdxType,l=e.originalType,p=e.parentName,s=o(e,["components","mdxType","originalType","parentName"]),u=d(t),c=i,k=u["".concat(p,".").concat(c)]||u[c]||m[c]||l;return t?a.createElement(k,r(r({ref:n},s),{},{components:t})):a.createElement(k,r({ref:n},s))}));function c(e,n){var t=arguments,i=n&&n.mdxType;if("string"==typeof e||i){var l=t.length,r=new Array(l);r[0]=u;var o={};for(var p in n)hasOwnProperty.call(n,p)&&(o[p]=n[p]);o.originalType=e,o.mdxType="string"==typeof e?e:i,r[1]=o;for(var d=2;d=0&&l<=d&&i<=o&&a>=0)||(n.scrollIntoView({block:"center",behavior:"smooth"}),n.classList.add(p),setTimeout((function(){return n.classList.remove(p)}),2e3))}),150))},T=function(e){var n,t;switch(e.keyCode){case s:var a=V.indexOf(e.target)+1;t=V[a]||V[0];break;case d:var i=V.indexOf(e.target)-1;t=V[i]||V[V.length-1]}null==(n=t)||n.focus()};return a.createElement("div",{className:"tabs-container"},a.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,r.Z)("tabs",{"tabs--block":t},c)},m.map((function(e){var n=e.value,t=e.label;return a.createElement("li",{role:"tab",tabIndex:h===n?0:-1,"aria-selected":h===n,className:(0,r.Z)("tabs__item",o,{"tabs__item--active":h===n}),key:n,ref:function(e){return V.push(e)},onKeyDown:T,onFocus:b,onClick:b},t)}))),n?(0,a.cloneElement)(y.filter((function(e){return e.props.value===h}))[0],{className:"margin-vert--md"}):a.createElement("div",{className:"margin-vert--md"},y.map((function(e,n){return(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==h})}))))}},9443:function(e,n,t){var a=(0,t(7294).createContext)(void 0);n.Z=a},6244:function(e,n,t){t.r(n),t.d(n,{frontMatter:function(){return s},contentTitle:function(){return m},metadata:function(){return u},toc:function(){return c},default:function(){return N}});var a=t(7462),i=t(3366),l=(t(7294),t(3905)),r=t(4996),o=t(5064),p=t(8215),d=["components"],s={id:"data-validation",title:"8. \u6570\u636e\u6821\u9a8c",sidebar_label:"8. \u6570\u636e\u6821\u9a8c"},m=void 0,u={unversionedId:"data-validation",id:"data-validation",isDocsHomePage:!1,title:"8. \u6570\u636e\u6821\u9a8c",description:"8.1 \u5173\u4e8e\u6570\u636e\u6821\u9a8c",source:"@site/docs/data-validation.mdx",sourceDirName:".",slug:"/data-validation",permalink:"/furion/docs/data-validation",editUrl:"https://gitee.com/dotnetchina/Furion/tree/master/handbook/docs/data-validation.mdx",version:"current",lastUpdatedBy:"Monk",lastUpdatedAt:1623834110,formattedLastUpdatedAt:"6/16/2021",frontMatter:{id:"data-validation",title:"8. \u6570\u636e\u6821\u9a8c",sidebar_label:"8. \u6570\u636e\u6821\u9a8c"},sidebar:"docs",previous:{title:"7. \u53cb\u597d\u5f02\u5e38\u5904\u7406",permalink:"/furion/docs/friendly-exception"},next:{title:"9.0 \u5165\u95e8\u7b80\u8981 \u2728",permalink:"/furion/docs/dbcontext-start"}},c=[{value:"8.1 \u5173\u4e8e\u6570\u636e\u6821\u9a8c",id:"81-\u5173\u4e8e\u6570\u636e\u6821\u9a8c",children:[]},{value:"8.2 \u6570\u636e\u6821\u9a8c\u7684\u597d\u5904",id:"82-\u6570\u636e\u6821\u9a8c\u7684\u597d\u5904",children:[]},{value:"8.3 \u6570\u636e\u6821\u9a8c\u65b9\u5f0f",id:"83-\u6570\u636e\u6821\u9a8c\u65b9\u5f0f",children:[{value:"8.3.1 \u4f20\u7edf\u65b9\u5f0f",id:"831-\u4f20\u7edf\u65b9\u5f0f",children:[]},{value:"8.3.2 Mvc \u7279\u6027\u65b9\u5f0f",id:"832-mvc-\u7279\u6027\u65b9\u5f0f",children:[]}]},{value:"8.4 DataValidation \u9a8c\u8bc1 \ud83e\udd17",id:"84-datavalidation-\u9a8c\u8bc1-",children:[{value:"8.4.1 DataValidation \u4f18\u70b9",id:"841-datavalidation-\u4f18\u70b9",children:[]}]},{value:"8.5 DataValidation \u4f7f\u7528",id:"85-datavalidation-\u4f7f\u7528",children:[{value:"8.5.1 \u6ce8\u518c\u9a8c\u8bc1\u670d\u52a1",id:"851-\u6ce8\u518c\u9a8c\u8bc1\u670d\u52a1",children:[]},{value:"8.5.2 \u517c\u5bb9 Mvc \u7279\u6027\u9a8c\u8bc1",id:"852-\u517c\u5bb9-mvc-\u7279\u6027\u9a8c\u8bc1",children:[]},{value:"8.5.3 \u517c\u5bb9 Mvc \u590d\u6742\u9a8c\u8bc1",id:"853-\u517c\u5bb9-mvc-\u590d\u6742\u9a8c\u8bc1",children:[]}]},{value:"8.6 \u624b\u52a8\u9a8c\u8bc1",id:"86-\u624b\u52a8\u9a8c\u8bc1",children:[{value:"8.6.1 \u9a8c\u8bc1\u6a21\u578b",id:"861-\u9a8c\u8bc1\u6a21\u578b",children:[]},{value:"8.6.2 TryValidate \u548c Validate",id:"862-tryvalidate-\u548c-validate",children:[]},{value:"8.6.3 ValidationTypes \u5e38\u89c1\u9a8c\u8bc1",id:"863-validationtypes-\u5e38\u89c1\u9a8c\u8bc1",children:[]},{value:"8.6.4 [DataValidation] \u7279\u6027",id:"864-datavalidation-\u7279\u6027",children:[]},{value:"8.6.5 [ModelBinder] \u7279\u6027",id:"865-modelbinder-\u7279\u6027",children:[]}]},{value:"8.7 [NonValidation] \u8df3\u8fc7\u9a8c\u8bc1",id:"87-nonvalidation-\u8df3\u8fc7\u9a8c\u8bc1",children:[]},{value:"8.8 \u9ad8\u7ea7\u81ea\u5b9a\u4e49\u64cd\u4f5c",id:"88-\u9ad8\u7ea7\u81ea\u5b9a\u4e49\u64cd\u4f5c",children:[{value:"8.8.1 \u81ea\u5b9a\u4e49 ValidationTypes \u7c7b\u578b",id:"881-\u81ea\u5b9a\u4e49-validationtypes-\u7c7b\u578b",children:[]},{value:"8.8.2 \u81ea\u5b9a\u4e49 ValidationTypes \u5931\u8d25\u6d88\u606f",id:"882-\u81ea\u5b9a\u4e49-validationtypes-\u5931\u8d25\u6d88\u606f",children:[]}]},{value:"8.9 \u6a21\u578b\u9a8c\u8bc1\u8303\u56f4",id:"89-\u6a21\u578b\u9a8c\u8bc1\u8303\u56f4",children:[{value:"8.9.1 \u5168\u5c40\u9a8c\u8bc1",id:"891-\u5168\u5c40\u9a8c\u8bc1",children:[]},{value:"8.9.2 [NonValidation] \u8df3\u8fc7\u9a8c\u8bc1",id:"892-nonvalidation-\u8df3\u8fc7\u9a8c\u8bc1",children:[]},{value:"8.9.3 [TypeFilter(typeof(DataValidationFilter))] \u5c40\u90e8\u9a8c\u8bc1",id:"893-typefiltertypeofdatavalidationfilter-\u5c40\u90e8\u9a8c\u8bc1",children:[]},{value:"8.9.4 [ApiController] \u63a7\u5236\u5668\u8303\u56f4\u9a8c\u8bc1",id:"894-apicontroller-\u63a7\u5236\u5668\u8303\u56f4\u9a8c\u8bc1",children:[]}]},{value:"8.10 MiniProfiler \u67e5\u770b",id:"810-miniprofiler-\u67e5\u770b",children:[]},{value:"8.11 \u591a\u8bed\u8a00\u652f\u6301",id:"811-\u591a\u8bed\u8a00\u652f\u6301",children:[]},{value:"8.12 \u96c6\u6210 FluentValidation \u7b2c\u4e09\u65b9\u6821\u9a8c",id:"812-\u96c6\u6210-fluentvalidation-\u7b2c\u4e09\u65b9\u6821\u9a8c",children:[{value:"8.12.1 \u5b89\u88c5 FluentValidation.AspNetCore \u62d3\u5c55\u5305",id:"8121-\u5b89\u88c5-fluentvalidationaspnetcore-\u62d3\u5c55\u5305",children:[]},{value:"8.12.2 \u5728 Startup.cs \u4e2d\u6ce8\u518c",id:"8122-\u5728-startupcs-\u4e2d\u6ce8\u518c",children:[]},{value:"8.12.3 \u4f7f\u7528\u4f8b\u5b50",id:"8123-\u4f7f\u7528\u4f8b\u5b50",children:[]}]},{value:"8.13 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"813-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],k={toc:c};function N(e){var n=e.components,t=(0,i.Z)(e,d);return(0,l.kt)("wrapper",(0,a.Z)({},k,t,{components:n,mdxType:"MDXLayout"}),(0,l.kt)("h2",{id:"81-\u5173\u4e8e\u6570\u636e\u6821\u9a8c"},"8.1 \u5173\u4e8e\u6570\u636e\u6821\u9a8c"),(0,l.kt)("p",null,"\u6570\u636e\u6821\u9a8c\u5b57\u9762\u4e0a\u7684\u610f\u601d\u5c31\u662f\u5bf9\u4f7f\u7528\u8005\u63d0\u4ea4\u8fc7\u6765\u7684\u6570\u636e\u8fdb\u884c\u5408\u6cd5\u6027\u9a8c\u8bc1\u3002\u5728\u4e00\u5957\u5b8c\u5584\u7684\u5e94\u7528\u7cfb\u7edf\u4e2d\uff0c\u6570\u636e\u6709\u6548\u6027\u6821\u9a8c\u662f\u5fc5\u4e0d\u53ef\u5c11\u7684\u4e1a\u52a1\u5904\u7406\u7b2c\u4e00\u9053\u5173\u5361\u3002"),(0,l.kt)("h2",{id:"82-\u6570\u636e\u6821\u9a8c\u7684\u597d\u5904"},"8.2 \u6570\u636e\u6821\u9a8c\u7684\u597d\u5904"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"\u8fc7\u6ee4\u4e0d\u5b89\u5168\u6570\u636e\uff0c\u63d0\u9ad8\u7cfb\u7edf\u7684\u5b89\u5168\u6027"),(0,l.kt)("li",{parentName:"ul"},"\u51cf\u5c11\u4e0d\u5fc5\u8981\u7684\u4e1a\u52a1\u5f02\u5e38\u5904\u7406\uff0c\u63d0\u9ad8\u7cfb\u7edf\u7684\u54cd\u5e94\u901f\u5ea6"),(0,l.kt)("li",{parentName:"ul"},"\u5927\u5927\u63d0\u9ad8\u7cfb\u7edf\u7a33\u5b9a\u6027"),(0,l.kt)("li",{parentName:"ul"},"\u5927\u6570\u636e\u5e76\u53d1\u65f6\u8d77\u7740\u4e00\u5b9a\u7684\u7f13\u51b2\u4f5c\u7528")),(0,l.kt)("h2",{id:"83-\u6570\u636e\u6821\u9a8c\u65b9\u5f0f"},"8.3 \u6570\u636e\u6821\u9a8c\u65b9\u5f0f"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"\u4f20\u7edf\u65b9\u5f0f\uff0c\u5728\u4e1a\u52a1\u4ee3\u7801\u4e4b\u524d\u624b\u52a8\u9a8c\u8bc1"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"Mvc")," \u7279\u6027\u65b9\u5f0f\uff0c",(0,l.kt)("inlineCode",{parentName:"li"},"Mvc")," \u5185\u7f6e\u7684 ",(0,l.kt)("inlineCode",{parentName:"li"},"DataAnnotations")," \u65b9\u5f0f"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("strong",{parentName:"li"},"\u63a8\u8350\u65b9\u5f0f"),"\uff0c",(0,l.kt)("inlineCode",{parentName:"li"},"Furion")," \u6846\u67b6\u5185\u7f6e\u7684 ",(0,l.kt)("inlineCode",{parentName:"li"},"DataValidation")," \u9a8c\u8bc1"),(0,l.kt)("li",{parentName:"ul"},"\u5176\u4ed6\u65b9\u5f0f\uff0c\u4f7f\u7528\u7b2c\u4e09\u65b9\u9a8c\u8bc1\u5e93\uff0c\u5982 ",(0,l.kt)("inlineCode",{parentName:"li"},"FluentValidation"))),(0,l.kt)("h3",{id:"831-\u4f20\u7edf\u65b9\u5f0f"},"8.3.1 \u4f20\u7edf\u65b9\u5f0f"),(0,l.kt)("p",null,"\u5728\u5f88\u591a\u8001\u9879\u76ee\u4e2d\uff0c\u6211\u4eec\u7ecf\u5e38\u770b\u5230\u8fd9\u6837\u7684\u4ee3\u7801\uff1a"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{4,9,14}","{4,9,14}":!0},'public bool Insert(Person person)\n{\n // \u9a8c\u8bc1\u53c2\u6570\n if(string.IsNullOrEmty(person.Name))\n {\n throw new System.Exception("\u540d\u5b57\u4e0d\u80fd\u4e3a\u7a7a");\n }\n\n if(person.Age < 18)\n {\n throw new System.Exception("\u5e74\u9f84\u4e0d\u80fd\u5c0f\u4e8e 18 \u5c81");\n }\n\n if(!person.Password.Equals(person.ConfirmPassword)\n {\n throw new System.Exception("\u4e24\u6b21\u5bc6\u7801\u4e0d\u4e00\u81f4");\n }\n\n // \u4e1a\u52a1\u4ee3\u7801\n _repository.Insert(person.Adapt());\n\n // ...\n}\n')),(0,l.kt)("p",null,"\u4ece\u4e0a\u9762\u7684\u4ee3\u7801\u770b\u8d77\u6765\uff0c\u4f3c\u4e4e\u6ca1\u6709\u4ec0\u4e48\u4e0d\u59a5\uff0c\u4f46\u662f\u4ece\u4e00\u4e2a\u7a0b\u5e8f\u53ef\u7ef4\u62a4\u6027\u6765\u8bf4\uff0c\u8fd9\u662f\u4e00\u4e2a\u7cdf\u7cd5\u7684\u4ee3\u7801\uff0c\u56e0\u4e3a\u8be5\u4e1a\u52a1\u4ee3\u7801\u4e2d",(0,l.kt)("strong",{parentName:"p"},"\u5305\u542b\u4e86\u592a\u591a\u4e0e\u4e1a\u52a1\u65e0\u5173\u7684\u6570\u636e\u9a8c\u8bc1"),"\u3002"),(0,l.kt)("p",null,"\u8bd5\u60f3\u4e00\u4e0b\uff0c\u5982\u679c\u8fd9\u4e2a ",(0,l.kt)("inlineCode",{parentName:"p"},"Person")," \u6709 \u51e0\u5341\u4e2a\u53c2\u6570\u90fd\u9700\u8981\u9a8c\u8bc1\u5462\uff1f\u53ef\u60f3\u800c\u77e5\uff0c\u8fd9\u662f\u4e00\u4e2a\u5e9e\u5927\u7684\u4e1a\u52a1\u4ee3\u7801\u3002"),(0,l.kt)("p",null,"\u518d\u8005\uff0c\u5982\u679c\u5176\u4ed6\u5730\u65b9\u4e5f\u9700\u8981\u7528\u5230\u8fd9\u4e2a ",(0,l.kt)("inlineCode",{parentName:"p"},"Person")," \u7c7b\u9a8c\u8bc1\u5462\uff1f\u90a3\u4ee3\u7801\u597d\u6bd4\u8001\u9f20\u5543\u8fc7\u7684\u9762\u5305\u5c51\u4e00\u6837\uff0c\u5230\u5904\u90fd\u662f\u3002"),(0,l.kt)("p",null,"\u5982\u6b64\u5f97\u77e5\uff0c\u8fd9\u6837\u7684\u65b9\u5f0f\u662f\u6781\u5176\u4e0d\u63a8\u8350\u7684\uff0c",(0,l.kt)("strong",{parentName:"p"},"\u4e0d\u4f46\u6c61\u67d3\u4e86\u4e1a\u52a1\u4ee3\u7801\uff0c\u4e5f\u7834\u574f\u4e86\u4e1a\u52a1\u804c\u8d23\u5355\u4e00\u6027\u539f\u7406\uff0c\u4e5f\u8ba9\u9a8c\u8bc1\u903b\u8f91\u65e0\u6cd5\u5b9e\u73b0\u901a\u7528\uff0c\u540e\u7eed\u7ef4\u62a4\u96be\u5ea6\u5927\u5927\u5347\u7ea7"),"\u3002"),(0,l.kt)("h3",{id:"832-mvc-\u7279\u6027\u65b9\u5f0f"},"8.3.2 ",(0,l.kt)("inlineCode",{parentName:"h3"},"Mvc")," \u7279\u6027\u65b9\u5f0f"),(0,l.kt)("p",null,"\u5728 ",(0,l.kt)("inlineCode",{parentName:"p"},"ASP.NET Core")," \u4e2d\uff0c\u5fae\u8f6f\u4e3a\u6211\u4eec\u63d0\u4f9b\u4e86\u5168\u65b0\u7684 ",(0,l.kt)("inlineCode",{parentName:"p"},"\u7279\u6027")," \u9a8c\u8bc1\u65b9\u5f0f\uff0c\u53ef\u901a\u8fc7\u5bf9\u5bf9\u8c61\u8d34\u7279\u6027\u5b9e\u73b0\u6570\u636e\u9a8c\u8bc1\u3002\u8fd9\u79cd\u65b9\u5f0f\u6709\u6548\u7684\u5c06\u6570\u636e\u6821\u9a8c\u548c\u4e1a\u52a1\u4ee3\u7801\u5265\u79bb\u5f00\u6765\uff0c\u800c\u4e14\u5bb9\u6613\u4f7f\u7528\u548c\u62d3\u5c55\u3002"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("strong",{parentName:"li"},"\u5728\u6a21\u578b\u4e2d\u9a8c\u8bc1"))),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,7-8,11-12}","{1,7-8,11-12}":!0},"using System.ComponentModel.DataAnnotations;\n\nnamespace Hoa.Application.Authorization.Dtos\n{\n public class SignInInput\n {\n [Required] // \u5fc5\u586b\u9a8c\u8bc1\n [MinLength(4)] // \u6700\u5c0f\u957f\u5ea6\u9a8c\u8bc1\n public string Account { get; set; }\n\n [Required] // \u5fc5\u586b\u9a8c\u8bc1\n [MaxLength(32)] // \u6700\u5927\u957f\u5ea6\u9a8c\u8bc1\n public string Password { get; set; }\n }\n}\n")),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("strong",{parentName:"li"},"\u5728\u53c2\u6570\u4e2d\u9a8c\u8bc1"))),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{2-3,8-9,12-13}","{2-3,8-9,12-13}":!0},'public void CheckMethodParameterValid(\n [Required] // \u5fc5\u586b\u9a8c\u8bc1\n [MinLength(4)] // \u6700\u5c0f\u957f\u5ea6\u9a8c\u8bc1\n string name,\n\n int age,\n\n [Required] // \u5fc5\u586b\u9a8c\u8bc1\n [RegularExpression("[a-zA-Z0-9_]{8,30}") // \u6b63\u5219\u8868\u8fbe\u5f0f\u9a8c\u8bc1\n string password,\n\n [Required] // \u5fc5\u586b\u9a8c\u8bc1\n [RegularExpression("[a-zA-Z0-9_]{8,30}") // \u6b63\u5219\u8868\u8fbe\u5f0f\u9a8c\u8bc1\n string confirmPassword\n)\n{\n // TODO\n}\n')),(0,l.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,l.kt)("div",{parentName:"div",className:"admonition-heading"},(0,l.kt)("h5",{parentName:"div"},(0,l.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,l.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,l.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u5c0f\u63d0\u9192")),(0,l.kt)("div",{parentName:"div",className:"admonition-content"},(0,l.kt)("p",{parentName:"div"},"\u5982\u679c\u51fd\u6570\u7684\u53c2\u6570\u5927\u4e8e\u6216\u7b49\u4e8e 3 \u4e2a\uff0c\u5efa\u8bae\u62bd\u79bb\u51fa\u6a21\u578b\u7c7b\uff0c\u4e5f\u5c31\u662f\u4e0d\u5efa\u8bae\u4e0a\u9762\u7684\u65b9\u5f0f\u3002"))),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("strong",{parentName:"li"},"\u81ea\u5b9a\u4e49\u7279\u6027\u9a8c\u8bc1"))),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,13-24}","{1,13-24}":!0},'public class ClassicMovieAttribute : ValidationAttribute\n{\n public ClassicMovieAttribute(int year)\n {\n Year = year;\n }\n\n public int Year { get; }\n\n public string GetErrorMessage() =>\n $"Classic movies must have a release year no later than {Year}.";\n\n protected override ValidationResult IsValid(object value, ValidationContext validationContext)\n {\n var movie = (Movie)validationContext.ObjectInstance;\n var releaseYear = ((DateTime)value).Year;\n\n if (movie.Genre == Genre.Classic && releaseYear > Year)\n {\n return new ValidationResult(GetErrorMessage());\n }\n\n return ValidationResult.Success;\n }\n}\n')),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("strong",{parentName:"li"},(0,l.kt)("inlineCode",{parentName:"strong"},"IValidatableObject")," \u590d\u6742\u9a8c\u8bc1"))),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,3,10-21}","{1,3,10-21}":!0},'using System.Collections.Generic;\n\npublic class DtoModel : IValidatableObject\n{\n [Required]\n [StringLength(100)]\n public string Title { get; set; }\n\n // \u4f60\u7684\u9a8c\u8bc1\u903b\u8f91\n public IEnumerable Validate(ValidationContext validationContext)\n {\n // \u8fd8\u53ef\u4ee5\u89e3\u6790\u670d\u52a1\n var service = validationContext.GetService(typeof(\u7c7b\u578b));\n\n if (\u4f60\u7684\u903b\u8f91\u4ee3\u7801)\n {\n yield return new ValidationResult(\n "\u9519\u8bef\u6d88\u606f"\n ,new[] { nameof(Title) } // \u9a8c\u8bc1\u5931\u8d25\u7684\u5c5e\u6027\n );\n }\n }\n}\n')),(0,l.kt)("p",null,(0,l.kt)("inlineCode",{parentName:"p"},"Mvc")," \u7279\u6027\u65b9\u5f0f\u6781\u5927\u7684\u5c06\u4e1a\u52a1\u903b\u8f91\u548c\u9a8c\u8bc1\u8fdb\u884c\u4e86\u5265\u79bb\u548c\u89e3\u8026\uff0c\u800c\u4e14\u8fd8\u80fd\u5b9e\u73b0\u81ea\u5b9a\u4e49\u590d\u6742\u9a8c\u8bc1\u3002"),(0,l.kt)("p",null,(0,l.kt)("strong",{parentName:"p"},"\u4f46\u662f ",(0,l.kt)("inlineCode",{parentName:"strong"},"Mvc")," \u7279\u6027\u9a8c\u8bc1\u65b9\u5f0f\u6709\u51e0\u4e2a\u660e\u663e\u7684\u7f3a\u70b9"),"\uff1a"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"\u53ea\u80fd\u5728 ",(0,l.kt)("inlineCode",{parentName:"li"},"\u63a7\u5236\u5668")," \u4e2d\u7684 ",(0,l.kt)("inlineCode",{parentName:"li"},"Action"),"\uff08\u52a8\u4f5c\u65b9\u6cd5\uff09\u4e2d\u4f7f\u7528"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("strong",{parentName:"li"},"\u65e0\u6cd5\u5728\u4efb\u610f\u7c7b\u3001\u4efb\u610f\u65b9\u6cd5\u4e2d\u4f7f\u7528")),(0,l.kt)("li",{parentName:"ul"},"\u5185\u7f6e\u7684\u9a8c\u8bc1\u7c7b\u578b\u975e\u5e38\u6709\u9650\uff0c\u4e14\u4e0d\u6613\u62d3\u5c55"),(0,l.kt)("li",{parentName:"ul"},"\u4e0d\u652f\u6301\u9a8c\u8bc1\u6d88\u606f\u540e\u671f\u914d\u7f6e")),(0,l.kt)("p",null,"\u6240\u4ee5\uff0c",(0,l.kt)("inlineCode",{parentName:"p"},"Furion")," \u63d0\u4f9b\u4e86\u65b0\u7684\u9a8c\u8bc1\u5f15\u64ce ",(0,l.kt)("inlineCode",{parentName:"p"},"DataValidation"),"\uff0c\u5728\u5b8c\u5168\u517c\u5bb9 ",(0,l.kt)("inlineCode",{parentName:"p"},"Mvc")," \u5185\u7f6e\u9a8c\u8bc1\u7684\u540c\u65f6\u63d0\u4f9b\u4e86\u5927\u91cf\u5e38\u89c1\u9a8c\u8bc1\u3001\u590d\u6742\u9a8c\u8bc1\u3001\u81ea\u5b9a\u4e49\u9a8c\u8bc1\u7b49\u80fd\u529b\u3002"),(0,l.kt)("h2",{id:"84-datavalidation-\u9a8c\u8bc1-"},"8.4 ",(0,l.kt)("inlineCode",{parentName:"h2"},"DataValidation")," \u9a8c\u8bc1 \ud83e\udd17"),(0,l.kt)("p",null,(0,l.kt)("inlineCode",{parentName:"p"},"DataValidation")," \u662f ",(0,l.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u4e86\u5168\u65b0\u7684\u9a8c\u8bc1\u65b9\u5f0f\uff0c\u5b8c\u5168\u517c\u5bb9 ",(0,l.kt)("inlineCode",{parentName:"p"},"Mvc")," \u5185\u7f6e\u9a8c\u8bc1\uff0c\u5e76\u4e14\u8d4b\u4e88\u4e86\u8d85\u80fd\u3002"),(0,l.kt)("h3",{id:"841-datavalidation-\u4f18\u70b9"},"8.4.1 ",(0,l.kt)("inlineCode",{parentName:"h3"},"DataValidation")," \u4f18\u70b9"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("strong",{parentName:"li"},"\u5b8c\u5168\u517c\u5bb9 ",(0,l.kt)("inlineCode",{parentName:"strong"},"Mvc")," \u5185\u7f6e\u9a8c\u8bc1\u5f15\u64ce")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("strong",{parentName:"li"},"\u5185\u7f6e\u5e38\u89c1\u9a8c\u8bc1\u7c7b\u578b\u53ca\u53ef\u81ea\u5b9a\u4e49\u9a8c\u8bc1\u7c7b\u578b\u529f\u80fd")),(0,l.kt)("li",{parentName:"ul"},"\u63d0\u4f9b\u5168\u5c40\u5bf9\u8c61\u62d3\u5c55\u9a8c\u8bc1\u65b9\u5f0f"),(0,l.kt)("li",{parentName:"ul"},"\u652f\u6301\u9a8c\u8bc1\u6d88\u606f\u540e\u671f\u914d\u7f6e\uff0c\u652f\u6301\u5b9e\u65f6\u66f4\u65b0"),(0,l.kt)("li",{parentName:"ul"},"\u652f\u6301\u5728\u4efb\u4f55\u7c7b\uff0c\u4efb\u4f55\u65b9\u6cd5\u3001\u4efb\u4f55\u4f4d\u7f6e\u5b9e\u73b0\u624b\u52a8\u9a8c\u8bc1\u3001\u7279\u6027\u65b9\u5f0f\u9a8c\u8bc1\u7b49"),(0,l.kt)("li",{parentName:"ul"},"\u652f\u6301\u8bbe\u7f6e\u9a8c\u8bc1\u7ed3\u679c\u6a21\u578b")),(0,l.kt)("h2",{id:"85-datavalidation-\u4f7f\u7528"},"8.5 ",(0,l.kt)("inlineCode",{parentName:"h2"},"DataValidation")," \u4f7f\u7528"),(0,l.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,l.kt)("div",{parentName:"div",className:"admonition-heading"},(0,l.kt)("h5",{parentName:"div"},(0,l.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,l.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,l.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u5907\u6ce8")),(0,l.kt)("div",{parentName:"div",className:"admonition-content"},(0,l.kt)("p",{parentName:"div"},(0,l.kt)("inlineCode",{parentName:"p"},".AddDataValidation()")," \u9ed8\u8ba4\u5df2\u7ecf\u96c6\u6210\u5728 ",(0,l.kt)("inlineCode",{parentName:"p"},"AddInject()")," \u4e2d\u4e86\uff0c\u65e0\u9700\u518d\u6b21\u6ce8\u518c\u3002\u4e5f\u5c31\u662f ",(0,l.kt)("inlineCode",{parentName:"p"},"8.5.1")," \u7ae0\u8282\u53ef\u4e0d\u914d\u7f6e\u3002"))),(0,l.kt)("h3",{id:"851-\u6ce8\u518c\u9a8c\u8bc1\u670d\u52a1"},"8.5.1 \u6ce8\u518c\u9a8c\u8bc1\u670d\u52a1"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-cs",metastring:'{11} title="Furion.Web.Core\\FurWebCoreStartup.cs"',"{11}":!0,title:'"Furion.Web.Core\\FurWebCoreStartup.cs"'},"using Microsoft.Extensions.DependencyInjection;\n\nnamespace Furion.Web.Core\n{\n [AppStartup(800)]\n public sealed class FurWebCoreStartup : AppStartup\n {\n public void ConfigureServices(IServiceCollection services)\n {\n services.AddControllers()\n .AddDataValidation();\n }\n }\n}\n")),(0,l.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,l.kt)("div",{parentName:"div",className:"admonition-heading"},(0,l.kt)("h5",{parentName:"div"},(0,l.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,l.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,l.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u6ce8\u610f")),(0,l.kt)("div",{parentName:"div",className:"admonition-content"},(0,l.kt)("p",{parentName:"div"},(0,l.kt)("inlineCode",{parentName:"p"},".AddDataValidation()")," \u9700\u5728 ",(0,l.kt)("inlineCode",{parentName:"p"},"services.AddControllers()")," \u4e4b\u540e\u6ce8\u518c\u3002"))),(0,l.kt)("h3",{id:"852-\u517c\u5bb9-mvc-\u7279\u6027\u9a8c\u8bc1"},"8.5.2 \u517c\u5bb9 ",(0,l.kt)("inlineCode",{parentName:"h3"},"Mvc")," \u7279\u6027\u9a8c\u8bc1"),(0,l.kt)(o.Z,{defaultValue:"testdto",values:[{label:"TestDto",value:"testdto"},{label:"FurionAppService",value:"FurionAppService"}],mdxType:"Tabs"},(0,l.kt)(p.Z,{value:"testdto",mdxType:"TabItem"},(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,7,10}","{1,7,10}":!0},'using System.ComponentModel.DataAnnotations;\n\nnamespace Furion.Application\n{\n public class TestDto\n {\n [Range(10, 20, ErrorMessage = "Id \u53ea\u80fd\u5728 10-20 \u533a\u95f4\u53d6\u503c")]\n public int Id { get; set; }\n\n [Required(ErrorMessage = "\u5fc5\u586b"), MinLength(3, ErrorMessage = "\u5b57\u7b26\u4e32\u957f\u5ea6\u4e0d\u80fd\u5c11\u4e8e3\u4f4d")]\n public string Name { get; set; }\n }\n}\n'))),(0,l.kt)(p.Z,{value:"FurionAppService",mdxType:"TabItem"},(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{12,22}","{12,22}":!0},'using Furion.DynamicApiController;\n\nnamespace Furion.Application\n{\n public class FurionAppService : IDynamicApiController\n {\n /// \n /// \u503c\u7c7b\u578b\u9a8c\u8bc1\n /// \n /// \n /// \n public int Get(int id)\n {\n return id;\n }\n\n /// \n /// \u5bf9\u8c61\u7c7b\u578b\u9a8c\u8bc1\n /// \n /// \n /// \n public TestDto Post(TestDto testDto)\n {\n return testDto;\n }\n }\n}\n')))),(0,l.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,l.kt)("img",{src:(0,r.Z)("img/sjyz1.gif")}),(0,l.kt)("h3",{id:"853-\u517c\u5bb9-mvc-\u590d\u6742\u9a8c\u8bc1"},"8.5.3 \u517c\u5bb9 ",(0,l.kt)("inlineCode",{parentName:"h3"},"Mvc")," \u590d\u6742\u9a8c\u8bc1"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{2,6,14-24}","{2,6,14-24}":!0},'using System.Collections.Generic;\nusing System.ComponentModel.DataAnnotations;\n\nnamespace Furion.Application\n{\n public class TestDto : IValidatableObject\n {\n [Range(10, 20, ErrorMessage = "Id \u53ea\u80fd\u5728 10-20 \u533a\u95f4\u53d6\u503c")]\n public int Id { get; set; }\n\n [Required(ErrorMessage = "\u5fc5\u586b"), MinLength(3, ErrorMessage = "\u5b57\u7b26\u4e32\u957f\u5ea6\u4e0d\u80fd\u5c11\u4e8e3\u4f4d")]\n public string Name { get; set; }\n\n public IEnumerable Validate(ValidationContext validationContext)\n {\n // \u8fd8\u53ef\u4ee5\u89e3\u6790\u670d\u52a1\n var service = validationContext.GetService(typeof(\u7c7b\u578b));\n\n if (Name.StartsWith("Furion"))\n {\n yield return new ValidationResult(\n "\u4e0d\u80fd\u4ee5 Furion \u5f00\u5934"\n , new[] { nameof(Name) }\n );\n }\n }\n }\n}\n')),(0,l.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,l.kt)("img",{src:(0,r.Z)("img/sjyz2.gif")}),(0,l.kt)("h2",{id:"86-\u624b\u52a8\u9a8c\u8bc1"},"8.6 \u624b\u52a8\u9a8c\u8bc1"),(0,l.kt)("h3",{id:"861-\u9a8c\u8bc1\u6a21\u578b"},"8.6.1 \u9a8c\u8bc1\u6a21\u578b"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,11}","{1,11}":!0},"using Furion.DataValidation;\nusing Furion.DynamicApiController;\n\nnamespace Furion.Application\n{\n public class FurionAppService : IDynamicApiController\n {\n [NonValidation] // \u8df3\u8fc7\u5168\u5c40\u9a8c\u8bc1\n public DataValidationResult Post(TestDto testDto)\n {\n return testDto.TryValidate();\n }\n }\n}\n")),(0,l.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,l.kt)("img",{src:(0,r.Z)("img/sjyz3.gif")}),(0,l.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,l.kt)("div",{parentName:"div",className:"admonition-heading"},(0,l.kt)("h5",{parentName:"div"},(0,l.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,l.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,l.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"note")),(0,l.kt)("div",{parentName:"div",className:"admonition-content"},(0,l.kt)("p",{parentName:"div"},"\u652f\u6301 ",(0,l.kt)("strong",{parentName:"p"},(0,l.kt)("inlineCode",{parentName:"strong"},"Mvc"))," \u5185\u7f6e\u7684\u7279\u6027\u9a8c\u8bc1\u3001\u5c5e\u6027\u9a8c\u8bc1\u53ca\u590d\u6742\u7684 ",(0,l.kt)("strong",{parentName:"p"},(0,l.kt)("inlineCode",{parentName:"strong"},"IValidatableObject"))," \u9a8c\u8bc1\u3002"))),(0,l.kt)("h3",{id:"862-tryvalidate-\u548c-validate"},"8.6.2 ",(0,l.kt)("inlineCode",{parentName:"h3"},"TryValidate")," \u548c ",(0,l.kt)("inlineCode",{parentName:"h3"},"Validate")),(0,l.kt)("p",null,(0,l.kt)("inlineCode",{parentName:"p"},"Furion")," \u63d0\u4f9b\u4e86 ",(0,l.kt)("inlineCode",{parentName:"p"},"TryValidate()")," \u548c ",(0,l.kt)("inlineCode",{parentName:"p"},"Validate()")," \u4e24\u4e2a\u9a8c\u8bc1\u62d3\u5c55\u65b9\u6cd5\uff0c\u552f\u4e00\u7684\u533a\u522b\u5c31\u662f\u540e\u8005\u9a8c\u8bc1\u5931\u8d25\u5c06\u81ea\u52a8\u629b\u51fa\u5f02\u5e38\u6d88\u606f\u3002"),(0,l.kt)("h3",{id:"863-validationtypes-\u5e38\u89c1\u9a8c\u8bc1"},"8.6.3 ",(0,l.kt)("inlineCode",{parentName:"h3"},"ValidationTypes")," \u5e38\u89c1\u9a8c\u8bc1"),(0,l.kt)("p",null,(0,l.kt)("inlineCode",{parentName:"p"},"Furion")," \u5185\u7f6e\u4e86\u5f88\u591a\u5e38\u7528\u7c7b\u578b\u7684\u6570\u636e\u9a8c\u8bc1\uff0c\u5305\u62ec\uff1a"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"Numeric"),"\uff1a\u6570\u503c\u7c7b\u578b"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"PositiveNumber"),"\uff1a\u6b63\u6570\u7c7b\u578b"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"NegativeNumber"),"\uff1a\u8d1f\u6570\u7c7b\u578b"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"Integer"),"\uff1a\u6574\u6570\u7c7b\u578b"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"Money"),"\uff1a\u91d1\u94b1\u7c7b\u578b"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"Date"),"\uff1a\u65e5\u671f\u7c7b\u578b"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"Time"),"\uff1a\u65f6\u95f4\u7c7b\u578b"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"IDCard"),"\uff1a\u8eab\u4efd\u8bc1\u7c7b\u578b"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"PostCode"),"\uff1a\u90ae\u7f16\u7c7b\u578b"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"PhoneNumber"),"\uff1a\u624b\u673a\u53f7\u7c7b\u578b"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"Telephone"),"\uff1a\u56fa\u8bdd\u7c7b\u578b"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"PhoneOrTelNumber"),"\uff1a\u624b\u673a\u6216\u56fa\u8bdd\u7c7b\u578b"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"EmailAddress"),"\uff1a\u90ae\u4ef6\u5730\u5740\u7c7b\u578b"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"Url"),"\uff1a\u7f51\u5740\u7c7b\u578b"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"Color"),"\uff1a\u989c\u8272\u503c\u7c7b\u578b"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"Chinese"),"\uff1a\u4e2d\u6587\u7c7b\u578b"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"IPv4"),"\uff1aIPv4 \u5730\u5740\u7c7b\u578b"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"IPv6"),"\uff1aIPv6 \u5730\u5740\u7c7b\u578b"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"Age"),"\uff1a\u5e74\u9f84\u7c7b\u578b"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"ChineseName"),"\uff1a\u4e2d\u6587\u540d\u7c7b\u578b"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"EnglishName"),"\uff1a\u82f1\u6587\u540d\u7c7b\u578b"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"Capital"),"\uff1a\u7eaf\u5927\u5199\u82f1\u6587\u7c7b\u578b"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"Lowercase"),"\uff1a\u7eaf\u5c0f\u5199\u82f1\u6587\u7c7b\u578b"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"Ascii"),"\uff1aAscii \u7c7b\u578b"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"Md5"),"\uff1aMd5 \u5b57\u7b26\u4e32\u7c7b\u578b"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"Zip"),"\uff1a\u538b\u7f29\u5305\u683c\u5f0f\u7c7b\u578b"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"Image"),"\uff1a\u56fe\u7247\u683c\u5f0f\u7c7b\u578b"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"Document"),"\uff1a\u6587\u6863\u683c\u5f0f\u7c7b\u578b"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"MP3"),"\uff1aMp3 \u683c\u5f0f\u7c7b\u578b"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"Flash"),"\uff1aFlash \u683c\u5f0f\u7c7b\u578b"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"Video"),"\uff1a\u89c6\u9891\u6587\u4ef6\u683c\u5f0f\u7c7b\u578b")),(0,l.kt)("p",null,(0,l.kt)("strong",{parentName:"p"},"\u4f7f\u7528\u793a\u4f8b")),(0,l.kt)(o.Z,{defaultValue:"dglx",values:[{label:"\u5355\u4e2a\u7c7b\u578b\u9a8c\u8bc1",value:"dglx"},{label:"\u591a\u4e2a\u7ec4\u5408\u7c7b\u578b\u9a8c\u8bc1",value:"zhlx"}],mdxType:"Tabs"},(0,l.kt)(p.Z,{value:"dglx",mdxType:"TabItem"},(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-cs"},'// \u9a8c\u8bc1\u4e2d\u6587\n"\u6211\u53eb MonK".TryValidate(ValidationTypes.Chinese); // => false\n\n// \u9a8c\u8bc1\u6570\u503c\n2.TryValidate(ValidationTypes.Numeric); // => true\n\n// \u9a8c\u8bc1\u6574\u6570\ntrue.TryValidate(ValidationTypes.Integer); // => false\n\n// \u9a8c\u8bc1\u90ae\u7bb1\n"monksoul@outlook.com".TryValidate(ValidationTypes.EmailAddress); // => true\n\n// \u9a8c\u8bc1\u8d1f\u6570\n2.0m.TryValidate(ValidationTypes.NegativeNumber); // => false\n\n// \u81ea\u5b9a\u4e49\u6b63\u5219\u8868\u8fbe\u5f0f\u9a8c\u8bc1\n"Furion".TryValidate("/^Furion$"); // => true\n'))),(0,l.kt)(p.Z,{value:"zhlx",mdxType:"TabItem"},(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-cs"},'// \u9a8c\u8bc1\u6570\u503c\u7c7b\u578b\u4e14\u662f\u6574\u6570\n"20".TryValidate(ValidationTypes.Numeric, ValidationTypes.Integer); // => true\n\n// \u9a8c\u8bc1\u65f6\u65e5\u671f\u6216\u65f6\u95f4\u683c\u5f0f\n"2020-05-20".TryValidate(ValidationPattern.AtLeastOne, ValidationTypes.Date, ValidationTypes.Time); // => true\n"23:45:20".TryValidate(ValidationPattern.AtLeastOne, ValidationTypes.Date, ValidationTypes.Time); // => true\n\n')))),(0,l.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,l.kt)("div",{parentName:"div",className:"admonition-heading"},(0,l.kt)("h5",{parentName:"div"},(0,l.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,l.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,l.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u5c0f\u77e5\u8bc6")),(0,l.kt)("div",{parentName:"div",className:"admonition-content"},(0,l.kt)("p",{parentName:"div"},"\u53ef\u901a\u8fc7\u8bbe\u7f6e ",(0,l.kt)("inlineCode",{parentName:"p"},"TryValidate([ValidationPattern], params object[] validationTypes)")," \u65b9\u6cd5\u7684 ",(0,l.kt)("inlineCode",{parentName:"p"},"ValidationPattern")," \u53c2\u6570\u914d\u7f6e\u9a8c\u8bc1\u903b\u8f91\uff0c\u5982\uff1a",(0,l.kt)("strong",{parentName:"p"},(0,l.kt)("inlineCode",{parentName:"strong"},"\u540c\u65f6\u6210\u7acb"))," \u6216 ",(0,l.kt)("strong",{parentName:"p"},(0,l.kt)("inlineCode",{parentName:"strong"},"\u53ea\u8981\u4e00\u4e2a\u6210\u7acb"))," \u5373\u53ef\u9a8c\u8bc1\u901a\u8fc7"))),(0,l.kt)("h3",{id:"864-datavalidation-\u7279\u6027"},"8.6.4 ",(0,l.kt)("inlineCode",{parentName:"h3"},"[DataValidation]")," \u7279\u6027"),(0,l.kt)("p",null,(0,l.kt)("inlineCode",{parentName:"p"},"Furion")," \u8fd8\u63d0\u4f9b\u4e86 ",(0,l.kt)("inlineCode",{parentName:"p"},"[DataValidation]")," \u7279\u6027\u65b9\u4fbf\u5728\u6a21\u578b\u53c2\u6570\u4e2d\u4f7f\u7528 ",(0,l.kt)("inlineCode",{parentName:"p"},"ValidationTypes")," \u5e38\u89c1\u9a8c\u8bc1\u6216\u81ea\u5b9a\u4e49\u9a8c\u8bc1\u3002"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,7,10,14,17,20}","{1,7,10,14,17,20}":!0},'using Furion.DataValidation;\n\nnamespace Furion.Application\n{\n public class TestDto\n {\n [DataValidation(ValidationTypes.Integer)]\n public int Id { get; set; }\n\n [DataValidation(ValidationTypes.Numeric, ValidationTypes.Integer)]\n public int Cost { get; set; }\n\n [DataValidation(ValidationPattern.AtLeastOne, ValidationTypes.Chinese, ValidationTypes.Date)]\n public string Name { get; set; }\n\n // \u53ef\u4ee5\u548cMvc\u7279\u6027\u5171\u5b58\n [Required, DataValidation(ValidationTypes.Age)]\n public int Age { get; set; }\n\n [DataValidation(ValidationTypes.IDCard, ErrorMessage = "\u81ea\u5b9a\u4e49\u8eab\u4efd\u8bc1\u63d0\u793a\u6d88\u606f")]\n public string IDCard { get; set; }\n }\n}\n')),(0,l.kt)("p",null,(0,l.kt)("strong",{parentName:"p"},(0,l.kt)("inlineCode",{parentName:"strong"},"[DataValidation]")," \u7279\u6027\u5177\u5907 ",(0,l.kt)("inlineCode",{parentName:"strong"},"ValidationAttribute")," \u7279\u6027\u7684\u6240\u6709\u914d\u7f6e\u4ee5\u5916\u8fd8\u63d0\u4f9b\u4e86\u4ee5\u4e0b\u914d\u7f6e\uff1a")),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"ValidationTypes"),"\uff1a\u9a8c\u8bc1\u7c7b\u578b\uff0c",(0,l.kt)("inlineCode",{parentName:"li"},"Enum[]")," \u7c7b\u578b\uff0c"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"ValidationPattern"),"\uff1a\u9a8c\u8bc1\u903b\u8f91\uff0c",(0,l.kt)("inlineCode",{parentName:"li"},"ValidationPattern")," \u7c7b\u578b\uff0c\u53ef\u9009 ",(0,l.kt)("inlineCode",{parentName:"li"},"AllOfThem\uff08\u5168\u90e8\u9a8c\u8bc1\u901a\u8fc7\uff09")," \u548c ",(0,l.kt)("inlineCode",{parentName:"li"},"AtleastOne\uff08\u81f3\u5c11\u4e00\u4e2a\u9a8c\u8bc1\u901a\u8fc7\uff09")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"AllowNullValue"),"\uff1a\u662f\u5426\u5141\u8bb8\u7a7a\u503c\uff0c",(0,l.kt)("inlineCode",{parentName:"li"},"bool")," \u7c7b\u578b\uff0c\u9ed8\u8ba4 ",(0,l.kt)("inlineCode",{parentName:"li"},"false")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"AllowEmptyStrings"),"\uff1a\u662f\u5426\u5141\u8bb8\u7a7a\u5b57\u7b26\u4e32\uff0c",(0,l.kt)("inlineCode",{parentName:"li"},"bool")," \u7c7b\u578b\uff0c\u9ed8\u8ba4 ",(0,l.kt)("inlineCode",{parentName:"li"},"false"))),(0,l.kt)("h3",{id:"865-modelbinder-\u7279\u6027"},"8.6.5 ",(0,l.kt)("inlineCode",{parentName:"h3"},"[ModelBinder]")," \u7279\u6027"),(0,l.kt)("p",null,"\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c\u9a8c\u8bc1\u5931\u8d25\u4fe1\u606f\u4f1a\u6839\u636e\u5c5e\u6027\u540d\u8fdb\u884c\u5e8f\u5217\u5316\uff0c\u4f46\u662f\u5982\u679c\u5c5e\u6027\u5e8f\u5217\u5316\u81ea\u5b9a\u4e49\u4e86 ",(0,l.kt)("inlineCode",{parentName:"p"},"[JsonPropertyName]")," \u7279\u6027\uff0c\u90a3\u4e48\u9a8c\u8bc1\u5931\u8d25\u7684\u6d88\u606f\u5c31\u4e0d\u5339\u914d\u4e86\uff0c\u8fd9\u65f6\u6211\u4eec\u9700\u8981\u6dfb\u52a0 ",(0,l.kt)("inlineCode",{parentName:"p"},'[ModelBinder(Name = "\u5e8f\u5217\u5316\u5bf9\u5e94\u540d\u5b57")]')," \u8fdb\u884c\u7ea0\u6b63\u3002\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1}","{1}":!0},'[JsonPropertyName("phone_number"), ModelBinder(Name = "phone_number")]\npublic string PhoneNumber { get; set; }\n')),(0,l.kt)("h2",{id:"87-nonvalidation-\u8df3\u8fc7\u9a8c\u8bc1"},"8.7 ",(0,l.kt)("inlineCode",{parentName:"h2"},"[NonValidation]")," \u8df3\u8fc7\u9a8c\u8bc1"),(0,l.kt)("p",null,(0,l.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u4e86\u5bf9\u8c61\u6a21\u578b\u8df3\u8fc7\u9a8c\u8bc1\u7279\u6027 ",(0,l.kt)("inlineCode",{parentName:"p"},"[NonValidation]"),"\uff0c\u652f\u6301\u5728 ",(0,l.kt)("inlineCode",{parentName:"p"},"\u63a7\u5236\u5668"),"\uff0c",(0,l.kt)("inlineCode",{parentName:"p"},"\u52a8\u4f5c\u65b9\u6cd5"),"\uff0c",(0,l.kt)("inlineCode",{parentName:"p"},"\u7c7b")," \u4e2d\u4f7f\u7528\u3002"),(0,l.kt)("p",null,"\u4e00\u65e6\u8d34\u4e86\u6b64\u7279\u6027\uff0c\u90a3\u4e48\u5c06\u4e0d\u4f1a\u6267\u884c\u9a8c\u8bc1\u64cd\u4f5c\u3002"),(0,l.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,l.kt)("div",{parentName:"div",className:"admonition-heading"},(0,l.kt)("h5",{parentName:"div"},(0,l.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,l.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,l.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"note")),(0,l.kt)("div",{parentName:"div",className:"admonition-content"},(0,l.kt)("p",{parentName:"div"},(0,l.kt)("strong",{parentName:"p"},(0,l.kt)("inlineCode",{parentName:"strong"},"[NonValidation]"))," \u53ea\u5bf9\u5bf9\u8c61\u7c7b\u578b\u6709\u6548\uff0c\u503c\u7c7b\u578b\u65e0\u6548\u3002"))),(0,l.kt)("h2",{id:"88-\u9ad8\u7ea7\u81ea\u5b9a\u4e49\u64cd\u4f5c"},"8.8 \u9ad8\u7ea7\u81ea\u5b9a\u4e49\u64cd\u4f5c"),(0,l.kt)("h3",{id:"881-\u81ea\u5b9a\u4e49-validationtypes-\u7c7b\u578b"},"8.8.1 \u81ea\u5b9a\u4e49 ",(0,l.kt)("inlineCode",{parentName:"h3"},"ValidationTypes")," \u7c7b\u578b"),(0,l.kt)("p",null,"\u9664\u4e86 ",(0,l.kt)("inlineCode",{parentName:"p"},"Furion")," \u5185\u7f6e\u7684\u9a8c\u8bc1\u7c7b\u578b\u4ee5\u5916\uff0c",(0,l.kt)("inlineCode",{parentName:"p"},"Furion")," \u8fd8\u63d0\u4f9b\u4e86\u975e\u5e38\u7075\u6d3b\u7684\u81ea\u5b9a\u4e49\u9a8c\u8bc1\u7c7b\u578b\u673a\u5236\u3002"),(0,l.kt)("p",null,"\u5b9e\u73b0\u81ea\u5b9a\u4e49\u9a8c\u8bc1\u7c7b\u578b\u5fc5\u987b\u9075\u5faa\u4ee5\u4e0b\u914d\u7f6e\uff1a"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"\u9a8c\u8bc1\u7c7b\u578b\u5fc5\u987b\u662f\u516c\u5f00\u4e14\u662f ",(0,l.kt)("inlineCode",{parentName:"li"},"Enum")," \u679a\u4e3e\u7c7b\u578b"),(0,l.kt)("li",{parentName:"ul"},"\u679a\u4e3e\u7c7b\u578b\u5fc5\u987b\u8d34\u6709 ",(0,l.kt)("inlineCode",{parentName:"li"},"[ValidationType]")," \u7279\u6027"),(0,l.kt)("li",{parentName:"ul"},"\u679a\u4e3e\u4e2d\u6bcf\u4e00\u9879\u5fc5\u987b\u8d34\u6709 ",(0,l.kt)("inlineCode",{parentName:"li"},"[ValidationItemMetadata]")," \u7279\u6027")),(0,l.kt)("p",null,(0,l.kt)("strong",{parentName:"p"},"\u5982"),"\uff1a"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,6,12,18}","{1,6,12,18}":!0},'using Furion.DataValidation;\nusing System.Text.RegularExpressions;\n\nnamespace Furion.Application\n{\n [ValidationType]\n public enum MyValidationTypes\n {\n /// \n /// \u5f3a\u5bc6\u7801\u7c7b\u578b\n /// \n [ValidationItemMetadata(@"^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$", "\u5fc5\u987b\u987b\u5305\u542b\u5927\u5c0f\u5199\u5b57\u6bcd\u548c\u6570\u5b57\u7684\u7ec4\u5408\uff0c\u4e0d\u80fd\u4f7f\u7528\u7279\u6b8a\u5b57\u7b26\uff0c\u957f\u5ea6\u57288-10\u4e4b\u95f4")]\n StrongPassword,\n\n /// \n /// \u4ee5 Furion \u5b57\u7b26\u4e32\u5f00\u5934\uff0c\u5ffd\u7565\u5927\u5c0f\u5199\n /// \n [ValidationItemMetadata(@"^(furion).*", "\u9ed8\u8ba4\u63d0\u793a\uff1a\u5fc5\u987b\u4ee5Fur\u5b57\u7b26\u4e32\u5f00\u5934\uff0c\u5ffd\u7565\u5927\u5c0f\u5199", RegexOptions.IgnoreCase)]\n StartWithFurString\n }\n}\n\n')),(0,l.kt)("p",null,(0,l.kt)("strong",{parentName:"p"},"\u4f7f\u7528")),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"\u624b\u52a8\u4f7f\u7528")),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-cs"},'"q1w2e3".TryValidate(MyValidationTypes.StrongPassword); // => false\n\n"furos".TryValidate(MyValidationTypes.StartWithFurString); // => true\n')),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"[DataValidation]")," \u4e2d\u4f7f\u7528")),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-cs"},"[DataValidation(MyValidationTypes.StrongPassword)]\npublic string Password { get; set; }\n")),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"\u591a\u4e2a\u81ea\u5b9a\u4e49\u7c7b\u578b\u6df7\u7528")),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-cs"},'"Q1w2e3r4t5!*".TryValidate(MyValidationTypes.StrongPassword, ValidationTypes.EmailAddress); // => true\n')),(0,l.kt)("div",{className:"admonition admonition-caution alert alert--warning"},(0,l.kt)("div",{parentName:"div",className:"admonition-heading"},(0,l.kt)("h5",{parentName:"div"},(0,l.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,l.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 16 16"},(0,l.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"}))),"\u7279\u522b\u6ce8\u610f")),(0,l.kt)("div",{parentName:"div",className:"admonition-content"},(0,l.kt)("p",{parentName:"div"},"\u81ea\u5b9a\u4e49\u7684\u9a8c\u8bc1\u7c7b\u578b\u4e5f\u8981\u4fdd\u8bc1\u540d\u79f0\u5168\u5c40\u552f\u4e00\uff0c\u4e5f\u5c31\u662f\u591a\u4e2a\u9a8c\u8bc1\u7c7b\u578b\u4e0d\u80fd\u51fa\u73b0\u4e00\u6837\u7684\u540d\u5b57\u3002"))),(0,l.kt)("h3",{id:"882-\u81ea\u5b9a\u4e49-validationtypes-\u5931\u8d25\u6d88\u606f"},"8.8.2 \u81ea\u5b9a\u4e49 ",(0,l.kt)("inlineCode",{parentName:"h3"},"ValidationTypes")," \u5931\u8d25\u6d88\u606f"),(0,l.kt)("p",null,(0,l.kt)("inlineCode",{parentName:"p"},"Furion")," \u5185\u7f6e\u7684 ",(0,l.kt)("inlineCode",{parentName:"p"},"ValidationTypes")," \u5df2\u6709\u9ed8\u8ba4\u7684\u5931\u8d25\u6d88\u606f\uff1a"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"Numeric"),"\uff1a",(0,l.kt)("strong",{parentName:"li"},"The Value is not a numeric type.")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"PositiveNumber"),"\uff1a",(0,l.kt)("strong",{parentName:"li"},"The Value is not a positive number type.")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"NegativeNumber"),"\uff1a",(0,l.kt)("strong",{parentName:"li"},"The Value is not a negative number type.")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"Integer"),"\uff1a",(0,l.kt)("strong",{parentName:"li"},"The Value is not a integer type.")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"Money"),"\uff1a",(0,l.kt)("strong",{parentName:"li"},"The Value is not a money type.")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"Date"),"\uff1a",(0,l.kt)("strong",{parentName:"li"},"The Value is not a date type.")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"Time"),"\uff1a",(0,l.kt)("strong",{parentName:"li"},"The Value is not a time type.")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"IDCard"),"\uff1a",(0,l.kt)("strong",{parentName:"li"},"The Value is not a idcard type.")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"PostCode"),"\uff1a",(0,l.kt)("strong",{parentName:"li"},"The Value is not a postcode type.")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"PhoneNumber"),"\uff1a",(0,l.kt)("strong",{parentName:"li"},"The Value is not a phone number type.")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"Telephone"),"\uff1a",(0,l.kt)("strong",{parentName:"li"},"The Value is not a telephone type.")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"PhoneOrTelNumber"),"\uff1a",(0,l.kt)("strong",{parentName:"li"},"The Value is not a phone number or telephone type.")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"EmailAddress"),"\uff1a",(0,l.kt)("strong",{parentName:"li"},"The Value is not a email address type.")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"Url"),"\uff1a",(0,l.kt)("strong",{parentName:"li"},"The Value is not a url address type.")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"Color"),"\uff1a",(0,l.kt)("strong",{parentName:"li"},"The Value is not a color type.")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"Chinese"),"\uff1a",(0,l.kt)("strong",{parentName:"li"},"The Value is not a chinese type.")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"IPv4"),"\uff1a",(0,l.kt)("strong",{parentName:"li"},"The Value is not a IPv4 type.")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"IPv6"),"\uff1a",(0,l.kt)("strong",{parentName:"li"},"The Value is not a IPv6 type.")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"Age"),"\uff1a",(0,l.kt)("strong",{parentName:"li"},"The Value is not a age type.")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"ChineseName"),"\uff1a",(0,l.kt)("strong",{parentName:"li"},"The Value is not a chinese name type.")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"EnglishName"),"\uff1a",(0,l.kt)("strong",{parentName:"li"},"The Value is not a english name type.")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"Capital"),"\uff1a",(0,l.kt)("strong",{parentName:"li"},"The Value is not a capital type.")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"Lowercase"),"\uff1a",(0,l.kt)("strong",{parentName:"li"},"The Value is not a lowercase type.")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"Ascii"),"\uff1a",(0,l.kt)("strong",{parentName:"li"},"The Value is not a ascii type.")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"Md5"),"\uff1a",(0,l.kt)("strong",{parentName:"li"},"The Value is not a md5 type.")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"Zip"),"\uff1a",(0,l.kt)("strong",{parentName:"li"},"The Value is not a zip type.")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"Image"),"\uff1a",(0,l.kt)("strong",{parentName:"li"},"The Value is not a image type.")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"Document"),"\uff1a",(0,l.kt)("strong",{parentName:"li"},"The Value is not a document type.")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"MP3"),"\uff1a",(0,l.kt)("strong",{parentName:"li"},"The Value is not a mp3 type.")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"Flash"),"\uff1a",(0,l.kt)("strong",{parentName:"li"},"The Value is not a flash type.")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"Video"),"\uff1a",(0,l.kt)("strong",{parentName:"li"},"The Value is not a video type."))),(0,l.kt)("p",null,"\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7\u521b\u5efa\u7ee7\u627f ",(0,l.kt)("inlineCode",{parentName:"p"},"IValidationMessageTypeProvider")," \u9a8c\u8bc1\u6d88\u606f\u63d0\u4f9b\u5668\u7c7b\u578b\uff0c\u6216\u901a\u8fc7 ",(0,l.kt)("inlineCode",{parentName:"p"},"appsettings.json")," \u914d\u7f6e\u3002"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("strong",{parentName:"li"},(0,l.kt)("inlineCode",{parentName:"strong"},"[ValidationMessageType]"))," \u65b9\u5f0f")),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{5,9,12,15,19,22}","{5,9,12,15,19,22}":!0},'using Furion.DataValidation;\n\nnamespace Furion.Application\n{\n [ValidationMessageType]\n public enum MyValidationMessageType\n {\n [ValidationMessage("\u5fc5\u987b\u662f\u6570\u503c\u7c7b\u578b")]\n Numeric,\n\n [ValidationMessage("\u5fc5\u987b\u662f\u6b63\u6570")]\n PositiveNumber,\n\n // \u4fee\u6539\u81ea\u5b9a\u4e49\u7c7b\u578b\u9a8c\u8bc1\u5931\u8d25\u6d88\u606f\n [ValidationMessage("\u5bc6\u7801\u592a\u7b80\u5355\u4e86")]\n StrongPassword,\n\n [ValidationMessage("\u5fc5\u987b\u4ee5 Furion \u5f00\u5934")]\n StartWithFurString\n }\n}\n')),(0,l.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,l.kt)("div",{parentName:"div",className:"admonition-heading"},(0,l.kt)("h5",{parentName:"div"},(0,l.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,l.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,l.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u5c0f\u77e5\u8bc6")),(0,l.kt)("div",{parentName:"div",className:"admonition-content"},(0,l.kt)("p",{parentName:"div"},"\u9664\u4e86\u8d34 ",(0,l.kt)("inlineCode",{parentName:"p"},"[ValidationMessageType]")," \u7279\u6027\u5916\uff0c",(0,l.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u8fd8\u63d0\u4f9b\u4e86 ",(0,l.kt)("inlineCode",{parentName:"p"},"IValidationMessageTypeProvider")," \u65b9\u5f0f\u67e5\u627e\u9a8c\u8bc1\u6d88\u606f\u7c7b\u578b\uff0c\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,l.kt)("pre",{parentName:"div"},(0,l.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,6,8-12}","{1,6,8-12}":!0},"using Furion.DataValidation;\nusing System;\n\nnamespace Furion.Application\n{\n public class MyValidationTypeMessageProvider : IValidationMessageTypeProvider\n {\n public Type[] Definitions => new[]\n {\n typeof(MyValidationMessageType),\n typeof(MyValidationMessageType2)\n };\n }\n}\n")),(0,l.kt)("p",{parentName:"div"},"\u6ce8\u518c\u9a8c\u8bc1\u6d88\u606f\u63d0\u4f9b\u5668"),(0,l.kt)("pre",{parentName:"div"},(0,l.kt)("code",{parentName:"pre",className:"language-cs",metastring:'{11} title="Furion.Web.Core\\FurWebCoreStartup.cs"',"{11}":!0,title:'"Furion.Web.Core\\FurWebCoreStartup.cs"'},"using Microsoft.Extensions.DependencyInjection;\n\nnamespace Furion.Web.Core\n{\n [AppStartup(800)]\n public sealed class FurWebCoreStartup : AppStartup\n {\n public void ConfigureServices(IServiceCollection services)\n {\n services.AddControllers()\n .AddDataValidation();\n }\n }\n}\n")))),(0,l.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,l.kt)("img",{src:(0,r.Z)("img/sjyz4.png")}),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("strong",{parentName:"li"},(0,l.kt)("inlineCode",{parentName:"strong"},"appsettings.json")," \u65b9\u5f0f"))),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-json",metastring:'{2-9} title="Furion.Web.Entry/appsettings.json"',"{2-9}":!0,title:'"Furion.Web.Entry/appsettings.json"'},'{\n "ValidationTypeMessageSettings": {\n "Definitions": [\n ["Numeric", "\u5fc5\u987b\u662f\u6570\u503c\u7c7b\u578b"],\n\n ["StrongPassword", "\u5bc6\u7801\u592a\u7b80\u5355\u4e86!!!"]\n ]\n }\n}\n')),(0,l.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,l.kt)("div",{parentName:"div",className:"admonition-heading"},(0,l.kt)("h5",{parentName:"div"},(0,l.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,l.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,l.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"important")),(0,l.kt)("div",{parentName:"div",className:"admonition-content"},(0,l.kt)("p",{parentName:"div"},(0,l.kt)("inlineCode",{parentName:"p"},"appsettings.json")," \u4e2d\u76f8\u540c\u7684 ",(0,l.kt)("inlineCode",{parentName:"p"},"Key")," \u4f1a\u8986\u76d6 ",(0,l.kt)("inlineCode",{parentName:"p"},"IValidationMessageTypeProvider")," \u63d0\u4f9b\u76f8\u540c ",(0,l.kt)("inlineCode",{parentName:"p"},"Key")," \u7684\u503c\u3002"))),(0,l.kt)("h4",{id:"\u9519\u8bef\u6d88\u606f\u67e5\u627e\u4f18\u5148\u7ea7"},"\u9519\u8bef\u6d88\u606f\u67e5\u627e\u4f18\u5148\u7ea7"),(0,l.kt)("p",null,(0,l.kt)("inlineCode",{parentName:"p"},"DefaultErrorMessage")," -> ",(0,l.kt)("inlineCode",{parentName:"p"},"IValidationMessageTypeProvider")," -> ",(0,l.kt)("inlineCode",{parentName:"p"},"appsettings.json")," (",(0,l.kt)("strong",{parentName:"p"},"\u4f4e -> \u9ad8"),")"),(0,l.kt)("h2",{id:"89-\u6a21\u578b\u9a8c\u8bc1\u8303\u56f4"},"8.9 \u6a21\u578b\u9a8c\u8bc1\u8303\u56f4"),(0,l.kt)("p",null,(0,l.kt)("inlineCode",{parentName:"p"},"Furion")," \u63d0\u4f9b\u591a\u79cd\u6a21\u578b\u9a8c\u8bc1\u8303\u56f4\u8bbe\u7f6e\uff1a"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"\u5168\u5c40\u9a8c\u8bc1\uff08\u9ed8\u8ba4\uff09"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"[NonValidation]")," \u8df3\u8fc7\u9a8c\u8bc1"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"[TypeFilter(typeof(DataValidationFilter))]")," \u5c40\u90e8\u9a8c\u8bc1"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"[ApiController]")," \u63a7\u5236\u5668\u8303\u56f4\u9a8c\u8bc1")),(0,l.kt)("h3",{id:"891-\u5168\u5c40\u9a8c\u8bc1"},"8.9.1 \u5168\u5c40\u9a8c\u8bc1"),(0,l.kt)("p",null,"\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c\u901a\u8fc7 ",(0,l.kt)("inlineCode",{parentName:"p"},".AddDataValidation()")," \u6ce8\u518c\u6570\u636e\u9a8c\u8bc1\u670d\u52a1\u5df2\u7ecf\u542f\u7528\u4e86\u5168\u5c40\u9a8c\u8bc1\uff0c\u5982\u82e5\u4e0d\u60f3\u542f\u7528\u5168\u5c40\u9a8c\u8bc1\uff0c\u5219\u4f20\u5165 ",(0,l.kt)("inlineCode",{parentName:"p"},"false")," \u5373\u53ef\uff0c\u5982\uff1a",(0,l.kt)("inlineCode",{parentName:"p"},".AddDataValidation(false)"),"\u3002"),(0,l.kt)("h3",{id:"892-nonvalidation-\u8df3\u8fc7\u9a8c\u8bc1"},"8.9.2 ",(0,l.kt)("inlineCode",{parentName:"h3"},"[NonValidation]")," \u8df3\u8fc7\u9a8c\u8bc1"),(0,l.kt)("p",null,"\u53ef\u901a\u8fc7 ",(0,l.kt)("inlineCode",{parentName:"p"},"[NonValidation]")," \u8d34\u5728 ",(0,l.kt)("inlineCode",{parentName:"p"},"\u63a7\u5236\u5668"),"\uff0c",(0,l.kt)("inlineCode",{parentName:"p"},"\u52a8\u4f5c\u65b9\u6cd5"),"\uff0c",(0,l.kt)("inlineCode",{parentName:"p"},"\u7c7b")," \u4e2d\u8df3\u8fc7\u5168\u5c40\u9a8c\u8bc1\u6216\u4e0d\u9700\u8981\u9a8c\u8bc1"),(0,l.kt)("h3",{id:"893-typefiltertypeofdatavalidationfilter-\u5c40\u90e8\u9a8c\u8bc1"},"8.9.3 ",(0,l.kt)("inlineCode",{parentName:"h3"},"[TypeFilter(typeof(DataValidationFilter))]")," \u5c40\u90e8\u9a8c\u8bc1"),(0,l.kt)("p",null,"\u6211\u4eec\u4e5f\u53ef\u4ee5\u65e0\u9700\u6ce8\u518c ",(0,l.kt)("inlineCode",{parentName:"p"},".AddDataValidation()")," \u670d\u52a1\uff0c\u76f4\u63a5\u5728 ",(0,l.kt)("inlineCode",{parentName:"p"},"\u52a8\u4f5c\u65b9\u6cd5")," \u4e0a\u8d34 ",(0,l.kt)("inlineCode",{parentName:"p"},"[TypeFilter(typeof(DataValidationFilter))]")," \u53ef\u542f\u7528\u5c40\u90e8\u9a8c\u8bc1\u3002\u5982\uff1a"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,3,9}","{1,3,9}":!0},"using Furion.DataValidation;\nusing Furion.DynamicApiController;\nusing Microsoft.AspNetCore.Mvc;\n\nnamespace Furion.Application\n{\n public class FurionAppService : IDynamicApiController\n {\n [TypeFilter(typeof(DataValidationFilter))]\n public TestDto Post(TestDto testDto)\n {\n return testDto;\n }\n }\n}\n")),(0,l.kt)("h3",{id:"894-apicontroller-\u63a7\u5236\u5668\u8303\u56f4\u9a8c\u8bc1"},"8.9.4 ",(0,l.kt)("inlineCode",{parentName:"h3"},"[ApiController]")," \u63a7\u5236\u5668\u8303\u56f4\u9a8c\u8bc1"),(0,l.kt)("p",null,(0,l.kt)("inlineCode",{parentName:"p"},"[ApiController]")," \u662f ",(0,l.kt)("inlineCode",{parentName:"p"},"Mvc")," \u63d0\u4f9b\u7684\u63a7\u5236\u5668\u8303\u56f4\uff08\u542b\u6240\u6709\u52a8\u4f5c\u65b9\u6cd5\uff09\u7684\u9a8c\u8bc1\u3002"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,5}","{1,5}":!0},"using Microsoft.AspNetCore.Mvc;\n\nnamespace Furion.Web.Entry.Controllers\n{\n [ApiController]\n public class MvcController : Controller\n {\n public IActionResult Index()\n {\n return View();\n }\n }\n}\n")),(0,l.kt)("h2",{id:"810-miniprofiler-\u67e5\u770b"},"8.10 ",(0,l.kt)("inlineCode",{parentName:"h2"},"MiniProfiler")," \u67e5\u770b"),(0,l.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,l.kt)("img",{src:(0,r.Z)("img/sjyz5.png")}),(0,l.kt)("h2",{id:"811-\u591a\u8bed\u8a00\u652f\u6301"},"8.11 \u591a\u8bed\u8a00\u652f\u6301"),(0,l.kt)("p",null,"\u53c2\u89c1 ",(0,l.kt)("a",{parentName:"p",href:"./local-language"},"\u3010\u5168\u7403\u5316\u548c\u672c\u5730\u5316\uff08\u591a\u8bed\u8a00\uff09\u3011")," \u7ae0\u8282"),(0,l.kt)("h2",{id:"812-\u96c6\u6210-fluentvalidation-\u7b2c\u4e09\u65b9\u6821\u9a8c"},"8.12 \u96c6\u6210 ",(0,l.kt)("inlineCode",{parentName:"h2"},"FluentValidation")," \u7b2c\u4e09\u65b9\u6821\u9a8c"),(0,l.kt)("p",null,(0,l.kt)("inlineCode",{parentName:"p"},"Furion")," \u5185\u7f6e\u7684\u9a8c\u8bc1\u5df2\u7ecf\u53ef\u4ee5\u6ee1\u8db3\u7edd\u5927\u591a\u6570\u6821\u9a8c\u60c5\u51b5\uff0c\u4f46\u662f\u5bf9\u4e8e ",(0,l.kt)("inlineCode",{parentName:"p"},"\u573a\u666f")," \u9a8c\u8bc1\u76ee\u524d\u6682\u672a\u652f\u6301\u3002\u8fd9\u91cc\u63a8\u8350\u96c6\u6210 ",(0,l.kt)("a",{parentName:"p",href:"https://github.com/FluentValidation/FluentValidation"},(0,l.kt)("inlineCode",{parentName:"a"},"FluentValidation"))," \u7b2c\u4e09\u65b9\u6821\u9a8c\u7ec4\u4ef6\u3002"),(0,l.kt)("h3",{id:"8121-\u5b89\u88c5-fluentvalidationaspnetcore-\u62d3\u5c55\u5305"},"8.12.1 \u5b89\u88c5 ",(0,l.kt)("inlineCode",{parentName:"h3"},"FluentValidation.AspNetCore")," \u62d3\u5c55\u5305"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-shell"},"dotnet add package FluentValidation.AspNetCore\n")),(0,l.kt)("h3",{id:"8122-\u5728-startupcs-\u4e2d\u6ce8\u518c"},"8.12.2 \u5728 ",(0,l.kt)("inlineCode",{parentName:"h3"},"Startup.cs")," \u4e2d\u6ce8\u518c"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{2}","{2}":!0},"services.AddControllers()\n .AddFluentValidation(fv => {\n fv.RegisterValidatorsFromAssemblies(App.Assemblies);\n });\n")),(0,l.kt)("h3",{id:"8123-\u4f7f\u7528\u4f8b\u5b50"},"8.12.3 \u4f7f\u7528\u4f8b\u5b50"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-cs"},"public class Person {\n public int Id { get; set; }\n public string Name { get; set; }\n public string Email { get; set; }\n public int Age { get; set; }\n}\n\npublic class PersonValidator : AbstractValidator {\n public PersonValidator() {\n RuleFor(x => x.Id).NotNull();\n RuleFor(x => x.Name).Length(0, 10);\n RuleFor(x => x.Email).EmailAddress();\n RuleFor(x => x.Age).InclusiveBetween(18, 60);\n }\n}\n")),(0,l.kt)("p",null,(0,l.kt)("strong",{parentName:"p"},"\u5728\u63a7\u5236\u5668\u4e2d\u4f7f\u7528\u65e0\u9700\u624b\u52a8\u8c03\u7528 ",(0,l.kt)("inlineCode",{parentName:"strong"},"ModelState.IsValid")," \u8fdb\u884c\u5224\u65ad\uff0c",(0,l.kt)("inlineCode",{parentName:"strong"},"Furion")," \u4f1a\u81ea\u52a8\u6267\u884c\u8be5\u64cd\u4f5c\u3002")),(0,l.kt)("p",null,"\u5982\u9700\u4e86\u89e3\u66f4\u591a ",(0,l.kt)("inlineCode",{parentName:"p"},"FluentValidation")," \u77e5\u8bc6\u53ef\u67e5\u9605\u5b98\u65b9\u6587\u6863\uff1a",(0,l.kt)("a",{parentName:"p",href:"https://fluentvalidation.net/"},"https://fluentvalidation.net/")),(0,l.kt)("h2",{id:"813-\u53cd\u9988\u4e0e\u5efa\u8bae"},"8.13 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,l.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,l.kt)("div",{parentName:"div",className:"admonition-heading"},(0,l.kt)("h5",{parentName:"div"},(0,l.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,l.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,l.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,l.kt)("div",{parentName:"div",className:"admonition-content"},(0,l.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,l.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}N.isMDXComponent=!0},6010:function(e,n,t){function a(e){var n,t,i="";if("string"==typeof e||"number"==typeof e)i+=e;else if("object"==typeof e)if(Array.isArray(e))for(n=0;n=0||(i[t]=e[t]);return i}(e,n);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(i[t]=e[t])}return i}var p=a.createContext({}),d=function(e){var n=a.useContext(p),t=n;return e&&(t="function"==typeof e?e(n):r(r({},n),e)),t},s=function(e){var n=d(e.components);return a.createElement(p.Provider,{value:n},e.children)},m={inlineCode:"code",wrapper:function(e){var n=e.children;return a.createElement(a.Fragment,{},n)}},u=a.forwardRef((function(e,n){var t=e.components,i=e.mdxType,l=e.originalType,p=e.parentName,s=o(e,["components","mdxType","originalType","parentName"]),u=d(t),c=i,k=u["".concat(p,".").concat(c)]||u[c]||m[c]||l;return t?a.createElement(k,r(r({ref:n},s),{},{components:t})):a.createElement(k,r({ref:n},s))}));function c(e,n){var t=arguments,i=n&&n.mdxType;if("string"==typeof e||i){var l=t.length,r=new Array(l);r[0]=u;var o={};for(var p in n)hasOwnProperty.call(n,p)&&(o[p]=n[p]);o.originalType=e,o.mdxType="string"==typeof e?e:i,r[1]=o;for(var d=2;d=0&&l<=d&&i<=o&&a>=0)||(n.scrollIntoView({block:"center",behavior:"smooth"}),n.classList.add(p),setTimeout((function(){return n.classList.remove(p)}),2e3))}),150))},M=function(e){var n,t=null;switch(e.key){case"ArrowRight":var a=f.indexOf(e.target)+1;t=f[a]||f[0];break;case"ArrowLeft":var i=f.indexOf(e.target)-1;t=f[i]||f[f.length-1]}null==(n=t)||n.focus()};return a.createElement("div",{className:"tabs-container"},a.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,r.Z)("tabs",{"tabs--block":i},u)},k.map((function(e){var n=e.value,t=e.label;return a.createElement("li",{role:"tab",tabIndex:y===n?0:-1,"aria-selected":y===n,className:(0,r.Z)("tabs__item",o,{"tabs__item--active":y===n}),key:n,ref:function(e){return f.push(e)},onKeyDown:M,onFocus:T,onClick:T},null!=t?t:n)}))),t?(0,a.cloneElement)(c.filter((function(e){return e.props.value===y}))[0],{className:"margin-vert--md"}):a.createElement("div",{className:"margin-vert--md"},c.map((function(e,n){return(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==y})}))))}},9443:function(e,n,t){var a=(0,t(7294).createContext)(void 0);n.Z=a},4520:function(e,n,t){t.r(n),t.d(n,{frontMatter:function(){return s},contentTitle:function(){return m},metadata:function(){return u},toc:function(){return c},default:function(){return N}});var a=t(7462),i=t(3366),l=(t(7294),t(3905)),r=t(4996),o=t(5064),p=t(8215),d=["components"],s={id:"data-validation",title:"8. \u6570\u636e\u6821\u9a8c",sidebar_label:"8. \u6570\u636e\u6821\u9a8c"},m=void 0,u={unversionedId:"data-validation",id:"data-validation",isDocsHomePage:!1,title:"8. \u6570\u636e\u6821\u9a8c",description:"8.1 \u5173\u4e8e\u6570\u636e\u6821\u9a8c",source:"@site/docs/data-validation.mdx",sourceDirName:".",slug:"/data-validation",permalink:"/furion/docs/data-validation",editUrl:"https://gitee.com/dotnetchina/Furion/tree/master/handbook/docs/data-validation.mdx",tags:[],version:"current",lastUpdatedBy:"Monk",lastUpdatedAt:1623834110,formattedLastUpdatedAt:"6/16/2021",frontMatter:{id:"data-validation",title:"8. \u6570\u636e\u6821\u9a8c",sidebar_label:"8. \u6570\u636e\u6821\u9a8c"},sidebar:"docs",previous:{title:"7. \u53cb\u597d\u5f02\u5e38\u5904\u7406",permalink:"/furion/docs/friendly-exception"},next:{title:"9.0 \u5165\u95e8\u7b80\u8981 \u2728",permalink:"/furion/docs/dbcontext-start"}},c=[{value:"8.1 \u5173\u4e8e\u6570\u636e\u6821\u9a8c",id:"81-\u5173\u4e8e\u6570\u636e\u6821\u9a8c",children:[]},{value:"8.2 \u6570\u636e\u6821\u9a8c\u7684\u597d\u5904",id:"82-\u6570\u636e\u6821\u9a8c\u7684\u597d\u5904",children:[]},{value:"8.3 \u6570\u636e\u6821\u9a8c\u65b9\u5f0f",id:"83-\u6570\u636e\u6821\u9a8c\u65b9\u5f0f",children:[{value:"8.3.1 \u4f20\u7edf\u65b9\u5f0f",id:"831-\u4f20\u7edf\u65b9\u5f0f",children:[]},{value:"8.3.2 Mvc \u7279\u6027\u65b9\u5f0f",id:"832-mvc-\u7279\u6027\u65b9\u5f0f",children:[]}]},{value:"8.4 DataValidation \u9a8c\u8bc1 \ud83e\udd17",id:"84-datavalidation-\u9a8c\u8bc1-",children:[{value:"8.4.1 DataValidation \u4f18\u70b9",id:"841-datavalidation-\u4f18\u70b9",children:[]}]},{value:"8.5 DataValidation \u4f7f\u7528",id:"85-datavalidation-\u4f7f\u7528",children:[{value:"8.5.1 \u6ce8\u518c\u9a8c\u8bc1\u670d\u52a1",id:"851-\u6ce8\u518c\u9a8c\u8bc1\u670d\u52a1",children:[]},{value:"8.5.2 \u517c\u5bb9 Mvc \u7279\u6027\u9a8c\u8bc1",id:"852-\u517c\u5bb9-mvc-\u7279\u6027\u9a8c\u8bc1",children:[]},{value:"8.5.3 \u517c\u5bb9 Mvc \u590d\u6742\u9a8c\u8bc1",id:"853-\u517c\u5bb9-mvc-\u590d\u6742\u9a8c\u8bc1",children:[]}]},{value:"8.6 \u624b\u52a8\u9a8c\u8bc1",id:"86-\u624b\u52a8\u9a8c\u8bc1",children:[{value:"8.6.1 \u9a8c\u8bc1\u6a21\u578b",id:"861-\u9a8c\u8bc1\u6a21\u578b",children:[]},{value:"8.6.2 TryValidate \u548c Validate",id:"862-tryvalidate-\u548c-validate",children:[]},{value:"8.6.3 ValidationTypes \u5e38\u89c1\u9a8c\u8bc1",id:"863-validationtypes-\u5e38\u89c1\u9a8c\u8bc1",children:[]},{value:"8.6.4 [DataValidation] \u7279\u6027",id:"864-datavalidation-\u7279\u6027",children:[]},{value:"8.6.5 [ModelBinder] \u7279\u6027",id:"865-modelbinder-\u7279\u6027",children:[]}]},{value:"8.7 [NonValidation] \u8df3\u8fc7\u9a8c\u8bc1",id:"87-nonvalidation-\u8df3\u8fc7\u9a8c\u8bc1",children:[]},{value:"8.8 \u9ad8\u7ea7\u81ea\u5b9a\u4e49\u64cd\u4f5c",id:"88-\u9ad8\u7ea7\u81ea\u5b9a\u4e49\u64cd\u4f5c",children:[{value:"8.8.1 \u81ea\u5b9a\u4e49 ValidationTypes \u7c7b\u578b",id:"881-\u81ea\u5b9a\u4e49-validationtypes-\u7c7b\u578b",children:[]},{value:"8.8.2 \u81ea\u5b9a\u4e49 ValidationTypes \u5931\u8d25\u6d88\u606f",id:"882-\u81ea\u5b9a\u4e49-validationtypes-\u5931\u8d25\u6d88\u606f",children:[]}]},{value:"8.9 \u6a21\u578b\u9a8c\u8bc1\u8303\u56f4",id:"89-\u6a21\u578b\u9a8c\u8bc1\u8303\u56f4",children:[{value:"8.9.1 \u5168\u5c40\u9a8c\u8bc1",id:"891-\u5168\u5c40\u9a8c\u8bc1",children:[]},{value:"8.9.2 [NonValidation] \u8df3\u8fc7\u9a8c\u8bc1",id:"892-nonvalidation-\u8df3\u8fc7\u9a8c\u8bc1",children:[]},{value:"8.9.3 [TypeFilter(typeof(DataValidationFilter))] \u5c40\u90e8\u9a8c\u8bc1",id:"893-typefiltertypeofdatavalidationfilter-\u5c40\u90e8\u9a8c\u8bc1",children:[]},{value:"8.9.4 [ApiController] \u63a7\u5236\u5668\u8303\u56f4\u9a8c\u8bc1",id:"894-apicontroller-\u63a7\u5236\u5668\u8303\u56f4\u9a8c\u8bc1",children:[]}]},{value:"8.10 MiniProfiler \u67e5\u770b",id:"810-miniprofiler-\u67e5\u770b",children:[]},{value:"8.11 \u591a\u8bed\u8a00\u652f\u6301",id:"811-\u591a\u8bed\u8a00\u652f\u6301",children:[]},{value:"8.12 \u96c6\u6210 FluentValidation \u7b2c\u4e09\u65b9\u6821\u9a8c",id:"812-\u96c6\u6210-fluentvalidation-\u7b2c\u4e09\u65b9\u6821\u9a8c",children:[{value:"8.12.1 \u5b89\u88c5 FluentValidation.AspNetCore \u62d3\u5c55\u5305",id:"8121-\u5b89\u88c5-fluentvalidationaspnetcore-\u62d3\u5c55\u5305",children:[]},{value:"8.12.2 \u5728 Startup.cs \u4e2d\u6ce8\u518c",id:"8122-\u5728-startupcs-\u4e2d\u6ce8\u518c",children:[]},{value:"8.12.3 \u4f7f\u7528\u4f8b\u5b50",id:"8123-\u4f7f\u7528\u4f8b\u5b50",children:[]}]},{value:"8.13 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"813-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],k={toc:c};function N(e){var n=e.components,t=(0,i.Z)(e,d);return(0,l.kt)("wrapper",(0,a.Z)({},k,t,{components:n,mdxType:"MDXLayout"}),(0,l.kt)("h2",{id:"81-\u5173\u4e8e\u6570\u636e\u6821\u9a8c"},"8.1 \u5173\u4e8e\u6570\u636e\u6821\u9a8c"),(0,l.kt)("p",null,"\u6570\u636e\u6821\u9a8c\u5b57\u9762\u4e0a\u7684\u610f\u601d\u5c31\u662f\u5bf9\u4f7f\u7528\u8005\u63d0\u4ea4\u8fc7\u6765\u7684\u6570\u636e\u8fdb\u884c\u5408\u6cd5\u6027\u9a8c\u8bc1\u3002\u5728\u4e00\u5957\u5b8c\u5584\u7684\u5e94\u7528\u7cfb\u7edf\u4e2d\uff0c\u6570\u636e\u6709\u6548\u6027\u6821\u9a8c\u662f\u5fc5\u4e0d\u53ef\u5c11\u7684\u4e1a\u52a1\u5904\u7406\u7b2c\u4e00\u9053\u5173\u5361\u3002"),(0,l.kt)("h2",{id:"82-\u6570\u636e\u6821\u9a8c\u7684\u597d\u5904"},"8.2 \u6570\u636e\u6821\u9a8c\u7684\u597d\u5904"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"\u8fc7\u6ee4\u4e0d\u5b89\u5168\u6570\u636e\uff0c\u63d0\u9ad8\u7cfb\u7edf\u7684\u5b89\u5168\u6027"),(0,l.kt)("li",{parentName:"ul"},"\u51cf\u5c11\u4e0d\u5fc5\u8981\u7684\u4e1a\u52a1\u5f02\u5e38\u5904\u7406\uff0c\u63d0\u9ad8\u7cfb\u7edf\u7684\u54cd\u5e94\u901f\u5ea6"),(0,l.kt)("li",{parentName:"ul"},"\u5927\u5927\u63d0\u9ad8\u7cfb\u7edf\u7a33\u5b9a\u6027"),(0,l.kt)("li",{parentName:"ul"},"\u5927\u6570\u636e\u5e76\u53d1\u65f6\u8d77\u7740\u4e00\u5b9a\u7684\u7f13\u51b2\u4f5c\u7528")),(0,l.kt)("h2",{id:"83-\u6570\u636e\u6821\u9a8c\u65b9\u5f0f"},"8.3 \u6570\u636e\u6821\u9a8c\u65b9\u5f0f"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"\u4f20\u7edf\u65b9\u5f0f\uff0c\u5728\u4e1a\u52a1\u4ee3\u7801\u4e4b\u524d\u624b\u52a8\u9a8c\u8bc1"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"Mvc")," \u7279\u6027\u65b9\u5f0f\uff0c",(0,l.kt)("inlineCode",{parentName:"li"},"Mvc")," \u5185\u7f6e\u7684 ",(0,l.kt)("inlineCode",{parentName:"li"},"DataAnnotations")," \u65b9\u5f0f"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("strong",{parentName:"li"},"\u63a8\u8350\u65b9\u5f0f"),"\uff0c",(0,l.kt)("inlineCode",{parentName:"li"},"Furion")," \u6846\u67b6\u5185\u7f6e\u7684 ",(0,l.kt)("inlineCode",{parentName:"li"},"DataValidation")," \u9a8c\u8bc1"),(0,l.kt)("li",{parentName:"ul"},"\u5176\u4ed6\u65b9\u5f0f\uff0c\u4f7f\u7528\u7b2c\u4e09\u65b9\u9a8c\u8bc1\u5e93\uff0c\u5982 ",(0,l.kt)("inlineCode",{parentName:"li"},"FluentValidation"))),(0,l.kt)("h3",{id:"831-\u4f20\u7edf\u65b9\u5f0f"},"8.3.1 \u4f20\u7edf\u65b9\u5f0f"),(0,l.kt)("p",null,"\u5728\u5f88\u591a\u8001\u9879\u76ee\u4e2d\uff0c\u6211\u4eec\u7ecf\u5e38\u770b\u5230\u8fd9\u6837\u7684\u4ee3\u7801\uff1a"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{4,9,14}","{4,9,14}":!0},'public bool Insert(Person person)\n{\n // \u9a8c\u8bc1\u53c2\u6570\n if(string.IsNullOrEmty(person.Name))\n {\n throw new System.Exception("\u540d\u5b57\u4e0d\u80fd\u4e3a\u7a7a");\n }\n\n if(person.Age < 18)\n {\n throw new System.Exception("\u5e74\u9f84\u4e0d\u80fd\u5c0f\u4e8e 18 \u5c81");\n }\n\n if(!person.Password.Equals(person.ConfirmPassword)\n {\n throw new System.Exception("\u4e24\u6b21\u5bc6\u7801\u4e0d\u4e00\u81f4");\n }\n\n // \u4e1a\u52a1\u4ee3\u7801\n _repository.Insert(person.Adapt());\n\n // ...\n}\n')),(0,l.kt)("p",null,"\u4ece\u4e0a\u9762\u7684\u4ee3\u7801\u770b\u8d77\u6765\uff0c\u4f3c\u4e4e\u6ca1\u6709\u4ec0\u4e48\u4e0d\u59a5\uff0c\u4f46\u662f\u4ece\u4e00\u4e2a\u7a0b\u5e8f\u53ef\u7ef4\u62a4\u6027\u6765\u8bf4\uff0c\u8fd9\u662f\u4e00\u4e2a\u7cdf\u7cd5\u7684\u4ee3\u7801\uff0c\u56e0\u4e3a\u8be5\u4e1a\u52a1\u4ee3\u7801\u4e2d",(0,l.kt)("strong",{parentName:"p"},"\u5305\u542b\u4e86\u592a\u591a\u4e0e\u4e1a\u52a1\u65e0\u5173\u7684\u6570\u636e\u9a8c\u8bc1"),"\u3002"),(0,l.kt)("p",null,"\u8bd5\u60f3\u4e00\u4e0b\uff0c\u5982\u679c\u8fd9\u4e2a ",(0,l.kt)("inlineCode",{parentName:"p"},"Person")," \u6709 \u51e0\u5341\u4e2a\u53c2\u6570\u90fd\u9700\u8981\u9a8c\u8bc1\u5462\uff1f\u53ef\u60f3\u800c\u77e5\uff0c\u8fd9\u662f\u4e00\u4e2a\u5e9e\u5927\u7684\u4e1a\u52a1\u4ee3\u7801\u3002"),(0,l.kt)("p",null,"\u518d\u8005\uff0c\u5982\u679c\u5176\u4ed6\u5730\u65b9\u4e5f\u9700\u8981\u7528\u5230\u8fd9\u4e2a ",(0,l.kt)("inlineCode",{parentName:"p"},"Person")," \u7c7b\u9a8c\u8bc1\u5462\uff1f\u90a3\u4ee3\u7801\u597d\u6bd4\u8001\u9f20\u5543\u8fc7\u7684\u9762\u5305\u5c51\u4e00\u6837\uff0c\u5230\u5904\u90fd\u662f\u3002"),(0,l.kt)("p",null,"\u5982\u6b64\u5f97\u77e5\uff0c\u8fd9\u6837\u7684\u65b9\u5f0f\u662f\u6781\u5176\u4e0d\u63a8\u8350\u7684\uff0c",(0,l.kt)("strong",{parentName:"p"},"\u4e0d\u4f46\u6c61\u67d3\u4e86\u4e1a\u52a1\u4ee3\u7801\uff0c\u4e5f\u7834\u574f\u4e86\u4e1a\u52a1\u804c\u8d23\u5355\u4e00\u6027\u539f\u7406\uff0c\u4e5f\u8ba9\u9a8c\u8bc1\u903b\u8f91\u65e0\u6cd5\u5b9e\u73b0\u901a\u7528\uff0c\u540e\u7eed\u7ef4\u62a4\u96be\u5ea6\u5927\u5927\u5347\u7ea7"),"\u3002"),(0,l.kt)("h3",{id:"832-mvc-\u7279\u6027\u65b9\u5f0f"},"8.3.2 ",(0,l.kt)("inlineCode",{parentName:"h3"},"Mvc")," \u7279\u6027\u65b9\u5f0f"),(0,l.kt)("p",null,"\u5728 ",(0,l.kt)("inlineCode",{parentName:"p"},"ASP.NET Core")," \u4e2d\uff0c\u5fae\u8f6f\u4e3a\u6211\u4eec\u63d0\u4f9b\u4e86\u5168\u65b0\u7684 ",(0,l.kt)("inlineCode",{parentName:"p"},"\u7279\u6027")," \u9a8c\u8bc1\u65b9\u5f0f\uff0c\u53ef\u901a\u8fc7\u5bf9\u5bf9\u8c61\u8d34\u7279\u6027\u5b9e\u73b0\u6570\u636e\u9a8c\u8bc1\u3002\u8fd9\u79cd\u65b9\u5f0f\u6709\u6548\u7684\u5c06\u6570\u636e\u6821\u9a8c\u548c\u4e1a\u52a1\u4ee3\u7801\u5265\u79bb\u5f00\u6765\uff0c\u800c\u4e14\u5bb9\u6613\u4f7f\u7528\u548c\u62d3\u5c55\u3002"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("strong",{parentName:"li"},"\u5728\u6a21\u578b\u4e2d\u9a8c\u8bc1"))),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,7-8,11-12}","{1,7-8,11-12}":!0},"using System.ComponentModel.DataAnnotations;\n\nnamespace Hoa.Application.Authorization.Dtos\n{\n public class SignInInput\n {\n [Required] // \u5fc5\u586b\u9a8c\u8bc1\n [MinLength(4)] // \u6700\u5c0f\u957f\u5ea6\u9a8c\u8bc1\n public string Account { get; set; }\n\n [Required] // \u5fc5\u586b\u9a8c\u8bc1\n [MaxLength(32)] // \u6700\u5927\u957f\u5ea6\u9a8c\u8bc1\n public string Password { get; set; }\n }\n}\n")),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("strong",{parentName:"li"},"\u5728\u53c2\u6570\u4e2d\u9a8c\u8bc1"))),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{2-3,8-9,12-13}","{2-3,8-9,12-13}":!0},'public void CheckMethodParameterValid(\n [Required] // \u5fc5\u586b\u9a8c\u8bc1\n [MinLength(4)] // \u6700\u5c0f\u957f\u5ea6\u9a8c\u8bc1\n string name,\n\n int age,\n\n [Required] // \u5fc5\u586b\u9a8c\u8bc1\n [RegularExpression("[a-zA-Z0-9_]{8,30}") // \u6b63\u5219\u8868\u8fbe\u5f0f\u9a8c\u8bc1\n string password,\n\n [Required] // \u5fc5\u586b\u9a8c\u8bc1\n [RegularExpression("[a-zA-Z0-9_]{8,30}") // \u6b63\u5219\u8868\u8fbe\u5f0f\u9a8c\u8bc1\n string confirmPassword\n)\n{\n // TODO\n}\n')),(0,l.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,l.kt)("div",{parentName:"div",className:"admonition-heading"},(0,l.kt)("h5",{parentName:"div"},(0,l.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,l.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,l.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u5c0f\u63d0\u9192")),(0,l.kt)("div",{parentName:"div",className:"admonition-content"},(0,l.kt)("p",{parentName:"div"},"\u5982\u679c\u51fd\u6570\u7684\u53c2\u6570\u5927\u4e8e\u6216\u7b49\u4e8e 3 \u4e2a\uff0c\u5efa\u8bae\u62bd\u79bb\u51fa\u6a21\u578b\u7c7b\uff0c\u4e5f\u5c31\u662f\u4e0d\u5efa\u8bae\u4e0a\u9762\u7684\u65b9\u5f0f\u3002"))),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("strong",{parentName:"li"},"\u81ea\u5b9a\u4e49\u7279\u6027\u9a8c\u8bc1"))),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,13-24}","{1,13-24}":!0},'public class ClassicMovieAttribute : ValidationAttribute\n{\n public ClassicMovieAttribute(int year)\n {\n Year = year;\n }\n\n public int Year { get; }\n\n public string GetErrorMessage() =>\n $"Classic movies must have a release year no later than {Year}.";\n\n protected override ValidationResult IsValid(object value, ValidationContext validationContext)\n {\n var movie = (Movie)validationContext.ObjectInstance;\n var releaseYear = ((DateTime)value).Year;\n\n if (movie.Genre == Genre.Classic && releaseYear > Year)\n {\n return new ValidationResult(GetErrorMessage());\n }\n\n return ValidationResult.Success;\n }\n}\n')),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("strong",{parentName:"li"},(0,l.kt)("inlineCode",{parentName:"strong"},"IValidatableObject")," \u590d\u6742\u9a8c\u8bc1"))),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,3,10-21}","{1,3,10-21}":!0},'using System.Collections.Generic;\n\npublic class DtoModel : IValidatableObject\n{\n [Required]\n [StringLength(100)]\n public string Title { get; set; }\n\n // \u4f60\u7684\u9a8c\u8bc1\u903b\u8f91\n public IEnumerable Validate(ValidationContext validationContext)\n {\n // \u8fd8\u53ef\u4ee5\u89e3\u6790\u670d\u52a1\n var service = validationContext.GetService(typeof(\u7c7b\u578b));\n\n if (\u4f60\u7684\u903b\u8f91\u4ee3\u7801)\n {\n yield return new ValidationResult(\n "\u9519\u8bef\u6d88\u606f"\n ,new[] { nameof(Title) } // \u9a8c\u8bc1\u5931\u8d25\u7684\u5c5e\u6027\n );\n }\n }\n}\n')),(0,l.kt)("p",null,(0,l.kt)("inlineCode",{parentName:"p"},"Mvc")," \u7279\u6027\u65b9\u5f0f\u6781\u5927\u7684\u5c06\u4e1a\u52a1\u903b\u8f91\u548c\u9a8c\u8bc1\u8fdb\u884c\u4e86\u5265\u79bb\u548c\u89e3\u8026\uff0c\u800c\u4e14\u8fd8\u80fd\u5b9e\u73b0\u81ea\u5b9a\u4e49\u590d\u6742\u9a8c\u8bc1\u3002"),(0,l.kt)("p",null,(0,l.kt)("strong",{parentName:"p"},"\u4f46\u662f ",(0,l.kt)("inlineCode",{parentName:"strong"},"Mvc")," \u7279\u6027\u9a8c\u8bc1\u65b9\u5f0f\u6709\u51e0\u4e2a\u660e\u663e\u7684\u7f3a\u70b9"),"\uff1a"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"\u53ea\u80fd\u5728 ",(0,l.kt)("inlineCode",{parentName:"li"},"\u63a7\u5236\u5668")," \u4e2d\u7684 ",(0,l.kt)("inlineCode",{parentName:"li"},"Action"),"\uff08\u52a8\u4f5c\u65b9\u6cd5\uff09\u4e2d\u4f7f\u7528"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("strong",{parentName:"li"},"\u65e0\u6cd5\u5728\u4efb\u610f\u7c7b\u3001\u4efb\u610f\u65b9\u6cd5\u4e2d\u4f7f\u7528")),(0,l.kt)("li",{parentName:"ul"},"\u5185\u7f6e\u7684\u9a8c\u8bc1\u7c7b\u578b\u975e\u5e38\u6709\u9650\uff0c\u4e14\u4e0d\u6613\u62d3\u5c55"),(0,l.kt)("li",{parentName:"ul"},"\u4e0d\u652f\u6301\u9a8c\u8bc1\u6d88\u606f\u540e\u671f\u914d\u7f6e")),(0,l.kt)("p",null,"\u6240\u4ee5\uff0c",(0,l.kt)("inlineCode",{parentName:"p"},"Furion")," \u63d0\u4f9b\u4e86\u65b0\u7684\u9a8c\u8bc1\u5f15\u64ce ",(0,l.kt)("inlineCode",{parentName:"p"},"DataValidation"),"\uff0c\u5728\u5b8c\u5168\u517c\u5bb9 ",(0,l.kt)("inlineCode",{parentName:"p"},"Mvc")," \u5185\u7f6e\u9a8c\u8bc1\u7684\u540c\u65f6\u63d0\u4f9b\u4e86\u5927\u91cf\u5e38\u89c1\u9a8c\u8bc1\u3001\u590d\u6742\u9a8c\u8bc1\u3001\u81ea\u5b9a\u4e49\u9a8c\u8bc1\u7b49\u80fd\u529b\u3002"),(0,l.kt)("h2",{id:"84-datavalidation-\u9a8c\u8bc1-"},"8.4 ",(0,l.kt)("inlineCode",{parentName:"h2"},"DataValidation")," \u9a8c\u8bc1 \ud83e\udd17"),(0,l.kt)("p",null,(0,l.kt)("inlineCode",{parentName:"p"},"DataValidation")," \u662f ",(0,l.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u4e86\u5168\u65b0\u7684\u9a8c\u8bc1\u65b9\u5f0f\uff0c\u5b8c\u5168\u517c\u5bb9 ",(0,l.kt)("inlineCode",{parentName:"p"},"Mvc")," \u5185\u7f6e\u9a8c\u8bc1\uff0c\u5e76\u4e14\u8d4b\u4e88\u4e86\u8d85\u80fd\u3002"),(0,l.kt)("h3",{id:"841-datavalidation-\u4f18\u70b9"},"8.4.1 ",(0,l.kt)("inlineCode",{parentName:"h3"},"DataValidation")," \u4f18\u70b9"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("strong",{parentName:"li"},"\u5b8c\u5168\u517c\u5bb9 ",(0,l.kt)("inlineCode",{parentName:"strong"},"Mvc")," \u5185\u7f6e\u9a8c\u8bc1\u5f15\u64ce")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("strong",{parentName:"li"},"\u5185\u7f6e\u5e38\u89c1\u9a8c\u8bc1\u7c7b\u578b\u53ca\u53ef\u81ea\u5b9a\u4e49\u9a8c\u8bc1\u7c7b\u578b\u529f\u80fd")),(0,l.kt)("li",{parentName:"ul"},"\u63d0\u4f9b\u5168\u5c40\u5bf9\u8c61\u62d3\u5c55\u9a8c\u8bc1\u65b9\u5f0f"),(0,l.kt)("li",{parentName:"ul"},"\u652f\u6301\u9a8c\u8bc1\u6d88\u606f\u540e\u671f\u914d\u7f6e\uff0c\u652f\u6301\u5b9e\u65f6\u66f4\u65b0"),(0,l.kt)("li",{parentName:"ul"},"\u652f\u6301\u5728\u4efb\u4f55\u7c7b\uff0c\u4efb\u4f55\u65b9\u6cd5\u3001\u4efb\u4f55\u4f4d\u7f6e\u5b9e\u73b0\u624b\u52a8\u9a8c\u8bc1\u3001\u7279\u6027\u65b9\u5f0f\u9a8c\u8bc1\u7b49"),(0,l.kt)("li",{parentName:"ul"},"\u652f\u6301\u8bbe\u7f6e\u9a8c\u8bc1\u7ed3\u679c\u6a21\u578b")),(0,l.kt)("h2",{id:"85-datavalidation-\u4f7f\u7528"},"8.5 ",(0,l.kt)("inlineCode",{parentName:"h2"},"DataValidation")," \u4f7f\u7528"),(0,l.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,l.kt)("div",{parentName:"div",className:"admonition-heading"},(0,l.kt)("h5",{parentName:"div"},(0,l.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,l.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,l.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u5907\u6ce8")),(0,l.kt)("div",{parentName:"div",className:"admonition-content"},(0,l.kt)("p",{parentName:"div"},(0,l.kt)("inlineCode",{parentName:"p"},".AddDataValidation()")," \u9ed8\u8ba4\u5df2\u7ecf\u96c6\u6210\u5728 ",(0,l.kt)("inlineCode",{parentName:"p"},"AddInject()")," \u4e2d\u4e86\uff0c\u65e0\u9700\u518d\u6b21\u6ce8\u518c\u3002\u4e5f\u5c31\u662f ",(0,l.kt)("inlineCode",{parentName:"p"},"8.5.1")," \u7ae0\u8282\u53ef\u4e0d\u914d\u7f6e\u3002"))),(0,l.kt)("h3",{id:"851-\u6ce8\u518c\u9a8c\u8bc1\u670d\u52a1"},"8.5.1 \u6ce8\u518c\u9a8c\u8bc1\u670d\u52a1"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-cs",metastring:'{11} title="Furion.Web.Core\\FurWebCoreStartup.cs"',"{11}":!0,title:'"Furion.Web.Core\\FurWebCoreStartup.cs"'},"using Microsoft.Extensions.DependencyInjection;\n\nnamespace Furion.Web.Core\n{\n [AppStartup(800)]\n public sealed class FurWebCoreStartup : AppStartup\n {\n public void ConfigureServices(IServiceCollection services)\n {\n services.AddControllers()\n .AddDataValidation();\n }\n }\n}\n")),(0,l.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,l.kt)("div",{parentName:"div",className:"admonition-heading"},(0,l.kt)("h5",{parentName:"div"},(0,l.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,l.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,l.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u6ce8\u610f")),(0,l.kt)("div",{parentName:"div",className:"admonition-content"},(0,l.kt)("p",{parentName:"div"},(0,l.kt)("inlineCode",{parentName:"p"},".AddDataValidation()")," \u9700\u5728 ",(0,l.kt)("inlineCode",{parentName:"p"},"services.AddControllers()")," \u4e4b\u540e\u6ce8\u518c\u3002"))),(0,l.kt)("h3",{id:"852-\u517c\u5bb9-mvc-\u7279\u6027\u9a8c\u8bc1"},"8.5.2 \u517c\u5bb9 ",(0,l.kt)("inlineCode",{parentName:"h3"},"Mvc")," \u7279\u6027\u9a8c\u8bc1"),(0,l.kt)(o.Z,{defaultValue:"testdto",values:[{label:"TestDto",value:"testdto"},{label:"FurionAppService",value:"FurionAppService"}],mdxType:"Tabs"},(0,l.kt)(p.Z,{value:"testdto",mdxType:"TabItem"},(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,7,10}","{1,7,10}":!0},'using System.ComponentModel.DataAnnotations;\n\nnamespace Furion.Application\n{\n public class TestDto\n {\n [Range(10, 20, ErrorMessage = "Id \u53ea\u80fd\u5728 10-20 \u533a\u95f4\u53d6\u503c")]\n public int Id { get; set; }\n\n [Required(ErrorMessage = "\u5fc5\u586b"), MinLength(3, ErrorMessage = "\u5b57\u7b26\u4e32\u957f\u5ea6\u4e0d\u80fd\u5c11\u4e8e3\u4f4d")]\n public string Name { get; set; }\n }\n}\n'))),(0,l.kt)(p.Z,{value:"FurionAppService",mdxType:"TabItem"},(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{12,22}","{12,22}":!0},'using Furion.DynamicApiController;\n\nnamespace Furion.Application\n{\n public class FurionAppService : IDynamicApiController\n {\n /// \n /// \u503c\u7c7b\u578b\u9a8c\u8bc1\n /// \n /// \n /// \n public int Get(int id)\n {\n return id;\n }\n\n /// \n /// \u5bf9\u8c61\u7c7b\u578b\u9a8c\u8bc1\n /// \n /// \n /// \n public TestDto Post(TestDto testDto)\n {\n return testDto;\n }\n }\n}\n')))),(0,l.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,l.kt)("img",{src:(0,r.Z)("img/sjyz1.gif")}),(0,l.kt)("h3",{id:"853-\u517c\u5bb9-mvc-\u590d\u6742\u9a8c\u8bc1"},"8.5.3 \u517c\u5bb9 ",(0,l.kt)("inlineCode",{parentName:"h3"},"Mvc")," \u590d\u6742\u9a8c\u8bc1"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{2,6,14-24}","{2,6,14-24}":!0},'using System.Collections.Generic;\nusing System.ComponentModel.DataAnnotations;\n\nnamespace Furion.Application\n{\n public class TestDto : IValidatableObject\n {\n [Range(10, 20, ErrorMessage = "Id \u53ea\u80fd\u5728 10-20 \u533a\u95f4\u53d6\u503c")]\n public int Id { get; set; }\n\n [Required(ErrorMessage = "\u5fc5\u586b"), MinLength(3, ErrorMessage = "\u5b57\u7b26\u4e32\u957f\u5ea6\u4e0d\u80fd\u5c11\u4e8e3\u4f4d")]\n public string Name { get; set; }\n\n public IEnumerable Validate(ValidationContext validationContext)\n {\n // \u8fd8\u53ef\u4ee5\u89e3\u6790\u670d\u52a1\n var service = validationContext.GetService(typeof(\u7c7b\u578b));\n\n if (Name.StartsWith("Furion"))\n {\n yield return new ValidationResult(\n "\u4e0d\u80fd\u4ee5 Furion \u5f00\u5934"\n , new[] { nameof(Name) }\n );\n }\n }\n }\n}\n')),(0,l.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,l.kt)("img",{src:(0,r.Z)("img/sjyz2.gif")}),(0,l.kt)("h2",{id:"86-\u624b\u52a8\u9a8c\u8bc1"},"8.6 \u624b\u52a8\u9a8c\u8bc1"),(0,l.kt)("h3",{id:"861-\u9a8c\u8bc1\u6a21\u578b"},"8.6.1 \u9a8c\u8bc1\u6a21\u578b"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,11}","{1,11}":!0},"using Furion.DataValidation;\nusing Furion.DynamicApiController;\n\nnamespace Furion.Application\n{\n public class FurionAppService : IDynamicApiController\n {\n [NonValidation] // \u8df3\u8fc7\u5168\u5c40\u9a8c\u8bc1\n public DataValidationResult Post(TestDto testDto)\n {\n return testDto.TryValidate();\n }\n }\n}\n")),(0,l.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,l.kt)("img",{src:(0,r.Z)("img/sjyz3.gif")}),(0,l.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,l.kt)("div",{parentName:"div",className:"admonition-heading"},(0,l.kt)("h5",{parentName:"div"},(0,l.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,l.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,l.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"note")),(0,l.kt)("div",{parentName:"div",className:"admonition-content"},(0,l.kt)("p",{parentName:"div"},"\u652f\u6301 ",(0,l.kt)("strong",{parentName:"p"},(0,l.kt)("inlineCode",{parentName:"strong"},"Mvc"))," \u5185\u7f6e\u7684\u7279\u6027\u9a8c\u8bc1\u3001\u5c5e\u6027\u9a8c\u8bc1\u53ca\u590d\u6742\u7684 ",(0,l.kt)("strong",{parentName:"p"},(0,l.kt)("inlineCode",{parentName:"strong"},"IValidatableObject"))," \u9a8c\u8bc1\u3002"))),(0,l.kt)("h3",{id:"862-tryvalidate-\u548c-validate"},"8.6.2 ",(0,l.kt)("inlineCode",{parentName:"h3"},"TryValidate")," \u548c ",(0,l.kt)("inlineCode",{parentName:"h3"},"Validate")),(0,l.kt)("p",null,(0,l.kt)("inlineCode",{parentName:"p"},"Furion")," \u63d0\u4f9b\u4e86 ",(0,l.kt)("inlineCode",{parentName:"p"},"TryValidate()")," \u548c ",(0,l.kt)("inlineCode",{parentName:"p"},"Validate()")," \u4e24\u4e2a\u9a8c\u8bc1\u62d3\u5c55\u65b9\u6cd5\uff0c\u552f\u4e00\u7684\u533a\u522b\u5c31\u662f\u540e\u8005\u9a8c\u8bc1\u5931\u8d25\u5c06\u81ea\u52a8\u629b\u51fa\u5f02\u5e38\u6d88\u606f\u3002"),(0,l.kt)("h3",{id:"863-validationtypes-\u5e38\u89c1\u9a8c\u8bc1"},"8.6.3 ",(0,l.kt)("inlineCode",{parentName:"h3"},"ValidationTypes")," \u5e38\u89c1\u9a8c\u8bc1"),(0,l.kt)("p",null,(0,l.kt)("inlineCode",{parentName:"p"},"Furion")," \u5185\u7f6e\u4e86\u5f88\u591a\u5e38\u7528\u7c7b\u578b\u7684\u6570\u636e\u9a8c\u8bc1\uff0c\u5305\u62ec\uff1a"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"Numeric"),"\uff1a\u6570\u503c\u7c7b\u578b"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"PositiveNumber"),"\uff1a\u6b63\u6570\u7c7b\u578b"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"NegativeNumber"),"\uff1a\u8d1f\u6570\u7c7b\u578b"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"Integer"),"\uff1a\u6574\u6570\u7c7b\u578b"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"Money"),"\uff1a\u91d1\u94b1\u7c7b\u578b"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"Date"),"\uff1a\u65e5\u671f\u7c7b\u578b"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"Time"),"\uff1a\u65f6\u95f4\u7c7b\u578b"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"IDCard"),"\uff1a\u8eab\u4efd\u8bc1\u7c7b\u578b"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"PostCode"),"\uff1a\u90ae\u7f16\u7c7b\u578b"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"PhoneNumber"),"\uff1a\u624b\u673a\u53f7\u7c7b\u578b"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"Telephone"),"\uff1a\u56fa\u8bdd\u7c7b\u578b"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"PhoneOrTelNumber"),"\uff1a\u624b\u673a\u6216\u56fa\u8bdd\u7c7b\u578b"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"EmailAddress"),"\uff1a\u90ae\u4ef6\u5730\u5740\u7c7b\u578b"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"Url"),"\uff1a\u7f51\u5740\u7c7b\u578b"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"Color"),"\uff1a\u989c\u8272\u503c\u7c7b\u578b"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"Chinese"),"\uff1a\u4e2d\u6587\u7c7b\u578b"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"IPv4"),"\uff1aIPv4 \u5730\u5740\u7c7b\u578b"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"IPv6"),"\uff1aIPv6 \u5730\u5740\u7c7b\u578b"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"Age"),"\uff1a\u5e74\u9f84\u7c7b\u578b"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"ChineseName"),"\uff1a\u4e2d\u6587\u540d\u7c7b\u578b"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"EnglishName"),"\uff1a\u82f1\u6587\u540d\u7c7b\u578b"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"Capital"),"\uff1a\u7eaf\u5927\u5199\u82f1\u6587\u7c7b\u578b"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"Lowercase"),"\uff1a\u7eaf\u5c0f\u5199\u82f1\u6587\u7c7b\u578b"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"Ascii"),"\uff1aAscii \u7c7b\u578b"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"Md5"),"\uff1aMd5 \u5b57\u7b26\u4e32\u7c7b\u578b"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"Zip"),"\uff1a\u538b\u7f29\u5305\u683c\u5f0f\u7c7b\u578b"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"Image"),"\uff1a\u56fe\u7247\u683c\u5f0f\u7c7b\u578b"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"Document"),"\uff1a\u6587\u6863\u683c\u5f0f\u7c7b\u578b"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"MP3"),"\uff1aMp3 \u683c\u5f0f\u7c7b\u578b"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"Flash"),"\uff1aFlash \u683c\u5f0f\u7c7b\u578b"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"Video"),"\uff1a\u89c6\u9891\u6587\u4ef6\u683c\u5f0f\u7c7b\u578b")),(0,l.kt)("p",null,(0,l.kt)("strong",{parentName:"p"},"\u4f7f\u7528\u793a\u4f8b")),(0,l.kt)(o.Z,{defaultValue:"dglx",values:[{label:"\u5355\u4e2a\u7c7b\u578b\u9a8c\u8bc1",value:"dglx"},{label:"\u591a\u4e2a\u7ec4\u5408\u7c7b\u578b\u9a8c\u8bc1",value:"zhlx"}],mdxType:"Tabs"},(0,l.kt)(p.Z,{value:"dglx",mdxType:"TabItem"},(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-cs"},'// \u9a8c\u8bc1\u4e2d\u6587\n"\u6211\u53eb MonK".TryValidate(ValidationTypes.Chinese); // => false\n\n// \u9a8c\u8bc1\u6570\u503c\n2.TryValidate(ValidationTypes.Numeric); // => true\n\n// \u9a8c\u8bc1\u6574\u6570\ntrue.TryValidate(ValidationTypes.Integer); // => false\n\n// \u9a8c\u8bc1\u90ae\u7bb1\n"monksoul@outlook.com".TryValidate(ValidationTypes.EmailAddress); // => true\n\n// \u9a8c\u8bc1\u8d1f\u6570\n2.0m.TryValidate(ValidationTypes.NegativeNumber); // => false\n\n// \u81ea\u5b9a\u4e49\u6b63\u5219\u8868\u8fbe\u5f0f\u9a8c\u8bc1\n"Furion".TryValidate("/^Furion$"); // => true\n'))),(0,l.kt)(p.Z,{value:"zhlx",mdxType:"TabItem"},(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-cs"},'// \u9a8c\u8bc1\u6570\u503c\u7c7b\u578b\u4e14\u662f\u6574\u6570\n"20".TryValidate(ValidationTypes.Numeric, ValidationTypes.Integer); // => true\n\n// \u9a8c\u8bc1\u65f6\u65e5\u671f\u6216\u65f6\u95f4\u683c\u5f0f\n"2020-05-20".TryValidate(ValidationPattern.AtLeastOne, ValidationTypes.Date, ValidationTypes.Time); // => true\n"23:45:20".TryValidate(ValidationPattern.AtLeastOne, ValidationTypes.Date, ValidationTypes.Time); // => true\n\n')))),(0,l.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,l.kt)("div",{parentName:"div",className:"admonition-heading"},(0,l.kt)("h5",{parentName:"div"},(0,l.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,l.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,l.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u5c0f\u77e5\u8bc6")),(0,l.kt)("div",{parentName:"div",className:"admonition-content"},(0,l.kt)("p",{parentName:"div"},"\u53ef\u901a\u8fc7\u8bbe\u7f6e ",(0,l.kt)("inlineCode",{parentName:"p"},"TryValidate([ValidationPattern], params object[] validationTypes)")," \u65b9\u6cd5\u7684 ",(0,l.kt)("inlineCode",{parentName:"p"},"ValidationPattern")," \u53c2\u6570\u914d\u7f6e\u9a8c\u8bc1\u903b\u8f91\uff0c\u5982\uff1a",(0,l.kt)("strong",{parentName:"p"},(0,l.kt)("inlineCode",{parentName:"strong"},"\u540c\u65f6\u6210\u7acb"))," \u6216 ",(0,l.kt)("strong",{parentName:"p"},(0,l.kt)("inlineCode",{parentName:"strong"},"\u53ea\u8981\u4e00\u4e2a\u6210\u7acb"))," \u5373\u53ef\u9a8c\u8bc1\u901a\u8fc7"))),(0,l.kt)("h3",{id:"864-datavalidation-\u7279\u6027"},"8.6.4 ",(0,l.kt)("inlineCode",{parentName:"h3"},"[DataValidation]")," \u7279\u6027"),(0,l.kt)("p",null,(0,l.kt)("inlineCode",{parentName:"p"},"Furion")," \u8fd8\u63d0\u4f9b\u4e86 ",(0,l.kt)("inlineCode",{parentName:"p"},"[DataValidation]")," \u7279\u6027\u65b9\u4fbf\u5728\u6a21\u578b\u53c2\u6570\u4e2d\u4f7f\u7528 ",(0,l.kt)("inlineCode",{parentName:"p"},"ValidationTypes")," \u5e38\u89c1\u9a8c\u8bc1\u6216\u81ea\u5b9a\u4e49\u9a8c\u8bc1\u3002"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,7,10,14,17,20}","{1,7,10,14,17,20}":!0},'using Furion.DataValidation;\n\nnamespace Furion.Application\n{\n public class TestDto\n {\n [DataValidation(ValidationTypes.Integer)]\n public int Id { get; set; }\n\n [DataValidation(ValidationTypes.Numeric, ValidationTypes.Integer)]\n public int Cost { get; set; }\n\n [DataValidation(ValidationPattern.AtLeastOne, ValidationTypes.Chinese, ValidationTypes.Date)]\n public string Name { get; set; }\n\n // \u53ef\u4ee5\u548cMvc\u7279\u6027\u5171\u5b58\n [Required, DataValidation(ValidationTypes.Age)]\n public int Age { get; set; }\n\n [DataValidation(ValidationTypes.IDCard, ErrorMessage = "\u81ea\u5b9a\u4e49\u8eab\u4efd\u8bc1\u63d0\u793a\u6d88\u606f")]\n public string IDCard { get; set; }\n }\n}\n')),(0,l.kt)("p",null,(0,l.kt)("strong",{parentName:"p"},(0,l.kt)("inlineCode",{parentName:"strong"},"[DataValidation]")," \u7279\u6027\u5177\u5907 ",(0,l.kt)("inlineCode",{parentName:"strong"},"ValidationAttribute")," \u7279\u6027\u7684\u6240\u6709\u914d\u7f6e\u4ee5\u5916\u8fd8\u63d0\u4f9b\u4e86\u4ee5\u4e0b\u914d\u7f6e\uff1a")),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"ValidationTypes"),"\uff1a\u9a8c\u8bc1\u7c7b\u578b\uff0c",(0,l.kt)("inlineCode",{parentName:"li"},"Enum[]")," \u7c7b\u578b\uff0c"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"ValidationPattern"),"\uff1a\u9a8c\u8bc1\u903b\u8f91\uff0c",(0,l.kt)("inlineCode",{parentName:"li"},"ValidationPattern")," \u7c7b\u578b\uff0c\u53ef\u9009 ",(0,l.kt)("inlineCode",{parentName:"li"},"AllOfThem\uff08\u5168\u90e8\u9a8c\u8bc1\u901a\u8fc7\uff09")," \u548c ",(0,l.kt)("inlineCode",{parentName:"li"},"AtleastOne\uff08\u81f3\u5c11\u4e00\u4e2a\u9a8c\u8bc1\u901a\u8fc7\uff09")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"AllowNullValue"),"\uff1a\u662f\u5426\u5141\u8bb8\u7a7a\u503c\uff0c",(0,l.kt)("inlineCode",{parentName:"li"},"bool")," \u7c7b\u578b\uff0c\u9ed8\u8ba4 ",(0,l.kt)("inlineCode",{parentName:"li"},"false")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"AllowEmptyStrings"),"\uff1a\u662f\u5426\u5141\u8bb8\u7a7a\u5b57\u7b26\u4e32\uff0c",(0,l.kt)("inlineCode",{parentName:"li"},"bool")," \u7c7b\u578b\uff0c\u9ed8\u8ba4 ",(0,l.kt)("inlineCode",{parentName:"li"},"false"))),(0,l.kt)("h3",{id:"865-modelbinder-\u7279\u6027"},"8.6.5 ",(0,l.kt)("inlineCode",{parentName:"h3"},"[ModelBinder]")," \u7279\u6027"),(0,l.kt)("p",null,"\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c\u9a8c\u8bc1\u5931\u8d25\u4fe1\u606f\u4f1a\u6839\u636e\u5c5e\u6027\u540d\u8fdb\u884c\u5e8f\u5217\u5316\uff0c\u4f46\u662f\u5982\u679c\u5c5e\u6027\u5e8f\u5217\u5316\u81ea\u5b9a\u4e49\u4e86 ",(0,l.kt)("inlineCode",{parentName:"p"},"[JsonPropertyName]")," \u7279\u6027\uff0c\u90a3\u4e48\u9a8c\u8bc1\u5931\u8d25\u7684\u6d88\u606f\u5c31\u4e0d\u5339\u914d\u4e86\uff0c\u8fd9\u65f6\u6211\u4eec\u9700\u8981\u6dfb\u52a0 ",(0,l.kt)("inlineCode",{parentName:"p"},'[ModelBinder(Name = "\u5e8f\u5217\u5316\u5bf9\u5e94\u540d\u5b57")]')," \u8fdb\u884c\u7ea0\u6b63\u3002\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1}","{1}":!0},'[JsonPropertyName("phone_number"), ModelBinder(Name = "phone_number")]\npublic string PhoneNumber { get; set; }\n')),(0,l.kt)("h2",{id:"87-nonvalidation-\u8df3\u8fc7\u9a8c\u8bc1"},"8.7 ",(0,l.kt)("inlineCode",{parentName:"h2"},"[NonValidation]")," \u8df3\u8fc7\u9a8c\u8bc1"),(0,l.kt)("p",null,(0,l.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u4e86\u5bf9\u8c61\u6a21\u578b\u8df3\u8fc7\u9a8c\u8bc1\u7279\u6027 ",(0,l.kt)("inlineCode",{parentName:"p"},"[NonValidation]"),"\uff0c\u652f\u6301\u5728 ",(0,l.kt)("inlineCode",{parentName:"p"},"\u63a7\u5236\u5668"),"\uff0c",(0,l.kt)("inlineCode",{parentName:"p"},"\u52a8\u4f5c\u65b9\u6cd5"),"\uff0c",(0,l.kt)("inlineCode",{parentName:"p"},"\u7c7b")," \u4e2d\u4f7f\u7528\u3002"),(0,l.kt)("p",null,"\u4e00\u65e6\u8d34\u4e86\u6b64\u7279\u6027\uff0c\u90a3\u4e48\u5c06\u4e0d\u4f1a\u6267\u884c\u9a8c\u8bc1\u64cd\u4f5c\u3002"),(0,l.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,l.kt)("div",{parentName:"div",className:"admonition-heading"},(0,l.kt)("h5",{parentName:"div"},(0,l.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,l.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,l.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"note")),(0,l.kt)("div",{parentName:"div",className:"admonition-content"},(0,l.kt)("p",{parentName:"div"},(0,l.kt)("strong",{parentName:"p"},(0,l.kt)("inlineCode",{parentName:"strong"},"[NonValidation]"))," \u53ea\u5bf9\u5bf9\u8c61\u7c7b\u578b\u6709\u6548\uff0c\u503c\u7c7b\u578b\u65e0\u6548\u3002"))),(0,l.kt)("h2",{id:"88-\u9ad8\u7ea7\u81ea\u5b9a\u4e49\u64cd\u4f5c"},"8.8 \u9ad8\u7ea7\u81ea\u5b9a\u4e49\u64cd\u4f5c"),(0,l.kt)("h3",{id:"881-\u81ea\u5b9a\u4e49-validationtypes-\u7c7b\u578b"},"8.8.1 \u81ea\u5b9a\u4e49 ",(0,l.kt)("inlineCode",{parentName:"h3"},"ValidationTypes")," \u7c7b\u578b"),(0,l.kt)("p",null,"\u9664\u4e86 ",(0,l.kt)("inlineCode",{parentName:"p"},"Furion")," \u5185\u7f6e\u7684\u9a8c\u8bc1\u7c7b\u578b\u4ee5\u5916\uff0c",(0,l.kt)("inlineCode",{parentName:"p"},"Furion")," \u8fd8\u63d0\u4f9b\u4e86\u975e\u5e38\u7075\u6d3b\u7684\u81ea\u5b9a\u4e49\u9a8c\u8bc1\u7c7b\u578b\u673a\u5236\u3002"),(0,l.kt)("p",null,"\u5b9e\u73b0\u81ea\u5b9a\u4e49\u9a8c\u8bc1\u7c7b\u578b\u5fc5\u987b\u9075\u5faa\u4ee5\u4e0b\u914d\u7f6e\uff1a"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"\u9a8c\u8bc1\u7c7b\u578b\u5fc5\u987b\u662f\u516c\u5f00\u4e14\u662f ",(0,l.kt)("inlineCode",{parentName:"li"},"Enum")," \u679a\u4e3e\u7c7b\u578b"),(0,l.kt)("li",{parentName:"ul"},"\u679a\u4e3e\u7c7b\u578b\u5fc5\u987b\u8d34\u6709 ",(0,l.kt)("inlineCode",{parentName:"li"},"[ValidationType]")," \u7279\u6027"),(0,l.kt)("li",{parentName:"ul"},"\u679a\u4e3e\u4e2d\u6bcf\u4e00\u9879\u5fc5\u987b\u8d34\u6709 ",(0,l.kt)("inlineCode",{parentName:"li"},"[ValidationItemMetadata]")," \u7279\u6027")),(0,l.kt)("p",null,(0,l.kt)("strong",{parentName:"p"},"\u5982"),"\uff1a"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,6,12,18}","{1,6,12,18}":!0},'using Furion.DataValidation;\nusing System.Text.RegularExpressions;\n\nnamespace Furion.Application\n{\n [ValidationType]\n public enum MyValidationTypes\n {\n /// \n /// \u5f3a\u5bc6\u7801\u7c7b\u578b\n /// \n [ValidationItemMetadata(@"^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$", "\u5fc5\u987b\u987b\u5305\u542b\u5927\u5c0f\u5199\u5b57\u6bcd\u548c\u6570\u5b57\u7684\u7ec4\u5408\uff0c\u4e0d\u80fd\u4f7f\u7528\u7279\u6b8a\u5b57\u7b26\uff0c\u957f\u5ea6\u57288-10\u4e4b\u95f4")]\n StrongPassword,\n\n /// \n /// \u4ee5 Furion \u5b57\u7b26\u4e32\u5f00\u5934\uff0c\u5ffd\u7565\u5927\u5c0f\u5199\n /// \n [ValidationItemMetadata(@"^(furion).*", "\u9ed8\u8ba4\u63d0\u793a\uff1a\u5fc5\u987b\u4ee5Fur\u5b57\u7b26\u4e32\u5f00\u5934\uff0c\u5ffd\u7565\u5927\u5c0f\u5199", RegexOptions.IgnoreCase)]\n StartWithFurString\n }\n}\n\n')),(0,l.kt)("p",null,(0,l.kt)("strong",{parentName:"p"},"\u4f7f\u7528")),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"\u624b\u52a8\u4f7f\u7528")),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-cs"},'"q1w2e3".TryValidate(MyValidationTypes.StrongPassword); // => false\n\n"furos".TryValidate(MyValidationTypes.StartWithFurString); // => true\n')),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"[DataValidation]")," \u4e2d\u4f7f\u7528")),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-cs"},"[DataValidation(MyValidationTypes.StrongPassword)]\npublic string Password { get; set; }\n")),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"\u591a\u4e2a\u81ea\u5b9a\u4e49\u7c7b\u578b\u6df7\u7528")),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-cs"},'"Q1w2e3r4t5!*".TryValidate(MyValidationTypes.StrongPassword, ValidationTypes.EmailAddress); // => true\n')),(0,l.kt)("div",{className:"admonition admonition-caution alert alert--warning"},(0,l.kt)("div",{parentName:"div",className:"admonition-heading"},(0,l.kt)("h5",{parentName:"div"},(0,l.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,l.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 16 16"},(0,l.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"}))),"\u7279\u522b\u6ce8\u610f")),(0,l.kt)("div",{parentName:"div",className:"admonition-content"},(0,l.kt)("p",{parentName:"div"},"\u81ea\u5b9a\u4e49\u7684\u9a8c\u8bc1\u7c7b\u578b\u4e5f\u8981\u4fdd\u8bc1\u540d\u79f0\u5168\u5c40\u552f\u4e00\uff0c\u4e5f\u5c31\u662f\u591a\u4e2a\u9a8c\u8bc1\u7c7b\u578b\u4e0d\u80fd\u51fa\u73b0\u4e00\u6837\u7684\u540d\u5b57\u3002"))),(0,l.kt)("h3",{id:"882-\u81ea\u5b9a\u4e49-validationtypes-\u5931\u8d25\u6d88\u606f"},"8.8.2 \u81ea\u5b9a\u4e49 ",(0,l.kt)("inlineCode",{parentName:"h3"},"ValidationTypes")," \u5931\u8d25\u6d88\u606f"),(0,l.kt)("p",null,(0,l.kt)("inlineCode",{parentName:"p"},"Furion")," \u5185\u7f6e\u7684 ",(0,l.kt)("inlineCode",{parentName:"p"},"ValidationTypes")," \u5df2\u6709\u9ed8\u8ba4\u7684\u5931\u8d25\u6d88\u606f\uff1a"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"Numeric"),"\uff1a",(0,l.kt)("strong",{parentName:"li"},"The Value is not a numeric type.")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"PositiveNumber"),"\uff1a",(0,l.kt)("strong",{parentName:"li"},"The Value is not a positive number type.")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"NegativeNumber"),"\uff1a",(0,l.kt)("strong",{parentName:"li"},"The Value is not a negative number type.")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"Integer"),"\uff1a",(0,l.kt)("strong",{parentName:"li"},"The Value is not a integer type.")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"Money"),"\uff1a",(0,l.kt)("strong",{parentName:"li"},"The Value is not a money type.")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"Date"),"\uff1a",(0,l.kt)("strong",{parentName:"li"},"The Value is not a date type.")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"Time"),"\uff1a",(0,l.kt)("strong",{parentName:"li"},"The Value is not a time type.")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"IDCard"),"\uff1a",(0,l.kt)("strong",{parentName:"li"},"The Value is not a idcard type.")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"PostCode"),"\uff1a",(0,l.kt)("strong",{parentName:"li"},"The Value is not a postcode type.")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"PhoneNumber"),"\uff1a",(0,l.kt)("strong",{parentName:"li"},"The Value is not a phone number type.")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"Telephone"),"\uff1a",(0,l.kt)("strong",{parentName:"li"},"The Value is not a telephone type.")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"PhoneOrTelNumber"),"\uff1a",(0,l.kt)("strong",{parentName:"li"},"The Value is not a phone number or telephone type.")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"EmailAddress"),"\uff1a",(0,l.kt)("strong",{parentName:"li"},"The Value is not a email address type.")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"Url"),"\uff1a",(0,l.kt)("strong",{parentName:"li"},"The Value is not a url address type.")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"Color"),"\uff1a",(0,l.kt)("strong",{parentName:"li"},"The Value is not a color type.")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"Chinese"),"\uff1a",(0,l.kt)("strong",{parentName:"li"},"The Value is not a chinese type.")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"IPv4"),"\uff1a",(0,l.kt)("strong",{parentName:"li"},"The Value is not a IPv4 type.")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"IPv6"),"\uff1a",(0,l.kt)("strong",{parentName:"li"},"The Value is not a IPv6 type.")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"Age"),"\uff1a",(0,l.kt)("strong",{parentName:"li"},"The Value is not a age type.")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"ChineseName"),"\uff1a",(0,l.kt)("strong",{parentName:"li"},"The Value is not a chinese name type.")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"EnglishName"),"\uff1a",(0,l.kt)("strong",{parentName:"li"},"The Value is not a english name type.")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"Capital"),"\uff1a",(0,l.kt)("strong",{parentName:"li"},"The Value is not a capital type.")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"Lowercase"),"\uff1a",(0,l.kt)("strong",{parentName:"li"},"The Value is not a lowercase type.")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"Ascii"),"\uff1a",(0,l.kt)("strong",{parentName:"li"},"The Value is not a ascii type.")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"Md5"),"\uff1a",(0,l.kt)("strong",{parentName:"li"},"The Value is not a md5 type.")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"Zip"),"\uff1a",(0,l.kt)("strong",{parentName:"li"},"The Value is not a zip type.")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"Image"),"\uff1a",(0,l.kt)("strong",{parentName:"li"},"The Value is not a image type.")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"Document"),"\uff1a",(0,l.kt)("strong",{parentName:"li"},"The Value is not a document type.")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"MP3"),"\uff1a",(0,l.kt)("strong",{parentName:"li"},"The Value is not a mp3 type.")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"Flash"),"\uff1a",(0,l.kt)("strong",{parentName:"li"},"The Value is not a flash type.")),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"Video"),"\uff1a",(0,l.kt)("strong",{parentName:"li"},"The Value is not a video type."))),(0,l.kt)("p",null,"\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7\u521b\u5efa\u7ee7\u627f ",(0,l.kt)("inlineCode",{parentName:"p"},"IValidationMessageTypeProvider")," \u9a8c\u8bc1\u6d88\u606f\u63d0\u4f9b\u5668\u7c7b\u578b\uff0c\u6216\u901a\u8fc7 ",(0,l.kt)("inlineCode",{parentName:"p"},"appsettings.json")," \u914d\u7f6e\u3002"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("strong",{parentName:"li"},(0,l.kt)("inlineCode",{parentName:"strong"},"[ValidationMessageType]"))," \u65b9\u5f0f")),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{5,9,12,15,19,22}","{5,9,12,15,19,22}":!0},'using Furion.DataValidation;\n\nnamespace Furion.Application\n{\n [ValidationMessageType]\n public enum MyValidationMessageType\n {\n [ValidationMessage("\u5fc5\u987b\u662f\u6570\u503c\u7c7b\u578b")]\n Numeric,\n\n [ValidationMessage("\u5fc5\u987b\u662f\u6b63\u6570")]\n PositiveNumber,\n\n // \u4fee\u6539\u81ea\u5b9a\u4e49\u7c7b\u578b\u9a8c\u8bc1\u5931\u8d25\u6d88\u606f\n [ValidationMessage("\u5bc6\u7801\u592a\u7b80\u5355\u4e86")]\n StrongPassword,\n\n [ValidationMessage("\u5fc5\u987b\u4ee5 Furion \u5f00\u5934")]\n StartWithFurString\n }\n}\n')),(0,l.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,l.kt)("div",{parentName:"div",className:"admonition-heading"},(0,l.kt)("h5",{parentName:"div"},(0,l.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,l.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,l.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u5c0f\u77e5\u8bc6")),(0,l.kt)("div",{parentName:"div",className:"admonition-content"},(0,l.kt)("p",{parentName:"div"},"\u9664\u4e86\u8d34 ",(0,l.kt)("inlineCode",{parentName:"p"},"[ValidationMessageType]")," \u7279\u6027\u5916\uff0c",(0,l.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u8fd8\u63d0\u4f9b\u4e86 ",(0,l.kt)("inlineCode",{parentName:"p"},"IValidationMessageTypeProvider")," \u65b9\u5f0f\u67e5\u627e\u9a8c\u8bc1\u6d88\u606f\u7c7b\u578b\uff0c\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,l.kt)("pre",{parentName:"div"},(0,l.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,6,8-12}","{1,6,8-12}":!0},"using Furion.DataValidation;\nusing System;\n\nnamespace Furion.Application\n{\n public class MyValidationTypeMessageProvider : IValidationMessageTypeProvider\n {\n public Type[] Definitions => new[]\n {\n typeof(MyValidationMessageType),\n typeof(MyValidationMessageType2)\n };\n }\n}\n")),(0,l.kt)("p",{parentName:"div"},"\u6ce8\u518c\u9a8c\u8bc1\u6d88\u606f\u63d0\u4f9b\u5668"),(0,l.kt)("pre",{parentName:"div"},(0,l.kt)("code",{parentName:"pre",className:"language-cs",metastring:'{11} title="Furion.Web.Core\\FurWebCoreStartup.cs"',"{11}":!0,title:'"Furion.Web.Core\\FurWebCoreStartup.cs"'},"using Microsoft.Extensions.DependencyInjection;\n\nnamespace Furion.Web.Core\n{\n [AppStartup(800)]\n public sealed class FurWebCoreStartup : AppStartup\n {\n public void ConfigureServices(IServiceCollection services)\n {\n services.AddControllers()\n .AddDataValidation();\n }\n }\n}\n")))),(0,l.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,l.kt)("img",{src:(0,r.Z)("img/sjyz4.png")}),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("strong",{parentName:"li"},(0,l.kt)("inlineCode",{parentName:"strong"},"appsettings.json")," \u65b9\u5f0f"))),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-json",metastring:'{2-9} title="Furion.Web.Entry/appsettings.json"',"{2-9}":!0,title:'"Furion.Web.Entry/appsettings.json"'},'{\n "ValidationTypeMessageSettings": {\n "Definitions": [\n ["Numeric", "\u5fc5\u987b\u662f\u6570\u503c\u7c7b\u578b"],\n\n ["StrongPassword", "\u5bc6\u7801\u592a\u7b80\u5355\u4e86!!!"]\n ]\n }\n}\n')),(0,l.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,l.kt)("div",{parentName:"div",className:"admonition-heading"},(0,l.kt)("h5",{parentName:"div"},(0,l.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,l.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,l.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"important")),(0,l.kt)("div",{parentName:"div",className:"admonition-content"},(0,l.kt)("p",{parentName:"div"},(0,l.kt)("inlineCode",{parentName:"p"},"appsettings.json")," \u4e2d\u76f8\u540c\u7684 ",(0,l.kt)("inlineCode",{parentName:"p"},"Key")," \u4f1a\u8986\u76d6 ",(0,l.kt)("inlineCode",{parentName:"p"},"IValidationMessageTypeProvider")," \u63d0\u4f9b\u76f8\u540c ",(0,l.kt)("inlineCode",{parentName:"p"},"Key")," \u7684\u503c\u3002"))),(0,l.kt)("h4",{id:"\u9519\u8bef\u6d88\u606f\u67e5\u627e\u4f18\u5148\u7ea7"},"\u9519\u8bef\u6d88\u606f\u67e5\u627e\u4f18\u5148\u7ea7"),(0,l.kt)("p",null,(0,l.kt)("inlineCode",{parentName:"p"},"DefaultErrorMessage")," -> ",(0,l.kt)("inlineCode",{parentName:"p"},"IValidationMessageTypeProvider")," -> ",(0,l.kt)("inlineCode",{parentName:"p"},"appsettings.json")," (",(0,l.kt)("strong",{parentName:"p"},"\u4f4e -> \u9ad8"),")"),(0,l.kt)("h2",{id:"89-\u6a21\u578b\u9a8c\u8bc1\u8303\u56f4"},"8.9 \u6a21\u578b\u9a8c\u8bc1\u8303\u56f4"),(0,l.kt)("p",null,(0,l.kt)("inlineCode",{parentName:"p"},"Furion")," \u63d0\u4f9b\u591a\u79cd\u6a21\u578b\u9a8c\u8bc1\u8303\u56f4\u8bbe\u7f6e\uff1a"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"\u5168\u5c40\u9a8c\u8bc1\uff08\u9ed8\u8ba4\uff09"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"[NonValidation]")," \u8df3\u8fc7\u9a8c\u8bc1"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"[TypeFilter(typeof(DataValidationFilter))]")," \u5c40\u90e8\u9a8c\u8bc1"),(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("inlineCode",{parentName:"li"},"[ApiController]")," \u63a7\u5236\u5668\u8303\u56f4\u9a8c\u8bc1")),(0,l.kt)("h3",{id:"891-\u5168\u5c40\u9a8c\u8bc1"},"8.9.1 \u5168\u5c40\u9a8c\u8bc1"),(0,l.kt)("p",null,"\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c\u901a\u8fc7 ",(0,l.kt)("inlineCode",{parentName:"p"},".AddDataValidation()")," \u6ce8\u518c\u6570\u636e\u9a8c\u8bc1\u670d\u52a1\u5df2\u7ecf\u542f\u7528\u4e86\u5168\u5c40\u9a8c\u8bc1\uff0c\u5982\u82e5\u4e0d\u60f3\u542f\u7528\u5168\u5c40\u9a8c\u8bc1\uff0c\u5219\u4f20\u5165 ",(0,l.kt)("inlineCode",{parentName:"p"},"false")," \u5373\u53ef\uff0c\u5982\uff1a",(0,l.kt)("inlineCode",{parentName:"p"},".AddDataValidation(false)"),"\u3002"),(0,l.kt)("h3",{id:"892-nonvalidation-\u8df3\u8fc7\u9a8c\u8bc1"},"8.9.2 ",(0,l.kt)("inlineCode",{parentName:"h3"},"[NonValidation]")," \u8df3\u8fc7\u9a8c\u8bc1"),(0,l.kt)("p",null,"\u53ef\u901a\u8fc7 ",(0,l.kt)("inlineCode",{parentName:"p"},"[NonValidation]")," \u8d34\u5728 ",(0,l.kt)("inlineCode",{parentName:"p"},"\u63a7\u5236\u5668"),"\uff0c",(0,l.kt)("inlineCode",{parentName:"p"},"\u52a8\u4f5c\u65b9\u6cd5"),"\uff0c",(0,l.kt)("inlineCode",{parentName:"p"},"\u7c7b")," \u4e2d\u8df3\u8fc7\u5168\u5c40\u9a8c\u8bc1\u6216\u4e0d\u9700\u8981\u9a8c\u8bc1"),(0,l.kt)("h3",{id:"893-typefiltertypeofdatavalidationfilter-\u5c40\u90e8\u9a8c\u8bc1"},"8.9.3 ",(0,l.kt)("inlineCode",{parentName:"h3"},"[TypeFilter(typeof(DataValidationFilter))]")," \u5c40\u90e8\u9a8c\u8bc1"),(0,l.kt)("p",null,"\u6211\u4eec\u4e5f\u53ef\u4ee5\u65e0\u9700\u6ce8\u518c ",(0,l.kt)("inlineCode",{parentName:"p"},".AddDataValidation()")," \u670d\u52a1\uff0c\u76f4\u63a5\u5728 ",(0,l.kt)("inlineCode",{parentName:"p"},"\u52a8\u4f5c\u65b9\u6cd5")," \u4e0a\u8d34 ",(0,l.kt)("inlineCode",{parentName:"p"},"[TypeFilter(typeof(DataValidationFilter))]")," \u53ef\u542f\u7528\u5c40\u90e8\u9a8c\u8bc1\u3002\u5982\uff1a"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,3,9}","{1,3,9}":!0},"using Furion.DataValidation;\nusing Furion.DynamicApiController;\nusing Microsoft.AspNetCore.Mvc;\n\nnamespace Furion.Application\n{\n public class FurionAppService : IDynamicApiController\n {\n [TypeFilter(typeof(DataValidationFilter))]\n public TestDto Post(TestDto testDto)\n {\n return testDto;\n }\n }\n}\n")),(0,l.kt)("h3",{id:"894-apicontroller-\u63a7\u5236\u5668\u8303\u56f4\u9a8c\u8bc1"},"8.9.4 ",(0,l.kt)("inlineCode",{parentName:"h3"},"[ApiController]")," \u63a7\u5236\u5668\u8303\u56f4\u9a8c\u8bc1"),(0,l.kt)("p",null,(0,l.kt)("inlineCode",{parentName:"p"},"[ApiController]")," \u662f ",(0,l.kt)("inlineCode",{parentName:"p"},"Mvc")," \u63d0\u4f9b\u7684\u63a7\u5236\u5668\u8303\u56f4\uff08\u542b\u6240\u6709\u52a8\u4f5c\u65b9\u6cd5\uff09\u7684\u9a8c\u8bc1\u3002"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1,5}","{1,5}":!0},"using Microsoft.AspNetCore.Mvc;\n\nnamespace Furion.Web.Entry.Controllers\n{\n [ApiController]\n public class MvcController : Controller\n {\n public IActionResult Index()\n {\n return View();\n }\n }\n}\n")),(0,l.kt)("h2",{id:"810-miniprofiler-\u67e5\u770b"},"8.10 ",(0,l.kt)("inlineCode",{parentName:"h2"},"MiniProfiler")," \u67e5\u770b"),(0,l.kt)("p",null,"\u5982\u4e0b\u56fe\u6240\u793a\uff1a"),(0,l.kt)("img",{src:(0,r.Z)("img/sjyz5.png")}),(0,l.kt)("h2",{id:"811-\u591a\u8bed\u8a00\u652f\u6301"},"8.11 \u591a\u8bed\u8a00\u652f\u6301"),(0,l.kt)("p",null,"\u53c2\u89c1 ",(0,l.kt)("a",{parentName:"p",href:"./local-language"},"\u3010\u5168\u7403\u5316\u548c\u672c\u5730\u5316\uff08\u591a\u8bed\u8a00\uff09\u3011")," \u7ae0\u8282"),(0,l.kt)("h2",{id:"812-\u96c6\u6210-fluentvalidation-\u7b2c\u4e09\u65b9\u6821\u9a8c"},"8.12 \u96c6\u6210 ",(0,l.kt)("inlineCode",{parentName:"h2"},"FluentValidation")," \u7b2c\u4e09\u65b9\u6821\u9a8c"),(0,l.kt)("p",null,(0,l.kt)("inlineCode",{parentName:"p"},"Furion")," \u5185\u7f6e\u7684\u9a8c\u8bc1\u5df2\u7ecf\u53ef\u4ee5\u6ee1\u8db3\u7edd\u5927\u591a\u6570\u6821\u9a8c\u60c5\u51b5\uff0c\u4f46\u662f\u5bf9\u4e8e ",(0,l.kt)("inlineCode",{parentName:"p"},"\u573a\u666f")," \u9a8c\u8bc1\u76ee\u524d\u6682\u672a\u652f\u6301\u3002\u8fd9\u91cc\u63a8\u8350\u96c6\u6210 ",(0,l.kt)("a",{parentName:"p",href:"https://github.com/FluentValidation/FluentValidation"},(0,l.kt)("inlineCode",{parentName:"a"},"FluentValidation"))," \u7b2c\u4e09\u65b9\u6821\u9a8c\u7ec4\u4ef6\u3002"),(0,l.kt)("h3",{id:"8121-\u5b89\u88c5-fluentvalidationaspnetcore-\u62d3\u5c55\u5305"},"8.12.1 \u5b89\u88c5 ",(0,l.kt)("inlineCode",{parentName:"h3"},"FluentValidation.AspNetCore")," \u62d3\u5c55\u5305"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-shell"},"dotnet add package FluentValidation.AspNetCore\n")),(0,l.kt)("h3",{id:"8122-\u5728-startupcs-\u4e2d\u6ce8\u518c"},"8.12.2 \u5728 ",(0,l.kt)("inlineCode",{parentName:"h3"},"Startup.cs")," \u4e2d\u6ce8\u518c"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{2}","{2}":!0},"services.AddControllers()\n .AddFluentValidation(fv => {\n fv.RegisterValidatorsFromAssemblies(App.Assemblies);\n });\n")),(0,l.kt)("h3",{id:"8123-\u4f7f\u7528\u4f8b\u5b50"},"8.12.3 \u4f7f\u7528\u4f8b\u5b50"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-cs"},"public class Person {\n public int Id { get; set; }\n public string Name { get; set; }\n public string Email { get; set; }\n public int Age { get; set; }\n}\n\npublic class PersonValidator : AbstractValidator {\n public PersonValidator() {\n RuleFor(x => x.Id).NotNull();\n RuleFor(x => x.Name).Length(0, 10);\n RuleFor(x => x.Email).EmailAddress();\n RuleFor(x => x.Age).InclusiveBetween(18, 60);\n }\n}\n")),(0,l.kt)("p",null,(0,l.kt)("strong",{parentName:"p"},"\u5728\u63a7\u5236\u5668\u4e2d\u4f7f\u7528\u65e0\u9700\u624b\u52a8\u8c03\u7528 ",(0,l.kt)("inlineCode",{parentName:"strong"},"ModelState.IsValid")," \u8fdb\u884c\u5224\u65ad\uff0c",(0,l.kt)("inlineCode",{parentName:"strong"},"Furion")," \u4f1a\u81ea\u52a8\u6267\u884c\u8be5\u64cd\u4f5c\u3002")),(0,l.kt)("p",null,"\u5982\u9700\u4e86\u89e3\u66f4\u591a ",(0,l.kt)("inlineCode",{parentName:"p"},"FluentValidation")," \u77e5\u8bc6\u53ef\u67e5\u9605\u5b98\u65b9\u6587\u6863\uff1a",(0,l.kt)("a",{parentName:"p",href:"https://fluentvalidation.net/"},"https://fluentvalidation.net/")),(0,l.kt)("h2",{id:"813-\u53cd\u9988\u4e0e\u5efa\u8bae"},"8.13 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,l.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,l.kt)("div",{parentName:"div",className:"admonition-heading"},(0,l.kt)("h5",{parentName:"div"},(0,l.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,l.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,l.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,l.kt)("div",{parentName:"div",className:"admonition-content"},(0,l.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,l.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}N.isMDXComponent=!0},6010:function(e,n,t){function a(e){var n,t,i="";if("string"==typeof e||"number"==typeof e)i+=e;else if("object"==typeof e)if(Array.isArray(e))for(n=0;n=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var u=r.createContext({}),c=function(e){var t=r.useContext(u),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},p=function(e){var t=c(e.components);return r.createElement(u.Provider,{value:t},e.children)},d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},s=r.forwardRef((function(e,t){var n=e.components,i=e.mdxType,o=e.originalType,u=e.parentName,p=a(e,["components","mdxType","originalType","parentName"]),s=c(n),f=i,m=s["".concat(u,".").concat(f)]||s[f]||d[f]||o;return n?r.createElement(m,l(l({ref:t},p),{},{components:n})):r.createElement(m,l({ref:t},p))}));function f(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var o=n.length,l=new Array(o);l[0]=s;var a={};for(var u in t)hasOwnProperty.call(t,u)&&(a[u]=t[u]);a.originalType=e,a.mdxType="string"==typeof e?e:i,l[1]=a;for(var c=2;c=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var u=r.createContext({}),c=function(e){var t=r.useContext(u),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},p=function(e){var t=c(e.components);return r.createElement(u.Provider,{value:t},e.children)},d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},s=r.forwardRef((function(e,t){var n=e.components,i=e.mdxType,o=e.originalType,u=e.parentName,p=a(e,["components","mdxType","originalType","parentName"]),s=c(n),f=i,m=s["".concat(u,".").concat(f)]||s[f]||d[f]||o;return n?r.createElement(m,l(l({ref:t},p),{},{components:n})):r.createElement(m,l({ref:t},p))}));function f(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var o=n.length,l=new Array(o);l[0]=s;var a={};for(var u in t)hasOwnProperty.call(t,u)&&(a[u]=t[u]);a.originalType=e,a.mdxType="string"==typeof e?e:i,l[1]=a;for(var c=2;c=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var p=a.createContext({}),d=function(e){var t=a.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},s=function(e){var t=d(e.components);return a.createElement(p.Provider,{value:t},e.children)},m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},u=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,p=e.parentName,s=o(e,["components","mdxType","originalType","parentName"]),u=d(n),c=r,k=u["".concat(p,".").concat(c)]||u[c]||m[c]||i;return n?a.createElement(k,l(l({ref:t},s),{},{components:n})):a.createElement(k,l({ref:t},s))}));function c(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,l=new Array(i);l[0]=u;var o={};for(var p in t)hasOwnProperty.call(t,p)&&(o[p]=t[p]);o.originalType=e,o.mdxType="string"==typeof e?e:r,l[1]=o;for(var d=2;d=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var p=a.createContext({}),d=function(e){var t=a.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},s=function(e){var t=d(e.components);return a.createElement(p.Provider,{value:t},e.children)},m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},u=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,p=e.parentName,s=o(e,["components","mdxType","originalType","parentName"]),u=d(n),c=r,k=u["".concat(p,".").concat(c)]||u[c]||m[c]||i;return n?a.createElement(k,l(l({ref:t},s),{},{components:n})):a.createElement(k,l({ref:t},s))}));function c(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,l=new Array(i);l[0]=u;var o={};for(var p in t)hasOwnProperty.call(t,p)&&(o[p]=t[p]);o.originalType=e,o.mdxType="string"==typeof e?e:r,l[1]=o;for(var d=2;d=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var p=r.createContext({}),u=function(e){var t=r.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},m=function(e){var t=u(e.components);return r.createElement(p.Provider,{value:t},e.children)},s={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},k=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,i=e.originalType,p=e.parentName,m=l(e,["components","mdxType","originalType","parentName"]),k=u(n),c=a,N=k["".concat(p,".").concat(c)]||k[c]||s[c]||i;return n?r.createElement(N,o(o({ref:t},m),{},{components:n})):r.createElement(N,o({ref:t},m))}));function c(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,o=new Array(i);o[0]=k;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l.mdxType="string"==typeof e?e:a,o[1]=l;for(var u=2;u=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var p=r.createContext({}),u=function(e){var t=r.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},m=function(e){var t=u(e.components);return r.createElement(p.Provider,{value:t},e.children)},s={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},k=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,i=e.originalType,p=e.parentName,m=l(e,["components","mdxType","originalType","parentName"]),k=u(n),c=a,N=k["".concat(p,".").concat(c)]||k[c]||s[c]||i;return n?r.createElement(N,o(o({ref:t},m),{},{components:n})):r.createElement(N,o({ref:t},m))}));function c(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var i=n.length,o=new Array(i);o[0]=k;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l.mdxType="string"==typeof e?e:a,o[1]=l;for(var u=2;u=0||(r[t]=e[t]);return r}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var d=a.createContext({}),c=function(e){var n=a.useContext(d),t=n;return e&&(t="function"==typeof e?e(n):o(o({},n),e)),t},l=function(e){var n=c(e.components);return a.createElement(d.Provider,{value:n},e.children)},p={inlineCode:"code",wrapper:function(e){var n=e.children;return a.createElement(a.Fragment,{},n)}},m=a.forwardRef((function(e,n){var t=e.components,r=e.mdxType,i=e.originalType,d=e.parentName,l=s(e,["components","mdxType","originalType","parentName"]),m=c(t),u=r,v=m["".concat(d,".").concat(u)]||m[u]||p[u]||i;return t?a.createElement(v,o(o({ref:n},l),{},{components:t})):a.createElement(v,o({ref:n},l))}));function u(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var i=t.length,o=new Array(i);o[0]=m;var s={};for(var d in n)hasOwnProperty.call(n,d)&&(s[d]=n[d]);s.originalType=e,s.mdxType="string"==typeof e?e:r,o[1]=s;for(var c=2;c")," \u4f9d\u8d56\u63a5\u53e3\u53ef\u4ee5\u5feb\u901f\u7684\u6784\u5efa\u79cd\u5b50\u6570\u636e\uff0c\u652f\u6301\u4efb\u4f55\u65e0\u53c2\u6784\u9020\u51fd\u6570\u5bf9\u8c61\u7c7b\u4e2d\u4f7f\u7528\u3002\u5982\u6211\u4eec\u9700\u8981\u4e3a ",(0,i.kt)("inlineCode",{parentName:"p"},"Person")," \u8868\u63d2\u5165\u521d\u59cb\u5316\u6570\u636e\uff1a"),(0,i.kt)("h3",{id:"92121-\u5728\u5b9e\u4f53\u5b9a\u4e49\u4e2d\u4f7f\u7528"},"9.21.2.1 \u5728\u5b9e\u4f53\u5b9a\u4e49\u4e2d\u4f7f\u7528"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{7,16-23}","{7,16-23}":!0},'using Furion.DatabaseAccessor;\nusing System;\nusing System.Collections.Generic;\n\nnamespace Furion.Core\n{\n public class Person : EntityBase, IEntitySeedData\n {\n public string Name { get; set; }\n\n public int Age { get; set; }\n\n public string Address { get; set; }\n\n // \u914d\u7f6e\u79cd\u5b50\u6570\u636e\n public IEnumerable HasData(DbContext dbContext, Type dbContextLocator)\n {\n return new List\n {\n new Person { Id = 1, Name = "\u767e\u5c0f\u50e7", Address = "\u5e7f\u4e1c\u7701\u4e2d\u5c71\u5e02" },\n new Person { Id = 2, Name = "\u65b0\u751f\u5e1d", Address = "\u5e7f\u4e1c\u7701\u73e0\u6d77\u5e02" }\n };\n }\n }\n}\n')),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u6ce8\u610f")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},(0,i.kt)("inlineCode",{parentName:"p"},"\u4e3b\u952e")," \u503c\u5fc5\u987b\u624b\u52a8\u63d2\u5165\uff0c\u56e0\u4e3a\u4f1a\u81ea\u52a8\u5173\u95ed\u4e3b\u952e\u6216\u81ea\u589e\u6807\u8bc6\u68c0\u67e5\u3002"))),(0,i.kt)("h3",{id:"92122-\u5728\u4efb\u610f\u5bf9\u8c61\u7c7b\u4e2d\u4f7f\u7528"},"9.21.2.2 \u5728\u4efb\u610f\u5bf9\u8c61\u7c7b\u4e2d\u4f7f\u7528"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{6,9-16}","{6,9-16}":!0},'using Furion.DatabaseAccessor;\nusing System.Collections.Generic;\n\nnamespace Furion.Application\n{\n public class PersonSeedData : IEntitySeedData\n {\n // \u914d\u7f6e\u79cd\u5b50\u6570\u636e\n public IEnumerable HasData(DbContext dbContext, Type dbContextLocator)\n {\n return new List\n {\n new Person { Id = 1, Name = "\u767e\u5c0f\u50e7", Address = "\u5e7f\u4e1c\u7701\u4e2d\u5c71\u5e02" },\n new Person { Id = 2, Name = "\u65b0\u751f\u5e1d", Address = "\u5e7f\u4e1c\u7701\u73e0\u6d77\u5e02" }\n };\n }\n }\n}\n')),(0,i.kt)("h2",{id:"9213-\u5bfc\u822a\u5c5e\u6027"},"9.21.3 \u5bfc\u822a\u5c5e\u6027"),(0,i.kt)("p",null,"\u901a\u5e38\u6211\u4eec\u7684\u5b9e\u4f53\u6709 ",(0,i.kt)("inlineCode",{parentName:"p"},"\u4e00\u5bf9\u591a"),"\uff0c",(0,i.kt)("inlineCode",{parentName:"p"},"\u591a\u5bf9\u591a"),"\u7b49\u5916\u952e\u5173\u7cfb\uff0c\u90a3\u4e48",(0,i.kt)("strong",{parentName:"p"},"\u6211\u4eec\u9700\u8981\u5355\u72ec\u4e3a\u6bcf\u4e00\u4e2a\u5b9e\u4f53\u6dfb\u52a0\u6570\u636e\u79cd\u5b50\uff0c\u800c\u4e0d\u662f\u76f4\u63a5\u5199\u5728\u4e3b\u8868\u4e2d\u3002")),(0,i.kt)("h2",{id:"9214-\u591a\u4e2a\u6570\u636e\u5e93\u79cd\u5b50\u6570\u636e"},"9.21.4 \u591a\u4e2a\u6570\u636e\u5e93\u79cd\u5b50\u6570\u636e"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u63d0\u4f9b\u6cdb\u578b\u7684\u65b9\u5f0f\u652f\u6301\u591a\u4e2a\u6570\u636e\u5e93\u79cd\u5b50\u6570\u636e\u8bbe\u5b9a\uff0c\u5982\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{6,9-16}","{6,9-16}":!0},'using Furion.DatabaseAccessor;\nusing System.Collections.Generic;\n\nnamespace Furion.Application\n{\n public class PersonSeedData : IEntitySeedData\n {\n // \u914d\u7f6e\u79cd\u5b50\u6570\u636e\n public IEnumerable HasData(DbContext dbContext, Type dbContextLocator)\n {\n return new List\n {\n new Person { Id = 1, Name = "\u767e\u5c0f\u50e7", Address = "\u5e7f\u4e1c\u7701\u4e2d\u5c71\u5e02" },\n new Person { Id = 2, Name = "\u65b0\u751f\u5e1d", Address = "\u5e7f\u4e1c\u7701\u73e0\u6d77\u5e02" }\n };\n }\n }\n}\n')),(0,i.kt)("p",null,"\u4e0a\u9762\u7684\u4f8b\u5b50\u8868\u793a\u540c\u65f6\u4e3a ",(0,i.kt)("inlineCode",{parentName:"p"},"MySqlDbContext")," \u548c ",(0,i.kt)("inlineCode",{parentName:"p"},"SqliteDbContext")," \u521b\u5efa\u79cd\u5b50\u6570\u636e\u3002"),(0,i.kt)("h2",{id:"9215-\u53cd\u9988\u4e0e\u5efa\u8bae"},"9.21.5 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,i.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))),(0,i.kt)("hr",null),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e86\u89e3\u66f4\u591a")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u60f3\u4e86\u89e3\u66f4\u591a ",(0,i.kt)("inlineCode",{parentName:"p"},"\u6570\u636e\u79cd\u5b50")," \u77e5\u8bc6\u53ef\u67e5\u9605 ",(0,i.kt)("a",{parentName:"p",href:"https://docs.microsoft.com/zh-cn/ef/core/modeling/data-seeding"},"EF Core - \u6570\u636e\u79cd\u5b50\u8bbe\u5b9a")," \u7ae0\u8282\u3002"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/dc235550.6f24f6d7.js b/handbook/build/assets/js/dc235550.6f24f6d7.js deleted file mode 100644 index 32f993eee2d..00000000000 --- a/handbook/build/assets/js/dc235550.6f24f6d7.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[3942],{3905:function(e,n,t){t.d(n,{Zo:function(){return l},kt:function(){return u}});var a=t(7294);function r(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function o(e){for(var n=1;n=0||(r[t]=e[t]);return r}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var d=a.createContext({}),c=function(e){var n=a.useContext(d),t=n;return e&&(t="function"==typeof e?e(n):o(o({},n),e)),t},l=function(e){var n=c(e.components);return a.createElement(d.Provider,{value:n},e.children)},p={inlineCode:"code",wrapper:function(e){var n=e.children;return a.createElement(a.Fragment,{},n)}},m=a.forwardRef((function(e,n){var t=e.components,r=e.mdxType,i=e.originalType,d=e.parentName,l=s(e,["components","mdxType","originalType","parentName"]),m=c(t),u=r,v=m["".concat(d,".").concat(u)]||m[u]||p[u]||i;return t?a.createElement(v,o(o({ref:n},l),{},{components:t})):a.createElement(v,o({ref:n},l))}));function u(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var i=t.length,o=new Array(i);o[0]=m;var s={};for(var d in n)hasOwnProperty.call(n,d)&&(s[d]=n[d]);s.originalType=e,s.mdxType="string"==typeof e?e:r,o[1]=s;for(var c=2;c")," \u4f9d\u8d56\u63a5\u53e3\u53ef\u4ee5\u5feb\u901f\u7684\u6784\u5efa\u79cd\u5b50\u6570\u636e\uff0c\u652f\u6301\u4efb\u4f55\u65e0\u53c2\u6784\u9020\u51fd\u6570\u5bf9\u8c61\u7c7b\u4e2d\u4f7f\u7528\u3002\u5982\u6211\u4eec\u9700\u8981\u4e3a ",(0,i.kt)("inlineCode",{parentName:"p"},"Person")," \u8868\u63d2\u5165\u521d\u59cb\u5316\u6570\u636e\uff1a"),(0,i.kt)("h3",{id:"92121-\u5728\u5b9e\u4f53\u5b9a\u4e49\u4e2d\u4f7f\u7528"},"9.21.2.1 \u5728\u5b9e\u4f53\u5b9a\u4e49\u4e2d\u4f7f\u7528"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{7,16-23}","{7,16-23}":!0},'using Furion.DatabaseAccessor;\nusing System;\nusing System.Collections.Generic;\n\nnamespace Furion.Core\n{\n public class Person : EntityBase, IEntitySeedData\n {\n public string Name { get; set; }\n\n public int Age { get; set; }\n\n public string Address { get; set; }\n\n // \u914d\u7f6e\u79cd\u5b50\u6570\u636e\n public IEnumerable HasData(DbContext dbContext, Type dbContextLocator)\n {\n return new List\n {\n new Person { Id = 1, Name = "\u767e\u5c0f\u50e7", Address = "\u5e7f\u4e1c\u7701\u4e2d\u5c71\u5e02" },\n new Person { Id = 2, Name = "\u65b0\u751f\u5e1d", Address = "\u5e7f\u4e1c\u7701\u73e0\u6d77\u5e02" }\n };\n }\n }\n}\n')),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u6ce8\u610f")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},(0,i.kt)("inlineCode",{parentName:"p"},"\u4e3b\u952e")," \u503c\u5fc5\u987b\u624b\u52a8\u63d2\u5165\uff0c\u56e0\u4e3a\u4f1a\u81ea\u52a8\u5173\u95ed\u4e3b\u952e\u6216\u81ea\u589e\u6807\u8bc6\u68c0\u67e5\u3002"))),(0,i.kt)("h3",{id:"92122-\u5728\u4efb\u610f\u5bf9\u8c61\u7c7b\u4e2d\u4f7f\u7528"},"9.21.2.2 \u5728\u4efb\u610f\u5bf9\u8c61\u7c7b\u4e2d\u4f7f\u7528"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{6,9-16}","{6,9-16}":!0},'using Furion.DatabaseAccessor;\nusing System.Collections.Generic;\n\nnamespace Furion.Application\n{\n public class PersonSeedData : IEntitySeedData\n {\n // \u914d\u7f6e\u79cd\u5b50\u6570\u636e\n public IEnumerable HasData(DbContext dbContext, Type dbContextLocator)\n {\n return new List\n {\n new Person { Id = 1, Name = "\u767e\u5c0f\u50e7", Address = "\u5e7f\u4e1c\u7701\u4e2d\u5c71\u5e02" },\n new Person { Id = 2, Name = "\u65b0\u751f\u5e1d", Address = "\u5e7f\u4e1c\u7701\u73e0\u6d77\u5e02" }\n };\n }\n }\n}\n')),(0,i.kt)("h2",{id:"9213-\u5bfc\u822a\u5c5e\u6027"},"9.21.3 \u5bfc\u822a\u5c5e\u6027"),(0,i.kt)("p",null,"\u901a\u5e38\u6211\u4eec\u7684\u5b9e\u4f53\u6709 ",(0,i.kt)("inlineCode",{parentName:"p"},"\u4e00\u5bf9\u591a"),"\uff0c",(0,i.kt)("inlineCode",{parentName:"p"},"\u591a\u5bf9\u591a"),"\u7b49\u5916\u952e\u5173\u7cfb\uff0c\u90a3\u4e48",(0,i.kt)("strong",{parentName:"p"},"\u6211\u4eec\u9700\u8981\u5355\u72ec\u4e3a\u6bcf\u4e00\u4e2a\u5b9e\u4f53\u6dfb\u52a0\u6570\u636e\u79cd\u5b50\uff0c\u800c\u4e0d\u662f\u76f4\u63a5\u5199\u5728\u4e3b\u8868\u4e2d\u3002")),(0,i.kt)("h2",{id:"9214-\u591a\u4e2a\u6570\u636e\u5e93\u79cd\u5b50\u6570\u636e"},"9.21.4 \u591a\u4e2a\u6570\u636e\u5e93\u79cd\u5b50\u6570\u636e"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u63d0\u4f9b\u6cdb\u578b\u7684\u65b9\u5f0f\u652f\u6301\u591a\u4e2a\u6570\u636e\u5e93\u79cd\u5b50\u6570\u636e\u8bbe\u5b9a\uff0c\u5982\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{6,9-16}","{6,9-16}":!0},'using Furion.DatabaseAccessor;\nusing System.Collections.Generic;\n\nnamespace Furion.Application\n{\n public class PersonSeedData : IEntitySeedData\n {\n // \u914d\u7f6e\u79cd\u5b50\u6570\u636e\n public IEnumerable HasData(DbContext dbContext, Type dbContextLocator)\n {\n return new List\n {\n new Person { Id = 1, Name = "\u767e\u5c0f\u50e7", Address = "\u5e7f\u4e1c\u7701\u4e2d\u5c71\u5e02" },\n new Person { Id = 2, Name = "\u65b0\u751f\u5e1d", Address = "\u5e7f\u4e1c\u7701\u73e0\u6d77\u5e02" }\n };\n }\n }\n}\n')),(0,i.kt)("p",null,"\u4e0a\u9762\u7684\u4f8b\u5b50\u8868\u793a\u540c\u65f6\u4e3a ",(0,i.kt)("inlineCode",{parentName:"p"},"MySqlDbContext")," \u548c ",(0,i.kt)("inlineCode",{parentName:"p"},"SqliteDbContext")," \u521b\u5efa\u79cd\u5b50\u6570\u636e\u3002"),(0,i.kt)("h2",{id:"9215-\u53cd\u9988\u4e0e\u5efa\u8bae"},"9.21.5 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,i.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))),(0,i.kt)("hr",null),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e86\u89e3\u66f4\u591a")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u60f3\u4e86\u89e3\u66f4\u591a ",(0,i.kt)("inlineCode",{parentName:"p"},"\u6570\u636e\u79cd\u5b50")," \u77e5\u8bc6\u53ef\u67e5\u9605 ",(0,i.kt)("a",{parentName:"p",href:"https://docs.microsoft.com/zh-cn/ef/core/modeling/data-seeding"},"EF Core - \u6570\u636e\u79cd\u5b50\u8bbe\u5b9a")," \u7ae0\u8282\u3002"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/e60cf3ee.24c6799f.js b/handbook/build/assets/js/e60cf3ee.24c6799f.js new file mode 100644 index 00000000000..65be0f53da9 --- /dev/null +++ b/handbook/build/assets/js/e60cf3ee.24c6799f.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[2574],{3905:function(e,n,t){t.d(n,{Zo:function(){return c},kt:function(){return m}});var a=t(7294);function r(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function l(e){for(var n=1;n=0||(r[t]=e[t]);return r}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var d=a.createContext({}),p=function(e){var n=a.useContext(d),t=n;return e&&(t="function"==typeof e?e(n):l(l({},n),e)),t},c=function(e){var n=p(e.components);return a.createElement(d.Provider,{value:n},e.children)},s={inlineCode:"code",wrapper:function(e){var n=e.children;return a.createElement(a.Fragment,{},n)}},u=a.forwardRef((function(e,n){var t=e.components,r=e.mdxType,i=e.originalType,d=e.parentName,c=o(e,["components","mdxType","originalType","parentName"]),u=p(t),m=r,k=u["".concat(d,".").concat(m)]||u[m]||s[m]||i;return t?a.createElement(k,l(l({ref:n},c),{},{components:t})):a.createElement(k,l({ref:n},c))}));function m(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var i=t.length,l=new Array(i);l[0]=u;var o={};for(var d in n)hasOwnProperty.call(n,d)&&(o[d]=n[d]);o.originalType=e,o.mdxType="string"==typeof e?e:r,l[1]=o;for(var p=2;pobject",id:"91431-\u6807\u91cf\u51fd\u6570\u8fd4\u56de-object",children:[]},{value:"9.14.3.2 \u6807\u91cf\u51fd\u6570\u8fd4\u56de T",id:"91432-\u6807\u91cf\u51fd\u6570\u8fd4\u56de-t",children:[]},{value:"9.14.3.3 \u8868\u503c\u51fd\u6570\u8fd4\u56de DataTable",id:"91433-\u8868\u503c\u51fd\u6570\u8fd4\u56de-datatable",children:[]},{value:"9.14.3.4 \u8868\u503c\u51fd\u6570\u8fd4\u56de List<T>",id:"91434-\u8868\u503c\u51fd\u6570\u8fd4\u56de-listt",children:[]}]},{value:"9.14.4 \u5728 Linq \u4e2d\u4f7f\u7528 \u6807\u91cf\u51fd\u6570",id:"9144-\u5728-linq-\u4e2d\u4f7f\u7528-\u6807\u91cf\u51fd\u6570",children:[{value:"9.14.4.1 \u521b\u5efa\u6807\u91cf\u51fd\u6570",id:"91441-\u521b\u5efa\u6807\u91cf\u51fd\u6570",children:[]},{value:"9.14.4.2 \u521b\u5efa\u9759\u6001\u7c7b\u548c\u9759\u6001\u65b9\u6cd5",id:"91442-\u521b\u5efa\u9759\u6001\u7c7b\u548c\u9759\u6001\u65b9\u6cd5",children:[]},{value:"9.14.4.3 \u5728 Linq \u4e2d\u4f7f\u7528",id:"91443-\u5728-linq-\u4e2d\u4f7f\u7528",children:[]}]},{value:"9.14.5 \u5728 Linq \u4e2d\u4f7f\u7528 \u8868\u503c\u51fd\u6570",id:"9145-\u5728-linq-\u4e2d\u4f7f\u7528-\u8868\u503c\u51fd\u6570",children:[{value:"9.14.5.1 \u521b\u5efa\u8868\u503c\u51fd\u6570",id:"91451-\u521b\u5efa\u8868\u503c\u51fd\u6570",children:[]},{value:"9.14.5.2 \u521b\u5efa\u8868\u503c\u51fd\u6570\u6a21\u578b",id:"91452-\u521b\u5efa\u8868\u503c\u51fd\u6570\u6a21\u578b",children:[]},{value:"9.14.5.3 \u8868\u503c\u51fd\u6570\u914d\u7f6e",id:"91453-\u8868\u503c\u51fd\u6570\u914d\u7f6e",children:[]},{value:"9.14.5.4 \u5728 Linq \u4e2d\u4f7f\u7528",id:"91454-\u5728-linq-\u4e2d\u4f7f\u7528",children:[]}]},{value:"9.14.6 \u5728 EF Core \u5185\u7f6e\u51fd\u6570",id:"9146-\u5728-ef-core-\u5185\u7f6e\u51fd\u6570",children:[]},{value:"9.14.7 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"9147-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],u={toc:s};function m(e){var n=e.components,t=(0,r.Z)(e,o);return(0,i.kt)("wrapper",(0,a.Z)({},u,t,{components:n,mdxType:"MDXLayout"}),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u6e29\u99a8\u63d0\u793a")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u63a8\u8350\u4f7f\u7528 \u300a",(0,i.kt)("a",{parentName:"p",href:"/furion/docs/dbcontext-sql-proxy"},"9.17 Sql \u9ad8\u7ea7\u4ee3\u7406"),"\u300b\u4ee3\u66ff\u672c\u7ae0\u8282\u529f\u80fd\u3002",(0,i.kt)("inlineCode",{parentName:"p"},"Sql \u9ad8\u7ea7\u4ee3\u7406")," \u80fd\u591f\u63d0\u4f9b\u66f4\u5bb9\u6613\u4e14\u66f4\u6613\u7ef4\u62a4\u7684\u65b9\u5f0f\u3002"))),(0,i.kt)("h2",{id:"9141-\u6570\u636e\u5e93\u51fd\u6570"},"9.14.1 \u6570\u636e\u5e93\u51fd\u6570"),(0,i.kt)("p",null,"\u5f15\u7528\u767e\u5ea6\u767e\u79d1\uff1a"),(0,i.kt)("blockquote",null,(0,i.kt)("p",{parentName:"blockquote"},"\u6570\u636e\u5e93\u51fd\u6570\u662f\u6307\u5f53\u9700\u8981\u5206\u6790\u6570\u636e\u6e05\u5355\u4e2d\u7684\u6570\u503c\u662f\u5426\u7b26\u5408\u7279\u5b9a\u6761\u4ef6\u65f6\uff0c\u4f7f\u7528\u6570\u636e\u5e93\u5de5\u4f5c\u8868\u51fd\u6570\u3002")),(0,i.kt)("p",null,"\u7b80\u5355\u6765\u8bf4\uff0c\u6570\u636e\u5e93\u51fd\u6570\u5c31\u662f\u7528\u4e8e\u5b50\u8ba1\u7b97\u7684\u51fd\u6570\u3002\u5176\u8ba1\u7b97\u7684\u7ed3\u679c\u53ef\u4ee5\u7528\u4e8e\u6784\u5efa ",(0,i.kt)("inlineCode",{parentName:"p"},"sql")," \u8bed\u53e5\u3002"),(0,i.kt)("h3",{id:"91411-\u652f\u6301\u6807\u91cf\u51fd\u6570\u7684\u6570\u636e\u5e93"},"9.14.1.1 \u652f\u6301\u6807\u91cf\u51fd\u6570\u7684\u6570\u636e\u5e93"),(0,i.kt)("table",null,(0,i.kt)("thead",{parentName:"table"},(0,i.kt)("tr",{parentName:"thead"},(0,i.kt)("th",{parentName:"tr",align:null},"SqlServer"),(0,i.kt)("th",{parentName:"tr",align:null},"Sqlite"),(0,i.kt)("th",{parentName:"tr",align:null},"Cosmos"),(0,i.kt)("th",{parentName:"tr",align:null},"InMemoryDatabase"),(0,i.kt)("th",{parentName:"tr",align:null},"MySql"),(0,i.kt)("th",{parentName:"tr",align:null},"PostgreSQL"),(0,i.kt)("th",{parentName:"tr",align:null},"Oracle"),(0,i.kt)("th",{parentName:"tr",align:null},"Firebird"),(0,i.kt)("th",{parentName:"tr",align:null},"Dm"))),(0,i.kt)("tbody",{parentName:"table"},(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},"\u2714"),(0,i.kt)("td",{parentName:"tr",align:null}),(0,i.kt)("td",{parentName:"tr",align:null},"\u2714"),(0,i.kt)("td",{parentName:"tr",align:null}),(0,i.kt)("td",{parentName:"tr",align:null},"\u2714"),(0,i.kt)("td",{parentName:"tr",align:null},"\u2714"),(0,i.kt)("td",{parentName:"tr",align:null},"\u2714"),(0,i.kt)("td",{parentName:"tr",align:null}),(0,i.kt)("td",{parentName:"tr",align:null})))),(0,i.kt)("h3",{id:"91412-\u652f\u6301\u8868\u503c\u51fd\u6570\u7684\u6570\u636e\u5e93"},"9.14.1.2 \u652f\u6301\u8868\u503c\u51fd\u6570\u7684\u6570\u636e\u5e93"),(0,i.kt)("table",null,(0,i.kt)("thead",{parentName:"table"},(0,i.kt)("tr",{parentName:"thead"},(0,i.kt)("th",{parentName:"tr",align:null},"SqlServer"),(0,i.kt)("th",{parentName:"tr",align:null},"Sqlite"),(0,i.kt)("th",{parentName:"tr",align:null},"Cosmos"),(0,i.kt)("th",{parentName:"tr",align:null},"InMemoryDatabase"),(0,i.kt)("th",{parentName:"tr",align:null},"MySql"),(0,i.kt)("th",{parentName:"tr",align:null},"PostgreSQL"),(0,i.kt)("th",{parentName:"tr",align:null},"Oracle"),(0,i.kt)("th",{parentName:"tr",align:null},"Firebird"),(0,i.kt)("th",{parentName:"tr",align:null},"Dm"))),(0,i.kt)("tbody",{parentName:"table"},(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},"\u2714"),(0,i.kt)("td",{parentName:"tr",align:null}),(0,i.kt)("td",{parentName:"tr",align:null},"\u2714"),(0,i.kt)("td",{parentName:"tr",align:null}),(0,i.kt)("td",{parentName:"tr",align:null}),(0,i.kt)("td",{parentName:"tr",align:null},"\u2714"),(0,i.kt)("td",{parentName:"tr",align:null},"\u2714"),(0,i.kt)("td",{parentName:"tr",align:null}),(0,i.kt)("td",{parentName:"tr",align:null})))),(0,i.kt)("h2",{id:"9142-\u6570\u636e\u5e93\u51fd\u6570\u7c7b\u578b"},"9.14.2 \u6570\u636e\u5e93\u51fd\u6570\u7c7b\u578b"),(0,i.kt)("p",null,"\u5728\u5173\u7cfb\u578b\u6570\u636e\u5e93\u4e2d\uff0c\u6570\u636e\u5e93\u51fd\u6570\u6709\u8fd9\u4e24\u79cd\u7c7b\u578b\uff1a"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"\u6807\u91cf\u51fd\u6570"),"\uff1a\u53ea\u80fd\u8fd4\u56de\u5355\u4e2a\u503c"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"\u8868\u503c\u51fd\u6570"),"\uff1a\u53ea\u80fd\u8fd4\u56de\u4e00\u4e2a\u7ed3\u679c\u96c6")),(0,i.kt)("h2",{id:"9143-\u51fd\u6570\u7684\u4f7f\u7528"},"9.14.3 \u51fd\u6570\u7684\u4f7f\u7528"),(0,i.kt)("h3",{id:"91431-\u6807\u91cf\u51fd\u6570\u8fd4\u56de-object"},"9.14.3.1 \u6807\u91cf\u51fd\u6570\u8fd4\u56de ",(0,i.kt)("inlineCode",{parentName:"h3"},"object")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// ISqlRepository \u65b9\u6cd5\nvar value = _sqlRepository.SqlFunctionScalar("func_GetValue");\n\n// ISqlDispatchProxy \u65b9\u5f0f\nvar value = _sqlExecuteProxy.GetValue(); // \u63a8\u8350\u65b9\u5f0f\n\n// \u5b9e\u4f53\u4ed3\u50a8\u65b9\u5f0f\nvar value = _personRepository.SqlFunctionScalar("func_GetValue");\n\n// IRepository \u975e\u6cdb\u578b\u65b9\u5f0f\nvar value = _repository.Sql().SqlFunctionScalar("func_GetValue");\n\n// \u53d8\u6001\u61d2\u4eba\u65b9\u5f0f\uff0c\u76f4\u63a5\u901a\u8fc7\u51fd\u6570\u540d\u6267\u884c\nvar value = "func_GetValue".SqlFunctionScalar();\n')),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u5173\u4e8e\u5f02\u6b65")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u6bcf\u4e00\u4e2a\u6570\u636e\u5e93\u64cd\u4f5c\u90fd\u652f\u6301\u5f02\u6b65\u65b9\u5f0f\uff0c\u7531\u4e8e\u7bc7\u5e45\u6709\u9650\uff0c\u5c31\u4e0d\u5217\u4e3e\u5f02\u6b65\u65b9\u5f0f\u4e86\u3002"))),(0,i.kt)("h3",{id:"91432-\u6807\u91cf\u51fd\u6570\u8fd4\u56de-t"},"9.14.3.2 \u6807\u91cf\u51fd\u6570\u8fd4\u56de ",(0,i.kt)("inlineCode",{parentName:"h3"},"T")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// ISqlRepository \u65b9\u6cd5\nvar value = _sqlRepository.SqlFunctionScalar("func_GetValue");\n\n// ISqlDispatchProxy \u65b9\u5f0f\nvar value = _sqlExecuteProxy.GetValue(); // \u63a8\u8350\u65b9\u5f0f\n\n// \u5b9e\u4f53\u4ed3\u50a8\u65b9\u5f0f\nvar value = _personRepository.SqlFunctionScalar("func_GetValue");\n\n// IRepository \u975e\u6cdb\u578b\u65b9\u5f0f\nvar value = _repository.Sql().SqlFunctionScalar("func_GetValue");\n\n// \u53d8\u6001\u61d2\u4eba\u65b9\u5f0f\uff0c\u76f4\u63a5\u901a\u8fc7\u51fd\u6570\u540d\u6267\u884c\nvar value = "func_GetValue".SqlFunctionScalar();\n')),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u5173\u4e8e\u5f02\u6b65")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u6bcf\u4e00\u4e2a\u6570\u636e\u5e93\u64cd\u4f5c\u90fd\u652f\u6301\u5f02\u6b65\u65b9\u5f0f\uff0c\u7531\u4e8e\u7bc7\u5e45\u6709\u9650\uff0c\u5c31\u4e0d\u5217\u4e3e\u5f02\u6b65\u65b9\u5f0f\u4e86\u3002"))),(0,i.kt)("h3",{id:"91433-\u8868\u503c\u51fd\u6570\u8fd4\u56de-datatable"},"9.14.3.3 \u8868\u503c\u51fd\u6570\u8fd4\u56de ",(0,i.kt)("inlineCode",{parentName:"h3"},"DataTable")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// ISqlRepository \u65b9\u6cd5\nvar value = _sqlRepository.SqlFunctionQuery("func_GetTable");\n\n// ISqlDispatchProxy \u65b9\u5f0f\nvar value = _sqlExecuteProxy.GetTable(); // \u63a8\u8350\u65b9\u5f0f\n\n// \u5b9e\u4f53\u4ed3\u50a8\u65b9\u5f0f\nvar value = _personRepository.SqlFunctionQuery("func_GetTable");\n\n// IRepository \u975e\u6cdb\u578b\u65b9\u5f0f\nvar value = _repository.Sql().SqlFunctionQuery("func_GetTable");\n\n// \u53d8\u6001\u61d2\u4eba\u65b9\u5f0f\uff0c\u76f4\u63a5\u901a\u8fc7\u51fd\u6570\u540d\u6267\u884c\nvar value = "func_GetTable".SqlFunctionQuery();\n')),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u5173\u4e8e\u5f02\u6b65")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u6bcf\u4e00\u4e2a\u6570\u636e\u5e93\u64cd\u4f5c\u90fd\u652f\u6301\u5f02\u6b65\u65b9\u5f0f\uff0c\u7531\u4e8e\u7bc7\u5e45\u6709\u9650\uff0c\u5c31\u4e0d\u5217\u4e3e\u5f02\u6b65\u65b9\u5f0f\u4e86\u3002"))),(0,i.kt)("h3",{id:"91434-\u8868\u503c\u51fd\u6570\u8fd4\u56de-listt"},"9.14.3.4 \u8868\u503c\u51fd\u6570\u8fd4\u56de ",(0,i.kt)("inlineCode",{parentName:"h3"},"List")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// ISqlRepository \u65b9\u6cd5\nvar value = _sqlRepository.SqlFunctionQuery("func_GetTable");\n\n// ISqlDispatchProxy \u65b9\u5f0f\nvar value = _sqlExecuteProxy.GetTable(); // \u63a8\u8350\u65b9\u5f0f\n\n// \u5b9e\u4f53\u4ed3\u50a8\u65b9\u5f0f\nvar value = _personRepository.SqlFunctionQuery("func_GetTable");\n\n// IRepository \u975e\u6cdb\u578b\u65b9\u5f0f\nvar value = _repository.Sql().SqlFunctionQuery("func_GetTable");\n\n// \u53d8\u6001\u61d2\u4eba\u65b9\u5f0f\uff0c\u76f4\u63a5\u901a\u8fc7\u51fd\u6570\u540d\u6267\u884c\nvar value = "func_GetTable".SqlFunctionQuery();\n')),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u5173\u4e8e\u5f02\u6b65")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u6bcf\u4e00\u4e2a\u6570\u636e\u5e93\u64cd\u4f5c\u90fd\u652f\u6301\u5f02\u6b65\u65b9\u5f0f\uff0c\u7531\u4e8e\u7bc7\u5e45\u6709\u9650\uff0c\u5c31\u4e0d\u5217\u4e3e\u5f02\u6b65\u65b9\u5f0f\u4e86\u3002"))),(0,i.kt)("h2",{id:"9144-\u5728-linq-\u4e2d\u4f7f\u7528-\u6807\u91cf\u51fd\u6570"},"9.14.4 \u5728 ",(0,i.kt)("inlineCode",{parentName:"h2"},"Linq")," \u4e2d\u4f7f\u7528 ",(0,i.kt)("inlineCode",{parentName:"h2"},"\u6807\u91cf\u51fd\u6570")),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u975e\u5e38\u7075\u6d3b\u7684\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Linq")," \u4e2d\u4f7f\u7528\u6807\u91cf\u51fd\u6570\u7684\u65b9\u6cd5\u3002\u5982\u679c\u50cf\u4f7f\u7528\u8fd9\u6837\u7684\u65b9\u5f0f\uff0c\u9700\u8981\u6ee1\u8db3\u4ee5\u4e0b\u4e24\u4e2a\u6761\u4ef6\uff1a"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"\u6807\u91cf\u51fd\u6570\u5fc5\u987b\u5b9a\u4e49\u5728",(0,i.kt)("strong",{parentName:"li"},"\u516c\u5f00\u9759\u6001\u7c7b"),"\u4e2d\uff0c\u4e14\u81ea\u5df1\u4e5f\u662f",(0,i.kt)("strong",{parentName:"li"},"\u516c\u5f00\u9759\u6001\u65b9\u6cd5")),(0,i.kt)("li",{parentName:"ul"},"\u8be5",(0,i.kt)("strong",{parentName:"li"},"\u516c\u5f00\u9759\u6001\u65b9\u6cd5"),"\u5fc5\u987b\u8d34\u6709 ",(0,i.kt)("inlineCode",{parentName:"li"},"[QueryableFunction]")," \u7279\u6027")),(0,i.kt)("p",null,"\u793a\u4f8b\u5982\u4e0b\uff1a"),(0,i.kt)("h3",{id:"91441-\u521b\u5efa\u6807\u91cf\u51fd\u6570"},"9.14.4.1 \u521b\u5efa\u6807\u91cf\u51fd\u6570"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-sql"},"CREATE FUNCTION FN_GetId\n(\n @id INT\n)\nRETURNS INT\nAS\nBEGIN\n RETURN @id + 1;\nEND;\n")),(0,i.kt)("h3",{id:"91442-\u521b\u5efa\u9759\u6001\u7c7b\u548c\u9759\u6001\u65b9\u6cd5"},"9.14.4.2 \u521b\u5efa\u9759\u6001\u7c7b\u548c\u9759\u6001\u65b9\u6cd5"),(0,i.kt)("p",null,"\u521b\u5efa\u9759\u6001\u7c7b\uff0c\u5982 ",(0,i.kt)("inlineCode",{parentName:"p"},"QueryFunctions"),"\uff0c\u5c06\u8be5 ",(0,i.kt)("inlineCode",{parentName:"p"},"\u6807\u91cf\u51fd\u6570")," \u653e\u5728\u9759\u6001\u7c7b\u4e2d\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1, 7, 10-11}","{1,":!0,"7,":!0,"10-11}":!0},'using Furion.DatabaseAccessor;\nusing System;\n\nnamespace Furion.Application\n{\n // \u5fc5\u987b\u662f\u516c\u5f00\u9759\u6001\u7684\n public static class QueryFunctions\n {\n // \u5fc5\u987b\u662f\u9759\u6001\u65b9\u6cd5\n [QueryableFunction("FN_GetId", "dbo")] // \u914d\u7f6e\u6807\u91cf\u51fd\u6570\n public static int GetId(int id) => throw new NotSupportedException();\n }\n}\n')),(0,i.kt)("h3",{id:"91443-\u5728-linq-\u4e2d\u4f7f\u7528"},"9.14.4.3 \u5728 ",(0,i.kt)("inlineCode",{parentName:"h3"},"Linq")," \u4e2d\u4f7f\u7528"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"_personRepository.Where(u => u.Id > QueryFunctions.GetId(1)).ToList();\n")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-sql"},"SELECT [p].[Id], [p].[Address], [p].[Age], [p].[CreatedTime], [p].[IsDeleted], [p].[Name], [p].[UpdatedTime]\nFROM [Person] AS [p]\nWHERE [p].[Id] > [dbo].[FN_GetId](1) // \ud83d\udca5 \u6ce8\u610f\u8fd9\u91cc\n")),(0,i.kt)("img",{src:(0,l.Z)("img/fn1.png")}),(0,i.kt)("h2",{id:"9145-\u5728-linq-\u4e2d\u4f7f\u7528-\u8868\u503c\u51fd\u6570"},"9.14.5 \u5728 ",(0,i.kt)("inlineCode",{parentName:"h2"},"Linq")," \u4e2d\u4f7f\u7528 ",(0,i.kt)("inlineCode",{parentName:"h2"},"\u8868\u503c\u51fd\u6570")),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"EF Core 5.0")," \u7248\u672c\u652f\u6301\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Linq")," \u4e2d\u64cd\u4f5c ",(0,i.kt)("inlineCode",{parentName:"p"},"\u8868\u503c\u51fd\u6570"),"\uff0c\u64cd\u4f5c\u6709\u70b9\u7c7b\u4f3c ",(0,i.kt)("inlineCode",{parentName:"p"},"\u89c6\u56fe\u64cd\u4f5c")),(0,i.kt)("p",null,"\u793a\u4f8b\u5982\u4e0b\uff1a"),(0,i.kt)("h3",{id:"91451-\u521b\u5efa\u8868\u503c\u51fd\u6570"},"9.14.5.1 \u521b\u5efa\u8868\u503c\u51fd\u6570"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-sql"},"CREATE FUNCTION dbo.GetPersons\n(\n @id INT\n)\nRETURNS TABLE\nAS\nRETURN\n(\n SELECT Id,\n Name,\n Age,\n Address\n FROM dbo.Person\n WHERE Id > @id\n);\n")),(0,i.kt)("h3",{id:"91452-\u521b\u5efa\u8868\u503c\u51fd\u6570\u6a21\u578b"},"9.14.5.2 \u521b\u5efa\u8868\u503c\u51fd\u6570\u6a21\u578b"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"namespace Furion.Core\n{\n public class F_Person\n {\n /// \n /// \u4e3b\u952eId\n /// \n public int Id { get; set; }\n\n /// \n /// \u59d3\u540d\n /// \n public string Name { get; set; }\n\n /// \n /// \u5e74\u9f84\n /// \n public int Age { get; set; }\n\n /// \n /// \u4f4f\u5740\n /// \n public string Address { get; set; }\n }\n}\n")),(0,i.kt)("h3",{id:"91453-\u8868\u503c\u51fd\u6570\u914d\u7f6e"},"9.14.5.3 \u8868\u503c\u51fd\u6570\u914d\u7f6e"),(0,i.kt)("p",null,"\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"DbContext")," \u7c7b\u4e2d\u5b9a\u4e49\u65b9\u6cd5\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{3,10,20-21}","{3,10,20-21}":!0},'using Furion.DatabaseAccessor;\nusing Microsoft.EntityFrameworkCore;\nusing System.Linq;\n\nnamespace Furion.EntityFramework.Core\n{\n [AppDbContext("Sqlite3ConnectionString")]\n public class FurionDbContext : AppDbContext\n {\n public IQueryable GetPersons(int id) => FromExpression(() => GetPersons(id));\n\n public FurionDbContext(DbContextOptions options) : base(options)\n {\n }\n\n protected override void OnModelCreating(ModelBuilder modelBuilder)\n {\n base.OnModelCreating(modelBuilder);\n\n modelBuilder.Entity(typeof(F_Person)).HasNoKey();\n modelBuilder.HasDbFunction(() => GetPersons(default));\n }\n }\n}\n')),(0,i.kt)("h3",{id:"91454-\u5728-linq-\u4e2d\u4f7f\u7528"},"9.14.5.4 \u5728 ",(0,i.kt)("inlineCode",{parentName:"h3"},"Linq")," \u4e2d\u4f7f\u7528"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'IQueryable query = _repository.DynamicDbContext.GetPersons(1);\nvar result = query.Where(u => u.Name.Equals("Furion")).ToList();\n')),(0,i.kt)("p",null,"\u6700\u7ec8\u751f\u6210 ",(0,i.kt)("inlineCode",{parentName:"p"},"Sql")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-sql"},"SELECT [g].Id, [g].Name, [g].Age, [g].Address\nFROM dbo.GetPersons(1) AS [g]\nWHERE [g].Name == N'Furion';\n")),(0,i.kt)("h2",{id:"9146-\u5728-ef-core-\u5185\u7f6e\u51fd\u6570"},"9.14.6 \u5728 ",(0,i.kt)("inlineCode",{parentName:"h2"},"EF Core")," \u5185\u7f6e\u51fd\u6570"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"EF Core")," \u4e3a\u6211\u4eec\u63d0\u4f9b\u4e86\u5f88\u591a\u5e38\u7528\u7684\u5185\u7f6e\u51fd\u6570\uff0c\u53ef\u4ee5\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Lambda")," \u6761\u4ef6\u4e2d\u4f7f\u7528\uff0c\u4e3b\u8981\u662f\u901a\u8fc7 EF.Functions \u8c03\u7528\uff0c\u5982\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"_repository.Where(u => EF.Functions.DateDiffHour(u.CreatedDt, DateTime.Now) > 8).FirstOrDefault();\n")),(0,i.kt)("p",null,"\u8fd9\u4e2a\u8bed\u53e5\u4f7f\u7528\u4e86 EF.Functions.DateDiffHour \u6700\u7ec8\u751f\u6210\u7684 Sql \u5982\u4e0b\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-sql"},"SELECT TOP(1) [a].*\nFROM [dbo].[TEST] AS [a]\nWHERE DATEDIFF(HOUR, [a].[CREATED_DT], GETDATE()) > 8\n")),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"EF Core")," \u5185\u7f6e\u51fd\u6570\u5c31\u4e0d\u4e00\u4e00\u5217\u51fa\u4e86\uff0c\u53ef\u4ee5\u901a\u8fc7 ",(0,i.kt)("inlineCode",{parentName:"p"},"EF.Functions")," \u67e5\u770b\u66f4\u591a\uff0c\u5982\u679c\u4e0d\u80fd\u6ee1\u8db3\u81ea\u5df1\u7684\u9700\u6c42\uff0c\u90a3\u4e48\u53ef\u4ee5\u81ea\u5b9a\u4e49 ",(0,i.kt)("inlineCode",{parentName:"p"},"Linq")," \u6807\u91cf\u51fd\u6570"),(0,i.kt)("h2",{id:"9147-\u53cd\u9988\u4e0e\u5efa\u8bae"},"9.14.7 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,i.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/e60cf3ee.e7135ac1.js b/handbook/build/assets/js/e60cf3ee.e7135ac1.js deleted file mode 100644 index 56f71009293..00000000000 --- a/handbook/build/assets/js/e60cf3ee.e7135ac1.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[2574],{3905:function(e,n,t){t.d(n,{Zo:function(){return c},kt:function(){return m}});var a=t(7294);function r(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function l(e){for(var n=1;n=0||(r[t]=e[t]);return r}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var d=a.createContext({}),p=function(e){var n=a.useContext(d),t=n;return e&&(t="function"==typeof e?e(n):l(l({},n),e)),t},c=function(e){var n=p(e.components);return a.createElement(d.Provider,{value:n},e.children)},s={inlineCode:"code",wrapper:function(e){var n=e.children;return a.createElement(a.Fragment,{},n)}},u=a.forwardRef((function(e,n){var t=e.components,r=e.mdxType,i=e.originalType,d=e.parentName,c=o(e,["components","mdxType","originalType","parentName"]),u=p(t),m=r,k=u["".concat(d,".").concat(m)]||u[m]||s[m]||i;return t?a.createElement(k,l(l({ref:n},c),{},{components:t})):a.createElement(k,l({ref:n},c))}));function m(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var i=t.length,l=new Array(i);l[0]=u;var o={};for(var d in n)hasOwnProperty.call(n,d)&&(o[d]=n[d]);o.originalType=e,o.mdxType="string"==typeof e?e:r,l[1]=o;for(var p=2;pobject",id:"91431-\u6807\u91cf\u51fd\u6570\u8fd4\u56de-object",children:[]},{value:"9.14.3.2 \u6807\u91cf\u51fd\u6570\u8fd4\u56de T",id:"91432-\u6807\u91cf\u51fd\u6570\u8fd4\u56de-t",children:[]},{value:"9.14.3.3 \u8868\u503c\u51fd\u6570\u8fd4\u56de DataTable",id:"91433-\u8868\u503c\u51fd\u6570\u8fd4\u56de-datatable",children:[]},{value:"9.14.3.4 \u8868\u503c\u51fd\u6570\u8fd4\u56de List<T>",id:"91434-\u8868\u503c\u51fd\u6570\u8fd4\u56de-listt",children:[]}]},{value:"9.14.4 \u5728 Linq \u4e2d\u4f7f\u7528 \u6807\u91cf\u51fd\u6570",id:"9144-\u5728-linq-\u4e2d\u4f7f\u7528-\u6807\u91cf\u51fd\u6570",children:[{value:"9.14.4.1 \u521b\u5efa\u6807\u91cf\u51fd\u6570",id:"91441-\u521b\u5efa\u6807\u91cf\u51fd\u6570",children:[]},{value:"9.14.4.2 \u521b\u5efa\u9759\u6001\u7c7b\u548c\u9759\u6001\u65b9\u6cd5",id:"91442-\u521b\u5efa\u9759\u6001\u7c7b\u548c\u9759\u6001\u65b9\u6cd5",children:[]},{value:"9.14.4.3 \u5728 Linq \u4e2d\u4f7f\u7528",id:"91443-\u5728-linq-\u4e2d\u4f7f\u7528",children:[]}]},{value:"9.14.5 \u5728 Linq \u4e2d\u4f7f\u7528 \u8868\u503c\u51fd\u6570",id:"9145-\u5728-linq-\u4e2d\u4f7f\u7528-\u8868\u503c\u51fd\u6570",children:[{value:"9.14.5.1 \u521b\u5efa\u8868\u503c\u51fd\u6570",id:"91451-\u521b\u5efa\u8868\u503c\u51fd\u6570",children:[]},{value:"9.14.5.2 \u521b\u5efa\u8868\u503c\u51fd\u6570\u6a21\u578b",id:"91452-\u521b\u5efa\u8868\u503c\u51fd\u6570\u6a21\u578b",children:[]},{value:"9.14.5.3 \u8868\u503c\u51fd\u6570\u914d\u7f6e",id:"91453-\u8868\u503c\u51fd\u6570\u914d\u7f6e",children:[]},{value:"9.14.5.4 \u5728 Linq \u4e2d\u4f7f\u7528",id:"91454-\u5728-linq-\u4e2d\u4f7f\u7528",children:[]}]},{value:"9.14.6 \u5728 EF Core \u5185\u7f6e\u51fd\u6570",id:"9146-\u5728-ef-core-\u5185\u7f6e\u51fd\u6570",children:[]},{value:"9.14.7 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"9147-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],u={toc:s};function m(e){var n=e.components,t=(0,r.Z)(e,o);return(0,i.kt)("wrapper",(0,a.Z)({},u,t,{components:n,mdxType:"MDXLayout"}),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u6e29\u99a8\u63d0\u793a")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u63a8\u8350\u4f7f\u7528 \u300a",(0,i.kt)("a",{parentName:"p",href:"/furion/docs/dbcontext-sql-proxy"},"9.17 Sql \u9ad8\u7ea7\u4ee3\u7406"),"\u300b\u4ee3\u66ff\u672c\u7ae0\u8282\u529f\u80fd\u3002",(0,i.kt)("inlineCode",{parentName:"p"},"Sql \u9ad8\u7ea7\u4ee3\u7406")," \u80fd\u591f\u63d0\u4f9b\u66f4\u5bb9\u6613\u4e14\u66f4\u6613\u7ef4\u62a4\u7684\u65b9\u5f0f\u3002"))),(0,i.kt)("h2",{id:"9141-\u6570\u636e\u5e93\u51fd\u6570"},"9.14.1 \u6570\u636e\u5e93\u51fd\u6570"),(0,i.kt)("p",null,"\u5f15\u7528\u767e\u5ea6\u767e\u79d1\uff1a"),(0,i.kt)("blockquote",null,(0,i.kt)("p",{parentName:"blockquote"},"\u6570\u636e\u5e93\u51fd\u6570\u662f\u6307\u5f53\u9700\u8981\u5206\u6790\u6570\u636e\u6e05\u5355\u4e2d\u7684\u6570\u503c\u662f\u5426\u7b26\u5408\u7279\u5b9a\u6761\u4ef6\u65f6\uff0c\u4f7f\u7528\u6570\u636e\u5e93\u5de5\u4f5c\u8868\u51fd\u6570\u3002")),(0,i.kt)("p",null,"\u7b80\u5355\u6765\u8bf4\uff0c\u6570\u636e\u5e93\u51fd\u6570\u5c31\u662f\u7528\u4e8e\u5b50\u8ba1\u7b97\u7684\u51fd\u6570\u3002\u5176\u8ba1\u7b97\u7684\u7ed3\u679c\u53ef\u4ee5\u7528\u4e8e\u6784\u5efa ",(0,i.kt)("inlineCode",{parentName:"p"},"sql")," \u8bed\u53e5\u3002"),(0,i.kt)("h3",{id:"91411-\u652f\u6301\u6807\u91cf\u51fd\u6570\u7684\u6570\u636e\u5e93"},"9.14.1.1 \u652f\u6301\u6807\u91cf\u51fd\u6570\u7684\u6570\u636e\u5e93"),(0,i.kt)("table",null,(0,i.kt)("thead",{parentName:"table"},(0,i.kt)("tr",{parentName:"thead"},(0,i.kt)("th",{parentName:"tr",align:null},"SqlServer"),(0,i.kt)("th",{parentName:"tr",align:null},"Sqlite"),(0,i.kt)("th",{parentName:"tr",align:null},"Cosmos"),(0,i.kt)("th",{parentName:"tr",align:null},"InMemoryDatabase"),(0,i.kt)("th",{parentName:"tr",align:null},"MySql"),(0,i.kt)("th",{parentName:"tr",align:null},"PostgreSQL"),(0,i.kt)("th",{parentName:"tr",align:null},"Oracle"),(0,i.kt)("th",{parentName:"tr",align:null},"Firebird"),(0,i.kt)("th",{parentName:"tr",align:null},"Dm"))),(0,i.kt)("tbody",{parentName:"table"},(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},"\u2714"),(0,i.kt)("td",{parentName:"tr",align:null}),(0,i.kt)("td",{parentName:"tr",align:null},"\u2714"),(0,i.kt)("td",{parentName:"tr",align:null}),(0,i.kt)("td",{parentName:"tr",align:null},"\u2714"),(0,i.kt)("td",{parentName:"tr",align:null},"\u2714"),(0,i.kt)("td",{parentName:"tr",align:null},"\u2714"),(0,i.kt)("td",{parentName:"tr",align:null}),(0,i.kt)("td",{parentName:"tr",align:null})))),(0,i.kt)("h3",{id:"91412-\u652f\u6301\u8868\u503c\u51fd\u6570\u7684\u6570\u636e\u5e93"},"9.14.1.2 \u652f\u6301\u8868\u503c\u51fd\u6570\u7684\u6570\u636e\u5e93"),(0,i.kt)("table",null,(0,i.kt)("thead",{parentName:"table"},(0,i.kt)("tr",{parentName:"thead"},(0,i.kt)("th",{parentName:"tr",align:null},"SqlServer"),(0,i.kt)("th",{parentName:"tr",align:null},"Sqlite"),(0,i.kt)("th",{parentName:"tr",align:null},"Cosmos"),(0,i.kt)("th",{parentName:"tr",align:null},"InMemoryDatabase"),(0,i.kt)("th",{parentName:"tr",align:null},"MySql"),(0,i.kt)("th",{parentName:"tr",align:null},"PostgreSQL"),(0,i.kt)("th",{parentName:"tr",align:null},"Oracle"),(0,i.kt)("th",{parentName:"tr",align:null},"Firebird"),(0,i.kt)("th",{parentName:"tr",align:null},"Dm"))),(0,i.kt)("tbody",{parentName:"table"},(0,i.kt)("tr",{parentName:"tbody"},(0,i.kt)("td",{parentName:"tr",align:null},"\u2714"),(0,i.kt)("td",{parentName:"tr",align:null}),(0,i.kt)("td",{parentName:"tr",align:null},"\u2714"),(0,i.kt)("td",{parentName:"tr",align:null}),(0,i.kt)("td",{parentName:"tr",align:null}),(0,i.kt)("td",{parentName:"tr",align:null},"\u2714"),(0,i.kt)("td",{parentName:"tr",align:null},"\u2714"),(0,i.kt)("td",{parentName:"tr",align:null}),(0,i.kt)("td",{parentName:"tr",align:null})))),(0,i.kt)("h2",{id:"9142-\u6570\u636e\u5e93\u51fd\u6570\u7c7b\u578b"},"9.14.2 \u6570\u636e\u5e93\u51fd\u6570\u7c7b\u578b"),(0,i.kt)("p",null,"\u5728\u5173\u7cfb\u578b\u6570\u636e\u5e93\u4e2d\uff0c\u6570\u636e\u5e93\u51fd\u6570\u6709\u8fd9\u4e24\u79cd\u7c7b\u578b\uff1a"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"\u6807\u91cf\u51fd\u6570"),"\uff1a\u53ea\u80fd\u8fd4\u56de\u5355\u4e2a\u503c"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"\u8868\u503c\u51fd\u6570"),"\uff1a\u53ea\u80fd\u8fd4\u56de\u4e00\u4e2a\u7ed3\u679c\u96c6")),(0,i.kt)("h2",{id:"9143-\u51fd\u6570\u7684\u4f7f\u7528"},"9.14.3 \u51fd\u6570\u7684\u4f7f\u7528"),(0,i.kt)("h3",{id:"91431-\u6807\u91cf\u51fd\u6570\u8fd4\u56de-object"},"9.14.3.1 \u6807\u91cf\u51fd\u6570\u8fd4\u56de ",(0,i.kt)("inlineCode",{parentName:"h3"},"object")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// ISqlRepository \u65b9\u6cd5\nvar value = _sqlRepository.SqlFunctionScalar("func_GetValue");\n\n// ISqlDispatchProxy \u65b9\u5f0f\nvar value = _sqlExecuteProxy.GetValue(); // \u63a8\u8350\u65b9\u5f0f\n\n// \u5b9e\u4f53\u4ed3\u50a8\u65b9\u5f0f\nvar value = _personRepository.SqlFunctionScalar("func_GetValue");\n\n// IRepository \u975e\u6cdb\u578b\u65b9\u5f0f\nvar value = _repository.Sql().SqlFunctionScalar("func_GetValue");\n\n// \u53d8\u6001\u61d2\u4eba\u65b9\u5f0f\uff0c\u76f4\u63a5\u901a\u8fc7\u51fd\u6570\u540d\u6267\u884c\nvar value = "func_GetValue".SqlFunctionScalar();\n')),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u5173\u4e8e\u5f02\u6b65")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u6bcf\u4e00\u4e2a\u6570\u636e\u5e93\u64cd\u4f5c\u90fd\u652f\u6301\u5f02\u6b65\u65b9\u5f0f\uff0c\u7531\u4e8e\u7bc7\u5e45\u6709\u9650\uff0c\u5c31\u4e0d\u5217\u4e3e\u5f02\u6b65\u65b9\u5f0f\u4e86\u3002"))),(0,i.kt)("h3",{id:"91432-\u6807\u91cf\u51fd\u6570\u8fd4\u56de-t"},"9.14.3.2 \u6807\u91cf\u51fd\u6570\u8fd4\u56de ",(0,i.kt)("inlineCode",{parentName:"h3"},"T")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// ISqlRepository \u65b9\u6cd5\nvar value = _sqlRepository.SqlFunctionScalar("func_GetValue");\n\n// ISqlDispatchProxy \u65b9\u5f0f\nvar value = _sqlExecuteProxy.GetValue(); // \u63a8\u8350\u65b9\u5f0f\n\n// \u5b9e\u4f53\u4ed3\u50a8\u65b9\u5f0f\nvar value = _personRepository.SqlFunctionScalar("func_GetValue");\n\n// IRepository \u975e\u6cdb\u578b\u65b9\u5f0f\nvar value = _repository.Sql().SqlFunctionScalar("func_GetValue");\n\n// \u53d8\u6001\u61d2\u4eba\u65b9\u5f0f\uff0c\u76f4\u63a5\u901a\u8fc7\u51fd\u6570\u540d\u6267\u884c\nvar value = "func_GetValue".SqlFunctionScalar();\n')),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u5173\u4e8e\u5f02\u6b65")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u6bcf\u4e00\u4e2a\u6570\u636e\u5e93\u64cd\u4f5c\u90fd\u652f\u6301\u5f02\u6b65\u65b9\u5f0f\uff0c\u7531\u4e8e\u7bc7\u5e45\u6709\u9650\uff0c\u5c31\u4e0d\u5217\u4e3e\u5f02\u6b65\u65b9\u5f0f\u4e86\u3002"))),(0,i.kt)("h3",{id:"91433-\u8868\u503c\u51fd\u6570\u8fd4\u56de-datatable"},"9.14.3.3 \u8868\u503c\u51fd\u6570\u8fd4\u56de ",(0,i.kt)("inlineCode",{parentName:"h3"},"DataTable")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// ISqlRepository \u65b9\u6cd5\nvar value = _sqlRepository.SqlFunctionQuery("func_GetTable");\n\n// ISqlDispatchProxy \u65b9\u5f0f\nvar value = _sqlExecuteProxy.GetTable(); // \u63a8\u8350\u65b9\u5f0f\n\n// \u5b9e\u4f53\u4ed3\u50a8\u65b9\u5f0f\nvar value = _personRepository.SqlFunctionQuery("func_GetTable");\n\n// IRepository \u975e\u6cdb\u578b\u65b9\u5f0f\nvar value = _repository.Sql().SqlFunctionQuery("func_GetTable");\n\n// \u53d8\u6001\u61d2\u4eba\u65b9\u5f0f\uff0c\u76f4\u63a5\u901a\u8fc7\u51fd\u6570\u540d\u6267\u884c\nvar value = "func_GetTable".SqlFunctionQuery();\n')),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u5173\u4e8e\u5f02\u6b65")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u6bcf\u4e00\u4e2a\u6570\u636e\u5e93\u64cd\u4f5c\u90fd\u652f\u6301\u5f02\u6b65\u65b9\u5f0f\uff0c\u7531\u4e8e\u7bc7\u5e45\u6709\u9650\uff0c\u5c31\u4e0d\u5217\u4e3e\u5f02\u6b65\u65b9\u5f0f\u4e86\u3002"))),(0,i.kt)("h3",{id:"91434-\u8868\u503c\u51fd\u6570\u8fd4\u56de-listt"},"9.14.3.4 \u8868\u503c\u51fd\u6570\u8fd4\u56de ",(0,i.kt)("inlineCode",{parentName:"h3"},"List")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// ISqlRepository \u65b9\u6cd5\nvar value = _sqlRepository.SqlFunctionQuery("func_GetTable");\n\n// ISqlDispatchProxy \u65b9\u5f0f\nvar value = _sqlExecuteProxy.GetTable(); // \u63a8\u8350\u65b9\u5f0f\n\n// \u5b9e\u4f53\u4ed3\u50a8\u65b9\u5f0f\nvar value = _personRepository.SqlFunctionQuery("func_GetTable");\n\n// IRepository \u975e\u6cdb\u578b\u65b9\u5f0f\nvar value = _repository.Sql().SqlFunctionQuery("func_GetTable");\n\n// \u53d8\u6001\u61d2\u4eba\u65b9\u5f0f\uff0c\u76f4\u63a5\u901a\u8fc7\u51fd\u6570\u540d\u6267\u884c\nvar value = "func_GetTable".SqlFunctionQuery();\n')),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u5173\u4e8e\u5f02\u6b65")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u6bcf\u4e00\u4e2a\u6570\u636e\u5e93\u64cd\u4f5c\u90fd\u652f\u6301\u5f02\u6b65\u65b9\u5f0f\uff0c\u7531\u4e8e\u7bc7\u5e45\u6709\u9650\uff0c\u5c31\u4e0d\u5217\u4e3e\u5f02\u6b65\u65b9\u5f0f\u4e86\u3002"))),(0,i.kt)("h2",{id:"9144-\u5728-linq-\u4e2d\u4f7f\u7528-\u6807\u91cf\u51fd\u6570"},"9.14.4 \u5728 ",(0,i.kt)("inlineCode",{parentName:"h2"},"Linq")," \u4e2d\u4f7f\u7528 ",(0,i.kt)("inlineCode",{parentName:"h2"},"\u6807\u91cf\u51fd\u6570")),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u975e\u5e38\u7075\u6d3b\u7684\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Linq")," \u4e2d\u4f7f\u7528\u6807\u91cf\u51fd\u6570\u7684\u65b9\u6cd5\u3002\u5982\u679c\u50cf\u4f7f\u7528\u8fd9\u6837\u7684\u65b9\u5f0f\uff0c\u9700\u8981\u6ee1\u8db3\u4ee5\u4e0b\u4e24\u4e2a\u6761\u4ef6\uff1a"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"\u6807\u91cf\u51fd\u6570\u5fc5\u987b\u5b9a\u4e49\u5728",(0,i.kt)("strong",{parentName:"li"},"\u516c\u5f00\u9759\u6001\u7c7b"),"\u4e2d\uff0c\u4e14\u81ea\u5df1\u4e5f\u662f",(0,i.kt)("strong",{parentName:"li"},"\u516c\u5f00\u9759\u6001\u65b9\u6cd5")),(0,i.kt)("li",{parentName:"ul"},"\u8be5",(0,i.kt)("strong",{parentName:"li"},"\u516c\u5f00\u9759\u6001\u65b9\u6cd5"),"\u5fc5\u987b\u8d34\u6709 ",(0,i.kt)("inlineCode",{parentName:"li"},"[QueryableFunction]")," \u7279\u6027")),(0,i.kt)("p",null,"\u793a\u4f8b\u5982\u4e0b\uff1a"),(0,i.kt)("h3",{id:"91441-\u521b\u5efa\u6807\u91cf\u51fd\u6570"},"9.14.4.1 \u521b\u5efa\u6807\u91cf\u51fd\u6570"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-sql"},"CREATE FUNCTION FN_GetId\n(\n @id INT\n)\nRETURNS INT\nAS\nBEGIN\n RETURN @id + 1;\nEND;\n")),(0,i.kt)("h3",{id:"91442-\u521b\u5efa\u9759\u6001\u7c7b\u548c\u9759\u6001\u65b9\u6cd5"},"9.14.4.2 \u521b\u5efa\u9759\u6001\u7c7b\u548c\u9759\u6001\u65b9\u6cd5"),(0,i.kt)("p",null,"\u521b\u5efa\u9759\u6001\u7c7b\uff0c\u5982 ",(0,i.kt)("inlineCode",{parentName:"p"},"QueryFunctions"),"\uff0c\u5c06\u8be5 ",(0,i.kt)("inlineCode",{parentName:"p"},"\u6807\u91cf\u51fd\u6570")," \u653e\u5728\u9759\u6001\u7c7b\u4e2d\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{1, 7, 10-11}","{1,":!0,"7,":!0,"10-11}":!0},'using Furion.DatabaseAccessor;\nusing System;\n\nnamespace Furion.Application\n{\n // \u5fc5\u987b\u662f\u516c\u5f00\u9759\u6001\u7684\n public static class QueryFunctions\n {\n // \u5fc5\u987b\u662f\u9759\u6001\u65b9\u6cd5\n [QueryableFunction("FN_GetId", "dbo")] // \u914d\u7f6e\u6807\u91cf\u51fd\u6570\n public static int GetId(int id) => throw new NotSupportedException();\n }\n}\n')),(0,i.kt)("h3",{id:"91443-\u5728-linq-\u4e2d\u4f7f\u7528"},"9.14.4.3 \u5728 ",(0,i.kt)("inlineCode",{parentName:"h3"},"Linq")," \u4e2d\u4f7f\u7528"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"_personRepository.Where(u => u.Id > QueryFunctions.GetId(1)).ToList();\n")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-sql"},"SELECT [p].[Id], [p].[Address], [p].[Age], [p].[CreatedTime], [p].[IsDeleted], [p].[Name], [p].[UpdatedTime]\nFROM [Person] AS [p]\nWHERE [p].[Id] > [dbo].[FN_GetId](1) // \ud83d\udca5 \u6ce8\u610f\u8fd9\u91cc\n")),(0,i.kt)("img",{src:(0,l.Z)("img/fn1.png")}),(0,i.kt)("h2",{id:"9145-\u5728-linq-\u4e2d\u4f7f\u7528-\u8868\u503c\u51fd\u6570"},"9.14.5 \u5728 ",(0,i.kt)("inlineCode",{parentName:"h2"},"Linq")," \u4e2d\u4f7f\u7528 ",(0,i.kt)("inlineCode",{parentName:"h2"},"\u8868\u503c\u51fd\u6570")),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"EF Core 5.0")," \u7248\u672c\u652f\u6301\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Linq")," \u4e2d\u64cd\u4f5c ",(0,i.kt)("inlineCode",{parentName:"p"},"\u8868\u503c\u51fd\u6570"),"\uff0c\u64cd\u4f5c\u6709\u70b9\u7c7b\u4f3c ",(0,i.kt)("inlineCode",{parentName:"p"},"\u89c6\u56fe\u64cd\u4f5c")),(0,i.kt)("p",null,"\u793a\u4f8b\u5982\u4e0b\uff1a"),(0,i.kt)("h3",{id:"91451-\u521b\u5efa\u8868\u503c\u51fd\u6570"},"9.14.5.1 \u521b\u5efa\u8868\u503c\u51fd\u6570"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-sql"},"CREATE FUNCTION dbo.GetPersons\n(\n @id INT\n)\nRETURNS TABLE\nAS\nRETURN\n(\n SELECT Id,\n Name,\n Age,\n Address\n FROM dbo.Person\n WHERE Id > @id\n);\n")),(0,i.kt)("h3",{id:"91452-\u521b\u5efa\u8868\u503c\u51fd\u6570\u6a21\u578b"},"9.14.5.2 \u521b\u5efa\u8868\u503c\u51fd\u6570\u6a21\u578b"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"namespace Furion.Core\n{\n public class F_Person\n {\n /// \n /// \u4e3b\u952eId\n /// \n public int Id { get; set; }\n\n /// \n /// \u59d3\u540d\n /// \n public string Name { get; set; }\n\n /// \n /// \u5e74\u9f84\n /// \n public int Age { get; set; }\n\n /// \n /// \u4f4f\u5740\n /// \n public string Address { get; set; }\n }\n}\n")),(0,i.kt)("h3",{id:"91453-\u8868\u503c\u51fd\u6570\u914d\u7f6e"},"9.14.5.3 \u8868\u503c\u51fd\u6570\u914d\u7f6e"),(0,i.kt)("p",null,"\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"DbContext")," \u7c7b\u4e2d\u5b9a\u4e49\u65b9\u6cd5\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{3,10,20-21}","{3,10,20-21}":!0},'using Furion.DatabaseAccessor;\nusing Microsoft.EntityFrameworkCore;\nusing System.Linq;\n\nnamespace Furion.EntityFramework.Core\n{\n [AppDbContext("Sqlite3ConnectionString")]\n public class FurionDbContext : AppDbContext\n {\n public IQueryable GetPersons(int id) => FromExpression(() => GetPersons(id));\n\n public FurionDbContext(DbContextOptions options) : base(options)\n {\n }\n\n protected override void OnModelCreating(ModelBuilder modelBuilder)\n {\n base.OnModelCreating(modelBuilder);\n\n modelBuilder.Entity(typeof(F_Person)).HasNoKey();\n modelBuilder.HasDbFunction(() => GetPersons(default));\n }\n }\n}\n')),(0,i.kt)("h3",{id:"91454-\u5728-linq-\u4e2d\u4f7f\u7528"},"9.14.5.4 \u5728 ",(0,i.kt)("inlineCode",{parentName:"h3"},"Linq")," \u4e2d\u4f7f\u7528"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'IQueryable query = _repository.DynamicDbContext.GetPersons(1);\nvar result = query.Where(u => u.Name.Equals("Furion")).ToList();\n')),(0,i.kt)("p",null,"\u6700\u7ec8\u751f\u6210 ",(0,i.kt)("inlineCode",{parentName:"p"},"Sql")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-sql"},"SELECT [g].Id, [g].Name, [g].Age, [g].Address\nFROM dbo.GetPersons(1) AS [g]\nWHERE [g].Name == N'Furion';\n")),(0,i.kt)("h2",{id:"9146-\u5728-ef-core-\u5185\u7f6e\u51fd\u6570"},"9.14.6 \u5728 ",(0,i.kt)("inlineCode",{parentName:"h2"},"EF Core")," \u5185\u7f6e\u51fd\u6570"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"EF Core")," \u4e3a\u6211\u4eec\u63d0\u4f9b\u4e86\u5f88\u591a\u5e38\u7528\u7684\u5185\u7f6e\u51fd\u6570\uff0c\u53ef\u4ee5\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Lambda")," \u6761\u4ef6\u4e2d\u4f7f\u7528\uff0c\u4e3b\u8981\u662f\u901a\u8fc7 EF.Functions \u8c03\u7528\uff0c\u5982\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"_repository.Where(u => EF.Functions.DateDiffHour(u.CreatedDt, DateTime.Now) > 8).FirstOrDefault();\n")),(0,i.kt)("p",null,"\u8fd9\u4e2a\u8bed\u53e5\u4f7f\u7528\u4e86 EF.Functions.DateDiffHour \u6700\u7ec8\u751f\u6210\u7684 Sql \u5982\u4e0b\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-sql"},"SELECT TOP(1) [a].*\nFROM [dbo].[TEST] AS [a]\nWHERE DATEDIFF(HOUR, [a].[CREATED_DT], GETDATE()) > 8\n")),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"EF Core")," \u5185\u7f6e\u51fd\u6570\u5c31\u4e0d\u4e00\u4e00\u5217\u51fa\u4e86\uff0c\u53ef\u4ee5\u901a\u8fc7 ",(0,i.kt)("inlineCode",{parentName:"p"},"EF.Functions")," \u67e5\u770b\u66f4\u591a\uff0c\u5982\u679c\u4e0d\u80fd\u6ee1\u8db3\u81ea\u5df1\u7684\u9700\u6c42\uff0c\u90a3\u4e48\u53ef\u4ee5\u81ea\u5b9a\u4e49 ",(0,i.kt)("inlineCode",{parentName:"p"},"Linq")," \u6807\u91cf\u51fd\u6570"),(0,i.kt)("h2",{id:"9147-\u53cd\u9988\u4e0e\u5efa\u8bae"},"9.14.7 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,i.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/e7929401.0de11f61.js b/handbook/build/assets/js/e7929401.374bf042.js similarity index 51% rename from handbook/build/assets/js/e7929401.0de11f61.js rename to handbook/build/assets/js/e7929401.374bf042.js index 22c2089659d..3d7d972534f 100644 --- a/handbook/build/assets/js/e7929401.0de11f61.js +++ b/handbook/build/assets/js/e7929401.374bf042.js @@ -1 +1 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[4888],{3905:function(e,t,n){n.d(t,{Zo:function(){return c},kt:function(){return f}});var r=n(7294);function i(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function a(e){for(var t=1;t=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var s=r.createContext({}),u=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},c=function(e){var t=u(e.components);return r.createElement(s.Provider,{value:t},e.children)},p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,i=e.mdxType,o=e.originalType,s=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),d=u(n),f=i,m=d["".concat(s,".").concat(f)]||d[f]||p[f]||o;return n?r.createElement(m,a(a({ref:t},c),{},{components:n})):r.createElement(m,a({ref:t},c))}));function f(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var o=n.length,a=new Array(o);a[0]=d;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l.mdxType="string"==typeof e?e:i,a[1]=l;for(var u=2;u=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var s=r.createContext({}),u=function(e){var t=r.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):a(a({},t),e)),n},c=function(e){var t=u(e.components);return r.createElement(s.Provider,{value:t},e.children)},p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},d=r.forwardRef((function(e,t){var n=e.components,i=e.mdxType,o=e.originalType,s=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),d=u(n),f=i,m=d["".concat(s,".").concat(f)]||d[f]||p[f]||o;return n?r.createElement(m,a(a({ref:t},c),{},{components:n})):r.createElement(m,a({ref:t},c))}));function f(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var o=n.length,a=new Array(o);a[0]=d;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l.mdxType="string"==typeof e?e:i,a[1]=l;for(var u=2;u=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var l=r.createContext({}),p=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},u=function(e){var t=p(e.components);return r.createElement(l.Provider,{value:t},e.children)},d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},s=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,a=e.originalType,l=e.parentName,u=c(e,["components","mdxType","originalType","parentName"]),s=p(n),m=o,f=s["".concat(l,".").concat(m)]||s[m]||d[m]||a;return n?r.createElement(f,i(i({ref:t},u),{},{components:n})):r.createElement(f,i({ref:t},u))}));function m(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=n.length,i=new Array(a);i[0]=s;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c.mdxType="string"==typeof e?e:o,i[1]=c;for(var p=2;pAppSettings",id:"34411-\u914d\u7f6e-appsettings",children:[]}]},{value:"34.4.2 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"3442-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],d={toc:u};function s(e){var t=e.components,n=(0,o.Z)(e,i);return(0,a.kt)("wrapper",(0,r.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"3441-\u5173\u4e8e\u4e8c\u7ea7\u865a\u62df\u76ee\u5f55"},"34.4.1 \u5173\u4e8e\u4e8c\u7ea7\u865a\u62df\u76ee\u5f55"),(0,a.kt)("p",null,"\u901a\u5e38\u6211\u4eec\u7684\u7ad9\u70b9\u90fd\u662f\u90e8\u7f72\u5728\u7f51\u7ad9\u7684\u6839\u76ee\u5f55\u4e0b\u7684\uff0c\u4f46\u662f\u6709\u4e9b\u65f6\u5019\uff0c\u6211\u4eec\u53ef\u80fd\u5c06\u7f51\u7ad9\u6839\u76ee\u5f55\u4e0b\u7684\u76ee\u5f55\u4f5c\u4e3a\u4e8c\u7ea7\u7ad9\u70b9\u6216\u5b50\u7ad9\u70b9\uff0c\u8fd9\u4e2a\u65f6\u5019\uff0c\u5c31\u4f1a\u51fa\u73b0 ",(0,a.kt)("inlineCode",{parentName:"p"},"404")," \u9519\u8bef\u4e86\u3002"),(0,a.kt)("p",null,"\u8fd9\u4e2a\u65f6\u5019\u5c31\u9700\u8981\u8fdb\u884c\u4e00\u4e9b\u7279\u6b8a\u914d\u7f6e\u4e86\u3002"),(0,a.kt)("h3",{id:"34411-\u914d\u7f6e-appsettings"},"34.4.1.1 \u914d\u7f6e ",(0,a.kt)("inlineCode",{parentName:"h3"},"AppSettings")),(0,a.kt)("p",null,"\u6211\u4eec\u53ea\u9700\u8981\u914d\u7f6e ",(0,a.kt)("inlineCode",{parentName:"p"},"AppSettings")," \u5373\u53ef\uff1a"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-json"},'{\n "AppSettings": {\n "VirtualPath": "/\u865a\u62df\u76ee\u5f55"\n }\n}\n')),(0,a.kt)("h2",{id:"3442-\u53cd\u9988\u4e0e\u5efa\u8bae"},"34.4.2 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,a.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,a.kt)("div",{parentName:"div",className:"admonition-heading"},(0,a.kt)("h5",{parentName:"div"},(0,a.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,a.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,a.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,a.kt)("div",{parentName:"div",className:"admonition-content"},(0,a.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,a.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/ea36d85d.66c9ed4a.js b/handbook/build/assets/js/ea36d85d.66c9ed4a.js deleted file mode 100644 index 8131e7eb3fc..00000000000 --- a/handbook/build/assets/js/ea36d85d.66c9ed4a.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[2690],{3905:function(e,t,n){n.d(t,{Zo:function(){return u},kt:function(){return m}});var r=n(7294);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var l=r.createContext({}),p=function(e){var t=r.useContext(l),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},u=function(e){var t=p(e.components);return r.createElement(l.Provider,{value:t},e.children)},d={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},s=r.forwardRef((function(e,t){var n=e.components,o=e.mdxType,a=e.originalType,l=e.parentName,u=c(e,["components","mdxType","originalType","parentName"]),s=p(n),m=o,f=s["".concat(l,".").concat(m)]||s[m]||d[m]||a;return n?r.createElement(f,i(i({ref:t},u),{},{components:n})):r.createElement(f,i({ref:t},u))}));function m(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=n.length,i=new Array(a);i[0]=s;var c={};for(var l in t)hasOwnProperty.call(t,l)&&(c[l]=t[l]);c.originalType=e,c.mdxType="string"==typeof e?e:o,i[1]=c;for(var p=2;pAppSettings",id:"34411-\u914d\u7f6e-appsettings",children:[]}]},{value:"34.4.2 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"3442-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],d={toc:u};function s(e){var t=e.components,n=(0,o.Z)(e,i);return(0,a.kt)("wrapper",(0,r.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,a.kt)("h2",{id:"3441-\u5173\u4e8e\u4e8c\u7ea7\u865a\u62df\u76ee\u5f55"},"34.4.1 \u5173\u4e8e\u4e8c\u7ea7\u865a\u62df\u76ee\u5f55"),(0,a.kt)("p",null,"\u901a\u5e38\u6211\u4eec\u7684\u7ad9\u70b9\u90fd\u662f\u90e8\u7f72\u5728\u7f51\u7ad9\u7684\u6839\u76ee\u5f55\u4e0b\u7684\uff0c\u4f46\u662f\u6709\u4e9b\u65f6\u5019\uff0c\u6211\u4eec\u53ef\u80fd\u5c06\u7f51\u7ad9\u6839\u76ee\u5f55\u4e0b\u7684\u76ee\u5f55\u4f5c\u4e3a\u4e8c\u7ea7\u7ad9\u70b9\u6216\u5b50\u7ad9\u70b9\uff0c\u8fd9\u4e2a\u65f6\u5019\uff0c\u5c31\u4f1a\u51fa\u73b0 ",(0,a.kt)("inlineCode",{parentName:"p"},"404")," \u9519\u8bef\u4e86\u3002"),(0,a.kt)("p",null,"\u8fd9\u4e2a\u65f6\u5019\u5c31\u9700\u8981\u8fdb\u884c\u4e00\u4e9b\u7279\u6b8a\u914d\u7f6e\u4e86\u3002"),(0,a.kt)("h3",{id:"34411-\u914d\u7f6e-appsettings"},"34.4.1.1 \u914d\u7f6e ",(0,a.kt)("inlineCode",{parentName:"h3"},"AppSettings")),(0,a.kt)("p",null,"\u6211\u4eec\u53ea\u9700\u8981\u914d\u7f6e ",(0,a.kt)("inlineCode",{parentName:"p"},"AppSettings")," \u5373\u53ef\uff1a"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-json"},'{\n "AppSettings": {\n "VirtualPath": "/\u865a\u62df\u76ee\u5f55"\n }\n}\n')),(0,a.kt)("h2",{id:"3442-\u53cd\u9988\u4e0e\u5efa\u8bae"},"34.4.2 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,a.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,a.kt)("div",{parentName:"div",className:"admonition-heading"},(0,a.kt)("h5",{parentName:"div"},(0,a.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,a.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,a.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,a.kt)("div",{parentName:"div",className:"admonition-content"},(0,a.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,a.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/ea50195b.54de0197.js b/handbook/build/assets/js/ea50195b.54de0197.js deleted file mode 100644 index 676427e0e1a..00000000000 --- a/handbook/build/assets/js/ea50195b.54de0197.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[5434],{3905:function(e,n,t){t.d(n,{Zo:function(){return m},kt:function(){return u}});var a=t(7294);function i(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function r(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function o(e){for(var n=1;n=0||(i[t]=e[t]);return i}(e,n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(i[t]=e[t])}return i}var l=a.createContext({}),p=function(e){var n=a.useContext(l),t=n;return e&&(t="function"==typeof e?e(n):o(o({},n),e)),t},m=function(e){var n=p(e.components);return a.createElement(l.Provider,{value:n},e.children)},d={inlineCode:"code",wrapper:function(e){var n=e.children;return a.createElement(a.Fragment,{},n)}},c=a.forwardRef((function(e,n){var t=e.components,i=e.mdxType,r=e.originalType,l=e.parentName,m=s(e,["components","mdxType","originalType","parentName"]),c=p(t),u=i,N=c["".concat(l,".").concat(u)]||c[u]||d[u]||r;return t?a.createElement(N,o(o({ref:n},m),{},{components:t})):a.createElement(N,o({ref:n},m))}));function u(e,n){var t=arguments,i=n&&n.mdxType;if("string"==typeof e||i){var r=t.length,o=new Array(r);o[0]=c;var s={};for(var l in n)hasOwnProperty.call(n,l)&&(s[l]=n[l]);s.originalType=e,s.mdxType="string"==typeof e?e:i,o[1]=s;for(var p=2;pJSON",id:"231-\u4ec0\u4e48\u662f-json",children:[]},{value:"23.2 \u5173\u4e8e\u5e8f\u5217\u5316\u5e93",id:"232-\u5173\u4e8e\u5e8f\u5217\u5316\u5e93",children:[]},{value:"23.3 IJsonSerializerProvider \u63a5\u53e3",id:"233-ijsonserializerprovider-\u63a5\u53e3",children:[]},{value:"23.4 \u5982\u4f55\u4f7f\u7528",id:"234-\u5982\u4f55\u4f7f\u7528",children:[{value:"23.4.1 \u83b7\u53d6\u5e8f\u5217\u5316\u5bf9\u8c61",id:"2341-\u83b7\u53d6\u5e8f\u5217\u5316\u5bf9\u8c61",children:[]},{value:"23.4.2 \u5e8f\u5217\u5316\u5bf9\u8c61",id:"2342-\u5e8f\u5217\u5316\u5bf9\u8c61",children:[]},{value:"23.4.3 \u53cd\u5e8f\u5217\u5316\u5b57\u7b26\u4e32",id:"2343-\u53cd\u5e8f\u5217\u5316\u5b57\u7b26\u4e32",children:[]},{value:"23.4.4 \u5e8f\u5217\u5316\u66f4\u591a\u914d\u7f6e",id:"2344-\u5e8f\u5217\u5316\u66f4\u591a\u914d\u7f6e",children:[]}]},{value:"23.5 \u9ad8\u7ea7\u7528\u6cd5",id:"235-\u9ad8\u7ea7\u7528\u6cd5",children:[{value:"23.5.1 \u81ea\u5b9a\u4e49\u5e8f\u5217\u5316\u63d0\u4f9b\u5668",id:"2351-\u81ea\u5b9a\u4e49\u5e8f\u5217\u5316\u63d0\u4f9b\u5668",children:[]},{value:"23.5.2 \u5e8f\u5217\u5316\u5c5e\u6027\u540d\u5927\u5199\uff08\u5c5e\u6027\u539f\u6837\u8f93\u51fa\uff09",id:"2352-\u5e8f\u5217\u5316\u5c5e\u6027\u540d\u5927\u5199\uff08\u5c5e\u6027\u539f\u6837\u8f93\u51fa\uff09",children:[]},{value:"23.5.3 \u65f6\u95f4\u683c\u5f0f\u5316",id:"2353-\u65f6\u95f4\u683c\u5f0f\u5316",children:[]},{value:"23.5.4 \u5ffd\u7565\u5faa\u73af\u5f15\u7528",id:"2354-\u5ffd\u7565\u5faa\u73af\u5f15\u7528",children:[]},{value:"23.5.5 \u5305\u542b\u6210\u5458\u5b57\u6bb5\u5e8f\u5217\u5316",id:"2355-\u5305\u542b\u6210\u5458\u5b57\u6bb5\u5e8f\u5217\u5316",children:[]},{value:"23.5.6 \u5141\u8bb8\u5c3e\u968f\u9017\u53f7",id:"2356-\u5141\u8bb8\u5c3e\u968f\u9017\u53f7",children:[]},{value:"23.5.7 \u5141\u8bb8\u6ce8\u91ca",id:"2357-\u5141\u8bb8\u6ce8\u91ca",children:[]},{value:"23.5.8 \u5904\u7406\u4e71\u7801\u95ee\u9898",id:"2358-\u5904\u7406\u4e71\u7801\u95ee\u9898",children:[]},{value:"23.5.9 \u4e0d\u533a\u5206\u5927\u5c0f\u5199",id:"2359-\u4e0d\u533a\u5206\u5927\u5c0f\u5199",children:[]}]},{value:"23.6 DataTable\u3001DataSet\u3001Tuple \u5143\u7ec4\u7b49\u5e8f\u5217\u5316\u95ee\u9898",id:"236-datatable\u3001dataset\u3001tuple-\u5143\u7ec4\u7b49\u5e8f\u5217\u5316\u95ee\u9898",children:[]},{value:"23.7 System.Text.Json \u548c Newtonsoft.Json \u5b8c\u6574\u5dee\u5f02\u5316\u5bf9\u6bd4",id:"237-systemtextjson-\u548c-newtonsoftjson-\u5b8c\u6574\u5dee\u5f02\u5316\u5bf9\u6bd4",children:[]},{value:"23.8 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"238-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],d={toc:m};function c(e){var n=e.components,t=(0,i.Z)(e,o);return(0,r.kt)("wrapper",(0,a.Z)({},d,t,{components:n,mdxType:"MDXLayout"}),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7248\u672c\u8bf4\u660e")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u4ee5\u4e0b\u5185\u5bb9\u4ec5\u9650 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion 1.16.0 +")," \u7248\u672c\u4f7f\u7528\u3002"))),(0,r.kt)("h2",{id:"231-\u4ec0\u4e48\u662f-json"},"23.1 \u4ec0\u4e48\u662f ",(0,r.kt)("inlineCode",{parentName:"h2"},"JSON")),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"JSON (JavaScript Object Notation, JS \u5bf9\u8c61\u6807\u8bb0) \u662f\u4e00\u79cd\u8f7b\u91cf\u7ea7\u7684\u6570\u636e\u4ea4\u6362\u683c\u5f0f\u3002\u5b83\u57fa\u4e8e ECMAScript (w3c \u5236\u5b9a\u7684 js \u89c4\u8303)\u7684\u4e00\u4e2a\u5b50\u96c6\uff0c\u91c7\u7528\u5b8c\u5168\u72ec\u7acb\u4e8e\u7f16\u7a0b\u8bed\u8a00\u7684\u6587\u672c\u683c\u5f0f\u6765\u5b58\u50a8\u548c\u8868\u793a\u6570\u636e\u3002\u7b80\u6d01\u548c\u6e05\u6670\u7684\u5c42\u6b21\u7ed3\u6784\u4f7f\u5f97 JSON \u6210\u4e3a\u7406\u60f3\u7684\u6570\u636e\u4ea4\u6362\u8bed\u8a00\u3002 \u6613\u4e8e\u4eba\u9605\u8bfb\u548c\u7f16\u5199\uff0c\u540c\u65f6\u4e5f\u6613\u4e8e\u673a\u5668\u89e3\u6790\u548c\u751f\u6210\uff0c\u5e76\u6709\u6548\u5730\u63d0\u5347\u7f51\u7edc\u4f20\u8f93\u6548\u7387\u3002")),(0,r.kt)("p",null,"\u7b80\u5355\u6765\u8bf4\uff0cJSON\uff0c\u662f\u4e00\u79cd\u6570\u636e\u683c\u5f0f\uff0c\u5728\u4e0e\u540e\u7aef\u7684\u6570\u636e\u4ea4\u4e92\u4e2d\u6709\u8f83\u4e3a\u5e7f\u6cdb\u7684\u5e94\u7528\u3002"),(0,r.kt)("h2",{id:"232-\u5173\u4e8e\u5e8f\u5217\u5316\u5e93"},"23.2 \u5173\u4e8e\u5e8f\u5217\u5316\u5e93"),(0,r.kt)("p",null,"\u76ee\u524d\u5728 C# \u8bed\u8a00\u4e2d\u6709\u4e24\u4e2a\u4e3b\u6d41\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"JSON")," \u5e8f\u5217\u5316\u64cd\u4f5c\u5e93\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"System.Text.Json"),"\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},".NET Core")," \u5185\u7f6e ",(0,r.kt)("inlineCode",{parentName:"li"},"JSON")," \u5e8f\u5217\u5316\u5e93\uff0c\u4e5f\u662f ",(0,r.kt)("inlineCode",{parentName:"li"},"Furion")," \u6846\u67b6\u9ed8\u8ba4\u5b9e\u73b0"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Newtonsoft.Json"),"\uff1a\u76ee\u524d\u4f7f\u7528\u4eba\u6570\u6700\u591a\u7684 ",(0,r.kt)("inlineCode",{parentName:"li"},"JSON")," \u5e8f\u5217\u5316\u5e93\uff0c\u9700\u8981\u5b89\u88c5 ",(0,r.kt)("inlineCode",{parentName:"li"},"Microsoft.AspNetCore.Mvc.NewtonsoftJson")," \u62d3\u5c55\u5305")),(0,r.kt)("p",null,"\u7531\u4e8e\u76ee\u524d ",(0,r.kt)("inlineCode",{parentName:"p"},"System.Text.Json")," \u76f8\u6bd4 ",(0,r.kt)("inlineCode",{parentName:"p"},"Newtonsoft.Json")," \u529f\u80fd\u548c\u7a33\u5b9a\u6027\u6709\u8bb8\u591a\u4e0d\u8db3\u4e4b\u5904\uff0c\u6bd4\u5982\u5faa\u73af\u5f15\u7528\u95ee\u9898\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"System.Text.Json")," \u65e0\u89e3\u3002\u4f46\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},".NET 6")," \u4e4b\u540e\u5f97\u5230\u89e3\u51b3\u3002"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e3a\u4e86\u89e3\u51b3\u591a\u79cd\u5e8f\u5217\u5316\u5de5\u5177\u914d\u7f6e\u548c\u7528\u6cd5\u4e0a\u7684\u5dee\u5f02\u95ee\u9898\uff0c\u62bd\u8c61\u51fa\u4e86 ",(0,r.kt)("inlineCode",{parentName:"p"},"IJsonSerializerProvider")," \u63a5\u53e3\u3002"),(0,r.kt)("h2",{id:"233-ijsonserializerprovider-\u63a5\u53e3"},"23.3 ",(0,r.kt)("inlineCode",{parentName:"h2"},"IJsonSerializerProvider")," \u63a5\u53e3"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u4e86 ",(0,r.kt)("inlineCode",{parentName:"p"},"IJsonSerializerProvider")," \u63a5\u53e3\u89c4\u8303\uff0c\u540c\u65f6",(0,r.kt)("strong",{parentName:"p"},"\u8981\u6c42\u5b9e\u73b0\u8be5\u63a5\u53e3\u7684\u5b9e\u4f53\u90fd\u5fc5\u987b\u91c7\u7528\u5355\u4f8b\u6a21\u5f0f"),"\uff0c\u8be5\u63a5\u53e3\u5b9a\u4e49\u4ee3\u7801\u5982\u4e0b\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'namespace Furion.JsonSerialization\n{\n /// \n /// Json \u5e8f\u5217\u5316\u63d0\u4f9b\u5668\n /// \n public interface IJsonSerializerProvider\n {\n /// \n /// \u5e8f\u5217\u5316\u5bf9\u8c61\n /// \n /// \n /// \n /// \n string Serialize(object value, object jsonSerializerOptions = default);\n\n /// \n /// \u53cd\u5e8f\u5217\u5316\u5b57\u7b26\u4e32\n /// \n /// \n /// \n /// \n /// \n T Deserialize(string json, object jsonSerializerOptions = default);\n\n /// \n /// \u8fd4\u56de\u8bfb\u53d6\u5168\u5c40\u914d\u7f6e\u7684 JSON \u9009\u9879\n /// \n /// \n object GetSerializerOptions();\n }\n}\n')),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u9ed8\u8ba4\u5b9e\u73b0")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},(0,r.kt)("inlineCode",{parentName:"p"},"SystemTextJsonSerializerProvider")," \u7c7b\u662f ",(0,r.kt)("inlineCode",{parentName:"p"},"IJsonSerializerProvider")," \u63a5\u53e3\u7684\u9ed8\u8ba4\u5b9e\u73b0\uff0c\u5728\u5e94\u7528\u542f\u52a8\u65f6\u5df2\u9ed8\u8ba4\u6ce8\u518c\u3002"))),(0,r.kt)("h2",{id:"234-\u5982\u4f55\u4f7f\u7528"},"23.4 \u5982\u4f55\u4f7f\u7528"),(0,r.kt)("h3",{id:"2341-\u83b7\u53d6\u5e8f\u5217\u5316\u5bf9\u8c61"},"23.4.1 \u83b7\u53d6\u5e8f\u5217\u5316\u5bf9\u8c61"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u4e86\u4e24\u79cd\u65b9\u5f0f\u83b7\u53d6 ",(0,r.kt)("inlineCode",{parentName:"p"},"IJsonSerializerProvider")," \u5b9e\u4f8b\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u6784\u9020\u51fd\u6570\u6ce8\u5165 ",(0,r.kt)("inlineCode",{parentName:"li"},"IJsonSerializerProvider")),(0,r.kt)("li",{parentName:"ul"},"\u9759\u6001\u7c7b ",(0,r.kt)("inlineCode",{parentName:"li"},"JSON.GetJsonSerializer()")," \u65b9\u5f0f\uff0c",(0,r.kt)("strong",{parentName:"li"},"\u67e5\u770b ",(0,r.kt)("a",{parentName:"strong",href:"/furion/docs/global/json"},"JSON \u9759\u6001\u7c7b")))),(0,r.kt)("p",null,"\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{10,13}","{10,13}":!0},"using Furion.DynamicApiController;\nusing Furion.JsonSerialization;\n\nnamespace Furion.Application\n{\n public class JsonDemo : IDynamicApiController\n {\n private readonly IJsonSerializerProvider _jsonSerializer;\n private readonly IJsonSerializerProvider _jsonSerializer2;\n public JsonDemo(IJsonSerializerProvider jsonSerializer)\n {\n _jsonSerializer = jsonSerializer;\n _jsonSerializer2 = JSON.GetJsonSerializer();\n }\n }\n}\n")),(0,r.kt)("h3",{id:"2342-\u5e8f\u5217\u5316\u5bf9\u8c61"},"23.4.2 \u5e8f\u5217\u5316\u5bf9\u8c61"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'public string GetText()\n{\n return _jsonSerializer.Serialize(new\n {\n Id = 1,\n Name = "Furion"\n });\n}\n')),(0,r.kt)("h3",{id:"2343-\u53cd\u5e8f\u5217\u5316\u5b57\u7b26\u4e32"},"23.4.3 \u53cd\u5e8f\u5217\u5316\u5b57\u7b26\u4e32"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'public object GetObject()\n{\n var json = "{\\"Id\\":1,\\"Name\\":\\"Furion\\"}";\n var obj = _jsonSerializer.Deserialize(json);\n return obj;\n}\n')),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u6ce8\u610f")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},(0,r.kt)("inlineCode",{parentName:"p"},"System.Text.Json")," \u9ed8\u8ba4\u53cd\u5e8f\u5217\u5316\u5927\u5c0f\u5199\u654f\u611f\uff0c\u4e5f\u5c31\u662f\u4e0d\u5b8c\u5168\u5339\u914d\u7684\u5c5e\u6027\u540d\u79f0\u4e0d\u4f1a\u81ea\u52a8\u8d4b\u503c\u3002\u8fd9\u65f6\u5019\u6211\u4eec\u53ef\u4ee5\u5168\u5c40\u914d\u7f6e\u6216\u5355\u72ec\u914d\u7f6e\u3002"),(0,r.kt)("ul",{parentName:"div"},(0,r.kt)("li",{parentName:"ul"},"\u5168\u5c40\u914d\u7f6e")),(0,r.kt)("pre",{parentName:"div"},(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"services.AddControllersWithViews()\n .AddJsonOptions(options => {\n options.JsonSerializerOptions.PropertyNameCaseInsensitive = true;\n });\n")),(0,r.kt)("ul",{parentName:"div"},(0,r.kt)("li",{parentName:"ul"},"\u5355\u72ec\u914d\u7f6e")),(0,r.kt)("pre",{parentName:"div"},(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"var obj = _jsonSerializer.Deserialize(json, new JsonSerializerOptions\n {\n PropertyNameCaseInsensitive = true\n });\n")))),(0,r.kt)("h3",{id:"2344-\u5e8f\u5217\u5316\u66f4\u591a\u914d\u7f6e"},"23.4.4 \u5e8f\u5217\u5316\u66f4\u591a\u914d\u7f6e"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e0d\u63a8\u8350\u4e00\u4e2a\u6846\u67b6\u4e2d\u6709\u591a\u79cd\u5e8f\u5217\u5316\u5b9e\u73b0\u7c7b\uff0c\u4e5f\u5c31\u662f\u8bf4\u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"System.Text.Json")," \u5c31\u4e0d\u8981\u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"Newtonsoft.Json"),"\uff0c\u53cd\u4e4b\u4ea6\u7136\u3002"),(0,r.kt)("p",null,"\u5982\u9700\u914d\u7f6e\u66f4\u591a\u9009\u9879\uff0c\u53ea\u9700\u521b\u5efa ",(0,r.kt)("inlineCode",{parentName:"p"},"JsonSerializerOptions")," \u914d\u7f6e\u5bf9\u8c61\u5373\u53ef\uff0c\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{5}","{5}":!0},'var json = _jsonSerializer.Serialize(new\n {\n Id = 1,\n Name = "Furion"\n }, new JsonSerializerOptions {\n WriteIndented = true\n });\n')),(0,r.kt)("h2",{id:"235-\u9ad8\u7ea7\u7528\u6cd5"},"23.5 \u9ad8\u7ea7\u7528\u6cd5"),(0,r.kt)("h3",{id:"2351-\u81ea\u5b9a\u4e49\u5e8f\u5217\u5316\u63d0\u4f9b\u5668"},"23.5.1 \u81ea\u5b9a\u4e49\u5e8f\u5217\u5316\u63d0\u4f9b\u5668"),(0,r.kt)("p",null,"\u6b63\u5982\u4e0a\u6587\u6240\u8bf4\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u9ed8\u8ba4\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"IJsonSerializerProvider")," \u5b9e\u73b0\u65b9\u5f0f\u662f ",(0,r.kt)("inlineCode",{parentName:"p"},"System.Text.Json")," \u5e93\uff0c\u5982\u9700\u66ff\u6362\u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"Newtonsoft.Json"),"\uff0c\u53ea\u9700\u4ee5\u4e0b\u6b65\u9aa4\u5373\u53ef\uff1a"),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},"\u5b89\u88c5 ",(0,r.kt)("inlineCode",{parentName:"li"},"Microsoft.AspNetCore.Mvc.NewtonsoftJson")," \u62d3\u5c55\uff0c\u5e76\u5728 ",(0,r.kt)("inlineCode",{parentName:"li"},"Startup.cs")," \u4e2d\u6ce8\u518c")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{2}","{2}":!0},"services.AddControllersWithViews()\n .AddNewtonsoftJson();\n")),(0,r.kt)("ol",{start:2},(0,r.kt)("li",{parentName:"ol"},"\u5b9e\u73b0 ",(0,r.kt)("inlineCode",{parentName:"li"},"IJsonSerializerProvider")," \u63d0\u4f9b\u5668")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{10}","{10}":!0},'using Furion.DependencyInjection;\nusing Furion.JsonSerialization;\nusing Newtonsoft.Json;\n\nnamespace Furion.Core\n{\n /// \n /// Newtonsoft.Json \u5b9e\u73b0\n /// \n public class NewtonsoftJsonSerializerProvider : IJsonSerializerProvider, ISingleton\n {\n /// \n /// \u5e8f\u5217\u5316\u5bf9\u8c61\n /// \n /// \n /// \n /// \n public string Serialize(object value, object jsonSerializerOptions = null)\n {\n return JsonConvert.SerializeObject(value, (jsonSerializerOptions ?? GetSerializerOptions()) as JsonSerializerSettings);\n }\n\n /// \n /// \u53cd\u5e8f\u5217\u5316\u5b57\u7b26\u4e32\n /// \n /// \n /// \n /// \n /// \n public T Deserialize(string json, object jsonSerializerOptions = null)\n {\n return JsonConvert.DeserializeObject(json, (jsonSerializerOptions ?? GetSerializerOptions()) as JsonSerializerSettings);\n }\n\n /// \n /// \u8fd4\u56de\u8bfb\u53d6\u5168\u5c40\u914d\u7f6e\u7684 JSON \u9009\u9879\n /// \n /// \n public object GetSerializerOptions()\n {\n return App.GetOptions()?.SerializerSettings;\n }\n }\n}\n')),(0,r.kt)("h3",{id:"2352-\u5e8f\u5217\u5316\u5c5e\u6027\u540d\u5927\u5199\uff08\u5c5e\u6027\u539f\u6837\u8f93\u51fa\uff09"},"23.5.2 \u5e8f\u5217\u5316\u5c5e\u6027\u540d\u5927\u5199\uff08\u5c5e\u6027\u539f\u6837\u8f93\u51fa\uff09"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"System.Text.Json")," \u65b9\u5f0f")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"services.AddControllersWithViews()\n .AddJsonOptions(options => {\n options.JsonSerializerOptions.PropertyNamingPolicy = null;\n // options.JsonSerializerOptions.DictionaryKeyPolicy = null; // \u914d\u7f6e Dictionary \u7c7b\u578b\u5e8f\u5217\u5316\u8f93\u51fa\n });\n")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Newtonsoft.Json")," \u65b9\u5f0f")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"services.AddControllersWithViews()\n .AddNewtonsoftJson(options =>\n {\n options.SerializerSettings.ContractResolver = new DefaultContractResolver();\n });\n")),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u6ce8\u610f")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u91c7\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"Newtonsoft.Json")," \u65b9\u5f0f\u63a5\u53e3\u8fd4\u56de\u503c\u80fd\u591f\u6b63\u5e38\u8f93\u51fa\uff0c\u4f46\u662f ",(0,r.kt)("inlineCode",{parentName:"p"},"Swagger")," \u754c\u9762\u4e2d\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"Example Values")," \u4f9d\u7136\u663e\u793a\u5c0f\u5199\u5b57\u6bcd\u5f00\u5934\u7684\u5c5e\u6027\uff0c\u8fd9\u65f6\u53ea\u9700\u8981\u518d\u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"p"},"System.Text.Json")," \u914d\u7f6e\u5373\u53ef\uff0c\u5982\uff1a"),(0,r.kt)("pre",{parentName:"div"},(0,r.kt)("code",{parentName:"pre",className:"language-cs"},".AddJsonOptions(options => {\n options.JsonSerializerOptions.PropertyNamingPolicy = null;\n });\n")),(0,r.kt)("p",{parentName:"div"},"\u4e3b\u8981\u539f\u56e0\u662f ",(0,r.kt)("inlineCode",{parentName:"p"},"Swagger")," \u62d3\u5c55\u5305\u5e95\u5c42\u4f9d\u8d56\u4e86 ",(0,r.kt)("inlineCode",{parentName:"p"},"System.Text.Json"),"\u3002"))),(0,r.kt)("h3",{id:"2353-\u65f6\u95f4\u683c\u5f0f\u5316"},"23.5.3 \u65f6\u95f4\u683c\u5f0f\u5316"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"System.Text.Json")," \u65b9\u5f0f")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'services.AddControllersWithViews()\n .AddJsonOptions(options =>\n {\n options.JsonSerializerOptions.Converters.AddDateFormatString("yyyy-MM-dd HH:mm:ss");\n });\n')),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u5c0f\u63d0\u793a")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u5982\u679c\u4f7f\u7528\u4f7f\u7528\u4e86 ",(0,r.kt)("inlineCode",{parentName:"p"},"DateTimeOffset")," \u7c7b\u578b\uff0c\u90a3\u4e48\u53ef\u4ee5\u8bbe\u7f6e ",(0,r.kt)("inlineCode",{parentName:"p"},'.AddDateFormatString("yyyy-MM-dd HH:mm:ss", true)')," \u7b2c\u4e8c\u4e2a\u53c2\u6570\u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"true"),"\uff0c\u81ea\u52a8\u8f6c\u6362\u6210\u672c\u5730\u65f6\u95f4\u3002"),(0,r.kt)("p",{parentName:"div"},"\u5982\u679c\u4f7f\u7528\u4e86 ",(0,r.kt)("inlineCode",{parentName:"p"},"Mysql")," \u6570\u636e\u5e93\uff0c\u4e14\u4f7f\u7528\u4e86 ",(0,r.kt)("inlineCode",{parentName:"p"},"Pomelo.EntityFrameworkCore.MySql")," \u5305\uff0c\u90a3\u4e48\u4f1a\u51fa\u73b0\u65f6\u533a\u95ee\u9898\uff0c\u6bd4\u5982\u5c11 8 \u5c0f\u65f6\uff0c\u53ef\u4ee5\u5c1d\u8bd5\u914d\u7f6e\u7b2c\u4e8c\u4e2a\u53c2\u6570\u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"true"),"\u3002"))),(0,r.kt)("p",null,"\u9700\u5f15\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"System.Text.Json")," \u547d\u540d\u7a7a\u95f4\u3002"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Newtonsoft.Json")," \u65b9\u5f0f")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'services.AddControllersWithViews()\n .AddNewtonsoftJson(options =>\n {\n options.SerializerSettings.DateFormatString = "yyyy-MM-dd HH:mm:ss";\n });\n')),(0,r.kt)("h3",{id:"2354-\u5ffd\u7565\u5faa\u73af\u5f15\u7528"},"23.5.4 \u5ffd\u7565\u5faa\u73af\u5f15\u7528"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"System.Text.Json")," \u65b9\u5f0f")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"services.AddControllersWithViews()\n .AddJsonOptions(options =>\n {\n options.JsonSerializerOptions.ReferenceHandler = ReferenceHandler.IgnoreCycles;\n });\n")),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u8bf4\u660e")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},".NET 5")," \u4e2d\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"System.Text.Json")," \u5e76\u4e0d\u652f\u6301\u5904\u7406\u5faa\u73af\u5f15\u7528\u95ee\u9898\uff0c\u4ee5\u4e0a\u7684\u89e3\u51b3\u65b9\u6848\u4ec5\u9650\u7528\u4e8e ",(0,r.kt)("inlineCode",{parentName:"p"},".NET 6 Preview 2+"),"\u3002\ud83d\ude02"))),(0,r.kt)("p",null,"\u9700\u5f15\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"System.Text.Json")," \u547d\u540d\u7a7a\u95f4\u3002"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Newtonsoft.Json")," \u65b9\u5f0f")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"services.AddControllersWithViews()\n .AddNewtonsoftJson(options =>\n {\n options.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;\n });\n")),(0,r.kt)("h3",{id:"2355-\u5305\u542b\u6210\u5458\u5b57\u6bb5\u5e8f\u5217\u5316"},"23.5.5 \u5305\u542b\u6210\u5458\u5b57\u6bb5\u5e8f\u5217\u5316"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"System.Text.Json")," \u65b9\u5f0f")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"services.AddControllersWithViews()\n .AddJsonOptions(options =>\n {\n options.JsonSerializerOptions.IncludeFields = true;\n });\n")),(0,r.kt)("p",null,"\u9700\u5f15\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"System.Text.Json")," \u547d\u540d\u7a7a\u95f4\u3002"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Newtonsoft.Json")," \u65b9\u5f0f")),(0,r.kt)("p",null,"\u65e0\u9700\u914d\u7f6e\u3002"),(0,r.kt)("h3",{id:"2356-\u5141\u8bb8\u5c3e\u968f\u9017\u53f7"},"23.5.6 \u5141\u8bb8\u5c3e\u968f\u9017\u53f7"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"System.Text.Json")," \u65b9\u5f0f")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"services.AddControllersWithViews()\n .AddJsonOptions(options =>\n {\n options.JsonSerializerOptions.AllowTrailingCommas = true;\n });\n")),(0,r.kt)("p",null,"\u9700\u5f15\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"System.Text.Json")," \u547d\u540d\u7a7a\u95f4\u3002"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Newtonsoft.Json")," \u65b9\u5f0f")),(0,r.kt)("p",null,"\u65e0\u9700\u914d\u7f6e\u3002"),(0,r.kt)("h3",{id:"2357-\u5141\u8bb8\u6ce8\u91ca"},"23.5.7 \u5141\u8bb8\u6ce8\u91ca"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"System.Text.Json")," \u65b9\u5f0f")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"services.AddControllersWithViews()\n .AddJsonOptions(options =>\n {\n options.JsonSerializerOptions.ReadCommentHandling = JsonCommentHandling.Skip;\n });\n")),(0,r.kt)("p",null,"\u9700\u5f15\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"System.Text.Json")," \u547d\u540d\u7a7a\u95f4\u3002"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Newtonsoft.Json")," \u65b9\u5f0f")),(0,r.kt)("p",null,"\u65e0\u9700\u914d\u7f6e\u3002"),(0,r.kt)("h3",{id:"2358-\u5904\u7406\u4e71\u7801\u95ee\u9898"},"23.5.8 \u5904\u7406\u4e71\u7801\u95ee\u9898"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"System.Text.Json")," \u65b9\u5f0f")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"services.AddControllersWithViews()\n .AddJsonOptions(options =>\n {\n options.JsonSerializerOptions.Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping;\n });\n")),(0,r.kt)("p",null,"\u9700\u5f15\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"System.Text.Json")," \u547d\u540d\u7a7a\u95f4\u3002"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Newtonsoft.Json")," \u65b9\u5f0f")),(0,r.kt)("p",null,"\u65e0\u9700\u914d\u7f6e\u3002"),(0,r.kt)("h3",{id:"2359-\u4e0d\u533a\u5206\u5927\u5c0f\u5199"},"23.5.9 \u4e0d\u533a\u5206\u5927\u5c0f\u5199"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"System.Text.Json")," \u65b9\u5f0f")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"services.AddControllersWithViews()\n .AddJsonOptions(options =>\n {\n options.JsonSerializerOptions.PropertyNameCaseInsensitive = true;\n });\n")),(0,r.kt)("p",null,"\u9700\u5f15\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"System.Text.Json")," \u547d\u540d\u7a7a\u95f4\u3002"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Newtonsoft.Json")," \u65b9\u5f0f")),(0,r.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u66f4\u591a\u5e8f\u5217\u5316\u914d\u7f6e")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u8fd9\u91cc\u53ea\u5217\u4e3e\u5e38\u7528\u89c1\u7684\u5e8f\u5217\u5316\u914d\u7f6e\uff0c\u5982\u9700\u67e5\u770b\u66f4\u591a\u914d\u7f6e\uff0c\u53ef\u67e5\u9605 ",(0,r.kt)("a",{parentName:"p",href:"https://docs.microsoft.com/zh-cn/dotnet/standard/serialization/system-text-json-configure-options?pivots=dotnet-5-0"},"System.Text.Json \u6587\u6863")))),(0,r.kt)("h2",{id:"236-datatable\u3001dataset\u3001tuple-\u5143\u7ec4\u7b49\u5e8f\u5217\u5316\u95ee\u9898"},"23.6 ",(0,r.kt)("inlineCode",{parentName:"h2"},"DataTable"),"\u3001",(0,r.kt)("inlineCode",{parentName:"h2"},"DataSet"),"\u3001",(0,r.kt)("inlineCode",{parentName:"h2"},"Tuple")," \u5143\u7ec4\u7b49\u5e8f\u5217\u5316\u95ee\u9898"),(0,r.kt)("p",null,"\u7531\u4e8e\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u91c7\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"System.Text.Json")," \u8fdb\u884c\u5e8f\u5217\u5316\uff0c\u4f46\u662f\u4e0d\u652f\u6301\u590d\u6742\u7c7b\u578b\uff0c\u5982 ",(0,r.kt)("inlineCode",{parentName:"p"},"DataTable")," \u3001 ",(0,r.kt)("inlineCode",{parentName:"p"},"DataSet"),"\u3001",(0,r.kt)("inlineCode",{parentName:"p"},"Tuple")," \u5143\u7ec4\uff0c\u6240\u4ee5\u9700\u8981\u66f4\u6362\u6210 ",(0,r.kt)("inlineCode",{parentName:"p"},"NewtonsoftJson")," \u5373\u53ef\uff0c\u89c1 ",(0,r.kt)("a",{parentName:"p",href:"./json-serialization#2351-%E8%87%AA%E5%AE%9A%E4%B9%89%E5%BA%8F%E5%88%97%E5%8C%96%E6%8F%90%E4%BE%9B%E5%99%A8"},"JSON \u5e8f\u5217\u5316 - 23.5.1 \u81ea\u5b9a\u4e49\u5e8f\u5217\u5316\u63d0\u4f9b\u5668")),(0,r.kt)("h2",{id:"237-systemtextjson-\u548c-newtonsoftjson-\u5b8c\u6574\u5dee\u5f02\u5316\u5bf9\u6bd4"},"23.7 ",(0,r.kt)("inlineCode",{parentName:"h2"},"System.Text.Json")," \u548c ",(0,r.kt)("inlineCode",{parentName:"h2"},"Newtonsoft.Json")," \u5b8c\u6574\u5dee\u5f02\u5316\u5bf9\u6bd4"),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.microsoft.com/zh-cn/dotnet/standard/serialization/system-text-json-migrate-from-newtonsoft-how-to?pivots=dotnet-5-0"},"https://docs.microsoft.com/zh-cn/dotnet/standard/serialization/system-text-json-migrate-from-newtonsoft-how-to?pivots=dotnet-5-0")),(0,r.kt)("h2",{id:"238-\u53cd\u9988\u4e0e\u5efa\u8bae"},"23.8 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,r.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/ea50195b.cb78d27b.js b/handbook/build/assets/js/ea50195b.cb78d27b.js new file mode 100644 index 00000000000..31312ff3299 --- /dev/null +++ b/handbook/build/assets/js/ea50195b.cb78d27b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[5434],{3905:function(e,n,t){t.d(n,{Zo:function(){return m},kt:function(){return u}});var a=t(7294);function i(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function r(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function o(e){for(var n=1;n=0||(i[t]=e[t]);return i}(e,n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(i[t]=e[t])}return i}var l=a.createContext({}),p=function(e){var n=a.useContext(l),t=n;return e&&(t="function"==typeof e?e(n):o(o({},n),e)),t},m=function(e){var n=p(e.components);return a.createElement(l.Provider,{value:n},e.children)},d={inlineCode:"code",wrapper:function(e){var n=e.children;return a.createElement(a.Fragment,{},n)}},c=a.forwardRef((function(e,n){var t=e.components,i=e.mdxType,r=e.originalType,l=e.parentName,m=s(e,["components","mdxType","originalType","parentName"]),c=p(t),u=i,N=c["".concat(l,".").concat(u)]||c[u]||d[u]||r;return t?a.createElement(N,o(o({ref:n},m),{},{components:t})):a.createElement(N,o({ref:n},m))}));function u(e,n){var t=arguments,i=n&&n.mdxType;if("string"==typeof e||i){var r=t.length,o=new Array(r);o[0]=c;var s={};for(var l in n)hasOwnProperty.call(n,l)&&(s[l]=n[l]);s.originalType=e,s.mdxType="string"==typeof e?e:i,o[1]=s;for(var p=2;pJSON",id:"231-\u4ec0\u4e48\u662f-json",children:[]},{value:"23.2 \u5173\u4e8e\u5e8f\u5217\u5316\u5e93",id:"232-\u5173\u4e8e\u5e8f\u5217\u5316\u5e93",children:[]},{value:"23.3 IJsonSerializerProvider \u63a5\u53e3",id:"233-ijsonserializerprovider-\u63a5\u53e3",children:[]},{value:"23.4 \u5982\u4f55\u4f7f\u7528",id:"234-\u5982\u4f55\u4f7f\u7528",children:[{value:"23.4.1 \u83b7\u53d6\u5e8f\u5217\u5316\u5bf9\u8c61",id:"2341-\u83b7\u53d6\u5e8f\u5217\u5316\u5bf9\u8c61",children:[]},{value:"23.4.2 \u5e8f\u5217\u5316\u5bf9\u8c61",id:"2342-\u5e8f\u5217\u5316\u5bf9\u8c61",children:[]},{value:"23.4.3 \u53cd\u5e8f\u5217\u5316\u5b57\u7b26\u4e32",id:"2343-\u53cd\u5e8f\u5217\u5316\u5b57\u7b26\u4e32",children:[]},{value:"23.4.4 \u5e8f\u5217\u5316\u66f4\u591a\u914d\u7f6e",id:"2344-\u5e8f\u5217\u5316\u66f4\u591a\u914d\u7f6e",children:[]}]},{value:"23.5 \u9ad8\u7ea7\u7528\u6cd5",id:"235-\u9ad8\u7ea7\u7528\u6cd5",children:[{value:"23.5.1 \u81ea\u5b9a\u4e49\u5e8f\u5217\u5316\u63d0\u4f9b\u5668",id:"2351-\u81ea\u5b9a\u4e49\u5e8f\u5217\u5316\u63d0\u4f9b\u5668",children:[]},{value:"23.5.2 \u5e8f\u5217\u5316\u5c5e\u6027\u540d\u5927\u5199\uff08\u5c5e\u6027\u539f\u6837\u8f93\u51fa\uff09",id:"2352-\u5e8f\u5217\u5316\u5c5e\u6027\u540d\u5927\u5199\uff08\u5c5e\u6027\u539f\u6837\u8f93\u51fa\uff09",children:[]},{value:"23.5.3 \u65f6\u95f4\u683c\u5f0f\u5316",id:"2353-\u65f6\u95f4\u683c\u5f0f\u5316",children:[]},{value:"23.5.4 \u5ffd\u7565\u5faa\u73af\u5f15\u7528",id:"2354-\u5ffd\u7565\u5faa\u73af\u5f15\u7528",children:[]},{value:"23.5.5 \u5305\u542b\u6210\u5458\u5b57\u6bb5\u5e8f\u5217\u5316",id:"2355-\u5305\u542b\u6210\u5458\u5b57\u6bb5\u5e8f\u5217\u5316",children:[]},{value:"23.5.6 \u5141\u8bb8\u5c3e\u968f\u9017\u53f7",id:"2356-\u5141\u8bb8\u5c3e\u968f\u9017\u53f7",children:[]},{value:"23.5.7 \u5141\u8bb8\u6ce8\u91ca",id:"2357-\u5141\u8bb8\u6ce8\u91ca",children:[]},{value:"23.5.8 \u5904\u7406\u4e71\u7801\u95ee\u9898",id:"2358-\u5904\u7406\u4e71\u7801\u95ee\u9898",children:[]},{value:"23.5.9 \u4e0d\u533a\u5206\u5927\u5c0f\u5199",id:"2359-\u4e0d\u533a\u5206\u5927\u5c0f\u5199",children:[]}]},{value:"23.6 DataTable\u3001DataSet\u3001Tuple \u5143\u7ec4\u7b49\u5e8f\u5217\u5316\u95ee\u9898",id:"236-datatable\u3001dataset\u3001tuple-\u5143\u7ec4\u7b49\u5e8f\u5217\u5316\u95ee\u9898",children:[]},{value:"23.7 System.Text.Json \u548c Newtonsoft.Json \u5b8c\u6574\u5dee\u5f02\u5316\u5bf9\u6bd4",id:"237-systemtextjson-\u548c-newtonsoftjson-\u5b8c\u6574\u5dee\u5f02\u5316\u5bf9\u6bd4",children:[]},{value:"23.8 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"238-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],d={toc:m};function c(e){var n=e.components,t=(0,i.Z)(e,o);return(0,r.kt)("wrapper",(0,a.Z)({},d,t,{components:n,mdxType:"MDXLayout"}),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7248\u672c\u8bf4\u660e")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u4ee5\u4e0b\u5185\u5bb9\u4ec5\u9650 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion 1.16.0 +")," \u7248\u672c\u4f7f\u7528\u3002"))),(0,r.kt)("h2",{id:"231-\u4ec0\u4e48\u662f-json"},"23.1 \u4ec0\u4e48\u662f ",(0,r.kt)("inlineCode",{parentName:"h2"},"JSON")),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"JSON (JavaScript Object Notation, JS \u5bf9\u8c61\u6807\u8bb0) \u662f\u4e00\u79cd\u8f7b\u91cf\u7ea7\u7684\u6570\u636e\u4ea4\u6362\u683c\u5f0f\u3002\u5b83\u57fa\u4e8e ECMAScript (w3c \u5236\u5b9a\u7684 js \u89c4\u8303)\u7684\u4e00\u4e2a\u5b50\u96c6\uff0c\u91c7\u7528\u5b8c\u5168\u72ec\u7acb\u4e8e\u7f16\u7a0b\u8bed\u8a00\u7684\u6587\u672c\u683c\u5f0f\u6765\u5b58\u50a8\u548c\u8868\u793a\u6570\u636e\u3002\u7b80\u6d01\u548c\u6e05\u6670\u7684\u5c42\u6b21\u7ed3\u6784\u4f7f\u5f97 JSON \u6210\u4e3a\u7406\u60f3\u7684\u6570\u636e\u4ea4\u6362\u8bed\u8a00\u3002 \u6613\u4e8e\u4eba\u9605\u8bfb\u548c\u7f16\u5199\uff0c\u540c\u65f6\u4e5f\u6613\u4e8e\u673a\u5668\u89e3\u6790\u548c\u751f\u6210\uff0c\u5e76\u6709\u6548\u5730\u63d0\u5347\u7f51\u7edc\u4f20\u8f93\u6548\u7387\u3002")),(0,r.kt)("p",null,"\u7b80\u5355\u6765\u8bf4\uff0cJSON\uff0c\u662f\u4e00\u79cd\u6570\u636e\u683c\u5f0f\uff0c\u5728\u4e0e\u540e\u7aef\u7684\u6570\u636e\u4ea4\u4e92\u4e2d\u6709\u8f83\u4e3a\u5e7f\u6cdb\u7684\u5e94\u7528\u3002"),(0,r.kt)("h2",{id:"232-\u5173\u4e8e\u5e8f\u5217\u5316\u5e93"},"23.2 \u5173\u4e8e\u5e8f\u5217\u5316\u5e93"),(0,r.kt)("p",null,"\u76ee\u524d\u5728 C# \u8bed\u8a00\u4e2d\u6709\u4e24\u4e2a\u4e3b\u6d41\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"JSON")," \u5e8f\u5217\u5316\u64cd\u4f5c\u5e93\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"System.Text.Json"),"\uff1a",(0,r.kt)("inlineCode",{parentName:"li"},".NET Core")," \u5185\u7f6e ",(0,r.kt)("inlineCode",{parentName:"li"},"JSON")," \u5e8f\u5217\u5316\u5e93\uff0c\u4e5f\u662f ",(0,r.kt)("inlineCode",{parentName:"li"},"Furion")," \u6846\u67b6\u9ed8\u8ba4\u5b9e\u73b0"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Newtonsoft.Json"),"\uff1a\u76ee\u524d\u4f7f\u7528\u4eba\u6570\u6700\u591a\u7684 ",(0,r.kt)("inlineCode",{parentName:"li"},"JSON")," \u5e8f\u5217\u5316\u5e93\uff0c\u9700\u8981\u5b89\u88c5 ",(0,r.kt)("inlineCode",{parentName:"li"},"Microsoft.AspNetCore.Mvc.NewtonsoftJson")," \u62d3\u5c55\u5305")),(0,r.kt)("p",null,"\u7531\u4e8e\u76ee\u524d ",(0,r.kt)("inlineCode",{parentName:"p"},"System.Text.Json")," \u76f8\u6bd4 ",(0,r.kt)("inlineCode",{parentName:"p"},"Newtonsoft.Json")," \u529f\u80fd\u548c\u7a33\u5b9a\u6027\u6709\u8bb8\u591a\u4e0d\u8db3\u4e4b\u5904\uff0c\u6bd4\u5982\u5faa\u73af\u5f15\u7528\u95ee\u9898\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},"System.Text.Json")," \u65e0\u89e3\u3002\u4f46\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},".NET 6")," \u4e4b\u540e\u5f97\u5230\u89e3\u51b3\u3002"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e3a\u4e86\u89e3\u51b3\u591a\u79cd\u5e8f\u5217\u5316\u5de5\u5177\u914d\u7f6e\u548c\u7528\u6cd5\u4e0a\u7684\u5dee\u5f02\u95ee\u9898\uff0c\u62bd\u8c61\u51fa\u4e86 ",(0,r.kt)("inlineCode",{parentName:"p"},"IJsonSerializerProvider")," \u63a5\u53e3\u3002"),(0,r.kt)("h2",{id:"233-ijsonserializerprovider-\u63a5\u53e3"},"23.3 ",(0,r.kt)("inlineCode",{parentName:"h2"},"IJsonSerializerProvider")," \u63a5\u53e3"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u4e86 ",(0,r.kt)("inlineCode",{parentName:"p"},"IJsonSerializerProvider")," \u63a5\u53e3\u89c4\u8303\uff0c\u540c\u65f6",(0,r.kt)("strong",{parentName:"p"},"\u8981\u6c42\u5b9e\u73b0\u8be5\u63a5\u53e3\u7684\u5b9e\u4f53\u90fd\u5fc5\u987b\u91c7\u7528\u5355\u4f8b\u6a21\u5f0f"),"\uff0c\u8be5\u63a5\u53e3\u5b9a\u4e49\u4ee3\u7801\u5982\u4e0b\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'namespace Furion.JsonSerialization\n{\n /// \n /// Json \u5e8f\u5217\u5316\u63d0\u4f9b\u5668\n /// \n public interface IJsonSerializerProvider\n {\n /// \n /// \u5e8f\u5217\u5316\u5bf9\u8c61\n /// \n /// \n /// \n /// \n string Serialize(object value, object jsonSerializerOptions = default);\n\n /// \n /// \u53cd\u5e8f\u5217\u5316\u5b57\u7b26\u4e32\n /// \n /// \n /// \n /// \n /// \n T Deserialize(string json, object jsonSerializerOptions = default);\n\n /// \n /// \u8fd4\u56de\u8bfb\u53d6\u5168\u5c40\u914d\u7f6e\u7684 JSON \u9009\u9879\n /// \n /// \n object GetSerializerOptions();\n }\n}\n')),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u9ed8\u8ba4\u5b9e\u73b0")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},(0,r.kt)("inlineCode",{parentName:"p"},"SystemTextJsonSerializerProvider")," \u7c7b\u662f ",(0,r.kt)("inlineCode",{parentName:"p"},"IJsonSerializerProvider")," \u63a5\u53e3\u7684\u9ed8\u8ba4\u5b9e\u73b0\uff0c\u5728\u5e94\u7528\u542f\u52a8\u65f6\u5df2\u9ed8\u8ba4\u6ce8\u518c\u3002"))),(0,r.kt)("h2",{id:"234-\u5982\u4f55\u4f7f\u7528"},"23.4 \u5982\u4f55\u4f7f\u7528"),(0,r.kt)("h3",{id:"2341-\u83b7\u53d6\u5e8f\u5217\u5316\u5bf9\u8c61"},"23.4.1 \u83b7\u53d6\u5e8f\u5217\u5316\u5bf9\u8c61"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u4e86\u4e24\u79cd\u65b9\u5f0f\u83b7\u53d6 ",(0,r.kt)("inlineCode",{parentName:"p"},"IJsonSerializerProvider")," \u5b9e\u4f8b\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"\u6784\u9020\u51fd\u6570\u6ce8\u5165 ",(0,r.kt)("inlineCode",{parentName:"li"},"IJsonSerializerProvider")),(0,r.kt)("li",{parentName:"ul"},"\u9759\u6001\u7c7b ",(0,r.kt)("inlineCode",{parentName:"li"},"JSON.GetJsonSerializer()")," \u65b9\u5f0f\uff0c",(0,r.kt)("strong",{parentName:"li"},"\u67e5\u770b ",(0,r.kt)("a",{parentName:"strong",href:"/furion/docs/global/json"},"JSON \u9759\u6001\u7c7b")))),(0,r.kt)("p",null,"\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{10,13}","{10,13}":!0},"using Furion.DynamicApiController;\nusing Furion.JsonSerialization;\n\nnamespace Furion.Application\n{\n public class JsonDemo : IDynamicApiController\n {\n private readonly IJsonSerializerProvider _jsonSerializer;\n private readonly IJsonSerializerProvider _jsonSerializer2;\n public JsonDemo(IJsonSerializerProvider jsonSerializer)\n {\n _jsonSerializer = jsonSerializer;\n _jsonSerializer2 = JSON.GetJsonSerializer();\n }\n }\n}\n")),(0,r.kt)("h3",{id:"2342-\u5e8f\u5217\u5316\u5bf9\u8c61"},"23.4.2 \u5e8f\u5217\u5316\u5bf9\u8c61"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'public string GetText()\n{\n return _jsonSerializer.Serialize(new\n {\n Id = 1,\n Name = "Furion"\n });\n}\n')),(0,r.kt)("h3",{id:"2343-\u53cd\u5e8f\u5217\u5316\u5b57\u7b26\u4e32"},"23.4.3 \u53cd\u5e8f\u5217\u5316\u5b57\u7b26\u4e32"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'public object GetObject()\n{\n var json = "{\\"Id\\":1,\\"Name\\":\\"Furion\\"}";\n var obj = _jsonSerializer.Deserialize(json);\n return obj;\n}\n')),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u6ce8\u610f")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},(0,r.kt)("inlineCode",{parentName:"p"},"System.Text.Json")," \u9ed8\u8ba4\u53cd\u5e8f\u5217\u5316\u5927\u5c0f\u5199\u654f\u611f\uff0c\u4e5f\u5c31\u662f\u4e0d\u5b8c\u5168\u5339\u914d\u7684\u5c5e\u6027\u540d\u79f0\u4e0d\u4f1a\u81ea\u52a8\u8d4b\u503c\u3002\u8fd9\u65f6\u5019\u6211\u4eec\u53ef\u4ee5\u5168\u5c40\u914d\u7f6e\u6216\u5355\u72ec\u914d\u7f6e\u3002"),(0,r.kt)("ul",{parentName:"div"},(0,r.kt)("li",{parentName:"ul"},"\u5168\u5c40\u914d\u7f6e")),(0,r.kt)("pre",{parentName:"div"},(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"services.AddControllersWithViews()\n .AddJsonOptions(options => {\n options.JsonSerializerOptions.PropertyNameCaseInsensitive = true;\n });\n")),(0,r.kt)("ul",{parentName:"div"},(0,r.kt)("li",{parentName:"ul"},"\u5355\u72ec\u914d\u7f6e")),(0,r.kt)("pre",{parentName:"div"},(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"var obj = _jsonSerializer.Deserialize(json, new JsonSerializerOptions\n {\n PropertyNameCaseInsensitive = true\n });\n")))),(0,r.kt)("h3",{id:"2344-\u5e8f\u5217\u5316\u66f4\u591a\u914d\u7f6e"},"23.4.4 \u5e8f\u5217\u5316\u66f4\u591a\u914d\u7f6e"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e0d\u63a8\u8350\u4e00\u4e2a\u6846\u67b6\u4e2d\u6709\u591a\u79cd\u5e8f\u5217\u5316\u5b9e\u73b0\u7c7b\uff0c\u4e5f\u5c31\u662f\u8bf4\u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"System.Text.Json")," \u5c31\u4e0d\u8981\u4f7f\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"Newtonsoft.Json"),"\uff0c\u53cd\u4e4b\u4ea6\u7136\u3002"),(0,r.kt)("p",null,"\u5982\u9700\u914d\u7f6e\u66f4\u591a\u9009\u9879\uff0c\u53ea\u9700\u521b\u5efa ",(0,r.kt)("inlineCode",{parentName:"p"},"JsonSerializerOptions")," \u914d\u7f6e\u5bf9\u8c61\u5373\u53ef\uff0c\u5982\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{5}","{5}":!0},'var json = _jsonSerializer.Serialize(new\n {\n Id = 1,\n Name = "Furion"\n }, new JsonSerializerOptions {\n WriteIndented = true\n });\n')),(0,r.kt)("h2",{id:"235-\u9ad8\u7ea7\u7528\u6cd5"},"23.5 \u9ad8\u7ea7\u7528\u6cd5"),(0,r.kt)("h3",{id:"2351-\u81ea\u5b9a\u4e49\u5e8f\u5217\u5316\u63d0\u4f9b\u5668"},"23.5.1 \u81ea\u5b9a\u4e49\u5e8f\u5217\u5316\u63d0\u4f9b\u5668"),(0,r.kt)("p",null,"\u6b63\u5982\u4e0a\u6587\u6240\u8bf4\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u9ed8\u8ba4\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"IJsonSerializerProvider")," \u5b9e\u73b0\u65b9\u5f0f\u662f ",(0,r.kt)("inlineCode",{parentName:"p"},"System.Text.Json")," \u5e93\uff0c\u5982\u9700\u66ff\u6362\u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"Newtonsoft.Json"),"\uff0c\u53ea\u9700\u4ee5\u4e0b\u6b65\u9aa4\u5373\u53ef\uff1a"),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},"\u5b89\u88c5 ",(0,r.kt)("inlineCode",{parentName:"li"},"Microsoft.AspNetCore.Mvc.NewtonsoftJson")," \u62d3\u5c55\uff0c\u5e76\u5728 ",(0,r.kt)("inlineCode",{parentName:"li"},"Startup.cs")," \u4e2d\u6ce8\u518c")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{2}","{2}":!0},"services.AddControllersWithViews()\n .AddNewtonsoftJson();\n")),(0,r.kt)("ol",{start:2},(0,r.kt)("li",{parentName:"ol"},"\u5b9e\u73b0 ",(0,r.kt)("inlineCode",{parentName:"li"},"IJsonSerializerProvider")," \u63d0\u4f9b\u5668")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{10}","{10}":!0},'using Furion.DependencyInjection;\nusing Furion.JsonSerialization;\nusing Newtonsoft.Json;\n\nnamespace Furion.Core\n{\n /// \n /// Newtonsoft.Json \u5b9e\u73b0\n /// \n public class NewtonsoftJsonSerializerProvider : IJsonSerializerProvider, ISingleton\n {\n /// \n /// \u5e8f\u5217\u5316\u5bf9\u8c61\n /// \n /// \n /// \n /// \n public string Serialize(object value, object jsonSerializerOptions = null)\n {\n return JsonConvert.SerializeObject(value, (jsonSerializerOptions ?? GetSerializerOptions()) as JsonSerializerSettings);\n }\n\n /// \n /// \u53cd\u5e8f\u5217\u5316\u5b57\u7b26\u4e32\n /// \n /// \n /// \n /// \n /// \n public T Deserialize(string json, object jsonSerializerOptions = null)\n {\n return JsonConvert.DeserializeObject(json, (jsonSerializerOptions ?? GetSerializerOptions()) as JsonSerializerSettings);\n }\n\n /// \n /// \u8fd4\u56de\u8bfb\u53d6\u5168\u5c40\u914d\u7f6e\u7684 JSON \u9009\u9879\n /// \n /// \n public object GetSerializerOptions()\n {\n return App.GetOptions()?.SerializerSettings;\n }\n }\n}\n')),(0,r.kt)("h3",{id:"2352-\u5e8f\u5217\u5316\u5c5e\u6027\u540d\u5927\u5199\uff08\u5c5e\u6027\u539f\u6837\u8f93\u51fa\uff09"},"23.5.2 \u5e8f\u5217\u5316\u5c5e\u6027\u540d\u5927\u5199\uff08\u5c5e\u6027\u539f\u6837\u8f93\u51fa\uff09"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"System.Text.Json")," \u65b9\u5f0f")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"services.AddControllersWithViews()\n .AddJsonOptions(options => {\n options.JsonSerializerOptions.PropertyNamingPolicy = null;\n // options.JsonSerializerOptions.DictionaryKeyPolicy = null; // \u914d\u7f6e Dictionary \u7c7b\u578b\u5e8f\u5217\u5316\u8f93\u51fa\n });\n")),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Newtonsoft.Json")," \u65b9\u5f0f")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"services.AddControllersWithViews()\n .AddNewtonsoftJson(options =>\n {\n options.SerializerSettings.ContractResolver = new DefaultContractResolver();\n });\n")),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u6ce8\u610f")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u91c7\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"Newtonsoft.Json")," \u65b9\u5f0f\u63a5\u53e3\u8fd4\u56de\u503c\u80fd\u591f\u6b63\u5e38\u8f93\u51fa\uff0c\u4f46\u662f ",(0,r.kt)("inlineCode",{parentName:"p"},"Swagger")," \u754c\u9762\u4e2d\u7684 ",(0,r.kt)("inlineCode",{parentName:"p"},"Example Values")," \u4f9d\u7136\u663e\u793a\u5c0f\u5199\u5b57\u6bcd\u5f00\u5934\u7684\u5c5e\u6027\uff0c\u8fd9\u65f6\u53ea\u9700\u8981\u518d\u6dfb\u52a0 ",(0,r.kt)("inlineCode",{parentName:"p"},"System.Text.Json")," \u914d\u7f6e\u5373\u53ef\uff0c\u5982\uff1a"),(0,r.kt)("pre",{parentName:"div"},(0,r.kt)("code",{parentName:"pre",className:"language-cs"},".AddJsonOptions(options => {\n options.JsonSerializerOptions.PropertyNamingPolicy = null;\n });\n")),(0,r.kt)("p",{parentName:"div"},"\u4e3b\u8981\u539f\u56e0\u662f ",(0,r.kt)("inlineCode",{parentName:"p"},"Swagger")," \u62d3\u5c55\u5305\u5e95\u5c42\u4f9d\u8d56\u4e86 ",(0,r.kt)("inlineCode",{parentName:"p"},"System.Text.Json"),"\u3002"))),(0,r.kt)("h3",{id:"2353-\u65f6\u95f4\u683c\u5f0f\u5316"},"23.5.3 \u65f6\u95f4\u683c\u5f0f\u5316"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"System.Text.Json")," \u65b9\u5f0f")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'services.AddControllersWithViews()\n .AddJsonOptions(options =>\n {\n options.JsonSerializerOptions.Converters.AddDateFormatString("yyyy-MM-dd HH:mm:ss");\n });\n')),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u5c0f\u63d0\u793a")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u5982\u679c\u4f7f\u7528\u4f7f\u7528\u4e86 ",(0,r.kt)("inlineCode",{parentName:"p"},"DateTimeOffset")," \u7c7b\u578b\uff0c\u90a3\u4e48\u53ef\u4ee5\u8bbe\u7f6e ",(0,r.kt)("inlineCode",{parentName:"p"},'.AddDateFormatString("yyyy-MM-dd HH:mm:ss", true)')," \u7b2c\u4e8c\u4e2a\u53c2\u6570\u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"true"),"\uff0c\u81ea\u52a8\u8f6c\u6362\u6210\u672c\u5730\u65f6\u95f4\u3002"),(0,r.kt)("p",{parentName:"div"},"\u5982\u679c\u4f7f\u7528\u4e86 ",(0,r.kt)("inlineCode",{parentName:"p"},"Mysql")," \u6570\u636e\u5e93\uff0c\u4e14\u4f7f\u7528\u4e86 ",(0,r.kt)("inlineCode",{parentName:"p"},"Pomelo.EntityFrameworkCore.MySql")," \u5305\uff0c\u90a3\u4e48\u4f1a\u51fa\u73b0\u65f6\u533a\u95ee\u9898\uff0c\u6bd4\u5982\u5c11 8 \u5c0f\u65f6\uff0c\u53ef\u4ee5\u5c1d\u8bd5\u914d\u7f6e\u7b2c\u4e8c\u4e2a\u53c2\u6570\u4e3a ",(0,r.kt)("inlineCode",{parentName:"p"},"true"),"\u3002"))),(0,r.kt)("p",null,"\u9700\u5f15\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"System.Text.Json")," \u547d\u540d\u7a7a\u95f4\u3002"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Newtonsoft.Json")," \u65b9\u5f0f")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},'services.AddControllersWithViews()\n .AddNewtonsoftJson(options =>\n {\n options.SerializerSettings.DateFormatString = "yyyy-MM-dd HH:mm:ss";\n });\n')),(0,r.kt)("h3",{id:"2354-\u5ffd\u7565\u5faa\u73af\u5f15\u7528"},"23.5.4 \u5ffd\u7565\u5faa\u73af\u5f15\u7528"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"System.Text.Json")," \u65b9\u5f0f")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"services.AddControllersWithViews()\n .AddJsonOptions(options =>\n {\n options.JsonSerializerOptions.ReferenceHandler = ReferenceHandler.IgnoreCycles;\n });\n")),(0,r.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u8bf4\u660e")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u5728 ",(0,r.kt)("inlineCode",{parentName:"p"},".NET 5")," \u4e2d\uff0c",(0,r.kt)("inlineCode",{parentName:"p"},"System.Text.Json")," \u5e76\u4e0d\u652f\u6301\u5904\u7406\u5faa\u73af\u5f15\u7528\u95ee\u9898\uff0c\u4ee5\u4e0a\u7684\u89e3\u51b3\u65b9\u6848\u4ec5\u9650\u7528\u4e8e ",(0,r.kt)("inlineCode",{parentName:"p"},".NET 6 Preview 2+"),"\u3002\ud83d\ude02"))),(0,r.kt)("p",null,"\u9700\u5f15\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"System.Text.Json")," \u547d\u540d\u7a7a\u95f4\u3002"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Newtonsoft.Json")," \u65b9\u5f0f")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"services.AddControllersWithViews()\n .AddNewtonsoftJson(options =>\n {\n options.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;\n });\n")),(0,r.kt)("h3",{id:"2355-\u5305\u542b\u6210\u5458\u5b57\u6bb5\u5e8f\u5217\u5316"},"23.5.5 \u5305\u542b\u6210\u5458\u5b57\u6bb5\u5e8f\u5217\u5316"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"System.Text.Json")," \u65b9\u5f0f")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"services.AddControllersWithViews()\n .AddJsonOptions(options =>\n {\n options.JsonSerializerOptions.IncludeFields = true;\n });\n")),(0,r.kt)("p",null,"\u9700\u5f15\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"System.Text.Json")," \u547d\u540d\u7a7a\u95f4\u3002"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Newtonsoft.Json")," \u65b9\u5f0f")),(0,r.kt)("p",null,"\u65e0\u9700\u914d\u7f6e\u3002"),(0,r.kt)("h3",{id:"2356-\u5141\u8bb8\u5c3e\u968f\u9017\u53f7"},"23.5.6 \u5141\u8bb8\u5c3e\u968f\u9017\u53f7"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"System.Text.Json")," \u65b9\u5f0f")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"services.AddControllersWithViews()\n .AddJsonOptions(options =>\n {\n options.JsonSerializerOptions.AllowTrailingCommas = true;\n });\n")),(0,r.kt)("p",null,"\u9700\u5f15\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"System.Text.Json")," \u547d\u540d\u7a7a\u95f4\u3002"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Newtonsoft.Json")," \u65b9\u5f0f")),(0,r.kt)("p",null,"\u65e0\u9700\u914d\u7f6e\u3002"),(0,r.kt)("h3",{id:"2357-\u5141\u8bb8\u6ce8\u91ca"},"23.5.7 \u5141\u8bb8\u6ce8\u91ca"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"System.Text.Json")," \u65b9\u5f0f")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"services.AddControllersWithViews()\n .AddJsonOptions(options =>\n {\n options.JsonSerializerOptions.ReadCommentHandling = JsonCommentHandling.Skip;\n });\n")),(0,r.kt)("p",null,"\u9700\u5f15\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"System.Text.Json")," \u547d\u540d\u7a7a\u95f4\u3002"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Newtonsoft.Json")," \u65b9\u5f0f")),(0,r.kt)("p",null,"\u65e0\u9700\u914d\u7f6e\u3002"),(0,r.kt)("h3",{id:"2358-\u5904\u7406\u4e71\u7801\u95ee\u9898"},"23.5.8 \u5904\u7406\u4e71\u7801\u95ee\u9898"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"System.Text.Json")," \u65b9\u5f0f")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"services.AddControllersWithViews()\n .AddJsonOptions(options =>\n {\n options.JsonSerializerOptions.Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping;\n });\n")),(0,r.kt)("p",null,"\u9700\u5f15\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"System.Text.Json")," \u547d\u540d\u7a7a\u95f4\u3002"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Newtonsoft.Json")," \u65b9\u5f0f")),(0,r.kt)("p",null,"\u65e0\u9700\u914d\u7f6e\u3002"),(0,r.kt)("h3",{id:"2359-\u4e0d\u533a\u5206\u5927\u5c0f\u5199"},"23.5.9 \u4e0d\u533a\u5206\u5927\u5c0f\u5199"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"System.Text.Json")," \u65b9\u5f0f")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"services.AddControllersWithViews()\n .AddJsonOptions(options =>\n {\n options.JsonSerializerOptions.PropertyNameCaseInsensitive = true;\n });\n")),(0,r.kt)("p",null,"\u9700\u5f15\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"System.Text.Json")," \u547d\u540d\u7a7a\u95f4\u3002"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"Newtonsoft.Json")," \u65b9\u5f0f")),(0,r.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u66f4\u591a\u5e8f\u5217\u5316\u914d\u7f6e")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u8fd9\u91cc\u53ea\u5217\u4e3e\u5e38\u7528\u89c1\u7684\u5e8f\u5217\u5316\u914d\u7f6e\uff0c\u5982\u9700\u67e5\u770b\u66f4\u591a\u914d\u7f6e\uff0c\u53ef\u67e5\u9605 ",(0,r.kt)("a",{parentName:"p",href:"https://docs.microsoft.com/zh-cn/dotnet/standard/serialization/system-text-json-configure-options?pivots=dotnet-5-0"},"System.Text.Json \u6587\u6863")))),(0,r.kt)("h2",{id:"236-datatable\u3001dataset\u3001tuple-\u5143\u7ec4\u7b49\u5e8f\u5217\u5316\u95ee\u9898"},"23.6 ",(0,r.kt)("inlineCode",{parentName:"h2"},"DataTable"),"\u3001",(0,r.kt)("inlineCode",{parentName:"h2"},"DataSet"),"\u3001",(0,r.kt)("inlineCode",{parentName:"h2"},"Tuple")," \u5143\u7ec4\u7b49\u5e8f\u5217\u5316\u95ee\u9898"),(0,r.kt)("p",null,"\u7531\u4e8e\u9ed8\u8ba4 ",(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u91c7\u7528 ",(0,r.kt)("inlineCode",{parentName:"p"},"System.Text.Json")," \u8fdb\u884c\u5e8f\u5217\u5316\uff0c\u4f46\u662f\u4e0d\u652f\u6301\u590d\u6742\u7c7b\u578b\uff0c\u5982 ",(0,r.kt)("inlineCode",{parentName:"p"},"DataTable")," \u3001 ",(0,r.kt)("inlineCode",{parentName:"p"},"DataSet"),"\u3001",(0,r.kt)("inlineCode",{parentName:"p"},"Tuple")," \u5143\u7ec4\uff0c\u6240\u4ee5\u9700\u8981\u66f4\u6362\u6210 ",(0,r.kt)("inlineCode",{parentName:"p"},"NewtonsoftJson")," \u5373\u53ef\uff0c\u89c1 ",(0,r.kt)("a",{parentName:"p",href:"./json-serialization#2351-%E8%87%AA%E5%AE%9A%E4%B9%89%E5%BA%8F%E5%88%97%E5%8C%96%E6%8F%90%E4%BE%9B%E5%99%A8"},"JSON \u5e8f\u5217\u5316 - 23.5.1 \u81ea\u5b9a\u4e49\u5e8f\u5217\u5316\u63d0\u4f9b\u5668")),(0,r.kt)("h2",{id:"237-systemtextjson-\u548c-newtonsoftjson-\u5b8c\u6574\u5dee\u5f02\u5316\u5bf9\u6bd4"},"23.7 ",(0,r.kt)("inlineCode",{parentName:"h2"},"System.Text.Json")," \u548c ",(0,r.kt)("inlineCode",{parentName:"h2"},"Newtonsoft.Json")," \u5b8c\u6574\u5dee\u5f02\u5316\u5bf9\u6bd4"),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://docs.microsoft.com/zh-cn/dotnet/standard/serialization/system-text-json-migrate-from-newtonsoft-how-to?pivots=dotnet-5-0"},"https://docs.microsoft.com/zh-cn/dotnet/standard/serialization/system-text-json-migrate-from-newtonsoft-how-to?pivots=dotnet-5-0")),(0,r.kt)("h2",{id:"238-\u53cd\u9988\u4e0e\u5efa\u8bae"},"23.8 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,r.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}c.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/edb1f2eb.99314b13.js b/handbook/build/assets/js/edb1f2eb.99314b13.js deleted file mode 100644 index 28780713501..00000000000 --- a/handbook/build/assets/js/edb1f2eb.99314b13.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[939],{3905:function(e,t,n){n.d(t,{Zo:function(){return s},kt:function(){return m}});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var d=r.createContext({}),c=function(e){var t=r.useContext(d),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},s=function(e){var t=c(e.components);return r.createElement(d.Provider,{value:t},e.children)},p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},u=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,l=e.originalType,d=e.parentName,s=o(e,["components","mdxType","originalType","parentName"]),u=c(n),m=a,k=u["".concat(d,".").concat(m)]||u[m]||p[m]||l;return n?r.createElement(k,i(i({ref:t},s),{},{components:n})):r.createElement(k,i({ref:t},s))}));function m(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var l=n.length,i=new Array(l);i[0]=u;var o={};for(var d in t)hasOwnProperty.call(t,d)&&(o[d]=t[d]);o.originalType=e,o.mdxType="string"==typeof e?e:a,i[1]=o;for(var c=2;cSql \u6a21\u677f",id:"9161-sql-\u6a21\u677f",children:[]},{value:"9.16.2 Sql \u6a21\u677f\u4f18\u7f3a\u70b9",id:"9162-sql-\u6a21\u677f\u4f18\u7f3a\u70b9",children:[{value:"9.16.2.1 \u4f18\u70b9",id:"91621-\u4f18\u70b9",children:[]},{value:"9.16.2.2 \u7f3a\u70b9",id:"91622-\u7f3a\u70b9",children:[]}]},{value:"9.16.3 \u5982\u4f55\u4f7f\u7528",id:"9163-\u5982\u4f55\u4f7f\u7528",children:[{value:"9.16.3.1 \u5e38\u89c4\u4f7f\u7528",id:"91631-\u5e38\u89c4\u4f7f\u7528",children:[]},{value:"9.16.3.2 \u9ad8\u7ea7\u5d4c\u5957",id:"91632-\u9ad8\u7ea7\u5d4c\u5957",children:[]}]},{value:"9.16.4 Sql \u6a21\u677f\u914d\u7f6e",id:"9164-sql-\u6a21\u677f\u914d\u7f6e",children:[{value:"9.16.4.1 \u666e\u901a\u6a21\u5f0f",id:"91641-\u666e\u901a\u6a21\u5f0f",children:[]},{value:"9.16.4.2 \u66f4\u591a\u914d\u7f6e",id:"91642-\u66f4\u591a\u914d\u7f6e",children:[]}]},{value:"9.16.5 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"9165-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],p={toc:s};function u(e){var t=e.components,n=(0,a.Z)(e,i);return(0,l.kt)("wrapper",(0,r.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,l.kt)("h2",{id:"9161-sql-\u6a21\u677f"},"9.16.1 ",(0,l.kt)("inlineCode",{parentName:"h2"},"Sql")," \u6a21\u677f"),(0,l.kt)("p",null,"\u901a\u5e38\u6211\u4eec\u7a0b\u5e8f\u4e2d\u6267\u884c\u6570\u636e\u5e93\u7684 ",(0,l.kt)("inlineCode",{parentName:"p"},"sql")," \u8bed\u53e5\u90fd\u5199\u5728\u4e86\u7a0b\u5e8f\u96c6\u4e2d\uff0c\u968f\u7a0b\u5e8f\u4e00\u8d77\u7f16\u8bd1\uff0c\u540e\u7eed\u9700\u8981\u4fee\u6539\uff0c\u5219\u91cd\u65b0\u7f16\u8bd1\u4ee3\u7801\u3002"),(0,l.kt)("p",null,"\u6240\u4ee5\uff0c",(0,l.kt)("inlineCode",{parentName:"p"},"Furion")," \u521b\u9020\u51fa\u4e00\u79cd ",(0,l.kt)("inlineCode",{parentName:"p"},"Sql")," \u6a21\u677f\u7684\u65b9\u5f0f\uff0c\u7a0b\u5e8f\u6267\u884c ",(0,l.kt)("inlineCode",{parentName:"p"},"Sql")," \u65f6\uff0c\u53ea\u9700\u8981\u4f7f\u7528\u7279\u6b8a\u6807\u8bb0\u5373\u53ef\uff1a",(0,l.kt)("inlineCode",{parentName:"p"},"#(\u6a21\u677fKey)"),"\uff0c\u8fd9\u4e9b\u771f\u5b9e\u7684 ",(0,l.kt)("inlineCode",{parentName:"p"},"Sql")," \u914d\u7f6e\u5728 ",(0,l.kt)("inlineCode",{parentName:"p"},".json")," \u6216 ",(0,l.kt)("inlineCode",{parentName:"p"},".xml")," \u914d\u7f6e\u6587\u4ef6\u4e2d\u3002"),(0,l.kt)("p",null,"\u5982\uff1a"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("strong",{parentName:"li"},"Json")," \u65b9\u5f0f")),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-json"},'{\n "Select.User": "select * from User where id > @id"\n}\n')),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("strong",{parentName:"li"},"Xml")," \u65b9\u5f0f")),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-xml"},'\n\n select * from User where id > @id\n\n')),(0,l.kt)("h2",{id:"9162-sql-\u6a21\u677f\u4f18\u7f3a\u70b9"},"9.16.2 ",(0,l.kt)("inlineCode",{parentName:"h2"},"Sql")," \u6a21\u677f\u4f18\u7f3a\u70b9"),(0,l.kt)("h3",{id:"91621-\u4f18\u70b9"},"9.16.2.1 \u4f18\u70b9"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"\u652f\u6301 ",(0,l.kt)("inlineCode",{parentName:"li"},"Sql")," \u52a8\u6001\u914d\u7f6e\uff0c\u53ef\u5728\u7a0b\u5e8f\u8fd0\u884c\u65f6\u52a8\u6001\u8c03\u914d ",(0,l.kt)("inlineCode",{parentName:"li"},"Sql")," \u8bed\u53e5"),(0,l.kt)("li",{parentName:"ul"},"\u652f\u6301\u7a0b\u5e8f ",(0,l.kt)("inlineCode",{parentName:"li"},"Sql")," \u8bed\u53e5\u52a0\u5bc6")),(0,l.kt)("h3",{id:"91622-\u7f3a\u70b9"},"9.16.2.2 \u7f3a\u70b9"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"\u9700\u589e\u52a0\u5bf9\u5e94\u914d\u7f6e\u6587\u4ef6"),(0,l.kt)("li",{parentName:"ul"},"\u4e0d\u5bb9\u6613\u8c03\u8bd5 ",(0,l.kt)("inlineCode",{parentName:"li"},"Sql")," \u4ee3\u7801")),(0,l.kt)("h2",{id:"9163-\u5982\u4f55\u4f7f\u7528"},"9.16.3 \u5982\u4f55\u4f7f\u7528"),(0,l.kt)("p",null,"\u5728\u6267\u884c ",(0,l.kt)("inlineCode",{parentName:"p"},"Sql")," \u7684\u65f6\u5019\uff0c\u53ea\u9700\u8981\u586b\u5199\u6307\u5b9a\u6a21\u677f\u5373\u53ef\u3002"),(0,l.kt)("h3",{id:"91631-\u5e38\u89c4\u4f7f\u7528"},"9.16.3.1 \u5e38\u89c4\u4f7f\u7528"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-cs"},'// \u4ed3\u50a8\u65b9\u5f0f\nvar users = repository.SqlQuery("#(Select.User)", new { id = 1});\n\n// \u61d2\u4eba\u65b9\u5f0f\nvar users = "#(Select.User)".SqlQuery(new { id = 1});\n\n// Sql \u4ee3\u7406\u65b9\u5f0f\n[SqlExecute("#(Select.User)")]\nList GetUser(int id);\n')),(0,l.kt)("h3",{id:"91632-\u9ad8\u7ea7\u5d4c\u5957"},"9.16.3.2 \u9ad8\u7ea7\u5d4c\u5957"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-cs"},'var users = repository.SqlQuery(\n@"select * from user u\nleft join #(User.Detail) d on u.Id = d.UserId\nwhere id > @id");\n')),(0,l.kt)("h2",{id:"9164-sql-\u6a21\u677f\u914d\u7f6e"},"9.16.4 ",(0,l.kt)("inlineCode",{parentName:"h2"},"Sql")," \u6a21\u677f\u914d\u7f6e"),(0,l.kt)("h3",{id:"91641-\u666e\u901a\u6a21\u5f0f"},"9.16.4.1 \u666e\u901a\u6a21\u5f0f"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-json"},'{\n "Select.User": "select * from User"\n}\n')),(0,l.kt)("h3",{id:"91642-\u66f4\u591a\u914d\u7f6e"},"9.16.4.2 \u66f4\u591a\u914d\u7f6e"),(0,l.kt)("div",{className:"admonition admonition-warning alert alert--danger"},(0,l.kt)("div",{parentName:"div",className:"admonition-heading"},(0,l.kt)("h5",{parentName:"div"},(0,l.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,l.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,l.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"}))),"\u529f\u80fd\u79fb\u9664\u58f0\u660e")),(0,l.kt)("div",{parentName:"div",className:"admonition-content"},(0,l.kt)("p",{parentName:"div"},"\u4ee5\u4e0b\u5185\u5bb9\u5728 ",(0,l.kt)("inlineCode",{parentName:"p"},"Furion 2.13 +")," \u7248\u672c\u4e2d\u5df2\u79fb\u9664\u3002"))),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-json"},'{\n "Select.User": {\n "Sql": "select * from User where id > @id and Name = @name",\n "Params": [\n {\n "Name": " Id",\n "Value": "1",\n "DbType": "Int16",\n "Size": 10\n },\n {\n "Name": " Name",\n "Value": "\u767e\u5c0f\u50e7",\n "DbType": "String",\n "Size": 10\n }\n ]\n }\n}\n')),(0,l.kt)("h2",{id:"9165-\u53cd\u9988\u4e0e\u5efa\u8bae"},"9.16.5 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,l.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,l.kt)("div",{parentName:"div",className:"admonition-heading"},(0,l.kt)("h5",{parentName:"div"},(0,l.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,l.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,l.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,l.kt)("div",{parentName:"div",className:"admonition-content"},(0,l.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,l.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/edb1f2eb.cf4bd91a.js b/handbook/build/assets/js/edb1f2eb.cf4bd91a.js new file mode 100644 index 00000000000..d51bd40b17e --- /dev/null +++ b/handbook/build/assets/js/edb1f2eb.cf4bd91a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[939],{3905:function(e,t,n){n.d(t,{Zo:function(){return s},kt:function(){return m}});var r=n(7294);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function i(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var d=r.createContext({}),c=function(e){var t=r.useContext(d),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},s=function(e){var t=c(e.components);return r.createElement(d.Provider,{value:t},e.children)},p={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},u=r.forwardRef((function(e,t){var n=e.components,a=e.mdxType,l=e.originalType,d=e.parentName,s=o(e,["components","mdxType","originalType","parentName"]),u=c(n),m=a,k=u["".concat(d,".").concat(m)]||u[m]||p[m]||l;return n?r.createElement(k,i(i({ref:t},s),{},{components:n})):r.createElement(k,i({ref:t},s))}));function m(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var l=n.length,i=new Array(l);i[0]=u;var o={};for(var d in t)hasOwnProperty.call(t,d)&&(o[d]=t[d]);o.originalType=e,o.mdxType="string"==typeof e?e:a,i[1]=o;for(var c=2;cSql \u6a21\u677f",id:"9161-sql-\u6a21\u677f",children:[]},{value:"9.16.2 Sql \u6a21\u677f\u4f18\u7f3a\u70b9",id:"9162-sql-\u6a21\u677f\u4f18\u7f3a\u70b9",children:[{value:"9.16.2.1 \u4f18\u70b9",id:"91621-\u4f18\u70b9",children:[]},{value:"9.16.2.2 \u7f3a\u70b9",id:"91622-\u7f3a\u70b9",children:[]}]},{value:"9.16.3 \u5982\u4f55\u4f7f\u7528",id:"9163-\u5982\u4f55\u4f7f\u7528",children:[{value:"9.16.3.1 \u5e38\u89c4\u4f7f\u7528",id:"91631-\u5e38\u89c4\u4f7f\u7528",children:[]},{value:"9.16.3.2 \u9ad8\u7ea7\u5d4c\u5957",id:"91632-\u9ad8\u7ea7\u5d4c\u5957",children:[]}]},{value:"9.16.4 Sql \u6a21\u677f\u914d\u7f6e",id:"9164-sql-\u6a21\u677f\u914d\u7f6e",children:[{value:"9.16.4.1 \u666e\u901a\u6a21\u5f0f",id:"91641-\u666e\u901a\u6a21\u5f0f",children:[]},{value:"9.16.4.2 \u66f4\u591a\u914d\u7f6e",id:"91642-\u66f4\u591a\u914d\u7f6e",children:[]}]},{value:"9.16.5 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"9165-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],p={toc:s};function u(e){var t=e.components,n=(0,a.Z)(e,i);return(0,l.kt)("wrapper",(0,r.Z)({},p,n,{components:t,mdxType:"MDXLayout"}),(0,l.kt)("h2",{id:"9161-sql-\u6a21\u677f"},"9.16.1 ",(0,l.kt)("inlineCode",{parentName:"h2"},"Sql")," \u6a21\u677f"),(0,l.kt)("p",null,"\u901a\u5e38\u6211\u4eec\u7a0b\u5e8f\u4e2d\u6267\u884c\u6570\u636e\u5e93\u7684 ",(0,l.kt)("inlineCode",{parentName:"p"},"sql")," \u8bed\u53e5\u90fd\u5199\u5728\u4e86\u7a0b\u5e8f\u96c6\u4e2d\uff0c\u968f\u7a0b\u5e8f\u4e00\u8d77\u7f16\u8bd1\uff0c\u540e\u7eed\u9700\u8981\u4fee\u6539\uff0c\u5219\u91cd\u65b0\u7f16\u8bd1\u4ee3\u7801\u3002"),(0,l.kt)("p",null,"\u6240\u4ee5\uff0c",(0,l.kt)("inlineCode",{parentName:"p"},"Furion")," \u521b\u9020\u51fa\u4e00\u79cd ",(0,l.kt)("inlineCode",{parentName:"p"},"Sql")," \u6a21\u677f\u7684\u65b9\u5f0f\uff0c\u7a0b\u5e8f\u6267\u884c ",(0,l.kt)("inlineCode",{parentName:"p"},"Sql")," \u65f6\uff0c\u53ea\u9700\u8981\u4f7f\u7528\u7279\u6b8a\u6807\u8bb0\u5373\u53ef\uff1a",(0,l.kt)("inlineCode",{parentName:"p"},"#(\u6a21\u677fKey)"),"\uff0c\u8fd9\u4e9b\u771f\u5b9e\u7684 ",(0,l.kt)("inlineCode",{parentName:"p"},"Sql")," \u914d\u7f6e\u5728 ",(0,l.kt)("inlineCode",{parentName:"p"},".json")," \u6216 ",(0,l.kt)("inlineCode",{parentName:"p"},".xml")," \u914d\u7f6e\u6587\u4ef6\u4e2d\u3002"),(0,l.kt)("p",null,"\u5982\uff1a"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("strong",{parentName:"li"},"Json")," \u65b9\u5f0f")),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-json"},'{\n "Select.User": "select * from User where id > @id"\n}\n')),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},(0,l.kt)("strong",{parentName:"li"},"Xml")," \u65b9\u5f0f")),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-xml"},'\n\n select * from User where id > @id\n\n')),(0,l.kt)("h2",{id:"9162-sql-\u6a21\u677f\u4f18\u7f3a\u70b9"},"9.16.2 ",(0,l.kt)("inlineCode",{parentName:"h2"},"Sql")," \u6a21\u677f\u4f18\u7f3a\u70b9"),(0,l.kt)("h3",{id:"91621-\u4f18\u70b9"},"9.16.2.1 \u4f18\u70b9"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"\u652f\u6301 ",(0,l.kt)("inlineCode",{parentName:"li"},"Sql")," \u52a8\u6001\u914d\u7f6e\uff0c\u53ef\u5728\u7a0b\u5e8f\u8fd0\u884c\u65f6\u52a8\u6001\u8c03\u914d ",(0,l.kt)("inlineCode",{parentName:"li"},"Sql")," \u8bed\u53e5"),(0,l.kt)("li",{parentName:"ul"},"\u652f\u6301\u7a0b\u5e8f ",(0,l.kt)("inlineCode",{parentName:"li"},"Sql")," \u8bed\u53e5\u52a0\u5bc6")),(0,l.kt)("h3",{id:"91622-\u7f3a\u70b9"},"9.16.2.2 \u7f3a\u70b9"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"\u9700\u589e\u52a0\u5bf9\u5e94\u914d\u7f6e\u6587\u4ef6"),(0,l.kt)("li",{parentName:"ul"},"\u4e0d\u5bb9\u6613\u8c03\u8bd5 ",(0,l.kt)("inlineCode",{parentName:"li"},"Sql")," \u4ee3\u7801")),(0,l.kt)("h2",{id:"9163-\u5982\u4f55\u4f7f\u7528"},"9.16.3 \u5982\u4f55\u4f7f\u7528"),(0,l.kt)("p",null,"\u5728\u6267\u884c ",(0,l.kt)("inlineCode",{parentName:"p"},"Sql")," \u7684\u65f6\u5019\uff0c\u53ea\u9700\u8981\u586b\u5199\u6307\u5b9a\u6a21\u677f\u5373\u53ef\u3002"),(0,l.kt)("h3",{id:"91631-\u5e38\u89c4\u4f7f\u7528"},"9.16.3.1 \u5e38\u89c4\u4f7f\u7528"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-cs"},'// \u4ed3\u50a8\u65b9\u5f0f\nvar users = repository.SqlQuery("#(Select.User)", new { id = 1});\n\n// \u61d2\u4eba\u65b9\u5f0f\nvar users = "#(Select.User)".SqlQuery(new { id = 1});\n\n// Sql \u4ee3\u7406\u65b9\u5f0f\n[SqlExecute("#(Select.User)")]\nList GetUser(int id);\n')),(0,l.kt)("h3",{id:"91632-\u9ad8\u7ea7\u5d4c\u5957"},"9.16.3.2 \u9ad8\u7ea7\u5d4c\u5957"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-cs"},'var users = repository.SqlQuery(\n@"select * from user u\nleft join #(User.Detail) d on u.Id = d.UserId\nwhere id > @id");\n')),(0,l.kt)("h2",{id:"9164-sql-\u6a21\u677f\u914d\u7f6e"},"9.16.4 ",(0,l.kt)("inlineCode",{parentName:"h2"},"Sql")," \u6a21\u677f\u914d\u7f6e"),(0,l.kt)("h3",{id:"91641-\u666e\u901a\u6a21\u5f0f"},"9.16.4.1 \u666e\u901a\u6a21\u5f0f"),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-json"},'{\n "Select.User": "select * from User"\n}\n')),(0,l.kt)("h3",{id:"91642-\u66f4\u591a\u914d\u7f6e"},"9.16.4.2 \u66f4\u591a\u914d\u7f6e"),(0,l.kt)("div",{className:"admonition admonition-warning alert alert--danger"},(0,l.kt)("div",{parentName:"div",className:"admonition-heading"},(0,l.kt)("h5",{parentName:"div"},(0,l.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,l.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,l.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M5.05.31c.81 2.17.41 3.38-.52 4.31C3.55 5.67 1.98 6.45.9 7.98c-1.45 2.05-1.7 6.53 3.53 7.7-2.2-1.16-2.67-4.52-.3-6.61-.61 2.03.53 3.33 1.94 2.86 1.39-.47 2.3.53 2.27 1.67-.02.78-.31 1.44-1.13 1.81 3.42-.59 4.78-3.42 4.78-5.56 0-2.84-2.53-3.22-1.25-5.61-1.52.13-2.03 1.13-1.89 2.75.09 1.08-1.02 1.8-1.86 1.33-.67-.41-.66-1.19-.06-1.78C8.18 5.31 8.68 2.45 5.05.32L5.03.3l.02.01z"}))),"\u529f\u80fd\u79fb\u9664\u58f0\u660e")),(0,l.kt)("div",{parentName:"div",className:"admonition-content"},(0,l.kt)("p",{parentName:"div"},"\u4ee5\u4e0b\u5185\u5bb9\u5728 ",(0,l.kt)("inlineCode",{parentName:"p"},"Furion 2.13 +")," \u7248\u672c\u4e2d\u5df2\u79fb\u9664\u3002"))),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-json"},'{\n "Select.User": {\n "Sql": "select * from User where id > @id and Name = @name",\n "Params": [\n {\n "Name": " Id",\n "Value": "1",\n "DbType": "Int16",\n "Size": 10\n },\n {\n "Name": " Name",\n "Value": "\u767e\u5c0f\u50e7",\n "DbType": "String",\n "Size": 10\n }\n ]\n }\n}\n')),(0,l.kt)("h2",{id:"9165-\u53cd\u9988\u4e0e\u5efa\u8bae"},"9.16.5 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,l.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,l.kt)("div",{parentName:"div",className:"admonition-heading"},(0,l.kt)("h5",{parentName:"div"},(0,l.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,l.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,l.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,l.kt)("div",{parentName:"div",className:"admonition-content"},(0,l.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,l.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/f19ef3db.1578bd6d.js b/handbook/build/assets/js/f19ef3db.1578bd6d.js new file mode 100644 index 00000000000..8ad789fa322 --- /dev/null +++ b/handbook/build/assets/js/f19ef3db.1578bd6d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[9300],{6876:function(t){t.exports=JSON.parse('{"allTagsPath":"/furion/blog/tags","slug":"/furion/blog/tags/httpcontext","name":"httpcontext","count":1,"permalink":"/furion/blog/tags/httpcontext"}')}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/f19ef3db.73e2f573.js b/handbook/build/assets/js/f19ef3db.73e2f573.js deleted file mode 100644 index 02a15b2c33c..00000000000 --- a/handbook/build/assets/js/f19ef3db.73e2f573.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[9300],{6876:function(t){t.exports=JSON.parse('{"allTagsPath":"/furion/blog/tags","slug":"httpcontext","name":"httpcontext","count":1,"permalink":"/furion/blog/tags/httpcontext"}')}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/f1c506f3.0fba08ab.js b/handbook/build/assets/js/f1c506f3.0fba08ab.js deleted file mode 100644 index b5377fab7bc..00000000000 --- a/handbook/build/assets/js/f1c506f3.0fba08ab.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[6918],{3905:function(e,n,t){t.d(n,{Zo:function(){return d},kt:function(){return m}});var i=t(7294);function r(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function a(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);n&&(i=i.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,i)}return t}function o(e){for(var n=1;n=0||(r[t]=e[t]);return r}(e,n);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var c=i.createContext({}),p=function(e){var n=i.useContext(c),t=n;return e&&(t="function"==typeof e?e(n):o(o({},n),e)),t},d=function(e){var n=p(e.components);return i.createElement(c.Provider,{value:n},e.children)},s={inlineCode:"code",wrapper:function(e){var n=e.children;return i.createElement(i.Fragment,{},n)}},u=i.forwardRef((function(e,n){var t=e.components,r=e.mdxType,a=e.originalType,c=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),u=p(t),m=r,f=u["".concat(c,".").concat(m)]||u[m]||s[m]||a;return t?i.createElement(f,o(o({ref:n},d),{},{components:t})):i.createElement(f,o({ref:n},d))}));function m(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var a=t.length,o=new Array(a);o[0]=u;var l={};for(var c in n)hasOwnProperty.call(n,c)&&(l[c]=n[c]);l.originalType=e,l.mdxType="string"==typeof e?e:r,o[1]=l;for(var p=2;p=0||(r[t]=e[t]);return r}(e,n);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var c=i.createContext({}),p=function(e){var n=i.useContext(c),t=n;return e&&(t="function"==typeof e?e(n):o(o({},n),e)),t},d=function(e){var n=p(e.components);return i.createElement(c.Provider,{value:n},e.children)},s={inlineCode:"code",wrapper:function(e){var n=e.children;return i.createElement(i.Fragment,{},n)}},u=i.forwardRef((function(e,n){var t=e.components,r=e.mdxType,a=e.originalType,c=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),u=p(t),m=r,f=u["".concat(c,".").concat(m)]||u[m]||s[m]||a;return t?i.createElement(f,o(o({ref:n},d),{},{components:t})):i.createElement(f,o({ref:n},d))}));function m(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var a=t.length,o=new Array(a);o[0]=u;var l={};for(var c in n)hasOwnProperty.call(n,c)&&(l[c]=n[c]);l.originalType=e,l.mdxType="string"==typeof e?e:r,o[1]=l;for(var p=2;p=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var p=a.createContext({}),c=function(e){var t=a.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},d=function(e){var t=c(e.components);return a.createElement(p.Provider,{value:t},e.children)},m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},s=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,p=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),s=c(n),u=r,k=s["".concat(p,".").concat(u)]||s[u]||m[u]||i;return n?a.createElement(k,o(o({ref:t},d),{},{components:n})):a.createElement(k,o({ref:t},d))}));function u(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,o=new Array(i);o[0]=s;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l.mdxType="string"==typeof e?e:r,o[1]=l;for(var c=2;cDocker \u90e8\u7f72",id:"3421-\u5173\u4e8e-docker-\u90e8\u7f72",children:[]},{value:"34.2.2 \u4e24\u79cd\u65b9\u5f0f\u6784\u5efa",id:"3422-\u4e24\u79cd\u65b9\u5f0f\u6784\u5efa",children:[{value:"34.2.2.1 \u53d1\u5e03\u540e\u6784\u5efa",id:"34221-\u53d1\u5e03\u540e\u6784\u5efa",children:[]},{value:"34.2.2.2 \u7f16\u8bd1+\u6784\u5efa+\u53d1\u5e03",id:"34222-\u7f16\u8bd1\u6784\u5efa\u53d1\u5e03",children:[]}]},{value:"34.2.3 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"3423-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],m={toc:d};function s(e){var t=e.components,n=(0,r.Z)(e,o);return(0,i.kt)("wrapper",(0,a.Z)({},m,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u7cbe\u7b80\u53d1\u5e03\u6587\u4ef6")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u5982\u679c\u9700\u8981\u7cbe\u7b80\u53d1\u5e03\u540e\u7684\u6587\u4ef6\uff0c\u4e5f\u5c31\u662f\u5220\u9664\u4e0d\u5fc5\u8981\u7684\u6587\u4ef6\u5939\uff0c\u53ef\u4ee5\u7f16\u8f91 Web \u9879\u76ee\u7684 ",(0,i.kt)("inlineCode",{parentName:"p"},".csproj")," \u5e76\u6dfb\u52a0 ",(0,i.kt)("inlineCode",{parentName:"p"},"en-US"),"\uff0c\u5982\uff1a"),(0,i.kt)("pre",{parentName:"div"},(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{3}","{3}":!0},"\n net5.0\n en-US\n\n")))),(0,i.kt)("h2",{id:"3421-\u5173\u4e8e-docker-\u90e8\u7f72"},"34.2.1 \u5173\u4e8e ",(0,i.kt)("inlineCode",{parentName:"h2"},"Docker")," \u90e8\u7f72"),(0,i.kt)("p",null,"\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Docker")," \u4e2d\u90e8\u7f72\u7f51\u7ad9\u6709\u4e24\u79cd\u65b9\u5f0f\uff1a"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"\u53d1\u5e03\u540e\u6784\u5efa"),"\uff1a\u6b64\u65b9\u5f0f\u662f\u5148\u53d1\u5e03\u7f51\u7ad9\u540e\u5728\u518d\u6784\u5efa\u955c\u50cf\uff0c\u8fd9\u6837\u53ef\u4ee5\u51cf\u5c11\u4e0d\u5fc5\u8981\u7684\u6784\u5efa\u5c42\uff0c\u800c\u4e14\u8fd8\u80fd\u7f29\u51cf\u955c\u50cf\u5927\u5c0f\u3002",(0,i.kt)("strong",{parentName:"li"},"\uff08\u63a8\u8350\uff09")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"\u7f16\u8bd1+\u6784\u5efa+\u53d1\u5e03"),"\uff1a\u4e5f\u5c31\u662f\u8bf4\u5728 ",(0,i.kt)("inlineCode",{parentName:"li"},"Dockerfile")," \u4e2d\u914d\u7f6e\u7f51\u7ad9\u4ece\u6784\u5efa\u5230\u53d1\u5e03\u7684\u5b8c\u6574\u8fc7\u7a0b\uff0c\u6b64\u65b9\u5f0f\u4f1a\u901f\u5ea6\u6162\uff0c\u800c\u4e14\u4f1a\u4ea7\u751f\u5197\u4f59\u5c42\uff0c\u589e\u52a0\u955c\u50cf\u5927\u5c0f\u3002")),(0,i.kt)("h2",{id:"3422-\u4e24\u79cd\u65b9\u5f0f\u6784\u5efa"},"34.2.2 \u4e24\u79cd\u65b9\u5f0f\u6784\u5efa"),(0,i.kt)("h3",{id:"34221-\u53d1\u5e03\u540e\u6784\u5efa"},"34.2.2.1 \u53d1\u5e03\u540e\u6784\u5efa"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"\ud83d\udc49 \u53d1\u5e03\u7f51\u7ad9")),(0,i.kt)("p",null,"\u9996\u5148\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Visual Studio")," \u6216 ",(0,i.kt)("inlineCode",{parentName:"p"},"dotnet cli")," \u4e2d\u53d1\u5e03\u7f51\u7ad9\uff0c\u53ef\u4ee5\u53c2\u8003 ",(0,i.kt)("a",{parentName:"p",href:"deploy-iis#2611-%E5%8F%91%E5%B8%83%E7%BD%91%E7%AB%99"},"\u5728 IIS \u90e8\u7f72-\u53d1\u5e03\u7f51\u7ad9")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"\ud83d\udc49 \u7f16\u5199 ",(0,i.kt)("inlineCode",{parentName:"li"},"Dockerfile"))),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},'FROM mcr.microsoft.com/dotnet/aspnet:5.0.9\nWORKDIR /app\nEXPOSE 80\nEXPOSE 443\n\nCOPY . .\nENTRYPOINT ["dotnet", "Furion.Web.Entry.dll"]\n')),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"\ud83d\udc49 \u5c06 ",(0,i.kt)("inlineCode",{parentName:"li"},"Dockerfile")," \u6587\u4ef6\u62f7\u8d1d\u5230\u53d1\u5e03\u6839\u76ee\u5f55")),(0,i.kt)("p",null,"\u5c06\u7f16\u5199\u597d\u7684 ",(0,i.kt)("inlineCode",{parentName:"p"},"Dockerfile")," \u6587\u4ef6\uff08\u6ce8\u610f ",(0,i.kt)("inlineCode",{parentName:"p"},"D")," \u5927\u5199\uff09\u62f7\u8d1d\u5230\u53d1\u5e03\u7f51\u7ad9\u7684\u6839\u76ee\u5f55\u4e0b\u3002"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"\ud83d\udc49 \u6784\u5efa ",(0,i.kt)("inlineCode",{parentName:"li"},"Docker")," \u955c\u50cf")),(0,i.kt)("p",null,"\u5728\u7f51\u7ad9\u53d1\u5e03\u540e\u7684\u8def\u5f84\u6839\u76ee\u5f55\u4e0b\uff08\u5fc5\u987b\u542b ",(0,i.kt)("inlineCode",{parentName:"p"},"Dockerfile"),"\uff09\u6253\u5f00 ",(0,i.kt)("inlineCode",{parentName:"p"},"CMD/PowerShell")," \u53ea\u9700\u6784\u5efa\u547d\u4ee4\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"docker build -t \u7f51\u7ad9\u540d\u79f0:\u7f51\u7ad9\u7248\u672c\u53f7 .\n")),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u6ce8\u610f")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u540e\u7aef\u7684 ",(0,i.kt)("inlineCode",{parentName:"p"},".")," \u4e0d\u80fd\u7701\u7565"))),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"\ud83d\udc49 \u542f\u52a8\u955c\u50cf")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"docker run --name \u5bb9\u5668\u540d\u79f0 -p 5000:80 --restart=always -d \u7f51\u7ad9\u540d\u79f0:\u7f51\u7ad9\u7248\u672c\u53f7\n")),(0,i.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u53d1\u5e03\u5230 ",(0,i.kt)("inlineCode",{parentName:"h5"},"hub.docker.com"))),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u5982\u679c\u9700\u8981\u5c06\u8be5\u7f51\u7ad9\u7684\u955c\u50cf\u516c\u5f00\u51fa\u53bb\uff0c\u90a3\u4e48\u53ef\u4ee5\u53d1\u5e03\u5230 ",(0,i.kt)("inlineCode",{parentName:"p"},"hub.docker.com")," \u4e2d\u3002\u53d1\u5e03\u6b65\u9aa4\u5982\u4e0b\uff1a"),(0,i.kt)("ul",{parentName:"div"},(0,i.kt)("li",{parentName:"ul"},"\ud83d\udc49 \u4e3a\u955c\u50cf\u6253 ",(0,i.kt)("inlineCode",{parentName:"li"},"tag")," \u6807\u7b7e")),(0,i.kt)("pre",{parentName:"div"},(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"docker tag \u7f51\u7ad9\u540d\u79f0:\u7f51\u7ad9\u7248\u672c\u53f7 docker\u8d26\u53f7\u540d/\u7f51\u7ad9\u540d\u79f0:\u7f51\u7ad9\u7248\u672c\u53f7\n")),(0,i.kt)("p",{parentName:"div"},"\u5982\uff1a"),(0,i.kt)("pre",{parentName:"div"},(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"docker tag furion:v2.19.0 monksoul/furion:v2.19.0\n")),(0,i.kt)("ul",{parentName:"div"},(0,i.kt)("li",{parentName:"ul"},"\ud83d\udc49 \u767b\u5f55 ",(0,i.kt)("inlineCode",{parentName:"li"},"docker"))),(0,i.kt)("pre",{parentName:"div"},(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"docker login\n")),(0,i.kt)("ul",{parentName:"div"},(0,i.kt)("li",{parentName:"ul"},"\ud83d\udc49 \u63a8\u9001\u5230 ",(0,i.kt)("inlineCode",{parentName:"li"},"hub.docker.com"))),(0,i.kt)("pre",{parentName:"div"},(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"docker push docker\u8d26\u53f7\u540d/\u7f51\u7ad9\u540d\u79f0:\u7f51\u7ad9\u7248\u672c\u53f7\n")),(0,i.kt)("p",{parentName:"div"},"\u5982\uff1a"),(0,i.kt)("pre",{parentName:"div"},(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"docker push monksoul/furion:v2.19.0\n")))),(0,i.kt)("h3",{id:"34222-\u7f16\u8bd1\u6784\u5efa\u53d1\u5e03"},"34.2.2.2 \u7f16\u8bd1+\u6784\u5efa+\u53d1\u5e03"),(0,i.kt)("p",null,"\u6b64\u65b9\u5f0f\u53ef\u4ee5\u5077\u61d2\uff0c\u4f46\u662f\u4e0d\u592a\u63a8\u8350\uff0c\u4e0d\u8fc7\u5728\u67d0\u4e9b\u573a\u666f\u4e0b\u975e\u5e38\u6709\u7528\uff0c\u5c31\u662f\u96c6\u6210 ",(0,i.kt)("inlineCode",{parentName:"p"},"Devops")," \u5de5\u5177\u94fe\u53ef\u4ee5\u505a\u5230\u4e00\u6b65\u5230\u4f4d\u3002"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"\ud83d\udc49 \u7f16\u5199 ",(0,i.kt)("inlineCode",{parentName:"li"},"Dockerfile"))),(0,i.kt)("p",null,"\u8fd9\u79cd\u65b9\u5f0f\u53ea\u9700\u8981\u628a ",(0,i.kt)("inlineCode",{parentName:"p"},"Dockerfile")," \u5185\u5bb9\u66ff\u6362\u6210\u4ee5\u4e0b\u5373\u53ef\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash",metastring:"{6}","{6}":!0},'FROM mcr.microsoft.com/dotnet/sdk:5.0.9 AS build\nWORKDIR /source\n\n# Download Source\nRUN git init\nRUN git remote add -t master -m master origin \u4f60\u7684\u6e90\u7801Git\u5730\u5740\nRUN git config core.sparseCheckout true\nRUN echo samples >> .git/info/sparse-checkout\nRUN git pull --depth 1 origin main\n\n# Restore And Publish\nWORKDIR /source/samples\nRUN dotnet restore\nRUN dotnet publish -c release -o /app --no-restore\n\n# Run\nFROM mcr.microsoft.com/dotnet/aspnet:5.0.9\nWORKDIR /app\nCOPY --from=build /app ./\nEXPOSE 80\nEXPOSE 443\nENTRYPOINT ["dotnet", "Furion.Web.Entry.dll"]\n')),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"\ud83d\udc49 \u5728 ",(0,i.kt)("inlineCode",{parentName:"li"},"Dockerfile")," \u6240\u5728\u8def\u5f84\u6784\u5efa")),(0,i.kt)("p",null,"\u63a5\u4e0b\u6765\u7684\u6b65\u9aa4\u548c\u4e0a\u8ff0\u6b65\u9aa4\u4e00\u81f4\uff0c\u4e0d\u518d\u91cd\u590d\u7f16\u5199"),(0,i.kt)("h2",{id:"3423-\u53cd\u9988\u4e0e\u5efa\u8bae"},"34.2.3 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,i.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/f2131000.b0e2316b.js b/handbook/build/assets/js/f2131000.b0e2316b.js deleted file mode 100644 index 4ff14b38c8c..00000000000 --- a/handbook/build/assets/js/f2131000.b0e2316b.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[7990],{3905:function(e,t,n){n.d(t,{Zo:function(){return d},kt:function(){return u}});var a=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function o(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var p=a.createContext({}),c=function(e){var t=a.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},d=function(e){var t=c(e.components);return a.createElement(p.Provider,{value:t},e.children)},m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},s=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,i=e.originalType,p=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),s=c(n),u=r,k=s["".concat(p,".").concat(u)]||s[u]||m[u]||i;return n?a.createElement(k,o(o({ref:t},d),{},{components:n})):a.createElement(k,o({ref:t},d))}));function u(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=n.length,o=new Array(i);o[0]=s;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l.mdxType="string"==typeof e?e:r,o[1]=l;for(var c=2;cDocker \u90e8\u7f72",id:"3421-\u5173\u4e8e-docker-\u90e8\u7f72",children:[]},{value:"34.2.2 \u4e24\u79cd\u65b9\u5f0f\u6784\u5efa",id:"3422-\u4e24\u79cd\u65b9\u5f0f\u6784\u5efa",children:[{value:"34.2.2.1 \u53d1\u5e03\u540e\u6784\u5efa",id:"34221-\u53d1\u5e03\u540e\u6784\u5efa",children:[]},{value:"34.2.2.2 \u7f16\u8bd1+\u6784\u5efa+\u53d1\u5e03",id:"34222-\u7f16\u8bd1\u6784\u5efa\u53d1\u5e03",children:[]}]},{value:"34.2.3 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"3423-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],m={toc:d};function s(e){var t=e.components,n=(0,r.Z)(e,o);return(0,i.kt)("wrapper",(0,a.Z)({},m,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u7cbe\u7b80\u53d1\u5e03\u6587\u4ef6")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u5982\u679c\u9700\u8981\u7cbe\u7b80\u53d1\u5e03\u540e\u7684\u6587\u4ef6\uff0c\u4e5f\u5c31\u662f\u5220\u9664\u4e0d\u5fc5\u8981\u7684\u6587\u4ef6\u5939\uff0c\u53ef\u4ee5\u7f16\u8f91 Web \u9879\u76ee\u7684 ",(0,i.kt)("inlineCode",{parentName:"p"},".csproj")," \u5e76\u6dfb\u52a0 ",(0,i.kt)("inlineCode",{parentName:"p"},"en-US"),"\uff0c\u5982\uff1a"),(0,i.kt)("pre",{parentName:"div"},(0,i.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{3}","{3}":!0},"\n net5.0\n en-US\n\n")))),(0,i.kt)("h2",{id:"3421-\u5173\u4e8e-docker-\u90e8\u7f72"},"34.2.1 \u5173\u4e8e ",(0,i.kt)("inlineCode",{parentName:"h2"},"Docker")," \u90e8\u7f72"),(0,i.kt)("p",null,"\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Docker")," \u4e2d\u90e8\u7f72\u7f51\u7ad9\u6709\u4e24\u79cd\u65b9\u5f0f\uff1a"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"\u53d1\u5e03\u540e\u6784\u5efa"),"\uff1a\u6b64\u65b9\u5f0f\u662f\u5148\u53d1\u5e03\u7f51\u7ad9\u540e\u5728\u518d\u6784\u5efa\u955c\u50cf\uff0c\u8fd9\u6837\u53ef\u4ee5\u51cf\u5c11\u4e0d\u5fc5\u8981\u7684\u6784\u5efa\u5c42\uff0c\u800c\u4e14\u8fd8\u80fd\u7f29\u51cf\u955c\u50cf\u5927\u5c0f\u3002",(0,i.kt)("strong",{parentName:"li"},"\uff08\u63a8\u8350\uff09")),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"\u7f16\u8bd1+\u6784\u5efa+\u53d1\u5e03"),"\uff1a\u4e5f\u5c31\u662f\u8bf4\u5728 ",(0,i.kt)("inlineCode",{parentName:"li"},"Dockerfile")," \u4e2d\u914d\u7f6e\u7f51\u7ad9\u4ece\u6784\u5efa\u5230\u53d1\u5e03\u7684\u5b8c\u6574\u8fc7\u7a0b\uff0c\u6b64\u65b9\u5f0f\u4f1a\u901f\u5ea6\u6162\uff0c\u800c\u4e14\u4f1a\u4ea7\u751f\u5197\u4f59\u5c42\uff0c\u589e\u52a0\u955c\u50cf\u5927\u5c0f\u3002")),(0,i.kt)("h2",{id:"3422-\u4e24\u79cd\u65b9\u5f0f\u6784\u5efa"},"34.2.2 \u4e24\u79cd\u65b9\u5f0f\u6784\u5efa"),(0,i.kt)("h3",{id:"34221-\u53d1\u5e03\u540e\u6784\u5efa"},"34.2.2.1 \u53d1\u5e03\u540e\u6784\u5efa"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"\ud83d\udc49 \u53d1\u5e03\u7f51\u7ad9")),(0,i.kt)("p",null,"\u9996\u5148\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Visual Studio")," \u6216 ",(0,i.kt)("inlineCode",{parentName:"p"},"dotnet cli")," \u4e2d\u53d1\u5e03\u7f51\u7ad9\uff0c\u53ef\u4ee5\u53c2\u8003 ",(0,i.kt)("a",{parentName:"p",href:"deploy-iis#2611-%E5%8F%91%E5%B8%83%E7%BD%91%E7%AB%99"},"\u5728 IIS \u90e8\u7f72-\u53d1\u5e03\u7f51\u7ad9")),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"\ud83d\udc49 \u7f16\u5199 ",(0,i.kt)("inlineCode",{parentName:"li"},"Dockerfile"))),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},'FROM mcr.microsoft.com/dotnet/aspnet:5.0.9\nWORKDIR /app\nEXPOSE 80\nEXPOSE 443\n\nCOPY . .\nENTRYPOINT ["dotnet", "Furion.Web.Entry.dll"]\n')),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"\ud83d\udc49 \u5c06 ",(0,i.kt)("inlineCode",{parentName:"li"},"Dockerfile")," \u6587\u4ef6\u62f7\u8d1d\u5230\u53d1\u5e03\u6839\u76ee\u5f55")),(0,i.kt)("p",null,"\u5c06\u7f16\u5199\u597d\u7684 ",(0,i.kt)("inlineCode",{parentName:"p"},"Dockerfile")," \u6587\u4ef6\uff08\u6ce8\u610f ",(0,i.kt)("inlineCode",{parentName:"p"},"D")," \u5927\u5199\uff09\u62f7\u8d1d\u5230\u53d1\u5e03\u7f51\u7ad9\u7684\u6839\u76ee\u5f55\u4e0b\u3002"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"\ud83d\udc49 \u6784\u5efa ",(0,i.kt)("inlineCode",{parentName:"li"},"Docker")," \u955c\u50cf")),(0,i.kt)("p",null,"\u5728\u7f51\u7ad9\u53d1\u5e03\u540e\u7684\u8def\u5f84\u6839\u76ee\u5f55\u4e0b\uff08\u5fc5\u987b\u542b ",(0,i.kt)("inlineCode",{parentName:"p"},"Dockerfile"),"\uff09\u6253\u5f00 ",(0,i.kt)("inlineCode",{parentName:"p"},"CMD/PowerShell")," \u53ea\u9700\u6784\u5efa\u547d\u4ee4\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"docker build -t \u7f51\u7ad9\u540d\u79f0:\u7f51\u7ad9\u7248\u672c\u53f7 .\n")),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u6ce8\u610f")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u540e\u7aef\u7684 ",(0,i.kt)("inlineCode",{parentName:"p"},".")," \u4e0d\u80fd\u7701\u7565"))),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"\ud83d\udc49 \u542f\u52a8\u955c\u50cf")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"docker run --name \u5bb9\u5668\u540d\u79f0 -p 5000:80 --restart=always -d \u7f51\u7ad9\u540d\u79f0:\u7f51\u7ad9\u7248\u672c\u53f7\n")),(0,i.kt)("div",{className:"admonition admonition-tip alert alert--success"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"12",height:"16",viewBox:"0 0 12 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"}))),"\u53d1\u5e03\u5230 ",(0,i.kt)("inlineCode",{parentName:"h5"},"hub.docker.com"))),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u5982\u679c\u9700\u8981\u5c06\u8be5\u7f51\u7ad9\u7684\u955c\u50cf\u516c\u5f00\u51fa\u53bb\uff0c\u90a3\u4e48\u53ef\u4ee5\u53d1\u5e03\u5230 ",(0,i.kt)("inlineCode",{parentName:"p"},"hub.docker.com")," \u4e2d\u3002\u53d1\u5e03\u6b65\u9aa4\u5982\u4e0b\uff1a"),(0,i.kt)("ul",{parentName:"div"},(0,i.kt)("li",{parentName:"ul"},"\ud83d\udc49 \u4e3a\u955c\u50cf\u6253 ",(0,i.kt)("inlineCode",{parentName:"li"},"tag")," \u6807\u7b7e")),(0,i.kt)("pre",{parentName:"div"},(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"docker tag \u7f51\u7ad9\u540d\u79f0:\u7f51\u7ad9\u7248\u672c\u53f7 docker\u8d26\u53f7\u540d/\u7f51\u7ad9\u540d\u79f0:\u7f51\u7ad9\u7248\u672c\u53f7\n")),(0,i.kt)("p",{parentName:"div"},"\u5982\uff1a"),(0,i.kt)("pre",{parentName:"div"},(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"docker tag furion:v2.18.7 monksoul/furion:v2.18.7\n")),(0,i.kt)("ul",{parentName:"div"},(0,i.kt)("li",{parentName:"ul"},"\ud83d\udc49 \u767b\u5f55 ",(0,i.kt)("inlineCode",{parentName:"li"},"docker"))),(0,i.kt)("pre",{parentName:"div"},(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"docker login\n")),(0,i.kt)("ul",{parentName:"div"},(0,i.kt)("li",{parentName:"ul"},"\ud83d\udc49 \u63a8\u9001\u5230 ",(0,i.kt)("inlineCode",{parentName:"li"},"hub.docker.com"))),(0,i.kt)("pre",{parentName:"div"},(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"docker push docker\u8d26\u53f7\u540d/\u7f51\u7ad9\u540d\u79f0:\u7f51\u7ad9\u7248\u672c\u53f7\n")),(0,i.kt)("p",{parentName:"div"},"\u5982\uff1a"),(0,i.kt)("pre",{parentName:"div"},(0,i.kt)("code",{parentName:"pre",className:"language-bash"},"docker push monksoul/furion:v2.18.7\n")))),(0,i.kt)("h3",{id:"34222-\u7f16\u8bd1\u6784\u5efa\u53d1\u5e03"},"34.2.2.2 \u7f16\u8bd1+\u6784\u5efa+\u53d1\u5e03"),(0,i.kt)("p",null,"\u6b64\u65b9\u5f0f\u53ef\u4ee5\u5077\u61d2\uff0c\u4f46\u662f\u4e0d\u592a\u63a8\u8350\uff0c\u4e0d\u8fc7\u5728\u67d0\u4e9b\u573a\u666f\u4e0b\u975e\u5e38\u6709\u7528\uff0c\u5c31\u662f\u96c6\u6210 ",(0,i.kt)("inlineCode",{parentName:"p"},"Devops")," \u5de5\u5177\u94fe\u53ef\u4ee5\u505a\u5230\u4e00\u6b65\u5230\u4f4d\u3002"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"\ud83d\udc49 \u7f16\u5199 ",(0,i.kt)("inlineCode",{parentName:"li"},"Dockerfile"))),(0,i.kt)("p",null,"\u8fd9\u79cd\u65b9\u5f0f\u53ea\u9700\u8981\u628a ",(0,i.kt)("inlineCode",{parentName:"p"},"Dockerfile")," \u5185\u5bb9\u66ff\u6362\u6210\u4ee5\u4e0b\u5373\u53ef\uff1a"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-bash",metastring:"{6}","{6}":!0},'FROM mcr.microsoft.com/dotnet/sdk:5.0.9 AS build\nWORKDIR /source\n\n# Download Source\nRUN git init\nRUN git remote add -t master -m master origin \u4f60\u7684\u6e90\u7801Git\u5730\u5740\nRUN git config core.sparseCheckout true\nRUN echo samples >> .git/info/sparse-checkout\nRUN git pull --depth 1 origin main\n\n# Restore And Publish\nWORKDIR /source/samples\nRUN dotnet restore\nRUN dotnet publish -c release -o /app --no-restore\n\n# Run\nFROM mcr.microsoft.com/dotnet/aspnet:5.0.9\nWORKDIR /app\nCOPY --from=build /app ./\nEXPOSE 80\nEXPOSE 443\nENTRYPOINT ["dotnet", "Furion.Web.Entry.dll"]\n')),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},"\ud83d\udc49 \u5728 ",(0,i.kt)("inlineCode",{parentName:"li"},"Dockerfile")," \u6240\u5728\u8def\u5f84\u6784\u5efa")),(0,i.kt)("p",null,"\u63a5\u4e0b\u6765\u7684\u6b65\u9aa4\u548c\u4e0a\u8ff0\u6b65\u9aa4\u4e00\u81f4\uff0c\u4e0d\u518d\u91cd\u590d\u7f16\u5199"),(0,i.kt)("h2",{id:"3423-\u53cd\u9988\u4e0e\u5efa\u8bae"},"34.2.3 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,i.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}s.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/f60abd31.038a6c06.js b/handbook/build/assets/js/f60abd31.038a6c06.js new file mode 100644 index 00000000000..19685205f26 --- /dev/null +++ b/handbook/build/assets/js/f60abd31.038a6c06.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[6193],{3905:function(e,n,t){t.d(n,{Zo:function(){return s},kt:function(){return p}});var a=t(7294);function o(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function r(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function i(e){for(var n=1;n=0||(o[t]=e[t]);return o}(e,n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(o[t]=e[t])}return o}var l=a.createContext({}),d=function(e){var n=a.useContext(l),t=n;return e&&(t="function"==typeof e?e(n):i(i({},n),e)),t},s=function(e){var n=d(e.components);return a.createElement(l.Provider,{value:n},e.children)},u={inlineCode:"code",wrapper:function(e){var n=e.children;return a.createElement(a.Fragment,{},n)}},m=a.forwardRef((function(e,n){var t=e.components,o=e.mdxType,r=e.originalType,l=e.parentName,s=c(e,["components","mdxType","originalType","parentName"]),m=d(t),p=o,v=m["".concat(l,".").concat(p)]||m[p]||u[p]||r;return t?a.createElement(v,i(i({ref:n},s),{},{components:t})):a.createElement(v,i({ref:n},s))}));function p(e,n){var t=arguments,o=n&&n.mdxType;if("string"==typeof e||o){var r=t.length,i=new Array(r);i[0]=m;var c={};for(var l in n)hasOwnProperty.call(n,l)&&(c[l]=n[l]);c.originalType=e,c.mdxType="string"==typeof e?e:o,i[1]=c;for(var d=2;dDbConnectionInterceptor",id:"92421-dbconnectioninterceptor",children:[]},{value:"9.24.2.2 DbCommandInterceptor",id:"92422-dbcommandinterceptor",children:[]},{value:"9.24.2.3 SaveChangesInterceptor",id:"92423-savechangesinterceptor",children:[]},{value:"9.24.2.4 SavedChangesEvent \u62e6\u622a",id:"92424-savedchangesevent-\u62e6\u622a",children:[]}]},{value:"9.24.3 \u6ce8\u518c\u81ea\u5b9a\u4e49\u8fc7\u6ee4\u5668",id:"9243-\u6ce8\u518c\u81ea\u5b9a\u4e49\u8fc7\u6ee4\u5668",children:[]},{value:"9.24.4 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"9244-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],u={toc:s};function m(e){var n=e.components,t=(0,o.Z)(e,i);return(0,r.kt)("wrapper",(0,a.Z)({},u,t,{components:n,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"9241-\u6570\u636e\u5e93\u62e6\u622a\u5668"},"9.24.1 \u6570\u636e\u5e93\u62e6\u622a\u5668"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u56db\u79cd\u6570\u636e\u5e93\u64cd\u4f5c\u62e6\u622a\u5668\uff0c\u53ef\u4ee5\u901a\u8fc7\u62e6\u622a\u5668\u52a8\u6001\u4fee\u6539\u6570\u636e\u5e93\u8fde\u63a5\u5b57\u7b26\u4e32\uff0c\u52a8\u6001\u4fee\u6539 sql\uff0c\u52a8\u6001\u66f4\u6539\u53c2\u6570\u7b49\u64cd\u4f5c\u3002"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u652f\u6301\u8fd9\u56db\u79cd\u62e6\u622a\u5668\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"DbConnectionInterceptor"),"\uff1a\u6570\u636e\u5e93\u8fde\u63a5\u62e6\u622a\u5668"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"DbCommandInterceptor"),"\uff1a\u6570\u636e\u5e93\u6267\u884c ",(0,r.kt)("inlineCode",{parentName:"li"},"Sql")," \u62e6\u622a\u5668"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"SaveChangesInterceptor"),"\uff1a\u63d0\u4ea4\u5230\u6570\u636e\u5e93\u62e6\u622a\u5668"),(0,r.kt)("li",{parentName:"ul"},"\u5728\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u4e2d\u91cd\u5199 ",(0,r.kt)("inlineCode",{parentName:"li"},"SavedChangesEvent")," \u76f8\u5173\u4e8b\u4ef6")),(0,r.kt)("h2",{id:"9242-\u652f\u6301\u62e6\u622a\u7c7b\u578b"},"9.24.2 \u652f\u6301\u62e6\u622a\u7c7b\u578b"),(0,r.kt)("h3",{id:"92421-dbconnectioninterceptor"},"9.24.2.1 ",(0,r.kt)("inlineCode",{parentName:"h3"},"DbConnectionInterceptor")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"using Microsoft.EntityFrameworkCore.Diagnostics;\nusing System.Data.Common;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace Furion.DatabaseAccessor.Interceptors\n{\n public class SqlConnectionInterceptor : DbConnectionInterceptor\n {\n // \u6570\u636e\u5e93\u8fde\u63a5\u4e4b\u524d\n public override InterceptionResult ConnectionOpening(DbConnection connection, ConnectionEventData eventData, InterceptionResult result)\n {\n return base.ConnectionOpening(connection, eventData, result);\n }\n\n // \u6570\u636e\u5e93\u8fde\u63a5\u4e4b\u524d\uff08\u5f02\u6b65\uff09\n public override ValueTask ConnectionOpeningAsync(DbConnection connection, ConnectionEventData eventData, InterceptionResult result, CancellationToken cancellationToken = default)\n {\n return base.ConnectionOpeningAsync(connection, eventData, result, cancellationToken);\n }\n\n // \u6570\u636e\u5e93\u8fde\u63a5\u6210\u529f\n public override void ConnectionOpened(DbConnection connection, ConnectionEndEventData eventData)\n {\n base.ConnectionOpened(connection, eventData);\n }\n\n // \u6570\u636e\u5e93\u8fde\u63a5\u6210\u529f\uff08\u5f02\u6b65\uff09\n public override Task ConnectionOpenedAsync(DbConnection connection, ConnectionEndEventData eventData, CancellationToken cancellationToken = default)\n {\n return base.ConnectionOpenedAsync(connection, eventData, cancellationToken);\n }\n\n // \u6570\u636e\u5e93\u8fde\u63a5\u5173\u95ed\u4e4b\u524d\n public override InterceptionResult ConnectionClosing(DbConnection connection, ConnectionEventData eventData, InterceptionResult result)\n {\n return base.ConnectionClosing(connection, eventData, result);\n }\n\n // \u6570\u636e\u5e93\u8fde\u63a5\u5173\u95ed\u4e4b\u524d\uff08\u5f02\u6b65\uff09\n public override ValueTask ConnectionClosingAsync(DbConnection connection, ConnectionEventData eventData, InterceptionResult result)\n {\n return base.ConnectionClosingAsync(connection, eventData, result);\n }\n\n // \u6570\u636e\u5e93\u8fde\u63a5\u5173\u95ed\u6210\u529f\n public override void ConnectionClosed(DbConnection connection, ConnectionEndEventData eventData)\n {\n base.ConnectionClosed(connection, eventData);\n }\n\n // \u6570\u636e\u5e93\u8fde\u63a5\u5173\u95ed\u6210\u529f\uff08\u5f02\u6b65\uff09\n public override Task ConnectionClosedAsync(DbConnection connection, ConnectionEndEventData eventData)\n {\n return base.ConnectionClosedAsync(connection, eventData);\n }\n\n // \u6570\u636e\u5e93\u8fde\u63a5\u5931\u8d25\n public override void ConnectionFailed(DbConnection connection, ConnectionErrorEventData eventData)\n {\n base.ConnectionFailed(connection, eventData);\n }\n\n // \u6570\u636e\u5e93\u8fde\u63a5\u5931\u8d25\uff08\u5f02\u6b65\uff09\n public override Task ConnectionFailedAsync(DbConnection connection, ConnectionErrorEventData eventData, CancellationToken cancellationToken = default)\n {\n return base.ConnectionFailedAsync(connection, eventData, cancellationToken);\n }\n }\n}\n")),(0,r.kt)("h3",{id:"92422-dbcommandinterceptor"},"9.24.2.2 ",(0,r.kt)("inlineCode",{parentName:"h3"},"DbCommandInterceptor")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"using Microsoft.EntityFrameworkCore.Diagnostics;\nusing System.Data.Common;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace Furion.DatabaseAccessor\n{\n internal sealed class SqlCommandProfilerInterceptor : DbCommandInterceptor\n {\n // \u521b\u5efa\u547d\u4ee4\u5bf9\u8c61\u4e4b\u524d\n public override InterceptionResult CommandCreating(CommandCorrelatedEventData eventData, InterceptionResult result)\n {\n return base.CommandCreating(eventData, result);\n }\n\n // \u521b\u5efa\u547d\u4ee4\u5bf9\u8c61\u4e4b\u540e\n public override DbCommand CommandCreated(CommandEndEventData eventData, DbCommand result)\n {\n return base.CommandCreated(eventData, result);\n }\n\n // \u521b\u5efa\u547d\u4ee4\u5bf9\u8c61\u5931\u8d25\n public override void CommandFailed(DbCommand command, CommandErrorEventData eventData)\n {\n base.CommandFailed(command, eventData);\n }\n\n // \u521b\u5efa\u547d\u4ee4\u5bf9\u8c61\u5931\u8d25\uff08\u5f02\u6b65\uff09\n public override Task CommandFailedAsync(DbCommand command, CommandErrorEventData eventData, CancellationToken cancellationToken = default)\n {\n return base.CommandFailedAsync(command, eventData, cancellationToken);\n }\n\n // \u8bfb\u53d6\u6570\u636e\u4e4b\u524d\n public override InterceptionResult ReaderExecuting(DbCommand command, CommandEventData eventData, InterceptionResult result)\n {\n return base.ReaderExecuting(command, eventData, result);\n }\n\n // \u8bfb\u53d6\u6570\u636e\u4e4b\u524d\uff08\u5f02\u6b65\uff09\n public override ValueTask> ReaderExecutingAsync(DbCommand command, CommandEventData eventData, InterceptionResult result, CancellationToken cancellationToken = default)\n {\n return base.ReaderExecutingAsync(command, eventData, result, cancellationToken);\n }\n\n // \u8bfb\u53d6\u6570\u636e\u4e4b\u540e\n public override DbDataReader ReaderExecuted(DbCommand command, CommandExecutedEventData eventData, DbDataReader result)\n {\n return base.ReaderExecuted(command, eventData, result);\n }\n\n // \u8bfb\u53d6\u6570\u636e\u4e4b\u540e\uff08\u5f02\u6b65\uff09\n public override ValueTask ReaderExecutedAsync(DbCommand command, CommandExecutedEventData eventData, DbDataReader result, CancellationToken cancellationToken = default)\n {\n return base.ReaderExecutedAsync(command, eventData, result, cancellationToken);\n }\n\n // DataReader \u5bf9\u8c61\u91ca\u653e\u4e4b\u524d\n public override InterceptionResult DataReaderDisposing(DbCommand command, DataReaderDisposingEventData eventData, InterceptionResult result)\n {\n return base.DataReaderDisposing(command, eventData, result);\n }\n\n // \u65e0\u67e5\u8be2\u6267\u884c sql \u4e4b\u524d\n public override InterceptionResult NonQueryExecuting(DbCommand command, CommandEventData eventData, InterceptionResult result)\n {\n return base.NonQueryExecuting(command, eventData, result);\n }\n\n // \u65e0\u67e5\u8be2\u6267\u884c sql \u4e4b\u524d\uff08\u5f02\u6b65\uff09\n public override ValueTask> NonQueryExecutingAsync(DbCommand command, CommandEventData eventData, InterceptionResult result, CancellationToken cancellationToken = default)\n {\n return base.NonQueryExecutingAsync(command, eventData, result, cancellationToken);\n }\n\n // \u65e0\u67e5\u8be2\u6267\u884c sql \u4e4b\u540e\n public override int NonQueryExecuted(DbCommand command, CommandExecutedEventData eventData, int result)\n {\n return base.NonQueryExecuted(command, eventData, result);\n }\n\n // \u65e0\u67e5\u8be2\u6267\u884c sql \u4e4b\u540e\uff08\u5f02\u6b65\uff09\n public override ValueTask NonQueryExecutedAsync(DbCommand command, CommandExecutedEventData eventData, int result, CancellationToken cancellationToken = default)\n {\n return base.NonQueryExecutedAsync(command, eventData, result, cancellationToken);\n }\n\n // \u6267\u884c sql \u8fd4\u56de\u5355\u884c\u5355\u5217\u4e4b\u524d\n public override InterceptionResult ScalarExecuting(DbCommand command, CommandEventData eventData, InterceptionResult result)\n {\n return base.ScalarExecuting(command, eventData, result);\n }\n\n // \u6267\u884c sql \u8fd4\u56de\u5355\u884c\u5355\u5217\u4e4b\u524d\uff08\u5f02\u6b65\uff09\n public override ValueTask> ScalarExecutingAsync(DbCommand command, CommandEventData eventData, InterceptionResult result, CancellationToken cancellationToken = default)\n {\n return base.ScalarExecutingAsync(command, eventData, result, cancellationToken);\n }\n\n // \u6267\u884c sql \u8fd4\u56de\u5355\u884c\u5355\u5217\u4e4b\u540e\n public override object ScalarExecuted(DbCommand command, CommandExecutedEventData eventData, object result)\n {\n return base.ScalarExecuted(command, eventData, result);\n }\n\n // \u6267\u884c sql \u8fd4\u56de\u5355\u884c\u5355\u5217\u4e4b\u540e\uff08\u5f02\u6b65\uff09\n public override ValueTask ScalarExecutedAsync(DbCommand command, CommandExecutedEventData eventData, object result, CancellationToken cancellationToken = default)\n {\n return base.ScalarExecutedAsync(command, eventData, result, cancellationToken);\n }\n }\n}\n")),(0,r.kt)("h3",{id:"92423-savechangesinterceptor"},"9.24.2.3 ",(0,r.kt)("inlineCode",{parentName:"h3"},"SaveChangesInterceptor")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"using Microsoft.EntityFrameworkCore.Diagnostics;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace Furion.DatabaseAccessor\n{\n public class DbContextSaveChangesInterceptor : SaveChangesInterceptor\n {\n // \u63d0\u4ea4\u5230\u6570\u636e\u5e93\u4e4b\u524d\n public override InterceptionResult SavingChanges(DbContextEventData eventData, InterceptionResult result)\n {\n return base.SavingChanges(eventData, result);\n }\n\n // \u63d0\u4ea4\u5230\u6570\u636e\u5e93\u4e4b\u524d\uff08\u5f02\u6b65\uff09\n public override ValueTask> SavingChangesAsync(DbContextEventData eventData, InterceptionResult result, CancellationToken cancellationToken = default)\n {\n return base.SavingChangesAsync(eventData, result, cancellationToken);\n }\n\n // \u63d0\u4ea4\u5230\u6570\u636e\u5e93\u4e4b\u540e\n public override int SavedChanges(SaveChangesCompletedEventData eventData, int result)\n {\n return base.SavedChanges(eventData, result);\n }\n\n // \u63d0\u4ea4\u5230\u6570\u636e\u5e93\u4e4b\u540e\uff08\u5f02\u6b65\uff09\n public override ValueTask SavedChangesAsync(SaveChangesCompletedEventData eventData, int result, CancellationToken cancellationToken = default)\n {\n return base.SavedChangesAsync(eventData, result, cancellationToken);\n }\n\n // \u63d0\u4ea4\u6570\u636e\u5e93\u5931\u8d25\n public override void SaveChangesFailed(DbContextErrorEventData eventData)\n {\n base.SaveChangesFailed(eventData);\n }\n\n // \u63d0\u4ea4\u6570\u636e\u5e93\u5931\u8d25\uff08\u5f02\u6b65\uff09\n public override Task SaveChangesFailedAsync(DbContextErrorEventData eventData, CancellationToken cancellationToken = default)\n {\n return base.SaveChangesFailedAsync(eventData, cancellationToken);\n }\n }\n}\n")),(0,r.kt)("h3",{id:"92424-savedchangesevent-\u62e6\u622a"},"9.24.2.4 ",(0,r.kt)("inlineCode",{parentName:"h3"},"SavedChangesEvent")," \u62e6\u622a"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\u4e3a\u6240\u6709 ",(0,r.kt)("inlineCode",{parentName:"p"},"AppDbContext")," \u5b50\u7c7b\u90fd\u63d0\u4f9b\u4e86\u4e09\u4e2a\u53ef\u91cd\u5199\u7684\u65b9\u6cd5\uff0c\u8fd9\u4e09\u4e2a\u65b9\u6cd5\u5206\u522b\u7531\u4e09\u4e2a\u4e8b\u4ef6\u89e6\u53d1\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"\u63d0\u4ea4\u66f4\u6539\u4e4b\u524d SavingChanges \u4e8b\u4ef6"),"\uff1a\u89e6\u53d1 ",(0,r.kt)("inlineCode",{parentName:"li"},"void SavingChangesEvent(DbContextEventData eventData, InterceptionResult result)")," \u65b9\u6cd5"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"\u63d0\u4ea4\u66f4\u6539\u4e4b\u540e SavedChanges \u4e8b\u4ef6"),"\uff1a\u89e6\u53d1 ",(0,r.kt)("inlineCode",{parentName:"li"},"void SavedChangesEvent(SaveChangesCompletedEventData eventData, int result)")," \u65b9\u6cd5"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"\u63d0\u4ea4\u66f4\u6539\u5931\u8d25 SaveChangesFailed \u4e8b\u4ef6"),"\uff1a\u89e6\u53d1 ",(0,r.kt)("inlineCode",{parentName:"li"},"void SaveChangesFailedEvent(DbContextErrorEventData eventData)")," \u65b9\u6cd5")),(0,r.kt)("p",null,"\u901a\u8fc7\u8fd9\u4e09\u4e2a\u4e8b\u4ef6\u6211\u4eec\u53ef\u4ee5",(0,r.kt)("strong",{parentName:"p"},"\u5728\u6570\u636e\u5e93\u505a\u589e\u3001\u5220\u3001\u6539\u65f6\u5019\u505a\u62e6\u622a\uff0c\u6bd4\u5982\u8bbe\u7f6e\u521b\u5efa\u65f6\u95f4\u3001\u66f4\u65b0\u65f6\u95f4\u6216\u5176\u4ed6\u9ed8\u8ba4\u64cd\u4f5c"),"\u3002"),(0,r.kt)("p",null,"\u5982\u81ea\u52a8\u6dfb\u52a0\u79df\u6237 Id\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"protected override void SavingChangesEvent(DbContextEventData eventData, InterceptionResult result)\n{\n // \u83b7\u53d6\u5f53\u524d\u4e8b\u4ef6\u5bf9\u5e94\u4e0a\u4e0b\u6587\n var dbContext = eventData.Context;\n\n // \u83b7\u53d6\u6240\u6709\u65b0\u589e\u548c\u66f4\u65b0\u7684\u5b9e\u4f53\n var entities = dbContext.ChangeTracker.Entries()\n .Where(u => u.State == EntityState.Added || u.State == EntityState.Modified);\n\n foreach (var entity in entities)\n {\n switch (entity.State)\n {\n // \u81ea\u52a8\u8bbe\u7f6e\u79df\u6237Id\n case EntityState.Added:\n entity.Property(nameof(Entity.TenantId)).CurrentValue = GetTenantId();\n break;\n // \u6392\u9664\u79df\u6237Id\n case EntityState.Modified:\n entity.Property(nameof(Entity.TenantId)).IsModified = false;\n break;\n }\n }\n}\n")),(0,r.kt)("h2",{id:"9243-\u6ce8\u518c\u81ea\u5b9a\u4e49\u8fc7\u6ee4\u5668"},"9.24.3 \u6ce8\u518c\u81ea\u5b9a\u4e49\u8fc7\u6ee4\u5668"),(0,r.kt)("p",null,"\u5b9a\u4e49\u597d\u8fc7\u6ee4\u5668\u4e4b\u540e\uff0c\u6211\u4eec\u9700\u8981\u5728\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u4e2d\u6ce8\u518c\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"services.AddDbPool(interceptors: new IInterceptor[] {\n new YourSqlConnectionProfilerInterceptor(),\n new YourDbContextSaveChangesInterceptor(),\n new YourSqlCommandProfilerInterceptor()\n});\n")),(0,r.kt)("h2",{id:"9244-\u53cd\u9988\u4e0e\u5efa\u8bae"},"9.24.4 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,r.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/f60abd31.3dd86df9.js b/handbook/build/assets/js/f60abd31.3dd86df9.js deleted file mode 100644 index 2956579c060..00000000000 --- a/handbook/build/assets/js/f60abd31.3dd86df9.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[6193],{3905:function(e,n,t){t.d(n,{Zo:function(){return s},kt:function(){return p}});var a=t(7294);function o(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function r(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function i(e){for(var n=1;n=0||(o[t]=e[t]);return o}(e,n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(o[t]=e[t])}return o}var l=a.createContext({}),d=function(e){var n=a.useContext(l),t=n;return e&&(t="function"==typeof e?e(n):i(i({},n),e)),t},s=function(e){var n=d(e.components);return a.createElement(l.Provider,{value:n},e.children)},u={inlineCode:"code",wrapper:function(e){var n=e.children;return a.createElement(a.Fragment,{},n)}},m=a.forwardRef((function(e,n){var t=e.components,o=e.mdxType,r=e.originalType,l=e.parentName,s=c(e,["components","mdxType","originalType","parentName"]),m=d(t),p=o,v=m["".concat(l,".").concat(p)]||m[p]||u[p]||r;return t?a.createElement(v,i(i({ref:n},s),{},{components:t})):a.createElement(v,i({ref:n},s))}));function p(e,n){var t=arguments,o=n&&n.mdxType;if("string"==typeof e||o){var r=t.length,i=new Array(r);i[0]=m;var c={};for(var l in n)hasOwnProperty.call(n,l)&&(c[l]=n[l]);c.originalType=e,c.mdxType="string"==typeof e?e:o,i[1]=c;for(var d=2;dDbConnectionInterceptor",id:"92421-dbconnectioninterceptor",children:[]},{value:"9.24.2.2 DbCommandInterceptor",id:"92422-dbcommandinterceptor",children:[]},{value:"9.24.2.3 SaveChangesInterceptor",id:"92423-savechangesinterceptor",children:[]},{value:"9.24.2.4 SavedChangesEvent \u62e6\u622a",id:"92424-savedchangesevent-\u62e6\u622a",children:[]}]},{value:"9.24.3 \u6ce8\u518c\u81ea\u5b9a\u4e49\u8fc7\u6ee4\u5668",id:"9243-\u6ce8\u518c\u81ea\u5b9a\u4e49\u8fc7\u6ee4\u5668",children:[]},{value:"9.24.4 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"9244-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],u={toc:s};function m(e){var n=e.components,t=(0,o.Z)(e,i);return(0,r.kt)("wrapper",(0,a.Z)({},u,t,{components:n,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"9241-\u6570\u636e\u5e93\u62e6\u622a\u5668"},"9.24.1 \u6570\u636e\u5e93\u62e6\u622a\u5668"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u56db\u79cd\u6570\u636e\u5e93\u64cd\u4f5c\u62e6\u622a\u5668\uff0c\u53ef\u4ee5\u901a\u8fc7\u62e6\u622a\u5668\u52a8\u6001\u4fee\u6539\u6570\u636e\u5e93\u8fde\u63a5\u5b57\u7b26\u4e32\uff0c\u52a8\u6001\u4fee\u6539 sql\uff0c\u52a8\u6001\u66f4\u6539\u53c2\u6570\u7b49\u64cd\u4f5c\u3002"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u652f\u6301\u8fd9\u56db\u79cd\u62e6\u622a\u5668\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"DbConnectionInterceptor"),"\uff1a\u6570\u636e\u5e93\u8fde\u63a5\u62e6\u622a\u5668"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"DbCommandInterceptor"),"\uff1a\u6570\u636e\u5e93\u6267\u884c ",(0,r.kt)("inlineCode",{parentName:"li"},"Sql")," \u62e6\u622a\u5668"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"SaveChangesInterceptor"),"\uff1a\u63d0\u4ea4\u5230\u6570\u636e\u5e93\u62e6\u622a\u5668"),(0,r.kt)("li",{parentName:"ul"},"\u5728\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u4e2d\u91cd\u5199 ",(0,r.kt)("inlineCode",{parentName:"li"},"SavedChangesEvent")," \u76f8\u5173\u4e8b\u4ef6")),(0,r.kt)("h2",{id:"9242-\u652f\u6301\u62e6\u622a\u7c7b\u578b"},"9.24.2 \u652f\u6301\u62e6\u622a\u7c7b\u578b"),(0,r.kt)("h3",{id:"92421-dbconnectioninterceptor"},"9.24.2.1 ",(0,r.kt)("inlineCode",{parentName:"h3"},"DbConnectionInterceptor")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"using Microsoft.EntityFrameworkCore.Diagnostics;\nusing System.Data.Common;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace Furion.DatabaseAccessor.Interceptors\n{\n public class SqlConnectionInterceptor : DbConnectionInterceptor\n {\n // \u6570\u636e\u5e93\u8fde\u63a5\u4e4b\u524d\n public override InterceptionResult ConnectionOpening(DbConnection connection, ConnectionEventData eventData, InterceptionResult result)\n {\n return base.ConnectionOpening(connection, eventData, result);\n }\n\n // \u6570\u636e\u5e93\u8fde\u63a5\u4e4b\u524d\uff08\u5f02\u6b65\uff09\n public override ValueTask ConnectionOpeningAsync(DbConnection connection, ConnectionEventData eventData, InterceptionResult result, CancellationToken cancellationToken = default)\n {\n return base.ConnectionOpeningAsync(connection, eventData, result, cancellationToken);\n }\n\n // \u6570\u636e\u5e93\u8fde\u63a5\u6210\u529f\n public override void ConnectionOpened(DbConnection connection, ConnectionEndEventData eventData)\n {\n base.ConnectionOpened(connection, eventData);\n }\n\n // \u6570\u636e\u5e93\u8fde\u63a5\u6210\u529f\uff08\u5f02\u6b65\uff09\n public override Task ConnectionOpenedAsync(DbConnection connection, ConnectionEndEventData eventData, CancellationToken cancellationToken = default)\n {\n return base.ConnectionOpenedAsync(connection, eventData, cancellationToken);\n }\n\n // \u6570\u636e\u5e93\u8fde\u63a5\u5173\u95ed\u4e4b\u524d\n public override InterceptionResult ConnectionClosing(DbConnection connection, ConnectionEventData eventData, InterceptionResult result)\n {\n return base.ConnectionClosing(connection, eventData, result);\n }\n\n // \u6570\u636e\u5e93\u8fde\u63a5\u5173\u95ed\u4e4b\u524d\uff08\u5f02\u6b65\uff09\n public override ValueTask ConnectionClosingAsync(DbConnection connection, ConnectionEventData eventData, InterceptionResult result)\n {\n return base.ConnectionClosingAsync(connection, eventData, result);\n }\n\n // \u6570\u636e\u5e93\u8fde\u63a5\u5173\u95ed\u6210\u529f\n public override void ConnectionClosed(DbConnection connection, ConnectionEndEventData eventData)\n {\n base.ConnectionClosed(connection, eventData);\n }\n\n // \u6570\u636e\u5e93\u8fde\u63a5\u5173\u95ed\u6210\u529f\uff08\u5f02\u6b65\uff09\n public override Task ConnectionClosedAsync(DbConnection connection, ConnectionEndEventData eventData)\n {\n return base.ConnectionClosedAsync(connection, eventData);\n }\n\n // \u6570\u636e\u5e93\u8fde\u63a5\u5931\u8d25\n public override void ConnectionFailed(DbConnection connection, ConnectionErrorEventData eventData)\n {\n base.ConnectionFailed(connection, eventData);\n }\n\n // \u6570\u636e\u5e93\u8fde\u63a5\u5931\u8d25\uff08\u5f02\u6b65\uff09\n public override Task ConnectionFailedAsync(DbConnection connection, ConnectionErrorEventData eventData, CancellationToken cancellationToken = default)\n {\n return base.ConnectionFailedAsync(connection, eventData, cancellationToken);\n }\n }\n}\n")),(0,r.kt)("h3",{id:"92422-dbcommandinterceptor"},"9.24.2.2 ",(0,r.kt)("inlineCode",{parentName:"h3"},"DbCommandInterceptor")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"using Microsoft.EntityFrameworkCore.Diagnostics;\nusing System.Data.Common;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace Furion.DatabaseAccessor\n{\n internal sealed class SqlCommandProfilerInterceptor : DbCommandInterceptor\n {\n // \u521b\u5efa\u547d\u4ee4\u5bf9\u8c61\u4e4b\u524d\n public override InterceptionResult CommandCreating(CommandCorrelatedEventData eventData, InterceptionResult result)\n {\n return base.CommandCreating(eventData, result);\n }\n\n // \u521b\u5efa\u547d\u4ee4\u5bf9\u8c61\u4e4b\u540e\n public override DbCommand CommandCreated(CommandEndEventData eventData, DbCommand result)\n {\n return base.CommandCreated(eventData, result);\n }\n\n // \u521b\u5efa\u547d\u4ee4\u5bf9\u8c61\u5931\u8d25\n public override void CommandFailed(DbCommand command, CommandErrorEventData eventData)\n {\n base.CommandFailed(command, eventData);\n }\n\n // \u521b\u5efa\u547d\u4ee4\u5bf9\u8c61\u5931\u8d25\uff08\u5f02\u6b65\uff09\n public override Task CommandFailedAsync(DbCommand command, CommandErrorEventData eventData, CancellationToken cancellationToken = default)\n {\n return base.CommandFailedAsync(command, eventData, cancellationToken);\n }\n\n // \u8bfb\u53d6\u6570\u636e\u4e4b\u524d\n public override InterceptionResult ReaderExecuting(DbCommand command, CommandEventData eventData, InterceptionResult result)\n {\n return base.ReaderExecuting(command, eventData, result);\n }\n\n // \u8bfb\u53d6\u6570\u636e\u4e4b\u524d\uff08\u5f02\u6b65\uff09\n public override ValueTask> ReaderExecutingAsync(DbCommand command, CommandEventData eventData, InterceptionResult result, CancellationToken cancellationToken = default)\n {\n return base.ReaderExecutingAsync(command, eventData, result, cancellationToken);\n }\n\n // \u8bfb\u53d6\u6570\u636e\u4e4b\u540e\n public override DbDataReader ReaderExecuted(DbCommand command, CommandExecutedEventData eventData, DbDataReader result)\n {\n return base.ReaderExecuted(command, eventData, result);\n }\n\n // \u8bfb\u53d6\u6570\u636e\u4e4b\u540e\uff08\u5f02\u6b65\uff09\n public override ValueTask ReaderExecutedAsync(DbCommand command, CommandExecutedEventData eventData, DbDataReader result, CancellationToken cancellationToken = default)\n {\n return base.ReaderExecutedAsync(command, eventData, result, cancellationToken);\n }\n\n // DataReader \u5bf9\u8c61\u91ca\u653e\u4e4b\u524d\n public override InterceptionResult DataReaderDisposing(DbCommand command, DataReaderDisposingEventData eventData, InterceptionResult result)\n {\n return base.DataReaderDisposing(command, eventData, result);\n }\n\n // \u65e0\u67e5\u8be2\u6267\u884c sql \u4e4b\u524d\n public override InterceptionResult NonQueryExecuting(DbCommand command, CommandEventData eventData, InterceptionResult result)\n {\n return base.NonQueryExecuting(command, eventData, result);\n }\n\n // \u65e0\u67e5\u8be2\u6267\u884c sql \u4e4b\u524d\uff08\u5f02\u6b65\uff09\n public override ValueTask> NonQueryExecutingAsync(DbCommand command, CommandEventData eventData, InterceptionResult result, CancellationToken cancellationToken = default)\n {\n return base.NonQueryExecutingAsync(command, eventData, result, cancellationToken);\n }\n\n // \u65e0\u67e5\u8be2\u6267\u884c sql \u4e4b\u540e\n public override int NonQueryExecuted(DbCommand command, CommandExecutedEventData eventData, int result)\n {\n return base.NonQueryExecuted(command, eventData, result);\n }\n\n // \u65e0\u67e5\u8be2\u6267\u884c sql \u4e4b\u540e\uff08\u5f02\u6b65\uff09\n public override ValueTask NonQueryExecutedAsync(DbCommand command, CommandExecutedEventData eventData, int result, CancellationToken cancellationToken = default)\n {\n return base.NonQueryExecutedAsync(command, eventData, result, cancellationToken);\n }\n\n // \u6267\u884c sql \u8fd4\u56de\u5355\u884c\u5355\u5217\u4e4b\u524d\n public override InterceptionResult ScalarExecuting(DbCommand command, CommandEventData eventData, InterceptionResult result)\n {\n return base.ScalarExecuting(command, eventData, result);\n }\n\n // \u6267\u884c sql \u8fd4\u56de\u5355\u884c\u5355\u5217\u4e4b\u524d\uff08\u5f02\u6b65\uff09\n public override ValueTask> ScalarExecutingAsync(DbCommand command, CommandEventData eventData, InterceptionResult result, CancellationToken cancellationToken = default)\n {\n return base.ScalarExecutingAsync(command, eventData, result, cancellationToken);\n }\n\n // \u6267\u884c sql \u8fd4\u56de\u5355\u884c\u5355\u5217\u4e4b\u540e\n public override object ScalarExecuted(DbCommand command, CommandExecutedEventData eventData, object result)\n {\n return base.ScalarExecuted(command, eventData, result);\n }\n\n // \u6267\u884c sql \u8fd4\u56de\u5355\u884c\u5355\u5217\u4e4b\u540e\uff08\u5f02\u6b65\uff09\n public override ValueTask ScalarExecutedAsync(DbCommand command, CommandExecutedEventData eventData, object result, CancellationToken cancellationToken = default)\n {\n return base.ScalarExecutedAsync(command, eventData, result, cancellationToken);\n }\n }\n}\n")),(0,r.kt)("h3",{id:"92423-savechangesinterceptor"},"9.24.2.3 ",(0,r.kt)("inlineCode",{parentName:"h3"},"SaveChangesInterceptor")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"using Microsoft.EntityFrameworkCore.Diagnostics;\nusing System.Threading;\nusing System.Threading.Tasks;\n\nnamespace Furion.DatabaseAccessor\n{\n public class DbContextSaveChangesInterceptor : SaveChangesInterceptor\n {\n // \u63d0\u4ea4\u5230\u6570\u636e\u5e93\u4e4b\u524d\n public override InterceptionResult SavingChanges(DbContextEventData eventData, InterceptionResult result)\n {\n return base.SavingChanges(eventData, result);\n }\n\n // \u63d0\u4ea4\u5230\u6570\u636e\u5e93\u4e4b\u524d\uff08\u5f02\u6b65\uff09\n public override ValueTask> SavingChangesAsync(DbContextEventData eventData, InterceptionResult result, CancellationToken cancellationToken = default)\n {\n return base.SavingChangesAsync(eventData, result, cancellationToken);\n }\n\n // \u63d0\u4ea4\u5230\u6570\u636e\u5e93\u4e4b\u540e\n public override int SavedChanges(SaveChangesCompletedEventData eventData, int result)\n {\n return base.SavedChanges(eventData, result);\n }\n\n // \u63d0\u4ea4\u5230\u6570\u636e\u5e93\u4e4b\u540e\uff08\u5f02\u6b65\uff09\n public override ValueTask SavedChangesAsync(SaveChangesCompletedEventData eventData, int result, CancellationToken cancellationToken = default)\n {\n return base.SavedChangesAsync(eventData, result, cancellationToken);\n }\n\n // \u63d0\u4ea4\u6570\u636e\u5e93\u5931\u8d25\n public override void SaveChangesFailed(DbContextErrorEventData eventData)\n {\n base.SaveChangesFailed(eventData);\n }\n\n // \u63d0\u4ea4\u6570\u636e\u5e93\u5931\u8d25\uff08\u5f02\u6b65\uff09\n public override Task SaveChangesFailedAsync(DbContextErrorEventData eventData, CancellationToken cancellationToken = default)\n {\n return base.SaveChangesFailedAsync(eventData, cancellationToken);\n }\n }\n}\n")),(0,r.kt)("h3",{id:"92424-savedchangesevent-\u62e6\u622a"},"9.24.2.4 ",(0,r.kt)("inlineCode",{parentName:"h3"},"SavedChangesEvent")," \u62e6\u622a"),(0,r.kt)("p",null,(0,r.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\u4e3a\u6240\u6709 ",(0,r.kt)("inlineCode",{parentName:"p"},"AppDbContext")," \u5b50\u7c7b\u90fd\u63d0\u4f9b\u4e86\u4e09\u4e2a\u53ef\u91cd\u5199\u7684\u65b9\u6cd5\uff0c\u8fd9\u4e09\u4e2a\u65b9\u6cd5\u5206\u522b\u7531\u4e09\u4e2a\u4e8b\u4ef6\u89e6\u53d1\uff1a"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"\u63d0\u4ea4\u66f4\u6539\u4e4b\u524d SavingChanges \u4e8b\u4ef6"),"\uff1a\u89e6\u53d1 ",(0,r.kt)("inlineCode",{parentName:"li"},"void SavingChangesEvent(DbContextEventData eventData, InterceptionResult result)")," \u65b9\u6cd5"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"\u63d0\u4ea4\u66f4\u6539\u4e4b\u540e SavedChanges \u4e8b\u4ef6"),"\uff1a\u89e6\u53d1 ",(0,r.kt)("inlineCode",{parentName:"li"},"void SavedChangesEvent(SaveChangesCompletedEventData eventData, int result)")," \u65b9\u6cd5"),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"\u63d0\u4ea4\u66f4\u6539\u5931\u8d25 SaveChangesFailed \u4e8b\u4ef6"),"\uff1a\u89e6\u53d1 ",(0,r.kt)("inlineCode",{parentName:"li"},"void SaveChangesFailedEvent(DbContextErrorEventData eventData)")," \u65b9\u6cd5")),(0,r.kt)("p",null,"\u901a\u8fc7\u8fd9\u4e09\u4e2a\u4e8b\u4ef6\u6211\u4eec\u53ef\u4ee5",(0,r.kt)("strong",{parentName:"p"},"\u5728\u6570\u636e\u5e93\u505a\u589e\u3001\u5220\u3001\u6539\u65f6\u5019\u505a\u62e6\u622a\uff0c\u6bd4\u5982\u8bbe\u7f6e\u521b\u5efa\u65f6\u95f4\u3001\u66f4\u65b0\u65f6\u95f4\u6216\u5176\u4ed6\u9ed8\u8ba4\u64cd\u4f5c"),"\u3002"),(0,r.kt)("p",null,"\u5982\u81ea\u52a8\u6dfb\u52a0\u79df\u6237 Id\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"protected override void SavingChangesEvent(DbContextEventData eventData, InterceptionResult result)\n{\n // \u83b7\u53d6\u5f53\u524d\u4e8b\u4ef6\u5bf9\u5e94\u4e0a\u4e0b\u6587\n var dbContext = eventData.Context;\n\n // \u83b7\u53d6\u6240\u6709\u65b0\u589e\u548c\u66f4\u65b0\u7684\u5b9e\u4f53\n var entities = dbContext.ChangeTracker.Entries()\n .Where(u => u.State == EntityState.Added || u.State == EntityState.Modified);\n\n foreach (var entity in entities)\n {\n switch (entity.State)\n {\n // \u81ea\u52a8\u8bbe\u7f6e\u79df\u6237Id\n case EntityState.Added:\n entity.Property(nameof(Entity.TenantId)).CurrentValue = GetTenantId();\n break;\n // \u6392\u9664\u79df\u6237Id\n case EntityState.Modified:\n entity.Property(nameof(Entity.TenantId)).IsModified = false;\n break;\n }\n }\n}\n")),(0,r.kt)("h2",{id:"9243-\u6ce8\u518c\u81ea\u5b9a\u4e49\u8fc7\u6ee4\u5668"},"9.24.3 \u6ce8\u518c\u81ea\u5b9a\u4e49\u8fc7\u6ee4\u5668"),(0,r.kt)("p",null,"\u5b9a\u4e49\u597d\u8fc7\u6ee4\u5668\u4e4b\u540e\uff0c\u6211\u4eec\u9700\u8981\u5728\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u4e2d\u6ce8\u518c\uff1a"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-cs"},"services.AddDbPool(interceptors: new IInterceptor[] {\n new YourSqlConnectionProfilerInterceptor(),\n new YourDbContextSaveChangesInterceptor(),\n new YourSqlCommandProfilerInterceptor()\n});\n")),(0,r.kt)("h2",{id:"9244-\u53cd\u9988\u4e0e\u5efa\u8bae"},"9.24.4 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,r.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,r.kt)("div",{parentName:"div",className:"admonition-heading"},(0,r.kt)("h5",{parentName:"div"},(0,r.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,r.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,r.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,r.kt)("div",{parentName:"div",className:"admonition-content"},(0,r.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,r.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/fc508b36.4e33e492.js b/handbook/build/assets/js/fc508b36.4e33e492.js new file mode 100644 index 00000000000..db8efcd47bf --- /dev/null +++ b/handbook/build/assets/js/fc508b36.4e33e492.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[8429],{3905:function(e,n,t){t.d(n,{Zo:function(){return l},kt:function(){return u}});var a=t(7294);function r(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function o(e){for(var n=1;n=0||(r[t]=e[t]);return r}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var s=a.createContext({}),p=function(e){var n=a.useContext(s),t=n;return e&&(t="function"==typeof e?e(n):o(o({},n),e)),t},l=function(e){var n=p(e.components);return a.createElement(s.Provider,{value:n},e.children)},c={inlineCode:"code",wrapper:function(e){var n=e.children;return a.createElement(a.Fragment,{},n)}},m=a.forwardRef((function(e,n){var t=e.components,r=e.mdxType,i=e.originalType,s=e.parentName,l=d(e,["components","mdxType","originalType","parentName"]),m=p(t),u=r,v=m["".concat(s,".").concat(u)]||m[u]||c[u]||i;return t?a.createElement(v,o(o({ref:n},l),{},{components:t})):a.createElement(v,o({ref:n},l))}));function u(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var i=t.length,o=new Array(i);o[0]=m;var d={};for(var s in n)hasOwnProperty.call(n,s)&&(d[s]=n[s]);d.originalType=e,d.mdxType="string"==typeof e?e:r,o[1]=d;for(var p=2;pMD5 \u52a0\u5bc6",id:"2031-md5-\u52a0\u5bc6",children:[]},{value:"20.3.2 DESC \u52a0\u89e3\u5bc6",id:"2032-desc-\u52a0\u89e3\u5bc6",children:[]},{value:"20.3.3 AES \u52a0\u89e3\u5bc6",id:"2033-aes-\u52a0\u89e3\u5bc6",children:[]},{value:"20.3.4 JWT \u52a0\u89e3\u5bc6",id:"2034-jwt-\u52a0\u89e3\u5bc6",children:[]},{value:"20.3.5 PBKDF2 \u52a0\u5bc6",id:"2035-pbkdf2-\u52a0\u5bc6",children:[]},{value:"20.3.6 RSA \u52a0\u5bc6",id:"2036-rsa-\u52a0\u5bc6",children:[]}]},{value:"20.4 \u5b57\u7b26\u4e32\u62d3\u5c55\u65b9\u5f0f",id:"204-\u5b57\u7b26\u4e32\u62d3\u5c55\u65b9\u5f0f",children:[]},{value:"20.5 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"205-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],c={toc:l};function m(e){var n=e.components,t=(0,r.Z)(e,o);return(0,i.kt)("wrapper",(0,a.Z)({},c,t,{components:n,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"201-\u6570\u636e\u52a0\u89e3\u5bc6"},"20.1 \u6570\u636e\u52a0\u89e3\u5bc6"),(0,i.kt)("p",null,"\u7531\u4e8e\u73b0\u5728\u7684\u4e92\u8054\u7f51\u8d8a\u5177\u53d1\u8fbe\uff0c\u6570\u636e\u6210\u4e3a\u4e86\u6211\u4eec\u751f\u6d3b\u7684\u4e00\u90e8\u5206\uff0c\u5f53\u7136\u4e5f\u5e26\u6765\u4e86\u5f88\u591a\u6570\u636e\u5b89\u5168\u6027\u7684\u95ee\u9898\uff0c\u6bd4\u5982\u7528\u6237\u5bc6\u7801\u660e\u6587\u5b58\u50a8\uff0c\u7528\u6237\u4fe1\u606f\u660e\u6587\u5b58\u5728\u5728\u6d4f\u89c8\u5668 ",(0,i.kt)("inlineCode",{parentName:"p"},"cookies")," \u4e2d\u7b49\u7b49\u4e0d\u5b89\u5168\u64cd\u4f5c\u3002"),(0,i.kt)("p",null,"\u6240\u4ee5\uff0c\u5bf9\u6570\u636e\u7684\u52a0\u89e3\u5bc6\u662f\u7cfb\u7edf\u5f00\u53d1\u5fc5\u8981\u7684\u73af\u8282\u3002"),(0,i.kt)("h2",{id:"202-\u5185\u7f6e\u52a0\u5bc6\u7b97\u6cd5"},"20.2 \u5185\u7f6e\u52a0\u5bc6\u7b97\u6cd5"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"MD5")," \u52a0\u5bc6"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"DESC")," \u52a0\u89e3\u5bc6"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"AES")," \u52a0\u89e3\u5bc6"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"JWT")," \u52a0\u89e3\u5bc6"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"PBKDF2")," \u52a0\u5bc6\uff08",(0,i.kt)("inlineCode",{parentName:"li"},"Furion v2.12 +")," \u7248\u672c\u5df2\u79fb\u9664\uff09"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"RSA")," \u52a0\u89e3\u5bc6")),(0,i.kt)("h2",{id:"203-\u52a0\u89e3\u5bc6\u4f7f\u7528"},"20.3 \u52a0\u89e3\u5bc6\u4f7f\u7528"),(0,i.kt)("h3",{id:"2031-md5-\u52a0\u5bc6"},"20.3.1 ",(0,i.kt)("inlineCode",{parentName:"h3"},"MD5")," \u52a0\u5bc6"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// \u6d4b\u8bd5 MD5 \u52a0\u5bc6\uff0c\u6bd4\u8f83\nvar md5Hash = MD5Encryption.Encrypt("\u767e\u5c0f\u50e7"); // \u52a0\u5bc6\nvar isEqual = MD5Encryption.Compare("\u767e\u5c0f\u50e7", md5Hash); // \u6bd4\u8f83\nreturn (md5Hash, isEqual);\n\n// \u8f93\u51fa\u5927\u5199 MD5 \u52a0\u5bc6\nvar md5Hash = MD5Encryption.Encrypt("\u767e\u5c0f\u50e7", true);\n')),(0,i.kt)("h3",{id:"2032-desc-\u52a0\u89e3\u5bc6"},"20.3.2 ",(0,i.kt)("inlineCode",{parentName:"h3"},"DESC")," \u52a0\u89e3\u5bc6"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// \u6d4b\u8bd5 DESC \u52a0\u89e3\u5bc6\nvar descHash = DESCEncryption.Encrypt("\u767e\u5c0f\u50e7", "Furion"); // \u52a0\u5bc6\nvar str = DESCEncryption.Decrypt(descHash, "Furion"); // \u89e3\u5bc6\nreturn (descHash, str);\n')),(0,i.kt)("h3",{id:"2033-aes-\u52a0\u89e3\u5bc6"},"20.3.3 ",(0,i.kt)("inlineCode",{parentName:"h3"},"AES")," \u52a0\u89e3\u5bc6"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// \u6d4b\u8bd5 AES \u52a0\u89e3\u5bc6\nvar key = Guid.NewGuid().ToString("N"); // \u5bc6\u94a5\uff0c\u957f\u5ea6\u5fc5\u987b\u4e3a24\u4f4d\u621632\u4f4d\n\nvar aesHash = AESEncryption.Encrypt("\u767e\u5c0f\u50e7", key); // \u52a0\u5bc6\nvar str2 = AESEncryption.Decrypt(aesHash, key); // \u89e3\u5bc6\nreturn (aesHash, str2);\n')),(0,i.kt)("h3",{id:"2034-jwt-\u52a0\u89e3\u5bc6"},"20.3.4 ",(0,i.kt)("inlineCode",{parentName:"h3"},"JWT")," \u52a0\u89e3\u5bc6"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'var token = JWTEncryption.Encrypt(new Dictionary() // \u52a0\u5bc6\n {\n { "UserId", user.Id },\n { "Account",user.Account }\n });\n\nvar tokenData = JWTEncryption.ReadJwtToken("\u4f60\u7684token"); // \u89e3\u5bc6\n\nvar (isValid, tokenData) = JWTEncryption.Validate("\u4f60\u7684token"); // \u9a8c\u8bc1token\u6709\u6548\u671f\n')),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u6ce8\u610f")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},(0,i.kt)("inlineCode",{parentName:"p"},"JWTEncryption")," \u52a0\u89e3\u5bc6\u5e76\u672a\u5305\u542b\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\uff0c\u9700\u8981\u5b89\u88c5 ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u7684 ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion.Extras.Authentication.JwtBearer")," \u62d3\u5c55\u5305\u3002"))),(0,i.kt)("h3",{id:"2035-pbkdf2-\u52a0\u5bc6"},"20.3.5 ",(0,i.kt)("inlineCode",{parentName:"h3"},"PBKDF2")," \u52a0\u5bc6"),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},(0,i.kt)("inlineCode",{parentName:"strong"},"Furion v2.12 +")," \u7248\u672c\u5df2\u79fb\u9664\u3002")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// \u6d4b\u8bd5 PBKDF2 \u52a0\u5bc6\uff0c\u6bd4\u8f83\nvar basestring = PBKDF2Encryption.Encrypt("\u767e\u5c0f\u50e7"); // \u52a0\u5bc6\nvar isEqual = PBKDF2Encryption.Compare("\u767e\u5c0f\u50e7", basestring); // \u6bd4\u8f83\n')),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u652f\u6301\u9009\u62e9\u66f4\u591a\u53c2\u6570")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},(0,i.kt)("inlineCode",{parentName:"p"},"PBKDF2")," \u8fd8\u53ef\u4ee5\u914d\u7f6e\u66f4\u591a\u53c2\u6570\uff1a"),(0,i.kt)("ul",{parentName:"div"},(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"Startup.cs")," \u4e2d\u6ce8\u518c\u670d\u52a1")),(0,i.kt)("pre",{parentName:"div"},(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"services.AddPBKDF2EncryptionOptions();\n")),(0,i.kt)("ul",{parentName:"div"},(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"appsettings.json")," \u914d\u7f6e\uff1a")),(0,i.kt)("pre",{parentName:"div"},(0,i.kt)("code",{parentName:"pre",className:"language-json"},'{\n "PBKDF2EncryptionSettings": {\n "InitialIterationCount": 110, // \u521d\u59cb\u8fed\u4ee3\u6b21\u6570\u7d2f\u52a0\u503c\n "KeyDerivation": "HMACSHA256", // \u52a0\u5bc6\u7b97\u6cd5\u89c4\u5219 KeyDerivationPrf.HMACSHA256\n "NumBytesRequested": 64 // \u6d3e\u751f\u5bc6\u94a5\u7684\u957f\u5ea6 (\u4ee5\u5b57\u8282\u4e3a\u5355\u4f4d) 512 / 8\n }\n}\n')),(0,i.kt)("ul",{parentName:"div"},(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"KeyDerivation")," \u53ef\u9009\u503c\u6709\uff1a",(0,i.kt)("inlineCode",{parentName:"li"},"HMACSHA1"),"\uff0c",(0,i.kt)("inlineCode",{parentName:"li"},"HMACSHA256"),"\uff0c",(0,i.kt)("inlineCode",{parentName:"li"},"HMACSHA512"))))),(0,i.kt)("h3",{id:"2036-rsa-\u52a0\u5bc6"},"20.3.6 ",(0,i.kt)("inlineCode",{parentName:"h3"},"RSA")," \u52a0\u5bc6"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// \u6d4b\u8bd5 RSA \u52a0\u5bc6\nvar (publicKey, privateKey) = RSAEncryption.GenerateSecretKey(2048); //\u751f\u6210 RSA \u79d8\u94a5 \u79d8\u94a5\u5927\u5c0f\u5fc5\u987b\u4e3a 2048 \u5230 16384\uff0c\u5e76\u4e14\u662f 8 \u7684\u500d\u6570\nvar basestring = RSAEncryption.Encrypt("\u767e\u5c0f\u50e7", publicKey); // \u52a0\u5bc6\nvar str2 = RSAEncryption.Decrypt(basestring, privateKey); // \u89e3\u5bc6\nreturn (basestring, str2);\n')),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u5173\u4e8e ",(0,i.kt)("inlineCode",{parentName:"h5"},"RSA")," \u7b7e\u540d\u548c\u6821\u9a8c")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u5e95\u5c42\u4e0d\u5185\u7f6e ",(0,i.kt)("inlineCode",{parentName:"p"},"RSA")," \u7b7e\u540d\u548c\u6821\u9a8c\u529f\u80fd\uff0c\u5982\u9700\u6dfb\u52a0\u8be5\u529f\u80fd\u53ef\u67e5\u9605\u5f00\u53d1\u8005\u63d0\u4ea4\u7684\u4ee3\u7801\uff1a",(0,i.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/pulls/349"},"\u67e5\u770b RSA \u7b7e\u540d\u548c\u6821\u9a8c")))),(0,i.kt)("h2",{id:"204-\u5b57\u7b26\u4e32\u62d3\u5c55\u65b9\u5f0f"},"20.4 \u5b57\u7b26\u4e32\u62d3\u5c55\u65b9\u5f0f"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e5f\u63d0\u4f9b\u4e86\u5b57\u7b26\u4e32\u62d3\u5c55\u65b9\u5f0f\u8fdb\u884c ",(0,i.kt)("inlineCode",{parentName:"p"},"MD5\u52a0\u5bc6\u3001AES/DESC\u52a0\u89e3\u5bc6\u3001RSA\u52a0\u89e3\u5bc6"),"\u3002"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'using Furion.DataEncryption.Extensions;\n\n// MD5 \u52a0\u5bc6\nvar s = "Furion".ToMD5Encrypt();\nvar b = "Furion".ToMD5Compare(s); // \u6bd4\u8f83\n\n// AES\u52a0\u89e3\u5bc6\nvar s = "Furion".ToAESEncrypt("sfdsfdsfdsfdsfdsfdsfdsfdsfdfdsfdsfdfdfdfd");\nvar str = s.ToAESDecrypt("sfdsfdsfdsfdsfdsfdsfdsfdsfdfdsfdsfdfdfdfd");\n\n// DESC \u52a0\u89e3\u5bc6\nvar s = "Furion".ToDESCEncrypt("sfdsfdsfdsfdsfdsfdsfdsfdsfdfdsfdsfdfdfdfd");\nvar str = s.ToDESCDecrypt("sfdsfdsfdsfdsfdsfdsfdsfdsfdfdsfdsfdfdfdfd");\n\n// PBKDF2 \u52a0\u5bc6\uff08`Furion v2.12 +` \u7248\u672c\u5df2\u79fb\u9664\uff01\uff01\uff01\uff01\uff01\uff01\uff01\uff01\uff09\nvar s = "Furion".ToPBKDF2Encrypt();\nvar b = "Furion".ToPBKDF2Compare(s); // \u6bd4\u8f83\n\n// RSA \u52a0\u89e3\u5bc6\nvar (publicKey, privateKey) = RSAEncryption.GenerateSecretKey(2048); //\u751f\u6210 RSA \u79d8\u94a5 \u79d8\u94a5\u5927\u5c0f\u5fc5\u987b\u4e3a 2048 \u5230 16384\uff0c\u5e76\u4e14\u662f 8 \u7684\u500d\u6570\nvar s= "Furion".ToRSAEncrpyt(publicKey); // \u52a0\u5bc6\nvar str=s.ToRSADecrypt(privateKey); // \u89e3\u5bc6\n')),(0,i.kt)("h2",{id:"205-\u53cd\u9988\u4e0e\u5efa\u8bae"},"20.5 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,i.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/fc508b36.b850caca.js b/handbook/build/assets/js/fc508b36.b850caca.js deleted file mode 100644 index 534edb9078c..00000000000 --- a/handbook/build/assets/js/fc508b36.b850caca.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[8429],{3905:function(e,n,t){t.d(n,{Zo:function(){return l},kt:function(){return u}});var a=t(7294);function r(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function o(e){for(var n=1;n=0||(r[t]=e[t]);return r}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var s=a.createContext({}),p=function(e){var n=a.useContext(s),t=n;return e&&(t="function"==typeof e?e(n):o(o({},n),e)),t},l=function(e){var n=p(e.components);return a.createElement(s.Provider,{value:n},e.children)},c={inlineCode:"code",wrapper:function(e){var n=e.children;return a.createElement(a.Fragment,{},n)}},m=a.forwardRef((function(e,n){var t=e.components,r=e.mdxType,i=e.originalType,s=e.parentName,l=d(e,["components","mdxType","originalType","parentName"]),m=p(t),u=r,v=m["".concat(s,".").concat(u)]||m[u]||c[u]||i;return t?a.createElement(v,o(o({ref:n},l),{},{components:t})):a.createElement(v,o({ref:n},l))}));function u(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var i=t.length,o=new Array(i);o[0]=m;var d={};for(var s in n)hasOwnProperty.call(n,s)&&(d[s]=n[s]);d.originalType=e,d.mdxType="string"==typeof e?e:r,o[1]=d;for(var p=2;pMD5 \u52a0\u5bc6",id:"2031-md5-\u52a0\u5bc6",children:[]},{value:"20.3.2 DESC \u52a0\u89e3\u5bc6",id:"2032-desc-\u52a0\u89e3\u5bc6",children:[]},{value:"20.3.3 AES \u52a0\u89e3\u5bc6",id:"2033-aes-\u52a0\u89e3\u5bc6",children:[]},{value:"20.3.4 JWT \u52a0\u89e3\u5bc6",id:"2034-jwt-\u52a0\u89e3\u5bc6",children:[]},{value:"20.3.5 PBKDF2 \u52a0\u5bc6",id:"2035-pbkdf2-\u52a0\u5bc6",children:[]},{value:"20.3.6 RSA \u52a0\u5bc6",id:"2036-rsa-\u52a0\u5bc6",children:[]}]},{value:"20.4 \u5b57\u7b26\u4e32\u62d3\u5c55\u65b9\u5f0f",id:"204-\u5b57\u7b26\u4e32\u62d3\u5c55\u65b9\u5f0f",children:[]},{value:"20.5 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"205-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],c={toc:l};function m(e){var n=e.components,t=(0,r.Z)(e,o);return(0,i.kt)("wrapper",(0,a.Z)({},c,t,{components:n,mdxType:"MDXLayout"}),(0,i.kt)("h2",{id:"201-\u6570\u636e\u52a0\u89e3\u5bc6"},"20.1 \u6570\u636e\u52a0\u89e3\u5bc6"),(0,i.kt)("p",null,"\u7531\u4e8e\u73b0\u5728\u7684\u4e92\u8054\u7f51\u8d8a\u5177\u53d1\u8fbe\uff0c\u6570\u636e\u6210\u4e3a\u4e86\u6211\u4eec\u751f\u6d3b\u7684\u4e00\u90e8\u5206\uff0c\u5f53\u7136\u4e5f\u5e26\u6765\u4e86\u5f88\u591a\u6570\u636e\u5b89\u5168\u6027\u7684\u95ee\u9898\uff0c\u6bd4\u5982\u7528\u6237\u5bc6\u7801\u660e\u6587\u5b58\u50a8\uff0c\u7528\u6237\u4fe1\u606f\u660e\u6587\u5b58\u5728\u5728\u6d4f\u89c8\u5668 ",(0,i.kt)("inlineCode",{parentName:"p"},"cookies")," \u4e2d\u7b49\u7b49\u4e0d\u5b89\u5168\u64cd\u4f5c\u3002"),(0,i.kt)("p",null,"\u6240\u4ee5\uff0c\u5bf9\u6570\u636e\u7684\u52a0\u89e3\u5bc6\u662f\u7cfb\u7edf\u5f00\u53d1\u5fc5\u8981\u7684\u73af\u8282\u3002"),(0,i.kt)("h2",{id:"202-\u5185\u7f6e\u52a0\u5bc6\u7b97\u6cd5"},"20.2 \u5185\u7f6e\u52a0\u5bc6\u7b97\u6cd5"),(0,i.kt)("ul",null,(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"MD5")," \u52a0\u5bc6"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"DESC")," \u52a0\u89e3\u5bc6"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"AES")," \u52a0\u89e3\u5bc6"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"JWT")," \u52a0\u89e3\u5bc6"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"PBKDF2")," \u52a0\u5bc6\uff08",(0,i.kt)("inlineCode",{parentName:"li"},"Furion v2.12 +")," \u7248\u672c\u5df2\u79fb\u9664\uff09"),(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"RSA")," \u52a0\u89e3\u5bc6")),(0,i.kt)("h2",{id:"203-\u52a0\u89e3\u5bc6\u4f7f\u7528"},"20.3 \u52a0\u89e3\u5bc6\u4f7f\u7528"),(0,i.kt)("h3",{id:"2031-md5-\u52a0\u5bc6"},"20.3.1 ",(0,i.kt)("inlineCode",{parentName:"h3"},"MD5")," \u52a0\u5bc6"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// \u6d4b\u8bd5 MD5 \u52a0\u5bc6\uff0c\u6bd4\u8f83\nvar md5Hash = MD5Encryption.Encrypt("\u767e\u5c0f\u50e7"); // \u52a0\u5bc6\nvar isEqual = MD5Encryption.Compare("\u767e\u5c0f\u50e7", md5Hash); // \u6bd4\u8f83\nreturn (md5Hash, isEqual);\n\n// \u8f93\u51fa\u5927\u5199 MD5 \u52a0\u5bc6\nvar md5Hash = MD5Encryption.Encrypt("\u767e\u5c0f\u50e7", true);\n')),(0,i.kt)("h3",{id:"2032-desc-\u52a0\u89e3\u5bc6"},"20.3.2 ",(0,i.kt)("inlineCode",{parentName:"h3"},"DESC")," \u52a0\u89e3\u5bc6"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// \u6d4b\u8bd5 DESC \u52a0\u89e3\u5bc6\nvar descHash = DESCEncryption.Encrypt("\u767e\u5c0f\u50e7", "Furion"); // \u52a0\u5bc6\nvar str = DESCEncryption.Decrypt(descHash, "Furion"); // \u89e3\u5bc6\nreturn (descHash, str);\n')),(0,i.kt)("h3",{id:"2033-aes-\u52a0\u89e3\u5bc6"},"20.3.3 ",(0,i.kt)("inlineCode",{parentName:"h3"},"AES")," \u52a0\u89e3\u5bc6"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// \u6d4b\u8bd5 AES \u52a0\u89e3\u5bc6\nvar key = Guid.NewGuid().ToString("N"); // \u5bc6\u94a5\uff0c\u957f\u5ea6\u5fc5\u987b\u4e3a24\u4f4d\u621632\u4f4d\n\nvar aesHash = AESEncryption.Encrypt("\u767e\u5c0f\u50e7", key); // \u52a0\u5bc6\nvar str2 = AESEncryption.Decrypt(aesHash, key); // \u89e3\u5bc6\nreturn (aesHash, str2);\n')),(0,i.kt)("h3",{id:"2034-jwt-\u52a0\u89e3\u5bc6"},"20.3.4 ",(0,i.kt)("inlineCode",{parentName:"h3"},"JWT")," \u52a0\u89e3\u5bc6"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'var token = JWTEncryption.Encrypt(new Dictionary() // \u52a0\u5bc6\n {\n { "UserId", user.Id },\n { "Account",user.Account }\n });\n\nvar tokenData = JWTEncryption.ReadJwtToken("\u4f60\u7684token"); // \u89e3\u5bc6\n\nvar (isValid, tokenData) = JWTEncryption.Validate("\u4f60\u7684token"); // \u9a8c\u8bc1token\u6709\u6548\u671f\n')),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u6ce8\u610f")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},(0,i.kt)("inlineCode",{parentName:"p"},"JWTEncryption")," \u52a0\u89e3\u5bc6\u5e76\u672a\u5305\u542b\u5728 ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e2d\uff0c\u9700\u8981\u5b89\u88c5 ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u7684 ",(0,i.kt)("inlineCode",{parentName:"p"},"Furion.Extras.Authentication.JwtBearer")," \u62d3\u5c55\u5305\u3002"))),(0,i.kt)("h3",{id:"2035-pbkdf2-\u52a0\u5bc6"},"20.3.5 ",(0,i.kt)("inlineCode",{parentName:"h3"},"PBKDF2")," \u52a0\u5bc6"),(0,i.kt)("p",null,(0,i.kt)("strong",{parentName:"p"},(0,i.kt)("inlineCode",{parentName:"strong"},"Furion v2.12 +")," \u7248\u672c\u5df2\u79fb\u9664\u3002")),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// \u6d4b\u8bd5 PBKDF2 \u52a0\u5bc6\uff0c\u6bd4\u8f83\nvar basestring = PBKDF2Encryption.Encrypt("\u767e\u5c0f\u50e7"); // \u52a0\u5bc6\nvar isEqual = PBKDF2Encryption.Compare("\u767e\u5c0f\u50e7", basestring); // \u6bd4\u8f83\n')),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u652f\u6301\u9009\u62e9\u66f4\u591a\u53c2\u6570")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},(0,i.kt)("inlineCode",{parentName:"p"},"PBKDF2")," \u8fd8\u53ef\u4ee5\u914d\u7f6e\u66f4\u591a\u53c2\u6570\uff1a"),(0,i.kt)("ul",{parentName:"div"},(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"Startup.cs")," \u4e2d\u6ce8\u518c\u670d\u52a1")),(0,i.kt)("pre",{parentName:"div"},(0,i.kt)("code",{parentName:"pre",className:"language-cs"},"services.AddPBKDF2EncryptionOptions();\n")),(0,i.kt)("ul",{parentName:"div"},(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"appsettings.json")," \u914d\u7f6e\uff1a")),(0,i.kt)("pre",{parentName:"div"},(0,i.kt)("code",{parentName:"pre",className:"language-json"},'{\n "PBKDF2EncryptionSettings": {\n "InitialIterationCount": 110, // \u521d\u59cb\u8fed\u4ee3\u6b21\u6570\u7d2f\u52a0\u503c\n "KeyDerivation": "HMACSHA256", // \u52a0\u5bc6\u7b97\u6cd5\u89c4\u5219 KeyDerivationPrf.HMACSHA256\n "NumBytesRequested": 64 // \u6d3e\u751f\u5bc6\u94a5\u7684\u957f\u5ea6 (\u4ee5\u5b57\u8282\u4e3a\u5355\u4f4d) 512 / 8\n }\n}\n')),(0,i.kt)("ul",{parentName:"div"},(0,i.kt)("li",{parentName:"ul"},(0,i.kt)("inlineCode",{parentName:"li"},"KeyDerivation")," \u53ef\u9009\u503c\u6709\uff1a",(0,i.kt)("inlineCode",{parentName:"li"},"HMACSHA1"),"\uff0c",(0,i.kt)("inlineCode",{parentName:"li"},"HMACSHA256"),"\uff0c",(0,i.kt)("inlineCode",{parentName:"li"},"HMACSHA512"))))),(0,i.kt)("h3",{id:"2036-rsa-\u52a0\u5bc6"},"20.3.6 ",(0,i.kt)("inlineCode",{parentName:"h3"},"RSA")," \u52a0\u5bc6"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'// \u6d4b\u8bd5 RSA \u52a0\u5bc6\nvar (publicKey, privateKey) = RSAEncryption.GenerateSecretKey(2048); //\u751f\u6210 RSA \u79d8\u94a5 \u79d8\u94a5\u5927\u5c0f\u5fc5\u987b\u4e3a 2048 \u5230 16384\uff0c\u5e76\u4e14\u662f 8 \u7684\u500d\u6570\nvar basestring = RSAEncryption.Encrypt("\u767e\u5c0f\u50e7", publicKey); // \u52a0\u5bc6\nvar str2 = RSAEncryption.Decrypt(basestring, privateKey); // \u89e3\u5bc6\nreturn (basestring, str2);\n')),(0,i.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u5173\u4e8e ",(0,i.kt)("inlineCode",{parentName:"h5"},"RSA")," \u7b7e\u540d\u548c\u6821\u9a8c")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u5e95\u5c42\u4e0d\u5185\u7f6e ",(0,i.kt)("inlineCode",{parentName:"p"},"RSA")," \u7b7e\u540d\u548c\u6821\u9a8c\u529f\u80fd\uff0c\u5982\u9700\u6dfb\u52a0\u8be5\u529f\u80fd\u53ef\u67e5\u9605\u5f00\u53d1\u8005\u63d0\u4ea4\u7684\u4ee3\u7801\uff1a",(0,i.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/pulls/349"},"\u67e5\u770b RSA \u7b7e\u540d\u548c\u6821\u9a8c")))),(0,i.kt)("h2",{id:"204-\u5b57\u7b26\u4e32\u62d3\u5c55\u65b9\u5f0f"},"20.4 \u5b57\u7b26\u4e32\u62d3\u5c55\u65b9\u5f0f"),(0,i.kt)("p",null,(0,i.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4e5f\u63d0\u4f9b\u4e86\u5b57\u7b26\u4e32\u62d3\u5c55\u65b9\u5f0f\u8fdb\u884c ",(0,i.kt)("inlineCode",{parentName:"p"},"MD5\u52a0\u5bc6\u3001AES/DESC\u52a0\u89e3\u5bc6\u3001RSA\u52a0\u89e3\u5bc6"),"\u3002"),(0,i.kt)("pre",null,(0,i.kt)("code",{parentName:"pre",className:"language-cs"},'using Furion.DataEncryption.Extensions;\n\n// MD5 \u52a0\u5bc6\nvar s = "Furion".ToMD5Encrypt();\nvar b = "Furion".ToMD5Compare(s); // \u6bd4\u8f83\n\n// AES\u52a0\u89e3\u5bc6\nvar s = "Furion".ToAESEncrypt("sfdsfdsfdsfdsfdsfdsfdsfdsfdfdsfdsfdfdfdfd");\nvar str = s.ToAESDecrypt("sfdsfdsfdsfdsfdsfdsfdsfdsfdfdsfdsfdfdfdfd");\n\n// DESC \u52a0\u89e3\u5bc6\nvar s = "Furion".ToDESCEncrypt("sfdsfdsfdsfdsfdsfdsfdsfdsfdfdsfdsfdfdfdfd");\nvar str = s.ToDESCDecrypt("sfdsfdsfdsfdsfdsfdsfdsfdsfdfdsfdsfdfdfdfd");\n\n// PBKDF2 \u52a0\u5bc6\uff08`Furion v2.12 +` \u7248\u672c\u5df2\u79fb\u9664\uff01\uff01\uff01\uff01\uff01\uff01\uff01\uff01\uff09\nvar s = "Furion".ToPBKDF2Encrypt();\nvar b = "Furion".ToPBKDF2Compare(s); // \u6bd4\u8f83\n\n// RSA \u52a0\u89e3\u5bc6\nvar (publicKey, privateKey) = RSAEncryption.GenerateSecretKey(2048); //\u751f\u6210 RSA \u79d8\u94a5 \u79d8\u94a5\u5927\u5c0f\u5fc5\u987b\u4e3a 2048 \u5230 16384\uff0c\u5e76\u4e14\u662f 8 \u7684\u500d\u6570\nvar s= "Furion".ToRSAEncrpyt(publicKey); // \u52a0\u5bc6\nvar str=s.ToRSADecrypt(privateKey); // \u89e3\u5bc6\n')),(0,i.kt)("h2",{id:"205-\u53cd\u9988\u4e0e\u5efa\u8bae"},"20.5 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,i.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,i.kt)("div",{parentName:"div",className:"admonition-heading"},(0,i.kt)("h5",{parentName:"div"},(0,i.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,i.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,i.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,i.kt)("div",{parentName:"div",className:"admonition-content"},(0,i.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,i.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/fd885aa1.7c315882.js b/handbook/build/assets/js/fd885aa1.7c315882.js deleted file mode 100644 index 8665f36c954..00000000000 --- a/handbook/build/assets/js/fd885aa1.7c315882.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[5128],{3905:function(e,n,t){t.d(n,{Zo:function(){return p},kt:function(){return u}});var a=t(7294);function i(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function o(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function r(e){for(var n=1;n=0||(i[t]=e[t]);return i}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(i[t]=e[t])}return i}var l=a.createContext({}),d=function(e){var n=a.useContext(l),t=n;return e&&(t="function"==typeof e?e(n):r(r({},n),e)),t},p=function(e){var n=d(e.components);return a.createElement(l.Provider,{value:n},e.children)},c={inlineCode:"code",wrapper:function(e){var n=e.children;return a.createElement(a.Fragment,{},n)}},m=a.forwardRef((function(e,n){var t=e.components,i=e.mdxType,o=e.originalType,l=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),m=d(t),u=i,k=m["".concat(l,".").concat(u)]||m[u]||c[u]||o;return t?a.createElement(k,r(r({ref:n},p),{},{components:t})):a.createElement(k,r({ref:n},p))}));function u(e,n){var t=arguments,i=n&&n.mdxType;if("string"==typeof e||i){var o=t.length,r=new Array(o);r[0]=m;var s={};for(var l in n)hasOwnProperty.call(n,l)&&(s[l]=n[l]);s.originalType=e,s.mdxType="string"==typeof e?e:i,r[1]=s;for(var d=2;dSaaS",id:"111-\u4ec0\u4e48\u662f-saas",children:[]},{value:"11.2 \u4ec0\u4e48\u662f\u591a\u79df\u6237",id:"112-\u4ec0\u4e48\u662f\u591a\u79df\u6237",children:[]},{value:"11.3 \u5b9e\u73b0\u591a\u79df\u6237\u65b9\u6848",id:"113-\u5b9e\u73b0\u591a\u79df\u6237\u65b9\u6848",children:[{value:"11.3.1 \u72ec\u7acb\u6570\u636e\u5e93(\u57fa\u4e8e Database \u7684\u65b9\u5f0f)",id:"1131-\u72ec\u7acb\u6570\u636e\u5e93\u57fa\u4e8e-database-\u7684\u65b9\u5f0f",children:[]},{value:"11.3.2 \u5171\u4eab\u6570\u636e\u5e93\uff0c\u72ec\u7acb Schema (\u57fa\u4e8e Schema \u7684\u65b9\u5f0f)",id:"1132-\u5171\u4eab\u6570\u636e\u5e93\uff0c\u72ec\u7acb-schema-\u57fa\u4e8e-schema-\u7684\u65b9\u5f0f",children:[]},{value:"11.3.3 \u5171\u4eab\u6570\u636e\u5e93\uff0c\u5171\u4eab Schema (\u57fa\u4e8e TenantId \u7684\u65b9\u5f0f)",id:"1133-\u5171\u4eab\u6570\u636e\u5e93\uff0c\u5171\u4eab-schema-\u57fa\u4e8e-tenantid-\u7684\u65b9\u5f0f",children:[]}]},{value:"11.4 \u591a\u79df\u6237\u4f7f\u7528\u65b9\u6848",id:"114-\u591a\u79df\u6237\u4f7f\u7528\u65b9\u6848",children:[]},{value:"11.5 \u57fa\u4e8e TenantId \u7684\u65b9\u5f0f",id:"115-\u57fa\u4e8e-tenantid-\u7684\u65b9\u5f0f",children:[{value:"11.5.1 \u521b\u5efa\u79df\u6237\u6570\u636e\u5e93\u4e0a\u4e0b\u6587",id:"1151-\u521b\u5efa\u79df\u6237\u6570\u636e\u5e93\u4e0a\u4e0b\u6587",children:[]},{value:"11.5.2 \u6ce8\u518c\u591a\u79df\u6237\u6570\u636e\u5e93\u4e0a\u4e0b\u6587",id:"1152-\u6ce8\u518c\u591a\u79df\u6237\u6570\u636e\u5e93\u4e0a\u4e0b\u6587",children:[]},{value:"11.5.3 \u6dfb\u52a0 Tenant \u79cd\u5b50\u6570\u636e",id:"1153-\u6dfb\u52a0-tenant-\u79cd\u5b50\u6570\u636e",children:[]},{value:"11.5.4 \u6839\u636e\u6a21\u578b\u521b\u5efa Tenant \u8868",id:"1154-\u6839\u636e\u6a21\u578b\u521b\u5efa-tenant-\u8868",children:[]},{value:"11.5.5 \u5b9e\u73b0 IMultiTenantOnTable \u63a5\u53e3",id:"1155-\u5b9e\u73b0-imultitenantontable-\u63a5\u53e3",children:[]},{value:"11.5.6 \u5b9e\u73b0 IModelBuilderFilter \u63a5\u53e3",id:"1156-\u5b9e\u73b0-imodelbuilderfilter-\u63a5\u53e3",children:[]},{value:"11.5.7 \u91cd\u5199 SavingChangesEvent \u4e8b\u4ef6\u65b9\u6cd5",id:"1157-\u91cd\u5199-savingchangesevent-\u4e8b\u4ef6\u65b9\u6cd5",children:[]}]},{value:"11.6 \u57fa\u4e8e Database \u7684\u65b9\u5f0f",id:"116-\u57fa\u4e8e-database-\u7684\u65b9\u5f0f",children:[{value:"11.6.1 \u521b\u5efa\u79df\u6237\u6570\u636e\u5e93\u4e0a\u4e0b\u6587",id:"1161-\u521b\u5efa\u79df\u6237\u6570\u636e\u5e93\u4e0a\u4e0b\u6587",children:[]},{value:"11.6.2 \u6ce8\u518c\u591a\u79df\u6237\u6570\u636e\u5e93\u4e0a\u4e0b\u6587",id:"1162-\u6ce8\u518c\u591a\u79df\u6237\u6570\u636e\u5e93\u4e0a\u4e0b\u6587",children:[]},{value:"11.6.3 \u6dfb\u52a0 Tenant \u79cd\u5b50\u6570\u636e",id:"1163-\u6dfb\u52a0-tenant-\u79cd\u5b50\u6570\u636e",children:[]},{value:"11.6.4 \u6839\u636e\u6a21\u578b\u521b\u5efa Tenant \u8868",id:"1164-\u6839\u636e\u6a21\u578b\u521b\u5efa-tenant-\u8868",children:[]},{value:"11.6.5 \u5b9e\u73b0 IMultiTenantOnDatabase \u63a5\u53e3",id:"1165-\u5b9e\u73b0-imultitenantondatabase-\u63a5\u53e3",children:[]},{value:"11.6.6 \u91cd\u5199 OnConfiguring \u65b9\u6cd5",id:"1166-\u91cd\u5199-onconfiguring-\u65b9\u6cd5",children:[]}]},{value:"11.7 \u57fa\u4e8e Schema \u7684\u65b9\u5f0f",id:"117-\u57fa\u4e8e-schema-\u7684\u65b9\u5f0f",children:[{value:"11.7.1 \u521b\u5efa\u79df\u6237\u6570\u636e\u5e93\u4e0a\u4e0b\u6587",id:"1171-\u521b\u5efa\u79df\u6237\u6570\u636e\u5e93\u4e0a\u4e0b\u6587",children:[]},{value:"11.7.2 \u6ce8\u518c\u591a\u79df\u6237\u6570\u636e\u5e93\u4e0a\u4e0b\u6587",id:"1172-\u6ce8\u518c\u591a\u79df\u6237\u6570\u636e\u5e93\u4e0a\u4e0b\u6587",children:[]},{value:"11.7.3 \u6dfb\u52a0 Tenant \u79cd\u5b50\u6570\u636e",id:"1173-\u6dfb\u52a0-tenant-\u79cd\u5b50\u6570\u636e",children:[]},{value:"11.7.4 \u6839\u636e\u6a21\u578b\u521b\u5efa Tenant \u8868",id:"1174-\u6839\u636e\u6a21\u578b\u521b\u5efa-tenant-\u8868",children:[]},{value:"11.7.5 \u5b9e\u73b0 IMultiTenantOnSchema \u63a5\u53e3",id:"1175-\u5b9e\u73b0-imultitenantonschema-\u63a5\u53e3",children:[]},{value:"11.7.6 \u5173\u4e8e Code First \u6570\u636e\u8fc1\u79fb",id:"1176-\u5173\u4e8e-code-first-\u6570\u636e\u8fc1\u79fb",children:[]}]},{value:"11.8 \u81ea\u5b9a\u4e49 Tenant \u7c7b\u578b",id:"118-\u81ea\u5b9a\u4e49-tenant-\u7c7b\u578b",children:[{value:"11.8.1 \u542f\u52a8\u81ea\u5b9a\u4e49\u591a\u79df\u6237\u7c7b\u578b\u914d\u7f6e",id:"1181-\u542f\u52a8\u81ea\u5b9a\u4e49\u591a\u79df\u6237\u7c7b\u578b\u914d\u7f6e",children:[]},{value:"11.8.2 \u81ea\u5b9a\u4e49\u79df\u6237\u7c7b",id:"1182-\u81ea\u5b9a\u4e49\u79df\u6237\u7c7b",children:[]}]},{value:"11.9 \u5237\u65b0\u79df\u6237\u7f13\u5b58",id:"119-\u5237\u65b0\u79df\u6237\u7f13\u5b58",children:[]},{value:"11.10 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"1110-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],m={toc:c};function u(e){var n=e.components,t=(0,i.Z)(e,s);return(0,o.kt)("wrapper",(0,a.Z)({},m,t,{components:n,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"111-\u4ec0\u4e48\u662f-saas"},"11.1 \u4ec0\u4e48\u662f ",(0,o.kt)("inlineCode",{parentName:"h2"},"SaaS")),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"SaaS \u662f Software-as-a-Service\uff08\u8f6f\u4ef6\u5373\u670d\u52a1\uff09\u7684\u7b80\u79f0\uff0c\u968f\u7740\u4e92\u8054\u7f51\u6280\u672f\u7684\u53d1\u5c55\u548c\u5e94\u7528\u8f6f\u4ef6\u7684\u6210\u719f\uff0c \u5728 21 \u4e16\u7eaa\u5f00\u59cb\u5174\u8d77\u7684\u4e00\u79cd\u5b8c\u5168\u521b\u65b0\u7684\u8f6f\u4ef6\u5e94\u7528\u6a21\u5f0f\u3002\u5b83\u4e0e\u201con-demand software\u201d\uff0cthe application service provider(ASP\uff0c\u5e94\u7528\u670d\u52a1\u63d0\u4f9b\u5546)\uff0chosted software(\u6258\u7ba1\u8f6f\u4ef6)\u6240\u5177\u6709\u76f8\u4f3c\u7684\u542b\u4e49\u3002"),(0,o.kt)("p",{parentName:"blockquote"},"\u5b83\u662f\u4e00\u79cd\u901a\u8fc7 Internet \u63d0\u4f9b\u8f6f\u4ef6\u7684\u6a21\u5f0f\uff0c\u5382\u5546\u5c06\u5e94\u7528\u8f6f\u4ef6\u7edf\u4e00\u90e8\u7f72\u5728\u81ea\u5df1\u7684\u670d\u52a1\u5668\u4e0a\uff0c\u5ba2\u6237\u53ef\u4ee5\u6839\u636e\u81ea\u5df1\u5b9e\u9645\u9700\u6c42\uff0c\u901a\u8fc7\u4e92\u8054\u7f51\u5411\u5382\u5546\u5b9a\u8d2d\u6240\u9700\u7684\u5e94\u7528\u8f6f\u4ef6\u670d\u52a1\uff0c\u6309\u5b9a\u8d2d\u7684\u670d\u52a1\u591a\u5c11\u548c\u65f6\u95f4\u957f\u77ed\u5411\u5382\u5546\u652f\u4ed8\u8d39\u7528\uff0c\u5e76\u901a\u8fc7\u4e92\u8054\u7f51\u83b7\u5f97\u5382\u5546\u63d0\u4f9b\u7684\u670d\u52a1\u3002\u7528\u6237\u4e0d\u7528\u518d\u8d2d\u4e70\u8f6f\u4ef6\uff0c\u800c\u6539\u7528\u5411\u63d0\u4f9b\u5546\u79df\u7528\u57fa\u4e8e Web \u7684\u8f6f\u4ef6\uff0c\u6765\u7ba1\u7406\u4f01\u4e1a\u7ecf\u8425\u6d3b\u52a8\uff0c\u4e14\u65e0\u9700\u5bf9\u8f6f\u4ef6\u8fdb\u884c\u7ef4\u62a4\uff0c\u670d\u52a1\u63d0\u4f9b\u5546\u4f1a\u5168\u6743\u7ba1\u7406\u548c\u7ef4\u62a4\u8f6f\u4ef6\uff0c\u8f6f\u4ef6\u5382\u5546\u5728\u5411\u5ba2\u6237\u63d0\u4f9b\u4e92\u8054\u7f51\u5e94\u7528\u7684\u540c\u65f6\uff0c\u4e5f\u63d0\u4f9b\u8f6f\u4ef6\u7684\u79bb\u7ebf\u64cd\u4f5c\u548c\u672c\u5730\u6570\u636e\u5b58\u50a8\uff0c\u8ba9\u7528\u6237\u968f\u65f6\u968f\u5730\u90fd\u53ef\u4ee5\u4f7f\u7528\u5176\u5b9a\u8d2d\u7684\u8f6f\u4ef6\u548c\u670d\u52a1\u3002"),(0,o.kt)("p",{parentName:"blockquote"},"\u5bf9\u4e8e\u8bb8\u591a\u5c0f\u578b\u4f01\u4e1a\u6765\u8bf4\uff0cSaaS \u662f\u91c7\u7528\u5148\u8fdb\u6280\u672f\u7684\u6700\u597d\u9014\u5f84\uff0c\u5b83\u6d88\u9664\u4e86\u4f01\u4e1a\u8d2d\u4e70\u3001\u6784\u5efa\u548c\u7ef4\u62a4\u57fa\u7840\u8bbe\u65bd\u548c\u5e94\u7528\u7a0b\u5e8f\u7684\u9700\u8981\u3002")),(0,o.kt)("h2",{id:"112-\u4ec0\u4e48\u662f\u591a\u79df\u6237"},"11.2 \u4ec0\u4e48\u662f\u591a\u79df\u6237"),(0,o.kt)("p",null,"\u591a\u79df\u6237\u6280\u672f\u6216\u79f0\u591a\u91cd\u79df\u8d41\u6280\u672f\uff0c\u7b80\u79f0 ",(0,o.kt)("inlineCode",{parentName:"p"},"SaaS"),"\uff0c\u662f\u4e00\u79cd\u8f6f\u4ef6\u67b6\u6784\u6280\u672f\uff0c\u662f\u5b9e\u73b0\u5982\u4f55\u5728\u591a\u7528\u6237\u73af\u5883\u4e0b\uff08\u6b64\u5904\u7684\u591a\u7528\u6237\u4e00\u822c\u662f\u9762\u5411\u4f01\u4e1a\u7528\u6237\uff09\u5171\u7528\u76f8\u540c\u7684\u7cfb\u7edf\u6216\u7a0b\u5e8f\u7ec4\u4ef6\uff0c\u5e76\u4e14\u53ef\u786e\u4fdd\u5404\u7528\u6237\u95f4\u6570\u636e\u7684\u9694\u79bb\u6027\u3002"),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"\u7b80\u5355\u8bb2\uff1a\u5728\u4e00\u53f0\u670d\u52a1\u5668\u4e0a\u8fd0\u884c\u5355\u4e2a\u5e94\u7528\u5b9e\u4f8b\uff0c\u5b83\u4e3a\u591a\u4e2a\u79df\u6237\uff08\u5ba2\u6237\uff09\u63d0\u4f9b\u670d\u52a1\u3002"),"\u4ece\u5b9a\u4e49\u4e2d\u6211\u4eec\u53ef\u4ee5\u7406\u89e3\uff1a\u591a\u79df\u6237\u662f\u4e00\u79cd\u67b6\u6784\uff0c\u76ee\u7684\u662f\u4e3a\u4e86\u8ba9\u591a\u7528\u6237\u73af\u5883\u4e0b\u4f7f\u7528\u540c\u4e00\u5957\u7a0b\u5e8f\uff0c\u4e14\u4fdd\u8bc1\u7528\u6237\u95f4\u6570\u636e\u9694\u79bb\u3002\u90a3\u4e48\u91cd\u70b9\u5c31\u5f88\u6d45\u663e\u6613\u61c2\u4e86\uff0c\u591a\u79df\u6237\u7684\u91cd\u70b9\u5c31\u662f\u540c\u4e00\u5957\u7a0b\u5e8f\u4e0b\u5b9e\u73b0\u591a\u7528\u6237\u6570\u636e\u7684\u9694\u79bb\u3002"),(0,o.kt)("h2",{id:"113-\u5b9e\u73b0\u591a\u79df\u6237\u65b9\u6848"},"11.3 \u5b9e\u73b0\u591a\u79df\u6237\u65b9\u6848"),(0,o.kt)("h3",{id:"1131-\u72ec\u7acb\u6570\u636e\u5e93\u57fa\u4e8e-database-\u7684\u65b9\u5f0f"},"11.3.1 \u72ec\u7acb\u6570\u636e\u5e93(\u57fa\u4e8e ",(0,o.kt)("inlineCode",{parentName:"h3"},"Database")," \u7684\u65b9\u5f0f)"),(0,o.kt)("p",null,"\u8fd9\u662f\u7b2c\u4e00\u79cd\u65b9\u6848\uff0c\u5373\u4e00\u4e2a\u79df\u6237\u4e00\u4e2a\u6570\u636e\u5e93\uff0c\u8fd9\u79cd\u65b9\u6848\u7684\u7528\u6237\u6570\u636e\u9694\u79bb\u7ea7\u522b\u6700\u9ad8\uff0c\u5b89\u5168\u6027\u6700\u597d\uff0c\u4f46\u6210\u672c\u8f83\u9ad8\u3002"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("strong",{parentName:"p"},"\u4f18\u70b9\uff1a"),"\n\u4e3a\u4e0d\u540c\u7684\u79df\u6237\u63d0\u4f9b\u72ec\u7acb\u7684\u6570\u636e\u5e93\uff0c\u6709\u52a9\u4e8e\u7b80\u5316\u6570\u636e\u6a21\u578b\u7684\u6269\u5c55\u8bbe\u8ba1\uff0c\u6ee1\u8db3\u4e0d\u540c\u79df\u6237\u7684\u72ec\u7279\u9700\u6c42\uff1b\u5982\u679c\u51fa\u73b0\u6545\u969c\uff0c\u6062\u590d\u6570\u636e\u6bd4\u8f83\u7b80\u5355\u3002")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("strong",{parentName:"p"},"\u7f3a\u70b9\uff1a"),"\n\u589e\u591a\u4e86\u6570\u636e\u5e93\u7684\u5b89\u88c5\u6570\u91cf\uff0c\u968f\u4e4b\u5e26\u6765\u7ef4\u62a4\u6210\u672c\u548c\u8d2d\u7f6e\u6210\u672c\u7684\u589e\u52a0\u3002 \u8fd9\u79cd\u65b9\u6848\u4e0e\u4f20\u7edf\u7684\u4e00\u4e2a\u5ba2\u6237\u3001\u4e00\u5957\u6570\u636e\u3001\u4e00\u5957\u90e8\u7f72\u7c7b\u4f3c\uff0c\u5dee\u522b\u53ea\u5728\u4e8e\u8f6f\u4ef6\u7edf\u4e00\u90e8\u7f72\u5728\u8fd0\u8425\u5546\u90a3\u91cc\u3002\u5982\u679c\u9762\u5bf9\u7684\u662f\u94f6\u884c\u3001\u533b\u9662\u7b49\u9700\u8981\u975e\u5e38\u9ad8\u6570\u636e\u9694\u79bb\u7ea7\u522b\u7684\u79df\u6237\uff0c\u53ef\u4ee5\u9009\u62e9\u8fd9\u79cd\u6a21\u5f0f\uff0c\u63d0\u9ad8\u79df\u7528\u7684\u5b9a\u4ef7\u3002\u5982\u679c\u5b9a\u4ef7\u8f83\u4f4e\uff0c\u4ea7\u54c1\u8d70\u4f4e\u4ef7\u8def\u7ebf\uff0c\u8fd9\u79cd\u65b9\u6848\u4e00\u822c\u5bf9\u8fd0\u8425\u5546\u6765\u8bf4\u662f\u65e0\u6cd5\u627f\u53d7\u7684\u3002"))),(0,o.kt)("h3",{id:"1132-\u5171\u4eab\u6570\u636e\u5e93\uff0c\u72ec\u7acb-schema-\u57fa\u4e8e-schema-\u7684\u65b9\u5f0f"},"11.3.2 \u5171\u4eab\u6570\u636e\u5e93\uff0c\u72ec\u7acb ",(0,o.kt)("inlineCode",{parentName:"h3"},"Schema")," (\u57fa\u4e8e ",(0,o.kt)("inlineCode",{parentName:"h3"},"Schema")," \u7684\u65b9\u5f0f)"),(0,o.kt)("p",null,"\u8fd9\u662f\u7b2c\u4e8c\u79cd\u65b9\u6848\uff0c\u5373\u591a\u4e2a\u6216\u6240\u6709\u79df\u6237\u5171\u4eab ",(0,o.kt)("inlineCode",{parentName:"p"},"Database"),"\uff0c\u4f46\u662f\u6bcf\u4e2a\u79df\u6237\u4e00\u4e2a ",(0,o.kt)("inlineCode",{parentName:"p"},"Schema"),"\uff08\u4e5f\u53ef\u53eb\u505a\u4e00\u4e2a user\uff09\u3002\u5e95\u5c42\u5e93\u6bd4\u5982\u662f\uff1a",(0,o.kt)("inlineCode",{parentName:"p"},"SqlServer"),"\u3001",(0,o.kt)("inlineCode",{parentName:"p"},"Oracle")," \u7b49\uff0c\u4e00\u4e2a\u6570\u636e\u5e93\u4e0b\u53ef\u4ee5\u6709\u591a\u4e2a ",(0,o.kt)("inlineCode",{parentName:"p"},"Schema"),"\u3002"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("strong",{parentName:"p"},"\u4f18\u70b9\uff1a"),"\n\u4e3a\u5b89\u5168\u6027\u8981\u6c42\u8f83\u9ad8\u7684\u79df\u6237\u63d0\u4f9b\u4e86\u4e00\u5b9a\u7a0b\u5ea6\u7684\u903b\u8f91\u6570\u636e\u9694\u79bb\uff0c\u5e76\u4e0d\u662f\u5b8c\u5168\u9694\u79bb\uff1b\u6bcf\u4e2a\u6570\u636e\u5e93\u53ef\u652f\u6301\u66f4\u591a\u7684\u79df\u6237\u6570\u91cf\u3002")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("strong",{parentName:"p"},"\u7f3a\u70b9\uff1a"),"\n\u5982\u679c\u51fa\u73b0\u6545\u969c\uff0c\u6570\u636e\u6062\u590d\u6bd4\u8f83\u56f0\u96be\uff0c\u56e0\u4e3a\u6062\u590d\u6570\u636e\u5e93\u5c06\u7275\u6d89\u5230\u5176\u4ed6\u79df\u6237\u7684\u6570\u636e\uff1b \u5982\u679c\u9700\u8981\u8de8\u79df\u6237\u7edf\u8ba1\u6570\u636e\uff0c\u5b58\u5728\u4e00\u5b9a\u56f0\u96be\u3002"))),(0,o.kt)("h3",{id:"1133-\u5171\u4eab\u6570\u636e\u5e93\uff0c\u5171\u4eab-schema-\u57fa\u4e8e-tenantid-\u7684\u65b9\u5f0f"},"11.3.3 \u5171\u4eab\u6570\u636e\u5e93\uff0c\u5171\u4eab ",(0,o.kt)("inlineCode",{parentName:"h3"},"Schema")," (\u57fa\u4e8e ",(0,o.kt)("inlineCode",{parentName:"h3"},"TenantId")," \u7684\u65b9\u5f0f)"),(0,o.kt)("p",null,"\u5171\u4eab\u6570\u636e\u8868 \u8fd9\u662f\u7b2c\u4e09\u79cd\u65b9\u6848\uff0c\u5373\u79df\u6237\u5171\u4eab\u540c\u4e00\u4e2a ",(0,o.kt)("inlineCode",{parentName:"p"},"Database"),"\u3001\u540c\u4e00\u4e2a ",(0,o.kt)("inlineCode",{parentName:"p"},"Schema"),"\uff0c\u4f46\u5728\u8868\u4e2d\u589e\u52a0 ",(0,o.kt)("strong",{parentName:"p"},(0,o.kt)("inlineCode",{parentName:"strong"},"TenantId"))," \u591a\u79df\u6237\u7684\u6570\u636e\u5b57\u6bb5\u3002\u8fd9\u662f\u5171\u4eab\u7a0b\u5ea6\u6700\u9ad8\u3001\u9694\u79bb\u7ea7\u522b\u6700\u4f4e\u7684\u6a21\u5f0f\u3002 \u5373\u6bcf\u63d2\u5165\u4e00\u6761\u6570\u636e\u65f6\u90fd\u9700\u8981\u6709\u4e00\u4e2a\u5ba2\u6237\u7684\u6807\u8bc6\u3002\u8fd9\u6837\u624d\u80fd\u5728\u540c\u4e00\u5f20\u8868\u4e2d\u533a\u5206\u51fa\u4e0d\u540c\u5ba2\u6237\u7684\u6570\u636e\u3002"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("strong",{parentName:"p"},"\u4f18\u70b9\uff1a"),"\n\u4e09\u79cd\u65b9\u6848\u6bd4\u8f83\uff0c\u7b2c\u4e09\u79cd\u65b9\u6848\u7684\u7ef4\u62a4\u548c\u8d2d\u7f6e\u6210\u672c\u6700\u4f4e\uff0c\u5141\u8bb8\u6bcf\u4e2a\u6570\u636e\u5e93\u652f\u6301\u7684\u79df\u6237\u6570\u91cf\u6700\u591a\u3002")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("strong",{parentName:"p"},"\u7f3a\u70b9\uff1a"),"\n\u9694\u79bb\u7ea7\u522b\u6700\u4f4e\uff0c\u5b89\u5168\u6027\u6700\u4f4e\uff0c\u9700\u8981\u5728\u8bbe\u8ba1\u5f00\u53d1\u65f6\u52a0\u5927\u5bf9\u5b89\u5168\u7684\u5f00\u53d1\u91cf\uff1b \u6570\u636e\u5907\u4efd\u548c\u6062\u590d\u6700\u56f0\u96be\uff0c\u9700\u8981\u9010\u8868\u9010\u6761\u5907\u4efd\u548c\u8fd8\u539f\u3002"))),(0,o.kt)("h2",{id:"114-\u591a\u79df\u6237\u4f7f\u7528\u65b9\u6848"},"11.4 \u591a\u79df\u6237\u4f7f\u7528\u65b9\u6848"),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u652f\u6301\u4ee5\u4e0a\u4e09\u79cd\u591a\u79df\u6237\u5b9e\u73b0\u65b9\u6848\uff0c\u4f7f\u7528\u7b80\u5355\u4e14\u5bb9\u6613\u7ef4\u62a4\u3002\u4e0b\u9762\u5206\u522b\u4f7f\u7528\u4e09\u79cd\u4e0d\u540c\u65b9\u5f0f\u6f14\u793a\u591a\u79df\u6237\u65b9\u6848\u7528\u6cd5\u3002"),(0,o.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u8bf4\u660e")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u4e00\u65e6 ",(0,o.kt)("inlineCode",{parentName:"p"},"\u6570\u636e\u5e93\u4e0a\u4e0b\u6587")," \u7c7b\u7ee7\u627f\u4e86\u79df\u6237\u4efb\u610f\u63a5\u53e3\uff0c\u5219\u81ea\u52a8\u5f00\u59cb\u591a\u79df\u6237\u529f\u80fd\u652f\u6301\u3002"))),(0,o.kt)("h2",{id:"115-\u57fa\u4e8e-tenantid-\u7684\u65b9\u5f0f"},"11.5 \u57fa\u4e8e ",(0,o.kt)("inlineCode",{parentName:"h2"},"TenantId")," \u7684\u65b9\u5f0f"),(0,o.kt)("p",null,"\u6b64\u65b9\u5f0f\u5728\u4e2d\u5c0f\u578b\u4f01\u4e1a\u7cfb\u7edf\u4e2d\u6700\u4e3a\u5e38\u7528\uff0c\u7ef4\u62a4\u6210\u672c\u4f4e\uff0c\u8d2d\u7f6e\u6210\u672c\u4f4e\u3002"),(0,o.kt)("h3",{id:"1151-\u521b\u5efa\u79df\u6237\u6570\u636e\u5e93\u4e0a\u4e0b\u6587"},"11.5.1 \u521b\u5efa\u79df\u6237\u6570\u636e\u5e93\u4e0a\u4e0b\u6587"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:'{6-7} title="Furion.EntityFramework.Core\\DbContexts\\MultiTenantDbContext.cs"',"{6-7}":!0,title:'"Furion.EntityFramework.Core\\DbContexts\\MultiTenantDbContext.cs"'},'using Furion.DatabaseAccessor;\nusing Microsoft.EntityFrameworkCore;\n\nnamespace Furion.EntityFramework.Core\n{\n [AppDbContext("Sqlite3ConnectionString", DbProvider.Sqlite)]\n public class MultiTenantDbContext : AppDbContext\n {\n public MultiTenantDbContext(DbContextOptions options) : base(options)\n {\n }\n }\n}\n')),(0,o.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u6ce8\u610f")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u591a\u79df\u6237\u64cd\u4f5c\u5efa\u8bae\u5355\u72ec\u4e00\u4e2a\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\uff0c\u800c\u4e14\u9700\u6307\u5b9a ",(0,o.kt)("inlineCode",{parentName:"p"},"MultiTenantDbContextLocator")," \u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u5b9a\u4f4d\u5668\u3002"))),(0,o.kt)("h3",{id:"1152-\u6ce8\u518c\u591a\u79df\u6237\u6570\u636e\u5e93\u4e0a\u4e0b\u6587"},"11.5.2 \u6ce8\u518c\u591a\u79df\u6237\u6570\u636e\u5e93\u4e0a\u4e0b\u6587"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{14}","{14}":!0},"using Furion.DatabaseAccessor;\nusing Microsoft.Extensions.DependencyInjection;\n\nnamespace Furion.EntityFramework.Core\n{\n [AppStartup(600)]\n public sealed class FurEntityFrameworkCoreStartup : AppStartup\n {\n public void ConfigureServices(IServiceCollection services)\n {\n services.AddDatabaseAccessor(options =>\n {\n options.AddDbPool();\n options.AddDbPool();\n });\n }\n }\n}\n")),(0,o.kt)("h3",{id:"1153-\u6dfb\u52a0-tenant-\u79cd\u5b50\u6570\u636e"},"11.5.3 \u6dfb\u52a0 ",(0,o.kt)("inlineCode",{parentName:"h3"},"Tenant")," \u79cd\u5b50\u6570\u636e"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:'{8,12-28} title="Furion.EntityFramework.Core\\SeedDatas\\TenantSeedData.cs"',"{8,12-28}":!0,title:'"Furion.EntityFramework.Core\\SeedDatas\\TenantSeedData.cs"'},'using Furion.DatabaseAccessor;\nusing Microsoft.EntityFrameworkCore;\nusing System;\nusing System.Collections.Generic;\n\nnamespace Furion.EntityFramework.Core\n{\n public class TenantSeedData : IEntitySeedData\n {\n public IEnumerable HasData(DbContext dbContext, Type dbContextLocator)\n {\n return new List\n {\n new Tenant\n {\n TenantId = Guid.Parse("383AFB88-F519-FFF8-B364-6D563BF3687F"),\n Name = "\u9ed8\u8ba4\u79df\u6237",\n Host = "localhost:44313",\n CreatedTime = DateTime.Parse("2020-10-06 20:19:07")\n },\n new Tenant\n {\n TenantId = Guid.Parse("C5798CB6-16D6-0F42-EB56-59C695353BC0"),\n Name = "\u5176\u4ed6\u79df\u6237",\n Host = "localhost:5000",\n CreatedTime = DateTime.Parse("2020-10-06 20:20:32")\n }\n };\n }\n }\n}\n')),(0,o.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u7279\u522b\u8bf4\u660e")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u8be5\u6b65\u9aa4\u53ea\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"Code First")," \u65b9\u5f0f\u6267\u884c\uff0c",(0,o.kt)("inlineCode",{parentName:"p"},"Database First")," \u65e0\u9700\u914d\u7f6e\u79cd\u5b50\u6570\u636e\u3002"))),(0,o.kt)("h3",{id:"1154-\u6839\u636e\u6a21\u578b\u521b\u5efa-tenant-\u8868"},"11.5.4 \u6839\u636e\u6a21\u578b\u521b\u5efa ",(0,o.kt)("inlineCode",{parentName:"h3"},"Tenant")," \u8868"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-shell"},"Add-Migration add_tenant_table -Context MultiTenantDbContext\n")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-shell"},"Update-Database -Context MultiTenantDbContext\n")),(0,o.kt)("h3",{id:"1155-\u5b9e\u73b0-imultitenantontable-\u63a5\u53e3"},"11.5.5 \u5b9e\u73b0 ",(0,o.kt)("inlineCode",{parentName:"h3"},"IMultiTenantOnTable")," \u63a5\u53e3"),(0,o.kt)("p",null,"\u5728\u9700\u8981\u591a\u79df\u6237\u7684\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u4e2d\u5b9e\u73b0 ",(0,o.kt)("inlineCode",{parentName:"p"},"IMultiTenantOnTable")," \u63a5\u53e3\uff0c\u5982\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{8,14-17}","{8,14-17}":!0},'using Furion.DatabaseAccessor;\nusing Microsoft.EntityFrameworkCore;\nusing System;\n\nnamespace Furion.EntityFramework.Core\n{\n [AppDbContext("Sqlite3ConnectionString", DbProvider.Sqlite)]\n public class FurionDbContext : AppDbContext, IMultiTenantOnTable, IModelBuilderFilter\n {\n public FurionDbContext(DbContextOptions options) : base(options)\n {\n }\n\n public object GetTenantId()\n {\n return base.Tenant?.TenantId ?? Guid.Empty;\n }\n }\n}\n')),(0,o.kt)("p",null,"\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"GetTenantId()")," \u65b9\u6cd5\u4e2d\uff0c\u9996\u5148\u83b7\u53d6\u8bf7\u6c42\u7684 ",(0,o.kt)("inlineCode",{parentName:"p"},"\u4e3b\u673a\u5730\u5740"),"\uff0c\u7136\u540e\u6839\u636e\u4e3b\u673a\u5730\u5740\u67e5\u8be2\u5bf9\u5e94\u7684\u79df\u6237 ",(0,o.kt)("inlineCode",{parentName:"p"},"TenantId"),"\uff0c\u907f\u514d\u591a\u6b21\u67e5\u8be2\u6570\u636e\u5e93\uff0c\u8fd9\u91cc\u4f7f\u7528\u4e86 ",(0,o.kt)("inlineCode",{parentName:"p"},"IMemoryCache")," \u5185\u5b58\u7f13\u5b58\u3002"),(0,o.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u8bf4\u660e")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},(0,o.kt)("inlineCode",{parentName:"p"},"base.Tenant")," \u53ea\u662f ",(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u7684\u9ed8\u8ba4\u79df\u6237\u5b9e\u73b0\u65b9\u6cd5\uff0c\u5982\u679c\u4e0d\u80fd\u6ee1\u8db3\u4e1a\u52a1\u9700\u6c42\uff0c\u53ea\u9700\u8981\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"GetTenantId")," \u91cc\u9762\u5199\u4f60\u7684\u4e1a\u52a1\u4ee3\u7801\u5373\u53ef\uff0c\u4e5f\u5c31\u662f\u65e0\u9700\u8c03\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"base.Tenant"),"\u3002\u5982\uff1a"),(0,o.kt)("pre",{parentName:"div"},(0,o.kt)("code",{parentName:"pre",className:"language-cs"},"public object GetTenantId()\n{\n // \u8fd9\u91cc\u662f\u4f60\u83b7\u53d6 TenantId \u7684\u903b\u8f91\n return \u4f60\u7684 TenantId;\n}\n")))),(0,o.kt)("h3",{id:"1156-\u5b9e\u73b0-imodelbuilderfilter-\u63a5\u53e3"},"11.5.6 \u5b9e\u73b0 ",(0,o.kt)("inlineCode",{parentName:"h3"},"IModelBuilderFilter")," \u63a5\u53e3"),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"IModelBuilderFilter")," \u63a5\u53e3\u662f\u5168\u5c40\u67e5\u8be2\u8fc7\u6ee4\u5668\u5b9e\u73b0\u63a5\u53e3\uff0c\u6240\u4ee5\u6211\u4eec\u9700\u8981\u914d\u7f6e\u5b9e\u4f53 ",(0,o.kt)("inlineCode",{parentName:"p"},"TenantId")," \u8fc7\u6ee4\u5668"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{9,20-23}","{9,20-23}":!0},'using Furion.DatabaseAccessor;\nusing Microsoft.EntityFrameworkCore;\nusing Microsoft.EntityFrameworkCore.Metadata.Builders;\nusing System;\n\nnamespace Furion.EntityFramework.Core\n{\n [AppDbContext("Sqlite3ConnectionString", DbProvider.Sqlite)]\n public class FurionDbContext : AppDbContext, IMultiTenantOnTable, IModelBuilderFilter\n {\n public FurionDbContext(DbContextOptions options) : base(options)\n {\n }\n\n public object GetTenantId()\n {\n return base.Tenant?.TenantId ?? Guid.Empty;\n }\n\n public void OnCreating(ModelBuilder modelBuilder, EntityTypeBuilder entityBuilder, DbContext dbContext, Type dbContextLocator)\n {\n entityBuilder.HasQueryFilter(BuildTenantQueryFilter(entityBuilder, dbContext));\n }\n }\n}\n')),(0,o.kt)("h3",{id:"1157-\u91cd\u5199-savingchangesevent-\u4e8b\u4ef6\u65b9\u6cd5"},"11.5.7 \u91cd\u5199 ",(0,o.kt)("inlineCode",{parentName:"h3"},"SavingChangesEvent")," \u4e8b\u4ef6\u65b9\u6cd5"),(0,o.kt)("p",null,"\u901a\u8fc7\u4e0a\u9762\u7684\u6b65\u9aa4\uff0c\u6211\u4eec\u5df2\u7ecf\u89e3\u51b3\u4e86 ",(0,o.kt)("inlineCode",{parentName:"p"},"\u67e5\u8be2")," \u79df\u6237\u8fc7\u6ee4\u529f\u80fd\uff0c\u4f46\u662f ",(0,o.kt)("inlineCode",{parentName:"p"},"\u65b0\u589e")," \u548c ",(0,o.kt)("inlineCode",{parentName:"p"},"\u66f4\u65b0")," \u8fd8\u672a\u5904\u7406\u3002"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"\u65b0\u589e")," \u6570\u636e\u7684\u65f6\u5019\u81ea\u52a8\u8bbe\u7f6e ",(0,o.kt)("inlineCode",{parentName:"li"},"TenantId")," \u7684\u503c"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"\u66f4\u65b0")," \u6570\u636e\u7684\u65f6\u5019\u6392\u9664 ",(0,o.kt)("inlineCode",{parentName:"li"},"TenantId")," \u5c5e\u6027\u66f4\u65b0")),(0,o.kt)("p",null,"\u5b9e\u73b0\u4e0a\u9762\u7684\u6b65\u9aa4\u5f88\u7b80\u5355\uff0c\u53ea\u9700\u8981\u91cd\u5199 ",(0,o.kt)("inlineCode",{parentName:"p"},"SavingChangesEvent")," \u4e8b\u4ef6\u65b9\u6cd5\u5373\u53ef\u3002"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{26-48}","{26-48}":!0},'using Furion.DatabaseAccessor;\nusing Microsoft.EntityFrameworkCore;\nusing Microsoft.EntityFrameworkCore.Metadata.Builders;\nusing System;\nusing System.Linq;\n\nnamespace Furion.EntityFramework.Core\n{\n [AppDbContext("Sqlite3ConnectionString", DbProvider.Sqlite)]\n public class FurionDbContext : AppDbContext, IMultiTenantOnTable, IModelBuilderFilter\n {\n public FurionDbContext(DbContextOptions options) : base(options)\n {\n }\n\n public object GetTenantId()\n {\n return base.Tenant?.TenantId ?? Guid.Empty;\n }\n\n public void OnCreating(ModelBuilder modelBuilder, EntityTypeBuilder entityBuilder, DbContext dbContext, Type dbContextLocator)\n {\n entityBuilder.HasQueryFilter(BuildTenantQueryFilter(entityBuilder, dbContext));\n }\n\n protected override void SavingChangesEvent(DbContextEventData eventData, InterceptionResult result)\n {\n // \u83b7\u53d6\u5f53\u524d\u4e8b\u4ef6\u5bf9\u5e94\u4e0a\u4e0b\u6587\n var dbContext = eventData.Context;\n\n // \u83b7\u53d6\u6240\u6709\u65b0\u589e\u3001\u66f4\u65b0\u3001\u5220\u9664\u7684\u5b9e\u4f53\n var entities = dbContext.ChangeTracker.Entries().Where(u => u.State == EntityState.Added || u.State == EntityState.Modified || u.State == EntityState.Deleted);\n\n foreach (var entity in entities)\n { \n switch (entity.State)\n {\n // \u81ea\u52a8\u8bbe\u7f6e\u79df\u6237Id\n case EntityState.Added:\n entity.Property(nameof(Entity.TenantId)).CurrentValue = GetTenantId();\n break;\n // \u6392\u9664\u79df\u6237Id\n case EntityState.Modified:\n entity.Property(nameof(Entity.TenantId)).IsModified = false;\n break;\n // \u5220\u9664\u5904\u7406\n case EntityState.Deleted:\n break;\n }\n }\n }\n }\n}\n')),(0,o.kt)("img",{src:(0,r.Z)("img/saas1.png")}),(0,o.kt)("h2",{id:"116-\u57fa\u4e8e-database-\u7684\u65b9\u5f0f"},"11.6 \u57fa\u4e8e ",(0,o.kt)("inlineCode",{parentName:"h2"},"Database")," \u7684\u65b9\u5f0f"),(0,o.kt)("p",null,"\u6b64\u65b9\u5f0f\u5728\u4e2d\u5927\u578b\u4f01\u4e1a\u7cfb\u7edf\u4e2d\u6700\u4e3a\u5e38\u7528\uff0c\u4e00\u4e2a\u79df\u6237\uff08\u5ba2\u6237\uff09\u4e00\u4e2a\u72ec\u7acb\u7684\u6570\u636e\u5e93\u3002"),(0,o.kt)("h3",{id:"1161-\u521b\u5efa\u79df\u6237\u6570\u636e\u5e93\u4e0a\u4e0b\u6587"},"11.6.1 \u521b\u5efa\u79df\u6237\u6570\u636e\u5e93\u4e0a\u4e0b\u6587"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:'{6-7} title="Furion.EntityFramework.Core\\DbContexts\\MultiTenantDbContext.cs"',"{6-7}":!0,title:'"Furion.EntityFramework.Core\\DbContexts\\MultiTenantDbContext.cs"'},'using Furion.DatabaseAccessor;\nusing Microsoft.EntityFrameworkCore;\n\nnamespace Furion.EntityFramework.Core\n{\n [AppDbContext("Sqlite3ConnectionString", DbProvider.Sqlite)]\n public class MultiTenantDbContext : AppDbContext\n {\n public MultiTenantDbContext(DbContextOptions options) : base(options)\n {\n }\n }\n}\n')),(0,o.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u6ce8\u610f")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u591a\u79df\u6237\u64cd\u4f5c\u5efa\u8bae\u5355\u72ec\u4e00\u4e2a\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\uff0c\u800c\u4e14\u9700\u6307\u5b9a ",(0,o.kt)("inlineCode",{parentName:"p"},"MultiTenantDbContextLocator")," \u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u5b9a\u4f4d\u5668\u3002"))),(0,o.kt)("h3",{id:"1162-\u6ce8\u518c\u591a\u79df\u6237\u6570\u636e\u5e93\u4e0a\u4e0b\u6587"},"11.6.2 \u6ce8\u518c\u591a\u79df\u6237\u6570\u636e\u5e93\u4e0a\u4e0b\u6587"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{13,14}","{13,14}":!0},"using Furion.DatabaseAccessor;\nusing Microsoft.Extensions.DependencyInjection;\n\nnamespace Furion.EntityFramework.Core\n{\n [AppStartup(600)]\n public sealed class FurEntityFrameworkCoreStartup : AppStartup\n {\n public void ConfigureServices(IServiceCollection services)\n {\n services.AddDatabaseAccessor(options =>\n {\n options.AddDb();\n options.AddDbPool();\n });\n }\n }\n}\n")),(0,o.kt)("div",{className:"admonition admonition-caution alert alert--warning"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 16 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"}))),"\u7279\u522b\u6ce8\u610f")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u9700\u8981 ",(0,o.kt)("inlineCode",{parentName:"p"},"Database")," \u591a\u79df\u6237\u65b9\u6848\u7684\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u9700\u8981\u91c7\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"AddDb")," \u6ce8\u518c\uff0c\u800c\u4e0d\u662f ",(0,o.kt)("inlineCode",{parentName:"p"},"AddDbPool"),"\u3002\u539f\u56e0\u662f ",(0,o.kt)("inlineCode",{parentName:"p"},"AddDbPool")," \u65b9\u5f0f\u6ce8\u518c\u540e\u7eed\u4e0d\u652f\u6301 ",(0,o.kt)("inlineCode",{parentName:"p"},"OnConfiguring")," \u91cd\u5199\uff01\uff01\uff01"))),(0,o.kt)("h3",{id:"1163-\u6dfb\u52a0-tenant-\u79cd\u5b50\u6570\u636e"},"11.6.3 \u6dfb\u52a0 ",(0,o.kt)("inlineCode",{parentName:"h3"},"Tenant")," \u79cd\u5b50\u6570\u636e"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:'{8,12-30} title="Furion.EntityFramework.Core\\SeedDatas\\TenantSeedData.cs"',"{8,12-30}":!0,title:'"Furion.EntityFramework.Core\\SeedDatas\\TenantSeedData.cs"'},'using Furion.DatabaseAccessor;\nusing Microsoft.EntityFrameworkCore;\nusing System;\nusing System.Collections.Generic;\n\nnamespace Furion.EntityFramework.Core\n{\n public class TenantSeedData : IEntitySeedData\n {\n public IEnumerable HasData(DbContext dbContext, Type dbContextLocator)\n {\n return new List\n {\n new Tenant\n {\n TenantId = Guid.Parse("383AFB88-F519-FFF8-B364-6D563BF3687F"),\n Name = "\u9ed8\u8ba4\u79df\u6237",\n Host = "localhost:44313",\n CreatedTime = DateTime.Parse("2020-10-06 20:19:07"),\n ConnectionString = "Data Source=./Furion.db" // \u914d\u7f6e\u8fde\u63a5\u5b57\u7b26\u4e32\n },\n new Tenant\n {\n TenantId = Guid.Parse("C5798CB6-16D6-0F42-EB56-59C695353BC0"),\n Name = "\u5176\u4ed6\u79df\u6237",\n Host = "localhost:5000",\n CreatedTime = DateTime.Parse("2020-10-06 20:20:32"),\n ConnectionString = "Data Source=./Fur2.db" // \u914d\u7f6e\u8fde\u63a5\u5b57\u7b26\u4e32\n }\n };\n }\n }\n}\n')),(0,o.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u7279\u522b\u8bf4\u660e")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u8be5\u6b65\u9aa4\u53ea\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"Code First")," \u65b9\u5f0f\u6267\u884c\uff0c",(0,o.kt)("inlineCode",{parentName:"p"},"Database First")," \u65e0\u9700\u914d\u7f6e\u79cd\u5b50\u6570\u636e\u3002"))),(0,o.kt)("h3",{id:"1164-\u6839\u636e\u6a21\u578b\u521b\u5efa-tenant-\u8868"},"11.6.4 \u6839\u636e\u6a21\u578b\u521b\u5efa ",(0,o.kt)("inlineCode",{parentName:"h3"},"Tenant")," \u8868"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-shell"},"Add-Migration add_tenant_table -Context MultiTenantDbContext\n")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-shell"},"Update-Database -Context MultiTenantDbContext\n")),(0,o.kt)("h3",{id:"1165-\u5b9e\u73b0-imultitenantondatabase-\u63a5\u53e3"},"11.6.5 \u5b9e\u73b0 ",(0,o.kt)("inlineCode",{parentName:"h3"},"IMultiTenantOnDatabase")," \u63a5\u53e3"),(0,o.kt)("p",null,"\u5728\u9700\u8981\u591a\u79df\u6237\u7684\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u4e2d\u5b9e\u73b0 ",(0,o.kt)("inlineCode",{parentName:"p"},"IMultiTenantOnDatabase")," \u63a5\u53e3\uff0c\u5982\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{6,13-16}","{6,13-16}":!0},'using Furion.DatabaseAccessor;\nusing Microsoft.EntityFrameworkCore;\n\nnamespace Furion.EntityFramework.Core\n{\n // \u8fd9\u91cc\u53ef\u4e0d\u914d\u7f6e\n public class FurionDbContext : AppDbContext, IMultiTenantOnDatabase\n {\n public FurionDbContext(DbContextOptions options) : base(options)\n {\n }\n\n public string GetDatabaseConnectionString()\n {\n return base.Tenant?.ConnectionString??"\u9ed8\u8ba4\u94fe\u63a5\u5b57\u7b26\u4e32";\n }\n }\n}\n')),(0,o.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u8bf4\u660e")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},(0,o.kt)("inlineCode",{parentName:"p"},"base.Tenant")," \u53ea\u662f ",(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u7684\u9ed8\u8ba4\u79df\u6237\u5b9e\u73b0\u65b9\u6cd5\uff0c\u5982\u679c\u4e0d\u80fd\u6ee1\u8db3\u4e1a\u52a1\u9700\u6c42\uff0c\u53ea\u9700\u8981\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"GetDatabaseConnectionString")," \u91cc\u9762\u5199\u4f60\u7684\u4e1a\u52a1\u4ee3\u7801\u5373\u53ef\uff0c\u4e5f\u5c31\u662f\u65e0\u9700\u8c03\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"base.Tenant"),"\u3002\u5982\uff1a"),(0,o.kt)("pre",{parentName:"div"},(0,o.kt)("code",{parentName:"pre",className:"language-cs"},"public string GetDatabaseConnectionString()\n{\n // \u8fd9\u91cc\u662f\u4f60\u83b7\u53d6 DatabaseConnecionString \u7684\u903b\u8f91\n return \u4f60\u7684 \u8fde\u63a5\u5b57\u7b26\u4e32;\n}\n")))),(0,o.kt)("h3",{id:"1166-\u91cd\u5199-onconfiguring-\u65b9\u6cd5"},"11.6.6 \u91cd\u5199 ",(0,o.kt)("inlineCode",{parentName:"h3"},"OnConfiguring")," \u65b9\u6cd5"),(0,o.kt)("p",null,"\u5728\u9700\u8981\u591a\u79df\u6237\u7684\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u4e2d\u91cd\u5199 ",(0,o.kt)("inlineCode",{parentName:"p"},"OnConfiguring")," \u65b9\u6cd5\u5e76\u914d\u7f6e\u8fde\u63a5\u5b57\u7b26\u4e32\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{12-17}","{12-17}":!0},'using Furion.DatabaseAccessor;\nusing Microsoft.EntityFrameworkCore;\n\nnamespace Furion.EntityFramework.Core\n{\n public class FurionDbContext : AppDbContext, IMultiTenantOnDatabase\n {\n public FurionDbContext(DbContextOptions options) : base(options)\n {\n }\n\n protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)\n {\n optionsBuilder.UseSqlite(GetDatabaseConnectionString());\n\n base.OnConfiguring(optionsBuilder);\n }\n\n public string GetDatabaseConnectionString()\n {\n return base.Tenant?.ConnectionString??"\u9ed8\u8ba4\u94fe\u63a5\u5b57\u7b26\u4e32";\n }\n }\n}\n')),(0,o.kt)("img",{src:(0,r.Z)("img/saas2.png")}),(0,o.kt)("div",{className:"admonition admonition-caution alert alert--warning"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 16 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"}))),"\u7279\u522b\u6ce8\u610f")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u57fa\u4e8e ",(0,o.kt)("inlineCode",{parentName:"p"},"Database")," \u65b9\u5f0f\u505a ",(0,o.kt)("inlineCode",{parentName:"p"},"Code First")," \u7684\u65f6\u5019\uff0c\u9700\u8981\u624b\u52a8\u6307\u5b9a\u8fc1\u79fb\u7a0b\u5e8f\u540d\u79f0\uff0c\u5982\uff1a"),(0,o.kt)("pre",{parentName:"div"},(0,o.kt)("code",{parentName:"pre",className:"language-cs"},'optionsBuilder.UseSqlite(GetDatabaseConnectionString(), options=>\n{\n options.MigrationsAssembly("My.Migrations");\n});\n')))),(0,o.kt)("h2",{id:"117-\u57fa\u4e8e-schema-\u7684\u65b9\u5f0f"},"11.7 \u57fa\u4e8e ",(0,o.kt)("inlineCode",{parentName:"h2"},"Schema")," \u7684\u65b9\u5f0f"),(0,o.kt)("p",null,"\u6b64\u65b9\u5f0f\u5728\u4e2d\u5c0f\u578b\u4f01\u4e1a\u7cfb\u7edf\u4e2d\u4e5f\u4e0d\u5c11\u89c1\uff0c\u4e00\u4e2a\u79df\u6237\uff08\u5ba2\u6237\uff09\u5171\u4eab\u6570\u636e\u5e93\u4e14\u4e0d\u540c ",(0,o.kt)("inlineCode",{parentName:"p"},"Schema"),"\u3002"),(0,o.kt)("h3",{id:"1171-\u521b\u5efa\u79df\u6237\u6570\u636e\u5e93\u4e0a\u4e0b\u6587"},"11.7.1 \u521b\u5efa\u79df\u6237\u6570\u636e\u5e93\u4e0a\u4e0b\u6587"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:'{6-7} title="Furion.EntityFramework.Core\\DbContexts\\MultiTenantDbContext.cs"',"{6-7}":!0,title:'"Furion.EntityFramework.Core\\DbContexts\\MultiTenantDbContext.cs"'},'using Furion.DatabaseAccessor;\nusing Microsoft.EntityFrameworkCore;\n\nnamespace Furion.EntityFramework.Core\n{\n [AppDbContext("Sqlite3ConnectionString", DbProvider.Sqlite)]\n public class MultiTenantDbContext : AppDbContext\n {\n public MultiTenantDbContext(DbContextOptions options) : base(options)\n {\n }\n }\n}\n')),(0,o.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u6ce8\u610f")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u591a\u79df\u6237\u64cd\u4f5c\u5efa\u8bae\u5355\u72ec\u4e00\u4e2a\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\uff0c\u800c\u4e14\u9700\u6307\u5b9a ",(0,o.kt)("inlineCode",{parentName:"p"},"MultiTenantDbContextLocator")," \u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u5b9a\u4f4d\u5668\u3002"))),(0,o.kt)("h3",{id:"1172-\u6ce8\u518c\u591a\u79df\u6237\u6570\u636e\u5e93\u4e0a\u4e0b\u6587"},"11.7.2 \u6ce8\u518c\u591a\u79df\u6237\u6570\u636e\u5e93\u4e0a\u4e0b\u6587"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{14}","{14}":!0},"using Furion.DatabaseAccessor;\nusing Microsoft.Extensions.DependencyInjection;\n\nnamespace Furion.EntityFramework.Core\n{\n [AppStartup(600)]\n public sealed class FurEntityFrameworkCoreStartup : AppStartup\n {\n public void ConfigureServices(IServiceCollection services)\n {\n services.AddDatabaseAccessor(options =>\n {\n options.AddDbPool();\n options.AddDbPool();\n });\n }\n }\n}\n")),(0,o.kt)("h3",{id:"1173-\u6dfb\u52a0-tenant-\u79cd\u5b50\u6570\u636e"},"11.7.3 \u6dfb\u52a0 ",(0,o.kt)("inlineCode",{parentName:"h3"},"Tenant")," \u79cd\u5b50\u6570\u636e"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:'{8,12-30} title="Furion.EntityFramework.Core\\SeedDatas\\TenantSeedData.cs"',"{8,12-30}":!0,title:'"Furion.EntityFramework.Core\\SeedDatas\\TenantSeedData.cs"'},'using Furion.DatabaseAccessor;\nusing Microsoft.EntityFrameworkCore;\nusing System;\nusing System.Collections.Generic;\n\nnamespace Furion.EntityFramework.Core\n{\n public class TenantSeedData : IEntitySeedData\n {\n public IEnumerable HasData(DbContext dbContext, Type dbContextLocator)\n {\n return new List\n {\n new Tenant\n {\n TenantId = Guid.Parse("383AFB88-F519-FFF8-B364-6D563BF3687F"),\n Name = "\u9ed8\u8ba4\u79df\u6237",\n Host = "localhost:44313",\n CreatedTime = DateTime.Parse("2020-10-06 20:19:07"),\n Schema = "dbo" // Schema\n },\n new Tenant\n {\n TenantId = Guid.Parse("C5798CB6-16D6-0F42-EB56-59C695353BC0"),\n Name = "\u5176\u4ed6\u79df\u6237",\n Host = "localhost:5000",\n CreatedTime = DateTime.Parse("2020-10-06 20:20:32"),\n Schema = "furion" // Schema\n }\n };\n }\n }\n}\n')),(0,o.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u7279\u522b\u8bf4\u660e")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u8be5\u6b65\u9aa4\u53ea\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"Code First")," \u65b9\u5f0f\u6267\u884c\uff0c",(0,o.kt)("inlineCode",{parentName:"p"},"Database First")," \u65e0\u9700\u914d\u7f6e\u79cd\u5b50\u6570\u636e\u3002"))),(0,o.kt)("h3",{id:"1174-\u6839\u636e\u6a21\u578b\u521b\u5efa-tenant-\u8868"},"11.7.4 \u6839\u636e\u6a21\u578b\u521b\u5efa ",(0,o.kt)("inlineCode",{parentName:"h3"},"Tenant")," \u8868"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-shell"},"Add-Migration add_tenant_table -Context MultiTenantDbContext\n")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-shell"},"Update-Database -Context MultiTenantDbContext\n")),(0,o.kt)("h3",{id:"1175-\u5b9e\u73b0-imultitenantonschema-\u63a5\u53e3"},"11.7.5 \u5b9e\u73b0 ",(0,o.kt)("inlineCode",{parentName:"h3"},"IMultiTenantOnSchema")," \u63a5\u53e3"),(0,o.kt)("p",null,"\u5728\u9700\u8981\u591a\u79df\u6237\u7684\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u4e2d\u5b9e\u73b0 ",(0,o.kt)("inlineCode",{parentName:"p"},"IMultiTenantOnSchema")," \u63a5\u53e3\uff0c\u5982\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{6,12-15}","{6,12-15}":!0},'using Furion.DatabaseAccessor;\nusing Microsoft.EntityFrameworkCore;\n\nnamespace Furion.EntityFramework.Core\n{\n [AppDbContext("Sqlite3ConnectionString", DbProvider.Sqlite)]\n public class FurionDbContext : AppDbContext, IMultiTenantOnSchema\n {\n public FurionDbContext(DbContextOptions options) : base(options)\n {\n }\n\n public string GetSchemaName()\n {\n return base.Tenant?.Schema??"dbo";\n }\n }\n}\n')),(0,o.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u8bf4\u660e")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},(0,o.kt)("inlineCode",{parentName:"p"},"base.Tenant")," \u53ea\u662f ",(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u7684\u9ed8\u8ba4\u79df\u6237\u5b9e\u73b0\u65b9\u6cd5\uff0c\u5982\u679c\u4e0d\u80fd\u6ee1\u8db3\u4e1a\u52a1\u9700\u6c42\uff0c\u53ea\u9700\u8981\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"GetSchemaName")," \u91cc\u9762\u5199\u4f60\u7684\u4e1a\u52a1\u4ee3\u7801\u5373\u53ef\uff0c\u4e5f\u5c31\u662f\u65e0\u9700\u8c03\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"base.Tenant"),"\u3002\u5982\uff1a"),(0,o.kt)("pre",{parentName:"div"},(0,o.kt)("code",{parentName:"pre",className:"language-cs"},"public string GetSchemaName()\n{\n // \u8fd9\u91cc\u662f\u4f60\u83b7\u53d6 Schema \u7684\u903b\u8f91\n return \u4f60\u7684 Schema;\n}\n")))),(0,o.kt)("h3",{id:"1176-\u5173\u4e8e-code-first-\u6570\u636e\u8fc1\u79fb"},"11.7.6 \u5173\u4e8e ",(0,o.kt)("inlineCode",{parentName:"h3"},"Code First \u6570\u636e\u8fc1\u79fb")),(0,o.kt)("p",null,"\u57fa\u4e8e ",(0,o.kt)("inlineCode",{parentName:"p"},"Schema")," \u65b9\u5f0f\u6bd4\u8f83\u7279\u522b\uff0c\u751f\u6210\u6570\u636e\u8fc1\u79fb\u7684\u65f6\u5019\u6ca1\u529e\u6cd5\u83b7\u53d6\u79df\u6237\u4fe1\u606f\uff0c\u6240\u4ee5\u5efa\u8bae",(0,o.kt)("strong",{parentName:"p"},"\u5206\u5f00\u591a\u6b21\u8fc1\u79fb"),"\uff0c\u5982\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},'public string GetSchemaName()\n{\n return base.Tenant?.Schema?? "\u79df\u6237\u4e00Schema";\n}\n')),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},'public string GetSchemaName()\n{\n return base.Tenant?.Schema?? "\u79df\u6237\u4e8cSchema";\n}\n')),(0,o.kt)("p",null,"\u8fd9\u6837\u5c31\u53ef\u4ee5\u5728\u8fc1\u79fb\u7684\u65f6\u5019\u751f\u6210\u591a\u6b21\u8fc1\u79fb\u4e86\u3002"),(0,o.kt)("h2",{id:"118-\u81ea\u5b9a\u4e49-tenant-\u7c7b\u578b"},"11.8 \u81ea\u5b9a\u4e49 ",(0,o.kt)("inlineCode",{parentName:"h2"},"Tenant")," \u7c7b\u578b"),(0,o.kt)("p",null,"\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c",(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u4e86\u5185\u7f6e\u7684 ",(0,o.kt)("inlineCode",{parentName:"p"},"Tenant")," \u7c7b\u578b\uff0c\u65b9\u4fbf\u5927\u5bb6\u5feb\u901f\u5b9e\u73b0 ",(0,o.kt)("inlineCode",{parentName:"p"},"SaaS")," \u591a\u79df\u6237\u529f\u80fd\uff0c\u5982\u679c\u9700\u8981\u81ea\u5b9a\u4e49\u591a\u79df\u6237 ",(0,o.kt)("inlineCode",{parentName:"p"},"Tenant")," \u7c7b\u578b\uff0c\u53ea\u9700\u8981\u542f\u7528\u4ee5\u4e0b\u914d\u7f6e\u5373\u53ef\uff1a"),(0,o.kt)("h3",{id:"1181-\u542f\u52a8\u81ea\u5b9a\u4e49\u591a\u79df\u6237\u7c7b\u578b\u914d\u7f6e"},"11.8.1 \u542f\u52a8\u81ea\u5b9a\u4e49\u591a\u79df\u6237\u7c7b\u578b\u914d\u7f6e"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{3}","{3}":!0},"services.AddDatabaseAccessor(options =>\n{\n options.CustomizeMultiTenants(); // \u542f\u7528\u81ea\u5b9a\u4e49\u591a\u79df\u6237\u7c7b\u578b\uff0c\u6709\u4e00\u4e2a\u9ed8\u8ba4\u53c2\u6570\uff0c\u914d\u7f6e\u591a\u79df\u6237\u8868\u5b57\u6bb5\u540d\n options.AddDbPool();\n});\n")),(0,o.kt)("h3",{id:"1182-\u81ea\u5b9a\u4e49\u79df\u6237\u7c7b"},"11.8.2 \u81ea\u5b9a\u4e49\u79df\u6237\u7c7b"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{6}","{6}":!0},"using System;\nusing System.ComponentModel.DataAnnotations.Schema;\n\nnamespace Furion.Core\n{\n public class MyTenant : IEntity\n {\n [Key]\n public Guid TenantId { get; set; }\n\n public string Name { get; set; }\n\n public string Host { get; set; }\n }\n}\n")),(0,o.kt)("p",null,"\u5982\u679c\u9700\u8981\u67e5\u8be2\u8be5\u79df\u6237\u4fe1\u606f\uff0c\u53ef\u901a\u8fc7\u4ee5\u4e0b\u4ee3\u7801\u83b7\u53d6\uff0c\u5982\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},"var tenantDbContext = Db.GetDbContext();\nvar myTenant = tenantDbContext.Set();\n")),(0,o.kt)("h2",{id:"119-\u5237\u65b0\u79df\u6237\u7f13\u5b58"},"11.9 \u5237\u65b0\u79df\u6237\u7f13\u5b58"),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4f1a\u5728\u79df\u6237\u4e0a\u4e0b\u6587\u7b2c\u4e00\u6b21\u67e5\u8be2\u65f6\u5019\u5c06\u79df\u6237\u8868\u7f13\u5b58\u8d77\u6765\uff0c\u907f\u514d\u9891\u53d1\u67e5\u8be2\u6570\u636e\u5e93\uff0c\u5982\u679c\u66f4\u65b0\u4e86\u79df\u6237\u8868\uff0c\u5219\u9700\u8981\u624b\u52a8\u5237\u65b0\u79df\u6237\u4fe1\u606f\uff0c\u5982\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},"using Furion.DatabaseAccessor.Extensions;\n\n// \u5728\u66f4\u65b0\u79df\u6237\u4fe1\u606f\u540e\u8c03\u7528\n_repository.Context.RefreshTenantCache();\n")),(0,o.kt)("h2",{id:"1110-\u53cd\u9988\u4e0e\u5efa\u8bae"},"11.10 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,o.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,o.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/fd885aa1.a912b194.js b/handbook/build/assets/js/fd885aa1.a912b194.js new file mode 100644 index 00000000000..3aaa8d570ed --- /dev/null +++ b/handbook/build/assets/js/fd885aa1.a912b194.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[5128],{3905:function(e,n,t){t.d(n,{Zo:function(){return p},kt:function(){return u}});var a=t(7294);function i(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function o(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function r(e){for(var n=1;n=0||(i[t]=e[t]);return i}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(i[t]=e[t])}return i}var l=a.createContext({}),d=function(e){var n=a.useContext(l),t=n;return e&&(t="function"==typeof e?e(n):r(r({},n),e)),t},p=function(e){var n=d(e.components);return a.createElement(l.Provider,{value:n},e.children)},c={inlineCode:"code",wrapper:function(e){var n=e.children;return a.createElement(a.Fragment,{},n)}},m=a.forwardRef((function(e,n){var t=e.components,i=e.mdxType,o=e.originalType,l=e.parentName,p=s(e,["components","mdxType","originalType","parentName"]),m=d(t),u=i,k=m["".concat(l,".").concat(u)]||m[u]||c[u]||o;return t?a.createElement(k,r(r({ref:n},p),{},{components:t})):a.createElement(k,r({ref:n},p))}));function u(e,n){var t=arguments,i=n&&n.mdxType;if("string"==typeof e||i){var o=t.length,r=new Array(o);r[0]=m;var s={};for(var l in n)hasOwnProperty.call(n,l)&&(s[l]=n[l]);s.originalType=e,s.mdxType="string"==typeof e?e:i,r[1]=s;for(var d=2;dSaaS",id:"111-\u4ec0\u4e48\u662f-saas",children:[]},{value:"11.2 \u4ec0\u4e48\u662f\u591a\u79df\u6237",id:"112-\u4ec0\u4e48\u662f\u591a\u79df\u6237",children:[]},{value:"11.3 \u5b9e\u73b0\u591a\u79df\u6237\u65b9\u6848",id:"113-\u5b9e\u73b0\u591a\u79df\u6237\u65b9\u6848",children:[{value:"11.3.1 \u72ec\u7acb\u6570\u636e\u5e93(\u57fa\u4e8e Database \u7684\u65b9\u5f0f)",id:"1131-\u72ec\u7acb\u6570\u636e\u5e93\u57fa\u4e8e-database-\u7684\u65b9\u5f0f",children:[]},{value:"11.3.2 \u5171\u4eab\u6570\u636e\u5e93\uff0c\u72ec\u7acb Schema (\u57fa\u4e8e Schema \u7684\u65b9\u5f0f)",id:"1132-\u5171\u4eab\u6570\u636e\u5e93\uff0c\u72ec\u7acb-schema-\u57fa\u4e8e-schema-\u7684\u65b9\u5f0f",children:[]},{value:"11.3.3 \u5171\u4eab\u6570\u636e\u5e93\uff0c\u5171\u4eab Schema (\u57fa\u4e8e TenantId \u7684\u65b9\u5f0f)",id:"1133-\u5171\u4eab\u6570\u636e\u5e93\uff0c\u5171\u4eab-schema-\u57fa\u4e8e-tenantid-\u7684\u65b9\u5f0f",children:[]}]},{value:"11.4 \u591a\u79df\u6237\u4f7f\u7528\u65b9\u6848",id:"114-\u591a\u79df\u6237\u4f7f\u7528\u65b9\u6848",children:[]},{value:"11.5 \u57fa\u4e8e TenantId \u7684\u65b9\u5f0f",id:"115-\u57fa\u4e8e-tenantid-\u7684\u65b9\u5f0f",children:[{value:"11.5.1 \u521b\u5efa\u79df\u6237\u6570\u636e\u5e93\u4e0a\u4e0b\u6587",id:"1151-\u521b\u5efa\u79df\u6237\u6570\u636e\u5e93\u4e0a\u4e0b\u6587",children:[]},{value:"11.5.2 \u6ce8\u518c\u591a\u79df\u6237\u6570\u636e\u5e93\u4e0a\u4e0b\u6587",id:"1152-\u6ce8\u518c\u591a\u79df\u6237\u6570\u636e\u5e93\u4e0a\u4e0b\u6587",children:[]},{value:"11.5.3 \u6dfb\u52a0 Tenant \u79cd\u5b50\u6570\u636e",id:"1153-\u6dfb\u52a0-tenant-\u79cd\u5b50\u6570\u636e",children:[]},{value:"11.5.4 \u6839\u636e\u6a21\u578b\u521b\u5efa Tenant \u8868",id:"1154-\u6839\u636e\u6a21\u578b\u521b\u5efa-tenant-\u8868",children:[]},{value:"11.5.5 \u5b9e\u73b0 IMultiTenantOnTable \u63a5\u53e3",id:"1155-\u5b9e\u73b0-imultitenantontable-\u63a5\u53e3",children:[]},{value:"11.5.6 \u5b9e\u73b0 IModelBuilderFilter \u63a5\u53e3",id:"1156-\u5b9e\u73b0-imodelbuilderfilter-\u63a5\u53e3",children:[]},{value:"11.5.7 \u91cd\u5199 SavingChangesEvent \u4e8b\u4ef6\u65b9\u6cd5",id:"1157-\u91cd\u5199-savingchangesevent-\u4e8b\u4ef6\u65b9\u6cd5",children:[]}]},{value:"11.6 \u57fa\u4e8e Database \u7684\u65b9\u5f0f",id:"116-\u57fa\u4e8e-database-\u7684\u65b9\u5f0f",children:[{value:"11.6.1 \u521b\u5efa\u79df\u6237\u6570\u636e\u5e93\u4e0a\u4e0b\u6587",id:"1161-\u521b\u5efa\u79df\u6237\u6570\u636e\u5e93\u4e0a\u4e0b\u6587",children:[]},{value:"11.6.2 \u6ce8\u518c\u591a\u79df\u6237\u6570\u636e\u5e93\u4e0a\u4e0b\u6587",id:"1162-\u6ce8\u518c\u591a\u79df\u6237\u6570\u636e\u5e93\u4e0a\u4e0b\u6587",children:[]},{value:"11.6.3 \u6dfb\u52a0 Tenant \u79cd\u5b50\u6570\u636e",id:"1163-\u6dfb\u52a0-tenant-\u79cd\u5b50\u6570\u636e",children:[]},{value:"11.6.4 \u6839\u636e\u6a21\u578b\u521b\u5efa Tenant \u8868",id:"1164-\u6839\u636e\u6a21\u578b\u521b\u5efa-tenant-\u8868",children:[]},{value:"11.6.5 \u5b9e\u73b0 IMultiTenantOnDatabase \u63a5\u53e3",id:"1165-\u5b9e\u73b0-imultitenantondatabase-\u63a5\u53e3",children:[]},{value:"11.6.6 \u91cd\u5199 OnConfiguring \u65b9\u6cd5",id:"1166-\u91cd\u5199-onconfiguring-\u65b9\u6cd5",children:[]}]},{value:"11.7 \u57fa\u4e8e Schema \u7684\u65b9\u5f0f",id:"117-\u57fa\u4e8e-schema-\u7684\u65b9\u5f0f",children:[{value:"11.7.1 \u521b\u5efa\u79df\u6237\u6570\u636e\u5e93\u4e0a\u4e0b\u6587",id:"1171-\u521b\u5efa\u79df\u6237\u6570\u636e\u5e93\u4e0a\u4e0b\u6587",children:[]},{value:"11.7.2 \u6ce8\u518c\u591a\u79df\u6237\u6570\u636e\u5e93\u4e0a\u4e0b\u6587",id:"1172-\u6ce8\u518c\u591a\u79df\u6237\u6570\u636e\u5e93\u4e0a\u4e0b\u6587",children:[]},{value:"11.7.3 \u6dfb\u52a0 Tenant \u79cd\u5b50\u6570\u636e",id:"1173-\u6dfb\u52a0-tenant-\u79cd\u5b50\u6570\u636e",children:[]},{value:"11.7.4 \u6839\u636e\u6a21\u578b\u521b\u5efa Tenant \u8868",id:"1174-\u6839\u636e\u6a21\u578b\u521b\u5efa-tenant-\u8868",children:[]},{value:"11.7.5 \u5b9e\u73b0 IMultiTenantOnSchema \u63a5\u53e3",id:"1175-\u5b9e\u73b0-imultitenantonschema-\u63a5\u53e3",children:[]},{value:"11.7.6 \u5173\u4e8e Code First \u6570\u636e\u8fc1\u79fb",id:"1176-\u5173\u4e8e-code-first-\u6570\u636e\u8fc1\u79fb",children:[]}]},{value:"11.8 \u81ea\u5b9a\u4e49 Tenant \u7c7b\u578b",id:"118-\u81ea\u5b9a\u4e49-tenant-\u7c7b\u578b",children:[{value:"11.8.1 \u542f\u52a8\u81ea\u5b9a\u4e49\u591a\u79df\u6237\u7c7b\u578b\u914d\u7f6e",id:"1181-\u542f\u52a8\u81ea\u5b9a\u4e49\u591a\u79df\u6237\u7c7b\u578b\u914d\u7f6e",children:[]},{value:"11.8.2 \u81ea\u5b9a\u4e49\u79df\u6237\u7c7b",id:"1182-\u81ea\u5b9a\u4e49\u79df\u6237\u7c7b",children:[]}]},{value:"11.9 \u5237\u65b0\u79df\u6237\u7f13\u5b58",id:"119-\u5237\u65b0\u79df\u6237\u7f13\u5b58",children:[]},{value:"11.10 \u53cd\u9988\u4e0e\u5efa\u8bae",id:"1110-\u53cd\u9988\u4e0e\u5efa\u8bae",children:[]}],m={toc:c};function u(e){var n=e.components,t=(0,i.Z)(e,s);return(0,o.kt)("wrapper",(0,a.Z)({},m,t,{components:n,mdxType:"MDXLayout"}),(0,o.kt)("h2",{id:"111-\u4ec0\u4e48\u662f-saas"},"11.1 \u4ec0\u4e48\u662f ",(0,o.kt)("inlineCode",{parentName:"h2"},"SaaS")),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"SaaS \u662f Software-as-a-Service\uff08\u8f6f\u4ef6\u5373\u670d\u52a1\uff09\u7684\u7b80\u79f0\uff0c\u968f\u7740\u4e92\u8054\u7f51\u6280\u672f\u7684\u53d1\u5c55\u548c\u5e94\u7528\u8f6f\u4ef6\u7684\u6210\u719f\uff0c \u5728 21 \u4e16\u7eaa\u5f00\u59cb\u5174\u8d77\u7684\u4e00\u79cd\u5b8c\u5168\u521b\u65b0\u7684\u8f6f\u4ef6\u5e94\u7528\u6a21\u5f0f\u3002\u5b83\u4e0e\u201con-demand software\u201d\uff0cthe application service provider(ASP\uff0c\u5e94\u7528\u670d\u52a1\u63d0\u4f9b\u5546)\uff0chosted software(\u6258\u7ba1\u8f6f\u4ef6)\u6240\u5177\u6709\u76f8\u4f3c\u7684\u542b\u4e49\u3002"),(0,o.kt)("p",{parentName:"blockquote"},"\u5b83\u662f\u4e00\u79cd\u901a\u8fc7 Internet \u63d0\u4f9b\u8f6f\u4ef6\u7684\u6a21\u5f0f\uff0c\u5382\u5546\u5c06\u5e94\u7528\u8f6f\u4ef6\u7edf\u4e00\u90e8\u7f72\u5728\u81ea\u5df1\u7684\u670d\u52a1\u5668\u4e0a\uff0c\u5ba2\u6237\u53ef\u4ee5\u6839\u636e\u81ea\u5df1\u5b9e\u9645\u9700\u6c42\uff0c\u901a\u8fc7\u4e92\u8054\u7f51\u5411\u5382\u5546\u5b9a\u8d2d\u6240\u9700\u7684\u5e94\u7528\u8f6f\u4ef6\u670d\u52a1\uff0c\u6309\u5b9a\u8d2d\u7684\u670d\u52a1\u591a\u5c11\u548c\u65f6\u95f4\u957f\u77ed\u5411\u5382\u5546\u652f\u4ed8\u8d39\u7528\uff0c\u5e76\u901a\u8fc7\u4e92\u8054\u7f51\u83b7\u5f97\u5382\u5546\u63d0\u4f9b\u7684\u670d\u52a1\u3002\u7528\u6237\u4e0d\u7528\u518d\u8d2d\u4e70\u8f6f\u4ef6\uff0c\u800c\u6539\u7528\u5411\u63d0\u4f9b\u5546\u79df\u7528\u57fa\u4e8e Web \u7684\u8f6f\u4ef6\uff0c\u6765\u7ba1\u7406\u4f01\u4e1a\u7ecf\u8425\u6d3b\u52a8\uff0c\u4e14\u65e0\u9700\u5bf9\u8f6f\u4ef6\u8fdb\u884c\u7ef4\u62a4\uff0c\u670d\u52a1\u63d0\u4f9b\u5546\u4f1a\u5168\u6743\u7ba1\u7406\u548c\u7ef4\u62a4\u8f6f\u4ef6\uff0c\u8f6f\u4ef6\u5382\u5546\u5728\u5411\u5ba2\u6237\u63d0\u4f9b\u4e92\u8054\u7f51\u5e94\u7528\u7684\u540c\u65f6\uff0c\u4e5f\u63d0\u4f9b\u8f6f\u4ef6\u7684\u79bb\u7ebf\u64cd\u4f5c\u548c\u672c\u5730\u6570\u636e\u5b58\u50a8\uff0c\u8ba9\u7528\u6237\u968f\u65f6\u968f\u5730\u90fd\u53ef\u4ee5\u4f7f\u7528\u5176\u5b9a\u8d2d\u7684\u8f6f\u4ef6\u548c\u670d\u52a1\u3002"),(0,o.kt)("p",{parentName:"blockquote"},"\u5bf9\u4e8e\u8bb8\u591a\u5c0f\u578b\u4f01\u4e1a\u6765\u8bf4\uff0cSaaS \u662f\u91c7\u7528\u5148\u8fdb\u6280\u672f\u7684\u6700\u597d\u9014\u5f84\uff0c\u5b83\u6d88\u9664\u4e86\u4f01\u4e1a\u8d2d\u4e70\u3001\u6784\u5efa\u548c\u7ef4\u62a4\u57fa\u7840\u8bbe\u65bd\u548c\u5e94\u7528\u7a0b\u5e8f\u7684\u9700\u8981\u3002")),(0,o.kt)("h2",{id:"112-\u4ec0\u4e48\u662f\u591a\u79df\u6237"},"11.2 \u4ec0\u4e48\u662f\u591a\u79df\u6237"),(0,o.kt)("p",null,"\u591a\u79df\u6237\u6280\u672f\u6216\u79f0\u591a\u91cd\u79df\u8d41\u6280\u672f\uff0c\u7b80\u79f0 ",(0,o.kt)("inlineCode",{parentName:"p"},"SaaS"),"\uff0c\u662f\u4e00\u79cd\u8f6f\u4ef6\u67b6\u6784\u6280\u672f\uff0c\u662f\u5b9e\u73b0\u5982\u4f55\u5728\u591a\u7528\u6237\u73af\u5883\u4e0b\uff08\u6b64\u5904\u7684\u591a\u7528\u6237\u4e00\u822c\u662f\u9762\u5411\u4f01\u4e1a\u7528\u6237\uff09\u5171\u7528\u76f8\u540c\u7684\u7cfb\u7edf\u6216\u7a0b\u5e8f\u7ec4\u4ef6\uff0c\u5e76\u4e14\u53ef\u786e\u4fdd\u5404\u7528\u6237\u95f4\u6570\u636e\u7684\u9694\u79bb\u6027\u3002"),(0,o.kt)("p",null,(0,o.kt)("strong",{parentName:"p"},"\u7b80\u5355\u8bb2\uff1a\u5728\u4e00\u53f0\u670d\u52a1\u5668\u4e0a\u8fd0\u884c\u5355\u4e2a\u5e94\u7528\u5b9e\u4f8b\uff0c\u5b83\u4e3a\u591a\u4e2a\u79df\u6237\uff08\u5ba2\u6237\uff09\u63d0\u4f9b\u670d\u52a1\u3002"),"\u4ece\u5b9a\u4e49\u4e2d\u6211\u4eec\u53ef\u4ee5\u7406\u89e3\uff1a\u591a\u79df\u6237\u662f\u4e00\u79cd\u67b6\u6784\uff0c\u76ee\u7684\u662f\u4e3a\u4e86\u8ba9\u591a\u7528\u6237\u73af\u5883\u4e0b\u4f7f\u7528\u540c\u4e00\u5957\u7a0b\u5e8f\uff0c\u4e14\u4fdd\u8bc1\u7528\u6237\u95f4\u6570\u636e\u9694\u79bb\u3002\u90a3\u4e48\u91cd\u70b9\u5c31\u5f88\u6d45\u663e\u6613\u61c2\u4e86\uff0c\u591a\u79df\u6237\u7684\u91cd\u70b9\u5c31\u662f\u540c\u4e00\u5957\u7a0b\u5e8f\u4e0b\u5b9e\u73b0\u591a\u7528\u6237\u6570\u636e\u7684\u9694\u79bb\u3002"),(0,o.kt)("h2",{id:"113-\u5b9e\u73b0\u591a\u79df\u6237\u65b9\u6848"},"11.3 \u5b9e\u73b0\u591a\u79df\u6237\u65b9\u6848"),(0,o.kt)("h3",{id:"1131-\u72ec\u7acb\u6570\u636e\u5e93\u57fa\u4e8e-database-\u7684\u65b9\u5f0f"},"11.3.1 \u72ec\u7acb\u6570\u636e\u5e93(\u57fa\u4e8e ",(0,o.kt)("inlineCode",{parentName:"h3"},"Database")," \u7684\u65b9\u5f0f)"),(0,o.kt)("p",null,"\u8fd9\u662f\u7b2c\u4e00\u79cd\u65b9\u6848\uff0c\u5373\u4e00\u4e2a\u79df\u6237\u4e00\u4e2a\u6570\u636e\u5e93\uff0c\u8fd9\u79cd\u65b9\u6848\u7684\u7528\u6237\u6570\u636e\u9694\u79bb\u7ea7\u522b\u6700\u9ad8\uff0c\u5b89\u5168\u6027\u6700\u597d\uff0c\u4f46\u6210\u672c\u8f83\u9ad8\u3002"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("strong",{parentName:"p"},"\u4f18\u70b9\uff1a"),"\n\u4e3a\u4e0d\u540c\u7684\u79df\u6237\u63d0\u4f9b\u72ec\u7acb\u7684\u6570\u636e\u5e93\uff0c\u6709\u52a9\u4e8e\u7b80\u5316\u6570\u636e\u6a21\u578b\u7684\u6269\u5c55\u8bbe\u8ba1\uff0c\u6ee1\u8db3\u4e0d\u540c\u79df\u6237\u7684\u72ec\u7279\u9700\u6c42\uff1b\u5982\u679c\u51fa\u73b0\u6545\u969c\uff0c\u6062\u590d\u6570\u636e\u6bd4\u8f83\u7b80\u5355\u3002")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("strong",{parentName:"p"},"\u7f3a\u70b9\uff1a"),"\n\u589e\u591a\u4e86\u6570\u636e\u5e93\u7684\u5b89\u88c5\u6570\u91cf\uff0c\u968f\u4e4b\u5e26\u6765\u7ef4\u62a4\u6210\u672c\u548c\u8d2d\u7f6e\u6210\u672c\u7684\u589e\u52a0\u3002 \u8fd9\u79cd\u65b9\u6848\u4e0e\u4f20\u7edf\u7684\u4e00\u4e2a\u5ba2\u6237\u3001\u4e00\u5957\u6570\u636e\u3001\u4e00\u5957\u90e8\u7f72\u7c7b\u4f3c\uff0c\u5dee\u522b\u53ea\u5728\u4e8e\u8f6f\u4ef6\u7edf\u4e00\u90e8\u7f72\u5728\u8fd0\u8425\u5546\u90a3\u91cc\u3002\u5982\u679c\u9762\u5bf9\u7684\u662f\u94f6\u884c\u3001\u533b\u9662\u7b49\u9700\u8981\u975e\u5e38\u9ad8\u6570\u636e\u9694\u79bb\u7ea7\u522b\u7684\u79df\u6237\uff0c\u53ef\u4ee5\u9009\u62e9\u8fd9\u79cd\u6a21\u5f0f\uff0c\u63d0\u9ad8\u79df\u7528\u7684\u5b9a\u4ef7\u3002\u5982\u679c\u5b9a\u4ef7\u8f83\u4f4e\uff0c\u4ea7\u54c1\u8d70\u4f4e\u4ef7\u8def\u7ebf\uff0c\u8fd9\u79cd\u65b9\u6848\u4e00\u822c\u5bf9\u8fd0\u8425\u5546\u6765\u8bf4\u662f\u65e0\u6cd5\u627f\u53d7\u7684\u3002"))),(0,o.kt)("h3",{id:"1132-\u5171\u4eab\u6570\u636e\u5e93\uff0c\u72ec\u7acb-schema-\u57fa\u4e8e-schema-\u7684\u65b9\u5f0f"},"11.3.2 \u5171\u4eab\u6570\u636e\u5e93\uff0c\u72ec\u7acb ",(0,o.kt)("inlineCode",{parentName:"h3"},"Schema")," (\u57fa\u4e8e ",(0,o.kt)("inlineCode",{parentName:"h3"},"Schema")," \u7684\u65b9\u5f0f)"),(0,o.kt)("p",null,"\u8fd9\u662f\u7b2c\u4e8c\u79cd\u65b9\u6848\uff0c\u5373\u591a\u4e2a\u6216\u6240\u6709\u79df\u6237\u5171\u4eab ",(0,o.kt)("inlineCode",{parentName:"p"},"Database"),"\uff0c\u4f46\u662f\u6bcf\u4e2a\u79df\u6237\u4e00\u4e2a ",(0,o.kt)("inlineCode",{parentName:"p"},"Schema"),"\uff08\u4e5f\u53ef\u53eb\u505a\u4e00\u4e2a user\uff09\u3002\u5e95\u5c42\u5e93\u6bd4\u5982\u662f\uff1a",(0,o.kt)("inlineCode",{parentName:"p"},"SqlServer"),"\u3001",(0,o.kt)("inlineCode",{parentName:"p"},"Oracle")," \u7b49\uff0c\u4e00\u4e2a\u6570\u636e\u5e93\u4e0b\u53ef\u4ee5\u6709\u591a\u4e2a ",(0,o.kt)("inlineCode",{parentName:"p"},"Schema"),"\u3002"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("strong",{parentName:"p"},"\u4f18\u70b9\uff1a"),"\n\u4e3a\u5b89\u5168\u6027\u8981\u6c42\u8f83\u9ad8\u7684\u79df\u6237\u63d0\u4f9b\u4e86\u4e00\u5b9a\u7a0b\u5ea6\u7684\u903b\u8f91\u6570\u636e\u9694\u79bb\uff0c\u5e76\u4e0d\u662f\u5b8c\u5168\u9694\u79bb\uff1b\u6bcf\u4e2a\u6570\u636e\u5e93\u53ef\u652f\u6301\u66f4\u591a\u7684\u79df\u6237\u6570\u91cf\u3002")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("strong",{parentName:"p"},"\u7f3a\u70b9\uff1a"),"\n\u5982\u679c\u51fa\u73b0\u6545\u969c\uff0c\u6570\u636e\u6062\u590d\u6bd4\u8f83\u56f0\u96be\uff0c\u56e0\u4e3a\u6062\u590d\u6570\u636e\u5e93\u5c06\u7275\u6d89\u5230\u5176\u4ed6\u79df\u6237\u7684\u6570\u636e\uff1b \u5982\u679c\u9700\u8981\u8de8\u79df\u6237\u7edf\u8ba1\u6570\u636e\uff0c\u5b58\u5728\u4e00\u5b9a\u56f0\u96be\u3002"))),(0,o.kt)("h3",{id:"1133-\u5171\u4eab\u6570\u636e\u5e93\uff0c\u5171\u4eab-schema-\u57fa\u4e8e-tenantid-\u7684\u65b9\u5f0f"},"11.3.3 \u5171\u4eab\u6570\u636e\u5e93\uff0c\u5171\u4eab ",(0,o.kt)("inlineCode",{parentName:"h3"},"Schema")," (\u57fa\u4e8e ",(0,o.kt)("inlineCode",{parentName:"h3"},"TenantId")," \u7684\u65b9\u5f0f)"),(0,o.kt)("p",null,"\u5171\u4eab\u6570\u636e\u8868 \u8fd9\u662f\u7b2c\u4e09\u79cd\u65b9\u6848\uff0c\u5373\u79df\u6237\u5171\u4eab\u540c\u4e00\u4e2a ",(0,o.kt)("inlineCode",{parentName:"p"},"Database"),"\u3001\u540c\u4e00\u4e2a ",(0,o.kt)("inlineCode",{parentName:"p"},"Schema"),"\uff0c\u4f46\u5728\u8868\u4e2d\u589e\u52a0 ",(0,o.kt)("strong",{parentName:"p"},(0,o.kt)("inlineCode",{parentName:"strong"},"TenantId"))," \u591a\u79df\u6237\u7684\u6570\u636e\u5b57\u6bb5\u3002\u8fd9\u662f\u5171\u4eab\u7a0b\u5ea6\u6700\u9ad8\u3001\u9694\u79bb\u7ea7\u522b\u6700\u4f4e\u7684\u6a21\u5f0f\u3002 \u5373\u6bcf\u63d2\u5165\u4e00\u6761\u6570\u636e\u65f6\u90fd\u9700\u8981\u6709\u4e00\u4e2a\u5ba2\u6237\u7684\u6807\u8bc6\u3002\u8fd9\u6837\u624d\u80fd\u5728\u540c\u4e00\u5f20\u8868\u4e2d\u533a\u5206\u51fa\u4e0d\u540c\u5ba2\u6237\u7684\u6570\u636e\u3002"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("strong",{parentName:"p"},"\u4f18\u70b9\uff1a"),"\n\u4e09\u79cd\u65b9\u6848\u6bd4\u8f83\uff0c\u7b2c\u4e09\u79cd\u65b9\u6848\u7684\u7ef4\u62a4\u548c\u8d2d\u7f6e\u6210\u672c\u6700\u4f4e\uff0c\u5141\u8bb8\u6bcf\u4e2a\u6570\u636e\u5e93\u652f\u6301\u7684\u79df\u6237\u6570\u91cf\u6700\u591a\u3002")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("p",{parentName:"li"},(0,o.kt)("strong",{parentName:"p"},"\u7f3a\u70b9\uff1a"),"\n\u9694\u79bb\u7ea7\u522b\u6700\u4f4e\uff0c\u5b89\u5168\u6027\u6700\u4f4e\uff0c\u9700\u8981\u5728\u8bbe\u8ba1\u5f00\u53d1\u65f6\u52a0\u5927\u5bf9\u5b89\u5168\u7684\u5f00\u53d1\u91cf\uff1b \u6570\u636e\u5907\u4efd\u548c\u6062\u590d\u6700\u56f0\u96be\uff0c\u9700\u8981\u9010\u8868\u9010\u6761\u5907\u4efd\u548c\u8fd8\u539f\u3002"))),(0,o.kt)("h2",{id:"114-\u591a\u79df\u6237\u4f7f\u7528\u65b9\u6848"},"11.4 \u591a\u79df\u6237\u4f7f\u7528\u65b9\u6848"),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u652f\u6301\u4ee5\u4e0a\u4e09\u79cd\u591a\u79df\u6237\u5b9e\u73b0\u65b9\u6848\uff0c\u4f7f\u7528\u7b80\u5355\u4e14\u5bb9\u6613\u7ef4\u62a4\u3002\u4e0b\u9762\u5206\u522b\u4f7f\u7528\u4e09\u79cd\u4e0d\u540c\u65b9\u5f0f\u6f14\u793a\u591a\u79df\u6237\u65b9\u6848\u7528\u6cd5\u3002"),(0,o.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u8bf4\u660e")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u4e00\u65e6 ",(0,o.kt)("inlineCode",{parentName:"p"},"\u6570\u636e\u5e93\u4e0a\u4e0b\u6587")," \u7c7b\u7ee7\u627f\u4e86\u79df\u6237\u4efb\u610f\u63a5\u53e3\uff0c\u5219\u81ea\u52a8\u5f00\u59cb\u591a\u79df\u6237\u529f\u80fd\u652f\u6301\u3002"))),(0,o.kt)("h2",{id:"115-\u57fa\u4e8e-tenantid-\u7684\u65b9\u5f0f"},"11.5 \u57fa\u4e8e ",(0,o.kt)("inlineCode",{parentName:"h2"},"TenantId")," \u7684\u65b9\u5f0f"),(0,o.kt)("p",null,"\u6b64\u65b9\u5f0f\u5728\u4e2d\u5c0f\u578b\u4f01\u4e1a\u7cfb\u7edf\u4e2d\u6700\u4e3a\u5e38\u7528\uff0c\u7ef4\u62a4\u6210\u672c\u4f4e\uff0c\u8d2d\u7f6e\u6210\u672c\u4f4e\u3002"),(0,o.kt)("h3",{id:"1151-\u521b\u5efa\u79df\u6237\u6570\u636e\u5e93\u4e0a\u4e0b\u6587"},"11.5.1 \u521b\u5efa\u79df\u6237\u6570\u636e\u5e93\u4e0a\u4e0b\u6587"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:'{6-7} title="Furion.EntityFramework.Core\\DbContexts\\MultiTenantDbContext.cs"',"{6-7}":!0,title:'"Furion.EntityFramework.Core\\DbContexts\\MultiTenantDbContext.cs"'},'using Furion.DatabaseAccessor;\nusing Microsoft.EntityFrameworkCore;\n\nnamespace Furion.EntityFramework.Core\n{\n [AppDbContext("Sqlite3ConnectionString", DbProvider.Sqlite)]\n public class MultiTenantDbContext : AppDbContext\n {\n public MultiTenantDbContext(DbContextOptions options) : base(options)\n {\n }\n }\n}\n')),(0,o.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u6ce8\u610f")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u591a\u79df\u6237\u64cd\u4f5c\u5efa\u8bae\u5355\u72ec\u4e00\u4e2a\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\uff0c\u800c\u4e14\u9700\u6307\u5b9a ",(0,o.kt)("inlineCode",{parentName:"p"},"MultiTenantDbContextLocator")," \u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u5b9a\u4f4d\u5668\u3002"))),(0,o.kt)("h3",{id:"1152-\u6ce8\u518c\u591a\u79df\u6237\u6570\u636e\u5e93\u4e0a\u4e0b\u6587"},"11.5.2 \u6ce8\u518c\u591a\u79df\u6237\u6570\u636e\u5e93\u4e0a\u4e0b\u6587"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{14}","{14}":!0},"using Furion.DatabaseAccessor;\nusing Microsoft.Extensions.DependencyInjection;\n\nnamespace Furion.EntityFramework.Core\n{\n [AppStartup(600)]\n public sealed class FurEntityFrameworkCoreStartup : AppStartup\n {\n public void ConfigureServices(IServiceCollection services)\n {\n services.AddDatabaseAccessor(options =>\n {\n options.AddDbPool();\n options.AddDbPool();\n });\n }\n }\n}\n")),(0,o.kt)("h3",{id:"1153-\u6dfb\u52a0-tenant-\u79cd\u5b50\u6570\u636e"},"11.5.3 \u6dfb\u52a0 ",(0,o.kt)("inlineCode",{parentName:"h3"},"Tenant")," \u79cd\u5b50\u6570\u636e"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:'{8,12-28} title="Furion.EntityFramework.Core\\SeedDatas\\TenantSeedData.cs"',"{8,12-28}":!0,title:'"Furion.EntityFramework.Core\\SeedDatas\\TenantSeedData.cs"'},'using Furion.DatabaseAccessor;\nusing Microsoft.EntityFrameworkCore;\nusing System;\nusing System.Collections.Generic;\n\nnamespace Furion.EntityFramework.Core\n{\n public class TenantSeedData : IEntitySeedData\n {\n public IEnumerable HasData(DbContext dbContext, Type dbContextLocator)\n {\n return new List\n {\n new Tenant\n {\n TenantId = Guid.Parse("383AFB88-F519-FFF8-B364-6D563BF3687F"),\n Name = "\u9ed8\u8ba4\u79df\u6237",\n Host = "localhost:44313",\n CreatedTime = DateTime.Parse("2020-10-06 20:19:07")\n },\n new Tenant\n {\n TenantId = Guid.Parse("C5798CB6-16D6-0F42-EB56-59C695353BC0"),\n Name = "\u5176\u4ed6\u79df\u6237",\n Host = "localhost:5000",\n CreatedTime = DateTime.Parse("2020-10-06 20:20:32")\n }\n };\n }\n }\n}\n')),(0,o.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u7279\u522b\u8bf4\u660e")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u8be5\u6b65\u9aa4\u53ea\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"Code First")," \u65b9\u5f0f\u6267\u884c\uff0c",(0,o.kt)("inlineCode",{parentName:"p"},"Database First")," \u65e0\u9700\u914d\u7f6e\u79cd\u5b50\u6570\u636e\u3002"))),(0,o.kt)("h3",{id:"1154-\u6839\u636e\u6a21\u578b\u521b\u5efa-tenant-\u8868"},"11.5.4 \u6839\u636e\u6a21\u578b\u521b\u5efa ",(0,o.kt)("inlineCode",{parentName:"h3"},"Tenant")," \u8868"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-shell"},"Add-Migration add_tenant_table -Context MultiTenantDbContext\n")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-shell"},"Update-Database -Context MultiTenantDbContext\n")),(0,o.kt)("h3",{id:"1155-\u5b9e\u73b0-imultitenantontable-\u63a5\u53e3"},"11.5.5 \u5b9e\u73b0 ",(0,o.kt)("inlineCode",{parentName:"h3"},"IMultiTenantOnTable")," \u63a5\u53e3"),(0,o.kt)("p",null,"\u5728\u9700\u8981\u591a\u79df\u6237\u7684\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u4e2d\u5b9e\u73b0 ",(0,o.kt)("inlineCode",{parentName:"p"},"IMultiTenantOnTable")," \u63a5\u53e3\uff0c\u5982\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{8,14-17}","{8,14-17}":!0},'using Furion.DatabaseAccessor;\nusing Microsoft.EntityFrameworkCore;\nusing System;\n\nnamespace Furion.EntityFramework.Core\n{\n [AppDbContext("Sqlite3ConnectionString", DbProvider.Sqlite)]\n public class FurionDbContext : AppDbContext, IMultiTenantOnTable, IModelBuilderFilter\n {\n public FurionDbContext(DbContextOptions options) : base(options)\n {\n }\n\n public object GetTenantId()\n {\n return base.Tenant?.TenantId ?? Guid.Empty;\n }\n }\n}\n')),(0,o.kt)("p",null,"\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"GetTenantId()")," \u65b9\u6cd5\u4e2d\uff0c\u9996\u5148\u83b7\u53d6\u8bf7\u6c42\u7684 ",(0,o.kt)("inlineCode",{parentName:"p"},"\u4e3b\u673a\u5730\u5740"),"\uff0c\u7136\u540e\u6839\u636e\u4e3b\u673a\u5730\u5740\u67e5\u8be2\u5bf9\u5e94\u7684\u79df\u6237 ",(0,o.kt)("inlineCode",{parentName:"p"},"TenantId"),"\uff0c\u907f\u514d\u591a\u6b21\u67e5\u8be2\u6570\u636e\u5e93\uff0c\u8fd9\u91cc\u4f7f\u7528\u4e86 ",(0,o.kt)("inlineCode",{parentName:"p"},"IMemoryCache")," \u5185\u5b58\u7f13\u5b58\u3002"),(0,o.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u8bf4\u660e")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},(0,o.kt)("inlineCode",{parentName:"p"},"base.Tenant")," \u53ea\u662f ",(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u7684\u9ed8\u8ba4\u79df\u6237\u5b9e\u73b0\u65b9\u6cd5\uff0c\u5982\u679c\u4e0d\u80fd\u6ee1\u8db3\u4e1a\u52a1\u9700\u6c42\uff0c\u53ea\u9700\u8981\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"GetTenantId")," \u91cc\u9762\u5199\u4f60\u7684\u4e1a\u52a1\u4ee3\u7801\u5373\u53ef\uff0c\u4e5f\u5c31\u662f\u65e0\u9700\u8c03\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"base.Tenant"),"\u3002\u5982\uff1a"),(0,o.kt)("pre",{parentName:"div"},(0,o.kt)("code",{parentName:"pre",className:"language-cs"},"public object GetTenantId()\n{\n // \u8fd9\u91cc\u662f\u4f60\u83b7\u53d6 TenantId \u7684\u903b\u8f91\n return \u4f60\u7684 TenantId;\n}\n")))),(0,o.kt)("h3",{id:"1156-\u5b9e\u73b0-imodelbuilderfilter-\u63a5\u53e3"},"11.5.6 \u5b9e\u73b0 ",(0,o.kt)("inlineCode",{parentName:"h3"},"IModelBuilderFilter")," \u63a5\u53e3"),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"IModelBuilderFilter")," \u63a5\u53e3\u662f\u5168\u5c40\u67e5\u8be2\u8fc7\u6ee4\u5668\u5b9e\u73b0\u63a5\u53e3\uff0c\u6240\u4ee5\u6211\u4eec\u9700\u8981\u914d\u7f6e\u5b9e\u4f53 ",(0,o.kt)("inlineCode",{parentName:"p"},"TenantId")," \u8fc7\u6ee4\u5668"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{9,20-23}","{9,20-23}":!0},'using Furion.DatabaseAccessor;\nusing Microsoft.EntityFrameworkCore;\nusing Microsoft.EntityFrameworkCore.Metadata.Builders;\nusing System;\n\nnamespace Furion.EntityFramework.Core\n{\n [AppDbContext("Sqlite3ConnectionString", DbProvider.Sqlite)]\n public class FurionDbContext : AppDbContext, IMultiTenantOnTable, IModelBuilderFilter\n {\n public FurionDbContext(DbContextOptions options) : base(options)\n {\n }\n\n public object GetTenantId()\n {\n return base.Tenant?.TenantId ?? Guid.Empty;\n }\n\n public void OnCreating(ModelBuilder modelBuilder, EntityTypeBuilder entityBuilder, DbContext dbContext, Type dbContextLocator)\n {\n entityBuilder.HasQueryFilter(BuildTenantQueryFilter(entityBuilder, dbContext));\n }\n }\n}\n')),(0,o.kt)("h3",{id:"1157-\u91cd\u5199-savingchangesevent-\u4e8b\u4ef6\u65b9\u6cd5"},"11.5.7 \u91cd\u5199 ",(0,o.kt)("inlineCode",{parentName:"h3"},"SavingChangesEvent")," \u4e8b\u4ef6\u65b9\u6cd5"),(0,o.kt)("p",null,"\u901a\u8fc7\u4e0a\u9762\u7684\u6b65\u9aa4\uff0c\u6211\u4eec\u5df2\u7ecf\u89e3\u51b3\u4e86 ",(0,o.kt)("inlineCode",{parentName:"p"},"\u67e5\u8be2")," \u79df\u6237\u8fc7\u6ee4\u529f\u80fd\uff0c\u4f46\u662f ",(0,o.kt)("inlineCode",{parentName:"p"},"\u65b0\u589e")," \u548c ",(0,o.kt)("inlineCode",{parentName:"p"},"\u66f4\u65b0")," \u8fd8\u672a\u5904\u7406\u3002"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"\u65b0\u589e")," \u6570\u636e\u7684\u65f6\u5019\u81ea\u52a8\u8bbe\u7f6e ",(0,o.kt)("inlineCode",{parentName:"li"},"TenantId")," \u7684\u503c"),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"\u66f4\u65b0")," \u6570\u636e\u7684\u65f6\u5019\u6392\u9664 ",(0,o.kt)("inlineCode",{parentName:"li"},"TenantId")," \u5c5e\u6027\u66f4\u65b0")),(0,o.kt)("p",null,"\u5b9e\u73b0\u4e0a\u9762\u7684\u6b65\u9aa4\u5f88\u7b80\u5355\uff0c\u53ea\u9700\u8981\u91cd\u5199 ",(0,o.kt)("inlineCode",{parentName:"p"},"SavingChangesEvent")," \u4e8b\u4ef6\u65b9\u6cd5\u5373\u53ef\u3002"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{26-48}","{26-48}":!0},'using Furion.DatabaseAccessor;\nusing Microsoft.EntityFrameworkCore;\nusing Microsoft.EntityFrameworkCore.Metadata.Builders;\nusing System;\nusing System.Linq;\n\nnamespace Furion.EntityFramework.Core\n{\n [AppDbContext("Sqlite3ConnectionString", DbProvider.Sqlite)]\n public class FurionDbContext : AppDbContext, IMultiTenantOnTable, IModelBuilderFilter\n {\n public FurionDbContext(DbContextOptions options) : base(options)\n {\n }\n\n public object GetTenantId()\n {\n return base.Tenant?.TenantId ?? Guid.Empty;\n }\n\n public void OnCreating(ModelBuilder modelBuilder, EntityTypeBuilder entityBuilder, DbContext dbContext, Type dbContextLocator)\n {\n entityBuilder.HasQueryFilter(BuildTenantQueryFilter(entityBuilder, dbContext));\n }\n\n protected override void SavingChangesEvent(DbContextEventData eventData, InterceptionResult result)\n {\n // \u83b7\u53d6\u5f53\u524d\u4e8b\u4ef6\u5bf9\u5e94\u4e0a\u4e0b\u6587\n var dbContext = eventData.Context;\n\n // \u83b7\u53d6\u6240\u6709\u65b0\u589e\u3001\u66f4\u65b0\u3001\u5220\u9664\u7684\u5b9e\u4f53\n var entities = dbContext.ChangeTracker.Entries().Where(u => u.State == EntityState.Added || u.State == EntityState.Modified || u.State == EntityState.Deleted);\n\n foreach (var entity in entities)\n { \n switch (entity.State)\n {\n // \u81ea\u52a8\u8bbe\u7f6e\u79df\u6237Id\n case EntityState.Added:\n entity.Property(nameof(Entity.TenantId)).CurrentValue = GetTenantId();\n break;\n // \u6392\u9664\u79df\u6237Id\n case EntityState.Modified:\n entity.Property(nameof(Entity.TenantId)).IsModified = false;\n break;\n // \u5220\u9664\u5904\u7406\n case EntityState.Deleted:\n break;\n }\n }\n }\n }\n}\n')),(0,o.kt)("img",{src:(0,r.Z)("img/saas1.png")}),(0,o.kt)("h2",{id:"116-\u57fa\u4e8e-database-\u7684\u65b9\u5f0f"},"11.6 \u57fa\u4e8e ",(0,o.kt)("inlineCode",{parentName:"h2"},"Database")," \u7684\u65b9\u5f0f"),(0,o.kt)("p",null,"\u6b64\u65b9\u5f0f\u5728\u4e2d\u5927\u578b\u4f01\u4e1a\u7cfb\u7edf\u4e2d\u6700\u4e3a\u5e38\u7528\uff0c\u4e00\u4e2a\u79df\u6237\uff08\u5ba2\u6237\uff09\u4e00\u4e2a\u72ec\u7acb\u7684\u6570\u636e\u5e93\u3002"),(0,o.kt)("h3",{id:"1161-\u521b\u5efa\u79df\u6237\u6570\u636e\u5e93\u4e0a\u4e0b\u6587"},"11.6.1 \u521b\u5efa\u79df\u6237\u6570\u636e\u5e93\u4e0a\u4e0b\u6587"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:'{6-7} title="Furion.EntityFramework.Core\\DbContexts\\MultiTenantDbContext.cs"',"{6-7}":!0,title:'"Furion.EntityFramework.Core\\DbContexts\\MultiTenantDbContext.cs"'},'using Furion.DatabaseAccessor;\nusing Microsoft.EntityFrameworkCore;\n\nnamespace Furion.EntityFramework.Core\n{\n [AppDbContext("Sqlite3ConnectionString", DbProvider.Sqlite)]\n public class MultiTenantDbContext : AppDbContext\n {\n public MultiTenantDbContext(DbContextOptions options) : base(options)\n {\n }\n }\n}\n')),(0,o.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u6ce8\u610f")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u591a\u79df\u6237\u64cd\u4f5c\u5efa\u8bae\u5355\u72ec\u4e00\u4e2a\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\uff0c\u800c\u4e14\u9700\u6307\u5b9a ",(0,o.kt)("inlineCode",{parentName:"p"},"MultiTenantDbContextLocator")," \u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u5b9a\u4f4d\u5668\u3002"))),(0,o.kt)("h3",{id:"1162-\u6ce8\u518c\u591a\u79df\u6237\u6570\u636e\u5e93\u4e0a\u4e0b\u6587"},"11.6.2 \u6ce8\u518c\u591a\u79df\u6237\u6570\u636e\u5e93\u4e0a\u4e0b\u6587"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{13,14}","{13,14}":!0},"using Furion.DatabaseAccessor;\nusing Microsoft.Extensions.DependencyInjection;\n\nnamespace Furion.EntityFramework.Core\n{\n [AppStartup(600)]\n public sealed class FurEntityFrameworkCoreStartup : AppStartup\n {\n public void ConfigureServices(IServiceCollection services)\n {\n services.AddDatabaseAccessor(options =>\n {\n options.AddDb();\n options.AddDbPool();\n });\n }\n }\n}\n")),(0,o.kt)("div",{className:"admonition admonition-caution alert alert--warning"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 16 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"}))),"\u7279\u522b\u6ce8\u610f")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u9700\u8981 ",(0,o.kt)("inlineCode",{parentName:"p"},"Database")," \u591a\u79df\u6237\u65b9\u6848\u7684\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u9700\u8981\u91c7\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"AddDb")," \u6ce8\u518c\uff0c\u800c\u4e0d\u662f ",(0,o.kt)("inlineCode",{parentName:"p"},"AddDbPool"),"\u3002\u539f\u56e0\u662f ",(0,o.kt)("inlineCode",{parentName:"p"},"AddDbPool")," \u65b9\u5f0f\u6ce8\u518c\u540e\u7eed\u4e0d\u652f\u6301 ",(0,o.kt)("inlineCode",{parentName:"p"},"OnConfiguring")," \u91cd\u5199\uff01\uff01\uff01"))),(0,o.kt)("h3",{id:"1163-\u6dfb\u52a0-tenant-\u79cd\u5b50\u6570\u636e"},"11.6.3 \u6dfb\u52a0 ",(0,o.kt)("inlineCode",{parentName:"h3"},"Tenant")," \u79cd\u5b50\u6570\u636e"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:'{8,12-30} title="Furion.EntityFramework.Core\\SeedDatas\\TenantSeedData.cs"',"{8,12-30}":!0,title:'"Furion.EntityFramework.Core\\SeedDatas\\TenantSeedData.cs"'},'using Furion.DatabaseAccessor;\nusing Microsoft.EntityFrameworkCore;\nusing System;\nusing System.Collections.Generic;\n\nnamespace Furion.EntityFramework.Core\n{\n public class TenantSeedData : IEntitySeedData\n {\n public IEnumerable HasData(DbContext dbContext, Type dbContextLocator)\n {\n return new List\n {\n new Tenant\n {\n TenantId = Guid.Parse("383AFB88-F519-FFF8-B364-6D563BF3687F"),\n Name = "\u9ed8\u8ba4\u79df\u6237",\n Host = "localhost:44313",\n CreatedTime = DateTime.Parse("2020-10-06 20:19:07"),\n ConnectionString = "Data Source=./Furion.db" // \u914d\u7f6e\u8fde\u63a5\u5b57\u7b26\u4e32\n },\n new Tenant\n {\n TenantId = Guid.Parse("C5798CB6-16D6-0F42-EB56-59C695353BC0"),\n Name = "\u5176\u4ed6\u79df\u6237",\n Host = "localhost:5000",\n CreatedTime = DateTime.Parse("2020-10-06 20:20:32"),\n ConnectionString = "Data Source=./Fur2.db" // \u914d\u7f6e\u8fde\u63a5\u5b57\u7b26\u4e32\n }\n };\n }\n }\n}\n')),(0,o.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u7279\u522b\u8bf4\u660e")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u8be5\u6b65\u9aa4\u53ea\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"Code First")," \u65b9\u5f0f\u6267\u884c\uff0c",(0,o.kt)("inlineCode",{parentName:"p"},"Database First")," \u65e0\u9700\u914d\u7f6e\u79cd\u5b50\u6570\u636e\u3002"))),(0,o.kt)("h3",{id:"1164-\u6839\u636e\u6a21\u578b\u521b\u5efa-tenant-\u8868"},"11.6.4 \u6839\u636e\u6a21\u578b\u521b\u5efa ",(0,o.kt)("inlineCode",{parentName:"h3"},"Tenant")," \u8868"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-shell"},"Add-Migration add_tenant_table -Context MultiTenantDbContext\n")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-shell"},"Update-Database -Context MultiTenantDbContext\n")),(0,o.kt)("h3",{id:"1165-\u5b9e\u73b0-imultitenantondatabase-\u63a5\u53e3"},"11.6.5 \u5b9e\u73b0 ",(0,o.kt)("inlineCode",{parentName:"h3"},"IMultiTenantOnDatabase")," \u63a5\u53e3"),(0,o.kt)("p",null,"\u5728\u9700\u8981\u591a\u79df\u6237\u7684\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u4e2d\u5b9e\u73b0 ",(0,o.kt)("inlineCode",{parentName:"p"},"IMultiTenantOnDatabase")," \u63a5\u53e3\uff0c\u5982\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{6,13-16}","{6,13-16}":!0},'using Furion.DatabaseAccessor;\nusing Microsoft.EntityFrameworkCore;\n\nnamespace Furion.EntityFramework.Core\n{\n // \u8fd9\u91cc\u53ef\u4e0d\u914d\u7f6e\n public class FurionDbContext : AppDbContext, IMultiTenantOnDatabase\n {\n public FurionDbContext(DbContextOptions options) : base(options)\n {\n }\n\n public string GetDatabaseConnectionString()\n {\n return base.Tenant?.ConnectionString??"\u9ed8\u8ba4\u94fe\u63a5\u5b57\u7b26\u4e32";\n }\n }\n}\n')),(0,o.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u8bf4\u660e")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},(0,o.kt)("inlineCode",{parentName:"p"},"base.Tenant")," \u53ea\u662f ",(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u7684\u9ed8\u8ba4\u79df\u6237\u5b9e\u73b0\u65b9\u6cd5\uff0c\u5982\u679c\u4e0d\u80fd\u6ee1\u8db3\u4e1a\u52a1\u9700\u6c42\uff0c\u53ea\u9700\u8981\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"GetDatabaseConnectionString")," \u91cc\u9762\u5199\u4f60\u7684\u4e1a\u52a1\u4ee3\u7801\u5373\u53ef\uff0c\u4e5f\u5c31\u662f\u65e0\u9700\u8c03\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"base.Tenant"),"\u3002\u5982\uff1a"),(0,o.kt)("pre",{parentName:"div"},(0,o.kt)("code",{parentName:"pre",className:"language-cs"},"public string GetDatabaseConnectionString()\n{\n // \u8fd9\u91cc\u662f\u4f60\u83b7\u53d6 DatabaseConnecionString \u7684\u903b\u8f91\n return \u4f60\u7684 \u8fde\u63a5\u5b57\u7b26\u4e32;\n}\n")))),(0,o.kt)("h3",{id:"1166-\u91cd\u5199-onconfiguring-\u65b9\u6cd5"},"11.6.6 \u91cd\u5199 ",(0,o.kt)("inlineCode",{parentName:"h3"},"OnConfiguring")," \u65b9\u6cd5"),(0,o.kt)("p",null,"\u5728\u9700\u8981\u591a\u79df\u6237\u7684\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u4e2d\u91cd\u5199 ",(0,o.kt)("inlineCode",{parentName:"p"},"OnConfiguring")," \u65b9\u6cd5\u5e76\u914d\u7f6e\u8fde\u63a5\u5b57\u7b26\u4e32\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{12-17}","{12-17}":!0},'using Furion.DatabaseAccessor;\nusing Microsoft.EntityFrameworkCore;\n\nnamespace Furion.EntityFramework.Core\n{\n public class FurionDbContext : AppDbContext, IMultiTenantOnDatabase\n {\n public FurionDbContext(DbContextOptions options) : base(options)\n {\n }\n\n protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)\n {\n optionsBuilder.UseSqlite(GetDatabaseConnectionString());\n\n base.OnConfiguring(optionsBuilder);\n }\n\n public string GetDatabaseConnectionString()\n {\n return base.Tenant?.ConnectionString??"\u9ed8\u8ba4\u94fe\u63a5\u5b57\u7b26\u4e32";\n }\n }\n}\n')),(0,o.kt)("img",{src:(0,r.Z)("img/saas2.png")}),(0,o.kt)("div",{className:"admonition admonition-caution alert alert--warning"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 16 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M8.893 1.5c-.183-.31-.52-.5-.887-.5s-.703.19-.886.5L.138 13.499a.98.98 0 0 0 0 1.001c.193.31.53.501.886.501h13.964c.367 0 .704-.19.877-.5a1.03 1.03 0 0 0 .01-1.002L8.893 1.5zm.133 11.497H6.987v-2.003h2.039v2.003zm0-3.004H6.987V5.987h2.039v4.006z"}))),"\u7279\u522b\u6ce8\u610f")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u57fa\u4e8e ",(0,o.kt)("inlineCode",{parentName:"p"},"Database")," \u65b9\u5f0f\u505a ",(0,o.kt)("inlineCode",{parentName:"p"},"Code First")," \u7684\u65f6\u5019\uff0c\u9700\u8981\u624b\u52a8\u6307\u5b9a\u8fc1\u79fb\u7a0b\u5e8f\u540d\u79f0\uff0c\u5982\uff1a"),(0,o.kt)("pre",{parentName:"div"},(0,o.kt)("code",{parentName:"pre",className:"language-cs"},'optionsBuilder.UseSqlite(GetDatabaseConnectionString(), options=>\n{\n options.MigrationsAssembly("My.Migrations");\n});\n')))),(0,o.kt)("h2",{id:"117-\u57fa\u4e8e-schema-\u7684\u65b9\u5f0f"},"11.7 \u57fa\u4e8e ",(0,o.kt)("inlineCode",{parentName:"h2"},"Schema")," \u7684\u65b9\u5f0f"),(0,o.kt)("p",null,"\u6b64\u65b9\u5f0f\u5728\u4e2d\u5c0f\u578b\u4f01\u4e1a\u7cfb\u7edf\u4e2d\u4e5f\u4e0d\u5c11\u89c1\uff0c\u4e00\u4e2a\u79df\u6237\uff08\u5ba2\u6237\uff09\u5171\u4eab\u6570\u636e\u5e93\u4e14\u4e0d\u540c ",(0,o.kt)("inlineCode",{parentName:"p"},"Schema"),"\u3002"),(0,o.kt)("h3",{id:"1171-\u521b\u5efa\u79df\u6237\u6570\u636e\u5e93\u4e0a\u4e0b\u6587"},"11.7.1 \u521b\u5efa\u79df\u6237\u6570\u636e\u5e93\u4e0a\u4e0b\u6587"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:'{6-7} title="Furion.EntityFramework.Core\\DbContexts\\MultiTenantDbContext.cs"',"{6-7}":!0,title:'"Furion.EntityFramework.Core\\DbContexts\\MultiTenantDbContext.cs"'},'using Furion.DatabaseAccessor;\nusing Microsoft.EntityFrameworkCore;\n\nnamespace Furion.EntityFramework.Core\n{\n [AppDbContext("Sqlite3ConnectionString", DbProvider.Sqlite)]\n public class MultiTenantDbContext : AppDbContext\n {\n public MultiTenantDbContext(DbContextOptions options) : base(options)\n {\n }\n }\n}\n')),(0,o.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u6ce8\u610f")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u591a\u79df\u6237\u64cd\u4f5c\u5efa\u8bae\u5355\u72ec\u4e00\u4e2a\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\uff0c\u800c\u4e14\u9700\u6307\u5b9a ",(0,o.kt)("inlineCode",{parentName:"p"},"MultiTenantDbContextLocator")," \u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u5b9a\u4f4d\u5668\u3002"))),(0,o.kt)("h3",{id:"1172-\u6ce8\u518c\u591a\u79df\u6237\u6570\u636e\u5e93\u4e0a\u4e0b\u6587"},"11.7.2 \u6ce8\u518c\u591a\u79df\u6237\u6570\u636e\u5e93\u4e0a\u4e0b\u6587"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{14}","{14}":!0},"using Furion.DatabaseAccessor;\nusing Microsoft.Extensions.DependencyInjection;\n\nnamespace Furion.EntityFramework.Core\n{\n [AppStartup(600)]\n public sealed class FurEntityFrameworkCoreStartup : AppStartup\n {\n public void ConfigureServices(IServiceCollection services)\n {\n services.AddDatabaseAccessor(options =>\n {\n options.AddDbPool();\n options.AddDbPool();\n });\n }\n }\n}\n")),(0,o.kt)("h3",{id:"1173-\u6dfb\u52a0-tenant-\u79cd\u5b50\u6570\u636e"},"11.7.3 \u6dfb\u52a0 ",(0,o.kt)("inlineCode",{parentName:"h3"},"Tenant")," \u79cd\u5b50\u6570\u636e"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:'{8,12-30} title="Furion.EntityFramework.Core\\SeedDatas\\TenantSeedData.cs"',"{8,12-30}":!0,title:'"Furion.EntityFramework.Core\\SeedDatas\\TenantSeedData.cs"'},'using Furion.DatabaseAccessor;\nusing Microsoft.EntityFrameworkCore;\nusing System;\nusing System.Collections.Generic;\n\nnamespace Furion.EntityFramework.Core\n{\n public class TenantSeedData : IEntitySeedData\n {\n public IEnumerable HasData(DbContext dbContext, Type dbContextLocator)\n {\n return new List\n {\n new Tenant\n {\n TenantId = Guid.Parse("383AFB88-F519-FFF8-B364-6D563BF3687F"),\n Name = "\u9ed8\u8ba4\u79df\u6237",\n Host = "localhost:44313",\n CreatedTime = DateTime.Parse("2020-10-06 20:19:07"),\n Schema = "dbo" // Schema\n },\n new Tenant\n {\n TenantId = Guid.Parse("C5798CB6-16D6-0F42-EB56-59C695353BC0"),\n Name = "\u5176\u4ed6\u79df\u6237",\n Host = "localhost:5000",\n CreatedTime = DateTime.Parse("2020-10-06 20:20:32"),\n Schema = "furion" // Schema\n }\n };\n }\n }\n}\n')),(0,o.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u7279\u522b\u8bf4\u660e")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u8be5\u6b65\u9aa4\u53ea\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"Code First")," \u65b9\u5f0f\u6267\u884c\uff0c",(0,o.kt)("inlineCode",{parentName:"p"},"Database First")," \u65e0\u9700\u914d\u7f6e\u79cd\u5b50\u6570\u636e\u3002"))),(0,o.kt)("h3",{id:"1174-\u6839\u636e\u6a21\u578b\u521b\u5efa-tenant-\u8868"},"11.7.4 \u6839\u636e\u6a21\u578b\u521b\u5efa ",(0,o.kt)("inlineCode",{parentName:"h3"},"Tenant")," \u8868"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-shell"},"Add-Migration add_tenant_table -Context MultiTenantDbContext\n")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-shell"},"Update-Database -Context MultiTenantDbContext\n")),(0,o.kt)("h3",{id:"1175-\u5b9e\u73b0-imultitenantonschema-\u63a5\u53e3"},"11.7.5 \u5b9e\u73b0 ",(0,o.kt)("inlineCode",{parentName:"h3"},"IMultiTenantOnSchema")," \u63a5\u53e3"),(0,o.kt)("p",null,"\u5728\u9700\u8981\u591a\u79df\u6237\u7684\u6570\u636e\u5e93\u4e0a\u4e0b\u6587\u4e2d\u5b9e\u73b0 ",(0,o.kt)("inlineCode",{parentName:"p"},"IMultiTenantOnSchema")," \u63a5\u53e3\uff0c\u5982\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{6,12-15}","{6,12-15}":!0},'using Furion.DatabaseAccessor;\nusing Microsoft.EntityFrameworkCore;\n\nnamespace Furion.EntityFramework.Core\n{\n [AppDbContext("Sqlite3ConnectionString", DbProvider.Sqlite)]\n public class FurionDbContext : AppDbContext, IMultiTenantOnSchema\n {\n public FurionDbContext(DbContextOptions options) : base(options)\n {\n }\n\n public string GetSchemaName()\n {\n return base.Tenant?.Schema??"dbo";\n }\n }\n}\n')),(0,o.kt)("div",{className:"admonition admonition-important alert alert--info"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"}))),"\u7279\u522b\u8bf4\u660e")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},(0,o.kt)("inlineCode",{parentName:"p"},"base.Tenant")," \u53ea\u662f ",(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u7684\u9ed8\u8ba4\u79df\u6237\u5b9e\u73b0\u65b9\u6cd5\uff0c\u5982\u679c\u4e0d\u80fd\u6ee1\u8db3\u4e1a\u52a1\u9700\u6c42\uff0c\u53ea\u9700\u8981\u5728 ",(0,o.kt)("inlineCode",{parentName:"p"},"GetSchemaName")," \u91cc\u9762\u5199\u4f60\u7684\u4e1a\u52a1\u4ee3\u7801\u5373\u53ef\uff0c\u4e5f\u5c31\u662f\u65e0\u9700\u8c03\u7528 ",(0,o.kt)("inlineCode",{parentName:"p"},"base.Tenant"),"\u3002\u5982\uff1a"),(0,o.kt)("pre",{parentName:"div"},(0,o.kt)("code",{parentName:"pre",className:"language-cs"},"public string GetSchemaName()\n{\n // \u8fd9\u91cc\u662f\u4f60\u83b7\u53d6 Schema \u7684\u903b\u8f91\n return \u4f60\u7684 Schema;\n}\n")))),(0,o.kt)("h3",{id:"1176-\u5173\u4e8e-code-first-\u6570\u636e\u8fc1\u79fb"},"11.7.6 \u5173\u4e8e ",(0,o.kt)("inlineCode",{parentName:"h3"},"Code First \u6570\u636e\u8fc1\u79fb")),(0,o.kt)("p",null,"\u57fa\u4e8e ",(0,o.kt)("inlineCode",{parentName:"p"},"Schema")," \u65b9\u5f0f\u6bd4\u8f83\u7279\u522b\uff0c\u751f\u6210\u6570\u636e\u8fc1\u79fb\u7684\u65f6\u5019\u6ca1\u529e\u6cd5\u83b7\u53d6\u79df\u6237\u4fe1\u606f\uff0c\u6240\u4ee5\u5efa\u8bae",(0,o.kt)("strong",{parentName:"p"},"\u5206\u5f00\u591a\u6b21\u8fc1\u79fb"),"\uff0c\u5982\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},'public string GetSchemaName()\n{\n return base.Tenant?.Schema?? "\u79df\u6237\u4e00Schema";\n}\n')),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},'public string GetSchemaName()\n{\n return base.Tenant?.Schema?? "\u79df\u6237\u4e8cSchema";\n}\n')),(0,o.kt)("p",null,"\u8fd9\u6837\u5c31\u53ef\u4ee5\u5728\u8fc1\u79fb\u7684\u65f6\u5019\u751f\u6210\u591a\u6b21\u8fc1\u79fb\u4e86\u3002"),(0,o.kt)("h2",{id:"118-\u81ea\u5b9a\u4e49-tenant-\u7c7b\u578b"},"11.8 \u81ea\u5b9a\u4e49 ",(0,o.kt)("inlineCode",{parentName:"h2"},"Tenant")," \u7c7b\u578b"),(0,o.kt)("p",null,"\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c",(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u63d0\u4f9b\u4e86\u5185\u7f6e\u7684 ",(0,o.kt)("inlineCode",{parentName:"p"},"Tenant")," \u7c7b\u578b\uff0c\u65b9\u4fbf\u5927\u5bb6\u5feb\u901f\u5b9e\u73b0 ",(0,o.kt)("inlineCode",{parentName:"p"},"SaaS")," \u591a\u79df\u6237\u529f\u80fd\uff0c\u5982\u679c\u9700\u8981\u81ea\u5b9a\u4e49\u591a\u79df\u6237 ",(0,o.kt)("inlineCode",{parentName:"p"},"Tenant")," \u7c7b\u578b\uff0c\u53ea\u9700\u8981\u542f\u7528\u4ee5\u4e0b\u914d\u7f6e\u5373\u53ef\uff1a"),(0,o.kt)("h3",{id:"1181-\u542f\u52a8\u81ea\u5b9a\u4e49\u591a\u79df\u6237\u7c7b\u578b\u914d\u7f6e"},"11.8.1 \u542f\u52a8\u81ea\u5b9a\u4e49\u591a\u79df\u6237\u7c7b\u578b\u914d\u7f6e"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{3}","{3}":!0},"services.AddDatabaseAccessor(options =>\n{\n options.CustomizeMultiTenants(); // \u542f\u7528\u81ea\u5b9a\u4e49\u591a\u79df\u6237\u7c7b\u578b\uff0c\u6709\u4e00\u4e2a\u9ed8\u8ba4\u53c2\u6570\uff0c\u914d\u7f6e\u591a\u79df\u6237\u8868\u5b57\u6bb5\u540d\n options.AddDbPool();\n});\n")),(0,o.kt)("h3",{id:"1182-\u81ea\u5b9a\u4e49\u79df\u6237\u7c7b"},"11.8.2 \u81ea\u5b9a\u4e49\u79df\u6237\u7c7b"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs",metastring:"{6}","{6}":!0},"using System;\nusing System.ComponentModel.DataAnnotations.Schema;\n\nnamespace Furion.Core\n{\n public class MyTenant : IEntity\n {\n [Key]\n public Guid TenantId { get; set; }\n\n public string Name { get; set; }\n\n public string Host { get; set; }\n }\n}\n")),(0,o.kt)("p",null,"\u5982\u679c\u9700\u8981\u67e5\u8be2\u8be5\u79df\u6237\u4fe1\u606f\uff0c\u53ef\u901a\u8fc7\u4ee5\u4e0b\u4ee3\u7801\u83b7\u53d6\uff0c\u5982\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},"var tenantDbContext = Db.GetDbContext();\nvar myTenant = tenantDbContext.Set();\n")),(0,o.kt)("h2",{id:"119-\u5237\u65b0\u79df\u6237\u7f13\u5b58"},"11.9 \u5237\u65b0\u79df\u6237\u7f13\u5b58"),(0,o.kt)("p",null,(0,o.kt)("inlineCode",{parentName:"p"},"Furion")," \u6846\u67b6\u4f1a\u5728\u79df\u6237\u4e0a\u4e0b\u6587\u7b2c\u4e00\u6b21\u67e5\u8be2\u65f6\u5019\u5c06\u79df\u6237\u8868\u7f13\u5b58\u8d77\u6765\uff0c\u907f\u514d\u9891\u53d1\u67e5\u8be2\u6570\u636e\u5e93\uff0c\u5982\u679c\u66f4\u65b0\u4e86\u79df\u6237\u8868\uff0c\u5219\u9700\u8981\u624b\u52a8\u5237\u65b0\u79df\u6237\u4fe1\u606f\uff0c\u5982\uff1a"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-cs"},"using Furion.DatabaseAccessor.Extensions;\n\n// \u5728\u66f4\u65b0\u79df\u6237\u4fe1\u606f\u540e\u8c03\u7528\n_repository.Context.RefreshTenantCache();\n")),(0,o.kt)("h2",{id:"1110-\u53cd\u9988\u4e0e\u5efa\u8bae"},"11.10 \u53cd\u9988\u4e0e\u5efa\u8bae"),(0,o.kt)("div",{className:"admonition admonition-note alert alert--secondary"},(0,o.kt)("div",{parentName:"div",className:"admonition-heading"},(0,o.kt)("h5",{parentName:"div"},(0,o.kt)("span",{parentName:"h5",className:"admonition-icon"},(0,o.kt)("svg",{parentName:"span",xmlns:"http://www.w3.org/2000/svg",width:"14",height:"16",viewBox:"0 0 14 16"},(0,o.kt)("path",{parentName:"svg",fillRule:"evenodd",d:"M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"}))),"\u4e0e\u6211\u4eec\u4ea4\u6d41")),(0,o.kt)("div",{parentName:"div",className:"admonition-content"},(0,o.kt)("p",{parentName:"div"},"\u7ed9 Furion \u63d0 ",(0,o.kt)("a",{parentName:"p",href:"https://gitee.com/dotnetchina/Furion/issues/new?issue"},"Issue"),"\u3002"))))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/handbook/build/assets/js/fe38d63c.7b413dc6.js b/handbook/build/assets/js/fe38d63c.7b413dc6.js new file mode 100644 index 00000000000..e153960138f --- /dev/null +++ b/handbook/build/assets/js/fe38d63c.7b413dc6.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkfurion=self.webpackChunkfurion||[]).push([[6073],{3905:function(e,n,t){t.d(n,{Zo:function(){return m},kt:function(){return u}});var i=t(7294);function r(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function a(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);n&&(i=i.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,i)}return t}function o(e){for(var n=1;n=0||(r[t]=e[t]);return r}(e,n);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var p=i.createContext({}),s=function(e){var n=i.useContext(p),t=n;return e&&(t="function"==typeof e?e(n):o(o({},n),e)),t},m=function(e){var n=s(e.components);return i.createElement(p.Provider,{value:n},e.children)},c={inlineCode:"code",wrapper:function(e){var n=e.children;return i.createElement(i.Fragment,{},n)}},d=i.forwardRef((function(e,n){var t=e.components,r=e.mdxType,a=e.originalType,p=e.parentName,m=l(e,["components","mdxType","originalType","parentName"]),d=s(t),u=r,k=d["".concat(p,".").concat(u)]||d[u]||c[u]||a;return t?i.createElement(k,o(o({ref:n},m),{},{components:t})):i.createElement(k,o({ref:n},m))}));function u(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var a=t.length,o=new Array(a);o[0]=d;var l={};for(var p in n)hasOwnProperty.call(n,p)&&(l[p]=n[p]);l.originalType=e,l.mdxType="string"==typeof e?e:r,o[1]=l;for(var s=2;s=0||(r[t]=e[t]);return r}(e,n);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;i=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var p=i.createContext({}),s=function(e){var n=i.useContext(p),t=n;return e&&(t="function"==typeof e?e(n):o(o({},n),e)),t},m=function(e){var n=s(e.components);return i.createElement(p.Provider,{value:n},e.children)},c={inlineCode:"code",wrapper:function(e){var n=e.children;return i.createElement(i.Fragment,{},n)}},d=i.forwardRef((function(e,n){var t=e.components,r=e.mdxType,a=e.originalType,p=e.parentName,m=l(e,["components","mdxType","originalType","parentName"]),d=s(t),u=r,k=d["".concat(p,".").concat(u)]||d[u]||c[u]||a;return t?i.createElement(k,o(o({ref:n},m),{},{components:t})):i.createElement(k,o({ref:n},m))}));function u(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var a=t.length,o=new Array(a);o[0]=d;var l={};for(var p in n)hasOwnProperty.call(n,p)&&(l[p]=n[p]);l.originalType=e,l.mdxType="string"==typeof e?e:r,o[1]=l;for(var s=2;s1?t-1:0),r=1;r\n

Your Docusaurus site did not load properly.

\n

A very common reason is a wrong site baseUrl configuration.

\n

Current configured baseUrl = '+e+" "+("/"===e?" (default value)":"")+'

\n

We suggest trying baseUrl =

\n\n'}(e)).replace(/=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n},W=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t},q=function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return!1===t?String(e):String(e).replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")},V=function(e){var t=Q(e,v.TITLE),n=Q(e,F);if(n&&t)return n.replace(/%s/g,(function(){return Array.isArray(t)?t.join(""):t}));var r=Q(e,L);return t||r||void 0},Z=function(e){return Q(e,D)||function(){}},Y=function(e,t){return t.filter((function(t){return void 0!==t[e]})).map((function(t){return t[e]})).reduce((function(e,t){return H({},e,t)}),{})},K=function(e,t){return t.filter((function(e){return void 0!==e[v.BASE]})).map((function(e){return e[v.BASE]})).reverse().reduce((function(t,n){if(!t.length)for(var r=Object.keys(n),o=0;o=0;n--){var r=e[n];if(r.hasOwnProperty(t))return r[t]}return null},J=(r=Date.now(),function(e){var t=Date.now();t-r>16?(r=t,e(t)):setTimeout((function(){J(e)}),0)}),ee=function(e){return clearTimeout(e)},te="undefined"!=typeof window?window.requestAnimationFrame&&window.requestAnimationFrame.bind(window)||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||J:n.g.requestAnimationFrame||J,ne="undefined"!=typeof window?window.cancelAnimationFrame||window.webkitCancelAnimationFrame||window.mozCancelAnimationFrame||ee:n.g.cancelAnimationFrame||ee,re=function(e){return console&&"function"==typeof console.warn&&console.warn(e)},oe=null,ae=function(e,t){var n=e.baseTag,r=e.bodyAttributes,o=e.htmlAttributes,a=e.linkTags,i=e.metaTags,s=e.noscriptTags,l=e.onChangeClientState,u=e.scriptTags,c=e.styleTags,d=e.title,f=e.titleAttributes;le(v.BODY,r),le(v.HTML,o),se(d,f);var p={baseTag:ue(v.BASE,n),linkTags:ue(v.LINK,a),metaTags:ue(v.META,i),noscriptTags:ue(v.NOSCRIPT,s),scriptTags:ue(v.SCRIPT,u),styleTags:ue(v.STYLE,c)},h={},m={};Object.keys(p).forEach((function(e){var t=p[e],n=t.newTags,r=t.oldTags;n.length&&(h[e]=n),r.length&&(m[e]=p[e].oldTags)})),t&&t(),l(e,h,m)},ie=function(e){return Array.isArray(e)?e.join(""):e},se=function(e,t){void 0!==e&&document.title!==e&&(document.title=ie(e)),le(v.TITLE,t)},le=function(e,t){var n=document.getElementsByTagName(e)[0];if(n){for(var r=n.getAttribute(U),o=r?r.split(","):[],a=[].concat(o),i=Object.keys(t),s=0;s=0;d--)n.removeAttribute(a[d]);o.length===a.length?n.removeAttribute(U):n.getAttribute(U)!==i.join(",")&&n.setAttribute(U,i.join(","))}},ue=function(e,t){var n=document.head||document.querySelector(v.HEAD),r=n.querySelectorAll(e+"["+"data-react-helmet]"),o=Array.prototype.slice.call(r),a=[],i=void 0;return t&&t.length&&t.forEach((function(t){var n=document.createElement(e);for(var r in t)if(t.hasOwnProperty(r))if(r===S)n.innerHTML=t.innerHTML;else if(r===w)n.styleSheet?n.styleSheet.cssText=t.cssText:n.appendChild(document.createTextNode(t.cssText));else{var s=void 0===t[r]?"":t[r];n.setAttribute(r,s)}n.setAttribute(U,"true"),o.some((function(e,t){return i=t,n.isEqualNode(e)}))?o.splice(i,1):a.push(n)})),o.forEach((function(e){return e.parentNode.removeChild(e)})),a.forEach((function(e){return n.appendChild(e)})),{oldTags:o,newTags:a}},ce=function(e){return Object.keys(e).reduce((function(t,n){var r=void 0!==e[n]?n+'="'+e[n]+'"':""+n;return t?t+" "+r:r}),"")},de=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return Object.keys(e).reduce((function(t,n){return t[N[n]||n]=e[n],t}),t)},fe=function(e,t,n){switch(e){case v.TITLE:return{toComponent:function(){return e=t.title,n=t.titleAttributes,(r={key:e})[U]=!0,o=de(n,r),[s.createElement(v.TITLE,o,e)];var e,n,r,o},toString:function(){return function(e,t,n,r){var o=ce(n),a=ie(t);return o?"<"+e+' data-react-helmet="true" '+o+">"+q(a,r)+"":"<"+e+' data-react-helmet="true">'+q(a,r)+""}(e,t.title,t.titleAttributes,n)}};case g:case b:return{toComponent:function(){return de(t)},toString:function(){return ce(t)}};default:return{toComponent:function(){return function(e,t){return t.map((function(t,n){var r,o=((r={key:n})[U]=!0,r);return Object.keys(t).forEach((function(e){var n=N[e]||e;if(n===S||n===w){var r=t.innerHTML||t.cssText;o.dangerouslySetInnerHTML={__html:r}}else o[n]=t[e]})),s.createElement(e,o)}))}(e,t)},toString:function(){return function(e,t,n){return t.reduce((function(t,r){var o=Object.keys(r).filter((function(e){return!(e===S||e===w)})).reduce((function(e,t){var o=void 0===r[t]?t:t+'="'+q(r[t],n)+'"';return e?e+" "+o:o}),""),a=r.innerHTML||r.cssText||"",i=-1===B.indexOf(e);return t+"<"+e+' data-react-helmet="true" '+o+(i?"/>":">"+a+"")}),"")}(e,t,n)}}}},pe=function(e){var t=e.baseTag,n=e.bodyAttributes,r=e.encode,o=e.htmlAttributes,a=e.linkTags,i=e.metaTags,s=e.noscriptTags,l=e.scriptTags,u=e.styleTags,c=e.title,d=void 0===c?"":c,f=e.titleAttributes;return{base:fe(v.BASE,t,r),bodyAttributes:fe(g,n,r),htmlAttributes:fe(b,o,r),link:fe(v.LINK,a,r),meta:fe(v.META,i,r),noscript:fe(v.NOSCRIPT,s,r),script:fe(v.SCRIPT,l,r),style:fe(v.STYLE,u,r),title:fe(v.TITLE,{title:d,titleAttributes:f},r)}},he=d()((function(e){return{baseTag:K([x,_],e),bodyAttributes:Y(g,e),defer:Q(e,P),encode:Q(e,I),htmlAttributes:Y(b,e),linkTags:X(v.LINK,[A,x],e),metaTags:X(v.META,[O,E,k,C,T],e),noscriptTags:X(v.NOSCRIPT,[S],e),onChangeClientState:Z(e),scriptTags:X(v.SCRIPT,[R,S],e),styleTags:X(v.STYLE,[w],e),title:V(e),titleAttributes:Y(y,e)}}),(function(e){oe&&ne(oe),e.defer?oe=te((function(){ae(e,(function(){oe=null}))})):(ae(e),oe=null)}),pe)((function(){return null})),me=(o=he,i=a=function(e){function t(){return z(this,t),W(this,e.apply(this,arguments))}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),t.prototype.shouldComponentUpdate=function(e){return!p()(this.props,e)},t.prototype.mapNestedChildrenToProps=function(e,t){if(!t)return null;switch(e.type){case v.SCRIPT:case v.NOSCRIPT:return{innerHTML:t};case v.STYLE:return{cssText:t}}throw new Error("<"+e.type+" /> elements are self-closing and can not contain children. Refer to our API for more information.")},t.prototype.flattenArrayTypeChildren=function(e){var t,n=e.child,r=e.arrayTypeChildren,o=e.newChildProps,a=e.nestedChildren;return H({},r,((t={})[n.type]=[].concat(r[n.type]||[],[H({},o,this.mapNestedChildrenToProps(n,a))]),t))},t.prototype.mapObjectTypeChildren=function(e){var t,n,r=e.child,o=e.newProps,a=e.newChildProps,i=e.nestedChildren;switch(r.type){case v.TITLE:return H({},o,((t={})[r.type]=i,t.titleAttributes=H({},a),t));case v.BODY:return H({},o,{bodyAttributes:H({},a)});case v.HTML:return H({},o,{htmlAttributes:H({},a)})}return H({},o,((n={})[r.type]=H({},a),n))},t.prototype.mapArrayTypeChildrenToProps=function(e,t){var n=H({},t);return Object.keys(e).forEach((function(t){var r;n=H({},n,((r={})[t]=e[t],r))})),n},t.prototype.warnOnInvalidChildren=function(e,t){return!0},t.prototype.mapChildrenToProps=function(e,t){var n=this,r={};return s.Children.forEach(e,(function(e){if(e&&e.props){var o=e.props,a=o.children,i=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return Object.keys(e).reduce((function(t,n){return t[M[n]||n]=e[n],t}),t)}(G(o,["children"]));switch(n.warnOnInvalidChildren(e,a),e.type){case v.LINK:case v.META:case v.NOSCRIPT:case v.SCRIPT:case v.STYLE:r=n.flattenArrayTypeChildren({child:e,arrayTypeChildren:r,newChildProps:i,nestedChildren:a});break;default:t=n.mapObjectTypeChildren({child:e,newProps:t,newChildProps:i,nestedChildren:a})}}})),t=this.mapArrayTypeChildrenToProps(r,t)},t.prototype.render=function(){var e=this.props,t=e.children,n=G(e,["children"]),r=H({},n);return t&&(r=this.mapChildrenToProps(t,r)),s.createElement(o,r)},$(t,null,[{key:"canUseDOM",set:function(e){o.canUseDOM=e}}]),t}(s.Component),a.propTypes={base:u().object,bodyAttributes:u().object,children:u().oneOfType([u().arrayOf(u().node),u().node]),defaultTitle:u().string,defer:u().bool,encodeSpecialCharacters:u().bool,htmlAttributes:u().object,link:u().arrayOf(u().object),meta:u().arrayOf(u().object),noscript:u().arrayOf(u().object),onChangeClientState:u().func,script:u().arrayOf(u().object),style:u().arrayOf(u().object),title:u().string,titleAttributes:u().object,titleTemplate:u().string},a.defaultProps={defer:!0,encodeSpecialCharacters:!0},a.peek=o.peek,a.rewind=function(){var e=o.rewind();return e||(e=pe({baseTag:[],bodyAttributes:{},encodeSpecialCharacters:!0,htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:"",titleAttributes:{}})),e},i);me.renderStatic=me.rewind;var ge=function(e){return s.createElement(me,Object.assign({},e))}},4748:function(e,t,n){"use strict";var r=n(7294);t.Z=r.createContext(null)},3919:function(e,t,n){"use strict";function r(e){return!0===/^(\w*:|\/\/)/.test(e)}function o(e){return void 0!==e&&!r(e)}n.d(t,{b:function(){return r},Z:function(){return o}})},6291:function(e,t,n){"use strict";var r=n(8790);t.Z=r.H},4996:function(e,t,n){"use strict";n.d(t,{C:function(){return a},Z:function(){return i}});var r=n(2263),o=n(3919);function a(){var e=(0,r.Z)().siteConfig,t=(e=void 0===e?{}:e).baseUrl,n=void 0===t?"/":t,a=e.url;return{withBaseUrl:function(e,t){return function(e,t,n,r){var a=void 0===r?{}:r,i=a.forcePrependBaseUrl,s=void 0!==i&&i,l=a.absolute,u=void 0!==l&&l;if(!n)return n;if(n.startsWith("#"))return n;if((0,o.b)(n))return n;if(s)return t+n;var c=n.startsWith(t)?n:t+n.replace(/^\//,"");return u?e+c:c}(a,n,e,t)}}}function i(e,t){return void 0===t&&(t={}),(0,a().withBaseUrl)(e,t)}},2263:function(e,t,n){"use strict";var r=n(7294),o=n(4748);t.Z=function(){var e=(0,r.useContext)(o.Z);if(null===e)throw new Error("Docusaurus context not provided.");return e}},2203:function(e,t,n){"use strict";function r(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}function o(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(){return(i=Object.assign||function(e){for(var t=1;t=0;f--){var p=i[f];"."===p?a(i,f):".."===p?(a(i,f),d++):d&&(a(i,f),d--)}if(!u)for(;d--;d)i.unshift("..");!u||""===i[0]||i[0]&&o(i[0])||i.unshift("");var h=i.join("/");return n&&"/"!==h.substr(-1)&&(h+="/"),h};function s(e){return e.valueOf?e.valueOf():Object.prototype.valueOf.call(e)}var l=function e(t,n){if(t===n)return!0;if(null==t||null==n)return!1;if(Array.isArray(t))return Array.isArray(n)&&t.length===n.length&&t.every((function(t,r){return e(t,n[r])}));if("object"==typeof t||"object"==typeof n){var r=s(t),o=s(n);return r!==t||o!==n?e(r,o):Object.keys(Object.assign({},t,n)).every((function(r){return e(t[r],n[r])}))}return!1},u=n(2177);function c(e){return"/"===e.charAt(0)?e:"/"+e}function d(e){return"/"===e.charAt(0)?e.substr(1):e}function f(e,t){return function(e,t){return 0===e.toLowerCase().indexOf(t.toLowerCase())&&-1!=="/?#".indexOf(e.charAt(t.length))}(e,t)?e.substr(t.length):e}function p(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function h(e){var t=e.pathname,n=e.search,r=e.hash,o=t||"/";return n&&"?"!==n&&(o+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(o+="#"===r.charAt(0)?r:"#"+r),o}function m(e,t,n,o){var a;"string"==typeof e?(a=function(e){var t=e||"/",n="",r="",o=t.indexOf("#");-1!==o&&(r=t.substr(o),t=t.substr(0,o));var a=t.indexOf("?");return-1!==a&&(n=t.substr(a),t=t.substr(0,a)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e)).state=t:(void 0===(a=(0,r.Z)({},e)).pathname&&(a.pathname=""),a.search?"?"!==a.search.charAt(0)&&(a.search="?"+a.search):a.search="",a.hash?"#"!==a.hash.charAt(0)&&(a.hash="#"+a.hash):a.hash="",void 0!==t&&void 0===a.state&&(a.state=t));try{a.pathname=decodeURI(a.pathname)}catch(s){throw s instanceof URIError?new URIError('Pathname "'+a.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):s}return n&&(a.key=n),o?a.pathname?"/"!==a.pathname.charAt(0)&&(a.pathname=i(a.pathname,o.pathname)):a.pathname=o.pathname:a.pathname||(a.pathname="/"),a}function g(e,t){return e.pathname===t.pathname&&e.search===t.search&&e.hash===t.hash&&e.key===t.key&&l(e.state,t.state)}function b(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,o){if(null!=e){var a="function"==typeof e?e(t,n):e;"string"==typeof a?"function"==typeof r?r(a,o):o(!0):o(!1!==a)}else o(!0)},appendListener:function(e){var n=!0;function r(){n&&e.apply(void 0,arguments)}return t.push(r),function(){n=!1,t=t.filter((function(e){return e!==r}))}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),r=0;rt?n.splice(t,n.length-t,o):n.push(o),d({action:r,location:o,index:t,entries:n})}}))},replace:function(e,t){var r="REPLACE",o=m(e,t,f(),E.location);c.confirmTransitionTo(o,r,n,(function(e){e&&(E.entries[E.index]=o,d({action:r,location:o}))}))},go:v,goBack:function(){v(-1)},goForward:function(){v(1)},canGo:function(e){var t=E.index+e;return t>=0&&t
'};function o(e,t,n){return en?n:e}function a(e){return 100*(-1+e)}function i(e,t,n){var o;return(o="translate3d"===r.positionUsing?{transform:"translate3d("+a(e)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+a(e)+"%,0)"}:{"margin-left":a(e)+"%"}).transition="all "+t+"ms "+n,o}n.configure=function(e){var t,n;for(t in e)void 0!==(n=e[t])&&e.hasOwnProperty(t)&&(r[t]=n);return this},n.status=null,n.set=function(e){var t=n.isStarted();e=o(e,r.minimum,1),n.status=1===e?null:e;var a=n.render(!t),u=a.querySelector(r.barSelector),c=r.speed,d=r.easing;return a.offsetWidth,s((function(t){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),l(u,i(e,c,d)),1===e?(l(a,{transition:"none",opacity:1}),a.offsetWidth,setTimeout((function(){l(a,{transition:"all "+c+"ms linear",opacity:0}),setTimeout((function(){n.remove(),t()}),c)}),c)):setTimeout(t,c)})),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var e=function(){setTimeout((function(){n.status&&(n.trickle(),e())}),r.trickleSpeed)};return r.trickle&&e(),this},n.done=function(e){return e||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(e){var t=n.status;return t?("number"!=typeof e&&(e=(1-t)*o(Math.random()*t,.1,.95)),t=o(t+e,0,.994),n.set(t)):n.start()},n.trickle=function(){return n.inc(Math.random()*r.trickleRate)},e=0,t=0,n.promise=function(r){return r&&"resolved"!==r.state()?(0===t&&n.start(),e++,t++,r.always((function(){0==--t?(e=0,n.done()):n.set((e-t)/e)})),this):this},n.render=function(e){if(n.isRendered())return document.getElementById("nprogress");c(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=r.template;var o,i=t.querySelector(r.barSelector),s=e?"-100":a(n.status||0),u=document.querySelector(r.parent);return l(i,{transition:"all 0 linear",transform:"translate3d("+s+"%,0,0)"}),r.showSpinner||(o=t.querySelector(r.spinnerSelector))&&p(o),u!=document.body&&c(u,"nprogress-custom-parent"),u.appendChild(t),t},n.remove=function(){d(document.documentElement,"nprogress-busy"),d(document.querySelector(r.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&p(e)},n.isRendered=function(){return!!document.getElementById("nprogress")},n.getPositioningCSS=function(){var e=document.body.style,t="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return t+"Perspective"in e?"translate3d":t+"Transform"in e?"translate":"margin"};var s=function(){var e=[];function t(){var n=e.shift();n&&n(t)}return function(n){e.push(n),1==e.length&&t()}}(),l=function(){var e=["Webkit","O","Moz","ms"],t={};function n(e){return e.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,(function(e,t){return t.toUpperCase()}))}function r(t){var n=document.body.style;if(t in n)return t;for(var r,o=e.length,a=t.charAt(0).toUpperCase()+t.slice(1);o--;)if((r=e[o]+a)in n)return r;return t}function o(e){return e=n(e),t[e]||(t[e]=r(e))}function a(e,t,n){t=o(t),e.style[t]=n}return function(e,t){var n,r,o=arguments;if(2==o.length)for(n in t)void 0!==(r=t[n])&&t.hasOwnProperty(n)&&a(e,n,r);else a(e,o[1],o[2])}}();function u(e,t){return("string"==typeof e?e:f(e)).indexOf(" "+t+" ")>=0}function c(e,t){var n=f(e),r=n+t;u(n,t)||(e.className=r.substring(1))}function d(e,t){var n,r=f(e);u(e,t)&&(n=r.replace(" "+t+" "," "),e.className=n.substring(1,n.length-1))}function f(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function p(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return n})?r.call(t,n,t,e):r)||(e.exports=o)},7418:function(e){"use strict";var t=Object.getOwnPropertySymbols,n=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable;function o(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(e){r[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(o){return!1}}()?Object.assign:function(e,a){for(var i,s,l=o(e),u=1;ue.length)return;if(!(w instanceof l)){if(m&&v!=t.length-1){if(f.lastIndex=E,!(C=f.exec(e)))break;for(var x=C.index+(h?C[1].length:0),k=C.index+C[0].length,S=v,T=E,O=t.length;S=(T+=t[S].length)&&(++v,E=T);if(t[v]instanceof l)continue;A=S-v,w=e.slice(E,T),C.index-=E}else{f.lastIndex=0;var C=f.exec(w),A=1}if(C){h&&(g=C[1]?C[1].length:0),k=(x=C.index+g)+(C=C[0].slice(g)).length;var R=w.slice(0,x),_=w.slice(k),N=[v,A];R&&(++v,E+=R.length,N.push(R));var L=new l(u,p?r.tokenize(C,p):C,b,C,m);if(N.push(L),_&&N.push(_),Array.prototype.splice.apply(t,N),1!=A&&r.matchGrammar(e,t,n,v,E,!0,u),i)break}else if(i)break}}}}},hooks:{add:function(){},run:function(e,t){}},tokenize:function(e,t,n){var o=[e],a=t.rest;if(a){for(var i in a)t[i]=a[i];delete t.rest}return r.matchGrammar(e,o,t,0,0,!1),o}},(o=r.Token=function(e,t,n,r,o){this.type=e,this.content=t,this.alias=n,this.length=0|(r||"").length,this.greedy=!!o}).stringify=function(e,t,n){if("string"==typeof e)return e;if("Array"===r.util.type(e))return e.map((function(n){return o.stringify(n,t,e)})).join("");var a={type:e.type,content:o.stringify(e.content,t,n),tag:"span",classes:["token",e.type],attributes:{},language:t,parent:n};if(e.alias){var i="Array"===r.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(a.classes,i)}var s=Object.keys(a.attributes).map((function(e){return e+'="'+(a.attributes[e]||"").replace(/"/g,""")+'"'})).join(" ");return"<"+a.tag+' class="'+a.classes.join(" ")+'"'+(s?" "+s:"")+">"+a.content+""},r);a.languages.markup={comment://,prolog:/<\?[\s\S]+?\?>/,doctype:{pattern:/"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^$|[[\]]/,"doctype-tag":/^DOCTYPE/,name:/[^\s<>'"]+/}},cdata://i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},a.languages.markup.tag.inside["attr-value"].inside.entity=a.languages.markup.entity,a.languages.markup.doctype.inside["internal-subset"].inside=a.languages.markup,a.hooks.add("wrap",(function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))})),Object.defineProperty(a.languages.markup.tag,"addInlined",{value:function(e,t){var n={};n["language-"+t]={pattern:/(^$)/i,lookbehind:!0,inside:a.languages[t]},n.cdata=/^$/i;var r={"included-cdata":{pattern://i,inside:n}};r["language-"+t]={pattern:/[\s\S]+/,inside:a.languages[t]};var o={};o[e]={pattern:RegExp(/(<__[^>]*>)(?:))*\]\]>|(?!)/.source.replace(/__/g,(function(){return e})),"i"),lookbehind:!0,greedy:!0,inside:r},a.languages.insertBefore("markup","cdata",o)}}),a.languages.html=a.languages.markup,a.languages.mathml=a.languages.markup,a.languages.svg=a.languages.markup,a.languages.xml=a.languages.extend("markup",{}),a.languages.ssml=a.languages.xml,a.languages.atom=a.languages.xml,a.languages.rss=a.languages.xml,function(e){var t="\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b",n={pattern:/(^(["']?)\w+\2)[ \t]+\S.*/,lookbehind:!0,alias:"punctuation",inside:null},r={bash:n,environment:{pattern:RegExp("\\$"+t),alias:"constant"},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:!0,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--?|-=|\+\+?|\+=|!=?|~|\*\*?|\*=|\/=?|%=?|<<=?|>>=?|<=?|>=?|==?|&&?|&=|\^=?|\|\|?|\|=|\?|:/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp("(\\{)"+t),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|x[0-9a-fA-F]{1,2}|u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8})/};e.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)\w+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b\w+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+t),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+?)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:r},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:n}},{pattern:/(^|[^\\](?:\\\\)*)(["'])(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|(?!\2)[^\\`$])*\2/,lookbehind:!0,greedy:!0,inside:r}],environment:{pattern:RegExp("\\$?"+t),alias:"constant"},variable:r.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|aptitude|apt-cache|apt-get|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:if|then|else|elif|fi|for|while|in|case|esac|function|select|do|done|until)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|break|cd|continue|eval|exec|exit|export|getopts|hash|pwd|readonly|return|shift|test|times|trap|umask|unset|alias|bind|builtin|caller|command|declare|echo|enable|help|let|local|logout|mapfile|printf|read|readarray|source|type|typeset|ulimit|unalias|set|shopt)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:true|false)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|==?|!=?|=~|<<[<-]?|[&\d]?>>|\d?[<>]&?|&[>&]?|\|[&|]?|<=?|>=?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},n.inside=e.languages.bash;for(var o=["comment","function-name","for-or-select","assign-left","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],a=r.variable[1].inside,i=0;i]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},a.languages.c=a.languages.extend("clike",{comment:{pattern:/\/\/(?:[^\r\n\\]|\\(?:\r\n?|\n|(?![\r\n])))*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},"class-name":{pattern:/(\b(?:enum|struct)\s+(?:__attribute__\s*\(\([\s\S]*?\)\)\s*)?)\w+|\b[a-z]\w*_t\b/,lookbehind:!0},keyword:/\b(?:__attribute__|_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|asm|typeof|inline|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|union|unsigned|void|volatile|while)\b/,function:/[a-z_]\w*(?=\s*\()/i,number:/(?:\b0x(?:[\da-f]+(?:\.[\da-f]*)?|\.[\da-f]+)(?:p[+-]?\d+)?|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?)[ful]{0,4}/i,operator:/>>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?/}),a.languages.insertBefore("c","string",{macro:{pattern:/(^\s*)#\s*[a-z](?:[^\r\n\\/]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|\\(?:\r\n|[\s\S]))*/im,lookbehind:!0,greedy:!0,alias:"property",inside:{string:[{pattern:/^(#\s*include\s*)<[^>]+>/,lookbehind:!0},a.languages.c.string],comment:a.languages.c.comment,"macro-name":[{pattern:/(^#\s*define\s+)\w+\b(?!\()/i,lookbehind:!0},{pattern:/(^#\s*define\s+)\w+\b(?=\()/i,lookbehind:!0,alias:"function"}],directive:{pattern:/^(#\s*)[a-z]+/,lookbehind:!0,alias:"keyword"},"directive-hash":/^#/,punctuation:/##|\\(?=[\r\n])/,expression:{pattern:/\S[\s\S]*/,inside:a.languages.c}}},constant:/\b(?:__FILE__|__LINE__|__DATE__|__TIME__|__TIMESTAMP__|__func__|EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|stdin|stdout|stderr)\b/}),delete a.languages.c.boolean,function(e){var t=/\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char8_t|char16_t|char32_t|class|compl|concept|const|consteval|constexpr|constinit|const_cast|continue|co_await|co_return|co_yield|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|float|for|friend|goto|if|inline|int|int8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t|long|mutable|namespace|new|noexcept|nullptr|operator|private|protected|public|register|reinterpret_cast|requires|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/;e.languages.cpp=e.languages.extend("c",{"class-name":[{pattern:RegExp(/(\b(?:class|concept|enum|struct|typename)\s+)(?!)\w+/.source.replace(//g,(function(){return t.source}))),lookbehind:!0},/\b[A-Z]\w*(?=\s*::\s*\w+\s*\()/,/\b[A-Z_]\w*(?=\s*::\s*~\w+\s*\()/i,/\w+(?=\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>\s*::\s*\w+\s*\()/],keyword:t,number:{pattern:/(?:\b0b[01']+|\b0x(?:[\da-f']+(?:\.[\da-f']*)?|\.[\da-f']+)(?:p[+-]?[\d']+)?|(?:\b[\d']+(?:\.[\d']*)?|\B\.[\d']+)(?:e[+-]?[\d']+)?)[ful]{0,4}/i,greedy:!0},operator:/>>=?|<<=?|->|([-+&|:])\1|[?:~]|<=>|[-+*/%&|^!=<>]=?|\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/,boolean:/\b(?:true|false)\b/}),e.languages.insertBefore("cpp","string",{"raw-string":{pattern:/R"([^()\\ ]{0,16})\([\s\S]*?\)\1"/,alias:"string",greedy:!0}}),e.languages.insertBefore("cpp","class-name",{"base-clause":{pattern:/(\b(?:class|struct)\s+\w+\s*:\s*)[^;{}"'\s]+(?:\s+[^;{}"'\s]+)*(?=\s*[;{])/,lookbehind:!0,greedy:!0,inside:e.languages.extend("cpp",{})}}),e.languages.insertBefore("inside","operator",{"class-name":/\b[a-z_]\w*\b(?!\s*::)/i},e.languages.cpp["base-clause"])}(a),function(e){var t=/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/;e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-](?:[^;{\s]|\s+(?![\s{]))*(?:;|(?=\s*\{))/,inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+t.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+t.source+"$"),alias:"url"}}},selector:RegExp("[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+t.source+")*(?=\\s*\\{)"),string:{pattern:t,greedy:!0},property:/(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,important:/!important\b/i,function:/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:,]/},e.languages.css.atrule.inside.rest=e.languages.css;var n=e.languages.markup;n&&(n.tag.addInlined("style","css"),e.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/(^|["'\s])style\s*=\s*(?:"[^"]*"|'[^']*')/i,lookbehind:!0,inside:{"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{style:{pattern:/(["'])[\s\S]+(?=["']$)/,lookbehind:!0,alias:"language-css",inside:e.languages.css},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}},"attr-name":/^style/i}}},n.tag))}(a),function(e){var t,n=/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/;e.languages.css.selector={pattern:e.languages.css.selector,inside:t={"pseudo-element":/:(?:after|before|first-letter|first-line|selection)|::[-\w]+/,"pseudo-class":/:[-\w]+/,class:/\.[-\w]+/,id:/#[-\w]+/,attribute:{pattern:RegExp("\\[(?:[^[\\]\"']|"+n.source+")*\\]"),greedy:!0,inside:{punctuation:/^\[|\]$/,"case-sensitivity":{pattern:/(\s)[si]$/i,lookbehind:!0,alias:"keyword"},namespace:{pattern:/^(\s*)(?:(?!\s)[-*\w\xA0-\uFFFF])*\|(?!=)/,lookbehind:!0,inside:{punctuation:/\|$/}},"attr-name":{pattern:/^(\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+/,lookbehind:!0},"attr-value":[n,{pattern:/(=\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+(?=\s*$)/,lookbehind:!0}],operator:/[|~*^$]?=/}},"n-th":[{pattern:/(\(\s*)[+-]?\d*[\dn](?:\s*[+-]\s*\d+)?(?=\s*\))/,lookbehind:!0,inside:{number:/[\dn]+/,operator:/[+-]/}},{pattern:/(\(\s*)(?:even|odd)(?=\s*\))/i,lookbehind:!0}],combinator:/>|\+|~|\|\|/,punctuation:/[(),]/}},e.languages.css.atrule.inside["selector-function-argument"].inside=t,e.languages.insertBefore("css","property",{variable:{pattern:/(^|[^-\w\xA0-\uFFFF])--(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*/i,lookbehind:!0}});var r={pattern:/(\b\d+)(?:%|[a-z]+\b)/,lookbehind:!0},o={pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0};e.languages.insertBefore("css","function",{operator:{pattern:/(\s)[+\-*\/](?=\s)/,lookbehind:!0},hexcode:{pattern:/\B#(?:[\da-f]{1,2}){3,4}\b/i,alias:"color"},color:[/\b(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)\b/i,{pattern:/\b(?:rgb|hsl)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:rgb|hsl)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:r,number:o,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:r,number:o})}(a),a.languages.javascript=a.languages.extend("clike",{"class-name":[a.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:prototype|constructor))/,lookbehind:!0}],keyword:[{pattern:/((?:^|})\s*)(?:catch|finally)\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|for|from|function|(?:get|set)(?=\s*[\[$\w\xA0-\uFFFF])|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:/\b(?:(?:0[xX](?:[\dA-Fa-f](?:_[\dA-Fa-f])?)+|0[bB](?:[01](?:_[01])?)+|0[oO](?:[0-7](?:_[0-7])?)+)n?|(?:\d(?:_\d)?)+n|NaN|Infinity)\b|(?:\b(?:\d(?:_\d)?)+\.?(?:\d(?:_\d)?)*|\B\.(?:\d(?:_\d)?)+)(?:[Ee][+-]?(?:\d(?:_\d)?)+)?/,operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),a.languages.javascript["class-name"][0].pattern=/(\b(?:class|interface|extends|implements|instanceof|new)\s+)[\w.\\]+/,a.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)\/(?:\[(?:[^\]\\\r\n]|\\.)*]|\\.|[^/\\\[\r\n])+\/[gimyus]{0,6}(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/,lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:a.languages.regex},"regex-flags":/[a-z]+$/,"regex-delimiter":/^\/|\/$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:a.languages.javascript},{pattern:/(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,inside:a.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:a.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:a.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),a.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\[\s\S]|\${(?:[^{}]|{(?:[^{}]|{[^}]*})*})+}|(?!\${)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\${(?:[^{}]|{(?:[^{}]|{[^}]*})*})+}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\${|}$/,alias:"punctuation"},rest:a.languages.javascript}},string:/[\s\S]+/}}}),a.languages.markup&&a.languages.markup.tag.addInlined("script","javascript"),a.languages.js=a.languages.javascript,function(e){var t=e.util.clone(e.languages.javascript);e.languages.jsx=e.languages.extend("markup",t),e.languages.jsx.tag.pattern=/<\/?(?:[\w.:-]+(?:\s+(?:[\w.:$-]+(?:=(?:"(?:\\[^]|[^\\"])*"|'(?:\\[^]|[^\\'])*'|[^\s{'">=]+|\{(?:\{(?:\{[^{}]*\}|[^{}])*\}|[^{}])+\}))?|\{\s*\.{3}\s*[a-z_$][\w$]*(?:\.[a-z_$][\w$]*)*\s*\}))*\s*\/?)?>/i,e.languages.jsx.tag.inside.tag.pattern=/^<\/?[^\s>\/]*/i,e.languages.jsx.tag.inside["attr-value"].pattern=/=(?!\{)(?:"(?:\\[^]|[^\\"])*"|'(?:\\[^]|[^\\'])*'|[^\s'">]+)/i,e.languages.jsx.tag.inside.tag.inside["class-name"]=/^[A-Z]\w*(?:\.[A-Z]\w*)*$/,e.languages.insertBefore("inside","attr-name",{spread:{pattern:/\{\s*\.{3}\s*[a-z_$][\w$]*(?:\.[a-z_$][\w$]*)*\s*\}/,inside:{punctuation:/\.{3}|[{}.]/,"attr-value":/\w+/}}},e.languages.jsx.tag),e.languages.insertBefore("inside","attr-value",{script:{pattern:/=(?:\{(?:\{(?:\{[^{}]*\}|[^{}])*\}|[^{}])+\})/i,inside:{"script-punctuation":{pattern:/^=(?={)/,alias:"punctuation"},rest:e.languages.jsx},alias:"language-javascript"}},e.languages.jsx.tag);var n=function(e){return e?"string"==typeof e?e:"string"==typeof e.content?e.content:e.content.map(n).join(""):""},r=function(t){for(var o=[],a=0;a0&&o[o.length-1].tagName===n(i.content[0].content[1])&&o.pop():"/>"===i.content[i.content.length-1].content||o.push({tagName:n(i.content[0].content[1]),openedBraces:0}):o.length>0&&"punctuation"===i.type&&"{"===i.content?o[o.length-1].openedBraces++:o.length>0&&o[o.length-1].openedBraces>0&&"punctuation"===i.type&&"}"===i.content?o[o.length-1].openedBraces--:s=!0),(s||"string"==typeof i)&&o.length>0&&0===o[o.length-1].openedBraces){var l=n(i);a0&&("string"==typeof t[a-1]||"plain-text"===t[a-1].type)&&(l=n(t[a-1])+l,t.splice(a-1,1),a--),t[a]=new e.Token("plain-text",l,null,l)}i.content&&"string"!=typeof i.content&&r(i.content)}};e.hooks.add("after-tokenize",(function(e){"jsx"!==e.language&&"tsx"!==e.language||r(e.tokens)}))}(a),function(e){function t(e,t){return RegExp(e.replace(//g,(function(){return/(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/.source})),t)}e.languages.insertBefore("javascript","function-variable",{"method-variable":{pattern:RegExp("(\\.\\s*)"+e.languages.javascript["function-variable"].pattern.source),lookbehind:!0,alias:["function-variable","method","function","property-access"]}}),e.languages.insertBefore("javascript","function",{method:{pattern:RegExp("(\\.\\s*)"+e.languages.javascript.function.source),lookbehind:!0,alias:["function","property-access"]}}),e.languages.insertBefore("javascript","constant",{"known-class-name":[{pattern:/\b(?:(?:(?:Uint|Int)(?:8|16|32)|Uint8Clamped|Float(?:32|64))?Array|ArrayBuffer|BigInt|Boolean|DataView|Date|Error|Function|Intl|JSON|Math|Number|Object|Promise|Proxy|Reflect|RegExp|String|Symbol|(?:Weak)?(?:Set|Map)|WebAssembly)\b/,alias:"class-name"},{pattern:/\b(?:[A-Z]\w*)Error\b/,alias:"class-name"}]}),e.languages.insertBefore("javascript","keyword",{imports:{pattern:t(/(\bimport\b\s*)(?:(?:\s*,\s*(?:\*\s*as\s+|\{[^{}]*\}))?|\*\s*as\s+|\{[^{}]*\})(?=\s*\bfrom\b)/.source),lookbehind:!0,inside:e.languages.javascript},exports:{pattern:t(/(\bexport\b\s*)(?:\*(?:\s*as\s+)?(?=\s*\bfrom\b)|\{[^{}]*\})/.source),lookbehind:!0,inside:e.languages.javascript}}),e.languages.javascript.keyword.unshift({pattern:/\b(?:as|default|export|from|import)\b/,alias:"module"},{pattern:/\b(?:await|break|catch|continue|do|else|for|finally|if|return|switch|throw|try|while|yield)\b/,alias:"control-flow"},{pattern:/\bnull\b/,alias:["null","nil"]},{pattern:/\bundefined\b/,alias:"nil"}),e.languages.insertBefore("javascript","operator",{spread:{pattern:/\.{3}/,alias:"operator"},arrow:{pattern:/=>/,alias:"operator"}}),e.languages.insertBefore("javascript","punctuation",{"property-access":{pattern:t(/(\.\s*)#?/.source),lookbehind:!0},"maybe-class-name":{pattern:/(^|[^$\w\xA0-\uFFFF])[A-Z][$\w\xA0-\uFFFF]+/,lookbehind:!0},dom:{pattern:/\b(?:document|location|navigator|performance|(?:local|session)Storage|window)\b/,alias:"variable"},console:{pattern:/\bconsole(?=\s*\.)/,alias:"class-name"}});for(var n=["function","function-variable","method","method-variable","property-access"],r=0;r",unchanged:" ",diff:"!"};Object.keys(t).forEach((function(n){var r=t[n],o=[];/^\w+$/.test(n)||o.push(/\w+/.exec(n)[0]),"diff"===n&&o.push("bold"),e.languages.diff[n]={pattern:RegExp("^(?:["+r+"].*(?:\r\n?|\n|(?![\\s\\S])))+","m"),alias:o,inside:{line:{pattern:/(.)(?=[\s\S]).*(?:\r\n?|\n)?/,lookbehind:!0},prefix:{pattern:/[\s\S]/,alias:/\w+/.exec(n)[0]}}}})),Object.defineProperty(e.languages.diff,"PREFIXES",{value:t})}(a),a.languages.git={comment:/^#.*/m,deleted:/^[-\u2013].*/m,inserted:/^\+.*/m,string:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/m,command:{pattern:/^.*\$ git .*$/m,inside:{parameter:/\s--?\w+/m}},coord:/^@@.*@@$/m,"commit-sha1":/^commit \w{40}$/m},a.languages.go=a.languages.extend("clike",{string:{pattern:/(["'`])(?:\\[\s\S]|(?!\1)[^\\])*\1/,greedy:!0},keyword:/\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/,boolean:/\b(?:_|iota|nil|true|false)\b/,number:/(?:\b0x[a-f\d]+|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[-+]?\d+)?)i?/i,operator:/[*\/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./,builtin:/\b(?:bool|byte|complex(?:64|128)|error|float(?:32|64)|rune|string|u?int(?:8|16|32|64)?|uintptr|append|cap|close|complex|copy|delete|imag|len|make|new|panic|print(?:ln)?|real|recover)\b/}),delete a.languages.go["class-name"],a.languages.graphql={comment:/#.*/,description:{pattern:/(?:"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*")(?=\s*[a-z_])/i,greedy:!0,alias:"string",inside:{"language-markdown":{pattern:/(^"(?:"")?)(?!\1)[\s\S]+(?=\1$)/,lookbehind:!0,inside:a.languages.markdown}}},string:{pattern:/"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*"/,greedy:!0},number:/(?:\B-|\b)\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,boolean:/\b(?:true|false)\b/,variable:/\$[a-z_]\w*/i,directive:{pattern:/@[a-z_]\w*/i,alias:"function"},"attr-name":{pattern:/[a-z_]\w*(?=\s*(?:\((?:[^()"]|"(?:\\.|[^\\"\r\n])*")*\))?:)/i,greedy:!0},"class-name":{pattern:/(\b(?:enum|implements|interface|on|scalar|type|union)\s+|&\s*)[a-zA-Z_]\w*/,lookbehind:!0},fragment:{pattern:/(\bfragment\s+|\.{3}\s*(?!on\b))[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},keyword:/\b(?:directive|enum|extend|fragment|implements|input|interface|mutation|on|query|repeatable|scalar|schema|subscription|type|union)\b/,operator:/[!=|&]|\.{3}/,punctuation:/[!(){}\[\]:=,]/,constant:/\b(?!ID\b)[A-Z][A-Z_\d]*\b/},function(e){function t(e,t){return"___"+e.toUpperCase()+t+"___"}Object.defineProperties(e.languages["markup-templating"]={},{buildPlaceholders:{value:function(n,r,o,a){if(n.language===r){var i=n.tokenStack=[];n.code=n.code.replace(o,(function(e){if("function"==typeof a&&!a(e))return e;for(var o,s=i.length;-1!==n.code.indexOf(o=t(r,s));)++s;return i[s]=e,o})),n.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(n,r){if(n.language===r&&n.tokenStack){n.grammar=e.languages[r];var o=0,a=Object.keys(n.tokenStack);!function i(s){for(var l=0;l=a.length);l++){var u=s[l];if("string"==typeof u||u.content&&"string"==typeof u.content){var c=a[o],d=n.tokenStack[c],f="string"==typeof u?u:u.content,p=t(r,c),h=f.indexOf(p);if(h>-1){++o;var m=f.substring(0,h),g=new e.Token(r,e.tokenize(d,n.grammar),"language-"+r,d),b=f.substring(h+p.length),y=[];m&&y.push.apply(y,i([m])),y.push(g),b&&y.push.apply(y,i([b])),"string"==typeof u?s.splice.apply(s,[l,1].concat(y)):u.content=y}}else u.content&&i(u.content)}return s}(n.tokens)}}}})}(a),function(e){e.languages.handlebars={comment:/\{\{![\s\S]*?\}\}/,delimiter:{pattern:/^\{\{\{?|\}\}\}?$/i,alias:"punctuation"},string:/(["'])(?:\\.|(?!\1)[^\\\r\n])*\1/,number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee][+-]?\d+)?/,boolean:/\b(?:true|false)\b/,block:{pattern:/^(\s*(?:~\s*)?)[#\/]\S+?(?=\s*(?:~\s*)?$|\s)/i,lookbehind:!0,alias:"keyword"},brackets:{pattern:/\[[^\]]+\]/,inside:{punctuation:/\[|\]/,variable:/[\s\S]+/}},punctuation:/[!"#%&':()*+,.\/;<=>@\[\\\]^`{|}~]/,variable:/[^!"#%&'()*+,\/;<=>@\[\\\]^`{|}~\s]+/},e.hooks.add("before-tokenize",(function(t){e.languages["markup-templating"].buildPlaceholders(t,"handlebars",/\{\{\{[\s\S]+?\}\}\}|\{\{[\s\S]+?\}\}/g)})),e.hooks.add("after-tokenize",(function(t){e.languages["markup-templating"].tokenizePlaceholders(t,"handlebars")}))}(a),a.languages.json={property:{pattern:/"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,greedy:!0},string:{pattern:/"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:true|false)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}},a.languages.webmanifest=a.languages.json,a.languages.less=a.languages.extend("css",{comment:[/\/\*[\s\S]*?\*\//,{pattern:/(^|[^\\])\/\/.*/,lookbehind:!0}],atrule:{pattern:/@[\w-](?:\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{punctuation:/[:()]/}},selector:{pattern:/(?:@\{[\w-]+\}|[^{};\s@])(?:@\{[\w-]+\}|\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};@\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{variable:/@+[\w-]+/}},property:/(?:@\{[\w-]+\}|[\w-])+(?:\+_?)?(?=\s*:)/i,operator:/[+\-*\/]/}),a.languages.insertBefore("less","property",{variable:[{pattern:/@[\w-]+\s*:/,inside:{punctuation:/:/}},/@@?[\w-]+/],"mixin-usage":{pattern:/([{;]\s*)[.#](?!\d)[\w-].*?(?=[(;])/,lookbehind:!0,alias:"function"}}),a.languages.makefile={comment:{pattern:/(^|[^\\])#(?:\\(?:\r\n|[\s\S])|[^\\\r\n])*/,lookbehind:!0},string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},builtin:/\.[A-Z][^:#=\s]+(?=\s*:(?!=))/,symbol:{pattern:/^(?:[^:=\s]|[ \t]+(?![\s:]))+(?=\s*:(?!=))/m,inside:{variable:/\$+(?:(?!\$)[^(){}:#=\s]+|(?=[({]))/}},variable:/\$+(?:(?!\$)[^(){}:#=\s]+|\([@*%<^+?][DF]\)|(?=[({]))/,keyword:[/-include\b|\b(?:define|else|endef|endif|export|ifn?def|ifn?eq|include|override|private|sinclude|undefine|unexport|vpath)\b/,{pattern:/(\()(?:addsuffix|abspath|and|basename|call|dir|error|eval|file|filter(?:-out)?|findstring|firstword|flavor|foreach|guile|if|info|join|lastword|load|notdir|or|origin|patsubst|realpath|shell|sort|strip|subst|suffix|value|warning|wildcard|word(?:s|list)?)(?=[ \t])/,lookbehind:!0}],operator:/(?:::|[?:+!])?=|[|@]/,punctuation:/[:;(){}]/},function(e){var t=/(?:\\.|[^\\\n\r]|(?:\n|\r\n?)(?!\n|\r\n?))/.source;function n(e){return e=e.replace(//g,(function(){return t})),RegExp(/((?:^|[^\\])(?:\\{2})*)/.source+"(?:"+e+")")}var r=/(?:\\.|``(?:[^`\r\n]|`(?!`))+``|`[^`\r\n]+`|[^\\|\r\n`])+/.source,o=/\|?__(?:\|__)+\|?(?:(?:\n|\r\n?)|(?![\s\S]))/.source.replace(/__/g,(function(){return r})),a=/\|?[ \t]*:?-{3,}:?[ \t]*(?:\|[ \t]*:?-{3,}:?[ \t]*)+\|?(?:\n|\r\n?)/.source;e.languages.markdown=e.languages.extend("markup",{}),e.languages.insertBefore("markdown","prolog",{"front-matter-block":{pattern:/(^(?:\s*[\r\n])?)---(?!.)[\s\S]*?[\r\n]---(?!.)/,lookbehind:!0,greedy:!0,inside:{punctuation:/^---|---$/,"font-matter":{pattern:/\S+(?:\s+\S+)*/,alias:["yaml","language-yaml"],inside:e.languages.yaml}}},blockquote:{pattern:/^>(?:[\t ]*>)*/m,alias:"punctuation"},table:{pattern:RegExp("^"+o+a+"(?:"+o+")*","m"),inside:{"table-data-rows":{pattern:RegExp("^("+o+a+")(?:"+o+")*$"),lookbehind:!0,inside:{"table-data":{pattern:RegExp(r),inside:e.languages.markdown},punctuation:/\|/}},"table-line":{pattern:RegExp("^("+o+")"+a+"$"),lookbehind:!0,inside:{punctuation:/\||:?-{3,}:?/}},"table-header-row":{pattern:RegExp("^"+o+"$"),inside:{"table-header":{pattern:RegExp(r),alias:"important",inside:e.languages.markdown},punctuation:/\|/}}}},code:[{pattern:/((?:^|\n)[ \t]*\n|(?:^|\r\n?)[ \t]*\r\n?)(?: {4}|\t).+(?:(?:\n|\r\n?)(?: {4}|\t).+)*/,lookbehind:!0,alias:"keyword"},{pattern:/``.+?``|`[^`\r\n]+`/,alias:"keyword"},{pattern:/^```[\s\S]*?^```$/m,greedy:!0,inside:{"code-block":{pattern:/^(```.*(?:\n|\r\n?))[\s\S]+?(?=(?:\n|\r\n?)^```$)/m,lookbehind:!0},"code-language":{pattern:/^(```).+/,lookbehind:!0},punctuation:/```/}}],title:[{pattern:/\S.*(?:\n|\r\n?)(?:==+|--+)(?=[ \t]*$)/m,alias:"important",inside:{punctuation:/==+$|--+$/}},{pattern:/(^\s*)#.+/m,lookbehind:!0,alias:"important",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\s*)([*-])(?:[\t ]*\2){2,}(?=\s*$)/m,lookbehind:!0,alias:"punctuation"},list:{pattern:/(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m,lookbehind:!0,alias:"punctuation"},"url-reference":{pattern:/!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/,inside:{variable:{pattern:/^(!?\[)[^\]]+/,lookbehind:!0},string:/(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/,punctuation:/^[\[\]!:]|[<>]/},alias:"url"},bold:{pattern:n(/\b__(?:(?!_)|_(?:(?!_))+_)+__\b|\*\*(?:(?!\*)|\*(?:(?!\*))+\*)+\*\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^..)[\s\S]+(?=..$)/,lookbehind:!0,inside:{}},punctuation:/\*\*|__/}},italic:{pattern:n(/\b_(?:(?!_)|__(?:(?!_))+__)+_\b|\*(?:(?!\*)|\*\*(?:(?!\*))+\*\*)+\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^.)[\s\S]+(?=.$)/,lookbehind:!0,inside:{}},punctuation:/[*_]/}},strike:{pattern:n(/(~~?)(?:(?!~))+?\2/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^~~?)[\s\S]+(?=\1$)/,lookbehind:!0,inside:{}},punctuation:/~~?/}},url:{pattern:n(/!?\[(?:(?!\]))+\](?:\([^\s)]+(?:[\t ]+"(?:\\.|[^"\\])*")?\)|[ \t]?\[(?:(?!\]))+\])/.source),lookbehind:!0,greedy:!0,inside:{operator:/^!/,content:{pattern:/(^\[)[^\]]+(?=\])/,lookbehind:!0,inside:{}},variable:{pattern:/(^\][ \t]?\[)[^\]]+(?=\]$)/,lookbehind:!0},url:{pattern:/(^\]\()[^\s)]+/,lookbehind:!0},string:{pattern:/(^[ \t]+)"(?:\\.|[^"\\])*"(?=\)$)/,lookbehind:!0}}}}),["url","bold","italic","strike"].forEach((function(t){["url","bold","italic","strike"].forEach((function(n){t!==n&&(e.languages.markdown[t].inside.content.inside[n]=e.languages.markdown[n])}))})),e.hooks.add("after-tokenize",(function(e){"markdown"!==e.language&&"md"!==e.language||function e(t){if(t&&"string"!=typeof t)for(var n=0,r=t.length;n]?|\+\+?|!=?|<>?=?|==?|&&?|\|\|?|[~^%?*\/@]/}),delete a.languages.objectivec["class-name"],a.languages.objc=a.languages.objectivec,a.languages.ocaml={comment:/\(\*[\s\S]*?\*\)/,string:[{pattern:/"(?:\\.|[^\\\r\n"])*"/,greedy:!0},{pattern:/(['`])(?:\\(?:\d+|x[\da-f]+|.)|(?!\1)[^\\\r\n])\1/i,greedy:!0}],number:/\b(?:0x[\da-f][\da-f_]+|(?:0[bo])?\d[\d_]*(?:\.[\d_]*)?(?:e[+-]?[\d_]+)?)/i,directive:{pattern:/\B#\w+/,alias:"important"},label:{pattern:/\B~\w+/,alias:"function"},"type-variable":{pattern:/\B'\w+/,alias:"function"},variant:{pattern:/`\w+/,alias:"variable"},module:{pattern:/\b[A-Z]\w+/,alias:"variable"},keyword:/\b(?:as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|match|method|module|mutable|new|nonrec|object|of|open|private|rec|sig|struct|then|to|try|type|val|value|virtual|when|where|while|with)\b/,boolean:/\b(?:false|true)\b/,operator:/:=|[=<>@^|&+\-*\/$%!?~][!$%&*+\-.\/:<=>?@^|~]*|\b(?:and|asr|land|lor|lsl|lsr|lxor|mod|or)\b/,punctuation:/[(){}\[\]|.,:;]|\b_\b/},a.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0},"string-interpolation":{pattern:/(?:f|rf|fr)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:{{)*){(?!{)(?:[^{}]|{(?!{)(?:[^{}]|{(?!{)(?:[^{}])+})+})+}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=}$)/,lookbehind:!0},"conversion-option":{pattern:/![sra](?=[:}]$)/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|rb|br)?("""|''')[\s\S]*?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|rb|br)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^\s*)@\w+(?:\.\w+)*/im,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:and|as|assert|async|await|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:True|False|None)\b/,number:/(?:\b(?=\d)|\B(?=\.))(?:0[bo])?(?:(?:\d|0x[\da-f])[\da-f]*(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?j?\b/i,operator:/[-+%=]=?|!=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/},a.languages.python["string-interpolation"].inside.interpolation.inside.rest=a.languages.python,a.languages.py=a.languages.python,a.languages.reason=a.languages.extend("clike",{string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^\\\r\n"])*"/,greedy:!0},"class-name":/\b[A-Z]\w*/,keyword:/\b(?:and|as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|method|module|mutable|new|nonrec|object|of|open|or|private|rec|sig|struct|switch|then|to|try|type|val|virtual|when|while|with)\b/,operator:/\.{3}|:[:=]|\|>|->|=(?:==?|>)?|<=?|>=?|[|^?'#!~`]|[+\-*\/]\.?|\b(?:mod|land|lor|lxor|lsl|lsr|asr)\b/}),a.languages.insertBefore("reason","class-name",{character:{pattern:/'(?:\\x[\da-f]{2}|\\o[0-3][0-7][0-7]|\\\d{3}|\\.|[^'\\\r\n])'/,alias:"string"},constructor:{pattern:/\b[A-Z]\w*\b(?!\s*\.)/,alias:"variable"},label:{pattern:/\b[a-z]\w*(?=::)/,alias:"symbol"}}),delete a.languages.reason.function,function(e){e.languages.sass=e.languages.extend("css",{comment:{pattern:/^([ \t]*)\/[\/*].*(?:(?:\r?\n|\r)\1[ \t].+)*/m,lookbehind:!0}}),e.languages.insertBefore("sass","atrule",{"atrule-line":{pattern:/^(?:[ \t]*)[@+=].+/m,inside:{atrule:/(?:@[\w-]+|[+=])/m}}}),delete e.languages.sass.atrule;var t=/\$[-\w]+|#\{\$[-\w]+\}/,n=[/[+*\/%]|[=!]=|<=?|>=?|\b(?:and|or|not)\b/,{pattern:/(\s+)-(?=\s)/,lookbehind:!0}];e.languages.insertBefore("sass","property",{"variable-line":{pattern:/^[ \t]*\$.+/m,inside:{punctuation:/:/,variable:t,operator:n}},"property-line":{pattern:/^[ \t]*(?:[^:\s]+ *:.*|:[^:\s].*)/m,inside:{property:[/[^:\s]+(?=\s*:)/,{pattern:/(:)[^:\s]+/,lookbehind:!0}],punctuation:/:/,variable:t,operator:n,important:e.languages.sass.important}}}),delete e.languages.sass.property,delete e.languages.sass.important,e.languages.insertBefore("sass","punctuation",{selector:{pattern:/([ \t]*)\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*(?:,(?:\r?\n|\r)\1[ \t]+\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*)*/,lookbehind:!0}})}(a),a.languages.scss=a.languages.extend("css",{comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},atrule:{pattern:/@[\w-](?:\([^()]+\)|[^()\s]|\s+(?!\s))*?(?=\s+[{;])/,inside:{rule:/@[\w-]+/}},url:/(?:[-a-z]+-)?url(?=\()/i,selector:{pattern:/(?=\S)[^@;{}()]?(?:[^@;{}()\s]|\s+(?!\s)|#\{\$[-\w]+\})+(?=\s*\{(?:\}|\s|[^}][^:{}]*[:{][^}]+))/m,inside:{parent:{pattern:/&/,alias:"important"},placeholder:/%[-\w]+/,variable:/\$[-\w]+|#\{\$[-\w]+\}/}},property:{pattern:/(?:[-\w]|\$[-\w]|#\{\$[-\w]+\})+(?=\s*:)/,inside:{variable:/\$[-\w]+|#\{\$[-\w]+\}/}}}),a.languages.insertBefore("scss","atrule",{keyword:[/@(?:if|else(?: if)?|forward|for|each|while|import|use|extend|debug|warn|mixin|include|function|return|content)\b/i,{pattern:/( +)(?:from|through)(?= )/,lookbehind:!0}]}),a.languages.insertBefore("scss","important",{variable:/\$[-\w]+|#\{\$[-\w]+\}/}),a.languages.insertBefore("scss","function",{"module-modifier":{pattern:/\b(?:as|with|show|hide)\b/i,alias:"keyword"},placeholder:{pattern:/%[-\w]+/,alias:"selector"},statement:{pattern:/\B!(?:default|optional)\b/i,alias:"keyword"},boolean:/\b(?:true|false)\b/,null:{pattern:/\bnull\b/,alias:"keyword"},operator:{pattern:/(\s)(?:[-+*\/%]|[=!]=|<=?|>=?|and|or|not)(?=\s)/,lookbehind:!0}}),a.languages.scss.atrule.inside.rest=a.languages.scss,a.languages.sql={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|(?:--|\/\/|#).*)/,lookbehind:!0},variable:[{pattern:/@(["'`])(?:\\[\s\S]|(?!\1)[^\\])+\1/,greedy:!0},/@[\w.$]+/],string:{pattern:/(^|[^@\\])("|')(?:\\[\s\S]|(?!\2)[^\\]|\2\2)*\2/,greedy:!0,lookbehind:!0},function:/\b(?:AVG|COUNT|FIRST|FORMAT|LAST|LCASE|LEN|MAX|MID|MIN|MOD|NOW|ROUND|SUM|UCASE)(?=\s*\()/i,keyword:/\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|AUTO_INCREMENT|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR(?:ACTER|SET)?|CHECK(?:POINT)?|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMNS?|COMMENT|COMMIT(?:TED)?|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS(?:TABLE)?|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|CYCLE|DATA(?:BASES?)?|DATE(?:TIME)?|DAY|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DELIMITERS?|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE|ELSE(?:IF)?|ENABLE|ENCLOSED|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPED?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|HOUR|IDENTITY(?:_INSERT|COL)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTERVAL|INTO|INVOKER|ISOLATION|ITERATE|JOIN|KEYS?|KILL|LANGUAGE|LAST|LEAVE|LEFT|LEVEL|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|LOOP|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MINUTE|MODE|MODIFIES|MODIFY|MONTH|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL|NATURAL|NCHAR|NEXT|NO|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREPARE|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READS?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEAT(?:ABLE)?|REPLACE|REPLICATION|REQUIRE|RESIGNAL|RESTORE|RESTRICT|RETURN(?:S|ING)?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SECOND|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|SQL|START(?:ING)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED|TEXT(?:SIZE)?|THEN|TIME(?:STAMP)?|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNLOCK|UNPIVOT|UNSIGNED|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?|YEAR)\b/i,boolean:/\b(?:TRUE|FALSE|NULL)\b/i,number:/\b0x[\da-f]+\b|\b\d+(?:\.\d*)?|\B\.\d+\b/i,operator:/[-+*\/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|IN|LIKE|NOT|OR|IS|DIV|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/},function(e){var t={pattern:/(\b\d+)(?:%|[a-z]+)/,lookbehind:!0},n={pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0},r={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},url:{pattern:/url\((["']?).*?\1\)/i,greedy:!0},string:{pattern:/("|')(?:(?!\1)[^\\\r\n]|\\(?:\r\n|[\s\S]))*\1/,greedy:!0},interpolation:null,func:null,important:/\B!(?:important|optional)\b/i,keyword:{pattern:/(^|\s+)(?:(?:if|else|for|return|unless)(?=\s+|$)|@[\w-]+)/,lookbehind:!0},hexcode:/#[\da-f]{3,6}/i,color:[/\b(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)\b/i,{pattern:/\b(?:rgb|hsl)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:rgb|hsl)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:t,number:n,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:t,boolean:/\b(?:true|false)\b/,operator:[/~|[+!\/%<>?=]=?|[-:]=|\*[*=]?|\.{2,3}|&&|\|\||\B-\B|\b(?:and|in|is(?: a| defined| not|nt)?|not|or)\b/],number:n,punctuation:/[{}()\[\];:,]/};r.interpolation={pattern:/\{[^\r\n}:]+\}/,alias:"variable",inside:{delimiter:{pattern:/^{|}$/,alias:"punctuation"},rest:r}},r.func={pattern:/[\w-]+\([^)]*\).*/,inside:{function:/^[^(]+/,rest:r}},e.languages.stylus={"atrule-declaration":{pattern:/(^\s*)@.+/m,lookbehind:!0,inside:{atrule:/^@[\w-]+/,rest:r}},"variable-declaration":{pattern:/(^[ \t]*)[\w$-]+\s*.?=[ \t]*(?:\{[^{}]*\}|\S.*|$)/m,lookbehind:!0,inside:{variable:/^\S+/,rest:r}},statement:{pattern:/(^[ \t]*)(?:if|else|for|return|unless)[ \t].+/m,lookbehind:!0,inside:{keyword:/^\S+/,rest:r}},"property-declaration":{pattern:/((?:^|\{)([ \t]*))(?:[\w-]|\{[^}\r\n]+\})+(?:\s*:\s*|[ \t]+)(?!\s)[^{\r\n]*(?:;|[^{\r\n,](?=$)(?!(?:\r?\n|\r)(?:\{|\2[ \t]+)))/m,lookbehind:!0,inside:{property:{pattern:/^[^\s:]+/,inside:{interpolation:r.interpolation}},rest:r}},selector:{pattern:/(^[ \t]*)(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\)|(?![\w-]))|\{[^}\r\n]+\})+)(?:(?:\r?\n|\r)(?:\1(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\)|(?![\w-]))|\{[^}\r\n]+\})+)))*(?:,$|\{|(?=(?:\r?\n|\r)(?:\{|\1[ \t]+)))/m,lookbehind:!0,inside:{interpolation:r.interpolation,comment:r.comment,punctuation:/[{},]/}},func:r.func,string:r.string,comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0,greedy:!0},interpolation:r.interpolation,punctuation:/[{}()\[\];:.]/}}(a),function(e){e.languages.typescript=e.languages.extend("javascript",{"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|type)\s+)(?!keyof\b)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?:\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},keyword:/\b(?:abstract|as|asserts|async|await|break|case|catch|class|const|constructor|continue|debugger|declare|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|is|keyof|let|module|namespace|new|null|of|package|private|protected|public|readonly|return|require|set|static|super|switch|this|throw|try|type|typeof|undefined|var|void|while|with|yield)\b/,builtin:/\b(?:string|Function|any|number|boolean|Array|symbol|console|Promise|unknown|never)\b/}),delete e.languages.typescript.parameter;var t=e.languages.extend("typescript",{});delete t["class-name"],e.languages.typescript["class-name"].inside=t,e.languages.insertBefore("typescript","function",{"generic-function":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/,greedy:!0,inside:{function:/^#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:t}}}}),e.languages.ts=e.languages.typescript}(a),function(e){var t=e.util.clone(e.languages.typescript);e.languages.tsx=e.languages.extend("jsx",t);var n=e.languages.tsx.tag;n.pattern=RegExp(/(^|[^\w$]|(?=<\/))/.source+"(?:"+n.pattern.source+")",n.pattern.flags),n.lookbehind=!0}(a),a.languages.wasm={comment:[/\(;[\s\S]*?;\)/,{pattern:/;;.*/,greedy:!0}],string:{pattern:/"(?:\\[\s\S]|[^"\\])*"/,greedy:!0},keyword:[{pattern:/\b(?:align|offset)=/,inside:{operator:/=/}},{pattern:/\b(?:(?:f32|f64|i32|i64)(?:\.(?:abs|add|and|ceil|clz|const|convert_[su]\/i(?:32|64)|copysign|ctz|demote\/f64|div(?:_[su])?|eqz?|extend_[su]\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|nearest|neg?|or|popcnt|promote\/f32|reinterpret\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|store(?:8|16|32)?|sqrt|sub|trunc(?:_[su]\/f(?:32|64))?|wrap\/i64|xor))?|memory\.(?:grow|size))\b/,inside:{punctuation:/\./}},/\b(?:anyfunc|block|br(?:_if|_table)?|call(?:_indirect)?|data|drop|elem|else|end|export|func|get_(?:global|local)|global|if|import|local|loop|memory|module|mut|nop|offset|param|result|return|select|set_(?:global|local)|start|table|tee_local|then|type|unreachable)\b/],variable:/\$[\w!#$%&'*+\-./:<=>?@\\^_`|~]+/i,number:/[+-]?\b(?:\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:[eE][+-]?\d(?:_?\d)*)?|0x[\da-fA-F](?:_?[\da-fA-F])*(?:\.[\da-fA-F](?:_?[\da-fA-D])*)?(?:[pP][+-]?\d(?:_?\d)*)?)\b|\binf\b|\bnan(?::0x[\da-fA-F](?:_?[\da-fA-D])*)?\b/,punctuation:/[()]/},function(e){var t=/[*&][^\s[\]{},]+/,n=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,r="(?:"+n.source+"(?:[ \t]+"+t.source+")?|"+t.source+"(?:[ \t]+"+n.source+")?)",o=/(?:[^\s\x00-\x08\x0e-\x1f!"#%&'*,\-:>?@[\]`{|}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]|[?:-])(?:[ \t]*(?:(?![#:])|:))*/.source.replace(//g,(function(){return/[^\s\x00-\x08\x0e-\x1f,[\]{}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]/.source})),a=/"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\\\r\n]|\\.)*'/.source;function i(e,t){t=(t||"").replace(/m/g,"")+"m";var n=/([:\-,[{]\s*(?:\s<>[ \t]+)?)(?:<>)(?=[ \t]*(?:$|,|]|}|(?:[\r\n]\s*)?#))/.source.replace(/<>/g,(function(){return r})).replace(/<>/g,(function(){return e}));return RegExp(n,t)}e.languages.yaml={scalar:{pattern:RegExp(/([\-:]\s*(?:\s<>[ \t]+)?[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)\S[^\r\n]*(?:\2[^\r\n]+)*)/.source.replace(/<>/g,(function(){return r}))),lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:RegExp(/((?:^|[:\-,[{\r\n?])[ \t]*(?:<>[ \t]+)?)<>(?=\s*:\s)/.source.replace(/<>/g,(function(){return r})).replace(/<>/g,(function(){return"(?:"+o+"|"+a+")"}))),lookbehind:!0,greedy:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:i(/\d{4}-\d\d?-\d\d?(?:[tT]|[ \t]+)\d\d?:\d{2}:\d{2}(?:\.\d*)?(?:[ \t]*(?:Z|[-+]\d\d?(?::\d{2})?))?|\d{4}-\d{2}-\d{2}|\d\d?:\d{2}(?::\d{2}(?:\.\d*)?)?/.source),lookbehind:!0,alias:"number"},boolean:{pattern:i(/true|false/.source,"i"),lookbehind:!0,alias:"important"},null:{pattern:i(/null|~/.source,"i"),lookbehind:!0,alias:"important"},string:{pattern:i(a),lookbehind:!0,greedy:!0},number:{pattern:i(/[+-]?(?:0x[\da-f]+|0o[0-7]+|(?:\d+(?:\.\d*)?|\.?\d+)(?:e[+-]?\d+)?|\.inf|\.nan)/.source,"i"),lookbehind:!0},tag:n,important:t,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./},e.languages.yml=e.languages.yaml}(a),t.Z=a},9016:function(){!function(e){function t(e,t){return e.replace(/<<(\d+)>>/g,(function(e,n){return"(?:"+t[+n]+")"}))}function n(e,n,r){return RegExp(t(e,n),r||"")}function r(e,t){for(var n=0;n>/g,(function(){return"(?:"+e+")"}));return e.replace(/<>/g,"[^\\s\\S]")}var o="bool byte char decimal double dynamic float int long object sbyte short string uint ulong ushort var void",a="class enum interface struct",i="add alias and ascending async await by descending from get global group into join let nameof not notnull on or orderby partial remove select set unmanaged value when where",s="abstract as base break case catch checked const continue default delegate do else event explicit extern finally fixed for foreach goto if implicit in internal is lock namespace new null operator out override params private protected public readonly ref return sealed sizeof stackalloc static switch this throw try typeof unchecked unsafe using virtual volatile while yield";function l(e){return"\\b(?:"+e.trim().replace(/ /g,"|")+")\\b"}var u=l(a),c=RegExp(l(o+" "+a+" "+i+" "+s)),d=l(a+" "+i+" "+s),f=l(o+" "+a+" "+s),p=r(/<(?:[^<>;=+\-*/%&|^]|<>)*>/.source,2),h=r(/\((?:[^()]|<>)*\)/.source,2),m=/@?\b[A-Za-z_]\w*\b/.source,g=t(/<<0>>(?:\s*<<1>>)?/.source,[m,p]),b=t(/(?!<<0>>)<<1>>(?:\s*\.\s*<<1>>)*/.source,[d,g]),y=/\[\s*(?:,\s*)*\]/.source,v=t(/<<0>>(?:\s*(?:\?\s*)?<<1>>)*(?:\s*\?)?/.source,[b,y]),E=t(/[^,()<>[\];=+\-*/%&|^]|<<0>>|<<1>>|<<2>>/.source,[p,h,y]),w=t(/\(<<0>>+(?:,<<0>>+)+\)/.source,[E]),x=t(/(?:<<0>>|<<1>>)(?:\s*(?:\?\s*)?<<2>>)*(?:\s*\?)?/.source,[w,b,y]),k={keyword:c,punctuation:/[<>()?,.:[\]]/},S=/'(?:[^\r\n'\\]|\\.|\\[Uux][\da-fA-F]{1,8})'/.source,T=/"(?:\\.|[^\\"\r\n])*"/.source,O=/@"(?:""|\\[\s\S]|[^\\"])*"(?!")/.source;e.languages.csharp=e.languages.extend("clike",{string:[{pattern:n(/(^|[^$\\])<<0>>/.source,[O]),lookbehind:!0,greedy:!0},{pattern:n(/(^|[^@$\\])<<0>>/.source,[T]),lookbehind:!0,greedy:!0},{pattern:RegExp(S),greedy:!0,alias:"character"}],"class-name":[{pattern:n(/(\busing\s+static\s+)<<0>>(?=\s*;)/.source,[b]),lookbehind:!0,inside:k},{pattern:n(/(\busing\s+<<0>>\s*=\s*)<<1>>(?=\s*;)/.source,[m,x]),lookbehind:!0,inside:k},{pattern:n(/(\busing\s+)<<0>>(?=\s*=)/.source,[m]),lookbehind:!0},{pattern:n(/(\b<<0>>\s+)<<1>>/.source,[u,g]),lookbehind:!0,inside:k},{pattern:n(/(\bcatch\s*\(\s*)<<0>>/.source,[b]),lookbehind:!0,inside:k},{pattern:n(/(\bwhere\s+)<<0>>/.source,[m]),lookbehind:!0},{pattern:n(/(\b(?:is(?:\s+not)?|as)\s+)<<0>>/.source,[v]),lookbehind:!0,inside:k},{pattern:n(/\b<<0>>(?=\s+(?!<<1>>)<<2>>(?:\s*[=,;:{)\]]|\s+(?:in|when)\b))/.source,[x,f,m]),inside:k}],keyword:c,number:/(?:\b0(?:x[\da-f_]*[\da-f]|b[01_]*[01])|(?:\B\.\d+(?:_+\d+)*|\b\d+(?:_+\d+)*(?:\.\d+(?:_+\d+)*)?)(?:e[-+]?\d+(?:_+\d+)*)?)(?:ul|lu|[dflmu])?\b/i,operator:/>>=?|<<=?|[-=]>|([-+&|])\1|~|\?\?=?|[-+*/%&|^!=<>]=?/,punctuation:/\?\.?|::|[{}[\];(),.:]/}),e.languages.insertBefore("csharp","number",{range:{pattern:/\.\./,alias:"operator"}}),e.languages.insertBefore("csharp","punctuation",{"named-parameter":{pattern:n(/([(,]\s*)<<0>>(?=\s*:)/.source,[m]),lookbehind:!0,alias:"punctuation"}}),e.languages.insertBefore("csharp","class-name",{namespace:{pattern:n(/(\b(?:namespace|using)\s+)<<0>>(?:\s*\.\s*<<0>>)*(?=\s*[;{])/.source,[m]),lookbehind:!0,inside:{punctuation:/\./}},"type-expression":{pattern:n(/(\b(?:default|typeof|sizeof)\s*\(\s*(?!\s))(?:[^()\s]|\s(?!\s)|<<0>>)*(?=\s*\))/.source,[h]),lookbehind:!0,alias:"class-name",inside:k},"return-type":{pattern:n(/<<0>>(?=\s+(?:<<1>>\s*(?:=>|[({]|\.\s*this\s*\[)|this\s*\[))/.source,[x,b]),inside:k,alias:"class-name"},"constructor-invocation":{pattern:n(/(\bnew\s+)<<0>>(?=\s*[[({])/.source,[x]),lookbehind:!0,inside:k,alias:"class-name"},"generic-method":{pattern:n(/<<0>>\s*<<1>>(?=\s*\()/.source,[m,p]),inside:{function:n(/^<<0>>/.source,[m]),generic:{pattern:RegExp(p),alias:"class-name",inside:k}}},"type-list":{pattern:n(/\b((?:<<0>>\s+<<1>>|where\s+<<2>>)\s*:\s*)(?:<<3>>|<<4>>)(?:\s*,\s*(?:<<3>>|<<4>>))*(?=\s*(?:where|[{;]|=>|$))/.source,[u,g,m,x,c.source]),lookbehind:!0,inside:{keyword:c,"class-name":{pattern:RegExp(x),greedy:!0,inside:k},punctuation:/,/}},preprocessor:{pattern:/(^[\t ]*)#.*/m,lookbehind:!0,alias:"property",inside:{directive:{pattern:/(#)\b(?:define|elif|else|endif|endregion|error|if|line|pragma|region|undef|warning)\b/,lookbehind:!0,alias:"keyword"}}}});var C=T+"|"+S,A=t(/\/(?![*/])|\/\/[^\r\n]*[\r\n]|\/\*(?:[^*]|\*(?!\/))*\*\/|<<0>>/.source,[C]),R=r(t(/[^"'/()]|<<0>>|\(<>*\)/.source,[A]),2),_=/\b(?:assembly|event|field|method|module|param|property|return|type)\b/.source,N=t(/<<0>>(?:\s*\(<<1>>*\))?/.source,[b,R]);e.languages.insertBefore("csharp","class-name",{attribute:{pattern:n(/((?:^|[^\s\w>)?])\s*\[\s*)(?:<<0>>\s*:\s*)?<<1>>(?:\s*,\s*<<1>>)*(?=\s*\])/.source,[_,N]),lookbehind:!0,greedy:!0,inside:{target:{pattern:n(/^<<0>>(?=\s*:)/.source,[_]),alias:"keyword"},"attribute-arguments":{pattern:n(/\(<<0>>*\)/.source,[R]),inside:e.languages.csharp},"class-name":{pattern:RegExp(b),inside:{punctuation:/\./}},punctuation:/[:,]/}}});var L=/:[^}\r\n]+/.source,P=r(t(/[^"'/()]|<<0>>|\(<>*\)/.source,[A]),2),I=t(/\{(?!\{)(?:(?![}:])<<0>>)*<<1>>?\}/.source,[P,L]),D=r(t(/[^"'/()]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|<<0>>|\(<>*\)/.source,[C]),2),F=t(/\{(?!\{)(?:(?![}:])<<0>>)*<<1>>?\}/.source,[D,L]);function M(t,r){return{interpolation:{pattern:n(/((?:^|[^{])(?:\{\{)*)<<0>>/.source,[t]),lookbehind:!0,inside:{"format-string":{pattern:n(/(^\{(?:(?![}:])<<0>>)*)<<1>>(?=\}$)/.source,[r,L]),lookbehind:!0,inside:{punctuation:/^:/}},punctuation:/^\{|\}$/,expression:{pattern:/[\s\S]+/,alias:"language-csharp",inside:e.languages.csharp}}},string:/[\s\S]+/}}e.languages.insertBefore("csharp","string",{"interpolation-string":[{pattern:n(/(^|[^\\])(?:\$@|@\$)"(?:""|\\[\s\S]|\{\{|<<0>>|[^\\{"])*"/.source,[I]),lookbehind:!0,greedy:!0,inside:M(I,P)},{pattern:n(/(^|[^@\\])\$"(?:\\.|\{\{|<<0>>|[^\\"{])*"/.source,[F]),lookbehind:!0,greedy:!0,inside:M(F,D)}]})}(Prism),Prism.languages.dotnet=Prism.languages.cs=Prism.languages.csharp},6862:function(){!function(e){var t=e.languages.powershell={comment:[{pattern:/(^|[^`])<#[\s\S]*?#>/,lookbehind:!0},{pattern:/(^|[^`])#.*/,lookbehind:!0}],string:[{pattern:/"(?:`[\s\S]|[^`"])*"/,greedy:!0,inside:{function:{pattern:/(^|[^`])\$\((?:\$\([^\r\n()]*\)|(?!\$\()[^\r\n)])*\)/,lookbehind:!0,inside:{}}}},{pattern:/'(?:[^']|'')*'/,greedy:!0}],namespace:/\[[a-z](?:\[(?:\[[^\]]*\]|[^\[\]])*\]|[^\[\]])*\]/i,boolean:/\$(?:true|false)\b/i,variable:/\$\w+\b/,function:[/\b(?:Add|Approve|Assert|Backup|Block|Checkpoint|Clear|Close|Compare|Complete|Compress|Confirm|Connect|Convert|ConvertFrom|ConvertTo|Copy|Debug|Deny|Disable|Disconnect|Dismount|Edit|Enable|Enter|Exit|Expand|Export|Find|ForEach|Format|Get|Grant|Group|Hide|Import|Initialize|Install|Invoke|Join|Limit|Lock|Measure|Merge|Move|New|Open|Optimize|Out|Ping|Pop|Protect|Publish|Push|Read|Receive|Redo|Register|Remove|Rename|Repair|Request|Reset|Resize|Resolve|Restart|Restore|Resume|Revoke|Save|Search|Select|Send|Set|Show|Skip|Sort|Split|Start|Step|Stop|Submit|Suspend|Switch|Sync|Tee|Test|Trace|Unblock|Undo|Uninstall|Unlock|Unprotect|Unpublish|Unregister|Update|Use|Wait|Watch|Where|Write)-[a-z]+\b/i,/\b(?:ac|cat|chdir|clc|cli|clp|clv|compare|copy|cp|cpi|cpp|cvpa|dbp|del|diff|dir|ebp|echo|epal|epcsv|epsn|erase|fc|fl|ft|fw|gal|gbp|gc|gci|gcs|gdr|gi|gl|gm|gp|gps|group|gsv|gu|gv|gwmi|iex|ii|ipal|ipcsv|ipsn|irm|iwmi|iwr|kill|lp|ls|measure|mi|mount|move|mp|mv|nal|ndr|ni|nv|ogv|popd|ps|pushd|pwd|rbp|rd|rdr|ren|ri|rm|rmdir|rni|rnp|rp|rv|rvpa|rwmi|sal|saps|sasv|sbp|sc|select|set|shcm|si|sl|sleep|sls|sort|sp|spps|spsv|start|sv|swmi|tee|trcm|type|write)\b/i],keyword:/\b(?:Begin|Break|Catch|Class|Continue|Data|Define|Do|DynamicParam|Else|ElseIf|End|Exit|Filter|Finally|For|ForEach|From|Function|If|InlineScript|Parallel|Param|Process|Return|Sequence|Switch|Throw|Trap|Try|Until|Using|Var|While|Workflow)\b/i,operator:{pattern:/(\W?)(?:!|-(?:eq|ne|gt|ge|lt|le|sh[lr]|not|b?(?:and|x?or)|(?:Not)?(?:Like|Match|Contains|In)|Replace|Join|is(?:Not)?|as)\b|-[-=]?|\+[+=]?|[*\/%]=?)/i,lookbehind:!0},punctuation:/[|{}[\];(),.]/},n=t.string[0].inside;n.boolean=t.boolean,n.variable=t.variable,n.function.inside=t}(Prism)},5266:function(){Prism.languages.sql={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|(?:--|\/\/|#).*)/,lookbehind:!0},variable:[{pattern:/@(["'`])(?:\\[\s\S]|(?!\1)[^\\])+\1/,greedy:!0},/@[\w.$]+/],string:{pattern:/(^|[^@\\])("|')(?:\\[\s\S]|(?!\2)[^\\]|\2\2)*\2/,greedy:!0,lookbehind:!0},function:/\b(?:AVG|COUNT|FIRST|FORMAT|LAST|LCASE|LEN|MAX|MID|MIN|MOD|NOW|ROUND|SUM|UCASE)(?=\s*\()/i,keyword:/\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|AUTO_INCREMENT|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR(?:ACTER|SET)?|CHECK(?:POINT)?|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMNS?|COMMENT|COMMIT(?:TED)?|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS(?:TABLE)?|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|CYCLE|DATA(?:BASES?)?|DATE(?:TIME)?|DAY|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DELIMITERS?|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE|ELSE(?:IF)?|ENABLE|ENCLOSED|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPED?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|HOUR|IDENTITY(?:_INSERT|COL)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTERVAL|INTO|INVOKER|ISOLATION|ITERATE|JOIN|KEYS?|KILL|LANGUAGE|LAST|LEAVE|LEFT|LEVEL|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|LOOP|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MINUTE|MODE|MODIFIES|MODIFY|MONTH|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL|NATURAL|NCHAR|NEXT|NO|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREPARE|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READS?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEAT(?:ABLE)?|REPLACE|REPLICATION|REQUIRE|RESIGNAL|RESTORE|RESTRICT|RETURN(?:S|ING)?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SECOND|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|SQL|START(?:ING)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED|TEXT(?:SIZE)?|THEN|TIME(?:STAMP)?|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNLOCK|UNPIVOT|UNSIGNED|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?|YEAR)\b/i,boolean:/\b(?:TRUE|FALSE|NULL)\b/i,number:/\b0x[\da-f]+\b|\b\d+(?:\.\d*)?|\B\.\d+\b/i,operator:/[-+*\/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|DIV|IN|ILIKE|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/}},9419:function(e,t,n){var r={"./prism-csharp":9016,"./prism-powershell":6862,"./prism-sql":5266};function o(e){var t=a(e);return n(t)}function a(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}o.keys=function(){return Object.keys(r)},o.resolve=a,e.exports=o,o.id=9419},2703:function(e,t,n){"use strict";var r=n(414);function o(){}function a(){}a.resetWarningCache=o,e.exports=function(){function e(e,t,n,o,a,i){if(i!==r){var s=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw s.name="Invariant Violation",s}}function t(){return e}e.isRequired=e;var n={array:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:a,resetWarningCache:o};return n.PropTypes=n,n}},5697:function(e,t,n){e.exports=n(2703)()},414:function(e){"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},4448:function(e,t,n){"use strict";var r=n(7294),o=n(7418),a=n(3840);function i(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n