从SQL查询填充对象

时间:2016-10-21 01:28:04

标签: sql-server-2008 entity-framework-6

我想用SQL Server查询中的数据填充我的Master Detail对象。

但是我似乎没有正确地形成查询的详细信息部分。

甚至可能吗?

我有以下课程

public class OrderCountReportHeader : IMyReport 
{

    [Key]
    public int Id { get; set; }
    public DateTime RunAt { get; set; }
    public string Name { get; set; }
    public virtual List<OrderCountReportDetail> Details { get; set; }

}

public class OrderCountReportDetail {
    public virtual OrderBankReportHeader Header { get; set; }
    public string ProductCode { get; set; }
    public int  Quantity { get; set; }

}

我想从SQL查询的输出中填充OrderCountReportHeader的实例

private static string ReportSql() {

        return @" 
                SET NOCOUNT ON;
                select 1 as Id, getdate() as RunAt, 'test' as Name;
                select 'RC' as ProductCode , 5 as Quantity; "
            ;
    }

var result = context.Database.SqlQuery<OrderCountReportHeader>(sql).ToArray()[0];

    Assert.AreEqual(@"test", s.Name);   // true
    Assert.AreEqual("RC", s.Details[0].ProductCode); // fails because Details is null

1 个答案:

答案 0 :(得分:0)

我使用两个单独的SqlQuery调用结束了 虽然我很高兴知道更好的方法。

    var header = connect.Database.SqlQuery<OrderCountReportHeader>(ReportSqlHeader()).ToArray()[0];

            var details = connect.Database.SqlQuery<OrderCountReportDetail>(ReportSqlDetails()).ToList();
            foreach (var det in details)
            {
                det.Header = header;
            }
            header.Details = details;