Quicki
Quicki

Reputation: 401

Data from database by Entity Framework to list - WCF

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

Answers (1)

Hakunamatata
Hakunamatata

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

Related Questions