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 to share