0

我第一次遇到这个问题时,使用 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
    }
}

我还尝试将其添加到我的第一个操作中(Index => 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 Migrations 也是(今天添加了 Migrations 但这并没有改变任何东西)

  • 使用 Database.SetInitializer(new DropCreateDatabaseAlways()); 也没有用

4

1 回答 1

0

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

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

所以是的,我解决了验证错误,一切正常。亲切的问候。

于 2019-03-04T07:30:14.507 回答