私は自分のデータベースを最初にエンティティフレームワーク/コードでシードしようとして問題を抱えています。私は.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; }
}
回答:
回答№1は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)
あなたの種メソッドで。
回答№2の場合は0
context.SaveChanges()base.Seed(context)の後にこの行を追加してみてください。