Как я могу заставить Effort.EF6 генерировать исключение InvalidOperationException при изменении модели поддержки? - PullRequest
0 голосов
/ 31 октября 2019

Как можно заставить Effort.EF6 выбросить System.InvalidOperationException, когда изменилась модель поддержки?

Следующее выполняется без проблем, хотя я бы ожидал исключения:

var connection = DbConnectionFactory.CreateTransient();

using (var context = new SchoolDbContext(connection))
{
   // context.Database.Connection.ConnectionString =
   // "instanceid=26f22cef-6539-4c52-99b1-79baa8d67bfa"

    var grade = new Grade()
    {
        GradeName = "Mathematics"           
    };

    context.Grades.Add(grade);
    context.SaveChanges();
}

This ...

using (var context = new SchoolDbContext())
{
    // context.Database.Connection.ConnectionString = 
    // "Data Source=(localdb)\mssqllocaldb;Initial Catalog=ESchoolDbContext;Integrated Security=True;MultipleActiveResultSets=True"

    var grade = new Grade()
    {
        GradeName = "Mathematics"           
    };

    context.Grades.Add(grade);
    context.SaveChanges();
}

... правильно выбрасывает ...

System.InvalidOperationException

Модель, поддерживающая контекст 'SchoolDbContext', имеетизменено с момента создания базы данных. Рассмотрите возможность использования Code First Migrations для обновления базы данных ...

Вот как выглядит мой контекст:

public class SchoolDbContext : DbContext
{
    public SchoolDbContext() : base()
    {
    }

    public SchoolDbContext(DbConnection connection) : base(connection, false)
    {
    }

    public DbSet<Student> Students { get; set; }

    public DbSet<Grade> Grades { get; set; }
}

И моя конфигурация:

internal sealed class Configuration : DbMigrationsConfiguration<SchoolDbContext>
{
    public Configuration()
    {
        AutomaticMigrationsEnabled = true;
        ContextKey = "SchoolDbContext";
    }

    protected override void Seed(SchoolDbContext context)
    {
    }
}

Вот как выглядит мой App.config:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false"/>
  </configSections>
  <entityFramework>
   <providers>
     <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer"/>
   </providers>
  </entityFramework>
</configuration>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...