MVC实体框架 - 连接到数据库

时间:2014-03-19 10:53:42

标签: entity-framework model-view-controller

我刚刚开始学习我的第一个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);

5 个答案:

答案 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” 不同的其他代码保持不变。  三江源。