C# 在RavenDb中引用值对象父实体对象

C# 在RavenDb中引用值对象父实体对象,c#,domain-driven-design,ravendb,ddd-repositories,C#,Domain Driven Design,Ravendb,Ddd Repositories,我最近一直在和RavenDB一起玩,有些东西让我有点恼火 我有一个实体对象和一系列值对象,例如 class Foo { IList<Bar> Bars { get; set; } } 然而,RavenDb并不喜欢这样,这导致我不得不创建如下方法: void DoSomething(Foo foo, Bar bar) { Console.WriteLine(foo); Console.WriteLine(bar); } 而不是 void DoSomething

我最近一直在和RavenDB一起玩,有些东西让我有点恼火

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

class Foo
{
   IList<Bar> Bars { 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(以及一般的文档数据库)促进了一种处理实体的不同思维方式,如果这只是我在关系/规范化世界中花费太长时间的情况,有人能解释一下我应该如何以更文档数据库的方式构建代码吗?

你当然可以这样做:

class Bar
{
   Foo Foo { get; set; }
}
您只需确保设置:

documentStore.Conventions.CustomizeJsonSerializer =
      serializer => serializer.ReferenceLoopHandling = ReferenceLoopHandling.Serialize;

如果你能简单地描述一下你想做什么,也许会更容易些。了解您的BL可能会帮助我们找到更适合RavenDB的实体结构
documentStore.Conventions.CustomizeJsonSerializer =
      serializer => serializer.ReferenceLoopHandling = ReferenceLoopHandling.Serialize;