我按照此视频https://docs.microsoft.com/en-us/visualstudio/get-started/csharp/tutorial-aspnet-core-ef-step-03?view=vs-2019中的说明尝试添加产品数据库。然后经过一些(最初是错误的故障,我首先崩溃了,该网站要求我应用迁移,然后点击“应用”),然后最终成功了。
说明告诉您创建一个新的models文件夹,然后向其中添加一个类。然后在页面折叠中为模型添加一个新文件夹,然后添加一个新的脚手架项目(实体为fw的剃须刀页面(crud))。然后,我添加了以下代码以确保在program.cs中创建了数据库,以确保已创建数据库
var host = CreateWebHostBuilder(args).Build();
using (var scope = host.Services.CreateScope())
{
var services = scope.ServiceProvider;
try
{
var context = services.GetRequiredService<EisenMNdbContext>();
context.Database.EnsureCreated();
}
catch (Exception ex)
{
var logger = services.GetRequiredService<ILogger<Program>>();
logger.LogError(ex, "An error occurred creating the DB.");
}
}
host.Run();
我知道,它适用于产品。 然后,我想添加第二个称为orders的模型/应用程序,因此我向模型添加了一个nother类,然后创建了另一个文件夹并添加了一个脚手架项目,执行相同的过程,但是这次我得到了:
SqlException:对象名称'Order'无效。
System.Data.SqlClient.SqlCommand + <> c.b__122_0(任务结果)
我在这样的链接中注意到
SqlException (0x80131904): Invalid object name 'dbo.Categories'
人们常常以错误的名称来命名数据库表。有没有可以编辑的地方?list of file directories
如果有帮助,这里还有一些错误日志:
qlException: Invalid object name 'Orders'.
System.Data.SqlClient.SqlCommand+<>c.<ExecuteDbDataReaderAsync>b__122_0(Task<SqlDataReader> result)
System.Threading.Tasks.ContinuationResultTaskFromResultTask<TAntecedentResult, TResult>.InnerInvoke()
System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, object state)
System.Threading.Tasks.Task.ExecuteWithThreadLocal(ref Task currentTaskSlot)
Microsoft.EntityFrameworkCore.Storage.Internal.RelationalCommand.ExecuteAsync(IRelationalConnection connection, DbCommandMethod executeMethod, IReadOnlyDictionary<string, object> parameterValues, CancellationToken cancellationToken)
如果重要的话,我的数据库上下文看起来像这样
{
public EisenMNdbContext (DbContextOptions<EisenMNdbContext> options)
: base(options)
{
}
public DbSet<EisenMN.Models.Product> Products { get; set; }
public DbSet<EisenMN.Models.Order> Orders { get; set; }
}
}
答案 0 :(得分:0)
Migg的链接很有帮助! docs.microsoft.com/zh-CN/ef/core/managing-schemas/migrations/…使用Powershell并确保已正确应用了迁移。