我在这行代码中得到了这个错误 -
ReportRunnerEntities reportDB = new ReportRunnerEntities();
public ActionResult Index()
{
**var types = reportDB.ReportTypes.ToList();**
return View(types);
}
数据库中的表定义了主键并设置了标识。
我的模特是 -
namespace ReportRunner.Models
{
public partial class ReportRunnerEntities : DbContext
{
public DbSet<Reports> Report { get; set; }
public DbSet<ReportTypes> ReportTypes { get; set; }
public DbSet<Users> Users { get; set; }
}
}
namespace ReportRunner.Models
{
public partial class ReportTypes
{
public int ReportTypeId { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public List<Reports> Reports { get; set; }
}
}
namespace ReportRunner.Models
{
public class Reports
{
public int ReportId { get; set; }
public int ReportTypeId { get; set; }
public int UserId { get; set; }
public string Title { get; set; }
public ReportTypes ReportType { get; set; }
}
}
namespace ReportRunner.Models
{
public partial class Users
{
public int UserId { get; set; } //ArtistId
public string Name { get; set; }
}
}
这是我的连接字符串 -
我怀疑它永远不会到达数据库。正如我所说,密钥是在数据库中设置的。
我错过了什么吗?
答案 0 :(得分:2)
我认为有些事情应该改变:
ReportTypes应为ReportType
公开列表报告{get; 组;应该是公开的 ICollection Reports {get; 组; }
如果你要定义一个 web.config中的连接字符串, 你需要告诉EF它是什么 使用你的构造函数 ReportRunnerEntities类如下:
namespace ReportRunner.Models
{
public partial class ReportRunnerEntities : DbContext
{
public ReportRunnerEntities : base("name=NameOfConnectionInWebConfig")
{}
public DbSet<Reports> Report { get; set; }
public DbSet<ReportTypes> ReportTypes { get; set; }
public DbSet<Users> Users { get; set; }
}
}
请注意,如果您计划使用.NET MVC和EF Code First作为堆栈,我将开始使用Repository和Unit of Work模式。以下是关于如何进行设置的好帖子:Entity Framework 4 CTP 4 / CTP 5 Generic Repository Pattern and Unit Testable