using System; using System.Linq; using Microsoft.EntityFrameworkCore; namespace BITKit; public interface IDatabaseContext where T : class { void Add(T entity); void Remove(T entity); T[] GetArray(); bool TrySearch(Func searchFactory, out T result); bool TrySearchArray(Func searchFactory, out T[] result); } public class SqlLiteContext : DbContext,IDatabaseContext where T : class { private const string _database = "Database"; public DbSet context { get; private set; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { PathHelper.GetFolderPath(_database); var path = PathHelper.GetPath(_database, $"{typeof(T).Name}.db"); var sql = $"Data Source={path}"; BIT4Log.Log($"已创建数据库链接:{path}"); 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; } }