我刚刚开始学习我的第一个MVC应用程序。在我看来,我的代码与导师完全匹配,但是我收到了错误:
' System.Data.SqlClient.SqlException:无效的对象名称' dbo.Employees'。' ' [SqlException(0x80131904):无效的对象名称' dbo.Employees'。]'
我的数据库名为' Sample',网络配置反映了这一点。
任何人都可以看到我明显的错误吗?
感谢
员工模型
namespace MvcApplication2.Models
{
public class Employee
{
public int EmployeeId { get; set; }
public string Name { get; set; }
public string Gender { get; set; }
public string City { get; set; }
}
}
员工控制器
namespace MvcApplication2.Controllers
{
public class EmployeeController : Controller
{
public ActionResult Details(int id)
{
EmployeeContext employeeContext = new EmployeeContext();
Employee employee = employeeContext.Employees.Single(emp => emp.EmployeeId == id);
return View(employee);
}
}
}
EmployeeContext.cs模型
namespace MvcApplication2.Models
{
[Table("tblEmployee")]
public class EmployeeContext : DbContext
{
public DbSet<Employee> Employees { get; set; }
}
}
WebConfig
<connectionStrings>
<add name="EmployeeContext" connectionString="Data Source={servername};Initial Catalog=Sample;Integrated Security=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
Global.asax中
Database.SetInitializer<MvcApplication2.Models.EmployeeContext>(null);
答案 0 :(得分:1)
您在错误的班级上有数据注释。您已将[Table("tblEmployee")]
放在实体上,而不是上下文。
它应该高于你的Employee
类,如此:
[Table("tblEmployee")]
public class Employee
{
public int EmployeeId { get; set; }
public string Name { get; set; }
public string Gender { get; set; }
public string City { get; set; }
}
答案 1 :(得分:1)
嘿我也在引用http://csharp-video-tutorials.blogspot.com/2013/05/part-8-data-access-in-mvc-using-entity.html
中的同一个教程系列添加
using System.ComponentModel.DataAnnotations;
然后使用[Key]覆盖表的主键属性。即EmployeeId。
因此,您的代码将如下所示:
[Table("tblEmployee")]
public class Employee
{
[Key]
public int EmployeeId { get; set; }
public string Name { get; set; }
public string Gender { get; set; }
public string City { get; set; }
}
不使用密钥,您将获得&#34;在模型生成期间检测到一个或多个验证错误&#34;。
如果您需要更多帮助,我很乐意帮助您,因为我也在学习同一系列课程。 :)
快乐学习......!
答案 2 :(得分:0)
您是否正在使用Code First?您可能需要设置正确的初始化程序,以便Entity Framework将创建您的数据库(如果它不存在)。
在Global.asax的Application_Start中设置它:
Database.SetInitializer<EmployeeContext >(new CreateDatabaseIfNotExists<EmployeeContext >());
答案 3 :(得分:0)
发现了这个问题。由于某种原因,它没有使用我的数据注释
[Table("tblEmployee")]
删除它并重命名我的tbl似乎可以完成这项工作。有人知道它忽略了我的注释吗?
答案 4 :(得分:0)
1.这个错误非常简单我认为你的连接Strinng无效 所以, 1.右键单击mvc中的服务器资源管理器 2.继续“数据连接”并右键单击“数据连接”,然后单击“添加连接” 单击“Microsoft Sql Server”,然后“确定”为Exapmle写入服务器名称我的服务器名称是在哪个数据库中创建的“(localdb)\ ProjectsV13” 3.选择或输入数据库名称,测试连接和测试连接成功 4.单击提前选择并复制例如“Data Source =(localdb)\ ProjectsV13; Integrated Security = True”,然后继续执行项目“web.config”文件并添加连接字符串 在这里也许你 1.EmployeeContext 2.connectionString =“Data Source =(localdb)\ ProjectsV13; Initial Catalog = Database2; Integrated Security = True” 不同的其他代码保持不变。 三江源。