C# Entity Framework 6 如何更新結構、資料型態
這章節主要使用、更新資料結構,EF6只要碰到更新動作是一件很可怕的事情,以下提供各位解決方案。
何謂 Edmx 檔案edmx是EF產生的檔案,透過創建方式產生 SSDL、CSDL 、MSL 。SSDL:定義實體資料庫。CSDL:定義模型類別。MSL(C-S Mapping):對應資料庫Table與Entity物件
更新方式
修改 edmx 檔案(用xml開啟)以及 模型類別
透過 edmx 圖形化方式修改。
若要更新model先刪掉裡面內容,才能確保保持一樣的內容。
更新結構/新增結構這邊我們用兩種做法,開始前我們先新增 text4 當作範例,請參閱更新方式。
圖形化方式修改一、 首先雙點擊edmx再來按下完成。備註 : 更新部分已經存在的table 只需要按下完成即可。
二、 確認模型類型這邊建議存檔完畢edmx在檢查類型會比較好,原因是當他完成更新結構需要loading一段時間,才會更新到類別,雖然它會自動更新類別極大優點也造成有缺陷問題。
備註 : 通常初期使用圖形化方式更新會比較好上手,EF6載入問題實在是無法排除這致命問題,建議少用圖形化方式更新結構。
XM ...
C# 讓 Entity Framework 自動創建資料庫
前言最近需要放送心情,將這個主題延後兩三個月才公布。EF 已經在業界當中不可或缺的一個技術,這次就來介紹如何使用EF自動創建資料庫。
EF 創建資料庫方法一、EnsureCreated這個方法是在EF Core 1.0版本中新增的,這個方法會檢查資料庫是否存在,如果不存在就會建立資料庫,但是這個方法只會建立資料庫,不會建立資料表,所以這個方法只適合在開發階段使用。
EnsureCreated() 創建是空白資料表。因此,需要使用還是要有個地方站存資料,例如 : excel 、access 、json等。
規則 :
如果資料庫不存在,就會建立資料庫、資料表。
如果資料庫存在,就不會做任何事情。
如果資料庫存在且資料表不存在,就不會建立資料表。
介於這個方法特性,可以知道他不具有更新資料表的能力,通常會與Migrations使用或是自動測試之類。
1234using (var context = new BloggingContext()){ context.Database.EnsureCreated();}
二、Migrations可以利用Migrat ...
使用 Entity Framework 6 CRUD
使用前必須要先知道 Entity Framework 有兩個版本。
Entity Framework Core : 適用於 .NET 的新式物件資料庫對應程式。 其支援 LINQ 查詢、變更追蹤、更新以及結構描述移轉。
Entity Framework 6 : 透過資料庫提供者外掛程式模型搭配使用 SQL Server/Azure SQL Database、SQLite、Azure Cosmos DB、MySQL、PostgreSQL 及更多資料庫。
因此,使用EF6表現上會與 EF core 功能會也所不同。EF6是基於ADO.NET發展出來的物件關聯對應 (O/R Mapping),利用了抽象化資料結構的方式,將每個資料庫物件都轉換成應用程式物件 (entity),而資料欄位都轉換為屬性 (property),關聯則轉換為結合屬性 (association),讓資料庫的 E/R 模型完全的轉成物件模型。
參考文件
microsoft : microsoft Entity Framewor
Wiki : Entity Framework
Wiki ...
【心得】Funter開箱心得
前言供給各位放鬆心情閱讀,請慢用貓貓圖φ(゜▽゜*)♪。
購買契機由於本人主要工作是”撰寫程式”(軟體工程師)長期坐在位子上使用電腦,如果長期一直坐著使用電腦不斷影響我的腰部能力,因此選擇升降桌。而市面上很多升降桌品牌,最多人提出品牌為 “funte”、”standway”最多,思考方向會想 雙11或雙12入手比較價格。”standway”部分沒有降下來趨勢,再來就是價格比funte貴才放下standway。
funte 因雙12優惠 寬120cm*深60cm 智慧型電動三節式升降桌 只需要 13,860相當划算。
最初桌子一開始使用的桌面為ikea SVARTA 現代北歐桌板 ,桌面長度很廣、也有弧形的桌邊,可以強化高架床的搖晃度相當實用。
這幾年使用下來分享一下缺點,如下。
桌面高度、椅子舒適度
弧形桌面使用上的不適感
夾桌面設備比較不友善,如掛壁式螢幕
之後選擇了,升降桌方式排除問題點。
Funte 開箱首次撰寫開箱文,新手發文請多多包涵。
Funte 重量、搬運Funte整體重量來說,鐵架那包是最重包裹,如果家裡是公寓沒有電梯建議還是兩個人去搬運(自行DIY)。
Funte ...
【LinqPAD】使用 LinQ (一) - 介紹 LinQ
語言整合查詢 - Linq 簡介何謂Linq ?語言整合查詢(英語:Language Integrated Query,縮寫:LINQ), 顧名思義就是此程式語言擁有查詢資料的能力,LINQ的出現使得C#(基本上 .Net 都可以使用)可以在程式中查找資料。利用標準查詢運算子(Standard Query Operators),工程師可以用原生的C#語言對資料做處理,選擇資料來源、進行篩選到組合、分組都可以利用標準查詢運算子完成,而且在撰寫的過程中還可以享受到型別檢查及自動完成帶來的便捷。
LINQ的組成LINQ是一種能力,微軟開發出了很多不同的技術讓C#擁有這樣的能力。
1. 標準查詢運算子 - Standard Query Operators標準查詢運算子是應用於集合類別的運算子,它對集合實作了篩選、組合、排序..等等的運算功能,像是Select、Where、OrderBy…等方法,而這些方法就是運作於IEnumerable、IQueryable。
2. 語言擴展 - Language Extensions為了使LINQ可以更加便捷的使用而將C#擴充了以下的功能:
a. 查詢運算式 ...
【LinqPAD】使用 LinQ (三) - LinqPad 工具
如果要繼續深入使用 LinQ ,那一定要說一下最近使用的工具 LinqPad。
LinQpad這工具是一套免費軟體,注意一下環境必須要安裝 .NET Framework 3.5或是4.0以上,免費版功能已經夠用測試LinQ使用。
如果需要code snippets,autocompletion, smart tags, code outlining, .NET Reflector integration 功能就前往升級版本。
詳細說明請至 IT邦幫忙(Peter Chen) : https://ithelp.ithome.com.tw/articles/10193063
創造資料庫這邊為了快速建檔,可以使用下方語法創建資料庫。我們需要創建個人資料以及成績,之後會用 LINQ 串出來。
資料庫1234567891011/****** Object: Database [TestDB] Script Date: 2021/12/3 下午 10:40:32 ******/CREATE DATABASE [TestDB] CONTAINMENT = NONE ON PRIMARY ...
【LinqPAD】使用 LinQ (二) - C# 常見使用方式
VSC - 所需的套件[Mindbox.Data.Linq]
https://www.nuget.org/packages/Mindbox.Data.Linq/
[System.Linq]
https://www.nuget.org/packages/System.Linq/
[System.Data.SqlClient]
https://www.nuget.org/packages/System.Data.SqlClient/
使用方式1. ArraylinQ可以將陣列重新排序或是重新查詢,以下使用讀取方式:
123456789public void linqArrayExmple(){ string[] sName = {"周杰輪","周潤發","劉得華","周深"}; var vSearch = from s in sName select s ; //或 var vSearch = sName; 為全部搜尋 foreach(va ...
【LinqPAD】使用 LinQ (四) - Join 使用方式
LinQ 使用join 需要知道Outer及Inner兩個資料型別物件。
JOIN 定義Join方法如下:
1234567891011121314public static IEnumerable<TResult> Join<TOuter, TInner, TKey, TResult>( this IEnumerable<TOuter> outer, IEnumerable<TInner> inner, Func<TOuter, TKey> outerKeySelector, Func<TInner, TKey> innerKeySelector, Func<TOuter, TInner, TResult> resultSelector);public static IEnumerable<TResult> Join<TOuter, TInner, TKey, TResult>( this IEnumerable<TOuter> o ...
【筆記】何謂微服務
微服務 - micro service微服務架構是解決巨型專案,設計方向由龐大專案拆解成小群獨立的服務軟體系統。
微服務架構特性,可以讓開發複雜性降低、開發速度,透過 RPC (Remote Procedure Call)方式呼叫。因此, 微服務 成為目前最常見的架構,若從舊系統來看是無法將舊系統拆解,可能使用傳統架構 “單體式系統架構”。
優點
降低開發認知複雜性
提升開發速度、規模
性能與可擴展性
可以獨立部署
缺點
RPC 調用、呼叫方式大量增加
系統安全性管理更加有挑戰性
引入分佈式系統的複雜度
資安問題
分散式身份驗證與授權:微服務架構通常會將系統拆分成多個服務,這意味著需要對每個服務進行獨立的身份驗證和授權,並且確保這些服務之間的通信是安全的。
數據保護:在微服務架構中,不同的服務可能會存儲數據庫的不同部分,因此需要確保數據在存儲、傳輸和處理過程中得到充分的保護,以防止數據泄露或被竊取。
API 安全性:由於微服務架構通常是通過 API 進行通信的,因此需要確保 API 是安全的,防止未經授權的訪問和其他安全威脅。
容器安全:微服務通常運行在容器中,需要確保容器本身的 ...
【Golang】 基本使用(三) - 判斷式、迴圈
判斷式在分支判斷的控制上,Go 提供了 if…else、switch 語法,相較於其他提供類似語法的語言,例如 : c、c# 、java 等。題外話 python 是沒有switch case必須要自己手動創建出來。
輸入方式這章節會需要用到輸入,請各位參考下方輸入方法:
12var number intfmt.Scanln(&number)
IF 敘述GO語言當中是無法使用單行可捨棄括號的敘述,優點會知道if範圍在哪。go特性是此判斷式可以不用使用括號。
1234567891011package mainimport "fmt"func main() { var x int16 fmt.Scanln(&x) fmt.Print("if Statement") if x > 10 { fmt.Printf("x = %d is greater than 10\n", x) }}
IF ELSE敘述Go語言對IF…ELSE敘述中,看出ELSE前面必須要有{} ...