xiaochanghai 1 year ago
parent f746667a0e
commit a7439bfdcb
  1. 9
      Tiobon.Core.Api/Controllers/Ghra_GradeController.cs
  2. 1
      Tiobon.Core.Api/Tiobon.Core.Api.csproj
  3. 24
      Tiobon.Core.DataAccess/ContextFactory.cs
  4. 18
      Tiobon.Core.DataAccess/DataContext.cs
  5. 33
      Tiobon.Core.DataAccess/Domain/IBaseCRUDVM.cs
  6. 108
      Tiobon.Core.DataAccess/Domain/Repositories/BaseCRUDVM.cs
  7. 13
      Tiobon.Core.DataAccess/Migrations/DataContextModelSnapshot.cs
  8. 39
      Tiobon.Core.DataAccess/Tiobon.Core.DataAccess.csproj
  9. 6
      Tiobon.Core.sln

@ -1,4 +1,7 @@
namespace Tiobon.Core.Api.Controllers using Microsoft.EntityFrameworkCore;
using Tiobon.Core.DataAccess;
namespace Tiobon.Core.Api.Controllers
{ {
[Route("api/[controller]/[action]")] [Route("api/[controller]/[action]")]
[ApiController] [ApiController]
@ -23,6 +26,10 @@
[HttpGet] [HttpGet]
public async Task<MessageModel<PageModel<Ghra_Grade>>> Get([FromFilter] QueryFilter filter) public async Task<MessageModel<PageModel<Ghra_Grade>>> Get([FromFilter] QueryFilter filter)
{ {
using var _context = ContextFactory.CreateContext();
var list = await _context.Ghra_Grade.ToListAsync();
return new MessageModel<PageModel<Ghra_Grade>>() return new MessageModel<PageModel<Ghra_Grade>>()
{ {
msg = "获取成功", msg = "获取成功",

@ -104,6 +104,7 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\Tiobon.Core.DataAccess\Tiobon.Core.DataAccess.csproj" />
<ProjectReference Include="..\Tiobon.Core.Extensions\Tiobon.Core.Extensions.csproj" /> <ProjectReference Include="..\Tiobon.Core.Extensions\Tiobon.Core.Extensions.csproj" />
</ItemGroup> </ItemGroup>

@ -0,0 +1,24 @@
using Microsoft.EntityFrameworkCore;
using Tiobon.Core.Common.DB;
namespace Tiobon.Core.DataAccess
{
/// <summary>
/// 直接创建 Context
/// </summary>
public class ContextFactory
{
/// <summary>
/// 创建DbContext
/// </summary>
/// <returns></returns>
public static DataContext CreateContext()
{
var builder = new DbContextOptionsBuilder<DataContext>();
var mainConnetctDb = BaseDBConfig.MutiConnectionString.allDbs.Find(x => x.ConnId == MainDb.CurrentDbConnId);
builder.UseSqlServer(mainConnetctDb.Connection);
return new DataContext(builder.Options);
}
}
}

@ -0,0 +1,18 @@
using Microsoft.EntityFrameworkCore;
using Tiobon.Core.Model.Models;
namespace Tiobon.Core.DataAccess
{
public class DataContext : DbContext
{
public virtual DbSet<Ghra_Grade> Ghra_Grade { get; set; }
//占位符
public DataContext(DbContextOptions<DataContext> options) : base(options)
{
}
}
}

@ -0,0 +1,33 @@
using System;
using System.Collections.Generic;
using System.Linq.Expressions;
using System.Threading.Tasks;
namespace Tiobon.Core.Domain
{
public interface IBaseCRUDVM<TModel> where TModel : class
{
IEnumerable<TModel> Get();
TModel Get(Expression<Func<TModel, bool>> express = null);
TModel GetById(object id);
Task<TModel> GetByIdAsync(object id);
void DoAdd(TModel model);
Task DoAddAsync(TModel model);
void DoDelete(object id);
Task DoDeleteAsync(Guid id, Guid? updateById = null);
void DoRealDelete(object id);
Task DoRealDeleteAsync(object id);
void DoUpdate(TModel model);
Task DoUpdateAsync(TModel model);
Task<TModel> GetAsync(Expression<Func<TModel, bool>> express);
}
}

@ -0,0 +1,108 @@
using Tiobon.Core.DataAccess;
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Threading.Tasks;
namespace Tiobon.Core.Domain
{
public class BaseCRUDVM<TModel> : IBaseCRUDVM<TModel> where TModel : class
{
private readonly DataContext _context;
internal DbSet<TModel> dbSet;
public BaseCRUDVM(DataContext context)
{
_context = context;
this.dbSet = _context.Set<TModel>();
}
IEnumerable<TModel> IBaseCRUDVM<TModel>.Get()
{
return dbSet.ToList();
}
TModel IBaseCRUDVM<TModel>.Get(Expression<Func<TModel, bool>> express)
{
return dbSet.Where(express).FirstOrDefault();
}
async Task<TModel> IBaseCRUDVM<TModel>.GetAsync(Expression<Func<TModel, bool>> express)
{
return await dbSet.Where(express).FirstOrDefaultAsync();
}
public TModel GetById(object id)
{
return dbSet.Find(id);
}
public async Task<TModel> GetByIdAsync(object id)
{
return await dbSet.FindAsync(id);
}
public void DoAdd(TModel model)
{
_context.Entry(model).CurrentValues["IsDeleted"] = false;
_context.Entry(model).CurrentValues["AuditStatus"] = "Add";
_context.Add(model);
_context.SaveChanges();
}
public async Task DoAddAsync(TModel model)
{
_context.Entry(model).CurrentValues["IsDeleted"] = false;
_context.Entry(model).CurrentValues["AuditStatus"] = "Add";
await _context.AddAsync(model);
await _context.SaveChangesAsync();
}
public void DoDelete(object id)
{
var query = dbSet.Find(id);
_context.Entry(query).CurrentValues["IsDeleted"] = true;
_context.Update(query);
_context.SaveChanges();
}
public async Task DoDeleteAsync(Guid id, Guid? updateById = null)
{
var query = await dbSet.FindAsync(id);
_context.Entry(query).CurrentValues["IsDeleted"] = true;
_context.Entry(query).CurrentValues["UpdateBy"] = updateById ?? null;
_context.Entry(query).CurrentValues["UpdateTime"] = DateTime.Now;
await _context.SaveChangesAsync();
}
public void DoRealDelete(object id)
{
var query = dbSet.Find(id);
_context.Remove(query);
_context.SaveChanges();
}
public async Task DoRealDeleteAsync(object id)
{
var query = await dbSet.FindAsync(id);
_context.Remove(query);
await _context.SaveChangesAsync();
}
public void DoUpdate(TModel model)
{
_context.Update(model);
_context.SaveChanges();
}
public async Task DoUpdateAsync(TModel model)
{
_context.Update(model);
await _context.SaveChangesAsync();
}
}
}

@ -0,0 +1,13 @@
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
namespace Tiobon.Core.DataAccess.Migrations
{
[DbContext(typeof(DataContext))]
partial class DataContextModelSnapshot : ModelSnapshot
{
protected override void BuildModel(ModelBuilder modelBuilder)
{
}
}
}

@ -0,0 +1,39 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<Compile Remove="Migrations\20200714073858_4.cs" />
<Compile Remove="Migrations\20200714073858_4.Designer.cs" />
<Compile Remove="Migrations\20200714074029_6.cs" />
<Compile Remove="Migrations\20200714074029_6.Designer.cs" />
<Compile Remove="Migrations\20200714093032_6.cs" />
<Compile Remove="Migrations\20200714093032_6.Designer.cs" />
<Compile Remove="Migrations\20200716120505_1.cs" />
<Compile Remove="Migrations\20200716120505_1.Designer.cs" />
<Compile Remove="Migrations\20200716120801_2.cs" />
<Compile Remove="Migrations\20200716120801_2.Designer.cs" />
<Compile Remove="Migrations\20200716120954_3.cs" />
<Compile Remove="Migrations\20200716120954_3.Designer.cs" />
<Compile Remove="Migrations\20200716121102_1.cs" />
<Compile Remove="Migrations\20200716121102_1.Designer.cs" />
<Compile Remove="Migrations\20200718073626_6.cs" />
<Compile Remove="Migrations\20200718073626_6.Designer.cs" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="8.0.4" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="8.0.4" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="8.0.4" />
<PackageReference Include="Microsoft.Extensions.Caching.Abstractions" Version="8.0.0" />
<PackageReference Include="Z.EntityFramework.Extensions.EFCore" Version="8.102.2.1" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Tiobon.Core.Common\Tiobon.Core.Common.csproj" />
<ProjectReference Include="..\Tiobon.Core.Model\Tiobon.Core.Model.csproj" />
</ItemGroup>
</Project>

@ -60,6 +60,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tiobon.Core.EventBus", "Tio
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tiobon.Core.Tests", "Tiobon.Core.Tests\Tiobon.Core.Tests.csproj", "{1CD6CC3C-D58C-47D1-9F9A-671BB9261A46}" Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tiobon.Core.Tests", "Tiobon.Core.Tests\Tiobon.Core.Tests.csproj", "{1CD6CC3C-D58C-47D1-9F9A-671BB9261A46}"
EndProject EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Tiobon.Core.DataAccess", "Tiobon.Core.DataAccess\Tiobon.Core.DataAccess.csproj", "{44B3465C-70F2-420F-8B13-50BC264AD0EA}"
EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU Debug|Any CPU = Debug|Any CPU
@ -126,6 +128,10 @@ Global
{1CD6CC3C-D58C-47D1-9F9A-671BB9261A46}.Debug|Any CPU.Build.0 = Debug|Any CPU {1CD6CC3C-D58C-47D1-9F9A-671BB9261A46}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1CD6CC3C-D58C-47D1-9F9A-671BB9261A46}.Release|Any CPU.ActiveCfg = Release|Any CPU {1CD6CC3C-D58C-47D1-9F9A-671BB9261A46}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1CD6CC3C-D58C-47D1-9F9A-671BB9261A46}.Release|Any CPU.Build.0 = Release|Any CPU {1CD6CC3C-D58C-47D1-9F9A-671BB9261A46}.Release|Any CPU.Build.0 = Release|Any CPU
{44B3465C-70F2-420F-8B13-50BC264AD0EA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{44B3465C-70F2-420F-8B13-50BC264AD0EA}.Debug|Any CPU.Build.0 = Debug|Any CPU
{44B3465C-70F2-420F-8B13-50BC264AD0EA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{44B3465C-70F2-420F-8B13-50BC264AD0EA}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE

Loading…
Cancel
Save