diff --git a/Directory.Build.props b/Directory.Build.props index 6a266967..51cb8466 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -11,7 +11,7 @@ diff --git a/Examples/base_entity/Program.cs b/Examples/base_entity/Program.cs index 8fc39a22..1a07ba3e 100644 --- a/Examples/base_entity/Program.cs +++ b/Examples/base_entity/Program.cs @@ -198,7 +198,7 @@ namespace base_entity public class SongRepository : BaseRepository { - public SongRepository(IFreeSql fsql) : base(fsql, null, null) + public SongRepository(IFreeSql fsql) : base(fsql) { //fsql.CodeFirst.Entity(a => // { @@ -706,7 +706,6 @@ namespace base_entity var testRepo = fsql2.GetRepository(); testRepo.AsType(table.Type); testRepo.Insert(area1); - testRepo.SaveMany(area1, "children"); diff --git a/Examples/repository_01/Startup.cs b/Examples/repository_01/Startup.cs index a0b904ee..899e2145 100644 --- a/Examples/repository_01/Startup.cs +++ b/Examples/repository_01/Startup.cs @@ -59,12 +59,7 @@ namespace repository_01 services.AddControllersWithViews(); services.AddSingleton(Fsql); - services.AddFreeRepository(filter => - { - filter - //.Apply("test", a => a.Title == DateTime.Now.ToString() + System.Threading.Thread.CurrentThread.ManagedThreadId) - .Apply("softdelete", a => a.IsDeleted == false); - }, this.GetType().Assembly); + services.AddFreeRepository(this.GetType().Assembly); } public void Configure(IApplicationBuilder app) diff --git a/Extensions/FreeSql.Extensions.AggregateRoot/FreeSql.Extensions.AggregateRoot.csproj b/Extensions/FreeSql.Extensions.AggregateRoot/FreeSql.Extensions.AggregateRoot.csproj index 511b782e..c2340271 100644 --- a/Extensions/FreeSql.Extensions.AggregateRoot/FreeSql.Extensions.AggregateRoot.csproj +++ b/Extensions/FreeSql.Extensions.AggregateRoot/FreeSql.Extensions.AggregateRoot.csproj @@ -18,7 +18,7 @@ true key.snk false - 3.2.833 + 3.5.100-preview20240725 readme.md diff --git a/Extensions/FreeSql.Extensions.BaseEntity/FreeSql.Extensions.BaseEntity.csproj b/Extensions/FreeSql.Extensions.BaseEntity/FreeSql.Extensions.BaseEntity.csproj index 2022a9b3..14c57e08 100644 --- a/Extensions/FreeSql.Extensions.BaseEntity/FreeSql.Extensions.BaseEntity.csproj +++ b/Extensions/FreeSql.Extensions.BaseEntity/FreeSql.Extensions.BaseEntity.csproj @@ -19,7 +19,7 @@ key.snk false latest - 3.2.833 + 3.5.100-preview20240725 readme.md diff --git a/Extensions/FreeSql.Extensions.JsonMap/FreeSql.Extensions.JsonMap.csproj b/Extensions/FreeSql.Extensions.JsonMap/FreeSql.Extensions.JsonMap.csproj index 69e8f663..5e0c3732 100644 --- a/Extensions/FreeSql.Extensions.JsonMap/FreeSql.Extensions.JsonMap.csproj +++ b/Extensions/FreeSql.Extensions.JsonMap/FreeSql.Extensions.JsonMap.csproj @@ -18,7 +18,7 @@ true key.snk false - 3.2.833 + 3.5.100-preview20240725 readme.md diff --git a/Extensions/FreeSql.Extensions.LazyLoading/FreeSql.Extensions.LazyLoading.csproj b/Extensions/FreeSql.Extensions.LazyLoading/FreeSql.Extensions.LazyLoading.csproj index 10c7f7d9..41cff900 100644 --- a/Extensions/FreeSql.Extensions.LazyLoading/FreeSql.Extensions.LazyLoading.csproj +++ b/Extensions/FreeSql.Extensions.LazyLoading/FreeSql.Extensions.LazyLoading.csproj @@ -15,7 +15,7 @@ $(AssemblyName) true true - 3.2.833 + 3.5.100-preview20240725 readme.md diff --git a/Extensions/FreeSql.Extensions.Linq/FreeSql.Extensions.Linq.csproj b/Extensions/FreeSql.Extensions.Linq/FreeSql.Extensions.Linq.csproj index f20b31a1..ca6142e6 100644 --- a/Extensions/FreeSql.Extensions.Linq/FreeSql.Extensions.Linq.csproj +++ b/Extensions/FreeSql.Extensions.Linq/FreeSql.Extensions.Linq.csproj @@ -18,7 +18,7 @@ true key.snk false - 3.2.833 + 3.5.100-preview20240725 readme.md diff --git a/Extensions/FreeSql.Extensions.ZeroEntity/FreeSql.Extensions.ZeroEntity.csproj b/Extensions/FreeSql.Extensions.ZeroEntity/FreeSql.Extensions.ZeroEntity.csproj index 147ff4da..a1cebcfb 100644 --- a/Extensions/FreeSql.Extensions.ZeroEntity/FreeSql.Extensions.ZeroEntity.csproj +++ b/Extensions/FreeSql.Extensions.ZeroEntity/FreeSql.Extensions.ZeroEntity.csproj @@ -18,7 +18,7 @@ true key.snk false - 3.2.833 + 3.5.100-preview20240725 readme.md diff --git a/Extensions/FreeSql.Generator/FreeSql.Generator.csproj b/Extensions/FreeSql.Generator/FreeSql.Generator.csproj index fa617e4d..ad75a4cf 100644 --- a/Extensions/FreeSql.Generator/FreeSql.Generator.csproj +++ b/Extensions/FreeSql.Generator/FreeSql.Generator.csproj @@ -13,7 +13,7 @@ https://github.com/2881099/FreeSql https://github.com/2881099/FreeSql FreeSql DbFirst 实体生成器 - 3.2.833 + 3.5.100-preview20240725 readme.md diff --git a/FreeSql.All/FreeSql.All.csproj b/FreeSql.All/FreeSql.All.csproj index 8fdb9fc4..e2d243a7 100644 --- a/FreeSql.All/FreeSql.All.csproj +++ b/FreeSql.All/FreeSql.All.csproj @@ -17,7 +17,7 @@ true key.snk false - 3.2.833 + 3.5.100-preview20240725 readme.md diff --git a/FreeSql.DbContext/FreeSql.DbContext.csproj b/FreeSql.DbContext/FreeSql.DbContext.csproj index 8db92b80..de1f4dd1 100644 --- a/FreeSql.DbContext/FreeSql.DbContext.csproj +++ b/FreeSql.DbContext/FreeSql.DbContext.csproj @@ -17,7 +17,7 @@ true key.snk false - 3.2.833 + 3.5.100-preview20240725 readme.md diff --git a/FreeSql.DbContext/Repository/ContextSet/RepositoryUnitOfWork.cs b/FreeSql.DbContext/Repository/ContextSet/RepositoryUnitOfWork.cs index 957f7cae..6d716641 100644 --- a/FreeSql.DbContext/Repository/ContextSet/RepositoryUnitOfWork.cs +++ b/FreeSql.DbContext/Repository/ContextSet/RepositoryUnitOfWork.cs @@ -12,6 +12,7 @@ namespace FreeSql /// /// IBaseRepository GetRepository() where TEntity : class; + IBaseRepository GetRepository() where TEntity : class; } class RepositoryUnitOfWork : UnitOfWork, IRepositoryUnitOfWork diff --git a/FreeSql.DbContext/Repository/Extensions/FreeSqlRepositoryExtensions.cs b/FreeSql.DbContext/Repository/Extensions/FreeSqlRepositoryExtensions.cs index 632c02eb..b9598b8e 100644 --- a/FreeSql.DbContext/Repository/Extensions/FreeSqlRepositoryExtensions.cs +++ b/FreeSql.DbContext/Repository/Extensions/FreeSqlRepositoryExtensions.cs @@ -22,8 +22,8 @@ partial class FreeSqlDbContextExtensions /// /// /// - public static IUnitOfWork CreateUnitOfWork(this IFreeSql that) + public static IRepositoryUnitOfWork CreateUnitOfWork(this IFreeSql that) { - return new UnitOfWork(that); + return new RepositoryUnitOfWork(that); } } \ No newline at end of file diff --git a/FreeSql.Repository/FreeSql.Repository.csproj b/FreeSql.Repository/FreeSql.Repository.csproj index d2bc2a73..57193bab 100644 --- a/FreeSql.Repository/FreeSql.Repository.csproj +++ b/FreeSql.Repository/FreeSql.Repository.csproj @@ -17,7 +17,7 @@ true key.snk false - 3.2.833 + 3.5.100-preview20240725 readme.md diff --git a/FreeSql.Tests/FreeSql.Tests.DbContext/RepositoryTests.cs b/FreeSql.Tests/FreeSql.Tests.DbContext/RepositoryTests.cs index 7b26828b..2e1005a2 100644 --- a/FreeSql.Tests/FreeSql.Tests.DbContext/RepositoryTests.cs +++ b/FreeSql.Tests/FreeSql.Tests.DbContext/RepositoryTests.cs @@ -421,7 +421,7 @@ namespace FreeSql.Tests var item3 = new AddUpdateInfo(); g.mysql.Insert(item3).ExecuteAffrows(); - var repos = g.mysql.GetGuidRepository(); + var repos = g.mysql.GetRepository(); var items = repos.Select.WhereDynamic(new[] { item1, item2, item3 }).ToList(); items[0].Title = "88"; //items[1].Title = "88"; @@ -433,7 +433,7 @@ namespace FreeSql.Tests [Fact] public void AddUpdate() { - var repos = g.sqlite.GetGuidRepository(); + var repos = g.sqlite.GetRepository(); var item = repos.Insert(new AddUpdateInfo()); Console.WriteLine(Newtonsoft.Json.JsonConvert.SerializeObject(item)); @@ -462,7 +462,7 @@ namespace FreeSql.Tests [Fact] public void UpdateAttach() { - var repos = g.sqlite.GetGuidRepository(); + var repos = g.sqlite.GetRepository(); var item = new AddUpdateInfo { Id = Guid.NewGuid() }; repos.Attach(item); @@ -485,7 +485,7 @@ namespace FreeSql.Tests [Fact] public void UpdateWhenNotExists() { - var repos = g.sqlite.GetGuidRepository(); + var repos = g.sqlite.GetRepository(); var item = new AddUpdateInfo { Id = Guid.NewGuid() }; item.Title = "xxx"; @@ -497,7 +497,7 @@ namespace FreeSql.Tests { g.sqlite.Insert(new AddUpdateInfo()).ExecuteAffrows(); - var repos = g.sqlite.GetGuidRepository(); + var repos = g.sqlite.GetRepository(); var item = new AddUpdateInfo { Id = g.sqlite.Select().First().Id }; @@ -674,7 +674,6 @@ namespace FreeSql.Tests cts2[0].Goodss[0].Name += 123; repo.Update(cts2[0]); cts2[0].Goodss[0].Name += 333; - repo.SaveMany(cts2[0], "Goodss"); } [Table(Name = "EAUNL_OTM_CT")] class Cagetory @@ -737,13 +736,11 @@ namespace FreeSql.Tests cts2[0].Goodss[0].Name += 123; repo.Update(cts2[0]); cts2[0].Goodss[0].Name += 333; - repo.SaveMany(cts2[0], "Goodss"); cts2 = repo.Select.WhereDynamic(cts).ToList(); cts2[0].Goodss[0].Name += 123; repo.Update(cts2[0]); cts2[0].Goodss[0].Name += 333; - repo.SaveMany(cts2[0], "Goodss"); } [Table(Name = "EAUNL_OTM_CTLD")] public class CagetoryLD @@ -762,58 +759,6 @@ namespace FreeSql.Tests public string Name { get; set; } } - [Fact] - public void SaveMany_OneToMany() - { - var repo = g.sqlite.GetRepository(); - repo.DbContextOptions.EnableCascadeSave = false; //关闭级联保存功能 - var cts = new[] { - new Cagetory - { - Name = "分类1", - Goodss = new List(new[] - { - new Goods { Name = "商品1" }, - new Goods { Name = "商品2" }, - new Goods { Name = "商品3" } - }) - }, - new Cagetory - { - Name = "分类2", - Goodss = new List(new[] - { - new Goods { Name = "商品4" }, - new Goods { Name = "商品5" } - }) - } - }; - repo.Insert(cts); - repo.SaveMany(cts[0], "Goodss"); //指定保存 Goodss 一对多属性 - repo.SaveMany(cts[1], "Goodss"); //指定保存 Goodss 一对多属性 - cts[0].Goodss.RemoveAt(1); - cts[1].Goodss.RemoveAt(1); - repo.SaveMany(cts[0], "Goodss"); //指定保存 Goodss 一对多属性 - repo.SaveMany(cts[1], "Goodss"); //指定保存 Goodss 一对多属性 - - cts[0].Name = "分类11"; - cts[0].Goodss.Clear(); - cts[1].Name = "分类22"; - cts[1].Goodss.Clear(); - repo.Update(cts); - repo.SaveMany(cts[0], "Goodss"); //指定保存 Goodss 一对多属性 - repo.SaveMany(cts[1], "Goodss"); //指定保存 Goodss 一对多属性 - cts[0].Name = "分类111"; - cts[0].Goodss.Clear(); - cts[0].Goodss.Add(new Goods { Name = "商品33" }); - cts[1].Name = "分类222"; - cts[1].Goodss.Clear(); - cts[1].Goodss.Add(new Goods { Name = "商品55" }); - repo.Update(cts); - repo.SaveMany(cts[0], "Goodss"); //指定保存 Goodss 一对多属性 - repo.SaveMany(cts[1], "Goodss"); //指定保存 Goodss 一对多属性 - } - [Fact] public void EnableCascadeSave_OneToMany_Parent() { @@ -905,7 +850,6 @@ namespace FreeSql.Tests repo.Insert(ss); ss[0].Tags[0].TagName = "流行101"; - repo.SaveMany(ss[0], "Tags"); //指定保存 Tags 多对多属性 ss[0].Name = "爱你一万年.mp5"; ss[0].Tags.Clear(); diff --git a/FreeSql.Tests/FreeSql.Tests.DbContext/RepositoryTests02.cs b/FreeSql.Tests/FreeSql.Tests.DbContext/RepositoryTests02.cs index b6a58465..551f5cc6 100644 --- a/FreeSql.Tests/FreeSql.Tests.DbContext/RepositoryTests02.cs +++ b/FreeSql.Tests/FreeSql.Tests.DbContext/RepositoryTests02.cs @@ -82,13 +82,13 @@ namespace FreeSql.Tests.DbContext Console.WriteLine("仓储的过滤器禁止,但不成功."); //仓储的过滤器禁止,但不成功. - using (resp.DataFilter.DisableAll()) - { + //using (resp.DataFilter.DisableAll()) + //{ - long count2 = resp.Where(a => a.ID != null).Count(); + // long count2 = resp.Where(a => a.ID != null).Count(); - Assert.True(count2 == 4); - } + // Assert.True(count2 == 4); + //} } } diff --git a/FreeSql.Tests/FreeSql.Tests.DbContext/UnitTest1.cs b/FreeSql.Tests/FreeSql.Tests.DbContext/UnitTest1.cs index 464eb684..98c38ee5 100644 --- a/FreeSql.Tests/FreeSql.Tests.DbContext/UnitTest1.cs +++ b/FreeSql.Tests/FreeSql.Tests.DbContext/UnitTest1.cs @@ -35,7 +35,6 @@ namespace FreeSql.Tests new DEPARTMENTS { deptid = 2, deptcode = "02", deptname = "" }, new DEPARTMENTS { deptid = 3, deptcode = "03" , deptname = ""}, }); - user.SaveMany("depts"); user.depts = new List( new[] { @@ -43,13 +42,11 @@ namespace FreeSql.Tests new DEPARTMENTS { deptid = 2, deptcode = "02", deptname = "" }, new DEPARTMENTS { deptid = 4, deptcode = "04", deptname = "" }, }); - user.SaveMany("depts"); user.depts = new List( new[] { new DEPARTMENTS { deptid = 2, deptcode = "02", deptname = "" }, }); - user.SaveMany("depts"); g.sqlite.CodeFirst.SyncStructure(); g.sqlite.CodeFirst.SyncStructure(); diff --git a/FreeSql.Tests/FreeSql.Tests.Provider.Custom/UnitTest1.cs b/FreeSql.Tests/FreeSql.Tests.Provider.Custom/UnitTest1.cs index f9dd56db..58072292 100644 --- a/FreeSql.Tests/FreeSql.Tests.Provider.Custom/UnitTest1.cs +++ b/FreeSql.Tests/FreeSql.Tests.Provider.Custom/UnitTest1.cs @@ -533,7 +533,7 @@ WHERE ROWNUM < 11"; g.mysql.SetDbContextOptions(opt => opt.EnableCascadeSave = true); - var trepo = g.mysql.GetGuidRepository(); + var trepo = g.mysql.GetRepository(); trepo.Insert(new TaskBuild { TaskName = "tt11", diff --git a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/UnitTest1.cs b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/UnitTest1.cs index ced8bfe2..155de008 100644 --- a/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/UnitTest1.cs +++ b/FreeSql.Tests/FreeSql.Tests.Provider.Odbc/UnitTest1.cs @@ -533,7 +533,7 @@ WHERE ROWNUM < 11"; g.mysql.SetDbContextOptions(opt => opt.EnableCascadeSave = true); - var trepo = g.mysql.GetGuidRepository(); + var trepo = g.mysql.GetRepository(); trepo.Insert(new TaskBuild { TaskName = "tt11", diff --git a/FreeSql.Tests/FreeSql.Tests.Provider.Sqlite.Data/Sqlite/Curd/SqliteSelectTest.cs b/FreeSql.Tests/FreeSql.Tests.Provider.Sqlite.Data/Sqlite/Curd/SqliteSelectTest.cs index f918dc59..6a81f535 100644 --- a/FreeSql.Tests/FreeSql.Tests.Provider.Sqlite.Data/Sqlite/Curd/SqliteSelectTest.cs +++ b/FreeSql.Tests/FreeSql.Tests.Provider.Sqlite.Data/Sqlite/Curd/SqliteSelectTest.cs @@ -961,8 +961,10 @@ WHERE (((cast(a.""Id"" as character)) in (SELECT b.""Title"" var listt = select.AsTable((a, b) => "(select * from tb_topic where clicks > 10)").Page(1, 10).ToList(); var tenantId = 1; - var reposTopic = g.sqlite.GetGuidRepository(null, oldname => $"{oldname}_{tenantId}"); - var reposType = g.sqlite.GetGuidRepository(null, oldname => $"{oldname}_{tenantId}"); + var reposTopic = g.sqlite.GetRepository(); + var reposType = g.sqlite.GetRepository(); + reposTopic.AsTable(oldname => $"{oldname}_{tenantId}"); + reposType.AsTable(oldname => $"{oldname}_{tenantId}"); //reposTopic.Delete(Guid.Empty); //reposTopic.Find(Guid.Empty); diff --git a/FreeSql.Tests/FreeSql.Tests.Provider.Sqlite.Data/Sqlite/SqliteCodeFirstTest.cs b/FreeSql.Tests/FreeSql.Tests.Provider.Sqlite.Data/Sqlite/SqliteCodeFirstTest.cs index 774629de..3580b356 100644 --- a/FreeSql.Tests/FreeSql.Tests.Provider.Sqlite.Data/Sqlite/SqliteCodeFirstTest.cs +++ b/FreeSql.Tests/FreeSql.Tests.Provider.Sqlite.Data/Sqlite/SqliteCodeFirstTest.cs @@ -1,4 +1,4 @@ -using FreeSql.DataAnnotations; +using FreeSql.DataAnnotations; using Newtonsoft.Json; using System; using System.Collections.Generic; @@ -16,7 +16,7 @@ namespace FreeSql.Tests.Sqlite { var fsql = g.sqlite; fsql.CodeFirst.SyncStructure(); - var item = new ts_iupstr { id = Guid.NewGuid(), title = string.Join(",", Enumerable.Range(0, 2000).Select(a => "й")) }; + var item = new ts_iupstr { id = Guid.NewGuid(), title = string.Join(",", Enumerable.Range(0, 2000).Select(a => "我是中国人")) }; Assert.Equal(1, fsql.Insert(item).ExecuteAffrows()); var find = fsql.Select().Where(a => a.id == item.id).First(); Assert.NotNull(find); @@ -39,7 +39,7 @@ namespace FreeSql.Tests.Sqlite [Fact] public void Blob() { - var str1 = string.Join(",", Enumerable.Range(0, 10000).Select(a => "й")); + var str1 = string.Join(",", Enumerable.Range(0, 10000).Select(a => "我是中国人")); var data1 = Encoding.UTF8.GetBytes(str1); var item1 = new TS_BLB01 { Data = data1 }; @@ -92,7 +92,7 @@ namespace FreeSql.Tests.Sqlite } [Fact] - public void е() + public void 表名中有点() { var item = new tbdot01 { name = "insert" }; g.sqlite.Insert(item).ExecuteAffrows(); @@ -120,57 +120,57 @@ namespace FreeSql.Tests.Sqlite } [Fact] - public void ı_ֶ() + public void 中文表_字段() { - var sql = g.sqlite.CodeFirst.GetComparisonDDLStatements<ı>(); - g.sqlite.CodeFirst.SyncStructure<ı>(); + var sql = g.sqlite.CodeFirst.GetComparisonDDLStatements<测试中文表>(); + g.sqlite.CodeFirst.SyncStructure<测试中文表>(); - var item = new ı + var item = new 测试中文表 { - = "Ա", - ʱ = DateTime.Now + 标题 = "测试标题", + 创建时间 = DateTime.Now }; - Assert.Equal(1, g.sqlite.Insert<ı>().AppendData(item).ExecuteAffrows()); - Assert.NotEqual(Guid.Empty, item.); - var item2 = g.sqlite.Select<ı>().Where(a => a. == item.).First(); + Assert.Equal(1, g.sqlite.Insert<测试中文表>().AppendData(item).ExecuteAffrows()); + Assert.NotEqual(Guid.Empty, item.编号); + var item2 = g.sqlite.Select<测试中文表>().Where(a => a.编号 == item.编号).First(); Assert.NotNull(item2); - Assert.Equal(item., item2.); - Assert.Equal(item., item2.); + Assert.Equal(item.编号, item2.编号); + Assert.Equal(item.标题, item2.标题); - item. = "Ա"; - Assert.Equal(1, g.sqlite.Update<ı>().SetSource(item).ExecuteAffrows()); - item2 = g.sqlite.Select<ı>().Where(a => a. == item.).First(); + item.标题 = "测试标题更新"; + Assert.Equal(1, g.sqlite.Update<测试中文表>().SetSource(item).ExecuteAffrows()); + item2 = g.sqlite.Select<测试中文表>().Where(a => a.编号 == item.编号).First(); Assert.NotNull(item2); - Assert.Equal(item., item2.); - Assert.Equal(item., item2.); + Assert.Equal(item.编号, item2.编号); + Assert.Equal(item.标题, item2.标题); - item. = "Ա_repo"; - var repo = g.sqlite.GetRepository<ı>(); + item.标题 = "测试标题更新_repo"; + var repo = g.sqlite.GetRepository<测试中文表>(); Assert.Equal(1, repo.Update(item)); - item2 = g.sqlite.Select<ı>().Where(a => a. == item.).First(); + item2 = g.sqlite.Select<测试中文表>().Where(a => a.编号 == item.编号).First(); Assert.NotNull(item2); - Assert.Equal(item., item2.); - Assert.Equal(item., item2.); + Assert.Equal(item.编号, item2.编号); + Assert.Equal(item.标题, item2.标题); - item. = "Ա_repo22"; + item.标题 = "测试标题更新_repo22"; Assert.Equal(1, repo.Update(item)); - item2 = g.sqlite.Select<ı>().Where(a => a. == item.).First(); + item2 = g.sqlite.Select<测试中文表>().Where(a => a.编号 == item.编号).First(); Assert.NotNull(item2); - Assert.Equal(item., item2.); - Assert.Equal(item., item2.); + Assert.Equal(item.编号, item2.编号); + Assert.Equal(item.标题, item2.标题); } - class ı + class 测试中文表 { [Column(IsPrimary = true)] - public Guid { get; set; } + public Guid 编号 { get; set; } - public string { get; set; } + public string 标题 { get; set; } [Column(ServerTime = DateTimeKind.Local, CanUpdate = false)] - public DateTime ʱ { get; set; } + public DateTime 创建时间 { get; set; } [Column(ServerTime = DateTimeKind.Local)] - public DateTime ʱ { get; set; } + public DateTime 更新时间 { get; set; } } [Fact] @@ -217,29 +217,29 @@ namespace FreeSql.Tests.Sqlite public void AddField() { - //һ FreeSql.Repository չdotnet add package FreeSql.Repository - var topicRepository = g.sqlite.GetGuidRepository(); - var commentRepository = g.sqlite.GetGuidRepository(); + //秀一波 FreeSql.Repository 扩展包,dotnet add package FreeSql.Repository + var topicRepository = g.sqlite.GetRepository(); + var commentRepository = g.sqlite.GetRepository(); - //Ӳ + //添加测试文章 var topic = topicRepository.Insert(new Topic { - Title = "±1", - Content = "1", + Title = "文章标题1", + Content = "文章内容1", CreateTime = DateTime.Now }); - //10 + //添加10条测试评论 var comments = Enumerable.Range(0, 10).Select(a => new Comment { TopicId = topic.Id, - Nickname = $"dz{a}", - Content = $"{a}", + Nickname = $"昵称{a}", + Content = $"评论内容{a}", CreateTime = DateTime.Now }).ToArray(); var affrows = commentRepository.Insert(comments); - var find = commentRepository.Select.Where(a => a.Topic.Title == "±1").ToList(); + var find = commentRepository.Select.Where(a => a.Topic.Title == "文章标题1").ToList(); @@ -271,7 +271,7 @@ namespace FreeSql.Tests.Sqlite { var sql = g.sqlite.CodeFirst.GetComparisonDDLStatements(); - Assert.True(string.IsNullOrEmpty(sql)); //κ + Assert.True(string.IsNullOrEmpty(sql)); //测试运行两次后 //sql = g.Sqlite.CodeFirst.GetComparisonDDLStatements(); } @@ -292,7 +292,7 @@ namespace FreeSql.Tests.Sqlite BoolNullable = true, Byte = 255, ByteNullable = 127, - Bytes = Encoding.UTF8.GetBytes("й"), + Bytes = Encoding.UTF8.GetBytes("我是中国人"), DateTime = DateTime.Now, DateTimeNullable = DateTime.Now.AddHours(-1), Decimal = 99.99M, @@ -313,7 +313,7 @@ namespace FreeSql.Tests.Sqlite SByteNullable = 99, Short = short.MaxValue, ShortNullable = short.MinValue, - String = "йstring'\\?!@#$%^&*()_+{}}{~?><<>", + String = "我是中国人string'\\?!@#$%^&*()_+{}}{~?><<>", Char = 'X', TimeSpan = TimeSpan.FromSeconds(999), TimeSpanNullable = TimeSpan.FromSeconds(60), diff --git a/FreeSql.Tests/FreeSql.Tests/Issues/1113.cs b/FreeSql.Tests/FreeSql.Tests/Issues/1113.cs index 5ed79e34..86f40d6b 100644 --- a/FreeSql.Tests/FreeSql.Tests/Issues/1113.cs +++ b/FreeSql.Tests/FreeSql.Tests/Issues/1113.cs @@ -40,7 +40,7 @@ namespace FreeSql.Tests.Issues new Material{Code="TEST2",Units=new List{new Unit{Code = "KG"}}} }; - var repo1 = freeSql.GetGuidRepository(); + var repo1 = freeSql.GetRepository(); repo1.DbContextOptions.EnableCascadeSave = true; repo1.Insert(materials); @@ -56,7 +56,7 @@ namespace FreeSql.Tests.Issues } }; - var repo2 = freeSql.GetGuidRepository(); + var repo2 = freeSql.GetRepository(); repo2.DbContextOptions.EnableCascadeSave = true; repo2.Insert(order); @@ -138,7 +138,7 @@ namespace FreeSql.Tests.Issues new Material{Code="TEST2",Units=new List{new Unit{Code = "KG"}}} }; - var repo1 = freeSql.GetGuidRepository(); + var repo1 = freeSql.GetRepository(); repo1.DbContextOptions.EnableCascadeSave = true; repo1.Insert(materials); @@ -154,7 +154,7 @@ namespace FreeSql.Tests.Issues } }; - var repo2 = freeSql.GetGuidRepository(); + var repo2 = freeSql.GetRepository(); repo2.DbContextOptions.EnableCascadeSave = true; repo2.Insert(order); diff --git a/FreeSql.Tests/FreeSql.Tests/MsAccess/MsAccessCodeFirstTest.cs b/FreeSql.Tests/FreeSql.Tests/MsAccess/MsAccessCodeFirstTest.cs index e692fcbe..012e68f7 100644 --- a/FreeSql.Tests/FreeSql.Tests/MsAccess/MsAccessCodeFirstTest.cs +++ b/FreeSql.Tests/FreeSql.Tests/MsAccess/MsAccessCodeFirstTest.cs @@ -169,8 +169,8 @@ namespace FreeSql.Tests.MsAccess { //秀一波 FreeSql.Repository 扩展包,dotnet add package FreeSql.Repository - var topicRepository = g.msaccess.GetGuidRepository(); - var commentRepository = g.msaccess.GetGuidRepository(); + var topicRepository = g.msaccess.GetRepository(); + var commentRepository = g.msaccess.GetRepository(); //添加测试文章 var topic = topicRepository.Insert(new Topic diff --git a/FreeSql.Tests/FreeSql.Tests/Sqlite/Curd/SqliteSelectTest.cs b/FreeSql.Tests/FreeSql.Tests/Sqlite/Curd/SqliteSelectTest.cs index cfd4b5fc..66ad59b1 100644 --- a/FreeSql.Tests/FreeSql.Tests/Sqlite/Curd/SqliteSelectTest.cs +++ b/FreeSql.Tests/FreeSql.Tests/Sqlite/Curd/SqliteSelectTest.cs @@ -1154,8 +1154,10 @@ FROM ""TestTypeParentInfo_01"" a", asTableSubSql); var listt = select.AsTable((a, b) => "(select * from tb_topic where clicks > 10)").Page(1, 10).ToList(); var tenantId = 1; - var reposTopic = g.sqlite.GetGuidRepository(null, oldname => $"{oldname}_{tenantId}"); - var reposType = g.sqlite.GetGuidRepository(null, oldname => $"{oldname}_{tenantId}"); + var reposTopic = g.sqlite.GetRepository(); + var reposType = g.sqlite.GetRepository(); + reposTopic.AsTable(oldname => $"{oldname}_{tenantId}"); + reposType.AsTable(oldname => $"{oldname}_{tenantId}"); //reposTopic.Delete(Guid.Empty); //reposTopic.Find(Guid.Empty); diff --git a/FreeSql.Tests/FreeSql.Tests/Sqlite/SqliteCodeFirstTest.cs b/FreeSql.Tests/FreeSql.Tests/Sqlite/SqliteCodeFirstTest.cs index 3ccd68bc..61ee8030 100644 --- a/FreeSql.Tests/FreeSql.Tests/Sqlite/SqliteCodeFirstTest.cs +++ b/FreeSql.Tests/FreeSql.Tests/Sqlite/SqliteCodeFirstTest.cs @@ -238,8 +238,8 @@ namespace FreeSql.Tests.Sqlite { //秀一波 FreeSql.Repository 扩展包,dotnet add package FreeSql.Repository - var topicRepository = g.sqlite.GetGuidRepository(); - var commentRepository = g.sqlite.GetGuidRepository(); + var topicRepository = g.sqlite.GetRepository(); + var commentRepository = g.sqlite.GetRepository(); //添加测试文章 var topic = topicRepository.Insert(new Topic diff --git a/FreeSql.Tests/FreeSql.Tests/UnitTest1.cs b/FreeSql.Tests/FreeSql.Tests/UnitTest1.cs index 83b0a6a0..fa619193 100644 --- a/FreeSql.Tests/FreeSql.Tests/UnitTest1.cs +++ b/FreeSql.Tests/FreeSql.Tests/UnitTest1.cs @@ -82,7 +82,7 @@ namespace FreeSql.Tests public string Title { get; set; } public override Task Persistent(IRepositoryUnitOfWork uof) { - uof.GetGuidRepository().Insert(this); + uof.GetRepository().Insert(this); return Task.CompletedTask; } public override Task Persistent() @@ -826,7 +826,7 @@ namespace FreeSql.Tests g.sqlite.SetDbContextOptions(opt => opt.EnableCascadeSave = true); - var trepo = g.sqlite.GetGuidRepository(); + var trepo = g.sqlite.GetRepository(); trepo.Insert(new TaskBuild { TaskName = "tt11", diff --git a/FreeSql/FreeSql.csproj b/FreeSql/FreeSql.csproj index 49a7beb1..4d804514 100644 --- a/FreeSql/FreeSql.csproj +++ b/FreeSql/FreeSql.csproj @@ -17,7 +17,7 @@ true key.snk false - 3.2.833 + 3.5.100-preview20240725 readme.md diff --git a/FreeSql/FreeSql.xml b/FreeSql/FreeSql.xml index a7a29088..a656490c 100644 --- a/FreeSql/FreeSql.xml +++ b/FreeSql/FreeSql.xml @@ -1104,6 +1104,93 @@ + + + 动态创建实体类型 + + + + + 配置Class + + 类名 + 类标记的特性[Table(Name = "xxx")] [Index(xxxx)] + + + + + 获取类型构建器,可作为要构建的Type来引用 + + + + + 配置属性 + + 属性名称 + 属性类型 + 属性标记的特性-支持多个 + + + + + 配置属性 + + 属性名称 + 属性类型 + 该属性是否重写父类属性 + 属性标记的特性-支持多个 + + + + + 配置属性 + + 属性名称 + 属性类型 + 该属性是否重写父类属性 + 属性默认值 + 属性标记的特性-支持多个 + + + + + 配置父类 + + 父类类型 + + + + + Override属性 + + + + + + Emit动态创建出Class - Type + + + + + + Emit动态创建出Class - Type,不附带获取TableInfo + + + + + + 首字母小写 + + + + + + + 首字母大写 + + + + 获取实体的主键值,以 "*|_,[,_|*" 分割,当任意一个主键属性无值时,返回 "" @@ -5826,6 +5913,28 @@ 请使用 fsql.InsertDict(dict) 方法插入字典数据 + + + 动态构建Class Type + + + + + + 根据字典,创建 table 对应的实体对象 + + + + + + + + 根据实体对象,创建 table 对应的字典 + + + + + C#: that >= between && that <= and diff --git a/Providers/FreeSql.Provider.ClickHouse/FreeSql.Provider.ClickHouse.csproj b/Providers/FreeSql.Provider.ClickHouse/FreeSql.Provider.ClickHouse.csproj index 00c5636d..6f8d96b5 100644 --- a/Providers/FreeSql.Provider.ClickHouse/FreeSql.Provider.ClickHouse.csproj +++ b/Providers/FreeSql.Provider.ClickHouse/FreeSql.Provider.ClickHouse.csproj @@ -19,7 +19,7 @@ False key.snk false - 3.2.833 + 3.5.100-preview20240725 readme.md diff --git a/Providers/FreeSql.Provider.Custom/FreeSql.Provider.Custom.csproj b/Providers/FreeSql.Provider.Custom/FreeSql.Provider.Custom.csproj index 9f2d54ec..bfe9fe7d 100644 --- a/Providers/FreeSql.Provider.Custom/FreeSql.Provider.Custom.csproj +++ b/Providers/FreeSql.Provider.Custom/FreeSql.Provider.Custom.csproj @@ -18,7 +18,7 @@ true key.snk false - 3.2.833 + 3.5.100-preview20240725 readme.md diff --git a/Providers/FreeSql.Provider.Dameng/FreeSql.Provider.Dameng.csproj b/Providers/FreeSql.Provider.Dameng/FreeSql.Provider.Dameng.csproj index 4c0ddd76..53314a72 100644 --- a/Providers/FreeSql.Provider.Dameng/FreeSql.Provider.Dameng.csproj +++ b/Providers/FreeSql.Provider.Dameng/FreeSql.Provider.Dameng.csproj @@ -15,7 +15,7 @@ $(AssemblyName) true true - 3.2.833 + 3.5.100-preview20240725 readme.md diff --git a/Providers/FreeSql.Provider.Firebird/FreeSql.Provider.Firebird.csproj b/Providers/FreeSql.Provider.Firebird/FreeSql.Provider.Firebird.csproj index e4d40463..45d81cfa 100644 --- a/Providers/FreeSql.Provider.Firebird/FreeSql.Provider.Firebird.csproj +++ b/Providers/FreeSql.Provider.Firebird/FreeSql.Provider.Firebird.csproj @@ -18,7 +18,7 @@ true key.snk false - 3.2.833 + 3.5.100-preview20240725 readme.md diff --git a/Providers/FreeSql.Provider.GBase/FreeSql.Provider.GBase.csproj b/Providers/FreeSql.Provider.GBase/FreeSql.Provider.GBase.csproj index e5f4fba7..55b5c7ae 100644 --- a/Providers/FreeSql.Provider.GBase/FreeSql.Provider.GBase.csproj +++ b/Providers/FreeSql.Provider.GBase/FreeSql.Provider.GBase.csproj @@ -18,7 +18,7 @@ true key.snk false - 3.2.833 + 3.5.100-preview20240725 readme.md diff --git a/Providers/FreeSql.Provider.KingbaseES/FreeSql.Provider.KingbaseES.csproj b/Providers/FreeSql.Provider.KingbaseES/FreeSql.Provider.KingbaseES.csproj index 6b841fca..4071eeb6 100644 --- a/Providers/FreeSql.Provider.KingbaseES/FreeSql.Provider.KingbaseES.csproj +++ b/Providers/FreeSql.Provider.KingbaseES/FreeSql.Provider.KingbaseES.csproj @@ -15,7 +15,7 @@ $(AssemblyName) true true - 3.2.833 + 3.5.100-preview20240725 readme.md diff --git a/Providers/FreeSql.Provider.MsAccess/FreeSql.Provider.MsAccess.csproj b/Providers/FreeSql.Provider.MsAccess/FreeSql.Provider.MsAccess.csproj index a201a57f..a7213509 100644 --- a/Providers/FreeSql.Provider.MsAccess/FreeSql.Provider.MsAccess.csproj +++ b/Providers/FreeSql.Provider.MsAccess/FreeSql.Provider.MsAccess.csproj @@ -18,7 +18,7 @@ true key.snk false - 3.2.833 + 3.5.100-preview20240725 readme.md diff --git a/Providers/FreeSql.Provider.MySql/FreeSql.Provider.MySql.csproj b/Providers/FreeSql.Provider.MySql/FreeSql.Provider.MySql.csproj index 7ba05e59..8ec7fc99 100644 --- a/Providers/FreeSql.Provider.MySql/FreeSql.Provider.MySql.csproj +++ b/Providers/FreeSql.Provider.MySql/FreeSql.Provider.MySql.csproj @@ -18,7 +18,7 @@ true key.snk false - 3.2.833 + 3.5.100-preview20240725 readme.md diff --git a/Providers/FreeSql.Provider.MySqlConnector/FreeSql.Provider.MySqlConnector.csproj b/Providers/FreeSql.Provider.MySqlConnector/FreeSql.Provider.MySqlConnector.csproj index f2f19802..7520a589 100644 --- a/Providers/FreeSql.Provider.MySqlConnector/FreeSql.Provider.MySqlConnector.csproj +++ b/Providers/FreeSql.Provider.MySqlConnector/FreeSql.Provider.MySqlConnector.csproj @@ -18,7 +18,7 @@ true key.snk false - 3.2.833 + 3.5.100-preview20240725 readme.md diff --git a/Providers/FreeSql.Provider.Odbc/FreeSql.Provider.Odbc.csproj b/Providers/FreeSql.Provider.Odbc/FreeSql.Provider.Odbc.csproj index a46fa367..ad69941d 100644 --- a/Providers/FreeSql.Provider.Odbc/FreeSql.Provider.Odbc.csproj +++ b/Providers/FreeSql.Provider.Odbc/FreeSql.Provider.Odbc.csproj @@ -18,7 +18,7 @@ true key.snk false - 3.2.833 + 3.5.100-preview20240725 readme.md diff --git a/Providers/FreeSql.Provider.Oracle/FreeSql.Provider.Oracle.csproj b/Providers/FreeSql.Provider.Oracle/FreeSql.Provider.Oracle.csproj index 96fc0ca5..16d587a2 100644 --- a/Providers/FreeSql.Provider.Oracle/FreeSql.Provider.Oracle.csproj +++ b/Providers/FreeSql.Provider.Oracle/FreeSql.Provider.Oracle.csproj @@ -18,7 +18,7 @@ true key.snk false - 3.2.833 + 3.5.100-preview20240725 readme.md diff --git a/Providers/FreeSql.Provider.OracleOledb/FreeSql.Provider.OracleOledb.csproj b/Providers/FreeSql.Provider.OracleOledb/FreeSql.Provider.OracleOledb.csproj index 57570433..c94131be 100644 --- a/Providers/FreeSql.Provider.OracleOledb/FreeSql.Provider.OracleOledb.csproj +++ b/Providers/FreeSql.Provider.OracleOledb/FreeSql.Provider.OracleOledb.csproj @@ -18,7 +18,7 @@ true key.snk false - 3.2.833 + 3.5.100-preview20240725 readme.md diff --git a/Providers/FreeSql.Provider.PostgreSQL/FreeSql.Provider.PostgreSQL.csproj b/Providers/FreeSql.Provider.PostgreSQL/FreeSql.Provider.PostgreSQL.csproj index fd95688f..9490dca6 100644 --- a/Providers/FreeSql.Provider.PostgreSQL/FreeSql.Provider.PostgreSQL.csproj +++ b/Providers/FreeSql.Provider.PostgreSQL/FreeSql.Provider.PostgreSQL.csproj @@ -18,7 +18,7 @@ true key.snk false - 3.2.833 + 3.5.100-preview20240725 readme.md diff --git a/Providers/FreeSql.Provider.QuestDb/FreeSql.Provider.QuestDb.csproj b/Providers/FreeSql.Provider.QuestDb/FreeSql.Provider.QuestDb.csproj index c3a68035..0e95157e 100644 --- a/Providers/FreeSql.Provider.QuestDb/FreeSql.Provider.QuestDb.csproj +++ b/Providers/FreeSql.Provider.QuestDb/FreeSql.Provider.QuestDb.csproj @@ -18,7 +18,7 @@ true key.snk false - 3.2.833 + 3.5.100-preview20240725 readme.md diff --git a/Providers/FreeSql.Provider.ShenTong/FreeSql.Provider.ShenTong.csproj b/Providers/FreeSql.Provider.ShenTong/FreeSql.Provider.ShenTong.csproj index 9177434b..3c4b745a 100644 --- a/Providers/FreeSql.Provider.ShenTong/FreeSql.Provider.ShenTong.csproj +++ b/Providers/FreeSql.Provider.ShenTong/FreeSql.Provider.ShenTong.csproj @@ -15,7 +15,7 @@ $(AssemblyName) true true - 3.2.833 + 3.5.100-preview20240725 readme.md diff --git a/Providers/FreeSql.Provider.SqlServer/FreeSql.Provider.SqlServer.csproj b/Providers/FreeSql.Provider.SqlServer/FreeSql.Provider.SqlServer.csproj index 4b040f36..c4bf1c28 100644 --- a/Providers/FreeSql.Provider.SqlServer/FreeSql.Provider.SqlServer.csproj +++ b/Providers/FreeSql.Provider.SqlServer/FreeSql.Provider.SqlServer.csproj @@ -18,7 +18,7 @@ true false key.snk - 3.2.833 + 3.5.100-preview20240725 readme.md diff --git a/Providers/FreeSql.Provider.SqlServerForSystem/FreeSql.Provider.SqlServerForSystem.csproj b/Providers/FreeSql.Provider.SqlServerForSystem/FreeSql.Provider.SqlServerForSystem.csproj index 97009570..561e8691 100644 --- a/Providers/FreeSql.Provider.SqlServerForSystem/FreeSql.Provider.SqlServerForSystem.csproj +++ b/Providers/FreeSql.Provider.SqlServerForSystem/FreeSql.Provider.SqlServerForSystem.csproj @@ -18,7 +18,7 @@ true key.snk false - 3.2.833 + 3.5.100-preview20240725 readme.md diff --git a/Providers/FreeSql.Provider.Sqlite/FreeSql.Provider.Sqlite.csproj b/Providers/FreeSql.Provider.Sqlite/FreeSql.Provider.Sqlite.csproj index 5819c1be..b558021f 100644 --- a/Providers/FreeSql.Provider.Sqlite/FreeSql.Provider.Sqlite.csproj +++ b/Providers/FreeSql.Provider.Sqlite/FreeSql.Provider.Sqlite.csproj @@ -18,7 +18,7 @@ true key.snk false - 3.2.833 + 3.5.100-preview20240725 readme.md diff --git a/Providers/FreeSql.Provider.SqliteCore/FreeSql.Provider.SqliteCore.csproj b/Providers/FreeSql.Provider.SqliteCore/FreeSql.Provider.SqliteCore.csproj index c0f3ad75..5dce117c 100644 --- a/Providers/FreeSql.Provider.SqliteCore/FreeSql.Provider.SqliteCore.csproj +++ b/Providers/FreeSql.Provider.SqliteCore/FreeSql.Provider.SqliteCore.csproj @@ -18,7 +18,7 @@ true key.snk false - 3.2.833 + 3.5.100-preview20240725 readme.md diff --git a/Providers/FreeSql.Provider.Xugu/FreeSql.Provider.Xugu.csproj b/Providers/FreeSql.Provider.Xugu/FreeSql.Provider.Xugu.csproj index ad8def78..becdc520 100644 --- a/Providers/FreeSql.Provider.Xugu/FreeSql.Provider.Xugu.csproj +++ b/Providers/FreeSql.Provider.Xugu/FreeSql.Provider.Xugu.csproj @@ -15,7 +15,7 @@ $(AssemblyName) true true - 3.2.833 + 3.5.100-preview20240725 readme.md