2009-08-03 7 views

Antwort

2

Fügen Sie einfach [SubSonicIgnore] oben LineCost

so

 [SubSonicIgnore] 
     public decimal LineCost 
     { 
      get { return Qty * Convert.ToDecimal(LineCost); } 
     } 

dies geschieht als LineCost auf die Datenbank abgebildet wird.

+0

Es funktioniert !, Aber Podge, ist der richtige Weg, um die oben genannten Anforderungen oder nur eine Arbeit zu tun -um? –

+0

Ich sehe es nicht als eine Arbeit herum, ich denke, es ist die beste Lösung. Der Grund dafür ist, dass Sie einen Ort haben, an dem die Berechnung stattfindet, wenn Sie in SQL/Linq einen Datenabruf mit einer Berechnung kombinieren. Jedes Mal, wenn Sie eine OrderLine abrufen, müssen Sie die Berechnung einbeziehen, vergessen und Sie haben eine nettes kleines Feature. – Podge

1

Warum die Berechnung nicht nur selbst in der Objektdefinition?

So

public class OrderLine 
    { 
     public int OrderId { get; set; } 
     public int Qty { get; set; } 
     public decimal ProductPrice { get; set; } 
     public decimal LineCost 
     { 
      get { return Qty * Convert.ToDecimal(LineCost); } 
     } 
    } 
+1

dank Podge konvertieren müssen, werde ich versuchen diese. Ist das der richtige Weg oder nur eine Arbeit? –

+0

Fehlgeschlagen: SqlException: Ungültiger Spaltenname 'LineCost' @Podge, erinnere mich Ich benutze SimpleRepository und handgefertigte meine Klasse/Objekt –

0

Ich kann nur sehen, wie man von anoynmous Typen verwenden, und dann werden Sie den Typ auf der Bestellposten (es ist nicht sehr schön)

   var x =from o in repo.All<OrderLine>()  
        select new 
        { 
         OrderId = o.OrderId, 
         ProductPrice = o.ProductPrice, 
         Qty = o.Qty, 
         LineCost = o.ProductPrice * o.Qty 
        }; 


      List<OrderLine> orders = null; 
      foreach (var t in x) 
      { 
       orders.Add(new OrderLine 
       { 
        LineCost = t.LineCost, 
        OrderId = t.OrderId, 
        ProductPrice = t.ProductPrice, 
        Qty = t.Qty 
       }); 

      }