Example #1
0
 /// <summary>
 /// Creates a new instance of <see cref="DbQuery{TEntity, TKey}"/>
 /// </summary>
 /// <param name="database">The target <see cref="Database"/> to query to</param>
 /// <param name="sqlDialectProvider">The <see cref="IDbDialectProvider"/> to generate the sql commands</param>
 public DbQuery(Database database, IDbDialectProvider sqlDialectProvider)
 {
     Database   = database;
     Schema     = DbTableSchema.Create(typeof(TEntity));
     Provider   = sqlDialectProvider;
     PrimaryKey = Schema.Columns.Single(i => i.IsPrimaryKey);
 }
Example #2
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="connectionString"></param>
 /// <param name="dialectProvider"></param>
 /// <param name="setGlobalDialectProvider"></param>
 public DefaultConnectionFactory(string connectionString, IDbDialectProvider dialectProvider, bool setGlobalDialectProvider)
 {
     ConnectionString      = connectionString;
     AutoDisposeConnection = connectionString != ":memory:";
     this.ConnectionFilter = x => x;
     this.DialectProvider  = dialectProvider;
 }
Example #3
0
        /// <summary>
        /// 创建StatelessDbSession对象
        /// </summary>
        /// <param name="connectionString">连接字符串</param>
        /// <param name="dbDialectProvider">数据库特性对象提供程序</param>
        /// <param name="mappingXml">实体关系映射配置Xml文本</param>
        /// <returns>返回StatelessDbSession对象</returns>
        public virtual StatelessDbSession CreateStatelessDbSession(string connectionString, IDbDialectProvider dbDialectProvider, string mappingXml)
        {
            ISessionFactory sf = null;
            while (!sessionFactories.TryGetValue(connectionString, out sf))
            {
                IDictionary<string, string> dbSetting = new Dictionary<string, string>
                {
                    ["dialect"] = dbDialectProvider.DialectName,
                    ["connection.connection_string"] = connectionString,
                };
                CustomizeNHSessionFactory(dbSetting);
                var x = new NHibernate.Cfg.Configuration();
                x = x.AddProperties(dbSetting);
                //允许采用配置文件修改NHibernate配置
                var hc = ConfigurationManager.GetSection(CfgXmlHelper.CfgSectionName) as NHibernate.Cfg.IHibernateConfiguration;
                if ((hc != null && hc.SessionFactory != null) || File.Exists(GetDefaultConfigurationFilePath()))
                {
                    x = x.Configure();
                }
                if (System.Transactions.Transaction.Current != null)
                {
                    //如果在分布式事务范围内,就将连接释放模式更改为on_close模式,防止auto模式下,重新获取连接,导致分布式事务升级
                    x.AddProperties(new Dictionary<string, string> {["connection.release_mode"] = "on_close" });
                }
                //添加实体关系映射
                if (!string.IsNullOrWhiteSpace(mappingXml))
                {
                    x.AddXml(mappingXml);
                }

                sf = x.BuildSessionFactory();
                sessionFactories.TryAdd(connectionString, sf);
            }
            return new StatelessDbSession(sf, connectionString);
        }
Example #4
0
 /// <summary>
 /// Creates a new instance of <see cref="DbEntityCollection{TEntity, TKey}"/>
 /// </summary>
 /// <param name="database">The <see cref="Database"/> object to use</param>
 /// <param name="sqlDialectProvider">The <see cref="IDbDialectProvider"/> to use</param>
 public DbEntityCollection(Database database, IDbDialectProvider sqlDialectProvider)
 {
     _query = new DbQuery <TEntity, TKey>(database, sqlDialectProvider);
 }
Example #5
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="dbConnectionStringOrFilePath"></param>
        /// <param name="dialectProvider"></param>
        /// <returns></returns>
        public IDbConnection ToDbConnection(string dbConnectionStringOrFilePath, IDbDialectProvider dialectProvider)
        {
            var dbConn = dialectProvider.CreateConnection(dbConnectionStringOrFilePath, options: null);

            return(dbConn);
        }
Example #6
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="dbFactory"></param>
 /// <param name="namedConnection"></param>
 /// <param name="connectionString"></param>
 /// <param name="dialectProvider"></param>
 public static void RegisterConnection(this IDbConnectionFactory dbFactory, string namedConnection, string connectionString, IDbDialectProvider dialectProvider)
 {
     ((DefaultConnectionFactory)dbFactory).RegisterConnection(namedConnection, connectionString, dialectProvider);
 }
Example #7
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="namedConnection"></param>
 /// <param name="connectionString"></param>
 /// <param name="dialectProvider"></param>
 public virtual void RegisterConnection(string namedConnection, string connectionString, IDbDialectProvider dialectProvider)
 {
     RegisterConnection(namedConnection, new DefaultConnectionFactory(connectionString, dialectProvider, setGlobalDialectProvider: false));
 }
Example #8
0
 public DefaultConnectionFactory(string connectionString, IDbDialectProvider dialectProvider)
     : this(connectionString, dialectProvider, true)
 {
 }
Example #9
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="providerName"></param>
 /// <param name="dialectProvider"></param>
 public virtual void RegisterDialectProvider(string providerName, IDbDialectProvider dialectProvider)
 {
     DialectProviders[providerName] = dialectProvider;
 }
Example #10
0
 /// <summary>
 /// 创建StatelessDbSession对象,不使用实体关系映射
 /// </summary>
 /// <param name="connectionString">连接字符串</param>
 /// <param name="dbDialectProvider">数据库特性对象提供程序</param>
 /// <returns>返回StatelessDbSession对象</returns>
 public virtual StatelessDbSession CreateStatelessDbSession(string connectionString, IDbDialectProvider dbDialectProvider)
 {
     return CreateStatelessDbSession(connectionString, dbDialectProvider, string.Empty);
 }
Example #11
0
 /// <summary>
 /// Creates a new instance of <see cref="DbUnitOfWork{TEntity, TKey}"/>
 /// </summary>
 /// <param name="database">The target <see cref="Database"/> to create the implementation sql commands</param>
 /// <param name="sqlDialectProvider">The <see cref="IDbDialectProvider"/> to generate the sql commands</param>
 public DbUnitOfWork(Database database, IDbDialectProvider sqlDialectProvider)
 {
     _entities          = new DbEntityCollection <TEntity, TKey>(database, sqlDialectProvider);
     Database           = database;
     SqlDialectProvider = sqlDialectProvider;
 }