/// <summary> /// Throw if the database or SqlBotDataEntities table have not been created. /// </summary> static internal void AssertDatabaseReady() { //var connectionString = Utils.GetAppSetting(AppSettingKeys.SqlServerConnectionString); var connectionString = ConfigurationManager.ConnectionStrings["BotDataContextConnectionString"].ConnectionString; using (var context = new SqlBotDataContext(connectionString)) { if (!context.Database.Exists()) { throw new ArgumentException("The sql database defined in the connection has not been created. See https://github.com/Microsoft/BotBuilder-Azure/tree/master/CSharp"); } if (context.Database.SqlQuery <int>(@"IF EXISTS (SELECT * FROM sys.tables WHERE name = 'SqlBotDataEntities') SELECT 1 ELSE SELECT 0").SingleOrDefault() != 1) { throw new ArgumentException("The SqlBotDataEntities table has not been created in the database. See https://github.com/Microsoft/BotBuilder-Azure/tree/master/CSharp"); } } }
internal static async Task <SqlBotDataEntity> GetSqlBotDataEntity(IAddress key, BotStoreType botStoreType, SqlBotDataContext context) { SqlBotDataEntity entity = null; var query = context.BotData.OrderByDescending(d => d.Timestamp); switch (botStoreType) { case BotStoreType.BotConversationData: entity = await query.FirstOrDefaultAsync(d => d.BotStoreType == botStoreType && d.ChannelId == key.ChannelId && d.ConversationId == key.ConversationId); break; case BotStoreType.BotUserData: entity = await query.FirstOrDefaultAsync(d => d.BotStoreType == botStoreType && d.ChannelId == key.ChannelId && d.UserId == key.UserId); break; case BotStoreType.BotPrivateConversationData: entity = await query.FirstOrDefaultAsync(d => d.BotStoreType == botStoreType && d.ChannelId == key.ChannelId && d.ConversationId == key.ConversationId && d.UserId == key.UserId); break; default: throw new ArgumentException("Unsupported bot store type!"); } return(entity); }