MVC 4.0控制器找不到种子数据
本文关键字:种子 数据 找不到 控制器 MVC | 更新日期: 2023-09-27 18:07:11
我正试图使用SQL server 4.0作为数据库引擎,以Microsoft MVC音乐商店教程为例,为MVC 4项目种子数据。我已经建立了一个种子和DB上下文模型,但控制器无法找到数据。我已经验证了数据库文件是否在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; }
}
}
调试器告诉我,在之后,控制器中的"盆"对象仍然为空。发现这一定是我忽略的一件简单、基本的事情,但我在网上能找到的所有帮助都假设询问者知道他们在做什么——在我的情况下不是这样!我还查看了实体框架数据库种子dos';t种子但这似乎不是答案。请耐心回答一个毫无意义的问题。
您没有显示seed的完整代码,所以我不能确定,但您可能缺少上下文。更改((。
你还写了
public class StartData : CreateDatabaseIfNotExists<RationalMethodEntities>
如果在应用程序启动之前不删除数据库,那么它将不会执行任何操作,因为数据库已经存在。
您可以使用:
public class StartData : DropCreateDatabaseAlways <RationalMethodEntities>
每次启动或时将其丢弃
public class StartData : DropCreateDatabaseAlways <DropCreateDatabaseIfModelChanges >
当模型发生变化时删除数据库(这对开发的开始很好(
调试:删除数据库,终止应用程序服务器(使其返回应用程序启动(,在种子中设置断点。启动Debug,如果它进入种子状态,请在SaveChange((之后检查数据是否在其中。