diff --git a/labs/CockRoachDBEntityFrameworkCoreTest/.gitignore b/labs/CockRoachDBEntityFrameworkCoreTest/.gitignore new file mode 100644 index 00000000..11ee0d93 --- /dev/null +++ b/labs/CockRoachDBEntityFrameworkCoreTest/.gitignore @@ -0,0 +1,19 @@ +*.bak +*.suo +*.db +*.db-shm +*.db-wal +*.user +.vs +obj +Obj +bin +Bin +debug +Debug +release +Release +Logs +logs +node_modules +cockroach-data \ No newline at end of file diff --git a/labs/CockRoachDBEntityFrameworkCoreTest/CockRoachDBEntityFrameworkCoreTest.csproj b/labs/CockRoachDBEntityFrameworkCoreTest/CockRoachDBEntityFrameworkCoreTest.csproj new file mode 100644 index 00000000..eff00d35 --- /dev/null +++ b/labs/CockRoachDBEntityFrameworkCoreTest/CockRoachDBEntityFrameworkCoreTest.csproj @@ -0,0 +1,18 @@ + + + + Exe + netcoreapp3.1 + + + + + + + + + PreserveNewest + + + + diff --git a/labs/CockRoachDBEntityFrameworkCoreTest/CockRoachDBEntityFrameworkCoreTest.sln b/labs/CockRoachDBEntityFrameworkCoreTest/CockRoachDBEntityFrameworkCoreTest.sln new file mode 100644 index 00000000..68a4cb46 --- /dev/null +++ b/labs/CockRoachDBEntityFrameworkCoreTest/CockRoachDBEntityFrameworkCoreTest.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.30011.22 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CockRoachDBEntityFrameworkCoreTest", "CockRoachDBEntityFrameworkCoreTest.csproj", "{B0398F26-9A0E-4893-9876-5FDAB34C35FD}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {B0398F26-9A0E-4893-9876-5FDAB34C35FD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B0398F26-9A0E-4893-9876-5FDAB34C35FD}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B0398F26-9A0E-4893-9876-5FDAB34C35FD}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B0398F26-9A0E-4893-9876-5FDAB34C35FD}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {3CB604C6-1B7A-4908-AA58-DAD9A7ED6084} + EndGlobalSection +EndGlobal diff --git a/labs/CockRoachDBEntityFrameworkCoreTest/MyDbContext.cs b/labs/CockRoachDBEntityFrameworkCoreTest/MyDbContext.cs new file mode 100644 index 00000000..04755fc2 --- /dev/null +++ b/labs/CockRoachDBEntityFrameworkCoreTest/MyDbContext.cs @@ -0,0 +1,20 @@ +using Microsoft.EntityFrameworkCore; +using System.Security.Cryptography.X509Certificates; + +namespace CockRoachDBEntityFrameworkCoreTest +{ + public class MyDbContext : DbContext + { + protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) + { + //数据库名只能为小写,否则报错为:database "postgres" does not exist + optionsBuilder.UseNpgsql("User ID=root;Host=localhost;Port=26257;Database=mytest;CommandTimeout=120;SslMode=Require;TrustServerCertificate=true;", + o => o.ProvideClientCertificatesCallback(o => o.Add(new X509Certificate2("client.root.pk12")))); + } + + protected override void OnModelCreating(ModelBuilder modelBuilder) + { + modelBuilder.Entity(); + } + } +} \ No newline at end of file diff --git a/labs/CockRoachDBEntityFrameworkCoreTest/Program.cs b/labs/CockRoachDBEntityFrameworkCoreTest/Program.cs new file mode 100644 index 00000000..d7a5e3fa --- /dev/null +++ b/labs/CockRoachDBEntityFrameworkCoreTest/Program.cs @@ -0,0 +1,19 @@ +using System; +using System.Linq; + +namespace CockRoachDBEntityFrameworkCoreTest +{ + public class Program + { + private static void Main(string[] args) + { + using var db = new MyDbContext(); + if (db.Database.EnsureCreated()) + { + db.Set().Add(new User { Name = "admin" }); + db.SaveChanges(); + } + Console.WriteLine(db.Set().Count()); + } + } +} \ No newline at end of file diff --git a/labs/CockRoachDBEntityFrameworkCoreTest/README.md b/labs/CockRoachDBEntityFrameworkCoreTest/README.md new file mode 100644 index 00000000..affb7fdb --- /dev/null +++ b/labs/CockRoachDBEntityFrameworkCoreTest/README.md @@ -0,0 +1,10 @@ +文档地址:http://doc.cockroachchina.baidu.com/ + +生成安全证书&启动节点:http://doc.cockroachchina.baidu.com/#quick-start/start-a-local-cluster/from-binary/ + +生成pk12文件:openssl pkcs12 -export -password pass: -in client.root.crt -inkey client.root.key -out client.root.pk12 + +命令行创建数据库: +cockroach sql --certs-dir certs +>create database MyTest; +>\q \ No newline at end of file diff --git a/labs/CockRoachDBEntityFrameworkCoreTest/User.cs b/labs/CockRoachDBEntityFrameworkCoreTest/User.cs new file mode 100644 index 00000000..fd8f220c --- /dev/null +++ b/labs/CockRoachDBEntityFrameworkCoreTest/User.cs @@ -0,0 +1,15 @@ +using System; + +namespace CockRoachDBEntityFrameworkCoreTest +{ + public class User + { + public User() + { + this.Id = Guid.NewGuid(); + } + + public Guid Id { get; set; } + public string Name { get; set; } + } +} \ No newline at end of file diff --git a/labs/CockRoachDBEntityFrameworkCoreTest/client.root.pk12 b/labs/CockRoachDBEntityFrameworkCoreTest/client.root.pk12 new file mode 100644 index 00000000..3d5a00f0 Binary files /dev/null and b/labs/CockRoachDBEntityFrameworkCoreTest/client.root.pk12 differ diff --git a/tools/Win64OpenSSL-1_1_0i.exe b/tools/Win64OpenSSL-1_1_0i.exe new file mode 100644 index 00000000..2a039b41 Binary files /dev/null and b/tools/Win64OpenSSL-1_1_0i.exe differ diff --git a/tools/cockroach-v2.0.5.windows-6.2-amd64/certs/client.root.pk12 b/tools/cockroach-v2.0.5.windows-6.2-amd64/certs/client.root.pk12 new file mode 100644 index 00000000..3d5a00f0 Binary files /dev/null and b/tools/cockroach-v2.0.5.windows-6.2-amd64/certs/client.root.pk12 differ