【问题标题】:Dropping table In Entity Framework Core and UWP在 Entity Framework Core 和 UWP 中删除表
【发布时间】:2016-12-05 01:45:18
【问题描述】:

我正在使用 UWP 学习实体框架。我尝试通过从 DbContext 中删除一个表来删除它。在迁移后运行代码时,我收到一个错误,即 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 语句的想法。 在另一篇stackoverflow文章How to drop a table in Entity Framework Code First?中,我不明白:“在[DateStamp]_InitialCreate.cs类的Down方法中写DropTable语句,表就会被丢弃”。是否与我的问题有关。如果是这样,我该如何实施。 谢谢。

【问题讨论】:

    标签: entity-framework uwp code-first


    【解决方案1】:

    我尝试通过从 DbContext 中删除一个表来删除它。

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

    //you have to use this namespace
    using Microsoft.EntityFrameworkCore;
    
    using (var db = new BloggingContext())
    {
         db.Database.ExecuteSqlCommand("DROP TABLE [Blogs]");
    }
    

    没看懂:“在[DateStamp]_InitialCreate.cs类的Down方法中写DropTable语句

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-09
      • 1970-01-01
      • 1970-01-01
      • 2017-10-28
      相关资源
      最近更新 更多