Loop a System.Data.Objects.DataClasses.EntityCollection

I am developing WCF Web Services and I am using ADO.Net Entities to access the database.

I am using this method to convert some database objects to Contract objects:

public static List<BlockContract> FormBlocks(int formId)
{
    List<BlockContract> blocksList = null;

    using (var vAdmEntities = new ADMDatabase.ADMEntities())
    {
        var blockEntities = from f in vAdmEntities.Form
                        where f.formId == formId
                        select f.Block;
        if (blockEntities != null)
        {
            blocksList = new List<BlockContract>(blockEntities.Count());
            foreach (ADMDatabase.Block b in blockEntities)
            {
                BlockContract blockContract = new BlockContract
                {
                    blockId = b.blockId,
                    name = b.name,
                    orderInForm = b.orderInForm
                };
                blocksList.Add(blockContract);
            }
        }
    }

    return blocksList;
}

      

Here foreach (ADMDatabase.Block b in blockEntities)

, I am getting an error:

Cannot convert type 'System.Data.Objects.DataClasses.EntityCollection<ADMDatabase.Block>' to 'ADMDatabase.Block'

      

How can I resolve this error?

+3


source to share


1 answer


You need to change your cycle;

foreach (var blockItems in blockEntities){
     foreach (ADMDatabase.Block b in blockItems)
            {
                BlockContract blockContract = new BlockContract
                {
                    blockId = b.blockId,
                    name = b.name,
                    orderInForm = b.orderInForm
                };
                blocksList.Add(blockContract);
            }
}

      

you choose locks with the following:



var blockEntities = from f in vAdmEntities.Form
                        where f.formId == formId
                        select f.Block;

      

Here if you are debugging blockEntities you will be something like a list of lists, since Form.Block is a list of block elements.

+2


source







All Articles