using System; using System.Linq; using Microsoft.EntityFrameworkCore; namespace BITKit; public class SqlLiteContext : DbContext,IDatabaseContext where T : class { public DbSet context { get; private set; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { var sql = SQLiteContextHelper.GetConnectionString(); optionsBuilder.UseSqlite(sql); } public virtual void Add(T entity) { context.Add(entity); SaveChanges(); } public virtual void Remove(T entity) { context.Remove(entity); SaveChanges(); } public virtual T[] GetArray() { return context.ToArray(); } public virtual bool TrySearch(Func searchFactory,out T result) { result = context.FirstOrDefault(searchFactory); return result != null; } /// /// 搜索数组 /// /// /// /// public virtual bool TrySearchArray(Func searchFactory, out T[] result) { result = context.Where(searchFactory).ToArray(); return result.Length > 0; } } public static class SQLiteContextHelper { private const string _database = "Database"; public static string GetConnectionString(string key) { GetConnectionSqlAndPath(key,out var connectionSql,out var path); BIT4Log.Log($"已创建数据库链接:{path}"); return connectionSql; } public static string GetConnectionString() { GetConnectionSqlAndPath(typeof(T).Name,out var connectionSql,out var path); BIT4Log.Log($"已创建数据库链接:{path}"); return connectionSql; } public static void GetConnectionSqlAndPath(string name,out string connectionSql,out string path) { PathHelper.GetFolderPath(_database); path = PathHelper.GetPath(_database, $"{name}.db"); connectionSql = $"Data Source={path}"; } }