有没有办法实现TransparentActivation而不将db4o libs引用到模型中?

时间:2013-04-07 11:27:13

标签: c# db4o

直接指向我的观点:我想拥有独立的对象模型,我不会引用任何数据库引擎库,这样我就可以在多个对象或文档数据库中使用该模型(例如RavenDB,db4o) ,eloquera等。)

另一方面,我将首先设计db4o,所以让我们想象下面的对象模型类:

public class User : IActivatable
{
    [Indexed]
    private string name;

    [Transient]
    private string securityinfo;

    ....
}

我已经拥有的一些解决方案(索引,级联):

  • [Indexed]属性我可以在dbconfig端配置,如:config.Common.ObjectClass(typeof(User)).ObjectField("name").Indexed(true);
  • 删除[Transient]属性 - ??
  • 删除IActivatable - ?? (我当时正在考虑使用Postsharp的仪器,它可以在编译后注入接口的实现,但它仍然需要引用Db4objects.Db4o.dll .Db4oTool仪器可以这样做吗?)

所以问题:

如何从对象模型项目中删除Db4objects.Db4o.dll的引用,并且仍然能够应用TransparentActivation和Transience(我已经涵盖的索引)等功能?

1 个答案:

答案 0 :(得分:0)

关于 IActivatable 接口,db4o确实需要可激活类型来实现此接口;如果您可以在模型程序集中使用db4o引用,那么db4otool可以为您添加此接口的实现(选项-ta and maybe -collections)(因此在源代码级别的模型类中没有对db4o的引用,也不需要执行任何额外的工作)。

关于TransientAttribute,您有一些选择:

  • 依靠NonSerialized属性
  • 指定您自己的属性作为transient处理。

希望这有帮助!