如果我有一个只有私有属性的对象,例如
public class Foo
{
private int Id { get; set; }
private string Bar { get; set; }
private string Baz { get; set; }
}
并将其存储在 Raven 中,它将存储这些属性,并且一切都像魔术一样工作。如果我想对集合进行某种只读查询,我将如何使用索引来执行此操作?(我实际上对任何解决方案持开放态度,即使它不使用索引。)
显然,由于私有访问(并且动态不能在表达式树中使用),这样的事情不会起作用:
public class Foo_LineItems : AbstractIndexCreationTask<Foo, FooLineItem>
{
public Foo_LineItems ()
{
Map = foos => foos.Where (x => x.Baz == null)
.Select (x => new { x.Id, x.Bar });
}
}
我确定我忽略了一些东西,但是一直在网上搜索,找不到任何可以回答这个特定问题的东西。显而易见的答案是使用 CQRS 分离读取和写入,而不是实际保存原始域对象。(这只是 Raven 和 CQS 的实验。)