使用连接字符串将数据添加到标识默认数据库
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 身份,您需要将其重命名为与现有连接字符串相同的名称。
我目前正在从事一个学习项目,我曾在该项目中使用具有 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 身份,您需要将其重命名为与现有连接字符串相同的名称。