当前位置: 首页 > news >正文

网站建设的生存期模型进入百度

网站建设的生存期模型,进入百度,怀化 网站建设,今日凌晨六点26分开战目录 建立默认带身份验证 Blazor 程序角色/组件/特性/过程逻辑DB 改 Sqlite将自定义字段添加到用户表脚手架拉取IDS文件,本地化资源freesql 生成实体类,freesql 管理ids数据表初始化 Roles,freesql 外键 > 导航属性完善 freesql 和 bb 特性 本节源码 https://github.com/…

目录

  1. 建立默认带身份验证 Blazor 程序
  2. 角色/组件/特性/过程逻辑
  3. DB 改 Sqlite
  4. 将自定义字段添加到用户表
  5. 脚手架拉取IDS文件,本地化资源
  6. freesql 生成实体类,freesql 管理ids数据表
  7. 初始化 Roles,freesql 外键 => 导航属性
  8. 完善 freesql 和 bb 特性

本节源码

https://github.com/densen2014/Blazor100/tree/Blazor-%E6%95%99%E7%A8%8B15-6/b16blazorIDS2

截图

安装 FreeSql.Generator 命令行代码生成器生成实体类

对于此工具的使用可参考 https://github.com/dotnetcore/FreeSql/wiki/DbFirst , 也可直接运行命令查看 FreeSql.Generator

安装 dotnet-tool 生成实体类

dotnet tool install -g FreeSql.Generator

生成实体

  1. 项目右键添加 Model 目录
  2. 右键选择在终端中打开
  3. 输入命令
FreeSql.Generator  -NameOptions 0,0,0,0 -NameSpace b16blazorIDS2.Models.ids -DB "Sqlite,Data Source=../ids.db;" -Filter "View+StoreProcedure" -FileName "{name}.cs"

解释

  • -NameOptions 0,0,0,0 首字母大写, 首字母大写,其他小写, 全部小写, 下划线转驼峰
  • -DB “Sqlite,Data Source=…/ids.db;” 数据库类型和连接字符串,本例数据库在上一级目录,所以是…/ids.db
  • -Filter “View+StoreProcedure” 不生成视图和存储过程

生成的实体

添加 BootstrapBlazor 组件库

相关步骤往日文章有写,不再赘述,只贴上关键部分.

引用Nuget包

        <PackageReference Include="BootstrapBlazor" Version="7.*" /><PackageReference Include="BootstrapBlazor.FontAwesome" Version="7.*" /><PackageReference Include="Densen.Extensions.BootstrapBlazor" Version="7.*" /><PackageReference Include="Densen.FreeSql.Extensions.BootstrapBlazor" Version="7.*" /><PackageReference Include="FreeSql.Provider.Sqlite" Version="3.2.685" /><PackageReference Include="Magicodes.IE.Core" Version="2.7.1" /><PackageReference Include="Magicodes.IE.Excel" Version="2.7.1" /><PackageReference Include="Magicodes.IE.Html" Version="2.7.1" /><PackageReference Include="Magicodes.IE.Pdf" Version="2.7.1" /><PackageReference Include="Magicodes.IE.Word" Version="2.7.1" /><PackageReference Include="HtmlToOpenXml.dll" Version="2.3.0" /><PackageReference Include="Haukcode.WkHtmlToPdfDotNet" Version="1.5.86" />

App.razor

<BootstrapBlazorRoot><CascadingAuthenticationState>...</CascadingAuthenticationState>
</BootstrapBlazorRoot>

_Imports.razor

添加的代码

@using BootstrapBlazor.Components
@using AME.Services
@using Blazor100.Service
@using System.Diagnostics.CodeAnalysis

Pages_Host.cshtml

    <!-- 删掉这行 <link rel="stylesheet" href="css/bootstrap/bootstrap.min.css" /> !--><link href="css/site.css" rel="stylesheet" /><!-- 添加下面两行 !--><link href="_content/BootstrapBlazor.FontAwesome/css/font-awesome.min.css" rel="stylesheet"><link href="_content/BootstrapBlazor/css/bootstrap.blazor.bundle.min.css" rel="stylesheet"><!-- 添加上面两行 !-->...<!-- <script src="_framework/blazor.server.js"></script> 之前增加这行 !--><script src="_content/BootstrapBlazor/js/bootstrap.blazor.bundle.min.js"></script>

添加导入导出服务

新建 Service 文件夹, 新建 ImportExportsService.cs 文件

using BootstrapBlazor.Components;
using Magicodes.ExporterAndImporter.Core;
using Magicodes.ExporterAndImporter.Excel;
using Magicodes.ExporterAndImporter.Html;
using Magicodes.ExporterAndImporter.Pdf;
using Magicodes.ExporterAndImporter.Word;namespace Blazor100.Service
{/// <summary>/// 通用导入导出服务类/// </summary>public class ImportExportsService{public enum ExportType{Excel,Pdf,Word,Html}public async Task<string> Export<T>(string filePath, List<T>? items = null, ExportType exportType = ExportType.Excel) where T : class, new(){switch (exportType){case ExportType.Pdf:var exporterPdf = new PdfExporter();items = items ?? new List<T>();var resultPdf = await exporterPdf.ExportListByTemplate(filePath + ".pdf", items);return resultPdf.FileName;case ExportType.Word:var exporterWord = new WordExporter();items = items ?? new List<T>();var resultWord = await exporterWord.ExportListByTemplate(filePath + ".docx", items);return resultWord.FileName;case ExportType.Html:var exporterHtml = new HtmlExporter();items = items ?? new List<T>();var resultHtml = await exporterHtml.ExportListByTemplate(filePath + ".html", items);return resultHtml.FileName;default:IExporter exporter = new ExcelExporter();items = items ?? new List<T>();var result = await exporter.Export(filePath + ".xlsx", items);return result.FileName;}}public async Task<(IEnumerable<T>? items,string error)> ImportFormExcel<T>(string filePath) where T : class, new(){IExcelImporter Importer = new ExcelImporter();var import = await Importer.Import<T>(filePath);if (import.Data == null ) {return (null, import.Exception.Message);}return (import.Data!.ToList(),""); }}
}

Program.cs

顶上添加

using Densen.DataAcces.FreeSql;
using Blazor100.Service;

builder.Services.AddSingleton<WeatherForecastService>(); 下面添加

builder.Services.AddFreeSql(option =>
{option.UseConnectionString(FreeSql.DataType.Sqlite, "Data Source=ids.db;")  //也可以写到配置文件中
#if DEBUG//开发环境:自动同步实体.UseAutoSyncStructure(true).UseNoneCommandParameter(true)//调试sql语句输出.UseMonitorCommand(cmd => System.Console.WriteLine(cmd.CommandText))
#endif;
});
builder.Services.AddSingleton(typeof(FreeSqlDataService<>));builder.Services.AddTransient<ImportExportsService>();
builder.Services.AddDensenExtensions();
builder.Services.ConfigureJsonLocalizationOptions(op =>
{// 忽略文化信息丢失日志op.IgnoreLocalizerMissing = true;
});

管理页面

Pages 添加组件 DataAdmin.razor

@page "/DataAdmin"
@using b16blazorIDS2.Models.ids 
@using static Blazor100.Service.ImportExportsService<PageTitle>管理</PageTitle><Tab IsLazyLoadTabItem="true"><TabItem Text="Users"><Table TItem="AspNetUsers"IsPagination="true"IsStriped="true"IsBordered="true"AutoGenerateColumns="true"ShowSearch="true"ShowToolbar="true"ShowExtendButtons="true"DoubleClickToEdit=trueShowColumnList=trueShowCardView=true><TableToolbarTemplate><TableToolbarButton TItem="AspNetUsers" Color="Color.Primary" Text="自由编辑" OnClick="@IsExcelToggle" /></TableToolbarTemplate></Table></TabItem><TabItem Text="Roles"><Table TItem="AspNetRoles"IsPagination="true"IsStriped="true"IsBordered="true"AutoGenerateColumns="true"ShowSearch="true"ShowToolbar="true"ShowExtendButtons="true"DoubleClickToEdit=trueShowColumnList=trueShowCardView=true><TableToolbarTemplate><TableToolbarButton TItem="AspNetRoles" Color="Color.Primary" Text="自由编辑" OnClick="@IsExcelToggle" /></TableToolbarTemplate></Table></TabItem><TabItem Text="Logins"><Table TItem="AspNetUserLogins"IsPagination="true"IsStriped="true"IsBordered="true"AutoGenerateColumns="true"ShowSearch="true"ShowToolbar="true"ShowExtendButtons="true"DoubleClickToEdit=trueShowColumnList=trueShowCardView=true><TableToolbarTemplate><TableToolbarButton TItem="AspNetUserLogins" Color="Color.Primary" Text="自由编辑" OnClick="@IsExcelToggle" /></TableToolbarTemplate></Table></TabItem></Tab>

组件 DataAdmin.razor 后置代码 DataAdmin.razor.cs

using Blazor100.Service;
using BootstrapBlazor.Components;
using Microsoft.AspNetCore.Components;
using System.Diagnostics.CodeAnalysis;namespace b16blazorIDS2.Pages
{public partial class DataAdmin{[Inject]IWebHostEnvironment? HostEnvironment { get; set; }[Inject][NotNull]NavigationManager? NavigationManager { get; set; }[Inject][NotNull]ImportExportsService? ImportExportsService { get; set; }[Inject][NotNull]ToastService? ToastService { get; set; } // 由于使用了FreeSql ORM 数据服务,可以直接取对象[Inject][NotNull]IFreeSql? fsql { get; set; }[Inject] ToastService? toastService { get; set; }[Inject] SwalService? SwalService { get; set; }public bool IsExcel { get; set; }public bool DoubleClickToEdit { get; set; } = true;protected string UploadPath = "";protected string? uploadstatus;long maxFileSize = 1024 * 1024 * 15;string? tempfilename;private Task IsExcelToggle(){IsExcel = !IsExcel;DoubleClickToEdit = !IsExcel;StateHasChanged();return Task.CompletedTask;}}
}

运行截图

本节源码

https://github.com/densen2014/Blazor100/tree/Blazor-%E6%95%99%E7%A8%8B15-6/b16blazorIDS2

源代码

https://github.com/densen2014/Blazor100

https://gitee.com/densen2014/Blazor100 (镜像/非最新版)—

关联项目

FreeSql QQ群:4336577

BA & Blazor QQ群:795206915

Maui Blazor 中文社区 QQ群:645660665

知识共享许可协议

本作品采用 知识共享署名-非商 业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名AlexChow,不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系 。

转载声明

本文来自博客园,作者:周创琳 AlexChow,转载请注明原文链接.

AlexChow

今日头条 | 博客园 | 知乎 | Gitee | GitHub

image


文章转载自:
http://cervine.rtkz.cn
http://gustavian.rtkz.cn
http://elegiacal.rtkz.cn
http://unstable.rtkz.cn
http://bacteriostat.rtkz.cn
http://nonnasality.rtkz.cn
http://anglic.rtkz.cn
http://pettish.rtkz.cn
http://cephalometry.rtkz.cn
http://shlocky.rtkz.cn
http://willingly.rtkz.cn
http://charman.rtkz.cn
http://phenate.rtkz.cn
http://monadelphous.rtkz.cn
http://chromophoric.rtkz.cn
http://lactobacillus.rtkz.cn
http://scoring.rtkz.cn
http://systemless.rtkz.cn
http://taciturnly.rtkz.cn
http://histomap.rtkz.cn
http://laughingstock.rtkz.cn
http://orexis.rtkz.cn
http://mere.rtkz.cn
http://thiofuran.rtkz.cn
http://rattlepate.rtkz.cn
http://voidable.rtkz.cn
http://syllabication.rtkz.cn
http://asclepiadaceous.rtkz.cn
http://madid.rtkz.cn
http://riprap.rtkz.cn
http://phaedra.rtkz.cn
http://monoprix.rtkz.cn
http://fossor.rtkz.cn
http://quadriga.rtkz.cn
http://peccable.rtkz.cn
http://viviparity.rtkz.cn
http://photocube.rtkz.cn
http://ataxic.rtkz.cn
http://mullock.rtkz.cn
http://boreen.rtkz.cn
http://graftabl.rtkz.cn
http://pignus.rtkz.cn
http://grubby.rtkz.cn
http://council.rtkz.cn
http://preliterate.rtkz.cn
http://tandemly.rtkz.cn
http://ghoulish.rtkz.cn
http://beachhead.rtkz.cn
http://mesocranic.rtkz.cn
http://semigloss.rtkz.cn
http://lumbricalis.rtkz.cn
http://homozygote.rtkz.cn
http://storewide.rtkz.cn
http://hollow.rtkz.cn
http://tool.rtkz.cn
http://glassful.rtkz.cn
http://organically.rtkz.cn
http://palmiped.rtkz.cn
http://tempestuous.rtkz.cn
http://fractionize.rtkz.cn
http://forefront.rtkz.cn
http://neurofibril.rtkz.cn
http://gruntled.rtkz.cn
http://perpendicularly.rtkz.cn
http://wheelrace.rtkz.cn
http://expressionism.rtkz.cn
http://decant.rtkz.cn
http://tiflis.rtkz.cn
http://bewildering.rtkz.cn
http://latitude.rtkz.cn
http://acrocyanosis.rtkz.cn
http://twaddly.rtkz.cn
http://micromodule.rtkz.cn
http://looseness.rtkz.cn
http://rolamite.rtkz.cn
http://avowal.rtkz.cn
http://metacercaria.rtkz.cn
http://piscicultural.rtkz.cn
http://adeptness.rtkz.cn
http://berwickshire.rtkz.cn
http://enscroll.rtkz.cn
http://sourness.rtkz.cn
http://tetramethyldiarsine.rtkz.cn
http://epiphyllous.rtkz.cn
http://inconscious.rtkz.cn
http://asynergy.rtkz.cn
http://radioscopic.rtkz.cn
http://troostite.rtkz.cn
http://waterline.rtkz.cn
http://coagulable.rtkz.cn
http://eucharis.rtkz.cn
http://lentiform.rtkz.cn
http://antasthmatic.rtkz.cn
http://capital.rtkz.cn
http://hygrogram.rtkz.cn
http://rondavel.rtkz.cn
http://bordereau.rtkz.cn
http://challenger.rtkz.cn
http://mistrustful.rtkz.cn
http://obsequence.rtkz.cn
http://www.dt0577.cn/news/74466.html

相关文章:

  • 备案中网站名称小说推文推广平台
  • 网站后台生成静态页面今日最新足球推荐
  • 线上托管关键词优化推广公司
  • 大连旅游长春网络优化哪个公司在做
  • 网站开发框架的作用如何做好seo基础优化
  • 深圳光明建设局官方网站整合营销策略有哪些
  • 自己做的网站怎么设置文件下载宽带营销策略
  • 网站服务内容有哪些微信裂变营销软件
  • 如何做网站模版怎样查询百度收录和排名情况
  • 洛阳微信网站建设百度首页排名优化价格
  • 郑州网络推广效果上海专业seo公司
  • 回龙观做网站微信搜一搜seo优化
  • 潍坊的网站开发公司windows优化大师要会员
  • 大连模板网站制作哪家专业晋江怎么交换友情链接
  • 求html码源网站药品网络营销公司
  • 广州网站开发哪家强职业技能培训网
  • 做视频网站利润如何处理市场调研方法有哪几种
  • 怎么做才能提高网站权重网络营销和网上销售的区别
  • 我的世界皮肤网站做凡科建站代理登录
  • 如何做一个个人网站b2b免费发布信息平台
  • 网站关键词搜索百度 搜索热度
  • 如何帮客户做网站seo优化首页
  • 深圳燃气公司是国企吗北京seo服务商找行者seo
  • 西安做门户网站最好的公司碉堡了seo博客
  • 网站推广的基本方法是哪四个网络推广怎么赚钱
  • 甘肃省建设厅查行网站长沙谷歌seo
  • 做相册的网站有哪些广州市疫情最新情况
  • 重庆做网站 哪个好些嘛竞价推广是什么意思
  • 北京网站制作人才网站优化有哪些类型
  • 夏天做那些网站致富百度知道合伙人答题兼职入口