使用连接字符串将数据添加到标识默认数据库

Add data to Identity default database using connectionstring

我目前正在从事一个学习项目,我曾在该项目中使用具有 sql 数据库的表单身份验证。但今天我已经更新到使用 Indetity。 我现在遇到的问题是我的网站存储的不仅仅是用户信息,我希望它与身份数据位于同一个数据库中。 当我使用成员资格时,这没问题,我只是添加了一个连接字符串并写了一个 SQL 语句。但是现在看来我需要添加一个叫做 DbContext 的东西? 也许看我的代码更容易理解,这是我的旧代码,用于旧 SQL 数据库:

using (SqlConnection con = new SqlConnection(strCon))
                {
                    using (SqlCommand cmd = con.CreateCommand())
                    {
                        cmd.CommandText = "INSERT INTO Website (url, rating, categoryId, subCategoryId, description1, description2) values (@url, @rating, @categoryId, @subCategoryId, @desc1, @desc2)";
                        cmd.Parameters.AddWithValue("@url", url);
                        cmd.Parameters.AddWithValue("@rating", rating);
                        cmd.Parameters.AddWithValue("@categoryId", categoryId);
                        cmd.Parameters.AddWithValue("@desc1", desc1);
                        cmd.Parameters.AddWithValue("@desc2", desc2);
                        if (DPLSubCategory.Items != null)
                        {
                            Int32 subCategoryId = Convert.ToInt32(DPLSubCategory.SelectedItem.Value);
                            cmd.Parameters.AddWithValue("@subCategoryId", subCategoryId);
                        }

                        con.Open();

                        cmd.ExecuteNonQuery();
                    }
                    con.Close();
                }

现在假设我将 "Website" table 添加到我的本地身份数据库。我怎样才能做类似于上面代码的事情?现在我正在使用默认的连接字符串:

<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\WDBAPP.mdf;Initial Catalog=WDBAPP;Integrated Security=True" providerName="System.Data.SqlClient"/>

然后我这样添加成员:

// Default UserStore constructor uses the default connection string named: DefaultConnection
            var userStore = new UserStore<IdentityUser>();
            var manager = new UserManager<IdentityUser>(userStore);
            var user = new IdentityUser() { UserName = UserName.Text };

            IdentityResult result = manager.Create(user, Password.Text);

            if (result.Succeeded)
            {
                var authenticationManager = HttpContext.Current.GetOwinContext().Authentication;
                var userIdentity = manager.CreateIdentity(user, DefaultAuthenticationTypes.ApplicationCookie);
                authenticationManager.SignIn(new AuthenticationProperties() { }, userIdentity);
                Response.Redirect("~/Login.aspx");
            }

如您所见,我不需要指向我的数据库,因为我使用默认的连接字符串。

那么如何将我的连接字符串更改为 "MyConString" 并且仍然可以使用注册码?我希望能够从我的代码指向我的数据库,以便我可以添加任何我想要的内容。

Web forms do not have a applicationdbcontext class that I can find and modify, and I do not know how to create one.

VS 2013 中的默认 Web 表单模板具有 ApplicationDbContext

如果您是 ASP.Net Identity 的新手,您希望在手动滚动您自己的 UserManager 之前先使用 VS 创建的默认模板,因为很多事情很容易出错。

如果您想在现有数据库中保留 ASP.Net 身份,您需要将其重命名为与现有连接字符串相同的名称。