/// <summary> Initializes the class members</summary>
        private void InitClassMembers()
        {
            _comments = new ProductSearchEngine.CollectionClasses.CommentCollection();
            _comments.SetContainingEntityInfo(this, "Product");

            _productKeywords = new ProductSearchEngine.CollectionClasses.ProductKeywordCollection();
            _productKeywords.SetContainingEntityInfo(this, "Product");

            _productPhotos = new ProductSearchEngine.CollectionClasses.ProductPhotoCollection();
            _productPhotos.SetContainingEntityInfo(this, "Product");

            _productSpecifications = new ProductSearchEngine.CollectionClasses.ProductSpecificationCollection();
            _productSpecifications.SetContainingEntityInfo(this, "Product");
            _brandReturnsNewIfNotFound = false;
            _categoryReturnsNewIfNotFound = false;
            _storeReturnsNewIfNotFound = false;
            PerformDependencyInjection();

            // __LLBLGENPRO_USER_CODE_REGION_START InitClassMembers
            // __LLBLGENPRO_USER_CODE_REGION_END
            OnInitClassMembersComplete();
        }
        /// <summary>Private CTor for deserialization</summary>
        /// <param name="info"></param>
        /// <param name="context"></param>
        protected ProductEntity(SerializationInfo info, StreamingContext context)
            : base(info, context)
        {
            _comments = (ProductSearchEngine.CollectionClasses.CommentCollection)info.GetValue("_comments", typeof(ProductSearchEngine.CollectionClasses.CommentCollection));
            _alwaysFetchComments = info.GetBoolean("_alwaysFetchComments");
            _alreadyFetchedComments = info.GetBoolean("_alreadyFetchedComments");

            _productKeywords = (ProductSearchEngine.CollectionClasses.ProductKeywordCollection)info.GetValue("_productKeywords", typeof(ProductSearchEngine.CollectionClasses.ProductKeywordCollection));
            _alwaysFetchProductKeywords = info.GetBoolean("_alwaysFetchProductKeywords");
            _alreadyFetchedProductKeywords = info.GetBoolean("_alreadyFetchedProductKeywords");

            _productPhotos = (ProductSearchEngine.CollectionClasses.ProductPhotoCollection)info.GetValue("_productPhotos", typeof(ProductSearchEngine.CollectionClasses.ProductPhotoCollection));
            _alwaysFetchProductPhotos = info.GetBoolean("_alwaysFetchProductPhotos");
            _alreadyFetchedProductPhotos = info.GetBoolean("_alreadyFetchedProductPhotos");

            _productSpecifications = (ProductSearchEngine.CollectionClasses.ProductSpecificationCollection)info.GetValue("_productSpecifications", typeof(ProductSearchEngine.CollectionClasses.ProductSpecificationCollection));
            _alwaysFetchProductSpecifications = info.GetBoolean("_alwaysFetchProductSpecifications");
            _alreadyFetchedProductSpecifications = info.GetBoolean("_alreadyFetchedProductSpecifications");
            _brand = (BrandEntity)info.GetValue("_brand", typeof(BrandEntity));
            if(_brand!=null)
            {
                _brand.AfterSave+=new EventHandler(OnEntityAfterSave);
            }
            _brandReturnsNewIfNotFound = info.GetBoolean("_brandReturnsNewIfNotFound");
            _alwaysFetchBrand = info.GetBoolean("_alwaysFetchBrand");
            _alreadyFetchedBrand = info.GetBoolean("_alreadyFetchedBrand");

            _category = (CategoryEntity)info.GetValue("_category", typeof(CategoryEntity));
            if(_category!=null)
            {
                _category.AfterSave+=new EventHandler(OnEntityAfterSave);
            }
            _categoryReturnsNewIfNotFound = info.GetBoolean("_categoryReturnsNewIfNotFound");
            _alwaysFetchCategory = info.GetBoolean("_alwaysFetchCategory");
            _alreadyFetchedCategory = info.GetBoolean("_alreadyFetchedCategory");

            _store = (StoreEntity)info.GetValue("_store", typeof(StoreEntity));
            if(_store!=null)
            {
                _store.AfterSave+=new EventHandler(OnEntityAfterSave);
            }
            _storeReturnsNewIfNotFound = info.GetBoolean("_storeReturnsNewIfNotFound");
            _alwaysFetchStore = info.GetBoolean("_alwaysFetchStore");
            _alreadyFetchedStore = info.GetBoolean("_alreadyFetchedStore");
            this.FixupDeserialization(FieldInfoProviderSingleton.GetInstance(), PersistenceInfoProviderSingleton.GetInstance());
            // __LLBLGENPRO_USER_CODE_REGION_START DeserializationConstructor
            // __LLBLGENPRO_USER_CODE_REGION_END
        }