在 Entity Framework 核心和 UWP 中删除 table

Dropping table In Entity Framework Core and UWP

我正在学习 Entity Framework UWP。我尝试通过从 DbContext 中删除它来删除 table。当 运行 迁移后的代码时,我收到一条错误消息,指出 UWP 不支持删除主键。 本文https://docs.efproject.net/en/latest/providers/sqlite/limitations.html推荐使用sql(string)方法。 这篇文章 https://msdn.microsoft.com/en-us/data/jj592907.aspx 有一个我正在尝试遵循的示例。

   using (var context = new BloggingContext())
        {
            var blogs = context.Blogs.SqlQuery("SELECT * FROM dbo.Blogs").ToList();
        }

我找不到参考资料。 我喜欢使用 sql 语句的想法。 Whosebug的另一篇文章How to drop a table in Entity Framework Code First?,没看懂:“在[DateStamp]_InitialCreate.csclass的Down方法中写DropTable语句,table会被丢弃”。是否与我的问题有关。如果是这样,我该如何实施。 谢谢。

I tried dropping a table by deleting it from DbContext.

您可以使用 db.Database.ExecuteSqlCommand 删除 tables:

//you have to use this namespace
using Microsoft.EntityFrameworkCore;

using (var db = new BloggingContext())
{
     db.Database.ExecuteSqlCommand("DROP TABLE [Blogs]");
}

I don't understand: " write the DropTable statement in the Down method of [DateStamp]_InitialCreate.cs class

<DateStamp>_<MigrationName>.cs 是通过您的迁移 (Add-Migration MigrationName) 生成的。您可以在 Migrations 文件夹下找到它。在这个 class 文件中,您可以找到 Down Method。

每次调用 db.Database.Migrate()(通常在 App.xaml.cs 文件中)。 SQLite 将检查 table __EFMigrationsHistory 以查看 <DateStamp>_<MigrationName>.cs 文件是否已被执行。您可以在以下文件中修改[Migration("<TimeStamp>_<MigrationName>")]的时间戳以再次手动执行迁移:

另外,您也可以根据自己的需要修改里面的代码进行迁移。