mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-04-22 18:52:50 +08:00
update readme
This commit is contained in:
parent
31a67a990d
commit
ae56952621
@ -1,8 +1,12 @@
|
|||||||
using FreeSql;
|
using FreeSql;
|
||||||
using FreeSql.DataAnnotations;
|
using FreeSql.DataAnnotations;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
using System.ComponentModel;
|
using System.ComponentModel;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Reflection;
|
||||||
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace aspnetcore_transaction.Controllers
|
namespace aspnetcore_transaction.Controllers
|
||||||
@ -102,4 +106,53 @@ namespace aspnetcore_transaction.Controllers
|
|||||||
public int SongId { get; set; }
|
public int SongId { get; set; }
|
||||||
public string Title { get; set; }
|
public string Title { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static class IdleBusExtesions
|
||||||
|
{
|
||||||
|
static AsyncLocal<string> AsyncLocalTenantId = new AsyncLocal<string>();
|
||||||
|
public static IdleBus<IFreeSql> ChangeTenant(this IdleBus<IFreeSql> ib, string tenantId)
|
||||||
|
{
|
||||||
|
AsyncLocalTenantId.Value = tenantId;
|
||||||
|
return ib;
|
||||||
|
}
|
||||||
|
public static IFreeSql Get(this IdleBus<IFreeSql> ib) => ib.Get(AsyncLocalTenantId.Value ?? "default");
|
||||||
|
public static IBaseRepository<T> GetRepository<T>(this IdleBus<IFreeSql> ib) where T : class => ib.Get().GetRepository<T>();
|
||||||
|
|
||||||
|
static void test()
|
||||||
|
{
|
||||||
|
IdleBus<IFreeSql> ib = null; //单例注入
|
||||||
|
|
||||||
|
var fsql = ib.Get(); //获取当前租户对应的 IFreeSql
|
||||||
|
|
||||||
|
var fsql00102 = ib.ChangeTenant("00102").Get(); //切换租户,后面的操作都是针对 00102
|
||||||
|
|
||||||
|
var songRepository = ib.GetRepository<Song>();
|
||||||
|
var detailRepository = ib.GetRepository<Detail>();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static IServiceCollection AddRepository(this IServiceCollection services, params Assembly[] assemblies)
|
||||||
|
{
|
||||||
|
services.AddScoped(typeof(IBaseRepository<>), typeof(YourDefaultRepository<>));
|
||||||
|
services.AddScoped(typeof(BaseRepository<>), typeof(YourDefaultRepository<>));
|
||||||
|
|
||||||
|
services.AddScoped(typeof(IBaseRepository<,>), typeof(YourDefaultRepository<,>));
|
||||||
|
services.AddScoped(typeof(BaseRepository<,>), typeof(YourDefaultRepository<,>));
|
||||||
|
|
||||||
|
if (assemblies?.Any() == true)
|
||||||
|
foreach (var asse in assemblies)
|
||||||
|
foreach (var repo in asse.GetTypes().Where(a => a.IsAbstract == false && typeof(IBaseRepository).IsAssignableFrom(a)))
|
||||||
|
services.AddScoped(repo);
|
||||||
|
|
||||||
|
return services;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class YourDefaultRepository<T> : BaseRepository<T> where T : class
|
||||||
|
{
|
||||||
|
public YourDefaultRepository(IdleBus<IFreeSql> ib) : base(ib.Get(), null, null) { }
|
||||||
|
}
|
||||||
|
class YourDefaultRepository<T, TKey> : BaseRepository<T, TKey> where T : class
|
||||||
|
{
|
||||||
|
public YourDefaultRepository(IdleBus<IFreeSql> ib) : base(ib.Get(), null, null) { }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="System.Text.Encoding.CodePages" Version="4.7.0" />
|
<PackageReference Include="System.Text.Encoding.CodePages" Version="4.7.0" />
|
||||||
<PackageReference Include="FreeSql.DynamicProxy" Version="1.4.0" />
|
<PackageReference Include="FreeSql.DynamicProxy" Version="1.4.0" />
|
||||||
<PackageReference Include="IdleBus" Version="1.3.3" />
|
<PackageReference Include="IdleBus" Version="1.5.0" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Dapper" Version="2.0.35" />
|
<PackageReference Include="Dapper" Version="2.0.35" />
|
||||||
<PackageReference Include="IdleBus" Version="1.3.0" />
|
<PackageReference Include="IdleBus" Version="1.5.0" />
|
||||||
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="3.1.3" />
|
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="3.1.3" />
|
||||||
<PackageReference Include="Microsoft.Data.SqlClient" Version="2.0.0" />
|
<PackageReference Include="Microsoft.Data.SqlClient" Version="2.0.0" />
|
||||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.4.0" />
|
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.4.0" />
|
||||||
|
@ -187,7 +187,7 @@ QQ群:4336577(已满)、8578575(在线)
|
|||||||
|
|
||||||
## 💕 Donation
|
## 💕 Donation
|
||||||
|
|
||||||
L*y 58元、花花 88元、麦兜很乖 50元、网络来者 2000元、John 99.99元、alex 666元、bacongao 36元、无名 100元、Eternity 188元、无名 10元、⌒.Helper~..oO 66元、习惯与被习惯 100元、无名 100元、蔡易喋 88.88元、中讯科技 1000元、Good Good Work 24元、炽焰 6.6元、Nothing 100元、兰州天擎赵 500元
|
L*y 58元、花花 88元、麦兜很乖 50元、网络来者 2000元、John 99.99元、alex 666元、bacongao 36元、无名 100元、Eternity 188元、无名 10元、⌒.Helper~..oO 66元、习惯与被习惯 100元、无名 100元、蔡易喋 88.88元、中讯科技 1000元、Good Good Work 24元、炽焰 6.6元、Nothing 100元、兰州天擎赵 500元、哈利路亚 300元
|
||||||
|
|
||||||
> Thank you for your donation
|
> Thank you for your donation
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user