我正在尝试使用 SQL Server 4.0 作为数据库引擎为 MVC 4 项目播种数据,并以 Microsoft MVC 音乐商店教程为例。我已经设置了种子和数据库上下文模型,但控制器无法找到数据。我已经验证了数据库文件是在 App_Data 中创建的,并验证了 SetIntitializer 在 Application_Start 中的设置是否正确。这是我的代码:
种子数据:
namespace RationalMethodApp.Models
{
public class StartData : CreateDatabaseIfNotExists<RationalMethodEntities>
{
protected override void Seed(RationalMethodEntities context)
{
new List<Basin>
{
new Basin {
basinId = 1, // attempting to force a key value, will remove
Name = "Replace me with a real basin",
Location = "In a real location",
drainageArea = 0.0M
}
}.ForEach(b => context.Basins.Add(b));
控制器:
public ActionResult Index(int? bsnId)
{
if (bsnId == null) // here to force a key value, will change
bsnId = 1;
var basin = rmDb.Basins.Find(bsnId);
return View(basin);
}
上下文类是:
namespace RationalMethodApp.Models
{
public class RationalMethodEntities : DbContext
{
public DbSet<Basin> Basins { get; set; }
public DbSet<SubArea> SubAreas { get; set; }
public DbSet<IdfCurve> IdfCurves { get; set; }
public DbSet<Analysis> Analyses { get; set; }
public DbSet<FlowSegment> FlowSegments { get; set; }
public DbSet<SheetFlowN> SheetFlowNs { get; set; }
public DbSet<RunoffCoefficient> RunoffCoefficients { get; set; }
public DbSet<StormFrequency> stormFrequencies { get; set; }
}
}
调试器告诉我,.Find 之后控制器中的“盆地”对象仍然为空。这一定是我忽略的一个简单、基本的事情,但我可以在网上找到的所有帮助都假设提问者知道他们在做什么——在我的情况下不是这样!我还检查了实体框架数据库种子没有种子的讨论, 但这似乎不是答案。请忍受一个完全的菜鸟问题。