{ "cells": [ { "cell_type": "markdown", "id": "19839fa7", "metadata": { "polyglot_notebook": { "kernelName": "csharp" } }, "source": [ "使用 .net 程序操作数据库\n", "=======================\n", "除了使用SQL内核执行SQL语句直接操作数据库,使用最多的是使用用.net程序操作数据库:\n", "+ ado.net 原生操作\n", "+ 使用ORM框架,比如 Daper、EFCore、SqlSugar、FreeSQL等" ] }, { "cell_type": "markdown", "id": "4ca948bd", "metadata": {}, "source": [ "## 初始化" ] }, { "cell_type": "code", "execution_count": 16, "id": "4f5767d2", "metadata": { "polyglot_notebook": { "kernelName": "csharp" } }, "outputs": [ { "data": { "text/html": [ "<div><div></div><div></div><div><strong>Installed Packages</strong><ul><li><span>Dapper, 2.1.66</span></li><li><span>DuckDB.NET.Data.Full, 1.2.1</span></li><li><span>Microsoft.Data.SqlClient, 6.0.1</span></li><li><span>Microsoft.Data.Sqlite, 9.0.4</span></li><li><span>Microsoft.EntityFrameworkCore, 9.0.4</span></li><li><span>Microsoft.EntityFrameworkCore.Sqlite, 9.0.4</span></li><li><span>Microsoft.EntityFrameworkCore.SqlServer, 9.0.4</span></li><li><span>MongoDB.EntityFrameworkCore, 9.0.0</span></li><li><span>MySql.Data, 9.3.0</span></li><li><span>MySql.EntityFrameworkCore, 9.0.3</span></li><li><span>Npgsql, 9.0.3</span></li><li><span>Npgsql.EntityFrameworkCore.PostgreSQL, 9.0.4</span></li></ul></div></div>" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "<div><div></div><div></div><div><strong>Installed Packages</strong><ul><li><span>Microsoft.Extensions.Configuration, 9.0.4</span></li><li><span>Microsoft.Extensions.Configuration.Binder, 9.0.4</span></li><li><span>Microsoft.Extensions.Configuration.CommandLine, 9.0.4</span></li><li><span>Microsoft.Extensions.Configuration.EnvironmentVariables, 9.0.4</span></li><li><span>Microsoft.Extensions.Configuration.ini, 9.0.4</span></li><li><span>Microsoft.Extensions.Configuration.json, 9.0.4</span></li><li><span>Microsoft.Extensions.Configuration.KeyPerFile, 9.0.4</span></li><li><span>Microsoft.Extensions.Configuration.UserSecrets, 9.0.4</span></li><li><span>Microsoft.Extensions.Configuration.xml, 9.0.4</span></li><li><span>microsoft.extensions.dependencyinjection, 9.0.4</span></li><li><span>microsoft.extensions.logging, 9.0.4</span></li><li><span>Microsoft.Extensions.Logging.Configuration, 9.0.4</span></li><li><span>Microsoft.Extensions.Logging.Console, 9.0.4</span></li><li><span>Microsoft.Extensions.Logging.Debug, 9.0.4</span></li><li><span>Microsoft.Extensions.Logging.EventSource, 9.0.4</span></li><li><span>microsoft.extensions.options, 9.0.4</span></li><li><span>Microsoft.Extensions.Options.ConfigurationExtensions, 9.0.4</span></li><li><span>Microsoft.Extensions.Options.DataAnnotations, 9.0.4</span></li></ul></div></div>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#!import \"./Base.ipynb\"\n", "\n", "//共享\n", "#r \"nuget:Microsoft.Data.SqlClient\"\n", "#r \"nuget:MySql.Data\"\n", "#r \"nuget:Npgsql\"\n", "#r \"nuget:Microsoft.Data.Sqlite\"\n", "#r \"nuget:DuckDB.NET.Data.Full\"\n", "\n", "#r \"nuget:Dapper\"\n", "\n", "#r \"nuget:Microsoft.EntityFrameworkCore\"\n", "#r \"nuget:Microsoft.EntityFrameworkCore.SqlServer\"\n", "#r \"nuget:Microsoft.EntityFrameworkCore.Sqlite\"\n", "#r \"nuget:Npgsql.EntityFrameworkCore.PostgreSQL\"\n", "#r \"nuget:MySql.EntityFrameworkCore\"\n", "//#r \"nuget:Pomelo.EntityFrameworkCore.MySql\"\n", "#r \"nuget:MongoDB.EntityFrameworkCore\"\n", "\n", "global using System.Text.Json;\n", "global using System.Text.Json.Schema;\n", "global using System.Text.Json.Serialization;\n", "\n", "global using System.Data;\n", "global using System.Data.Common;\n", "global using System.Data.SqlTypes;\n", "global using System.Data.SqlClient;\n", "//global using System.Data.OracleClient;\n", "\n", "global using Microsoft.Data.SqlClient;\n", "global using Microsoft.Data.SqlClient.Server;\n", "\n", "global using MySql.Data;\n", "global using MySql.Data.Types;\n", "global using MySql.Data.MySqlClient;\n", "\n", "global using Microsoft.Data.Sqlite;\n", "\n", "global using DuckDB.NET.Data;\n", "global using DuckDB.NET.Data.DataChunk;\n", "\n", "global using Dapper;\n", "\n", "global using Npgsql;\n", "global using Npgsql.Schema;\n", "global using Npgsql.PostgresTypes;\n", "global using Npgsql.TypeMapping;\n", "global using Npgsql.Util;\n", "global using Npgsql.NameTranslation;\n", "global using Npgsql.BackendMessages;\n", "\n", "\n", "global using Microsoft.EntityFrameworkCore;\n", "global using Microsoft.EntityFrameworkCore.SqlServer;\n", "global using Microsoft.EntityFrameworkCore.Sqlite;\n", "global using Npgsql.EntityFrameworkCore.PostgreSQL;\n", "global using MySql.EntityFrameworkCore;\n", "global using MongoDB.EntityFrameworkCore;\n", "\n", "//共享方法\n", "public static List<Student> DatatableToStudent(DataTable studentTable)\n", "{\n", " var students = new List<Student>();\n", " if(studentTable == null)\n", " {\n", " return students;\n", " }\n", "\n", " if(studentTable.Columns.Count ==0)\n", " {\n", " return students;\n", " }\n", "\n", " if(studentTable.Rows.Count <=0)\n", " {\n", " return students;\n", " }\n", "\n", " foreach(DataRow row in studentTable.Rows)\n", " {\n", " var student = new Student()\n", " {\n", " Id = (int)row[\"Id\"],\n", " Name = row[\"Name\"] == DBNull.Value ? \"\" : (string)row[\"Name\"].ToString(),\n", " Age = row[\"Age\"] == DBNull.Value ? 0 : (int)row[\"Age\"]\n", " };\n", "\n", " students.Add(student);\n", " }\n", "\n", " return students;\n", "}" ] }, { "cell_type": "markdown", "id": "c66c5da7", "metadata": {}, "source": [ "## 使用 ADO.NET" ] }, { "cell_type": "markdown", "id": "6b1ebc4f", "metadata": {}, "source": [ "### SQL Server 数据库(2019为例)" ] }, { "cell_type": "code", "execution_count": 2, "id": "f64d17d8", "metadata": { "polyglot_notebook": { "kernelName": "csharp" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "查询到: 528 行数据\n", "前2行:[{\"Id\":1,\"Name\":\"吕宇宁\",\"Age\":74},{\"Id\":6,\"Name\":\"林杰宏\",\"Age\":73}]\n" ] } ], "source": [ "//Ado.Net 操作SQL Server\n", "{\n", " DataSet ds = new DataSet();\n", "\n", " using(var mssqlConnection = new SqlConnection(SharedDbConnect.MsSqlConnectionString))\n", " {\n", " mssqlConnection.Open();\n", "\n", " var querySql = \"select * FROM student where age >@age;\";\n", " SqlParameter[] parameters = new SqlParameter[]\n", " {\n", " new SqlParameter()\n", " {\n", " ParameterName = \"age\",\n", " SqlDbType = SqlDbType.Int,\n", " Value = 50,\n", " Direction = ParameterDirection.Input,\n", " Size = 4,\n", " DbType = DbType.Int32,\n", " IsNullable = false,\n", " }\n", " };\n", " var command = new SqlCommand(querySql, mssqlConnection);\n", " command.Parameters.AddRange(parameters);\n", "\n", " var adapter = new SqlDataAdapter(command);\n", " adapter.Fill(ds);\n", "\n", " mssqlConnection.Close();\n", " mssqlConnection.Dispose();\n", " }\n", "\n", " var students = DatatableToStudent(ds.Tables[0]);\n", "\n", " Console.WriteLine($\"查询到: {students.Count()} 行数据\");\n", " var jsonText = System.Text.Json.JsonSerializer.Serialize(students.Take<Student>(2), new System.Text.Json.JsonSerializerOptions()\n", " {\n", " Encoder = System.Text.Encodings.Web.JavaScriptEncoder.Create(System.Text.Unicode.UnicodeRanges.All),\n", " WriteIndented = false,\n", " });\n", "\n", " Console.WriteLine($\"前2行:{jsonText}\");\n", "}" ] }, { "cell_type": "markdown", "id": "a604fbea", "metadata": { "polyglot_notebook": { "kernelName": "csharp" } }, "source": [ "### MySQL" ] }, { "cell_type": "code", "execution_count": 20, "id": "90085b98", "metadata": { "polyglot_notebook": { "kernelName": "csharp" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Id Name Age \n", "1 江子韬 28 \n", "2 苏震南 48 \n" ] } ], "source": [ "//Ado.Net 操作MySQL\n", "{\n", " //查询数据\n", " DataSet ds = new DataSet();\n", "\n", " using(var sqlConnection = new MySqlConnection(SharedDbConnect.MySQLConnectionString))\n", " {\n", " sqlConnection.Open();\n", "\n", " var querySql = \"SELECT * FROM `Student` LIMIT 2;\";\n", " var command = new MySqlCommand(querySql, sqlConnection);\n", "\n", " var adapter = new MySqlDataAdapter(command);\n", " adapter.Fill(ds);\n", "\n", " sqlConnection.Close();\n", " sqlConnection.Dispose();\n", " }\n", "\n", " //输出数据\n", " var dt = ds.Tables[0];\n", " int padRightCount = 15;\n", "\n", " //输出列\n", " List<string> columnNames = new List<string>(100);\n", " foreach(DataColumn c in dt.Columns)\n", " {\n", " columnNames.Add(c.ColumnName.PadRight(padRightCount));\n", " }\n", "\n", " Console.WriteLine(string.Join(\"\", columnNames));\n", "\n", " //输出数据\n", " foreach(DataRow row in dt.Rows)\n", " {\n", " List<string> rowItemValues = new List<string>(100);\n", "\n", " for(int i=0; i<columnNames.Count(); i++)\n", " {\n", " var valueText = row[i] == DBNull.Value? \"null\" : row[i].ToString();\n", " rowItemValues.Add(valueText.PadRight(padRightCount));\n", " }\n", "\n", " Console.WriteLine(string.Join(\"\",rowItemValues));\n", " }\n", "}" ] }, { "cell_type": "markdown", "id": "c601df54", "metadata": {}, "source": [ "### PostgreSQL" ] }, { "cell_type": "code", "execution_count": 21, "id": "bb00b479", "metadata": { "polyglot_notebook": { "kernelName": "csharp" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Id Name Age \n", "1 邵致远 62 \n", "2 孙致远 4 \n", "3 陶震南 60 \n", "4 邹安琪 63 \n", "5 宋安琪 17 \n" ] } ], "source": [ "//Ado.Net 操作PostgreSQL\n", "{\n", " //查询数据\n", " DataSet ds = new DataSet();\n", " using(var sqlConnection = new NpgsqlConnection(SharedDbConnect.PSQLConnectionString))\n", " {\n", " sqlConnection.Open();\n", " \n", " var querySql = \n", " \"\"\"\n", " SELECT * FROM \"Student\" LIMIT 5;\n", " \"\"\";\n", " var command = new NpgsqlCommand(querySql, sqlConnection);\n", "\n", " var adapter = new NpgsqlDataAdapter(command);\n", " adapter.Fill(ds);\n", "\n", " sqlConnection.Close();\n", " sqlConnection.Dispose();\n", " }\n", "\n", " //输出数据\n", " var dt = ds.Tables[0];\n", " int padRightCount = 15;\n", "\n", " //输出列\n", " List<string> columnNames = new List<string>(100);\n", " foreach(DataColumn c in dt.Columns)\n", " {\n", " columnNames.Add(c.ColumnName.PadRight(padRightCount));\n", " }\n", "\n", " Console.WriteLine(string.Join(\"\", columnNames));\n", "\n", " //输出数据\n", " foreach(DataRow row in dt.Rows)\n", " {\n", " List<string> rowItemValues = new List<string>(100);\n", "\n", " for(int i=0; i<columnNames.Count(); i++)\n", " {\n", " var valueText = row[i] == DBNull.Value? \"null\" : row[i].ToString();\n", " rowItemValues.Add(valueText.PadRight(padRightCount));\n", " }\n", "\n", " Console.WriteLine(string.Join(\"\",rowItemValues));\n", " }\n", "}" ] }, { "cell_type": "code", "execution_count": 22, "id": "a52047f6", "metadata": { "polyglot_notebook": { "kernelName": "csharp" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Id Name Age \n", "1 邵致远 62 \n", "2 孙致远 4 \n", "3 陶震南 60 \n", "4 邹安琪 63 \n", "5 宋安琪 17 \n" ] } ], "source": [ "//Ado.Net 操作PostgreSQL: 客户端官方用法(异步)\n", "{\n", " //查询数据\n", " DataSet ds = new DataSet();\n", " int padRightCount = 15;\n", " \n", " await using var dataSource = NpgsqlDataSource.Create(SharedDbConnect.PSQLConnectionString);\n", "\n", " await using (var cmd = dataSource.CreateCommand(\"SELECT * FROM \\\"Student\\\" LIMIT 5;\"))\n", "\n", " await using (var reader = await cmd.ExecuteReaderAsync())\n", " {\n", " //输出列名\n", " List<string> columnNames = reader.GetColumnSchema().Select(c => c.ColumnName.PadRight(padRightCount)).ToList();\n", " Console.WriteLine(string.Join(\"\", columnNames));\n", "\n", " //循环输出行数据\n", " while (await reader.ReadAsync())\n", " {\n", " List<string> rowItemValues = new List<string>(100);\n", " for(int i=0; i<columnNames.Count(); i++)\n", " {\n", " var valueText = reader.GetFieldValue<object>(i).ToString();\n", " rowItemValues.Add(valueText.PadRight(padRightCount));\n", " }\n", "\n", " Console.WriteLine(string.Join(\"\",rowItemValues));\n", " }\n", " }\n", "}" ] }, { "cell_type": "markdown", "id": "e1c9381b", "metadata": {}, "source": [ "### SQLite" ] }, { "cell_type": "code", "execution_count": 23, "id": "96de0cac", "metadata": { "polyglot_notebook": { "kernelName": "csharp" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Id Name Age \n", "1 龚致远 70 \n", "2 潘宇宁 48 \n", "3 陶杰宏 5 \n", "4 彭晓明 46 \n", "5 江震南 63 \n" ] } ], "source": [ "//Ado.Net 操作SQLite\n", "{\n", " //查询数据\n", " DataSet ds = new DataSet();\n", " int padRightCount = 15;\n", "\n", " using(var sqlConnection = new SqliteConnection(SharedDbConnect.SQLiteConnectionString))\n", " {\n", " sqlConnection.Open();\n", " \n", " var querySql = \n", " \"\"\"\n", " SELECT * FROM Student LIMIT 5;\n", " \"\"\";\n", " var cmd = sqlConnection.CreateCommand();\n", " cmd.CommandType = CommandType.Text;\n", " cmd.CommandText = querySql;\n", "\n", " using (var reader = await cmd.ExecuteReaderAsync())\n", " {\n", " //输出列名\n", " List<string> columnNames = reader.GetColumnSchema().Select(c => c.ColumnName.PadRight(padRightCount)).ToList();\n", " Console.WriteLine(string.Join(\"\", columnNames));\n", "\n", " //循环输出行数据\n", " while (await reader.ReadAsync())\n", " {\n", " List<string> rowItemValues = new List<string>(100);\n", " for(int i=0; i<columnNames.Count(); i++)\n", " {\n", " var valueText = reader.GetFieldValue<object>(i).ToString();\n", " rowItemValues.Add(valueText.PadRight(padRightCount));\n", " }\n", "\n", " Console.WriteLine(string.Join(\"\",rowItemValues));\n", " }\n", " }\n", "\n", " sqlConnection.Close();\n", " sqlConnection.Dispose();\n", " }\n", "}" ] }, { "cell_type": "markdown", "id": "b0035452", "metadata": {}, "source": [ "### DuckDB" ] }, { "cell_type": "code", "execution_count": 24, "id": "f986fed7", "metadata": { "polyglot_notebook": { "kernelName": "csharp" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Id Name Age \n", "1 张三 10 \n", "2 李四 33 \n", "3 王五 66 \n" ] } ], "source": [ "//Ado.Net 操作DuckDB数据库\n", "{\n", " int padRightCount = 15;\n", "\n", " using(var sqlConnection = new DuckDBConnection(SharedDbConnect.DuckDBConnectionString))\n", " {\n", " sqlConnection.Open();\n", " //1、创建表\n", " var createTableSql = \n", " \"\"\"\n", " CREATE TABLE Student \n", " (\n", " Id INTEGER,\n", " Name TEXT,\n", " Age INTEGER\n", " );\n", " \"\"\";\n", "\n", " var createCommand = sqlConnection.CreateCommand();\n", " createCommand.CommandType = CommandType.Text;\n", " createCommand.CommandText = createTableSql;\n", "\n", " var createCount = createCommand.ExecuteNonQuery();\n", " //Console.WriteLine($\"{createCount}\");\n", "\n", " //2、插入示例数据\n", " var insertSql = \n", " \"\"\"\n", " INSERT INTO Student VALUES (1, '张三', 10), (2, '李四', 33), (3, '王五', 66);\n", " \"\"\";\n", "\n", " var insertCommand = sqlConnection.CreateCommand();\n", " insertCommand.CommandType = CommandType.Text;\n", " insertCommand.CommandText = insertSql;\n", "\n", " var insertCount = insertCommand.ExecuteNonQuery();\n", " //Console.WriteLine($\"{insertCount}\");\n", "\n", " //3、查询数据\n", " var querySql = \n", " \"\"\"\n", " SELECT * FROM Student ORDER BY Age\n", " \"\"\";\n", " var queryCommand = sqlConnection.CreateCommand();\n", " queryCommand.CommandType = CommandType.Text;\n", " queryCommand.CommandText = querySql;\n", "\n", " using (var reader = await queryCommand.ExecuteReaderAsync())\n", " {\n", " //输出列名\n", " List<string> columnNames = reader.GetColumnSchema().Select(c => c.ColumnName.PadRight(padRightCount)).ToList();\n", " Console.WriteLine(string.Join(\"\", columnNames));\n", "\n", " //循环输出行数据\n", " while (await reader.ReadAsync())\n", " {\n", " List<string> rowItemValues = new List<string>(100);\n", " for(int i=0; i<columnNames.Count(); i++)\n", " {\n", " var valueText = reader.GetValue(i).ToString();\n", " rowItemValues.Add(valueText.PadRight(padRightCount));\n", " }\n", "\n", " Console.WriteLine(string.Join(\"\",rowItemValues));\n", " }\n", " }\n", "\n", " sqlConnection.Close();\n", " sqlConnection.Dispose();\n", " }\n", "}" ] }, { "cell_type": "markdown", "id": "63376dfe", "metadata": {}, "source": [ "## 使用 Dapper" ] }, { "cell_type": "markdown", "id": "77e6b7bb", "metadata": {}, "source": [ "### Dapper 操作 SQL Server 2019" ] }, { "cell_type": "code", "execution_count": 25, "id": "3068074b", "metadata": { "polyglot_notebook": { "kernelName": "csharp" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[{\"Id\":1,\"Name\":\"吕宇宁\",\"Age\":74},{\"Id\":2,\"Name\":\"韦子异\",\"Age\":3}]\r\n" ] } ], "source": [ "//Dapper 操作SQL Server\n", "{\n", " using(var mssqlConnection = new SqlConnection(SharedDbConnect.MsSqlConnectionString))\n", " {\n", " var querySql = \"select * FROM student;\";\n", " var students = mssqlConnection.Query<Student>(querySql).Take(2);\n", " var jsonText = System.Text.Json.JsonSerializer.Serialize(students, new System.Text.Json.JsonSerializerOptions()\n", " {\n", " Encoder = System.Text.Encodings.Web.JavaScriptEncoder.Create(System.Text.Unicode.UnicodeRanges.All),\n", " WriteIndented = false,\n", " });\n", "\n", " Console.WriteLine(jsonText);\n", " }\n", "}" ] }, { "cell_type": "markdown", "id": "d5daa579", "metadata": {}, "source": [ "### Dapper 操作 MySQL" ] }, { "cell_type": "code", "execution_count": 27, "id": "0cd87012", "metadata": { "polyglot_notebook": { "kernelName": "csharp" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[{\"Id\":1,\"Name\":\"江子韬\",\"Age\":28},{\"Id\":2,\"Name\":\"苏震南\",\"Age\":48}]\r\n" ] } ], "source": [ "//Dapper 操作MySQL\n", "{\n", " using(var dbConnection = new MySqlConnection(SharedDbConnect.MySQLConnectionString))\n", " {\n", " var querySql = \"SELECT * FROM `Student` LIMIT @top;\";\n", " var students = dbConnection.Query<Student>(querySql, new {top=2});\n", "\n", " var jsonText = System.Text.Json.JsonSerializer.Serialize(students, new System.Text.Json.JsonSerializerOptions()\n", " {\n", " Encoder = System.Text.Encodings.Web.JavaScriptEncoder.Create(System.Text.Unicode.UnicodeRanges.All),\n", " WriteIndented = false,\n", " });\n", "\n", " Console.WriteLine(jsonText);\n", " }\n", "}" ] }, { "cell_type": "markdown", "id": "bac2b8e0", "metadata": {}, "source": [ "### Dapper 操作 PostgreSQL" ] }, { "cell_type": "code", "execution_count": 28, "id": "7a476608", "metadata": { "polyglot_notebook": { "kernelName": "csharp" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[{\"Id\":1,\"Name\":\"邵致远\",\"Age\":62},{\"Id\":3,\"Name\":\"陶震南\",\"Age\":60}]\r\n" ] } ], "source": [ "//Dapper 操作 PSQL\n", "{\n", " using(var dbConnection = new NpgsqlConnection(SharedDbConnect.PSQLConnectionString))\n", " {\n", " var querySql = \"SELECT * FROM \\\"Student\\\" Where \\\"Age\\\" > @Age LIMIT @Top;\";\n", " var students = dbConnection.Query<Student>(querySql, new {Age = 50, top = 2});\n", "\n", " var jsonText = System.Text.Json.JsonSerializer.Serialize(students, new System.Text.Json.JsonSerializerOptions()\n", " {\n", " Encoder = System.Text.Encodings.Web.JavaScriptEncoder.Create(System.Text.Unicode.UnicodeRanges.All),\n", " WriteIndented = false,\n", " });\n", "\n", " Console.WriteLine(jsonText);\n", " }\n", "}" ] }, { "cell_type": "markdown", "id": "9075b64b", "metadata": {}, "source": [ "## 使用 EF Core" ] }, { "cell_type": "code", "execution_count": 33, "id": "047da44c", "metadata": { "polyglot_notebook": { "kernelName": "csharp" } }, "outputs": [], "source": [ "//共享\n", "/// <summary>\n", "/// SQL Server DbContext\n", "/// </summary>\n", "public class StudyDbContext: DbContext\n", "{\n", " public StudyDbContext(DbContextOptions<StudyDbContext> option):base(option)\n", " {\n", "\n", " }\n", "\n", " public DbSet<Student> Student {get; set;}\n", "\n", " protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)\n", " {\n", " base.OnConfiguring(optionsBuilder);\n", " if(!optionsBuilder.IsConfigured)\n", " {\n", " Console.WriteLine(\"没有设置\");\n", " }\n", " }\n", "}" ] }, { "cell_type": "markdown", "id": "3c61973d", "metadata": {}, "source": [ "### EF Core 操作 SQL Server\n", " " ] }, { "cell_type": "code", "execution_count": 34, "id": "6da513fd", "metadata": { "polyglot_notebook": { "kernelName": "csharp" } }, "outputs": [ { "data": { "text/html": [ "<table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Submission#17+Student</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Id</td><td><div class=\"dni-plaintext\"><pre>33</pre></div></td></tr><tr><td>Name</td><td><div class=\"dni-plaintext\"><pre>戴嘉伦</pre></div></td></tr><tr><td>Age</td><td><div class=\"dni-plaintext\"><pre>99</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>1</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Submission#17+Student</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Id</td><td><div class=\"dni-plaintext\"><pre>45</pre></div></td></tr><tr><td>Name</td><td><div class=\"dni-plaintext\"><pre>曾震南</pre></div></td></tr><tr><td>Age</td><td><div class=\"dni-plaintext\"><pre>98</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>2</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Submission#17+Student</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Id</td><td><div class=\"dni-plaintext\"><pre>55</pre></div></td></tr><tr><td>Name</td><td><div class=\"dni-plaintext\"><pre>丁子韬</pre></div></td></tr><tr><td>Age</td><td><div class=\"dni-plaintext\"><pre>96</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>3</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Submission#17+Student</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Id</td><td><div class=\"dni-plaintext\"><pre>65</pre></div></td></tr><tr><td>Name</td><td><div class=\"dni-plaintext\"><pre>冯宇宁</pre></div></td></tr><tr><td>Age</td><td><div class=\"dni-plaintext\"><pre>99</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>4</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Submission#17+Student</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Id</td><td><div class=\"dni-plaintext\"><pre>167</pre></div></td></tr><tr><td>Name</td><td><div class=\"dni-plaintext\"><pre>严睿</pre></div></td></tr><tr><td>Age</td><td><div class=\"dni-plaintext\"><pre>96</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>5</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Submission#17+Student</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Id</td><td><div class=\"dni-plaintext\"><pre>199</pre></div></td></tr><tr><td>Name</td><td><div class=\"dni-plaintext\"><pre>孔秀英</pre></div></td></tr><tr><td>Age</td><td><div class=\"dni-plaintext\"><pre>96</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>6</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Submission#17+Student</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Id</td><td><div class=\"dni-plaintext\"><pre>232</pre></div></td></tr><tr><td>Name</td><td><div class=\"dni-plaintext\"><pre>王睿</pre></div></td></tr><tr><td>Age</td><td><div class=\"dni-plaintext\"><pre>99</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>7</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Submission#17+Student</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Id</td><td><div class=\"dni-plaintext\"><pre>305</pre></div></td></tr><tr><td>Name</td><td><div class=\"dni-plaintext\"><pre>董子异</pre></div></td></tr><tr><td>Age</td><td><div class=\"dni-plaintext\"><pre>99</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>8</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Submission#17+Student</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Id</td><td><div class=\"dni-plaintext\"><pre>318</pre></div></td></tr><tr><td>Name</td><td><div class=\"dni-plaintext\"><pre>许晓明</pre></div></td></tr><tr><td>Age</td><td><div class=\"dni-plaintext\"><pre>97</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>9</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Submission#17+Student</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Id</td><td><div class=\"dni-plaintext\"><pre>329</pre></div></td></tr><tr><td>Name</td><td><div class=\"dni-plaintext\"><pre>孟宇宁</pre></div></td></tr><tr><td>Age</td><td><div class=\"dni-plaintext\"><pre>99</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>10</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Submission#17+Student</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Id</td><td><div class=\"dni-plaintext\"><pre>338</pre></div></td></tr><tr><td>Name</td><td><div class=\"dni-plaintext\"><pre>陶秀英</pre></div></td></tr><tr><td>Age</td><td><div class=\"dni-plaintext\"><pre>99</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>11</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Submission#17+Student</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Id</td><td><div class=\"dni-plaintext\"><pre>382</pre></div></td></tr><tr><td>Name</td><td><div class=\"dni-plaintext\"><pre>袁云熙</pre></div></td></tr><tr><td>Age</td><td><div class=\"dni-plaintext\"><pre>99</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>12</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Submission#17+Student</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Id</td><td><div class=\"dni-plaintext\"><pre>400</pre></div></td></tr><tr><td>Name</td><td><div class=\"dni-plaintext\"><pre>戴安琪</pre></div></td></tr><tr><td>Age</td><td><div class=\"dni-plaintext\"><pre>96</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>13</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Submission#17+Student</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Id</td><td><div class=\"dni-plaintext\"><pre>413</pre></div></td></tr><tr><td>Name</td><td><div class=\"dni-plaintext\"><pre>尹詩涵</pre></div></td></tr><tr><td>Age</td><td><div class=\"dni-plaintext\"><pre>99</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>14</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Submission#17+Student</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Id</td><td><div class=\"dni-plaintext\"><pre>436</pre></div></td></tr><tr><td>Name</td><td><div class=\"dni-plaintext\"><pre>罗岚</pre></div></td></tr><tr><td>Age</td><td><div class=\"dni-plaintext\"><pre>96</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>15</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Submission#17+Student</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Id</td><td><div class=\"dni-plaintext\"><pre>439</pre></div></td></tr><tr><td>Name</td><td><div class=\"dni-plaintext\"><pre>陆岚</pre></div></td></tr><tr><td>Age</td><td><div class=\"dni-plaintext\"><pre>97</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>16</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Submission#17+Student</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Id</td><td><div class=\"dni-plaintext\"><pre>444</pre></div></td></tr><tr><td>Name</td><td><div class=\"dni-plaintext\"><pre>戴璐</pre></div></td></tr><tr><td>Age</td><td><div class=\"dni-plaintext\"><pre>97</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>17</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Submission#17+Student</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Id</td><td><div class=\"dni-plaintext\"><pre>457</pre></div></td></tr><tr><td>Name</td><td><div class=\"dni-plaintext\"><pre>谢岚</pre></div></td></tr><tr><td>Age</td><td><div class=\"dni-plaintext\"><pre>99</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>18</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Submission#17+Student</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Id</td><td><div class=\"dni-plaintext\"><pre>477</pre></div></td></tr><tr><td>Name</td><td><div class=\"dni-plaintext\"><pre>卢杰宏</pre></div></td></tr><tr><td>Age</td><td><div class=\"dni-plaintext\"><pre>97</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>19</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Submission#17+Student</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Id</td><td><div class=\"dni-plaintext\"><pre>482</pre></div></td></tr><tr><td>Name</td><td><div class=\"dni-plaintext\"><pre>萧杰宏</pre></div></td></tr><tr><td>Age</td><td><div class=\"dni-plaintext\"><pre>100</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td colspan=\"2\"><i>(23 more)</i></td></tr></tbody></table><style>\r\n", ".dni-code-hint {\r\n", " font-style: italic;\r\n", " overflow: hidden;\r\n", " white-space: nowrap;\r\n", "}\r\n", ".dni-treeview {\r\n", " white-space: nowrap;\r\n", "}\r\n", ".dni-treeview td {\r\n", " vertical-align: top;\r\n", " text-align: start;\r\n", "}\r\n", "details.dni-treeview {\r\n", " padding-left: 1em;\r\n", "}\r\n", "table td {\r\n", " text-align: start;\r\n", "}\r\n", "table tr { \r\n", " vertical-align: top; \r\n", " margin: 0em 0px;\r\n", "}\r\n", "table tr td pre \r\n", "{ \r\n", " vertical-align: top !important; \r\n", " margin: 0em 0px !important;\r\n", "} \r\n", "table th {\r\n", " text-align: start;\r\n", "}\r\n", "</style>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "{ //EF Core SQL Server\n", " var builder = new DbContextOptionsBuilder<StudyDbContext>();\n", " builder.UseSqlServer(SharedDbConnect.MsSqlConnectionString);\n", "\n", " var dbContext = new StudyDbContext(builder.Options);\n", " var students = dbContext.Student.Where(s => s.Age> 95).ToList();\n", " students.Display();\n", "}" ] }, { "cell_type": "markdown", "id": "c4b85b82", "metadata": {}, "source": [ "### EF Core 查询 MySQL" ] }, { "cell_type": "code", "execution_count": 35, "id": "9d5dc22b", "metadata": { "polyglot_notebook": { "kernelName": "csharp" } }, "outputs": [ { "data": { "text/html": [ "<table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Submission#17+Student</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Id</td><td><div class=\"dni-plaintext\"><pre>26</pre></div></td></tr><tr><td>Name</td><td><div class=\"dni-plaintext\"><pre>邱璐</pre></div></td></tr><tr><td>Age</td><td><div class=\"dni-plaintext\"><pre>98</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>1</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Submission#17+Student</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Id</td><td><div class=\"dni-plaintext\"><pre>58</pre></div></td></tr><tr><td>Name</td><td><div class=\"dni-plaintext\"><pre>曾致远</pre></div></td></tr><tr><td>Age</td><td><div class=\"dni-plaintext\"><pre>97</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>2</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Submission#17+Student</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Id</td><td><div class=\"dni-plaintext\"><pre>59</pre></div></td></tr><tr><td>Name</td><td><div class=\"dni-plaintext\"><pre>苏秀英</pre></div></td></tr><tr><td>Age</td><td><div class=\"dni-plaintext\"><pre>96</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>3</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Submission#17+Student</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Id</td><td><div class=\"dni-plaintext\"><pre>80</pre></div></td></tr><tr><td>Name</td><td><div class=\"dni-plaintext\"><pre>廖詩涵</pre></div></td></tr><tr><td>Age</td><td><div class=\"dni-plaintext\"><pre>97</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>4</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Submission#17+Student</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Id</td><td><div class=\"dni-plaintext\"><pre>99</pre></div></td></tr><tr><td>Name</td><td><div class=\"dni-plaintext\"><pre>顾岚</pre></div></td></tr><tr><td>Age</td><td><div class=\"dni-plaintext\"><pre>98</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>5</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Submission#17+Student</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Id</td><td><div class=\"dni-plaintext\"><pre>148</pre></div></td></tr><tr><td>Name</td><td><div class=\"dni-plaintext\"><pre>金震南</pre></div></td></tr><tr><td>Age</td><td><div class=\"dni-plaintext\"><pre>99</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>6</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Submission#17+Student</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Id</td><td><div class=\"dni-plaintext\"><pre>172</pre></div></td></tr><tr><td>Name</td><td><div class=\"dni-plaintext\"><pre>武秀英</pre></div></td></tr><tr><td>Age</td><td><div class=\"dni-plaintext\"><pre>96</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>7</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Submission#17+Student</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Id</td><td><div class=\"dni-plaintext\"><pre>246</pre></div></td></tr><tr><td>Name</td><td><div class=\"dni-plaintext\"><pre>金云熙</pre></div></td></tr><tr><td>Age</td><td><div class=\"dni-plaintext\"><pre>99</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>8</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Submission#17+Student</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Id</td><td><div class=\"dni-plaintext\"><pre>268</pre></div></td></tr><tr><td>Name</td><td><div class=\"dni-plaintext\"><pre>董秀英</pre></div></td></tr><tr><td>Age</td><td><div class=\"dni-plaintext\"><pre>96</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>9</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Submission#17+Student</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Id</td><td><div class=\"dni-plaintext\"><pre>281</pre></div></td></tr><tr><td>Name</td><td><div class=\"dni-plaintext\"><pre>梁震南</pre></div></td></tr><tr><td>Age</td><td><div class=\"dni-plaintext\"><pre>98</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>10</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Submission#17+Student</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Id</td><td><div class=\"dni-plaintext\"><pre>313</pre></div></td></tr><tr><td>Name</td><td><div class=\"dni-plaintext\"><pre>阎子异</pre></div></td></tr><tr><td>Age</td><td><div class=\"dni-plaintext\"><pre>97</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>11</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Submission#17+Student</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Id</td><td><div class=\"dni-plaintext\"><pre>321</pre></div></td></tr><tr><td>Name</td><td><div class=\"dni-plaintext\"><pre>顾嘉伦</pre></div></td></tr><tr><td>Age</td><td><div class=\"dni-plaintext\"><pre>96</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>12</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Submission#17+Student</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Id</td><td><div class=\"dni-plaintext\"><pre>329</pre></div></td></tr><tr><td>Name</td><td><div class=\"dni-plaintext\"><pre>钟子韬</pre></div></td></tr><tr><td>Age</td><td><div class=\"dni-plaintext\"><pre>96</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>13</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Submission#17+Student</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Id</td><td><div class=\"dni-plaintext\"><pre>378</pre></div></td></tr><tr><td>Name</td><td><div class=\"dni-plaintext\"><pre>叶璐</pre></div></td></tr><tr><td>Age</td><td><div class=\"dni-plaintext\"><pre>96</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>14</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Submission#17+Student</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Id</td><td><div class=\"dni-plaintext\"><pre>394</pre></div></td></tr><tr><td>Name</td><td><div class=\"dni-plaintext\"><pre>邹致远</pre></div></td></tr><tr><td>Age</td><td><div class=\"dni-plaintext\"><pre>96</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>15</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Submission#17+Student</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Id</td><td><div class=\"dni-plaintext\"><pre>436</pre></div></td></tr><tr><td>Name</td><td><div class=\"dni-plaintext\"><pre>李子异</pre></div></td></tr><tr><td>Age</td><td><div class=\"dni-plaintext\"><pre>99</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>16</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Submission#17+Student</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Id</td><td><div class=\"dni-plaintext\"><pre>480</pre></div></td></tr><tr><td>Name</td><td><div class=\"dni-plaintext\"><pre>马晓明</pre></div></td></tr><tr><td>Age</td><td><div class=\"dni-plaintext\"><pre>97</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>17</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Submission#17+Student</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Id</td><td><div class=\"dni-plaintext\"><pre>482</pre></div></td></tr><tr><td>Name</td><td><div class=\"dni-plaintext\"><pre>贺睿</pre></div></td></tr><tr><td>Age</td><td><div class=\"dni-plaintext\"><pre>96</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>18</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Submission#17+Student</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Id</td><td><div class=\"dni-plaintext\"><pre>484</pre></div></td></tr><tr><td>Name</td><td><div class=\"dni-plaintext\"><pre>朱嘉伦</pre></div></td></tr><tr><td>Age</td><td><div class=\"dni-plaintext\"><pre>98</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>19</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Submission#17+Student</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Id</td><td><div class=\"dni-plaintext\"><pre>548</pre></div></td></tr><tr><td>Name</td><td><div class=\"dni-plaintext\"><pre>龚震南</pre></div></td></tr><tr><td>Age</td><td><div class=\"dni-plaintext\"><pre>96</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td colspan=\"2\"><i>(27 more)</i></td></tr></tbody></table><style>\r\n", ".dni-code-hint {\r\n", " font-style: italic;\r\n", " overflow: hidden;\r\n", " white-space: nowrap;\r\n", "}\r\n", ".dni-treeview {\r\n", " white-space: nowrap;\r\n", "}\r\n", ".dni-treeview td {\r\n", " vertical-align: top;\r\n", " text-align: start;\r\n", "}\r\n", "details.dni-treeview {\r\n", " padding-left: 1em;\r\n", "}\r\n", "table td {\r\n", " text-align: start;\r\n", "}\r\n", "table tr { \r\n", " vertical-align: top; \r\n", " margin: 0em 0px;\r\n", "}\r\n", "table tr td pre \r\n", "{ \r\n", " vertical-align: top !important; \r\n", " margin: 0em 0px !important;\r\n", "} \r\n", "table th {\r\n", " text-align: start;\r\n", "}\r\n", "</style>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "{ //EF Core MySQL\n", " var builder = new DbContextOptionsBuilder<StudyDbContext>();\n", " builder.UseMySQL(SharedDbConnect.MySQLConnectionString);\n", "\n", " var dbContext = new StudyDbContext(builder.Options);\n", " var students = dbContext.Student.Where(s => s.Age> 95).ToList();\n", " students.Display();\n", "}" ] }, { "cell_type": "markdown", "id": "81d3e14d", "metadata": {}, "source": [ "### EFCore PostgreSQL" ] }, { "cell_type": "code", "execution_count": 36, "id": "42dd5655", "metadata": { "polyglot_notebook": { "kernelName": "csharp" } }, "outputs": [ { "data": { "text/html": [ "<table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><tbody><tr><td>0</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Submission#17+Student</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Id</td><td><div class=\"dni-plaintext\"><pre>11</pre></div></td></tr><tr><td>Name</td><td><div class=\"dni-plaintext\"><pre>张子异</pre></div></td></tr><tr><td>Age</td><td><div class=\"dni-plaintext\"><pre>98</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>1</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Submission#17+Student</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Id</td><td><div class=\"dni-plaintext\"><pre>19</pre></div></td></tr><tr><td>Name</td><td><div class=\"dni-plaintext\"><pre>范璐</pre></div></td></tr><tr><td>Age</td><td><div class=\"dni-plaintext\"><pre>96</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>2</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Submission#17+Student</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Id</td><td><div class=\"dni-plaintext\"><pre>51</pre></div></td></tr><tr><td>Name</td><td><div class=\"dni-plaintext\"><pre>贾震南</pre></div></td></tr><tr><td>Age</td><td><div class=\"dni-plaintext\"><pre>99</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>3</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Submission#17+Student</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Id</td><td><div class=\"dni-plaintext\"><pre>54</pre></div></td></tr><tr><td>Name</td><td><div class=\"dni-plaintext\"><pre>董子异</pre></div></td></tr><tr><td>Age</td><td><div class=\"dni-plaintext\"><pre>99</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>4</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Submission#17+Student</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Id</td><td><div class=\"dni-plaintext\"><pre>60</pre></div></td></tr><tr><td>Name</td><td><div class=\"dni-plaintext\"><pre>张安琪</pre></div></td></tr><tr><td>Age</td><td><div class=\"dni-plaintext\"><pre>98</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>5</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Submission#17+Student</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Id</td><td><div class=\"dni-plaintext\"><pre>81</pre></div></td></tr><tr><td>Name</td><td><div class=\"dni-plaintext\"><pre>郭震南</pre></div></td></tr><tr><td>Age</td><td><div class=\"dni-plaintext\"><pre>99</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>6</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Submission#17+Student</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Id</td><td><div class=\"dni-plaintext\"><pre>86</pre></div></td></tr><tr><td>Name</td><td><div class=\"dni-plaintext\"><pre>罗璐</pre></div></td></tr><tr><td>Age</td><td><div class=\"dni-plaintext\"><pre>97</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>7</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Submission#17+Student</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Id</td><td><div class=\"dni-plaintext\"><pre>94</pre></div></td></tr><tr><td>Name</td><td><div class=\"dni-plaintext\"><pre>贺睿</pre></div></td></tr><tr><td>Age</td><td><div class=\"dni-plaintext\"><pre>97</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>8</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Submission#17+Student</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Id</td><td><div class=\"dni-plaintext\"><pre>100</pre></div></td></tr><tr><td>Name</td><td><div class=\"dni-plaintext\"><pre>钱睿</pre></div></td></tr><tr><td>Age</td><td><div class=\"dni-plaintext\"><pre>97</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>9</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Submission#17+Student</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Id</td><td><div class=\"dni-plaintext\"><pre>164</pre></div></td></tr><tr><td>Name</td><td><div class=\"dni-plaintext\"><pre>苏睿</pre></div></td></tr><tr><td>Age</td><td><div class=\"dni-plaintext\"><pre>97</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>10</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Submission#17+Student</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Id</td><td><div class=\"dni-plaintext\"><pre>211</pre></div></td></tr><tr><td>Name</td><td><div class=\"dni-plaintext\"><pre>杜睿</pre></div></td></tr><tr><td>Age</td><td><div class=\"dni-plaintext\"><pre>98</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>11</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Submission#17+Student</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Id</td><td><div class=\"dni-plaintext\"><pre>238</pre></div></td></tr><tr><td>Name</td><td><div class=\"dni-plaintext\"><pre>孔詩涵</pre></div></td></tr><tr><td>Age</td><td><div class=\"dni-plaintext\"><pre>98</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>12</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Submission#17+Student</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Id</td><td><div class=\"dni-plaintext\"><pre>263</pre></div></td></tr><tr><td>Name</td><td><div class=\"dni-plaintext\"><pre>贾子韬</pre></div></td></tr><tr><td>Age</td><td><div class=\"dni-plaintext\"><pre>97</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>13</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Submission#17+Student</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Id</td><td><div class=\"dni-plaintext\"><pre>310</pre></div></td></tr><tr><td>Name</td><td><div class=\"dni-plaintext\"><pre>毛震南</pre></div></td></tr><tr><td>Age</td><td><div class=\"dni-plaintext\"><pre>96</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>14</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Submission#17+Student</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Id</td><td><div class=\"dni-plaintext\"><pre>322</pre></div></td></tr><tr><td>Name</td><td><div class=\"dni-plaintext\"><pre>方宇宁</pre></div></td></tr><tr><td>Age</td><td><div class=\"dni-plaintext\"><pre>97</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>15</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Submission#17+Student</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Id</td><td><div class=\"dni-plaintext\"><pre>357</pre></div></td></tr><tr><td>Name</td><td><div class=\"dni-plaintext\"><pre>尹晓明</pre></div></td></tr><tr><td>Age</td><td><div class=\"dni-plaintext\"><pre>99</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>16</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Submission#17+Student</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Id</td><td><div class=\"dni-plaintext\"><pre>380</pre></div></td></tr><tr><td>Name</td><td><div class=\"dni-plaintext\"><pre>张震南</pre></div></td></tr><tr><td>Age</td><td><div class=\"dni-plaintext\"><pre>97</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>17</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Submission#17+Student</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Id</td><td><div class=\"dni-plaintext\"><pre>434</pre></div></td></tr><tr><td>Name</td><td><div class=\"dni-plaintext\"><pre>徐子异</pre></div></td></tr><tr><td>Age</td><td><div class=\"dni-plaintext\"><pre>99</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>18</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Submission#17+Student</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Id</td><td><div class=\"dni-plaintext\"><pre>468</pre></div></td></tr><tr><td>Name</td><td><div class=\"dni-plaintext\"><pre>姚子异</pre></div></td></tr><tr><td>Age</td><td><div class=\"dni-plaintext\"><pre>96</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>19</td><td><details class=\"dni-treeview\"><summary><span class=\"dni-code-hint\"><code>Submission#17+Student</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Id</td><td><div class=\"dni-plaintext\"><pre>524</pre></div></td></tr><tr><td>Name</td><td><div class=\"dni-plaintext\"><pre>顾璐</pre></div></td></tr><tr><td>Age</td><td><div class=\"dni-plaintext\"><pre>98</pre></div></td></tr></tbody></table></div></details></td></tr><tr><td colspan=\"2\"><i>(18 more)</i></td></tr></tbody></table><style>\r\n", ".dni-code-hint {\r\n", " font-style: italic;\r\n", " overflow: hidden;\r\n", " white-space: nowrap;\r\n", "}\r\n", ".dni-treeview {\r\n", " white-space: nowrap;\r\n", "}\r\n", ".dni-treeview td {\r\n", " vertical-align: top;\r\n", " text-align: start;\r\n", "}\r\n", "details.dni-treeview {\r\n", " padding-left: 1em;\r\n", "}\r\n", "table td {\r\n", " text-align: start;\r\n", "}\r\n", "table tr { \r\n", " vertical-align: top; \r\n", " margin: 0em 0px;\r\n", "}\r\n", "table tr td pre \r\n", "{ \r\n", " vertical-align: top !important; \r\n", " margin: 0em 0px !important;\r\n", "} \r\n", "table th {\r\n", " text-align: start;\r\n", "}\r\n", "</style>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "{ \n", " var builder = new DbContextOptionsBuilder<StudyDbContext>();\n", " builder.UseNpgsql(SharedDbConnect.PSQLConnectionString);\n", "\n", " var dbContext = new StudyDbContext(builder.Options);\n", " var students = dbContext.Student.Where(s => s.Age> 95).ToList();\n", " students.Display();\n", "}" ] } ], "metadata": { "kernelspec": { "display_name": ".NET (C#)", "language": "C#", "name": ".net-csharp" }, "polyglot_notebook": { "kernelInfo": { "defaultKernelName": "csharp", "items": [ { "aliases": [], "languageName": "csharp", "name": "csharp" } ] } } }, "nbformat": 4, "nbformat_minor": 5 }