如何使用EF核心仅将新表添加到现有数据库

时间:2019-03-13 06:52:21

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

我们使用的是EF内核,情况可能如下所述

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

我们知道,我们可以使用ef core中的脚手架方法使用数据库中已经存在的表,并且还为要创建的表准备了一组迁移,但是我们不确定这是否是正确的处理方法在加入新的租户时。

假设即使我们在开发数据库租户上完成所有工作,我们如何计划加入新的租户或准备也将有一些表的其他数据库,并确保应用程序仅创建新表并可以还消耗现有表吗?

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

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

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