【问题标题】:MVC 4 change membership databaseMVC 4 更改成员数据库
【发布时间】:2013-08-11 04:10:41
【问题描述】:

我创建了一个 mvc 4 应用程序代码第一个应用程序,成员资格表没有存储在 .\SQLEXPRESS 数据库中,我将连接字符串名称的名称更改为我的 dbcontext,即 EntitySets,并且还更改了 InitializeMembershipAttribute 类EntitySet 上下文,但它们仍然没有被存储?感谢您的帮助!

数据库上下文

 public class EntitySets: DbContext
{
    public DbSet<User> Users { get; set; }
    public DbSet<UserStats> UserStats {get;set;}
    public DbSet<UserProfile> UserProfiles { get; set; }
}

帐户模型

public class UsersContext : DbContext
{
    public UsersContext()
    : base("EntitySets")
    {
    }

    public DbSet<UserProfile> UserProfiles { get; set; }
}

初始化会员

 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<EntitySets>(null);

            try
            {
                using (var context = new EntitySets())
                {
                    if (!context.Database.Exists())
                    {
                        // Create the SimpleMembership database without Entity Framework migration schema
                        ((IObjectContextAdapter)context).ObjectContext.CreateDatabase();
                    }
                }

                WebSecurity.InitializeDatabaseConnection("EntitySets", "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);
            }
        }
    }

连接字符串

 <add name="EntitySets"  connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=Fitness_Friend.Web.Models.EntitySets;Integrated Security=True" providerName="System.Data.SqlClient" />

【问题讨论】:

    标签: c# asp.net-mvc-4


    【解决方案1】:

    您必须使用 aspnet_regsql 工具手动注册 MembershipProvider。

    查看 codeproject 的逐步配置:http://www.codeproject.com/Articles/89029/Using-SQL-Membership-with-ASP-NET-application

    【讨论】:

    • Asp.net MVC 4 默认使用简单成员,不再需要完整的 SQL 成员包。
    • 我只想将简单的成员表添加到我现有的代码优先数据库中
    • 要实现这一点,您必须实现membershipprovider 和membershipuser 以使用EF 或使用EF 会员efmembership.codeplex.com
    • 不,使用 ASP.Net MVC 4 模板时内置了简单的成员资格。问题是,在 VS 2012 中,当实体框架实体存储在 .\sqlexpress 中时,成员资格将使用 (localdb)。我现在正在构建一个默认站点,以刷新我对需要进行的更改的想法
    • 我得到了它的工作,更改是正确的我只需要在 .\SQLEXPRESS 中建立与数据库的新连接,感谢您的回复
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多