public IEnumerable <T> Get(params object[] keys)
        {
            var _cols = new _ColumnWithValue[0];

            EnumerableUtil.Each(keys, y => {
                _cols = EnumerableUtil.ToArray(
                    EnumerableUtil.UnionAll(
                        _cols,
                        EnumerableUtil.Except(
                            EnumerableUtil.Join(
                                EnumerableUtil.Where(this._Columns, x => x.IsForeignKey),
                                EnumerableUtil.Where(_Column.GetColumns(y.GetType()), x => x.IsKey),
                                x => x.Alias ?? x.Name,
                                x => x.Alias ?? x.Name,
                                (o, i) => new _ColumnWithValue(o, i, y)),
                            _cols,
                            EnumerableUtil.CreateComparer <_ColumnWithValue>((a, b) => a.EntityColumn.Name == b.EntityColumn.Name))));
            });

            var _predicate = string.Empty;

            EnumerableUtil.Each(_cols, x => _predicate += $"AND {x.EntityColumn.Name}=? ");

            return(this.ToEnumerable(
                       this._SqlSelect + _predicate,
                       EnumerableUtil.ToArray(
                           EnumerableUtil.Select(_cols, x => x.ForeignValue))));
        }
        public int Remove(params object[] keys)
        {
            var _keys = new _ColumnWithValue[0];

            EnumerableUtil.Each(keys, y => {
                _keys = EnumerableUtil.ToArray(
                    EnumerableUtil.UnionAll(
                        _keys,
                        EnumerableUtil.Except(
                            EnumerableUtil.Join(
                                EnumerableUtil.Where(this._Columns, x => x.IsKey || x.IsForeignKey),
                                EnumerableUtil.Where(_Column.GetColumns(y.GetType()), x => x.IsKey),
                                x => x.Alias ?? x.Name,
                                x => x.Alias ?? x.Name,
                                (o, i) => new _ColumnWithValue(o, i, y)),
                            _keys,
                            EnumerableUtil.CreateComparer <_ColumnWithValue>((a, b) => a.EntityColumn.Name == b.EntityColumn.Name))));
            });

            var _predicate = string.Empty;

            EnumerableUtil.Each(_keys, x => _predicate += $"AND {x.EntityColumn.Name}=? ");

            return(this.Execute(
                       $"DELETE FROM {this._Table} WHERE 1=1 {_predicate}",
                       EnumerableUtil.ToArray(
                           EnumerableUtil.Select(_keys, x => x.ForeignValue))));
        }