"No such table" 在 Entity Framework Core 中初始迁移后出现错误
"No such table" error after initial migration in Entity Framework Core
(Win7 x64, Visual Studio 2019, Entity Framework Core/SQLite/Tools v.5.0.2)
我关注这个
https://docs.microsoft.com/ru-ru/ef/core/get-started/overview/first-app?tabs=visual-studio
Entity Framework 核心教程。我 copy/pasted 所有代码只是为了确保并使用 Nuget 控制台应用初始迁移。控制台根据日志报迁移成功:
PM> Update-Database
Build started...
Build succeeded.
Applying migration '20210121202929_InitialCreate'.
Done.
PM> Update-Database
Build started...
Build succeeded.
No migrations were applied. The database is already up to date.
Done.
PM>
虽然创建的数据库文件的文件图标表明可能存在问题:
我尝试运行教程中的主要代码,但出现错误
No such table: Blogs
代码:
namespace EFCTest6
{
class Program
{
static void Main(string[] args)
{
using (var db = new BloggingContext())
{
// Create
Console.WriteLine("Inserting a new blog");
// ERROR! SqliteException: SQLite Error 1: 'no such table: Blogs'.
db.Add(new Blog { Url = "http://blogs.msdn.com/adonet" });
db.SaveChanges();
// Read
Console.WriteLine("Querying for a blog");
var blog = db.Blogs
.OrderBy(b => b.BlogId)
.First();
// Update
Console.WriteLine("Updating the blog and adding a post");
blog.Url = "https://devblogs.microsoft.com/dotnet";
blog.Posts.Add(
new Post
{
Title = "Hello World",
Content = "I wrote an app using EF Core!"
});
db.SaveChanges();
// Delete
Console.WriteLine("Delete the blog");
db.Remove(blog);
db.SaveChanges();
}
}
}
}
我还尝试将异常生成行从 db.Add(...)
更改为 db.Blogs.Add(...)
但它生成了相同的异常。
确保 table 存在于数据库中。很多人,有时包括我自己,会将 table 添加到 visual studio 中的上下文,然后应用迁移,但实际上忘记更新数据库。
在程序包管理器控制台 (Tools > Nuget Package Manager > Package manager Console
) 中键入以下内容,然后键入:
Add-Migration "Blogs"
这将添加迁移(如果尚不存在)。然后输入
Update-Database
(Win7 x64, Visual Studio 2019, Entity Framework Core/SQLite/Tools v.5.0.2)
我关注这个
https://docs.microsoft.com/ru-ru/ef/core/get-started/overview/first-app?tabs=visual-studio
Entity Framework 核心教程。我 copy/pasted 所有代码只是为了确保并使用 Nuget 控制台应用初始迁移。控制台根据日志报迁移成功:
PM> Update-Database
Build started...
Build succeeded.
Applying migration '20210121202929_InitialCreate'.
Done.
PM> Update-Database
Build started...
Build succeeded.
No migrations were applied. The database is already up to date.
Done.
PM>
虽然创建的数据库文件的文件图标表明可能存在问题:
我尝试运行教程中的主要代码,但出现错误
No such table: Blogs
代码:
namespace EFCTest6
{
class Program
{
static void Main(string[] args)
{
using (var db = new BloggingContext())
{
// Create
Console.WriteLine("Inserting a new blog");
// ERROR! SqliteException: SQLite Error 1: 'no such table: Blogs'.
db.Add(new Blog { Url = "http://blogs.msdn.com/adonet" });
db.SaveChanges();
// Read
Console.WriteLine("Querying for a blog");
var blog = db.Blogs
.OrderBy(b => b.BlogId)
.First();
// Update
Console.WriteLine("Updating the blog and adding a post");
blog.Url = "https://devblogs.microsoft.com/dotnet";
blog.Posts.Add(
new Post
{
Title = "Hello World",
Content = "I wrote an app using EF Core!"
});
db.SaveChanges();
// Delete
Console.WriteLine("Delete the blog");
db.Remove(blog);
db.SaveChanges();
}
}
}
}
我还尝试将异常生成行从 db.Add(...)
更改为 db.Blogs.Add(...)
但它生成了相同的异常。
确保 table 存在于数据库中。很多人,有时包括我自己,会将 table 添加到 visual studio 中的上下文,然后应用迁移,但实际上忘记更新数据库。
在程序包管理器控制台 (Tools > Nuget Package Manager > Package manager Console
) 中键入以下内容,然后键入:
Add-Migration "Blogs"
这将添加迁移(如果尚不存在)。然后输入
Update-Database