簡體   English   中英

將DbSet.Find與Oracle和EF CodeFirst一起使用

[英]Using DbSet.Find with Oracle and EF CodeFirst

我在甲骨文論壇上的很多網站上特別是在Oracle官方不支持Entity Framework Code First或DbContext API的情況下均已讀到。

話雖這么說,但我也讀過很多地方,人們已經使用帶有Oracle的EF CodeFirst成功部署了項目。 我一直在處理很多問題,並且一直在調整代碼以使其也可以與SQL Server一起使用。

似乎不起作用的一個函數是DbSet.Find,您可以在其中將鍵作為參數傳遞並准確地獲取該記錄。

使用查找(如果我在同一代碼庫上使用sql server,效果很好)拋出異常,並顯示以下錯誤:

ORA-00942: table or view does not exist

我讀了這個問題 ,他們提到套管,這不是我的情況,所以對我來說沒有解決方法。

奇怪的是,使用DbSet.SingleOrDefault(x => x.Id == SomeId)可以很好地工作,所以我很確定模式,表名和列的大小寫都可以。

使用DbContext時,有人成功使用過Find嗎?

請注意:我沒有使用EDMX,也無法使用它,我們必須繼續使用CodeFirst。

謝謝。

事實證明,在我的類中所做的數據注釋確實存在問題,並且我對其中的一個輸入有錯字,但該異常未公開所引用的表或視圖,因此唯一的查找方法是檢查以下內容:

[TableName="MY_TABLE"]
public class MyClass
{

}

對應表名

CREATE TABLE MY_TABLE {

}

...對於我在DbContext實現上具有DbSet的所有類。

現在, DbSet.Find()異常而DbSet.SingleOrDefault()原因並非我所知,但我認為第一個遍歷所有POCO類並嘗試將它們映射到DbContext對象中,即使您正在處理的DbSet與同一DbContext上的其他對象不相關,另一方面, SingleOrDefault()似乎僅檢查查詢時實際上要使用的那些表和對象的映射。

所以是的,我假設由於DbSet.SingleOrDefault()沒有DbSet.Find()異常,而DbSet.Find()DbSet.Find()異常,所以問題出在EF而不是我的映射上。

不同的擴展方法具有不同的行為,因此請小心並注意那些映射!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM