From bd13954d6fc3f9ddb02d6113365955f8fef733dc Mon Sep 17 00:00:00 2001 From: wanggang <76527413@qq.com> Date: Sun, 8 Mar 2020 21:07:51 +0800 Subject: [PATCH] update Former-commit-id: 488d9ecfc46257c6fa247941f7eb5ffa4426622d --- docs/研发/重点难点.xmind | Bin 0 -> 21647 bytes labs/EFCoreTest/DbContextTest1/.gitignore | 16 ++++ labs/EFCoreTest/DbContextTest1/DbContext1.cs | 27 +++++++ .../DbContextTest1/DbContextTest1.csproj | 12 +++ labs/EFCoreTest/DbContextTest2/.gitignore | 16 ++++ labs/EFCoreTest/DbContextTest2/DbContext2.cs | 24 ++++++ .../DbContextTest2/DbContextTest2.csproj | 12 +++ labs/EFCoreTest/EFCoreTest.sln | 14 +++- labs/EFCoreTest/EFCoreTest/.gitignore | 19 +++++ .../{ => EFCoreTest}/EFCoreTest.csproj | 7 +- labs/EFCoreTest/{ => EFCoreTest}/Entities.cs | 0 .../{ => EFCoreTest}/MyDbContext.cs | 4 +- labs/EFCoreTest/EFCoreTest/Program.cs | 72 ++++++++++++++++++ labs/EFCoreTest/Program.cs | 42 ---------- 14 files changed, 219 insertions(+), 46 deletions(-) create mode 100644 docs/研发/重点难点.xmind create mode 100644 labs/EFCoreTest/DbContextTest1/.gitignore create mode 100644 labs/EFCoreTest/DbContextTest1/DbContext1.cs create mode 100644 labs/EFCoreTest/DbContextTest1/DbContextTest1.csproj create mode 100644 labs/EFCoreTest/DbContextTest2/.gitignore create mode 100644 labs/EFCoreTest/DbContextTest2/DbContext2.cs create mode 100644 labs/EFCoreTest/DbContextTest2/DbContextTest2.csproj create mode 100644 labs/EFCoreTest/EFCoreTest/.gitignore rename labs/EFCoreTest/{ => EFCoreTest}/EFCoreTest.csproj (70%) rename labs/EFCoreTest/{ => EFCoreTest}/Entities.cs (100%) rename labs/EFCoreTest/{ => EFCoreTest}/MyDbContext.cs (95%) create mode 100644 labs/EFCoreTest/EFCoreTest/Program.cs delete mode 100644 labs/EFCoreTest/Program.cs diff --git a/docs/研发/重点难点.xmind b/docs/研发/重点难点.xmind new file mode 100644 index 0000000000000000000000000000000000000000..a8763646ff7af7644cc1eeecae209c8018c9a22f GIT binary patch literal 21647 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 + + } + } +} diff --git a/labs/EFCoreTest/DbContextTest1/DbContextTest1.csproj b/labs/EFCoreTest/DbContextTest1/DbContextTest1.csproj new file mode 100644 index 00000000..bf238467 --- /dev/null +++ b/labs/EFCoreTest/DbContextTest1/DbContextTest1.csproj @@ -0,0 +1,12 @@ + + + + netcoreapp3.1 + + + + + + + + diff --git a/labs/EFCoreTest/DbContextTest2/.gitignore b/labs/EFCoreTest/DbContextTest2/.gitignore new file mode 100644 index 00000000..988994ff --- /dev/null +++ b/labs/EFCoreTest/DbContextTest2/.gitignore @@ -0,0 +1,16 @@ +*.bak +*.suo +*.db +*.user +.vs +obj +Obj +bin +Bin +debug +Debug +release +Release +Logs +logs +node_modules \ No newline at end of file diff --git a/labs/EFCoreTest/DbContextTest2/DbContext2.cs b/labs/EFCoreTest/DbContextTest2/DbContext2.cs new file mode 100644 index 00000000..db3101a3 --- /dev/null +++ b/labs/EFCoreTest/DbContextTest2/DbContext2.cs @@ -0,0 +1,24 @@ +using Microsoft.EntityFrameworkCore; +using System; + +namespace DbContextTest2 +{ + public class Test2 + { + public Guid Id { get; set; } + public string TestField1 { get; set; } + } + + public class DbContext2 : DbContext + { + protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) + { + optionsBuilder.UseSqlite("Data Source=data.db;"); + } + + protected override void OnModelCreating(ModelBuilder modelBuilder) + { + modelBuilder.Entity(); + } + } +} \ No newline at end of file diff --git a/labs/EFCoreTest/DbContextTest2/DbContextTest2.csproj b/labs/EFCoreTest/DbContextTest2/DbContextTest2.csproj new file mode 100644 index 00000000..5de529de --- /dev/null +++ b/labs/EFCoreTest/DbContextTest2/DbContextTest2.csproj @@ -0,0 +1,12 @@ + + + + netcoreapp3.1 + + + + + + + + diff --git a/labs/EFCoreTest/EFCoreTest.sln b/labs/EFCoreTest/EFCoreTest.sln index e05c74d6..3b0f561e 100644 --- a/labs/EFCoreTest/EFCoreTest.sln +++ b/labs/EFCoreTest/EFCoreTest.sln @@ -3,7 +3,11 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 16 VisualStudioVersion = 16.0.29814.53 MinimumVisualStudioVersion = 10.0.40219.1 -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EFCoreTest", "EFCoreTest.csproj", "{4BB784D0-B6BB-4450-9E34-F64EA74B5555}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "EFCoreTest", "EFCoreTest\EFCoreTest.csproj", "{4BB784D0-B6BB-4450-9E34-F64EA74B5555}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DbContextTest1", "DbContextTest1\DbContextTest1.csproj", "{CF862BF8-BFE3-400A-9E51-258FEA107DDB}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DbContextTest2", "DbContextTest2\DbContextTest2.csproj", "{F0676659-C83E-46BB-BBB1-5CFBCD19319B}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -15,6 +19,14 @@ Global {4BB784D0-B6BB-4450-9E34-F64EA74B5555}.Debug|Any CPU.Build.0 = Debug|Any CPU {4BB784D0-B6BB-4450-9E34-F64EA74B5555}.Release|Any CPU.ActiveCfg = Release|Any CPU {4BB784D0-B6BB-4450-9E34-F64EA74B5555}.Release|Any CPU.Build.0 = Release|Any CPU + {CF862BF8-BFE3-400A-9E51-258FEA107DDB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {CF862BF8-BFE3-400A-9E51-258FEA107DDB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CF862BF8-BFE3-400A-9E51-258FEA107DDB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {CF862BF8-BFE3-400A-9E51-258FEA107DDB}.Release|Any CPU.Build.0 = Release|Any CPU + {F0676659-C83E-46BB-BBB1-5CFBCD19319B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F0676659-C83E-46BB-BBB1-5CFBCD19319B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F0676659-C83E-46BB-BBB1-5CFBCD19319B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F0676659-C83E-46BB-BBB1-5CFBCD19319B}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/labs/EFCoreTest/EFCoreTest/.gitignore b/labs/EFCoreTest/EFCoreTest/.gitignore new file mode 100644 index 00000000..11ee0d93 --- /dev/null +++ b/labs/EFCoreTest/EFCoreTest/.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/EFCoreTest/EFCoreTest.csproj b/labs/EFCoreTest/EFCoreTest/EFCoreTest.csproj similarity index 70% rename from labs/EFCoreTest/EFCoreTest.csproj rename to labs/EFCoreTest/EFCoreTest/EFCoreTest.csproj index 20a7edf4..6bc4b7d3 100644 --- a/labs/EFCoreTest/EFCoreTest.csproj +++ b/labs/EFCoreTest/EFCoreTest/EFCoreTest.csproj @@ -1,4 +1,4 @@ - + Exe @@ -12,4 +12,9 @@ + + + + + diff --git a/labs/EFCoreTest/Entities.cs b/labs/EFCoreTest/EFCoreTest/Entities.cs similarity index 100% rename from labs/EFCoreTest/Entities.cs rename to labs/EFCoreTest/EFCoreTest/Entities.cs diff --git a/labs/EFCoreTest/MyDbContext.cs b/labs/EFCoreTest/EFCoreTest/MyDbContext.cs similarity index 95% rename from labs/EFCoreTest/MyDbContext.cs rename to labs/EFCoreTest/EFCoreTest/MyDbContext.cs index aa1ff565..b8750a9b 100644 --- a/labs/EFCoreTest/MyDbContext.cs +++ b/labs/EFCoreTest/EFCoreTest/MyDbContext.cs @@ -8,7 +8,7 @@ namespace EFCoreTest { protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { - //optionsBuilder.UseSqlite("Data Source=data.db;"); + optionsBuilder.UseSqlite("Data Source=data.db;"); //optionsBuilder.UseMySql("Server=139.180.143.95;Port=3306;Database=test;Uid=admin;Pwd=admin;"); ///https://www.cockroachlabs.com/docs/stable/build-a-csharp-app-with-cockroachdb.html /// cockroach start --insecure --host=localhost --http-port=9090 @@ -16,7 +16,7 @@ namespace EFCoreTest /// CREATE DATABASE test; /// DROP DATABASE test CASCADE; /// \q - optionsBuilder.UseNpgsql("User ID=root;Host=localhost;Port=26257;Database=test;"); + //optionsBuilder.UseNpgsql("User ID=root;Host=localhost;Port=26257;Database=test;"); } protected override void OnModelCreating(ModelBuilder modelBuilder) diff --git a/labs/EFCoreTest/EFCoreTest/Program.cs b/labs/EFCoreTest/EFCoreTest/Program.cs new file mode 100644 index 00000000..a4d3367f --- /dev/null +++ b/labs/EFCoreTest/EFCoreTest/Program.cs @@ -0,0 +1,72 @@ +using DbContextTest1; +using DbContextTest2; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Storage; +using System.Linq; + +namespace EFCoreTest +{ + internal class Program + { + private static void Main(string[] args) + { + using (var db = new MyDbContext()) + { + if (db.Database.EnsureCreated()) + { + } + + //var set = db.Set(); + //if (db.Database.EnsureCreated()) + //{ + // //set.Add(new User + // //{ + // // UserName = "test", + // // UserRoles = new List + // // { + // // new UserRole + // // { + // // Role=new Role{ + // // Name="admin" + // // } + // // } + // // } + // //}); + // //db.SaveChanges(); + //} + ////foreach (var item in set.ToList()) + ////{ + //// set.Remove(item); + //// db.SaveChanges(); + ////} + //var user = set.Include(o => o.UserRoles).ThenInclude(o => o.Role).FirstOrDefault(); + //user.UserRoles.FirstOrDefault().Role.Name = "test"; + //db.SaveChanges(); + } + using (var db = new DbContext1()) + { + try + { + db.Set().Any(); + } + catch + { + var databaseCreator = db.GetService(); + databaseCreator.CreateTables(); + } + } + using (var db = new DbContext2()) + { + try + { + db.Set().Any(); + } + catch + { + var databaseCreator = db.GetService(); + databaseCreator.CreateTables(); + } + } + } + } +} \ No newline at end of file diff --git a/labs/EFCoreTest/Program.cs b/labs/EFCoreTest/Program.cs deleted file mode 100644 index 184dc1b3..00000000 --- a/labs/EFCoreTest/Program.cs +++ /dev/null @@ -1,42 +0,0 @@ -using Microsoft.EntityFrameworkCore; -using System.Collections.Generic; -using System.Linq; - -namespace EFCoreTest -{ - internal class Program - { - private static void Main(string[] args) - { - using (var db = new MyDbContext()) - { - var set = db.Set(); - if (db.Database.EnsureCreated()) - { - set.Add(new User - { - UserName = "test", - UserRoles = new List - { - new UserRole - { - Role=new Role{ - Name="admin" - } - } - } - }); - db.SaveChanges(); - } - //foreach (var item in set.ToList()) - //{ - // set.Remove(item); - // db.SaveChanges(); - //} - var user = set.Include(o => o.UserRoles).ThenInclude(o => o.Role).FirstOrDefault(); - user.UserRoles.FirstOrDefault().Role.Name = "test"; - db.SaveChanges(); - } - } - } -} \ No newline at end of file