예제 #1
0
        /// <summary>
        /// Возвращает версию нейросети по идентификатору версии в рамках нейросети.
        /// </summary>
        /// <param name="versionInternalID">Идентификатор версии в рамках нейсросети.</param>
        /// <param name="throwNotFoundException">Генерирует исключение в случае отсутствия версии с заданным идентификатором в рамках нейросети.</param>
        public SkyNetworkVersion GetVersion(int versionInternalID, bool throwNotFoundException)
        {
            if (versionInternalID == 0)
            {
                throw new ArgumentNullException("versionInternalID");
            }

            SkyNetworkVersion version = null;

            if (!this.VersionsByInternalID.ContainsKey(versionInternalID))
            {
                //получаем версию по идентификатору в рамках нейросети.
                version = this.Context.ObjectAdapters.NetworkVersions.GetObject(dbSet => dbSet.FirstOrDefault(x =>
                                                                                                              x.NetworkID == this.ID && x.InternalID == versionInternalID));

                //добавляем версию в словарь.
                if (version != null)
                {
                    this.VersionsByInternalID.Add(versionInternalID, version);
                }
            }
            else
            {
                version = this.VersionsByInternalID[versionInternalID];
            }

            //ругаемся при отсутствии версии.
            if (throwNotFoundException && version == null)
            {
                throw new Exception(string.Format("Network version with InternalID={0} for network [{1}] is not exists.", versionInternalID, this.Name));
            }

            //возвращаем версию.
            return(version);
        }
예제 #2
0
        /// <summary>
        /// Создаёт новый экземпляр версии нейросети, без сохранения в базу данных.
        /// </summary>
        public SkyNetworkVersion CreateVersion()
        {
            SkyNetworkVersion networkVersion = this.Context.ObjectAdapters.NetworkVersions.CreateObject();

            networkVersion.NetworkID = this.ID;
            return(networkVersion);
        }
예제 #3
0
        /// <summary>
        /// Добавляет созданную версию в словарь версий по внутренним идентификаторам.
        /// </summary>
        /// <param name="createdVersion">Созданная версия нейросети.</param>
        internal void AddCreatedVersion(SkyNetworkVersion createdVersion)
        {
            if (createdVersion == null)
            {
                throw new ArgumentNullException("createdVersion");
            }

            //проверяем, что версия создана.
            createdVersion.CheckExists();

            //проверяем наличие внутреннего идентификатора.
            createdVersion.CheckInternalID();

            //добавляем версию в словарь.
            if (!this.VersionsByInternalID.ContainsKey(createdVersion.InternalID))
            {
                this.VersionsByInternalID.Add(createdVersion.InternalID, createdVersion);
            }
        }