我在尝试让我的数据库首先使用实体框架/代码播种时遇到问题。我是.NET的初学者,我尝试了很多解决方案,但没有一个能为我工作。
我做错了什么?我发布了最相关的代码......非常感谢任何帮助。
SampleData.cs
namespace seed2.Models
{
public class SampleData : DropCreateDatabaseAlways<AirplaneDB>
{
protected override void Seed(AirplaneDB context)
{
var airplane = new List<Airplane>()
{
new Airplane { AirplaneId = 1, Make = "Great Planes"},
new Airplane { AirplaneId = 2, Make = "Eflite"}
};
base.Seed(context);
}
}
}
的Web.Config
<add name="AirplaneDB"
connectionString="data source=|DataDirectory|Airplanes.sdf"
providerName="System.Data.SqlServerCe.4.0"/>
AirplaneDB.cs(上下文)
public class AirplaneDB : DbContext
{
public DbSet<Airplane> Airplanes { get; set; }
}
Airplane.cs
public class Airplane
{
public int AirplaneId { get; set; }
public string Make { get; set; }
}
答案 0 :(得分:1)
首先,将它添加到Global.asax.cs的Application_Start()方法:
System.Data.Entity.Database.SetInitializer(new seed2.Models.SampleData());
确保您实际在浏览器中刷新视图。重新构建解决方案不会使数据库失败。
最后,您应该在种子方法中添加airplane.ForEach(x => context.Airplanes.Add(x));
并删除base.Seed(context)
。
答案 1 :(得分:0)
我看不到你保存像context.SaveChanges()这样的更改请尝试在base.Seed(context)之后添加这一行