如何使用 Azure 函数或逻辑应用程序将数据保存到 sql 数据库中?

How can I use Azure functions or logic apps to save data into sql database?

我有一个 ASP.NET MVC 应用程序,我目前正在将数据保存到 SQL 服务器数据库中。

但我想让它松散耦合,这就是为什么我想将此代码取出到 Azure 函数或逻辑应用程序中以保存数据。

目前我使用 Entity Framework,因为它在 ASP.NET MVC 应用程序中。

这是我的代码示例:

private async Task SaveDatabaseAsync(List<Device> deviceDataList)
{
    // save device information into database
    _Repository.InsertMultipleDevices(deviceDataList); // used AddRange

    await _Repository.SaveAsync();

    // save message data information into database
    await SaveMessageData(deviceList);
}

private async Task SaveMessageData(List<Device> deviceListData , List<MessageData> messageDataList)
{
    // replace device id PK because device id is FK in Message table which is previously saved SaveDeviceToDatabaseAsync
    foreach (var messageData in messageDataList)
    {
        var deviceData = deviceListData.FirstOrDefault(t => Convert.ToInt32(t.Id.ToString()) == messageData.Id);
        messageData.Id = deviceData?.Id ?? 0;
    }

    MessageDataRepository _messageDataRepository = new MessageDataRepository(new IoTSimulatordbContext());
    _messageDataRepository.InsertMessageDataMultiple(messageData); // used AddRange
    await _messageDataRepository.SaveAsync();
}

现在我正在尝试在 Azure 函数或逻辑应用程序中执行相同的操作。如果记录数以千计,哪个更好更快?

这种情况下如何实现替换FK逻辑?

这是一个架构问题,我强烈建议您阅读Azure Architecture documentation。您的问题是询问一种称为命令查询责任分离或 CQRS 的设计模式。您需要考虑 "eventual consistency" 对数据库更新的影响,这可能会推动您对数据库和应用程序业务逻辑进行彻底的重新设计。

我的经验是逻辑应用程序比 Azure Functions 设置起来更快,但是如果您有大量数据,Azure Functions 将执行得更快并且更便宜。您还需要考虑延迟对用户体验的可能影响。 您应该阅读 Troy Hunt 的这篇文章:https://www.troyhunt.com/azure-functions-in-practice/

我主要使用 Azure Functions 来更新 Dynamics Customer Engagement(又名 CRM),我不得不依赖使用其他 Azure 功能(例如 Azure 服务总线)来处理跨多个功能的工作分配,以及处理失败的事务。