实体框架如何传递数据进行查看?

时间:2013-08-05 03:02:45

标签: asp.net-mvc entity-framework

我正在学习实体框架和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一行和一列,这是我来的最远。

我在Google上找不到可以帮助我的大脑的例子。

帮助表示赞赏。

PS:使用纯实体或混合linq(linq到实体)更好吗?

1 个答案:

答案 0 :(得分:0)

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

Razor View Engine的一个要点是你可以获得键入的视图。因此,通常我会将数据直接传递给视图,而不是使用ViewBag。

public ActionResult Index()
{

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

    }
}

下一步是将视图键入IEnumerable<ChatLog>。 Visual Studio应该为您提供帮助。然后你可以{_ 1}}通过ChatLogs。