Example #1
0
        private IDatabase CreateDatabase(ContextServiceContext context)
        {
            var factory = context.ServiceProvider.TryGetService <IDatabaseFactory>();

            if (factory != null)
            {
                return(factory.Create(context.Options));
            }

            IDatabase database;

            if (context.Options.Provider != null && context.Options.ConnectionString != null)
            {
                database = new Database(context.Options.ConnectionString, context.Options.Provider).TrySetServiceProvider(context.ServiceProvider);
            }
            else
            {
                throw new InvalidOperationException(SR.GetString(SRKind.NotSupportDatabaseFactory));
            }

            if (EntityTransactionScope.IsInTransaction())
            {
                database.BeginTransaction();
                EntityTransactionScope.Current.Addransaction((string)context.Options.ConnectionString, this);
            }

            return(database);
        }
Example #2
0
        /// <summary>
        /// 初始化 <see cref="DefaultContextService"/> 类的新实例。
        /// </summary>
        /// <param name="context"></param>
        /// <param name="databaseFactory">一个用于创建 <see cref="IDatabase"/> 的工厂函数。</param>
        public DefaultContextService(ContextServiceContext context)
            : base(context)
        {
            _databaseCreateor = () => CreateDatabase(context);

            QueryPolicy = new DefaultQueryPolicy(Provider);
        }
Example #3
0
 /// <summary>
 /// 初始化 <see cref="ContextServiceBase"/> 类的新实例。
 /// </summary>
 /// <param name="context"></param>
 protected ContextServiceBase(ContextServiceContext context)
 {
     Provider        = context.Options.Provider;
     ContextType     = context.ContextType;
     ServiceProvider = context.ServiceProvider;
     Options         = context.Options;
     InstanceName    = ContextInstanceManager.TryAdd(context.Options);
 }
Example #4
0
 IContextService IContextProvider.CreateContextService(ContextServiceContext context)
 {
     return(new DefaultContextService(context));
 }