我正在處理一個EF問題,我發現很難調試...以前,每個類型的表繼承設置控制着我係統中的不同用戶類型 - 所有用戶都通用的一種根類型,以及幾種基於使用該帳戶的人的類型的不同子類型。現在,我遇到了一些問題,需要我刪除繼承,並將UserId屬性放在每個子類上,這是用戶ID屬性的外鍵。因此,現在不是用戶,其他用戶類型將具有用戶導航屬性。什麼可能導致實體框架拋出異常與消息「(某種類型)既不是超類型也不是(某種其他類型)的子類型」?
我已經刪除了所有使用EDMX設計器的繼承關聯,我添加了所有UserId屬性及其關聯,確保所有其他用戶類型現在都擁有自己的實體關鍵字,並獲得關聯和導航屬性爲每個特定用戶設置。但是,當我真正運行我的應用程序時,我收到一條TargetInvocationException消息,告訴我「用戶既不是超類型也不是(其他類型)的子類型」。
我一直在尋找這個錯誤消息的其他引用現在有一點,找不到任何東西,我無法確定是什麼導致它。在用戶和我的EDMX中的其他類型之間似乎沒有更多的任何繼承的引用,但仍然是消息依然存在。我以前從來沒有見過這樣的人。
確實沒有任何代碼可供我參考;它似乎是一個映射問題。有沒有人看到過這個特殊消息的例外?
錯誤發生在哪行代碼? –
堆棧跟蹤的前三行: 在System.Data.Common.EntitySql.SemanticAnalyzer。 b__74(BuiltInExpr bltInExpr,SemanticResolver sr)... at System.Data.Common.EntitySql.SemanticAnalyzer.ConvertBuiltIn(Node語義解析器sr)... 顯然,沒有行號可用。它發生在我第一次嘗試檢索任何類型的實體時發生。 –
Eska
看起來EDMX中有東西表明你的實體是被繼承的。您是否從數據庫生成EDMX?如果是這樣,請嘗試從更新的數據庫生成新的EDMX,然後比較EDMX文件。 –