The Will Will Web | All posts tagged 'ntity-Framework'

The Will Will Web

記載著 Will 在網路世界的學習心得與技術分享

解決 Entity Framework 6 無法在交易內進行備份或還原動作的問題

我們都知道 Entity Framework 是一個 ORM 框架,在應用程式中基本上都不太會去碰觸太多關於後端資料庫的特定語法,但針對一些效能調校或資料庫管理等需求時,其實還是能透過 Entity Framework 幫我們執行一些自訂的 T-SQL 語法,只是有些地方需要注意一下,如果你今天遇到無法在 Entity Framework 中執行預存程序或匯入函式時,那麼這篇文章可能對你有幫助。

... 繼續閱讀 ...

解決 SQL Server 檢視表 (Views) 無法匯入 EDMX 的問題

前陣子在教學的過程中,有位學員問了一個 Entity Framework 的問題,他在 SQL Server 資料庫中建立了一個報表用的檢視表 (Views),然後想要匯入到 Entity Framework 的 EDMX 實體資料模型中,但卻怎樣都匯不進去,主要原因就出在 Entity Framework 無法自動推斷該檢視表的主索引鍵為何,所以才會無法匯入,而本篇文章將說明匯入 SQL Server 檢視表 (Views) 到 Entity Framework 的注意事項。

... 繼續閱讀 ...

ASP.NET MVC 開發心得分享 (24):擴充部分類別的建構子

在 ASP.NET MVC 使用 Entity Framework 資料庫先行開發模式 (Database-First Development) 的時候,因為所有 POCO (Plain Old CLR Object) 類別都會透過 *.tt 程式碼產生器範本自動建立,當我們想擴充資料模型時,勢必不會直接把驗證屬性直接寫在這些類別裡,而是在另一個部分類別檔案中,透過 MetadataType 屬性 (Attribute) 宣告一個 Metadata 類別 (又稱 Buddy Class)。另一方面,我們也會在資料模型的 POCO 類別的「建構子」方法中宣告屬性的預設值,但這時問題來了,如果我們在自動產生的資料模型類別中,已經宣告過「建構子」的話,那我們該如何在另一個部分類別檔案中再次「宣告」建構子呢?這就是這篇文章想要解決的難題。

... 繼續閱讀 ...

EF Code First: 讓 __MigrationHistory 不要成為系統資料表

使用 Entity Framework Code First 開發資料庫應用程式時,當資料庫首次建立後,預設 Entity Framework 就會幫你在資料庫中建立一個名為 __MigrationHistory 的系統資料表,這個資料表預設在 Visual Studio 2012 的伺服器總管中是看不到的,但就算看的到,也無法進行管理,使用上頗為不便。因此本篇文章就是要來告訴各位如何幫你把這個表格從「系統資料表」轉換成「使用者資料表」,如此一來就能方便的在 Visual Studio 2012 中管理。

... 繼續閱讀 ...

ASP.NET Web API 無法輸出 Entity Framework 物件的解法

開發 ASP.NET Web API 時,如果專案使用 Entity Framework 技術的話,當 Entity 與 Entity 之間包含導覽屬性 (Navigation Property) 的話,在預設的情況下,ASP.NET Web API 在輸出 JSON 格式時,會引發一個 System.InvalidOperationException 的例外狀況,其錯誤訊息為「'ObjectContent`1' 類型無法序列化內容類型 'application/json; charset=utf-8' 的回應主體。」,若要解決這個問題,有幾個必須注意的地方,才能讓 ASP.NET Web API 正常且穩定的運作。

... 繼續閱讀 ...

透過 Entity Framework 如何有效率的取回特定資料表的筆數

在許多開發情境下經常會試圖取回整個資料表的筆數,像我們就有個統計網站累積使用人次功能,開發人員寫的時候就是用 SELECT COUN(*) FROM TableName 的方式來取得目前總共有多少人次進入網站,但用這種方式執行效率並不高,每次執行都會產生一次 Index Scan,也就是在 SQL Server 資料庫裡所有主索引鍵的資料都會被掃瞄過一次才能統計出資料總筆數,當資料越多的時候,效能就會越差,在這裡我提供另一種 hack 的方法可以更有效率的取得整個表格的總筆數,但此法僅適用於 SQL Server 喔!

... 繼續閱讀 ...

介紹好用 Visual Studio 2010 擴充套件:Entity Visualizer

採用 Entity Framework 技術來開發應用程式有一個經常會遇到的問題,就是不知道到底 Entity Framework 幫我們產生了什麼 T-SQL 到資料庫,雖然 SQL Server 資料庫有 SQL Server Profiler 工具可以分析追蹤應用程式實際查詢的 T-SQL 語法,不過在開發階段用這種方式追蹤程式碼還是有點麻煩的,今天要介紹的 Entity Visualizer 擴充套件就非常適合用來查詢這些透 Entity Framework 產生的 T-SQL 語法,相信對開發偵錯工作可以帶來不小的幫助。

... 繼續閱讀 ...

如何在 SQL Server 資料庫設計「一對一」表格關聯

我們在做資料庫設計時,通常都會需要設計表格之間的關聯,不過一般來說都是設定一對多的表格關聯,如果是多對多的表格關聯通常都會多設計一張表格來儲存兩個表格之間多對多的關聯關係。但是如果我們今天單純的只是想設計一些擴充欄位到另一個獨立的表格裡,這時我們在 SQL Server 裡還需要設計關聯嗎?還是在程式中自己知道就好不需要設計關聯呢?其實是需要的,只是很少人知道可以這樣設計而已!

... 繼續閱讀 ...

執行 Entity Framework 的「從資料庫更新模型」為何不更新

最近有同事遇到一個技術問題,他們的專案是採用 Entity Framework 技術,不過由於客戶端需求變更,導致資料庫欄位屬性被變更了,原本為 NOT NULL 的欄位從資料庫端已經改成了可允許 NULL,不過他們在 Visual Studio 2010 的 ADO.NET 實體資料模型設計工具 (ADO.NET Entity Data Model) 編輯 EDMX 檔案時發現執行 從資料庫更新模型 (Update Model from Database) 並不會自動反應資料庫的欄位變更到這裡,但是新增、刪除資料庫欄位時卻會更新,他們覺得很奇怪,以下就是我的回答。

... 繼續閱讀 ...

Entity Framework 如何呼叫 SQL 裡沒有回傳參數的預儲程序

其實早在 Entity Framework 4.0 之前就已經提供了從 ObjectContext 呼叫 預儲程序 (Stored Procedure) 的能力,不過早期的 Entity Framework V2 版本支援度不夠,以致於只要是這個預儲程序的回傳值的型別不是 實體 (Entity) 的話,就會無法直接從 ObjectContext 進行叫用,這個架構上的問題直到 V4 這個版本才正式解決,以下就是從 Entity Framework 呼叫預儲程序的方法。

... 繼續閱讀 ...

使用中的 SQL Server 版本不支援資料型別 'datetime2'。

當初開始用 Entity Framework 的時候,第一個遇到的問題就是資料無法儲存變更,而錯誤訊息就是【使用中的 SQL Server 版本不支援資料型別 'datetime2'。】,我雖然知道 datetime2 是 SQL Server 2008 才出現的資料型態,不過我的資料庫明明就是 SQL Server 2005 而且在建立 Entity Framework 模型的時候也沒有指明我要用 SQL Server 2008 啊,為什麼還會報出這種錯誤呢?!底下就讓我娓娓道來。

... 繼續閱讀 ...

在 Entity Framework 設計工具中的自動版面配置技巧

利用 Visual Studio 2010 的 Entity Framework 設計工具從資料庫產生模型後通常會先自動排版,不過每一個產生的模型(Entity)預設寬度都是固定的,導致一些表格名稱太長的項目都顯示不完整 (如下圖示),而 Entity Framework 設計工具似乎還沒有聰明到可以依照我的意思自動排版,但我今天研究出一個新方法可以幫我解決此問題。

... 繼續閱讀 ...