Ejemplo n.º 1
0
        /// <summary>
        /// 根据配置信息找到或创建工厂,并提供一个会话对象
        /// </summary>
        /// <param name="dac">数据访问配置类</param>
        /// <returns>返回值为一个回话对象</returns>
        public static ISession GetSession(DataAccessorConfiguration dac)
        {
            lock (dict.SyncRoot)
            {
                if (dict.ContainsKey(dac))
                {
                    return((dict[dac] as HBData).Factory.OpenSession());
                }
                else
                {
                    Configuration cfg = new Configuration();
                    foreach (Assembly asse in dac.MappingsAssemblies)
                    {
                        cfg.Configure(dac.ConfigFile).AddAssembly(asse);
                    }
                    if (dac.NamingStrategy != null)
                    {
                        cfg.SetNamingStrategy(dac.NamingStrategy);
                    }
                    ISessionFactory factory = cfg.BuildSessionFactory();

                    NS.Component.NHibernate.NHibernateFactory.Initialize(factory);

                    HBData data = new HBData()
                    {
                        Configuration = cfg, Factory = factory
                    };
                    dict.Add(dac, data);
                    return(factory.OpenSession());
                }
            }
        }
Ejemplo n.º 2
0
 public NHibernateDataAccessor(DataAccessorConfiguration config)
 {
     this.config = config;
     if (config.IsoLevel != null)
     {
         IsoLevel = config.IsoLevel.Value;
     }
 }
Ejemplo n.º 3
0
 public static DataAccessorConfiguration ConfigureAll(this DataAccessorConfiguration configuration, string storageName)
 {
     return(configuration
            .AddStorage($"{storageName}.json", DataSourceType.Json)
            .AddStorage($"{storageName}.xml", DataSourceType.Xml)
            .AddStorage($"{storageName}", DataSourceType.InMemory)
            .AddStorage($@"Data Source={storageName}.db;", DataSourceType.Sqlite));
 }
Ejemplo n.º 4
0
        public WCFNHibernateDataAccessor(DataAccessorConfiguration config)
        {
            this.config = config;
            if (config.IsoLevel != null)
            {
                IsoLevel = config.IsoLevel.Value;
            }

            NHibernateFactory.Initialize(this.config);
        }
Ejemplo n.º 5
0
 /// <summary>
 /// 清理某个数据库连接
 /// </summary>
 /// <param name="dac">传入的参数为构建数据库连接时使用的配置对象</param>
 public static void Clear(DataAccessorConfiguration dac)
 {
     lock (dict.SyncRoot)
     {
         if (dict.ContainsKey(dac))
         {
             HBData hbdata = dict[dac] as HBData;
             dict.Remove(dac);
             hbdata.Factory.Dispose();
             hbdata = null;
         }
     }
 }
Ejemplo n.º 6
0
        public static void Initialize()
        {
            DataAccessorConfiguration config = new DataAccessorConfiguration(); // TODO: 初始化为适当的值

            config.MappingsAssemblies = new List <System.Reflection.Assembly>();
            config.MappingsAssemblies.Add(System.Reflection.Assembly.GetExecutingAssembly());
            config.MappingsAssemblies.AddRange(NS.Framework.Config.PlatformConfig.ServerConfig.DataBaseSetting.GetMappingAssemblys);
            var configFileName = string.Format("{0}-{1}", "car", NS.Framework.Config.PlatformConfig.ServerConfig.DataBaseSetting.ConfigFile);

            //var configFileName = config.ConfigFile;


            if (NS.Framework.Config.PlatformConfig.ServerConfig.ConfigFilePath.EndsWith("bin"))
            {
                config.ConfigFile = System.IO.Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, "bin", configFileName);
            }
            else
            {
                config.ConfigFile = System.IO.Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, configFileName);
            }
            _config = config;
        }
Ejemplo n.º 7
0
 public static void Initialize(DataAccessorConfiguration config)
 {
     _config = config;
 }