[英]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.