2017-05-03 3 views
3

は、方法の2つの例は、最初のデータモデルforeachを使用してデータモデルにデータを格納するのとは対照的に、ストアドプロシージャを返されたオブジェクトとして使用すると、ここ

public List<TheOrderSummary> GetTheOrderSummaryByID(int id) 
    { 
     ExoEntities = new ExoEntities(); 
     List<TheOrderSummary> lst = new List<TheOrderSummary>(); 

     foreach(var a in query) 
     { 
      lst.Add(new TheOrderSummary 
      { 

       OrderDetailID = a.OrderDetailID, 
       OrderHeaderID = a.OrderHeaderID, 
       ItemSeq = a.ItemSeq, 
       MaterialID = a.MaterialID, 
       Description = a.Description, 
       DWidth = a.DWidth, 
       DLength = a.DLength, 
       MaterialArea = a.MaterialArea.ToString(), 
       MaterialDetail = a.MaterialDetail, 
       DHeight = a.DHeight, 
       PurchUnitOfMeasure = a.PurchUnitOfMeasure, 
       SellUnitOfMeasure = a.SellUnitOfMeasure, 
       MaterialCategory = a.MaterialCategory, 
       MaterialType = a.MaterialType, 
       MaterialSubType = a.MaterialSubType, 
       ColorID = (int)a.ColorID, 
       Color = a.Color, 
       MaterialPrice = a.MaterialPrice, 
       MaterialCost = a.MaterialCost, 
       MaterialLocationID = (int)a.MaterialLocationID, 
       MaterialLocation = a.MaterialLocation, 
       LaborPrice = a.LaborPrice, 
       LaborCost = a.LaborCost, 
       VendorID = (int)a.VendorID, 
       VendorName = a.VendorName, 
       Size = a.Size, 
       Height = (decimal)a.Height, 
       Length = (decimal)a.Length, 
       Width = (decimal)a.Width, 
       PurchaseQuantity = (decimal)a.PurchaseQuantity, 
       SellQuantity = (decimal)a.SellQuantity, 
       TotalFootage = (decimal)a.TotalFootage, 
       GeneratedItemInd = (int)a.GeneratedItemInd, 
       ExtendedMaterialPrice = (decimal)a.ExtendedMaterialPrice, 
       ExtendedLaborCost = (decimal)a.ExtendedLaborCost, 
       ExtendedMaterialCost = (decimal)a.ExtendedMaterialCost 
      }); 
     } 

     return lst; 
    } 

を移入するforeach文を使用し、この1つはオブジェクト

public List<usp_GetTheOrderDetails_Result> GetTheOrderSummaryByID(int id) 
    { 
     ExoEntities = new ExoEntities(); 

     var query = ExoEntities.usp_GetTheOrderDetails(id); 

     return query.ToList(); 
    } 

これらの両方ともを返すために、ストアドプロシージャを使用して、ありますDALでこれらのいずれかを呼び出すメソッドはJSONResultであり、これらの両方を使用してグリッドにデータを取り込むことができます。 2つ目のタイプを使用すると、最初のものとは対照的にどのような影響がありますか?彼らは両方とも、パフォーマンスレベルでの見た目から正確な同じものを返します。数字を使わずに、第2のものは速くなります。

答えて

0

結果を直接返すことによって導入される痛みは、消費者と基礎となるデータプロバイダとの間の情報契約に依存している。基礎となるデータ構造を変更する場合は、クライアントを同時に更新する必要があります(これにはさまざまな苦痛が伴います)。

代わりに最初のオプションを使用する場合は、基礎となる情報構造の知識をこのレイヤーにカプセル化し、これを使用して古い契約と新しい契約の間のマッピングを行い、クライアントとデータ間の直接の依存関係を切り離しますプロバイダ。

だから、2番目の選択肢は、実際には限界があるにも関わらず、より速くてもよいかもしれませんが、最初のコードは、コードや配備を長期間に渡って維持するという点で、

+0

優れた説明ですので、時にはコードが常に最善のものではない場合があります – Chris

関連する問題