Delen via


Upgrade uitvoeren naar Azure Search .NET SDK versie 3

Als u versie 2.0 of ouder van de Azure Search .NET SDK gebruikt, helpt dit artikel u bij het upgraden van uw toepassing om versie 3 te gebruiken.

Zie Azure Search gebruiken vanuit een .NET-toepassing voor een algemeen overzicht van de SDK, inclusief voorbeelden.

Versie 3 van de Azure Search .NET SDK bevat enkele wijzigingen uit eerdere versies. Deze zijn meestal klein, dus het wijzigen van uw code moet slechts minimale inspanning vereisen. Zie Stappen om een upgrade uit te voeren voor instructies over het wijzigen van uw code voor het gebruik van de nieuwe SDK-versie.

Notitie

Als u versie 1.0.2-preview of ouder gebruikt, moet u eerst upgraden naar versie 1.1 en vervolgens upgraden naar versie 3. Zie Upgraden naar azure Search .NET SDK versie 1.1 voor instructies.

Uw Azure Search-service-exemplaar ondersteunt verschillende REST API-versies, waaronder de nieuwste. U kunt een versie blijven gebruiken wanneer deze niet meer de meest recente versie is, maar u wordt aangeraden uw code te migreren om de nieuwste versie te gebruiken. Wanneer u de REST API gebruikt, moet u de API-versie opgeven in elke aanvraag via de parameter api-versie. Wanneer u de .NET SDK gebruikt, bepaalt de versie van de SDK die u gebruikt de bijbehorende versie van de REST API. Als u een oudere SDK gebruikt, kunt u die code blijven uitvoeren zonder wijzigingen, zelfs als de service wordt bijgewerkt om een nieuwere API-versie te ondersteunen.

Wat is er nieuw in versie 3

Versie 3 van de Azure Search .NET SDK is gericht op de meest recente algemeen beschikbare versie van de Azure Search REST API, met name 2016-09-01. Dit maakt het mogelijk om veel nieuwe functies van Azure Search te gebruiken vanuit een .NET-toepassing, waaronder het volgende:

Stappen voor het upgraden

Werk eerst uw NuGet-referentie bij voor Microsoft.Azure.Search het gebruik van de NuGet Pakketbeheer Console of door met de rechtermuisknop op uw projectverwijzingen te klikken en NuGet-pakketten beheren te selecteren... in Visual Studio.

Zodra NuGet de nieuwe pakketten en hun afhankelijkheden heeft gedownload, bouwt u uw project opnieuw op. Afhankelijk van hoe uw code is gestructureerd, kan deze opnieuw worden opgebouwd. Zo ja, dan bent u klaar om te gaan!

Als uw build mislukt, ziet u als volgt een buildfout:

Program.cs(31,45,31,86): error CS0266: Cannot implicitly convert type 'Microsoft.Azure.Search.ISearchIndexClient' to 'Microsoft.Azure.Search.SearchIndexClient'. An explicit conversion exists (are you missing a cast?)

De volgende stap is het oplossen van deze buildfout. Zie Belangrijke wijzigingen in versie 3 voor meer informatie over wat de fout veroorzaakt en hoe u deze kunt oplossen.

Mogelijk ziet u aanvullende buildwaarschuwingen met betrekking tot verouderde methoden of eigenschappen. De waarschuwingen bevatten instructies over wat u moet gebruiken in plaats van de afgeschafte functie. Als uw toepassing bijvoorbeeld de IndexingParameters.Base64EncodeKeys eigenschap gebruikt, krijgt u een waarschuwing met de melding "This property is obsolete. Please create a field mapping using 'FieldMapping.Base64Encode' instead."

Zodra u buildfouten hebt opgelost, kunt u desgewenst wijzigingen aanbrengen in uw toepassing om te profiteren van nieuwe functionaliteit. Nieuwe functies in de SDK worden beschreven in wat er nieuw is in versie 3.

Belangrijke wijzigingen in versie 3

Er is een klein aantal belangrijke wijzigingen in versie 3 waarvoor mogelijk codewijzigingen nodig zijn, naast het opnieuw opbouwen van uw toepassing.

Retourtype Indexes.GetClient

De Indexes.GetClient methode heeft een nieuw retourtype. Eerder werd SearchIndexClienthet geretourneerd, maar dit is gewijzigd ISearchIndexClient in versie 2.0-preview en die wijziging wordt doorgevoerd in versie 3. Dit is om klanten te ondersteunen die de GetClient methode voor eenheidstests willen nadoen door een gesimuleerde implementatie van ISearchIndexClient.

Voorbeeld

Als uw code er als volgt uitziet:

SearchIndexClient indexClient = serviceClient.Indexes.GetClient("hotels");

U kunt dit wijzigen om eventuele buildfouten op te lossen:

ISearchIndexClient indexClient = serviceClient.Indexes.GetClient("hotels");

AnalyzerName, DataType en andere zijn niet langer impliciet converteerbaar naar tekenreeksen

Er zijn veel typen in de Azure Search .NET SDK die zijn afgeleid van ExtensibleEnum. Voorheen waren deze typen allemaal impliciet converteerbaar naar type string. Er is echter een fout ontdekt in de Object.Equals implementatie voor deze klassen en het oplossen van de fout die nodig is om deze impliciete conversie uit te schakelen. Expliciete conversie naar string is nog steeds toegestaan.

Voorbeeld

Als uw code er als volgt uitziet:

var customTokenizerName = TokenizerName.Create("my_tokenizer"); 
var customTokenFilterName = TokenFilterName.Create("my_tokenfilter"); 
var customCharFilterName = CharFilterName.Create("my_charfilter"); 
 
var index = new Index();
index.Analyzers = new Analyzer[] 
{ 
    new CustomAnalyzer( 
        "my_analyzer",  
        customTokenizerName,  
        new[] { customTokenFilterName },  
        new[] { customCharFilterName }), 
}; 

U kunt dit wijzigen om eventuele buildfouten op te lossen:

const string CustomTokenizerName = "my_tokenizer"; 
const string CustomTokenFilterName = "my_tokenfilter"; 
const string CustomCharFilterName = "my_charfilter"; 
 
var index = new Index();
index.Analyzers = new Analyzer[] 
{ 
    new CustomAnalyzer( 
        "my_analyzer",  
        CustomTokenizerName,  
        new TokenFilterName[] { CustomTokenFilterName },  
        new CharFilterName[] { CustomCharFilterName })
}; 

Verouderde leden verwijderd

Mogelijk ziet u buildfouten met betrekking tot methoden of eigenschappen die zijn gemarkeerd als verouderd in versie 2.0-preview en die vervolgens zijn verwijderd in versie 3. Als u dergelijke fouten tegenkomt, kunt u deze als volgt oplossen:

  • Als u deze constructor gebruikt, ScoringParameter(string name, string value)gebruikt u deze in plaats daarvan: ScoringParameter(string name, IEnumerable<string> values)
  • Als u de ScoringParameter.Value eigenschap gebruikt, gebruikt u in plaats daarvan de ScoringParameter.Values eigenschap of de ToString methode.
  • Als u de SearchRequestOptions.RequestId eigenschap gebruikt, gebruikt u in plaats daarvan de ClientRequestId eigenschap.

Preview-functies verwijderd

Als u een upgrade uitvoert van versie 2.0-preview naar versie 3, moet u er rekening mee houden dat de ondersteuning voor JSON- en CSV-parsering voor Blob-indexeerfuncties is verwijderd omdat deze functies nog in preview zijn. Met name zijn de volgende methoden van de IndexingParametersExtensions klasse verwijderd:

  • ParseJson
  • ParseJsonArrays
  • ParseDelimitedTextFiles

Als uw toepassing een harde afhankelijkheid heeft van deze functies, kunt u geen upgrade uitvoeren naar versie 3 van de Azure Search .NET SDK. U kunt versie 2.0-preview blijven gebruiken. Houd er echter rekening mee dat we het gebruik van preview-SDK's in productietoepassingen niet aanbevelen. Preview-functies zijn alleen bedoeld voor evaluatie en kunnen worden gewijzigd.

Conclusie

Als u meer informatie nodig hebt over het gebruik van de Azure Search .NET SDK, raadpleegt u de instructies voor .NET.

We zijn blij met uw feedback over de SDK. Als u problemen ondervindt, kunt u ons gerust vragen om hulp bij Stack Overflow. Als u een fout vindt, kunt u een probleem in de Azure .NET SDK-GitHub opslagplaats opslaan. Zorg ervoor dat u de titel van het probleem voorafzet met [Azure Search].

Bedankt voor het gebruik van Azure Search.