mirror of
https://github.com/rmcrackan/Libation.git
synced 2025-12-23 22:17:52 -05:00
- Remove instance queue. This is a database, after all, and is designed to be accessed and written to concurrently - Reduce the number of calls to DbContexts.Create() - Ensure that no LibationContext remains open across an await boundary. Multithread context access is the most likely culprit for past issues. - Make all Update UserDefinedItem methods asynchronous.
41 lines
1.5 KiB
C#
41 lines
1.5 KiB
C#
using DataLayer;
|
|
using LibationFileManager;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using System.Collections.Generic;
|
|
|
|
#nullable enable
|
|
namespace ApplicationServices
|
|
{
|
|
public static class DbContexts
|
|
{
|
|
/// <summary>Use for fully functional context, incl. SaveChanges(). For query-only, use the other method</summary>
|
|
public static LibationContext GetContext()
|
|
{
|
|
var context = !string.IsNullOrEmpty(Configuration.Instance.PostgresqlConnectionString)
|
|
? LibationContextFactory.CreatePostgres(Configuration.Instance.PostgresqlConnectionString)
|
|
: LibationContextFactory.CreateSqlite(SqliteStorage.ConnectionString);
|
|
context.Database.Migrate();
|
|
return context;
|
|
}
|
|
|
|
/// <summary>Use for full library querying. No lazy loading</summary>
|
|
public static List<LibraryBook> GetLibrary_Flat_NoTracking(bool includeParents = false)
|
|
{
|
|
using var context = GetContext();
|
|
return context.GetLibrary_Flat_NoTracking(includeParents);
|
|
}
|
|
|
|
public static List<LibraryBook> GetDeletedLibraryBooks()
|
|
{
|
|
using var context = GetContext();
|
|
return context.GetDeletedLibraryBooks();
|
|
}
|
|
|
|
public static LibraryBook? GetLibraryBook_Flat_NoTracking(string productId, bool caseSensative = true)
|
|
{
|
|
using var context = GetContext();
|
|
return context.GetLibraryBook_Flat_NoTracking(productId, caseSensative);
|
|
}
|
|
}
|
|
}
|