using Microsoft.SemanticKernel.Connectors.SqlServer;
using Microsoft.Data.SqlClient;
public static class DisposableExtensions
public struct PossiblyDisposableWrapperStruct<T> : IDisposable where T : class
public T Value { get; } = null!;
public PossiblyDisposableWrapperStruct(T value) => this.Value = value;
public void Dispose() => (Value as IDisposable)?.Dispose();
public static PossiblyDisposableWrapperStruct<T> AsDisposable<T>(this T value) where T : class => new PossiblyDisposableWrapperStruct<T>(value);
public static void Main()
Console.WriteLine("Environment version: {0} ({1}), {2}", System.Runtime.InteropServices.RuntimeInformation.FrameworkDescription , Environment.Version, Environment.OSVersion);
Console.WriteLine("{0} version: {1}\n", typeof(SqlServerVectorStore).Assembly.GetName().Name, typeof(SqlServerVectorStore).Assembly.FullName);
SqlServerVectorStore savedValue;
SqlConnectionStringBuilder sConnB = new SqlConnectionStringBuilder ()
DataSource = "ServerName",
InitialCatalog = "DatabaseName",
Password = "UserPassword"
var connectionString = sConnB.ConnectionString;
using (var wrapper = new SqlServerVectorStore(connectionString).AsDisposable())
var vectorStore = wrapper.Value;
Console.WriteLine(vectorStore is IDisposable);
savedValue = vectorStore;