0

データベースにエンティティ フレームワーク/コードを最初にシードさせようとすると問題が発生します。私は .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; }
}

飛行機.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());

ブラウザーで実際にビューを更新していることを確認してください。ソリューションを再構築しても、データベースはシードされません。

最後に、 seed メソッドで追加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 に答える