Попробуйте выполнить код ниже: var
внутри функции
var globalVariable = "This is a global variable"
function fun() {
var localVariable = "NOW this is a local Variable";
console.log(localVariable); //now this is a local variable
}
fun();
console.log(globalVariable); //This is a global variable(Output)
Этот ответ отредактирован
Ваш метод настроен на возврат одного Country
, но ваш код возвращает IEnumerable<Country>
.
Но проблема, похоже, решается по-разному в зависимости от версии .Net. Если вы используете .Net Core 2.2 (или позже в будущем), это должно работать:
public async Task<ActionResult<IEnumerable<Country>>> GetCountryRes()
{
var x = await ObjRepo.GetCountries();
return x;
}
public Task<IEnumerable<Country>> GetCountries()
{
var x= from n in _ConnectToDb.Country
orderby n.CountryId
select n;
return Task.FromResult(x.ToList());
}
Это было бы решением в вашем случае. Проблема в вашем коде заключается в том, что вы должны выполнить повторную настройку Task
или запустить ожидаемый метод в GetCountries()
. Само ключевое слово Async
ничего не значит, оно не будет запускать метод асинхронно, оно просто позволит вам использовать await
. Так что это избыточно в вашем случае
Синтаксический сахар async
в вашем первом методе не нужен и проблематичен, так как вы ничего не ожидаете. Вам просто нужно вернуть Task
из вашего результата. Но поскольку вы используете оператор LINQ (то же самое верно для любого метода LINQ), запрос не обрабатывается до тех пор, пока не будет вызван (и также повторно обрабатывается для любых последующих вызовов), поэтому я рекомендую немедленно оценить его:
Для GetCountries у меня есть две версии
public async Task<IEnumerable<Country>> GetCountries()
{
var x = from n in _ConnectToDb.Country
orderby n.CountryId
select n;
return await Task.FromResult(x.ToList());
}
// I prefer this version
public Task<IEnumerable<Country>> GetCountries2()
{
var x = from n in _ConnectToDb.Country
orderby n.CountryId
select n;
return Task.FromResult(x.ToList().AsEnumerable());
}
Контроллер
// Here I change the return value to IEnumerable
public async Task<ActionResult<IEnumerable<Country>>> GetCountryRes()
{
var x =await ObjRepo.GetCountries();
return x;
}