0

我正在学习实体框架和 MVC。

这是我的模型:

    public class ChatLogContext : DbContext
{
    public ChatLogContext()
        : base("connString")
    {
    }

    public DbSet<ChatLogs> ChatLogs { get; set; }
}

[Table("ChatLogs")]
public class ChatLogs
{
    [Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public int ChatLogId { get; set; }
    [Column("Message")]
    public string Message { get; set; }
    [Column("UserId")]
    public int UserId { get; set; }

}

这是我的控制器代码:

        public ActionResult Index()
    {

        using(var db = new ChatLogContext())
        {
            var list = db.ChatLogs.Select(p => p.Message).SingleOrDefault();
            ViewBag.data = list;
            return View();

        }


    }

然后我在视图中访问该数据,如下所示:

@model Chat.Models.ChatLogs
@Html.Raw(ViewBag.data)

我可以访问 1 条记录,如此处所示。

但我想了解,如何使用实体框架访问表 ChatLogs 中的所有记录,并使用 Razor 方法(foreach)将其传递给查看,这样我就可以格式化该数据(我不喜欢 VS 生成的默认表)。我现在将 ViewBag 用于一行和一列,这是我来的最远的地方。

我只是在谷歌上找不到可以帮助我大脑的例子。

帮助表示赞赏。

PS:使用纯实体还是混合linq(linq to entity)更好?

4

1 回答 1

0

通常,索引操作用于显示所有实体的网格(在本例中为ChatLogs)。

Razor 视图引擎的要点之一是您可以得到类型化的视图。所以通常我会直接将数据传递给视图,而不是使用 ViewBag。

public ActionResult Index()
{

    using(var db = new ChatLogContext())
    {
        var list = db.ChatLogs.ToList();
        return View(list);

    }
}

下一步是将 View 键入到IEnumerable<ChatLog>. Visual Studio 应该可以帮助您。然后你就可以foreach通过 ChatLogs 了。

于 2013-08-05T03:11:28.147 回答