我将 WebApp 的身份模型连接到 MySQL 数据库,并按照我想要的方式对其进行了修改。
我的问题是:如果我想从身份中未使用但仍来自同一数据库的表中获取数据,正确的方法是什么?我应该打开一个新连接并通过类获取数据吗?有没有办法在模型中实现它?
我附上连接数据库的代码:
public void Configuration(IAppBuilder app)
{
DbConfiguration.SetConfiguration(new MySqlEFConfiguration());
ConfigureAuth(app);
context = new ApplicationDbContext();
}
还有我的连接字符串:
<connectionStrings>
<add name="DefaultConnection" connectionString="server=x.x.x.x;uid=user;password=pwd;database=db;port=3306;charset=utf8" providerName="MySql.Data.MySqlClient" />
</connectionStrings>
(抱歉,如果问题太明显,我开始在 ASP.NET MVC 中开发应用程序)
最佳答案
是的,您所需要做的就是在需要时打开连接。 所以,我假设你对 MySQL 数据库连接做了类似的事情
public class MySqlInitializer : IDatabaseInitializer<ApplicationDbContext>
{
public void InitializeDatabase(ApplicationDbContext context)
{
if (!context.Database.Exists())
{
// if database did not exist before - create it
context.Database.Create();
}
else
{
// query to check if MigrationHistory table is present in the database
var migrationHistoryTableExists = ((IObjectContextAdapter)context).ObjectContext.ExecuteStoreQuery<int>(
string.Format("SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = '{0}' AND table_name = '__MigrationHistory'",
"[Insert your database schema here - such as 'users']"));
// if MigrationHistory table is not there (which is the case first time we run) - create it
if (migrationHistoryTableExists.FirstOrDefault() == 0)
{
context.Database.Delete();
context.Database.Create();
}
}
}}
你的ApplicationDbContext类将是这样的
public class ApplicationUser : IdentityUser{}
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
static ApplicationDbContext()
{
Database.SetInitializer(new MySqlInitializer());
}
public ApplicationDbContext()
: base("DefaultConnection")
{
}
}
现在,要从数据库执行一些查询,您需要创建一个 ApplicationDbContext
对象
那么,你的下一个问题是“有没有办法在模型中实现它?”是的,您需要创建一个 View 模型。
public class ItemProduct
{
public int Id {get; set;};
public string Name {get; set;};
}
那么,假设您的数据库中存在一个产品表,我们可以对其进行查询。
public class HomeController : Controller
{
ApplicationDbContext context = new ApplicationDbContext();
public ActionResult AnyName()
{
List<ItemProduct> lstProducts = new List<ItemProduct>();
var getProducts = (from p in context.Products
select p).ToList();
foreach(var item in getProducts)
{
ItemProduct pro = new ItemProduct()
{
pro.Id = item.Id,
pro.Name = item.Name
};
lstProducts.Add(pro);
}
// So, you have all your Products in ItemProduct Class list.
// Now, return lstProducts to your View to show it on front end
}
}
希望这能回答您的问题:)
关于mysql - 使用 Identity 从同一数据库检索数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42620421/