将 EF raw SQL 查询映射到特定属性?
Map EF raw SQL query to specific properties?
我有一个相当复杂的 SQL 查询,建议将其 运行 转换为原始 SQL 而不是转换为 LINQ。查看示例,我必须给它一个对象来制作列表。因此,我创建了一个 class,它可以更好地表示 属性 名称,而不是 table 列名称。但是,我似乎无法使用这些属性并且必须创建 属性 与数据库的列名相匹配的名称。
我有一个 class 我称为 Region 的区域具有以下属性
public string RegionName { get; set; }
public string DepartingStation{ get; set; }
但是,数据库列名称是
REG_NAME
DEP_STATION
如果我有 属性 名称与数据库列相同,它会 returns 结果。但是,我更愿意为我们提供更好的 属性 名称。有没有办法可以将 class 属性 名称映射到特定的数据库字段?
using (ApiDbContext db = new ApiDbContext())
{
var results = db.Database.SqlQuery<Region>(sbQuery.ToString()).ToList();
}
在这种情况下,我建议从原始 sql 输出列别名以匹配 class 属性名称。所以如果你有:
public class Region {
public string RegionName { get; set; }
public string DepartingStation{ get; set; }
}
然后你这样写 sql:
var subquery = @"
select
REG_NAME as RegionName,
DEP_STATION as DepartingStation
from Table1"
有了它,您可以安全地调用:
var results = db.Database.SqlQuery<Region>(subquery).ToList();
其中 results 将是区域项目的本地通用列表,List<Region>.
您可以循环并使用它做您需要做的事情。
我有一个相当复杂的 SQL 查询,建议将其 运行 转换为原始 SQL 而不是转换为 LINQ。查看示例,我必须给它一个对象来制作列表。因此,我创建了一个 class,它可以更好地表示 属性 名称,而不是 table 列名称。但是,我似乎无法使用这些属性并且必须创建 属性 与数据库的列名相匹配的名称。
我有一个 class 我称为 Region 的区域具有以下属性
public string RegionName { get; set; }
public string DepartingStation{ get; set; }
但是,数据库列名称是
REG_NAME
DEP_STATION
如果我有 属性 名称与数据库列相同,它会 returns 结果。但是,我更愿意为我们提供更好的 属性 名称。有没有办法可以将 class 属性 名称映射到特定的数据库字段?
using (ApiDbContext db = new ApiDbContext())
{
var results = db.Database.SqlQuery<Region>(sbQuery.ToString()).ToList();
}
在这种情况下,我建议从原始 sql 输出列别名以匹配 class 属性名称。所以如果你有:
public class Region {
public string RegionName { get; set; }
public string DepartingStation{ get; set; }
}
然后你这样写 sql:
var subquery = @"
select
REG_NAME as RegionName,
DEP_STATION as DepartingStation
from Table1"
有了它,您可以安全地调用:
var results = db.Database.SqlQuery<Region>(subquery).ToList();
其中 results 将是区域项目的本地通用列表,List<Region>.
您可以循环并使用它做您需要做的事情。