【问题标题】:The model backing the 'ObjectContext' context has changed since the database was created in nopcommerce自从在 nopcommerce 中创建数据库以来,支持“ObjectContext”上下文的模型发生了变化
【发布时间】:2013-10-29 19:06:02
【问题描述】:

我正在 Nopcommerce 中创建一个插件,并使用我的插件创建了一个数据库表。

在那个插件中,我在服务中使用了 GetListByProductId(int id) 和 InsertItem(Item item) 方法。

我已经实现了这些方法,如下所示:

        public void InsertItem(itemList item)
        {
            if (item == null)
            {
                throw new ArgumentNullException("itemlist");
            }

            //Persist
            _itemlistRepository.Insert(item);
        }


        public virtual ItemList GetListByProductid(int ProductId)
        {
            if (ProductId <= 0) return null;

            return _itemlistRepository.GetById(ProductId);

        }

但我收到错误消息,“支持 'ItemObjectContext' 上下文的模型在创建数据库后发生了变化”

我不明白为什么会发生此错误以及从何处发生。

谁能帮我解决这个问题?

接受所有答案。

感谢期待。

【问题讨论】:

标签: c# nopcommerce


【解决方案1】:

我也遇到了同样的问题。在我们的案例中,我们基于现有数据库对代码优先设计进行了逆向工程。新数据库正在对其设计进行改进。

通常在修改数据库结构时,我会删除数据库,然后由代码重新生成它。

这一切都非常好,直到您开始迁移数据,然后再稍微改变结构(一切仍在开发中)

所以在开发过程中删除/重新创建变得非常痛苦。

我为解决此问题所做的只是删除表 dbo.__MigrationHistory 中由代码优先实现创建的条目。此行包含模型的散列版本,据我了解,它是在您启动应用程序时检查的内容。

可能是也可能不是正确的做法,尽管在开发过程中这对我来说很有意义:)

【讨论】:

  • 嘿,谢谢 Darren 的帮助,实际上我找到了另一个解决方案,我刚刚放了 Database.SetInitializer(null);我的服务文件的构造函数中的行,问题就解决了。
  • 啊,好吧,很酷。当您确实需要设置初始化程序时,不确定这是否会导致同样的问题。
猜你喜欢
  • 2023-04-08
  • 1970-01-01
  • 1970-01-01
  • 2014-04-19
  • 2011-04-05
  • 2015-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多