«SQLite.SQLiteException» в SQLite-net.dll и «SQLite.SQLiteException» в ошибке System.Private.CoreLib.dll в .net Maui, коC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 «SQLite.SQLiteException» в SQLite-net.dll и «SQLite.SQLiteException» в ошибке System.Private.CoreLib.dll в .net Maui, ко

Сообщение Anonymous »


Изображение

Выше приведен фрагмент того, где программа дает сбой.
Я пытаюсь добавить базу данных sqlite в проект. Следовал официальной инструкции по настройке. Создал общий репозиторий. В основном файле program.cs настройте внедрение зависимостей. Внедрите базу данных в модель представления страницы. Запустите приложение, и оно аварийно завершает работу с «SQLite.SQLiteException» в SQLite-net.dll и «SQLite.SQLiteException» в System.Private.CoreLib.dll.
Дважды проверили все nugets были загружены. Следовал учебнику, который делает то же самое, что и я. Учебная программа работает, а моя нет, хотя она сделана таким же образом. Я не понимаю, где я ошибся. Настройте точки отладки повсюду, и при внедрении произойдет сбой (я уверен на 99%, если я удалю внедрение, страница загрузится), но я внедрил таким же образом в другой проект, и программа не вылетает.
public partial class ArticlePage : TabbedPage
{

public ArticlePage(GeneralRepository item)
{
InitializeComponent();
BindingContext = new ArticlePageViewModel(item);
}

}

public class ArticlePageViewModel
{
private readonly GeneralRepository _item;

public ArticlePageViewModel(GeneralRepository item)
{
_item = item;
}
}

public partial class MainPage : ContentPage
{
private readonly IServiceProvider _serviceProvider;

public MainPage(IServiceProvider serviceProvider)
{
InitializeComponent();

_serviceProvider = serviceProvider;

}
private async void NewArticleButton_Clicked(object sender, EventArgs e)
{
await Navigation.PushAsync(_serviceProvider.GetService());
}
private async void LoadArticleButton_Clicked(object sender, EventArgs e)
{
await Navigation.PushAsync(_serviceProvider.GetService());
}
}

public partial class App : Application
{
//public App(IServiceProvider serviceProvider)
public App(IServiceProvider serviceProvider)
{
InitializeComponent();
MainPage = new NavigationPage(serviceProvider.GetService());
}
}

public static class MauiProgram
{
public static MauiApp CreateMauiApp()
{
var builder = MauiApp.CreateBuilder();
builder
.UseMauiApp()
.ConfigureFonts(fonts =>
{
fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold");
});
builder.Services.AddSingleton();
builder.Services.AddSingleton();
builder.Services.AddSingleton();
builder.Services.AddSingleton();

#if DEBUG
builder.Logging.AddDebug();

#endif

return builder.Build();
}
}

public class GeneralRepository : IGeneralRepository where T : IdClass, new()
{
SQLiteConnection connection;
public GeneralRepository()
{

connection = new SQLiteConnection(Constants.DatabasePath,
Constants.Flags);
connection.CreateTable();
}

public void DeleteItem(T item)
{
try
{
connection.Delete(item);
}
catch (Exception ex)
{
Application.Current.MainPage.DisplayAlert("Delete Error", ex.Message, "Ok");
}
}

public List GetAllItems()
{
try
{
return connection.Table().ToList();
}
catch (Exception ex)
{
Application.Current.MainPage.DisplayAlert("Error retreiving data", ex.Message, "Ok");
}
return null;
}

public T GetItem(int id)
{
try
{
return connection.Table().FirstOrDefault(i => i.Id == id);
}
catch (Exception ex)
{
Application.Current.MainPage.DisplayAlert("Error retreiving item", ex.Message, "Ok");
}
return null;
}

public void UpsertItem(T item)
{
try
{
if (item.Id != 0)
{
connection.Update(item);
}
else
{
connection.Insert(item);
}
}
catch (Exception ex)
{
Application.Current.MainPage.DisplayAlert("Error adding or updating item", ex.Message, "Ok");

}
}
}

public interface IGeneralRepository where T : IdClass, new()

{
void UpsertItem(T item);

T GetItem(int id);

List GetAllItems();

void DeleteItem(T item);
}

public static class Constants
{
private const string DbFileName = "ArticleItemDb.db3";

public const SQLiteOpenFlags Flags =
SQLiteOpenFlags.ReadWrite |
SQLiteOpenFlags.Create |
SQLiteOpenFlags.SharedCache;

public static string DatabasePath
{
get
{
return Path.Combine(FileSystem.AppDataDirectory, DbFileName);
}
}
}


Подробнее здесь: https://stackoverflow.com/questions/791 ... n-in-syste
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • «SQLite.SQLiteException» в SQLite-net.dll и «SQLite.SQLiteException» в ошибке System.Private.CoreLib.dll в .net Maui, ко
    Anonymous » » в форуме C#
    0 Ответы
    57 Просмотры
    Последнее сообщение Anonymous
  • C# .NET Core Как отладить System.IO.FileNotFoundException в System.Private.CoreLib.dll?
    Anonymous » » в форуме C#
    0 Ответы
    31 Просмотры
    Последнее сообщение Anonymous
  • Исключение типа «System.InvalidOperationException» произошло в System.Private.CoreLib.dll.
    Anonymous » » в форуме C#
    0 Ответы
    45 Просмотры
    Последнее сообщение Anonymous
  • Исключение типа «System.InvalidOperationException» произошло в System.Private.CoreLib.dll.
    Anonymous » » в форуме C#
    0 Ответы
    40 Просмотры
    Последнее сообщение Anonymous
  • Исключение типа «System.InvalidOperationException» произошло в System.Private.CoreLib.dll.
    Anonymous » » в форуме C#
    0 Ответы
    23 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»