Entwickler-Ecke

ASP.NET und Web - MVC-Internetanwendung und MySQL


Määx - Fr 10.10.14 15:31
Titel: MVC-Internetanwendung und MySQL
Hallo zusammen,

ich bin ganz neu bei ASP.NET und MVC und habe zunächst einmal einwenig mit den standard-Projekten rumgespielt. Nun habe ich eine Internetanwendung erstellt, die auf die Authentifiierung mit dem AccountController zurückgreift. Da ich überall MySQL nutze und meine neue Website auch gerne an iene vorhandene DB anshcließen möchte, versuche ich nun seit Stunden MySQL ans laufen zu bringen...
Ich habe den MySQLConnector installiert, die DLLs hinzugefügt und die Web.config wie folgt angepasst:

XML-Daten
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
<connectionStrings>
    <add name="DefaultConnection"
         connectionString="Datasource=127.0.0.1;Database=testapp;uid=root;pwd=rootPasswort;"
         providerName="MySql.Data.MySqlClient" />
</connectionStrings>
  <entityFramework>
    <defaultConnectionFactory
      type="MySql.Data.MySqlClient.MySqlClientFactory,MySql.Data" />
  </entityFramework>
  <system.data>
    <DbProviderFactories>
      <remove invariant="MySql.Data.MySqlClient" />
      <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.8.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" /></DbProviderFactories>
  </system.data>

Beim ersten Zugriff auf die Website wird auch ein Datenbankschema mit Namen "testapp" angelegt und auch 3Tabellen ("userprofile", "webpage_membership" und "webpages_oauthmembership") angelegt.
userprofile hat die Spalten "UserId" und "UserName".

Die allgemeine Anbindung von MySQL scheint alzu so ersteinmal zu klappen. Leider erhalte ich immer einen Fehler bzgl. fehlerhafter Syntax:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
Serverfehler in der Anwendung /.
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IDENTITY,
                       RoleName                                nvarc' at line 2
Beschreibung: Unbehandelte Ausnahme beim Ausführen der aktuellen Webanforderung. Überprüfen Sie die Stapelüberwachung, um weitere Informationen über diesen Fehler anzuzeigen und festzustellen, wo der Fehler im Code verursacht wurde.

Ausnahmedetails: MySql.Data.MySqlClient.MySqlException:
You have an error in your SQL syntax; check the manual that corresponds
to your MySQL server version for the right syntax to use near
'IDENTITY,
                       RoleName                                nvarc' at line 2

Eine Spalte RoleName existiert niergends in der DB - ich denke also, dass die Tabellen nicht korrekt angelegt werden :(
Hat noch jemand einen Tipp? Kann man irgendwo die original Struktur auslesen? Wenn ich MySQL deaktiviere und es über Microsoft SQL laufen lasse schein alles zu laufen - aber ich kann die unter AppData abgelegte Dantebankdatei nicht lesen um die korrekte Struktur zu erhalten :(

Bin für jeden Tipp sehr dankbar!!
Vielen Dank
Määx

Edit:
ich habe jetzt in der Web.conf unter system.web noch folgendes hinzugefügt:

XML-Daten
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
    <membership defaultProvider="MyMySQLMembershipProvider" userIsOnlineTimeWindow="15">
      <providers>
        <add name="MyMySQLMembershipProvider"
             type="MySql.Web.Security.MySQLMembershipProvider, MySql.Web, Version=6.8.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"
             autogenerateschema="true"
             connectionStringName="DefaultConnection"
             enablePasswordRetrieval="false"
             enablePasswordReset="true"
             requiresQuestionAndAnswer="true"
             applicationName="/"
             requiresUniqueEmail="false"
             passwordFormat="Clear"
             maxInvalidPasswordAttempts="5"
             minRequiredPasswordLength="7"
             minRequiredNonalphanumericCharacters="1"
             passwordAttemptWindow="10"
             passwordStrengthRegularExpression="" />        
      </providers>
    </membership>
    <roleManager defaultProvider="MyMySQLRoleProvider">
      <providers>
        <add name="MyMySQLRoleProvider" 
             type="MySql.Web.Security.MySQLRoleProvider, MySql.Web, Version=6.8.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" 
             autogenerateschema="true"
             connectionStringName="DefaultConnection" 
             applicationName="/" />
      </providers>
    </roleManager>
    <profile defaultProvider="MyMySQLProfileProvider">
      <providers>
        <add name="MyMySQLProfileProvider" 
             type="MySql.Web.Profile.MySQLProfileProvider, MySql.Web, Version=6.8.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" 
             autogenerateschema="true"
             connectionStringName="DefaultConnection"
             applicationName="/" />
      </providers>
    </profile>


Damit bin ihc zwar schon einen Schritt weiter, jetzt sagt er mir jedoch, dass die Membership.Provider-Eigenschaft eine Instanz von "ExtendedMembershipProvider" sein muss. Diese kann ich jedoch niergends für MySql finden... hat hier jmd Erfahrung mit?

Moderiert von user profile iconTh69: C#- durch Code- bzw. XML-Tags ersetzt