Shared/Kernelx.MO2EFCore/Cmpts/EFMOI/EFModelibContextBase.cs

(开头部分) 2KB

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

using Kernelx.Data; 
using Microsoft.EntityFrameworkCore; 
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks; 
namespace Kernelx.Cmpts.EFMOI
{
    using Core;
    using Kernelx.Cmpts.MOI;

    /// <summary>
    /// 
    /// </summary>
    public abstract class EFModelibContextBase : DbContext, IModelibContext
    {
         
        protected  DbContextOptions contextOptions;

        private  IDatabaseCommand _cmd;

        public EFModelibContextBase(DbContextOptions options) : base(options)
        { 
            contextOptions = options; 
            _cmd = new EFDatabaseCommand(this);
        }


        public IDatabaseCommand GetCurrentCommand() => _cmd;

        /// <summary>
        /// 返回需要绑定到当前上下文中的实体模型类型集合
        /// </summary>
        /// <returns></returns>
        protected abstract IEnumerable<Type> GetModelTypes();

        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            foreach (var type in GetModelTypes())
                modelBuilder.BuilderModelMapping(type);

            base.OnModelCreating(modelBuilder);
        }

         
        public bool IsTransactioning => base.Database.CurrentTransaction!=null;

        public ITransaction BeginTransaction() =>new EFTransaction(base.Database.BeginTransaction());

         

        private  Dictionary<string, object> _stores = new Dictionary<string, object>();      
        public IModelStore<T> Store<T>(string targetName = null) where T : class, new()
        {
            IModelStore<T> result =null;
           var key = $"{typeof(T).FullName}_{targetName}";
            if(!_stores.ContainsKey(key))
后面还有 19 行代码,解锁后查看完整代码

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

AI 解读

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

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