2011-05-26 107 views
6

我最近一直在玩RavenDB,有些东西让我很烦恼。在RavenDb中引用一个值对象父实体对象

我有一个实体对象与一系列值对象,例如

class Foo 
{ 
    IList<Bar> Bars { get; set; } 
} 

有很多时候,我想将Bar类型的对象传递给方法/类,但在某些时候想要引用回父实体。在NHibernate的世界中,如果我使用1 .. *关系进行配置,这非常简单,例如,

class Bar 
{ 
    Foo Foo { get; set; } 
} 

然而RavenDb并没有真正像这导致了我要创建这样的方法:

void DoSomething(Foo foo, Bar bar) 
{ 
    Console.WriteLine(foo); 
    Console.WriteLine(bar); 
} 

而不是

void DoSomething(Bar bar) 
{ 
    Console.WriteLine(bar.Foo); 
    Console.WriteLine(bar); 
} 

有没有办法用RavenDb实现这一目标?我认识到RavenDb(和一般的文档数据库)促进了一种处理实体的不同思维方式,如果这只是我在关系/规范化世界中花费太长时间的情况,任何人都可以解释我应该如何以更多文档数据库的方式构建我的代码?

+1

也许会更容易些,如果你想在短说明你所要做的。了解你的BL可能会帮助我们想出一个更适合RavenDB的实体结构 – synhershko 2011-05-26 15:36:32

回答

8

你当然可以这样做:

class Bar 
{ 
    Foo Foo { get; set; } 
} 

你只需要确保您设置:

documentStore.Conventions.CustomizeJsonSerializer = 
     serializer => serializer.ReferenceLoopHandling = ReferenceLoopHandling.Serialize; 
相关问题