Bien le bonjour les gens

J'ai un petit souci sous Visual studio 2010, dans une application Web ASP.NET 4.0.

J'utilise la base de données ASPNETDB fourni par MS pour gérer les membres, rôles et touti...

J'ai choisi de déployer cette base dans SQL 2008, pas de souci.

J'ai choisi d'utiliser les providers SqlMembershipProvider, SqlProfileProvider, SqlRoleProvider pour gérer l'authentification, le login et touti... pas de souci non plus.

En fin, J'ai choisi de modéliser via Entity Framework la base, et là, c'est le drame...

En effet, j'ai le joli message suivant :

Erreur du serveur dans l'application '/'.
Mot clé non pris en charge : 'metadata'.
Description : Une exception non gérée s'est produite au moment de l'exécution de la requête Web actuelle. Contrôlez la trace de la pile pour plus d'informations sur l'erreur et son origine dans le code.

Détails de l'exception: System.ArgumentException: Mot clé non pris en charge : 'metadata'.

Erreur source:

Une exception non gérée s'est produite lors de l'exécution de la requête Web actuelle. Les informations relatives à l'origine et l'emplacement de l'exception peuvent être identifiées en utilisant la trace de la pile d'exception ci-dessous.

Trace de la pile:

[ArgumentException: Mot clé non pris en charge : 'metadata'.]
System.Data.Common.DbConnectionOptions.ParseInternal(Hashtable parsetable, String connectionString, Boolean buildChain, Hashtable synonyms, Boolean firstKey) +5055124
System.Data.Common.DbConnectionOptions..ctor(String connectionString, Hashtable synonyms, Boolean useOdbcRules) +98
System.Data.SqlClient.SqlConnectionString..ctor(String connectionString) +64
System.Data.SqlClient.SqlConnectionFactory.CreateConnectionOptions(String connectionString, DbConnectionOptions previous) +24
System.Data.ProviderBase.DbConnectionFactory.GetConnectionPoolGroup(String connectionString, DbConnectionPoolGroupOptions poolOptions, DbConnectionOptions& userConnectionOptions) +150
System.Data.SqlClient.SqlConnection.ConnectionString_Set(String value) +59
System.Data.SqlClient.SqlConnection.set_ConnectionString(String value) +4
System.Data.SqlClient.SqlConnection..ctor(String connectionString) +26
System.Web.DataAccess.SqlConnectionHolder..ctor(String connectionString) +54

[ArgumentException: Une erreur s'est produite lors de la tentative d'initialisation d'un objet System.Data.SqlClient.SqlConnection. La valeur fournie pour la chaîne de connexion est incorrecte ou sa syntaxe n'est peut-être pas valide.
Nom du paramètre : connectionString]
System.Web.DataAccess.SqlConnectionHolder..ctor(String connectionString) +136
System.Web.DataAccess.SqlConnectionHelper.GetConnection(String connectionString, Boolean revertImpersonation) +119
System.Web.Security.SqlMembershipProvider.GetPasswordWithFormat(String username, Boolean updateLastLoginActivityDate, Int32& status, String& password, Int32& passwordFormat, String& passwordSalt, Int32& failedPasswordAttemptCount, Int32& failedPasswordAnswerAttemptCount, Boolean& isApproved, DateTime& lastLoginDate, DateTime& lastActivityDate) +827
System.Web.Security.SqlMembershipProvider.CheckPassword(String username, String password, Boolean updateLastLoginActivityDate, Boolean failIfNotApproved, String& salt, Int32& passwordFormat) +105
System.Web.Security.SqlMembershipProvider.ValidateUser(String username, String password) +106
System.Web.UI.WebControls.Login.AuthenticateUsingMembershipProvider(AuthenticateEventArgs e) +60
System.Web.UI.WebControls.Login.OnAuthenticate(AuthenticateEventArgs e) +129
System.Web.UI.WebControls.Login.AttemptLogin() +127
System.Web.UI.WebControls.Login.OnBubbleEvent(Object source, EventArgs e) +101
System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) +37
System.Web.UI.WebControls.Button.OnCommand(CommandEventArgs e) +125
System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +167
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +5563
Je me suis un peu renseigné sur le sujet et en fouillant le net j'ai découvert que les providers SqlMembershipProvider, SqlProfileProvider, SqlRoleProvider n'étaient pas compatible Entity Framework...
Mouaip un peu étrange quand même que MS n'est pas prévu cela...

Quoiqu'il en soit je patauge... Si quelqu'un a une idée, je suis preneur, car je ne sais plus trop quoi faire...

Pour info, ma connectionString:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
<connectionStrings>
    <!--<add name="ApplicationServices" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient" />-->
    <add name="testEntities" 
         connectionString="metadata=res://*/test.csdl|res://*/test.ssdl|res://*/test.msl;
         provider=System.Data.SqlClient;provider connection string=&quot;data source=SEVEN-ABASE-16\SQLEXPRESS;
         initial catalog=test;persist security info=True;user id=sa;password=GoFirst!_SQLServer;
         multipleactiveresultsets=True;App=EntityFramework&quot;" providerName="System.Data.EntityClient" />
  </connectionStrings>
ainsi que les providers utilisés:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
<membership>
      <providers>
        <clear />
        <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" 
             connectionStringName="testEntities" enablePasswordRetrieval="false" 
             enablePasswordReset="true" requiresQuestionAndAnswer="false" 
             requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" 
             minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" 
             passwordAttemptWindow="10" applicationName="/" />
      </providers>
    </membership>
 
    <profile>
      <providers>
        <clear />
        <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="testEntities" applicationName="/" />
      </providers>
    </profile>
 
    <roleManager enabled="false">
      <providers>
        <clear />
        <add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="testEntities" applicationName="/" />
        <add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/" />
      </providers>
    </roleManager>