繁体   English   中英

我可以将SQLQuery的存储过程联接结果转换为EF ORM形式吗?

[英]Can I convert stored procedure join result by SQLQuery into a form of EF ORM?

我需要将SQL存储过程的结果转换为EF ORM。

该存储过程包含如下查询:

select * 
from TbA
join TbB on TbA.aId = TbB.aId`

它可以工作,但是在ORM模式下,TbB的内容不会出现在返回的对象中。 我必须将此查询用作项目中的存储过程。

C#代码:

var result = dbContext.Database.SqlQuery<TbA>("sp_1");

EF实体类别:

[Table("TbA")]
public partial class TbA
{
    public TbA()
    {
        TbB = new HashSet<TbB>();
    }

    [Key]
    public long aId { get; set; }

    [StringLength(10)]
    public string rNo { get; set; }

    public virtual ICollection<TbB> TbB { get; set; }
}

public partial class TbB
{
    [Key]
    public long rowId { get; set; }

    public long aId { get; set; }

    [StringLength(10)]
    public string kKey { get; set; }

    public virtual TbA TbA { get; set; }
}

我认为您可以选择这两个选项中的任何一个

首先 ,由于您正在使用联接,因此创建一个同时包含TbA和TbB属性的类。 该类将包含要返回的属性。

第二次使用LINQ查询示例。

var queryResult = from tba in dbContext.TbA
    join tbb in database.TbB on tba.aId equals tbb.aId
    select new {
        //construct your class here as dynamic objects
        TbA.attr1 = tba.attr1,
        Tbb.attr1 = tbb.attr1
        // and so on
    }

queryResult将假定在select语句中选择的任何类。

另外,如果要使用通过选项1创建的类,查询的select部分将更改为

select new TbAandTbB{
    attr1 = tba.attr1,
    attr2 = tbb.attr1
    // and so on
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM