【问题标题】:How to add only new tables to existing database with EF core如何使用 EF 核心仅将新表添加到现有数据库
【发布时间】:2019-03-13 06:52:20
【问题描述】:

我们正在使用 EF 核心并且有一种情况可以描述如下

如果数据库中不存在应用程序(即使用 aspnet 核心构建的机器人)所需的新表,我们需要能够创建它们。另外请注意某些表存在于同一数据库中,应用程序打算使用它们,但是由于这些表是从外部进程创建的 - 机器人不应该创建这些表。

我们知道我们可以使用 ef core 中的脚手架方法来使用数据库中已经存在的表,并且还可以为需要创建的表准备好一组迁移,但我们不确定这是否是专门执行此操作的正确方法当新租户入职时。

假设即使我们在开发数据库租户上运行一切,我们如何计划加入新租户或准备不同的数据库,这些数据库也将有一些表,并确保应用程序只创建新表并且可以也消耗现有的表?

想法?

【问题讨论】:

    标签: c# asp.net-core ef-code-first ef-core-2.0


    【解决方案1】:

    这仅在您现有的表与您的代码优先表完全分离时才有效。使用代码优先时,将创建上下文负责的任何内容。因此,即使您只有一个现有表实体之一的外键,该上下文也会尝试创建该表以及其他所有内容。简而言之,任何表示现有表的实体都不能与任何代码优先实体有任何联系。期间。

    但是,您的设计一开始就有缺陷。应使用不同的数据库处理租赁。如果有一些他们都需要引用的表集,那可以是一个单独的数据库连接。如果有一组表所有人都将拥有,但不需要在那里访问彼此的数据,那么应该在每个租户数据库中创建这些表。没有自尊的客户永远会使用使用单一数据库租用的服务。作为企业客户,我发现您这样做的那一刻就是您被带上门的那一刻。

    【讨论】:

      猜你喜欢
      • 2016-05-19
      • 2015-08-20
      • 1970-01-01
      • 1970-01-01
      • 2021-12-03
      • 2011-01-03
      • 1970-01-01
      • 2012-11-25
      • 1970-01-01
      相关资源
      最近更新 更多