如何强制查询检索嵌套元素数据

本文关键字:元素 数据 嵌套 检索 何强制 查询 | 更新日期: 2023-09-27 18:15:10

我正在从我的数据库中使用LINQ to SQL制作JSON。我已经设置了Serialization Mode Unidirectional(所以我可以序列化数据),一旦我查询我的对象(User),我将其转换为JSON:

[WebMethod]
public User GetUserByID(int ID)
{
    User user = db.User.Where(p => p.ID == ID).FirstOrDefault();
    var json = JsonConvert.SerializeObject(user, new IsoDateTimeConverter());
    return user;
}

问题是,在结果JSON上,嵌套的数据/对象(即我对该对象与其他对象/表的关系)是null

因此,例如,如果我有3个电话号码(1-n关系)为该用户,而不是检索JSON数组与这(3)个数字,它放:

"Phones": null,

我如何"强制"User被查询与所有数据/关系在它里面?

如果我在序列化之前执行这个查询(例如):

var phones = m_oAlumno.Telefono.ToList();

它说"检测到类型'User'的自引用循环。"

如何强制查询检索嵌套元素数据

在LINQ to SQL中,您可以使用DataLoadOptions加载引用的实体。

var loadOptions = new DataLoadOptions();
loadOptions.LoadWith<User>(u => u.PhoneNumber);
db.LoadOptions = loadOptions;

其中PhoneNumber是一个引用User的实体,并且假设db是你的linq数据上下文