using System;
using System.Collections.Generic;
using System.Linq;
using Quadarax.Foundation.Core.Data.Interface.Entity;

namespace Quadarax.Foundation.Core.Data.Interface.Repository
{
    public interface IDaoRepository<TKey, TDao> : IRepository where TDao : IDao<TKey> where TKey : IEquatable<TKey>
    {
        public IQueryable<TDao> Query(IPaging paging, bool usingUncomited = false);
        public TDao Get(TKey id);
        public IQueryable<TDao> Get(IEnumerable<TKey> ids);
        public TDao Set(TDao entity);
        public IEnumerable<TDao> Set(IEnumerable<TDao> entities);
        public TDao New();
        public bool Remove(TKey id);
        public IEnumerable<bool> Remove(IEnumerable<TKey> ids);
        public bool Remove(TDao entity);
        public IEnumerable<bool> Remove(IEnumerable<TDao> entities);
    }
}
