You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Blazor C#服务端如何实现从数据库根据Id查询单条数据

GetById单条数据查询实现方案

核心实现逻辑

你现有封装的QueryAsync方法本身已经支持带参数查询,只需要传入Id作为查询条件,再从返回的列表中取第一条匹配数据即可,不需要修改核心的SqlDataAccess基础封装,直接在FiledbData层扩展业务方法即可。

具体实现步骤

1. FiledbData层新增GetById方法

示例代码如下(请替换示例中的实体类名、表名、主键名为你实际业务对应的名称):

// 假设你要查询的实体类为YourModel,表名为YourTable,主键字段为Id
public async Task<YourModel?> GetById(int id)
{
    // 写带参数的单条查询SQL
    string sql = "SELECT * FROM YourTable WHERE Id = @Id";
    // 调用现有QueryAsync方法传入查询参数
    var queryResult = await _sqlDataAccess.QueryAsync<YourModel, dynamic>(sql, new { Id = id });
    // 返回第一条匹配结果,无匹配数据时返回null
    return queryResult.FirstOrDefault();
}

2. 可选优化:SqlDataAccess层封装通用单查方法

如果多处需要用到单条查询,可以在ISqlDataAccess接口和SqlDataAccess实现类中补充通用的单查方法,避免每次都手动调用FirstOrDefault:

第一步:ISqlDataAccess接口新增方法定义

public interface ISqlDataAccess
{
    // 原有两个核心方法保留
    Task<IEnumerable<T>> QueryAsync<T, U>(string sql, U parameters);
    Task<int> ExecuteAsync<U>(string sql, U parameters);
    // 新增通用单查方法
    Task<T?> QuerySingleOrDefaultAsync<T, U>(string sql, U parameters);
}

第二步:SqlDataAccess类实现新增方法

public async Task<T?> QuerySingleOrDefaultAsync<T, U>(string sql, U parameters)
{
    var result = await QueryAsync<T, U>(sql, parameters);
    return result.FirstOrDefault();
    // 如果业务上保证查询条件唯一,也可以用SingleOrDefault,遇到重复数据会抛异常便于排查
    // return result.SingleOrDefault();
}

第三步:FiledbData层调用简化

public async Task<YourModel?> GetById(int id)
{
    string sql = "SELECT * FROM YourTable WHERE Id = @Id";
    return await _sqlDataAccess.QuerySingleOrDefaultAsync<YourModel, dynamic>(sql, new { Id = id });
}

Blazor页面调用示例

在详情/编辑页面直接注入FiledbData,拿到路由传递的Id后调用即可:

// 页面路由参数接收
[Parameter]
public int ItemId { get; set; }
private YourModel? CurrentItem { get; set; }

protected override async Task OnInitializedAsync()
{
    if (ItemId > 0)
    {
        CurrentItem = await _filedbData.GetById(ItemId);
    }
}

内容的提问来源于stack exchange,提问作者Khalid Ab

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 15:36:03