Guten Tag. :-)
Ich versuche aktuell mich mit der Praxis des mvvm's vertraut zu machen, scheitere jedoch irgendwie schon daran, auf mein ConnectionString zuzugreifen, vermute ich zumindest, dass da mein Fehler liegt.
Fehlermeldung: |
System.TypeInitializationException
HResult=0x80131534
Nachricht = Der Typeninitialisierer für "System.Windows.Application" hat eine Ausnahme verursacht.
Quelle = PresentationFramework
Stapelüberwachung:
bei System.Windows.Application..ctor()
bei Ting.App..ctor()
bei Ting.App.Main() in S:\Projects\Ting\Ting\Ting\obj\Debug\App.g.cs: Zeile50
Diese Ausnahme wurde ursprünglich von dieser Aufrufliste ausgelöst:
[Externer Code]
Innere Ausnahme 1:
TypeInitializationException: Der Typeninitialisierer für "System.Windows.Navigation.BaseUriHelper" hat eine Ausnahme verursacht.
Innere Ausnahme 2:
TypeInitializationException: Der Typeninitialisierer für "MS.Internal.TraceDependencyProperty" hat eine Ausnahme verursacht.
Innere Ausnahme 3:
ConfigurationErrorsException: Das Konfigurationssystem konnte nicht initialisiert werden.
Innere Ausnahme 4:
ConfigurationErrorsException: Unbekannter Konfigurationsabschnitt "ConnectionString". (S:\Ting\bin\Debug\Ting.exe.Config line 6) |
Auch nach längeren Googlen (derweil über 15 Tabs offen gehabt) komm ich nicht dahinter, wo mein Problem liegen könnte.
Jemand vielleicht ein anreiß woran es liegen könnte oder sieht den Fehler sogar ?
app.config Hier habe ich meinen ConnectionString enthalten
XML-Code: |
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
</startup>
<ConnectionString>
<add name="TingDB" connectionString="Data Source=.\TingDB.db; Version=3;" providername="Systen.Data.SqlClient"/>
</ConnectionString>
</configuration>
|
SqliteDataAccess Hier baue ich meine Verbindung zur Datenbank auf
PS: Ich vermute, die Art wie ich den Login gestalte ist bestimmt nicht die feine englische Art, jedoch genügt es mir vorerst, den Aufbau der Layer ansatzweiße zu verstehen und wie ich diese mit dem mvvm-pattern harmonieren kann.
C#-Code: |
private static string ConnectionString(string id = "TingDB")
{
return ConfigurationManager.ConnectionStrings[id].ConnectionString;
}
public static bool AuthoticationUser(string username, string password)
{
using (IDbConnection cnn = new SQLiteConnection(ConnectionString()))
{
cnn.Execute("SELECT * from User Where Username = "+username+" && Password = "+password);
if(cnn != null)
{
return true;
} else { return false; }
}
}
|
UserAuth Hier verbinde ich mich zum DataAccess und prüfe die Daten und gebe ein bool zurück, welches ich im VM dann nutze
C#-Code: |
public bool AuthenticateUser()
{
bool output = SqliteDataAccess.AuthoticationUser(Username, Password);
if (output == true)
{
return true;
}
else { return false; }
}
public UserAuth(string un, string pw)
{
_username = un;
_password = pw;
}
|
LoginWindowViewModel Hier übergebe ich die Daten aus der View an mein UserAuth
C#-Code: |
private void LoginExecute()
{
userA = new UserAuth(Username, Password);
if (userA.AuthenticateUser())
{
IsLogin = true;
}else { IsLogin = false; Message = "Logindaten waren nicht korrekt."; }
}
|