Поэтому я, вероятно, что-то трагически ошибаюсь с db4o, чтобы вызвать эту проблему ... но каждый раз, когда я возвращаю свои context Я теряю все свои объекты. Я имею в виду, что, как только мой объект контейнера выходит из сферы действия (из-за сброса IIS или чего-то еще), я больше не могу извлекать какие-либо объекты, которые я ранее сохранял. В рамках «сеанса» я могу получить все, но как только этот «сеанс» умирает, ничего не возвращается. Что странно, так это то, что файл базы данных продолжает расти в размерах, поэтому я знаю, что все там, где оно просто не возвращается после факта. Любая идея, что происходит?Проблема с объектами db4o ... не возвращается после сброса IIS/контейнера из области видимости
Вот моя общая оболочка для db4o:
public class DataStore : IDisposable {
private static readonly object serverLock = new object();
private static readonly object containerLock = new object();
private static IObjectServer server;
private static IObjectContainer container;
private static IObjectServer Server {
get {
lock (serverLock) {
if (server == null)
server = Db4oFactory.OpenServer(ConfigurationManager.AppSettings["DatabaseFilePath"], 0);
return server;
}
}
}
private static IObjectContainer Container {
get {
lock (containerLock) {
if (container == null)
container = Server.OpenClient();
return container;
}
}
}
public IQueryable<T> Find<T>(Func<T, bool> predicate) {
return (from T t in Container where predicate(t) select t).AsQueryable();
}
public IQueryable<T> Find<T>() {
return (from T t in Container select t).AsQueryable();
}
public ValidationResult Save(IValidatable item) {
var validationResult = item.Validate();
if (!validationResult.IsValid) return validationResult;
Container.Store(item);
return validationResult;
}
public void Delete(object item) {
Container.Delete(item);
}
public void Dispose() {
Server.Close();
Container.Close();
}
}
Извините, что это такое "db40"? –
Это объектно-ориентированная база данных - www.db4o.com – Goran