Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di xJoeyX
    Registrato dal
    Apr 2011
    Messaggi
    28

    Associare aspnetdb.mdf ad una tabella Dipendenti

    Ho una tabella Dipendenti nel mio database. Uso l’autenticazione di default di ASP.NET con il database aspnetdb.mdf ho bisogno di associare la mia tabella dipendenti al database di membership per fare in modo che il nome dell’utente corrisponda a un dipendente dell’azienda. Credo che questo sia possibile solo creando le tabelle di membership nello stesso database dei dipendenti, qualcuno sa come posso fare per fare questa operazione? E’ possibile? Ciao

  2. #2
    Utente di HTML.it L'avatar di rsdpzed
    Registrato dal
    Aug 2001
    Messaggi
    764
    c'è un tool aspnet_regsql.exe che installa sul db le tabelle per i provider memebership e role. Nel web config poi, devi specificare nei nodi Memebership e roleManager che il provider è SqlMembershipProvider invece di AspNetMembershipProvider e specificare anche la connection string che punta al db.

    Se non ricordo male per avere una relazione tra user e dipendenti dovresti tenere conto anche di applicationID come parte della PK di user.

    Oppure al costo di rinunciare all'integrità referenziale (io lo farei ma con molti riguardi) puoi tenere i due mondi separati, memorizzare l'userid nella tabella dipendenti ogni volta che ne crei uno e scriverti due metodi: uno che restituisce l'user dato l'id del dipendente e l'altro che restituisce il dipendente dato l'userid. Li puoi dichiarare entrambi in una partial class Dipendenti (usi codefirst giusto?) il primo come proprietà calcolata con il solo metodo get e il secondo come metodo (o proprieta) statico della classe Dipendenti.

  3. #3
    Utente di HTML.it L'avatar di xJoeyX
    Registrato dal
    Apr 2011
    Messaggi
    28
    Una volta utilizzato regsql in quale tabella dovrei inserire l'id del mio dipendente? Mi spiego meglio, alla creazione del mio utente ci deve essere una dropdownlist dove scelgo il nome del dipendente e quindi dentro la tabella di membership deve esserci l'id del dipendente....quello che non ho capito é dove inserirlo. Nella tabella user?

  4. #4
    Utente di HTML.it L'avatar di rsdpzed
    Registrato dal
    Aug 2001
    Messaggi
    764
    potresti fare il contrario: memorizzare nella tabella dipendenti la userid della tabella users (è un uniqueidentifier).
    A questo punto nella dropdownlist carichi solo gli utenti con iduser = null e quando scegli l'utente non fai altro che assegnare l'id dell'user appena creato al iduser nella tabella dipendenti.

  5. #5
    Utente di HTML.it L'avatar di rsdpzed
    Registrato dal
    Aug 2001
    Messaggi
    764
    volevo scrivere questo
    Originariamente inviato da rsdpzed
    potresti fare il contrario: memorizzare nella tabella dipendenti la userid della tabella users (è un uniqueidentifier).
    A questo punto nella dropdownlist carichi solo I DIPENDENTI con iduser = null e quando LO SCEGLI non fai altro che assegnare l'id dell'user appena creato al campo iduser del dipendente.
    spero che ora sia piu chiaro :d

  6. #6
    Utente di HTML.it L'avatar di xJoeyX
    Registrato dal
    Apr 2011
    Messaggi
    28
    E' sorto un problema, ok metto le tabelle membership del database dei dipendenti, ma io sto usando entity framework per accedere alla tabella dipendenti e nel web.config ho questa stringa

    <add name="SiteContext"
    connectionString="Server=.\SQLEXPRESS;Integrated Security=SSPI;Initial Catalog=Apagar;"
    providerName="System.Data.SqlClient" />

    Dopo se aggiungo le tabelle di membership la connectionstring cambia da SiteContext diventerebbe ApplicationServices e di conseguenza non potrei usare entity framework...come risolvo?

  7. #7
    Utente di HTML.it L'avatar di rsdpzed
    Registrato dal
    Aug 2001
    Messaggi
    764
    sinceramente non ho capito cosa stia succedendo in ogni caso cerco di spiegarti un po come funziona nel web config.
    La stringa di conessione che punta al db ha un nome (sitecontext), quando con il membership e role providers vuoi puntare alle tabelle presenti in un database, che hai preparato precedentemente con aspnet_regsql.exe e che fa riferimento ad una stringa di connessione (sitecontext) devi specificarlo nel web config nei nodi di configurazione dei providers (sostituendo o modificando quelli di default):

    codice:
    <membership defaultProvider="SqlMembershipProvider">
          <providers>
            <clear/>
            <add 
              name="SqlMembershipProvider" 
              type="System.Web.Security.SqlMembershipProvider" 
              connectionStringName="sitecontext"
              applicationName="NomeApplicazione" />
          </providers>
    </membership>
    
    <rolemanager defaultProvider="SqlRoleProvider" enabled="true">
          <providers>
            <clear/>
            <add 
              name="SqlRoleProvider" 
              type="System.Web.Security.SqlRoleProvider" 
              connectionStringName="sitecontext"
              applicationName="NomeApplicazione" />
          </providers>
    </membership>
    Come puoi vedere tu stesso ai provider gli si da un nome, il tipo (che cambia rispetto a quello di default che era AspNetMembershipProvider) e la connectionstring del database senza cui SqlMembershipProvider (che come puoi intuire ha bisogno di connettersi a un db) non puo funzionare. In altre parole sei tu che controlli.

  8. #8
    Utente di HTML.it L'avatar di xJoeyX
    Registrato dal
    Apr 2011
    Messaggi
    28
    Risolto!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.