當我的專案中有 EntityFramework Core 時,是否必須安裝 SQL Server 才能使用資料庫?或者 EntityFramework Core 是否涵蓋了我對資料庫相關問題的所有需求?
uj5u.com熱心網友回復:
當我的專案中有 EntityFramework Core 時,是否必須安裝 SQL Server 才能使用資料庫?
不。物體框架是一種在 C# LINQ 陳述句和各種 SQL 風格之間進行調整的設備,以便下載資料庫資料并將其轉換為可以在 C# 中使用的物件樹。
所需的特定 SQL 由特定于資料庫的提供程式庫處理,并且有許多不同的提供程式。這使 EF 能夠處理各種不同的資料庫。您確實需要一個資料庫,但它不必是 SQL Server。一種流行的替代方法是 SQLite,這是一種基于檔案的資料庫,不需要安裝獨立的服務器軟體。它具有可與 SQLServer、MySQL、Oracle 和 Postgres 等企業級資料庫相媲美的功能集,其功能非常強大
因為您似乎想使用 EF 而不必使用 SQLServer,所以這里有一個使用 SQLite 的 Microsoft EFC 教程的鏈接:
https://docs.microsoft.com/en-us/ef/core/get-started/overview/first-app?tabs=netcore-cli
隨意使用任何有 EF 提供程式的資料庫;鏈接的教程有一個鏈接到各個提供商,一個簡單的網路搜索無疑也會帶來一個大串列,所以我不會在這里復制它
或者 EntityFramework Core 是否涵蓋了我對資料庫相關問題的所有需求?
如前所述,EFC 純粹是一種設備,它可以看到您使用 LINQ、生成 SQL、獲取資料并為您提供物件。它是您的代碼和資料庫之間的配接器作為高級概述,您可能會有表:
Department
DepartmentId, DeptName
Employee
EmployeeId, Name, HireDate, DepartmentId
你會有代表它們的類:
public class Employee {
public int Id {get; set;}
public string Name {get; set;}
public DateTime {get; set;}
public int DepartmentId {get; set;}
public Department Department {get; set;}
}
public class Department {
public int DepartmentId {get; set;}
public string DeptName {get; set;}
public ICollection<Employee> Employees {get; set;}
}
您將形成一個 LINQ 以某種方式檢索它們:
context.Employees.Include(e => e.Department).First(e => e.EmployeeId == 1);
EF會創建一個 SQL(像這樣,不太可讀)并運行它:
SELECT TOP 1 *
FROM Employees e INNER JOIN Departments d ON e.DepartmentId = d.DeparmtentId
WHERE e.EmployeeId == 1
資料庫將回傳一些結果集:
1, John, 1970-01-01, 2, 2, Engineering
EF將提取資料部分并將其存盤到物件中:
Employee e = new Employee();
e.Id = datareader.GetInt("EmployeeId"); //1
e.Name = datareader.GetString("Name"); //John
e.HireDate = datareader.GetDate("HireDate"); //1970-01-01
e.DepartmentId = datareader.GetInt("DepartmentId"); //2
Department d = new Department();
d.Id = datareader.GetInt("DepartmentId"); //2
d.DeptName = datareader.GetString("DeptName"); //Engineering
e.Department = d;
d.Employees.Add(e);
你會得到一個 C# 物件,其中填充了所有欄位,包括相關部門,填充了所有欄位,所以你可以說 eg emp.Department.Name(甚至是 emp.Department.First().Employee.Department.First().Employee ... - it's a 2-way linked graph so you can do lots of“點點點”在它周圍導航。
所以,仔細想想,EF 正在為你做大量無聊的作業;制作 SQL,讀取資料庫,制作物件.. 全部都在 C# 的一行后面,上面寫著“我想要 ID 為 1 的員工和他們的部門”
但它不包括資料庫本身,因為不同的人想要不同的資料庫是有充分理由的
uj5u.com熱心網友回復:
EntityFramework Core 是資料庫的 orm
如果你使用 EntityFramework 你必須有 sql server 來創建資料庫,你必須遷移 EF 并更新資料庫
但是如果你不能安裝 sql 你可以使用 docker
參考:
https://docs.microsoft.com/en-us/ef/core/
https://www.docker.com/
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/410537.html
標籤:
下一篇:我們如何在特定條件下回圈SQL列
