Razor Pages ASP.NET如何连接非本地MSSQL数据库并展示数据
1. MSSQL连接字符串配置方法
连接字符串统一配置在项目根目录的appsettings.json文件中,不要硬编码在业务代码里。
找到文件内的ConnectionStrings节点,根据你持有的凭据类型选择对应的格式:
- SQL Server账号密码认证(最常用,对应单独的数据库账号/密码场景)
{ "Logging": { "LogLevel": { "Default": "Information", "Microsoft.AspNetCore": "Warning" } }, "ConnectionStrings": { "DefaultMssqlConn": "Server=你的数据库服务器地址,端口;Database=你要连接的目标库名;User Id=登录账号;Password=登录密码;TrustServerCertificate=True;Encrypt=True;" }, "AllowedHosts": "*" }
参数说明:
Server:填写非本地MSSQL的服务器地址,如果用默认1433端口可以省略端口值,非默认端口直接跟在地址后用逗号分隔即可Database:填写需要访问的具体数据库名称,避免连错实例下的其他库User Id/Password:填写你持有的数据库登录凭据TrustServerCertificate=True:跳过服务端证书校验,解决非本地连接常见的SSL证书信任报错,生产环境如果部署了合规证书可按需移除Encrypt=True:兼容高版本MSSQL默认的加密传输要求,避免低版本客户端连接报错Windows域集成认证(对应程序运行在域环境下,用当前系统账号访问数据库、不需要单独密码的场景)
"DefaultMssqlConn": "Server=你的数据库服务器地址;Database=目标库名;Integrated Security=True;TrustServerCertificate=True;"
2. 数据访问与页面展示实现
Razor Pages下最简单的实现方式是用Entity Framework Core做ORM映射,不用手动写数据转换逻辑,步骤如下:
前置依赖安装
通过Nuget包管理器安装两个必需包:
Microsoft.EntityFrameworkCore.SqlServer:MSSQL的EF Core提供程序Microsoft.EntityFrameworkCore.Tools:支持后续的模型映射操作
配置数据映射
- 在项目下新建
Models文件夹,创建和目标表结构对应的实体类,比如要展示存储条目表StorageEntries,就创建对应类:
public class StorageEntry { // 属性名、类型要和数据库表字段一一对应,字段名不一致时可以用[Column("实际字段名")]特性标记 public int EntryId { get; set; } public string EntryName { get; set; } public int StoreCount { get; set; } public DateTime UpdateTime { get; set; } // 其余字段按照实际表结构补充 }
- 在同文件夹下创建数据库上下文类,负责数据操作:
using Microsoft.EntityFrameworkCore; public class AppDbContext : DbContext { public AppDbContext(DbContextOptions<AppDbContext> options) : base(options) { } // 泛型参数填刚才创建的实体类,属性名默认和数据库表名匹配 public DbSet<StorageEntry> StorageEntries { get; set; } }
- 打开项目根目录的
Program.cs,在var app = builder.Build();代码之前添加服务注册,把连接字符串和数据库上下文注入到系统服务里:
var connStr = builder.Configuration.GetConnectionString("DefaultMssqlConn"); builder.Services.AddDbContext<AppDbContext>(opt => opt.UseSqlServer(connStr));
页面查询与展示
- 在
Pages文件夹下新建Razor页面,命名为StorageList.cshtml,后台页面模型代码(StorageList.cshtml.cs)写查询逻辑,通过构造函数注入数据库上下文,在页面GET请求时查询全表数据:
using Microsoft.AspNetCore.Mvc.RazorPages; using Microsoft.EntityFrameworkCore; public class StorageListModel : PageModel { private readonly AppDbContext _dbContext; public StorageListModel(AppDbContext dbContext) { _dbContext = dbContext; } // 绑定查询结果,供前端页面调用 public IList<StorageEntry> Entries { get; set; } public async Task OnGetAsync() { // 查询目标表所有行数据 Entries = await _dbContext.StorageEntries.ToListAsync(); } }
- 在前端视图
StorageList.cshtml中遍历查询结果,用表格展示即可:
@page @model StorageListModel <h3>存储条目列表</h3> <table class="table table-bordered"> <thead> <tr> <th>条目ID</th> <th>条目名称</th> <th>库存数量</th> <th>最后更新时间</th> </tr> </thead> <tbody> @foreach (var entry in Model.Entries) { <tr> <td>@entry.EntryId</td> <td>@entry.EntryName</td> <td>@entry.StoreCount</td> <td>@entry.UpdateTime.ToString("yyyy-MM-dd HH:mm")</td> </tr> } </tbody> </table>
启动项目后访问/StorageList路径就能看到全表数据的展示效果。
常见排错提示:如果连接失败,先确认服务器对应端口本地能连通、数据库开启了远程访问权限、防火墙放行了对应端口、账号密码有目标表的查询权限。
内容的提问来源于stack exchange,提问作者ssilatel
相关产品推荐
相关产品推荐

