Plugin development Error : The model backing the 'PluginObjectContext' context has changed since the database was created

This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.
Hace 11 años
I am trying to create a new plugin for Moneris Payment but I have problems with the database.
When trying to install my plugin I have this error : The model backing the 'PluginObjectContext' context has changed since the database was created. Consider using Code First Migrations to update the database (http://go.microsoft.com/fwlink/?LinkId=238269).

If I add the code : Database.SetInitializer<PluginObjectContext>(null); before Database.ExecuteSqlCommand(CreateDatabaseInstallationScript()); it solves this error but the same error appears while trying to insert new data in the table.

Does someone have an idea of the solution ?

Thanks.
Hace 11 años
rfabre wrote:
I am trying to create a new plugin for Moneris Payment but I have problems with the database.
When trying to install my plugin I have this error : The model backing the 'PluginObjectContext' context has changed since the database was created. Consider using Code First Migrations to update the database (http://go.microsoft.com/fwlink/?LinkId=238269).

If I add the code : Database.SetInitializer<PluginObjectContext>(null); before Database.ExecuteSqlCommand(CreateDatabaseInstallationScript()); it solves this error but the same error appears while trying to insert new data in the table.

Does someone have an idea of the solution ?

Thanks.


If you are like many of us, the issue is caused by SQL CE. I usually just switch to SQL Server on my development installation, since nobody is going to use SQL CE on production anyway.
Hace 11 años
No I am already using SQL Server.

Thanks for the suggestion.
Hace 11 años
rfabre wrote:
No I am already using SQL Server.

Thanks for the suggestion.


If that's the case, have you make sure that there's no mismatch between your model and the database table? This error also happens when your code cannot map to your database. :)
Hace 11 años
I have checked again and can't see any difference between the table and my model
Hace 11 años
I solved the problem by adding a class EfStartUpTask in the Data folder.
This is the code :
using System.Data.Entity;
using Nop.Core.Infrastructure;

namespace Nop.Plugin.Payments.MyPlugin.Data
{
    public class EfStartUpTask : IStartupTask
    {
        public void Execute()
        {
            //It's required to set initializer to null (for SQL Server Compact).
            //otherwise, you'll get something like "The model backing the 'your context name' context has changed since the database was created. Consider using Code First Migrations to update the database"
            Database.SetInitializer<MonerisTransactionObjectContext>(null);
        }

        public int Order
        {
            //ensure that this task is run first
            get { return 0; }
        }
    }
}
Hace 11 años
@rfabre

Thanks for your solution !!! It works perfect !
Hace 11 años
It also can be caused by a missing property or key mapping in your plugin's EntityMap class or classes
Hace 10 años
@rfabre

Thank you very much.

The class  "EfStartUpTask : IStartupTask" worked for me, after trying a hundred things dealing with my model class and model mapping :( :(

I think this should be documented somewhere in https://www.nopcommerce.com/docs/75/plugin-with-data-access.aspx

Best regards
Hace 10 años
This works perfectly - I'm glad this fixes the issue as this is the second time it's happened to me, previously I reinstalled everything.
This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.