## v0.3.27

- 增加 行级锁功能,适用修改实体;
- 增加 FreeSql.Repository 默认依赖注入的方式,同时保留原有 Autofac;
- 优化 FreeSql.Repository Insert 逻辑,参考了 FreeSql.DbContext;
- 优化 FreeSql.IUpdate 参照 IInsert 对大批量更新,拆分执行;
- 修复 FreeSql.IInsert ClearData 重复利用的 bug(使用 IgnoreColumns 进行大批量插入时会发生);
This commit is contained in:
28810
2019-03-29 21:28:43 +08:00
parent 578615ed3c
commit df8845e5b1
33 changed files with 831 additions and 421 deletions

View File

@ -1,27 +0,0 @@
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:64150/",
"sslPort": 0
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"repository_01": {
"commandName": "Project",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"applicationUrl": "http://localhost:64154/"
}
}
}

View File

@ -53,7 +53,7 @@ namespace repository_01 {
public IConfiguration Configuration { get; }
public static IFreeSql Fsql { get; private set; }
public IServiceProvider ConfigureServices(IServiceCollection services) {
public void ConfigureServices(IServiceCollection services) {
//services.AddTransient(s => s.)
@ -67,42 +67,28 @@ namespace repository_01 {
});
services.AddSingleton<IFreeSql>(Fsql);
//var baseType = typeof(IRepository);
//var freeTypes = baseType.Assembly.GetTypes().Where(t => baseType.IsAssignableFrom(t));
//foreach (var type in freeTypes) {
// if ((type.IsInterface || type.IsAbstract) && type.IsGenericType) {
// if (type.GenericTypeArguments.Length == 1)
// services.AddScoped(type, sp => {
// return Activator.CreateInstance(typeof(GuidRepository<>).MakeGenericType(type.GenericTypeArguments[0]), sp.GetService<IFreeSql>());
// });
// else
// services.AddScoped(type, sp => {
// return Activator.CreateInstance(typeof(DefaultRepository<,>).MakeGenericType(type.GenericTypeArguments[0], type.GenericTypeArguments[1]), sp.GetService<IFreeSql>());
// });
// continue;
// }
// services.AddScoped(type);
//}
//var types = GetType().Assembly.GetTypes().Where(t => baseType.IsAssignableFrom(t) && !t.IsAbstract);
//foreach (var type in types) {
// services.AddScoped(type);
//}
var builder = new ContainerBuilder();
builder.RegisterFreeRepository(filter => filter
.Apply<Song>("test", a => a.Title == DateTime.Now.ToString() + System.Threading.Thread.CurrentThread.ManagedThreadId)
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
);
builder.Populate(services);
var container = builder.Build();
return new AutofacServiceProvider(container);
//var builder = new ContainerBuilder();
//builder.RegisterFreeRepository(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
//);
//builder.Populate(services);
//var container = builder.Build();
//return new AutofacServiceProvider(container);
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) {