数据库上下文-从类别中选择帖子的查询



我在asp.net mvc 4测试项目中使用DB上下文方法。

这是我的域类

Category.cs

public class Categroy
{
    public virtual int Id { get; set; }
    public virtual string CategoryName{ get; set; }
    public virtual ICollection<Post> Post{ get; set; }
}

Post.cs

public class Post
{
    public virtual int Id { get; set; }
    public virtual string Title { get; set; }
    public virtual string Description { get; set; }
}

IPostsDateSource.cs

public interface IPostsDataSource
{
    IQueryable<Category> Categories{ get; }
    IQueryable<Post> Posts { get; }
    void Save();
}

PostsDB.cs

public class PostsDB:DbContext,IPostsDataSource
{
    public PostsDB():base("DefaultConnection")
    {
    }
    public DbSet<Category> Categories{ get; set; }
    public DbSet<Post> Posts{ get; set; }
    void IPostsDataSource.Save()
    {
        SaveChanges();
    }
    IQueryable<Category> IPostsDataSource.Categories
    {
        get { return Categories; }
    }
    IQueryable<Post> IPostsDataSource.Posts
    {
        get { return Posts; }
    }
}

我使用StructureMap进行映射IoC.cs

...
x.For<IPostsDataSource>().HttpContextScoped().Use<PostsDB>();
...

在我的HomeController中,我是

private IPostDataSource _db;
public HomeController(IAdsDataSource db)
{
    _db = db;
}

我可以检索_db.Posts的所有帖子

public ActionResult Index()
    {
        var Posts= _db.Posts;
        ViewBag.Posts = Posts;
        return View();
    }

问题是我应该写什么查询,以便从特定类别检索所有帖子

如果一个类别有一个Post的集合,那么Post实体应该有一个CategoryID属性。您可以基于该CategoryID进行查询。

否则,您可以查询类别并检索相应的帖子列表:

var cat = _db.Categories.Where(a => a.Id == catId).FirstOrDefault();
if(cat != null)
    ViewBag.Posts = cat.Posts;
return View();

相关内容

  • 没有找到相关文章

最新更新