如何解決警告:元素'entityFramework'具有無效的子元素'providers'。預期可能元素列表:'contexts'

ef-code-first entity-framework entity-framework-6 visual-studio-2012

我正在玩EF不同的工作流程。昨天我做了一個新項目, Entity Framework 6Nuget的第一個建議,所以我決定嘗試一下,這也是一個非常小的項目,完全用於學習目的,所以我想嘗試EF 6是很好的經驗,因為我一直在與Ef 5一起工作。

我的應用程序基於Code First方法。解決方案的結構顯示在打印屏幕中:

解決方案樹

CodeFirstClasses項目旨在保存我的Entites。為簡單起見,因為我遵循教程,我只使用一個類 - Customer.cs 。我有:

public class RewardContext : DbContext
    { 
        //Specify the name of the base as Rewards
        public RewardContext() : base("Rewards")
        { 
        }

        //Create a database set for each data item
        public DbSet<Purchase> Purchases { get; set; }
        public DbSet<Customer> Customers { get; set; }

    }

而其他類 - PurchaseCustomer都是微不足道的,所以我不會在這裡粘貼它們。

您可以看到的另一個項目是Windows Forms項目,其上只有一個表單和按鈕。在按鈕的click事件中,我擁有將新記錄添加到硬編碼的兩個實體的所有邏輯。這只是其中的一部分:

public class RewardContext : DbContext
    { 
        //Specify the name of the base as Rewards
        public RewardContext() : base("Rewards")
        { 
        }

        //Create a database set for each data item
        public DbSet<Purchase> Purchases { get; set; }
        public DbSet<Customer> Customers { get; set; }

    }

到目前為止,我對EF 5習慣並沒有什麼不同。我可以構建項目,我可以運行它,一切都按預期執行。但是我從標題中得到了這個警告:

Warning 1 The element 'entityFramework' has invalid child element 'providers'. List of possible elements expected: 'contexts'.即使我主要使用MS SQL Server Management Studio我也注意到我無法從IDE管理我的連接/數據庫 - Visual Studio 2012 ,但這不是EF 5的問題。

我的研究縮小了手動更改App.config文件的問題/解決方案的可能來源,但這是一個我沒有太多經驗的領域,特別是在IDE處理它直到EF 6 。所以我將發布我的App.config文件用於此解決方案:

CodeFirstClasses項目中的一個:

public class RewardContext : DbContext
    { 
        //Specify the name of the base as Rewards
        public RewardContext() : base("Rewards")
        { 
        }

        //Create a database set for each data item
        public DbSet<Purchase> Purchases { get; set; }
        public DbSet<Customer> Customers { get; set; }

    }

從我的TestCodeFirst項目:

public class RewardContext : DbContext
    { 
        //Specify the name of the base as Rewards
        public RewardContext() : base("Rewards")
        { 
        }

        //Create a database set for each data item
        public DbSet<Purchase> Purchases { get; set; }
        public DbSet<Customer> Customers { get; set; }

    }

我找到的另一個可能的解決方案是: updating the xsd for "validating" EF config section in web/app.config file to recognize newly added EF6 elements ,我也不知道它是如何完成的。

即使我打開MS SQL Server Management Studio我看到為此應用程序創建的數據庫,但是記錄已保存,並且通常似乎可以正常工作,但我想解決此警告並了解如何設置我的應用程序在EF 6上。

一般承認的答案

您可以從此處安裝VS6的EF6 Designer,它將更新驗證配置文件的架構。


熱門答案

配置架構已從版本5更改為6.如上所述,provider節點已替換為contexts節點。

我們的想法是您可以使用相同的提供程序單獨配置提供程序而不是所有上下文。 (這與能夠擁有駐留在一個數據庫中的多個上下文同步。這曾經被稱為多租戶,但後來被重命名為更簡潔)




許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因