v3.5.100-preview20240725 #1830 #1861 #1208

This commit is contained in:
2881099 2024-07-25 01:32:05 +08:00
parent 86669a2d7f
commit d8965d5749
49 changed files with 223 additions and 174 deletions

View File

@ -11,7 +11,7 @@
<!--
经常出于版本交叉问题,暂时关闭,在每个项目上设置版本号
<PropertyGroup>
<Version>3.2.833</Version>
<Version>3.5.100-preview20240725</Version>
</PropertyGroup>
-->

View File

@ -198,7 +198,7 @@ namespace base_entity
public class SongRepository : BaseRepository<TUserImg, int>
{
public SongRepository(IFreeSql fsql) : base(fsql, null, null)
public SongRepository(IFreeSql fsql) : base(fsql)
{
//fsql.CodeFirst.Entity<TUserImg>(a =>
// {
@ -706,7 +706,6 @@ namespace base_entity
var testRepo = fsql2.GetRepository<object>();
testRepo.AsType(table.Type);
testRepo.Insert(area1);
testRepo.SaveMany(area1, "children");

View File

@ -59,12 +59,7 @@ namespace repository_01
services.AddControllersWithViews();
services.AddSingleton<IFreeSql>(Fsql);
services.AddFreeRepository(filter =>
{
filter
//.Apply<Song>("test", a => a.Title == DateTime.Now.ToString() + System.Threading.Thread.CurrentThread.ManagedThreadId)
.Apply<ISoftDelete>("softdelete", a => a.IsDeleted == false);
}, this.GetType().Assembly);
services.AddFreeRepository(this.GetType().Assembly);
}
public void Configure(IApplicationBuilder app)

View File

@ -18,7 +18,7 @@
<SignAssembly>true</SignAssembly>
<AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile>
<DelaySign>false</DelaySign>
<Version>3.2.833</Version>
<Version>3.5.100-preview20240725</Version>
<PackageReadmeFile>readme.md</PackageReadmeFile>
</PropertyGroup>

View File

@ -19,7 +19,7 @@
<AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile>
<DelaySign>false</DelaySign>
<LangVersion>latest</LangVersion>
<Version>3.2.833</Version>
<Version>3.5.100-preview20240725</Version>
<PackageReadmeFile>readme.md</PackageReadmeFile>
</PropertyGroup>

View File

@ -18,7 +18,7 @@
<SignAssembly>true</SignAssembly>
<AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile>
<DelaySign>false</DelaySign>
<Version>3.2.833</Version>
<Version>3.5.100-preview20240725</Version>
<PackageReadmeFile>readme.md</PackageReadmeFile>
</PropertyGroup>

View File

@ -15,7 +15,7 @@
<Title>$(AssemblyName)</Title>
<IsPackable>true</IsPackable>
<GenerateAssemblyInfo>true</GenerateAssemblyInfo>
<Version>3.2.833</Version>
<Version>3.5.100-preview20240725</Version>
<PackageReadmeFile>readme.md</PackageReadmeFile>
</PropertyGroup>

View File

@ -18,7 +18,7 @@
<SignAssembly>true</SignAssembly>
<AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile>
<DelaySign>false</DelaySign>
<Version>3.2.833</Version>
<Version>3.5.100-preview20240725</Version>
<PackageReadmeFile>readme.md</PackageReadmeFile>
</PropertyGroup>

View File

@ -18,7 +18,7 @@
<SignAssembly>true</SignAssembly>
<AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile>
<DelaySign>false</DelaySign>
<Version>3.2.833</Version>
<Version>3.5.100-preview20240725</Version>
<PackageReadmeFile>readme.md</PackageReadmeFile>
</PropertyGroup>

View File

@ -13,7 +13,7 @@
<PackageProjectUrl>https://github.com/2881099/FreeSql</PackageProjectUrl>
<RepositoryUrl>https://github.com/2881099/FreeSql</RepositoryUrl>
<PackageTags>FreeSql DbFirst 实体生成器</PackageTags>
<Version>3.2.833</Version>
<Version>3.5.100-preview20240725</Version>
<PackageReadmeFile>readme.md</PackageReadmeFile>
</PropertyGroup>

View File

@ -17,7 +17,7 @@
<SignAssembly>true</SignAssembly>
<AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile>
<DelaySign>false</DelaySign>
<Version>3.2.833</Version>
<Version>3.5.100-preview20240725</Version>
<PackageReadmeFile>readme.md</PackageReadmeFile>
</PropertyGroup>

View File

@ -17,7 +17,7 @@
<SignAssembly>true</SignAssembly>
<AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile>
<DelaySign>false</DelaySign>
<Version>3.2.833</Version>
<Version>3.5.100-preview20240725</Version>
<PackageReadmeFile>readme.md</PackageReadmeFile>
</PropertyGroup>

View File

@ -12,6 +12,7 @@ namespace FreeSql
/// <typeparam name="TEntity"></typeparam>
/// <returns></returns>
IBaseRepository<TEntity> GetRepository<TEntity>() where TEntity : class;
IBaseRepository<TEntity, TKey> GetRepository<TEntity, TKey>() where TEntity : class;
}
class RepositoryUnitOfWork : UnitOfWork, IRepositoryUnitOfWork

View File

@ -22,8 +22,8 @@ partial class FreeSqlDbContextExtensions
/// </summary>
/// <param name="that"></param>
/// <returns></returns>
public static IUnitOfWork CreateUnitOfWork(this IFreeSql that)
public static IRepositoryUnitOfWork CreateUnitOfWork(this IFreeSql that)
{
return new UnitOfWork(that);
return new RepositoryUnitOfWork(that);
}
}

View File

@ -17,7 +17,7 @@
<SignAssembly>true</SignAssembly>
<AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile>
<DelaySign>false</DelaySign>
<Version>3.2.833</Version>
<Version>3.5.100-preview20240725</Version>
<PackageReadmeFile>readme.md</PackageReadmeFile>
</PropertyGroup>

View File

@ -421,7 +421,7 @@ namespace FreeSql.Tests
var item3 = new AddUpdateInfo();
g.mysql.Insert(item3).ExecuteAffrows();
var repos = g.mysql.GetGuidRepository<AddUpdateInfo>();
var repos = g.mysql.GetRepository<AddUpdateInfo, Guid>();
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<AddUpdateInfo>();
var repos = g.sqlite.GetRepository<AddUpdateInfo, Guid>();
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<AddUpdateInfo>();
var repos = g.sqlite.GetRepository<AddUpdateInfo, Guid>();
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<AddUpdateInfo>();
var repos = g.sqlite.GetRepository<AddUpdateInfo, Guid>();
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<AddUpdateInfo>();
var repos = g.sqlite.GetRepository<AddUpdateInfo, Guid>();
var item = new AddUpdateInfo { Id = g.sqlite.Select<AddUpdateInfo>().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<Cagetory>();
repo.DbContextOptions.EnableCascadeSave = false; //关闭级联保存功能
var cts = new[] {
new Cagetory
{
Name = "分类1",
Goodss = new List<Goods>(new[]
{
new Goods { Name = "商品1" },
new Goods { Name = "商品2" },
new Goods { Name = "商品3" }
})
},
new Cagetory
{
Name = "分类2",
Goodss = new List<Goods>(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();

View File

@ -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);
//}
}
}

View File

@ -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<DEPARTMENTS>(
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<DEPARTMENTS>(
new[] {
new DEPARTMENTS { deptid = 2, deptcode = "02", deptname = "" },
});
user.SaveMany("depts");
g.sqlite.CodeFirst.SyncStructure<Song_tag>();
g.sqlite.CodeFirst.SyncStructure<Tag>();

View File

@ -533,7 +533,7 @@ WHERE ROWNUM < 11";
g.mysql.SetDbContextOptions(opt => opt.EnableCascadeSave = true);
var trepo = g.mysql.GetGuidRepository<TaskBuild>();
var trepo = g.mysql.GetRepository<TaskBuild, Guid>();
trepo.Insert(new TaskBuild
{
TaskName = "tt11",

View File

@ -533,7 +533,7 @@ WHERE ROWNUM < 11";
g.mysql.SetDbContextOptions(opt => opt.EnableCascadeSave = true);
var trepo = g.mysql.GetGuidRepository<TaskBuild>();
var trepo = g.mysql.GetRepository<TaskBuild, Guid>();
trepo.Insert(new TaskBuild
{
TaskName = "tt11",

View File

@ -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<Topic>(null, oldname => $"{oldname}_{tenantId}");
var reposType = g.sqlite.GetGuidRepository<TestTypeInfo>(null, oldname => $"{oldname}_{tenantId}");
var reposTopic = g.sqlite.GetRepository<Topic, Guid>();
var reposType = g.sqlite.GetRepository<TestTypeInfo, Guid>();
reposTopic.AsTable(oldname => $"{oldname}_{tenantId}");
reposType.AsTable(oldname => $"{oldname}_{tenantId}");
//reposTopic.Delete(Guid.Empty);
//reposTopic.Find(Guid.Empty);

View File

@ -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<ts_iupstr_bak>();
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<ts_iupstr>().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<Topic>();
var commentRepository = g.sqlite.GetGuidRepository<Comment>();
//秀一波 FreeSql.Repository 扩展包dotnet add package FreeSql.Repository
var topicRepository = g.sqlite.GetRepository<Topic, Guid>();
var commentRepository = g.sqlite.GetRepository<Comment, Guid>();
//添加测试文章
//添加测试文章
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 = $"昵称{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<TableAllType>();
Assert.True(string.IsNullOrEmpty(sql)); //测试运行两次后
Assert.True(string.IsNullOrEmpty(sql)); //测试运行两次后
//sql = g.Sqlite.CodeFirst.GetComparisonDDLStatements<Tb_alltype>();
}
@ -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),

View File

@ -40,7 +40,7 @@ namespace FreeSql.Tests.Issues
new Material{Code="TEST2",Units=new List<Unit>{new Unit{Code = "KG"}}}
};
var repo1 = freeSql.GetGuidRepository<Material>();
var repo1 = freeSql.GetRepository<Material, Guid>();
repo1.DbContextOptions.EnableCascadeSave = true;
repo1.Insert(materials);
@ -56,7 +56,7 @@ namespace FreeSql.Tests.Issues
}
};
var repo2 = freeSql.GetGuidRepository<Order>();
var repo2 = freeSql.GetRepository<Order, Guid>();
repo2.DbContextOptions.EnableCascadeSave = true;
repo2.Insert(order);
@ -138,7 +138,7 @@ namespace FreeSql.Tests.Issues
new Material{Code="TEST2",Units=new List<Unit>{new Unit{Code = "KG"}}}
};
var repo1 = freeSql.GetGuidRepository<Material>();
var repo1 = freeSql.GetRepository<Material, Guid>();
repo1.DbContextOptions.EnableCascadeSave = true;
repo1.Insert(materials);
@ -154,7 +154,7 @@ namespace FreeSql.Tests.Issues
}
};
var repo2 = freeSql.GetGuidRepository<Order>();
var repo2 = freeSql.GetRepository<Order, Guid>();
repo2.DbContextOptions.EnableCascadeSave = true;
repo2.Insert(order);

View File

@ -169,8 +169,8 @@ namespace FreeSql.Tests.MsAccess
{
//秀一波 FreeSql.Repository 扩展包dotnet add package FreeSql.Repository
var topicRepository = g.msaccess.GetGuidRepository<Topic>();
var commentRepository = g.msaccess.GetGuidRepository<Comment>();
var topicRepository = g.msaccess.GetRepository<Topic, Guid>();
var commentRepository = g.msaccess.GetRepository<Comment, Guid>();
//添加测试文章
var topic = topicRepository.Insert(new Topic

View File

@ -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<Topic>(null, oldname => $"{oldname}_{tenantId}");
var reposType = g.sqlite.GetGuidRepository<TestTypeInfo>(null, oldname => $"{oldname}_{tenantId}");
var reposTopic = g.sqlite.GetRepository<Topic, Guid>();
var reposType = g.sqlite.GetRepository<TestTypeInfo, Guid>();
reposTopic.AsTable(oldname => $"{oldname}_{tenantId}");
reposType.AsTable(oldname => $"{oldname}_{tenantId}");
//reposTopic.Delete(Guid.Empty);
//reposTopic.Find(Guid.Empty);

View File

@ -238,8 +238,8 @@ namespace FreeSql.Tests.Sqlite
{
//秀一波 FreeSql.Repository 扩展包dotnet add package FreeSql.Repository
var topicRepository = g.sqlite.GetGuidRepository<Topic>();
var commentRepository = g.sqlite.GetGuidRepository<Comment>();
var topicRepository = g.sqlite.GetRepository<Topic, Guid>();
var commentRepository = g.sqlite.GetRepository<Comment, Guid>();
//添加测试文章
var topic = topicRepository.Insert(new Topic

View File

@ -82,7 +82,7 @@ namespace FreeSql.Tests
public string Title { get; set; }
public override Task Persistent(IRepositoryUnitOfWork uof)
{
uof.GetGuidRepository<TestEntity>().Insert(this);
uof.GetRepository<TestEntity, Guid>().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<TaskBuild>();
var trepo = g.sqlite.GetRepository<TaskBuild, Guid>();
trepo.Insert(new TaskBuild
{
TaskName = "tt11",

View File

@ -17,7 +17,7 @@
<SignAssembly>true</SignAssembly>
<AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile>
<DelaySign>false</DelaySign>
<Version>3.2.833</Version>
<Version>3.5.100-preview20240725</Version>
<PackageReadmeFile>readme.md</PackageReadmeFile>
</PropertyGroup>

View File

@ -1104,6 +1104,93 @@
</summary>
<returns></returns>
</member>
<member name="T:FreeSql.Extensions.DynamicEntity.DynamicCompileBuilder">
<summary>
动态创建实体类型
</summary>
</member>
<member name="M:FreeSql.Extensions.DynamicEntity.DynamicCompileBuilder.#ctor(IFreeSql,System.String,System.Attribute[])">
<summary>
配置Class
</summary>
<param name="className">类名</param>
<param name="attributes">类标记的特性[Table(Name = "xxx")] [Index(xxxx)]</param>
<returns></returns>
</member>
<member name="P:FreeSql.Extensions.DynamicEntity.DynamicCompileBuilder.TypeBuilder">
<summary>
获取类型构建器可作为要构建的Type来引用
</summary>
</member>
<member name="M:FreeSql.Extensions.DynamicEntity.DynamicCompileBuilder.Property(System.String,System.Type,System.Attribute[])">
<summary>
配置属性
</summary>
<param name="propertyName">属性名称</param>
<param name="propertyType">属性类型</param>
<param name="attributes">属性标记的特性-支持多个</param>
<returns></returns>
</member>
<member name="M:FreeSql.Extensions.DynamicEntity.DynamicCompileBuilder.Property(System.String,System.Type,System.Boolean,System.Attribute[])">
<summary>
配置属性
</summary>
<param name="propertyName">属性名称</param>
<param name="propertyType">属性类型</param>
<param name="isOverride">该属性是否重写父类属性</param>
<param name="attributes">属性标记的特性-支持多个</param>
<returns></returns>
</member>
<member name="M:FreeSql.Extensions.DynamicEntity.DynamicCompileBuilder.Property(System.String,System.Type,System.Boolean,System.Object,System.Attribute[])">
<summary>
配置属性
</summary>
<param name="propertyName">属性名称</param>
<param name="propertyType">属性类型</param>
<param name="isOverride">该属性是否重写父类属性</param>
<param name="defaultValue">属性默认值</param>
<param name="attributes">属性标记的特性-支持多个</param>
<returns></returns>
</member>
<member name="M:FreeSql.Extensions.DynamicEntity.DynamicCompileBuilder.Extend(System.Type)">
<summary>
配置父类
</summary>
<param name="superClass">父类类型</param>
<returns></returns>
</member>
<member name="M:FreeSql.Extensions.DynamicEntity.DynamicCompileBuilder.OverrideProperty(System.Reflection.Emit.TypeBuilder@,System.Reflection.Emit.MethodBuilder,FreeSql.Extensions.DynamicEntity.DynamicCompileBuilder.PropertyMethodEnum,System.String)">
<summary>
Override属性
</summary>
<param name="typeBuilder"></param>
</member>
<member name="M:FreeSql.Extensions.DynamicEntity.DynamicCompileBuilder.Build">
<summary>
Emit动态创建出Class - Type
</summary>
<returns></returns>
</member>
<member name="M:FreeSql.Extensions.DynamicEntity.DynamicCompileBuilder.BuildJustType">
<summary>
Emit动态创建出Class - Type不附带获取TableInfo
</summary>
<returns></returns>
</member>
<member name="M:FreeSql.Extensions.DynamicEntity.DynamicCompileBuilder.FirstCharToLower(System.String)">
<summary>
首字母小写
</summary>
<param name="input"></param>
<returns></returns>
</member>
<member name="M:FreeSql.Extensions.DynamicEntity.DynamicCompileBuilder.FirstCharToUpper(System.String)">
<summary>
首字母大写
</summary>
<param name="input"></param>
<returns></returns>
</member>
<member name="M:FreeSql.Extensions.EntityUtil.EntityUtilExtensions.GetEntityKeyString(IFreeSql,System.Type,System.Object,System.Boolean,System.String)">
<summary>
获取实体的主键值,以 "*|_,[,_|*" 分割,当任意一个主键属性无值时,返回 ""
@ -5826,6 +5913,28 @@
请使用 fsql.InsertDict(dict) 方法插入字典数据
</summary>
</member>
<member name="M:FreeSqlGlobalDynamicEntityExtensions.DynamicEntity(FreeSql.ICodeFirst,System.String,System.Attribute[])">
<summary>
动态构建Class Type
</summary>
<returns></returns>
</member>
<member name="M:FreeSqlGlobalDynamicEntityExtensions.CreateInstance(FreeSql.Internal.Model.TableInfo,System.Collections.Generic.Dictionary{System.String,System.Object})">
<summary>
根据字典,创建 table 对应的实体对象
</summary>
<param name="table"></param>
<param name="dict"></param>
<returns></returns>
</member>
<member name="M:FreeSqlGlobalDynamicEntityExtensions.CreateDictionary(FreeSql.Internal.Model.TableInfo,System.Object)">
<summary>
根据实体对象,创建 table 对应的字典
</summary>
<param name="table"></param>
<param name="instance"></param>
<returns></returns>
</member>
<member name="M:FreeSqlGlobalExpressionCallExtensions.Between(System.DateTime,System.DateTime,System.DateTime)">
<summary>
C# that >= between &amp;&amp; that &lt;= and<para></para>

View File

@ -19,7 +19,7 @@
<SignAssembly>False</SignAssembly>
<AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile>
<DelaySign>false</DelaySign>
<Version>3.2.833</Version>
<Version>3.5.100-preview20240725</Version>
<PackageReadmeFile>readme.md</PackageReadmeFile>
</PropertyGroup>

View File

@ -18,7 +18,7 @@
<SignAssembly>true</SignAssembly>
<AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile>
<DelaySign>false</DelaySign>
<Version>3.2.833</Version>
<Version>3.5.100-preview20240725</Version>
<PackageReadmeFile>readme.md</PackageReadmeFile>
</PropertyGroup>

View File

@ -15,7 +15,7 @@
<Title>$(AssemblyName)</Title>
<IsPackable>true</IsPackable>
<GenerateAssemblyInfo>true</GenerateAssemblyInfo>
<Version>3.2.833</Version>
<Version>3.5.100-preview20240725</Version>
<PackageReadmeFile>readme.md</PackageReadmeFile>
</PropertyGroup>

View File

@ -18,7 +18,7 @@
<SignAssembly>true</SignAssembly>
<AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile>
<DelaySign>false</DelaySign>
<Version>3.2.833</Version>
<Version>3.5.100-preview20240725</Version>
<PackageReadmeFile>readme.md</PackageReadmeFile>
</PropertyGroup>

View File

@ -18,7 +18,7 @@
<SignAssembly>true</SignAssembly>
<AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile>
<DelaySign>false</DelaySign>
<Version>3.2.833</Version>
<Version>3.5.100-preview20240725</Version>
<PackageReadmeFile>readme.md</PackageReadmeFile>
</PropertyGroup>

View File

@ -15,7 +15,7 @@
<Title>$(AssemblyName)</Title>
<IsPackable>true</IsPackable>
<GenerateAssemblyInfo>true</GenerateAssemblyInfo>
<Version>3.2.833</Version>
<Version>3.5.100-preview20240725</Version>
<PackageReadmeFile>readme.md</PackageReadmeFile>
</PropertyGroup>

View File

@ -18,7 +18,7 @@
<SignAssembly>true</SignAssembly>
<AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile>
<DelaySign>false</DelaySign>
<Version>3.2.833</Version>
<Version>3.5.100-preview20240725</Version>
<PackageReadmeFile>readme.md</PackageReadmeFile>
</PropertyGroup>

View File

@ -18,7 +18,7 @@
<SignAssembly>true</SignAssembly>
<AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile>
<DelaySign>false</DelaySign>
<Version>3.2.833</Version>
<Version>3.5.100-preview20240725</Version>
<PackageReadmeFile>readme.md</PackageReadmeFile>
</PropertyGroup>

View File

@ -18,7 +18,7 @@
<SignAssembly>true</SignAssembly>
<AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile>
<DelaySign>false</DelaySign>
<Version>3.2.833</Version>
<Version>3.5.100-preview20240725</Version>
<PackageReadmeFile>readme.md</PackageReadmeFile>
</PropertyGroup>

View File

@ -18,7 +18,7 @@
<SignAssembly>true</SignAssembly>
<AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile>
<DelaySign>false</DelaySign>
<Version>3.2.833</Version>
<Version>3.5.100-preview20240725</Version>
<PackageReadmeFile>readme.md</PackageReadmeFile>
</PropertyGroup>

View File

@ -18,7 +18,7 @@
<SignAssembly>true</SignAssembly>
<AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile>
<DelaySign>false</DelaySign>
<Version>3.2.833</Version>
<Version>3.5.100-preview20240725</Version>
<PackageReadmeFile>readme.md</PackageReadmeFile>
</PropertyGroup>

View File

@ -18,7 +18,7 @@
<SignAssembly>true</SignAssembly>
<AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile>
<DelaySign>false</DelaySign>
<Version>3.2.833</Version>
<Version>3.5.100-preview20240725</Version>
<PackageReadmeFile>readme.md</PackageReadmeFile>
</PropertyGroup>

View File

@ -18,7 +18,7 @@
<SignAssembly>true</SignAssembly>
<AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile>
<DelaySign>false</DelaySign>
<Version>3.2.833</Version>
<Version>3.5.100-preview20240725</Version>
<PackageReadmeFile>readme.md</PackageReadmeFile>
</PropertyGroup>

View File

@ -18,7 +18,7 @@
<SignAssembly>true</SignAssembly>
<AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile>
<DelaySign>false</DelaySign>
<Version>3.2.833</Version>
<Version>3.5.100-preview20240725</Version>
<PackageReadmeFile>readme.md</PackageReadmeFile>
</PropertyGroup>

View File

@ -15,7 +15,7 @@
<Title>$(AssemblyName)</Title>
<IsPackable>true</IsPackable>
<GenerateAssemblyInfo>true</GenerateAssemblyInfo>
<Version>3.2.833</Version>
<Version>3.5.100-preview20240725</Version>
<PackageReadmeFile>readme.md</PackageReadmeFile>
</PropertyGroup>

View File

@ -18,7 +18,7 @@
<SignAssembly>true</SignAssembly>
<DelaySign>false</DelaySign>
<AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile>
<Version>3.2.833</Version>
<Version>3.5.100-preview20240725</Version>
<PackageReadmeFile>readme.md</PackageReadmeFile>
</PropertyGroup>

View File

@ -18,7 +18,7 @@
<SignAssembly>true</SignAssembly>
<AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile>
<DelaySign>false</DelaySign>
<Version>3.2.833</Version>
<Version>3.5.100-preview20240725</Version>
<PackageReadmeFile>readme.md</PackageReadmeFile>
</PropertyGroup>

View File

@ -18,7 +18,7 @@
<SignAssembly>true</SignAssembly>
<AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile>
<DelaySign>false</DelaySign>
<Version>3.2.833</Version>
<Version>3.5.100-preview20240725</Version>
<PackageReadmeFile>readme.md</PackageReadmeFile>
</PropertyGroup>

View File

@ -18,7 +18,7 @@
<SignAssembly>true</SignAssembly>
<AssemblyOriginatorKeyFile>key.snk</AssemblyOriginatorKeyFile>
<DelaySign>false</DelaySign>
<Version>3.2.833</Version>
<Version>3.5.100-preview20240725</Version>
<PackageReadmeFile>readme.md</PackageReadmeFile>
</PropertyGroup>

View File

@ -15,7 +15,7 @@
<Title>$(AssemblyName)</Title>
<IsPackable>true</IsPackable>
<GenerateAssemblyInfo>true</GenerateAssemblyInfo>
<Version>3.2.833</Version>
<Version>3.5.100-preview20240725</Version>
<PackageReadmeFile>readme.md</PackageReadmeFile>
</PropertyGroup>