gpt4 book ai didi

c# - 在 RavenDb 中建立一对多模型以获得更好的性能

转载 作者:太空宇宙 更新时间:2023-11-03 18:57:34 24 4
gpt4 key购买 nike

我正在处理文档数据库,我对如何映射文档关系有点困惑,情况如下

public class Person
{
public Person()
{
}
public int Id { get; set; }
public string Name { get;set;}
public string Surname { get; set; }
public DateTime? BirthDate { get; set; }
}


public class Car
{
public Car() { }
public int Id { get; set; }
public string Name { get; set; }
public int PersonId { get; set;}
}

例如,一个人有一辆或多辆汽车,我可以按如下方式查询数据库

public Car Get(int id)
{
Car car = null;
using (IDocumentSession session = store.OpenSession())
{
car = session.Include<Car, Person>(x => x.PersonId).Load<Car>(id);
bool isLoaded = session.Advanced.IsLoaded("people/" + car.PersonId); // true!
}
return car;
}

一切正常,客户只发出一个请求,但是如果我有一个人并且我想展示他的所有汽车,我该如何查询数据库来执行一个请求?我认为我必须修改模型放置一个 List<int> CarsPerson供引用他的车。请注意,我不想嵌入 CarsPerson文件因为Cars可以引用其他文档。

谢谢。

最佳答案

你可以这样做:

using (IDocumentSession session = store.OpenSession())
{
var carsForOne = session.Query<Car>()
.Include(x=>x.PersonId)
.Where(x=>x.PersonId == "people/1")
.ToList();

var person = session.Load<Person>("people/1");
}

这只会发出一个数据库请求。

关于c# - 在 RavenDb 中建立一对多模型以获得更好的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41547501/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com