【问题标题】:Web API Add controller with CRUD operations for existing Azure table in Existing Azure dbWeb API 为现有 Azure 数据库中的现有 Azure 表添加具有 CRUD 操作的控制器
【发布时间】:2019-10-14 00:19:21
【问题描述】:

我的应用程序使用 Asp.NET Identity 执行身份验证。 登录的用户存储在 dbo.ASPNetUsers

前段时间,我使用迁移添加另一个名为“客户”的表,但现在该表已填充。

如何添加控制器以仅对现有的“客户”(其他表具有控制器)执行 CRUD 操作,而不会删除表并冒删除其任何内容或数据库中现有表中的任何其他内容的风险。

到目前为止我尝试了什么:

在 Models 文件夹中创建名为“Customer”的类以类似于表格列

       public class Customer
       {
            [Key]
            public string ID {get;set;}

            public string FirstName {get;set;}

            public string LastName  {get;set;}
       }

添加 DbSetCustomers

public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
    {
        public ApplicationDbContext()
           // : base("DefaultConnection", throwIfV1Schema: false)
              : base("MS_TableConnectionString", throwIfV1Schema: false)
        {
        }

        public DbSet<Customer> Customers { get; set; }


        public static ApplicationDbContext Create()
        {
            return new ApplicationDbContext();
        }
    }
}

添加类型为 Web API 2 控制器的新控制器,使用实体框架 使用模型类 Customer,数据上下文类作为默认 ApplicationDBContext(创建控制器时的默认选项,我假设它使用我的应用程序azure 表的连接字符串)。

在 POST 中使用 GET 客户时,我收到一条错误消息,指出自上次迁移以来数据库已更改,我想这是因为添加了 DbSet 客户但我不想更新迁移,因为在迁移代码中有 Drop表格命令。

  1. 这是正确的方法吗?
  2. 我应该只更改迁移脚本而不删除表吗?

请指教。

【问题讨论】:

    标签: asp.net asp.net-web-api entity-framework-6 azure-sql-database


    【解决方案1】:

    "Database has changed since last migration" ,这是 EF 告诉您的迁移历史与表不匹配的一种方式。

    EF 的默认数据库生成工作流程会创建一个完整的脚本,每次您选择从模型生成数据库时都会重新创建您的数据库,因此如果您在数据库中执行它,您将丢失所有数据。但是,如果您只是创建一个新实体并且没有更改现有实体,那么您仍然可以从您的模型生成数据库,然后使用该脚本并只运行为您的新实体创建新表的部分。

    您可以查看以下链接以供进一步参考:

    https://www.apress.com/gp/blog/all-blog-posts/secular-trends-for-the-cloud/12097630

    https://social.msdn.microsoft.com/Forums/en-US/ed3ccb7e-5e89-4fd4-ae92-d641a5c5bd9a/entity-framework-model-first-make-changes-to-the-database-without-dropping-tables?forum=adodotnetentityframework

    https://www.pauric.blog/Database-Updates-and-Migrations-with-Entity-Framework/

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 2016-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多