C# Entity Framework Core write raw SQL without model

C# Entity Framework Core write raw SQL without model

首先,我看到了这个 post: 但我觉得它没有回答我的问题。

我有一个 ASP.NET 核心 MVC 项目,其中 Entity Framework 核心(目前最新)。

我需要做的是:

public IActionResult MyView(string NameOfTable)
{
    // send model that is same as NameOfTable 
    // or
    // send something like List<string> that has properties and names of columns  
    return View();
}

我想做的是调用一个函数并在数据库中发送 table 的名称。它将在数据库中找到 table 和 return table 的属性(列名,列类型 [int/varchar..])。

我认为可行的方法:将原始 SQL 写入数据库。

我认为这是一个很好的答案:关于如何在不知道模型的情况下编写原始 SQL 来查询数据库的一些片段。或者解决这个问题的方法。

谢谢你所做的一切。对不起,如果这是一个愚蠢的问题。

抱歉打扰大家了。我找到了解决方案。这是:

    public class AA
    {
        public string One { get; set; }
        public string Two { get; set; }
    }
private async Task pokus()
        {
           List<AA> groups = new List<AA>();
            var conn = _db.Database.GetDbConnection();
            try
            {
                await conn.OpenAsync();
                using (var command = conn.CreateCommand())
                {
                    string query = "SELECT * "
                        + "FROM TABLE";
                    command.CommandText = query;
                    DbDataReader reader = await command.ExecuteReaderAsync();

                    if (reader.HasRows)
                    {
                        while (await reader.ReadAsync())
                        {
                            try
                            {
                                var row = new AA { One = reader.GetString(1), Two = reader.GetString(2) };
                                groups.Add(row);
                            }
                            catch { }
                        }
                    }
                    else
                    {
                        Console.WriteLine("Dont have rows");
                    }
                    reader.Dispose();
                }
            }
            finally
            {
                conn.Close();
            }
            foreach(AA s in groups)
            {
                Console.WriteLine(s.One);
                Console.WriteLine(s.Two);
            }
}

希望对大家有所帮助。