我是LINQ to SQL新手。我有一个带有两个表的简单数据库。活动和问题。Questions表具有一个EventId列,该列是Events表的外键。
我的查询如下所示:
var questions = db.Questions.Where(u => u.EventId == 1);
生成的对象如下所示:
[{
"QuestionId": 1,
"Text": "",
"EventId": 1,
"Event": {
"EventId": 1,
"Title": "Event Name",
"Questions": [ {
"QuestionId": 1,
"Text": "",
"EventId": 1 } ]
}
}]
LINQ to SQL似乎正在自动添加相关事件,并且还将相关问题再次添加到该事件。我不得不转而告诉JSON.Net忽略递归引用,以便它可以工作,但是我感觉我的查询是正确的,或者我没有正确配置数据库内容。
尽管在某些情况下获取相关对象数据很酷,但我在这里不需要它。我该如何调整事情,这样我才能得到问题,例如:
[{
"QuestionId": 1,
"Text": "",
"EventId": 1,
}]
谢谢!
我相信问题在于Json.Net在您仍打开数据库上下文的同时浏览了您的对象(包括虚拟导航属性),从而导致其延迟加载引用。
一个简单的修复方法是在序列化结果之前处理数据库上下文或分离对象。
另一个解决方法是使用选择来创建新的分离对象。
var questions = db.Questions.Where(u => u.EventId == 1).Select(u => new
{
QuestionId: u.QuestionId,
Text: u.Text,
EventId: u.EventId,
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句