实体框架根本不插入数据

时间:2019-03-01 14:16:29

标签: entity-framework insert dbcontext seeding no-data

我第一次面对这个问题时,使用base.Seed(context)或使用context.SaveChanges()EF不会在数据库中插入任何数据。

这是我的设置:

上下文

public ApplicationDbContext() : base("DbName")
{         
    Database.SetInitializer(new NameOfSeeder()); 
}

种子

public class NameOfSeeder : DropCreateDatabaseAlways<ApplicationDbContext> 
{
    protected override void Seed(ApplicationDbContext ctx)
    {           
        Language newLanguage = new Language("Nederlands");
        ctx.Languages.AddOrUpdate(l => l.Name, newLanguage);

        // using this won't work either
        ctx.Languages.Add(newLanguage);

        base.Seed(ctx); // => this should work, never had any issue with this untill now ...
        //ctx.SaveChanges(); // this does not work either
    }
}

我还尝试将其添加到我的第一个动作(索引=> HomeController)

using (ApplicationDbContext ctx = new ApplicationDbContext())
{
    //if (ctx.Languages.Any()) { }

    Language newLanguage = new Language("Nederlands");
    ctx.Languages.Add(newLanguage);
    ctx.SaveChanges();
}

Web.config

<add name="DbName" connectionString="Data Source=(LocalDb)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\DbName.mdf;Integrated Security=True" providerName="System.Data.SqlClient" />

这真的是我第一次有这个想法,没有想法是什么原因造成的……任何帮助,我们都感激不尽!

编辑:

  • 我正在使用Azure AD身份验证

  • EF迁移(今天增加了迁移,但并没有改变 任何东西)

  • 使用Database.SetInitializer(新 DropCreateDatabaseAlways());也不起作用

1 个答案:

答案 0 :(得分:0)

好,所以我没想到EF 在这种情况下会引发异常,但是我确实将Seed()方法包装在Try Catch中并猜测:

Validation failed for one or more entities. See 'EntityValidationErrors' property for more details.

是的,我解决了验证错误,一切都按预期进行。 此致。