Как использовать лямбда-выражение LinQ в функции Azure, и оно связано с Azure SQL - PullRequest
0 голосов
/ 11 октября 2018

Вот моя проблема. У меня есть функция Azure, и она хорошо связана с SQL Azure.У меня есть 1 таблица A в Azure SQL

A => Id |имя со значением 1 |Duc

Когда я пытаюсь использовать LinQ в функции лазури, например

    var x="";
    int i=1;
    using(MyDB db=new MyDB())
    {
       x=db.A.where(x=>x.Id == i).select(x=>x.name).FirstOrDefault();
    }

, я хочу, чтобы она показала "x = Duc". Но она ничего не показывает?.

Моя AzureFunction была развернута VS 2017 с версией

net461 v1

Спасибо, что прочитали.

1 Ответ

0 голосов
/ 15 октября 2018

Вы бы лучше предоставили более подробную информацию, такую ​​как ваш класс отображения данных и подробности в function.cs.

Чтобы убедиться, что строка подключения используется правильно, вы можете использовать log.Info (connectionstring), чтобы проверить, правильно ли она используется.

Я провел тест со следующим простым кодом, иданные могут быть правильно получены из базы данных Azure SQL. (VS 2017 и функция v1 net461).

шаг 1: создать таблицу в базе данных Azure: enter image description here

Шаг 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 и запуск, вы можете увидеть, что данные извлекаются.enter image description here

...