The following is a WCF service that uses an EF4 entity set (_catalog) and another WCF service (CatalogFilesServiceClient).
private CatalogEntities _catalog = new CatalogEntities();
public IEnumerable<CategoryDC> GetCategories()
{
var catalogFiles = CatalogFilesServiceClient.Create();
var missingFiles = catalogFiles.GetCategoriesMissingFiles();
catalogFiles.Close();
var categoryIDs = missingFiles.Select(i => i.EntityID ?? 0).Distinct();
return from category in _catalog.Categories
orderby category.Order
select new CategoryDC
{
ID = category.ID,
Alpha = category.Alpha,
Name = category.Name,
IsActive = (category.Status == "active"),
Description = category.Description,
Order = category.Order,
IsMissingFiles = (categoryIDs.Contains(category.ID)),
};
}
public CategoryDC GetCategory(int a_nCategoryID)
{
var catalogFiles = CatalogFilesServiceClient.Create();
var missingFiles = catalogFiles.GetCategoriesMissingFiles();
catalogFiles.Close();
var categoryIDs = missingFiles.Select(i => i.EntityID ?? 0).Distinct();
var category = _catalog.Categories.SingleOrDefault(i => i.ID == a_nCategoryID);
return new CategoryDC
{
ID = category.ID,
Alpha = category.Alpha,
Name = category.Name,
IsActive = (category.Status == "active"),
Description = category.Description,
Order = category.Order,
IsMissingFiles = (categoryIDs.Contains(category.ID)),
};
}
How do I not repeat the creation of CategoryDC in a way that won’t make EF angry?
Maybe like so: