Прежде всего, позвольте мне спросить:
Вы знакомы с Seed
функции, вы получаете доступ к когда вы устанавливаете свой собственный Initializer
?
Пример:
В вашей основной функцией записи что-то вроде этого:
System.Data.Entity.Database.SetInitializer(new SystemContext.SystemInitializer());
Где SystemContext
ваш DbContext
класса.
И в этом классе вы должны иметь что-то вроде:
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
}
}
Вот только некоторые шаблон кода из проекта я валяется.
Если вы действительно заново создаете свою базу данных каждый раз, то я не знаю другого способа «семени» базы данных без «ручного» добавления во все данные.
С другой стороны, если вы планируете делать что-то другое, чем падение базы данных каждый раз, когда вы хотите изменить детали в нем, возможно, придется вручную функции записи, что очистить все новые данные в соответствии к некоторой логике.
Я надеюсь, что это ответ на ваш вопрос :)
ТАКЖЕ: Вы не указали ни в вопросе, ни с помощью тегов, какие технологии вы говорите. Я предположил, что это c#, .net и entity-framework-4.3.1. Если это не так, пожалуйста, перемаркируйте/укажите.
имеет хороший день :)
+1 Приятно видеть ответ с объяснением a-z! –