2016-05-29 85 views
0

我想通過使用Entity Framework將數據從數據庫中提取到列表中,並將其發送給客戶端(WCF)。我想從數據庫中添加所有行到response.Offers來自數據庫的數據由實體框架列出 - WCF

我的這部分代碼看起來像:

private TestEntities bp = new TestEntities(); 

    public TAResponse GetInformation(TARequest request) 
    { 
     List<OfferDB> result = bp.OfferDB.ToList(); 
     TAResponse response = new TAResponse(); 
     response.Offers = new List<DataTransferObjects.OfferDto>();    

     response.Offers.Add(new DataTransferObjects.OfferDto() 
     { 
      //??? 
     }); 

     return response; //?result but how? 
    } 

OfferDB是從SQL Server導入數據庫。也許我應該使用結果?但我怎麼能回報呢?

TAResponse

[DataContract] 
public class TAResponse 
{ 
    [DataMember] 
    public List<OfferDto> Offers { get; set; } 

    [DataMember] 
    public OfferDto ThisOffer { get; set; } 
} 

和簡化TARequest

[DataContract] 
public class TARequest 
{ 
    [DataMember] 
    public int OfferID { get; set; } 

    [DataMember] 
    public string KindOfAccommodation { get; set; } 

    [DataMember] 
    public string Country { get; set; } 
} 

回答

1

您可以通過數據庫列表進行迭代,並添加到列表DTO。如果您的Offer對象中沒有多個屬性,則有效。

List<OfferDB> result = bp.OfferDB.ToList(); 
     TAResponse response = new TAResponse(); 
     response.Offers = new List<DataTransferObjects.OfferDto>();    
     foreach(OfferDB objCurrentOffer in result) 
{ 
     response.Offers.Add(new DataTransferObjects.OfferDto() 
     { 
      Prop1 = objCurrentOffer.Prop1, 
      Prop2 = objCurrentOffer.Prop2 
     }); 
} 

或者,您可以使用AutoMapper將EF對象映射到您的DTO對象。 https://github.com/AutoMapper/AutoMapper

+0

'名單結果= bp.OfferDB.ToList();'是正確的,我得到的錯誤,我有內部錯誤 – Quicki

+0

@Quicki什麼錯誤你好嗎?設置一個斷點並查看它產生的異常情況? – Hakunamatata