带有sqlite数据库的Azure Web应用程序

时间:2016-09-27 11:46:41

标签: sqlite-net azure-web-app-service

我想创建一个简单的azure web应用程序,它将数据存储在部署它的文件夹中(..\wwwroot\)。 我从" myapp" .azurewebsites.net下载了提供的示例代码,但是使用了EntityFramework。是否可以将EF配置为使用SQLite,还是需要实现自己的SQLite Provider? (...使用https://www.nuget.org/packages/sqlite-net-pcl/中的PCL版本 有人可以推荐我任何样品吗?我没有为Azure上的SQLite找到合适的代码段。

到目前为止,这是我的代码:

public class DataService
{
    private static string sqliteFilename = "myDbName.sqlite";
    private static SQLiteConnection dbConnection;

    public static bool Initialize()
    {
        Directory.CreateDirectory(HttpContext.Current.Server.MapPath(@"\App_Data\"));
        string path = Path.Combine(HttpContext.Current.Server.MapPath(@"\App_Data\"), sqliteFilename);
        dbConnection = new SQLiteConnection(path);
        dbConnection.CreateTable<Category>();
        dbConnection.CreateTable<User>();
        return true;
    }
}

我收到一个错误,但这并不能告诉我很多...

  

&#39; SQLite.SQLiteConnection&#39;的类型初始值设定项抛出异常

1 个答案:

答案 0 :(得分:0)

部署包的文件上载到Azure Runtime环境中,并保存在目录d:\ home中。这些文件是持久的,并在站点的多个实例之间共享。在Web应用程序的免费和共享层中,持久存储限制为1 GB,而基本和标准层为10 GB和50 GB。

所以不要在代码中创建sqlite文件;预先创建它,并将其作为文件在已部署的文件集中上传。使用kudu查找文件的实际路径并在代码中引用该文件。

参考:https://github.com/projectkudu/kudu/wiki/Azure-runtime-environment#file-system

这种方法的缺点是每次执行部署时都会替换数据库文件。