簡體   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