如何在微软BOT框架4中从数据库中获取数据?

问题描述 投票:0回答:1

我正在使用Microsoft bot framework 4构建一个聊天机器人。我想将对话内容存储在SQL Server数据库中,并希望使用实体框架来检索它们。

我试图添加从数据库中获取数据的代码,但模拟器报告错误。以下是我的代码。

        protected override async Task OnMembersAddedAsync(IList<ChannelAccount> membersAdded, ITurnContext<IConversationUpdateActivity> turnContext, CancellationToken cancellationToken)
    {
        foreach (var member in membersAdded)
        {
            if (member.Id != turnContext.Activity.Recipient.Id)
            {
                var start = GetStartDialog();

                if (start != null) {
                    var attachments = new List<Attachment>();
                    var reply = MessageFactory.Attachment(attachments);
                    var b = new HeroCard() { Title = start.Title, Text = start.Body, Buttons = new List<CardAction>() { new CardAction() { Title = "Option 1", Value = 1, Type = ActionTypes.MessageBack }, new CardAction() { Title = "Option 2", Value = 2, Type = ActionTypes.MessageBack } } };
                    reply.Attachments.Add(b.ToAttachment());

                    await turnContext.SendActivityAsync(reply, cancellationToken);
                }
            }
        }
    }

        public Dialog GetStartDialog()
    {
        BOTEntities db = new BOTEntities();
        Dialog retVal = db.Dialogs.Where(o => o.DialogID.Equals(1)).FirstOrDefault();
        return retVal;
    }

有什么办法可以解决我的代码无法执行的问题吗?

先谢谢你的帮助。

c# sql-server botframework
1个回答
0
投票

如果你还没有考虑过,请你看一下。实体框架存储 扩展可从BotBuilder-Community repo中获得。

它是为Bot Builder .NET SDK的第4版设计的,可以通过以下方式安装 NuGet.

简而言之,你包含了状态存储组件,然后将状态存储组件连接到 EntityFrameworkTranscriptStore(). 这将允许你连接到并执行你的脚本来创建表格等。

由于这是一个内置的解决方案,这可能会减轻你收到的错误。

希望能得到帮助

© www.soinside.com 2019 - 2024. All rights reserved.