如何在 .NET Core 5 中将 EntityFramework 原始查询与 PostgreSQL 结合使用?

问题描述 投票:0回答:1
c# postgresql entity-framework .net-core
1个回答
0
投票

根据您的查询,您正在尝试从“加载”表进行查询。

var sqlQuery = $"SELECT * FROM Load WHERE LoadID = {0}";

但是错误提到:

Postgres DB 不包含“tbload”表

这可能是在您的 DbContext 中,您将

LoadEntity
链接到
tbload
表。

确保相应的实体指向数据库中正确的表(名称)。

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<LoadEntity>(entity =>
    {
        entity.ToTable("load");

        ...
    });

    ...
}

此外,您使用

FromSqlRaw
的方式是不正确且不安全的。目前,您正在查询一个号码,这很好。想象一下,你有另一个查询需要使用 string/varchar/nvarchar 值进行查询,这可能会导致 SQL 注入攻击,例如查询用户数据、删除或删除表/数据库,你会很头疼。

传递参数

但是,如果使用不当,FromSqlRaw 方法可能容易受到 SQL 注入攻击。请参阅下文了解更多详情。

建议使用参数化查询。

var idParameter = new SqlParameter("id", id);

var sqlQuery = "SELECT * FROM Load WHERE LoadID = @id";
var entity = await _dbContext.LoadEntities
    .FromSqlRaw(sqlQuery, idParameter)
    .ToListAsync();
© www.soinside.com 2019 - 2024. All rights reserved.