Blazor有两种开发模式:
(1)Blazor Webassembly不能直连数据库,只能通过API加载。相当于网页版的客户端,只是用户无需安装浏览器。浏览器的安全机制,约束了以Blazor Webassembly实现的网站,在开发时不能直连数据库,因此创建默认模板时,看不到诸如appsettings.json的配置文件。因此这种实现方式,不能直连数据库,只能通过调用接口的方式加载数据,类似常规网页开发中,前端调用API加载数据一样。
Blazor Webassembly调用api的官方说明参考:从 ASP.NET Core Blazor 调用 Web API
提供一个参考方案:
第一步:创建API。API端先进行发布,设置允许跨域访问,修改Startup.cs文件:
在ConfigureServices函数中,添加
services.AddCors(m => m.AddPolicy("Any", a => a.SetIsOriginAllowed(_ => true).AllowAnyMethod().AllowAnyHeader().AllowCredentials())); //配置跨域访问
在Configure函数中,添加
app.UseCors(); //允许跨域访问
保证Web API发布后,可以使用跨域进行访问。
第二步:调用API加载数据。
<h1 @onclick="Test">测试</h1>
……
private async Task<string> APITest()
{
HttpClient client = new HttpClient();
var str = await client.GetStringAsync("http://***:5000/api/Test/TestGet?id=1");
Console.WriteLine(str);
JObject data = JsonConvert.DeserializeObject<JObject>(str);
Console.WriteLine(data["code"].ToString());
list = new List<Models.test>();
return data["code"].ToString();
}
可以使用网页检查调试,查看 Console.WriteLine的输出数据。
(2)Blazor Server可以直连数据库,一般通过ADO.Net或者进行数据读写。相当于在后台实现所有服务,通过blazor的通信机制,实现数据的动态更新。这种情况下,服务端可以直连数据库。开发者可以像常规c#程序一样,使用ADO.Net连接数据库,也可以使用EF进行数据库处理。
方式一:ADO.Net连接方式。原生c#的数据库连接,需要自己编写许多数据库处理脚本,不过连接方便。推荐一个开源框架: ThunderSQLCore,可以很方便的处理数据库的基础读写。
方式二:EF的连接方式。Entity Framework Core 是适用于 .NET 的新式对象数据库映射器。 它支持 LINQ 查询、更改跟踪、更新和架构迁移。EF Core 适用于很多数据库,包括 SQL 数据库(本地和 Azure)、SQLite、MySQL、PostgreSQL 和 Azure Cosmos DB。参考:Entity Framework Core
网友评论