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
的異常不會注意哪個模型擡高,或者,如果所有的人都。尋找這個問題的最佳方法是什麼?
我沒有任何引用那樣在我的任何使用語句。我的存儲庫類使用System.Data.Entity,當我檢查解決方案資源管理器中的實際引用時,我看到了EntityFramework和EntityFramework.SqlServer,並且沒有System.Data.Entity,因此我假設using語句指的是現在正確的EF6 DLL。如果它意味着什麼,我首先使用代碼。 –
@BillSambrone根據此msdn文章安裝'EF6 NuGet包'應該自動從您的項目中刪除對'System.Data.Entity'的任何引用爲你http://msdn.microsoft.com/en-us/data/dn469466 – ElectricRouge
它確實將它從引用中移除,但不會從實際類中的使用語句中移除。當我手動刪除它時,我失去了我的DbContext類。有沒有我應該用於實際使用聲明的替代方案? –