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": [ + "
IdNameAge
1
张三
20
2
李四
30
3
三丰
300
4
小龙子
50
" + ] + }, + "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": [ + "
IdNameAge
1
张三
20
2
李四
30
3
三丰
300
4
小龙子
50
" + ] + }, + "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
" + ] + }, + "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": [ + "
IdNameAge
1
张三
20
2
李四
30
3
三丰
300
4
小龙子
50
" + ] + }, + "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": [ + "
indexvalue
0
Submission#4+Test
Id
1
Name张三
Age
20
1
Submission#4+Test
Id
2
Name李四
Age
30
2
Submission#4+Test
Id
3
Name三丰
Age
300
3
Submission#4+Test
Id
4
Name小龙子
Age
50
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
-1
" + ] + }, + "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