基本的db4o问题

时间:2011-07-20 00:57:36

标签: c# db4o

我对db4o非常陌生,而且对于c#一般而言,我很难解决如何开始使用它 - 提供的教程并没有帮助我很多 - 我理解它的主旨,但是我无法理解放置基本代码的位置,例如

using(IObjectContainer db = Db4oEmbedded.OpenFile(YapFileName))
{
   //do something with db4o
}

我确信这归结于我缺乏c#知识,但如果有人能指出我正确的方向(即使是一个体面的教程,有完整的例子,所以我可以看到一个实现了db4o的项目),这将是很棒的: )

我来自网络开发背景,因此数据库的想法没有问题,但由于某些原因我似乎无法完全理解c#的做事方式

1 个答案:

答案 0 :(得分:5)

这真的归结为你想要建立的东西。您是否只是在玩测试数据库,或者您是否正在尝试构建特定的项目/程序?访问数据库应该与任何其他项目一样对待。

例如,如果您使用数据库来存储员工,并希望返回姓氏为“Smith”的所有员工,那么您可以执行以下操作(非常基本的示例而不是良好的设计......试图显示代码将在何处运行):

public class Employee
{
    public FirstName { get; set; }
    public LastName { get; set; }

    public Employee(string firstName, string lastName)
    {
        FirstName = firstName;
        LastName = lastName;
    }
}

public static class EmployeeFactory
{
    public static IEnumerable<Employee> GetEmployeesNamedSmith(IObjectContainer db)
    {
        var employees = from Employee e in db
                        where e.LastName.Equals("Smith")
                        select e;

        foreach (var emp in employees)
        {
            yield return emp;
        }
    }
}

在您的主应用程序中,您可以使用以下内容:

public static void Main()
{
    var config = Db4oEmbedded.NewConfiguration();

    // code to create and add employees goes here.

    // access employees that have Smith as the last name

    using (var db = Db4oEmbedded.OpenFile(config, "database.db4o"))
    {
        foreach (var e in EmployeeFactory.GetEmployeesNamedSmith(db))
        {
            Console.WriteLine(e.FirstName + " " + e.LastName);
        }
    }
}

免责声明:我还没有尝试编译这段代码,只是涉足db4o(自从我上次触摸它以来已经有6个月了......虽然我想再试一次)。

希望这在某种程度上有所帮助。我不确定这是不是你想要的。