Loading...
Area: Episerver Commerce
Applies to versions: 10 and higher
Other versions:

Low-level APIs

Recommendations [hide]

Note: The recommended approach to working with the catalog is to use the Catalog content APIs. However, Episerver Commerce also has a number of low-level APIs for working with the catalog. Most of them are considered legacy, but can be useful in specific scenarios.

Classes in this topic for working with catalogs are in the Mediachase.Commerce.Catalog namespace.

Overview

  • Context classes are singletons that retrieve and save data from a database and put that data into collections or Data Transfer Objects (DTOs).
  • Configuration classes are singletons that retrieve configuration information from config files.
  • Manager classes also retrieve and save data from the database. Sometimes the context class uses the manager classes to access the database.
  • Primary interface: CatalogContext.Current.
  • The Current property is the singleton instance of the object retrieves and updates information in the catalog.
  • The current property is an instance of a class which implements the ICatalogSystem interface. By default, Mediachase.Commerce.Catalog.Impl.CatalogContextImpl is used. This is located in BusinessLayer > CommerceLib > Catalog > Impl > SiteContextImpl.cs.
  • eCommerce Framework (ECF) also provides a starting version of a web service implementation class: Mediachase.Commerce.Catalog.Impl.CatalogContextProxyImpl > SiteContextProxyImpl.cs.
  • The ECF Catalog interface returns either DTOs or Objects. The DTOs represent typed datasets. Typed dataset resembles the database with one-to-one mapping to related tables and their fields. Objects are a bit leaner and easier to work with, and are recommended for data retrieval.
  • The DTO classes are located in BusinessLayer/CommerceLib/Catalog/Dto.
  • The objects are located in BusinessLayer/CommerceLib/Catalog/Objects.
  • The Entry and CatalogNode objects are the most fundamental objects you will access.
  • DTOs are best for saving catalog data.

Example: looking for changed data in the DTO and saving new, changed, or deleted data

ICatalogSystem target = CatalogContext.Current;
CatalogDto catalogs = target.GetCatalogDto();
foreach (CatalogDto.CatalogRow catalog in catalogs.Catalog)
  {
    existingCatalogId = catalog.CatalogId;
    break;
  }

CatalogEntryDto dto = target.GetCatalogEntriesDto(existingCatalogId, response);
// Catalog entry create and set properties
CatalogEntryDto.CatalogEntryRow catalogEntryRow = dto.CatalogEntry.NewCatalogEntryRow();
catalogEntryRow.ApplicationId = CatalogConfiguration.Instance.ApplicationId;
dto.CatalogEntry.AddCatalogEntryRow(catalogEntryRow);
target.SaveCatalogEntry(dto);

You can also create objects from DTO objects. For example, there is a constructor for CatalogNode that lets you pass a CatalogNodeRow in:

public CatalogNode(CatalogNodeDto.CatalogNodeRow input) 
  • To access the meta data fields, use the object's ItemAttributes property.
  • The Entry and CatalogNode objects contain virtually all of the associated information as properties.
  • Other classes useful in retrieving other catalog data reside in BusinessLayer/CommerceLib/Catalog/Managers.
Do you find this information helpful? Please log in to provide feedback.

Last updated: Nov 28, 2016

Recommendations [hide]