/// <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); }
/// <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; }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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)); }
public DefaultConnectionFactory(string connectionString, IDbDialectProvider dialectProvider) : this(connectionString, dialectProvider, true) { }
/// <summary> /// /// </summary> /// <param name="providerName"></param> /// <param name="dialectProvider"></param> public virtual void RegisterDialectProvider(string providerName, IDbDialectProvider dialectProvider) { DialectProviders[providerName] = dialectProvider; }
/// <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); }
/// <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; }