Shared/Kernelx.MO2EFCore/Cmpts/EFMOI/Core/EFModelStore.cs

(开头部分) 5KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
using System.Threading.Tasks; 
using Microsoft.EntityFrameworkCore;
using Kernelx.Contexts;
using Kernelx.Extensions;
using Kernelx.Cmpts.MOI;
using Kernelx.Data;
using System.ComponentModel.DataAnnotations;

namespace Kernelx.Cmpts.EFMOI.Core
{
    internal class EFModelStore<T> : IModelStore<T>  where T : class, new()
    {
        private readonly DbSet<T> _store; 
        private readonly Expression<Func<T, bool>> _del_expr;

        public EFModelStore(DbSet<T> dbSet) 
        {
            _store = dbSet; 
            _del_expr = typeof(T).IsDefined(typeof(IDeletionModel), true) 
                ? ClauseFactor.Equal.CreateExpression<T>(nameof(IDeletionModel.DeleteStatus),false):null;
        }
        private T Find(object id) => _store.Find(id);


        #region 改动操作
        public void Insert(T ety) 
        {
            if(ety is ICreatedModel createdModel)
            {
                createdModel.CreatedDate = DateTime.Now;
                createdModel.CreatedBy = ContextWorkload.Current.User?.Name;
            }
            _store.Add(ety);
        }

        public void Insert(IList<T> etys) 
        {
            if (etys?.FirstOrDefault() is ICreatedModel)
            {
                var now= DateTime.Now;
                var name= ContextWorkload.Current.User?.Name;
                foreach (var ety in etys)
                {
                    var createdModel= ety as ICreatedModel;
                    createdModel.CreatedDate = now;
                    createdModel.CreatedBy = name;
                }
            }

            _store.AddRange(etys);
        }
      
        
        public void Delete(T ety)
        {
后面还有 103 行代码,解锁后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明

AI 解读

登录后可用,每次 10 积分,解读结果公开显示在下面。

还没有人解读过这个文件。