ABP 配置全局數據過濾器 II


第一篇 那種寫法有些復雜,

簡單辦法是直接注入

 

切換到 ***.EntityFramework 項目

 

 

在Uow 里面創建 ***EfUnitOfWork.cs 類

public class CooperativeEfUnitOfWork : EfUnitOfWork
    {
        public CooperativeEfUnitOfWork(IIocResolver iocResolver,
            IConnectionStringResolver connectionStringResolver,
            IDbContextResolver dbContextResolver,
            IEfUnitOfWorkFilterExecuter filterExecuter,
            IUnitOfWorkDefaultOptions defaultOptions,
            IDbContextTypeMatcher dbContextTypeMatcher,
            IEfTransactionStrategy transactionStrategy) :
            base(iocResolver, connectionStringResolver, dbContextResolver, filterExecuter, defaultOptions, dbContextTypeMatcher, transactionStrategy)
        {
        }

        protected override void BeginUow()
        {
            base.BeginUow();

            string major = AbpSession.GetMajor();
            string projectCode = AbpSession.GetProjectCode();

            SetFilterParameter(SysConsts.DataFilter.MajorFilter, SysConsts.DataFilter.MajorParameter, major);
            SetFilterParameter(SysConsts.DataFilter.ProjectCodeFilter, SysConsts.DataFilter.ProjectCodeParameter, projectCode);
        }
    }

  然后在 **DataModule.cs 里 注冊這個類

 

using Abp.Dependency;
using Abp.Domain.Uow;
using Abp.Modules;
using Abp.Zero.EntityFramework;
using JZFZ.Cooperative.EntityFramework;
using JZFZ.Cooperative.Extensions;
using JZFZ.Cooperative.Uow;
using System.Data.Entity;
using System.Reflection;
using Abp.Domain.Repositories;
using JZFZ.Cooperative.Authorization.Users;
using JZFZ.Cooperative.EntityFramework.Repositories;

namespace JZFZ.Cooperative
{
    [DependsOn(typeof(AbpZeroEntityFrameworkModule), typeof(CooperativeCoreModule))]
    public class CooperativeDataModule : AbpModule
    {
        public override void PreInitialize()
        {
            Database.SetInitializer(new CreateDatabaseIfNotExists<CooperativeDbContext>());

            Configuration.DefaultNameOrConnectionString = "Default";

            Configuration.UnitOfWork.RegisterFilter(SysConsts.DataFilter.MajorFilter, true);
            Configuration.UnitOfWork.RegisterFilter(SysConsts.DataFilter.ProjectCodeFilter, true);
            Configuration.UnitOfWork.RegisterFilter(SysConsts.DataFilter.ActiveFilter, true);

            IocManager.Register<IUnitOfWork, CooperativeEfUnitOfWork>(DependencyLifeStyle.Transient);
            IocManager.Register<IRepository<User, long>, UserRepository>(DependencyLifeStyle.Transient);
        }

        public override void Initialize()
        {
            IocManager.RegisterAssemblyByConvention(Assembly.GetExecutingAssembly());
        }
    }
}

  

注意標紅的那部分代碼

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM