这是Entity Framework Core的一个轻量的扩展,提供批量更新和删除操作的支持。而且这个库出自中国一位MVP之手,虽然内容是英文,也很简单,相信你也能看懂。
This is a light-weight extension which provides bulk update and delete operations for Entity Framework Core.
Getting Started
① Add Pomelo.EntityFrameworkCore.Lolita
package into your project.json
. There are many different special versions for different EF database provider:
Pomelo.EntityFrameworkCore.Lolita.MySql
Pomelo.EntityFrameworkCore.Lolita.SqlServer
Pomelo.EntityFrameworkCore.Lolita.PostgreSQL
Pomelo.EntityFrameworkCore.Lolita.Sqlite
② Configure your DbContext
For ASP.NET Core developers, you can Use lolita extensions when adding the DbContext into services collection:
services.AddDbContext<Models.SampleContext>(x =>
{
x.UseMySql(
"server=localhost;database=lolita;uid=root;pwd=yourpwd;");
x.UseMySqlLolita();
});
For .NET Core developers, you can override the OnConfiguring of DbContext to use lolita:
protected override void OnConfiguring(
DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseMySql(
"server=localhost;database=lolita;uid=root;pwd=yourpwd;");
optionsBuilder.UseMySqlLolita();
base.OnConfiguring(optionsBuilder);
}
③ There are many different extended methods for updating a column or bulk deleting.
Updating:
db.Posts
.Where(x => x.Time <= DateTime.Now)
.SetField(x => x.IsPinned).WithValue(false)
.Update();
You can also use the following methods to update a field:
Method | SQL | Hint |
---|---|---|
WithValue | SET [x] = @value | |
Plus | SET [x] = [x] + @value | Numeric only |
Subtract | SET [x] = [x] - @value | Numeric only |
Multiply | SET [x] = [x] * @value | Numeric only |
Divide | SET [x] = [x] / @value | Numeric only |
Mod | SET [x] = [x] % @value | Numeric only |
Prepend | SET [x] = @value + [x] | String only |
Append | SET [x] = [x] + @value | String only |
AddMilliseconds | SET [x] = DATEADD(ms, @value, [x]) | DateTime only |
AddSeconds | SET [x] = DATEADD(ss, @value, [x]) | DateTime only |
AddMinutes | SET [x] = DATEADD(mi, @value, [x]) | DateTime only |
AddHours | SET [x] = DATEADD(hh, @value, [x]) | DateTime only |
AddDays | SET [x] = DATEADD(dd, @value, [x]) | DateTime only |
AddMonths | SET [x] = DATEADD(mm, @value, [x]) | DateTime only |
AddYears | SET [x] = DATEADD(yy, @value, [x]) | DateTime only |
Deleting:
db.Users
.Where(x => db.Posts.Count(y => y.UserId == x.Id) == 0)
.Where(x => x.Role == UserRole.Member)
.Delete();
Contribute
One of the easiest ways to contribute is to participate in discussions and discuss issues. You can also contribute by submitting pull requests with code changes.
License
相关文章:
原文地址:http://www.1234.sh/post/ef-core-lolita
.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注