2016-10-21 5 views
0

Я хочу заполнить объект Master Detail данными из запроса SQL Server.Заполнение объекта из SQL Query

Однако я, похоже, не правильно детализирую часть запроса.

Возможно ли это?

У меня есть следующие классы

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; } 

}

, и я хочу, чтобы заполнить экземпляр OrderCountReportHeader с выхода в SQL Query

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 

ответ

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; 
Смежные вопросы