ConnectionString mit DAPPER ORM nicht funktioniert
Erstellte ich folgenden Repository-Datei
using Dapper;
using System.Configuration;
namespace ProjectName.Repository
{
public class SMRTRepository : IDashboard
{
public SqlConnection con;
//To Handle connection related activities
private void connection()
{
string constr = ConfigurationManager.ConnectionStrings["ConnectionString"].ToString();
con = new SqlConnection(constr);
}
.........
}
}
Dann In diesem Projekt erstellt eine App.Config-Datei definiert die Verbindungszeichenfolge,
App.config
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<connectionStrings>
<add name="ConnectionString" connectionString="Data Source=USER-PC;Initial Catalog=DBNAME;User ID=sa;Password=****;Integrated Security=True;" providerName="System.Data.sqlclient"/>
</connectionStrings>
</configuration>
aber dann wenn ich diese ausführe , ist das keine Verbindung zu DB , Im Fenster Server-Explorer in Visual Studio kann ich sehen Verbindungszeichenfolge Verbindung zu DB ohne Rotes Symbol
was falsch in meinem Ansatz
- Integrated Security = True oder Benutzer-ID=.... ? Wählen Sie eine
- Ich habe versucht
Integrated Security = SSPI
dann seine nicht funktioniert, auch - providerName="System.Daten.sqlclient" -- entfernen Sie diese unter format
"Server=servername;Database=dbName;User ID=sa;Password=pass"
oder"Data Source=.;Initial Catalog=dbName;Integrated Security=True"
- Wenn Sie die Integrierte Sicherheit verwenden = True, wird Ihre Benutzer-ID und Kennwort werden ignoriert. Natürlich bedeutet dies, dass SQL Server in der Lage ist zu erkennen, dass Ihr windows Benutzer als legitimer Benutzer aus der Datenbank
- was kann ich hier verwenden, dann
<add name="ConnectionString" connectionString="Data Source=USER-PC;Initial Catalog=DBNAME;User ID=sa;Password=****;Integrated Security=SSPI;" providerName="System.Data.sqlclient"/>
- Und was ist die Fehler-Nachricht erhalten (einschließlich der InnerException-Nachricht) ?
- seine null - imgur.com/a/u3lej
- Ist es con den gleichen Variablen, die Sie haben, instanziiert in der Verbindung () - Methode? Sie deklarieren ein weiteres con variable, hinter der sich die eine auf die Verbindung-Methode? Übrigens, ich schlage vor, um globalen Verbindungs-Objekte. Nur wieder das con initialisiert die Verbindung-Methode und schließen Sie es in einem using-block
- ja , hier
con
mit , so vermeiden Sie Globale Verbindung-Objekte ? kann ich ein Beispiel haben ?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du nicht angeben Integrated Security = True und eine Sql-Benutzer-ID. Als erklärt von MSDN auf die option Integrierte Sicherheit von line
Dies bedeutet, dass Sie aktiviert haben die Windows-Integration, wenn Sie Sql Server installiert ist und Ihre aktuellen windows-Benutzer aufgeführt ist zwischen der akzeptierten Benutzer von diesem server.
Andere mögliche problem wird verursacht durch eine Art von Misshandlung der globalen connection-Objekt. Als eine gute Praxis ist es besser, zu vermeiden, den globalen Wegwerf-Objekte wie eine Verbindung.
Ich würde ändern Sie Ihre Klasse zu
Natürlich könnte man auch trennen die beiden Methoden in verschiedenen Klassen und verwenden Sie die erste Methode als statische Methode, dass serviert jedes andere repository-Klassen, die Sie brauchen, um zu bauen. Auf diese Weise gibt es keine globalen Objekte herum und durch den using-block sorgt für eine korrekte Bereinigung von Ihrer Wegwerf-Objekte auch im Fall von Ausnahmen.
<add name="ConnectionString" connectionString="Data Source=USER-PC\SQLEXPRESS;Initial Catalog=DBNAME; User ID = sa; Password = ****;Integrated Security=SSPI" providerName="System.Data.SqlClient" />
Anbei ist ein Beispiel eines code block von meinem Projekt. Seine arbeiten gut für mich. Bitte