You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
PolyglotNotebooksStudy/Docs/多语言笔记.2.2.操作数据库-C#.ipynb

1049 lines
59 KiB
Plaintext

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

{
"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
}