using AyCode.Database.DbContexts;

namespace AyCode.Database.DataLayers;

public interface IAcDalBase //: IDisposable
{
    public string Name { get; }
}

public interface IAcDalBase<TDbContext> : IAcDalBase where TDbContext : AcDbContextBase
{
    public bool AutoCloseSession { get; set; }

    /// <summary>
    /// Do not use it! Use Session or Transaction... - J.
    /// </summary>
    public TDbContext Context { get; }
    public Mutex MutextLock { get; }

    public TDbContext CreateDbContext();
    public void CloseDbContext(ref TDbContext? ctx);
}