gpt4 book ai didi

c# - RavenDB 中的循环引用

转载 作者:太空狗 更新时间:2023-10-29 22:33:41 27 4
gpt4 key购买 nike

我将 RavenDB 与以下模型一起使用:

public class Cart {
List<Item> Items = new List<Item>();
}

public class Item {
public Cart Cart;
}

当我将一个 Item 添加到一个 Cart 时,我连接了关系的两边。

RavenDB 如何处理序列化和反序列化?Cart 的引用是自动分配的还是有办法在加载时手动连接它?

最佳答案

如果您保存购物车,您将在调用 SaveChanges() 时收到异常“检测到自引用循环...”。

修复很简单。您将 [JsonObject(IsReference = true)] 属性添加到购物车。这告诉序列化程序将 Item 的购物车存储为引用而不是新对象。

[JsonObject(IsReference = true)] 
public class Cart
{
public List<Item> Items = new List<Item>();
}

public class Item
{
public Cart Cart;
}

我还想提及它是反序列化的属性。换句话说,Cart 在加载时被重新分配给 Item。

var cart = new Cart();
cart.Items.Add(new Item { Cart = cart });
session.Store(cart);
session.SaveChanges();

...

var cart = session.Query<Cart>().First();
Assert.ReferenceEquals(cart, cart.Items.First().Cart); //this works

关于c# - RavenDB 中的循环引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10068636/

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