모델

2013-05-22 3 views
1

considere있는 LINQ 코드의이 조각 (VAR list2에 집중하시기 바랍니다)에 속하지 않는 필드 가져 :모델

var list1 = ....... /* This linq doesnt matter. Just for clarify that it is used in the below linq */ 

var list2 = dba.OrderForm 
    .Where(q => q.OrderPriority.OrderPriorityID == orderpriorityID 
     && q.StockClass.StockClassID == stockclassID 
     && dba.AuditTrailLog.Where(log => q.OrderID == log.ObjectID) 
     .Any(log => log.ColumnInfoID == 486 
      && log.OldValue == "2" 
      && log.NewValue == "3") 
      && dba.AuditTrailLog.Where(log2 => q.OrderID == log2.ObjectID) 
      .Any(log2 => log2.ColumnInfoID == 487 
       && log2.OldValue == "1" 
       && log2.NewValue == "2") 
       && lista.Contains(q.OrderID)); 

OrderForm 모델을 속한 I 레코드의리스트 2 목록에있는이 방법을 . 나는 ViewResult라는 또 다른 모델에 전달해야합니다

는 내가 필요로하는 AuditTrailLog 테이블에 속하는 변수 log2.ModificationDate을 얻을 것입니다하지만 OrderForm 모델

List<ViewResult> vr = new List<ViewResult>(); 

foreach (OrderForm o in list2) 
{ 
    ViewResult r = new ViewResult(); 
    r.NumOrden = o.FormNo; 
    r.Title = o.Title; 
    r.Com = o.OrderPriority.Descr; 
    r.OClass = o.StockClass.Descr; 
    r.RodT = /* <<------ Here is where I need to assign log2.ModificationDate 

    vr.Add(r);    
} 

감사에 포함되지 않습니다.

답변

3

데이터를 가져 오는 동안 AuditTrailLog 관계가 null입니다. 그리고 관련 데이터로 채우고 싶습니다.

당신이해야 Include 같은이 테이블 :

(즉, 당신은 SQL에 join을하는 것을 의미)

var list2 = dba.OrderForm.Include("AuditTrailLog")... 

그것은 그들 사이의 관계가 중요하다. "일대 다"또는 "다 대일". 귀하의 관계에 따라 AuditTrailLog 또는 AuditTrailLogs을 사용하십시오.

+0

@JustWork에 대한 답변 주셔서 감사합니다. 미안하지만 내가 제대로 설명하지 않았다면. 'OrderForm-AuditTrailLog'의 관계가 null이 아닙니다. 필요한 것은'AuditTraiLog' 테이블에 기록 된'OrderForm' 테이블의 모든 레코드 (LINQ에서'log2.ModificationDate')가 수정되었을 때'r.RodT'에서 검색하는 것입니다. – equisde

+0

'OrderForm/AuditTrailLog' 테이블 간의 관계는 1 : N입니다. 당신이 제안한 것처럼'var list2 = dba.OrderForm.Include ("AuditTrailLog")'를 사용했지만'r.RodT = o.AuditTrailLog.ModificationDate'도 수행 할 수 없습니다'r.RodT = log2.ModificationDate' – equisde

+0

ModificationDate가 있다면 값을 AuditTrailLog 테이블에 저장하면 데이터를 가져 오는 동안 null이되지 않으므로 ModificationDate를 수행 할 수 없습니다. 너는 뭔가 잘못 됐어. 아니면 완전히 잘못된 생각입니다. 디버깅 해 봤어? AuditTrailLog가 null이 아닌 것은 확실합니까? – JustWork