我有兩個DB兩個相同的程序,由同我的意思是:兩個程序具有相同名稱和選擇類型,但EF抱怨不兼容的數據讀寫
- 同名
- 相同的參數名稱&型
- 結束選擇返回相同的列類型&名稱(如果我把它放在一個
SELECT ... INTO table
它會生成完全相同的表)。
唯一不同的是構建最終選擇的sql查詢的代碼。 如果我使用EF上的數據庫1它按預期工作,但如果我上運行數據庫2的代碼它結束錯誤:我使用
The data reader is incompatible with the specified 'Ctx.Procedure_Result'. A member of the type, 'FooId', does not have a corresponding column in the data reader with the same name.
:
- 實體框架4.2
- Visual Studio 2010中
- 的Sql Server 2008 R2的
我沒有EF內部的足夠知識理解爲什麼發生這種情況。 我的想法是,必須有一些列類型/名稱嗅探機制,它不嗅探相同的東西。
編輯1:
的過程不會「迴歸」表類型,它只是「選擇」一些行。 該選擇結果被映射到EDMX中的ComplexType。
隨時索取更多詳情。
發佈相關代碼的相關部分?還查詢和表? – Matthew
在選定的記錄集中有'FooId'列 - 正如你可以在例外中看到的那樣,這是缺少的列。如果你在存儲過程中有一些邏輯,可能會發生另一件事情,那就是你可能沒有返回結果(而不是空記錄集),這意味着你根本沒有列。使用Sql Profiler跟蹤由EF發送到「不起作用」的數據庫的查詢並手動運行查詢並查看結果。我有一種感覺,你在兩個數據庫中有不同的數據,因此存儲過程的行爲有所不同。 – Pawel
好的,我們的錯,建議我用SQL Server Profiler跟蹤EF查詢。事實上EF在參數中使用了NULL,這個參數銷燬了程序中的sql查詢('select ...'+ NULL => NULL) –