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