Uppgradera till Azure Search .NET SDK version 3
Om du använder version 2.0-förhandsversion eller äldre av Azure Search .NET SDK hjälper den här artikeln dig att uppgradera ditt program till att använda version 3.
En mer allmän genomgång av SDK inklusive exempel finns i Använda Azure Search från ett .NET-program.
Version 3 av Azure Search .NET SDK innehåller vissa ändringar från tidigare versioner. Dessa är mestadels mindre, så att ändra koden bör bara kräva minimal ansträngning. Se Steg för att uppgradera för instruktioner om hur du ändrar din kod för att använda den nya SDK-versionen.
Anteckning
Om du använder version 1.0.2-förhandsversion eller äldre bör du först uppgradera till version 1.1 och sedan uppgradera till version 3. Anvisningar finns i Uppgradera till Azure Search .NET SDK version 1.1 .
Din Azure tjänsten Search-instans stöder flera REST API-versioner, inklusive den senaste. Du kan fortsätta att använda en version när den inte längre är den senaste, men vi rekommenderar att du migrerar koden för att använda den senaste versionen. När du använder REST-API:et måste du ange API-versionen i varje begäran via api-versionsparametern. När du använder .NET SDK avgör den version av SDK:n som du använder motsvarande version av REST-API:et. Om du använder en äldre SDK kan du fortsätta att köra koden utan ändringar även om tjänsten har uppgraderats för att stödja en nyare API-version.
Nyheter i version 3
Version 3 av Azure Search .NET SDK är avsedd för den senaste allmänt tillgängliga versionen av REST-API:et för Azure Search, särskilt 2016-09-01. Detta gör det möjligt att använda många nya funktioner i Azure Search från ett .NET-program, inklusive följande:
- Anpassade analysverktyg
- stöd för Azure Blob Storage och Azure Table Storage indexerare
- Indexerareanpassning via fältmappningar
- Stöd för ETags för säker samtidig uppdatering av indexdefinitioner, indexerare och datakällor
- Stöd för att skapa indexfältdefinitioner deklarativt genom att dekorera modellklassen och använda den nya
FieldBuilder
klassen. - Stöd för .NET Core och .NET Portable Profile 111
Steg för att uppgradera
Uppdatera först NuGet-referensen för Microsoft.Azure.Search
att antingen använda NuGet Package Manager-konsolen eller genom att högerklicka på dina projektreferenser och välja "Hantera NuGet-paket..." i Visual Studio.
När NuGet har laddat ned de nya paketen och deras beroenden återskapar du projektet. Beroende på hur koden är strukturerad kan den återskapas. I så fall är du redo att gå!
Om bygget misslyckas bör du se ett byggfel som liknar följande:
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?)
Nästa steg är att åtgärda det här byggfelet. Mer information om vad som orsakar felet och hur du åtgärdar det finns i Icke-bakåtkompatibla ändringar i version 3 .
Du kan se ytterligare byggvarningar relaterade till föråldrade metoder eller egenskaper. Varningarna innehåller instruktioner om vad du ska använda i stället för den inaktuella funktionen. Om ditt program till exempel använder IndexingParameters.Base64EncodeKeys
egenskapen bör du få en varning som säger "This property is obsolete. Please create a field mapping using 'FieldMapping.Base64Encode' instead."
När du har åtgärdat eventuella byggfel kan du göra ändringar i ditt program för att dra nytta av nya funktioner om du vill. Nya funktioner i SDK beskrivs i Nyheter i version 3.
Icke-bakåtkompatibla ändringar i version 3
Det finns ett litet antal icke-bakåtkompatibla ändringar i version 3 som kan kräva kodändringar utöver att återskapa programmet.
Returtyp för Indexes.GetClient
Metoden Indexes.GetClient
har en ny returtyp. Tidigare returnerades SearchIndexClient
, men detta ändrades till ISearchIndexClient
i version 2.0-förhandsversion, och den ändringen överförs till version 3. Detta är för att stödja kunder som vill håna GetClient
metoden för enhetstester genom att returnera en simulerad implementering av ISearchIndexClient
.
Exempel
Om koden ser ut så här:
SearchIndexClient indexClient = serviceClient.Indexes.GetClient("hotels");
Du kan ändra det till detta för att åtgärda eventuella byggfel:
ISearchIndexClient indexClient = serviceClient.Indexes.GetClient("hotels");
AnalyzerName, DataType och andra kan inte längre implicit konverteras till strängar
Det finns många typer i Azure Search .NET SDK som härleds från ExtensibleEnum
. Tidigare var alla dessa typer implicit konvertibla till typen string
. En bugg upptäcktes dock i implementeringen Object.Equals
för dessa klasser och åtgärda felet som krävdes för att inaktivera den här implicita konverteringen. Explicit konvertering till string
tillåts fortfarande.
Exempel
Om koden ser ut så här:
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 }),
};
Du kan ändra det till detta för att åtgärda eventuella byggfel:
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 })
};
Föråldrade medlemmar har tagits bort
Du kan se build-fel relaterade till metoder eller egenskaper som har markerats som föråldrade i version 2.0-förhandsversionen och sedan tagits bort i version 3. Om du stöter på sådana fel kan du lösa dem på följande sätt:
- Om du använde den här konstruktorn:
ScoringParameter(string name, string value)
använder du den här i stället:ScoringParameter(string name, IEnumerable<string> values)
- Om du använder
ScoringParameter.Value
egenskapen använderScoringParameter.Values
du egenskapen ellerToString
metoden i stället. - Om du använde
SearchRequestOptions.RequestId
egenskapen använder du egenskapenClientRequestId
i stället.
Förhandsgranskningsfunktioner har tagits bort
Om du uppgraderar från version 2.0-förhandsversion till version 3 bör du vara medveten om att stöd för JSON- och CSV-parsning för Blob Indexers har tagits bort eftersom dessa funktioner fortfarande är i förhandsversion. Mer specifikt har följande metoder för IndexingParametersExtensions
klassen tagits bort:
ParseJson
ParseJsonArrays
ParseDelimitedTextFiles
Om ditt program har ett hårt beroende av dessa funktioner kan du inte uppgradera till version 3 av Azure Search .NET SDK. Du kan fortsätta att använda version 2.0-preview. Tänk dock på att vi inte rekommenderar att du använder förhandsversions-SDK:er i produktionsprogram. Förhandsversionsfunktioner är endast för utvärdering och kan ändras.
Slutsats
Om du behöver mer information om hur du använder Azure Search .NET SDK kan du läsa .NET Instruktioner.
Vi välkomnar din feedback om SDK: et. Om du stöter på problem kan du be oss om hjälp med Stack Overflow. Om du hittar en bugg kan du skapa ett problem i Azure .NET SDK GitHub lagringsplats. Se till att prefixet för problemrubriken är "[Azure Search]".
Tack för att du använder Azure Search!