visual studio para microsoft for agregar c# sql-server uwp windows-10 win-universal-app

c# - studio - Cómo conectarse a la base de datos del servidor SQL desde una aplicación Windows 10 UWP



sqlite uwp (4)

Conectando UWP a SQL Server

Nota: Desde Windows 10 Fall Creators Update (16299) podemos acceder directamente a la base de datos de SQL Server usando .NetStanded 2.0

Como no hay una forma directa de conectarse a SQL Server, necesitamos crear una API para nuestra base de datos para conectarnos a SQL Server.

Esta solución describe

  1. Creando API
  2. Serializar y deserializar datos JSON

1. Crear API

1) Instalación de ASP.NET y desarrollo web

  1. Inicie el instalador de Visual Studio y haga clic en Modificar

  2. Instalar ASP.NET y desarrollo web

2) Crear una nueva aplicación web ASP.NET (.Net Framework)

  1. Agregue un nuevo proyecto a su solución

  2. Seleccione la aplicación web ASP.NET (.Net Framework) y proporcione un nombre de proyecto

  3. Seleccione API web y haga clic en Aceptar

3) Conexión a la base de datos de SQL Server

  1. Agregar nuevo elemento en la carpeta Modelos

  2. Seleccione el modelo de datos de entidad ADO.NET y asígnele un nombre

  3. Seleccione EF Designer de la base de datos y haga clic en Siguiente

  4. Haga clic en Nueva conexión

  5. Configure su conexión , haga clic en Aceptar y luego en Siguiente

  6. Seleccione la versión de Entity Framework y haga clic en Siguiente

  7. Seleccione Bases de datos y tablas para conectarse y haga clic en Finalizar

4) Agregue controladores para comunicarse con los modelos

  1. Reconstruye tu proyecto antes de seguir adelante

  2. Agregar un nuevo controlador en la carpeta Controladores

  3. Seleccione Web API 2 Controller con acciones, utilizando Entity Framework y haga clic en Agregar

  4. Seleccione Clase de modelo (nombre de tabla) y Clase de contexto de datos (nombre de base de datos) en el cuadro de lista desplegable y haga clic en Agregar

5) API de prueba

  1. Establecer este proyecto como el proyecto de inicio

  2. Ejecute el proyecto en un navegador web

  3. Ahora su navegador abrirá un sitio localhost. Haga clic en API en la parte superior

  4. Esta página muestra todas las API disponibles de su proyecto

  5. Copie cualquier enlace de la API de abajo y reemplácelo con la "Ayuda" en URI y presione Entrar. Ahora debería poder ver sus datos desde la base de datos de SQL Server

2. Serializar y deserializar datos JSON

1) Instalar Newtonsoft.Json

2) Deserialización de JSON

HttpClient httpClient = new HttpClient(); var jsonReponse = await httpClient.GetStringAsync("http://localhost:xxxxx/api/LogIns"); logInResult = JsonConvert.DeserializeObject<List<LogIn>>(jsonReponse);

Puede obtener la clase de modelo de Modelos

Simplemente cree la misma clase en su proyecto UWP

3) serializar JSON

var logIn = new Models.LogIn() { Username = "username", Password = "password" }; var logInJson = JsonConvert.SerializeObject(logIn); HttpClient httpClient = new HttpClient(); var httpContent = new StringContent(logInJson); httpContent.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json"); await httpClient.PostAsync("http://localhost:56267/api/LogIns", httpContent);

Para obtener más información sobre la serialización y deserialización de JSON con la biblioteca JSON.NET en C #

Estoy tratando de conectarme a una base de datos MS SQL local desde una aplicación universal de Windows. Estoy haciendo una aplicación LOB usando UWP, para soportar el uso de escritorio, tableta y móvil. Cuando intento conectarme a una base de datos del servidor SQL local (intranet), estoy acostumbrado a usar una instancia de SqlConnection para conectarme a un servidor local, pero como SqlConnection no está incluido en el subconjunto .NET utilizado en UWP, ¿cómo se hace esto? cuando usas UWP?

Revisé las muestras oficiales de Microsoft , así como las guías prácticas , y no encontré nada sobre la conexión de la base de datos que no sea una base de datos de Azure. DbConnection parecía que podría ser un buen camino a seguir, pero no se puede usar ya que es abstracto, y sus hijos (por ejemplo, Data.SqlClient.SqlConnection ) no parecen estar incluidos en el subconjunto .NET para UWP.

¿Me estoy perdiendo algo súper obvio aquí? Como comentario, ¿alguien conoce una buena referencia de espacio de nombres para UWP?

Editar para no duplicado: la pregunta vinculada sugerida como duplicado es para aplicaciones de Windows 8 / 8.1, y aunque hay algunas similitudes, el código en la respuesta aceptada para esa pregunta no funcionará en UWP. Sin embargo, el principio es el mismo, pero debería haber una mejor referencia técnica para la compilación de aplicaciones de Windows 10 con UWP.


Aquí hay una muestra simple y un video . No estoy seguro si es suficiente para ti.

Aquí hay un punto difícil es

  • cómo consumir, serializar y deserializar datos json. Como desarrollador de .net, puede considerar usar el HttpClient para implementar esto. Y aquí hay otra muestra y video para su referencia. Hay otro ejemplo oficial que muestra cómo usar el espacio de nombres Windows.Data.Json.

Con la actualización de Windows 10 Fall Creators Update (compilación 16299), las aplicaciones para UWP ahora pueden acceder a SQL Server directamente a través de las clases NET estándar (System.Data.SqlClient), gracias al soporte recientemente agregado para .NET Standard 2.0 en UWP.

Aquí hay una aplicación de demostración de Northwind UWP: https://github.com/StefanWickDev/IgniteDemos

Hemos presentado esta demostración en Microsoft Ignite en septiembre de 2017, aquí está la grabación de nuestra sesión (pase a las 23:00 para la demostración de SQL): https://myignite.microsoft.com/sessions/53541

Aquí está el código para recuperar los productos de la base de datos Northwind (consulte DataHelper.cs en la demostración). Tenga en cuenta que es exactamente el mismo código que escribiría para una aplicación Winforms o WPF, gracias a .NET Standard 2.0:

public static ProductList GetProducts(string connectionString) { const string GetProductsQuery = "select ProductID, ProductName, QuantityPerUnit," + " UnitPrice, UnitsInStock, Products.CategoryID " + " from Products inner join Categories on Products.CategoryID = Categories.CategoryID " + " where Discontinued = 0"; var products = new ProductList(); try { using (SqlConnection conn = new SqlConnection(connectionString)) { conn.Open(); if (conn.State == System.Data.ConnectionState.Open) { using (SqlCommand cmd = conn.CreateCommand()) { cmd.CommandText = GetProductsQuery; using (SqlDataReader reader = cmd.ExecuteReader()) { while (reader.Read()) { var product = new Product(); product.ProductID = reader.GetInt32(0); product.ProductName = reader.GetString(1); product.QuantityPerUnit = reader.GetString(2); product.UnitPrice = reader.GetDecimal(3); product.UnitsInStock = reader.GetInt16(4); product.CategoryId = reader.GetInt32(5); products.Add(product); } } } } } return products; } catch (Exception eSql) { Debug.WriteLine("Exception: " + eSql.Message); } return null; }

Si necesita admitir versiones anteriores a Fall Creators Update, también puede llamar a las API de SqlClient desde su paquete de aplicación para UWP, a través de Desktop Bridge. Tengo una muestra de esto publicada aquí: https://github.com/Microsoft/DesktopBridgeToUWP-Samples/tree/master/Samples/SQLServer


También tengo que seguir este mismo camino ... Espero que SQLServer sea directamente accesible a través de EF Core directamente.

He visto los dos tutoriales anteriores y como soy nuevo en el desarrollo, solo me ha mojado el apetito. Sin embargo, encontré este video tutorial detallado en YouTube que lo guía a través;

  • crear el servicio web
  • Crear clases POGO duplicadas en WebService y su aplicación UWP
  • crear controladores de Entity Framework 2.0 de API web para cada tabla que desee crear
  • Agregar Newtonsoft.JSON y Microsoft.Net.HTTP a través de NuGet a su aplicación UWP
  • y finalmente hacer llamadas desde UWP a Local SQL Server a través del servicio web / llamadas JSON en Code Behind.

A pesar de que este video NO está en inglés, pude ver lo que estaba haciendo y luego pausar y duplicar.