SQLClientCoreTool

Alejandro Cernuda



Presentamos una herramienta sencilla para la interacción entre aplicaciones .Net Core y Microsoft SQL Server. Ideal para proyectos pequeños, donde no se necesite, ni se quiera, utilizar alguno de las maneras comunes hoy de acceder a los datos. Cuenta además con algunos métodos que en la práctica consumen mucho tiempo de desarrollo.



Clase DataGather

Es la entidad que lleva el peso de casi todo el trabajo. Se ocupa de manejar la conexión con la base de datos y posee métodos para las principales operaciones. Cada vez que se va a utilizar se llama al método GetIntance(). Esto e lo que sucede entonces.

publicsealedclassDataGather

{

...

privatestatic Lazy<DataGather> instance = new Lazy<DataGath er>(() => new DataGather());

 

publicstatic DataGather GetInstance( string connectionString, string dataBaseName = "")

    {

bool haveOldInstanceWithDifferentConnection = Builder != null && (Builder.ConnectionString != connectionString || instance.Value.ConnectionString != connectionString);

        Builder = new SqlConnectionStringBuilder(connectionString);

if (!string .IsNullOrWhiteSpace(dataBaseName) || haveOldInstanceWithDifferentConnection)

        {

            Builder.InitialCatalog = !string .IsNullOrWhiteSpace(dataBaseName) ? dataBaseName : Builder.InitialCatalog;

returnnew DataGather();

        }

return instance.Value;

}

...

}

Ejemplo de uso

Podemos cambiar la conexión, tanto a la base de datos como a servidor. En el ejemplo siguiente nos conectamos al servidor “Local1”

privatestringConnectionString { get { returnTestCases.ConnectionString; } }

publicvoidChangeServerToLocal1()

{

    DataGather dg = DataGather.GetInstance(ConnectionString);

string serverName =Check.GetCurrentServer(dg);

    dg =DataGather.GetInstance(ConnectionString.Replace(serverName, "local1"));

}

SQLClientCoreTool nos permite de una manera sencilla almacenar en la base de datos SQL cualquier documento, imagen, pdf, etc. Utilizamos el método Transformer.CreateBlobFileAsync(string path) para convertir el archivo en un byte[] que posteriormente almacenaremos en una columna de tipo varbinary(max). He aquí el ejemplo.

 

publicasyncTask TestCreateBlobFileAsync(string path)

{

           BlobFile blobFile = await Transformer.CreateBlobFileAsync(path);

 

            ValueTest valueTest = newValueTest();

            valueTest.Name = blobFile.Name;

            valueTest.GuidId = newGuid();

            valueTest.Photo = blobFile.FileData;

            valueTest.Total = -1;

 

            DataGather dg = DataGather.GetInstance(ConnectionString);

 

int result = awaitdg.InsertAsync(valueTest);