コード例 #1
0
        internal static DynamicTypeDefinitionManager Create(DynamicMetadataProvider metadataProvider, Type dynamicDbContextType)
        {
            var typeDefinitionManager = new DynamicTypeDefinitionManager(dynamicDbContextType, metadataProvider.InformationSchema);

            InitializeDbContext(metadataProvider, dynamicDbContextType, typeDefinitionManager);
            return(typeDefinitionManager);
        }
コード例 #2
0
        private DynamicTypeDefinitionManager(DbContextOptions options, DynamicMetadataProvider metadataProvider, ConstructorInfo dynamicDbContextCtor)
        {
            MetadataProvider = metadataProvider;

            NewExpression ctor = Expression.New(dynamicDbContextCtor, Expression.Constant(options), Expression.Constant(this));

            _dynamicDbContextCtor = Expression.Lambda <Func <DynamicDbContext> >(ctor).Compile();

            _dynamicTypeDefinitions = new Dictionary <Type, DynamicTypeDefinition>();
            _tableNameTypes         = new Dictionary <String, Type>();
        }
コード例 #3
0
        public static DynamicTypeDefinitionManager Create(DbContextOptions options, DynamicMetadataProvider metadataProvider)
        {
            int             dynamicDbContextIndex = Interlocked.Increment(ref _dynamicDbContextIndex);
            Type            dynamicDbContextType  = Type.GetType(typeof(DynamicDbContext).FullName + dynamicDbContextIndex.ToString("D2"));
            ConstructorInfo ctor = dynamicDbContextType.GetConstructor(new Type[] { typeof(DbContextOptions), typeof(DynamicTypeDefinitionManager) });
            var             typeDefinitionManager = new DynamicTypeDefinitionManager(options, metadataProvider, ctor);

            ctor = dynamicDbContextType.GetConstructor(new Type[] { typeof(DbContextOptions), typeof(DynamicModelBuilder).MakeByRefType() });
            var dbContext = (DynamicDbContext)ctor.Invoke(new Object[] { options, new DynamicModelBuilder(typeDefinitionManager) });

            _ = dbContext.Model; //force OnModelCreating
            return(typeDefinitionManager);
        }
コード例 #4
0
        public static DynamicTypeDefinitionManager Create(DynamicMetadataProvider metadataProvider)
        {
            int  dynamicDbContextIndex = Interlocked.Increment(ref _dynamicDbContextIndex);
            Type dynamicDbContextType  = Type.GetType(typeof(DynamicDbContext).FullName + dynamicDbContextIndex.ToString("D2"));

            if (dynamicDbContextType == null)
            {
                throw new InvalidOperationException("DynamicDbContext out range " + dynamicDbContextIndex.ToString());
            }

            var typeDefinitionManager = new DynamicTypeDefinitionManager(dynamicDbContextType, metadataProvider.InformationSchema);

            ConstructorInfo  ctor    = dynamicDbContextType.GetConstructor(new Type[] { typeof(DbContextOptions), typeof(DynamicModelBuilder).MakeByRefType() });
            DbContextOptions options = CreateOptions(metadataProvider.InformationSchema.DynamicDbContextOptions, dynamicDbContextType);
            var dbContext            = (DynamicDbContext)ctor.Invoke(new Object[] { options, new DynamicModelBuilder(metadataProvider, typeDefinitionManager) });

            _ = dbContext.Model; //force OnModelCreating
            return(typeDefinitionManager);
        }
 public virtual DynamicTypeDefinitionManager Create(DynamicMetadataProvider metadataProvider)
 {
     return(DynamicTypeDefinitionManager.Create(metadataProvider, CreateDynamicDbContextType()));
 }
コード例 #6
0
 public override DynamicTypeDefinitionManager Create(DynamicMetadataProvider metadataProvider)
 {
     return(EmitDynamicTypeDefinitionManager.Create(metadataProvider, CreateDynamicDbContextType()));
 }