2014-02-14 101 views
4

我用nuget將EF5升級到EF6,並且在我的解決方案中引入了重大更改。當我運行我的一個單元測試時發現了這個問題(儘管它影響了一切)。在每個測試中,我的init做這個:EF5到EF6的升級 - 導航屬性被破壞

// warm up EF. 
using (var context = new ReportingDbContext()) 
{ 
    context.Database.Initialize(false); // <-- boom! 
} 
// init the service 
_inventoryService = new InventoryService(); 

它扔給我此異常:

The property 'EmployeeID' cannot be configured as a navigation property. The property must be a valid entity type and the property should have a non-abstract getter and setter. For collection properties the type must implement ICollection<T> where T is a valid entity type. 

這個奇怪的,一切都在EF5只是桃色。我通過模型(我有一堆)尋找並發現EmployeeID存在的任何地方。他們都看起來像這樣:

[Table("mytablename")] 
public class CSATEntity 
{ 

    [Key, DatabaseGenerated(DatabaseGeneratedOption.None)] 
    public int CSATID { get; set; } 

    // foreign keys 
    public int ClientID { get; set; } 
    public int ContactID { get; set; } 

    // nav props 
    [ForeignKey("ClientID")] 
    public virtual CompanyEntity CompanyEntity { get; set; } 
    [ForeignKey("EmployeeID")] 
    public virtual EmployeeEntity EmployeeEntity { get; set; } 
    ... more props 

的異常不會注意哪個模型擡高,或者,如果所有的人都。尋找這個問題的最佳方法是什麼?

回答

0

嘗試從

System.Data.Objects.ObjectContext to System.Data.Entity.Core.Objects.ObjectContext 

System.Data.Objects to System.Data.Entity.Core.Objects 

改變命名空間看看這個MSDN http://msdn.microsoft.com/en-us/data/dn469466頁。它解釋瞭如何升級到Entity Framework 6

+0

我沒有任何引用那樣在我的任何使用語句。我的存儲庫類使用System.Data.Entity,當我檢查解決方案資源管理器中的實際引用時,我看到了EntityFramework和EntityFramework.SqlServer,並且沒有System.Data.Entity,因此我假設using語句指的是現在正確的EF6 DLL。如果它意味着什麼,我首先使用代碼。 –

+0

@BillSambrone根據此msdn文章安裝'EF6 NuGet包'應該自動從您的項目中刪除對'System.Data.Entity'的任何引用爲你http://msdn.microsoft.com/en-us/data/dn469466 – ElectricRouge

+0

它確實將它從引用中移除,但不會從實際類中的使用語句中移除。當我手動刪除它時,我失去了我的DbContext類。有沒有我應該用於實際使用聲明的替代方案? –