我正在学习实体框架和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到实体)更好吗?
答案 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。