mirror of
https://gitee.com/dotnetchina/Furion.git
synced 2025-12-06 15:59:25 +08:00
link #I1LT5R
This commit is contained in:
@@ -33,5 +33,28 @@ namespace Fur.Application
|
||||
{
|
||||
return await _testRepository.Entity.FindAsync(id);
|
||||
}
|
||||
|
||||
public async Task<int> InsertAsync(Test test)
|
||||
{
|
||||
var entity = await _testRepository.InsertSaveChangesAsync(test);
|
||||
return entity.Entity.Id;
|
||||
}
|
||||
|
||||
public async Task<Test> UpdateAsync(int id, string name, int age)
|
||||
{
|
||||
var entity = await _testRepository.Entity.FindAsync(id);
|
||||
entity.Name = name;
|
||||
entity.Age = age;
|
||||
|
||||
var trackEntity = await _testRepository.UpdateSaveChangesAsync(entity);
|
||||
return trackEntity.Entity;
|
||||
}
|
||||
|
||||
public async Task<Test> DeleteAsync(int id)
|
||||
{
|
||||
var entity = await _testRepository.Entity.FindAsync(id);
|
||||
var trackEntity = await _testRepository.DeleteSaveChangesAsync(entity);
|
||||
return trackEntity.Entity;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,6 +20,12 @@ namespace Fur.EntityFramework.Core.DbContexts
|
||||
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
||||
{
|
||||
base.OnModelCreating(modelBuilder);
|
||||
|
||||
modelBuilder.Entity<Test>(entity =>
|
||||
{
|
||||
entity.Property(u => u.CreatedTime).HasDefaultValueSql("getdate()");
|
||||
entity.Property(u => u.UpdatedTime).HasDefaultValueSql("getdate()");
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
55
aspnetcore/Fur.EntityFramework.Core/Migrations/20200701062556_v0.0.2.Designer.cs
generated
Normal file
55
aspnetcore/Fur.EntityFramework.Core/Migrations/20200701062556_v0.0.2.Designer.cs
generated
Normal file
@@ -0,0 +1,55 @@
|
||||
// <auto-generated />
|
||||
using System;
|
||||
using Fur.EntityFramework.Core.DbContexts;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.EntityFrameworkCore.Infrastructure;
|
||||
using Microsoft.EntityFrameworkCore.Metadata;
|
||||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
|
||||
|
||||
namespace Fur.EntityFramework.Core.Migrations
|
||||
{
|
||||
[DbContext(typeof(FurSqlServerDbContext))]
|
||||
[Migration("20200701062556_v0.0.2")]
|
||||
partial class v002
|
||||
{
|
||||
protected override void BuildTargetModel(ModelBuilder modelBuilder)
|
||||
{
|
||||
#pragma warning disable 612, 618
|
||||
modelBuilder
|
||||
.HasAnnotation("ProductVersion", "5.0.0-preview.6.20312.4")
|
||||
.HasAnnotation("Relational:MaxIdentifierLength", 128)
|
||||
.HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
|
||||
|
||||
modelBuilder.Entity("Fur.Record.Entities.Test", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("int")
|
||||
.HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
|
||||
|
||||
b.Property<int>("Age")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<DateTime>("CreatedTime")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("datetime2");
|
||||
|
||||
b.Property<bool>("IsDeleted")
|
||||
.HasColumnType("bit");
|
||||
|
||||
b.Property<string>("Name")
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.Property<DateTime>("UpdatedTime")
|
||||
.ValueGeneratedOnAddOrUpdate()
|
||||
.HasColumnType("datetime2");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.ToTable("Tests");
|
||||
});
|
||||
#pragma warning restore 612, 618
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
|
||||
namespace Fur.EntityFramework.Core.Migrations
|
||||
{
|
||||
public partial class v002 : Migration
|
||||
{
|
||||
protected override void Up(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
protected override void Down(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
55
aspnetcore/Fur.EntityFramework.Core/Migrations/20200701062749_v0.0.3.Designer.cs
generated
Normal file
55
aspnetcore/Fur.EntityFramework.Core/Migrations/20200701062749_v0.0.3.Designer.cs
generated
Normal file
@@ -0,0 +1,55 @@
|
||||
// <auto-generated />
|
||||
using System;
|
||||
using Fur.EntityFramework.Core.DbContexts;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.EntityFrameworkCore.Infrastructure;
|
||||
using Microsoft.EntityFrameworkCore.Metadata;
|
||||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
|
||||
|
||||
namespace Fur.EntityFramework.Core.Migrations
|
||||
{
|
||||
[DbContext(typeof(FurSqlServerDbContext))]
|
||||
[Migration("20200701062749_v0.0.3")]
|
||||
partial class v003
|
||||
{
|
||||
protected override void BuildTargetModel(ModelBuilder modelBuilder)
|
||||
{
|
||||
#pragma warning disable 612, 618
|
||||
modelBuilder
|
||||
.HasAnnotation("ProductVersion", "5.0.0-preview.6.20312.4")
|
||||
.HasAnnotation("Relational:MaxIdentifierLength", 128)
|
||||
.HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
|
||||
|
||||
modelBuilder.Entity("Fur.Record.Entities.Test", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("int")
|
||||
.HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
|
||||
|
||||
b.Property<int>("Age")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<DateTime>("CreatedTime")
|
||||
.ValueGeneratedOnAddOrUpdate()
|
||||
.HasColumnType("datetime2");
|
||||
|
||||
b.Property<bool>("IsDeleted")
|
||||
.HasColumnType("bit");
|
||||
|
||||
b.Property<string>("Name")
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.Property<DateTime>("UpdatedTime")
|
||||
.ValueGeneratedOnAddOrUpdate()
|
||||
.HasColumnType("datetime2");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.ToTable("Tests");
|
||||
});
|
||||
#pragma warning restore 612, 618
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
|
||||
namespace Fur.EntityFramework.Core.Migrations
|
||||
{
|
||||
public partial class v003 : Migration
|
||||
{
|
||||
protected override void Up(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
protected override void Down(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
57
aspnetcore/Fur.EntityFramework.Core/Migrations/20200701064031_v0.0.4.Designer.cs
generated
Normal file
57
aspnetcore/Fur.EntityFramework.Core/Migrations/20200701064031_v0.0.4.Designer.cs
generated
Normal file
@@ -0,0 +1,57 @@
|
||||
// <auto-generated />
|
||||
using System;
|
||||
using Fur.EntityFramework.Core.DbContexts;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.EntityFrameworkCore.Infrastructure;
|
||||
using Microsoft.EntityFrameworkCore.Metadata;
|
||||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
|
||||
|
||||
namespace Fur.EntityFramework.Core.Migrations
|
||||
{
|
||||
[DbContext(typeof(FurSqlServerDbContext))]
|
||||
[Migration("20200701064031_v0.0.4")]
|
||||
partial class v004
|
||||
{
|
||||
protected override void BuildTargetModel(ModelBuilder modelBuilder)
|
||||
{
|
||||
#pragma warning disable 612, 618
|
||||
modelBuilder
|
||||
.HasAnnotation("ProductVersion", "5.0.0-preview.6.20312.4")
|
||||
.HasAnnotation("Relational:MaxIdentifierLength", 128)
|
||||
.HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
|
||||
|
||||
modelBuilder.Entity("Fur.Record.Entities.Test", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("int")
|
||||
.HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
|
||||
|
||||
b.Property<int>("Age")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<DateTime>("CreatedTime")
|
||||
.ValueGeneratedOnAddOrUpdate()
|
||||
.HasColumnType("datetime2")
|
||||
.HasDefaultValueSql("getdate()");
|
||||
|
||||
b.Property<bool>("IsDeleted")
|
||||
.HasColumnType("bit");
|
||||
|
||||
b.Property<string>("Name")
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.Property<DateTime>("UpdatedTime")
|
||||
.ValueGeneratedOnAddOrUpdate()
|
||||
.HasColumnType("datetime2")
|
||||
.HasDefaultValueSql("getdate()");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.ToTable("Tests");
|
||||
});
|
||||
#pragma warning restore 612, 618
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
using System;
|
||||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
|
||||
namespace Fur.EntityFramework.Core.Migrations
|
||||
{
|
||||
public partial class v004 : Migration
|
||||
{
|
||||
protected override void Up(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.AlterColumn<DateTime>(
|
||||
name: "UpdatedTime",
|
||||
table: "Tests",
|
||||
type: "datetime2",
|
||||
nullable: false,
|
||||
defaultValueSql: "getdate()",
|
||||
oldClrType: typeof(DateTime),
|
||||
oldType: "datetime2");
|
||||
|
||||
migrationBuilder.AlterColumn<DateTime>(
|
||||
name: "CreatedTime",
|
||||
table: "Tests",
|
||||
type: "datetime2",
|
||||
nullable: false,
|
||||
defaultValueSql: "getdate()",
|
||||
oldClrType: typeof(DateTime),
|
||||
oldType: "datetime2");
|
||||
}
|
||||
|
||||
protected override void Down(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.AlterColumn<DateTime>(
|
||||
name: "UpdatedTime",
|
||||
table: "Tests",
|
||||
type: "datetime2",
|
||||
nullable: false,
|
||||
oldClrType: typeof(DateTime),
|
||||
oldType: "datetime2",
|
||||
oldDefaultValueSql: "getdate()");
|
||||
|
||||
migrationBuilder.AlterColumn<DateTime>(
|
||||
name: "CreatedTime",
|
||||
table: "Tests",
|
||||
type: "datetime2",
|
||||
nullable: false,
|
||||
oldClrType: typeof(DateTime),
|
||||
oldType: "datetime2",
|
||||
oldDefaultValueSql: "getdate()");
|
||||
}
|
||||
}
|
||||
}
|
||||
57
aspnetcore/Fur.EntityFramework.Core/Migrations/20200701075609_v0.0.5.Designer.cs
generated
Normal file
57
aspnetcore/Fur.EntityFramework.Core/Migrations/20200701075609_v0.0.5.Designer.cs
generated
Normal file
@@ -0,0 +1,57 @@
|
||||
// <auto-generated />
|
||||
using System;
|
||||
using Fur.EntityFramework.Core.DbContexts;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.EntityFrameworkCore.Infrastructure;
|
||||
using Microsoft.EntityFrameworkCore.Metadata;
|
||||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
|
||||
|
||||
namespace Fur.EntityFramework.Core.Migrations
|
||||
{
|
||||
[DbContext(typeof(FurSqlServerDbContext))]
|
||||
[Migration("20200701075609_v0.0.5")]
|
||||
partial class v005
|
||||
{
|
||||
protected override void BuildTargetModel(ModelBuilder modelBuilder)
|
||||
{
|
||||
#pragma warning disable 612, 618
|
||||
modelBuilder
|
||||
.HasAnnotation("ProductVersion", "5.0.0-preview.6.20312.4")
|
||||
.HasAnnotation("Relational:MaxIdentifierLength", 128)
|
||||
.HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
|
||||
|
||||
modelBuilder.Entity("Fur.Record.Entities.Test", b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("int")
|
||||
.HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);
|
||||
|
||||
b.Property<int>("Age")
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<DateTime>("CreatedTime")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("datetime2")
|
||||
.HasDefaultValueSql("getdate()");
|
||||
|
||||
b.Property<bool>("IsDeleted")
|
||||
.HasColumnType("bit");
|
||||
|
||||
b.Property<string>("Name")
|
||||
.HasColumnType("nvarchar(max)");
|
||||
|
||||
b.Property<DateTime>("UpdatedTime")
|
||||
.ValueGeneratedOnAddOrUpdate()
|
||||
.HasColumnType("datetime2")
|
||||
.HasDefaultValueSql("getdate()");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.ToTable("Tests");
|
||||
});
|
||||
#pragma warning restore 612, 618
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
|
||||
namespace Fur.EntityFramework.Core.Migrations
|
||||
{
|
||||
public partial class v005 : Migration
|
||||
{
|
||||
protected override void Up(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
protected override void Down(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -30,8 +30,9 @@ namespace Fur.EntityFramework.Core.Migrations
|
||||
.HasColumnType("int");
|
||||
|
||||
b.Property<DateTime>("CreatedTime")
|
||||
.ValueGeneratedOnAddOrUpdate()
|
||||
.HasColumnType("datetime2");
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("datetime2")
|
||||
.HasDefaultValueSql("getdate()");
|
||||
|
||||
b.Property<bool>("IsDeleted")
|
||||
.HasColumnType("bit");
|
||||
@@ -41,7 +42,8 @@ namespace Fur.EntityFramework.Core.Migrations
|
||||
|
||||
b.Property<DateTime>("UpdatedTime")
|
||||
.ValueGeneratedOnAddOrUpdate()
|
||||
.HasColumnType("datetime2");
|
||||
.HasColumnType("datetime2")
|
||||
.HasDefaultValueSql("getdate()");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ namespace Fur.DatabaseVisitor.Dependencies
|
||||
/// <summary>
|
||||
/// 创建时间
|
||||
/// </summary>
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||
public DateTime CreatedTime { get; set; }
|
||||
/// <summary>
|
||||
/// 更新时间
|
||||
|
||||
@@ -1,37 +1,264 @@
|
||||
using Fur.DatabaseVisitor.Dependencies;
|
||||
using Fur.DependencyInjection.Lifetimes;
|
||||
using Fur.Unmanaged;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.EntityFrameworkCore.ChangeTracking;
|
||||
using Microsoft.EntityFrameworkCore.Infrastructure;
|
||||
using System.Collections.Generic;
|
||||
using System.Data.Common;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Fur.DatabaseVisitor.Repositories
|
||||
{
|
||||
public partial class EFCoreRepositoryOfT<TEntity> : UnmanagedDispose, IRepositoryOfT<TEntity>, IScopedLifetimeOfT<TEntity> where TEntity : class, IEntity, new()
|
||||
public partial class EFCoreRepositoryOfT<TEntity> : IRepositoryOfT<TEntity>, IScopedLifetimeOfT<TEntity> where TEntity : class, IEntity, new()
|
||||
{
|
||||
private readonly DbContext _dbContext;
|
||||
private readonly DbSet<TEntity> _dbSet;
|
||||
public EFCoreRepositoryOfT(DbContext dbContext)
|
||||
{
|
||||
_dbContext = dbContext;
|
||||
_dbSet = _dbContext.Set<TEntity>();
|
||||
DbContext = dbContext;
|
||||
Entity = DbContext.Set<TEntity>();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 数据库操作上下文
|
||||
/// </summary>
|
||||
public DbContext DbContext => _dbContext;
|
||||
/// <summary>
|
||||
/// 实体对象
|
||||
/// </summary>
|
||||
public DbSet<TEntity> Entity => _dbSet;
|
||||
/// <summary>
|
||||
/// 数据库操作对象
|
||||
/// </summary>
|
||||
public DatabaseFacade Database => _dbContext.Database;
|
||||
/// <summary>
|
||||
/// 数据库链接对象
|
||||
/// </summary>
|
||||
public DbConnection DbConnection => _dbContext.Database.GetDbConnection();
|
||||
public virtual DbContext DbContext { get; }
|
||||
public virtual DbSet<TEntity> Entity { get; }
|
||||
public virtual DatabaseFacade Database => DbContext.Database;
|
||||
public virtual DbConnection DbConnection => DbContext.Database.GetDbConnection();
|
||||
|
||||
public EntityEntry<TEntity> Delete(TEntity entity)
|
||||
{
|
||||
return Entity.Remove(entity);
|
||||
}
|
||||
|
||||
public void Delete(params TEntity[] entities)
|
||||
{
|
||||
Entity.RemoveRange(entities);
|
||||
}
|
||||
|
||||
public void Delete(IEnumerable<TEntity> entities)
|
||||
{
|
||||
Entity.RemoveRange(entities);
|
||||
}
|
||||
|
||||
public EntityEntry<TEntity> Delete(object id)
|
||||
{
|
||||
var entity = Entity.Find(id);
|
||||
return Delete(entity);
|
||||
}
|
||||
|
||||
public Task<EntityEntry<TEntity>> DeleteAsync(TEntity entity)
|
||||
{
|
||||
return Task.FromResult(Entity.Remove(entity));
|
||||
}
|
||||
|
||||
public Task DeleteAsync(params TEntity[] entities)
|
||||
{
|
||||
Entity.RemoveRange(entities);
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
public Task DeleteAsync(IEnumerable<TEntity> entities)
|
||||
{
|
||||
Entity.RemoveRange(entities);
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
public async Task<EntityEntry<TEntity>> DeleteAsync(object id)
|
||||
{
|
||||
var entity = await Entity.FindAsync(id);
|
||||
return await DeleteAsync(entity);
|
||||
}
|
||||
|
||||
public EntityEntry<TEntity> DeleteSaveChanges(TEntity entity)
|
||||
{
|
||||
var trackEntity = Delete(entity);
|
||||
DbContext.SaveChanges();
|
||||
return trackEntity;
|
||||
}
|
||||
|
||||
public void DeleteSaveChanges(params TEntity[] entities)
|
||||
{
|
||||
Delete(entities);
|
||||
DbContext.SaveChanges();
|
||||
}
|
||||
|
||||
public void DeleteSaveChanges(IEnumerable<TEntity> entities)
|
||||
{
|
||||
Delete(entities);
|
||||
DbContext.SaveChanges();
|
||||
}
|
||||
|
||||
public EntityEntry<TEntity> DeleteSaveChanges(object id)
|
||||
{
|
||||
var trackEntity = Delete(id);
|
||||
DbContext.SaveChanges();
|
||||
return trackEntity;
|
||||
}
|
||||
|
||||
public async Task<EntityEntry<TEntity>> DeleteSaveChangesAsync(TEntity entity)
|
||||
{
|
||||
var trackEntity = await DeleteAsync(entity);
|
||||
await DbContext.SaveChangesAsync();
|
||||
return trackEntity;
|
||||
}
|
||||
|
||||
public async Task DeleteSaveChangesAsync(params TEntity[] entities)
|
||||
{
|
||||
await DeleteAsync(entities);
|
||||
await DbContext.SaveChangesAsync();
|
||||
}
|
||||
|
||||
public async Task DeleteSaveChangesAsync(IEnumerable<TEntity> entities)
|
||||
{
|
||||
await DeleteAsync(entities);
|
||||
await DbContext.SaveChangesAsync();
|
||||
}
|
||||
|
||||
public async Task<EntityEntry<TEntity>> DeleteSaveChangesAsync(object id)
|
||||
{
|
||||
var trackEntity = await DeleteAsync(id);
|
||||
await DbContext.SaveChangesAsync();
|
||||
return trackEntity;
|
||||
}
|
||||
|
||||
// 新增操作
|
||||
public virtual EntityEntry<TEntity> Insert(TEntity entity)
|
||||
{
|
||||
return Entity.Add(entity);
|
||||
}
|
||||
|
||||
public virtual void Insert(params TEntity[] entities)
|
||||
{
|
||||
Entity.AddRange(entities);
|
||||
}
|
||||
|
||||
public virtual void Insert(IEnumerable<TEntity> entities)
|
||||
{
|
||||
Entity.AddRange(entities);
|
||||
}
|
||||
|
||||
public virtual ValueTask<EntityEntry<TEntity>> InsertAsync(TEntity entity)
|
||||
{
|
||||
return Entity.AddAsync(entity);
|
||||
}
|
||||
|
||||
public virtual Task InsertAsync(params TEntity[] entities)
|
||||
{
|
||||
return Entity.AddRangeAsync();
|
||||
}
|
||||
|
||||
public virtual Task InsertAsync(IEnumerable<TEntity> entities)
|
||||
{
|
||||
return Entity.AddRangeAsync();
|
||||
}
|
||||
|
||||
public virtual EntityEntry<TEntity> InsertSaveChanges(TEntity entity)
|
||||
{
|
||||
var trackEntity = Insert(entity);
|
||||
DbContext.SaveChanges();
|
||||
return trackEntity;
|
||||
}
|
||||
|
||||
public virtual void InsertSaveChanges(params TEntity[] entities)
|
||||
{
|
||||
Insert(entities);
|
||||
DbContext.SaveChanges();
|
||||
}
|
||||
|
||||
public virtual void InsertSaveChanges(IEnumerable<TEntity> entities)
|
||||
{
|
||||
Insert(entities);
|
||||
DbContext.SaveChanges();
|
||||
}
|
||||
|
||||
public virtual async ValueTask<EntityEntry<TEntity>> InsertSaveChangesAsync(TEntity entity)
|
||||
{
|
||||
var trackEntity = await InsertAsync(entity);
|
||||
await DbContext.SaveChangesAsync();
|
||||
return trackEntity;
|
||||
}
|
||||
|
||||
public virtual async Task InsertSaveChangesAsync(params TEntity[] entities)
|
||||
{
|
||||
await InsertAsync(entities);
|
||||
await DbContext.SaveChangesAsync();
|
||||
await Task.CompletedTask;
|
||||
}
|
||||
|
||||
public virtual async Task InsertSaveChangesAsync(IEnumerable<TEntity> entities)
|
||||
{
|
||||
await InsertAsync(entities);
|
||||
await DbContext.SaveChangesAsync();
|
||||
await Task.CompletedTask;
|
||||
}
|
||||
|
||||
// 更新操作
|
||||
public EntityEntry<TEntity> Update(TEntity entity)
|
||||
{
|
||||
return Entity.Update(entity);
|
||||
}
|
||||
|
||||
public void Update(params TEntity[] entities)
|
||||
{
|
||||
Entity.UpdateRange(entities);
|
||||
}
|
||||
|
||||
public void Update(IEnumerable<TEntity> entities)
|
||||
{
|
||||
Entity.UpdateRange(entities);
|
||||
}
|
||||
|
||||
public Task<EntityEntry<TEntity>> UpdateAsync(TEntity entity)
|
||||
{
|
||||
var trackEntity = Entity.Update(entity);
|
||||
return Task.FromResult(trackEntity);
|
||||
}
|
||||
|
||||
public Task UpdateAsync(params TEntity[] entities)
|
||||
{
|
||||
Entity.UpdateRange(entities);
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
public Task UpdateAsync(IEnumerable<TEntity> entities)
|
||||
{
|
||||
Entity.UpdateRange(entities);
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
public EntityEntry<TEntity> UpdateSaveChanges(TEntity entity)
|
||||
{
|
||||
var trackEntity = Update(entity);
|
||||
DbContext.SaveChanges();
|
||||
return trackEntity;
|
||||
}
|
||||
|
||||
public void UpdateSaveChanges(params TEntity[] entities)
|
||||
{
|
||||
Update(entities);
|
||||
DbContext.SaveChanges();
|
||||
}
|
||||
|
||||
public void UpdateSaveChanges(IEnumerable<TEntity> entities)
|
||||
{
|
||||
Update(entities);
|
||||
DbContext.SaveChanges();
|
||||
}
|
||||
|
||||
public async Task<EntityEntry<TEntity>> UpdateSaveChangesAsync(TEntity entity)
|
||||
{
|
||||
var trackEntities = await UpdateAsync(entity);
|
||||
await DbContext.SaveChangesAsync();
|
||||
return trackEntities;
|
||||
}
|
||||
|
||||
public async Task UpdateSaveChangesAsync(params TEntity[] entities)
|
||||
{
|
||||
await UpdateAsync(entities);
|
||||
await DbContext.SaveChangesAsync();
|
||||
}
|
||||
|
||||
public async Task UpdateSaveChangesAsync(IEnumerable<TEntity> entities)
|
||||
{
|
||||
await UpdateAsync(entities);
|
||||
await DbContext.SaveChangesAsync();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
using Fur.DatabaseVisitor.Dependencies;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.EntityFrameworkCore.ChangeTracking;
|
||||
using Microsoft.EntityFrameworkCore.Infrastructure;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data.Common;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Fur.DatabaseVisitor.Repositories
|
||||
{
|
||||
@@ -10,23 +12,57 @@ namespace Fur.DatabaseVisitor.Repositories
|
||||
/// 泛型仓储类
|
||||
/// </summary>
|
||||
/// <typeparam name="TEntity"></typeparam>
|
||||
public partial interface IRepositoryOfT<TEntity> : IDisposable where TEntity : class, IEntity, new()
|
||||
public partial interface IRepositoryOfT<TEntity> where TEntity : class, IEntity, new()
|
||||
{
|
||||
/// <summary>
|
||||
/// 数据库操作上下文
|
||||
/// </summary>
|
||||
public DbContext DbContext { get; }
|
||||
/// <summary>
|
||||
/// 实体对象
|
||||
/// </summary>
|
||||
public DbSet<TEntity> Entity { get; }
|
||||
/// <summary>
|
||||
/// 数据库操作对象
|
||||
/// </summary>
|
||||
public DatabaseFacade Database { get; }
|
||||
/// <summary>
|
||||
/// 数据库链接对象
|
||||
/// </summary>
|
||||
public DbConnection DbConnection { get; }
|
||||
|
||||
// 新增操作
|
||||
EntityEntry<TEntity> Insert(TEntity entity);
|
||||
void Insert(params TEntity[] entities);
|
||||
void Insert(IEnumerable<TEntity> entities);
|
||||
ValueTask<EntityEntry<TEntity>> InsertAsync(TEntity entity);
|
||||
Task InsertAsync(params TEntity[] entities);
|
||||
Task InsertAsync(IEnumerable<TEntity> entities);
|
||||
EntityEntry<TEntity> InsertSaveChanges(TEntity entity);
|
||||
void InsertSaveChanges(params TEntity[] entities);
|
||||
void InsertSaveChanges(IEnumerable<TEntity> entities);
|
||||
ValueTask<EntityEntry<TEntity>> InsertSaveChangesAsync(TEntity entity);
|
||||
Task InsertSaveChangesAsync(params TEntity[] entities);
|
||||
Task InsertSaveChangesAsync(IEnumerable<TEntity> entities);
|
||||
|
||||
// 更新操作
|
||||
EntityEntry<TEntity> Update(TEntity entity);
|
||||
void Update(params TEntity[] entities);
|
||||
void Update(IEnumerable<TEntity> entities);
|
||||
Task<EntityEntry<TEntity>> UpdateAsync(TEntity entity);
|
||||
Task UpdateAsync(params TEntity[] entities);
|
||||
Task UpdateAsync(IEnumerable<TEntity> entities);
|
||||
EntityEntry<TEntity> UpdateSaveChanges(TEntity entity);
|
||||
void UpdateSaveChanges(params TEntity[] entities);
|
||||
void UpdateSaveChanges(IEnumerable<TEntity> entities);
|
||||
Task<EntityEntry<TEntity>> UpdateSaveChangesAsync(TEntity entity);
|
||||
Task UpdateSaveChangesAsync(params TEntity[] entities);
|
||||
Task UpdateSaveChangesAsync(IEnumerable<TEntity> entities);
|
||||
|
||||
// 删除操作
|
||||
EntityEntry<TEntity> Delete(TEntity entity);
|
||||
void Delete(params TEntity[] entities);
|
||||
void Delete(IEnumerable<TEntity> entities);
|
||||
Task<EntityEntry<TEntity>> DeleteAsync(TEntity entity);
|
||||
Task DeleteAsync(params TEntity[] entities);
|
||||
Task DeleteAsync(IEnumerable<TEntity> entities);
|
||||
EntityEntry<TEntity> DeleteSaveChanges(TEntity entity);
|
||||
void DeleteSaveChanges(params TEntity[] entities);
|
||||
void DeleteSaveChanges(IEnumerable<TEntity> entities);
|
||||
Task<EntityEntry<TEntity>> DeleteSaveChangesAsync(TEntity entity);
|
||||
Task DeleteSaveChangesAsync(params TEntity[] entities);
|
||||
Task DeleteSaveChangesAsync(IEnumerable<TEntity> entities);
|
||||
EntityEntry<TEntity> Delete(object id);
|
||||
Task<EntityEntry<TEntity>> DeleteAsync(object id);
|
||||
EntityEntry<TEntity> DeleteSaveChanges(object id);
|
||||
Task<EntityEntry<TEntity>> DeleteSaveChangesAsync(object id);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user