我想在Entity框架中使用Database.SqlQuery来运行自定义JOIN操作。我不想使用LINQ来执行JOIN,因为它在后端生成高性能SQL的工作非常糟糕,我只想控制它的作用。
所以我的问题是 - 我怎样才能得到一组对象(它从表A到表B是一个JOIN,我想要一个A类型的对象和一个B类型的对象)从Database.SqlQuery上的INNER JOIN操作?
答案 0 :(得分:3)
As far as I know SqlQuery
方法使用属性名称将列映射到属性。
因此,您只需使用查询属性声明该类,然后将其拆分为A
和B
对。
示例:
public class AB
{
public int Id { get; set; }
public string Name { get; set; }
public string Title { get; set; }
}
var abs = dbContext.Database.SqlQuery<AB>(@"SELECT A.Id, A.Name, B.Title
FROM A JOIN B ON A.Id = B.Id");
var a_and_bs = from ab in abs
select new
{
A = new A { ab.Id, ab.Name },
B = new B { ab.Title }
};