sqlserver使用EF模型經驗

来源:https://www.cnblogs.com/Jack-S-Wang/archive/2019/05/08/10835794.html
-Advertisement-
Play Games

sqlserver使用EF模型經驗 EF模型使用本人在之前兩三年中從沒使用過,所以剛開始使用就會踩上許多的坑。今天我不單單說下自己所踩的一些坑與當前公司中使用EF模型設計的理念,即是為我自己做個筆記,也是為其他人提供一個經驗吧,但本人剛接觸不久,有理解錯誤的還請大家能夠多多指教。 首先說一下我現在所 ...


sqlserver使用EF模型經驗

EF模型使用本人在之前兩三年中從沒使用過,所以剛開始使用就會踩上許多的坑。今天我不單單說下自己所踩的一些坑與當前公司中使用EF模型設計的理念,即是為我自己做個筆記,也是為其他人提供一個經驗吧,但本人剛接觸不久,有理解錯誤的還請大家能夠多多指教。

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

  1. 公司資料庫的設計模式是怎麼樣的

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. 分析兩個圖表:
  • 我們從第一張表中可以看出有三個資料庫,一個是客戶的資料庫,一個為開發使用的資料庫,還有一個是導入模型使用的庫。第二張表則是程式執行操作資料庫的流程和連接圖。
  • 先說第一個庫是客戶庫,應該不用多說,就是客戶主要數據的來源
  • 再說第二個庫是開發庫,也不必多說就是我們開發人員所直接操作的庫。
  • 第三個庫則必須得要細說一下,因為這裡它的作用是很大的,但必須得要理解了才行。
  • 我現在對它進行細說一下,但本人也是剛接觸的有哪裡說的不對,也請多多指教: 1.由於EF模型操作視圖是不能增刪改操作的,只能查詢,而對於數據則可以進行增刪改查,但也是針對於單表的視圖,多表關聯的視圖也只能查詢。 2.客戶中的表我們在開發庫添加了視圖,其他程式業務操作則直接在開發庫中創建表,從這裡我們知道要操作客戶的表在EF中我們無法執行,只能查詢。這時為了都能夠進行操作我們就添加了一個EF導入庫,將需要修改客戶的表在EF導入庫中生成表,然後EF模型從該EF導入庫中添加實體模型。但在web使用的資料庫我們則使用開發庫來連接,這樣就解決了客戶庫的問題了。

EF模型導入遇上的問題

  1. 資料庫表導入不入EF模型中那就查看一下表是否有主鍵值,沒有主鍵值是添加不進去的。
  2. 資料庫有許多連接服務時,可能有時候選錯了資料庫連接導致無法正常導入正確的模型,可這時模型中有許多原始表模型,我們不可能重新刪除模型再創建,最簡單的辦法就是找到APP.config文件,裡面找到連接字元串,將信息改為正確的連接,如果改了還是不行,那直接將那連接字元串的標簽都刪除,然後再去edmx更新從資料庫到模型,這時它就會重新要你選擇資料庫進行連接了。
  3. 有時候我們直接選擇從資料庫更新到模型,是因為我們所更新的表是沒有變的,但可能差個欄位或是取消個欄位,但更新之後它可能會顯示找不到該欄位的映射等問題,如果沒有伺服器需要對比則可以最直接的辦法就是將該表的模型刪除然後重新添加進來更新就好了。但如果有伺服器的對比,刪除再添加就會改變內容的位置,這時候比較就會顯示有許多不一樣。因此不需要刪除可以直接點擊edmx文件用xml格式打開,將有問題的欄位映射部分去掉就行了。但要保證資料庫與模型是一致的才可以。

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • this: 1、使用在類中,可以用來修飾屬性、方法、構造器 2、表示當前對象或者是當前正在創建的對象 3、當形參與成員變數重名時,如果在方法內部需要使用成員變數,必須添加 this 來表明該變數時類成員 4、在任意方法內,如果使用當前類的成員變數或者成員方法可以在其前面添加 this ,增強程式的閱 ...
  • 工作快一年了,一直沒有停下學習的腳步,但是發現自己學的東西太雜太亂也太容易忘記(從小學到大學一直沒有記筆記的習慣),總是反反覆復,所以在此進行總結,也記錄下自己的學習的歷程,從此做一個有內涵的程式猿。。。 ...
  • pip: 一個現代的,通用的 Python 包管理工具。提供了對Python 包的查找、下載、安裝、卸載的功能。 windows:自帶pip,直接使用。 Linux:執行下麵命令即可完成安裝。 Usage: pip <command> [options] 查看版本:pip show package_ ...
  • 1.介面定義 介面屬於一個特殊的類,這個類裡面只能有抽象方法和全局常量 (該概念在JDK1.8之後被打破,在1.8後介面中還可以定義普通方法和靜態方法,在後續章節會詳講) 1.1 介面具有以下幾個原則 介面通過interface關鍵字來實現定義 一個子類如果要繼承介面的話,則需要通過implemen ...
  • 本次內容是基於獨立的“企業微信”而言的; 企業微信有獨立的管理後臺,和一般的服務號,訂閱號後臺不同; 企業微信涉及員工,所以這裡的支付是付款到員工零錢; 官方API文檔: https://work.weixin.qq.com/api/doc#90000/90135/90278 下麵具體步驟: 1:先 ...
  • CodeFirst的開發模式,資料庫的設計細節完全靠代碼來完成,數據實體映射配置正是負責這項工作的,針對一個實體,可以在這裡配置其在資料庫中的數據表關係、數據約束及各個數據欄位的每一個細節配置 ...
  • 作為上床後需要下床檢查好幾次門關了沒有的資深強迫症患者,有一個及其搞我的問題,就是dll問題。 曾幾何時,在沒有nuget的年代,當有依賴項需要引用的時候,只能通過文件引用來管理引用問題,版本問題,更新問題層出不窮,很是難受。 後來出來nuget,喜大普奔,總算解決了引用的問題。開心之餘,依然還有一 ...
  • 你將要創造什麼 Unity是由Unity Technologies開發的多平臺游戲引擎,用於為控制台,移動設備,電腦甚至網站等多種設備創建視頻游戲和應用程式。Unity的核心優勢在於其穩健性,可移植性和社區性; Unity針對幾個眾所周知的API,如Direct3D,OpenGL,Op​​enGL ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...