Sdílet prostřednictvím


Předávání testů shodnosti technologie OLE DB

Chcete-li vytvořit více konzistentní zprostředkovatelé, poskytuje sada SDK přístupu k datům sadu testů shodnosti technologie OLE DB.Testy kontrolují všechny aspekty Vašeho zprostředkovatele a dávají Vám přiměřenou jistotu, že Váš zprostředkovatel funguje podle očekávání.Můžete najít testy shodnosti technologie OLE DB v sadě Microsoft Data Access SDK.Tato část se zaměřuje na části, které byste měli udělat pro předání testů shodnosti.Informace o spuštění testů shodnosti technologie OLE DB, naleznete v sadě SDK.

Spuštění testů shodnosti

V aplikaci Visual C++ 6.0 přidávají šablony zprostředkovatele technologie OLE DB řadu zapojených funkcí, které Vám umožňují kontrolovat hodnoty a vlastnosti.Většina těchto funkcí byla přidána v reakci na testy shodnosti.

[!POZNÁMKA]

Potřebujete přidat několik ověřovacích funkcí pro Vašeho zprostředkovatele k předání testů shodnosti technologie OLE DB.

Tento zprostředkovatel vyžaduje dvě ověřovací rutiny.První rutina CRowsetImpl::ValidateCommandID je součástí Vaší třídy sady řádků. Je volána při vytváření sady řádků šablonami zprostředkovatele.Ukázka používá tuto rutinu pro oznámení příjemcům, že nejsou podporovány indexy.První volání je na CRowsetImpl::ValidateCommandID (všimněte si, že zprostředkovatel používá definici typu _RowsetBaseClass přidanou v mapě rozhraní pro CMyProviderRowset v tématu Podpora zprostředkovatele pro záložky, takže nemusíte psát tyto dlouhé řádky šablony argumentů).Poté vrátí DB_E_NOINDEX, pokud není index parametru hodnota NULL (to znamená, že chce příjemce na nás použít index).Další informace o ID příkazů naleznete ve specifikaci technologie OLE DB a vyhledejte IOpenRowset::OpenRowset.

Následující kód je ValidateCommandID ověřovací rutinou:

/////////////////////////////////////////////////////////////////////
// MyProviderRS.H
// Class: CMyProviderRowset 

HRESULT ValidateCommandID(DBID* pTableID, DBID* pIndexID)
{
   HRESULT hr = _RowsetBaseClass::ValidateCommandID(pTableID, pIndexID);
   if (hr != S_OK)
      return hr;

   if (pIndexID != NULL)
      return DB_E_NOINDEX;    // Doesn't support indexes

   return S_OK;
}

Šablony zprostředkovatele volají metodu OnPropertyChanged vždy, když někdo změní vlastnost na skupinu DBPROPSET_ROWSET.Pokud chcete zpracovat vlastnosti pro jiné skupiny, přidejte jim příslušný objekt (to znamená, že kontroly DBPROPSET_SESSION přejdou do třídy CMyProviderSession).

Kód nejprve zkontroluje zda je vlastnost propojena do jiného.Pokud je vlastnost zřetězená, nastaví vlastnost DBPROP_BOOKMARKS na hodnotu True.Dodatek C specifikace technologie OLE DB obsahuje informace o vlastnostech.Tyto informace Vám rovněž oznámí, zda je vlastnost zřetězená do jiné.

Můžete také chtít přidat rutinu IsValidValue do Vašeho kódu. Šablony volají IsValidValue při pokusu o nastavení vlastnosti. Pokud požadujete další zpracování při nastavování hodnoty vlastnosti, měli byste přepsat tuto metodu.Může mít jednu z těchto metodu pro každou sadu vlastností.

Problémy dělení na vlákna

Ve výchozím nastavení generuje Průvodce zprostředkovatele technologie OLE DB v Průvodci zprostředkovatele technologie OLE DB knihovny ATL kód pro běh zprostředkovatele v modelu apartment.Pokud se pokusíte spustit tento kód s testy shodnosti, obdržíte nejprve selhání.Důvodem je to, že Ltm.exe, nástroj použitý pro spuštění testů shodnosti technologie OLE DB, je nastaven pro model vláken typu Free.Kód Průvodce zprostředkovatele technologie OLE DB nastavuje model apartmentu pro výkon a snadné použití.

Chcete-li tento problém vyřešit, můžete buď změnit LTM nebo změnit zprostředkovatele.

Chcete-li změnit LTM pro spuštění v režimu vláken typu Apartment

  1. V hlavní nabídce LTM klikněte na Nástroje a poté klikněte na Možnosti.

  2. Na kartě Obecné změňte model vláken z Model vláken typu Free na Model vláken typu Apartment.

Chcete-li změnit zprostředkovatele pro spuštění v režimu vláken typu Free:

  • Ve Vašem projektu zprostředkovatele vyhledávat všechny instance CComSingleThreadModel a nahraďte je CComMultiThreadModel, což by mělo být ve Vašem zdroji dat, relaci a hlavičkách sady řádků.

  • Ve svém souboru .rgs změňte model vláken z Apartment na Oba.

  • Postupujte podle správných pravidel programování pro programování v modelu vláken typu Free (tedy uzamknout zápisy).

Viz také

Koncepty

Pokročilé techniky zprostředkování