繁体   English   中英

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

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

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

但是我想使其松散耦合,所以这就是为什么我要将这段代码带到Azure函数或逻辑应用程序中以保存数据的原因。

目前,我使用实体框架,因为它位于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 Function或Logic App中执行相同的操作。 如果记录成千上万个,哪个会更好更快?

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

这是一个体系结构问题,我强烈建议您阅读Azure体系结构文档 您的问题是关于一种称为命令查询责任分离或CQRS的设计模式。 您需要考虑“最终一致性”在数据库更新中的影响,这可能会导致对数据库和应用程序业务逻辑进行全面的重新设计。

我的经验是,与Azure函数相比,逻辑应用程序的安装速度更快,但是,如果您有大量数据,则Azure函数的执行速度更快,成本也更低。 您还需要考虑延迟对用户体验的可能影响。 您应该阅读Troy Hunt的这篇文章: https : //www.troyhunt.com/azure-functions-in-practice/

我主要使用Azure功能来更新Dynamics客户参与度(aka CRM),并且不得不依靠使用其他Azure功能(例如Azure Service Bus)来处理跨多个功能的工作分配以及处理失败的事务。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM