При использовании подзапроса внутри внутреннего запроса переменная, объявленная во внешнем запросе, становится недоступной для внутренних запросов внутри него.как устранить эту ошибку?
В моем проекте есть подзапросы, используемые внутри вложенного запроса. При использовании подзапроса внутри внутреннего запроса переменная, объявленная во внешнем запросе, становится недоступной для внутренних запросов внутри него.
Обнаружена ошибка при отладке вложенных запросов:
1. неизвестный столбец "Join3.appcategoryid" в "списке полей"
2. Extent1 неизвестный столбец '.taxonomyid' в 'предложении where'
public static dynamic GetTaxonomies(int businessUnitId, int memberId, string businessUnitType) { using (var db = new ProtocolManagementDatabaseEntities()) { var taxonomies = (from taxonomy in db.taxonomies join businessUnitTaxonomy in db.businessunittaxonomies on taxonomy.taxonomyid equals businessUnitTaxonomy.taxonomyid let TaxonomyID = taxonomy.taxonomyid where businessUnitTaxonomy.businessunitid == businessUnitId select new { TaxonomyId = taxonomy.taxonomyid, TaxonomyName = taxonomy.taxonomyname, preferenceValue = db.userpreferences.Where(x => x.entitycolumnvalue == TaxonomyID && x.memberid == memberId && x.entitytablename == "Taxonomy" && x.sequencenumber == 5) .Select(x => x.isvisible).FirstOrDefault() AppCategory = (from appCategory in db.appcategories join appCategoryTaxonomy in db.appcategorytaxonomies on appCategory.appcategoryid equals appCategoryTaxonomy.appcategoryid let AppCategoryID = appCategory.appcategoryid where appCategory.parentappcategoryid == null && appCategory.appcategorylevel.Equals("AppCategoryName") && appCategoryTaxonomy.taxonomyid == TaxonomyID && appCategoryTaxonomy.businessunitid == businessUnitId orderby appCategory.name ascending select new { AppCategoryId = appCategory.appcategoryid, AppCategoryName = appCategory.name, AppCategoryDeletionEnable = db.appcategories.Where(x => x.parentappcategoryid == AppCategoryID).FirstOrDefault() != null ? true : false SubCategory = from subCategory in db.appcategories let SubCategoryID = db.appcategories.Where(x => x.appcategoryid == subCategory.appcategoryid).Select(x => x.appcategoryid).FirstOrDefault() where subCategory.parentappcategoryid == AppCategoryID && subCategory.businessunitid == businessUnitId orderby subCategory.name ascending select new { AppCategoryId = subCategory.appcategoryid, AppCategoryName = subCategory.name, Description = subCategory.description, IsGlobal = subCategory.isglobal, IsEnable = subCategory.isenable, ParentAppCategoryID = appCategory.parentappcategoryid, SubCategoryDeleteEnable = db.protocolappcategories.Where(x => x.appcategoryid == SubCategoryID) .FirstOrDefault() != null ? true : false, AppCategoryLevel = subCategory.appcategorylevel, IsExpand = false, } }).ToList() }).ToList(); return taxonomies; } }
Что я уже пробовал:
Обнаружена ошибка при отладке вложенных запросов:
1. неизвестный столбец "Join3.appcategoryid" в "списке полей"
2. Extent1 неизвестный столбец '.taxonomyid' в 'предложении where'
CHill60
Сгладить структуру запросов, чтобы не было вложенных запросов?
Member 14063588
Я не в состоянии понять ответ, который вы дали, пожалуйста, объясните его
CHill60
Упростите свой запрос, чтобы не использовать подзапросы или вложенные запросы. Соберите необходимую информацию из первого запроса, а затем передайте ее следующему. Это облегчит понимание вашего кода ... просто потому что ты мочь делай что-то, но это не значит, что ты ... должен
Member 14063588
Не могли бы вы помочь мне упростить этот запрос?
CHill60
Извините, нет - у меня здесь нет Visual Studio, и это слишком сложно, чтобы пытаться сделать это на глаз. Другие могут увидеть это, хотя теперь, когда я отредактировал ваш пост.
Я заметил, что вы удалили предварительные теги, которые я добавил к вашему сообщению. Имейте в виду, что если ваш код правильно отформатирован (как сейчас), его легче читать участникам ... и если это легче читать больше людей скорее всего попытаются помочь