Buongiorno a tutti!
Chiedo il vostro aiuto per cercare di convertire il codice che vi riporto di seguito, da una stringa di connessione (e quindi un elaborazione) basata su LocalDB portandola a SqlServer.
Questo è il codice DAO (con LocalDb):
using Dapper;
using PerformanceComWebAPI.Modelos;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
namespace PerformanceComWebAPICompleto.DAO
{
public class ClienteDAO
{
//string da conexão com a base de dados
private const string connectionString = @"Data Source=(localdb)\MSSQLLocalDB;Initial Catalog=TesteDapper;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False";
/// <summary>
/// Listar todos os cliente da base de dados
/// </summary>
/// <returns></returns>
public List<Cliente> Listar()
{
var sql = "select * from dbo.Cliente";
List<Cliente> clientes = new List<Cliente>();
using (var connection = new SqlConnection(connectionString))
{
clientes = connection.Query<Cliente>(sql).ToList();
}
return clientes;
}
/// <summary>
/// Metodo que recupera o cliente pelo id
/// </summary>
/// <param name="idCliente">id cliente que vai ser recuperado</param>
/// <returns>O cliente que correspondente do cliente ou null quando não tiver cliente com id</returns>
public Cliente RecuperarPorID(int idCliente)
{
var sql = "select * from dbo.Cliente where id = @id";
Cliente cliente = new Cliente();
using (var connection = new SqlConnection(connectionString))
{
cliente = connection.QueryFirstOrDefault<Cliente>(sql, new { id = idCliente });
}
return cliente;
}
}
}
Questa è la modifica che ho aggiunto in Startup.cs:
public void ConfigureServices(IServiceCollection services)
{
//AGGIUNTA
services.AddSingleton<IConfiguration>(Configuration);
services.AddDbContext<DatabaseContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("ProductContext")));
/////////
}
e questo è appsetting.json:
{
"Logging": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Warning"
}
},
"ConnectionStrings": {
"ProductContext": "Data Source=xxxx\\SQLEXPRESS;Initial Catalog=TestDb;Integrated Security=False;User ID=***;Password=*****;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False"
},
"AllowedHosts": "*"
}
Nella directory Models, che non so perché nell'esempio che ho trovato si chiama 'Modelos', ho creato un file (DatabaseContext.cs)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore;
using PerformanceComWebAPI.Modelos;
namespace PerformanceComWebAPICompleto.Modelos
{
public class DatabaseContext : DbContext
{
public DatabaseContext(DbContextOptions<DatabaseContext> options) : base(options)
{
}
public DbSet<Cliente> Clienti { get; set; }
}
}
E, nella stessa directory il file Cliente.cs (posso unire DatabaseContext.cs nello stesso file Cliente.cs, o debbono essere separati?!)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace PerformanceComWebAPI.Modelos
{
public class Cliente
{
public int Id { get; set; }
public string Nome { get; set; }
public double? Teste1 { get; set; }
public double? Teste2 { get; set; }
public double? Teste3 { get; set; }
}
}
Grazie in anticipo!
Modificato da AspNetx il 02 dicembre 2018 12.42 -
Modificato da AspNetx il 02 dicembre 2018 12.43 -