2013-10-21 32 views
3

我在Nopcommerce中創建插件並使用我的插件創建了數據庫表。自nopcommerce中創建數據庫以來,支持'ObjectContext'上下文的模型已更改

在該插件我用GetListByProductId(INT ID)& InsertItem(項項)方法服務。

我已經實現像下面這些方法:

 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’環境已經改變,因爲數據庫創建」

我不明白爲什麼這個錯誤發生,從哪裏。

任何人都可以幫我解決這個問題嗎?

所有答案都被接受。

感謝您的期待。

+0

你能檢查下面的鏈接? http://stackoverflow.com/questions/3600175/the-model-backing-the-database-context-has-changed-since-the-database-was-crea/13655533#13655533 – Max

+0

嘿,謝謝,但我已經添加Database.SetInitializer (空);在我的Install()和UnInstall()方法中。 –

+0

您是否看過關於創建數據插件的官方文檔? http://www.nopcommerce.com/docs/75/plugin-with-data-access.aspx – Max

回答

2

我一直有同樣的問題。在我們的案例中,我們已經基於現有的數據庫對代碼優先的設計進行了逆向設計。新數據庫正在對其設計進行增強。

通常當修改數據庫結構時,我會丟棄數據庫,然後讓它由代碼重新生成。

這是非常好,很好,直到你開始遷移數據,然後改變結構多一點(所有仍處於開發階段)

所以丟棄/重新創建成爲發展過程中一個巨大的痛苦。

我所做的解決此問題的方法是刪除由代碼優先實現創建的表dbo.__MigrationHistory中的條目。此行包含模型的散列版本,根據我的理解,在啓動應用程序時會對其進行檢查。

可能會或可能不會做正確的事情,雖然在開發過程中是有意義的我:)

+0

嗨,thanx Darren爲您提供幫助,實際上我發現另一個解決方案是我剛纔把Database.SetInitializer (null);行在我的服務文件的構造和問題解決了。 –

+0

好的,很酷。當你確實需要設置初始化程序時,不確定這是否會導致相同的問題。 – Darren

相關問題