我的控制器代码
ParaEntities db = new ParaEntities();
public List<Client> GetAllClients()
{
return db.Client.ToList();
}
Please click this link to see the error message
奇怪的是,当我第一次点击按钮获取所有客户信息时,它会响应500.在第二次,我点击按钮获取所有客户端,这是成功的。
答案 0 :(得分:1)
您应该分配变量并在View中显示数据。 请在下面写下来更改语法。
ParaEntities db = new ParaEntities();
public List<Client> GetAllClients()
{
var getData= db.Client.ToList();
if(getData==null)
{
return null;
}
return getData;
}
答案 1 :(得分:0)
请试试这个
public List<Client> GetAllClients()
{
ParaEntities db = new ParaEntities();
return db.Client.ToList();
}
答案 2 :(得分:0)
此错误指向连接问题,而不是代码问题。检查connectionstring是否有效以及connectionstring中指定的用户是否可以访问数据库。如果您在IIS上运行该应用程序,请确保applicationpool用户可以访问该数据库。 Here是他们解决了这个错误的另一个问题。
如果要将db上下文存储为控制器类中的本地变量,那么我建议您在控制器构造函数中实例化它。然后确保每次创建控制器实例时都会创建新的db上下文。 让我们说你的控制器namned ClientController
private ParaEntities db;
public ClientController()
{
this.db = new ParaEntities();
}
public List<Client> GetAllClients()
{
return db.Client.ToList();
}
另一种方法是将db上下文包装在方法内的using语句中。在这种情况下,您确保该方法在被调用时使用了新的上下文,并且在操作完成时正在处理上下文。
public List<Client> GetAllClients()
{
using(ParaEntities db = new ParaEntities())
{
return db.Client.ToList();
}
}
PS:这两个例子都违反了依赖倒置原则(硬连接到db上下文),但那是另一天