我在我的控制器中有这个工作,但我想遵循最佳实践并将我的数据库逻辑放在模型中。
我想将所有数据库逻辑(选择、更新、删除、插入)放到模型中,因此我在模型中创建方法。
我检索数据的方法:
public IQueryable<ChatLogsNameViewModel> getChatLogWithName()
{
using (var db = new ChatLogContext())
{
var list = (from b in db.ChatLogs
select new ChatLogsNameViewModel()
{
UserProfile = b.UserProfile,
Message = b.Message,
Time = b.Time
});
return list;
}
}
这是我的模型视图:
public class ChatLogsNameViewModel
{
public UserProfile UserProfile { get; set; }
public string Message { get; set; }
public DateTime Time { get; set; }
}
我在控制器中调用 getChatLogWithName() 方法,如下所示:
List<ChatLogsNameViewModel> items = null;
using (var dba = new ChatLogContext())
{
items = dba.getChatLogWithName().ToList();
return View(items);
}
我得到的错误是:
操作无法完成,因为 DbContext 已被释放。
这样做的正确方法是什么?我只想将集合(通过连接来自 2 个表的所有记录)传递给控制器。