0

我在尝试让我的数据库首先使用实体​​框架/代码播种时遇到问题。我是 .NET 的初学者,我尝试了许多解决方案,但没有一个对我有用。

我究竟做错了什么?我正在发布最相关的代码......任何帮助将不胜感激。

样本数据.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);
        }

    }
}

网络配置

<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; }
}

飞机.cs

public class Airplane
{
    public int AirplaneId { get; set; }
    public string Make { get; set; }
}
4

2 回答 2

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)

于 2012-06-22T00:16:59.277 回答
0

我看不到您保存更改,例如 context.SaveChanges() 请尝试在 base.Seed(context) 之后添加此行

于 2012-06-22T00:14:18.370 回答