sqlserver使用EF模型經驗

sqlserver使用EF模型經驗

EF模型使用本人在以前兩三年中從沒使用過,因此剛開始使用就會踩上許多的坑。今天我不僅僅說下本身所踩的一些坑與當前公司中使用EF模型設計的理念,便是爲我本身作個筆記,也是爲其餘人提供一個經驗吧,但本人剛接觸不久,有理解錯誤的還請你們可以多多指教。web

首先說一下我如今所在公司的設計理念是怎麼樣的

  1. 公司數據庫的設計模式是怎麼樣的

EF模型設計圖表

sequenceDiagram 客戶庫 ->> 開發庫: 客戶相關表用視圖關聯 開發庫-->>EF導入庫:, Note left of EF導入庫: 對於須要操做的表設計同樣的表,只須要查詢的能夠設計爲視圖 EF導入庫-->> edmx文件: , Note left of edmx文件: 導入相關表結構生成實體模型

這將產生一個流程圖。:sql

graph TD A[service] -- 執行 中間省略其餘業務操做說明--> B((DA數據交互)) B --更新實體數據--> C{emdx實體類} C --經過EF導入庫生成的emdx實體--> D(生成sql語句) D--更新數據-->E((開發庫數據表)) E--更新-->F{客戶庫中的數據表} A--鏈接執行數據庫-->E
  1. 分析兩個圖表:
  • 咱們從第一張表中能夠看出有三個數據庫,一個是客戶的數據庫,一個爲開發使用的數據庫,還有一個是導入模型使用的庫。第二張表則是程序執行操做數據庫的流程和鏈接圖。
  • 先說第一個庫是客戶庫,應該不用多說,就是客戶主要數據的來源
  • 再說第二個庫是開發庫,也沒必要多說就是咱們開發人員所直接操做的庫。
  • 第三個庫則必須得要細說一下,由於這裏它的做用是很大的,但必須得要理解了才行。
  • 我如今對它進行細說一下,但本人也是剛接觸的有哪裏說的不對,也請多多指教: 1.因爲EF模型操做視圖是不能增刪改操做的,只能查詢,而對於數據則能夠進行增刪改查,但也是針對於單表的視圖,多表關聯的視圖也只能查詢。 2.客戶中的表咱們在開發庫添加了視圖,其餘程序業務操做則直接在開發庫中建立表,從這裏咱們知道要操做客戶的表在EF中咱們沒法執行,只能查詢。這時爲了都可以進行操做咱們就添加了一個EF導入庫,將須要修改客戶的表在EF導入庫中生成表,而後EF模型從該EF導入庫中添加實體模型。但在web使用的數據庫咱們則使用開發庫來鏈接,這樣就解決了客戶庫的問題了。

EF模型導入趕上的問題

  1. 數據庫表導入不入EF模型中那就查看一下表是否有主鍵值,沒有主鍵值是添加不進去的。
  2. 數據庫有許多鏈接服務時,可能有時候選錯了數據庫鏈接致使沒法正常導入正確的模型,可這時模型中有許多原始表模型,咱們不可能從新刪除模型再建立,最簡單的辦法就是找到APP.config文件,裏面找到鏈接字符串,將信息改成正確的鏈接,若是改了仍是不行,那直接將那鏈接字符串的標籤都刪除,而後再去edmx更新從數據庫到模型,這時它就會從新要你選擇數據庫進行鏈接了。
  3. 有時候咱們直接選擇從數據庫更新到模型,是由於咱們所更新的表是沒有變的,但可能差個字段或是取消個字段,但更新以後它可能會顯示找不到該字段的映射等問題,若是沒有服務器須要對比則能夠最直接的辦法就是將該表的模型刪除而後從新添加進來更新就行了。但若是有服務器的對比,刪除再添加就會改變內容的位置,這時候比較就會顯示有許多不同。所以不須要刪除能夠直接點擊edmx文件用xml格式打開,將有問題的字段映射部分去掉就好了。但要保證數據庫與模型是一致的才能夠。
相關文章
相關標籤/搜索