sqlserver使用EF模型經驗 EF模型使用本人在之前兩三年中從沒使用過,所以剛開始使用就會踩上許多的坑。今天我不單單說下自己所踩的一些坑與當前公司中使用EF模型設計的理念,即是為我自己做個筆記,也是為其他人提供一個經驗吧,但本人剛接觸不久,有理解錯誤的還請大家能夠多多指教。 首先說一下我現在所 ...
sqlserver使用EF模型經驗
EF模型使用本人在之前兩三年中從沒使用過,所以剛開始使用就會踩上許多的坑。今天我不單單說下自己所踩的一些坑與當前公司中使用EF模型設計的理念,即是為我自己做個筆記,也是為其他人提供一個經驗吧,但本人剛接觸不久,有理解錯誤的還請大家能夠多多指教。
首先說一下我現在所在公司的設計理念是怎麼樣的
- 公司資料庫的設計模式是怎麼樣的
EF模型設計圖表
sequenceDiagram 客戶庫 ->> 開發庫: 客戶相關表用視圖關聯 開發庫-->>EF導入庫:, Note left of EF導入庫: 對於需要操作的表設計一樣的表,只需要查詢的可以設計為視圖 EF導入庫-->> edmx文件: , Note left of edmx文件: 導入相關表結構生成實體模型這將產生一個流程圖。:
graph TD A[service] -- 執行 中間省略其他業務操作說明--> B((DA數據交互)) B --更新實體數據--> C{emdx實體類} C --通過EF導入庫生成的emdx實體--> D(生成sql語句) D--更新數據-->E((開發庫數據表)) E--更新-->F{客戶庫中的數據表} A--連接執行資料庫-->E- 分析兩個圖表:
- 我們從第一張表中可以看出有三個資料庫,一個是客戶的資料庫,一個為開發使用的資料庫,還有一個是導入模型使用的庫。第二張表則是程式執行操作資料庫的流程和連接圖。
- 先說第一個庫是客戶庫,應該不用多說,就是客戶主要數據的來源
- 再說第二個庫是開發庫,也不必多說就是我們開發人員所直接操作的庫。
- 第三個庫則必須得要細說一下,因為這裡它的作用是很大的,但必須得要理解了才行。
- 我現在對它進行細說一下,但本人也是剛接觸的有哪裡說的不對,也請多多指教: 1.由於EF模型操作視圖是不能增刪改操作的,只能查詢,而對於數據則可以進行增刪改查,但也是針對於單表的視圖,多表關聯的視圖也只能查詢。 2.客戶中的表我們在開發庫添加了視圖,其他程式業務操作則直接在開發庫中創建表,從這裡我們知道要操作客戶的表在EF中我們無法執行,只能查詢。這時為了都能夠進行操作我們就添加了一個EF導入庫,將需要修改客戶的表在EF導入庫中生成表,然後EF模型從該EF導入庫中添加實體模型。但在web使用的資料庫我們則使用開發庫來連接,這樣就解決了客戶庫的問題了。
EF模型導入遇上的問題
- 資料庫表導入不入EF模型中那就查看一下表是否有主鍵值,沒有主鍵值是添加不進去的。
- 資料庫有許多連接服務時,可能有時候選錯了資料庫連接導致無法正常導入正確的模型,可這時模型中有許多原始表模型,我們不可能重新刪除模型再創建,最簡單的辦法就是找到APP.config文件,裡面找到連接字元串,將信息改為正確的連接,如果改了還是不行,那直接將那連接字元串的標簽都刪除,然後再去edmx更新從資料庫到模型,這時它就會重新要你選擇資料庫進行連接了。
- 有時候我們直接選擇從資料庫更新到模型,是因為我們所更新的表是沒有變的,但可能差個欄位或是取消個欄位,但更新之後它可能會顯示找不到該欄位的映射等問題,如果沒有伺服器需要對比則可以最直接的辦法就是將該表的模型刪除然後重新添加進來更新就好了。但如果有伺服器的對比,刪除再添加就會改變內容的位置,這時候比較就會顯示有許多不一樣。因此不需要刪除可以直接點擊edmx文件用xml格式打開,將有問題的欄位映射部分去掉就行了。但要保證資料庫與模型是一致的才可以。