Reputation: 401
I'd like to fetch data from a database by using Entity Framework into a list, and send it to client (WCF). I want to add all rows from the database to response.Offers
.
This part of my code look like that:
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
is a database imported from SQL Server. Maybe should I use result? But how can I return that?
TAResponse:
[DataContract]
public class TAResponse
{
[DataMember]
public List<OfferDto> Offers { get; set; }
[DataMember]
public OfferDto ThisOffer { get; set; }
}
and simplified TARequest:
[DataContract]
public class TARequest
{
[DataMember]
public int OfferID { get; set; }
[DataMember]
public string KindOfAccommodation { get; set; }
[DataMember]
public string Country { get; set; }
}
Upvotes: 0
Views: 407
Reputation: 1275
You can iterate through your db list and add to DTO list. Effective if you don't have many properties on your Offer object.
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
});
}
Alternatively you can use AutoMapper to map EF object to your DTO object. https://github.com/AutoMapper/AutoMapper
Upvotes: 1