- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有两门课:
public class Question
{
public IList<Answer> Answers { get; set; }
}
public class Answer
{ .. }
在我的 Linq2Sql 设计器中,设计器上有两个 L2S 对象,它们之间有正确的 0<->many 箭头。基尔。
我不确定如何在一次调用中检索这些问题/答案并填充我的 POCO 对象..
这就是我所拥有的......有人可以填补空白吗?
public IQueryable<Question> GetQuestions()
{
return from q in _db.Questions
select new Question
{
Title = q.Title,
Answers = ???????? // <-- HALP! :)
};
}
想法?
感谢您的回复,但还没有 100% 完成。
首先,我返回 POCO 类,而不是 Linq2Sql 上下文类。这就是我这样做的原因...
select new Question { .. };
该类是 POCO,而不是 linq2sql。
其次,我喜欢指向执行 Answers = q.Answers.ToList() 的答案,但这也不起作用,因为它试图将 Linq2Sql 类设置为 POCO 类。
最佳答案
如果 LINQ to SQL 类之间存在关系,则应该在“问题”LINQ to SQL 类上生成“答案”属性。所以你应该能够简单地做到这一点:
return from q in _db.Questions
select new Question
{
Title = q.Title,
Answers = q.Answers.ToList(),
}
您也许可以省略对 ToList() 的调用 - 我不确定 LINQ to SQL 用于生成相关行的类型(我相信是 IQueryable<T>
)。
要强制预先填充 Answers 属性,而不是为每个问题触发另一个查询,您可以使用 DataLoadOptions类(class)。本质上,您可以告诉 LINQ to SQL 在您查询问题时加载答案(使用 LoadWith 方法 - 请参阅 MSDN 文档)。
编辑
你是对的 - 因为你的 Question.Answers 属性是你自己的 POCO 列表,所以用 q.Answers 分配它并不是正确的方法。这可能会更好:
return from q in _db.Questions
select new Question
{
Title = q.Title,
Answers = (from a in q.Answers
select new Answer { ... }).ToList(),
}
关于.net - 如何从 Linq2Sql 查询填充 POCO(子)IList 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/370664/
我是一名优秀的程序员,十分优秀!