示例#1
0
 public virtual List <FreeDocument> TryFindEntities(string tableName, IDictionary <string, object> search
                                                    , List <string> keys, int count = -1, DBSearchStrategy searchStrategy = DBSearchStrategy.Contains)
 {
     return(new List <FreeDocument>());
 }
示例#2
0
        public override List <IFreeDocument> TryFindEntities(string tableName,
                                                             IDictionary <string, object> search
                                                             , Type type = null, int count = -1, DBSearchStrategy searchStrategy = DBSearchStrategy.Contains)
        {
            if (type == null)
            {
                type = typeof(FreeDocument);
            }
            if (IsUseable == false)
            {
                return(new List <IFreeDocument>());
            }
            IMongoCollection <Document> collection = DB.GetCollection <Document>(tableName);

            var querydoc = new Document();

            foreach (var r in search)
            {
                querydoc.Add(r.Key, r.Value);
            }
            if (count != 1)
            {
                ICursor <Document> document = collection.Find(querydoc);
                if (document == null)
                {
                    return(new List <IFreeDocument>());
                }
                var results = new List <IFreeDocument>();

                foreach (Document item in document.Documents)
                {
                    if (count > 0)
                    {
                        count--;
                    }
                    if (count == 0)
                    {
                        break;
                    }
                    var result = Activator.CreateInstance(type) as IFreeDocument;

                    result.DictDeserialize(item);
                    results.Add(result);
                }


                return(results);
            }
            else
            {
                var document = collection.FindOne(querydoc);
                if (document == null)
                {
                    return(new List <IFreeDocument>());
                }
                var results = new List <IFreeDocument>();


                var result = Activator.CreateInstance(type) as IFreeDocument;

                result.DictDeserialize(document);
                results.Add(result);
                return(results);
            }
        }
示例#3
0
        public override List <FreeDocument> TryFindEntities(string tableName,
                                                            IDictionary <string, object> search, List <string> keys = null
                                                            , int count = -1, DBSearchStrategy searchStrategy = DBSearchStrategy.Contains)
        {
            if (IsUseable == false)
            {
                return(new List <FreeDocument>());
            }
            object fieldselector = null;

            if (keys != null)
            {
                fieldselector = keys.ToDictionary(d => d, d => 1);
            }
            var collection = DB.GetCollection <Document>(tableName);

            var querydoc = new Document();

            foreach (var r in search)
            {
                querydoc.Add(r.Key, r.Value);
            }
            if (count != 1)
            {
                var document = collection.Find(querydoc, fieldselector);
                if (document == null)
                {
                    return(new List <FreeDocument>());
                }
                var results = new List <FreeDocument>();

                foreach (var item in document.Documents)
                {
                    if (count > 0)
                    {
                        count--;
                    }
                    if (count == 0)
                    {
                        break;
                    }
                    var result = new FreeDocument();

                    result.DictDeserialize(item);
                    results.Add(result);
                }


                return(results);
            }
            else
            {
                var document = collection.FindOne(querydoc);
                if (document == null)
                {
                    return(new List <FreeDocument>());
                }
                var results = new List <FreeDocument>();


                var result = new FreeDocument();

                result.DictDeserialize(document);
                results.Add(result);
                return(results);
            }
        }