Utilizzo di Code First Entity Framework con .NET MVC 4 Ho creato una nuova applicazione Web e popolato il database con l'oggetto come mostrato di seguito..net MVC Autenticazione semplice con database
public class GratifyGamingContext : DbContext
{
public DbSet<Game> Games { get; set; }
public DbSet<Genre> Genres { get; set; }
public DbSet<UserProfile> UserRepository { get; set; }
}
voglio usare il mio tavolo UserRepository al posto della classe UserContext integrato da AccountModel.cs per il mio account l'accesso degli utenti dal momento che non posso ottenere che il lavoro con il mio DbContext esistente.
public class UsersContext : DbContext
{
public UsersContext()
: base("DefaultConnection")
{
}
public DbSet<UserProfile> UserProfiles { get; set; }
}
[Table("UserProfile")]
public class UserProfile
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int UserId { get; set; }
public string UserName { get; set; }
}
Il mio programma si blocca sempre quando si costruisce un oggetto SimpleMembershipInitializer da InitializeSimpleMembershipAttribute.cs. Ho commentato il codice che ritengo dovrebbe essere irrilevante.
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
public sealed class InitializeSimpleMembershipAttribute : ActionFilterAttribute
{
private static SimpleMembershipInitializer _initializer;
private static object _initializerLock = new object();
private static bool _isInitialized;
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
// Ensure ASP.NET Simple Membership is initialized only once per app start
LazyInitializer.EnsureInitialized(ref _initializer, ref _isInitialized, ref _initializerLock);
}
private class SimpleMembershipInitializer
{
public SimpleMembershipInitializer()
{
//Database.SetInitializer<UsersContext>(null);
try
{
using (var context = new GratifyGamingContext())
{
if (!context.Database.Exists())
{
// Create the SimpleMembership database without Entity Framework migration schema
((IObjectContextAdapter)context).ObjectContext.CreateDatabase();
}
}
WebSecurity.InitializeDatabaseConnection("DefaultConnection", "UserProfile", "UserId", "UserName", autoCreateTables: true);
}
catch (Exception ex)
{
throw new InvalidOperationException("The ASP.NET Simple Membership database could not be initialized. For more information, please see http://go.microsoft.com/fwlink/?LinkId=256588", ex);
}
}
}
}
mio ConnectionString è la seguente:
<add name="DefaultConnection" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=aspnet-GratifyGaming-20120917185558;AttachDbFilename=|DataDirectory|\Games.mdf;Integrated Security=True" providerName="System.Data.SqlClient" />
ottengo il seguente errore quando si chiama il WebSecurity.InitializeDatabaseConnect qualsiasi AccountController:
[SqlException (0x80131904): ricerca Directory per il file "C: \ Users \ Unreal \ Documents \ Visual Studio 2010 \ Projects \ GratifyGaming \ GratifyGaming.WebUI \ App_Data \ Games.mdf" non riuscito con l'errore del sistema operativo 2 (impossibile recuperare il testo per questo errore. Motivo: 15105). Non è possibile allegare il file 'C: \ Users \ Documenti \ Unreal \ Visual Studio 2010 \ Projects \ GratifyGaming \ GratifyGaming.WebUI \ App_Data \ Games.mdf' come database 'aspnet-GratifyGaming-20.120.917,185558 millions']
. [TargetInvocationException: eccezione è stata generata dalla destinazione di un'invocazione.] System.RuntimeTypeHandle.CreateInstance (RuntimeType tipo, booleano publicOnly, booleano nOCHECK, booleano & canBeCached, RuntimeMethodHandleInternal & ctor, booleano & bNeedSecurityCheck) +0
La mia applicazione è altrimenti connessa al database se non si accede a nessuna pagina guidata di AccountController. Come posso configurare questa applicazione per utilizzare la mia tabella UserRepository al posto di UsersContext per l'appartenenza utente?
Trovato questo dopo aver letto un paio di messaggi StackOverflow che c overed diverse componenti del problema. – TryCatch
Quindi non abbiamo più bisogno di 'InitializeSimpleMembershipAttribute'? – Ashkan
Ecco un'altra risposta a questa domanda che potrebbe aiutare alcune persone: http://stackoverflow.com/a/12461447/188246 (leggermente diversa dalla risposta precedente) –