如何從具有EntityFrameworkCore的查詢生成實體模型

asp.net-core c# entity-framework-core entity-model sql-server

我正在嘗試以只讀模式將ASP.NET Core Web應用程序連接到現有的,非常複雜的數據庫。

數據庫很複雜,可以直接將其佈局映射到EFC,我只是通過一組查詢從中訪問數據。這些查詢是明確定義的,因此我可以提前定義與其結果匹配的對象而不會出現問題。

但是,我似乎無法找到如何為此定義數據庫上下文的實體模型。當然,我不能在模型類上設置TableAttribute - 因為模型不反映表,而只是查詢結果。只是將ColumnAttribute添加到模型的屬性中似乎也無法解決問題 ,在數據庫上下文中的OnModelCreating方法中,我總是收到錯誤“InvalidOperationException:實體類型'MyEntityModel'需要定義一個鍵。”

我應該定義什麼關鍵,你呢?它不是一個查詢有一個關鍵字的結果條目,或者它/我可以讓它有一個?

不幸的是,我無法更改數據庫以添加新視圖,臨時表或其他任何內容,我(只)具有讀訪問權限。

很可能我還沒有理解EF背後的概念,但我看到的所有教程/樣本只處理最基本和最簡單的情況,而我的google-fu似乎也讓我失敗了。

雖然看起來像使用基本的connect-query-disconnect來解決這個問題可能是一種可能性,但在我看來,DtabaseContext / EF方式更符合ASP.NET Core的原則。如果我錯在那裡,請隨意不同意或告訴我。

任何可能顯示另一種方式來完成這項工作的樣本也將受到高度讚賞。

熱門答案

使用ASP.NET Core並不意味著您必須使用Entity Framework核心。您可以使用完整的.NET Framework而不是.NET Core和Entity Framework Full而不是Entity Framework Core。這有幾個好處:

1- ASP.NET Core 2(目前處於測試階段)在.NET Standard 2上運行良好。由於完整的.NET Framework 4.6.1+和.NET Core 2.0+都是.NET Standard 2.0的實現,因此您可以切換回。 NET Core 2在其穩定版本發佈時非常容易。

2-實體框架核心2.0(目前處於測試階段)比實體框架核心1.1.1有許多增強功能。使用2.0版將比1.1.1容易得多。它具有更好的查詢轉換,更好的性能,更少的錯誤,更多的方法等。

所以

第1步>>使用ASP.NET Core和完整版EntityFramework和.NET Framework開發應用程序

步驟2 >>在您的應用程序中定位.NET Core 2和Entity Framework Core 2,當穩定版本可用時。

完全使用Entity Framework的數據庫逆向工程工具,然後更改其結果以使其與EntityFramework Core兼容是一個好主意。



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow