Вы бы лучше предоставили более подробную информацию, такую как ваш класс отображения данных и подробности в function.cs.
Чтобы убедиться, что строка подключения используется правильно, вы можете использовать log.Info (connectionstring), чтобы проверить, правильно ли она используется.
Я провел тест со следующим простым кодом, иданные могут быть правильно получены из базы данных Azure SQL. (VS 2017 и функция v1 net461).
шаг 1: создать таблицу в базе данных Azure:
Шаг 2. Создайте проект Azure Function v1:
2.1: Ниже приведен код сопоставления базы данных, добавьте новый файл .cs с именем test:
using System.Data.Linq.Mapping;
namespace FunctionApp11
{
[Table(Name ="test")]
public class test
{
private short _id;
[Column(IsPrimaryKey = true, Storage = "_id")]
public short id
{
get
{
return this._id;
}
set
{
this._id = value;
}
}
private string _name;
[Column(Storage = "_name")]
public string name
{
get
{
return this._name;
}
set
{
this._name = value;
}
}
}
}
2.2: Код в классе Function(Я просто использую жесткий код для строки подключения):
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Host;
using System;
using System.Data.Linq;
using System.Linq;
namespace FunctionApp11
{
public static class Function1
{
[FunctionName("Function1")]
public static void Run([TimerTrigger("*/30 * * * * *")]TimerInfo myTimer, TraceWriter log)
{
string str = "Server=tcp:your_server_name.database.windows.net,1433;Initial Catalog=your_db_name;Persist Security Info=False;User ID=user_name;Password=password;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;";
int i = 3;
DataContext db = new DataContext(str);
Table<test> students = db.GetTable<test>();
var query = students.Where(x => x.id == i).Select(x => x.name).FirstOrDefault();
log.Info($"the first student is:{query}");
log.Info($"C# Timer trigger function executed at: {DateTime.Now}");
}
}
}
3.Публикация на Azure и запуск, вы можете увидеть, что данные извлекаются.