나는 ASP.Net MVC 2, Ninject2, NoRM (http://github.com/atheken/NoRM) 및 MongoDB와 Rob의 mvc startesite http://mvcstarter.codeplex.com/을 사용하고 있습니다. 그것은 너무 빨리 작동하고 개발은 더 빠르지 만 커다란 문제에 직면하고 있습니다. 어떤 점에서는 연결 시간이 초과되었습니다. 나는 내가 뭘 잘못하고 있는지 알 수 없다.Norm.MongoException : 연결 풀에서 연결을 시도하는 연결 시간 초과가
나는 이미 여기에 질문을했습니다 : I get this error that I don't understand why, using NoRM and Mongo in my MVC project 그리고 여기 http://groups.google.com/group/norm-mongodb/browse_thread/thread/7882be16f030eb29 그러나 나는 여전히 어둠 속에 있습니다.
도움을 주셔서 감사합니다.
수정 됨 * 여기 내 MongoSession 객체의 : 공용 클래스 MongoSession : ISession {
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<T>(System.Linq.Expressions.Expression<Func<T, bool>> expression) where T : class {
return _server.GetCollection<T>().AsQueryable().Where(expression).SingleOrDefault();
}
public IQueryable<T> All<T>() where T : class {
return _server.GetCollection<T>().AsQueryable();
}
public void Save<T>(IEnumerable<T> items) where T : class {
foreach (T item in items) {
Save(item);
}
}
public void Save<T>(T item) where T : class {
var errors = DataAnnotationsValidationRunner.GetErrors(item);
if (errors.Count() > 0)
{
throw new RulesException(errors);
}
_server.Database.GetCollection<T>().Save(item);
}
public void Delete<T>(System.Linq.Expressions.Expression<Func<T, bool>> expression) where T : class
{
var items = All<T>().Where(expression);
foreach (T item in items)
{
Delete(item);
}
}
public void Delete<T>(T item) where T : class
{
_server.GetCollection<T>().Delete(item);
}
public void Drop<T>() where T : class
{
_server.Database.DropCollection(typeof(T).Name);
}
public void Dispose() {
_server.Dispose();
}
}
그리고 지금 내 MongoRepositoryBase
public abstract class MongoRepositoryBase<T> : ISession<T> where T : MongoObject
{
protected ISession _session;
protected MongoRepositoryBase(ISession session)
{
_session = session;
}
public T Single(ObjectId id)
{
return _session.All<T>().Where(x => x.Id == id).FirstOrDefault();
}
public T Single(Expression<Func<T, bool>> expression)
{
return _session.Single(expression);
}
public IQueryable<T> All()
{
return _session.All<T>();
}
public void Save(IEnumerable<T> items)
{
foreach (T item in items)
{
Save(item);
}
}
public void Save(T item)
{
_session.Save(item);
}
public void Delete(System.Linq.Expressions.Expression<Func<T, bool>> expression)
{
var items = _session.All<T>().Where(expression);
foreach (T item in items)
{
Delete(item);
}
}
public void DeleteAll()
{
var items = _session.All<T>();
foreach (T item in items)
{
Delete(item);
}
}
public void Delete(T item)
{
_session.Delete(item);
}
public void Drop()
{
_session.Drop<T>();
}
public void Dispose()
{
_session.Dispose();
}
}
와 다른 저장소 implemantation의 exemple :
public class PlaceRepository : MongoRepositoryBase<Place>, IPlaceRepository
{
public PlaceRepository(ISession session) : base(session)
{
}
public List<Place> GetByCategory(PlaceCategory category, bool publishedOnly)
{
var query = _session.All<Place>()
.OrderBy(x => x.Name)
.Where(x => x.Category == category);
if (publishedOnly) query = query.Where(x => x.Published);
if (publishedOnly) query = query.Where(x => x.ShowOnMap);
return query.ToList();
}
public Place FindByName(string name)
{
var query = _session.All<Place>()
.Where(x => x.Name.ToLower().Contains(name.ToLower()))
.Where(x => x.Published);
return query.FirstOrDefault();
}
public string[] FindSuggestionsByName(string name)
{
var query = _session.All<Place>()
.OrderBy(x => x.Name)
.Where(x => x.Name.ToLower().StartsWith(name.ToLower()))
.Where(x => 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;
}
}
[MVC 프로젝트에서 NoRM과 Mongo를 사용하는 이유를 이해하지 못하는이 오류가 발생하기 쉽습니다.] (http://stackoverflow.com/questions/3159811/i-get- 이 - 오류 - 그 - 난 - 이해 - 왜 - 사용 - 표준 및 몽고 -에서 - 내 - mvc - proj) – jfar
알다시피,이 날 미친 운전! 나는 다른 제목과 다른 설명과 키워드로 어쩌면 내가 도와 줄 사람을 찾을 수 있었다. 나는 더 많은 코드를 추가했다. – VinnyG