まず第一に、私はこれを聞いてみましょう:
は、あなたがあなた自身のInitializer
を設定するときにへのアクセスを得るSeed
機能に精通していますか?
例:あなたの主な機能の書き込みで
このような何か:SystemContext
あなたDbContext
クラスです
System.Data.Entity.Database.SetInitializer(new SystemContext.SystemInitializer());
。
そして、そのクラスにあなたのような何かを持っている必要があります:私はあちこちに散らばっていたプロジェクトからちょうどいくつかのテンプレートコードです
public class SystemContext : DbContext
{
public DbSet<Stock> Stocks { get; set; }
public DbSet<RawDayValues> StockRawValues { get; set; }
public SystemContext()
: base("Server=localhost;Database=test;Trusted_Connection=True;")
{ }
public class SystemInitializer : DropCreateDatabaseIfModelChanges<SystemContext>
{
#region SEED
// This is what you're looking for!
protected override void Seed(SystemContext context)
{
try
{
var stock = new Stock() { Symbol = "TEST" };
context.Stocks.Add(stock);
context.SaveChanges();
}
catch (Exception ex) { Console.Error.WriteLine(ex.Message); }
base.Seed(context);
}
#endregion
}
}
を。
毎回実際にデータベースを再作成している場合は、すべてのデータを手動で追加することなくデータベースを「シード」する方法はわかりません。
一方、あなたはデータベースをドロップ以外の何かをすることを予定している場合、あなたがそれに細部を変更するたびに、あなたが応じてすべての新しいデータをクリア手動書き込み機能を持っているかもしれませんがいくつかの論理に。
私は、これは、あなたの質問に答える:)
ALSO願っています:あなたは質問にも、あなたが話している技術のタグを使用してどちらも指定されていませんでした。私はそれがc#,.netとentity-framework-4.3.1と仮定しました。そうでない場合は、再度タグ付け/指定してください。 'MyInitializer' はIDatabaseInitializer<MyContext>
インタフェースを継承するクラスである
System.Data.Entity.Database.SetInitializer<MyContext>(new MyInitializer());
:
は、あなたが例えば、コンテキストの初期化子を設定することができます素敵な一日:)
+1 a-z説明付きの返事を見てうれしいです! –