我正在使用JSON
从我的数据库中创建LINQ to SQL
。我设置了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关系),而不是使用这些(3)数字检索JSON
数组,则会显示:
"Phones": null,
如何“强制”User
查询其中的所有数据/关系?
如果我在序列化之前执行此查询(例如):
var phones = m_oAlumno.Telefono.ToList();
它说“检测到'用户'类型的自引用循环。”
答案 0 :(得分:0)
在LINQ to SQL中,您可以使用DataLoadOptions加载引用的实体。
var loadOptions = new DataLoadOptions();
loadOptions.LoadWith<User>(u => u.PhoneNumber);
db.LoadOptions = loadOptions;
其中PhoneNumber是引用User的实体,并假设 db 是您的linq数据上下文。