J'utilise l'entité Database de Webmatrix.data pour créer une connexion à une base de données, mais cela n'aime pas ma chaîne de connexion. Je l'exécute à partir de MVC ASP.net.
J'ai essayé de le changer en serveur/base de données, mais les erreurs restent les mêmes. Où vais-je mal?
using (var db = Database.OpenConnectionString(@"Data Source=MY-HP\Serv;Initial Catalog=MyDBSQL;User ID=sa;Password=password"))
{
var items = db.Query("SELECT * FROM TaskPriority");
}
Détails de l'exception: System.ArgumentException: Mot clé non pris en charge: "catalogue initial".
vérifier ici: Méthode Database.OpenConnectionString (String, String)
essayez de spécifier le nom du fournisseur en tant que deuxième paramètre, à partir de l'exemple MSDN:
var connectionString = "Data Source=.\\SQLExpress;Initial Catalog=SmallBakery;Integrated Security=True";
var providerName = "System.Data.SqlClient";
var db = Database.OpenConnectionString(connectionString, providerName);
ARRRHHHHHHH !!!!! C’est la deuxième fois que je rencontre des heures perdues, grrrh.
Erreur:
Le serveur a rencontré une erreur lors du traitement de la demande. Le message d'exception est "Mot clé non pris en charge:" catalogue initial; MyDatabase; source de données ".". Voir les journaux du serveur pour plus de détails. La trace de la pile des exceptions est:
Trace de la pile:
at System.Data.Common.DbConnectionOptions.ParseInternal (Hashtable paramétrable, String connectionString, Boolean buildChain, Hashtable synonymes, Boolean firstKey) à System.Data.Common.DbConnectionOptions. .ctor (String connectionString, synonymes de tableau de hachage, booléen useOdbcRules) à System.Data.SqlClient.SqlConnectionString..ctor (String connectionString) à Système. Data.SqlClient.SqlConnectionFactory.CreateConnectionOptions (String ConnectionString, DbConnectionOptions précédente) de System.Data.Provider. .] userConnectionOptions) à System.Data.SqlClient.SqlConnection.ConnectionString_Set (clé DbConnectionPoolKey ) à System.Data. .] à System.Data.SqlClient.SqlConnection..ctor (St ring connectionString, Identifiant SqlCredential)
C'était ma chaîne de connexion défectueuse:
<add name="Production" connectionString="Password=Secret;Persist Security Info=True;User ID=MyUserID;Initial Catalog;MyDatabase;Data Source=aquickborwnfoxjumpedover.us-west-2.rds.amazonaws.com,1433" providerName="System.Data.SqlClient" />
Ça a l'air bien non? FAUX
Finalement, j'ai repéré le point-virgule ici:
Catalogue initial; Ma base de données
Pour le corriger, j'ai utilisé un signe égal:
Catalogue initial = MyDatabase
La chaîne de connexion correcte:
<add name="ConnString" connectionString="Password=Secret;Persist Security Info=True;User ID=MyUserID;Initial Catalog=MyDatabase;Data Source=aquickborwnfoxjumpedover.us-west-2.rds.amazonaws.com,1433" providerName="System.Data.SqlClient" />
Vous pouvez utiliser le code ci-dessous
Fichier de configuration:
<connectionStrings>
<add name="con" connectionString="Data Source=ServerName;Initial Catalog=master;Integrated Security=SSPI;" providerName="System.Data.SqlClient"></add>
</connectionStrings>
cshtmlfile:
var db = Database.Open("con");
var selecteddata = db.Query("select * from movie");
Je suggère:
Vous pouvez vérifier clairement le format de votre chaîne de connexion, notamment "et". Dans mon cas c'est:
Pour moi, je recevais cette erreur parce que j'utilisais une solution basée sur un modèle. À l'insu de moi, le modèle n'installait que le support de sqlite. J'ai dû installer Microsoft.EntityFrameworkCore.SqlServer
et changer les appels dans mon code de UseSqlite
à UseSqlServer
.