C# 获取实体框架中多对一对象的原始SQL脚本

C# 获取实体框架中多对一对象的原始SQL脚本,c#,sql,sql-server,entity-framework,entity-framework-core,C#,Sql,Sql Server,Entity Framework,Entity Framework Core,我正在使用Entity Framework Core与C#和SQL Server来运行一些用户提供的原始SQL查询,我需要找到一个SQL脚本,该脚本将返回具有多对一关系的对象列表 例如: 型号: class Invoice { public long Id { get; set; } public ICollection<Item> Items { get; set; } = new List<Item>(); } class Item {

我正在使用Entity Framework Core与C#和SQL Server来运行一些用户提供的原始SQL查询,我需要找到一个SQL脚本,该脚本将返回具有多对一关系的对象列表

例如:

型号:

class Invoice 
{
    public long Id { get; set; }
    public ICollection<Item> Items { get; set; } = new List<Item>();
}

class Item 
{
    public long Id { get; set; }
    public long InvoiceId { get; set; }
    public Invoice Invoice { get; set; }
}

public class IcContext : DbContext
{
    public IcContext(DbContextOptions options) : base(options) { }
    public DbSet<Invoice> Invoices { get; set;    
    public DbSet<Item> Items { get; set; }
}
什么是有效的
RawSql
字符串

我试过:

SELECT invoices.*, items.* 
FROM invoices 
LEFT JOIN items ON (invoices.id = items.invoiceId)

没用。

为什么不直接使用Include()和LINQ查询的即时加载?@DavidBrowne-Microsoft我从应用程序的用户那里得到一个原始SQL字符串。我想知道用于测试目的的SQL脚本的格式,这似乎很奇怪。但无论如何,FromSql()都不能加载相关实体。每个查询都返回一个实体类型。为什么不使用Include()和LINQ查询的即时加载?@DavidBrowne-Microsoft我从应用程序的用户那里得到一个原始SQL字符串。我想知道用于测试目的的SQL脚本的格式,这似乎很奇怪。但无论如何,FromSql()都不能加载相关实体。每个查询返回一个实体类型。
SELECT invoices.*, items.* 
FROM invoices 
LEFT JOIN items ON (invoices.id = items.invoiceId)