Загрузка объекта из базы данных db4o - PullRequest
0 голосов
/ 24 января 2010

Я занимаюсь разработкой сайта электронной коммерции, в котором в качестве бэкэнда используется db4o. Все было хорошо до прошлой недели, когда я столкнулся с проблемой, которую мне не удалось решить. Код ниже довольно прост. Я открываю файл базы данных, сохраняю объект и затем пытаюсь получить его. Однако я ничего не получаю обратно. Переменная «users» имеет счетчик нуля.

public class Program
{
    private static string _connectionString = string.Format(@"c:\aaarrrr.db4o");

    static void Main(string[] args)
    {
        TestUser container = new TestUser() { id = 1, Name = "Mohammad", Surname = "Rafiq" };

        Db4oFactory.Configure().Diagnostic().AddListener(new DiagnosticToConsole());

        using (var dbc = Db4oFactory.OpenFile(_connectionString))
        {
            dbc.Store(container);
        }

        IList<TestUser> users = null;

        using (var dbc = Db4oFactory.OpenFile(_connectionString))
        {
            users = dbc.Query<TestUser>(x => x.id == 1).ToList();
        }

        if (users.Count > 0)
        {
            Console.WriteLine("{0} {1} with id of {2}", users.First().Name, users.First().Surname, users.First().id);
        }
        else
        {
            Console.WriteLine("\nNo data returned.");
        }

        Console.ReadLine();
    }
}

public class TestUser
{
    [Indexed]
    private int _id = 0;
    private string _name = string.Empty;
    private string _surname = string.Empty;

    public int id { get { return _id; } set { _id = value; } }
    public string Name { get { return _name; } set { _name = value; } }
    public string Surname { get { return _surname; } set { _surname = value; } }
}

Я подключил диагностический приемник db4o и ничего не вижу в выводе консоли. Все вроде нормально. Я знаю, что пишу в файл, потому что вижу увеличение размера файла, а также обновляется отметка времени. Я проверил все настройки проекта, и все они установлены по умолчанию. Я использую .net 4, Visual Studio 2010 бета и Windows 7. Я прочитал некоторые относительно разрешения на отражение, но я не вижу, как это применимо здесь Любая помощь или идеи будут с благодарностью оценены.

1 Ответ

0 голосов
/ 13 апреля 2011

После вызова store () необходимо выполнить commit () перед выходом из оператора using {}. Вы закрыли базу данных перед тем, как вносить изменения.

...