如何通过 ApplicationDbContext.cs 使用 SQL Server 中已有的表

问题描述 投票:0回答:1

我正在使用 Blazor、EF Core、NET 6、SQL Server。

我在 SQL Server LocalDB 中创建了一个数据库和一张表(数据库:

MyCompany
,表:
SalaryTax_2023

SalaryTax_2023
根据每份工资有税金额。

我设置了一个

ApplicationDbContext.cs
Program.cs
appsettings.json
以及所有(ApplicationDbContext 还没有任何
DbSet
)。

我创建了一个方法来获取带有用户输入变量的

salarytax

result = await dbContext
                    .SalaryTax_2023
                    .Where(row => row.min <= salary && salary < row.max)
                    .Select(row => new TaxResult { TaxAmount = row[columnIndex] })
                    .FirstOrDefaultAsync();

但我无法访问

SalaryTax_2023
。我可能尝试在没有
DbSet
的情况下访问数据库。

据我所知,我可以使用它,因为它的表本身已经有模式和数据。我如何访问此案例?

我了解到migration &

update-database
命令用于EF Core和Blazor之间的同步。

我希望我能得到线索或回答如何解决这个问题。

entity-framework-core blazor ef-database-first
1个回答
0
投票

您可以执行原始 SQL 查询来直接与表交互。这允许您执行 SQL 查询并将结果映射到 C# 对象。看看这个:

using var dbContext = new ApplicationDbContext();

var salary = 50000; // The salary you want to query for
var query = $"SELECT * FROM SalaryTax_2023 WHERE min <= {salary} AND max > {salary}";
var result = await 
dbContext.SalaryTax_2023.FromSqlRaw(query).FirstOrDefaultAsync();

或者,您可以创建一个数据库集:

public DbSet<SalaryTax_2023> SalaryTax_2023 { get; set; }

此 DbSet 不需要迁移,因为它代表现有表

var result = await dbContext
.SalaryTax_2023
.Where(row => row.min <= salary && salary < row.max)
.Select(row => new TaxResult { TaxAmount = row[columnIndex] })
.FirstOrDefaultAsync();

希望这有帮助

© www.soinside.com 2019 - 2024. All rights reserved.