Я, по общему признанию, немного сумасшедший по этому вопросу, поэтому несите меня. Я пытаюсь сделать это в течение примерно 5 часов, и сейчас я просто ударяю головой о стену. Вот что у меня есть:Не удается получить приложение Entity Framework MVC для посева данных в базу данных
Global.asax.cs
namespace MyApp
{
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
Database.SetInitializer(new MyInitializer());
}
}
}
MyInitializer.cs
namespace MyApp.App_Start
{
public class MyInitializer : DropCreateDatabaseIfModelChanges<MyContext>
{
protected override void Seed(MyContext context)
{
// seed data goes here
sample_data = new List<MyModel>
{
new MyModel{"foo"},
new MyModel{"bar"}
};
sample_data.ForEach(s => context.MyModels.Add(s));
context.SaveChanges();
}
}
}
MyContext.cs
namespace MyApp.Models
{
public class MyContext : DbContext
{
public MyContext() : base("MyContext")
{
Database.SetInitializer<MyContext>(new MyInitializer());
}
public DbSet<MyModel> MyModels { get; set; }
}
}
Web.config
<connectionStrings>
<add name="MyContext" connectionString="Data Source=(localdb)\v11.0; Initial Catalog=MyContext; Integrated Security=True; MultipleActiveResultSets=True; AttachDbFilename=|DataDirectory|MyContext.mdf" providerName="System.Data.SqlClient" />
</connectionStrings>
<entityFramework>
<contexts>
<context type="MyApp.Models.MyContext, MyApp">
<databaseInitializer type="MyApp.App_Start.MyInitializer, MyApp" />
</context>
</contexts>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
</entityFramework>
Я просто не могу понять, почему он не посеял какие-либо данные. Я прочитал дюжину или более подобных случаев здесь и в других местах, пробовал почти каждую итерацию и все равно не могу заставить ее запускаться вообще. Он никогда не ударяет по функции Seed(). База данных существует, и если я удалю ее, она будет восстановлена, но никогда не будет заполнена.
Я склоняюсь к тому, что проблема связана с моим web.config, но я еще не понял этого. Какие-либо предложения?
Вы используете миграцию? См. Здесь: http://www.asp.net/mvc/overview/getting-started/getting-started-with-ef-using-mvc/migrations-and-deployment-with-entity-framework-in-an -asp-net-mvc-application – Eraph
Вы добавили код семени в нужный класс? Ваш код говорит «new MyInitializer()», но имя класса, который вы показываете, - PropertyInitializer – Sam
@Sam Исправлено это. Просто ошибка в расшифровке. – dash