System.TypeInitializationException:''SQLite.SQLiteConnection'的类型初始值设定项引发了异常。'

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了System.TypeInitializationException:''SQLite.SQLiteConnection'的类型初始值设定项引发了异常。'相关的知识,希望对你有一定的参考价值。

当我在我的xamarin应用程序中添加Sql-net-pcl库并进行编译时,它向我显示了一个异常并说您的应用程序处于中断模式。

Exception:

     `System.TypeInitializationException: 'The type initializer for 'SQLite.SQLiteConnection' threw an exception.'

ISqLiteDb:

public interface ISqLiteDb
{
    SQLiteAsyncConnection GetConnection();
}

SqLiteDb:

class SqLiteDb: ISqLiteDb
{
    public SQLiteAsyncConnection GetConnection()
    {
        var documePath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
        var path = Path.Combine(documePath, "Shopping.db");

        return new SQLiteAsyncConnection(path);
    }
}

这里我正在打开连接并创建表。

MainPage.Xaml.cs:

public partial class MainPage : ContentPage
{
    private ObservableCollection<Recipe> _recipes;

    private readonly SQLiteAsyncConnection _connection;
    public MainPage()
    {
        InitializeComponent();
        _connection = DependencyService.Get<ISqLiteDb>().GetConnection();
    }

    protected override async void OnAppearing()
    {
        await _connection.CreateTableAsync<Recipe>();
        var recipes = await _connection.Table<Recipe>().ToListAsync();

        _recipes = new ObservableCollection<Recipe>(recipes);

        listView.ItemsSource = _recipes;
    }

    private async void OnAdd(object sender, EventArgs e)
    {
        var recipe = new Recipe
        {
            Id = 1,
            Name = "Recipe1"
        };

        await _connection.InsertAsync(recipe);
        _recipes.Add(recipe);
    }
答案

我发布自己的问题的答案,因为经过大量的研究和努力,我提出了解决方案。

我已通过将sql-net-pcl库从1.7.302-beta]更新到版本[[1.6.292]解决了问题]

以上是关于System.TypeInitializationException:''SQLite.SQLiteConnection'的类型初始值设定项引发了异常。'的主要内容,如果未能解决你的问题,请参考以下文章