通常,如果我们想通过实体框架工作执行sql语句,我们将执行以下操作。
DbSqlQuery<Customer> data = db.Customers.SqlQuery(
"select * from customers where country=@p0", "USA");
foreach(var cust in data)
{
//do something with cust
}
但是对于数据模型中的表来说没问题我的问题是如何对数据模型中尚未存在的表进行原始查询。原因是该软件具有所谓的历史表,该表是在表的末尾创建的月份和年份,因此我无法在运行时创建这些表,或者这将是更好的解决方案。
答案 0 :(得分:0)
您可以访问基础连接并查询这些历史表。
var history = db.Database.SqlQuery<string>( "SELECT Name FROM dbo.historical_table").ToList();
编辑 - 如果您希望重新调整多个字段,则必须将结果捕获到具有匹配属性名称的类中,并且(至少)无参数构造函数
using System;
using System.Collections.Generic;
using System.Data.Entity.Infrastructure;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication10
{
class Program
{
static void Main(string[] args)
{
using (var db = new ConsoleApplication10.DBContext())
{
var list= db.Database.SqlQuery<DbResult>("SELECT display_name, country_code FROM dbo.mytable").ToList();
}
}
}
class DbResult
{
public string display_name { get; set; }
public string country_code { get; set; }
}
}