防止LINQ to SQL返回子对象

史考特

我是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,
}]

谢谢!

亚历山大(Alexandre)

我相信问题在于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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

防止使用Linq2Sql插入Entity对象

来自分类Dev

Linq To SQL:防止创建重复项

来自分类Dev

Linq to SQL删除/添加子对象

来自分类Dev

使用LINQ返回的对象

来自分类Dev

返回新的 LINQ 对象

来自分类Dev

防止在返回时复制对象

来自分类Dev

防止在linq-to-sql中将数字转换为Scientifc表示法

来自分类Dev

LINQ TO SQL子查询

来自分类Dev

如何使此SQL查询起作用,以防止出现“子查询返回多行”错误?

来自分类Dev

使用linq填充子对象

来自分类Dev

Linq to XML:防止NullReferenceExpception

来自分类Dev

C#Linq返回对象

来自分类Dev

SQL 到 Linq 转换在子查询中返回默认值

来自分类Dev

如何进行LINQ Select,使其包含子对象(如SQL外连接)?

来自分类Dev

在LINQ to SQL中按导航属性(子对象)过滤查询的最佳方法

来自分类Dev

如何在联接两个表时向SQL返回Linq中的匿名对象列表

来自分类Dev

保存子对象失败时,防止保存父对象

来自分类Dev

保存子对象失败时,防止保存父对象

来自分类Dev

LINQ根据与子元素的匹配返回元素

来自分类Dev

从对象子列表(LINQ)中删除项目

来自分类Dev

从分组的LINQ语句返回值的对象

来自分类Dev

LINQ可以返回嵌套的对象集吗?

来自分类Dev

Unity linq返回匹配对象

来自分类Dev

Linq to Entities多对多返回嵌套对象

来自分类Dev

循环并更新LINQ查询,返回多个对象

来自分类Dev

IEnumerable类型的LINQ对象不返回DataTable

来自分类Dev

Linq to EF:返回 IQueryable 对象的混淆

来自分类Dev

使用 Linq 从嵌套类返回新对象

来自分类Dev

如何使用 linq 返回与 lambda 相同的对象