224 lines
9.0 KiB
C#
224 lines
9.0 KiB
C#
using IRaCIS.Core.Domain.Models;
|
|
using IRaCIS.Core.Domain.Share.AuthUser;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using Microsoft.Extensions.Logging;
|
|
using System;
|
|
using System.Linq;
|
|
using System.Threading;
|
|
using System.Threading.Tasks;
|
|
using IRaCIS.Core.Domain;
|
|
|
|
//using System.Data.Entity;
|
|
//using IRaCIS.Infra.Data.Mapping;
|
|
|
|
namespace IRaCIS.Core.Infra.EFCore
|
|
{
|
|
public class IRaCISDBContext : DbContext
|
|
{
|
|
private readonly IUserInfo _userInfo;
|
|
|
|
///记录控制台日志:
|
|
///1. Microsoft.Extensions.Logging
|
|
///Microsoft.Extensions.Logging.Console
|
|
///2. 定义日志工厂
|
|
///3. OnConfiguring配置使用日志工厂
|
|
/// <summary>
|
|
/// 指定静态ILoggerFactory
|
|
/// </summary>
|
|
//在控制台
|
|
//public static readonly ILoggerFactory MyLoggerFactory
|
|
// = LoggerFactory.Create(builder => { builder.AddConsole(); });
|
|
//调试窗口
|
|
public static readonly ILoggerFactory
|
|
MyLoggerFactory = LoggerFactory.Create(builder => { builder.AddDebug(); });
|
|
|
|
public IRaCISDBContext(DbContextOptions<IRaCISDBContext> options, IUserInfo userInfo) : base(options)
|
|
{
|
|
_userInfo = userInfo;
|
|
Console.WriteLine("This is IRaCISDBContext DbContextOptions");
|
|
}
|
|
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
|
|
{
|
|
|
|
optionsBuilder.UseLoggerFactory(MyLoggerFactory);
|
|
}
|
|
|
|
public virtual DbSet<Dictionary> Dictionary { get; set; }
|
|
public virtual DbSet<Doctor> Doctor { get; set; }
|
|
public virtual DbSet<DoctorDictionary> DoctorDictionary { get; set; }
|
|
|
|
public virtual DbSet<Attachment> Attachment { get; set; }
|
|
public virtual DbSet<Workload> DoctorWorkload { get; set; }
|
|
public virtual DbSet<EnrollDetail> EnrollDetails { get; set; }
|
|
public virtual DbSet<Postgraduate> Postgraduate { get; set; }
|
|
public virtual DbSet<TrialDictionary> ProjectDictionary { get; set; }
|
|
public virtual DbSet<Trial> Trial { get; set; }
|
|
public virtual DbSet<TrialStatusDetail> TrialDetail { get; set; }
|
|
public virtual DbSet<TrialExperience> TrialExperience { get; set; }
|
|
public virtual DbSet<Education> Education { get; set; }
|
|
public virtual DbSet<Enroll> IntoGroup { get; set; }
|
|
public virtual DbSet<ResearchPublication> ResearchPublications { get; set; }
|
|
public virtual DbSet<Message> SysMessages { get; set; }
|
|
|
|
public virtual DbSet<MenuFunction> MenuFunctions { get; set; }
|
|
public virtual DbSet<Role> Roles { get; set; }
|
|
public virtual DbSet<RoleMenuFunction> RoleMenus { get; set; }
|
|
public virtual DbSet<User> Users { get; set; }
|
|
public virtual DbSet<UserRole> UserRoles { get; set; }
|
|
|
|
|
|
public virtual DbSet<Site> ResearchCenter { get; set; }
|
|
public virtual DbSet<UserDoctor> UserDoctor { get; set; }
|
|
|
|
public virtual DbSet<UserTrial> UserTrial { get; set; }
|
|
|
|
public virtual DbSet<Hospital> Hospitals { get; set; }
|
|
|
|
public virtual DbSet<CRO> CROCompany { get; set; }
|
|
public virtual DbSet<Sponsor> Sponsor { get; set; }
|
|
public virtual DbSet<Vacation> Vacation { get; set; }
|
|
|
|
public virtual DbSet<ReviewerPayInformation> ReviewerPayInformation { get; set; }
|
|
public virtual DbSet<RankPrice> RankPrice { get; set; }
|
|
public virtual DbSet<TrialPaymentPrice> TrialPaymentPrice { get; set; }
|
|
|
|
public virtual DbSet<VolumeReward> AwardPrice { get; set; }
|
|
|
|
public virtual DbSet<Payment> Payment { get; set; }
|
|
|
|
public virtual DbSet<PaymentDetail> PaymentDetail { get; set; }
|
|
public virtual DbSet<ExchangeRate> ExchangeRate { get; set; }
|
|
public virtual DbSet<TrialAttachment> ImageAcquisitionSpecification { get; set; }
|
|
public virtual DbSet<Subject> ClinicalStudySubjects { get; set; }
|
|
public virtual DbSet<VisitStage> VisitPlans { get; set; }
|
|
public virtual DbSet<DicomStudy> DicomStudys { get; set; }
|
|
public virtual DbSet<DicomSeries> DicomSeries { get; set; }
|
|
public virtual DbSet<DicomInstance> DicomInstances { get; set; }
|
|
|
|
public virtual DbSet<StudyStatusDetail> StudyStatusDetails { get; set; }
|
|
//public virtual DbSet<ImageRecord> Images { get; set; }
|
|
public virtual DbSet<TrialRevenuesPrice> TrialRevenuesPrice { get; set; }
|
|
|
|
public virtual DbSet<PaymentAdjustment> PaymentAdjustment { get; set; }
|
|
public virtual DbSet<SystemLog> SystemLogs { get; set; }
|
|
|
|
public virtual DbSet<VerificationCode> VerificationCodes { get; set; }
|
|
|
|
public virtual DbSet<TrialRevenuesPriceVerification> TrialRevenuesPriceVerification { get; set; }
|
|
|
|
public virtual DbSet<Test> Test { get; set; }
|
|
|
|
|
|
#region QA
|
|
public virtual DbSet<QADictionary> QADictionary { get; set; }
|
|
public virtual DbSet<QATemplate> QATemplate { get; set; }
|
|
public virtual DbSet<QADialog> QADialog { get; set; }
|
|
|
|
public virtual DbSet<QATemplateDictionary> QATemplateDictionary { get; set; }
|
|
|
|
public virtual DbSet<QARecord> QARecord { get; set; }
|
|
|
|
public virtual DbSet<SubjectVisit> SubjectVisit { get; set; }
|
|
|
|
|
|
#endregion
|
|
public virtual DbSet<StudyReviewer> StudyReviewer { get; set; }
|
|
|
|
#region 工作量分配
|
|
public virtual DbSet<WorkloadTP> WorkloadTPs { get; set; }
|
|
public virtual DbSet<WorkloadGlobal> WorkloadGlobals { get; set; }
|
|
public virtual DbSet<WorkloadAD> WorkloadADs { get; set; }
|
|
public virtual DbSet<WorkloadDetail> WorkloadDetails { get; set; }
|
|
#endregion
|
|
|
|
public virtual DbSet<TU> TU { get; set; }
|
|
public virtual DbSet<TR> TR { get; set; }
|
|
public virtual DbSet<RS> RS { get; set; }
|
|
public virtual DbSet<Report> Reports { get; set; }
|
|
|
|
|
|
public virtual DbSet<GlobalRS> GlobalRS { get; set; }
|
|
public virtual DbSet<GlobalResult> GlobalResult { get; set; }
|
|
|
|
public virtual DbSet<ImageLabel> ImageLabels { get; set; }
|
|
public virtual DbSet<KeyInstance> KeyInstances { get; set; }
|
|
|
|
public override int SaveChanges()
|
|
{
|
|
ChangeTracker.DetectChanges(); // Important!
|
|
var addList = ChangeTracker.Entries().Where(p => p.State == EntityState.Added).Select(t => t.Entity).ToList();
|
|
var updateList = ChangeTracker.Entries().Where(p => p.State == EntityState.Modified).Select(t => t.Entity).ToList();
|
|
try
|
|
{
|
|
foreach (var entity in addList)
|
|
{
|
|
if (entity is IAuditAdd baseEntity)
|
|
{
|
|
baseEntity.CreateTime = DateTime.Now;
|
|
baseEntity.CreateUserId = _userInfo.Id;
|
|
}
|
|
if (entity is IAuditUpdate updateEntity)
|
|
{
|
|
updateEntity.UpdateTime = DateTime.Now;
|
|
updateEntity.UpdateUserId = _userInfo.Id;
|
|
}
|
|
}
|
|
|
|
foreach (var entity in updateList)
|
|
{
|
|
if (entity is IAuditUpdate baseEntity)
|
|
{
|
|
baseEntity.UpdateTime = DateTime.Now;
|
|
baseEntity.UpdateUserId = _userInfo.Id;
|
|
}
|
|
}
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
Console.WriteLine(e);
|
|
throw;
|
|
}
|
|
return base.SaveChanges();
|
|
}
|
|
|
|
public override Task<int> SaveChangesAsync(CancellationToken cancellationToken = new CancellationToken())
|
|
{
|
|
ChangeTracker.DetectChanges(); // Important!
|
|
var addList = ChangeTracker.Entries().Where(p => p.State == EntityState.Added).Select(t => t.Entity).ToList();
|
|
var updateList = ChangeTracker.Entries().Where(p => p.State == EntityState.Modified).Select(t => t.Entity).ToList();
|
|
try
|
|
{
|
|
foreach (var entity in addList)
|
|
{
|
|
if (entity is IAuditAdd baseEntity)
|
|
{
|
|
baseEntity.CreateTime = DateTime.Now;
|
|
baseEntity.CreateUserId = _userInfo.Id;
|
|
}
|
|
if (entity is IAuditUpdate updateEntity)
|
|
{
|
|
updateEntity.UpdateTime = DateTime.Now;
|
|
updateEntity.UpdateUserId = _userInfo.Id;
|
|
}
|
|
}
|
|
|
|
foreach (var entity in updateList)
|
|
{
|
|
if (entity is IAuditUpdate baseEntity)
|
|
{
|
|
baseEntity.UpdateTime = DateTime.Now;
|
|
baseEntity.UpdateUserId = _userInfo.Id;
|
|
}
|
|
}
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
Console.WriteLine(e);
|
|
throw;
|
|
}
|
|
|
|
|
|
return base.SaveChangesAsync(cancellationToken);
|
|
}
|
|
}
|
|
} |