Note that there are some explanatory texts on larger screens.

plurals
  1. PONorm.MongoException: Connection timeout trying to get connection from connection pool
    primarykey
    data
    text
    <p>I'm using Rob's mvc startesite <a href="http://mvcstarter.codeplex.com/" rel="nofollow noreferrer">http://mvcstarter.codeplex.com/</a> with ASP.Net MVC 2, Ninject2, NoRM (<a href="http://github.com/atheken/NoRM" rel="nofollow noreferrer">http://github.com/atheken/NoRM</a>) and MongoDB. It works so fast and the developpement is even faster but I'm facing a big problem, I at some points, get connection timeout. I can't figure out what I'm doing wrong. </p> <p>I already asked a question here : <a href="https://stackoverflow.com/questions/3159811/i-get-this-error-that-i-dont-understand-why-using-norm-and-mongo-in-my-mvc-proj">I get this error that I don&#39;t understand why, using NoRM and Mongo in my MVC project</a> and here <a href="http://groups.google.com/group/norm-mongodb/browse_thread/thread/7882be16f030eb29" rel="nofollow noreferrer">http://groups.google.com/group/norm-mongodb/browse_thread/thread/7882be16f030eb29</a> but I still in the dark.</p> <p>Thanks a lot for the help!</p> <p>EDITED* Here's my MongoSession object : public class MongoSession : ISession{</p> <pre><code> private readonly Mongo _server; public MongoSession() { //this looks for a connection string in your Web.config - you can override this if you want _server = Mongo.Create("MongoDB"); } public T Single&lt;T&gt;(System.Linq.Expressions.Expression&lt;Func&lt;T, bool&gt;&gt; expression) where T : class { return _server.GetCollection&lt;T&gt;().AsQueryable().Where(expression).SingleOrDefault(); } public IQueryable&lt;T&gt; All&lt;T&gt;() where T : class { return _server.GetCollection&lt;T&gt;().AsQueryable(); } public void Save&lt;T&gt;(IEnumerable&lt;T&gt; items) where T : class { foreach (T item in items) { Save(item); } } public void Save&lt;T&gt;(T item) where T : class { var errors = DataAnnotationsValidationRunner.GetErrors(item); if (errors.Count() &gt; 0) { throw new RulesException(errors); } _server.Database.GetCollection&lt;T&gt;().Save(item); } public void Delete&lt;T&gt;(System.Linq.Expressions.Expression&lt;Func&lt;T, bool&gt;&gt; expression) where T : class { var items = All&lt;T&gt;().Where(expression); foreach (T item in items) { Delete(item); } } public void Delete&lt;T&gt;(T item) where T : class { _server.GetCollection&lt;T&gt;().Delete(item); } public void Drop&lt;T&gt;() where T : class { _server.Database.DropCollection(typeof(T).Name); } public void Dispose() { _server.Dispose(); } } </code></pre> <p>And now my MongoRepositoryBase</p> <pre><code>public abstract class MongoRepositoryBase&lt;T&gt; : ISession&lt;T&gt; where T : MongoObject { protected ISession _session; protected MongoRepositoryBase(ISession session) { _session = session; } public T Single(ObjectId id) { return _session.All&lt;T&gt;().Where(x =&gt; x.Id == id).FirstOrDefault(); } public T Single(Expression&lt;Func&lt;T, bool&gt;&gt; expression) { return _session.Single(expression); } public IQueryable&lt;T&gt; All() { return _session.All&lt;T&gt;(); } public void Save(IEnumerable&lt;T&gt; items) { foreach (T item in items) { Save(item); } } public void Save(T item) { _session.Save(item); } public void Delete(System.Linq.Expressions.Expression&lt;Func&lt;T, bool&gt;&gt; expression) { var items = _session.All&lt;T&gt;().Where(expression); foreach (T item in items) { Delete(item); } } public void DeleteAll() { var items = _session.All&lt;T&gt;(); foreach (T item in items) { Delete(item); } } public void Delete(T item) { _session.Delete(item); } public void Drop() { _session.Drop&lt;T&gt;(); } public void Dispose() { _session.Dispose(); } } </code></pre> <p>And an exemple of an other Repository implemantation :</p> <pre><code>public class PlaceRepository : MongoRepositoryBase&lt;Place&gt;, IPlaceRepository { public PlaceRepository(ISession session) : base(session) { } public List&lt;Place&gt; GetByCategory(PlaceCategory category, bool publishedOnly) { var query = _session.All&lt;Place&gt;() .OrderBy(x =&gt; x.Name) .Where(x =&gt; x.Category == category); if (publishedOnly) query = query.Where(x =&gt; x.Published); if (publishedOnly) query = query.Where(x =&gt; x.ShowOnMap); return query.ToList(); } public Place FindByName(string name) { var query = _session.All&lt;Place&gt;() .Where(x =&gt; x.Name.ToLower().Contains(name.ToLower())) .Where(x =&gt; x.Published); return query.FirstOrDefault(); } public string[] FindSuggestionsByName(string name) { var query = _session.All&lt;Place&gt;() .OrderBy(x =&gt; x.Name) .Where(x =&gt; x.Name.ToLower().StartsWith(name.ToLower())) .Where(x =&gt; x.Published); var places = query.ToList(); var names = new string[places.Count]; var i = 0; foreach (var place in places) { names[i++] = place.Name; } return names; } } </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload