直接指向我的观点:我想拥有独立的对象模型,我不会引用任何数据库引擎库,这样我就可以在多个对象或文档数据库中使用该模型(例如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(我已经涵盖的索引)等功能?
答案 0 :(得分:0)
关于 IActivatable 接口,db4o确实需要可激活类型来实现此接口;如果您可以在模型程序集中使用db4o引用,那么db4otool可以为您添加此接口的实现(选项-ta and maybe -collections)(因此在源代码级别的模型类中没有对db4o的引用,也不需要执行任何额外的工作)。
关于TransientAttribute,您有一些选择:
希望这有帮助!