一次加载多种类型的文档
Load Multiple types of Documents at Once
我有两种不同的文档类型
public class One
{
public int Id { get;set; }
public string Name { get;set; }
}
public class Two
{
public int Id { get;set; }
public string Name { get;set; }
}
我有第二个对象包含对这两个文档的引用
public class FeedMeDocs
{
public One one {get;set;}
public Two two {get;set;
}
是否可以在 调用数据库中填充给定文档 ID 的 FeedMeDocs 对象。
像这样
var numbers = session.Load<One>("1").AlsoLoad<Two>("2")
.ProjectInto<FeedMeDocs>();
这是可怕的伪编码,但只是我所追求的内容的一般概念。我查看了 includes
方法,但这似乎不是一个有效的用例,因为这两个文档完全不相关。
One
和 Two
真的 aggregate roots 需要直接存储吗(例如:为什么不直接将 FeedMeDocs
存储在 ravendb 中)?你不能以关系数据库的心态进入 documentdb,否则你最终会解决错误的问题。
就是说,如果您要按每个文档的 ID 加载单个文档,那么做您正在尝试的事情相当简单:
var numbers = new FeedMeDocs() {
one = session.Load<One>("1"),
two = session.Load<Two>("2")
};
您可以使用 lazy loading:
Lazy<One> oneLazy = session.Advanced.Lazily.Load<One>("ones/1");
Lazy<Two> twoLazy = session.Advanced.Lazily.Load<Two("twos/2");
var numbers = new FeedMeDocs() {
one = oneLazy.Result,
two = twoLazy.Result
};
首次访问 Lazy<>
中的一个 Result
时,会话将向服务器查询收集的 Load
。
我有两种不同的文档类型
public class One
{
public int Id { get;set; }
public string Name { get;set; }
}
public class Two
{
public int Id { get;set; }
public string Name { get;set; }
}
我有第二个对象包含对这两个文档的引用
public class FeedMeDocs
{
public One one {get;set;}
public Two two {get;set;
}
是否可以在 调用数据库中填充给定文档 ID 的 FeedMeDocs 对象。
像这样
var numbers = session.Load<One>("1").AlsoLoad<Two>("2")
.ProjectInto<FeedMeDocs>();
这是可怕的伪编码,但只是我所追求的内容的一般概念。我查看了 includes
方法,但这似乎不是一个有效的用例,因为这两个文档完全不相关。
One
和 Two
真的 aggregate roots 需要直接存储吗(例如:为什么不直接将 FeedMeDocs
存储在 ravendb 中)?你不能以关系数据库的心态进入 documentdb,否则你最终会解决错误的问题。
就是说,如果您要按每个文档的 ID 加载单个文档,那么做您正在尝试的事情相当简单:
var numbers = new FeedMeDocs() {
one = session.Load<One>("1"),
two = session.Load<Two>("2")
};
您可以使用 lazy loading:
Lazy<One> oneLazy = session.Advanced.Lazily.Load<One>("ones/1");
Lazy<Two> twoLazy = session.Advanced.Lazily.Load<Two("twos/2");
var numbers = new FeedMeDocs() {
one = oneLazy.Result,
two = twoLazy.Result
};
首次访问 Lazy<>
中的一个 Result
时,会话将向服务器查询收集的 Load
。