public AbstractRepository() { sessionFactory = RepositoryFramework.GetSessionFactory(typeof(TEntity)); if (sessionFactory == null) { throw new ArgumentNullException("sessionFactory", String.Format("类型 {0} 未配置 IShardSessionFactory", typeof(TEntity).FullName)); } }
public void Load() { var shardNode = section.TryGetNode("shard"); if (shardNode != null) { var dst = shardNode.TryGetValue("defaultStrategy"); if (!String.IsNullOrEmpty(dst)) { defaultStrategyType = Type.GetType(dst); } defaultAttr.Add("shard", shardNode.TryGetValue("defaultShard")); defaultSessionFactory = CreateShardSessionFactory(shardNode, "defaultSessionFactory"); foreach (var item in shardNode.TryGetNodes("entities/entity")) { var entityType = Type.GetType(item.TryGetValue("type")); if (entityType == null) { throw new ArgumentNullException("entityType"); } var stategyString = item.TryGetValue("strategy"); Type strategyType = null; if (!String.IsNullOrEmpty(stategyString)) { strategyType = Type.GetType(stategyString); } if (strategyType == null) { strategyType = defaultStrategyType; } if (strategyType == null) { throw new PlatformException("类型 {0} 没有定义分区策略", entityType.FullName); } RegisterShardStragety(entityType, strategyType, item.Attributes); var factoryString = item.TryGetValue("sessionFactory"); if (!String.IsNullOrEmpty(factoryString)) { Type factoryType = Type.GetType(factoryString); RegisterShardSessionFactory(entityType, factoryType); } } } }