diff --git a/Docs/Jupter笔记.001.入门说明.ipynb b/Docs/Jupter笔记.001.入门说明.ipynb
index 7e3ee5e..88934f3 100644
--- a/Docs/Jupter笔记.001.入门说明.ipynb
+++ b/Docs/Jupter笔记.001.入门说明.ipynb
@@ -12,7 +12,7 @@
}
},
"source": [
- "多线程学习笔记,Jupyter NoteBook\n",
+ "Jupyter NoteBook 简单入门\n",
"==============================\n",
"\n",
"使用 Jupyter NoteBook 形式,优点是代码执行和 Markdown 文档放在同一个文件中,并可以交替显示和分段执行代码。"
@@ -869,6 +869,22 @@
],
"languageName": null,
"name": "vscode"
+ },
+ {
+ "aliases": [
+ "js"
+ ],
+ "languageName": "JavaScript",
+ "name": "javascript"
+ },
+ {
+ "aliases": [],
+ "name": "webview"
+ },
+ {
+ "aliases": [],
+ "languageName": null,
+ "name": ".NET"
}
]
}
diff --git a/Docs/Jupter笔记.002.线程.ipynb b/Docs/Jupter笔记.002.线程.ipynb
index 3656ba7..2f8f977 100644
--- a/Docs/Jupter笔记.002.线程.ipynb
+++ b/Docs/Jupter笔记.002.线程.ipynb
@@ -182,7 +182,6 @@
},
{
"aliases": [],
- "languageName": null,
"name": ".NET"
},
{
@@ -215,7 +214,6 @@
},
{
"aliases": [],
- "languageName": null,
"name": "value"
},
{
@@ -228,6 +226,11 @@
{
"aliases": [],
"name": "webview"
+ },
+ {
+ "aliases": [],
+ "languageName": "T-SQL",
+ "name": "sql-Demo"
}
]
}
diff --git a/Docs/Jupter笔记.002.连接数据库.ipynb b/Docs/Jupter笔记.002.连接数据库.ipynb
new file mode 100644
index 0000000..4836943
--- /dev/null
+++ b/Docs/Jupter笔记.002.连接数据库.ipynb
@@ -0,0 +1,655 @@
+{
+ "cells": [
+ {
+ "attachments": {},
+ "cell_type": "markdown",
+ "metadata": {
+ "dotnet_interactive": {
+ "language": "csharp"
+ },
+ "polyglot_notebook": {
+ "kernelName": "csharp"
+ }
+ },
+ "source": [
+ "连接数据库\n",
+ "==============================\n",
+ "连接到SQL Server,并操作数据。 "
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "dotnet_interactive": {
+ "language": "csharp"
+ },
+ "polyglot_notebook": {
+ "kernelName": "csharp"
+ }
+ },
+ "source": [
+ "+ 引用操作类库"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "dotnet_interactive": {
+ "language": "csharp"
+ },
+ "polyglot_notebook": {
+ "kernelName": "csharp"
+ },
+ "vscode": {
+ "languageId": "polyglot-notebook"
+ }
+ },
+ "outputs": [],
+ "source": [
+ "#r \"nuget:Microsoft.Dotnet.Interactive.SqlServer,*-*\""
+ ]
+ },
+ {
+ "attachments": {},
+ "cell_type": "markdown",
+ "metadata": {
+ "dotnet_interactive": {
+ "language": "csharp"
+ },
+ "polyglot_notebook": {
+ "kernelName": "csharp"
+ }
+ },
+ "source": [
+ "+ 连接到SQL Server\n",
+ " > 数据库连接命令为 `#!connect` 查看连接帮助 `#!connect -h`"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "metadata": {
+ "dotnet_interactive": {
+ "language": "csharp"
+ },
+ "polyglot_notebook": {
+ "kernelName": "csharp"
+ },
+ "vscode": {
+ "languageId": "polyglot-notebook"
+ }
+ },
+ "outputs": [],
+ "source": [
+ "#!connect -h\n"
+ ]
+ },
+ {
+ "attachments": {},
+ "cell_type": "markdown",
+ "metadata": {
+ "dotnet_interactive": {
+ "language": "csharp"
+ },
+ "polyglot_notebook": {
+ "kernelName": "csharp"
+ }
+ },
+ "source": [
+ "> 连接到本机SQL Server, 特别注意的是 --kernel-name 指定名称,后面的SQL操作均需要使用:sql-{{kernel-name}}的值\n",
+ "> 比如 --kernel-name Demo, 则该SQL连接的kernel名称为 sql-Demo, 使用 #!sql-Demo 进行引用"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "metadata": {
+ "dotnet_interactive": {
+ "language": "csharp"
+ },
+ "polyglot_notebook": {
+ "kernelName": "csharp"
+ },
+ "vscode": {
+ "languageId": "polyglot-notebook"
+ }
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Kernel added: #!sql-Demo"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "#!connect mssql \"server=.\\SQL2008;uid=sa;pwd=gly-bicijinlian;database=Demo;Encrypt=True;TrustServerCertificate=True;\" --kernel-name Demo\n",
+ "\n",
+ "//重复执行会抛出错误,目前没有找到解决方法\n"
+ ]
+ },
+ {
+ "attachments": {},
+ "cell_type": "markdown",
+ "metadata": {
+ "dotnet_interactive": {
+ "language": "csharp"
+ },
+ "polyglot_notebook": {
+ "kernelName": "csharp"
+ }
+ },
+ "source": [
+ "+ 使用连接\n",
+ " 一种方法是:在右下角,切换 Kernel, 由 `csharp - C# Script` 换成 由--kernel-name指定值生成的 `sql-Demo - T-SQL`"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "metadata": {
+ "dotnet_interactive": {
+ "language": "sql-Demo"
+ },
+ "polyglot_notebook": {
+ "kernelName": "sql-Demo"
+ },
+ "vscode": {
+ "languageId": "polyglot-notebook"
+ }
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "(4 行受到影响)"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/csv": [
+ "Id,Name,Age\r\n",
+ "1,张三,20\r\n",
+ "2,李四,30\r\n",
+ "3,三丰,300\r\n",
+ "4,小龙子,50\r\n"
+ ],
+ "text/html": [
+ "
"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "SELECT * from Test"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "dotnet_interactive": {
+ "language": "csharp"
+ },
+ "polyglot_notebook": {
+ "kernelName": "csharp"
+ }
+ },
+ "source": [
+ "> 推荐的是下面的方法:即使用 `#!sql-Demo` ,后面直接写SQL语句,不用切换 kernel "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {
+ "dotnet_interactive": {
+ "language": "csharp"
+ },
+ "polyglot_notebook": {
+ "kernelName": "csharp"
+ },
+ "vscode": {
+ "languageId": "polyglot-notebook"
+ }
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "(4 行受到影响)"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/csv": [
+ "Id,Name,Age\r\n",
+ "1,张三,20\r\n",
+ "2,李四,30\r\n",
+ "3,三丰,300\r\n",
+ "4,小龙子,50\r\n"
+ ],
+ "text/html": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "#!sql-Demo\n",
+ "SELECT * from Test"
+ ]
+ },
+ {
+ "attachments": {},
+ "cell_type": "markdown",
+ "metadata": {
+ "dotnet_interactive": {
+ "language": "csharp"
+ },
+ "polyglot_notebook": {
+ "kernelName": "csharp"
+ }
+ },
+ "source": [
+ "## 使用 EF Core"
+ ]
+ },
+ {
+ "attachments": {},
+ "cell_type": "markdown",
+ "metadata": {
+ "dotnet_interactive": {
+ "language": "csharp"
+ },
+ "polyglot_notebook": {
+ "kernelName": "csharp"
+ }
+ },
+ "source": [
+ "+ 新连接,添加 --create-dbcontext 参数"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "metadata": {
+ "dotnet_interactive": {
+ "language": "csharp"
+ },
+ "polyglot_notebook": {
+ "kernelName": "csharp"
+ },
+ "vscode": {
+ "languageId": "polyglot-notebook"
+ }
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/markdown": [
+ "Scaffolding a `DbContext` and initializing an instance of it called `DemoEF` in the C# kernel."
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ "Installed Packages- Humanizer, 2.14.1
- humanizer.core, 2.14.1
- Microsoft.EntityFrameworkCore.Design, 7.0.0
- microsoft.entityframeworkcore.sqlserver, 7.0.0
- microsoft.identity.client, 4.48.1
"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Security Warning: The negotiated TLS 1.0 is an insecure protocol and is supported for backward compatibility only. The recommended protocol version is TLS 1.2 and later.\r\n"
+ ]
+ },
+ {
+ "data": {
+ "text/plain": [
+ "Kernel added: #!sql-DemoEF"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "#!connect mssql \"server=.\\SQL2008;uid=sa;pwd=gly-bicijinlian;database=Demo;Encrypt=True;TrustServerCertificate=True;\" --create-dbcontext --kernel-name DemoEF "
+ ]
+ },
+ {
+ "attachments": {},
+ "cell_type": "markdown",
+ "metadata": {
+ "dotnet_interactive": {
+ "language": "csharp"
+ },
+ "polyglot_notebook": {
+ "kernelName": "csharp"
+ }
+ },
+ "source": [
+ "上面的连接操作,会执行下面的任务:\n",
+ "搭建EFCore基架,并初始化 DBContext 的实例: DemoEF\n",
+ "安装包相关Nuget包,详情见输出\n",
+ "添加新的子内核 #!sql-DemoEF"
+ ]
+ },
+ {
+ "attachments": {},
+ "cell_type": "markdown",
+ "metadata": {
+ "dotnet_interactive": {
+ "language": "csharp"
+ },
+ "polyglot_notebook": {
+ "kernelName": "csharp"
+ }
+ },
+ "source": [
+ "+ 使用EFCore连接,操作数据"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {
+ "dotnet_interactive": {
+ "language": "csharp"
+ },
+ "polyglot_notebook": {
+ "kernelName": "csharp"
+ },
+ "vscode": {
+ "languageId": "polyglot-notebook"
+ }
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "(4 行受到影响)"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/csv": [
+ "Id,Name,Age\r\n",
+ "1,张三,20\r\n",
+ "2,李四,30\r\n",
+ "3,三丰,300\r\n",
+ "4,小龙子,50\r\n"
+ ],
+ "text/html": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "#!sql-DemoEF\n",
+ "SELECT * from Test"
+ ]
+ },
+ {
+ "attachments": {},
+ "cell_type": "markdown",
+ "metadata": {
+ "dotnet_interactive": {
+ "language": "csharp"
+ },
+ "polyglot_notebook": {
+ "kernelName": "csharp"
+ }
+ },
+ "source": [
+ "+ 程序中使用EF Core连接"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 35,
+ "metadata": {
+ "dotnet_interactive": {
+ "language": "csharp"
+ },
+ "polyglot_notebook": {
+ "kernelName": "csharp"
+ },
+ "vscode": {
+ "languageId": "polyglot-notebook"
+ }
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "index | value |
---|
0 | Submission#4+Test
|
1 | Submission#4+Test
|
2 | Submission#4+Test
|
3 | Submission#4+Test
|
"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "text/html": [
+ ""
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "//连接建立后,执行环境中就有了相关的类:DBContext等\n",
+ "DemoEFContext context = new DemoEFContext();\n",
+ "var t = context.Tests.ToList();\n",
+ "display(t);\n",
+ "\n",
+ "FormattableString fs = $\"select * from Test;\";\n",
+ "var c = context.Database.ExecuteSql(fs);\n",
+ "display(c);"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": ".NET (C#)",
+ "language": "C#",
+ "name": ".net-csharp"
+ },
+ "polyglot_notebook": {
+ "kernelInfo": {
+ "defaultKernelName": "csharp",
+ "items": [
+ {
+ "aliases": [],
+ "name": "csharp"
+ }
+ ]
+ }
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/MultiThreadingStudy.ConsoleApp/Program.cs b/MultiThreadingStudy.ConsoleApp/Program.cs
index 116505a..20aa618 100644
--- a/MultiThreadingStudy.ConsoleApp/Program.cs
+++ b/MultiThreadingStudy.ConsoleApp/Program.cs
@@ -5,9 +5,6 @@ namespace MultiThreadingStudy.ConsoleApp
static async Task Main(string[] args)
{
Console.WriteLine("多线程学习");
-
- var contents = await new HttpClient()
- .GetStringAsync("https://www.baidu.com");
}
}
}
\ No newline at end of file
diff --git a/MultiThreadingStudy.sln b/MultiThreadingStudy.sln
index c02b461..eed7065 100644
--- a/MultiThreadingStudy.sln
+++ b/MultiThreadingStudy.sln
@@ -17,6 +17,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Docs", "Docs", "{D7713D12-0
ProjectSection(SolutionItems) = preProject
Docs\Jupter笔记.001.入门说明.ipynb = Docs\Jupter笔记.001.入门说明.ipynb
Docs\Jupter笔记.002.线程.ipynb = Docs\Jupter笔记.002.线程.ipynb
+ Docs\Jupter笔记.002.连接数据库.ipynb = Docs\Jupter笔记.002.连接数据库.ipynb
Docs\多线程大纲.svg = Docs\多线程大纲.svg
Docs\多线程学习大纲.xmind = Docs\多线程学习大纲.xmind
Docs\学习.md = Docs\学习.md