ASP.NET MVC – Tutorial Problem

Die Woche habe ich an einem ASP.NET Workshop teilgenommen. War sehr interessant. Zu Hause wollte ich mich dann heute mal mit ASP.NET MVC beschäftigen. Dazu ging ich einfach nach folgendem Tutorial vor: Create a Movie Database Application in 15 Minutes with ASP.NET MVC (C#) (sehr gute Seite btw).

Jedoch bekam ich folgende Fehlermeldung, sobald ich die Solution kompilieren wollte:

Parserfehler 
Beschreibung: Fehler beim Verarbeiten einer Resource, die für diese Anforderung erforderlich ist. Überprüfen Sie folgende Fehlerinformationen und ändern Sie die Quelldatei entsprechend. 

Parserfehlermeldung: Der Typ "System.Web.Mvc.ViewPage<ienumerable <MvcApplication1.Models.Movie>>" konnte nicht geladen werden.

Der Fehler habe ich erst durch intensive Recherche via Google lösen können. Daher hier noch mal die Lösung.
Sucht euch in der „web.config“ den Abschnitt „<pages>„.
Ersetzt ihn mit folgendem Code:

<pages pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">

Ach ja, WordPress setzt automatisch ein </pages> ans Ende, dass müsst ihr hier ignorieren!
Und schon geht es 🙂

Lokaler Pfad bei SQLite Datenbank und ASP.NET

Ich probiere mich gerade in ASP.NET und um nicht gleich einen SQL-Server aufsetzen zu müssen, nutze ich SQLite. Die Abfragen sind ähnlich und zum Rumspielen reicht das dicke hin. Zudem habe ich schon ein paar Erfahrungen mit einem anderen Tool gesammelt. Nun hatte ich folgendes Phänomen, ganz am Anfang hatte ich die Datenbank erstellt mit irgendwelchen Dummyeinträgen und ein bischen mit den Ajaxelementen von Visual Studio rumgespielt.
Das hat auch gut geklappt, das auslesen der Daten lief im Hintergrund per SQLiteConnection(). Dann habe ich mir ein reines HTML Formular gebastelt und wollte hier eine Art Login ausprobieren. Auf einmal kam jedes mal die Fehlermeldung, dass die Datenbank „Users“ nicht gefunden wurde (Users war die von mir erstellte).

System.Data.SQLite.SQLiteException: SQLite error
no such table: Users
   bei System.Data.SQLite.SQLite3.Prepare(SQLiteConnection cnn, String strSql, SQLiteStatement previous, UInt32 timeoutMS, String& strRemain)
   bei System.Data.SQLite.SQLiteCommand.BuildNextCommand()
   bei System.Data.SQLite.SQLiteCommand.GetStatement(Int32 index)
   bei System.Data.SQLite.SQLiteDataReader.NextResult()
   bei System.Data.SQLite.SQLiteDataReader..ctor(SQLiteCommand cmd, CommandBehavior behave)
   bei System.Data.SQLite.SQLiteCommand.ExecuteReader(CommandBehavior behavior)
   bei System.Data.SQLite.SQLiteCommand.ExecuteReader()
   bei ASPGuestbook.LoginForm.checkLogin() in ...\LoginForm.aspx.cs:Zeile 57.

Unter Visual Studio konnte ich die SQLite Datenbank ohne Probleme bearbeiten. Die Datei war auch im selben Verzeichnis. Ich hatte mir auch per AppDomain.CurrentDomain.BaseDirectory das Verzeichnis ausgeben lassen. Hat auch alles gepasst.
Mein Befehl zum Öffnen lautete so:

SQLiteConnection sqlCon = new SQLiteConnection("Data Source=datenbank.db3;Password=12345;");
sqlCon.Open();

Natürlich schön im try / catch Block verpackt, es kam aber keine Fehlermeldung. Hat einen Moment gedauert bis ich dahinter kam. Und zwar hat die SQLite Erweiterung die ich nutze die dumme Angewohnheit, wenn Data Source nicht existiert, dass er eine leere Datenbank anlegt. In dieser leeren Datenbank gibt es natürlich nicht die Tabellen und folglich der Fehler. Angelegt hat er diese leeren Datenbanken übrigends unter

C:\Programme\Microsoft Visual Studio 9.0\Common7\IDE

Darauf muss man erstmal kommen..
So funktioniert es dann, ob es die optimale Lösung ist, bezweifel ich.

SQLiteConnection sqlCon = new SQLiteConnection("Data Source=" + AppDomain.CurrentDomain.BaseDirectory + "bin\\datenbank.db3;Password=12345;");
sqlCon.Open();

Das Problem lässt sich sicherlich auch auf andere Sprachen adaptieren. Bei einem richtigen SQL Server fällt das ja sowieso weg, aber nervig wars trotzdem!