C# 在RavenDb中引用值对象父实体对象
我最近一直在和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
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;