c# - 如何使用 Asp.net core EF Core 在 Web 托管服务器上创建多个数据库
问题描述
您好我正在尝试使用C# asp.net core开发我的桌面应用程序的 web 版本,但不确定如何处理数据库,这是我想要实现的,我的桌面应用程序是使用VB开发的销售点系统从而应用程序用户能够管理多个商店,并且每个商店都有自己的数据库,在创建商店后,执行数据库脚本,现在为新商店创建数据库。下面是我创建数据库的示例代码。
'Get DB NAme
Dim DbNumber As Integer
ConnectTools()
cmd.CommandText = "select MAX(StoreCount) as cntt from tblStores"
rd = cmd.ExecuteReader
rd.Read()
If IsDBNull(rd.Item("cntt")) Then
DbNumber = "1"
Else
DbNumber = rd.Item("cntt") + 1
End If
rd.Close()
DatabaseName = "AutemStore" & DbNumber
cmd.Connection = conn
'conn.Open()
conn.ChangeDatabase("Master")
If conn.State = ConnectionState.Open Then conn.Close()
conn.Open()
cmd.CommandText = "Create Database " & DatabaseName
cmd.ExecuteNonQuery()
'Save DB Name
My.Settings.DatabaseName = DatabaseName
My.Settings.Save()
'Run DB Script
conn.ChangeDatabase(My.Settings.DatabaseName)
cmd.CommandText = ReadFile(Application.StartupPath & "\dstore.sql")
cmd.CommandType = CommandType.Text
cmd.ExecuteNonQuery()
我相信有一种方法可以使用Asp.net 核心来完成我刚刚解释的这项任务,但我还不知道如何完成它,请有任何关于如何执行此操作或替代方法的建议它完成了。提前致谢。
解决方案
由于您正在尝试使用 EF(或者可能是 EFCore),我假设您已经设置了数据模型并注入了DbContext
as _context
。(如果你还没有,你可以按照官方文档开始)。
之后,您可以使用 EFCore 重写您的 VB.NET + ADO.NET 代码,如下所示:
select MAX(StoreCount) as cntt from tblStores的第一个查询可以通过
var cntt = _context.Stores.Max(t => t.StoreCound);
创建数据库的第二个命令可以重写为:
var sql= "Create Database @dbname"; var dbname = new SqlParameter("@dbname", "The_DB_Name"); _context.Database.ExecuteSqlCommand(sql, dbname);
推荐阅读
- python-3.x - Python 3 中带有 tkinter 和类的 Gif 动画
- mysql - 无法在 SSIS 中将 CSV 文件导入 MySQL
- iterm2 - 提示左侧多余的蓝色字形
- python-3.x - 使用 Python 解析的 HTML 网页与实际页面不同
- pandas - 为什么 Pandas df.mode() 在实际模态值之前返回零?
- git - 将 master 重新定位到功能分支上?
- c - 为什么这个 C 代码给我一个分段错误?
- javascript - 同时向多个屏幕传递参数
- python-3.x - OSError: [WinError 126] 导入 seaborn 包时
- r - 加入两个数据框以填充缺失的数据