我正在尝试从具有特定外键的表中获取所有记录,但我很难让linq返回任何有用的内容。
发布模型
public class Post
{
//... irrelevant properties
[ForeignKey("Category")]
public int CategoryId;
public virtual Category Category { get; set; }
}
我的dbo.Posts表
我尝试了什么
我尝试了以下几种变体:
//id = 7
using (UnitOfWork uwork = new UnitOfWork())
{
var post = uwork.PostRepository.GetAll().Where(c => c.CategoryId == id);
}
这只返回“非公开成员”,它不包含任何有用的内容。
如何修改我的linq查询以返回具有特定外键ID的所有帖子?
更新
答案 0 :(得分:3)
您似乎基本上在查看DbQuery<T>
对象,这是IQueryable<T>
的实现。基本上LINQ还没有进行查询,因为没有人问它数据。因此,它会收集有关对象中查询的所有信息,以便在以后需要时执行。
要强制它为您提供实际数据,只需执行ToList
,或迭代帖子或任何内容:
var post = uwork.PostRepository.GetAll().Where(c => c.CategoryId == id).ToList();
确保在之前公开db上下文对象。