在读取View的数据时如何添加选择参数?

时间:2011-10-15 14:28:05

标签: sql asp.net-mvc asp.net-mvc-3 entity-framework

我正在asp.net中创建一个MVC 3 Web应用程序。它应该像一个小社区,用户可以相互发送消息(以后也可以发送给指定的人群)。所以在我的数据库中,我有表Users和Messages。消息(消息)中的一行包含发送者和接收者(Users表的外键)以及一些其他信息,例如标题,发送日期,当然还有消息文本。

当用户访问已登录用户的索引页面时,我想显示已发送给该用户或从该用户发送的所有消息。因此,当从Messages表中读取消息时,我想使用一个参数,即登录用户的id(我可以在我的控制器中访问)。所以我有参数,但在获得结果时我不知道如何使用它。我知道必须有一种方法可以正确地执行此操作,而不是在代码中放入一堆sql并以丑陋的方式启动连接。

正如您现在可以看到的那样,所有将检索表中的消息并将其发送到View以便将其显示给用户。

社区实体框架是整个实体框架的一部分,虽然我一直在关注一些教程,但还不确定这些内容是如何工作的那样:

Creating-an-entity-framework-data-model-for-an-asp-net-mvc-application

Mvc-music-store-part-1)。

UserController.cs:

...

CommunityEntities db = new CommunityEntities();

public ActionResult Index()
    {
        var messages = db.Messages.ToList();
        return View(messages);
    }

...

CommunityEntities.cs:

public class CommunityEntities : DbContext
{
    public DbSet<User> Users { get; set; }        
    public DbSet<Message> Messages { get; set; }
}
编辑:我确实尝试过使用db.Database.SqlQuery(...),但这似乎是错误的,因为重点是正确地做到这一点并且“整洁”。这是为了我的教育,我的老师会对应用程序的结构挑剔。

1 个答案:

答案 0 :(得分:1)

您需要where子句:

var messages = db.Messages.Where( m => m.SentById == id || m.SentToId == id ).ToList();