如何从数据库 Blazor C# 中获取 Id 数据

Posted

技术标签:

【中文标题】如何从数据库 Blazor C# 中获取 Id 数据【英文标题】:how to Get by Id data from database Blazor C# 【发布时间】:2021-11-09 20:36:30 【问题描述】:

已经开始使用 blazor 服务器端进行 crud 从数据库获取数据

我现在正在创建一个页面,我将在其中查看详细信息并编辑列表中的一项

我得到了我想要显示的项目的 ID,但是我的粗鲁解决方案给了我一个对象列表,而不仅仅是我需要的一个......

我得到了我的 SqlDataAccess,我在其中编写了两个主要功能(加载 -> QueryAsync 和保存 -> ExecuteAsync),其界面如下:

我得到了一个 FiledbData 类,我从这里调用 db,如下所示:

我现在只想向数据库询问 getbyId 之类的一项,而不是获取所有数据...

【问题讨论】:

【参考方案1】:

您可以使用parameterized queries 来执行 where 子句。

因此GetFile 方法应该是这样的:

public Task<FileModel> GetFilebyId(int id)

    string sql = "select * from dbo.file.. where Id = @Id";
    return _db.LoadSingleResult<FileModel, dynamic>(sql, new  Id = id );

您还需要添加一个新方法LoadSingleResult,如下所示(除try 部分之外的其他部分与您的LoadData 方法类似):

public async Task<T> LoadSingleResult<T,U>(string sql, U parameters)

   .
   .
   .
   try
       var data=await connection.QueryAsynch<T>(sql, parameters);
       reurn data.Single();
   
   .
   .
   .

注意:

id 列假定为Id。 id 列假定为integer

你也可以使用QuerySingleOrDefaultAsync。

【讨论】:

谢谢你@Mehrdad Dowlatabadi 的回答,很清楚而且有效!【参考方案2】:

在您的 DB SQL 查询中添加 where 子句并创建 GetFiles() 的重载,该重载采用将插入 SQL 查询的 ID 值:

public Task<List<FileModel>> GetFile(Guid id)

    string sql = $"select * from myTable where Id = 'id:D'";

    return _db.LoadData<FileModel, dynamic>(sql, new   );

【讨论】:

感谢您的回答@Andrew H,没关系,但我不要求列表...您的代码返回给我一个 List 一个项目...我的问题是如何只返回一个 FileModel 而不是 List... 您可以使用 LINQ 使用谓词选择单个项目:myList.Select(item => item.Property == SOME_VALUE);

以上是关于如何从数据库 Blazor C# 中获取 Id 数据的主要内容,如果未能解决你的问题,请参考以下文章

C#:如何在 Blazor Wasm 托管中将动态 Razor 组件从服务器发送到客户端?

如何从 C# 中的数据库中获取最后一个 id

C#如何通过ID从数据表中获取两列值

如何在 c# blazor 网页中更新实时日期时间

For 循环未返回预期值 - C# - Blazor

For 循环未返回预期值 - C# - Blazor