Zum Inhalt springen

Archiv

Archiv für Dezember 2009

Ein Jahr ist es her und Moritz fehlt mir immer noch sehr! Ich denke ich werde jedes Jahr Silvester einen faden Beigeschmack haben 🙁

Moritz

Da ich nun einen eigenen MembershipProvider nutze, möchte ich auch entsprechenden meinen RoleProvider anpassen.
Dies ist eigentlich ähnlich einfach, wie der MembershipProvider. Dazu wird eine eigene Klasse von System.Web.Security.RoleProvider abgeleitet. Auch könnt ihr hier wieder mit dem Überschreiben der Methode „Initialize()“ Werte aus der „web.config“ übergeben. Wo ihr die Daten ablegt, bleibt euch auch hier wieder überlassen.

Das Einbinden in die „web.config“ erfolgt über folgenden Eintrag:

    <roleManager enabled="true" defaultProvider="MyPersonalRoleProvider">
      <providers>
        <clear />
        <add name="MyPersonalRoleProvider" type="MyApp.PersonalRoleProvider" connectionStringName="MSPConnString" />
      </providers>
   </roleManager>

Wichtig ist die erste Zeile. Standardmäßig steht „enabled“ nämlich auf false!
Der RoleProvider ist nun fertig zum Einsatz! In eurem ASP.NET Projekt könnt ihr auf die Daten über die Standardmethoden wie etwa „Role.IsUserInRole()“ etc. zugreifen. Mehr dazu steht in der MSDN.

Manchmal kann es Sinn machen, nicht den standardmäßigen ASP.NET MembershipProvider zu nutzen. Daher möchte ich euch kurz erklären, wie ihr einen eigenen MembershipProvider schreiben könnt. Dabei ist es letztendlich euch überlassen, wo die Daten gespeichert sind.

Ich benutze bei einem Projekt etwa eine SQL-Datenbank und speicher bzw. lese die Daten per Stored-Procedures. Man könnte die Daten aber auch in einer XML-Datei speichern oder direkt hardcoded in der Klasse.
weiter lesen…

Aktuell habe ich folgendes Problem.
Ich habe eine Tabelle Rollen und eine Tabelle Benutzer, beide stehen über eine dritte Tabelle in einer m:m-Beziehung. Per Linq-to-Entity, also über ein ADO.NET Modell hole ich mir die Daten. Jedoch kann ich keine Relationen speichern.
Aktuell bekomme ich die Fehlermeldung:

EntitySet 'UserInRole' kann nicht aktualisiert werden, denn es hat eine DefiningQuery, und im <ModificationFunctionMapping>-Element ist kein <InsertFunction>-Element zur Unterstützung des aktuellen Vorgangs vorhanden.

Eine Suche im Netz bring mich nicht wirklich weiter. Dort hieß es, ich soll für die m:m-Tabelle einen Primary-Key setzen. Habe ich über beide Felder getan, Ergebnis war das selbe.
Bei dem Beispiel kann ich es über den Role-Provider lösen, aber so richtig weiter bringt es mich dann an anderer Stelle nicht.
Ich werde weiter berichten.

Ich wünsche allen Lesern, Freunden, Kollegen, Familie und allen anderen frohe Weihnachten und ein paar schöne Tage im Kreis der Liebsten 🙂
Ich werd sie haben!