using System.Diagnostics.CodeAnalysis; namespace Pilz.Net.Data; public interface IDataManager { void Delete(int id) where T : IDataObject; void Delete(int id, bool save) where T : IDataObject; void Delete(T? obj) where T : IDataObject; void Delete(T? obj, bool save) where T : IDataObject; T? Find(int id) where T : IDataObject; bool Find(int id, [NotNullWhen(true)] out T? obj) where T : IDataObject; T? Find(int? id) where T : IDataObject; T FindOrNew(int id) where T : IDataObject; bool FindOrNew(int id, [NotNullWhen(true)] out T? obj) where T : IDataObject; T FindOrNew(int? id) where T : IDataObject; bool FindOrNew(int? id, [NotNullWhen(true)] out T? obj) where T : IDataObject; T? FindOrNull(int id) where T : IDataObject; bool FindOrNull(int id, out T? obj) where T : IDataObject; T? FindOrNull(int? id) where T : IDataObject; bool FindOrNull(int? id, out T? obj) where T : IDataObject; IQueryable Get() where T : IDataObject; void Save(); void Save(T obj) where T : IDataObject; void Save(T obj, bool save) where T : IDataObject; }