Entity Framework Core:一对一关系

当一个实体与最多一个其他实体关联时,将使用一对一关系。 例如,Blog 有一个 BlogHeader,并且 BlogHeader 属于单个 Blog。 本文档采用围绕大量示例展开的结构。 这些示例从常见情况着手,还引入了一些概念。 后面的示例介绍了不太常见的配置类型。 此处介绍了一个不错的方法,即了解前几个示例和概念,再根据特定需求转到后面的示例。 基于此方法,我们将从简单的“必需”和“可选”的一对一关系开始。 可在 OneToOne.cs 中找到以下所有示例的代码。 必需的一对一 // Principal (parent) public class Blog { public int Id { get; set; } public BlogHeader? Header { get; set; } // Reference navigation to dependent } // Dependent (child) public class BlogHeader { public int Id { get; set; } public int BlogId { get; set; } // Required foreign key property public Blog Blog { get; set; } = null!; // Required reference navigation to principal } 一对一关系由以下部分组成: 主体实体上的一个或多个主键或备用键属性。 例如 Blog.Id。 依赖实体上的一个或多个外键属性。 例如 BlogHeader.BlogId。 (可选)引用依赖实体的主体实体上的引用导航。 例如 Blog.Header。 (可选)引用主体实体的依赖实体上的引用导航。 例如,BlogHeader.Blog。 提示 ...

June 20, 2024

写在第八个父亲节:反思自我少发火

父亲节,女儿很乖,儿子大闹,我又发了一轮火-_- 我们不算是鸡娃的家长,但是对子女有最基本的要求,为了引导和教育子女,我这段时间发现自己对小孩们发脾气的次数变多了。每次发完火之后,我知道这很不好,但是总是不能克制住自己,其实对小孩或者家人发火,只是情绪的宣泄,对谁都不好。我总结自己发火的点: 1、子女们的行为习惯。主要是生活习惯和本来应该养成的好习惯,有时候他们屡教不改,这方面是应该严厉、严格,但是不要动火,否则无济于事。 2、对于子女们的兴趣培养,比如小提琴,总是会有“恨铁不成刚”的想法。如果静下来想想,他们的水平已经远远在我之上,所以很多时候更多是自己的期望值太高。如果能认识到兴趣要坚持和长期培养,那么我确实应该要更有耐心,毕竟核心是要让他们感兴趣地坚持下去。 3、辅导子女们的学业过程。其实想想小孩子需要时间去成长,有时候我是以大人的要求去教育小孩,我应该给他们更多的时间来消化及成长。 我今天反思自己,就是希望自己能控制情绪,作为一个男人,应该能担当、沉住气,这样才能真的起到教育的作用。 “父母所遭受的文化和心理压力或伤害可能会传递到孩子身上。我绝不是危言耸听,我想提醒父母们,我们赋予孩子的一切中,有一半来自我们自己,因此,我们首先需要让自己变成身心健康的人。” 立帖为证,做好自己。

June 16, 2024

Blazor server VS Blazor WebAssembly

Blazor WebAssembly 主要的 Blazor 托管模型在 WebAssembly 上的浏览器中运行客户端。 将 Blazor 应用、其依赖项以及 .NET 运行时下载到浏览器。 应用将在浏览器线程中直接执行。 UI 更新和事件处理在同一进程中进行。 应用资产作为静态文件部署到可为客户端提供静态内容的 Web 服务器或服务中。 Blazor WebAssembly:Blazor 应用在浏览器内部的 UI 线程上运行。 如果创建了 Blazor WebAssembly 应用进行部署,但没有后端 ASP.NET Core 应用来为其文件提供服务,那么该应用被称为独立 Blazor WebAssembly 应用。 如果创建了应用进行部署,但没有后端应用来为其文件提供服务,那么该应用被称为托管的 Blazor WebAssembly 应用。 托管的 Blazor WebAssembly Client 应用通常使用 Web API 调用或 SignalR(结合使用 ASP.NET Core SignalR 和 Blazor)通过网络与后端 Server 应用交互。 blazor.webassembly.js 脚本由框架和句柄提供: 下载 .NET 运行时、应用和应用依赖项。 初始化运行应用的运行时。 Blazor WebAssembly 托管模型具有以下优点: 没有 .NET 服务器端依赖项。 应用下载到客户端后即可正常运行。 可充分利用客户端资源和功能。 工作可从服务器转移到客户端。 无需 ASP.NET Core Web 服务器即可托管应用。 无服务器部署方案可行,例如通过内容分发网络 (CDN) 为应用提供服务的方案。 Blazor WebAssembly 托管模型具有以下局限性: ...

June 12, 2024

结合使用 ASP.NET Core SignalR 和 Blazor

本教程提供了使用 SignalR 和 Blazor 生成实时应用的基本工作经验。 本文适用于已经熟悉 SignalR 并正在寻求了解如何在 SignalR 应用中使用 Blazor 的开发人员。 有关 SignalR 和 Blazor 框架的详细指南,请参阅以下参考文档集和 API 文档: ASP.NET Core SignalR 概述 ASP.NET Core Blazor .NET API 浏览器 了解如何: 创建 Blazor 应用 添加 SignalR 客户端库 添加 SignalR 集线器 添加 SignalR 服务和 SignalR 中心的终结点 添加用于聊天的 Razor 组件代码 在本教程结束时,你将拥有一个正常运行的聊天应用。 先决条件 Visual Studio Visual Studio Code .NET CLI 具有“ASP.NET 和 Web 开发”工作负载的 Visual Studio 2022 或更高版本 示例应用 本教程不需要下载教程的示例聊天应用。 示例应用是按照本教程的步骤生成的最终工作应用。 查看或下载示例代码(如何下载) 创建 Blazor Web 应用 按照所选工具的指南进行操作: ...

June 12, 2024

git提交或克隆报错fatal: unable to access ‘https://github.com/tata20191003/autowrite.git/‘: Failed to connec

1.问题原因 报错信息: fatal: unable to access ‘https://github.com/xxx/autowrite.git/’: OpenSSL SSL_read: Connection was reset, errno 10054 1 2 又或者 fatal: unable to access ‘https://github.com/xxx/autowrite.git/’: Failed to connect to github.com port 443: Timed out 1 2 因为git在拉取或者提交项目时,中间会有git的http和https代理,但是我们本地环境本身就有SSL协议了,所以取消git的https代理即可,不行再取消http的代理。 后续 原因还有一个,当前代理网速过慢,所以偶尔会成功,偶尔失败。 2.解决方案 1.在项目文件夹的命令行窗口执行下面代码,然后再git commit 或git clone 取消git本身的https代理,使用自己本机的代理,如果没有的话,其实默认还是用git的 //取消http代理 git config –global –unset http.proxy //取消https代理 git config –global –unset https.proxy 1 2 3 4 2.科学上网(vpn) 这样就能提高服务器连接速度,能从根本解决 time out 443问题 原文链接:https://blog.csdn.net/good_good_xiu/article/details/118567249

June 10, 2024

EF Add-Migration总结

EF CodeFirst对数据库任何的操作,千万不要手工去修改。 解释:add-migration命令是code first migration中的关键命令之一。当您对领域域模型进行更改并需要将它们时添加到数据库中,您将创建一个新的迁移。这是通过Add-Migration命令完成的。用最简单的形式,你只需要提供迁移名称 展现形式:命令将您的更改构建到一个cs文件中。这个cs文件与配置文件放在同一个文件夹中,服务于您要瞄准的DbContext 1.常用的命令: Add-Migration 、 Update-DataBase 、 Script-Migration (1)vs的程序包管理控制台输入 get-help Add-Migration -detailed以查看详细信息 Add-Migration [-Name] :指定自定义脚本 的名字 [-Force] [-ProjectName ] :如果要重新构建现有迁移,必须使用-Force参数。然而,只有在迁移尚未应用到数据库时,才能重新构建框架。否则你 需要回复到要重新构建的迁移之前的迁移 [-StartUpProjectName ] :是从 解决方案资源管理器中选择一个项目 作为启动项目。如果我们忽略的话,就会默认为解决方案资源管理器中的启动项目。 [-ConfigurationTypeName ] :项目中有多个DbContext,那么您需要指出哪个数据库会更新。这可以用-ConfigurationTypeName做。ConfigurationTypeName方法是迁移文件夹中配置类的名称。 [-ConnectionStringName ] :从应用程序的配置文件中指定要使用的连接字符串的名字。我们用两个参数-ConnectionString -ConnectionProviderName ,或者用这样一个参数代替 [-IgnoreChanges] :假设目标数据库模式与当前的模型是一致的。构建一个空迁移和对应的空的迁移文件,忽略在当前模型中检测到的任何挂起的更改。可用于创建初始的空迁移,以支持对现有数据库的迁移。 [-AppDomainBaseDirectory ]:指定用于运行数据迁移代码的app-domain的路径,从而app-domain 可以找到所有需要的程序集。这是一个高级选项,只有当解决方案包含多个项目时才会需要。这样的话,context和configuration所需要的程序集就不仅仅从那些包含context和包含migrations的项目中获取 CommonParameters Add-Migration (你的迁移文件名称) 若在一个项目里,操作多个DbConext的方法则需要指定context名称 add-migration 迁移名称 -c ConfigurationDbContext update-database -c ConfigurationDbContext

June 8, 2024

MediatR Official Document

MediatR is a low-ambition library trying to solve a simple problem — decoupling the in-process sending of messages from handling messages. Cross-platform, supporting netstandard2.0. Setup Install the package via NuGet first: Install-Package MediatR MediatR directly references Microsoft.Extensions.DependencyInjection.Abstractions leveraging IServiceProvider. Typical usage is to use IServiceCollection directly: services.AddMediatR(cfg => { cfg.RegisterServicesFromAssembly(typeof(Program).Assembly); }); This method registers the known MediatR types: IMediator as transient ISender as transient IPublisher as transient For each assembly registered, the AddMediatR method will scan those assemblies for MediatR types (excluding behaviors): ...

June 5, 2024

MSBuild介绍

Microsoft 生成引擎是一个用于生成应用程序的平台。 此引擎(也称为 MSBuild)为项目文件提供了一个 XML 架构,用于控制生成平台处理和生成软件的方式。 Visual Studio 会使用 MSBuild,但 MSBuild 不依赖于 Visual Studio。 通过在项目或解决方案文件中调用 msbuild.exe 或 dotnet build,可以在未安装 Visual Studio 的环境中安排和生成产品。 Visual Studio 使用 MSBuild 来加载和生成托管项目。 Visual Studio 中的项目文件(.csproj、.vbproj、vcxproj 等)包含 MSBuild XML 代码,当你使用 IDE 来生成项目时,此代码就会运行。 Visual Studio 项目会导入所有必要的设置和生成过程来执行典型的开发工作,但你可以从 Visual Studio 内或通过使用 XML 编辑器对其进行扩展或修改。 若要在没有 Visual Studio 的 Windows 系统上安装 MSBuild,请转到下载页面上的 Visual Studio 生成工具。 通过此方法安装 MSBuild 可获得 MSBuild.exe。 对于 .NET Core 和 .NET 5 或更高版本,获取 MSBuild 等效项的另一种方法是安装 .NET SDK。 .NET 生成命令 dotnet build 可与 macOS、Windows 或 Linux 上的 .NET SDK 一起使用。 .NET 生成命令 dotnet build 是 .NET Core 版本 MSBuild.exe 的精简包装器。 可以使用 .NET Core 命令行接口 (CLI)(使用 MSBuild)来生成面向 .NET Core 和 .NET 5 及更高版本的项目。 ...

June 4, 2024

NSwag 和 ASP.NET Core 入门

NSwag 提供了下列功能: 能够使用 Swagger UI 和 Swagger 生成器。 灵活的代码生成功能。 借助 NSwag,无需使用现有 API。也就是说,可使用包含 Swagger 的第三方 API,并生成客户端实现。 使用 NSwag,可以加快开发周期,并轻松适应 API 更改。 包安装 将 NSwag 安装到: 生成已实现的 Web API 的 Swagger 规范。 为 Swagger UI 提供服务以浏览和测试 Web API。 为 Redoc 提供服务,以为 Web API 添加 API 文档。 若要使用 NSwag ASP.NET Core 中间件,请安装 NSwag.AspNetCore NuGet 包。 此包内的中间件可用于生成并提供Swagger 规范、Swagger UI(v2 和 v3)和 ReDoc UI。 NSwag 14 仅支持 v3 版的 Swagger UI 规范。 若要安装 NSwag NuGet 包,请使用以下方法之一: ...

June 4, 2024

NSwag.MSBuild使用

Package: NSwag.MSBuild Important for .NET Core: Assembly loading#net-core After installing the NSwag.MSBuild NuGet package in your project, you can use the variable $(NSwagExe) in your .csproj file to run the NSwag command line tool in an MSBuild target. This way the tools can easily be updated via NuGet. The /controller parameter can be omitted to generate a Swagger specification for all controllers. For better testability and stable output (defaults may change), it is recommended to create an NSwag Configuration Document (e.g. with NSwagStudio) and use: ...

June 4, 2024