Ich versuche, Dapper mit MySQL in .net Core 1.0 zu verwenden. Ich verwende diesen mysql-Konnektor: https://github.com/bgrainger/MySqlConnectorErhalten "Zugriff verweigert für Benutzer ..." jeden zweiten Treffer
Ich weiß, der Stecker ist in Alpha, aber ich frage mich, ob jemand ein ähnliches Problem hatte, wenn es zusammen mit Dapper verwendet.
Das ist mein einfaches Modell:
public List<GeneralModel> GetAllLists()
{
try
{
using (DbConnection connection = new MySqlConnection("Server=localhost;Database=lists;Uid=Unnamed;Pwd=lol;"))
{
return connection.Query<GeneralModel>("SELECT * FROM lists.general").ToList();
}
}
catch (Exception)
{
throw;
}
}
Und dies ist der Controller:
public IActionResult Index()
{
GeneralModel GenRepo = new GeneralModel();
return View(GenRepo.GetAllLists());
}
Wenn ich auf die Indexseite zum ersten Mal gehen, es funktioniert. Wenn ich aktualisiere, bekomme ich einen "Zugriff verweigert für Benutzer ...". Ich habe keine Ahnung, was den Fehler verursachen könnte. Ich glaube nicht, dass das Problem in meinem Code liegt.
Edit:
Ich denke, das Problem in den Stecker, da dies auch den Fehler nach einer Aktualisierung zurück:
List<GeneralModel> lists = new List<GeneralModel>();
using (DbConnection connection = new MySqlConnection("Server=localhost;Database=lists;Uid=Unnamed;Pwd=lol;"))
{
using (DbCommand myCommand = connection.CreateCommand())
{
myCommand.CommandText = "SELECT * FROM lists.general";
connection.Open();
using (DbDataReader myReader = myCommand.ExecuteReader())
{
while (myReader.Read())
{
GeneralModel tmpGen = new GeneralModel();
tmpGen.name = myReader["name"].ToString();
tmpGen.description = myReader["description"].ToString();
tmpGen.language = myReader["language "].ToString();
lists.Add(tmpGen);
}
}
connection.Close();
}
}
return lists;
Randbemerkung: Es macht keinen Sinn, einen 'catch' zu machen, der einfach erneut wirft (' throw'); Aber zurück zum Hauptpunkt: Wow, ich bin erstaunt, dass sich das merkwürdig verhält - ich bin angenehm überrascht, die richtige Verwendung von 'using' usw. zu sehen, und da ist nichts drin, was merkwürdig aussieht. Das klingt vielleicht ein wenig nach Fingerzeig, aber ich frage mich, ob das eigentliche Problem hier im mysql-Provider liegt. Gibt es irgendeinen Weg, wie du es in ADO.NET (Old-School-Stil) mit der gleichen Sache versuchen könntest, um zu sehen, ob es noch funktioniert? - Endgültiger Bonuspunkt: Versuchen Sie '.AsList()' anstelle von '.ToList()' zu verwenden - wenn die Eingabe bereits gepuffert ist, ist sie etwas billiger. –
@MarcGravell Danke für die Tipps! Es sieht so aus, als wäre das Problem im Provider. Schade, weil ich wirklich versuchen wollte .net-Core, aber ohne MySQL-Unterstützung, es ist ein Nein, da dies der einzige mysql-Provider für .net-Core 1.0 ist, soweit ich weiß. – Cornwell
Ein Teil von mir ist sehr erleichtert, dass es nicht meine Schuld war; Ein anderer Teil von mir teilt deine Frustration. Sie sollten dies als einen Bericht zurückgeben, aber die URL schlägt vor, dies ist nicht der offizielle Zweig, also weiß ich nicht, wie viel Zeit es bekommen wird (könnte sofort behoben werden, könnte nie behoben werden) –