Database.SqlQuery - >实体框架对象

时间:2016-09-05 08:24:49

标签: c# sql-server entity-framework

我想在Entity框架中使用Database.SqlQuery来运行自定义JOIN操作。我不想使用LINQ来执行JOIN,因为它在后端生成高性能SQL的工作非常糟糕,我只想控制它的作用。

所以我的问题是 - 我怎样才能得到一组对象(它从表A到表B是一个JOIN,我想要一个A类型的对象和一个B类型的对象)从Database.SqlQuery上的INNER JOIN操作?

1 个答案:

答案 0 :(得分:3)

As far as I know SqlQuery方法使用属性名称将列映射到属性。

因此,您只需使用查询属性声明该类,然后将其拆分为AB对。

示例:

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 }
               };