从db4o数据库加载对象

时间:2010-01-24 11:28:52

标签: object loading db4o permissions

我正在开发一个利用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 beta和windows 7.我已经完成了一些关于反射许可的阅读,但我不知道这在这里是如何适用的。任何帮助或想法都会受到赞赏。

1 个答案:

答案 0 :(得分:0)

在调用store()之后,您需要在离开using {}语句之前提交()。在提交更改之前,您已关闭数据库。