简体   繁体   English

当尝试获取传递给函数的表上的列时,出现错误

[英]when try to get columns exist on table passed to function I get error

Problem 问题

when try to get columns exist on table passed to function I get error 当尝试获取传递给函数的表上的列时,出现错误

Database Facade doesn't contain definition for SqlQuery and no accessible extension method SqlQuery 数据库外观不包含SqlQuery的定义,也没有可访问的扩展方法SqlQuery

I work on asp.net core 2.1 web api code first 我首先在asp.net core 2.1 Web api代码上工作

i try to design function give here table name and it will return columns exist on this 我尝试设计函数给这里表名,它将返回存在于此的列

table but i get compile error 表,但我得到编译错误

Database Facade doesn't contain definition for SqlQuery and no accessible extension method SqlQuery 数据库外观不包含SqlQuery的定义,也没有可访问的扩展方法SqlQuery

so How to solve that Error 那么如何解决该错误

public class TabDbContext : DbContext
    {
        public TabDbContext(DbContextOptions<TabDbContext> options)
: base(options)
        { }

        public DbSet<Employee> Employees { get; set; }
        public DbSet<Employee> Departments { get; set; }

ON controller API I do as following : 我在控制器API上执行以下操作:

public class EmployeesController : ControllerBase
    {
        private readonly TabDbContext _context;

        public EmployeesController(TabDbContext context)
        {
            _context = context;
        }
 public List<string> GetColumnNames(string tablename)
        {

                var sql = "select COLUMN_NAME from information_schema.COLUMNS where table_name = @TableName";
                SqlParameter sqlParameter = new SqlParameter("TableName", tablename);
                var query = _context.Database.SqlQuery<string>(sql, sqlParameter).ToList();
                return query;

        }

Expected Result 预期结果

Employees Table have two columns EmployeeId,EmployeeName 员工表有两列EmployeeId,EmployeeName

calling function as GetColumnNames(Employees) 调用函数作为GetColumnNames(Employees)

will return 将返回

EmployeeId 员工ID

EmployeeName 员工姓名

You can use the FromSql extension method to begin a LINQ query based on a raw SQL query in EF Core 2.1 : 您可以使用FromSql扩展方法来基于EF Core 2.1中的原始SQL查询开始LINQ查询:

https://docs.microsoft.com/en-us/ef/core/querying/raw-sql https://docs.microsoft.com/en-us/ef/core/querying/raw-sql

Then your code would modify like : 然后您的代码将修改为:

var sqlParameter = new SqlParameter("TableName", tablename);
var employees= _context.Employees
               .FromSql("select COLUMN_NAME from information_schema.COLUMNS where table_name = @TableName", sqlParameter )
               .ToList();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 传入错误的枚举值时,如何在 ASP.NET Core 中获取自定义 ModelState 错误消息? - How to get a custom ModelState error message in ASP.NET Core when a wrong enum value is passed in? 当我发送超过过期日期的令牌时,为什么会收到 401 错误? - Why do I get a 401 error when I send a token beyond its expiration date? 当我试图添加一个新人时,我得到一个错误 [Object object] - I get an error [Object object] when Î'm trying to add a new person 当我想在 ASP.NET 核心 Web API 中的构造函数中使用 select 时出现错误 - I get an error when I want to select in constructor in ASP.NET Core Web API 当在请求中包含承载时,我得到CORS错误,IdentityServer4,Api,angular - When including Bearer in request I get CORS error, IdentityServer4, Api, angular .Net 6 WEB API:得到一个 null object - .Net 6 WEB API : Getting a null object when I try to display it 我只能从 ASP.NET 核心 Web API 中获取一些列而不是所有列吗? - Can I only get some columns not all column from ASP.NET Core Web API? 当我尝试在.NET Core中添加新的ApiController时出现NullReferenceException - NullReferenceException when I try to add a new ApiController in .NET Core 发送BadRequest(ModelState)时,邮递员中的“无法获得任何响应”,而不是XML格式的ModelState错误 - “Could not get any response” in Postman instead of the ModelState error in XML format when sending BadRequest(ModelState) 当我尝试访问 HttpPost Web Api 方法时,我不断收到错误请求 - I keep getting Bad Request when i try to access HttpPost Web Api method
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM