ado.net razor MVC c# connexion Mysql depuis fichier web.conifg
Bonjour à toutes et à tous,
Pour commencer je vous présente mes meilleurs vœux…
Je suis en panne de réflexion sur le sujet suivant :
Je souhaite mettre en place à l’aide de Visual Studio 2017 un système de login avec mot de passe sur une base de données Mysql sur les servers de LWS.
Je me sers d’un modèle existant trouvé ici ( https://dev.to/skipperhoa/login-and-register-using-asp-net-mvc-5-3i0g").
J’ai installé une Base nommée (Bdd_MVC_Photo) avec des tables et afin de vérifier la connexion depuis mon hébergeur, j’ai créé depuis une page CSHTML dont voici le code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
| @using MySql.Data.MySqlClient;
@{
string c_string = "data Source=localhost;port=3306;Initial catalog=Bdd_MVC_Photo; User Id=Mon_ID;Password=Mon_mdp;";
MySqlConnection Connection_bdd_MVC;
Connection_bdd_MVC = new MySqlConnection();
Connection_bdd_MVC.ConnectionString = c_string;
try
{
// ouverture
Connection_bdd_MVC.Open();
string requete = "SELECT count(*) FROM Tble_Clients";
MySqlCommand sql = new MySqlCommand();
sql.CommandText = requete;
sql.CommandType = System.Data.CommandType.Text;
sql.Connection = Connection_bdd_MVC;
int count = Convert.ToInt32(sql.ExecuteScalar());
<p>@string.Format("{0}", count)</p>
}
catch (Exception err1)
{
<p>@(err1); </p>
}
finally
{
try
{
// fermeture
Connection_bdd_MVC.Close();
}
catch (Exception err2)
{
<p>@(err2);</p>
}
}
} |
Il fonctionne bien, car il me remonte le nombre de personne de la table (Tble_Clients).
Dans le gestionnaire de package NuGet j’ai installé ceci (MySql.Data 8.0.22, MySql.Data.EntityFramework 8.0.22, MySql.Data.EntityFramework, 8.0.22 et MySql.Web 8.0.22)
Dans mon fichier Web.config j’ai ceci :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
<entityFramework>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.EntityFramework, Version=8.0.22.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</providers>
</entityFramework>
<connectionStrings>
<!-- ******** Serveur de production ******** -->
<add name="Connex_Bdd_MVC_Photo" connectionString="Data Source=localhost;port=3306;Initial catalog=Bdd_MVC_Photo; User Id=Mon_ID;Password=Mon_mdp;" providerName="System.Data.MySqlClient" />
<!-- ******** modifier la connexion Connex_Bdd_MVC_Photo dans la page IdentityModels.cs -->
</connectionStrings> |
Dans le fichier (DB_Entities.cs) proposé dans l’exemple du site cité plus haut, j’ai modifié la ligne pour la connexion (Connex_Bdd_MVC_Photo) issu du fichier web.config :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| public class DB_Entities : DbContext
{
public DB_Entities() : base("Connex_Bdd_MVC_Photo") { }
public DbSet<User> Users { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
//Database.SetInitializer<demoEntities>(null);
modelBuilder.Entity<User>().ToTable("Tble_Clients");
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
base.OnModelCreating(modelBuilder);
}
} |
Malgré tout ça, je n’arrive pas à me connecter à l’aide du fichier Web.config !
Je n'ai aucun défaut mais à chaque fois que je rentre des données depuis le fichier Register.cshtml, ou bien le login et un Mdp cela me renvoie sur la page error
Sachant que ma connexion
Code:
string c_string = "data Source=localhost;port=3306;Initial catalog=Bdd_MVC_Photo; User Id=Mon_ID;Password=Mon_mdp;"
fonctionne ?
Ais-je oublié un package NuGet ?
Comment faire pour vérifier la connexion Web.config ?
Puis-je ajouter la ligne de connexion qui va bien :
Code:
string c_string = "data Source=localhost;port=3306;Initial catalog=Bdd_MVC_Photo; User Id=Mon_ID;Password=Mon_mdp;"
directement dans le fichier DB_Entities.cs ?
En espérant avoir été clair dans ma demande, j’ai besoin de vous pour avancer,
Par avance merci,
Bruno